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