diff --git a/config/sync/image.style.card_medium.yml b/config/sync/image.style.card_medium.yml index bed8ffe..71269b1 100644 --- a/config/sync/image.style.card_medium.yml +++ b/config/sync/image.style.card_medium.yml @@ -3,13 +3,13 @@ langcode: en status: true dependencies: { } name: card_medium -label: 'card-medium (210x295)' +label: 'card-medium (205x295)' effects: 34e936a0-1fee-4327-9553-b4f48bde14e6: uuid: 34e936a0-1fee-4327-9553-b4f48bde14e6 id: image_scale_and_crop weight: 1 data: - width: 210 + width: 205 height: 295 anchor: center-center diff --git a/config/sync/image.style.card_medium_half.yml b/config/sync/image.style.card_medium_half.yml new file mode 100644 index 0000000..1ed2e42 --- /dev/null +++ b/config/sync/image.style.card_medium_half.yml @@ -0,0 +1,15 @@ +uuid: 56308ed7-1b40-435a-bfd0-fbf99f97e7ca +langcode: en +status: true +dependencies: { } +name: card_medium_half +label: 'card-medium-half (205x100)' +effects: + 34e936a0-1fee-4327-9553-b4f48bde14e6: + uuid: 34e936a0-1fee-4327-9553-b4f48bde14e6 + id: image_scale_and_crop + weight: 1 + data: + width: 205 + height: 100 + anchor: center-center diff --git a/config/sync/jsonapi_extras.jsonapi_resource_config.node--materiau.yml b/config/sync/jsonapi_extras.jsonapi_resource_config.node--materiau.yml index 8c4ead8..5738939 100644 --- a/config/sync/jsonapi_extras.jsonapi_resource_config.node--materiau.yml +++ b/config/sync/jsonapi_extras.jsonapi_resource_config.node--materiau.yml @@ -210,9 +210,10 @@ resourceFields: styles: refine: true custom_selection: - - card_medium - card_big - card_full + - card_medium + - card_medium_half disabled: false field_memo: disabled: true diff --git a/package-lock.json b/package-lock.json index 90c740b..7aed693 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11891,6 +11891,12 @@ "resolved": "https://registry.npmjs.org/vuex/-/vuex-3.6.0.tgz", "integrity": "sha512-W74OO2vCJPs9/YjNjW8lLbj+jzT24waTo2KShI8jLvJW8OaIkgb3wuAMA7D+ZiUxDOx3ubwSZTaJBip9G8a3aQ==" }, + "vuex-extensions": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/vuex-extensions/-/vuex-extensions-1.1.5.tgz", + "integrity": "sha512-1Jfi8o6coel3jj20k6SaEtinddzS0jEG41lyyWmodAorXoN85AzuYa4oou71e99B6V+Y+gSVUysa3yHVhWpTrQ==", + "dev": true + }, "walker": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", diff --git a/package.json b/package.json index a2f33d1..f80bf39 100644 --- a/package.json +++ b/package.json @@ -66,6 +66,7 @@ "vue-server-renderer": "^2.6.12", "vue-style-loader": "^4.1.2", "vue-template-compiler": "^2.6.12", + "vuex-extensions": "^1.1.5", "webpack": "^5.6.0", "webpack-cli": "^4.2.0", "webpack-merge": "^5.4.0" diff --git a/web/themes/custom/materiotheme/assets/dist/main.css b/web/themes/custom/materiotheme/assets/dist/main.css index 4462dbf..318dc99 100644 --- a/web/themes/custom/materiotheme/assets/dist/main.css +++ b/web/themes/custom/materiotheme/assets/dist/main.css @@ -1096,60 +1096,60 @@ body.toolbar-horizontal.toolbar-themes.toolbar-no-tabs { header[role="banner"] .wrapper, main[role="main"] > .scroller > .wrapper { margin: 0 auto; } - @media only screen and (min-width: 226px) and (max-width: 450px) { + @media only screen and (min-width: 219px) and (max-width: 436px) { header[role="banner"] .wrapper, main[role="main"] > .scroller > .wrapper { - width: 210px; } } - @media only screen and (min-width: 451px) and (max-width: 675px) { + width: 218px; } } + @media only screen and (min-width: 437px) and (max-width: 654px) { header[role="banner"] .wrapper, main[role="main"] > .scroller > .wrapper { - width: 435px; } } - @media only screen and (min-width: 676px) and (max-width: 900px) { + width: 436px; } } + @media only screen and (min-width: 655px) and (max-width: 872px) { header[role="banner"] .wrapper, main[role="main"] > .scroller > .wrapper { - width: 660px; } } - @media only screen and (min-width: 901px) and (max-width: 1125px) { + width: 654px; } } + @media only screen and (min-width: 873px) and (max-width: 1090px) { header[role="banner"] .wrapper, main[role="main"] > .scroller > .wrapper { - width: 885px; } } - @media only screen and (min-width: 1126px) and (max-width: 1350px) { + width: 872px; } } + @media only screen and (min-width: 1091px) and (max-width: 1308px) { header[role="banner"] .wrapper, main[role="main"] > .scroller > .wrapper { - width: 1110px; } } - @media only screen and (min-width: 1351px) and (max-width: 1575px) { + width: 1090px; } } + @media only screen and (min-width: 1309px) and (max-width: 1526px) { header[role="banner"] .wrapper, main[role="main"] > .scroller > .wrapper { - width: 1335px; } } - @media only screen and (min-width: 1576px) and (max-width: 1800px) { + width: 1308px; } } + @media only screen and (min-width: 1527px) and (max-width: 1744px) { header[role="banner"] .wrapper, main[role="main"] > .scroller > .wrapper { - width: 1560px; } } - @media only screen and (min-width: 1801px) and (max-width: 2025px) { + width: 1526px; } } + @media only screen and (min-width: 1745px) and (max-width: 1962px) { header[role="banner"] .wrapper, main[role="main"] > .scroller > .wrapper { - width: 1785px; } } - @media only screen and (min-width: 2026px) and (max-width: 2250px) { + width: 1744px; } } + @media only screen and (min-width: 1963px) and (max-width: 2180px) { header[role="banner"] .wrapper, main[role="main"] > .scroller > .wrapper { - width: 2010px; } } - @media only screen and (min-width: 2251px) and (max-width: 2475px) { + width: 1962px; } } + @media only screen and (min-width: 2181px) and (max-width: 2398px) { header[role="banner"] .wrapper, main[role="main"] > .scroller > .wrapper { - width: 2235px; } } - @media only screen and (min-width: 2476px) and (max-width: 2700px) { + width: 2180px; } } + @media only screen and (min-width: 2399px) and (max-width: 2616px) { header[role="banner"] .wrapper, main[role="main"] > .scroller > .wrapper { - width: 2460px; } } - @media only screen and (min-width: 2701px) and (max-width: 2925px) { + width: 2398px; } } + @media only screen and (min-width: 2617px) and (max-width: 2834px) { header[role="banner"] .wrapper, main[role="main"] > .scroller > .wrapper { - width: 2685px; } } - @media only screen and (min-width: 2926px) and (max-width: 3150px) { + width: 2616px; } } + @media only screen and (min-width: 2835px) and (max-width: 3052px) { header[role="banner"] .wrapper, main[role="main"] > .scroller > .wrapper { - width: 2910px; } } - @media only screen and (min-width: 3151px) and (max-width: 3375px) { + width: 2834px; } } + @media only screen and (min-width: 3053px) and (max-width: 3270px) { header[role="banner"] .wrapper, main[role="main"] > .scroller > .wrapper { - width: 3135px; } } - @media only screen and (min-width: 3376px) and (max-width: 3600px) { + width: 3052px; } } + @media only screen and (min-width: 3271px) and (max-width: 3488px) { header[role="banner"] .wrapper, main[role="main"] > .scroller > .wrapper { - width: 3360px; } } - @media only screen and (min-width: 3601px) and (max-width: 3825px) { + width: 3270px; } } + @media only screen and (min-width: 3489px) and (max-width: 3706px) { header[role="banner"] .wrapper, main[role="main"] > .scroller > .wrapper { - width: 3585px; } } - @media only screen and (min-width: 3826px) and (max-width: 4050px) { + width: 3488px; } } + @media only screen and (min-width: 3707px) and (max-width: 3924px) { header[role="banner"] .wrapper, main[role="main"] > .scroller > .wrapper { - width: 3810px; } } - @media only screen and (min-width: 4051px) and (max-width: 4275px) { + width: 3706px; } } + @media only screen and (min-width: 3925px) and (max-width: 4142px) { header[role="banner"] .wrapper, main[role="main"] > .scroller > .wrapper { - width: 4035px; } } + width: 3924px; } } header[role="banner"] { flex: 0 0 auto; @@ -1182,11 +1182,12 @@ main[role="main"] { display: flex; flex-direction: row-reverse; } main[role="main"] > .scroller > .wrapper #content-left { - flex-basis: 435px; } + flex-basis: 218px; + flex-shrink: 0; } main[role="main"] > .scroller > .wrapper #content-left > * { - width: 435px; } + width: 100%; } main[role="main"] > .scroller > .wrapper #content-center { - flex-basis: 2235px; } + flex-basis: 110%; } @keyframes rotating { from { @@ -1443,11 +1444,37 @@ aside.messages { padding: 0; } #content-left { + z-index: 5; + box-sizing: content-box; max-width: 1px; overflow-x: hidden; transition: all 0.3s ease-in-out; } #content-left.opened { - max-width: 500px; } + max-width: 500px; + padding: 0.3em; } + #content-left > * { + box-sizing: border-box; + background-color: #fff; + box-shadow: -2px 0px 4px rgba(0, 0, 0, 0.2); + padding: 0.5em; } + #content-left .flag-collection > header { + display: flex; + flex-direction: row; + justify-content: space-between; } + #content-left .flag-collection > header .mdi-close { + cursor: pointer; + align-self: flex-end; } + #content-left .flag-collection > ul > li { + margin: 0 0 13px 0; + padding: 0; } + #content-left .flag-collection > ul > li article.card.minicard { + width: 100%; } + #content-left .flag-collection > ul > li article.card.minicard > header { + padding: 0.3em 0.3em 0.1em; } + #content-left .flag-collection > ul > li article.card.minicard > header h1 { + margin: 0; } + #content-left .flag-collection > ul > li article.card.minicard > nav.tools { + padding: 0 0.2em; } article.node--type-frontpage .node__content > section.home-intro > div:nth-child(1) .field__label, article.node--type-frontpage .node__content > section.home-pricing > div:nth-child(1) .field__label, article.node--type-frontpage .node__content > section.home-database > div:nth-child(1) .field__label, article.node--type-frontpage .node__content > section.home-showrooms > div:nth-child(1) .field__label, article.node--type-frontpage .node__content > section.home-blabla > div:nth-child(1) .field__label { font-size: 3.5em; @@ -1515,12 +1542,12 @@ article.node--type-frontpage .node__content > section.home-showrooms { position: relative; display: grid; grid-template-rows: 1fr; } - @media only screen and (max-width: 1575px) { + @media only screen and (max-width: 1526px) { article.node--type-frontpage .node__content > section.home-showrooms .field--name-computed-showrooms-reference { grid-template-columns: 1fr; } article.node--type-frontpage .node__content > section.home-showrooms .field--name-computed-showrooms-reference > .field__item { grid-column: 1; } } - @media only screen and (min-width: 1576px) { + @media only screen and (min-width: 1527px) { article.node--type-frontpage .node__content > section.home-showrooms .field--name-computed-showrooms-reference { grid-template-columns: 1fr 1fr; grid-gap: 1em; } @@ -1559,10 +1586,10 @@ article.node--type-frontpage .node__content > section.home-blabla { article.node--type-frontpage .node__content > section.home-blabla .cards-list-home { position: relative; overflow-y: hidden; } - @media only screen and (max-width: 2610px) { + @media only screen and (max-width: 2538px) { article.node--type-frontpage .node__content > section.home-blabla .cards-list-home { max-height: 630px; } } - @media only screen and (min-width: 2611px) { + @media only screen and (min-width: 2539px) { article.node--type-frontpage .node__content > section.home-blabla .cards-list-home { max-height: 310px; } } article.node--type-frontpage .node__content > section.home-blabla .cards-list-home ul { @@ -1570,7 +1597,7 @@ article.node--type-frontpage .node__content > section.home-blabla { margin: 0; padding: 0; display: grid; - grid-template-columns: repeat(auto-fill, minmax(80px, 420px)); + grid-template-columns: repeat(auto-fill, minmax(80px, 410px)); grid-gap: 1em; justify-content: start; } article.node--type-frontpage .node__content > section.home-blabla .cards-list-home ul li { @@ -1606,10 +1633,10 @@ article.node--type-frontpage .node__content > section.home-blabla { .cards-list > ul { margin: 0; padding: 0; - width: calc(100% + 15px); } + width: calc(100% + 13px); } .cards-list > ul > li { list-style: none; - margin: 0 15px 15px 0; + margin: 0 13px 13px 0; padding: 0; display: inline-block; vertical-align: top; } @@ -1617,11 +1644,13 @@ article.node--type-frontpage .node__content > section.home-blabla { article.card { position: relative; box-shadow: 0 0 5px rgba(0, 0, 0, 0.2); - width: 210px; + width: 205px; height: 295px; } article.card.article { - width: 435px; + width: 423px; height: 295px; } + article.card.minicard { + height: 100px; } article.card header { position: absolute; bottom: 0; @@ -1707,8 +1736,8 @@ article.card { grid-column: 2/6; } #main-content > article.article section.accroche figure { - width: 435px; - margin: 0 15px 0 0; } + width: 423px; + margin: 0 13px 0 0; } #main-content > article.article section.accroche figure img { width: 100%; } @@ -1722,18 +1751,18 @@ article.card { #main-content > article.article div.gallery-wrapper .image { display: inline-block; - width: 210px; - margin: 0 15px 9px 0; + width: 205px; + margin: 0 13px 7.8px 0; height: 147.5px; background-size: cover; } #main-content > article.article aside.linked-materials ul { - width: calc(100% + 15px); } + width: calc(100% + 13px); } #main-content > article.article aside.linked-materials ul li { display: inline-block; vertical-align: top; - width: 210px; - margin: 0 15px 0 0; } + width: 205px; + margin: 0 13px 0 0; } #main-content > article.article aside.linked-materials h3.field__label { font-size: 1em; @@ -1779,12 +1808,12 @@ article.card { content: ' >'; } #showrooms { - width: calc(100% + 15px); } + width: calc(100% + 13px); } #showrooms article.showroom { - width: 435px; + width: 423px; display: inline-block; vertical-align: top; - margin: 0 15px 15px 0; } + margin: 0 13px 13px 0; } #showrooms article.showroom h1 { margin: 0; font-weight: 4; } diff --git a/web/themes/custom/materiotheme/assets/dist/main.js b/web/themes/custom/materiotheme/assets/dist/main.js index 8b3aa1a..0958e5d 100644 --- a/web/themes/custom/materiotheme/assets/dist/main.js +++ b/web/themes/custom/materiotheme/assets/dist/main.js @@ -513,7 +513,7 @@ eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n})); /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; -eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.default = void 0;\n\nvar _vuex = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.common.js\");\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar _default = {\n name: \"Card\",\n props: ['item'],\n data: function data() {\n return {\n blanksrc: \"\".concat(drupalSettings.path.themePath, \"/assets/img/blank.gif\"),\n loadingFlag: false\n };\n },\n computed: _objectSpread({}, (0, _vuex.mapState)({\n flagcolls: function flagcolls(state) {\n return state.User.flagcolls;\n }\n })),\n directives: {\n lazy: {\n bind: function bind(img, binding) {\n // console.log('lazy bind', img, binding);\n if (binding.value === 0) {\n img.setAttribute('src', img.getAttribute('data-src'));\n img.removeAttribute('data-src');\n img.classList.remove('lazy');\n }\n }\n },\n switcher: {\n inserted: function inserted(el, binding) {\n // switch images on mousemove\n el.addEventListener('mousemove', function (event) {\n var figs = this.querySelectorAll('figure'); // console.log('mousemove', this, event, figs.length);\n // let len = figs.length\n // let w = this.clientWidth;\n // let g = w / len;\n // let delta = Math.floor(event.layerX / g)\n\n var delta = Math.floor(event.layerX / (this.clientWidth / figs.length)); // console.log('delta', delta);\n\n figs.forEach(function (fig, index) {\n // console.log(index);\n if (index == delta) {\n fig.style.display = \"block\";\n } else {\n fig.style.display = \"none\";\n }\n });\n });\n }\n }\n },\n mounted: function mounted() {\n // lazy load images on mouseover\n this.$el.addEventListener('mouseover', function (event) {\n var imgs = this.querySelectorAll('.images figure img.lazy'); // console.log('mouseover', this, imgs);\n\n imgs.forEach(function (img) {\n // console.log('forEach img',img);\n img.setAttribute('src', img.getAttribute('data-src'));\n img.removeAttribute('data-src');\n img.classList.remove('lazy');\n });\n }, {\n once: true\n });\n },\n methods: _objectSpread(_objectSpread({}, (0, _vuex.mapActions)({\n flag: 'User/flag',\n unFlag: 'User/unFlag'\n })), {}, {\n flagIsActive: function flagIsActive(collid) {\n // console.log(this.item.uuid);\n // console.log(this.flagcolls[collid].items_uuids);\n return this.flagcolls[collid].items_uuids.indexOf(this.item.uuid) !== -1;\n },\n flagIsLoading: function flagIsLoading(collid) {\n // console.log(this.item.uuid);\n // console.log(this.flagcolls[collid].items_uuids);\n return collid === this.loadingFlag;\n },\n onFlagActionCard: function onFlagActionCard(e) {\n var _this = this;\n\n console.log(\"Card onFlagActionCard\", e);\n\n if (!this.loadingFlag) {\n var collid = e.target.getAttribute('collid');\n var isActive = this.flagIsActive(collid); // console.log('collid', collid);\n // console.log(\"this.item\", this.item);\n\n this.loadingFlag = collid;\n\n if (isActive) {\n this.unFlag({\n uuid: this.item.uuid,\n collid: collid\n }).then(function (data) {\n console.log(\"onFlagActionCard then\", data);\n _this.loadingFlag = false;\n });\n } else {\n this.flag({\n uuid: this.item.uuid,\n collid: collid\n }).then(function (data) {\n console.log(\"onFlagActionCard then\", data);\n _this.loadingFlag = false;\n });\n }\n }\n }\n })\n};\nexports.default = _default;\n\n//# sourceURL=webpack://materio.com/./web/themes/custom/materiotheme/vuejs/components/Content/Card.vue?./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options"); +eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.default = void 0;\n\nvar _vuex = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.common.js\");\n\nvar _cardMixins = _interopRequireDefault(__webpack_require__(/*! vuejs/components/cardMixins */ \"./web/themes/custom/materiotheme/vuejs/components/cardMixins.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar _default = {\n name: \"Card\",\n props: ['item'],\n mixins: [_cardMixins.default],\n data: function data() {\n return {\n blanksrc: \"\".concat(drupalSettings.path.themePath, \"/assets/img/blank.gif\"),\n loadingFlag: false\n };\n },\n computed: _objectSpread({}, (0, _vuex.mapState)({\n flagcolls: function flagcolls(state) {\n return state.User.flagcolls;\n }\n })),\n methods: _objectSpread(_objectSpread({}, (0, _vuex.mapActions)({\n flag: 'User/flag',\n unFlag: 'User/unFlag'\n })), {}, {\n flagIsActive: function flagIsActive(collid) {\n // console.log(this.item.uuid);\n // console.log(this.flagcolls[collid].items_uuids);\n return this.flagcolls[collid].items_uuids.indexOf(this.item.uuid) !== -1;\n },\n flagIsLoading: function flagIsLoading(collid) {\n // console.log(this.item.uuid);\n // console.log(this.flagcolls[collid].items_uuids);\n return collid === this.loadingFlag;\n },\n onFlagActionCard: function onFlagActionCard(e) {\n var _this = this;\n\n console.log(\"Card onFlagActionCard\", e);\n\n if (!this.loadingFlag) {\n var collid = e.target.getAttribute('collid');\n var isActive = this.flagIsActive(collid); // console.log('collid', collid);\n // console.log(\"this.item\", this.item);\n\n this.loadingFlag = collid;\n\n if (isActive) {\n this.unFlag({\n uuid: this.item.uuid,\n collid: collid\n }).then(function (data) {\n console.log(\"onFlagActionCard then\", data);\n _this.loadingFlag = false;\n });\n } else {\n this.flag({\n uuid: this.item.uuid,\n collid: collid\n }).then(function (data) {\n console.log(\"onFlagActionCard then\", data);\n _this.loadingFlag = false;\n });\n }\n }\n }\n })\n};\nexports.default = _default;\n\n//# sourceURL=webpack://materio.com/./web/themes/custom/materiotheme/vuejs/components/Content/Card.vue?./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options"); /***/ }), @@ -549,6 +549,22 @@ eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n})); /***/ }), +/***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./web/themes/custom/materiotheme/vuejs/components/Content/MiniCard.vue?vue&type=script&lang=js&": +/*!***********************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./web/themes/custom/materiotheme/vuejs/components/Content/MiniCard.vue?vue&type=script&lang=js& ***! + \***********************************************************************************************************************************************************************************************************/ +/*! flagged exports */ +/*! export __esModule [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export default [provided] [no usage info] [missing usage info prevents renaming] */ +/*! other exports [not provided] [no usage info] */ +/*! runtime requirements: __webpack_exports__, __webpack_require__ */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.default = void 0;\n\nvar _vuex = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.common.js\");\n\nvar _cardMixins = _interopRequireDefault(__webpack_require__(/*! vuejs/components/cardMixins */ \"./web/themes/custom/materiotheme/vuejs/components/cardMixins.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar _default = {\n name: \"MiniCard\",\n props: ['item'],\n mixins: [_cardMixins.default],\n data: function data() {\n return {\n blanksrc: \"\".concat(drupalSettings.path.themePath, \"/assets/img/blank.gif\") // loadingFlag: false\n\n };\n },\n computed: {// ...mapState({\n // flagcolls: state => state.User.flagcolls\n // })\n },\n methods: {// ...mapActions({\n // flag: 'User/flag',\n // unFlag: 'User/unFlag'\n // }),\n // flagIsActive(collid) {\n // // console.log(this.item.uuid);\n // // console.log(this.flagcolls[collid].items_uuids);\n // return this.flagcolls[collid].items_uuids.indexOf(this.item.uuid) !== -1;\n // },\n // flagIsLoading(collid) {\n // // console.log(this.item.uuid);\n // // console.log(this.flagcolls[collid].items_uuids);\n // return collid === this.loadingFlag;\n // },\n // onFlagActionCard (e) {\n // console.log(\"Card onFlagActionCard\", e);\n // if (!this.loadingFlag) {\n // let collid = e.target.getAttribute('collid');\n // let isActive = this.flagIsActive(collid);\n // // console.log('collid', collid);\n // // console.log(\"this.item\", this.item);\n // this.loadingFlag = collid;\n // if (isActive) {\n // this.unFlag({uuid: this.item.uuid, collid: collid})\n // .then(data => {\n // console.log(\"onFlagActionCard then\", data);\n // this.loadingFlag = false;\n // })\n // }else{\n // this.flag({uuid: this.item.uuid, collid: collid})\n // .then(data => {\n // console.log(\"onFlagActionCard then\", data);\n // this.loadingFlag = false;\n // })\n // }\n // }\n // }\n }\n};\nexports.default = _default;\n\n//# sourceURL=webpack://materio.com/./web/themes/custom/materiotheme/vuejs/components/Content/MiniCard.vue?./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options"); + +/***/ }), + /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./web/themes/custom/materiotheme/vuejs/components/Content/Product.vue?vue&type=script&lang=js&": /*!**********************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./web/themes/custom/materiotheme/vuejs/components/Content/Product.vue?vue&type=script&lang=js& ***! @@ -689,7 +705,7 @@ eval("\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; -eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.default = void 0;\n\nvar _Card = _interopRequireDefault(__webpack_require__(/*! vuejs/components/Content/Card */ \"./web/themes/custom/materiotheme/vuejs/components/Content/Card.vue\"));\n\nvar _vuex = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.common.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar _default = {\n name: \"Base\",\n data: function data() {\n return {\n pagetitle: \"Base\" // searchinfos: null\n\n };\n },\n computed: _objectSpread({}, (0, _vuex.mapState)({\n items: function items(state) {\n return state.Search.items;\n },\n searchinfos: function searchinfos(state) {\n return state.Search.infos;\n },\n count: function count(state) {\n return state.Search.count;\n },\n limit: function limit(state) {\n return state.Search.limit;\n }\n })),\n methods: _objectSpread({}, (0, _vuex.mapActions)({\n newSearch: 'Search/newSearch',\n nextPage: 'Search/nextPage'\n })),\n created: function created() {\n // at first page load or first route entering launch a search if params exists in url query\n console.log('Base created() location', window.location);\n var params = new URLSearchParams(window.location.search);\n\n if (params.has('keys') || params.has('term')) {\n this.$store.commit('Search/setKeys', params.get('keys'));\n this.$store.commit('Search/setTerm', params.get('term'));\n this.pagetitle = params.get('keys');\n this.newSearch();\n }\n },\n beforeRouteUpdate: function beforeRouteUpdate(to, from, next) {\n // when query change launch a new search\n console.log('Base beforeRouteUpdate', to, from, next);\n this.$store.commit('Search/setKeys', to.query.keys);\n this.$store.commit('Search/setTerm', to.query.term);\n this.pagetitle = to.query.keys;\n this.newSearch();\n next();\n },\n components: {\n Card: _Card.default\n }\n};\nexports.default = _default;\n\n//# sourceURL=webpack://materio.com/./web/themes/custom/materiotheme/vuejs/components/Pages/Base.vue?./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options"); +eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.default = void 0;\n\nvar _Card = _interopRequireDefault(__webpack_require__(/*! vuejs/components/Content/Card */ \"./web/themes/custom/materiotheme/vuejs/components/Content/Card.vue\"));\n\nvar _vuex = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.common.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar _default = {\n name: \"Base\",\n data: function data() {\n return {\n pagetitle: \"Base\" // searchinfos: null\n\n };\n },\n computed: _objectSpread({}, (0, _vuex.mapState)({\n items: function items(state) {\n return state.Search.items;\n },\n searchinfos: function searchinfos(state) {\n return state.Search.infos;\n },\n count: function count(state) {\n return state.Search.count;\n },\n noresults: function noresults(state) {\n return state.Search.noresults;\n },\n limit: function limit(state) {\n return state.Search.limit;\n }\n })),\n methods: _objectSpread({}, (0, _vuex.mapActions)({\n newSearch: 'Search/newSearch',\n nextPage: 'Search/nextPage'\n })),\n created: function created() {\n // at first page load or first route entering launch a search if params exists in url query\n console.log('Base created() location', window.location);\n var params = new URLSearchParams(window.location.search);\n\n if (params.has('keys') || params.has('term')) {\n this.$store.commit('Search/setKeys', params.get('keys'));\n this.$store.commit('Search/setTerm', params.get('term'));\n this.pagetitle = params.get('keys');\n this.newSearch();\n }\n },\n beforeRouteUpdate: function beforeRouteUpdate(to, from, next) {\n // when query change launch a new search\n console.log('Base beforeRouteUpdate', to, from, next);\n this.$store.commit('Search/setKeys', to.query.keys);\n this.$store.commit('Search/setTerm', to.query.term);\n this.pagetitle = to.query.keys;\n this.newSearch();\n next();\n },\n components: {\n Card: _Card.default\n }\n};\nexports.default = _default;\n\n//# sourceURL=webpack://materio.com/./web/themes/custom/materiotheme/vuejs/components/Pages/Base.vue?./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options"); /***/ }), @@ -769,7 +785,7 @@ eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n})); /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; -eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.default = void 0;\n\nvar _vuex = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.common.js\");\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar _default = {\n name: \"FlagCollection\",\n props: ['collection'],\n data: function data() {\n return {\n loadedItems: false\n };\n },\n computed: _objectSpread({}, (0, _vuex.mapState)({\n flagcolls: function flagcolls(state) {\n return state.User.flagcolls;\n } // openedCollid: state => state.User.openedCollid\n\n })),\n // watch: {\n // flagcolls (newv, oldv) {\n // console.log('watching flagcolls');\n // if( typeof this.flagcolls[this.collection.id].loadedItems !== 'undefined' ) {\n // this.loadedItems = this.flagcolls[this.collection.id].loadedItems\n // }\n // }\n // },\n created: function created() {\n var _this = this;\n\n this.unsubscribe = this.$store.subscribe(function (mutation, state) {\n if (mutation.type === 'User/setLoadedCollItems') {\n _this.loadedItems = state.User.flagcolls[_this.collection.id].loadedItems;\n }\n });\n },\n beforeDestroy: function beforeDestroy() {\n this.unsubscribe();\n } // beforeMount () {\n // if (typeof this.flagcolls[collection.id].loadedItems === 'undefined') {\n // this.\n // }\n // },\n // methods: {\n // ...mapActions({\n // loadFlagCollItems: 'User/loadFlagCollItems'\n // })\n // }\n\n};\nexports.default = _default;\n\n//# sourceURL=webpack://materio.com/./web/themes/custom/materiotheme/vuejs/components/User/FlagCollection.vue?./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options"); +eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.default = void 0;\n\nvar _vuex = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.common.js\");\n\nvar _MiniCard = _interopRequireDefault(__webpack_require__(/*! vuejs/components/Content/MiniCard */ \"./web/themes/custom/materiotheme/vuejs/components/Content/MiniCard.vue\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar _default = {\n name: \"FlagCollection\",\n props: ['collection'],\n data: function data() {\n return {\n loadedItems: false\n };\n },\n computed: _objectSpread({}, (0, _vuex.mapState)({\n flagcolls: function flagcolls(state) {\n return state.User.flagcolls;\n },\n openedCollid: function openedCollid(state) {\n return state.User.openedCollid;\n }\n })),\n // watch: {\n // flagcolls (newv, oldv) {\n // console.log('watching flagcolls');\n // if( typeof this.flagcolls[this.collection.id].loadedItems !== 'undefined' ) {\n // this.loadedItems = this.flagcolls[this.collection.id].loadedItems\n // }\n // }\n // },\n created: function created() {\n var _this = this;\n\n if (typeof this.collection.loadedItems !== 'undefined') {\n // if loadedItems are alredy loaded,\n // the mutation occurs before this subscription\n // so we first check if they are already available\n this.loadedItems = this.collection.loadedItems;\n }\n\n this.unsubscribe = this.$store.subscribe(function (mutation, state) {\n if (mutation.type === 'User/setLoadedCollItems') {\n console.log(\"mutation setLoadedCollItems collid\", _this.openedCollid); // mutation is triggered before the component update\n // so this.collection.id is not good\n\n _this.loadedItems = state.User.flagcolls[_this.openedCollid].loadedItems;\n }\n });\n },\n beforeDestroy: function beforeDestroy() {\n this.unsubscribe();\n },\n // beforeMount () {\n // if (typeof this.flagcolls[collection.id].loadedItems === 'undefined') {\n // this.\n // }\n // },\n methods: _objectSpread(_objectSpread({}, (0, _vuex.mapActions)({\n closeFlagColl: 'User/closeFlagColl'\n })), {}, {\n onCloseFlagColl: function onCloseFlagColl(e) {\n this.closeFlagColl();\n }\n }),\n components: {\n MiniCard: _MiniCard.default\n }\n};\nexports.default = _default;\n\n//# sourceURL=webpack://materio.com/./web/themes/custom/materiotheme/vuejs/components/User/FlagCollection.vue?./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options"); /***/ }), @@ -785,7 +801,7 @@ eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n})); /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; -eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.default = void 0;\n\nvar _vuex = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.common.js\");\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar _default = {\n name: \"userFlags\",\n data: function data() {\n return {\n new_folder_name: \"\",\n is_creating_folder: false,\n is_deleting_folder: false\n };\n },\n computed: _objectSpread(_objectSpread({}, (0, _vuex.mapState)({\n flagcolls: function flagcolls(state) {\n return state.User.flagcolls;\n }\n })), {}, {\n addFlagBtnClassObj: function addFlagBtnClassObj() {\n return {\n 'mdi-plus-circle-outline': !this.is_creating_folder,\n 'mdi-loading': this.is_creating_folder,\n active: this.new_folder_name.length > 4 && !this.is_creating_folder,\n loading: this.is_creating_folder\n };\n },\n flagDeletingClassObj: function flagDeletingClassObj() {\n return {\n 'mdi-trash-can-outline': !this.is_deleting_folder,\n 'mdi-loading': this.is_deleting_folder,\n 'loading': this.is_deleting_folder\n };\n }\n }),\n methods: _objectSpread(_objectSpread({}, (0, _vuex.mapActions)({\n createFlagColl: 'User/createFlagColl',\n deleteFlagColl: 'User/deleteFlagColl',\n openFlagColl: 'User/openFlagColl'\n })), {}, {\n onCreateFlagColl: function onCreateFlagColl() {\n var _this = this;\n\n console.log(\"UserFlags onCreateFlagColl\", this.new_folder_name);\n this.is_creating_folder = true;\n this.createFlagColl(this.new_folder_name).then(function (data) {\n console.log(\"onCreateFlagColl then\", data);\n _this.new_folder_name = \"\";\n _this.is_creating_folder = false;\n });\n },\n onDeleteFlagColl: function onDeleteFlagColl(e) {\n var _this2 = this;\n\n var flagcollid = e.target.getAttribute('flagcollid');\n console.log(\"UserFlags onDeleteFlagColl\", flagcollid);\n this.is_deleting_folder = flagcollid;\n this.deleteFlagColl(flagcollid).then(function () {\n // console.log(\"onDeleteFlagColl then\", data);\n _this2.is_deleting_folder = false;\n });\n },\n onOpenFlagColl: function onOpenFlagColl(e) {\n var flagcollid = e.target.getAttribute('flagcollid');\n console.log(\"UserFlags onDeleteFlagColl\", flagcollid);\n this.openFlagColl(flagcollid).then(function () {// console.log(\"onDeleteFlagColl then\", data);\n });\n }\n })\n};\nexports.default = _default;\n\n//# sourceURL=webpack://materio.com/./web/themes/custom/materiotheme/vuejs/components/User/UserFlags.vue?./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options"); +eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.default = void 0;\n\nvar _vuex = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.common.js\");\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar _default = {\n name: \"userFlags\",\n data: function data() {\n return {\n new_folder_name: \"\",\n is_creating_folder: false,\n is_deleting_folder: false\n };\n },\n computed: _objectSpread(_objectSpread({}, (0, _vuex.mapState)({\n flagcolls: function flagcolls(state) {\n return state.User.flagcolls;\n }\n })), {}, {\n addFlagBtnClassObj: function addFlagBtnClassObj() {\n return {\n 'mdi-plus-circle-outline': !this.is_creating_folder,\n 'mdi-loading': this.is_creating_folder,\n active: this.new_folder_name.length > 4 && !this.is_creating_folder,\n loading: this.is_creating_folder\n };\n },\n flagDeletingClassObj: function flagDeletingClassObj() {\n return {\n 'mdi-trash-can-outline': !this.is_deleting_folder,\n 'mdi-loading': this.is_deleting_folder,\n 'loading': this.is_deleting_folder\n };\n }\n }),\n methods: _objectSpread(_objectSpread({}, (0, _vuex.mapActions)({\n createFlagColl: 'User/createFlagColl',\n deleteFlagColl: 'User/deleteFlagColl',\n openFlagColl: 'User/openFlagColl'\n })), {}, {\n onCreateFlagColl: function onCreateFlagColl() {\n var _this = this;\n\n console.log(\"UserFlags onCreateFlagColl\", this.new_folder_name);\n this.is_creating_folder = true;\n this.createFlagColl(this.new_folder_name).then(function (data) {\n console.log(\"onCreateFlagColl then\", data);\n _this.new_folder_name = \"\";\n _this.is_creating_folder = false;\n });\n },\n onDeleteFlagColl: function onDeleteFlagColl(e) {\n var _this2 = this;\n\n var flagcollid = e.target.getAttribute('flagcollid');\n console.log(\"UserFlags onDeleteFlagColl\", flagcollid);\n this.is_deleting_folder = flagcollid;\n this.deleteFlagColl(flagcollid).then(function () {\n // console.log(\"onDeleteFlagColl then\", data);\n _this2.is_deleting_folder = false;\n });\n },\n onOpenFlagColl: function onOpenFlagColl(e) {\n var flagcollid = e.target.getAttribute('flagcollid');\n console.log(\"UserFlags onOpenFlagColl\", flagcollid);\n this.openFlagColl(flagcollid).then(function () {// console.log(\"onDeleteFlagColl then\", data);\n });\n }\n })\n};\nexports.default = _default;\n\n//# sourceURL=webpack://materio.com/./web/themes/custom/materiotheme/vuejs/components/User/UserFlags.vue?./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options"); /***/ }), @@ -832,6 +848,39 @@ eval("/*!\n * Vue.js v2.6.12\n * (c) 2014-2020 Evan You\n * Released under the M /***/ }), +/***/ "./node_modules/vuex-extensions/lib/index.js": +/*!***************************************************!*\ + !*** ./node_modules/vuex-extensions/lib/index.js ***! + \***************************************************/ +/*! flagged exports */ +/*! export __esModule [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export createStore [provided] [no usage info] [missing usage info prevents renaming] */ +/*! other exports [not provided] [no usage info] */ +/*! runtime requirements: __webpack_exports__, __webpack_require__ */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.createStore = void 0;\n\nvar _util = __webpack_require__(/*! ./util */ \"./node_modules/vuex-extensions/lib/util.js\");\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nvar createStore = function createStore(vuexStoreClass) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var mixins = options.mixins || {}; // static module\n\n injectModule(options, mixins);\n\n if (!vuexStoreClass.prototype.reset) {\n // dynamic module\n var rawRegisterModule = vuexStoreClass.prototype.registerModule;\n\n vuexStoreClass.prototype.registerModule = function (path, rawModule) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n injectModule(rawModule, mixins);\n rawRegisterModule.call(this, path, rawModule, options);\n }; // reset to original state\n\n\n vuexStoreClass.prototype.reset = function (options) {\n var originalState = getOriginalState(this._modules.root, (0, _util.deepCopy)(this._vm._data.$$state), options);\n this.replaceState((0, _util.deepCopy)(originalState));\n };\n }\n\n var store = new vuexStoreClass(options);\n return store;\n};\n\nexports.createStore = createStore;\n\nfunction injectModule(m, mixins) {\n m._originalState = (0, _util.deepCopy)((typeof m.state === 'function' ? m.state() : m.state) || {});\n var mutations = mixins.mutations,\n actions = mixins.actions,\n getters = mixins.getters;\n\n if (mutations) {\n m.mutations = _objectSpread({}, mutations, {}, m.mutations || {});\n }\n\n if (actions) {\n m.actions = _objectSpread({}, actions, {}, m.actions || {});\n }\n\n if (getters) {\n m.getters = _objectSpread({}, getters, {}, m.getters || {});\n }\n\n if (m.modules) {\n Object.values(m.modules).forEach(function (subModule) {\n injectModule(subModule, mixins);\n });\n }\n}\n\nfunction getOriginalState(module, moduleVueState) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var defaultReset = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n\n if (options.self === undefined) {\n options.self = defaultReset;\n }\n\n if (options.nested === undefined) {\n options.nested = options.self;\n }\n\n var state = options.self ? module._rawModule._originalState : moduleVueState;\n module.forEachChild(function (childModule, key) {\n var nestOption = {};\n\n if (options.modules && options.modules[key]) {\n nestOption = _objectSpread({}, options.modules[key]);\n }\n\n state[key] = getOriginalState(childModule, moduleVueState[key], nestOption, options.nested);\n });\n return state;\n}\n\n//# sourceURL=webpack://materio.com/./node_modules/vuex-extensions/lib/index.js?"); + +/***/ }), + +/***/ "./node_modules/vuex-extensions/lib/util.js": +/*!**************************************************!*\ + !*** ./node_modules/vuex-extensions/lib/util.js ***! + \**************************************************/ +/*! flagged exports */ +/*! export __esModule [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export deepCopy [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export find [provided] [no usage info] [missing usage info prevents renaming] */ +/*! other exports [not provided] [no usage info] */ +/*! runtime requirements: __webpack_exports__ */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.find = find;\nexports.deepCopy = deepCopy;\n\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n/**\n * Get the first item that pass the test\n * by second argument function\n *\n * @param {Array} list\n * @param {Function} f\n * @return {*}\n */\n\n\nfunction find(list, f) {\n return list.filter(f)[0];\n}\n/**\n * Deep copy the given object considering circular structure.\n * This function caches all nested objects and its copies.\n * If it detects circular structure, use cached copy to avoid infinite loop.\n *\n * @param {*} obj\n * @param {Array} cache\n * @return {*}\n */\n\n\nfunction deepCopy(obj) {\n var cache = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; // just return if obj is immutable value\n\n if (obj === null || _typeof(obj) !== 'object') {\n return obj;\n } // if obj is hit, it is in circular structure\n\n\n var hit = find(cache, function (c) {\n return c.original === obj;\n });\n\n if (hit) {\n return hit.copy;\n }\n\n var copy = Array.isArray(obj) ? [] : {}; // put the copy into cache at first\n // because we want to refer it in recursive deepCopy\n\n cache.push({\n original: obj,\n copy: copy\n });\n Object.keys(obj).forEach(function (key) {\n copy[key] = deepCopy(obj[key], cache);\n });\n return copy;\n} // export const logger = {\n// error: text => {\n// if (process.env.NODE_ENV !== 'production') {\n// console.error(`[vuex-ex] ${text}`)\n// }\n// }\n// }\n\n//# sourceURL=webpack://materio.com/./node_modules/vuex-extensions/lib/util.js?"); + +/***/ }), + /***/ "./node_modules/vuex/dist/vuex.common.js": /*!***********************************************!*\ !*** ./node_modules/vuex/dist/vuex.common.js ***! @@ -893,6 +942,22 @@ eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n})); /***/ }), +/***/ "./web/themes/custom/materiotheme/vuejs/components/cardMixins.js": +/*!***********************************************************************!*\ + !*** ./web/themes/custom/materiotheme/vuejs/components/cardMixins.js ***! + \***********************************************************************/ +/*! flagged exports */ +/*! export __esModule [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export default [provided] [no usage info] [missing usage info prevents renaming] */ +/*! other exports [not provided] [no usage info] */ +/*! runtime requirements: __webpack_exports__ */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.default = void 0;\n// https://forum.vuejs.org/t/how-to-use-helper-functions-for-imported-modules-in-vuejs-vue-template/6266/5\nvar _default = {\n directives: {\n lazy: {\n bind: function bind(img, binding) {\n // console.log('lazy bind', img, binding);\n if (binding.value === 0) {\n img.setAttribute('src', img.getAttribute('data-src'));\n img.removeAttribute('data-src');\n img.classList.remove('lazy');\n }\n }\n },\n switcher: {\n inserted: function inserted(el, binding) {\n // switch images on mousemove\n el.addEventListener('mousemove', function (event) {\n var figs = this.querySelectorAll('figure'); // console.log('mousemove', this, event, figs.length);\n // let len = figs.length\n // let w = this.clientWidth;\n // let g = w / len;\n // let delta = Math.floor(event.layerX / g)\n\n var delta = Math.floor(event.layerX / (this.clientWidth / figs.length)); // console.log('delta', delta);\n\n figs.forEach(function (fig, index) {\n // console.log(index);\n if (index == delta) {\n fig.style.display = \"block\";\n } else {\n fig.style.display = \"none\";\n }\n });\n });\n }\n }\n },\n mounted: function mounted() {\n // lazy load images on mouseover\n this.$el.addEventListener('mouseover', function (event) {\n var imgs = this.querySelectorAll('.images figure img.lazy'); // console.log('mouseover', this, imgs);\n\n imgs.forEach(function (img) {\n // console.log('forEach img',img);\n img.setAttribute('src', img.getAttribute('data-src'));\n img.removeAttribute('data-src');\n img.classList.remove('lazy');\n });\n }, {\n once: true\n });\n },\n methods: {// deg2rad (deg) {\n // return deg * (Math.PI / 180)\n // },\n }\n};\nexports.default = _default;\n\n//# sourceURL=webpack://materio.com/./web/themes/custom/materiotheme/vuejs/components/cardMixins.js?"); + +/***/ }), + /***/ "./web/themes/custom/materiotheme/vuejs/route/index.js": /*!*************************************************************!*\ !*** ./web/themes/custom/materiotheme/vuejs/route/index.js ***! @@ -921,7 +986,7 @@ eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n})); /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; -eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.default = void 0;\n\nvar _vue = _interopRequireDefault(__webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.js\"));\n\nvar _vuex = _interopRequireDefault(__webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.common.js\"));\n\nvar _common = _interopRequireDefault(__webpack_require__(/*! ./modules/common */ \"./web/themes/custom/materiotheme/vuejs/store/modules/common.js\"));\n\nvar _user = _interopRequireDefault(__webpack_require__(/*! ./modules/user */ \"./web/themes/custom/materiotheme/vuejs/store/modules/user.js\"));\n\nvar _search = _interopRequireDefault(__webpack_require__(/*! ./modules/search */ \"./web/themes/custom/materiotheme/vuejs/store/modules/search.js\"));\n\nvar _blabla = _interopRequireDefault(__webpack_require__(/*! ./modules/blabla */ \"./web/themes/custom/materiotheme/vuejs/store/modules/blabla.js\"));\n\nvar _showrooms = _interopRequireDefault(__webpack_require__(/*! ./modules/showrooms */ \"./web/themes/custom/materiotheme/vuejs/store/modules/showrooms.js\"));\n\nvar _pages = _interopRequireDefault(__webpack_require__(/*! ./modules/pages */ \"./web/themes/custom/materiotheme/vuejs/store/modules/pages.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// https://github.com/vuejs/vuex/tree/dev/examples/shopping-cart\n_vue.default.use(_vuex.default);\n\nvar _default = new _vuex.default.Store({\n modules: {\n Common: _common.default,\n User: _user.default,\n Search: _search.default,\n Blabla: _blabla.default,\n Showrooms: _showrooms.default,\n Pages: _pages.default\n }\n});\n\nexports.default = _default;\n\n//# sourceURL=webpack://materio.com/./web/themes/custom/materiotheme/vuejs/store/index.js?"); +eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.default = void 0;\n\nvar _vue = _interopRequireDefault(__webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.js\"));\n\nvar _vuex = _interopRequireDefault(__webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.common.js\"));\n\nvar _vuexExtensions = __webpack_require__(/*! vuex-extensions */ \"./node_modules/vuex-extensions/lib/index.js\");\n\nvar _jsonAxios = __webpack_require__(/*! vuejs/api/json-axios */ \"./web/themes/custom/materiotheme/vuejs/api/json-axios.js\");\n\nvar _querystringEs = _interopRequireDefault(__webpack_require__(/*! querystring-es3 */ \"./node_modules/querystring-es3/index.js\"));\n\nvar _common = _interopRequireDefault(__webpack_require__(/*! ./modules/common */ \"./web/themes/custom/materiotheme/vuejs/store/modules/common.js\"));\n\nvar _user = _interopRequireDefault(__webpack_require__(/*! ./modules/user */ \"./web/themes/custom/materiotheme/vuejs/store/modules/user.js\"));\n\nvar _search = _interopRequireDefault(__webpack_require__(/*! ./modules/search */ \"./web/themes/custom/materiotheme/vuejs/store/modules/search.js\"));\n\nvar _blabla = _interopRequireDefault(__webpack_require__(/*! ./modules/blabla */ \"./web/themes/custom/materiotheme/vuejs/store/modules/blabla.js\"));\n\nvar _showrooms = _interopRequireDefault(__webpack_require__(/*! ./modules/showrooms */ \"./web/themes/custom/materiotheme/vuejs/store/modules/showrooms.js\"));\n\nvar _pages = _interopRequireDefault(__webpack_require__(/*! ./modules/pages */ \"./web/themes/custom/materiotheme/vuejs/store/modules/pages.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// https://github.com/vuejs/vuex/tree/dev/examples/shopping-cart\n_vue.default.use(_vuex.default); // export default new Vuex.Store({\n\n\nvar _default = (0, _vuexExtensions.createStore)(_vuex.default.Store, {\n modules: {\n Common: _common.default,\n User: _user.default,\n Search: _search.default,\n Blabla: _blabla.default,\n Showrooms: _showrooms.default,\n Pages: _pages.default\n },\n // https://github.com/huybuidac/vuex-extensions\n mixins: {\n actions: {\n loadMaterials: function loadMaterials(_ref, _ref2) {\n var dispatch = _ref.dispatch;\n var uuids = _ref2.uuids,\n imgStyle = _ref2.imgStyle,\n callBack = _ref2.callBack,\n callBackArgs = _ref2.callBackArgs;\n var params = {\n // include: 'images', // no needs to include thanks to consumers_image_styles module\n // include: 'drupal_internal__nid',\n 'filter[uuids-groupe][group][conjunction]': 'OR'\n };\n\n for (var i = 0; i < uuids.length; i++) {\n var uuid = uuids[i];\n params[\"filter[\".concat(uuid, \"][condition][path]\")] = 'id';\n params[\"filter[\".concat(uuid, \"][condition][value]\")] = uuid;\n params[\"filter[\".concat(uuid, \"][condition][operator]\")] = '=';\n params[\"filter[\".concat(uuid, \"][condition][memberOf]\")] = 'uuids-groupe';\n } // console.log('search JSONAPI params', params);\n\n\n var q = _querystringEs.default.stringify(params);\n\n return _jsonAxios.JSONAPI.get('node/materiau?' + q).then(function (_ref3) {\n var data = _ref3.data;\n console.log('mixin getMaterials data', data);\n dispatch('parseMaterials', {\n data: data.data,\n uuids: uuids,\n imgStyle: imgStyle,\n callBack: callBack,\n callBackArgs: callBackArgs\n }); // commit('setItems', data.items)\n }).catch(function (error) {\n console.warn('Issue with getItems', error);\n Promise.reject(error);\n });\n },\n parseMaterials: function parseMaterials(_ref4, _ref5) {\n var dispatch = _ref4.dispatch;\n var data = _ref5.data,\n uuids = _ref5.uuids,\n imgStyle = _ref5.imgStyle,\n callBack = _ref5.callBack,\n callBackArgs = _ref5.callBackArgs;\n // data comes from jsonapi query\n // uuids comes from original query (solr, FlagCollection, etc)\n // so we loop from uuids to conserve the original order\n console.log('mixin parseMaterials', data, uuids, callBack, callBackArgs);\n var items = []; // for (var i = 0; i < data.length; i++) {\n\n var _loop = function _loop(i) {\n var uuid = uuids[i]; // https://stackoverflow.com/questions/11258077/how-to-find-index-of-an-object-by-key-and-value-in-an-javascript-array\n\n var item_index = data.findIndex(function (p) {\n return p.id === uuid;\n }); // console.log('item_index', item_index);\n\n if (item_index === -1) return \"continue\";\n var item_src = data[item_index];\n var attrs = item_src.attributes;\n var relations = item_src.relationships; // get field values\n\n var item = {\n uuid: uuid,\n title: attrs.title,\n field_short_description: attrs.field_short_description,\n body: attrs.body,\n field_reference: attrs.field_reference\n }; // get images included values\n\n var img_src = relations.images.data; // console.log('img_src', img_src);\n // this is a temporary deactivation of images\n // img_src = [];\n\n item.images = [];\n\n for (var j = 0; j < img_src.length; j++) {\n if (img_src[j].meta.imageDerivatives) {\n item.images.push({\n title: img_src[j].meta.title,\n // meta.imageDerivatives.style.href link is provided by drupal consumers_image_styles module\n // BUG: missing all image derivative but first\n url: img_src[j].meta.imageDerivatives.links[imgStyle].href\n });\n } else {\n console.warn('missing image derivative ' + j + '/' + img_src.length + ' for ' + attrs.title);\n }\n }\n\n items.push(item);\n };\n\n for (var i = 0; i < uuids.length; i++) {\n var _ret = _loop(i);\n\n if (_ret === \"continue\") continue;\n }\n\n console.log('items', items);\n dispatch(callBack, {\n items: items,\n callBackArgs: callBackArgs\n });\n }\n }\n }\n});\n\nexports.default = _default;\n\n//# sourceURL=webpack://materio.com/./web/themes/custom/materiotheme/vuejs/store/index.js?"); /***/ }), @@ -985,7 +1050,7 @@ eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n})); /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; -eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.default = void 0;\n\nvar _restAxios = __webpack_require__(/*! vuejs/api/rest-axios */ \"./web/themes/custom/materiotheme/vuejs/api/rest-axios.js\");\n\nvar _jsonAxios = __webpack_require__(/*! vuejs/api/json-axios */ \"./web/themes/custom/materiotheme/vuejs/api/json-axios.js\");\n\nvar _maAxios = __webpack_require__(/*! vuejs/api/ma-axios */ \"./web/themes/custom/materiotheme/vuejs/api/ma-axios.js\");\n\nvar _querystringEs = _interopRequireDefault(__webpack_require__(/*! querystring-es3 */ \"./node_modules/querystring-es3/index.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _default = {\n namespaced: true,\n // initial state\n state: {\n keys: '',\n term: '',\n uuids: [],\n items: [],\n offset: 0,\n limit: 15,\n infos: null,\n count: 0,\n // infinteState will come from vue-infinite-loading plugin\n // implemented in vuejs/components/Content/Base.vue\n infiniteLoadingState: null\n },\n // getters\n getters: {},\n // mutations\n mutations: {\n setUuids: function setUuids(state, uuids) {\n state.uuids = state.uuids.concat(uuids);\n },\n resetUuids: function resetUuids(state) {\n state.uuids = [];\n },\n setItems: function setItems(state, items) {\n state.items = state.items.concat(items);\n },\n resetItems: function resetItems(state) {\n state.items = [];\n },\n setKeys: function setKeys(state, keys) {\n state.keys = keys;\n },\n setTerm: function setTerm(state, term) {\n state.term = term;\n },\n setInfos: function setInfos(state, infos) {\n state.infos = infos;\n },\n setCount: function setCount(state, count) {\n state.count = count;\n },\n resetOffset: function resetOffset(state) {\n state.offset = 0;\n },\n incrementOffset: function incrementOffset(state) {\n state.offset += state.limit;\n },\n setInfiniteState: function setInfiniteState(state, infiniteLoadingstate) {\n state.infiniteLoadingState = infiniteLoadingstate;\n }\n },\n // actions\n actions: {\n newSearch: function newSearch(_ref) {\n var dispatch = _ref.dispatch,\n commit = _ref.commit,\n state = _ref.state;\n console.log('Search newSearch');\n commit('resetUuids');\n commit('resetItems');\n commit('resetOffset');\n this.commit('Common/setPagetitle', state.keys);\n dispatch('getResults');\n },\n nextPage: function nextPage(_ref2, $infiniteLoadingstate) {\n var dispatch = _ref2.dispatch,\n commit = _ref2.commit,\n state = _ref2.state;\n console.log('Search nextPage', $infiniteLoadingstate);\n commit('incrementOffset');\n commit('setInfiniteState', $infiniteLoadingstate);\n dispatch('getResults');\n },\n getResults: function getResults(_ref3) {\n var dispatch = _ref3.dispatch,\n commit = _ref3.commit,\n state = _ref3.state;\n var params = {\n keys: state.keys,\n term: state.term,\n offset: state.offset,\n limit: state.limit\n }; // console.log('Search getResults params', params);\n\n var q = _querystringEs.default.stringify(params);\n\n return _maAxios.MA.get('/materio_sapi/getresults?' + q).then(function (_ref4) {\n var data = _ref4.data;\n console.log('search MA getresults data', data); // commit('setItems', data.items)\n\n commit('setInfos', data.infos);\n commit('setCount', data.count);\n commit('setUuids', data.uuids);\n dispatch('getItems', data.uuids);\n }).catch(function (error) {\n console.warn('Issue with getResults', error);\n Promise.reject(error);\n });\n },\n getItems: function getItems(_ref5, uuids) {\n var dispatch = _ref5.dispatch,\n commit = _ref5.commit,\n state = _ref5.state;\n var params = {\n // include: 'images', // no needs to include thanks to consumers_image_styles module\n // include: 'drupal_internal__nid',\n 'filter[uuids-groupe][group][conjunction]': 'OR'\n };\n\n for (var i = 0; i < uuids.length; i++) {\n var uuid = uuids[i];\n params[\"filter[\".concat(uuid, \"][condition][path]\")] = 'id';\n params[\"filter[\".concat(uuid, \"][condition][value]\")] = uuid;\n params[\"filter[\".concat(uuid, \"][condition][operator]\")] = '=';\n params[\"filter[\".concat(uuid, \"][condition][memberOf]\")] = 'uuids-groupe';\n } // console.log('search JSONAPI params', params);\n\n\n var q = _querystringEs.default.stringify(params);\n\n return _jsonAxios.JSONAPI.get('node/materiau?' + q).then(function (_ref6) {\n var data = _ref6.data;\n console.log('search getItems data', data);\n dispatch('parseItems', {\n data: data.data,\n uuids: uuids\n }); // commit('setItems', data.items)\n }).catch(function (error) {\n console.warn('Issue with getItems', error);\n Promise.reject(error);\n });\n },\n parseItems: function parseItems(_ref7, _ref8) {\n var dispatch = _ref7.dispatch,\n commit = _ref7.commit,\n state = _ref7.state;\n var data = _ref8.data,\n uuids = _ref8.uuids;\n // data comes from jsonapi query\n // uuids comes from solr search query (we loop from uuids to conserve the search results order)\n console.log('search parseItems data, uuids', data, uuids);\n var items = []; // for (var i = 0; i < data.length; i++) {\n\n var _loop = function _loop(i) {\n var uuid = uuids[i]; // https://stackoverflow.com/questions/11258077/how-to-find-index-of-an-object-by-key-and-value-in-an-javascript-array\n\n var item_index = data.findIndex(function (p) {\n return p.id == uuid;\n }); // console.log('item_index', item_index);\n\n if (item_index == -1) return \"continue\";\n var item_src = data[item_index];\n var attrs = item_src.attributes;\n var relations = item_src.relationships; // get field values\n\n var item = {\n uuid: uuid,\n title: attrs.title,\n field_short_description: attrs.field_short_description,\n body: attrs.body,\n field_reference: attrs.field_reference\n }; // get images included values\n\n var img_src = relations.images.data; // console.log('img_src', img_src);\n // this is a temporary deactivation of images\n // img_src = [];\n\n item.images = [];\n\n for (var j = 0; j < img_src.length; j++) {\n if (img_src[j].meta.imageDerivatives) {\n item.images.push({\n title: img_src[j].meta.title,\n // meta.imageDerivatives.style.href link is provided by drupal consumers_image_styles module\n // BUG: missing all image derivative but first\n url: img_src[j].meta.imageDerivatives.links.card_medium.href\n });\n } else {\n console.warn('missing image derivative ' + j + '/' + img_src.length + ' for ' + attrs.title);\n }\n }\n\n items.push(item);\n };\n\n for (var i = 0; i < uuids.length; i++) {\n var _ret = _loop(i);\n\n if (_ret === \"continue\") continue;\n }\n\n console.log('items', items);\n commit('setItems', items);\n\n if (state.infiniteLoadingState) {\n if (state.offset + state.limit > state.count) {\n console.log('Search infinite completed'); // tell to vue-infinite-loading plugin that there si no new page\n\n state.infiniteLoadingState.complete();\n } else {\n console.log('Search infinite loaded'); // tell to vue-infinite-loading plugin that newpage is loaded\n\n state.infiniteLoadingState.loaded();\n }\n }\n }\n }\n};\nexports.default = _default;\n\n//# sourceURL=webpack://materio.com/./web/themes/custom/materiotheme/vuejs/store/modules/search.js?"); +eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.default = void 0;\n\nvar _restAxios = __webpack_require__(/*! vuejs/api/rest-axios */ \"./web/themes/custom/materiotheme/vuejs/api/rest-axios.js\");\n\nvar _jsonAxios = __webpack_require__(/*! vuejs/api/json-axios */ \"./web/themes/custom/materiotheme/vuejs/api/json-axios.js\");\n\nvar _maAxios = __webpack_require__(/*! vuejs/api/ma-axios */ \"./web/themes/custom/materiotheme/vuejs/api/ma-axios.js\");\n\nvar _querystringEs = _interopRequireDefault(__webpack_require__(/*! querystring-es3 */ \"./node_modules/querystring-es3/index.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _default = {\n namespaced: true,\n // initial state\n state: {\n keys: '',\n term: '',\n uuids: [],\n items: [],\n offset: 0,\n limit: 15,\n infos: null,\n count: 0,\n noresults: false,\n // infinteState will come from vue-infinite-loading plugin\n // implemented in vuejs/components/Content/Base.vue\n infiniteLoadingState: null\n },\n // getters\n getters: {},\n // mutations\n mutations: {\n setUuids: function setUuids(state, uuids) {\n state.uuids = state.uuids.concat(uuids);\n },\n resetUuids: function resetUuids(state) {\n state.uuids = [];\n },\n setMaterials: function setMaterials(state, items) {\n state.items = state.items.concat(items);\n },\n resetItems: function resetItems(state) {\n state.items = [];\n },\n setKeys: function setKeys(state, keys) {\n state.keys = keys;\n },\n setTerm: function setTerm(state, term) {\n state.term = term;\n },\n setInfos: function setInfos(state, infos) {\n state.infos = infos;\n },\n setCount: function setCount(state, count) {\n state.count = count;\n },\n resetCount: function resetCount(state, count) {\n state.count = false;\n },\n setNoresults: function setNoresults(state) {\n state.noresults = true;\n },\n resetNoresults: function resetNoresults(state) {\n state.noresults = false;\n },\n resetOffset: function resetOffset(state) {\n state.offset = 0;\n },\n incrementOffset: function incrementOffset(state) {\n state.offset += state.limit;\n },\n setInfiniteState: function setInfiniteState(state, infiniteLoadingstate) {\n state.infiniteLoadingState = infiniteLoadingstate;\n }\n },\n // actions\n actions: {\n newSearch: function newSearch(_ref) {\n var dispatch = _ref.dispatch,\n commit = _ref.commit,\n state = _ref.state;\n console.log('Search newSearch');\n commit('resetUuids');\n commit('resetItems');\n commit('resetCount');\n commit('resetNoresults');\n commit('resetOffset');\n this.commit('Common/setPagetitle', state.keys);\n dispatch('getResults');\n },\n nextPage: function nextPage(_ref2, $infiniteLoadingstate) {\n var dispatch = _ref2.dispatch,\n commit = _ref2.commit,\n state = _ref2.state;\n console.log('Search nextPage', $infiniteLoadingstate);\n commit('incrementOffset');\n commit('setInfiniteState', $infiniteLoadingstate);\n dispatch('getResults');\n },\n getResults: function getResults(_ref3) {\n var dispatch = _ref3.dispatch,\n commit = _ref3.commit,\n state = _ref3.state;\n var params = {\n keys: state.keys,\n term: state.term,\n offset: state.offset,\n limit: state.limit\n }; // console.log('Search getResults params', params);\n\n var q = _querystringEs.default.stringify(params);\n\n return _maAxios.MA.get('/materio_sapi/getresults?' + q).then(function (_ref4) {\n var data = _ref4.data;\n console.log('search MA getresults data', data); // commit('setItems', data.items)\n\n commit('setInfos', data.infos);\n commit('setCount', data.count);\n\n if (data.count) {\n commit('setUuids', data.uuids); // loadMaterials is on mixins\n // https://github.com/huybuidac/vuex-extensions\n\n dispatch('loadMaterials', {\n uuids: data.uuids,\n imgStyle: 'card_medium',\n callBack: 'loadMaterialsCallBack'\n });\n } else {\n commit('setNoresults');\n }\n }).catch(function (error) {\n console.warn('Issue with getResults', error);\n Promise.reject(error);\n });\n },\n loadMaterialsCallBack: function loadMaterialsCallBack(_ref5, _ref6) {\n var commit = _ref5.commit,\n state = _ref5.state;\n var items = _ref6.items,\n callBackArgs = _ref6.callBackArgs;\n console.log('search loadMaterialsCallBack', items);\n commit('setMaterials', items);\n\n if (state.infiniteLoadingState) {\n if (state.offset + state.limit > state.count) {\n console.log('Search infinite completed'); // tell to vue-infinite-loading plugin that there si no new page\n\n state.infiniteLoadingState.complete();\n } else {\n console.log('Search infinite loaded'); // tell to vue-infinite-loading plugin that newpage is loaded\n\n state.infiniteLoadingState.loaded();\n }\n }\n }\n }\n};\nexports.default = _default;\n\n//# sourceURL=webpack://materio.com/./web/themes/custom/materiotheme/vuejs/store/modules/search.js?"); /***/ }), @@ -1017,7 +1082,7 @@ eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n})); /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; -eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.default = void 0;\n\nvar _restAxios = __webpack_require__(/*! vuejs/api/rest-axios */ \"./web/themes/custom/materiotheme/vuejs/api/rest-axios.js\");\n\nvar _jsonAxios = __webpack_require__(/*! vuejs/api/json-axios */ \"./web/themes/custom/materiotheme/vuejs/api/json-axios.js\");\n\nvar _maAxios = __webpack_require__(/*! vuejs/api/ma-axios */ \"./web/themes/custom/materiotheme/vuejs/api/ma-axios.js\");\n\nvar _querystringEs = _interopRequireDefault(__webpack_require__(/*! querystring-es3 */ \"./node_modules/querystring-es3/index.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _default = {\n namespaced: true,\n // initial state\n state: {\n uid: null,\n // username: '',\n mail: '',\n csrf_token: null,\n logout_token: null,\n isloggedin: false,\n isAdmin: false,\n isAdherent: false,\n canSearch: false,\n roles: [],\n flagcolls: false,\n openedCollid: null\n },\n // getters\n getters: {},\n // mutations\n mutations: {\n SetCsrftoken: function SetCsrftoken(state, token) {\n console.log('SetCsrftoken', token);\n state.csrf_token = token;\n },\n setToken: function setToken(state, data) {\n state.uid = data.current_user.uid; // state.username = data.username;\n\n state.mail = data.current_user.mail;\n state.csrf_token = data.csrf_token;\n state.isloggedin = true;\n state.logout_token = data.logout_token;\n },\n setUid: function setUid(state, uid) {\n state.uid = uid;\n state.isloggedin = true;\n },\n setUser: function setUser(state, data) {\n state.mail = data.mail[0].value;\n state.uuid = data.uuid[0].value;\n },\n setRoles: function setRoles(state, roles) {\n console.log('User setRoles', roles);\n state.roles = [];\n\n for (var i = 0; i < roles.length; i++) {\n state.roles.push(roles[i].target_id);\n } // check if admin\n\n\n if (state.roles.indexOf('admin') !== -1 || state.roles.indexOf('root') !== -1) {\n // console.log('is admin');\n state.isAdmin = true;\n } // check if has access to search\n\n\n if (state.roles.indexOf('adherent') !== -1) {\n // console.log('is admin');\n state.canSearch = true;\n state.isAdherent = true;\n }\n },\n setLoggedOut: function setLoggedOut(state) {\n console.log('setLoggedOut state', state);\n state.uid = null;\n state.mail = '';\n state.csrf_token = null;\n state.isloggedin = false;\n state.logout_token = null;\n\n if (state.isAdmin) {\n // TODO: what if on a page where login is needed (as commerce checkout and cart)\n window.location.reload(true);\n }\n\n state.asAdmin = false;\n state.canSearch = false;\n },\n setFlagColls: function setFlagColls(state, flagcolls) {\n console.log('User setFlagColls', flagcolls);\n state.flagcolls = flagcolls;\n },\n openFlagColl: function openFlagColl(state, collid) {\n state.openedCollid = collid;\n },\n setLoadedCollItems: function setLoadedCollItems(state, data) {\n console.log('setLoadedCollItems', data);\n state.flagcolls[data.collid].loadedItems = data.items;\n }\n },\n // actions\n actions: {\n userRegister: function userRegister(_ref, credentials) {\n var dispatch = _ref.dispatch,\n commit = _ref.commit,\n state = _ref.state;\n return new Promise(function (resolve) {\n _restAxios.REST.get('/session/token').then(function (_ref2) {\n var token = _ref2.token;\n commit('SetCsrftoken', token);\n\n _restAxios.REST.post('/user/register?_format=json', credentials, {\n 'X-CSRF-Token': state.csrftoken\n }).then(function (_ref3) {\n var data = _ref3.data;\n console.log('user REST registered', data);\n dispatch('userLogin', credentials).then(function () {\n resolve();\n });\n }).catch(function (error) {\n console.warn('Issue with register', error);\n Promise.reject(error);\n });\n });\n });\n },\n userLogin: function userLogin(_ref4, credentials) {\n var dispatch = _ref4.dispatch,\n state = _ref4.state;\n return new Promise(function (resolve, reject) {\n dispatch('getToken', credentials).then(function () {\n dispatch('getUser').then(function (userdata) {\n console.log('User Loggedin');\n\n if (state.isAdmin) {\n window.location.reload(true);\n }\n\n resolve();\n });\n });\n });\n },\n getToken: function getToken(_ref5, credentials) {\n var dispatch = _ref5.dispatch,\n commit = _ref5.commit,\n state = _ref5.state;\n return _restAxios.REST.post('/user/login?_format=json', credentials).then(function (_ref6) {\n var data = _ref6.data;\n console.log('user REST getToken data', data);\n commit('setToken', data);\n }).catch(function (error) {\n console.warn('Issue with getToken', error);\n Promise.reject(error);\n });\n },\n getUser: function getUser(_ref7) {\n var dispatch = _ref7.dispatch,\n commit = _ref7.commit,\n state = _ref7.state;\n return new Promise(function (resolve, reject) {\n _restAxios.REST.get('/session/token').then(function (_ref8) {\n var data = _ref8.data;\n console.log('csrftoken', data);\n commit('SetCsrftoken', data);\n console.log('state.csrf_token', state.csrf_token);\n var params = {\n token: state.csrf_token\n };\n\n _restAxios.REST.get(\"/user/\".concat(state.uid, \"?_format=json\"), params).then(function (_ref9) {\n var data = _ref9.data;\n console.log('user REST getUser data', data);\n console.log('roles', data.roles);\n commit('setUser', data);\n\n if (data.roles) {\n commit('setRoles', data.roles);\n }\n\n dispatch('getUserFlagColls');\n resolve();\n }).catch(function (error) {\n console.warn('Issue with getUser', error);\n Promise.reject(error);\n });\n });\n });\n },\n getUserFlagColls: function getUserFlagColls(_ref10) {\n var dispatch = _ref10.dispatch,\n commit = _ref10.commit,\n state = _ref10.state;\n // flags\n // REST.get('/flagging_collection/1?_format=json')\n // .then(( data ) => {\n // console.log('TEST FLAG REST data', data)\n // })\n // .catch(error => {\n // console.warn('Issue USER TEST FLAG REST', error)\n // Promise.reject(error)\n // })\n return _maAxios.MA.get('materio_flag/user_flagging_collections').then(function (_ref11) {\n var data = _ref11.data;\n console.log('user MA getFlags data', data);\n commit('setFlagColls', data);\n }).catch(function (error) {\n console.warn('Issue USER MA getFlags', error);\n Promise.reject(error);\n });\n },\n // https://drupal.stackexchange.com/questions/248539/cant-get-flagging-api-to-accept-post-request\n createFlagColl: function createFlagColl(_ref12, new_collection_name) {\n var dispatch = _ref12.dispatch,\n commit = _ref12.commit,\n state = _ref12.state;\n console.log('user createFlagColl', new_collection_name);\n return new Promise(function (resolve, reject) {\n var params = {\n name: new_collection_name\n };\n\n _maAxios.MA.post('materio_flag/create_user_flagging_collection', params).then(function (_ref13) {\n var data = _ref13.data;\n console.log('user MA createFlagColl data', data);\n\n if (data.status) {\n dispatch('getUserFlagColls').then(function () {\n resolve();\n });\n }\n }).catch(function (error) {\n console.warn('Issue USER MA createFlag', error);\n reject(error);\n });\n });\n },\n deleteFlagColl: function deleteFlagColl(_ref14, flagcollid) {\n var dispatch = _ref14.dispatch,\n commit = _ref14.commit,\n state = _ref14.state;\n console.log('user deleteFlagColl', flagcollid);\n return new Promise(function (resolve, reject) {\n var params = {\n flagcollid: flagcollid\n };\n\n _maAxios.MA.post('materio_flag/delete_user_flagging_collection', params).then(function (_ref15) {\n var data = _ref15.data;\n console.log('user MA deleteFlagColl data', data);\n dispatch('getUserFlagColls').then(function () {\n resolve();\n });\n }).catch(function (error) {\n console.warn('Issue USER MA createFlag', error);\n reject(error);\n });\n });\n },\n flag: function flag(_ref16, args) {\n var dispatch = _ref16.dispatch,\n commit = _ref16.commit,\n state = _ref16.state;\n console.log('user flag', args.uuid, args.collid);\n return new Promise(function (resolve, reject) {\n var params = {\n flagid: state.flagcolls[args.collid].flag_id,\n uuid: args.uuid,\n flagcollid: args.collid\n };\n return _maAxios.MA.post('materio_flag/flag', params).then(function (_ref17) {\n var data = _ref17.data;\n console.log('user MA flag', data);\n dispatch('getUserFlagColls').then(function () {\n resolve();\n });\n }).catch(function (error) {\n console.warn('Issue USER MA flag', error);\n });\n });\n },\n unFlag: function unFlag(_ref18, args) {\n var dispatch = _ref18.dispatch,\n commit = _ref18.commit,\n state = _ref18.state;\n console.log('user unFlag', args.uuid, args.collid);\n return new Promise(function (resolve, reject) {\n var params = {\n flagid: state.flagcolls[args.collid].flag_id,\n uuid: args.uuid,\n flagcollid: args.collid\n };\n return _maAxios.MA.post('materio_flag/unflag', params).then(function (_ref19) {\n var data = _ref19.data;\n console.log('user MA unFlag', data);\n dispatch('getUserFlagColls').then(function () {\n resolve();\n });\n }).catch(function (error) {\n console.warn('Issue USER MA unFlag', error);\n });\n });\n },\n openFlagColl: function openFlagColl(_ref20, collid) {\n var commit = _ref20.commit,\n dispatch = _ref20.dispatch;\n console.log('user openFlagColl', collid);\n commit('openFlagColl', collid);\n dispatch('loadFlagCollItems', collid);\n },\n loadFlagCollItems: function loadFlagCollItems(_ref21, collid) {\n var commit = _ref21.commit,\n state = _ref21.state;\n console.log('loadFlagCollItems', state.flagcolls[collid].items_uuids);\n var params = {\n 'filter[uuids-groupe][group][conjunction]': 'OR'\n };\n var uuids = state.flagcolls[collid].items_uuids; // console.log('uuids', uuids)\n\n for (var i = 0; i < uuids.length; i++) {\n var uuid = uuids[i]; // console.log('uuid', uuid)\n\n params[\"filter[\".concat(uuid, \"][condition][path]\")] = 'id';\n params[\"filter[\".concat(uuid, \"][condition][value]\")] = uuid;\n params[\"filter[\".concat(uuid, \"][condition][operator]\")] = '=';\n params[\"filter[\".concat(uuid, \"][condition][memberOf]\")] = 'uuids-groupe';\n }\n\n console.log('search JSONAPI params', params);\n\n var q = _querystringEs.default.stringify(params);\n\n return _jsonAxios.JSONAPI.get('node/materiau?' + q).then(function (_ref22) {\n var data = _ref22.data;\n console.log('user loadFlagCollItems data', data); // dispatch('parseItems', { data: data.data, uuids: uuids })\n\n commit('setLoadedCollItems', {\n collid: collid,\n items: data.data\n });\n }).catch(function (error) {\n console.warn('Issue with loadFlagCollItems', error);\n Promise.reject(error);\n });\n },\n userLogout: function userLogout(_ref23) {\n var commit = _ref23.commit,\n state = _ref23.state;\n\n var credentials = _querystringEs.default.stringify({\n token: state.csrf_token\n });\n\n _restAxios.REST.post('/user/logout', credentials).then(function (resp) {\n console.log('userLogout resp', resp);\n commit('setLoggedOut');\n }).catch(function (error) {\n console.warn('Issue with logout', error);\n Promise.reject(error);\n });\n }\n }\n};\nexports.default = _default;\n\n//# sourceURL=webpack://materio.com/./web/themes/custom/materiotheme/vuejs/store/modules/user.js?"); +eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.default = void 0;\n\nvar _restAxios = __webpack_require__(/*! vuejs/api/rest-axios */ \"./web/themes/custom/materiotheme/vuejs/api/rest-axios.js\");\n\nvar _maAxios = __webpack_require__(/*! vuejs/api/ma-axios */ \"./web/themes/custom/materiotheme/vuejs/api/ma-axios.js\");\n\nvar _querystringEs = _interopRequireDefault(__webpack_require__(/*! querystring-es3 */ \"./node_modules/querystring-es3/index.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// import { JSONAPI } from 'vuejs/api/json-axios'\nvar _default = {\n namespaced: true,\n // initial state\n state: {\n uid: null,\n // username: '',\n mail: '',\n csrf_token: null,\n logout_token: null,\n isloggedin: false,\n isAdmin: false,\n isAdherent: false,\n canSearch: false,\n roles: [],\n flagcolls: false,\n openedCollid: null\n },\n // getters\n getters: {},\n // mutations\n mutations: {\n SetCsrftoken: function SetCsrftoken(state, token) {\n console.log('SetCsrftoken', token);\n state.csrf_token = token;\n },\n setToken: function setToken(state, data) {\n state.uid = data.current_user.uid; // state.username = data.username;\n\n state.mail = data.current_user.mail;\n state.csrf_token = data.csrf_token;\n state.isloggedin = true;\n state.logout_token = data.logout_token;\n },\n setUid: function setUid(state, uid) {\n state.uid = uid;\n state.isloggedin = true;\n },\n setUser: function setUser(state, data) {\n state.mail = data.mail[0].value;\n state.uuid = data.uuid[0].value;\n },\n setRoles: function setRoles(state, roles) {\n console.log('User setRoles', roles);\n state.roles = [];\n\n for (var i = 0; i < roles.length; i++) {\n state.roles.push(roles[i].target_id);\n } // check if admin\n\n\n if (state.roles.indexOf('admin') !== -1 || state.roles.indexOf('root') !== -1) {\n // console.log('is admin');\n state.isAdmin = true;\n } // check if has access to search\n\n\n if (state.roles.indexOf('adherent') !== -1) {\n // console.log('is admin');\n state.canSearch = true;\n state.isAdherent = true;\n }\n },\n setLoggedOut: function setLoggedOut(state) {\n console.log('setLoggedOut state', state);\n state.uid = null;\n state.mail = '';\n state.csrf_token = null;\n state.isloggedin = false;\n state.logout_token = null;\n\n if (state.isAdmin) {\n // TODO: what if on a page where login is needed (as commerce checkout and cart)\n window.location.reload(true);\n }\n\n state.asAdmin = false;\n state.canSearch = false;\n },\n setFlagColls: function setFlagColls(state, flagcolls) {\n console.log('User setFlagColls', flagcolls);\n state.flagcolls = flagcolls;\n },\n openFlagColl: function openFlagColl(state, collid) {\n state.openedCollid = collid;\n },\n closeFlagColl: function closeFlagColl(state) {\n state.openedCollid = null;\n },\n setLoadedCollItems: function setLoadedCollItems(state, data) {\n console.log('setLoadedCollItems', data); // if no data, we are just calling the mutation to trigger the component update\n\n if (data) {\n state.flagcolls[data.collid].loadedItems = data.items;\n }\n }\n },\n // actions\n actions: {\n userRegister: function userRegister(_ref, credentials) {\n var dispatch = _ref.dispatch,\n commit = _ref.commit,\n state = _ref.state;\n return new Promise(function (resolve) {\n _restAxios.REST.get('/session/token').then(function (_ref2) {\n var token = _ref2.token;\n commit('SetCsrftoken', token);\n\n _restAxios.REST.post('/user/register?_format=json', credentials, {\n 'X-CSRF-Token': state.csrftoken\n }).then(function (_ref3) {\n var data = _ref3.data;\n console.log('user REST registered', data);\n dispatch('userLogin', credentials).then(function () {\n resolve();\n });\n }).catch(function (error) {\n console.warn('Issue with register', error);\n Promise.reject(error);\n });\n });\n });\n },\n userLogin: function userLogin(_ref4, credentials) {\n var dispatch = _ref4.dispatch,\n state = _ref4.state;\n return new Promise(function (resolve, reject) {\n dispatch('getToken', credentials).then(function () {\n dispatch('getUser').then(function (userdata) {\n console.log('User Loggedin');\n\n if (state.isAdmin) {\n window.location.reload(true);\n }\n\n resolve();\n });\n });\n });\n },\n getToken: function getToken(_ref5, credentials) {\n var dispatch = _ref5.dispatch,\n commit = _ref5.commit,\n state = _ref5.state;\n return _restAxios.REST.post('/user/login?_format=json', credentials).then(function (_ref6) {\n var data = _ref6.data;\n console.log('user REST getToken data', data);\n commit('setToken', data);\n }).catch(function (error) {\n console.warn('Issue with getToken', error);\n Promise.reject(error);\n });\n },\n getUser: function getUser(_ref7) {\n var dispatch = _ref7.dispatch,\n commit = _ref7.commit,\n state = _ref7.state;\n return new Promise(function (resolve, reject) {\n _restAxios.REST.get('/session/token').then(function (_ref8) {\n var data = _ref8.data;\n console.log('csrftoken', data);\n commit('SetCsrftoken', data);\n console.log('state.csrf_token', state.csrf_token);\n var params = {\n token: state.csrf_token\n };\n\n _restAxios.REST.get(\"/user/\".concat(state.uid, \"?_format=json\"), params).then(function (_ref9) {\n var data = _ref9.data;\n console.log('user REST getUser data', data);\n console.log('roles', data.roles);\n commit('setUser', data);\n\n if (data.roles) {\n commit('setRoles', data.roles);\n }\n\n dispatch('getUserFlagColls');\n resolve();\n }).catch(function (error) {\n console.warn('Issue with getUser', error);\n Promise.reject(error);\n });\n });\n });\n },\n getUserFlagColls: function getUserFlagColls(_ref10) {\n var dispatch = _ref10.dispatch,\n commit = _ref10.commit,\n state = _ref10.state;\n // flags\n // REST.get('/flagging_collection/1?_format=json')\n // .then(( data ) => {\n // console.log('TEST FLAG REST data', data)\n // })\n // .catch(error => {\n // console.warn('Issue USER TEST FLAG REST', error)\n // Promise.reject(error)\n // })\n return _maAxios.MA.get('materio_flag/user_flagging_collections').then(function (_ref11) {\n var data = _ref11.data;\n console.log('user MA getFlags data', data);\n commit('setFlagColls', data);\n }).catch(function (error) {\n console.warn('Issue USER MA getFlags', error);\n Promise.reject(error);\n });\n },\n // https://drupal.stackexchange.com/questions/248539/cant-get-flagging-api-to-accept-post-request\n createFlagColl: function createFlagColl(_ref12, new_collection_name) {\n var dispatch = _ref12.dispatch,\n commit = _ref12.commit,\n state = _ref12.state;\n console.log('user createFlagColl', new_collection_name);\n return new Promise(function (resolve, reject) {\n var params = {\n name: new_collection_name\n };\n\n _maAxios.MA.post('materio_flag/create_user_flagging_collection', params).then(function (_ref13) {\n var data = _ref13.data;\n console.log('user MA createFlagColl data', data);\n\n if (data.status) {\n dispatch('getUserFlagColls').then(function () {\n resolve();\n });\n }\n }).catch(function (error) {\n console.warn('Issue USER MA createFlag', error);\n reject(error);\n });\n });\n },\n deleteFlagColl: function deleteFlagColl(_ref14, flagcollid) {\n var dispatch = _ref14.dispatch,\n commit = _ref14.commit,\n state = _ref14.state;\n console.log('user deleteFlagColl', flagcollid);\n return new Promise(function (resolve, reject) {\n var params = {\n flagcollid: flagcollid\n };\n\n _maAxios.MA.post('materio_flag/delete_user_flagging_collection', params).then(function (_ref15) {\n var data = _ref15.data;\n console.log('user MA deleteFlagColl data', data);\n dispatch('getUserFlagColls').then(function () {\n resolve();\n });\n }).catch(function (error) {\n console.warn('Issue USER MA createFlag', error);\n reject(error);\n });\n });\n },\n flag: function flag(_ref16, args) {\n var dispatch = _ref16.dispatch,\n commit = _ref16.commit,\n state = _ref16.state;\n console.log('user flag', args.uuid, args.collid);\n return new Promise(function (resolve, reject) {\n var params = {\n flagid: state.flagcolls[args.collid].flag_id,\n uuid: args.uuid,\n flagcollid: args.collid\n };\n return _maAxios.MA.post('materio_flag/flag', params).then(function (_ref17) {\n var data = _ref17.data;\n console.log('user MA flag', data);\n dispatch('getUserFlagColls').then(function () {\n resolve();\n });\n }).catch(function (error) {\n console.warn('Issue USER MA flag', error);\n });\n });\n },\n unFlag: function unFlag(_ref18, args) {\n var dispatch = _ref18.dispatch,\n commit = _ref18.commit,\n state = _ref18.state;\n console.log('user unFlag', args.uuid, args.collid);\n return new Promise(function (resolve, reject) {\n var params = {\n flagid: state.flagcolls[args.collid].flag_id,\n uuid: args.uuid,\n flagcollid: args.collid\n };\n return _maAxios.MA.post('materio_flag/unflag', params).then(function (_ref19) {\n var data = _ref19.data;\n console.log('user MA unFlag', data);\n dispatch('getUserFlagColls').then(function () {\n resolve();\n });\n }).catch(function (error) {\n console.warn('Issue USER MA unFlag', error);\n });\n });\n },\n openFlagColl: function openFlagColl(_ref20, collid) {\n var commit = _ref20.commit,\n dispatch = _ref20.dispatch,\n state = _ref20.state;\n console.log('user openFlagColl', collid);\n commit('openFlagColl', collid);\n\n if (typeof state.flagcolls[collid].loadedItems === 'undefined') {\n // if no loadedItems, load them\n // loadMaterials is on mixins\n // https://github.com/huybuidac/vuex-extensions\n dispatch('loadMaterials', {\n uuids: state.flagcolls[collid].items_uuids,\n imgStyle: 'card_medium_half',\n callBack: 'loadMaterialsCallBack',\n callBackArgs: {\n collid: collid\n }\n });\n } else {\n // call the mutation without data to only trigger the FlagCollection component update\n commit('setLoadedCollItems');\n }\n },\n loadMaterialsCallBack: function loadMaterialsCallBack(_ref21, _ref22) {\n var commit = _ref21.commit;\n var items = _ref22.items,\n callBackArgs = _ref22.callBackArgs;\n console.log('user loadMaterialsCallBack', items);\n commit('setLoadedCollItems', {\n collid: callBackArgs.collid,\n items: items\n });\n },\n closeFlagColl: function closeFlagColl(_ref23) {\n var commit = _ref23.commit,\n dispatch = _ref23.dispatch;\n console.log('user closeFlagColl');\n commit('closeFlagColl');\n },\n userLogout: function userLogout(_ref24) {\n var commit = _ref24.commit,\n state = _ref24.state;\n\n var credentials = _querystringEs.default.stringify({\n token: state.csrf_token\n });\n\n _restAxios.REST.post('/user/logout', credentials).then(function (resp) {\n console.log('userLogout resp', resp);\n commit('setLoggedOut');\n }).catch(function (error) {\n console.warn('Issue with logout', error);\n Promise.reject(error);\n });\n }\n }\n};\nexports.default = _default;\n\n//# sourceURL=webpack://materio.com/./web/themes/custom/materiotheme/vuejs/store/modules/user.js?"); /***/ }), @@ -1231,6 +1296,22 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ }), +/***/ "./web/themes/custom/materiotheme/vuejs/components/Content/MiniCard.vue": +/*!******************************************************************************!*\ + !*** ./web/themes/custom/materiotheme/vuejs/components/Content/MiniCard.vue ***! + \******************************************************************************/ +/*! namespace exports */ +/*! export __esModule [provided] [no usage info] [missing usage info prevents renaming] -> ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./web/themes/custom/materiotheme/vuejs/components/Content/MiniCard.vue?vue&type=script&lang=js& .__esModule */ +/*! export default [provided] [no usage info] [missing usage info prevents renaming] */ +/*! other exports [not provided] [no usage info] */ +/*! runtime requirements: __webpack_require__, __webpack_exports__, __webpack_require__.d, __webpack_require__.r, __webpack_require__.* */ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"__esModule\": () => /* reexport safe */ _MiniCard_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__.__esModule,\n/* harmony export */ \"default\": () => __WEBPACK_DEFAULT_EXPORT__\n/* harmony export */ });\n/* harmony import */ var _MiniCard_vue_vue_type_template_id_648a4442_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./MiniCard.vue?vue&type=template&id=648a4442&scoped=true& */ \"./web/themes/custom/materiotheme/vuejs/components/Content/MiniCard.vue?vue&type=template&id=648a4442&scoped=true&\");\n/* harmony import */ var _MiniCard_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./MiniCard.vue?vue&type=script&lang=js& */ \"./web/themes/custom/materiotheme/vuejs/components/Content/MiniCard.vue?vue&type=script&lang=js&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n;\nvar component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__.default)(\n _MiniCard_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__.default,\n _MiniCard_vue_vue_type_template_id_648a4442_scoped_true___WEBPACK_IMPORTED_MODULE_0__.render,\n _MiniCard_vue_vue_type_template_id_648a4442_scoped_true___WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,\n false,\n null,\n \"648a4442\",\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"web/themes/custom/materiotheme/vuejs/components/Content/MiniCard.vue\"\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);\n\n//# sourceURL=webpack://materio.com/./web/themes/custom/materiotheme/vuejs/components/Content/MiniCard.vue?"); + +/***/ }), + /***/ "./web/themes/custom/materiotheme/vuejs/components/Content/Product.vue": /*!*****************************************************************************!*\ !*** ./web/themes/custom/materiotheme/vuejs/components/Content/Product.vue ***! @@ -1599,6 +1680,22 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ }), +/***/ "./web/themes/custom/materiotheme/vuejs/components/Content/MiniCard.vue?vue&type=script&lang=js&": +/*!*******************************************************************************************************!*\ + !*** ./web/themes/custom/materiotheme/vuejs/components/Content/MiniCard.vue?vue&type=script&lang=js& ***! + \*******************************************************************************************************/ +/*! namespace exports */ +/*! export __esModule [provided] [no usage info] [missing usage info prevents renaming] -> ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./web/themes/custom/materiotheme/vuejs/components/Content/MiniCard.vue?vue&type=script&lang=js& .__esModule */ +/*! export default [provided] [no usage info] [missing usage info prevents renaming] */ +/*! other exports [not provided] [no usage info] */ +/*! runtime requirements: __webpack_require__, __webpack_exports__, __webpack_require__.d, __webpack_require__.r, __webpack_require__.* */ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => __WEBPACK_DEFAULT_EXPORT__,\n/* harmony export */ \"__esModule\": () => /* reexport safe */ _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_MiniCard_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__.__esModule\n/* harmony export */ });\n/* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_MiniCard_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MiniCard.vue?vue&type=script&lang=js& */ \"./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./web/themes/custom/materiotheme/vuejs/components/Content/MiniCard.vue?vue&type=script&lang=js&\");\n /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_MiniCard_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__.default); \n\n//# sourceURL=webpack://materio.com/./web/themes/custom/materiotheme/vuejs/components/Content/MiniCard.vue?"); + +/***/ }), + /***/ "./web/themes/custom/materiotheme/vuejs/components/Content/Product.vue?vue&type=script&lang=js&": /*!******************************************************************************************************!*\ !*** ./web/themes/custom/materiotheme/vuejs/components/Content/Product.vue?vue&type=script&lang=js& ***! @@ -2035,6 +2132,22 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ }), +/***/ "./web/themes/custom/materiotheme/vuejs/components/Content/MiniCard.vue?vue&type=template&id=648a4442&scoped=true&": +/*!*************************************************************************************************************************!*\ + !*** ./web/themes/custom/materiotheme/vuejs/components/Content/MiniCard.vue?vue&type=template&id=648a4442&scoped=true& ***! + \*************************************************************************************************************************/ +/*! namespace exports */ +/*! export render [provided] [no usage info] [missing usage info prevents renaming] -> ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options!./web/themes/custom/materiotheme/vuejs/components/Content/MiniCard.vue?vue&type=template&id=648a4442&scoped=true& .render */ +/*! export staticRenderFns [provided] [no usage info] [missing usage info prevents renaming] -> ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options!./web/themes/custom/materiotheme/vuejs/components/Content/MiniCard.vue?vue&type=template&id=648a4442&scoped=true& .staticRenderFns */ +/*! other exports [not provided] [no usage info] */ +/*! runtime requirements: __webpack_require__, __webpack_exports__, __webpack_require__.d, __webpack_require__.r, __webpack_require__.* */ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"render\": () => /* reexport safe */ _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_MiniCard_vue_vue_type_template_id_648a4442_scoped_true___WEBPACK_IMPORTED_MODULE_0__.render,\n/* harmony export */ \"staticRenderFns\": () => /* reexport safe */ _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_MiniCard_vue_vue_type_template_id_648a4442_scoped_true___WEBPACK_IMPORTED_MODULE_0__.staticRenderFns\n/* harmony export */ });\n/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_MiniCard_vue_vue_type_template_id_648a4442_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MiniCard.vue?vue&type=template&id=648a4442&scoped=true& */ \"./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options!./web/themes/custom/materiotheme/vuejs/components/Content/MiniCard.vue?vue&type=template&id=648a4442&scoped=true&\");\n\n\n//# sourceURL=webpack://materio.com/./web/themes/custom/materiotheme/vuejs/components/Content/MiniCard.vue?"); + +/***/ }), + /***/ "./web/themes/custom/materiotheme/vuejs/components/Content/Product.vue?vue&type=template&id=0f9e2147&scoped=true&": /*!************************************************************************************************************************!*\ !*** ./web/themes/custom/materiotheme/vuejs/components/Content/Product.vue?vue&type=template&id=0f9e2147&scoped=true& ***! @@ -2287,7 +2400,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"render\": () => /* binding */ render,\n/* harmony export */ \"staticRenderFns\": () => /* binding */ staticRenderFns\n/* harmony export */ });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"article\", { staticClass: \"card\" }, [\n _c(\"header\", [\n _c(\"h1\", [_vm._v(_vm._s(_vm.item.title))]),\n _vm._v(\" \"),\n _c(\"h4\", [_vm._v(_vm._s(_vm.item.field_short_description))]),\n _vm._v(\" \"),\n _c(\"span\", { staticClass: \"ref\" }, [\n _vm._v(_vm._s(_vm.item.field_reference))\n ])\n ]),\n _vm._v(\" \"),\n _c(\"nav\", { staticClass: \"tools\" }, [\n _c(\"section\", { staticClass: \"tool flags\" }, [\n _c(\"span\", { staticClass: \"btn mdi mdi-folder-outline\" }),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"tool-content\" }, [\n _c(\n \"ul\",\n _vm._l(_vm.flagcolls, function(coll) {\n return _vm.flagcolls\n ? _c(\"li\", { key: coll.id }, [\n _c(\n \"span\",\n {\n staticClass: \"flag mdi\",\n class: [\n _vm.flagIsLoading(coll.id)\n ? \"mdi-loading mdi-spin\"\n : _vm.flagIsActive(coll.id)\n ? \"mdi-close isActive\"\n : \"mdi-plus\"\n ],\n attrs: { collid: coll.id },\n on: {\n click: function($event) {\n $event.preventDefault()\n return _vm.onFlagActionCard($event)\n }\n }\n },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(coll.name) +\n \"\\n \"\n )\n ]\n )\n ])\n : _vm._e()\n }),\n 0\n )\n ])\n ])\n ]),\n _vm._v(\" \"),\n _c(\n \"section\",\n {\n directives: [{ name: \"switcher\", rawName: \"v-switcher\" }],\n staticClass: \"images\"\n },\n _vm._l(_vm.item.images, function(img, index) {\n return _c(\"figure\", { key: img.url }, [\n _c(\"img\", {\n directives: [\n {\n name: \"lazy\",\n rawName: \"v-lazy\",\n value: index,\n expression: \"index\"\n }\n ],\n staticClass: \"lazy\",\n attrs: { \"data-src\": img.url, title: img.title }\n }),\n _vm._v(\" \"),\n _c(\"img\", { staticClass: \"blank\", attrs: { src: _vm.blanksrc } })\n ])\n }),\n 0\n )\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack://materio.com/./web/themes/custom/materiotheme/vuejs/components/Content/Card.vue?./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"render\": () => /* binding */ render,\n/* harmony export */ \"staticRenderFns\": () => /* binding */ staticRenderFns\n/* harmony export */ });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"article\", { staticClass: \"card search-card\" }, [\n _c(\"header\", [\n _c(\"h1\", [_vm._v(_vm._s(_vm.item.title))]),\n _vm._v(\" \"),\n _c(\"h4\", [_vm._v(_vm._s(_vm.item.field_short_description))]),\n _vm._v(\" \"),\n _c(\"span\", { staticClass: \"ref\" }, [\n _vm._v(_vm._s(_vm.item.field_reference))\n ])\n ]),\n _vm._v(\" \"),\n _c(\"nav\", { staticClass: \"tools\" }, [\n _c(\"section\", { staticClass: \"tool flags\" }, [\n _c(\"span\", { staticClass: \"btn mdi mdi-folder-outline\" }),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"tool-content\" }, [\n _c(\n \"ul\",\n _vm._l(_vm.flagcolls, function(coll) {\n return _vm.flagcolls\n ? _c(\"li\", { key: coll.id }, [\n _c(\n \"span\",\n {\n staticClass: \"flag mdi\",\n class: [\n _vm.flagIsLoading(coll.id)\n ? \"mdi-loading mdi-spin\"\n : _vm.flagIsActive(coll.id)\n ? \"mdi-close isActive\"\n : \"mdi-plus\"\n ],\n attrs: { collid: coll.id },\n on: {\n click: function($event) {\n $event.preventDefault()\n return _vm.onFlagActionCard($event)\n }\n }\n },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(coll.name) +\n \"\\n \"\n )\n ]\n )\n ])\n : _vm._e()\n }),\n 0\n )\n ])\n ])\n ]),\n _vm._v(\" \"),\n _c(\n \"section\",\n {\n directives: [{ name: \"switcher\", rawName: \"v-switcher\" }],\n staticClass: \"images\"\n },\n _vm._l(_vm.item.images, function(img, index) {\n return _c(\"figure\", { key: img.url }, [\n _c(\"img\", {\n directives: [\n {\n name: \"lazy\",\n rawName: \"v-lazy\",\n value: index,\n expression: \"index\"\n }\n ],\n staticClass: \"lazy\",\n attrs: { \"data-src\": img.url, title: img.title }\n }),\n _vm._v(\" \"),\n _c(\"img\", { staticClass: \"blank\", attrs: { src: _vm.blanksrc } })\n ])\n }),\n 0\n )\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack://materio.com/./web/themes/custom/materiotheme/vuejs/components/Content/Card.vue?./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options"); /***/ }), @@ -2323,6 +2436,22 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ }), +/***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options!./web/themes/custom/materiotheme/vuejs/components/Content/MiniCard.vue?vue&type=template&id=648a4442&scoped=true&": +/*!****************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options!./web/themes/custom/materiotheme/vuejs/components/Content/MiniCard.vue?vue&type=template&id=648a4442&scoped=true& ***! + \****************************************************************************************************************************************************************************************************************************************************************/ +/*! namespace exports */ +/*! export render [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export staticRenderFns [provided] [no usage info] [missing usage info prevents renaming] */ +/*! other exports [not provided] [no usage info] */ +/*! runtime requirements: __webpack_require__.r, __webpack_exports__, __webpack_require__.d, __webpack_require__.* */ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"render\": () => /* binding */ render,\n/* harmony export */ \"staticRenderFns\": () => /* binding */ staticRenderFns\n/* harmony export */ });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"article\", { staticClass: \"card minicard\" }, [\n _c(\"header\", [\n _c(\"h1\", [_vm._v(_vm._s(_vm.item.title))]),\n _vm._v(\" \"),\n _c(\"span\", { staticClass: \"ref\" }, [\n _vm._v(_vm._s(_vm.item.field_reference))\n ])\n ]),\n _vm._v(\" \"),\n _vm._m(0),\n _vm._v(\" \"),\n _c(\n \"section\",\n {\n directives: [{ name: \"switcher\", rawName: \"v-switcher\" }],\n staticClass: \"images\"\n },\n _vm._l(_vm.item.images, function(img, index) {\n return _c(\"figure\", { key: img.url }, [\n _c(\"img\", {\n directives: [\n {\n name: \"lazy\",\n rawName: \"v-lazy\",\n value: index,\n expression: \"index\"\n }\n ],\n staticClass: \"lazy\",\n attrs: { \"data-src\": img.url, title: img.title }\n }),\n _vm._v(\" \"),\n _c(\"img\", { staticClass: \"blank\", attrs: { src: _vm.blanksrc } })\n ])\n }),\n 0\n )\n ])\n}\nvar staticRenderFns = [\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"nav\", { staticClass: \"tools\" }, [\n _c(\"section\", { staticClass: \"tool flags\" }, [\n _c(\"span\", { staticClass: \"mdi mdi-folder-remove-outline\" })\n ])\n ])\n }\n]\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack://materio.com/./web/themes/custom/materiotheme/vuejs/components/Content/MiniCard.vue?./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options"); + +/***/ }), + /***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options!./web/themes/custom/materiotheme/vuejs/components/Content/Product.vue?vue&type=template&id=0f9e2147&scoped=true&": /*!***************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options!./web/themes/custom/materiotheme/vuejs/components/Content/Product.vue?vue&type=template&id=0f9e2147&scoped=true& ***! @@ -2415,7 +2544,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"render\": () => /* binding */ render,\n/* harmony export */ \"staticRenderFns\": () => /* binding */ staticRenderFns\n/* harmony export */ });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { attrs: { id: \"Base\" } }, [\n !_vm.items.length\n ? _c(\"div\", { staticClass: \"loading\" }, [\n _c(\"span\", [_vm._v(\"Loading ...\")])\n ])\n : _c(\n \"div\",\n { staticClass: \"cards-list\" },\n [\n _c(\"aside\", { staticClass: \"search-info\" }, [\n _vm._v(\"\\n \" + _vm._s(_vm.searchinfos) + \"\\n \")\n ]),\n _vm._v(\" \"),\n _c(\n \"ul\",\n _vm._l(_vm.items, function(item) {\n return _c(\n \"li\",\n { key: item.uuid },\n [_c(\"Card\", { attrs: { item: item } })],\n 1\n )\n }),\n 0\n ),\n _vm._v(\" \"),\n _vm.count > _vm.limit\n ? _c(\"infinite-loading\", { on: { infinite: _vm.nextPage } }, [\n _c(\"div\", { attrs: { slot: \"no-more\" }, slot: \"no-more\" }, [\n _vm._v(\"No more results\")\n ])\n ])\n : _vm._e()\n ],\n 1\n )\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack://materio.com/./web/themes/custom/materiotheme/vuejs/components/Pages/Base.vue?./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"render\": () => /* binding */ render,\n/* harmony export */ \"staticRenderFns\": () => /* binding */ staticRenderFns\n/* harmony export */ });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { attrs: { id: \"Base\" } }, [\n !_vm.searchinfos\n ? _c(\"div\", { staticClass: \"loading\" }, [\n _c(\"span\", [_vm._v(\"Loading ...\")])\n ])\n : _c(\n \"div\",\n { staticClass: \"cards-list\" },\n [\n _c(\"aside\", { staticClass: \"search-info\" }, [\n _vm._v(\"\\n \" + _vm._s(_vm.searchinfos) + \"\\n \")\n ]),\n _vm._v(\" \"),\n !_vm.items.length & !_vm.noresults\n ? _c(\"div\", { staticClass: \"loading\" }, [\n _c(\"span\", [_vm._v(\"Loading ...\")])\n ])\n : _c(\n \"ul\",\n _vm._l(_vm.items, function(item) {\n return _c(\n \"li\",\n { key: item.uuid },\n [_c(\"Card\", { attrs: { item: item } })],\n 1\n )\n }),\n 0\n ),\n _vm._v(\" \"),\n _vm.count > _vm.limit\n ? _c(\"infinite-loading\", { on: { infinite: _vm.nextPage } }, [\n _c(\"div\", { attrs: { slot: \"no-more\" }, slot: \"no-more\" }, [\n _vm._v(\"No more results\")\n ])\n ])\n : _vm._e()\n ],\n 1\n )\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack://materio.com/./web/themes/custom/materiotheme/vuejs/components/Pages/Base.vue?./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options"); /***/ }), @@ -2479,7 +2608,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"render\": () => /* binding */ render,\n/* harmony export */ \"staticRenderFns\": () => /* binding */ staticRenderFns\n/* harmony export */ });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"section\", { staticClass: \"flag-collection\" }, [\n _c(\"h3\", [_vm._v(_vm._s(_vm.collection.name))]),\n _vm._v(\" \"),\n _vm.loadedItems\n ? _c(\n \"ul\",\n _vm._l(_vm.loadedItems, function(item) {\n return _c(\"li\", { key: item.id }, [\n _vm._v(_vm._s(item.attributes.title))\n ])\n }),\n 0\n )\n : _c(\"span\", { staticClass: \"loading\" }, [_vm._v(\"Loading\")])\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack://materio.com/./web/themes/custom/materiotheme/vuejs/components/User/FlagCollection.vue?./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"render\": () => /* binding */ render,\n/* harmony export */ \"staticRenderFns\": () => /* binding */ staticRenderFns\n/* harmony export */ });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"section\", { staticClass: \"flag-collection\" }, [\n _c(\"header\", [\n _c(\"h3\", { staticClass: \"mdi mdi-folder-outline\" }, [\n _vm._v(_vm._s(_vm.collection.name))\n ]),\n _vm._v(\" \"),\n _c(\"span\", {\n staticClass: \"mdi mdi-close\",\n attrs: { title: \"close\" },\n on: {\n click: function($event) {\n $event.preventDefault()\n return _vm.onCloseFlagColl($event)\n }\n }\n })\n ]),\n _vm._v(\" \"),\n _vm.loadedItems\n ? _c(\n \"ul\",\n _vm._l(_vm.loadedItems, function(item) {\n return _c(\n \"li\",\n { key: item.id },\n [_c(\"MiniCard\", { attrs: { item: item } })],\n 1\n )\n }),\n 0\n )\n : _c(\"span\", { staticClass: \"loading\" }, [_vm._v(\"Loading\")])\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack://materio.com/./web/themes/custom/materiotheme/vuejs/components/User/FlagCollection.vue?./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options"); /***/ }), @@ -2495,7 +2624,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"render\": () => /* binding */ render,\n/* harmony export */ \"staticRenderFns\": () => /* binding */ staticRenderFns\n/* harmony export */ });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { attrs: { id: \"user-flags\" } }, [\n _c(\"h2\", { staticClass: \"mdi mdi-folder-outline\" }, [_vm._v(\"My folders\")]),\n _vm._v(\" \"),\n _c(\n \"ul\",\n [\n _vm._l(_vm.flagcolls, function(coll) {\n return _vm.flagcolls\n ? _c(\"li\", { key: coll.id }, [\n _c(\n \"h5\",\n {\n attrs: { flagcollid: coll.id },\n on: {\n click: function($event) {\n $event.preventDefault()\n return _vm.onOpenFlagColl($event)\n }\n }\n },\n [\n _vm._v(\n _vm._s(coll.name) + \" (\" + _vm._s(coll.items.length) + \")\"\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"actions\" }, [\n _c(\"span\", {\n staticClass: \"delete-btn mdi\",\n class: _vm.flagDeletingClassObj,\n attrs: { flagcollid: coll.id },\n on: {\n click: function($event) {\n $event.preventDefault()\n return _vm.onDeleteFlagColl($event)\n }\n }\n })\n ])\n ])\n : _vm._e()\n }),\n _vm._v(\" \"),\n _c(\"li\", { staticClass: \"create-flag\" }, [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.new_folder_name,\n expression: \"new_folder_name\"\n }\n ],\n attrs: { placeholder: \"new folder\" },\n domProps: { value: _vm.new_folder_name },\n on: {\n input: function($event) {\n if ($event.target.composing) {\n return\n }\n _vm.new_folder_name = $event.target.value\n }\n }\n }),\n _vm._v(\" \"),\n _c(\"span\", {\n staticClass: \"add-btn mdi\",\n class: _vm.addFlagBtnClassObj,\n on: {\n click: function($event) {\n $event.preventDefault()\n return _vm.onCreateFlagColl($event)\n }\n }\n })\n ])\n ],\n 2\n )\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack://materio.com/./web/themes/custom/materiotheme/vuejs/components/User/UserFlags.vue?./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"render\": () => /* binding */ render,\n/* harmony export */ \"staticRenderFns\": () => /* binding */ staticRenderFns\n/* harmony export */ });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { attrs: { id: \"user-flags\" } }, [\n _c(\"h2\", { staticClass: \"mdi mdi-folder-outline\" }, [_vm._v(\"My folders\")]),\n _vm._v(\" \"),\n _c(\n \"ul\",\n [\n _vm._l(_vm.flagcolls, function(coll) {\n return _vm.flagcolls\n ? _c(\"li\", { key: coll.id }, [\n _c(\n \"h5\",\n {\n attrs: { flagcollid: coll.id },\n on: {\n click: function($event) {\n $event.preventDefault()\n return _vm.onOpenFlagColl($event)\n }\n }\n },\n [\n _vm._v(\n _vm._s(coll.name) + \" (\" + _vm._s(coll.items.length) + \")\"\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"actions\" }, [\n _c(\"span\", {\n staticClass: \"delete-btn mdi\",\n class: _vm.flagDeletingClassObj,\n attrs: { flagcollid: coll.id },\n on: {\n click: function($event) {\n $event.preventDefault()\n return _vm.onDeleteFlagColl($event)\n }\n }\n })\n ])\n ])\n : _vm._e()\n }),\n _vm._v(\" \"),\n _c(\"li\", { staticClass: \"create-flag\" }, [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.new_folder_name,\n expression: \"new_folder_name\"\n }\n ],\n attrs: { placeholder: \"new folder\" },\n domProps: { value: _vm.new_folder_name },\n on: {\n input: function($event) {\n if ($event.target.composing) {\n return\n }\n _vm.new_folder_name = $event.target.value\n }\n }\n }),\n _vm._v(\" \"),\n _c(\"span\", {\n staticClass: \"add-btn mdi\",\n class: _vm.addFlagBtnClassObj,\n on: {\n click: function($event) {\n $event.preventDefault()\n $event.stopPropagation()\n return _vm.onCreateFlagColl($event)\n }\n }\n })\n ])\n ],\n 2\n )\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack://materio.com/./web/themes/custom/materiotheme/vuejs/components/User/UserFlags.vue?./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options"); /***/ }), diff --git a/web/themes/custom/materiotheme/assets/styles/base/_layout.scss b/web/themes/custom/materiotheme/assets/styles/base/_layout.scss index 2d76c7d..9d0578e 100644 --- a/web/themes/custom/materiotheme/assets/styles/base/_layout.scss +++ b/web/themes/custom/materiotheme/assets/styles/base/_layout.scss @@ -23,6 +23,8 @@ body.toolbar-horizontal.toolbar-themes.toolbar-no-tabs{ padding-top: 24px!important; } +// build break points for each multiple of cards row +// cards will always be centered, using all available space %grided-width{ margin:0 auto; $m: $column_goutiere; @@ -31,7 +33,7 @@ body.toolbar-horizontal.toolbar-themes.toolbar-no-tabs{ @while $bp < 4096px { $upbp: $bp + $colw + $m; @media only screen and (min-width: $bp + 1px) and (max-width: $upbp) { - width:$bp - $m; + width:$bp; } $bp: $upbp; } @@ -100,14 +102,15 @@ main[role="main"]{ display: flex; flex-direction: row-reverse; #content-left{ - flex-basis: $column_width*2+$column_goutiere; + flex-basis: $column_width+$column_goutiere; + flex-shrink: 0; // width:$column_width*2+$column_goutiere; >*{ - width:$column_width*2+$column_goutiere; + width:100%; } } #content-center{ - flex-basis: $column_width*10+$column_goutiere*9; + flex-basis: 110%; } } } diff --git a/web/themes/custom/materiotheme/assets/styles/base/_variables.scss b/web/themes/custom/materiotheme/assets/styles/base/_variables.scss index 4d691a1..0f14d8b 100644 --- a/web/themes/custom/materiotheme/assets/styles/base/_variables.scss +++ b/web/themes/custom/materiotheme/assets/styles/base/_variables.scss @@ -5,7 +5,7 @@ $base_font_size:16px; // card-medium (210x295) // card-small (100x140) -$column_width: 210px; -$column_goutiere: 15px; +$column_width: 205px; +$column_goutiere: 13px; $card_height: 295px; diff --git a/web/themes/custom/materiotheme/assets/styles/main.scss b/web/themes/custom/materiotheme/assets/styles/main.scss index 01e1e0e..2ee8424 100644 --- a/web/themes/custom/materiotheme/assets/styles/main.scss +++ b/web/themes/custom/materiotheme/assets/styles/main.scss @@ -395,11 +395,55 @@ aside.messages{ // | (__/ _ \ ' \ _/ -_) ' \ _|___| |__/ -_) _| _| // \___\___/_||_\__\___|_||_\__| |____\___|_| \__| #content-left{ + z-index: 5; + box-sizing: content-box; max-width:1px; overflow-x: hidden; transition: all 0.3s ease-in-out; &.opened{ max-width: 500px; + padding: 0.3em; + } + >*{ + box-sizing: border-box; + background-color: #fff; + box-shadow: -2px 0px 4px rgba(0, 0, 0, 0.2); + padding: 0.5em; + } + .flag-collection{ + >header{ + display: flex; + flex-direction: row; + justify-content: space-between; + h3{ + // flex-basis: calc(100% - 1em); + } + .mdi-close{ + // display: block; + // flex-basis: 1em; + cursor:pointer; + align-self: flex-end; + } + } + >ul{ + >li{ + margin:0 0 $column_goutiere 0; + padding:0; + article.card.minicard{ + width:100%; + + >header{ + padding: 0.3em 0.3em 0.1em; + h1{ + margin:0; + } + } + >nav.tools{ + padding:0 0.2em; + } + } + } + } } } @@ -663,6 +707,9 @@ article.card{ &.article{ width:$column_width*2 + $column_goutiere; height:$card_height; } + &.minicard{ + height:100px; + } // &.card-small{ // width:100px; height:140px; // } diff --git a/web/themes/custom/materiotheme/vuejs/components/Content/Card.vue b/web/themes/custom/materiotheme/vuejs/components/Content/Card.vue index 31bc6e3..86ba3e7 100644 --- a/web/themes/custom/materiotheme/vuejs/components/Content/Card.vue +++ b/web/themes/custom/materiotheme/vuejs/components/Content/Card.vue @@ -1,5 +1,5 @@