{"version":3,"sources":["webpack://[name]/./src/js/components/DropdownComponent.js"],"names":["DropdownComponent","_BaseComponent","element","_this","_classCallCheck","_callSuper","_defineProperty","event","target","classList","contains","SELECTORS","closePanel","close","PARENT","$el","parentElement","timeout","bindEvents","_inherits","_createClass","key","get","this","CUSTOM_MESSAGES","DROPDOWN_EVENTS","hide","panel","$options","trigger","inputInside","closest","CLASSES","open","animate","active","dot","noScrollBody","value","content","_this2","parentClasses","arguments","length","undefined","panelClasses","EMIT","triggerSelector","parent","querySelector","add","body","document","setTimeout","_parent$classList","_panel$classList","innerHTML","apply","_toConsumableArray","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","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 closePanel: 'js-close-panel'\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 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 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\n if (isOpen) {\n this.close();\n if (hasCustomCss && elementWhereToApplyCss) elementWhereToApplyCss.classList.remove(this.$options.cssclasses);\n } else {\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 }, 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 (event.target.classList.contains(this.SELECTORS.closePanel)) {\n this.close();\n return;\n }\n\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}\n"],"sourceRoot":""}