function registerHeaderListeners(){const e=document.querySelector(".js-header"),n=document.querySelectorAll(".js-headerMenuButton");n.forEach(t=>{t.addEventListener("click",s=>{s.preventDefault(),e==null||e.classList.toggle("is-active"),t.setAttribute("aria-expanded",String(e==null?void 0:e.classList.contains("is-active")))})});const c=document.querySelector(".js-scrim");c==null||c.addEventListener("click",t=>{t.preventDefault(),e==null||e.classList.remove("is-active"),n.forEach(s=>{s.setAttribute("aria-expanded",String(e==null?void 0:e.classList.contains("is-active")))})})}function registerSearchFormListeners(){const e=document.querySelector(".js-searchForm"),n=document.querySelector(".js-expandSearch"),c=e==null?void 0:e.querySelector("input"),t=document.querySelector(".js-headerLogo"),s=document.querySelector(".js-headerMenuButton");n==null||n.addEventListener("click",()=>{e==null||e.classList.add("go-SearchForm--expanded"),t==null||t.classList.add("go-Header-logo--hidden"),s==null||s.classList.add("go-Header-navOpen--hidden"),c==null||c.focus()}),document==null||document.addEventListener("click",i=>{(e==null?void 0:e.contains(i.target))||(e==null||e.classList.remove("go-SearchForm--expanded"),t==null||t.classList.remove("go-Header-logo--hidden"),s==null||s.classList.remove("go-Header-navOpen--hidden"))})}registerHeaderListeners(),registerSearchFormListeners();
//# sourceMappingURL=header.js.map
