{"version":3,"sources":["dcc.header.js"],"names":["Header","[object Object]","el","this","scope","logo","querySelector","buttons","querySelectorAll","burger","primaryLinks","backLinks","closeLinks","openCallLinks","document","navigations","navOpen","callOpen","resizeId","isDesktop","checkIfDesktop","internal","bindTab","e","target","closest","toggleNav","removeEventListener","bindEvents","length","classList","add","window","addEventListener","waitForResize","event","key","shiftKey","viewport","preventDefault","focus","forEach","link","parentNode","setAttribute","contains","scrollY","style","setProperty","removeProperty","open","removeAttribute","remove","close","details","parentElement","navigation","toggleCall","nav","navHeight","offsetHeight","clearTimeout","setTimeout","toggle","displayMessage","closeMegaNav","message","ControlBinders","register"],"mappings":"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","sourcesContent":["class Header {\r\n constructor(el) {\r\n this.scope = el;\r\n this.logo = el.querySelector(\"[data-header-logo]\");\r\n this.buttons = el.querySelectorAll(\"[data-header-buttons] .button\");\r\n this.burger = el.querySelector(\"[data-burger]\");\r\n this.primaryLinks = el.querySelectorAll(\"[data-primary-link]\");\r\n this.backLinks = el.querySelectorAll(\"[data-back]\");\r\n this.closeLinks = el.querySelectorAll(\"[data-close]\");\r\n this.openCallLinks = document.querySelectorAll(\"[data-toggle-call]\");\r\n this.navigations = el.querySelectorAll(\"[data-navigation]\");\r\n this.navOpen = false;\r\n this.callOpen = false;\r\n this.resizeId = null;\r\n this.isDesktop = this.checkIfDesktop();\r\n this.internal = false;\r\n\r\n this.bindTab = (e) => {\r\n if (!e.target.closest(\"[data-header]\")) {\r\n this.toggleNav();\r\n document.removeEventListener(\"keyup\", this.bindTab);\r\n }\r\n };\r\n this.bindEvents();\r\n }\r\n\r\n bindEvents(){\r\n this.scope.querySelectorAll(\".header__bottom__nav__links__item--active\").length > 0 && this.scope.classList.add(\"header--active\");\r\n window.addEventListener(\"resize\", ()=> {\r\n this.waitForResize();\r\n });\r\n \r\n if(this.primaryLinks.length === 1 && this.scope.querySelectorAll(\".header__bottom__nav__links__item--hide-label\").length > 0 && this.buttons.length > 0){\r\n this.logo.addEventListener(\"keydown\", event =>{\r\n if (event.key === 'Tab' && !event.shiftKey && viewport() > 1) {\r\n event.preventDefault();\r\n this.buttons[0].focus();\r\n }\r\n })\r\n this.buttons[0].addEventListener(\"keydown\", event =>{\r\n if (event.key === 'Tab' && event.shiftKey && viewport() > 1) {\r\n event.preventDefault();\r\n this.logo.focus();\r\n }\r\n })\r\n this.buttons[this.buttons.length - 1].addEventListener(\"keydown\", event =>{\r\n if (event.key === 'Tab' && !event.shiftKey && viewport() > 1 && this.scope.querySelectorAll(\".navigation__items__item__link\").length > 0) {\r\n event.preventDefault();\r\n this.scope.querySelectorAll(\".navigation__items__item__link\")[1].focus();\r\n }\r\n })\r\n this.buttons[this.buttons.length - 1].addEventListener(\"keyup\", event =>{\r\n if (event.key === 'Tab' && event.shiftKey && viewport() > 1 && this.scope.querySelectorAll(\".navigation__items__item__link\").length > 0 && !this.internal) {\r\n event.preventDefault();\r\n this.scope.querySelectorAll(\".navigation__items__item__link\")[this.scope.querySelectorAll(\".navigation__items__item__link\").length-1].focus();\r\n }else{\r\n this.internal = false;\r\n }\r\n })\r\n this.scope.querySelectorAll(\".navigation__items__item__link\")[1].addEventListener(\"keydown\", event =>{\r\n if (event.key === 'Tab' && event.shiftKey && viewport() > 1 && this.primaryLinks.length === 1 && this.scope.querySelectorAll(\".navigation__items__item__link\").length > 0) {\r\n this.internal = true;\r\n event.preventDefault();\r\n this.buttons[this.buttons.length-1].focus();\r\n }\r\n })\r\n this.scope.querySelectorAll(\".navigation__items__item__link\")[this.scope.querySelectorAll(\".navigation__items__item__link\").length - 1].addEventListener(\"keydown\", event =>{\r\n if (event.key === 'Tab' && !event.shiftKey && viewport() > 1 && this.primaryLinks.length === 1 && this.scope.querySelectorAll(\".navigation__items__item__link\").length > 0) {\r\n this.buttons[this.buttons.length-1].focus();\r\n }\r\n })\r\n } \r\n \r\n this.burger.addEventListener(\"click\", ()=> this.toggleNav());\r\n this.primaryLinks.forEach(link=>{\r\n link.addEventListener(\"click\", ()=> {\r\n link.parentNode.setAttribute(\"data-open\", \"\");\r\n if(this.scope.classList.contains(\"header--has-tag-line\")){\r\n if((viewport() < 1) && (window.scrollY < 32)){\r\n this.scope.style.setProperty('--header-offset', `${32 - window.scrollY}px`);\r\n }else{\r\n this.scope.style.removeProperty('--header-offset');\r\n }\r\n }\r\n });\r\n })\r\n this.backLinks.forEach(link=>{\r\n link.addEventListener(\"click\", ()=>{\r\n if(link.closest(\"[data-details]\")){\r\n link.closest(\"[data-details]\").open = false;\r\n }else if(link.closest(\"[data-open]\")){\r\n link.closest(\"[data-open]\").removeAttribute(\"data-open\");\r\n }else if (link.closest(\".header__bottom__nav__links__item--active\")){\r\n link.closest(\".header__bottom__nav__links__item--active\").classList.remove(\"header__bottom__nav__links__item--active\")\r\n }\r\n });\r\n })\r\n this.closeLinks.forEach(close => {\r\n close.addEventListener('click', () => {\r\n if(viewport() > 2){\r\n document.querySelector(\"html\").classList.remove(\"overlay\");\r\n document.querySelector(\"html\").classList.remove(\"nav-open\"); \r\n }\r\n this.scope.querySelectorAll('[data-details]').forEach(details => {\r\n details.parentElement.classList.remove(\"navigation__items__item--open\");\r\n });\r\n this.scope.querySelectorAll('.navigation').forEach(navigation => {\r\n navigation.classList.remove('navigation--open');\r\n });\r\n });\r\n });\r\n this.openCallLinks.forEach(link =>{\r\n link.addEventListener(\"click\", ()=>{\r\n viewport() === 0 && this.toggleCall();\r\n })\r\n })\r\n this.navigations.forEach(nav=>{\r\n //single link height\r\n let navHeight = nav.querySelectorAll(\"li\")[1].offsetHeight;\r\n nav.addEventListener(\"open\", ()=>{\r\n //if more than 1 row of links\r\n if(nav.offsetHeight !== navHeight){\r\n this.scope.style.setProperty('--nav-offset-height', `${nav.offsetHeight}px`);\r\n }\r\n })\r\n })\r\n }\r\n\r\n waitForResize(){\r\n clearTimeout(this.resizeId);\r\n this.resizeId = setTimeout(() => {\r\n if(this.checkIfDesktop() !== this.isDesktop){\r\n this.navOpen && this.toggleNav();\r\n if(viewport() > 2){\r\n document.querySelector(\"html\").classList.remove(\"overlay\");\r\n document.querySelector(\"html\").classList.remove(\"nav-open\"); \r\n }\r\n this.isDesktop = this.checkIfDesktop();\r\n }\r\n }, 300);\r\n }\r\n\r\n checkIfDesktop(){\r\n return viewport() > 1;\r\n }\r\n\r\n toggleNav(){\r\n this.navOpen = !this.navOpen;\r\n this.scope.classList.toggle(\"header--open\", this.navOpen);\r\n document.querySelector(\"html\").classList.toggle(\"overflow-hidden\", this.navOpen);\r\n this.scope.querySelectorAll(\"[data-open]\").length > 0 &&\r\n this.scope.querySelector(\"[data-open]\").removeAttribute(\"data-open\");\r\n this.scope.querySelectorAll(\".navigation__items__item--open\").length > 0 &&\r\n this.scope.querySelector(\".navigation__items__item--open\").classList.remove(\"navigation__items__item--open\");\r\n if(this.navOpen){\r\n document.addEventListener(\"keyup\", this.bindTab);\r\n this.displayMessage(this.burger, 'Close Menu');\r\n if(viewport() < 2 && this.primaryLinks.length === 1 && this.primaryLinks[0].parentElement.classList.contains(\"header__bottom__nav__links__item--hide-label\")){\r\n this.primaryLinks[0].parentElement.setAttribute(\"data-open\", \"\");\r\n }\r\n } else {\r\n this.displayMessage(this.burger, 'Open Menu')\r\n this.scope.querySelectorAll(\"[data-navigation]\").forEach(nav =>{\r\n nav.navigation.closeMegaNav();\r\n })\r\n }\r\n }\r\n\r\n displayMessage(el, message)\r\n {\r\n if(el != null) {\r\n el.setAttribute('aria-label', message);\r\n el.setAttribute('title', message);\r\n }\r\n }\r\n toggleCall(){\r\n this.callOpen = !this.callOpen;\r\n this.scope.classList.toggle(\"header--open\", this.callOpen);\r\n this.scope.classList.toggle(\"header--call\", this.callOpen);\r\n document.querySelector(\"html\").classList.toggle(\"overflow-hidden--mobile\", this.callOpen);\r\n if(this.callOpen){\r\n this.scope.querySelector(\"[data-call-overlay] [data-toggle-call]\").focus();\r\n }else{\r\n this.scope.querySelector(\"[data-toggle-call]\").focus();\r\n this.navOpen = false;\r\n }\r\n }\r\n}\r\n\r\nControlBinders.register(`[data-header]`, el => new Header(el));"],"file":"dcc.header-min.js"}