PageSourceSearch

https://hbanet.org/themes/custom/hba/js/main-menu.js?v=1.1

js hbanet.org collected 2026-10-01 11:42:07 UTC 2,449 bytes, 78 lines download raw bytes

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.