{"version":3,"sources":["webpack:///./src/client/default/js/components/homeNavComponent.js","webpack:///./src/client/default/js/base/baseComponent.js"],"names":["HomeNavComponent","element","trap","moveTopBar","handleMobileChange","handleEscapeTrigger","window","addEventListener","getHeights","document","e","target","classList","contains","closeMenu","topBar","navLists","listContainer","mainHeader","triggersMobile","triggersDesktop","triggersDesktopActive","homenav","secondLevelNavigation","bodyOverlay","infoStrip","pushApp","selected","active","this","CUSTOM_MESSAGES","BREAKPOINTER","BREAKPOINT_CHANGE","key","match","querySelectorAll","SELECTORS","forEach","trigger","$off","$on","preventDefault","lists","$el","el","index","CLASSES","remove","parentElement","add","openMenu","activeTrigger","querySelector","ariaExpanded","nextElementSibling","EMIT","BODY","TOGGLE_OVERLAY","overlayNoHeader","scroll","deactivate","targetElement","focusTrap","clickOutsideDeactivates","activate","homevavheight","getBoundingClientRect","height","listContainerheight","topbar","appendChild","insertBefore","nextSibling","firstChild","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-homeNavComponent-js.chunks.js","sourcesContent":["import BaseComponent from '../base/baseComponent';\nimport { match } from '../utilities/resolutionHandler';\nimport * as focusTrap from 'focus-trap';\n\nexport default class HomeNavComponent extends BaseComponent {\n get SELECTORS() {\n return {\n topBar: '.top-bar',\n navLists: '.homenav li',\n listContainer: '.homenav li.selected .glide-overflower',\n mainHeader: 'header.header',\n triggersMobile: '.homenav .category',\n triggersDesktop: '.navigation .trigger-menu',\n triggersDesktopActive: '.navigation .trigger-menu.active',\n homenav: '.homenav',\n secondLevelNavigation: '.secondLevelNavigation',\n bodyOverlay: '.overlay-no-header',\n infoStrip: '.information-strip.is-visible',\n pushApp: '.push-app-content-wrapper'\n };\n }\n\n get CLASSES() {\n return {\n selected: 'selected',\n active: 'active'\n };\n }\n\n get Messages() {\n return {\n [this.CUSTOM_MESSAGES.BREAKPOINTER.BREAKPOINT_CHANGE]: this.handleMobileChange\n };\n }\n\n constructor(element) {\n super(element);\n this.trap = null;\n this.moveTopBar();\n this.handleMobileChange();\n this.handleEscapeTrigger();\n window.addEventListener(\n 'resize',\n () => {\n this.moveTopBar();\n this.getHeights();\n },\n true\n );\n document.addEventListener('click', (e) => {\n if (e.target.classList.contains('overlay-no-header')) {\n this.closeMenu();\n }\n });\n }\n\n handleEscapeTrigger() {\n document.addEventListener('keydown', ({ key }) => {\n if (key === 'Escape') {\n this.closeMenu();\n }\n });\n }\n\n handleMobileChange() {\n if (match('lg', null)) {\n this.closeMenu();\n const triggers = document.querySelectorAll(this.SELECTORS.triggersMobile);\n triggers.forEach((trigger) => {\n this.$off('click.cat', trigger);\n this.$on(\n 'click.cat',\n (e) => {\n e.preventDefault();\n const lists = this.$el.querySelectorAll(this.SELECTORS.navLists);\n [...lists].forEach((el, index) => {\n if (el.classList.contains(this.CLASSES.selected)) {\n el.classList.remove(this.CLASSES.selected);\n }\n });\n const parent = e.target.parentElement;\n parent.classList.add(this.CLASSES.selected);\n\n this.moveTopBar();\n this.getHeights();\n },\n trigger\n );\n });\n } else {\n const triggers = document.querySelectorAll(this.SELECTORS.triggersDesktop);\n triggers.forEach((trigger) => {\n this.$off('click.cat', trigger);\n this.$on(\n 'click.cat',\n (e) => {\n e.preventDefault();\n if (trigger.classList.contains(this.CLASSES.active)) {\n this.closeMenu();\n } else {\n this.closeMenu();\n this.openMenu(trigger);\n }\n },\n trigger\n );\n });\n }\n }\n\n closeMenu() {\n const activeTrigger = document.querySelector(this.SELECTORS.triggersDesktopActive);\n if (!activeTrigger) {\n return;\n }\n activeTrigger.classList.remove(this.CLASSES.active);\n activeTrigger.ariaExpanded = false;\n activeTrigger.nextElementSibling.classList.remove(this.CLASSES.active);\n this.EMIT(this.CUSTOM_MESSAGES.BODY.TOGGLE_OVERLAY, { overlayNoHeader: false, scroll: true });\n this.trap.deactivate();\n }\n\n openMenu(activeTrigger) {\n activeTrigger.classList.add(this.CLASSES.active);\n activeTrigger.ariaExpanded = true;\n activeTrigger.nextElementSibling.classList.add(this.CLASSES.active);\n this.EMIT(this.CUSTOM_MESSAGES.BODY.TOGGLE_OVERLAY, { overlayNoHeader: true, scroll: false });\n const targetElement = activeTrigger.parentElement.querySelector('.header-dropdown-panel');\n this.trap = focusTrap.createFocusTrap(targetElement, { clickOutsideDeactivates: true });\n this.trap.activate();\n }\n\n getHeights() {\n const homevavheight = document.querySelector(this.SELECTORS.homenav).getBoundingClientRect().height;\n const listContainerheight = document.querySelector(this.SELECTORS.listContainer).getBoundingClientRect().height;\n const topbar = document.querySelector(this.SELECTORS.topBar);\n\n if (listContainerheight < homevavheight) {\n topbar.classList.add('sticky');\n } else {\n topbar.classList.remove('sticky');\n }\n }\n\n moveTopBar() {\n if (match('lg', null)) {\n document.querySelector(this.SELECTORS.listContainer)?.appendChild(document.querySelector(this.SELECTORS.topBar));\n } else if (document.querySelector(this.SELECTORS.infoStrip)) {\n document.querySelector(this.SELECTORS.mainHeader)?.insertBefore(document.querySelector(this.SELECTORS.topBar), document.querySelector(this.SELECTORS.infoStrip).nextSibling);\n } else {\n document\n .querySelector(this.SELECTORS.mainHeader)\n ?.insertBefore(\n document.querySelector(this.SELECTORS.topBar),\n document.querySelector(this.SELECTORS.pushApp) ? document.querySelector(this.SELECTORS.pushApp).nextSibling : document.querySelector(this.SELECTORS.mainHeader).firstChild\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":""}