{"version":3,"sources":["webpack:///./cartridges/app_designholding/cartridge/client/default/js/components/custom-select-box/custom-select-box.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/components/custom-select-box/index.js"],"names":["CUSTOM_CLASS","CustomSelectBox","constructor","element","ui","label","querySelector","select","options","labelText","list","bindMobileEvents","DetectTouch","touch","length","classList","add","createCustomSelectLabel","createCustomSelectBox","bindEvents","body","addEventListener","e","handleBodyClick","handleLabelClick","handleSelectChange","contains","target","hidden","selectedOption","selectedIndex","document","createElement","innerHTML","disabled","append","closeButton","close","handleCloseButtonClick","map","option","i","itemButtonLabel","itemButton","item","variationAttributeHook","getAttribute","replace","handleItemButtonClick","dataset","index","setAttribute","selected","button","preventDefault","parseInt","dispatchEvent","Event","removeChild","remove"],"mappings":"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","file":"js/CustomSelectBox.js","sourcesContent":["import DetectTouch from '@utilities/detect-touch';\nimport { body } from '@utilities/dom-elements';\n\nconst CUSTOM_CLASS = 'c-select--custom';\n\nclass CustomSelectBox {\n constructor(element) {\n this.ui = {\n element,\n label: element.querySelector('label') || element.querySelector('.select__label'),\n select: element.querySelector('select'),\n options: [...element.querySelector('select').options],\n labelText: null,\n list: null,\n };\n\n this.bindMobileEvents();\n\n if (DetectTouch.touch) return;\n\n if(this.ui.options.length === 0 ) return;\n\n this.ui.element.classList.add(CUSTOM_CLASS);\n\n this.createCustomSelectLabel();\n this.createCustomSelectBox();\n this.bindEvents();\n }\n\n bindEvents() {\n body.addEventListener('click', (e) => this.handleBodyClick(e));\n this.ui.label.addEventListener('click', () => this.handleLabelClick());\n }\n\n bindMobileEvents() {\n this.ui.select.addEventListener('change', () => this.handleSelectChange());\n }\n\n handleBodyClick(e) {\n if (!this.ui.element.contains(e.target)) {\n this.ui.list.hidden = true;\n }\n }\n\n handleLabelClick() {\n if (!this.ui.element.classList.contains('form__item--disabled')) {\n this.ui.list.hidden = false;\n }\n }\n\n createCustomSelectLabel() {\n const selectedOption = this.ui.select.options[this.ui.select.selectedIndex];\n this.ui.labelText = document.createElement('span');\n this.ui.labelText.innerHTML = selectedOption.innerHTML;\n\n if (selectedOption.disabled) {\n this.ui.label.classList.add('select__label--disabled');\n }\n\n this.ui.label.append(this.ui.labelText);\n }\n\n createCustomSelectBox() {\n const closeButton = document.createElement('button');\n const close = document.createElement('li');\n\n closeButton.addEventListener('click', () => this.handleCloseButtonClick());\n closeButton.classList.add('csb__close');\n\n close.append(closeButton);\n\n this.ui.list = document.createElement('ul');\n this.ui.list.classList.add('csb__list');\n this.ui.list.hidden = true;\n this.ui.list.append(close);\n\n this.ui.options.map((option, i) => {\n const itemButtonLabel = document.createElement('span');\n const itemButton = document.createElement('button');\n const item = document.createElement('li');\n const variationAttributeHook = this.ui.select.getAttribute('variation-attribute-hook');\n\n if (option.getAttribute('hidden') === '') item.classList.add('u-hidden');\n\n itemButtonLabel.classList.add('csb__button-label');\n itemButtonLabel.innerHTML = option.innerHTML.replace(/-/g, '‑');\n\n itemButton.addEventListener('click', (e) => this.handleItemButtonClick(e, itemButton));\n itemButton.classList.add('csb__button');\n itemButton.dataset.index = i;\n itemButton.append(itemButtonLabel);\n\n if (variationAttributeHook) itemButton.setAttribute('variation-attribute-hook', variationAttributeHook);\n\n if (option.disabled) {\n itemButton.classList.add('csb__button--disabled');\n }\n\n if (option.selected) {\n itemButton.classList.add('csb__button--selected');\n }\n\n item.classList.add('csb__item');\n item.append(itemButton);\n\n this.ui.list.append(item);\n });\n\n this.ui.element.append(this.ui.list);\n }\n\n handleCloseButtonClick() {\n this.ui.list.hidden = true;\n }\n\n handleItemButtonClick(e, button) {\n e.preventDefault();\n\n this.ui.select.selectedIndex = parseInt(button.dataset.index, 10);\n this.ui.select.dispatchEvent(new Event('change'));\n\n const selectedOption = this.ui.select.options[this.ui.select.selectedIndex];\n this.ui.labelText.innerHTML = selectedOption.innerHTML;\n this.ui.element.removeChild(this.ui.list);\n\n if (selectedOption.disabled) {\n this.ui.label.classList.add('select__label--disabled');\n } else {\n this.ui.label.classList.remove('select__label--disabled');\n }\n\n this.createCustomSelectBox();\n }\n\n handleSelectChange() {\n const { select } = this.ui;\n\n if (select.selectedIndex === 0) {\n select.classList.remove('select__input--selected');\n } else {\n select.classList.add('select__input--selected');\n }\n }\n}\n\nexport default CustomSelectBox;\n","import CustomSelectBox from './custom-select-box'\n\nexport default CustomSelectBox\n"],"sourceRoot":""}