{"version":3,"sources":["webpack://@verndale/toolkit/./src/js/modules/header.js"],"names":["Module","Component","$menuItem","$item","$clickedElement","$openElements","$openElement","$openItem","lastPageUrl","cookieName","queryString","urlParams"],"mappings":"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","file":"scripts/542.8e3b4261.js","sourcesContent":["import { Component } from '@verndale/core';\n\nclass Module extends Component {\n setupDefaults() {\n this.dom = {\n $searchInput: this.el.querySelector('.search-input'),\n $searchMenuButton: this.el.querySelector('.header__menu-search-button'),\n $clearBtn: this.el.querySelector('.search-form__clear'),\n $el: this.el,\n $menuItem: this.el.querySelectorAll('.header__megamenu-wrapper-item'),\n $mobileToggleMenuButton: this.el.querySelector('.header__mobile-menu-toggle-button'),\n $header: this.el.querySelector('.header'),\n $body: document.querySelector('body'),\n $primaryNav: this.el.querySelector('.header__primary-nav'),\n $headerWrapper: this.el.querySelector('.header__wrapper'),\n };\n\n this.el.dispatchEvent(new CustomEvent('scroll'));\n this.saveUtmParamsInCookies();\n }\n\n addListeners() {\n this.dom.$menuItem.forEach($menuItem => {\n $menuItem.addEventListener('click', this.toggleMegaMenu.bind(this));\n });\n this.dom.$mobileToggleMenuButton.addEventListener('click', this.toggleMobileMenu.bind(this));\n this.dom.$searchMenuButton.addEventListener('click', this.handleMobileSearch.bind(this));\n document.addEventListener('click', this.closeMegaMenus.bind(this));\n document.addEventListener('keyup', this.checkIfEscPress.bind(this));\n window.addEventListener('resize', this.handleResize.bind(this));\n window.addEventListener('scroll', this.handleDocumentScroll.bind(this));\n this.dom.$searchInput.addEventListener('keyup', this.handleKeyPress.bind(this));\n this.dom.$clearBtn.addEventListener('click', this.handleClickClear.bind(this));\n }\n\n handleKeyPress(e) {\n if (e.currentTarget.value !== '') {\n this.dom.$clearBtn.classList.add('search-form__clear--active');\n } else {\n this.dom.$clearBtn.classList.remove('search-form__clear--active');\n }\n this.handleUpdateResult();\n }\n\n handleClickClear() {\n this.dom.$searchInput.value = '';\n this.dom.$searchInput.focus();\n this.dom.$clearBtn.classList.remove('search-form__clear--active');\n }\n\n handleUpdateResult() {\n // Update query result\n }\n\n toggleMegaMenu(e) {\n e.stopPropagation();\n const $item = e.currentTarget;\n const $clickedElement = e.target;\n const $openElements = document.querySelectorAll(\n '.header__primary-nav-item-toggle--open'\n );\n \n if (\n $clickedElement.classList.contains('header__mega-menu') ||\n $clickedElement.closest('.header__mega-menu')\n )\n return;\n if (\n $item.classList.contains('header__primary-nav-item-toggle--open')\n ) {\n this.closeMegaMenus();\n } else {\n $openElements.forEach($openElement => {\n if ($openElement !== this) {\n $openElement.classList.remove(\n 'header__primary-nav-item-toggle--open'\n );\n $openElement\n .querySelector('.header__mega-menu')\n ?.setAttribute('aria-hidden', 'true');\n }\n });\n\n $item\n .querySelector('.header__mega-menu')\n ?.setAttribute(\n 'aria-hidden',\n $item.classList.contains('header__primary-nav-item-toggle--open')\n ? 'true'\n : 'false'\n );\n $item.classList.toggle('header__primary-nav-item-toggle--open');\n }\n\n if($item.classList.contains('header__primary-nav-item-toggle--open')) {\n this.dom.$el.classList.add('header__wrapper-menu--open');\n this.dom.$primaryNav.classList.add('header__primary-nav--open');\n } else {\n this.dom.$el.classList.remove('header__wrapper-menu--open');\n this.dom.$primaryNav.classList.remove('header__primary-nav--open');\n }\n }\n\n toggleMobileMenu() {\n this.dom.$header.classList.toggle('mobile-menu-open');\n if(this.dom.$header.classList.contains('mobile-menu-open')) {\n this.dom.$el.classList.add('header__wrapper-menu--open');\n } else {\n this.dom.$el.classList.remove('header__wrapper-menu--open');\n this.dom.$primaryNav.classList.remove('header__primary-nav--open');\n }\n }\n\n handleMobileSearch() {\n // since the search button stays in the top menu on mobile views, we need a special\n // handler to close the mobile menu when the search menu is opened\n if(this.dom.$header.classList.contains('mobile-menu-open')) {\n this.toggleMobileMenu();\n }\n }\n\n closeMegaMenus(e) {\n const $openItem = this.el.querySelector(\n '.header__primary-nav-item-toggle--open'\n );\n $openItem?.classList.remove('header__primary-nav-item-toggle--open');\n $openItem?.querySelector('.header__mega-menu')?.setAttribute('aria-hidden', 'true');\n\n if(!e) {\n this.dom.$el.classList.remove('header__wrapper-menu--open');\n this.dom.$primaryNav.classList.remove('header__primary-nav--open');\n return;\n }\n this.dom.$el.classList.remove('header__wrapper-menu--open');\n this.dom.$primaryNav.classList.remove('header__primary-nav--open');\n }\n\n handleResize() {\n this.dom.$header.classList.remove('mobile-menu-open');\n this.closeMegaMenus();\n }\n\n checkIfEscPress(e) {\n if (e.key === 'Escape') {\n this.dom.$header.classList.remove('mobile-menu-open');\n this.closeMegaMenus();\n }\n }\n\n backToTopMenu() {\n this.dom.$primaryNav.classList.remove('header__primary-nav--open');\n this.closeMegaMenus();\n }\n\n saveUtmParamsInCookies() {\n this.createCookieFromParam('utm_campaign');\n this.createCookieFromParam('utm_source');\n this.createCookieFromParam('utm_medium');\n this.createCookieFromParam('utm_content');\n\n const lastPageUrl = document.referrer;\n document.cookie=`amw_lastpagevisited=${lastPageUrl};path=/`;\n }\n\n createCookieFromParam (cookieName){\n const queryString = window.location.search;\n const urlParams = new URLSearchParams(queryString);\n // eslint-disable-next-line no-unused-expressions\n urlParams.get(cookieName)?document.cookie=`${cookieName}=${urlParams.get(cookieName)}`:null;\n }\n}\n\nexport default Module;\n"],"sourceRoot":""}