{"version":3,"sources":["webpack://@verndale/toolkit/./src/js/helpers/index.js","webpack://@verndale/toolkit/./src/js/modules/header/UtilityNavigation.js","webpack://@verndale/toolkit/./src/js/modules/header/PrimaryNavigation.js","webpack://@verndale/toolkit/./src/js/modules/header/HeaderSearch.js","webpack://@verndale/toolkit/./src/js/modules/header/HamburgerMenu.js","webpack://@verndale/toolkit/./src/js/modules/header/index.js"],"names":[],"mappings":"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","file":"scripts/531.a321805bbad05af7c9cd.js","sourcesContent":["import anime from 'animejs/lib/anime.es';\r\n\r\n// /**\r\n// * debounce function\r\n// * Delays the processing of the event\r\n// */\r\nexport const debounce = (callback, wait) => {\r\n let timerId;\r\n return (...args) => {\r\n clearTimeout(timerId);\r\n timerId = setTimeout(() => {\r\n callback(...args);\r\n }, wait);\r\n };\r\n};\r\n\r\n// /**\r\n// * Checks if an element is focusable\r\n// *\r\n// * @param {Object} el - HTML element you want to check if it's focusable\r\n// */\r\nexport const isFocusable = el => {\r\n if (\r\n el.tabIndex > 0 ||\r\n (el.tabIndex === 0 && el.getAttribute('tabIndex') !== null)\r\n ) {\r\n return true;\r\n }\r\n\r\n if (el.disabled) {\r\n return false;\r\n }\r\n\r\n /* eslint-disable indent */\r\n switch (el.nodeName) {\r\n case 'A':\r\n return !!el.href && el.rel !== 'ignore';\r\n case 'INPUT':\r\n return el.type !== 'hidden' && el.type !== 'file';\r\n case 'BUTTON':\r\n case 'SELECT':\r\n case 'TEXTAREA':\r\n return true;\r\n default:\r\n return false;\r\n }\r\n /* eslint-enable indent */\r\n};\r\n\r\n/**\r\n * Opens an element\r\n *\r\n * @example\r\n * import {open} from '../helpers';\r\n *\r\n * open({ element: this.el.querySelector('.element)});\r\n *\r\n * @param {Object} element - HTML element you want to target for animation\r\n * @param {Number} duration - Speed of the animation\r\n * @param {String} ease - Ease of the animation\r\n * @param {Function} onComplete - On complete function\r\n */\r\nexport const open = ({ element, duration = 400 }) => {\r\n anime({\r\n targets: element,\r\n height: [0, element.offsetHeight],\r\n easing: 'easeInOutQuad',\r\n duration\r\n });\r\n};\r\n/**\r\n * Closes an element\r\n *\r\n * @example\r\n * import {close} from '../helpers';\r\n *\r\n * close({ element: this.el.querySelector('.element)});\r\n *\r\n * @param {Object} element - HTML element you want to target for animation\r\n * @param {Number} duration - Speed of the animation\r\n * @param {String} ease - Ease of the animation\r\n * @param {Function} onComplete - On complete function\r\n */\r\nexport const close = ({ element, duration = 400 }) => {\r\n anime.set(element, { height: element.offsetHeight });\r\n anime({\r\n targets: element,\r\n height: 0,\r\n easing: 'easeInOutQuad',\r\n duration\r\n });\r\n};\r\n\r\n// /**\r\n// * Key code list object\r\n// */\r\nexport const keyCode = {\r\n TAB: 9,\r\n RETURN: 13,\r\n ESC: 27,\r\n SPACE: 32,\r\n PAGEUP: 33,\r\n PAGEDOWN: 34,\r\n END: 35,\r\n HOME: 36,\r\n LEFT: 37,\r\n UP: 38,\r\n RIGHT: 39,\r\n DOWN: 40\r\n};\r\n","import { Component } from '@verndale/core';\r\nimport axios from 'axios';\r\nimport Cookies from 'js-cookie';\r\n\r\nclass UtilityNavigation extends Component {\r\n setupDefaults() {\r\n this.cookieName = `loftware_available_languages`;\r\n this.uidCookieName = `loftware_uid`;\r\n this.partnerProgramTextCookieName = `loftware_partnerprogram_text`;\r\n\r\n this.dom = {\r\n partnerProgram: this.el.querySelector(\r\n '.utility-navigation__partner-program'\r\n ),\r\n languageSelectorSelect: this.el.querySelector(\r\n '.utility-navigation__language-selector-select select'\r\n ),\r\n languageSelectorListbox: this.el.querySelector(\r\n '.utility-navigation__language-selector-listbox'\r\n ),\r\n languageSelectorListboxTrigger: this.el.querySelector(\r\n '.utility-navigation__language-selector-trigger'\r\n ),\r\n languageSelectorList: this.el.querySelector(\r\n '.utility-navigation__language-selector-list'\r\n )\r\n };\r\n if (this.dom.partnerProgram?.dataset.endpoint?.length > 0)\r\n this.checkPartnerProgramTextCookie();\r\n if (this.dom.partnerProgram?.dataset.endpoint?.length > 0)\r\n this.getPartnerProgram();\r\n if (this.el.dataset.endpoint?.length > 0) this.getAvailableLanguages();\r\n }\r\n\r\n checkPartnerProgramTextCookie() {\r\n const { getTextFromCookie } = this.dom.partnerProgram.dataset;\r\n if (\r\n getTextFromCookie === 'false' &&\r\n Cookies.get(this.partnerProgramTextCookieName)\r\n ) {\r\n Cookies.remove(this.partnerProgramTextCookieName);\r\n }\r\n }\r\n\r\n getPartnerProgram() {\r\n const url = new URL(window.location);\r\n const uid = url.searchParams.get('uid');\r\n if (uid && uid !== Cookies.get(this.uidCookieName)) {\r\n this.uid = uid;\r\n Cookies.set(this.uidCookieName, this.uid, {\r\n expires: parseInt(this.el.dataset.cookieExpiration, 10) || 1\r\n });\r\n this.getPartnerProgramFromEndpoint();\r\n } else if (Cookies.get(this.uidCookieName)) {\r\n this.uid = Cookies.get(this.uidCookieName);\r\n\r\n const { getTextFromCookie } = this.dom.partnerProgram.dataset;\r\n if (\r\n getTextFromCookie === 'true' &&\r\n Cookies.get(this.partnerProgramTextCookieName)?.length > 0\r\n ) {\r\n this.dom.partnerProgram.innerHTML = Cookies.get(\r\n this.partnerProgramTextCookieName\r\n );\r\n } else {\r\n this.getPartnerProgramFromEndpoint();\r\n }\r\n }\r\n }\r\n\r\n async getPartnerProgramFromEndpoint() {\r\n const { endpoint } = this.dom.partnerProgram.dataset;\r\n const id = this.uid;\r\n const { data } = await axios.get(endpoint, {\r\n params: { id }\r\n });\r\n if (data.text) {\r\n this.dom.partnerProgram.innerHTML = data.text;\r\n\r\n const { getTextFromCookie } = this.dom.partnerProgram.dataset;\r\n if (getTextFromCookie === 'true') {\r\n Cookies.set(this.partnerProgramTextCookieName, data.text, {\r\n expires: parseInt(this.el.dataset.cookieExpiration, 10) || 1\r\n });\r\n }\r\n }\r\n }\r\n\r\n getAvailableLanguages() {\r\n if (Cookies.get(this.cookieName)) {\r\n this.availableLanguages = JSON.parse(Cookies.get(this.cookieName));\r\n this.availableLanguageURLs = this.availableLanguages.map(\r\n language => language.url\r\n );\r\n this.checkCurrentLanguage();\r\n if (this.dom.languageSelectorList) this.setLanguageSelectorLeftLimit();\r\n } else {\r\n this.getEndpointData();\r\n }\r\n }\r\n\r\n async getEndpointData() {\r\n const { endpoint } = this.el.dataset;\r\n const { data } = await axios.get(endpoint);\r\n this.availableLanguages = data;\r\n this.availableLanguageURLs = this.availableLanguages.map(\r\n language => language.url\r\n );\r\n\r\n this.checkCurrentLanguage();\r\n if (this.dom.languageSelectorList) this.setLanguageSelectorLeftLimit();\r\n }\r\n\r\n addListeners() {\r\n if (this.dom.languageSelectorSelect) {\r\n this.dom.languageSelectorSelect.addEventListener(\r\n 'change',\r\n this.handleLanguageSelectNative.bind(this)\r\n );\r\n } else if (this.dom.languageSelectorListboxTrigger) {\r\n this.dom.languageSelectorListboxTrigger.addEventListener(\r\n 'click',\r\n this.handleLanguageListboxTriggerClick.bind(this)\r\n );\r\n this.dom.languageSelectorListboxTrigger.addEventListener(\r\n 'keydown',\r\n this.handleLanguageListboxTriggerClick.bind(this)\r\n );\r\n\r\n this.dom.languageSelectorListbox.addEventListener(\r\n 'focusout',\r\n this.handleLanguageListboxKeydown.bind(this)\r\n );\r\n }\r\n window.addEventListener('resize', this.handleResize.bind(this));\r\n }\r\n\r\n buildSelectMarkup() {\r\n this.availableLanguages.forEach(language => {\r\n const option = document.createElement('option');\r\n const url = new URL(window.location.href);\r\n if (this.availableLanguageURLs.includes(url.host.split('.')[0])) {\r\n const link = `${url.protocol}//${\r\n language.url.length > 0\r\n ? language.url.concat(`${url.port ? `:${url.port}` : ''}`)\r\n : url.host\r\n }${url.pathname}${url.search}`;\r\n option.value = link;\r\n } else {\r\n const link = `${url.protocol}//${\r\n language.url.length > 0\r\n ? language.url.concat(`${url.port ? `:${url.port}` : ''}`)\r\n : url.host\r\n }${url.pathname}${url.search}`;\r\n option.value = link;\r\n }\r\n option.textContent = language.name;\r\n this.dom.languageSelectorSelect.appendChild(option);\r\n });\r\n }\r\n\r\n buildListMarkup() {\r\n this.availableLanguages.forEach(language => {\r\n const li = document.createElement('li');\r\n const a = document.createElement('a');\r\n const url = new URL(window.location.href);\r\n li.classList.add('utility-navigation__language-selector-list-item');\r\n a.classList.add('utility-navigation__language-selector-list-item-link');\r\n a.setAttribute('role', 'option');\r\n if (this.availableLanguageURLs.includes(url.host)) {\r\n const link = `${url.protocol}//${\r\n language.url.length > 0\r\n ? language.url.concat(`${url.port ? `:${url.port}` : ''}`)\r\n : url.host\r\n }${url.pathname}${url.search}`;\r\n a.setAttribute('href', link);\r\n } else {\r\n const link = `${url.protocol}//${\r\n language.url.length > 0\r\n ? language.url.concat(`${url.port ? `:${url.port}` : ''}`)\r\n : url.host\r\n }${url.pathname}${url.search}`;\r\n a.setAttribute('href', link);\r\n }\r\n a.textContent = language.name;\r\n li.appendChild(a);\r\n\r\n this.dom.languageSelectorList.appendChild(li);\r\n });\r\n }\r\n\r\n checkCurrentLanguage() {\r\n if (this.dom.languageSelectorSelect) {\r\n this.buildSelectMarkup();\r\n let optionMatchingURL = [...this.dom.languageSelectorSelect.options].find(\r\n option => {\r\n const url = new URL(window.location.href);\r\n const optionURL = new URL(`${option.value}`);\r\n\r\n if (url.href === optionURL.href) {\r\n return option;\r\n }\r\n return null;\r\n }\r\n );\r\n if (!optionMatchingURL) {\r\n const el = [...this.dom.languageSelectorSelect.options][0];\r\n optionMatchingURL = el;\r\n }\r\n this.dom.languageSelectorSelect.value = optionMatchingURL.value;\r\n } else {\r\n this.buildListMarkup();\r\n const selectorLinks = this.dom.languageSelectorList.querySelectorAll('a');\r\n\r\n let linkMatchingURL = [...selectorLinks].find(link => {\r\n const url = new URL(window.location.href);\r\n const linkURL = new URL(link.href);\r\n if (url.href === linkURL.href) {\r\n return link;\r\n }\r\n return null;\r\n });\r\n\r\n if (!linkMatchingURL) {\r\n const el = [...selectorLinks][0];\r\n linkMatchingURL = el;\r\n }\r\n\r\n this.dom.languageSelectorList\r\n .querySelectorAll('li')\r\n .forEach(option => option.classList.remove('option-selected'));\r\n\r\n selectorLinks.forEach(option =>\r\n option.setAttribute('aria-selected', 'false')\r\n );\r\n this.dom.languageSelectorListboxTrigger.querySelector(\r\n '.utility-navigation__language-selector-label'\r\n ).textContent = linkMatchingURL.textContent;\r\n linkMatchingURL.parentNode.classList.add('option-selected');\r\n linkMatchingURL.setAttribute('aria-selected', 'true');\r\n this.dom.languageSelectorList.prepend(linkMatchingURL.parentNode);\r\n this.dom.languageSelectorListboxTrigger.setAttribute(\r\n 'active-descendant',\r\n linkMatchingURL.textContent\r\n );\r\n }\r\n }\r\n\r\n setLanguageSelectorLeftLimit() {\r\n if (this.dom.languageSelectorList) {\r\n const utilityNavItems = this.el.querySelectorAll(\r\n '.utility-navigation__items > li'\r\n );\r\n const secondToLast = [...utilityNavItems][utilityNavItems.length - 2];\r\n if (secondToLast)\r\n this.dom.languageSelectorList.style.left = `${secondToLast.offsetLeft}px`;\r\n else\r\n this.dom.languageSelectorList.style.left = `${\r\n this.dom.languageSelectorListboxTrigger.offsetLeft -\r\n this.dom.languageSelectorListbox.offsetWidth * 2\r\n }px`;\r\n }\r\n }\r\n\r\n closeListbox() {\r\n this.dom.languageSelectorListbox.classList.remove(\r\n 'utility-navigation__language-selector-listbox--is-open'\r\n );\r\n }\r\n\r\n handleResize() {\r\n this.setLanguageSelectorLeftLimit();\r\n }\r\n\r\n handleLanguageListboxKeydown(e) {\r\n const { relatedTarget } = e;\r\n if (!this.dom.languageSelectorListbox.contains(relatedTarget))\r\n this.closeListbox();\r\n }\r\n\r\n handleLanguageListboxTriggerClick(e) {\r\n if (e.type === 'click' || e.key === 'Enter') {\r\n this.dom.languageSelectorListbox.classList.toggle(\r\n 'utility-navigation__language-selector-listbox--is-open'\r\n );\r\n }\r\n }\r\n\r\n handleLanguageSelectNative(e) {\r\n const url = e.target.value;\r\n window.location.href = url;\r\n }\r\n}\r\n\r\nexport default UtilityNavigation;\r\n","import { Component } from '@verndale/core';\r\nimport { debounce, keyCode } from '../../helpers';\r\n\r\nclass PrimaryNavigation extends Component {\r\n setupDefaults() {\r\n this.dom = {\r\n megamenus: this.el.querySelectorAll('.primary-navigation__megamenu'),\r\n megamenuTabs: this.el.querySelectorAll('.megamenu__item'),\r\n megamenuTabPanels: this.el.querySelectorAll(\r\n '.primary-navigation__megamenu-cards:not(.primary-navigation__megamenu-cards--default)'\r\n ),\r\n megamenuDefaultTabPanels: this.el.querySelectorAll(\r\n '.primary-navigation__megamenu-cards.primary-navigation__megamenu-cards--default'\r\n ),\r\n megamenuRightAreas: this.el.querySelectorAll(\r\n '.primary-navigation__megamenu-right'\r\n ),\r\n megamenuTriggers: this.el.querySelectorAll(\r\n '.primary-navigation__item[aria-haspopup] .primary-navigation__link'\r\n )\r\n };\r\n\r\n this.dom.megamenuTabs = Array.from(this.dom.megamenuTabs).filter(item => \r\n !item.querySelector('.megamenu__item-linked')\r\n );\r\n\r\n this.isMobile = window.matchMedia('(max-width: 1280px)').matches;\r\n }\r\n\r\n addListeners() {\r\n this.dom.megamenuTriggers.forEach(trigger => {\r\n trigger.addEventListener(\r\n 'mouseenter',\r\n this.handleMegamenuOpen.bind(this)\r\n );\r\n trigger.parentNode.addEventListener(\r\n 'mouseleave',\r\n this.handleMegamenuClose.bind(this)\r\n );\r\n trigger.addEventListener('focus', this.handleMegamenuOpen.bind(this));\r\n trigger.parentNode.addEventListener(\r\n 'keydown',\r\n this.handleMegamenuKeydown.bind(this)\r\n );\r\n });\r\n\r\n this.dom.megamenuTabs.forEach(tab => {\r\n tab.addEventListener('mouseenter', this.handleTabPanelOpen.bind(this));\r\n tab.addEventListener('mouseleave', this.handleTabPanelClose.bind(this));\r\n tab\r\n .querySelector('.megamenu__item-link')\r\n .addEventListener('focus', this.handleTabPanelOpen.bind(this));\r\n });\r\n\r\n this.dom.megamenuRightAreas.forEach(el => {\r\n el.addEventListener('mouseleave', this.handleRightPanelLeave.bind(this));\r\n });\r\n\r\n window.addEventListener('resize', debounce(this.handleResize.bind(this)));\r\n }\r\n\r\n deactivateTabs() {\r\n this.dom.megamenuTabs.forEach(el => {\r\n el.querySelector('.megamenu__item-link').setAttribute(\r\n 'aria-selected',\r\n 'false'\r\n );\r\n });\r\n this.dom.megamenuTabPanels.forEach(el => {\r\n el.style.display = 'none';\r\n });\r\n this.dom.megamenuDefaultTabPanels.forEach(el => {\r\n el.style.opacity = 0;\r\n el.style.display = 'flex';\r\n\r\n requestAnimationFrame(() => {\r\n requestAnimationFrame(() => {\r\n el.style.opacity = 1;\r\n });\r\n });\r\n });\r\n }\r\n\r\n closeMegaMenus() {\r\n document\r\n .querySelectorAll('.primary-navigation__item--is-open')\r\n .forEach(opened => {\r\n opened.classList.remove('primary-navigation__item--is-open');\r\n });\r\n }\r\n\r\n handleRightPanelLeave() {\r\n const isOnMegamenuLink = [...this.el.querySelectorAll(':hover')].find(el =>\r\n el.classList.contains('megamenu__item-link')\r\n );\r\n if (!isOnMegamenuLink) {\r\n this.deactivateTabs();\r\n }\r\n }\r\n\r\n handleMegamenuOpen(e) {\r\n this.closeMegaMenus();\r\n e.target.parentNode.classList.add('primary-navigation__item--is-open');\r\n }\r\n\r\n handleMegamenuClose(e) {\r\n const isOnTabPanel = [...this.el.querySelectorAll(':hover')].find(el =>\r\n el.classList.contains('primary-navigation__megamenu')\r\n );\r\n if (!isOnTabPanel) {\r\n e.target.classList.remove('primary-navigation__item--is-open');\r\n this.deactivateTabs();\r\n }\r\n }\r\n\r\n handleTabPanelClose() {\r\n const isOnTabPanel = [...this.el.querySelectorAll(':hover')].find(el =>\r\n el.classList.contains('primary-navigation__megamenu-right')\r\n );\r\n if (!isOnTabPanel) {\r\n this.deactivateTabs();\r\n }\r\n }\r\n\r\n handleTabPanelOpen(e) {\r\n let tab;\r\n if (e.type === 'focus') {\r\n tab = e.target;\r\n } else {\r\n tab = e.target.querySelector('.megamenu__item-link');\r\n }\r\n const controls = tab.getAttribute('aria-controls');\r\n\r\n this.deactivateTabs();\r\n this.dom.megamenuDefaultTabPanels.forEach(el => {\r\n el.style.display = 'none';\r\n });\r\n tab.setAttribute('aria-selected', 'true');\r\n\r\n const panel = [...this.dom.megamenuTabPanels].find(\r\n el => el.id === controls\r\n );\r\n if (panel) {\r\n panel.style.opacity = 0;\r\n panel.style.display = 'flex';\r\n\r\n requestAnimationFrame(() => {\r\n requestAnimationFrame(() => {\r\n panel.style.opacity = 1;\r\n });\r\n });\r\n }\r\n }\r\n\r\n handleResize() {\r\n if (this.isMobile && !window.matchMedia('(max-width: 1280px)').matches) {\r\n this.isMobile = false;\r\n } else if (\r\n !this.isMobile &&\r\n window.matchMedia('(max-width: 1280px)').matches\r\n ) {\r\n this.isMobile = true;\r\n }\r\n }\r\n\r\n handleMegamenuKeydown(e) {\r\n const { activeElement } = document;\r\n const leftMenu = e.currentTarget.querySelector(\r\n '.primary-navigation__megamenu-left'\r\n );\r\n const leftMenuLinks = leftMenu.querySelectorAll('a');\r\n switch (e.keyCode) {\r\n case keyCode.TAB:\r\n this.handleMegamenuClose(e);\r\n break;\r\n case keyCode.UP:\r\n e.preventDefault();\r\n if (\r\n (activeElement.classList.contains('primary-navigation__link') ||\r\n [...leftMenuLinks].includes(activeElement)) &&\r\n leftMenuLinks.length > 0\r\n ) {\r\n this.deactivateTabs();\r\n this.focusLinksOnArrayPrev(leftMenuLinks, activeElement);\r\n } else if (\r\n activeElement.closest('.primary-navigation__megamenu-cards')\r\n ) {\r\n const parent = activeElement.closest(\r\n '.primary-navigation__megamenu-cards'\r\n );\r\n const links = parent.querySelectorAll('a');\r\n this.focusLinksOnArrayPrev(links, activeElement);\r\n }\r\n break;\r\n case keyCode.DOWN:\r\n e.preventDefault();\r\n if (\r\n (activeElement.classList.contains('primary-navigation__link') ||\r\n [...leftMenuLinks].includes(activeElement)) &&\r\n leftMenuLinks.length > 0\r\n ) {\r\n this.deactivateTabs();\r\n this.focusLinksOnArrayNext(leftMenuLinks, activeElement);\r\n } else if (\r\n activeElement.closest('.primary-navigation__megamenu-cards')\r\n ) {\r\n const parent = activeElement.closest(\r\n '.primary-navigation__megamenu-cards'\r\n );\r\n const links = parent.querySelectorAll('a');\r\n this.focusLinksOnArrayNext(links, activeElement);\r\n }\r\n break;\r\n case keyCode.RIGHT:\r\n e.preventDefault();\r\n if (activeElement.classList.contains('megamenu__item-link')) {\r\n const controls = activeElement.getAttribute('aria-controls');\r\n if (controls) {\r\n const panel = [...this.dom.megamenuTabPanels].find(\r\n el => el.id === controls\r\n );\r\n const panelLinks = panel.querySelectorAll('a');\r\n panelLinks[0].focus();\r\n }\r\n } else {\r\n const controls = activeElement.getAttribute('aria-controls');\r\n if (controls) {\r\n const panel = [...this.dom.megamenuDefaultTabPanels].find(\r\n el => el.id === controls\r\n );\r\n const panelLinks = panel.querySelectorAll('a');\r\n panelLinks[0].focus();\r\n }\r\n }\r\n break;\r\n default:\r\n }\r\n }\r\n\r\n focusLinksOnArrayNext(links, active) {\r\n const index = [...links].findIndex(el => el === active);\r\n if (index === -1) links[0].focus();\r\n else if (index >= 0 && index < links.length - 1) links[index + 1].focus();\r\n else links[0].focus();\r\n }\r\n\r\n focusLinksOnArrayPrev(links, active) {\r\n const index = [...links].findIndex(el => el === active);\r\n if (index === -1) links[0].focus();\r\n else if (index > 0 && index < links.length) links[index - 1].focus();\r\n else links[links.length - 1].focus();\r\n }\r\n}\r\n\r\nexport default PrimaryNavigation;\r\n","import { Component } from '@verndale/core';\r\n\r\nclass HeaderSearch extends Component {\r\n setupDefaults() {\r\n this.dom = {\r\n trigger: this.el.querySelector('.header-search__trigger'),\r\n form: this.el.querySelector('.header-search__form'),\r\n input: this.el.querySelector('.header-search__input'),\r\n clearBtn: this.el.querySelector('.header-search__clear-btn'),\r\n searchBtn: this.el.querySelector('.header-search__search-btn')\r\n };\r\n\r\n this.placeholder = this.dom.input.getAttribute('placeholder');\r\n }\r\n\r\n addListeners() {\r\n this.dom.clearBtn.addEventListener(\r\n 'click',\r\n this.handleClearClick.bind(this)\r\n );\r\n this.dom.input.addEventListener('input', this.handleInputChange.bind(this));\r\n this.dom.input.addEventListener('focus', this.handleInputFocus.bind(this));\r\n this.dom.input.addEventListener('blur', this.handleInputBlur.bind(this));\r\n document\r\n .querySelector('body')\r\n .addEventListener('click', this.handleClickOutside.bind(this));\r\n }\r\n\r\n setFormLeftLimit(limit) {\r\n this.dom.form.style.left = `${limit}px`;\r\n }\r\n\r\n toggleSearchBar() {\r\n this.el.classList.toggle('header-search--is-open');\r\n }\r\n\r\n closeSearchBar() {\r\n this.el.classList.remove('header-search--is-open');\r\n }\r\n\r\n handleClearClick(e) {\r\n e.preventDefault();\r\n this.dom.input.value = '';\r\n this.dom.clearBtn.style.display = 'none';\r\n this.dom.searchBtn.disabled = true;\r\n }\r\n\r\n handleInputChange(e) {\r\n if (e.target.value.length > 0) {\r\n this.dom.clearBtn.style.display = 'block';\r\n this.dom.searchBtn.disabled = false;\r\n } else {\r\n this.dom.clearBtn.style.display = 'none';\r\n this.dom.searchBtn.true = false;\r\n }\r\n }\r\n\r\n handleInputFocus() {\r\n this.dom.input.placeholder = '';\r\n }\r\n\r\n handleInputBlur() {\r\n this.dom.input.placeholder = this.placeholder;\r\n }\r\n\r\n handleClickOutside(e) {\r\n if (this.el.contains(e.target)) {\r\n return;\r\n }\r\n\r\n this.el.classList.remove('header-search--is-open');\r\n }\r\n}\r\n\r\nexport default HeaderSearch;\r\n","import { Component } from '@verndale/core';\r\n\r\nclass HamburgerMenu extends Component {\r\n setupDefaults() {\r\n this.dom = {\r\n megamenuTriggers: this.el.querySelectorAll(\r\n '.hamburger-menu__primary-link'\r\n ),\r\n megamenuPanels: this.el.querySelectorAll(\r\n '.hamburger-menu__megamenu-panel'\r\n ),\r\n megamenuCardsTriggers: this.el.querySelectorAll(\r\n '.hamburger-menu__megamenu-item-link'\r\n ),\r\n megamenuCardsPanels: this.el.querySelectorAll(\r\n '.hamburger-menu__megamenu-item-cards-panel'\r\n ),\r\n panelBackButtons: this.el.querySelectorAll(\r\n '.hamburger-menu__megamenu-panel-back'\r\n ),\r\n cardsBackButtons: this.el.querySelectorAll(\r\n '.hamburger-menu__megamenu-cards-back'\r\n )\r\n };\r\n this.isMobile = window.matchMedia('(max-width: 1280px)').matches;\r\n }\r\n\r\n addListeners() {\r\n this.dom.megamenuTriggers.forEach(trigger => {\r\n trigger.addEventListener(\r\n 'click',\r\n this.handleMegamenuPanelOpen.bind(this)\r\n );\r\n });\r\n this.dom.megamenuCardsTriggers.forEach(trigger => {\r\n trigger.addEventListener(\r\n 'click',\r\n this.handleMegamenuCardsOpen.bind(this)\r\n );\r\n });\r\n\r\n this.dom.panelBackButtons.forEach(trigger => {\r\n trigger.addEventListener(\r\n 'click',\r\n this.handleMegamenuPanelClose.bind(this)\r\n );\r\n });\r\n\r\n this.dom.cardsBackButtons.forEach(trigger => {\r\n trigger.addEventListener(\r\n 'click',\r\n this.handleMegamenuCardsClose.bind(this)\r\n );\r\n });\r\n\r\n window.addEventListener('resize', this.handleResize.bind(this));\r\n }\r\n\r\n toggleMenu() {\r\n if (this.el.classList.contains('hamburger-menu--is-open')) {\r\n this.handleMegamenuPanelClose();\r\n this.handleMegamenuCardsClose();\r\n }\r\n this.el.classList.toggle('hamburger-menu--is-open');\r\n document.body.classList.toggle('hamburger-menu--is-open');\r\n }\r\n\r\n closeMenu() {\r\n this.handleMegamenuPanelClose();\r\n this.handleMegamenuCardsClose();\r\n this.el.classList.remove('hamburger-menu--is-open');\r\n }\r\n\r\n handleMegamenuPanelOpen(e) {\r\n e.preventDefault();\r\n const trigger = e.target;\r\n const controls = trigger.getAttribute('aria-controls');\r\n\r\n document\r\n .querySelectorAll('.hamburger-menu__megamenu-panel--is-open')\r\n .forEach(opened => {\r\n opened.classList.remove('hamburger-menu__megamenu-panel--is-open');\r\n });\r\n\r\n const panel = [...this.dom.megamenuPanels].find(el => el.id === controls);\r\n if (panel) {\r\n panel.classList.add('hamburger-menu__megamenu-panel--is-open');\r\n this.el.classList.add('hamburger-menu__megamenu-panel--is-open');\r\n }\r\n }\r\n\r\n handleMegamenuCardsOpen(e) {\r\n e.preventDefault();\r\n const trigger = e.target;\r\n const controls = trigger.getAttribute('aria-controls');\r\n\r\n document\r\n .querySelectorAll('.hamburger-menu__megamenu-item-cards-panel--is-open')\r\n .forEach(opened => {\r\n opened.classList.remove(\r\n 'hamburger-menu__megamenu-item-cards-panel--is-open'\r\n );\r\n });\r\n\r\n const panel = [...this.dom.megamenuCardsPanels].find(\r\n el => el.id === controls\r\n );\r\n if (panel)\r\n panel.classList.add('hamburger-menu__megamenu-item-cards-panel--is-open');\r\n this.el.classList.add('hamburger-menu__megamenu-item-cards-panel--is-open');\r\n }\r\n\r\n handleMegamenuPanelClose() {\r\n document\r\n .querySelectorAll('.hamburger-menu__megamenu-panel--is-open')\r\n .forEach(opened => {\r\n opened.classList.remove('hamburger-menu__megamenu-panel--is-open');\r\n });\r\n }\r\n\r\n handleMegamenuCardsClose() {\r\n document\r\n .querySelectorAll('.hamburger-menu__megamenu-item-cards-panel--is-open')\r\n .forEach(opened => {\r\n opened.classList.remove(\r\n 'hamburger-menu__megamenu-item-cards-panel--is-open'\r\n );\r\n });\r\n }\r\n\r\n handleResize() {\r\n if (this.isMobile && !window.matchMedia('(max-width: 1280px)').matches) {\r\n this.handleMegamenuPanelClose();\r\n this.handleMegamenuCardsClose();\r\n this.isMobile = false;\r\n }\r\n }\r\n}\r\n\r\nexport default HamburgerMenu;\r\n","import { Component } from '@verndale/core';\r\nimport anime from 'animejs/lib/anime.es';\r\nimport UtilityNavigation from './UtilityNavigation';\r\nimport PrimaryNavigation from './PrimaryNavigation';\r\nimport HeaderSearch from './HeaderSearch';\r\nimport HamburgerMenu from './HamburgerMenu';\r\n\r\nclass Header extends Component {\r\n setupDefaults() {\r\n this.dom = {\r\n utilityNavigations: this.el.querySelectorAll('.utility-navigation'),\r\n primaryNavigation: this.el.querySelector('.primary-navigation'),\r\n headerSearch: this.el.querySelector('.header-search'),\r\n headerInner: this.el.querySelector('.header__inner'),\r\n hamburgerMenu: this.el.querySelector('.hamburger-menu'),\r\n hamburgerMenuToggle: this.el.querySelector(\r\n '.header__hamburger-menu-toggle'\r\n ),\r\n headerSearchTrigger: this.el.querySelector('.header-search__trigger')\r\n };\r\n\r\n this.utilityNavigations = [];\r\n [...this.dom.utilityNavigations].forEach(utilityNavigation =>\r\n this.utilityNavigations.push(new UtilityNavigation(utilityNavigation))\r\n );\r\n this.primaryNavigation = new PrimaryNavigation(this.el);\r\n this.headerSearch = new HeaderSearch(this.dom.headerSearch);\r\n this.hamburgerMenu = new HamburgerMenu(this.dom.hamburgerMenu);\r\n\r\n this.isMobile = window.matchMedia('(max-width: 1280px)').matches;\r\n this.setSearchBarLimits();\r\n this.getHeaderInnerPrevSiblings();\r\n }\r\n\r\n getHeaderInnerPrevSiblings() {\r\n this.prevHeaderInnerSiblings = [];\r\n let nextSibling = this.dom.headerInner.parentElement.previousElementSibling;\r\n while (nextSibling) {\r\n if (!nextSibling.classList.contains('utility-navigation')) {\r\n this.prevHeaderInnerSiblings.push(nextSibling);\r\n }\r\n\r\n nextSibling = nextSibling.previousElementSibling;\r\n }\r\n }\r\n\r\n addListeners() {\r\n window.addEventListener('resize', this.handleResize.bind(this));\r\n this.dom.hamburgerMenuToggle.addEventListener(\r\n 'click',\r\n this.handleHamburgerToggleClick.bind(this)\r\n );\r\n this.dom.headerSearchTrigger.addEventListener(\r\n 'click',\r\n this.handleHeaderSearchTriggerClick.bind(this)\r\n );\r\n }\r\n\r\n setSearchBarLimits() {\r\n if (!this.isMobile) {\r\n const navItems = this.dom.primaryNavigation.querySelectorAll(\r\n '.primary-navigation__item'\r\n );\r\n\r\n const secondToLast = [...navItems][navItems.length - 2];\r\n if (secondToLast)\r\n this.headerSearch.setFormLeftLimit(secondToLast.offsetLeft);\r\n else\r\n this.headerSearch.setFormLeftLimit(\r\n this.dom.headerSearch.offsetLeft - 350\r\n );\r\n } else {\r\n this.headerSearch.setFormLeftLimit(0);\r\n }\r\n }\r\n\r\n handleHamburgerToggleClick() {\r\n if (!this.el.classList.contains('hamburguer-menu--is-open')) {\r\n this.currentScroll = window.scrollY;\r\n\r\n this.prevHeaderInnerSiblings.forEach(sibling => {\r\n sibling.initialHeight = sibling.getBoundingClientRect().height;\r\n sibling.style.height = `${sibling.initialHeight}px`;\r\n requestAnimationFrame(() => {\r\n anime({\r\n targets: sibling,\r\n height: {\r\n value: 0,\r\n duration: 250\r\n },\r\n opacity: {\r\n value: 0,\r\n duration: 10\r\n },\r\n easing: 'linear'\r\n });\r\n });\r\n });\r\n } else {\r\n this.prevHeaderInnerSiblings.forEach(sibling => {\r\n sibling.style.display = 'block';\r\n anime({\r\n targets: sibling,\r\n height: sibling.initialHeight,\r\n opacity: {\r\n value: 1,\r\n duration: 200,\r\n delay: 100\r\n },\r\n easing: 'linear',\r\n duration: 200,\r\n begin: () => {\r\n window.scrollTo({\r\n top: this.currentScroll,\r\n behavior: 'smooth'\r\n });\r\n }\r\n });\r\n });\r\n }\r\n setTimeout(() => {\r\n this.el.classList.toggle('hamburguer-menu--is-open');\r\n this.headerSearch.closeSearchBar();\r\n this.hamburgerMenu.toggleMenu();\r\n }, 50);\r\n }\r\n\r\n handleHeaderSearchTriggerClick() {\r\n this.headerSearch.toggleSearchBar();\r\n this.el.classList.remove('hamburguer-menu--is-open');\r\n this.hamburgerMenu.closeMenu();\r\n this.primaryNavigation.closeMegaMenus();\r\n }\r\n\r\n handleResize() {\r\n this.setSearchBarLimits();\r\n if (this.isMobile && !window.matchMedia('(max-width: 1280px)').matches) {\r\n this.el.classList.remove('hamburguer-menu--is-open');\r\n this.hamburgerMenu.closeMenu();\r\n this.isMobile = false;\r\n this.prevHeaderInnerSiblings.forEach(sibling => {\r\n sibling.style.opacity = null;\r\n sibling.style.height = null;\r\n });\r\n } else if (\r\n !this.isMobile &&\r\n window.matchMedia('(max-width: 1280px)').matches\r\n ) {\r\n this.isMobile = true;\r\n }\r\n }\r\n}\r\n\r\nexport default Header;\r\n"],"sourceRoot":""}