/** * File header-search.js. * * Handles search toggle functionality in the header. */ ( function() { const searchToggle = document.querySelector( '.search-toggle' ); const searchFormWrapper = document.querySelector( '.search-form-wrapper' ); // Return early if search toggle doesn't exist. if ( ! searchToggle || ! searchFormWrapper ) { return; } // Toggle search form visibility searchToggle.addEventListener( 'click', function( e ) { e.preventDefault(); e.stopPropagation(); const isExpanded = searchToggle.getAttribute( 'aria-expanded' ) === 'true'; searchFormWrapper.classList.toggle( 'active' ); searchToggle.setAttribute( 'aria-expanded', ! isExpanded ); // Focus on search field when opened if ( ! isExpanded ) { const searchField = searchFormWrapper.querySelector( '.search-field' ); if ( searchField ) { setTimeout( function() { searchField.focus(); }, 100 ); } } } ); // Close search form when clicking outside document.addEventListener( 'click', function( event ) { const isClickInside = searchFormWrapper.contains( event.target ) || searchToggle.contains( event.target ); if ( ! isClickInside && searchFormWrapper.classList.contains( 'active' ) ) { searchFormWrapper.classList.remove( 'active' ); searchToggle.setAttribute( 'aria-expanded', 'false' ); } } ); // Close search form on Escape key document.addEventListener( 'keydown', function( event ) { if ( event.key === 'Escape' && searchFormWrapper.classList.contains( 'active' ) ) { searchFormWrapper.classList.remove( 'active' ); searchToggle.setAttribute( 'aria-expanded', 'false' ); searchToggle.focus(); } } ); }() );