{"version":3,"sources":["webpack://[name]/./src/js/components/DropdownComponent.js"],"names":["DropdownComponent","_BaseComponent","element","_this","_classCallCheck","_callSuper","_defineProperty","event","PARENT","$el","parentElement","contains","target","close","timeout","bindEvents","_inherits","_createClass","key","get","this","CUSTOM_MESSAGES","DROPDOWN_EVENTS","hide","panel","$options","trigger","inputInside","closest","classList","CLASSES","open","animate","active","dot","noScrollBody","value","content","_this2","parentClasses","arguments","length","undefined","panelClasses","EMIT","triggerSelector","SELECTORS","parent","querySelector","add","body","document","setTimeout","_parent$classList","_panel$classList","innerHTML","apply","_toConsumableArray","ispreheader","e","console","error","_this3","_parent$classList2","_panel$classList2","remove","_this4","anyFocus","match","$on","preventDefault","clearTimeout","closeTimeout","openTimeout","querySelectorAll","forEach","el","checkIfFocus","_this5","isOpen","IS_OPEN","hasCustomCss","cssclasses","wheretoapplycss","elementWhereToApplyCss","closeonclick","removeEventListener","documentClick","addEventListener","closeonscroll","window","windowScoll","dispatchEvent","MouseEvent","view","bubbles","cancelable","handle","bindHover","bindClick","form","activeElement","localName","BaseComponent"],"mappings":"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","file":"js/component-DropdownComponent-js.chunks.js","sourcesContent":["import { match } from '../utilities/ResolutionHandler';\nimport BaseComponent from '../abstracts/BaseComponent';\n\nexport default class DropdownComponent extends BaseComponent {\n get Messages() {\n return {\n [this.CUSTOM_MESSAGES.DROPDOWN_EVENTS.hide]: this.close\n };\n }\n\n get SELECTORS() {\n return {\n panel: this.$options.panel || '.js-dropdown-panel',\n trigger: this.$options.trigger || '.js-dropdown-trigger',\n inputInside: '.floatl__label'\n };\n }\n\n get PARENT() {\n return this.$el.closest('.js-dropdown-container');\n }\n\n get IS_OPEN() {\n return (this.PARENT || this.$el.parentElement).classList.contains(this.CLASSES.open);\n }\n\n constructor(element) {\n super(element);\n\n this.timeout = null;\n\n this.bindEvents();\n }\n\n get CLASSES() {\n return {\n open: 'open',\n animate: 'animate',\n active: 'active',\n dot: 'dot',\n noScrollBody: 'no-scroll-body'\n };\n }\n\n /**\n *\n * @param {String} content - Panel content\n * @param {Array} [parentClasses = []] - Parent element classes\n * @param {Array} [panelClasses ? []] - Panel classes\n */\n open(content, parentClasses = [], panelClasses = []) {\n this.EMIT(this.CUSTOM_MESSAGES.DROPDOWN_EVENTS.open, {\n triggerSelector: this.SELECTORS.trigger\n });\n\n try {\n const parent = this.PARENT || this.$el.parentElement;\n const panel = parent.querySelector(this.SELECTORS.panel);\n\n parent.classList.add(this.CLASSES.open);\n\n if (parent.classList.contains(this.CLASSES.noScrollBody)) {\n const body = document.querySelector('body');\n body.classList.add(this.CLASSES.noScrollBody);\n }\n\n this.timeout = setTimeout(\n () => {\n if (content) {\n panel.innerHTML = content;\n }\n\n if (parentClasses) {\n this.parentClasses = parentClasses;\n parent.classList.add(...parentClasses);\n }\n\n if (panelClasses) {\n this.parentClasses = parentClasses;\n panel.classList.add(...panelClasses);\n }\n\n if (this.$options.ispreheader) {\n this.$el.closest('.pre-header').classList.add('open-lang');\n }\n\n this.$el.classList.add(this.CLASSES.active);\n parent.classList.add(this.CLASSES.animate);\n }, 100\n );\n } catch (e) {\n console.error(e);\n }\n }\n\n close() {\n this.EMIT(this.CUSTOM_MESSAGES.DROPDOWN_EVENTS.close, {\n triggerSelector: this.SELECTORS.trigger\n });\n\n try {\n const parent = this.PARENT || this.$el.parentElement;\n const panel = parent.querySelector(this.SELECTORS.panel);\n parent.classList.remove(this.CLASSES.animate);\n\n if (this.parentClasses) parent.classList.remove(...this.parentClasses);\n if (this.panelClasses) panel.classList.remove(...this.panelClasses);\n\n if (parent.classList.contains(this.CLASSES.noScrollBody)) {\n const body = document.querySelector('body');\n body.classList.remove(this.CLASSES.noScrollBody);\n }\n\n if (this.$options.ispreheader) {\n this.$el.closest('.pre-header').classList.remove('open-lang');\n }\n\n this.timeout = setTimeout(\n () => {\n parent.classList.remove(this.CLASSES.open);\n this.$el.classList.remove(this.CLASSES.active);\n }, 100\n );\n } catch (e) {\n console.error(e);\n }\n }\n\n bindHover() {\n var anyFocus = false;\n if (match(null, 'medium')) {\n this.$on('mouseenter.dropdown', (e) => {\n e.preventDefault();\n clearTimeout(this.timeout);\n clearTimeout(this.closeTimeout);\n clearTimeout(this.openTimeout);\n this.openTimeout = setTimeout(() => {\n this.open();\n }, 100);\n }, this.PARENT || this.$el.parentElement);\n\n this.$on('mouseleave.dropdown', (e) => {\n const parent = this.PARENT || this.$el.parentElement;\n const inputInside = parent.querySelectorAll(this.SELECTORS.inputInside);\n [...inputInside].forEach((el) => {\n if (this.checkIfFocus(el)) {\n anyFocus = true;\n }\n });\n\n if (!anyFocus) {\n e.preventDefault();\n clearTimeout(this.timeout);\n clearTimeout(this.openTimeout);\n this.closeTimeout = setTimeout(() => {\n this.close();\n }, 100);\n } else {\n anyFocus = false;\n }\n }, this.PARENT || this.$el.parentElement);\n }\n }\n\n bindClick() {\n this.$on('click.dropdown', (e) => {\n if (e) {\n e.preventDefault();\n }\n\n clearTimeout(this.timeout);\n const isOpen = this.IS_OPEN;\n const hasCustomCss = this.$options.cssclasses !== null && this.$options.wheretoapplycss !== null;\n const elementWhereToApplyCss = document.querySelector(this.$options.wheretoapplycss);\n const parent = this.PARENT || this.$el.parentElement;\n\n if (isOpen) {\n this.close();\n if (hasCustomCss && elementWhereToApplyCss) elementWhereToApplyCss.classList.remove(this.$options.cssclasses);\n } else if (!parent.classList.contains('disabled')) {\n this.open();\n if (hasCustomCss && elementWhereToApplyCss) elementWhereToApplyCss.classList.add(this.$options.cssclasses);\n\n // PITTI20-122\n if (this.$options.closeonclick) {\n document.removeEventListener('click', this.documentClick);\n document.addEventListener('click', this.documentClick);\n }\n if (this.$options.closeonscroll) {\n window.removeEventListener('scroll', this.windowScoll);\n window.addEventListener('scroll', this.windowScoll);\n }\n }\n\n // PITTI20-1467\n (this.PARENT || this.$el.parentElement).dispatchEvent(new MouseEvent('click', { view: window, bubbles: true, cancelable: true }));\n\n }, this.$el);\n }\n\n bindEvents() {\n if (this.$options.handle === 'hover') {\n this.bindHover();\n }\n if (this.$options.handle === 'click') {\n this.bindClick();\n }\n if (this.$options.handle === 'all' || !this.$options.handle) {\n this.bindClick();\n this.bindHover();\n }\n }\n\n checkIfFocus(el) {\n return (el.form === (document.activeElement.form || null)) && (document.activeElement.localName === 'input');\n }\n\n documentClick = event => {\n if ((this.PARENT || this.$el.parentElement).contains(event.target)) {\n return;\n }\n this.close();\n }\n\n windowScoll = () => {\n this.close();\n }\n}"],"sourceRoot":""}