{"version":3,"sources":["webpack:///./src/js/components/dropdown.js","webpack:///./src/js/modules/header/hamburgerMenu.js","webpack:///./src/js/modules/header/megaMenuIntegratedTabs.js","webpack:///./src/js/modules/header/megaMenu.js","webpack:///./src/js/modules/header/search.js","webpack:///./src/js/modules/header/languageMenu.js","webpack:///./src/js/modules/header/stickyNavigation.js","webpack:///./src/js/modules/header/index.js"],"names":["Module","this","options","el","style","dataset","multiselect","selectedArray","buildMultiSelectDropdown","buildDropdown","document","addEventListener","handleClickOutside","bind","handleOptionSelect","dom","trigger","handleTriggerClick","handleTriggerKeydown","parentNode","hideDropdownList","list","childNodes","forEach","item","selectItem","event","callback","value","Event","createEvent","initEvent","dispatchEvent","e","wrapper","target","contains","innerHTML","getPlaceholder","option","includes","setAttribute","isDevice","getAttribute","showDropdownList","which","keyCode","activeItem","preventDefault","stopPropagation","nextElement","previousElementSibling","focusItem","focusLast","nextElementSibling","focusFirst","getElementById","checked","filter","push","element","removeAttribute","defocusItem","scrollHeight","clientHeight","scrollBottom","scrollTop","elementBottom","offsetTop","offsetHeight","firstItem","querySelector","items","querySelectorAll","length","classList","add","remove","placeholder","selectedOptionLabel","count","find","text","listId","uuidv4","createElement","insertBefore","appendChild","label","id","textContent","map","disabled","join","nextSibling","trim","parent","removeChild","destroy","setupDefaults","addListeners","Component","handleEscape","handleFocus","ignoreUtilFocusChanges","html","body","pageContainer","stickyMenu","primaryLinkContainers","primaryLinks","submenus","closeButton","drawer","primaryLinkContainersSmDevice","primaryLinksSmDevice","submenusSmDevice","triggerIconOpen","triggerIconClose","marker","menu","primaryNav","header","link","index","guid","handlePrimaryLinkSelect","handlePrimaryLinkSelectSmDevice","handleSubmenuNavigate","button","hideSubmenus","removeEventListener","currentTarget","activeSubmenu","displaySubmenu","activeSubmenuSmDevice","hideSubmenusSmDevice","displaySubmenuSmDevice","submenu","transition","width","offsetWidth","left","offsetLeft","gsap","to","height","autoAlpha","duration","closeDrawer","openDrawer","tl","timeline","window","innerHeight","scrollY","headerHeight","difference","top","opacity","onComplete","display","set","from","addEventListeners","focus","removeEventListeners","activeElement","submenuLinks","indexOf","TAB","attemptFocus","RIGHT","DOWN","focusFirstDescendant","LEFT","UP","focusLastDescendant","i","child","ESC","lastFocus","isFocusable","tabsContainer","tabs","panelsContainer","panels","videos","buildNavigation","calculateSizes","debounce","tab","handleTabClick","handleKeyDown","tabGuid","panelGuid","panel","dropdownGuid","dropdownContainer","dropdownLabel","dropdown","Dropdown","on","handleOptionChange","panelId","setValue","changePanel","key","END","HOME","currentTab","activeTab","currentPanelId","ease","Expo","easeOut","panelIframe","setTimeout","video","pause","maxHeight","menusSmDevice","primaryNavSmDevice","primaryNavLinks","secondaryNav","secondaryNavLinks","tertiaryNav","back","backBtn","toPrimaryNav","handleBackClick","handleResize","activeTertiaryNav","previousState","secNav","parentElement","activeSecondaryNav","displayTertiaryNav","terNav","integratedTabs","MegaMenuIntegratedTabs","breakpoint","matchMedia","matches","form","input","clear","submit","suggestions","initialSuggestions","loadedSuggestions","loadedSuggestionsList","endpoint","suggestionsEndpoint","language","action","handleTextInputFocus","handleTextInputBlur","checkInputValue","navigateSuggestions","handleLoadSuggestions","handleClearSearch","suggestionsOpen","easeInOut","isTabletLandscape","preventScroll","minHeight","padding","unselectSuggestions","setInitialSuggestions","Axios","url","params","q","data","suggestion","selectedSuggestion","previousOption","selectSuggestion","nextOption","isDesktop","isTablet","isMobile","currentLink","anchors","container","navContainer","prev","next","buildJumpLinks","Waypoint","offset","handler","direction","selectOption","nextLink","prevLink","refreshAll","jumpLinksList","checkScrollWidth","totalLinks","links","anchor","camelize","jumpLiks","handleJumpLinkClick","handleCheckInitialAnchor","scrollWidth","clientWidth","scrollToJumpLink","hash","location","jumpToAnchor","toggleButtons","targetId","replace","scrollTo","history","pushState","screenWidth","innerWidth","listWidth","remaining","isShortList","hamburgerMenuToggle","hamburgerMenu","hamburgerMenuToggleSmDevice","hamburgerMenuSmDevice","languageMenuToggle","languageMenu","searchToggle","headerSearch","stickySubNav","megaMenu","megaMenuIntegratedTabs","megaMenuSmDevice","HamburgerMenu","MegaMenu","HeaderSearch","LanguageMenu","StickyNavigation","handleScroll","toggleSearch","toggleLanguageMenu","toggleHamburgerMenu","toggleHamburgerMenuSmDevice","toggleDrawer","hero","pageContentScroll"],"mappings":"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","file":"33.2c4ce6b1ae63096f9ecc.js","sourcesContent":["import { Component } from '@verndale/core';\r\nimport { isDevice } from '../helpers';\r\nimport { v4 as uuidv4 } from 'uuid';\r\n\r\nclass Module extends Component {\r\n setupDefaults() {\r\n this.options = [...this.el];\r\n this.style = this.el.dataset.style;\r\n this.multiselect = this.el.dataset.multiselect;\r\n this.selectedArray = [];\r\n\r\n if (!this.multiselect) this.buildDropdown();\r\n else this.buildMultiSelectDropdown();\r\n }\r\n\r\n addListeners() {\r\n document.addEventListener('click', this.handleClickOutside.bind(this));\r\n this.el.addEventListener('change', this.handleOptionSelect.bind(this));\r\n this.dom.trigger.addEventListener(\r\n 'click',\r\n this.handleTriggerClick.bind(this)\r\n );\r\n this.dom.trigger.addEventListener(\r\n 'keydown',\r\n this.handleTriggerKeydown.bind(this)\r\n );\r\n this.dom.trigger.parentNode.addEventListener(\r\n 'blur',\r\n this.hideDropdownList.bind(this)\r\n );\r\n this.dom.list.childNodes.forEach(item => {\r\n item.addEventListener('click', () => this.selectItem(item));\r\n });\r\n }\r\n\r\n on(event, callback) {\r\n this.el.addEventListener(event, callback);\r\n }\r\n\r\n setValue(value) {\r\n let event;\r\n\r\n if (typeof Event === 'function') {\r\n event = new Event('change');\r\n } else {\r\n event = document.createEvent('Event');\r\n event.initEvent('change', true, true);\r\n }\r\n\r\n this.el.value = value;\r\n this.el.dispatchEvent(event);\r\n }\r\n\r\n getValue() {\r\n return this.el.value;\r\n }\r\n\r\n handleClickOutside(e) {\r\n if (this.dom.wrapper !== e.target && !this.dom.wrapper.contains(e.target)) {\r\n this.hideDropdownList();\r\n }\r\n }\r\n\r\n handleOptionSelect() {\r\n let event;\r\n\r\n if (typeof Event === 'function') {\r\n event = new Event('option');\r\n } else {\r\n event = document.createEvent('Event');\r\n event.initEvent('option', true, true);\r\n }\r\n\r\n if (this.multiselect) {\r\n this.dom.trigger.innerHTML = this.getPlaceholder(this.selectedArray);\r\n this.options.forEach(option => {\r\n if (this.selectedArray.includes(option.value)) {\r\n option.setAttribute('aria-selected', true);\r\n } else {\r\n option.setAttribute('aria-selected', false);\r\n }\r\n });\r\n\r\n\r\n this.dom.list.childNodes.forEach(item => {\r\n if (item.dataset) {\r\n if (this.selectedArray.includes(item.dataset.value)) {\r\n item.setAttribute('aria-selected', true);\r\n } else {\r\n item.setAttribute('aria-selected', false);\r\n }\r\n }\r\n });\r\n } else {\r\n this.dom.trigger.innerHTML = this.getPlaceholder(this.el.value);\r\n\r\n this.options.forEach(option => {\r\n if (option.value === this.el.value) {\r\n option.setAttribute('aria-selected', true);\r\n } else {\r\n option.setAttribute('aria-selected', false);\r\n }\r\n });\r\n\r\n this.dom.list.childNodes.forEach(item => {\r\n if (item.dataset.value === this.el.value) {\r\n item.setAttribute('aria-selected', true);\r\n } else {\r\n item.setAttribute('aria-selected', false);\r\n }\r\n });\r\n }\r\n\r\n this.el.dispatchEvent(event);\r\n }\r\n\r\n handleTriggerClick() {\r\n if (isDevice()) {\r\n //return;\r\n }\r\n\r\n if (!this.dom.trigger.getAttribute('aria-expanded')) {\r\n this.showDropdownList();\r\n } else {\r\n this.hideDropdownList();\r\n }\r\n }\r\n\r\n handleTriggerKeydown(e) {\r\n if (isDevice()) return;\r\n\r\n const key = e.which || e.keyCode;\r\n\r\n switch (key) {\r\n case 13: // ENTER\r\n if (this.dom.trigger.getAttribute('aria-expanded')) {\r\n if (this.activeItem) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.selectItem(this.activeItem);\r\n }\r\n }\r\n break;\r\n case 38: // UP\r\n e.preventDefault();\r\n this.showDropdownList();\r\n\r\n if (this.activeItem) {\r\n const nextElement = this.activeItem.previousElementSibling;\r\n\r\n if (nextElement) {\r\n this.focusItem(nextElement);\r\n } else {\r\n this.focusLast();\r\n }\r\n } else {\r\n this.focusLast();\r\n }\r\n\r\n break;\r\n case 40: // DOWN\r\n e.preventDefault();\r\n this.showDropdownList();\r\n\r\n if (this.activeItem) {\r\n const nextElement = this.activeItem.nextElementSibling;\r\n\r\n if (nextElement) {\r\n this.focusItem(nextElement);\r\n } else {\r\n this.focusFirst();\r\n }\r\n } else {\r\n this.focusFirst();\r\n }\r\n\r\n break;\r\n case 36:\r\n e.preventDefault();\r\n this.focusFirst();\r\n break;\r\n case 35:\r\n e.preventDefault();\r\n this.focusLast();\r\n break;\r\n }\r\n }\r\n\r\n selectItem(item) {\r\n this.el.value = item.dataset.value;\r\n if (this.multiselect) {\r\n if (this.selectedArray.includes(this.el.value)) {\r\n if (this.el.value === 'All') {\r\n\r\n this.selectedArray = [];\r\n this.options.forEach(option => {\r\n if (option.value) {\r\n document.getElementById(option.value).checked = false;\r\n }\r\n });\r\n } else {\r\n if (this.el.value !== 'All') {\r\n document.getElementById('All').checked = false;\r\n this.selectedArray = this.selectedArray.filter(item => item !== 'All');\r\n }\r\n\r\n }\r\n document.getElementById(this.el.value).checked = false;\r\n this.selectedArray = this.selectedArray.filter(item => item !== this.el.value);\r\n } else {\r\n if (this.el.value === 'All') {\r\n this.selectedArray = [];\r\n this.options.forEach(option => {\r\n if (option.value) {\r\n this.selectedArray.push(option.value);\r\n document.getElementById(option.value).checked = true;\r\n }\r\n });\r\n } else {\r\n document.getElementById(this.el.value).checked = true;\r\n this.selectedArray.push(item.dataset.value);\r\n }\r\n }\r\n this.handleOptionSelect()\r\n } else {\r\n this.handleOptionSelect()\r\n this.hideDropdownList();\r\n }\r\n }\r\n\r\n defocusItem(element) {\r\n if (!element) return;\r\n element.removeAttribute('aria-selected');\r\n }\r\n\r\n focusItem(element) {\r\n this.defocusItem(this.activeItem);\r\n element.setAttribute('aria-selected', 'true');\r\n this.activeItem = element;\r\n\r\n if (this.dom.list.scrollHeight > this.dom.list.clientHeight) {\r\n const scrollBottom = this.dom.list.clientHeight + this.dom.list.scrollTop;\r\n const elementBottom = element.offsetTop + element.offsetHeight;\r\n if (elementBottom > scrollBottom) {\r\n this.dom.list.scrollTop = elementBottom - this.dom.list.clientHeight;\r\n } else if (element.offsetTop < this.dom.list.scrollTop) {\r\n this.dom.list.scrollTop = element.offsetTop;\r\n }\r\n }\r\n }\r\n\r\n focusFirst() {\r\n const firstItem = this.dom.list.querySelector('[role=\"option\"]');\r\n if (firstItem) {\r\n this.focusItem(firstItem);\r\n }\r\n }\r\n\r\n focusLast() {\r\n const items = this.dom.list.querySelectorAll('[role=\"option\"]');\r\n\r\n if (items.length) {\r\n this.focusItem(items[items.length - 1]);\r\n }\r\n }\r\n\r\n showDropdownList() {\r\n this.dom.wrapper.classList.add('is-focused');\r\n this.dom.trigger.setAttribute('aria-expanded', true);\r\n }\r\n\r\n hideDropdownList() {\r\n this.dom.wrapper.classList.remove('is-focused');\r\n this.dom.trigger.removeAttribute('aria-expanded');\r\n this.defocusItem(this.activeItem);\r\n this.activeItem = null;\r\n }\r\n\r\n getPlaceholder(value) {\r\n const placeholder = this.el.dataset.placeholder;\r\n\r\n if (this.multiselect) {\r\n let selectedOptionLabel, count = value.length;\r\n if (value.length > 0) {\r\n if (value.includes('All')) count = count - 1;\r\n if (value.includes('')) count = count - 1;\r\n selectedOptionLabel = `Selected(${count})`;\r\n } else {\r\n selectedOptionLabel = this.options.find(\r\n option => option.value === ''\r\n ).text;\r\n }\r\n if (placeholder) {\r\n return `${\r\n selectedOptionLabel\r\n ? `<span>${placeholder}:</span>`\r\n : `<span>${placeholder}</span>`\r\n } ${selectedOptionLabel}`;\r\n }\r\n return selectedOptionLabel;\r\n }\r\n\r\n const selectedOptionLabel = this.options.find(\r\n option => option.value === value\r\n ).text;\r\n if (placeholder) {\r\n return `${\r\n selectedOptionLabel\r\n ? `<span>${placeholder}:</span>`\r\n : `<span>${placeholder}</span>`\r\n } ${selectedOptionLabel}`;\r\n }\r\n return selectedOptionLabel;\r\n\r\n }\r\n\r\n buildDropdown() {\r\n const listId = uuidv4();\r\n this.dom.wrapper = document.createElement('div');\r\n this.el.setAttribute('aria-hidden', true);\r\n this.el.setAttribute('tabindex', '-1');\r\n this.el.parentNode.insertBefore(this.dom.wrapper, this.el);\r\n this.dom.wrapper.classList.add('dropdown');\r\n\r\n if (this.style) {\r\n this.dom.wrapper.classList.add(`dropdown--${this.style}`);\r\n }\r\n\r\n if (isDevice()) {\r\n this.dom.wrapper.classList.add('dropdown--native');\r\n }\r\n this.dom.wrapper.appendChild(this.el);\r\n\r\n this.dom.trigger = document.createElement('button');\r\n this.dom.trigger.classList.add('dropdown__trigger');\r\n this.dom.trigger.setAttribute('type', 'button');\r\n this.dom.trigger.setAttribute('role', 'combobox');\r\n this.dom.trigger.setAttribute('aria-haspopup', 'listbox');\r\n this.dom.trigger.setAttribute('aria-expanded', false);\r\n this.dom.trigger.setAttribute('aria-controls', `${listId}`);\r\n\r\n // Get label\r\n const label = document.querySelector(`label[for=\"${this.el.id}\"]`);\r\n\r\n if (label) {\r\n this.dom.trigger.setAttribute('aria-label', label.textContent);\r\n this.dom.wrapper.appendChild(label);\r\n }\r\n\r\n this.dom.trigger.innerHTML = this.getPlaceholder(this.el.value);\r\n\r\n this.dom.wrapper.appendChild(this.dom.trigger);\r\n\r\n this.dom.list = document.createElement('ul');\r\n this.dom.list.id = listId;\r\n this.dom.list.classList.add('dropdown__list');\r\n this.dom.list.setAttribute('role', 'listbox');\r\n this.dom.list.setAttribute(\r\n 'aria-label',\r\n this.el.getAttribute('aria-label')\r\n );\r\n this.dom.list.innerHTML = this.options\r\n //.filter(option => option.value)\r\n .map(\r\n option => {\r\n const disabled = option.getAttribute('disabled') ? ' is-disabled' : '';\r\n return `<li class=\"dropdown__item ${disabled}\" role=\"option\" data-value=\"${\r\n option.value\r\n }\" aria-selected=\"${option.value === this.el.value}\">${\r\n option.text\r\n }</li>`\r\n }\r\n )\r\n .join('');\r\n this.el.parentNode.insertBefore(this.dom.list, this.el.nextSibling);\r\n this.dom.wrapper.appendChild(this.dom.list);\r\n }\r\n\r\n buildMultiSelectDropdown() {\r\n const listId = uuidv4();\r\n this.dom.wrapper = document.createElement('div');\r\n this.el.setAttribute('aria-hidden', true);\r\n this.el.setAttribute('tabindex', '-1');\r\n this.el.parentNode.insertBefore(this.dom.wrapper, this.el);\r\n this.dom.wrapper.classList.add('multiselect-dropdown');\r\n\r\n if (this.style) {\r\n this.dom.wrapper.classList.add(`multidropdown--${this.style}`);\r\n }\r\n\r\n if (isDevice()) {\r\n this.dom.wrapper.classList.add('multidropdown--native');\r\n }\r\n this.dom.wrapper.appendChild(this.el);\r\n\r\n this.dom.trigger = document.createElement('button');\r\n this.dom.trigger.classList.add('multidropdown__trigger');\r\n this.dom.trigger.setAttribute('type', 'button');\r\n this.dom.trigger.setAttribute('role', 'combobox');\r\n this.dom.trigger.setAttribute('aria-haspopup', 'listbox');\r\n this.dom.trigger.setAttribute('aria-expanded', false);\r\n this.dom.trigger.setAttribute('aria-controls', `${listId}`);\r\n\r\n // Get label\r\n const label = document.querySelector(`label[for=\"${this.el.id}\"]`);\r\n\r\n if (label) {\r\n this.dom.trigger.setAttribute('aria-label', label.textContent);\r\n this.dom.wrapper.appendChild(label);\r\n }\r\n\r\n this.dom.trigger.innerHTML = this.getPlaceholder(this.el.value);\r\n //this.dom.trigger.innerHTML = this.getPlaceholder(this.selectedArray);\r\n\r\n this.dom.wrapper.appendChild(this.dom.trigger);\r\n\r\n this.dom.list = document.createElement('ul');\r\n this.dom.list.id = listId;\r\n this.dom.list.classList.add('dropdown__list');\r\n this.dom.list.setAttribute('role', 'listbox');\r\n this.dom.list.setAttribute(\r\n 'aria-label',\r\n this.el.getAttribute('aria-label')\r\n );\r\n this.dom.list.innerHTML = this.options\r\n //.filter(option => option.value)\r\n .map(\r\n option => {\r\n const disabled = option.getAttribute('disabled') ? ' is-disabled' : '';\r\n if (option.value.trim().length !== 0) {\r\n\r\n /* return ` <li class=\"multidropdown__item ${disabled}\" data-value=\"${option.value}\" aria-selected=\"${option.value === this.el.value}\"><input id=\"${option.value}\" type=\"checkbox\" name=\"__field_87\" value=\"${option.value}\"\r\n class=\"FormChoice__Input FormChoice__Input--Checkbox checkmark\" data-f-datainput=\"\" aria-label=\"${option.text}\"\r\n /> ${option.text} </li>` */\r\n return ` <li class=\"multidropdown__item ${disabled}\" data-value=\"${option.value}\" aria-selected=\"${option.value === this.el.value}\">\r\n\r\n <input id=\"${option.value}\" type=\"checkbox\" name=\"__field_87\" value=\"${option.value}\"\r\n \r\n class=\"FormChoice__Input FormChoice__Input--Checkbox\" data-f-datainput=\"\" aria-label=\"${option.text}\"\r\n \r\n /><span class=\"checkmark\"></span> ${option.text} </li>`\r\n }\r\n }\r\n )\r\n .join('');\r\n this.el.parentNode.insertBefore(this.dom.list, this.el.nextSibling);\r\n this.dom.wrapper.appendChild(this.dom.list);\r\n }\r\n\r\n destroy() {\r\n const parent = this.el.parentNode;\r\n parent.removeChild(this.el);\r\n parent.parentNode.insertBefore(this.el, parent);\r\n parent.parentNode.removeChild(parent);\r\n }\r\n\r\n update() {\r\n this.destroy();\r\n this.setupDefaults();\r\n this.addListeners();\r\n }\r\n}\r\n\r\nexport default Module;\r\n","import { Component } from '@verndale/core';\r\nimport { gsap } from 'gsap';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { isFocusable, keyCode } from '../../helpers';\r\n\r\nclass Module extends Component {\r\n setupDefaults() {\r\n this.handleEscape = this.handleEscape.bind(this);\r\n this.handleFocus = this.handleFocus.bind(this);\r\n\r\n this.ignoreUtilFocusChanges = false;\r\n\r\n this.dom = {\r\n html: document.querySelector('html'),\r\n body: document.querySelector('body'),\r\n pageContainer: document.querySelector('.page-container'),\r\n stickyMenu: this.el.querySelector('.header__sticky'),\r\n\r\n primaryLinkContainers: [\r\n ...this.el.querySelectorAll('.hamburger-menu__section')\r\n ],\r\n primaryLinks: this.el.querySelectorAll('.hamburger-menu__primary-link'),\r\n submenus: [...this.el.querySelectorAll('.hamburger-menu__submenu, .mega-menu__submenu')],\r\n closeButton: [...this.el.querySelectorAll('.hamburger-menu-toggle-icon-close')],\r\n drawer: this.el.querySelector('.hamburger-menu__sm-device'),\r\n primaryLinkContainersSmDevice: [\r\n ...this.el.querySelectorAll('.hamburger-menu__section-smdevice')\r\n ],\r\n primaryLinksSmDevice: this.el.querySelectorAll('.hamburger-menu__primary-link-smdevice'),\r\n submenusSmDevice: [...this.el.querySelectorAll('.hamburger-menu__submenu-smdevice')],\r\n trigger: this.el.querySelector('.header__hamburger-menu-toggle'),\r\n triggerIconOpen: this.el.querySelector('.header__hamburger-menu-toggle-icon-open'),\r\n triggerIconClose: this.el.querySelector('.header__hamburger-menu-toggle-icon-close'),\r\n marker: this.el.querySelector('#marker'),\r\n menu: this.el.querySelector('.hamburger-menu'),\r\n primaryNav: this.el.querySelector('.hamburger-menu__primary-nav'),\r\n header: document.querySelector('.header')\r\n };\r\n }\r\n\r\n addListeners() {\r\n this.dom.primaryLinks.forEach((link, index) => {\r\n const guid = uuidv4();\r\n if (this.dom.submenus[index]) {\r\n this.dom.submenus[index].id = guid;\r\n }\r\n link.setAttribute('aria-controls', guid);\r\n link.addEventListener('click', this.handlePrimaryLinkSelect.bind(this));\r\n });\r\n\r\n this.dom.primaryLinksSmDevice.forEach((link, index) => {\r\n const guid = uuidv4();\r\n if (this.dom.submenusSmDevice[index]) {\r\n this.dom.submenusSmDevice[index].id = guid;\r\n }\r\n link.setAttribute('aria-controls', guid);\r\n link.addEventListener('click', this.handlePrimaryLinkSelectSmDevice.bind(this));\r\n });\r\n\r\n this.dom.drawer.addEventListener(\r\n 'keydown',\r\n this.handleSubmenuNavigate.bind(this)\r\n );\r\n\r\n this.dom.closeButton.forEach(button => {\r\n button.addEventListener('click', this.hideSubmenus.bind(this));\r\n });\r\n\r\n document.addEventListener('click', this.handleClickOutside.bind(this));\r\n }\r\n\r\n addEventListeners() {\r\n document.addEventListener('keyup', this.handleEscape);\r\n document.addEventListener('focus', this.handleFocus, true);\r\n }\r\n\r\n removeEventListeners() {\r\n document.removeEventListener('keyup', this.handleEscape);\r\n document.removeEventListener('focus', this.handleFocus, true);\r\n }\r\n\r\n handlePrimaryLinkSelect(e) {\r\n const id = e.currentTarget.getAttribute('aria-controls');\r\n if (this.activeSubmenu && this.activeSubmenu.id === id) {\r\n e.currentTarget.classList.remove('hamburger-menu__primary-link-selected');\r\n this.hideSubmenus();\r\n } else {\r\n this.displaySubmenu(e.currentTarget);\r\n }\r\n }\r\n\r\n handlePrimaryLinkSelectSmDevice(e) {\r\n const id = e.currentTarget.getAttribute('aria-controls');\r\n if (this.activeSubmenuSmDevice && this.activeSubmenuSmDevice.id === id) {\r\n e.currentTarget.classList.remove('hamburger-menu__primary-link-selected');\r\n this.hideSubmenusSmDevice();\r\n } else {\r\n this.displaySubmenuSmDevice(e.currentTarget);\r\n }\r\n }\r\n\r\n displaySubmenu(option) {\r\n this.hideSubmenus();\r\n this.dom.header.classList.add('mega-menu-open');\r\n this.activeSubmenu = this.dom.submenus.find(\r\n submenu => submenu.id === option.getAttribute('aria-controls')\r\n );\r\n\r\n option.classList.add('hamburger-menu__primary-link-selected');\r\n this.dom.marker.style.transition = '0.5s';\r\n this.dom.marker.style.width = `${option.offsetWidth}`+ 'px';\r\n this.dom.marker.style.left = `${option.offsetLeft}` + 'px';\r\n\r\n gsap.to(this.activeSubmenu, {\r\n height: 'auto',\r\n autoAlpha: 1,\r\n duration: 0.3\r\n });\r\n }\r\n\r\n displaySubmenuSmDevice(option) {\r\n this.hideSubmenusSmDevice();\r\n\r\n this.activeSubmenuSmDevice = this.dom.submenusSmDevice.find(\r\n submenu => submenu.id === option.getAttribute('aria-controls')\r\n );\r\n\r\n option.parentNode.classList.add('hamburger-menu__section--active');\r\n\r\n gsap.to(this.activeSubmenuSmDevice, {\r\n height: 'auto',\r\n autoAlpha: 1,\r\n duration: 0.3\r\n });\r\n }\r\n\r\n hideSubmenus() {\r\n this.dom.marker.style.transition = '0s';\r\n this.dom.marker.style.left = 0;\r\n this.dom.marker.style.width = 0;\r\n this.dom.header.classList.remove('mega-menu-open');\r\n if (this.activeSubmenu) {\r\n this.dom.primaryLinkContainers\r\n .find(link =>\r\n link.classList.contains('hamburger-menu__section--active')\r\n )\r\n ?.classList.remove('hamburger-menu__section--active');\r\n\r\n const links = [...this.dom.primaryLinks];\r\n\r\n links\r\n .find(link =>\r\n link.classList.contains('hamburger-menu__primary-link-selected')\r\n )\r\n ?.classList.remove('hamburger-menu__primary-link-selected');\r\n\r\n gsap.to(this.activeSubmenu, {\r\n height: 0,\r\n autoAlpha: 0,\r\n duration: 0.3\r\n });\r\n\r\n this.activeSubmenu = null;\r\n }\r\n }\r\n\r\n hideSubmenusSmDevice() {\r\n if (this.activeSubmenuSmDevice) {\r\n this.dom.primaryLinkContainersSmDevice\r\n .find(link =>\r\n link.classList.contains('hamburger-menu__section--active')\r\n )\r\n ?.classList.remove('hamburger-menu__section--active');\r\n\r\n gsap.to(this.activeSubmenuSmDevice, {\r\n height: 0,\r\n autoAlpha: 0,\r\n duration: 0.3\r\n });\r\n this.activeSubmenuSmDevice = null;\r\n }\r\n }\r\n\r\n toggleDrawer() {\r\n if (this.el.classList.contains('header--hamburger-menu-open')) {\r\n this.closeDrawer();\r\n document.dispatchEvent(new Event('menuClose'));\r\n } else {\r\n this.openDrawer();\r\n }\r\n }\r\n\r\n openDrawer() {\r\n this.dom.trigger.classList.add('is-open');\r\n const tl = gsap.timeline();\r\n const { innerHeight, scrollY } = window;\r\n const { offsetTop } = this.dom.pageContainer;\r\n const headerHeight = this.dom.stickyMenu.offsetHeight;\r\n const difference = offsetTop - scrollY;\r\n this.dom.html.classList.add('is-scroll-locked');\r\n this.dom.body.style.top = `-${scrollY}px`;\r\n\r\n gsap.to(this.dom.triggerIconOpen, {\r\n opacity: 0,\r\n duration: 0.3,\r\n onComplete: () => {\r\n gsap.to(this.dom.triggerIconOpen, { display: 'none' });\r\n gsap.to(this.dom.triggerIconClose, { display: 'flex' });\r\n gsap.to(this.dom.triggerIconClose, {\r\n opacity: 1,\r\n duration: 0.3\r\n })\r\n }\r\n });\r\n\r\n this.el.classList.add('header--hamburger-menu-open');\r\n tl.set(this.dom.drawer, {\r\n height: 0,\r\n autoAlpha: 1\r\n });\r\n tl.to(this.dom.drawer, {\r\n height: `${innerHeight - headerHeight - (difference > 0 ? difference : 0)}px`,\r\n duration: 0.4\r\n });\r\n\r\n this.dom.primaryLinkContainers.forEach(link => {\r\n link.classList.remove('hamburger-menu__section--active');\r\n tl.from(link, { opacity: 0, duration: 0.12 });\r\n });\r\n\r\n this.dom.submenusSmDevice.forEach(submenu => {\r\n submenu.classList.remove('hamburger-menu__submenu--active');\r\n });\r\n\r\n this.addEventListeners();\r\n }\r\n\r\n closeDrawer() {\r\n this.dom.trigger.classList.remove('is-open');\r\n const tl = gsap.timeline();\r\n this.el.classList.remove('header--hamburger-menu-open');\r\n this.dom.html.classList.remove('is-scroll-locked');\r\n\r\n gsap.to(this.dom.triggerIconClose, {\r\n opacity: 0,\r\n duration: 0.3,\r\n onComplete: () => {\r\n gsap.to(this.dom.triggerIconClose, { display: 'none' });\r\n gsap.to(this.dom.triggerIconOpen, { display: 'flex' });\r\n gsap.to(this.dom.triggerIconOpen, {\r\n opacity: 1,\r\n duration: 0.3\r\n })\r\n }\r\n });\r\n\r\n tl.to(this.dom.drawer, {\r\n height: 0,\r\n duration: 0.4,\r\n onComplete: () => {\r\n this.dom.trigger?.focus();\r\n this.activeSubmenu = null;\r\n this.dom.submenusSmDevice.forEach(submenu => (submenu.style = null));\r\n }\r\n });\r\n tl.set(this.dom.drawer, { height: null, autoAlpha: 0 });\r\n\r\n this.hideSubmenusSmDevice();\r\n\r\n this.removeEventListeners();\r\n }\r\n\r\n handleSubmenuNavigate(e) {\r\n if (this.ignoreUtilFocusChanges) return;\r\n\r\n const { activeElement } = document;\r\n const submenuLinks = [...this.activeSubmenu?.querySelectorAll('a')];\r\n const activeSubmenu = submenuLinks.indexOf(activeElement);\r\n\r\n switch (e.keyCode) {\r\n case keyCode.TAB:\r\n if (this.activeSubmenu && this.activeSubmenu.contains(activeElement)) {\r\n e.preventDefault();\r\n\r\n this.attemptFocus(\r\n this.dom.primaryLinks.find(\r\n link =>\r\n link.getAttribute('aria-controls') === this.activeSubmenu.id\r\n )\r\n );\r\n }\r\n break;\r\n case keyCode.RIGHT:\r\n case keyCode.DOWN:\r\n if (this.activeSubmenu && this.activeSubmenu.contains(activeElement)) {\r\n e.preventDefault();\r\n if (activeSubmenu === submenuLinks.length - 1) {\r\n this.focusFirstDescendant(this.activeSubmenu);\r\n } else {\r\n this.attemptFocus(submenuLinks[activeSubmenu + 1]);\r\n }\r\n }\r\n break;\r\n case keyCode.LEFT:\r\n case keyCode.UP:\r\n if (this.activeSubmenu && this.activeSubmenu.contains(activeElement)) {\r\n e.preventDefault();\r\n if (activeSubmenu === 0) {\r\n this.focusLastDescendant(this.activeSubmenu);\r\n } else {\r\n this.attemptFocus(submenuLinks[activeSubmenu - 1]);\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n handleClickOutside(e) {\r\n if (!this.dom.menu.contains(e.target) && (!this.dom.primaryNav.contains(e.target))){\r\n this.hideSubmenus();\r\n }\r\n }\r\n\r\n focusFirstDescendant(element) {\r\n for (let i = 0; i < element.childNodes.length; i++) {\r\n const child = element.childNodes[i];\r\n if (this.attemptFocus(child) || this.focusFirstDescendant(child)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n focusLastDescendant(element) {\r\n for (let i = element.childNodes.length - 1; i >= 0; i--) {\r\n const child = element.childNodes[i];\r\n if (this.attemptFocus(child) || this.focusLastDescendant(child)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n handleEscape(e) {\r\n const key = e.which || e.keyCode;\r\n\r\n if (key === keyCode.ESC) {\r\n e.stopPropagation();\r\n }\r\n }\r\n\r\n handleFocus(e) {\r\n if (\r\n this.ignoreUtilFocusChanges ||\r\n e.target.classList.contains('header__language-toggle') ||\r\n e.target.classList.contains('hamburger-menu__primary-link') ||\r\n e.target.classList.contains('header__search-toggle')\r\n )\r\n return;\r\n\r\n if (this.dom.drawer.contains(e.target)) {\r\n this.lastFocus = e.target;\r\n } else {\r\n this.focusFirstDescendant(this.dom.drawer);\r\n\r\n if (this.lastFocus === document.activeElement) {\r\n this.focusLastDescendant(this.dom.drawer);\r\n }\r\n this.lastFocus = document.activeElement;\r\n }\r\n }\r\n\r\n attemptFocus(element) {\r\n if (!isFocusable(element)) {\r\n return false;\r\n }\r\n\r\n this.ignoreUtilFocusChanges = true;\r\n try {\r\n element.focus();\r\n } catch (e) {\r\n return;\r\n }\r\n this.ignoreUtilFocusChanges = false;\r\n return document.activeElement === element;\r\n }\r\n}\r\n\r\nexport default Module;\r\n","import { Component } from '@verndale/core';\r\nimport { gsap, Expo } from 'gsap';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { keyCode, debounce } from '../../helpers';\r\nimport Dropdown from '../../components/dropdown';\r\nimport { unset } from 'lodash';\r\n\r\nclass Module extends Component {\r\n setupDefaults() {\r\n this.dom = {\r\n tabsContainer: this.el.querySelector('.mega-menu-integrated-tab__tabs'),\r\n tabs: [...this.el.querySelectorAll('.mega-menu-integrated-tab__tab')],\r\n panelsContainer: this.el.querySelector('.mega-menu-integrated-tab__panels'),\r\n panels: [...this.el.querySelectorAll('.mega-menu-integrated-tab__panel')],\r\n videos: document.querySelectorAll('video')\r\n };\r\n\r\n this.buildNavigation();\r\n this.calculateSizes();\r\n }\r\n\r\n addListeners() {\r\n window.addEventListener(\r\n 'resize',\r\n debounce(this.calculateSizes.bind(this), 300)\r\n );\r\n\r\n window.addEventListener('load', this.calculateSizes());\r\n\r\n this.dom.tabs.forEach((tab, index) => {\r\n tab.index = index;\r\n tab.addEventListener('click', this.handleTabClick.bind(this));\r\n tab.addEventListener('keydown', this.handleKeyDown.bind(this));\r\n });\r\n }\r\n\r\n buildNavigation() {\r\n const options = this.dom.tabs\r\n .map((tab, index) => {\r\n const tabGuid = uuidv4();\r\n const panelGuid = uuidv4();\r\n const panel = this.dom.panels[index];\r\n\r\n tab.setAttribute('id', tabGuid);\r\n tab.setAttribute('aria-controls', panelGuid);\r\n\r\n if (panel) {\r\n panel.setAttribute('id', panelGuid);\r\n panel.setAttribute('aria-labelledby', tabGuid);\r\n }\r\n return `<option value=\"${panelGuid}\">${tab.textContent}</option>`;\r\n })\r\n .join('');\r\n\r\n const dropdownGuid = uuidv4();\r\n const dropdownContainer = document.createElement('div');\r\n dropdownContainer.classList.add('mega-menu-integrated-tab__dropdown');\r\n\r\n const dropdownLabel = document.createElement('label');\r\n dropdownLabel.setAttribute('for', dropdownGuid);\r\n dropdownLabel.classList.add('label');\r\n dropdownLabel.innerHTML = this.dom.tabsContainer.getAttribute('aria-label');\r\n\r\n const dropdown = document.createElement('select');\r\n dropdown.id = dropdownGuid;\r\n dropdown.innerHTML = options;\r\n\r\n dropdownContainer.appendChild(dropdownLabel);\r\n dropdownContainer.appendChild(dropdown);\r\n this.dom.panelsContainer.parentNode.insertBefore(\r\n dropdownContainer,\r\n this.dom.panelsContainer\r\n );\r\n\r\n this.dom.dropdown = new Dropdown(dropdown);\r\n\r\n this.dom.dropdown.on('option', this.handleOptionChange.bind(this));\r\n }\r\n\r\n handleTabClick(e) {\r\n const panelId = e.currentTarget.getAttribute('aria-controls');\r\n this.dom.dropdown.setValue(panelId);\r\n }\r\n\r\n handleOptionChange(e) {\r\n const panelId = e.target.value;\r\n this.changePanel(panelId);\r\n }\r\n\r\n handleKeyDown(e) {\r\n const key = e.keyCode;\r\n const target = e.target;\r\n\r\n switch (key) {\r\n case keyCode.END:\r\n e.preventDefault();\r\n // Activate last tab\r\n this.dom.tabs[this.dom.tabs.length - 1].focus();\r\n this.changePanel(\r\n this.dom.tabs[this.dom.tabs.length - 1].getAttribute('aria-controls')\r\n );\r\n break;\r\n case keyCode.HOME:\r\n e.preventDefault();\r\n // Activate first tab\r\n this.dom.tabs[0].focus();\r\n this.changePanel(this.dom.tabs[0].getAttribute('aria-controls'));\r\n break;\r\n case keyCode.UP:\r\n case keyCode.LEFT:\r\n e.preventDefault();\r\n // Focus previous tab\r\n if (this.dom.tabs[target.index - 1]) {\r\n this.dom.tabs[target.index - 1].focus();\r\n } else {\r\n this.dom.tabs[this.dom.tabs.length - 1].focus();\r\n }\r\n break;\r\n case keyCode.DOWN:\r\n case keyCode.RIGHT:\r\n e.preventDefault();\r\n // Focus next tab\r\n if (this.dom.tabs[target.index + 1]) {\r\n this.dom.tabs[target.index + 1].focus();\r\n } else {\r\n this.dom.tabs[0].focus();\r\n }\r\n break;\r\n }\r\n }\r\n\r\n changePanel(panelId) {\r\n const currentTab = this.dom.tabs.find(\r\n tab => tab.getAttribute('aria-selected') === 'true'\r\n );\r\n const activeTab = this.dom.tabs.find(\r\n tab => tab.getAttribute('aria-controls') === panelId\r\n );\r\n const currentPanelId = currentTab.getAttribute('aria-controls');\r\n\r\n if (currentTab !== activeTab) {\r\n activeTab.setAttribute('aria-selected', 'true');\r\n activeTab.setAttribute('tabindex', 0);\r\n\r\n currentTab.setAttribute('aria-selected', 'false');\r\n currentTab.setAttribute('tabindex', 1);\r\n\r\n currentTab.classList.remove('selected');\r\n activeTab.classList.add('selected');\r\n this.calculateSizes();\r\n\r\n this.dom.panels.forEach(panel => {\r\n if (panel.id === panelId) {\r\n gsap.to(panel, {\r\n autoAlpha: 1,\r\n ease: Expo.easeOut,\r\n duration: 0.4\r\n });\r\n } else {\r\n gsap.to(panel, {\r\n autoAlpha: 0,\r\n ease: Expo.easeOut,\r\n duration: 0.4\r\n });\r\n }\r\n });\r\n this.dom.panels.forEach(panel => {\r\n if (panel.id === currentPanelId) {\r\n const panelIframe = panel.querySelector('iframe');\r\n if (panelIframe)\r\n panelIframe.setAttribute('src', panelIframe.getAttribute('src'));\r\n }\r\n });\r\n\r\n setTimeout(() => {\r\n this.dom.videos.forEach(video => {\r\n video.pause();\r\n //video.currentTime = 0;\r\n });\r\n }, 0.4);\r\n }\r\n }\r\n\r\n calculateSizes() {\r\n this.dom.panelsContainer.style.height = 'unset';\r\n const tabHeight = this.dom.tabsContainer.offsetHeight;\r\n let maxHeight = tabHeight;\r\n\r\n this.dom.panels.forEach(panel => {\r\n if (panel.offsetHeight >= maxHeight) {\r\n maxHeight = panel.offsetHeight;\r\n }\r\n });\r\n this.dom.panelsContainer.style['height'] = `${maxHeight}px`;\r\n }\r\n}\r\n\r\nexport default Module;\r\n","import { Component } from '@verndale/core';\r\nimport { gsap } from 'gsap';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { isFocusable, keyCode } from '../../helpers';\r\nimport MegaMenuIntegratedTabs from './megaMenuIntegratedTabs';\r\n\r\nclass Module extends Component {\r\n setupDefaults() {\r\n this.handleEscape = this.handleEscape.bind(this);\r\n this.handleFocus = this.handleFocus.bind(this);\r\n this.ignoreUtilFocusChanges = false;\r\n this.dom = {\r\n html: document.querySelector('html'),\r\n body: document.querySelector('body'),\r\n pageContainer: document.querySelector('.page-container'),\r\n stickyMenu: this.el.querySelector('.header__sticky'),\r\n primaryLinkContainers: [\r\n ...this.el.querySelectorAll('.mega-menu__section')\r\n ],\r\n primaryLinks: this.el.querySelectorAll('.hamburger-menu__primary-link'),\r\n submenus: [...this.el.querySelectorAll('.mega-menu__submenu')],\r\n trigger: this.el.querySelector('.header__hamburger-menu-toggle'),\r\n triggerIconOpen: this.el.querySelector('.header__hamburger-menu-toggle-icon-open'),\r\n triggerIconClose: this.el.querySelector('.header__hamburger-menu-toggle-icon-close'),\r\n marker: this.el.querySelector('#marker'),\r\n menu: this.el.querySelector('.mega-menu'),\r\n primaryNav: this.el.querySelector('.hamburger-menu__primary-nav'),\r\n header: document.querySelector('.header'),\r\n tabs: [...this.el.querySelectorAll('.mega-menu-integrated-tab')],\r\n menusSmDevice: [...this.el.querySelectorAll('.mega-menu__submenu-smdevice')],\r\n drawer: this.el.querySelector('.mega-menu__sm-device'),\r\n primaryNavSmDevice: this.el.querySelectorAll('.mega-menu__primary-nav'),\r\n primaryNavLinks: this.el.querySelectorAll('.mega-menu__primary-link'),\r\n secondaryNav: [...this.el.querySelectorAll('.mega-menu__secondary-nav')],\r\n secondaryNavLinks: this.el.querySelectorAll('.mega-menu__secondary-nav-link'),\r\n tertiaryNav: [...this.el.querySelectorAll('.mega-menu__tertiary-nav')],\r\n back: this.el.querySelectorAll('.mega-menu__back.to-primary-nav, .mega-menu__back.to-secondary-nav'),\r\n videos: document.querySelectorAll('video')\r\n };\r\n }\r\n\r\n addListeners() {\r\n this.dom.primaryLinks.forEach((link, index) => {\r\n const guid = uuidv4();\r\n if (this.dom.submenus[index]) {\r\n this.dom.submenus[index].id = guid;\r\n }\r\n link.setAttribute('aria-controls', guid);\r\n link.addEventListener('click', this.handlePrimaryLinkSelect.bind(this));\r\n });\r\n\r\n this.dom.primaryNavLinks.forEach((link, index) => {\r\n const guid = uuidv4();\r\n if (this.dom.secondaryNav[index]) {\r\n this.dom.secondaryNav[index].id = guid;\r\n }\r\n link.setAttribute('aria-controls', guid);\r\n link.addEventListener('click', this.handlePrimaryLinkSelect.bind(this));\r\n });\r\n\r\n this.dom.secondaryNavLinks.forEach((link, index) => {\r\n const guid = uuidv4();\r\n if (this.dom.tertiaryNav[index]) {\r\n this.dom.tertiaryNav[index].id = guid;\r\n }\r\n link.setAttribute('aria-controls', guid);\r\n link.addEventListener('click', this.handlePrimaryLinkSelect.bind(this));\r\n });\r\n\r\n this.dom.back.forEach((backBtn, toPrimaryNav) => {\r\n toPrimaryNav = backBtn.classList.contains('to-primary-nav')\r\n backBtn.addEventListener('click', this.handleBackClick.bind(this, toPrimaryNav));\r\n });\r\n\r\n document.addEventListener('click', this.handleClickOutside.bind(this));\r\n }\r\n\r\n addEventListeners() {\r\n document.addEventListener('keyup', this.handleEscape);\r\n document.addEventListener('focus', this.handleFocus, true);\r\n window.addEventListener('resize', this.handleResize.bind(this));\r\n }\r\n\r\n removeEventListeners() {\r\n document.removeEventListener('keyup', this.handleEscape);\r\n document.removeEventListener('focus', this.handleFocus, true);\r\n }\r\n\r\n handleBackClick(e) {\r\n if (e) {\r\n this.hideSubmenus();\r\n } else {\r\n const id = this.activeTertiaryNav.id;\r\n const secLinks = [...this.dom.secondaryNavLinks];\r\n const previousState = secLinks.find(\r\n secNav => secNav.getAttribute('aria-controls') === id\r\n )\r\n ?.parentElement;\r\n this.hideSubmenus();\r\n this.activeSecondaryNav = previousState;\r\n this.displayTertiaryNav(this.activeSecondaryNav);\r\n }\r\n }\r\n\r\n handlePrimaryLinkSelect(e) {\r\n const id = e.currentTarget.getAttribute('aria-controls');\r\n if (this.activeSubmenu && this.activeSubmenu.id === id ||\r\n this.activeSecondaryNav && this.activeSecondaryNav.id === id ||\r\n this.activeTertiaryNav && this.activeTertiaryNav.id === id\r\n ) {\r\n e.currentTarget.classList.remove('hamburger-menu__primary-link-selected');\r\n e.currentTarget.classList.remove('mega-menu__primary-link-selected');\r\n this.hideSubmenus();\r\n } else {\r\n this.dom.videos.forEach(video => {\r\n video.pause();\r\n });\r\n this.displaySubmenu(e.currentTarget);\r\n }\r\n }\r\n\r\n displaySubmenu(option) {\r\n this.hideSubmenus();\r\n this.dom.header.classList.add('mega-menu-open');\r\n const { scrollY } = window;\r\n //this.dom.body.style.top = `-${scrollY}px`;\r\n //this.dom.html.classList.add('is-scroll-locked');\r\n this.activeSubmenu = this.dom.submenus.find(\r\n submenu => submenu.id === option.getAttribute('aria-controls')\r\n );\r\n\r\n this.activeSecondaryNav = this.dom.secondaryNav.find(\r\n secNav => secNav.id === option.getAttribute('aria-controls')\r\n );\r\n\r\n this.activeTertiaryNav = this.dom.tertiaryNav.find(\r\n terNav => terNav.id === option.getAttribute('aria-controls')\r\n );\r\n\r\n option.classList.add('hamburger-menu__primary-link-selected');\r\n this.dom.marker.style.transition = '0.5s';\r\n this.dom.marker.style.width = `${option.offsetWidth}`+ 'px';\r\n this.dom.marker.style.left = `${option.offsetLeft}` + 'px';\r\n\r\n option.classList.add('mega-menu__primary-link-selected');\r\n\r\n if (this.activeSubmenu) {\r\n gsap.to(this.activeSubmenu, {\r\n height: 'auto',\r\n autoAlpha: 1,\r\n duration: 0.3\r\n });\r\n } else if (this.activeSecondaryNav) {\r\n gsap.to(this.dom.primaryNavSmDevice, {\r\n height: 0,\r\n autoAlpha: 0,\r\n duration: 0.3\r\n });\r\n\r\n gsap.to(this.activeSecondaryNav, {\r\n height: 'auto',\r\n autoAlpha: 1,\r\n duration: 0.3\r\n });\r\n } else if (this.activeTertiaryNav) {\r\n gsap.to(this.dom.primaryNavSmDevice, {\r\n height: 0,\r\n autoAlpha: 0,\r\n duration: 0.3\r\n });\r\n\r\n gsap.to(this.activeSecondaryNav, {\r\n height: 0,\r\n autoAlpha: 0,\r\n duration: 0.3\r\n });\r\n\r\n gsap.to(this.activeTertiaryNav, {\r\n height: 'auto',\r\n autoAlpha: 1,\r\n duration: 0.3\r\n });\r\n }\r\n }\r\n\r\n hideSubmenus() {\r\n this.dom.marker.style.transition = '0s';\r\n this.dom.marker.style.left = 0;\r\n this.dom.marker.style.width = 0;\r\n this.dom.header.classList.remove('mega-menu-open');\r\n this.dom.html.classList.remove('is-scroll-locked');\r\n\r\n if (this.activeSubmenu) {\r\n const tabs = [...this.activeSubmenu.querySelector('.mega-menu-integrated-tab').querySelectorAll('.mega-menu-integrated-tab__tab')];\r\n this.integratedTabs = new MegaMenuIntegratedTabs(this.activeSubmenu);\r\n this.integratedTabs.changePanel(tabs[0].getAttribute('aria-controls'));\r\n\r\n const links = [...this.dom.primaryLinks];\r\n links\r\n .find(link =>\r\n link.classList.contains('hamburger-menu__primary-link-selected')\r\n )\r\n ?.classList.remove('hamburger-menu__primary-link-selected');\r\n\r\n gsap.to(this.activeSubmenu, {\r\n height: 0,\r\n autoAlpha: 0,\r\n duration: 0.3\r\n });\r\n\r\n this.activeSubmenu = null;\r\n }\r\n\r\n if (this.activeSecondaryNav) {\r\n const links = [...this.dom.primaryLinks];\r\n links.find(link =>\r\n link.classList.contains('mega-menu__primary-link-selected')\r\n )\r\n ?.classList.remove('mega-menu__primary-link-selected');\r\n\r\n gsap.to(this.activeSecondaryNav, {\r\n height: 0,\r\n autoAlpha: 0,\r\n duration: 0.3\r\n });\r\n\r\n gsap.to(this.dom.primaryNavSmDevice, {\r\n height: 'auto',\r\n autoAlpha: 1,\r\n duration: 0.3\r\n });\r\n\r\n this.activeSecondaryNav = null;\r\n }\r\n\r\n if (this.activeTertiaryNav) {\r\n gsap.to(this.activeTertiaryNav, {\r\n height: 0,\r\n autoAlpha: 0,\r\n duration: 0.3\r\n });\r\n\r\n this.activeTertiaryNav = null;\r\n\r\n gsap.to(this.activeSecondaryNav, {\r\n height: 0,\r\n autoAlpha: 0,\r\n duration: 0.3\r\n });\r\n }\r\n }\r\n\r\n displayTertiaryNav(previousState) {\r\n gsap.to(previousState, {\r\n height: 'auto',\r\n autoAlpha: 1,\r\n duration: 0.3\r\n });\r\n }\r\n\r\n toggleDrawer() {\r\n if (this.el.classList.contains('header--hamburger-menu-open')) {\r\n this.closeDrawer();\r\n this.hideSubmenus();\r\n document.dispatchEvent(new Event('menuClose'));\r\n } else {\r\n this.openDrawer();\r\n }\r\n }\r\n\r\n openDrawer() {\r\n this.dom.trigger.classList.add('is-open');\r\n const tl = gsap.timeline();\r\n const { innerHeight, scrollY } = window;\r\n const { offsetTop } = this.dom.pageContainer;\r\n const headerHeight = this.dom.stickyMenu.offsetHeight;\r\n const difference = offsetTop - scrollY;\r\n this.dom.html.classList.add('is-scroll-locked');\r\n this.dom.body.style.top = `-${scrollY}px`;\r\n\r\n gsap.to(this.dom.triggerIconOpen, {\r\n opacity: 0,\r\n duration: 0.3,\r\n onComplete: () => {\r\n gsap.to(this.dom.triggerIconOpen, { display: 'none' });\r\n gsap.to(this.dom.triggerIconClose, { display: 'flex' });\r\n gsap.to(this.dom.triggerIconClose, {\r\n opacity: 1,\r\n duration: 0.3\r\n })\r\n }\r\n });\r\n\r\n this.el.classList.add('header--hamburger-menu-open');\r\n tl.set(this.dom.drawer, {\r\n height: 0,\r\n autoAlpha: 1\r\n });\r\n tl.to(this.dom.drawer, {\r\n height: `${innerHeight - headerHeight - (difference > 0 ? difference : 0)}px`,\r\n duration: 0.4\r\n });\r\n\r\n this.dom.primaryLinkContainers.forEach(link => {\r\n link.classList.remove('mega-menu__section--active');\r\n tl.from(link, { opacity: 0, duration: 0.12 });\r\n });\r\n\r\n this.dom.menusSmDevice.forEach(submenu => {\r\n submenu.classList.remove('mega-menu__submenu--active');\r\n });\r\n\r\n this.addEventListeners();\r\n }\r\n\r\n closeDrawer() {\r\n this.dom.trigger.classList.remove('is-open');\r\n const tl = gsap.timeline();\r\n this.el.classList.remove('header--hamburger-menu-open');\r\n this.dom.html.classList.remove('is-scroll-locked');\r\n\r\n gsap.to(this.dom.triggerIconClose, {\r\n opacity: 0,\r\n duration: 0.3,\r\n onComplete: () => {\r\n gsap.to(this.dom.triggerIconClose, { display: 'none' });\r\n gsap.to(this.dom.triggerIconOpen, { display: 'flex' });\r\n gsap.to(this.dom.triggerIconOpen, {\r\n opacity: 1,\r\n duration: 0.3\r\n })\r\n }\r\n });\r\n\r\n gsap.to(this.dom.drawer, {\r\n height: 0,\r\n autoAlpha: 0,\r\n duration: 0.4\r\n });\r\n\r\n gsap.to(this.dom.primaryNavSmDevice, {\r\n height: 'auto',\r\n autoAlpha: 1,\r\n duration: 0.3\r\n });\r\n\r\n this.removeEventListeners();\r\n }\r\n\r\n handleSubmenuNavigate(e) {\r\n if (this.ignoreUtilFocusChanges) return;\r\n\r\n const { activeElement } = document;\r\n const submenuLinks = [...this.activeSubmenu?.querySelectorAll('a')];\r\n const activeSubmenu = submenuLinks.indexOf(activeElement);\r\n\r\n switch (e.keyCode) {\r\n case keyCode.TAB:\r\n if (this.activeSubmenu && this.activeSubmenu.contains(activeElement)) {\r\n e.preventDefault();\r\n\r\n this.attemptFocus(\r\n this.dom.primaryLinks.find(\r\n link =>\r\n link.getAttribute('aria-controls') === this.activeSubmenu.id\r\n )\r\n );\r\n }\r\n break;\r\n case keyCode.RIGHT:\r\n case keyCode.DOWN:\r\n if (this.activeSubmenu && this.activeSubmenu.contains(activeElement)) {\r\n e.preventDefault();\r\n if (activeSubmenu === submenuLinks.length - 1) {\r\n this.focusFirstDescendant(this.activeSubmenu);\r\n } else {\r\n this.attemptFocus(submenuLinks[activeSubmenu + 1]);\r\n }\r\n }\r\n break;\r\n case keyCode.LEFT:\r\n case keyCode.UP:\r\n if (this.activeSubmenu && this.activeSubmenu.contains(activeElement)) {\r\n e.preventDefault();\r\n if (activeSubmenu === 0) {\r\n this.focusLastDescendant(this.activeSubmenu);\r\n } else {\r\n this.attemptFocus(submenuLinks[activeSubmenu - 1]);\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n handleClickOutside(e) {\r\n this.breakpoint = matchMedia('(min-width: 1000px)');\r\n if (this.breakpoint.matches) {\r\n if (!this.dom.menu.contains(e.target) && (!this.dom.primaryNav.contains(e.target))){\r\n this.hideSubmenus();\r\n }\r\n }\r\n }\r\n\r\n focusFirstDescendant(element) {\r\n for (let i = 0; i < element.childNodes.length; i++) {\r\n const child = element.childNodes[i];\r\n if (this.attemptFocus(child) || this.focusFirstDescendant(child)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n focusLastDescendant(element) {\r\n for (let i = element.childNodes.length - 1; i >= 0; i--) {\r\n const child = element.childNodes[i];\r\n if (this.attemptFocus(child) || this.focusLastDescendant(child)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n handleEscape(e) {\r\n const key = e.which || e.keyCode;\r\n\r\n if (key === keyCode.ESC) {\r\n e.stopPropagation();\r\n }\r\n }\r\n\r\n handleFocus(e) {\r\n if (\r\n this.ignoreUtilFocusChanges ||\r\n e.target.classList.contains('header__language-toggle') ||\r\n e.target.classList.contains('hamburger-menu__primary-link') ||\r\n e.target.classList.contains('header__search-toggle')\r\n )\r\n return;\r\n\r\n if (this.dom.drawer.contains(e.target)) {\r\n this.lastFocus = e.target;\r\n } else {\r\n this.focusFirstDescendant(this.dom.drawer);\r\n\r\n if (this.lastFocus === document.activeElement) {\r\n this.focusLastDescendant(this.dom.drawer);\r\n }\r\n this.lastFocus = document.activeElement;\r\n }\r\n }\r\n\r\n attemptFocus(element) {\r\n if (!isFocusable(element)) {\r\n return false;\r\n }\r\n\r\n this.ignoreUtilFocusChanges = true;\r\n try {\r\n element.focus();\r\n } catch (e) {\r\n return;\r\n }\r\n this.ignoreUtilFocusChanges = false;\r\n return document.activeElement === element;\r\n }\r\n\r\n handleResize() {\r\n const tl = gsap.timeline();\r\n const { innerHeight, scrollY } = window;\r\n const { offsetTop } = this.dom.pageContainer;\r\n const headerHeight = this.dom.stickyMenu.offsetHeight;\r\n const difference = offsetTop - scrollY;\r\n tl.to(this.dom.drawer, {\r\n height: `${innerHeight - headerHeight - (difference > 0 ? difference : 0)}px`,\r\n duration: 0.4\r\n });\r\n this.dom.marker.style.width = '0';\r\n }\r\n}\r\n\r\nexport default Module;\r\n","import { Component } from '@verndale/core';\r\nimport { gsap, Expo } from 'gsap';\r\nimport Axios from 'axios';\r\nimport { keyCode, debounce } from '../../helpers';\r\n\r\nclass Module extends Component {\r\n setupDefaults() {\r\n this.dom = {\r\n html: document.querySelector('html'),\r\n body: document.querySelector('body'),\r\n pageContainer: document.querySelector('.page-container'),\r\n stickyMenu: this.el.querySelector('.header__sticky'),\r\n form: this.el.querySelector('.header-search__bar form'),\r\n trigger: this.el.querySelector('.header__search-toggle'),\r\n triggerIconOpen: this.el.querySelector('.header__search-toggle-icon-open'),\r\n triggerIconClose: this.el.querySelector('.header__search-toggle-icon-close'),\r\n drawer: this.el.querySelector('.header-search'),\r\n input: this.el.querySelector('.header-search__input'),\r\n clear: this.el.querySelector('.header-search__clear'),\r\n submit: this.el.querySelector('.header-search__submit'),\r\n suggestions: this.el.querySelector('.header-search__suggestions'),\r\n initialSuggestions: this.el.querySelector(\r\n '.header-search__suggestions-initial'\r\n ),\r\n loadedSuggestions: this.el.querySelector(\r\n '.header-search__suggestions-loaded'\r\n ),\r\n loadedSuggestionsList: this.el.querySelector(\r\n '.header-search__suggestions-loaded .header-search__suggestion-list'\r\n )\r\n };\r\n\r\n this.endpoint = this.dom.drawer.dataset.suggestionsEndpoint;\r\n this.language = this.dom.drawer.dataset.language;\r\n this.action = this.dom.form.getAttribute('action');\r\n this.initialSuggestions = !!this.dom.initialSuggestions;\r\n }\r\n\r\n addEventListeners() {\r\n this.el.addEventListener('keydown', this.handleEscape.bind(this));\r\n this.dom.input.addEventListener('focus', this.handleTextInputFocus.bind(this));\r\n this.dom.input.addEventListener('blur', this.handleTextInputBlur.bind(this));\r\n this.dom.input.addEventListener('change', this.checkInputValue.bind(this));\r\n this.dom.input.addEventListener(\r\n 'keydown',\r\n this.navigateSuggestions.bind(this)\r\n );\r\n this.dom.input.addEventListener(\r\n 'keyup',\r\n debounce(this.handleLoadSuggestions.bind(this), 300)\r\n );\r\n this.dom.clear.addEventListener('click', this.handleClearSearch.bind(this));\r\n document.addEventListener('click', this.handleClickOutside.bind(this));\r\n }\r\n\r\n removeEventListeners() {\r\n this.el.removeEventListener('keydown', this.handleEscape.bind(this));\r\n this.dom.input.removeEventListener('focus', this.handleTextInputFocus.bind(this));\r\n this.dom.input.removeEventListener('blur', this.handleTextInputBlur.bind(this));\r\n this.dom.input.removeEventListener('change', this.checkInputValue.bind(this));\r\n this.dom.input.removeEventListener(\r\n 'keydown',\r\n this.navigateSuggestions.bind(this)\r\n );\r\n this.dom.input.removeEventListener(\r\n 'keyup',\r\n debounce(this.handleLoadSuggestions.bind(this), 300)\r\n );\r\n this.dom.clear.removeEventListener('click', this.handleClearSearch.bind(this));\r\n }\r\n\r\n handleTextInputFocus(e) {\r\n e.target.parentNode.classList.add('is-focused');\r\n }\r\n\r\n handleTextInputBlur(e) {\r\n e.target.parentNode.classList.remove('is-focused');\r\n }\r\n\r\n checkInputValue(e) {\r\n if (e.target.value) {\r\n e.target.parentNode.classList.add('is-filled');\r\n } else {\r\n e.target.parentNode.classList.remove('is-filled');\r\n }\r\n }\r\n\r\n setInitialSuggestions() {\r\n if (this.dom.initialSuggestions) {\r\n this.initialSuggestions = true;\r\n this.dom.submit.classList.remove('header-search__submit-btn');\r\n this.dom.initialSuggestions.style.display = 'block';\r\n this.dom.loadedSuggestions.style.display = 'none';\r\n } else {\r\n this.suggestionsOpen = false;\r\n gsap.to(this.dom.suggestions, {\r\n height: 0,\r\n duration: 0.5,\r\n ease: Expo.easeInOut\r\n });\r\n }\r\n }\r\n\r\n toggleDrawer() {\r\n if (this.el.classList.contains('header--search-open')) {\r\n this.closeDrawer();\r\n document.dispatchEvent(new Event('menuClose'));\r\n } else {\r\n this.openDrawer();\r\n }\r\n }\r\n\r\n openDrawer() {\r\n const tl = gsap.timeline();\r\n const { innerHeight, scrollY } = window;\r\n const { offsetTop } = this.dom.pageContainer;\r\n const headerHeight = this.dom.stickyMenu.offsetHeight;\r\n const difference = offsetTop - scrollY;\r\n const isTabletLandscape = window.matchMedia('(min-width: 1024px)');\r\n\r\n if (!isTabletLandscape.matches) this.dom.html.classList.add('is-scroll-locked');\r\n\r\n gsap.to(this.dom.triggerIconOpen, {\r\n opacity: 0,\r\n duration: 0.3,\r\n onComplete: () => {\r\n gsap.to(this.dom.triggerIconOpen, { display: 'none' });\r\n gsap.to(this.dom.triggerIconClose, { display: 'flex' });\r\n gsap.to(this.dom.triggerIconClose, {\r\n opacity: 1,\r\n duration: 0.3\r\n })\r\n }\r\n });\r\n\r\n if (this.dom.initialSuggestions) {\r\n this.suggestionsOpen = true;\r\n tl.to(this.dom.suggestions, {\r\n height: 'auto',\r\n duration: 0.5,\r\n ease: Expo.easeInOut\r\n });\r\n }\r\n\r\n this.el.classList.add('header--search-open');\r\n tl.set(this.dom.drawer, {\r\n height: 0,\r\n autoAlpha: 1,\r\n onComplete: () => {\r\n this.dom.input.focus({ preventScroll: true });\r\n }\r\n });\r\n tl.to(this.dom.drawer, {\r\n height: (isTabletLandscape.matches ? 'auto' : `${innerHeight - headerHeight - (difference > 0 ? difference : 0)}px`),\r\n minHeight: (isTabletLandscape.matches ? '400px' : ''),\r\n maxHeight: (isTabletLandscape.matches ? `${innerHeight - headerHeight}px` : ''),\r\n duration: 0.4,\r\n onComplete: () => {\r\n this.dom.drawer.classList.add('overflow-auto');\r\n }\r\n });\r\n\r\n this.addEventListeners();\r\n }\r\n\r\n closeDrawer() {\r\n const tl = gsap.timeline();\r\n this.el.classList.remove('header--search-open');\r\n gsap.to(this.dom.triggerIconClose, {\r\n opacity: 0,\r\n duration: 0.3,\r\n onComplete: () => {\r\n gsap.to(this.dom.triggerIconClose, { display: 'none' });\r\n gsap.to(this.dom.triggerIconOpen, { display: 'flex' });\r\n gsap.to(this.dom.triggerIconOpen, {\r\n opacity: 1,\r\n duration: 0.3\r\n })\r\n }\r\n });\r\n\r\n tl.to(this.dom.drawer, {\r\n height: 0,\r\n padding: 0,\r\n minHeight: 0,\r\n maxHeight: 0,\r\n duration: 0.4,\r\n onComplete: () => {\r\n this.dom.loadedSuggestions.style.display = 'none';\r\n this.dom.drawer.classList.remove('overflow-auto');\r\n\r\n // Unselect any selected option\r\n this.unselectSuggestions();\r\n\r\n if (this.dom.initialSuggestions) {\r\n this.initialSuggestions = true;\r\n this.dom.initialSuggestions.style.display = 'block';\r\n }\r\n\r\n // Clear input\r\n this.dom.input.value = '';\r\n this.dom.clear.style.display = 'none';\r\n this.dom.submit.style.display = 'none';\r\n this.dom.trigger?.focus({ preventScroll: true });\r\n }\r\n });\r\n tl.set(this.dom.drawer, { height: null, autoAlpha: 0, padding: '' });\r\n\r\n this.removeEventListeners();\r\n\r\n if (this.suggestionsOpen) {\r\n tl.to(this.dom.suggestions, {\r\n height: 0,\r\n duration: 0.2\r\n });\r\n }\r\n }\r\n\r\n handleClickOutside(e) {\r\n if (!this.dom.drawer.contains(e.target) && (!this.dom.trigger.contains(e.target))){\r\n this.closeDrawer();\r\n }\r\n }\r\n\r\n handleClearSearch() {\r\n this.dom.input.value = '';\r\n this.dom.clear.style.display = 'none';\r\n this.dom.submit.style.display = 'none';\r\n this.setInitialSuggestions();\r\n this.unselectSuggestions();\r\n this.dom.input.focus({ preventScroll: true });\r\n }\r\n\r\n async handleLoadSuggestions(e) {\r\n const key = e.which || e.keyCode;\r\n const { value } = e.target;\r\n\r\n if (\r\n [\r\n keyCode.UP,\r\n keyCode.DOWN,\r\n keyCode.HOME,\r\n keyCode.END,\r\n keyCode.ESC,\r\n keyCode.TAB\r\n ].includes(key)\r\n ) {\r\n return;\r\n }\r\n\r\n this.unselectSuggestions();\r\n\r\n if (value) {\r\n this.dom.clear.style.display = 'block';\r\n this.dom.submit.style.display = 'block';\r\n } else {\r\n this.dom.clear.style.display = 'none';\r\n this.dom.submit.style.display = 'none';\r\n }\r\n\r\n if (value.length > 1) {\r\n const { data } = await Axios({\r\n url: this.endpoint,\r\n params: { q: value, language: this.language }\r\n });\r\n\r\n if (data.suggestions?.length) {\r\n this.initialSuggestions = false;\r\n\r\n this.dom.loadedSuggestionsList.innerHTML = data.suggestions\r\n .map(\r\n suggestion =>\r\n `<a href=\"${this.action}?query=${suggestion}\" tabindex=\"-1\"><li class=\"header-search__suggestions-list-item\">${suggestion}</li></a>`\r\n )\r\n .join('');\r\n this.dom.submit.classList.add('header-search__submit-btn');\r\n this.dom.loadedSuggestions.style.display = 'block';\r\n\r\n if (this.dom.initialSuggestions) {\r\n this.dom.initialSuggestions.style.display = 'none';\r\n } else {\r\n this.suggestionsOpen = true;\r\n gsap.to(this.dom.suggestions, {\r\n height: 'auto',\r\n duration: 0.5,\r\n ease: Expo.easeInOut\r\n });\r\n }\r\n } else {\r\n this.setInitialSuggestions();\r\n }\r\n } else {\r\n this.setInitialSuggestions();\r\n }\r\n }\r\n\r\n handleEscape(e) {\r\n const key = e.which || e.keyCode;\r\n\r\n if (key === keyCode.ESC) {\r\n e.stopPropagation();\r\n this.closeDrawer();\r\n }\r\n }\r\n\r\n navigateSuggestions(e) {\r\n const key = e.which || e.keyCode;\r\n\r\n const suggestions = this.initialSuggestions\r\n ? [...this.dom.initialSuggestions.querySelectorAll('a')]\r\n : [...this.dom.loadedSuggestions.querySelectorAll('a')];\r\n const selectedSuggestion = this.initialSuggestions\r\n ? this.dom.initialSuggestions.querySelector('a.selected')\r\n : this.dom.loadedSuggestions.querySelector('a.selected');\r\n\r\n if (!suggestions.length) {\r\n return;\r\n }\r\n\r\n switch (key) {\r\n case keyCode.UP:\r\n e.preventDefault();\r\n this.unselectSuggestions();\r\n\r\n const previousOption =\r\n selectedSuggestion?.parentNode.previousElementSibling?.querySelector(\r\n 'a'\r\n ) || suggestions[suggestions.length - 1];\r\n\r\n this.selectSuggestion(previousOption);\r\n\r\n break;\r\n case keyCode.DOWN:\r\n e.preventDefault();\r\n this.unselectSuggestions();\r\n\r\n const nextOption =\r\n selectedSuggestion?.parentNode.nextElementSibling?.querySelector(\r\n 'a'\r\n ) || suggestions[0];\r\n\r\n this.selectSuggestion(nextOption);\r\n\r\n break;\r\n case keyCode.HOME:\r\n e.preventDefault();\r\n this.unselectSuggestions();\r\n this.selectSuggestion(suggestions[0]);\r\n break;\r\n case keyCode.END:\r\n e.preventDefault();\r\n this.unselectSuggestions();\r\n this.selectSuggestion(suggestions[suggestions.length - 1]);\r\n break;\r\n case keyCode.TAB:\r\n this.unselectSuggestions();\r\n break;\r\n }\r\n }\r\n\r\n selectSuggestion(suggestion) {\r\n suggestion.classList.add('selected');\r\n this.dom.input.value = suggestion.textContent;\r\n this.dom.clear.style.display = 'block';\r\n this.dom.submit.style.display = 'block';\r\n }\r\n\r\n unselectSuggestions() {\r\n const selectedSuggestion =\r\n this.dom.initialSuggestions?.querySelector('a.selected') ||\r\n this.dom.loadedSuggestions.querySelector('a.selected');\r\n selectedSuggestion?.classList.remove('selected');\r\n }\r\n}\r\n\r\nexport default Module;\r\n","import { Component } from '@verndale/core'\r\nimport { isFocusable, keyCode } from '../../helpers'\r\nimport { gsap } from 'gsap'\r\n\r\nclass Module extends Component {\r\n setupDefaults() {\r\n this.handleEscape = this.handleEscape.bind(this);\r\n this.handleFocus = this.handleFocus.bind(this);\r\n\r\n this.ignoreUtilFocusChanges = false;\r\n\r\n this.dom = {\r\n html: document.querySelector('html'),\r\n body: document.querySelector('body'),\r\n pageContainer: document.querySelector('.page-container'),\r\n stickyMenu: this.el.querySelector('.header__sticky'),\r\n drawer: this.el.querySelector('.language-menu'),\r\n trigger: this.el.querySelector('.header__language-toggle'),\r\n triggerIconOpen: this.el.querySelector('.header__language-toggle-icon-open'),\r\n triggerIconClose: this.el.querySelector('.header__language-toggle-icon-close')\r\n };\r\n }\r\n\r\n addEventListeners() {\r\n document.addEventListener('keyup', this.handleEscape);\r\n document.addEventListener('focus', this.handleFocus, true);\r\n document.addEventListener('click', this.handleClickOutside.bind(this));\r\n }\r\n\r\n removeEventListeners() {\r\n document.removeEventListener('keyup', this.handleEscape);\r\n document.removeEventListener('focus', this.handleFocus, true);\r\n }\r\n\r\n toggleDrawer() {\r\n if (this.el.classList.contains('header--language-menu-open')) {\r\n this.closeDrawer();\r\n document.dispatchEvent(new Event('menuClose'));\r\n } else {\r\n this.openDrawer();\r\n }\r\n }\r\n\r\n openDrawer() {\r\n const tl = gsap.timeline();\r\n const { innerHeight, scrollY } = window;\r\n const { offsetTop } = this.dom.pageContainer;\r\n const headerHeight = this.dom.stickyMenu.offsetHeight;\r\n const difference = offsetTop - scrollY;\r\n const isTabletLandscape = window.matchMedia('(min-width: 1024px)');\r\n\r\n if (!isTabletLandscape.matches) this.dom.html.classList.add('is-scroll-locked');\r\n\r\n gsap.to(this.dom.triggerIconOpen, {\r\n opacity: 0,\r\n duration: 0.3,\r\n onComplete: () => {\r\n gsap.to(this.dom.triggerIconOpen, { display: 'none' });\r\n gsap.to(this.dom.triggerIconClose, { display: 'flex' });\r\n gsap.to(this.dom.triggerIconClose, {\r\n opacity: 1,\r\n duration: 0.3\r\n })\r\n }\r\n });\r\n\r\n this.el.classList.add('header--language-menu-open');\r\n tl.set(this.dom.drawer, {\r\n height: 0,\r\n autoAlpha: 1\r\n });\r\n tl.to(this.dom.drawer, {\r\n height: (isTabletLandscape.matches ? 'auto' : `${innerHeight - headerHeight - (difference > 0 ? difference : 0)}px`),\r\n duration: 0.4\r\n });\r\n\r\n this.addEventListeners();\r\n }\r\n\r\n closeDrawer() {\r\n const tl = gsap.timeline();\r\n this.el.classList.remove('header--language-menu-open');\r\n gsap.to(this.dom.triggerIconClose, {\r\n opacity: 0,\r\n duration: 0.3,\r\n onComplete: () => {\r\n gsap.to(this.dom.triggerIconClose, { display: 'none' });\r\n gsap.to(this.dom.triggerIconOpen, { display: 'flex' });\r\n gsap.to(this.dom.triggerIconOpen, {\r\n opacity: 1,\r\n duration: 0.3\r\n })\r\n }\r\n });\r\n\r\n tl.to(this.dom.drawer, {\r\n height: 0,\r\n padding: 0,\r\n duration: 0.4\r\n });\r\n tl.set(this.dom.drawer, { height: null, padding: '', autoAlpha: 0 });\r\n\r\n this.removeEventListeners();\r\n }\r\n\r\n handleClickOutside(e) {\r\n if (!this.dom.drawer.contains(e.target) && (!this.dom.trigger.contains(e.target))){\r\n this.closeDrawer();\r\n }\r\n }\r\n\r\n focusFirstDescendant(element) {\r\n for (let i = 0; i < element.childNodes.length; i++) {\r\n const child = element.childNodes[i];\r\n if (this.attemptFocus(child) || this.focusFirstDescendant(child)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n focusLastDescendant(element) {\r\n for (let i = element.childNodes.length - 1; i >= 0; i--) {\r\n const child = element.childNodes[i];\r\n if (this.attemptFocus(child) || this.focusLastDescendant(child)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n handleEscape(e) {\r\n const key = e.which || e.keyCode;\r\n\r\n if (key === keyCode.ESC) {\r\n e.stopPropagation();\r\n this.closeDrawer();\r\n }\r\n }\r\n\r\n handleFocus(e) {\r\n if (\r\n this.ignoreUtilFocusChanges ||\r\n e.target.classList.contains('header__language-toggle') ||\r\n e.target.classList.contains('header__hamburger-menu-toggle') ||\r\n e.target.classList.contains('header__search-toggle')\r\n )\r\n return;\r\n\r\n if (this.dom.drawer.contains(e.target)) {\r\n this.lastFocus = e.target;\r\n } else {\r\n this.focusFirstDescendant(this.dom.drawer);\r\n\r\n if (this.lastFocus === document.activeElement) {\r\n this.focusLastDescendant(this.dom.drawer);\r\n }\r\n this.lastFocus = document.activeElement;\r\n }\r\n }\r\n\r\n attemptFocus(element) {\r\n if (!isFocusable(element)) {\r\n return false;\r\n }\r\n\r\n this.ignoreUtilFocusChanges = true;\r\n try {\r\n element.focus();\r\n } catch (e) {\r\n return;\r\n }\r\n this.ignoreUtilFocusChanges = false;\r\n return document.activeElement === element;\r\n }\r\n}\r\n\r\nexport default Module;\r\n","import { Component } from '@verndale/core';\r\nimport { gsap } from 'gsap';\r\nimport 'waypoints/lib/noframework.waypoints';\r\nimport { camelize } from '../../helpers';\r\n\r\nclass Module extends Component {\r\n setupDefaults() {\r\n this.isDesktop = window.matchMedia('(min-width: 1280px)');\r\n this.isTablet = window.matchMedia('(min-width: 768px)');\r\n this.isMobile = !this.isDesktop.matches && !this.isTablet.matches;\r\n this.currentLink = 0;\r\n\r\n this.dom = {\r\n anchors: [...document.querySelectorAll('[data-anchor]')],\r\n container: this.el.querySelector('.sticky-navigation'),\r\n navContainer: this.el.querySelector('.sticky-navigation__jump-links'),\r\n prev: this.el.querySelector('.sticky-navigation__button.prev'),\r\n next: this.el.querySelector('.sticky-navigation__button.next')\r\n };\r\n\r\n this.buildJumpLinks();\r\n }\r\n\r\n addListeners() {\r\n this.dom.anchors.forEach((item, i) => {\r\n new Waypoint({\r\n element: item,\r\n offset: 200,\r\n handler: direction => {\r\n if (direction === 'down') {\r\n this.selectOption(i);\r\n } else {\r\n this.selectOption(i - 1);\r\n }\r\n }\r\n });\r\n });\r\n\r\n this.dom.next.addEventListener('click', this.nextLink.bind(this));\r\n this.dom.prev.addEventListener('click', this.prevLink.bind(this));\r\n document.addEventListener('menuClose', () => Waypoint.refreshAll());\r\n if (this.dom.jumpLinksList) {\r\n window.addEventListener('resize', this.checkScrollWidth.bind(this));\r\n }\r\n }\r\n\r\n buildJumpLinks() {\r\n if (this.dom.anchors.length) {\r\n this.totalLinks = this.dom.anchors.length;\r\n this.dom.jumpLinksList = document.createElement('ul');\r\n const links = this.dom.anchors\r\n .map(anchor => {\r\n anchor.id = camelize(anchor.dataset.anchor);\r\n return `<li role=\"listbox\"><a href=\"#${anchor.id}\">${anchor.dataset.anchor}</a></li>`;\r\n })\r\n .join('');\r\n\r\n this.dom.jumpLinksList.innerHTML = links;\r\n this.dom.jumpLinksList.setAttribute('role', 'listbox');\r\n this.dom.navContainer.appendChild(this.dom.jumpLinksList);\r\n this.dom.jumpLiks = [...this.dom.jumpLinksList.querySelectorAll('a')];\r\n this.dom.jumpLiks.forEach(link =>\r\n link.addEventListener('click', this.handleJumpLinkClick.bind(this))\r\n );\r\n\r\n this.dom.container.classList.add('has-jumpLinks')\r\n this.handleCheckInitialAnchor();\r\n\r\n if (this.isDesktop.matches && this.dom.jumpLinksList) {\r\n this.checkScrollWidth();\r\n }\r\n }\r\n }\r\n\r\n checkScrollWidth() {\r\n const linksWidth = this.dom.jumpLinksList.scrollWidth;\r\n const containerWidth = this.dom.navContainer.clientWidth;\r\n\r\n if (linksWidth > containerWidth) {\r\n this.dom.container.classList.add('is-long');\r\n this.dom.container.classList.remove('is-short');\r\n } else {\r\n this.dom.container.classList.remove('is-long');\r\n this.dom.container.classList.add('is-short');\r\n }\r\n\r\n const target = this.dom.jumpLiks[this.currentLink].getAttribute('href');\r\n this.scrollToJumpLink(target);\r\n }\r\n\r\n handleCheckInitialAnchor() {\r\n const { hash } = window.location;\r\n\r\n if (hash && hash !== '#hero-intro-section') {\r\n if (this.currentLink === 0) {\r\n this.dom.prev.setAttribute('disabled', 'disabled');\r\n } else if (this.currentLink === this.totalLinks - 1) {\r\n this.dom.next.setAttribute('disabled', 'disabled');\r\n }\r\n this.jumpToAnchor(hash);\r\n } else {\r\n this.toggleButtons(0);\r\n }\r\n }\r\n\r\n handleJumpLinkClick(e) {\r\n e.preventDefault();\r\n\r\n const targetId = e.target.getAttribute('href');\r\n this.jumpToAnchor(targetId, true);\r\n }\r\n\r\n jumpToAnchor(targetId, push) {\r\n const target = document.getElementById(targetId.replace('#', ''));\r\n\r\n if (target) {\r\n gsap.to(window, { duration: 0, scrollTo: target.offsetTop - 96 - 30 });\r\n this.scrollToJumpLink(targetId);\r\n\r\n if (push) {\r\n history.pushState(null, null, targetId);\r\n }\r\n }\r\n }\r\n\r\n toggleButtons(offsetLeft) {\r\n const screenWidth = window.innerWidth;\r\n const listWidth = this.dom.jumpLinksList.clientWidth;\r\n const remaining = listWidth - offsetLeft + (this.isMobile ? 0 : 80);\r\n\r\n if (remaining <= screenWidth) {\r\n this.dom.next.setAttribute('disabled', 'disabled');\r\n } else {\r\n this.dom.next.removeAttribute('disabled');\r\n }\r\n\r\n if (offsetLeft <= 80) {\r\n this.dom.prev.setAttribute('disabled', 'disabled');\r\n } else {\r\n this.dom.prev.removeAttribute('disabled');\r\n }\r\n }\r\n\r\n scrollToJumpLink(target) {\r\n const screenWidth = window.innerWidth;\r\n const listWidth = this.dom.jumpLinksList.clientWidth;\r\n const {\r\n clientWidth,\r\n offsetLeft\r\n } = this.dom.jumpLiks.filter(anchor => anchor.getAttribute('href') === target)[0].parentNode;\r\n const remaining = listWidth - offsetLeft + clientWidth;\r\n const isShortList = this.dom.container.classList.contains('is-short');\r\n\r\n if (this.isMobile) {\r\n gsap.to(this.dom.jumpLinksList, {\r\n duration: 0,\r\n left: -offsetLeft,\r\n onComplete: () => this.toggleButtons(offsetLeft)\r\n });\r\n } else if (this.isTablet.matches && (!this.isDesktop.matches || !isShortList) && ((remaining + 90) >= screenWidth)) {\r\n gsap.to(this.dom.jumpLinksList, {\r\n duration: 0,\r\n left: -(offsetLeft - 80),\r\n onComplete: () => this.toggleButtons(offsetLeft)\r\n });\r\n } else if (this.isDesktop.matches && isShortList) {\r\n gsap.to(this.dom.jumpLinksList, {\r\n duration: 0,\r\n left: 0,\r\n onComplete: () => this.toggleButtons(offsetLeft)\r\n });\r\n }\r\n }\r\n\r\n selectOption(i) {\r\n this.dom.jumpLiks.forEach((link, index) => {\r\n if (index === i) {\r\n link.classList.add('active');\r\n this.scrollToJumpLink(link.getAttribute('href'));\r\n } else {\r\n link.classList.remove('active');\r\n }\r\n });\r\n }\r\n\r\n nextLink() {\r\n const next = this.currentLink + 1;\r\n\r\n if (next >= this.totalLinks) {\r\n this.currentLink = this.totalLinks;\r\n } else {\r\n this.currentLink = next;\r\n }\r\n const target = this.dom.jumpLiks[this.currentLink].getAttribute('href');\r\n this.scrollToJumpLink(target);\r\n }\r\n\r\n prevLink() {\r\n const prev = this.currentLink - 1;\r\n\r\n if (prev <= 0) {\r\n this.currentLink = 0;\r\n } else {\r\n this.currentLink = prev;\r\n }\r\n const target = this.dom.jumpLiks[this.currentLink].getAttribute('href');\r\n this.scrollToJumpLink(target);\r\n }\r\n}\r\n\r\nexport default Module;\r\n","import { Component } from '@verndale/core';\r\nimport HamburgerMenu from './hamburgerMenu';\r\nimport MegaMenu from './megaMenu';\r\nimport MegaMenuIntegratedTabs from './megaMenuIntegratedTabs';\r\nimport HeaderSearch from './search';\r\nimport LanguageMenu from './languageMenu';\r\nimport StickyNavigation from './stickyNavigation'\r\n\r\nclass Module extends Component {\r\n setupDefaults() {\r\n this.dom = {\r\n pageContainer: document.querySelector('.page-container'),\r\n hamburgerMenuToggle: [...this.el.querySelectorAll(\r\n '.hamburger-menu__primary-link'\r\n )],\r\n hamburgerMenu: this.el.querySelector('.hamburger-menu__submenu'),\r\n hamburgerMenuToggleSmDevice: this.el.querySelector('.header__hamburger-menu-toggle'),\r\n hamburgerMenuSmDevice: this.el.querySelector('.hamburger-menu__sm-device'),\r\n languageMenuToggle: this.el.querySelector('.header__language-toggle'),\r\n languageMenu: this.el.querySelector('.language-menu'),\r\n searchToggle: this.el.querySelector('.header__search-toggle'),\r\n headerSearch: this.el.querySelector('.header-search'),\r\n stickySubNav: this.el.querySelector('.header__sticky-hidden'),\r\n megaMenu: this.el.querySelector('.mega-menu__submenu'),\r\n megaMenuIntegratedTabs: this.el.querySelectorAll('.mega-menu-integrated-tab'),\r\n megaMenuSmDevice: this.el.querySelector('.mega-menu__sm-device')\r\n };\r\n\r\n if (this.dom.hamburgerMenu) {\r\n this.hamburgerMenu = new HamburgerMenu(this.el);\r\n }\r\n\r\n if (this.dom.megaMenu) {\r\n this.megaMenu = new MegaMenu(this.el);\r\n this.dom.megaMenuIntegratedTabs.forEach(tab => {\r\n this.megaMenuIntegratedTabs = new MegaMenuIntegratedTabs(tab);\r\n });\r\n }\r\n\r\n if (this.dom.headerSearch) {\r\n this.headerSearch = new HeaderSearch(this.el);\r\n }\r\n\r\n if (this.dom.languageMenu) {\r\n this.languageMenu = new LanguageMenu(this.el);\r\n }\r\n\r\n new StickyNavigation(this.el);\r\n\r\n this.handleScroll();\r\n }\r\n\r\n addListeners() {\r\n document.addEventListener('scroll', this.handleScroll.bind(this));\r\n window.addEventListener('resize', this.handleScroll.bind(this));\r\n\r\n if (this.dom.searchToggle) this.dom.searchToggle.addEventListener('click', this.toggleSearch.bind(this));\r\n\r\n this.dom.languageMenuToggle.addEventListener('click', this.toggleLanguageMenu.bind(this));\r\n\r\n this.dom.hamburgerMenuToggle.forEach(button => {\r\n button.addEventListener('click', this.toggleHamburgerMenu.bind(this));\r\n });\r\n\r\n this.dom.hamburgerMenuToggleSmDevice.addEventListener('click', this.toggleHamburgerMenuSmDevice.bind(this));\r\n\r\n }\r\n\r\n toggleSearch(e) {\r\n if (this.languageMenu) {\r\n this.languageMenu.closeDrawer(e);\r\n }\r\n\r\n if (this.hamburgerMenu) {\r\n this.hamburgerMenu.hideSubmenus(e);\r\n this.hamburgerMenu.closeDrawer(e);\r\n }\r\n\r\n if (this.megaMenu) {\r\n this.megaMenu.hideSubmenus(e);\r\n this.megaMenu.closeDrawer(e);\r\n }\r\n\r\n this.headerSearch.toggleDrawer(e);\r\n }\r\n\r\n toggleLanguageMenu(e) {\r\n if (this.headerSearch) {\r\n this.headerSearch.closeDrawer(e);\r\n }\r\n\r\n if (this.hamburgerMenu) {\r\n this.hamburgerMenu.hideSubmenus(e);\r\n this.hamburgerMenu.closeDrawer(e);\r\n }\r\n\r\n if (this.megaMenu) {\r\n this.megaMenu.hideSubmenus(e);\r\n this.megaMenu.closeDrawer(e);\r\n }\r\n\r\n this.languageMenu.toggleDrawer(e);\r\n }\r\n\r\n toggleHamburgerMenu(e) {\r\n if (this.languageMenu) {\r\n this.languageMenu.closeDrawer(e);\r\n }\r\n\r\n if (this.headerSearch) {\r\n this.headerSearch.closeDrawer(e);\r\n }\r\n }\r\n\r\n toggleHamburgerMenuSmDevice(e) {\r\n if (this.languageMenu) {\r\n this.languageMenu.closeDrawer(e);\r\n }\r\n\r\n if (this.headerSearch) {\r\n this.headerSearch.closeDrawer(e);\r\n }\r\n\r\n if (this.hamburgerMenu) {\r\n this.hamburgerMenu.toggleDrawer(e);\r\n } else {\r\n this.megaMenu.toggleDrawer(e);\r\n }\r\n }\r\n\r\n handleScroll() {\r\n const hero = document.querySelector('[data-hero=\"true\"]');\r\n const { offsetHeight, offsetTop } = hero;\r\n const headerHeight = this.el.offsetHeight;\r\n const scroll = window.scrollY;\r\n const pageContentScroll = scroll - offsetTop;\r\n\r\n if (pageContentScroll >= headerHeight) {\r\n this.el.classList.add('scrolled');\r\n } else {\r\n this.el.classList.remove('scrolled');\r\n }\r\n\r\n if (pageContentScroll >= offsetHeight - headerHeight) {\r\n this.dom.stickySubNav.classList.add('show');\r\n } else {\r\n this.dom.stickySubNav.classList.remove('show');\r\n }\r\n }\r\n}\r\n\r\nexport default Module;\r\n"],"sourceRoot":""}