{"version":3,"sources":["webpack:///./src/client/default/js/components/sortingRulesComponent.js","webpack:///./src/client/default/js/base/baseComponent.js"],"names":["sortingRulesComponent","element","$options","newDesign","removeDuplicatesFromDOM","handleChange","setCurrentSrule","srtRuleDefault","srtRuleName","dropdownContainer","current","VOLANTINI","valueSet","match","targetElement","this","$el","closest","querySelector","SELECTORS","remove","classList","contains","CLASSES","document","nextElementSibling","srtRuleDefaultChild","querySelectorAll","length","forEach","span","appendChild","cloneNode","innerHTML","innerText","add","$on","e","key","preventDefault","target","focus","click","srtRuleSelected","currentTarget","find","el","checked","srtRuleSelectedName","srtRuleCategoryDefault","defaultSrule","EMIT","CUSTOM_MESSAGES","SORTING_RULES_EVENTS","changed","value","isVolantini","TRACKING_EVENTS","update","eventCategory","eventAction","eventLabel","bindClick","filtersEvent","removeFilter","filterType","filterValue","gaeventcategory","gaeventaction","newListingSortingEvent","window","isMobile","scrollTo","baseComponent","BaseComponent","_componentElement","setAttribute","_checkMessages","compOptions","options","dataset","Object","keys","filter","entry","includes","optionValue","cleanEntry","cleanOptionKey","JSON","parse","replace","convertType","deepFreeze","getAttribute","events","cb","elements","Bean","on","stopPropagation","one","off","fire","container","message","_loading","LOADER_EVENTS","show","body","error","icon","setTimeout","hide","option","optionReturn","str","charAt","toLocaleLowerCase","slice","BaseGiaComponent"],"mappings":"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","file":"js/component-sortingRulesComponent-js.chunks.js","sourcesContent":["// import { DataLayerUtils } from '../utilities/dataLayer';\nimport baseComponent from '../base/baseComponent';\nimport { match } from '../utilities/resolutionHandler';\n\nexport default class sortingRulesComponent extends baseComponent {\n get SELECTORS() {\n return {\n srtRuleDefault: '.current',\n srtRuleName: '.js-updated-value',\n dropdownContainer: '.js-dropdown-container'\n };\n }\n\n get CLASSES() {\n return {\n current: 'current',\n VOLANTINI: 'volantini',\n valueSet: 'js-value-set'\n };\n }\n\n constructor(element) {\n super(element);\n if (this.$options.newDesign) {\n this.removeDuplicatesFromDOM();\n }\n this.handleChange();\n this.setCurrentSrule();\n }\n removeDuplicatesFromDOM() {\n if (match(null, 'lg')) {\n let targetElement = this.$el.closest('.search-results')?.querySelector(this.SELECTORS.dropdownContainer);\n if (targetElement) {\n targetElement.remove();\n }\n } else {\n let targetElement = this.$el.closest('.filter-panel-body')?.querySelector(this.SELECTORS.dropdownContainer);\n if (targetElement) {\n targetElement.remove();\n }\n }\n }\n isVolantini() {\n return this.$el.classList.contains(this.CLASSES.VOLANTINI);\n }\n setCurrentSrule() {\n let srtRuleName = document.querySelector(this.SELECTORS.srtRuleName);\n if (srtRuleName && !srtRuleName.classList.contains(this.CLASSES.valueSet)) {\n const srtRuleDefault = this.$el.querySelector(this.SELECTORS.srtRuleDefault) ? this.$el.querySelector(this.SELECTORS.srtRuleDefault).nextElementSibling : null;\n var srtRuleDefaultChild = srtRuleDefault ? srtRuleDefault.querySelectorAll('span') : null;\n if (srtRuleDefaultChild && srtRuleDefaultChild.length > 0) {\n srtRuleDefaultChild.forEach((span) => {\n srtRuleName.appendChild(span.cloneNode(true));\n });\n } else {\n srtRuleName.innerHTML = srtRuleDefault.innerText;\n }\n srtRuleName.classList.add(this.CLASSES.valueSet);\n }\n }\n\n handleChange() {\n //For accessibility REPLAT-7560\n this.$on('keydown', (e) => {\n if (e.key === 'ArrowDown' || e.key === 'ArrowUp') {\n e.preventDefault();\n e.target\n .closest('li')\n ?.[e.key === 'ArrowDown' ? 'nextElementSibling' : 'previousElementSibling']?.querySelector('input')\n ?.focus();\n } else if (e.key === 'Enter') {\n e.preventDefault();\n e.target.click();\n } else if (e.key === 'ArrowLeft' || e.key === 'ArrowRight') {\n e.preventDefault();\n }\n });\n this.$on('change.SortingRules', (e) => {\n const srtRuleSelected = [...e.currentTarget.querySelectorAll('input[type=\"radio\"]')].find((el) => el.checked);\n const srtRuleSelectedName = srtRuleSelected.nextElementSibling.innerText;\n const srtRuleDefault = this.$el.querySelector(this.SELECTORS.srtRuleDefault);\n const srtRuleCategoryDefault = this.$options.defaultSrule;\n\n document.querySelector(this.SELECTORS.srtRuleName).innerHTML = srtRuleSelectedName;\n if (srtRuleDefault) srtRuleDefault.classList.remove(this.CLASSES.current);\n this.EMIT(this.CUSTOM_MESSAGES.SORTING_RULES_EVENTS.changed, {\n value: srtRuleSelected ? srtRuleSelected.value : '',\n defaultSrule: srtRuleCategoryDefault ? srtRuleCategoryDefault : ''\n });\n if (this.isVolantini()) {\n this.EMIT(this.CUSTOM_MESSAGES.TRACKING_EVENTS.update, {\n eventCategory: 'Volantini',\n eventAction: 'Sort',\n eventLabel: srtRuleSelectedName\n });\n }\n this.bindClick();\n this.EMIT(this.CUSTOM_MESSAGES.TRACKING_EVENTS.filtersEvent, {\n removeFilter: false,\n filterType: 'order_results',\n filterValue: e.target.value\n });\n\n if (this.$options.newDesign && this.$options.gaeventcategory && this.$options.gaeventaction) {\n this.EMIT(this.CUSTOM_MESSAGES.TRACKING_EVENTS.newListingSortingEvent, {\n eventCategory: this.$options.gaeventcategory,\n eventAction: this.$options.gaeventaction,\n eventLabel: srtRuleSelectedName\n });\n }\n });\n }\n\n bindClick() {\n const dropdownContainer = this.$el.closest(this.SELECTORS.dropdownContainer).querySelector('.js-dropdown-trigger');\n // this.$fire('click.dropdown', dropdownContainer);\n if (dropdownContainer) {\n dropdownContainer.click();\n if (window.isMobile()) {\n window.scrollTo(0, 0);\n }\n }\n }\n}\n","/* eslint-disable new-cap */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable no-underscore-dangle */\n\nimport Bean from 'bean';\nimport deepFreeze from '../utilities/freeze';\nimport BaseGiaComponent from './baseGiaComponent';\n\nexport default class BaseComponent extends BaseGiaComponent {\n /**\n * @returns {HTMLElement}\n */\n get $el() {\n return /** @type {HTMLElement} */ (this._componentElement);\n }\n\n get $options() {\n const compOptions = {};\n const options = { ...this.$el.dataset };\n const optionsEntires = Object.keys(options).filter((entry) => entry.includes('option'));\n optionsEntires.forEach((entry) => {\n const cleanEntry = BaseComponent.cleanOptionKey(entry);\n let optionValue;\n if (options[entry].includes('{') && options[entry].includes('}')) {\n optionValue = JSON.parse(options[entry].replace(/'/g, '\"'));\n } else {\n optionValue = BaseComponent.convertType(options[entry]);\n }\n compOptions[cleanEntry] = optionValue;\n });\n return deepFreeze(compOptions);\n }\n\n get COMPONENT_NAME() {\n return this.$el.getAttribute('data-component');\n }\n\n /**\n *\n * constructor\n *\n * @param {Element} element\n */\n constructor(element) {\n super(element);\n this._componentElement = element;\n this._componentElement.setAttribute('data-component-init', 'true');\n this._checkMessages();\n }\n\n static convertType(option) {\n let optionReturn;\n switch (option) {\n case 'false':\n optionReturn = false;\n break;\n case 'true':\n optionReturn = true;\n break;\n case 'null':\n optionReturn = null;\n break;\n default:\n optionReturn = option;\n break;\n }\n\n return optionReturn;\n }\n\n static cleanOptionKey(key) {\n const str = key.replace('option', '');\n return `${str.charAt(0).toLocaleLowerCase()}${str.slice(1)}`;\n }\n\n /**\n *\n * $on\n *\n * @param {String} events\n * @param {Function} cb\n * @param {Element} [element = this.$el]\n * @param {Array|String|Element} [elements = null]\n */\n $on(events, cb, element = this.$el, elements = null) {\n if (!element || !events || !cb) return;\n if (!elements) {\n Bean.on(element, events, (e) => {\n if (e) e.stopPropagation();\n cb(e);\n });\n } else {\n Bean.on(element, events, elements, (e) => {\n if (e) e.stopPropagation();\n cb(e);\n });\n }\n }\n\n /**\n *\n * $one\n *\n * @param {String} events\n * @param {Function} cb\n * @param {Element} [element = this.$el]\n */\n $one(events, cb, element = this.$el) {\n Bean.one(element, events, cb);\n }\n\n /**\n *\n * $off\n *\n * @param {String} events\n * @param {Element} [element = this.$el]\n */\n $off(events, element = this.$el) {\n Bean.off(element, events);\n }\n\n /**\n *\n * $fire\n *\n * @param {String} events\n * @param {Element} [element = this.$el]\n */\n $fire(events, element = this.$el) {\n Bean.fire(element, events);\n }\n\n /**\n *\n * Activate loader\n *\n * @param {HTMLElement} [container]\n * @param {String} [message]\n */\n loading(container, message) {\n this._loading = true;\n this.EMIT(this.CUSTOM_MESSAGES.LOADER_EVENTS.show, {\n container: container || document.body,\n message: message ?? null\n });\n }\n\n /**\n *\n * Deactivate loader\n *\n * @param {HTMLElement} [container]\n * @param {String} [message]\n * @param {Boolean} [error=false]\n * @param {String} [icon]\n */\n endLoading(container, message, error = false, icon) {\n this._loading = false;\n setTimeout(() => {\n if (!this._loading) {\n this.EMIT(this.CUSTOM_MESSAGES.LOADER_EVENTS.hide, {\n container: container || document.body,\n message,\n error,\n icon\n });\n }\n }, 400);\n }\n}\n"],"sourceRoot":""}