// Custom JS to Close the Navigation menu, if its open, & if the screen goes above 992px wide (Bootstrap 4 'lg' devices) const SEARCH_COLLAPSE_ID = 'searchCollapse'; // ID built into the sites' HTML const SEARCH_COLLAPSE_IS_VISIBLE_CLASS = 'nav-global__search-collapse–visible'; // Class in the HTML when the search collapse is open/visible const GLOBAL_NAV_ID = 'globalNav'; const LOCAL_NAV_ID = 'mainNav'; const GLOBAL_NAV_SEARCH_IS_VISIBLE_CLASS = 'nav-global__search-toggle'; const LOCAL_NAV_SEARCH_IS_VISIBLE_CLASS = 'nav-local__search-toggle'; const SEARCH_ICON_ID = 'searchIcon'; const SEARCH_ICON_SPAN_QUERY_SELECTOR = '#searchImg';
function removeClassFromElement(el, classToRemove) {
el.classList.remove(classToRemove);
}
function checkElementCollapseState(el, classToCheckFor) {
if ( ! el.classList.contains(classToCheckFor) ) return; removeClassFromElement(el, classToCheckFor);
}
function toggleSearchIconToX(el) {
const span = el.querySelector(SEARCH_ICON_SPAN_QUERY_SELECTOR); el.setAttribute('aria-label', 'Toggle Search'); span.setAttribute('alt', 'Open icon'); span.setAttribute('style', 'background-image: url("/assets/img/search.svg")');
}
function checkSearchToggleIcon(el) {
let ariaLabel = el.getAttribute('aria-label'); if ( ! ariaLabel === 'Toggle Close' ) return; toggleSearchIconToX(el)
}
function windowResizeHandler() {
if ( window.innerWidth >= 992 ) { const searchCollapseElement = document.getElementById(SEARCH_COLLAPSE_ID); const globalNav = document.getElementById(GLOBAL_NAV_ID); const localNav = document.getElementById(LOCAL_NAV_ID); const searchIcon = document.getElementById(SEARCH_ICON_ID); checkElementCollapseState(searchCollapseElement, SEARCH_COLLAPSE_IS_VISIBLE_CLASS); checkElementCollapseState(globalNav, GLOBAL_NAV_SEARCH_IS_VISIBLE_CLASS); checkElementCollapseState(localNav, LOCAL_NAV_SEARCH_IS_VISIBLE_CLASS); checkSearchToggleIcon(searchIcon); }
}
function toggleSearchDropdownOnWindowResize() {
window.addEventListener('resize', windowResizeHandler);
}
export default toggleSearchDropdownOnWindowResize;