1window.addEventListener('load', function () { 2 var body = document.body; 3 var siteHeader = document.getElementById('site-header'); 4 var headerInner = document.getElementById('site-header').firstElementChild; 5 var searchTrigger = document.getElementById('search-trigger'); 6 var searchContainer = document.getElementById('search-container'); 7 var searchModal = document.getElementById('search-modal'); 8 var searchInput = document.getElementById('search-input'); 9 var mobileSearchTrigger = document.getElementById('search-toggle'); 10 11 searchTrigger.addEventListener('click', () => { 12 searchContainer.classList.toggle('active'); 13 if (searchContainer.classList.contains('active')) { 14 searchInput.focus(); 15 // Set width of search field; 16 // get the value by subtracting the distance to the left of the element from the window width, 17 // then subtract 70px (margin and padding) 18 var innerWidth = window.innerWidth; 19 var distLeft = searchModal.getBoundingClientRect().left; 20 searchModal.style.width = innerWidth - distLeft - 70 + 'px'; 21 }; 22 if (siteHeader.classList.contains('mobile-search')) { 23 siteHeader.classList.toggle('mobile-search'); 24 }; 25 }); 26 mobileSearchTrigger.addEventListener('click', () => { 27 // If only toggle class if mobile menu *isn't* opened; 28 // regardless, focus the search input 29 if (!siteHeader.classList.contains('mobile-menu')) { 30 siteHeader.classList.toggle('mobile-search'); 31 }; 32 searchInput.focus(); 33 }); 34 35 // Mobile menu interaction 36 var menuToggle = document.getElementById('menu-toggle'); 37 var menuContents = document.getElementById('menu-contents'); 38 var menuItems = document.getElementById('menu-items'); 39 var headerRest = document.getElementById('header-rest'); 40 menuToggle.addEventListener('click', () => { 41 // Toggle class to signify an expanded menu on a high-level 42 siteHeader.classList.toggle('mobile-menu'); 43 // If search is focused/has active class, remove that before opening menu 44 if (siteHeader.classList.contains('mobile-search')) { 45 siteHeader.classList.remove('mobile-search'); 46 }; 47 if (menuContents.classList.contains('active')) { 48 body.classList.remove('overflow-hidden'); 49 siteHeader.classList.remove('has-black-background-color'); 50 siteHeader.classList.remove('min-vh-100'); 51 menuContents.classList.remove('active'); 52 menuContents.classList.add('border-bottom-1'); 53 menuContents.classList.add('pb-3'); 54 menuItems.classList.remove('d-flex'); 55 menuItems.classList.add('d-none'); 56 headerRest.classList.remove('d-none'); 57 } else { 58 window.scrollTo({top: 0, behavior: 'smooth'}); 59 body.classList.add('overflow-hidden'); 60 siteHeader.classList.add('has-black-background-color'); 61 siteHeader.classList.add('min-vh-100'); 62 menuContents.classList.add('active'); 63 menuContents.classList.remove('border-bottom-1'); 64 menuContents.classList.remove('pb-3'); 65 menuItems.classList.remove('d-none'); 66 menuItems.classList.add('d-flex'); 67 headerRest.classList.add('d-none'); 68 }; 69 }) 70});
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.