{"version":3,"sources":["webpack:///./src/client/default/js/components/sortingRulesComponent.js","webpack:///./src/client/default/js/base/baseComponent.js"],"names":["sortingRulesComponent","_baseComponent","element","_this","_classCallCheck","_callSuper","$options","newDesign","removeDuplicatesFromDOM","handleChange","setCurrentSrule","_inherits","_createClass","key","get","srtRuleDefault","srtRuleName","dropdownContainer","current","VOLANTINI","valueSet","value","match","_this$$el$closest","targetElement","this","$el","closest","querySelector","SELECTORS","remove","_this$$el$closest2","classList","contains","CLASSES","document","nextElementSibling","srtRuleDefaultChild","querySelectorAll","length","forEach","span","appendChild","cloneNode","innerHTML","innerText","add","_this2","$on","e","_e$target$closest","_e$target$closest2","_e$target$closest2$qu","preventDefault","target","focus","click","srtRuleSelected","_toConsumableArray","currentTarget","find","el","checked","srtRuleSelectedName","srtRuleCategoryDefault","defaultSrule","EMIT","CUSTOM_MESSAGES","SORTING_RULES_EVENTS","changed","isVolantini","TRACKING_EVENTS","update","eventCategory","eventAction","eventLabel","bindClick","filtersEvent","removeFilter","filterType","filterValue","gaeventcategory","gaeventaction","newListingSortingEvent","window","isMobile","scrollTo","baseComponent","BaseComponent","_BaseGiaComponent","_componentElement","setAttribute","_checkMessages","compOptions","options","_objectSpread","dataset","Object","keys","filter","entry","includes","optionValue","cleanEntry","cleanOptionKey","JSON","parse","replace","convertType","deepFreeze","getAttribute","events","cb","arguments","undefined","elements","Bean","on","stopPropagation","one","off","fire","container","message","_loading","LOADER_EVENTS","show","body","error","icon","setTimeout","hide","option","optionReturn","str","concat","charAt","toLocaleLowerCase","slice","BaseGiaComponent"],"mappings":"ofAEuD,IAElCA,EAAqB,SAAAC,GAiBxC,SAAAD,EAAYE,GAAS,IAAAC,EAMI,OANJC,IAAA,KAAAJ,IACnBG,EAAAE,EAAA,KAAAL,EAAA,CAAME,KACGI,SAASC,WAChBJ,EAAKK,0BAEPL,EAAKM,eACLN,EAAKO,kBAAkBP,EACxB,OAAAQ,IAAAX,EAAAC,GAAAW,IAAAZ,EAAA,EAAAa,IAAA,YAAAC,IAvBD,WACE,MAAO,CACLC,eAAgB,WAChBC,YAAa,oBACbC,kBAAmB,4BAEtB,CAAAJ,IAAA,UAAAC,IAED,WACE,MAAO,CACLI,QAAS,UACTC,UAAW,YACXC,SAAU,kBAEb,CAAAP,IAAA,0BAAAQ,MAUD,WACE,GAAIC,YAAM,KAAM,MAAO,KAAAC,EACjBC,EAAmD,QAAtCD,EAAGE,KAAKC,IAAIC,QAAQ,0BAAkB,IAAAJ,OAAA,EAAnCA,EAAqCK,cAAcH,KAAKI,UAAUZ,mBAClFO,GACFA,EAAcM,aAEX,KAAAC,EACDP,EAAsD,QAAzCO,EAAGN,KAAKC,IAAIC,QAAQ,6BAAqB,IAAAI,OAAA,EAAtCA,EAAwCH,cAAcH,KAAKI,UAAUZ,mBACrFO,GACFA,EAAcM,YAGnB,CAAAjB,IAAA,cAAAQ,MACD,WACE,OAAOI,KAAKC,IAAIM,UAAUC,SAASR,KAAKS,QAAQf,aACjD,CAAAN,IAAA,kBAAAQ,MACD,WACE,IAAIL,EAAcmB,SAASP,cAAcH,KAAKI,UAAUb,aACxD,GAAIA,IAAgBA,EAAYgB,UAAUC,SAASR,KAAKS,QAAQd,UAAW,CACzE,IAAML,EAAiBU,KAAKC,IAAIE,cAAcH,KAAKI,UAAUd,gBAAkBU,KAAKC,IAAIE,cAAcH,KAAKI,UAAUd,gBAAgBqB,mBAAqB,KACtJC,EAAsBtB,EAAiBA,EAAeuB,iBAAiB,QAAU,KACjFD,GAAuBA,EAAoBE,OAAS,EACtDF,EAAoBG,SAAQ,SAACC,GAC3BzB,EAAY0B,YAAYD,EAAKE,WAAU,OAGzC3B,EAAY4B,UAAY7B,EAAe8B,UAEzC7B,EAAYgB,UAAUc,IAAIrB,KAAKS,QAAQd,aAE1C,CAAAP,IAAA,eAAAQ,MAED,WAAe,IAAA0B,EAAA,KAEbtB,KAAKuB,IAAI,WAAW,SAACC,GAC+B,IAAAC,EAAAC,EAAAC,EAApC,cAAVH,EAAEpC,KAAiC,YAAVoC,EAAEpC,KAC7BoC,EAAEI,iBAEc,QADhBH,EAAAD,EAAEK,OACC3B,QAAQ,aAAK,IAAAuB,GAC6D,QAD7DC,EADhBD,EAEe,cAAVD,EAAEpC,IAAsB,qBAAuB,iCAAyB,IAAAsC,GAAwB,QAAxBC,EAF7ED,EAE+EvB,cAAc,gBAAQ,IAAAwB,GAFrGA,EAGIG,SACe,UAAVN,EAAEpC,KACXoC,EAAEI,iBACFJ,EAAEK,OAAOE,SACU,cAAVP,EAAEpC,KAAiC,eAAVoC,EAAEpC,KACpCoC,EAAEI,oBAGN5B,KAAKuB,IAAI,uBAAuB,SAACC,GAC/B,IAAMQ,EAAkBC,IAAIT,EAAEU,cAAcrB,iBAAiB,wBAAwBsB,MAAK,SAACC,GAAE,OAAKA,EAAGC,WAC/FC,EAAsBN,EAAgBrB,mBAAmBS,UACzD9B,EAAiBgC,EAAKrB,IAAIE,cAAcmB,EAAKlB,UAAUd,gBACvDiD,EAAyBjB,EAAKzC,SAAS2D,aAE7C9B,SAASP,cAAcmB,EAAKlB,UAAUb,aAAa4B,UAAYmB,EAC3DhD,GAAgBA,EAAeiB,UAAUF,OAAOiB,EAAKb,QAAQhB,SACjE6B,EAAKmB,KAAKnB,EAAKoB,gBAAgBC,qBAAqBC,QAAS,CAC3DhD,MAAOoC,EAAkBA,EAAgBpC,MAAQ,GACjD4C,aAAcD,GAAkD,KAE9DjB,EAAKuB,eACPvB,EAAKmB,KAAKnB,EAAKoB,gBAAgBI,gBAAgBC,OAAQ,CACrDC,cAAe,YACfC,YAAa,OACbC,WAAYZ,IAGhBhB,EAAK6B,YACL7B,EAAKmB,KAAKnB,EAAKoB,gBAAgBI,gBAAgBM,aAAc,CAC3DC,cAAc,EACdC,WAAY,gBACZC,YAAa/B,EAAEK,OAAOjC,QAGpB0B,EAAKzC,SAASC,WAAawC,EAAKzC,SAAS2E,iBAAmBlC,EAAKzC,SAAS4E,eAC5EnC,EAAKmB,KAAKnB,EAAKoB,gBAAgBI,gBAAgBY,uBAAwB,CACrEV,cAAe1B,EAAKzC,SAAS2E,gBAC7BP,YAAa3B,EAAKzC,SAAS4E,cAC3BP,WAAYZ,SAInB,CAAAlD,IAAA,YAAAQ,MAED,WACE,IAAMJ,EAAoBQ,KAAKC,IAAIC,QAAQF,KAAKI,UAAUZ,mBAAmBW,cAAc,wBAEvFX,IACFA,EAAkBuC,QACd4B,OAAOC,YACTD,OAAOE,SAAS,EAAG,QAnHe,CAASC,M,kpBCED,IAE7BC,EAAa,SAAAC,GAmChC,SAAAD,EAAYtF,GAAS,IAAAC,EAIG,OAJHC,IAAA,KAAAoF,IACnBrF,EAAAE,EAAA,KAAAmF,EAAA,CAAMtF,KACDwF,kBAAoBxF,EACzBC,EAAKuF,kBAAkBC,aAAa,sBAAuB,QAC3DxF,EAAKyF,iBAAiBzF,EACvB,OAAAQ,IAAA6E,EAAAC,GAAA7E,IAAA4E,EAAA,EAAA3E,IAAA,MAAAC,IApCD,WACE,OAAmCW,KAAKiE,oBACzC,CAAA7E,IAAA,WAAAC,IAED,WACE,IAAM+E,EAAc,GACdC,E,iWAAOC,CAAA,GAAQtE,KAAKC,IAAIsE,SAY9B,OAXuBC,OAAOC,KAAKJ,GAASK,QAAO,SAACC,GAAK,OAAKA,EAAMC,SAAS,aAC9D7D,SAAQ,SAAC4D,GACtB,IACIE,EADEC,EAAaf,EAAcgB,eAAeJ,GAG9CE,EADER,EAAQM,GAAOC,SAAS,MAAQP,EAAQM,GAAOC,SAAS,KAC5CI,KAAKC,MAAMZ,EAAQM,GAAOO,QAAQ,KAAM,MAExCnB,EAAcoB,YAAYd,EAAQM,IAElDP,EAAYU,GAAcD,KAErBO,YAAWhB,KACnB,CAAAhF,IAAA,iBAAAC,IAED,WACE,OAAOW,KAAKC,IAAIoF,aAAa,oBAC9B,CAAAjG,IAAA,MAAAQ,MAiDD,SAAI0F,EAAQC,GAAyC,IAArC9G,EAAO+G,UAAA1E,OAAA,QAAA2E,IAAAD,UAAA,GAAAA,UAAA,GAAGxF,KAAKC,IAAKyF,EAAQF,UAAA1E,OAAA,QAAA2E,IAAAD,UAAA,GAAAA,UAAA,GAAG,KACxC/G,GAAY6G,GAAWC,IACvBG,EAMHC,IAAKC,GAAGnH,EAAS6G,EAAQI,GAAU,SAAClE,GAC9BA,GAAGA,EAAEqE,kBACTN,EAAG/D,MAPLmE,IAAKC,GAAGnH,EAAS6G,GAAQ,SAAC9D,GACpBA,GAAGA,EAAEqE,kBACTN,EAAG/D,SAUT,CAAApC,IAAA,OAAAQ,MAQA,SAAK0F,EAAQC,GAAwB,IAApB9G,EAAO+G,UAAA1E,OAAA,QAAA2E,IAAAD,UAAA,GAAAA,UAAA,GAAGxF,KAAKC,IAC9B0F,IAAKG,IAAIrH,EAAS6G,EAAQC,KAG5B,CAAAnG,IAAA,OAAAQ,MAOA,SAAK0F,GAA4B,IAApB7G,EAAO+G,UAAA1E,OAAA,QAAA2E,IAAAD,UAAA,GAAAA,UAAA,GAAGxF,KAAKC,IAC1B0F,IAAKI,IAAItH,EAAS6G,KAGpB,CAAAlG,IAAA,QAAAQ,MAOA,SAAM0F,GAA4B,IAApB7G,EAAO+G,UAAA1E,OAAA,QAAA2E,IAAAD,UAAA,GAAAA,UAAA,GAAGxF,KAAKC,IAC3B0F,IAAKK,KAAKvH,EAAS6G,KAGrB,CAAAlG,IAAA,UAAAQ,MAOA,SAAQqG,EAAWC,GACjBlG,KAAKmG,UAAW,EAChBnG,KAAKyC,KAAKzC,KAAK0C,gBAAgB0D,cAAcC,KAAM,CACjDJ,UAAWA,GAAavF,SAAS4F,KACjCJ,QAASA,UAAW,SAIxB,CAAA9G,IAAA,aAAAQ,MASA,SAAWqG,EAAWC,GAA8B,IAAA5E,EAAA,KAArBiF,EAAKf,UAAA1E,OAAA,QAAA2E,IAAAD,UAAA,IAAAA,UAAA,GAAUgB,EAAIhB,UAAA1E,OAAA,EAAA0E,UAAA,QAAAC,EAChDzF,KAAKmG,UAAW,EAChBM,YAAW,WACJnF,EAAK6E,UACR7E,EAAKmB,KAAKnB,EAAKoB,gBAAgB0D,cAAcM,KAAM,CACjDT,UAAWA,GAAavF,SAAS4F,KACjCJ,UACAK,QACAC,WAGH,QACJ,EAAApH,IAAA,cAAAQ,MAvHD,SAAmB+G,GACjB,IAAIC,EACJ,OAAQD,GACN,IAAK,QACHC,GAAe,EACf,MACF,IAAK,OACHA,GAAe,EACf,MACF,IAAK,OACHA,EAAe,KACf,MACF,QACEA,EAAeD,EAInB,OAAOC,IACR,CAAAxH,IAAA,iBAAAQ,MAED,SAAsBR,GACpB,IAAMyH,EAAMzH,EAAI8F,QAAQ,SAAU,IAClC,MAAO,GAAP4B,OAAUD,EAAIE,OAAO,GAAGC,qBAAmBF,OAAGD,EAAII,MAAM,QAhE1B,C,MAASC","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":""}