{"version":3,"sources":["webpack:///./src/client/default/js/components/dropdownComponent.js","webpack:///./src/client/default/js/base/baseComponent.js"],"names":["DropdownComponent","_BaseComponent","element","_this","_classCallCheck","_callSuper","timeout","trap","handleEscapeTrigger","bindEvents","_inherits","_createClass","key","get","_defineProperty","this","CUSTOM_MESSAGES","DROPDOWN_EVENTS","show","close","panel","trigger","closeDropdownTrigger","$el","closest","parentElement","classList","contains","CLASSES","open","animate","active","$container","querySelector","SELECTORS","HTMLElement","container","value","content","_this2","parentClasses","arguments","length","undefined","panelClasses","parent","$panel","add","setTimeout","_parent$classList","_panel$classList","innerHTML","apply","_toConsumableArray","$trigger","setModalTrap","EMIT","opening","e","console","error","target","_this3","focusTrap","clickOutsideDeactivates","activate","_this4","_parent$classList2","_panel$classList2","remove","deactivate","_this5","anyFocus","match","$on","preventDefault","clearTimeout","closeTimeout","openTimeout","inputInside","querySelectorAll","forEach","el","checkIfFocus","_this6","document","addEventListener","_ref2","_this7","closeDropdown","click","$options","handle","bindHover","bindClick","form","activeElement","localName","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","elements","Bean","on","stopPropagation","one","off","fire","message","_loading","LOADER_EVENTS","body","icon","hide","option","optionReturn","str","concat","charAt","toLocaleLowerCase","slice","BaseGiaComponent"],"mappings":"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","file":"js/component-dropdownComponent-js.chunks.js","sourcesContent":["import { match } from '../utilities/resolutionHandler';\nimport BaseComponent from '../base/baseComponent';\nimport * as focusTrap from 'focus-trap';\n\nexport default class DropdownComponent extends BaseComponent {\n  get Messages() {\n    return {\n      [this.CUSTOM_MESSAGES.DROPDOWN_EVENTS.show]: this.close\n    };\n  }\n\n  get SELECTORS() {\n    return {\n      panel: '.js-dropdown-panel',\n      trigger: '.js-dropdown-trigger',\n      closeDropdownTrigger: '.js-close-dropdown'\n    };\n  }\n\n  get PARENT() {\n    return this.$el.closest('.js-dropdown-container');\n  }\n\n  get IS_OPEN() {\n    return this.$el.parentElement.classList.contains(this.CLASSES.open);\n  }\n\n  constructor(element) {\n    super(element);\n\n    this.timeout = null;\n    this.trap = null;\n    this.handleEscapeTrigger();\n\n    this.bindEvents();\n  }\n\n  get CLASSES() {\n    return {\n      open: 'open',\n      animate: 'animate',\n      active: 'active'\n    };\n  }\n\n  /**\n   * @return {HTMLElement | undefined}\n   */\n  get $panel() {\n    if (this.panel) return this.panel;\n    const panel = this.$container.querySelector(this.SELECTORS.panel);\n    if (panel instanceof HTMLElement) {\n      this.panel = panel;\n      return panel;\n    }\n    return undefined;\n  }\n\n  /**\n   * @return {HTMLElement | undefined}\n   */\n  get $container() {\n    if (this.container) return this.container;\n    const container = this.$el.parentElement;\n    if (container instanceof HTMLElement) {\n      this.container = container;\n      return container;\n    }\n    return undefined;\n  }\n\n  /**\n   * @return {HTMLElement | undefined}\n   */\n  get $trigger() {\n    if (this.trigger) return this.trigger;\n    const trigger = this.$el;\n    if (trigger instanceof HTMLElement) {\n      this.trigger = trigger;\n      return trigger;\n    }\n    return undefined;\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    try {\n      const parent = this.$container;\n      const panel = this.$panel;\n\n      parent.classList.add(this.CLASSES.open);\n\n      this.timeout = setTimeout(() => {\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.panelClasses = panelClasses;\n          panel.classList.add(...panelClasses);\n        }\n\n        this.$trigger.classList.add(this.CLASSES.active);\n        parent.classList.add(this.CLASSES.animate);\n        this.setModalTrap(panel);\n        this.EMIT(this.CUSTOM_MESSAGES.DROPDOWN_EVENTS.opening, this.$el);\n      }, 100);\n    } catch (e) {\n      console.error(e);\n    }\n  }\n\n  setModalTrap(target) {\n    setTimeout(() => {\n      // let targetElement = target.parentElement.querySelector(this.SELECTORS.dropdown);\n      // target.setAttribute('aria-labelledby', target.getAttribute('data-id'));\n      // target.setAttribute('aria-modal', true);\n      this.trap = focusTrap.createFocusTrap(target, { clickOutsideDeactivates: true });\n      this.trap.activate();\n    }, 200);\n  }\n\n  close() {\n    try {\n      const parent = this.$container;\n      const panel = this.$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      this.timeout = setTimeout(() => {\n        parent.classList.remove(this.CLASSES.open);\n        this.$trigger.classList.remove(this.CLASSES.active);\n        if (this.trap) this.trap.deactivate();\n      }, 100);\n    } catch (e) {\n      console.error(e);\n    }\n  }\n\n  bindHover() {\n    var anyFocus = false;\n    if (match(null, 'md')) {\n      this.$on(\n        'mouseenter.dropdown',\n        (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        },\n        this.$container\n      );\n\n      this.$on(\n        'mouseleave.dropdown',\n        (e) => {\n          const parent = this.$container;\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        },\n        this.$container\n      );\n    }\n  }\n\n  handleEscapeTrigger() {\n    document.addEventListener('keydown', ({ key }) => {\n      if (key === 'Escape') {\n        this.close();\n      }\n    });\n  }\n\n  bindClick() {\n    this.$on(\n      'click.dropdown',\n      (e) => {\n        if (e) {\n          e.preventDefault();\n        }\n\n        clearTimeout(this.timeout);\n        const isOpen = this.$el.parentElement.classList.contains(this.CLASSES.open);\n        if (isOpen) {\n          this.close();\n        } else {\n          this.open();\n        }\n      },\n      this.$trigger\n    );\n\n    let closeDropdown = [...this.$container.querySelectorAll(this.SELECTORS.closeDropdownTrigger)];\n\n    if (closeDropdown.length > 0) {\n      closeDropdown.forEach((trigger) => {\n        trigger.addEventListener('click', (e) => {\n          if (e) {\n            e.preventDefault();\n          }\n          if (this.$trigger) {\n            this.$trigger.click();\n          }\n        });\n      });\n    }\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","/* 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":""}