1( function () { 2 document.querySelectorAll( '.framework-page-banner__nav--level-1' ).forEach( function ( nav ) { 3 var toggle = nav.querySelector( '.framework-nav__toggle' ); 4 var list = nav.querySelector( '.framework-nav--level-1' ); 5 6 function open() { 7 if ( list ) { 8 list.style.top = nav.getBoundingClientRect().bottom + 'px'; 9 } 10 nav.classList.add( 'is-open' ); 11 if ( toggle ) toggle.setAttribute( 'aria-expanded', 'true' ); 12 } 13 14 function close() { 15 nav.classList.remove( 'is-open' ); 16 if ( toggle ) toggle.setAttribute( 'aria-expanded', 'false' ); 17 } 18 19 // Hover â desktop (within mobile breakpoint) 20 nav.addEventListener( 'mouseenter', open ); 21 nav.addEventListener( 'mouseleave', close ); 22 23 // Tap â touch devices 24 if ( toggle ) { 25 toggle.addEventListener( 'click', function ( e ) { 26 e.stopPropagation(); 27 nav.classList.contains( 'is-open' ) ? close() : open(); 28 } ); 29 } 30 31 // Reposition on scroll/resize in case nav has moved 32 window.addEventListener( 'resize', function () { 33 if ( nav.classList.contains( 'is-open' ) && list ) { 34 list.style.top = nav.getBoundingClientRect().bottom + 'px'; 35 } 36 } ); 37 } ); 38 39 // Close on tap outside 40 document.addEventListener( 'click', function ( e ) { 41 if ( ! e.target.closest( '.framework-page-banner__nav--level-1' ) ) { 42 document.querySelectorAll( '.framework-page-banner__nav--level-1.is-open' ).forEach( function ( nav ) { 43 nav.classList.remove( 'is-open' ); 44 var toggle = nav.querySelector( '.framework-nav__toggle' ); 45 if ( toggle ) toggle.setAttribute( 'aria-expanded', 'false' ); 46 } ); 47 } 48 } ); 49} )();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.