{"version":3,"file":"./modules/Header.xxxxxxxx.js","mappings":"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","sources":["webpack:///./modules/Navigation.ts","webpack:///./modules/Header.ts"],"sourcesContent":["const moduleSelector = '[data-module=\"Navigation\"]';\r\nimport { removeClassFromList, addClass, removeClass, hasClass } from '../helpers/DOMHelpers';\r\nimport { isTouch, isMobile } from '../helpers/helperFunctions';\r\n\r\nexport default class Navigation {\r\n private navigation: HTMLElement;\r\n private globalFlyout: HTMLElement;\r\n private firstLevelList: HTMLElement;\r\n private secondLevelList: HTMLElement;\r\n private navRow: HTMLElement;\r\n private isMobile = (window.innerWidth < 768);\r\n\r\n static setup(selector: string = moduleSelector): void {\r\n Array.from(document.querySelectorAll(selector)).filter((node: HTMLElement) => !node.dataset.moduleInitialized).forEach((element: HTMLElement) => {\r\n new Navigation(element)\r\n element.dataset.moduleInitialized = 'true';\r\n });\r\n }\r\n\r\n constructor(public element: HTMLElement) {\r\n this.navigation = this.element.querySelector('.cw-header-nav');\r\n\r\n if (!this.navigation) return;\r\n\r\n this.globalFlyout = this.navigation.querySelector('.cw-flyout__layer');\r\n this.firstLevelList = this.navigation.querySelector('.cw-nav-first-level');\r\n this.secondLevelList = this.navigation.querySelector('.cw-nav-second-level');\r\n this.navRow = this.element.querySelector('.nav-row');\r\n\r\n Array.from(document.querySelectorAll('.cw-nav-first-level__item > a')).forEach((element: HTMLSelectElement) => {\r\n if (isMobile()) {\r\n element.addEventListener('click', (event) => {\r\n const target: HTMLElement = event.target;\r\n if (hasClass(target, 'cw-nav-first-level__link')) {\r\n event.preventDefault();\r\n this.openSecondLevelNav(event);\r\n }\r\n });\r\n }\r\n else if (isTouch()) {\r\n element.addEventListener('touchend', (event) => {\r\n const target: HTMLElement = event.target;\r\n if (hasClass(target, 'cw-nav-first-level__link')) {\r\n event.preventDefault();\r\n this.openSecondLevelNav(event);\r\n }\r\n });\r\n\r\n } else {\r\n element.addEventListener('click', (event) => {\r\n const target: HTMLElement = event.target;\r\n if (hasClass(target, 'cw-nav-first-level__link')) {\r\n event.preventDefault();\r\n this.openSecondLevelNav(event);\r\n }\r\n });\r\n }\r\n\r\n //trigger lazy loading to prevent menu sizing problem on opening\r\n if (element.nextElementSibling) {\r\n element.nextElementSibling.querySelectorAll('img').forEach((image: HTMLImageElement) => {\r\n image.setAttribute('src', image.getAttribute('data-src'));\r\n });\r\n }\r\n });\r\n\r\n var menuInUse, navRowInUse;\r\n this.navRow.addEventListener('mouseenter', (event) => { navRowInUse = true; });\r\n this.navRow.addEventListener('mouseleave', (event) => {\r\n navRowInUse = false;\r\n if (!menuInUse) {\r\n this.closeNavigation()\r\n }\r\n });\r\n\r\n var flyoutLayers = this.navigation.getElementsByClassName('cw-flyout-content');\r\n for (var key in flyoutLayers) {\r\n var layer = flyoutLayers[key];\r\n if (layer.offsetHeight !== undefined) {\r\n layer.addEventListener('mouseenter', (event) => { menuInUse = true; });\r\n layer.addEventListener('mouseleave', (event) => {\r\n menuInUse = false;\r\n if (!navRowInUse) {\r\n this.closeNavigation()\r\n }\r\n });\r\n }\r\n }\r\n\r\n Array.from(document.querySelectorAll('.has-subitems')).forEach((element: HTMLElement) => {\r\n element.addEventListener('click', (event) => this.openThirdLevelNav(event));\r\n });\r\n }\r\n\r\n public openSecondLevelNav(e) {\r\n const target = event.target,\r\n height = target.nextElementSibling.clientHeight,\r\n isActive = hasClass(target.parentElement, 'cw-nav-first-level__item--active'),\r\n hrefValue = target.getAttribute(\"href\");\r\n\r\n if (hrefValue === \"#\") {\r\n e.preventDefault();\r\n }\r\n\r\n if (isActive && this.isMobile) {\r\n this.closeNavigation();\r\n } else {\r\n this.openNavigation(target.parentElement, height);\r\n }\r\n }\r\n\r\n public openThirdLevelNav(event) {\r\n if (this.isMobile) {\r\n event.preventDefault();\r\n const currentTarget = event.currentTarget;\r\n const target = event.target,\r\n isActive = hasClass(target.parentElement, 'cw-nav-first-level__item--active');\r\n\r\n if (isActive) {\r\n currentTarget.parentElement.classList.remove('cw-nav-first-level__item--active');\r\n } else {\r\n this.resetAllLevels(this.secondLevelList.children)\r\n .showLevel(target.parentElement);\r\n }\r\n }\r\n }\r\n\r\n private openNavigation(levelItm: HTMLElement, levelHeight: number) {\r\n this.navRow.setAttribute('data-open', 'true');\r\n this.resetAllLevels(this.firstLevelList.children)\r\n .showLevel(levelItm)\r\n .adjustFlyout(levelHeight)\r\n .fadeInBody();\r\n\r\n return this;\r\n }\r\n\r\n private closeNavigation() {\r\n this.navRow.setAttribute('data-open', 'false');\r\n this.resetAllLevels(this.firstLevelList.children)\r\n .resetAllLevels(this.secondLevelList.children)\r\n .adjustFlyout()\r\n .fadeOutBody();\r\n\r\n return this;\r\n }\r\n\r\n private resetAllLevels(item) {\r\n removeClassFromList(item, 'cw-nav-first-level__item--active');\r\n return this;\r\n }\r\n\r\n private showLevel(levelItm: HTMLElement) {\r\n addClass(levelItm, 'cw-nav-first-level__item--active');\r\n return this;\r\n }\r\n\r\n private adjustFlyout(height: number = 0) {\r\n this.globalFlyout.style.maxHeight = height + 'px';\r\n return this;\r\n }\r\n\r\n private fadeInBody() {\r\n addClass(document.body, 'cw-nav--open');\r\n return this;\r\n }\r\n\r\n private fadeOutBody() {\r\n removeClass(document.body, 'cw-nav--open');\r\n return this;\r\n }\r\n}\r\n","const moduleSelector = '[data-module=\"Header\"]';\r\n\r\nimport Navigation from \"./Navigation\";\r\nimport { isIOS, IOSScroll } from \"../helpers/helperFunctions\";\r\nimport { addClass } from \"../helpers/DOMHelpers\";\r\n\r\n\r\nexport default class Header {\r\n private header: HTMLElement;\r\n private sticky: Number;\r\n private burgerMenu: HTMLElement;\r\n private navRowWrapper: HTMLElement;\r\n private headerContainerHeight: HTMLElement;\r\n\r\n static setup(selector: string = moduleSelector): void {\r\n Array.from(document.querySelectorAll(selector)).filter((node: HTMLElement) => !node.dataset.moduleInitialized).forEach((element: HTMLElement) => {\r\n new Header(element);\r\n element.dataset.moduleInitialized = 'true';\r\n });\r\n }\r\n\r\n constructor(public element: HTMLElement) {\r\n this.header = document.getElementById(\"header\");\r\n this.sticky = this.header.offsetHeight;\r\n this.burgerMenu = document.querySelector(\".burger-menu\");\r\n this.navRowWrapper = document.querySelector(\".nav-row\");\r\n this.headerContainerHeight = this.header.parentElement;\r\n\r\n new Navigation.setup(moduleSelector);\r\n\r\n window.addEventListener('scroll',\r\n () => {\r\n this.stickyHeader();\r\n });\r\n\r\n\r\n window.addEventListener('orientationchange', (event) => {\r\n // console.log(screen.orientation.angle);\r\n const orientationAngle = screen.orientation.angle,\r\n html = document.querySelector('html');\r\n\r\n if (orientationAngle == 90) {\r\n if (window.innerHeight <= 896) {\r\n addClass(html, 'fluid-width');\r\n }\r\n }\r\n })\r\n\r\n this.burgerMenu.addEventListener('click',\r\n (event) => {\r\n this.openHeaderMenu(event);\r\n\r\n if (window.innerWidth <= 896) {\r\n this.openHeaderMenuScroll(event);\r\n }\r\n });\r\n if (isIOS() && window.innerWidth <= 896) {\r\n this.setNavigationHeight();\r\n }\r\n }\r\n\r\n private stickyHeader(): void {\r\n // console.log(this.navRowWrapper.getAttribute('data-open'));\r\n if (window.pageYOffset > this.sticky && window.innerWidth > 896 || window.innerWidth < 896) {\r\n if (window.innerHeight >= this.calcNavHeight() || this.navRowWrapper.getAttribute('data-open') !== 'true' ) {\r\n this.header.classList.add(\"sticky\");\r\n this.headerContainerHeight.style.height = this.sticky + 'px';\r\n }\r\n } else {\r\n this.header.classList.remove(\"sticky\");\r\n if (window.innerWidth >= 896 && window.innerHeight >= this.calcNavHeight()) {\r\n this.closeHeaderMenu();\r\n }\r\n }\r\n }\r\n\r\n private calcNavHeight(): number {\r\n var navHeight = 0;\r\n var flyouts = document.getElementsByClassName('cw-flyout-content');\r\n for (var key in flyouts) {\r\n if (( flyouts[key]).offsetHeight !== undefined) {\r\n navHeight = Math.max(navHeight, ( flyouts[key]).offsetHeight);\r\n }\r\n }\r\n\r\n return navHeight + this.header.offsetHeight;\r\n }\r\n\r\n private openHeaderMenu(event: Event): void {\r\n const target: HTMLElement = event.currentTarget;\r\n target.classList.toggle('open');\r\n if (this.header.classList.contains(\"navigation-open\")) {\r\n this.closeHeaderMenu();\r\n } else {\r\n this.header.classList.add(\"navigation-open\");\r\n if (isIOS() && this.header.classList.contains(\"sticky\")) {\r\n document.body.classList.add(\"sticky-active\")\r\n }\r\n IOSScroll.prevent();\r\n }\r\n }\r\n\r\n private openHeaderMenuScroll(event: Event): void {\r\n const target: HTMLElement = event.currentTarget;\r\n target.closest('body').classList.toggle('overflow-hidden');\r\n }\r\n\r\n private closeHeaderMenu() {\r\n this.burgerMenu.classList.remove('open');\r\n this.header.classList.remove(\"navigation-open\");\r\n if (document.body.classList.contains(\"sticky-active\")) {\r\n document.body.classList.remove(\"sticky-active\")\r\n }\r\n IOSScroll.allow();\r\n }\r\n\r\n setNavigationHeight(): void {\r\n if (isIOS()) {\r\n this.navRowWrapper.style.height = (window.screen.height - 270) + 'px'; \r\n } else {\r\n this.navRowWrapper.style.height = 'calc(100vh - 150px)';\r\n }\r\n }\r\n}\r\n\r\nnew Header.setup();\r\n\r\n// Hot Module Replacement\r\nif (module.hot) {\r\n let nodesCache: HMRNodes[] = Array.from(document.querySelectorAll(moduleSelector)).map((element: Node) => ({ nodeToReplace: element, nodeOrigin: element.cloneNode(true) }));\r\n\r\n new Header.setup(moduleSelector);\r\n\r\n module.hot.accept(() => {\r\n new Header.setup(moduleSelector);\r\n });\r\n module.hot.dispose(() => {\r\n nodesCache.forEach(({nodeToReplace, nodeOrigin}) => { nodeToReplace = nodeToReplace.parentElement.replaceChild(nodeOrigin.cloneNode(true), nodeToReplace)});\r\n });\r\n} else {\r\n new Header.setup(moduleSelector);\r\n}"],"names":["element","isMobile","window","innerWidth","this","navigation","querySelector","menuInUse","navRowInUse","globalFlyout","firstLevelList","secondLevelList","navRow","Array","from","document","querySelectorAll","forEach","addEventListener","event","target","preventDefault","openSecondLevelNav","nextElementSibling","image","setAttribute","getAttribute","closeNavigation","flyoutLayers","getElementsByClassName","key","layer","undefined","offsetHeight","openThirdLevelNav","setup","selector","filter","node","dataset","moduleInitialized","Navigation","e","height","clientHeight","isActive","parentElement","openNavigation","currentTarget","classList","remove","resetAllLevels","children","showLevel","levelItm","levelHeight","adjustFlyout","fadeInBody","fadeOutBody","item","style","maxHeight","body","moduleSelector","header","getElementById","sticky","burgerMenu","navRowWrapper","headerContainerHeight","stickyHeader","orientationAngle","screen","orientation","angle","html","innerHeight","openHeaderMenu","openHeaderMenuScroll","setNavigationHeight","Header","pageYOffset","calcNavHeight","add","closeHeaderMenu","navHeight","flyouts","Math","max","toggle","contains","prevent","closest","allow"],"sourceRoot":""}