{"version":3,"sources":["webpack:///./cartridges/app_designholding/cartridge/client/default/js/components/enhanced-country-selector/enhancedCountrySelector.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/components/enhanced-country-selector/index.js"],"names":["COUNTRY_SELECT","LANGUAGE_SELECT","COUNTRY_SELECTION_SUBMIT","CUSTOM_SELECT","CUSTOM_SELECT_CLASS","CUSTOM_COUNTRY_MODAL_OPEN","MODAL_COUNTRY_GATEWAY","SELECT_LABEL_CLASS","FORM_ITEM_CLASS","FORM_ITEM_DISABLED_CLASS","OPTION_ELEMENT","CSB_LIST_CLASS","EnhancedCountrySelector","constructor","element","countrySelectbox","querySelector","languageSelectbox","languageSelectboxFormItem","closest","defaultLanguageOption","submit","modalCountryGateway","document","cookieData","country","JSON","parse","dataset","cookieObject","language","bindEvents","addEventListener","onCountryChange","onLanguageChange","body","classList","add","value","selectedOption","selectedOptionLangData","languages","saveCookieData","defaultLanguage","options","forEach","lang","selectedLanguage","find","obj","redirectTarget","switchUrl","displayName","isSingleLanguageOption","length","innerHTML","prepend","disabled","wrapper","remove","moduleInit","async","force","href","removeAttribute","setAttribute","stringify"],"mappings":"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","file":"js/EnhancedCountrySelector.js","sourcesContent":["import moduleInit from '@utilities/module-init';\nimport { body } from '@utilities/dom-elements';\n\nconst COUNTRY_SELECT = '[js-hook-country-selector]';\nconst LANGUAGE_SELECT = '[js-hook-language-selector]';\nconst COUNTRY_SELECTION_SUBMIT = '[js-hook-country-submit]';\nconst CUSTOM_SELECT = '[js-hook-custom-select-box]';\nconst CUSTOM_SELECT_CLASS = 'c-select--custom';\nconst CUSTOM_COUNTRY_MODAL_OPEN = 'is--country-modal-open';\nconst MODAL_COUNTRY_GATEWAY = '.footer__language-selector-select-item';\nconst SELECT_LABEL_CLASS = '.select__label';\nconst FORM_ITEM_CLASS = '.form__item';\nconst FORM_ITEM_DISABLED_CLASS = 'form__item--disabled';\nconst OPTION_ELEMENT = 'option';\nconst CSB_LIST_CLASS = '.csb__list';\n\nclass EnhancedCountrySelector {\n constructor(element) {\n this.element = element;\n this.countrySelectbox = this.element.querySelector(COUNTRY_SELECT);\n this.languageSelectbox = this.element.querySelector(LANGUAGE_SELECT);\n this.languageSelectboxFormItem = this.languageSelectbox.closest(FORM_ITEM_CLASS);\n this.defaultLanguageOption = this.languageSelectbox.querySelector(OPTION_ELEMENT);\n this.submit = this.element.querySelector(COUNTRY_SELECTION_SUBMIT);\n this.modalCountryGateway = document.querySelector(MODAL_COUNTRY_GATEWAY);\n\n this.cookieData = {\n country: JSON.parse(this.submit.dataset.cookieObject)[0],\n language: JSON.parse(this.submit.dataset.cookieObject)[1]\n };\n\n this.bindEvents();\n }\n\n bindEvents() {\n this.countrySelectbox.addEventListener(\"change\", () => this.onCountryChange());\n this.languageSelectbox.addEventListener(\"change\", () => this.onLanguageChange());\n\n if (this.modalCountryGateway) {\n this.modalCountryGateway.addEventListener(\"click\", () => body.classList.add(CUSTOM_COUNTRY_MODAL_OPEN));\n }\n }\n\n onCountryChange() {\n // Create language dropdown\n const {value} = this.countrySelectbox;\n const selectedOption = this.countrySelectbox.querySelector(`option[value=${value}]`);\n const selectedOptionLangData = selectedOption.dataset.languages;\n const languages = JSON.parse(selectedOptionLangData);\n\n this.saveCookieData(this.countrySelectbox.value, selectedOption.dataset.defaultLanguage);\n\n // Create language options\n let options = '';\n languages.forEach(lang => {\n const selectedLanguage = languages.find(obj => obj.value === lang.value);\n options += ``;\n })\n\n // Set language dropdown\n this.isSingleLanguageOption = languages.length === 1;\n this.languageSelectbox.innerHTML = options;\n this.languageSelectbox.prepend(this.defaultLanguageOption);\n this.languageSelectbox.value = this.isSingleLanguageOption ? languages[0].value : '';\n this.languageSelectbox.disabled = this.isSingleLanguageOption;\n\n this.languageSelectboxFormItem.classList[this.isSingleLanguageOption ? 'add' : 'remove'](FORM_ITEM_DISABLED_CLASS);\n\n // Reinit custom dropdown for new languages\n if (this.element.querySelector(CSB_LIST_CLASS)) {\n // Reset\n const wrapper = this.languageSelectbox.closest(CUSTOM_SELECT);\n wrapper.classList.remove(CUSTOM_SELECT_CLASS)\n wrapper.querySelector(`${SELECT_LABEL_CLASS} span:not(:first-child)`).remove();\n wrapper.querySelector(CSB_LIST_CLASS).remove();\n\n // Reinit\n moduleInit.async(`${CUSTOM_SELECT}:not(.${CUSTOM_SELECT_CLASS})`, () =>\n import(/* webpackChunkName: \"js/CustomSelectBox\" */ '@components/custom-select-box'),\n {\n force: true\n }\n );\n }\n\n // Update submit button with default url for this country\n this.submit.href = this.isSingleLanguageOption ? languages[0].switchUrl : '';\n if (this.isSingleLanguageOption) {\n this.submit.removeAttribute('disabled');\n } else {\n this.submit.setAttribute('disabled', 'disabled');\n }\n\n }\n\n onLanguageChange() {\n this.saveCookieData(this.countrySelectbox.value, this.languageSelectbox.value);\n\n // Update submit button with default url for this country\n const {value} = this.languageSelectbox;\n const selectedOption = this.languageSelectbox.querySelector(`option[value=${value}]`);\n\n this.submit.href = selectedOption.dataset.switchUrl;\n this.submit.removeAttribute('disabled', 'false');\n }\n\n // Save locale data to submit button\n // Submit is hooked to save cookie data\n saveCookieData(country, language) {\n this.cookieData.country.value = country;\n this.cookieData.language.value = language;\n\n this.submit.dataset.cookieObject = JSON.stringify([\n this.cookieData.country,\n this.cookieData.language\n ]);\n }\n}\n\nexport default EnhancedCountrySelector;\n","import EnhancedCountrySelector from \"./enhancedCountrySelector\";\n\nexport default EnhancedCountrySelector;\n"],"sourceRoot":""}