{"version":3,"file":"header-C4Ph_vtg.js","sources":["../../../../../src/scripts/modules/header/header.ts"],"sourcesContent":["import { Component } from '@verndale/core';\nimport { isLargeDesktop, debounce } from '../../helpers';\n\nclass Header extends Component {\n lastScrollTop: number;\n outsideClickListener: EventListenerOrEventListenerObject;\n isLargeDesktop: boolean;\n bodyScrollTop: number;\n alertBannerClosed: boolean;\n handleOpenedNavigationKeyDownBound: EventListenerOrEventListenerObject;\n\n constructor(el: HTMLElement) {\n super(el);\n this.lastScrollTop = 0;\n this.outsideClickListener = this.handleOutsideClick.bind(this);\n this.isLargeDesktop = isLargeDesktop();\n this.bodyScrollTop = 0;\n this.alertBannerClosed = false;\n this.handleOpenedNavigationKeyDownBound = this.handleOpenedNaviationKeyDown.bind(this) as EventListenerOrEventListenerObject;\n }\n\n setupDefaults() {\n this.dom = {\n alertBanner: this.el.querySelector('.alert-banner'),\n closeAlertBanner: this.el.querySelector('.alert-banner__close-button'),\n hamburguerButton: this.el.querySelector('.global-navigation__hamburguer-button'),\n closeMenuButton: this.el.querySelector('.global-navigation__close-button'),\n utilityNavigation: this.el.querySelector('.utility-navigation'),\n searchEraseButton: this.el.querySelectorAll('button.search-menu__erase-button')[1],\n navigationWrapper: this.el.querySelector('.global-navigation__menu-wrapper'),\n navigationMenus: this.el.querySelectorAll('.global-navigation__menu'),\n navigationPrimaryItemsContainer: this.el.querySelector('.global-navigation__items'),\n navigationPrimaryItems: this.el.querySelectorAll('.global-navigation__items__navigation-item'),\n navigationPrimaryTriggers: this.el.querySelectorAll('.global-navigation__items__navigation-button'),\n navigationSecondaryTriggers: this.el.querySelectorAll('.global-navigation__menu-column__navigation-button'),\n backToMenuTriggers: this.el.querySelectorAll('.global-navigation__menu__back-button'),\n backToSecondaryMenuTriggers: this.el.querySelectorAll('.global-navigation__menu-column__back-button'),\n navigationPrimaryLinks: this.el.querySelectorAll('.global-navigation__menu__item-link'),\n navigationPrimaryButtons: this.el.querySelectorAll('.global-navigation__items__navigation-button'),\n navigationSecondaryLinks: this.el.querySelectorAll('.global-navigation__items__navigation-link'),\n };\n\n this.checkMobileNavigationVisibility();\n this.checkAlertBanner();\n }\n\n addListeners() {\n (this.dom.hamburguerButton as HTMLElement).addEventListener('click', this.openMobileNavigation.bind(this));\n (this.dom.closeMenuButton as HTMLElement).addEventListener('click', this.closeMobileNavigation.bind(this));\n \n if (this.dom.closeAlertBanner) {\n (this.dom.closeAlertBanner as HTMLElement).addEventListener('click', this.closeAllertBanner.bind(this));\n }\n\n Array.from(this.dom.navigationSecondaryLinks as NodeListOf).forEach((navigationSecondaryLink) => {\n navigationSecondaryLink.addEventListener('keydown', this.handleSecondaryLinkKeydown.bind(this) as EventListener);\n });\n\n Array.from(this.dom.navigationPrimaryLinks as NodeListOf).forEach((navigationPrimaryLink) => {\n navigationPrimaryLink.addEventListener('keydown', this.handleSecondaryLinkKeydown.bind(this) as EventListener);\n });\n\n Array.from(this.dom.navigationPrimaryButtons as NodeListOf).forEach((navigationPrimaryButton) => {\n navigationPrimaryButton.addEventListener('keydown', this.handleSecondaryLinkKeydown.bind(this) as EventListener);\n });\n\n window.addEventListener('scroll', this.handleUtilityNavigationVisibility.bind(this));\n\n Array.from(this.dom.navigationPrimaryTriggers as NodeListOf).forEach((navigationPrimaryTrigger) => {\n navigationPrimaryTrigger.addEventListener('click', this.handleSecondaryMenu.bind(this));\n });\n\n Array.from(this.dom.navigationSecondaryTriggers as NodeListOf).forEach((navigationSecondaryTrigger) => {\n navigationSecondaryTrigger.addEventListener('click', this.handleTertiaryMenu.bind(this));\n });\n\n Array.from(this.dom.backToMenuTriggers as NodeListOf).forEach((backToMenuTrigger) => {\n backToMenuTrigger.addEventListener('click', this.handleBackToMenu.bind(this));\n });\n\n Array.from(this.dom.backToSecondaryMenuTriggers as NodeListOf).forEach((backToSecondaryMenuTrigger) => {\n backToSecondaryMenuTrigger.addEventListener('click', this.handleBackToSecondaryMenu.bind(this));\n });\n\n window.addEventListener(\n 'resize',\n debounce(this.checkViewportWidth.bind(this), 300)\n );\n }\n\n checkViewportWidth() {\n this.isLargeDesktop = isLargeDesktop();\n this.checkAlertBanner();\n }\n\n handleSecondaryLinkKeydown(event: KeyboardEvent) {\n const activeItem = (event.target as HTMLElement).closest('.global-navigation__items__navigation-item') as HTMLElement;\n\n if (!activeItem) {\n return;\n }\n\n const prevItem = activeItem.previousElementSibling as HTMLElement;\n const prevFocusable = prevItem && (prevItem.querySelector('.global-navigation__items__navigation-button') as HTMLElement || prevItem.querySelector('.global-navigation__items__navigation-link') as HTMLElement);\n const nextItem = activeItem.nextElementSibling as HTMLElement;\n const nextFocusable = nextItem && (nextItem.querySelector('.global-navigation__items__navigation-button') as HTMLElement || nextItem.querySelector('.global-navigation__items__navigation-link') as HTMLElement);\n\n switch (event.key) {\n case 'ArrowLeft':\n if (prevFocusable) {\n prevFocusable.focus();\n }\n event.preventDefault();\n break;\n\n case 'ArrowRight':\n if (nextFocusable) {\n nextFocusable.focus();\n }\n event.preventDefault();\n break;\n\n default:\n break;\n }\n }\n\n checkAlertBanner() {\n if (this.alertBannerClosed) return;\n\n if (this.dom.alertBanner) {\n const alertBanner = this.dom.alertBanner as HTMLElement;\n const allertBannerHeight = (alertBanner.querySelector('.container') as HTMLElement).offsetHeight;\n\n this.el.style.insetBlockStart = `-${allertBannerHeight}px`;\n alertBanner.style.blockSize = `${allertBannerHeight}px`;\n }\n }\n\n closeAllertBanner() {\n const alertBanner = this.dom.alertBanner as HTMLElement;\n const allertBannerHeight = alertBanner.offsetHeight;\n this.alertBannerClosed = true;\n \n alertBanner.style.insetBlockStart = `-${allertBannerHeight}px`;\n alertBanner.style.blockSize = `0`;\n\n if (!isLargeDesktop()) {\n this.el.style.insetBlockStart = `0`;\n }\n\n Array.from(alertBanner.querySelectorAll('a, button')).forEach((link) => {\n link.setAttribute('tabindex', '0');\n });\n }\n\n showUtilityNavigation() {\n const alertBanner = this.dom.alertBanner as HTMLElement;\n const allertBannerHeight = alertBanner?.offsetHeight || 0;\n const utilityNavigation = this.dom.utilityNavigation as HTMLElement;\n\n utilityNavigation.setAttribute('aria-hidden', 'false');\n this.el.style.insetBlockStart = `-${allertBannerHeight}px`;\n\n\n Array.from(utilityNavigation.querySelectorAll('a, button')).forEach((link) => {\n link.setAttribute('tabindex', '0');\n });\n }\n\n hideUtilityNavigation() {\n const utilityNavigation = this.dom.utilityNavigation as HTMLElement;\n const utilityNavigationHeight = utilityNavigation.offsetHeight;\n const alertBanner = this.dom.alertBanner as HTMLElement;\n const allertBannerHeight = alertBanner?.offsetHeight || 0;\n\n utilityNavigation.setAttribute('aria-hidden', 'true');\n this.el.style.insetBlockStart = `-${utilityNavigationHeight + allertBannerHeight}px`;\n\n Array.from(utilityNavigation.querySelectorAll('a, button')).forEach((link) => {\n link.setAttribute('tabindex', '-1');\n });\n }\n\n handleUtilityNavigationVisibility() {\n const currentScroll = window.scrollY || document.documentElement.scrollTop;\n\n const alertBanner = this.dom.alertBanner as HTMLElement;\n const allertBannerHeight = alertBanner?.offsetHeight || 0;\n const isBelowAlertBanner = currentScroll > allertBannerHeight;\n\n if (isBelowAlertBanner) {\n if (currentScroll > this.lastScrollTop) {\n this.hideUtilityNavigation();\n } else {\n this.showUtilityNavigation();\n }\n }\n\n this.lastScrollTop = currentScroll;\n }\n\n closeAllMenus() {\n document.removeEventListener('keydown', this.handleOpenedNavigationKeyDownBound);\n\n Array.from(this.dom.navigationMenus as NodeListOf).forEach((navigationMenu) => {\n navigationMenu.setAttribute('aria-hidden', 'true');\n Array.from(navigationMenu.querySelectorAll('a, button')).forEach((link) => {\n link.setAttribute('tabindex', '-1');\n });\n const dropdownInner = navigationMenu.querySelector('.global-navigation__menu-inner') as HTMLElement;\n dropdownInner.style.transform = `none`;\n });\n\n Array.from(this.dom.navigationPrimaryTriggers as NodeListOf).forEach((navigationItem) => {\n navigationItem.setAttribute('aria-expanded', 'false');\n });\n\n Array.from(this.dom.navigationPrimaryItems as NodeListOf).forEach((navigationItem) => {\n navigationItem.classList.remove('global-navigation__items__navigation-item--active');\n (this.dom.navigationPrimaryItemsContainer as HTMLElement).classList.remove('global-navigation__items--hidden');\n });\n\n\n if (isLargeDesktop()) {\n document.removeEventListener('click', this.outsideClickListener);\n }\n }\n\n openMenu(menuItem: HTMLElement, dropdown: HTMLElement) {\n const trigger = menuItem.querySelector('.global-navigation__items__navigation-button') as HTMLElement;\n trigger.setAttribute('aria-expanded', 'true');\n\n document.addEventListener('keydown', this.handleOpenedNavigationKeyDownBound);\n\n menuItem.classList.add('global-navigation__items__navigation-item--active');\n (this.dom.navigationPrimaryItemsContainer as HTMLElement).classList.add('global-navigation__items--hidden');\n const dropdownInner = dropdown.querySelector('.global-navigation__menu-inner') as HTMLElement;\n\n const diff = this.getWidthDifference(dropdownInner);\n\n if (diff < 0 && isLargeDesktop()) {\n dropdownInner.style.transform = `translateX(${diff}px)`;\n }\n\n dropdown.setAttribute('aria-hidden', 'false');\n Array.from(dropdown.querySelectorAll('a, button')).forEach((link) => {\n link.setAttribute('tabindex', '0');\n });\n\n if (isLargeDesktop()) {\n document.addEventListener('click', this.outsideClickListener);\n }\n }\n\n checkMobileNavigationVisibility() {\n if (!isLargeDesktop()) {\n (this.dom.navigationWrapper as HTMLElement).setAttribute('aria-hidden', 'true');\n }\n\n this.closeAllMenus();\n }\n\n lockScroll() {\n setTimeout(() => {\n if (!this.isLargeDesktop) {\n this.bodyScrollTop = window.scrollY || document.documentElement.scrollTop;\n document.body.style.position = 'fixed';\n document.body.style.top = `-${this.bodyScrollTop}px`;\n document.body.style.width = '100%';\n }\n }, 300);\n }\n\n unlockScroll() {\n if (!this.isLargeDesktop) {\n document.body.style.position = '';\n document.body.style.top = '';\n document.body.style.width = '';\n window.scrollTo({ top: this.bodyScrollTop, left: 0, behavior: 'instant' });\n }\n }\n\n openMobileNavigation() {\n this.lockScroll();\n\n this.el.classList.add('header--navigation-opened');\n (this.dom.navigationWrapper as HTMLElement).setAttribute('aria-hidden', 'false');\n }\n\n closeMobileNavigation() { \n (this.dom.searchEraseButton as HTMLInputElement).click();\n\n this.el.classList.remove('header--navigation-opened');\n this.unlockScroll();\n (this.dom.navigationWrapper as HTMLElement).setAttribute('aria-hidden', 'true');\n this.closeAllMenus();\n }\n\n handleOpenedNaviationKeyDown(event: KeyboardEvent) {\n if (event.key === 'Escape') {\n this.closeAllMenus();\n }\n }\n\n handleSecondaryMenu(ev: Event) {\n const menuItem = (ev.currentTarget as HTMLElement).parentElement as HTMLElement;\n const dropdown = (ev.currentTarget as HTMLElement).nextElementSibling as HTMLElement;\n\n if (menuItem.classList.contains('global-navigation__items__navigation-item--active')) {\n this.closeAllMenus();\n return;\n }\n\n this.closeAllMenus();\n this.openMenu(menuItem, dropdown);\n }\n\n handleBackToMenu() {\n this.closeAllMenus();\n }\n\n handleBackToSecondaryMenu(ev: Event) {\n const menuItem = (ev.currentTarget as HTMLElement).closest('.global-navigation__menu-column') as HTMLElement;\n const secondary = menuItem.closest('.global-navigation__items__navigation-item') as HTMLElement;\n secondary.classList.remove('global-navigation__items__navigation-item--hidden'); \n menuItem.classList.remove('--active');\n }\n\n openTertiaryMenu(menuItem: HTMLElement) {\n const secondary = menuItem.closest('.global-navigation__items__navigation-item') as HTMLElement;\n secondary.classList.add('global-navigation__items__navigation-item--hidden'); \n menuItem.classList.add('--active');\n }\n\n handleTertiaryMenu(ev: Event) {\n const menuItem = (ev.currentTarget as HTMLElement).parentElement as HTMLElement;\n this.openTertiaryMenu(menuItem);\n }\n\n closeDropdowns() {\n this.el.classList.remove('header--navigation-opened');\n this.unlockScroll();\n (this.dom.navigationWrapper as HTMLElement).setAttribute('aria-hidden', 'true');\n this.closeAllMenus();\n }\n\n handleOutsideClick(event: Event) {\n const header = this.el.querySelector('.global-navigation .container') as HTMLElement;\n const isClickInside = header.contains(event.target as Node);\n if (!isClickInside) {\n this.closeDropdowns();\n }\n }\n\n getWidthDifference(menu: HTMLElement) {\n const header = this.el.querySelector('.global-navigation .container') as HTMLElement;\n const menuRight = menu.getBoundingClientRect().right;\n const navRight = header.getBoundingClientRect().right - 48;\n\n return navRight - menuRight;\n }\n}\n\nexport default Header;"],"names":["Header","Component","el","__publicField","isLargeDesktop","navigationSecondaryLink","navigationPrimaryLink","navigationPrimaryButton","navigationPrimaryTrigger","navigationSecondaryTrigger","backToMenuTrigger","backToSecondaryMenuTrigger","debounce","event","activeItem","prevItem","prevFocusable","nextItem","nextFocusable","alertBanner","allertBannerHeight","link","utilityNavigation","utilityNavigationHeight","currentScroll","navigationMenu","dropdownInner","navigationItem","menuItem","dropdown","diff","ev","menu","header","menuRight"],"mappings":"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"}