function registerHeaderListeners(){const e=document.querySelector(".js-header"),r=document.querySelectorAll(".js-headerMenuButton");r.forEach(s=>{s.addEventListener("click",t=>{t.preventDefault(),e?.classList.toggle("is-active"),s.setAttribute("aria-expanded",String(e?.classList.contains("is-active")))})}),document.querySelector(".js-scrim")?.addEventListener("click",s=>{s.preventDefault(),e?.classList.remove("is-active"),r.forEach(t=>{t.setAttribute("aria-expanded",String(e?.classList.contains("is-active")))})})}function registerSearchFormListeners(){const e=document.querySelector(".js-searchForm"),r=document.querySelector(".js-expandSearch"),a=e?.querySelector("input"),s=document.querySelector(".js-headerLogo"),t=document.querySelector(".js-headerMenuButton");r?.addEventListener("click",()=>{e?.classList.add("go-SearchForm--expanded"),s?.classList.add("go-Header-logo--hidden"),t?.classList.add("go-Header-navOpen--hidden"),a?.focus()}),document?.addEventListener("click",c=>{e?.contains(c.target)||(e?.classList.remove("go-SearchForm--expanded"),s?.classList.remove("go-Header-logo--hidden"),t?.classList.remove("go-Header-navOpen--hidden"))})}document.querySelectorAll(".js-searchModeSelect").forEach(e=>{e.addEventListener("change",r=>{const a=new URLSearchParams(window.location.search),t=Object.fromEntries(a.entries()).q;t&&(window.location.search=`q=${t}&m=${r.target.value}`)})}),registerHeaderListeners(),registerSearchFormListeners();
//# sourceMappingURL=header.js.map
