1Drupal.behaviors.mainMenu = { 2 attach(context) { 3 /* Open and Close Main Nav Mobile*/ 4 const menuToggle = context.querySelector('.menu-toggle'); 5 const menuClose = context.querySelectorAll( 6 '.mega-menu-close, .mega-menu-overlay', 7 ); 8 const mainMenu = context.querySelector('.main-menu'); 9 const megaMenuOverlay = context.querySelector('.mega-menu-overlay'); 10 11 if (menuToggle) { 12 menuToggle.addEventListener('click', (e) => { 13 if (!mainMenu.classList.contains('open')){ 14 mainMenu.classList.toggle("open"); 15 } 16 }); 17 } 18 19 menuClose.forEach((item) => { 20 item.addEventListener('click', (e) => { 21 mainMenu.classList.remove('open'); 22 }); 23 }); 24 25 /* Secondary Nav Mobile */ 26 const megaMenuExpand = context.querySelectorAll('.mega-menu-expand'); 27 const menuItems = context.querySelectorAll( 28 '.menu--simple-mega-menu .menu-item', 29 ); 30 megaMenuExpand.forEach((item) => { 31 item.addEventListener('click', (e) => { 32 e.preventDefault(); 33 const target = e.target.closest('.menu-item'); 34 const isOpen = target.classList.contains('open'); 35 36 menuItems.forEach((i) => i.classList.remove('open')); 37 if (!isOpen) target.classList.add('open'); 38 }); 39 }); 40 41 /* Hero secondary nav Mobile */ 42 const sectionNavigationToggle = context.querySelector( 43 '.hero__section-navigation', 44 ); 45 const sectionNavigation = context.querySelector( 46 '.hero .paragraph--type--link-list', 47 ); 48 if (sectionNavigationToggle) { 49 sectionNavigationToggle.addEventListener('click', (e) => { 50 e.preventDefault(); 51 sectionNavigation.classList.toggle('open'); 52 }); 53 } 54 55 // delay the menu disappearing on hover 56 const mainMenuItems = document.querySelectorAll( 57 '.main-menu > .menu > .menu-item', 58 ); 59 mainMenuItems.forEach((menuItem) => { 60 let timer; 61 62 menuItem.addEventListener('mouseenter', (e) => { 63 clearTimeout(timer); 64 mainMenu.classList.add('hover'); 65 e.target.classList.add('over'); 66 e.target.classList.remove('out'); 67 }); 68 menuItem.addEventListener('mouseleave', (e) => { 69 mainMenu.classList.remove('hover'); 70 e.target.classList.remove('over'); 71 e.target.classList.add('out'); 72 timer = setTimeout(() => { 73 e.target.classList.remove('out'); 74 }, 100); 75 }); 76 }); 77 }, 78};
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.