{"version":3,"sources":["webpack:///./node_modules/core-js/internals/object-to-array.js","webpack:///./node_modules/core-js/modules/es.object.values.js","webpack:///./node_modules/core-js/modules/es.object.entries.js","webpack:///./resources/js/src/app/components/item/VariationSelect.vue","webpack:///resources/js/src/app/components/item/VariationSelect.vue","webpack:///./resources/js/src/app/components/item/VariationSelect.vue?19cf","webpack:///./resources/js/src/app/components/item/VariationSelect.vue?2512"],"names":["DESCRIPTORS","fails","uncurryThis","objectGetPrototypeOf","objectKeys","toIndexedObject","propertyIsEnumerable","f","push","IE_BUG","O","Object","create","createMethod","TO_ENTRIES","it","key","keys","IE_WORKAROUND","length","i","result","module","exports","entries","values","$","$values","target","stat","$entries","render","_vm","this","_c","_self","staticClass","attributes","possibleUnitCombinationIds","isContentVisible","_l","attribute","index","type","ref","refInFor","directives","name","rawName","value","isTextCut","expression","attrs","for","title","_v","_s","id","on","click","$event","selectOptionActive","selectedAttributes","attributeId","getSelectedAttributeValueName","$translate","attributeValueId","selected","selectAttribute","class","defaultPrice","rrpPrice","isAttributeSelectionValid","multiLanguage","ProductInstock","ProductOutOfStock","_e","_f","isNet","data","unitPriceNet","unitPrice","images","addPleaseSelectOption","active","imageUrl","invalid","src","alt","loading","decoding","change","selectUnit","unitCombinationId","domProps","parseInt","selectedUnit","isUnitSelectionValid","possibleUnits","_t","_withStripped","NotificationService","require","props","forceContent","Boolean","default","itemId","filteredVariationsCache","lastContentCount","mounted","document","addEventListener","closeDropdownOnClickOutside","$store","commit","concat","$props","currentSelection","currentVariationSelect","activeValueId","pos","findIndex","activeValue","splice","unshift","beforeDestroy","removeEventListener","computed","currentVariation","getters","state","items","variationSelect","hasEmptyOption","variations","some","variation","App","config","item","showPleaseSelect","filteredVariations","filterVariations","_step","_iterator","_createForOfIteratorHelper","s","n","done","unitName","err","e","transformPossibleUnits","map","hasSelection","isNullOrUndefined","tempAttributes","methods","event","$refs","dropdownContainer","contains","onSelectionChange","setTimeout","carousel","window","scrollTo","top","behavior","unitId","setVariation","variationId","unsetInvalidSelection","qualifiedVariations","getQualifiedVariations","closestVariations","getClosestVariations","closestVariation","invalidSelection","getInvalidSelectionByVariation","correctSelection","getTooltip","attributeValue","getInvalidOptionTooltip","invalidSelections","attributesToReset","_step2","names","_iterator2","newUnit","join","isDefined","filter","find","closestSalableVariation","numberOfSalableChanges","closestNonSalableVariation","numberOfNonSalableChanges","_step3","_iterator3","changes","isNull","_step4","_iterator4","isSalable","_this","_loop","selectedAttributeId","variationAttribute","attributeToReset","attr","_step5","messages","JSON","parse","stringify","_iterator5","warn","closeAfter","strict","ignoreUnit","_this2","uniqueValues","_toConsumableArray","Set","isEmptyOptionSelected","_ret","_loop2","v","filterSalableVariations","_this3","dispatch","then","dispatchEvent","CustomEvent","detail","documents","content","attributesContaner","textWidth","clientWidth","selectedAttributeValueId","selectedAttributeValue","attrValue","_this4","sort","unitA","unitB","splitUnitName","unitNameSplit","split","isNaN","replace","currencyPattern","separator_thousands","watch","component"],"mappings":"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","file":"chunks/ceres-10.min.js","sourcesContent":["'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar objectGetPrototypeOf = require('../internals/object-get-prototype-of');\nvar objectKeys = require('../internals/object-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar $propertyIsEnumerable = require('../internals/object-property-is-enumerable').f;\n\nvar propertyIsEnumerable = uncurryThis($propertyIsEnumerable);\nvar push = uncurryThis([].push);\n\n// in some IE versions, `propertyIsEnumerable` returns incorrect result on integer keys\n// of `null` prototype objects\nvar IE_BUG = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es/no-object-create -- safe\n var O = Object.create(null);\n O[2] = 2;\n return !propertyIsEnumerable(O, 2);\n});\n\n// `Object.{ entries, values }` methods implementation\nvar createMethod = function (TO_ENTRIES) {\n return function (it) {\n var O = toIndexedObject(it);\n var keys = objectKeys(O);\n var IE_WORKAROUND = IE_BUG && objectGetPrototypeOf(O) === null;\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) {\n key = keys[i++];\n if (!DESCRIPTORS || (IE_WORKAROUND ? key in O : propertyIsEnumerable(O, key))) {\n push(result, TO_ENTRIES ? [key, O[key]] : O[key]);\n }\n }\n return result;\n };\n};\n\nmodule.exports = {\n // `Object.entries` method\n // https://tc39.es/ecma262/#sec-object.entries\n entries: createMethod(true),\n // `Object.values` method\n // https://tc39.es/ecma262/#sec-object.values\n values: createMethod(false)\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $values = require('../internals/object-to-array').values;\n\n// `Object.values` method\n// https://tc39.es/ecma262/#sec-object.values\n$({ target: 'Object', stat: true }, {\n values: function values(O) {\n return $values(O);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $entries = require('../internals/object-to-array').entries;\n\n// `Object.entries` method\n// https://tc39.es/ecma262/#sec-object.entries\n$({ target: 'Object', stat: true }, {\n entries: function entries(O) {\n return $entries(O);\n }\n});\n","var render = function render() {\n var _vm = this,\n _c = _vm._self._c\n return _c(\n \"div\",\n { staticClass: \"my-3\" },\n [\n _vm.attributes.length ||\n (_vm.possibleUnitCombinationIds.length > 1 && _vm.isContentVisible)\n ? [\n _vm._l(_vm.attributes, function (attribute, index) {\n return _c(\n \"div\",\n { key: index, staticClass: \"variation-select\" },\n [\n attribute.type === \"dropdown\"\n ? _c(\n \"div\",\n {\n ref: \"dropdownContainer\",\n refInFor: true,\n staticClass: \"custom-dropdown\",\n },\n [\n _c(\n \"p\",\n {\n directives: [\n {\n name: \"tooltip\",\n rawName: \"v-tooltip\",\n value: _vm.isTextCut(attribute.name),\n expression: \"isTextCut(attribute.name)\",\n },\n ],\n attrs: {\n for: \"custom-select_\" + attribute.name,\n \"data-toggle\": \"tooltip\",\n \"data-placement\": \"top\",\n title: attribute.name,\n \"data-testing\":\n \"variation-select-dropdown-label\",\n },\n },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(attribute.name) +\n \"\\n \"\n ),\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n staticClass: \"custom-select mt-2\",\n attrs: { id: \"custom-select_\" + attribute.name },\n },\n [\n _c(\n \"p\",\n {\n staticClass: \"small\",\n on: {\n click: function ($event) {\n _vm.selectOptionActive =\n !_vm.selectOptionActive\n },\n },\n },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(\n _vm.selectedAttributes[\n attribute.attributeId\n ]\n ? _vm.getSelectedAttributeValueName(\n attribute\n )\n : _vm.$translate(\n \"Ceres::Template.singleItemPleaseSelect\"\n )\n ) +\n \"\\n \"\n ),\n ]\n ),\n _vm._v(\" \"),\n _vm.selectOptionActive\n ? _c(\n \"div\",\n {\n staticClass:\n \"custom-dropdown-list position-absolute w-100 bg-white\",\n },\n _vm._l(attribute.values, function (value) {\n return _c(\n \"div\",\n {\n key: value.attributeValueId,\n attrs: {\n value: value.attributeValueId,\n selected:\n value.attributeValueId ===\n _vm.selectedAttributes[\n attribute.attributeId\n ],\n },\n on: {\n click: function ($event) {\n _vm.selectAttribute(\n attribute.attributeId,\n value.attributeValueId\n )\n _vm.selectOptionActive = false\n },\n },\n },\n [\n value.attributeValueId !==\n _vm.selectedAttributes[\n attribute.attributeId\n ]\n ? [\n _c(\n \"div\",\n {\n staticClass:\n \"p-2 custom-dropdown-item d-flex justify-content-between align-items-center\",\n },\n [\n _c(\n \"div\",\n {\n staticClass:\n \"d-flex justify-content-between w-100\",\n class: {\n \"flex-column\":\n value.defaultPrice &&\n value.rrpPrice,\n \"w-100\": !(\n value.defaultPrice &&\n value.rrpPrice\n ),\n },\n },\n [\n _c(\"span\", [\n _vm._v(\n \"\\n \" +\n _vm._s(\n value.name\n ) +\n \"\\n \"\n ),\n ]),\n _vm._v(\" \"),\n _c(\n \"span\",\n [\n _vm.isAttributeSelectionValid(\n attribute.attributeId,\n value.attributeValueId,\n true\n )\n ? [\n _c(\n \"span\",\n {\n staticClass:\n \"text-sucess\",\n },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(\n _vm\n .multiLanguage\n .ProductInstock\n ) +\n \"\\n \"\n ),\n ]\n ),\n ]\n : [\n _c(\n \"span\",\n {\n staticClass:\n \"text-muted\",\n },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(\n _vm\n .multiLanguage\n .ProductOutOfStock\n ) +\n \"\\n \"\n ),\n ]\n ),\n ],\n ],\n 2\n ),\n ]\n ),\n _vm._v(\" \"),\n value.defaultPrice &&\n value.rrpPrice\n ? _c(\"p\", {\n staticClass:\n \"d-flex font-weight-medium\",\n })\n : _vm._e(),\n _c(\n \"p\",\n {\n staticClass:\n \"text-primary text-nowrap\",\n },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(\n _vm._f(\n \"currency\"\n )(\n value.isNet\n ? value\n .defaultPrice\n .data\n .unitPriceNet\n : value\n .defaultPrice\n .data\n .unitPrice\n )\n ) +\n \"\\n \"\n ),\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"del\",\n {\n staticClass:\n \"ml-2 text-nowrap\",\n },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(\n _vm._f(\n \"currency\"\n )(\n value.isNet\n ? value\n .rrpPrice\n .data\n .unitPriceNet\n : value\n .rrpPrice\n .data\n .unitPrice\n )\n ) +\n \"\\n \"\n ),\n ]\n ),\n _vm._v(\" \"),\n _c(\"p\"),\n ]\n ),\n ]\n : _vm._e(),\n ],\n 2\n )\n }),\n 0\n )\n : _vm._e(),\n ]\n ),\n ]\n )\n : attribute.type === \"box\" || attribute.type === \"image\"\n ? _c(\"div\", [\n _c(\n \"span\",\n {\n staticClass: \"text-muted\",\n attrs: { \"data-testing\": \"attribute-name\" },\n },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(attribute.name) +\n \":\\n \"\n ),\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"span\",\n {\n staticClass: \"font-weight-bold\",\n attrs: { \"data-testing\": \"attribute-value\" },\n },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(\n _vm.getSelectedAttributeValueName(attribute)\n ) +\n \"\\n \"\n ),\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n staticClass: \"v-s-boxes pb-1 mt-2 mb-3 mx-0 images\",\n class: { images: attribute.type === \"image\" },\n },\n [\n _vm.addPleaseSelectOption\n ? _c(\n \"div\",\n {\n staticClass:\n \"v-s-box bg-white empty-option\",\n class: {\n active:\n _vm.selectedAttributes[\n attribute.attributeId\n ] === -1,\n \"d-none\": !_vm.isAttributeSelectionValid(\n attribute.attributeId,\n -1\n ),\n },\n attrs: {\n \"data-testing\": \"variation-select-box\",\n },\n on: {\n click: function ($event) {\n return _vm.selectAttribute(\n attribute.attributeId,\n -1\n )\n },\n },\n },\n [\n _c(\"span\", { staticClass: \"mx-3\" }, [\n _vm._v(\n \"\\n \" +\n _vm._s(\n _vm.$translate(\n \"Ceres::Template.singleItemPleaseSelect\"\n )\n ) +\n \"\\n \"\n ),\n ]),\n ]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm._l(attribute.values, function (value) {\n return [\n value.imageUrl\n ? _c(\n \"div\",\n {\n key: value.attributeValueId,\n staticClass: \"v-s-box bg-white\",\n class: {\n active:\n value.attributeValueId ===\n _vm.selectedAttributes[\n attribute.attributeId\n ],\n invalid:\n !_vm.isAttributeSelectionValid(\n attribute.attributeId,\n value.attributeValueId,\n true\n ),\n },\n attrs: {\n \"data-testing\":\n \"variation-select-box\",\n },\n on: {\n click: function ($event) {\n return _vm.selectAttribute(\n attribute.attributeId,\n value.attributeValueId\n )\n },\n },\n },\n [\n attribute.type === \"box\"\n ? _c(\n \"span\",\n { staticClass: \"mx-3\" },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(value.name) +\n \"\\n \"\n ),\n ]\n )\n : _c(\"img\", {\n staticClass: \"p-1\",\n attrs: {\n src: value.imageUrl,\n alt: value.name,\n title: value.name,\n loading: \"lazy\",\n decoding: \"async\",\n },\n }),\n ]\n )\n : _vm._e(),\n ]\n }),\n ],\n 2\n ),\n ])\n : _vm._e(),\n ]\n )\n }),\n _vm._v(\" \"),\n _vm.possibleUnitCombinationIds.length > 1 && _vm.isContentVisible\n ? _c(\"div\", { staticClass: \"variation-select\" }, [\n _c(\"div\", { staticClass: \"input-unit\" }, [\n _c(\n \"select\",\n {\n staticClass: \"custom-select\",\n attrs: {\n id: \"unit-combination-ids-select\",\n \"data-testing\": \"variation-select-unit\",\n },\n on: {\n change: function ($event) {\n return _vm.selectUnit($event.target.value)\n },\n },\n },\n _vm._l(\n _vm.possibleUnitCombinationIds,\n function (unitCombinationId) {\n return _c(\n \"option\",\n {\n key: unitCombinationId,\n domProps: {\n value: unitCombinationId,\n selected:\n parseInt(unitCombinationId) ===\n _vm.selectedUnit,\n },\n },\n [\n _vm.isUnitSelectionValid(unitCombinationId)\n ? [\n _vm._v(\n \"\\n \" +\n _vm._s(\n _vm.possibleUnits[unitCombinationId]\n ) +\n \"\\n \"\n ),\n ]\n : [\n _vm._v(\n \"\\n \" +\n _vm._s(\n _vm.$translate(\n \"Ceres::Template.singleItemInvalidAttribute\",\n {\n name: _vm.possibleUnits[\n unitCombinationId\n ],\n }\n )\n ) +\n \"\\n \"\n ),\n ],\n ],\n 2\n )\n }\n ),\n 0\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n {\n attrs: {\n for: \"unit-combination-ids-select\",\n \"data-testing\": \"variation-select-unit-label\",\n },\n },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(\n _vm.$translate(\n \"Ceres::Template.singleItemContent\"\n )\n ) +\n \"\\n \"\n ),\n ]\n ),\n ]),\n ])\n : _vm._e(),\n ]\n : [_vm._t(\"default\")],\n ],\n 2\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","<template>\n <div class=\"my-3\">\n <template\n v-if=\"\n attributes.length ||\n (possibleUnitCombinationIds.length > 1 && isContentVisible)\n \"\n >\n <div\n class=\"variation-select\"\n v-for=\"(attribute, index) in attributes\"\n :key=\"index\"\n >\n <!-- dropdown -->\n <div\n class=\"custom-dropdown\"\n ref=\"dropdownContainer\"\n v-if=\"attribute.type === 'dropdown'\"\n >\n <p\n :for=\"'custom-select_' + attribute.name\"\n v-tooltip=\"isTextCut(attribute.name)\"\n data-toggle=\"tooltip\"\n data-placement=\"top\"\n :title=\"attribute.name\"\n data-testing=\"variation-select-dropdown-label\"\n >\n {{ attribute.name }}\n </p>\n <div\n :id=\"'custom-select_' + attribute.name\"\n class=\"custom-select mt-2\"\n >\n <p @click=\"selectOptionActive = !selectOptionActive\" class=\"small\">\n {{\n selectedAttributes[attribute.attributeId]\n ? getSelectedAttributeValueName(attribute)\n : $translate(\"Ceres::Template.singleItemPleaseSelect\")\n }}\n </p>\n <div\n class=\"custom-dropdown-list position-absolute w-100 bg-white\"\n v-if=\"selectOptionActive\"\n >\n <div\n v-for=\"value in attribute.values\"\n :key=\"value.attributeValueId\"\n :value=\"value.attributeValueId\"\n :selected=\"\n value.attributeValueId ===\n selectedAttributes[attribute.attributeId]\n \"\n @click=\"\n selectAttribute(\n attribute.attributeId,\n value.attributeValueId\n );\n selectOptionActive = false;\n \"\n >\n <template\n v-if=\"\n value.attributeValueId !==\n selectedAttributes[attribute.attributeId]\n \"\n >\n <div\n class=\"p-2 custom-dropdown-item d-flex justify-content-between align-items-center\"\n >\n <div\n class=\"d-flex justify-content-between w-100\"\n :class=\"{\n 'flex-column': value.defaultPrice && value.rrpPrice,\n 'w-100': !(value.defaultPrice && value.rrpPrice),\n }\"\n >\n <span>\n {{ value.name }}\n </span>\n <span>\n <template\n v-if=\"\n isAttributeSelectionValid(\n attribute.attributeId,\n value.attributeValueId,\n true\n )\n \"\n >\n <span class=\"text-sucess\">\n {{ multiLanguage.ProductInstock }}\n </span>\n </template>\n <template v-else>\n <span class=\"text-muted\">\n {{ multiLanguage.ProductOutOfStock }}\n </span>\n </template>\n </span>\n </div>\n <p\n v-if=\"value.defaultPrice && value.rrpPrice\"\n class=\"d-flex font-weight-medium\"\n >\n <p class=\"text-primary text-nowrap\">\n {{\n (value.isNet\n ? value.defaultPrice.data.unitPriceNet\n : value.defaultPrice.data.unitPrice) | currency\n }}\n </p>\n <del class=\"ml-2 text-nowrap\">\n {{\n (value.isNet\n ? value.rrpPrice.data.unitPriceNet\n : value.rrpPrice.data.unitPrice) | currency\n }}\n </del>\n </p>\n </div>\n </template>\n </div>\n </div>\n </div>\n </div>\n <!-- /dropdown -->\n\n <!-- box and image -->\n <div v-else-if=\"attribute.type === 'box' || attribute.type === 'image'\">\n <span class=\"text-muted\" data-testing=\"attribute-name\">\n {{ attribute.name }}:\n </span>\n <span class=\"font-weight-bold\" data-testing=\"attribute-value\">\n {{ getSelectedAttributeValueName(attribute) }}\n </span>\n <div\n class=\"v-s-boxes pb-1 mt-2 mb-3 mx-0 images\"\n :class=\"{ images: attribute.type === 'image' }\"\n >\n <div\n class=\"v-s-box bg-white empty-option\"\n data-testing=\"variation-select-box\"\n v-if=\"addPleaseSelectOption\"\n @click=\"selectAttribute(attribute.attributeId, -1)\"\n :class=\"{\n active: selectedAttributes[attribute.attributeId] === -1,\n 'd-none': !isAttributeSelectionValid(attribute.attributeId, -1),\n }\"\n >\n <span class=\"mx-3\">\n {{ $translate(\"Ceres::Template.singleItemPleaseSelect\") }}\n </span>\n </div>\n\n <template v-for=\"value in attribute.values\">\n <div\n class=\"v-s-box bg-white\"\n data-testing=\"variation-select-box\"\n v-if=\"value.imageUrl\"\n @click=\"\n selectAttribute(attribute.attributeId, value.attributeValueId)\n \"\n :class=\"{\n active:\n value.attributeValueId ===\n selectedAttributes[attribute.attributeId],\n invalid: !isAttributeSelectionValid(\n attribute.attributeId,\n value.attributeValueId,\n true\n ),\n }\"\n :key=\"value.attributeValueId\"\n >\n <span v-if=\"attribute.type === 'box'\" class=\"mx-3\">\n {{ value.name }}\n </span>\n <img\n v-else\n class=\"p-1\"\n :src=\"value.imageUrl\"\n :alt=\"value.name\"\n :title=\"value.name\"\n loading=\"lazy\"\n decoding=\"async\"\n />\n </div>\n </template>\n </div>\n </div>\n <!-- /box and image -->\n </div>\n\n <!-- units -->\n <div\n class=\"variation-select\"\n v-if=\"possibleUnitCombinationIds.length > 1 && isContentVisible\"\n >\n <div class=\"input-unit\">\n <select\n id=\"unit-combination-ids-select\"\n class=\"custom-select\"\n @change=\"selectUnit($event.target.value)\"\n data-testing=\"variation-select-unit\"\n >\n <option\n v-for=\"unitCombinationId in possibleUnitCombinationIds\"\n :value=\"unitCombinationId\"\n :selected=\"parseInt(unitCombinationId) === selectedUnit\"\n :key=\"unitCombinationId\"\n >\n <template v-if=\"isUnitSelectionValid(unitCombinationId)\">\n {{ possibleUnits[unitCombinationId] }}\n </template>\n <template v-else>\n {{\n $translate(\"Ceres::Template.singleItemInvalidAttribute\", {\n name: possibleUnits[unitCombinationId],\n })\n }}\n </template>\n </option>\n </select>\n <label\n for=\"unit-combination-ids-select\"\n data-testing=\"variation-select-unit-label\"\n >\n {{ $translate(\"Ceres::Template.singleItemContent\") }}\n </label>\n </div>\n </div>\n <!-- /units -->\n </template>\n\n <template v-else>\n <slot></slot>\n </template>\n </div>\n</template>\n\n<script>\nimport { textWidth } from \"../../helper/dom\";\nimport { isDefined, isNull, isNullOrUndefined } from \"../../helper/utils\";\n\nconst NotificationService = require(\"../../services/NotificationService\");\n\nexport default {\n name: \"variation-select\",\n\n props: {\n forceContent: {\n type: Boolean,\n default: false,\n },\n itemId: {\n default: null,\n },\n multiLanguage: Object,\n },\n\n data() {\n return {\n filteredVariationsCache: {},\n lastContentCount: 0,\n selectOptionActive: false,\n };\n },\n\n mounted() {\n document.addEventListener(\"click\", this.closeDropdownOnClickOutside);\n // initially check for valid selection and disable add to basket button\n this.$store.commit(\n `${this.$props.itemId}/variationSelect/setIsVariationSelected`,\n !!this.currentSelection\n );\n\n if (this.currentVariationSelect && this.attributes.length > 0) {\n let currentID = this.currentVariationSelect.selectedAttributes[4];\n let activeValueId = currentID;\n let pos = this.attributes[0].values.findIndex(\n (value) => value.attributeValueId == activeValueId\n );\n if (pos !== -1) {\n const activeValue = this.attributes[0].values.splice(pos, 1)[0];\n this.attributes[0].values.unshift(activeValue);\n }\n }\n },\n beforeDestroy() {\n document.removeEventListener(\"click\", this.closeDropdownOnClickOutside);\n },\n\n computed: {\n currentVariation() {\n return this.$store.getters[`${this.$props.itemId}/currentItemVariation`];\n },\n\n currentVariationSelect() {\n return (\n this.$store.state.items[this.$props.itemId] &&\n this.$store.state.items[this.$props.itemId].variationSelect\n );\n },\n\n /**\n * returns true if any variation has no attributes\n */\n hasEmptyOption() {\n return this.variations.some((variation) => !variation.attributes.length);\n },\n\n addPleaseSelectOption() {\n return App.config.item.showPleaseSelect;\n },\n\n /**\n * returns the variation, based on the selected attributes / unit\n * returns false if there are none or multiple results\n */\n currentSelection() {\n const filteredVariations = this.filterVariations(null, null, true);\n\n if (filteredVariations.length === 1) {\n return filteredVariations[0];\n }\n\n return false;\n },\n\n /**\n * returns all units, selectable by current selection\n * prop 'forceContent' with value true will return all units, without filtering\n */\n possibleUnits() {\n // use an object, to make the entries unique\n const possibleUnits = {};\n const variations = this.forceContent\n ? this.variations\n : this.filterVariations(null, null, null, true);\n\n for (const variation of variations) {\n possibleUnits[variation.unitCombinationId] = variation.unitName;\n }\n\n return possibleUnits;\n },\n\n possibleUnitCombinationIds() {\n return this.transformPossibleUnits(this.possibleUnits).map(\n (value) => value[0]\n );\n },\n\n isContentVisible() {\n return (\n (!this.forceContent && !!this.currentSelection) || this.forceContent\n );\n },\n\n hasSelection() {\n return (\n !isNullOrUndefined(this.selectedAttributes) &&\n !Object.values(this.selectedAttributes).some((value) => value < 0)\n );\n },\n\n attributes() {\n return this.currentVariationSelect &&\n this.currentVariationSelect.tempAttributes.length > 0\n ? this.currentVariationSelect.tempAttributes\n : this.currentVariationSelect.attributes;\n },\n\n selectedAttributes() {\n return (\n this.currentVariationSelect &&\n this.currentVariationSelect.selectedAttributes\n );\n },\n\n selectedUnit() {\n return (\n this.currentVariationSelect && this.currentVariationSelect.selectedUnit\n );\n },\n\n variations() {\n return (\n this.currentVariationSelect && this.currentVariationSelect.variations\n );\n },\n },\n\n methods: {\n closeDropdownOnClickOutside(event) {\n if (\n this.$refs.dropdownContainer &&\n !this.$refs.dropdownContainer[0].contains(event.target)\n ) {\n this.selectOptionActive = false;\n }\n },\n /**\n * select an attribute and check, if the selection is valid; if not, unsetInvalidSelection will be executed\n * @param {number} attributeId\n * @param {[number, string, null]} attributeValueId\n */\n selectAttribute(attributeId, attributeValueId) {\n attributeValueId = parseInt(attributeValueId) || null;\n\n if (this.selectedAttributes[attributeId] !== attributeValueId) {\n this.$store.commit(\n `${this.$props.itemId}/variationSelect/selectItemAttribute`,\n { attributeId, attributeValueId }\n );\n this.onSelectionChange(attributeId, attributeValueId, null);\n }\n\n setTimeout(() => {\n $(\"#singleItemCarouselImages\").carousel(0);\n }, 300);\n\n if (typeof window !== \"undefined\") {\n window.scrollTo({\n top: 0,\n behavior: \"smooth\",\n });\n }\n },\n\n /**\n * select a unit and check, if the selection is valid; if not, unsetInvalidSelection will be executed\n * @param {[number, string]} unitId\n */\n selectUnit(unitId) {\n unitId = parseInt(unitId);\n this.$store.commit(\n `${this.$props.itemId}/variationSelect/selectItemUnit`,\n unitId\n );\n this.onSelectionChange(null, null, unitId);\n },\n\n onSelectionChange(attributeId, attributeValueId, unitId) {\n if (this.currentSelection) {\n this.setVariation(this.currentSelection.variationId);\n } else if (!this.hasSelection) {\n // user switched back to \"please select\"\n this.setVariation(0);\n } else {\n this.unsetInvalidSelection(attributeId, attributeValueId, unitId);\n }\n\n this.lastContentCount = this.possibleUnitCombinationIds.length;\n },\n\n /**\n * changes the selected attributes / unit, to ensure a valid seelction\n * @param {[number, null]} attributeId\n * @param {[number, null]} attributeValueId\n * @param {[number, null]} unitId\n */\n unsetInvalidSelection(attributeId, attributeValueId, unitId) {\n const qualifiedVariations = this.getQualifiedVariations(\n attributeId,\n attributeValueId,\n unitId\n );\n const closestVariations = this.getClosestVariations(qualifiedVariations);\n\n // if the salable 'closestVariations' is undefined, take the not-salable one\n const closestVariation = closestVariations[0] || closestVariations[1];\n\n if (!closestVariation) {\n return;\n }\n\n const invalidSelection =\n this.getInvalidSelectionByVariation(closestVariation);\n\n this.correctSelection(invalidSelection);\n },\n\n getTooltip(attribute, attributeValue) {\n if (\n !this.isAttributeSelectionValid(\n attribute.attributeId,\n attributeValue.attributeValueId,\n true\n )\n ) {\n return this.getInvalidOptionTooltip(\n attribute.attributeId,\n attributeValue.attributeValueId\n );\n } else if (attribute.type === \"image\") {\n return this.$translate(\"Ceres::Template.singleItemAttributeTooltip\", {\n attribute: attribute.name,\n value: attributeValue.name,\n });\n }\n\n return \"\";\n },\n\n /**\n * returns a string for box tooltips, for not available options\n * @param {number} attributeId\n * @param {number} attributeValueId\n */\n getInvalidOptionTooltip(attributeId, attributeValueId) {\n const qualifiedVariations = this.getQualifiedVariations(\n attributeId,\n attributeValueId\n );\n const closestVariations = this.getClosestVariations(qualifiedVariations);\n\n if (!closestVariations || closestVariations.length <= 0) {\n return \"\";\n }\n\n const invalidSelections = [\n !!closestVariations[0]\n ? this.getInvalidSelectionByVariation(closestVariations[0])\n : null,\n !!closestVariations[1]\n ? this.getInvalidSelectionByVariation(closestVariations[1])\n : null,\n ];\n\n if (\n !!invalidSelections[0] &&\n !!invalidSelections[1] &&\n invalidSelections[0].attributesToReset.length >\n invalidSelections[1].attributesToReset.length\n ) {\n // there is a non-salable variation with less changes\n return this.$translate(\"Ceres::Template.singleItemNotSalable\");\n }\n\n const invalidSelection = invalidSelections[0] || invalidSelections[1];\n const names = [];\n\n for (const attribute of invalidSelection.attributesToReset) {\n if (attribute.attributeId !== attributeId) {\n names.push(\"<b>\" + attribute.name + \"</b>\");\n }\n }\n if (invalidSelection.newUnit) {\n names.push(\n \"<b>\" + this.$translate(\"Ceres::Template.singleItemContent\") + \"</b>\"\n );\n }\n\n if (!names.length) {\n return null;\n }\n\n return this.$translate(\n \"Ceres::Template.singleItemNotAvailableInSelection\",\n { name: names.join(\", \") }\n );\n },\n\n /**\n * returns a list of variations, filtered by attribute or unit\n * @param {[number, null]} attributeId\n * @param {[number, null]} attributeValueId\n * @param {[number, null]} unitId\n */\n getQualifiedVariations(attributeId, attributeValueId, unitId) {\n if (isDefined(attributeValueId)) {\n return this.variations.filter((variation) => {\n return isDefined(\n variation.attributes.find(\n (attribute) =>\n attribute.attributeId === attributeId &&\n attribute.attributeValueId === attributeValueId\n )\n );\n });\n } else if (isDefined(unitId)) {\n return this.variations.filter(\n (variation) => variation.unitCombinationId === unitId\n );\n }\n\n return this.variations.filter(\n (variation) => !variation.attributes.length\n );\n },\n\n /**\n * return a salable and a non-salable variation with the minimum number of changes on attributes compared to the current selection.\n * @param {array} qualifiedVariations\n */\n getClosestVariations(qualifiedVariations) {\n let closestSalableVariation, numberOfSalableChanges;\n let closestNonSalableVariation, numberOfNonSalableChanges;\n\n for (const variation of qualifiedVariations) {\n let changes = 0;\n\n if (\n variation.unitCombinationId !== this.selectedUnit &&\n !isNull(this.selectedUnit)\n ) {\n // when the unit dropdown isn't visible, it should have a lower weight for reset investigations\n const unitWeight =\n this.possibleUnitCombinationIds.length > 1 && this.isContentVisible\n ? 0.9\n : 0.1;\n\n changes += unitWeight;\n }\n\n for (const attribute of variation.attributes) {\n if (\n this.selectedAttributes[attribute.attributeId] !==\n attribute.attributeValueId\n ) {\n changes++;\n }\n }\n\n if (\n variation.isSalable &&\n (!numberOfSalableChanges || changes < numberOfSalableChanges)\n ) {\n closestSalableVariation = variation;\n numberOfSalableChanges = changes;\n } else if (\n !variation.isSalable &&\n (!numberOfNonSalableChanges || changes < numberOfNonSalableChanges)\n ) {\n closestNonSalableVariation = variation;\n numberOfNonSalableChanges = changes;\n }\n }\n\n return [closestSalableVariation, closestNonSalableVariation];\n },\n\n /**\n * returns object with array 'attributesToReset' and newUnit. The attributesToReset contains all attributes, which are not matching with the given variation\n * @param {object} variation\n */\n getInvalidSelectionByVariation(variation) {\n const attributesToReset = [];\n let newUnit = null;\n\n for (let selectedAttributeId in this.selectedAttributes) {\n selectedAttributeId = parseInt(selectedAttributeId);\n const variationAttribute = variation.attributes.find(\n (attribute) => attribute.attributeId === selectedAttributeId\n );\n\n if (!isNull(this.selectedAttributes[selectedAttributeId])) {\n if (\n (variationAttribute &&\n variationAttribute.attributeValueId !==\n this.selectedAttributes[selectedAttributeId]) ||\n !variationAttribute\n ) {\n const attributeToReset = this.attributes.find(\n (attr) => attr.attributeId === selectedAttributeId\n );\n\n attributesToReset.push(attributeToReset);\n }\n }\n }\n\n if (variation.unitCombinationId !== this.selectedUnit) {\n newUnit = variation.unitCombinationId;\n }\n\n return { attributesToReset, newUnit };\n },\n\n /**\n * resets all invalid attributes and change the unit, if required. Prints a message to the user if so.\n * @param {object} invalidSelection\n */\n correctSelection(invalidSelection) {\n const messages = [];\n const attributes = JSON.parse(JSON.stringify(this.selectedAttributes));\n\n for (const attributeToReset of invalidSelection.attributesToReset) {\n messages.push(\n this.$translate(\"Ceres::Template.singleItemNotAvailable\", {\n name: attributeToReset.name,\n })\n );\n\n attributes[attributeToReset.attributeId] =\n !this.hasEmptyOption && App.config.item.showPleaseSelect ? -1 : null;\n }\n\n if (invalidSelection.newUnit) {\n if (\n this.lastContentCount > 1 &&\n this.possibleUnitCombinationIds.length > 1 &&\n !isNull(this.selectedUnit)\n ) {\n messages.push(\n this.$translate(\"Ceres::Template.singleItemNotAvailable\", {\n name: this.$translate(\"Ceres::Template.singleItemContent\"),\n })\n );\n }\n\n this.$store.commit(\n `${this.$props.itemId}/variationSelect/selectItemUnit`,\n invalidSelection.newUnit\n );\n }\n\n this.$store.commit(\n `${this.$props.itemId}/variationSelect/setItemSelectedAttributes`,\n attributes\n );\n\n this.setVariation(\n this.currentSelection ? this.currentSelection.variationId : 0\n );\n\n NotificationService.warn(messages.join(\"<br>\")).closeAfter(5000);\n },\n\n /**\n * returns matching variations with current selection\n * attributes and unitId could be filled, to check a specific selection\n * @param {object} attributes\n * @param {number} unitId\n * @param {boolean} strict\n */\n filterVariations(attributes, unitId, strict, ignoreUnit) {\n attributes = attributes || this.selectedAttributes;\n unitId = unitId || this.selectedUnit;\n strict = !!strict;\n ignoreUnit = !!ignoreUnit;\n\n const key =\n JSON.stringify(attributes) +\n \"_\" +\n unitId +\n \"_\" +\n strict +\n \"_\" +\n ignoreUnit;\n\n if (isDefined(this.filteredVariationsCache[key])) {\n return this.filteredVariationsCache[key];\n }\n\n const uniqueValues = [...new Set(Object.values(attributes))];\n const isEmptyOptionSelected =\n uniqueValues.length === 1 && isNull(uniqueValues[0]);\n const filteredVariations = this.variations.filter((variation) => {\n // the selected unit is not matching\n if (!ignoreUnit && variation.unitCombinationId !== unitId) {\n return false;\n }\n\n // the variation has no attributes (only checked, if any attribute has a selected value); or the variation has attributes and empty option is selected\n // requires more than 0 attributes\n if (\n ((!isEmptyOptionSelected && !variation.attributes.length) ||\n (isEmptyOptionSelected && variation.attributes.length)) &&\n this.attributes.length > 0\n ) {\n return false;\n }\n\n for (const attributeId in attributes) {\n const variationAttribute = variation.attributes.find(\n (variationAttribute) =>\n variationAttribute.attributeId === parseInt(attributeId)\n );\n\n // an attribute is not matching with selection\n if (\n variationAttribute &&\n variationAttribute.attributeValueId !== attributes[attributeId] &&\n (strict ||\n (!strict &&\n !isNull(attributes[attributeId]) &&\n attributes[attributeId] !== -1))\n ) {\n return false;\n }\n }\n\n return true;\n });\n\n this.filteredVariationsCache[key] = filteredVariations;\n\n return filteredVariations;\n },\n\n /**\n * returns true, if the selection with a new attribute value would be valid\n * @param {number} attributeId\n * @param {[number, string, null]} attributeValueId\n * @param {boolean} filterSalableVariations\n */\n isAttributeSelectionValid(\n attributeId,\n attributeValueId,\n filterSalableVariations\n ) {\n attributeValueId = parseInt(attributeValueId) || null;\n if (this.selectedAttributes[attributeId] === attributeValueId) {\n return true;\n }\n\n const selectedAttributes = JSON.parse(\n JSON.stringify(this.selectedAttributes)\n );\n\n selectedAttributes[attributeId] = parseInt(attributeValueId) || null;\n\n const ignoreUnit = !(\n Object.keys(this.possibleUnits).length > 1 && this.isContentVisible\n );\n let variations = this.filterVariations(\n selectedAttributes,\n null,\n null,\n ignoreUnit\n );\n\n if (filterSalableVariations) {\n variations = variations.filter((variation) => variation.isSalable);\n }\n\n return variations.length > 0;\n },\n\n /**\n * returns true, if the selection with a new unitId would be valid\n * @param {[number, string]} unitId\n */\n isUnitSelectionValid(unitId) {\n unitId = parseInt(unitId);\n if (this.selectedUnit === unitId) {\n return true;\n }\n\n return (\n this.filterVariations(null, unitId).filter(\n (variation) => variation.isSalable\n ).length > 0\n );\n },\n\n /**\n * dispatch vuex action 'loadVariation' to archive a variation\n * dispatches a custom event named 'onVariationChanged'\n * @param {[string, number, null]} variationId\n */\n setVariation(variationId) {\n if (!isDefined(variationId) && this.currentSelection) {\n variationId = this.currentSelection.variationId;\n }\n\n if (isDefined(variationId)) {\n this.$store\n .dispatch(`${this.$props.itemId}/loadVariation`, variationId)\n .then((variation) => {\n document.dispatchEvent(\n new CustomEvent(\"onVariationChanged\", {\n detail: {\n attributes: variation.attributes,\n documents: variation.documents,\n itemId: this.$props.itemId,\n },\n })\n );\n });\n }\n },\n\n isTextCut(content) {\n if (this.$refs.attributesContaner) {\n return (\n textWidth(content, \"Custom-Font, Helvetica, Arial, sans-serif\") >\n this.$refs.attributesContaner[0].clientWidth\n );\n }\n\n return false;\n },\n\n getSelectedAttributeValueName(attribute) {\n const selectedAttributeValueId =\n this.selectedAttributes[attribute.attributeId];\n const selectedAttributeValue = attribute.values.find(\n (attrValue) => attrValue.attributeValueId === selectedAttributeValueId\n );\n\n if (selectedAttributeValue) {\n return selectedAttributeValue.name;\n } else if (\n App.config.item.showPleaseSelect &&\n selectedAttributeValueId === -1\n ) {\n return this.$translate(\"Ceres::Template.singleItemPleaseSelect\");\n }\n return this.$translate(\"Ceres::Template.singleItemNoSelection\");\n },\n\n transformPossibleUnits(possibleUnits) {\n return Object.entries(possibleUnits).sort((unitA, unitB) => {\n unitA = this.splitUnitName(unitA[1]);\n unitB = this.splitUnitName(unitB[1]);\n // order by unit\n if (unitA[1] < unitB[1]) {\n return -1;\n }\n if (unitA[1] > unitB[1]) {\n return 1;\n }\n // order by content (count)\n if (unitA[0] < unitB[0]) {\n return -1;\n }\n if (unitA[0] > unitB[0]) {\n return 1;\n }\n return 0;\n });\n },\n splitUnitName(unitName) {\n const unitNameSplit = unitName.split(\" \");\n\n if (!isNaN(unitNameSplit[0])) {\n unitNameSplit[0] = unitNameSplit[0].replace(\n App.currencyPattern.separator_thousands,\n \"\"\n );\n unitNameSplit[0] = parseInt(unitNameSplit[0]);\n }\n\n return unitNameSplit;\n },\n },\n\n watch: {\n currentSelection(value) {\n this.$store.commit(\n `${this.$props.itemId}/variationSelect/setIsVariationSelected`,\n !!value\n );\n },\n variations() {\n // FIX unset variation cache after subsequent variations are loaded\n this.filteredVariationsCache = {};\n },\n },\n};\n</script>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VariationSelect.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VariationSelect.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./VariationSelect.vue?vue&type=template&id=7d8a2670\"\nimport script from \"./VariationSelect.vue?vue&type=script&lang=js\"\nexport * from \"./VariationSelect.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""}