PageSourceSearch

https://rgclubsleague.com/local/templates/ask/js/header-menu.js?17811820602593

js rgclubsleague.com collected 2026-10-08 01:58:58 UTC 2,593 bytes, 85 lines download raw bytes

1document.addEventListener('DOMContentLoaded', () => {
2    const burger = document.querySelector('.burger-menu');
3    const mobileMenu = document.getElementById('mobileMenu');
4    const header = document.querySelector('.header.header-redesign');
5    const body = document.body;
6    const dropdownItems = document.querySelectorAll('.mobile-nav__item[data-dropdown]');
7
8    if (!burger || !mobileMenu) return;
9
10    const closeMenu = () => {
11        burger.classList.remove('is-active');
12        burger.setAttribute('aria-expanded', 'false');
13        mobileMenu.classList.remove('mobile-menu--open');
14        body.classList.remove('no-scroll');
15        if (header) {
16            header.classList.remove('menu-open');
17        }
18    };
19
20    const openMenu = () => {
21        burger.classList.add('is-active');
22        burger.setAttribute('aria-expanded', 'true');
23        mobileMenu.classList.add('mobile-menu--open');
24        body.classList.add('no-scroll');
25        if (header) {
26            header.classList.add('menu-open');
27        }
28    };
29
30    burger.addEventListener('click', () => {
31        if (mobileMenu.classList.contains('mobile-menu--open')) {
32            closeMenu();
33        } else {
34            openMenu();
35        }
36    });
37
38    document.querySelectorAll('.mobile-nav__link:not(.has-dropdown), .mobile-dropdown__link:not(.has-dropdown)').forEach(link => {
39        link.addEventListener('click', () => {
40            closeMenu();
41        });
42    });
43
44    mobileMenu.addEventListener('click', (e) => {
45
46        // <li class="mobile-nav__item is-open"
47        // <li class="mobile-dropdown__item mobile-nav__item is-open"
48        const link = e.target.closest('.has-dropdown');
49
50        if (!link) return;
51
52        const item = link.closest('[data-dropdown]');
53
54        if (!item) return;
55
56        const isOpen = item.classList.contains('is-open');
57
58        if (!isOpen) {
59            e.preventDefault();
60            item.classList.add('is-open');
61        } else {
62            e.preventDefault();
63            item.classList.remove('is-open');
64        }
65    });
66
67    mobileMenu.addEventListener('click', (e) => {
68        if (e.target === mobileMenu) {
69            closeMenu();
70        }
71    });
72
73    document.addEventListener('keydown', (e) => {
74        if (e.key === 'Escape' && mobileMenu.classList.contains('mobile-menu--open')) {
75            closeMenu();
76        }
77    });
78
79    window.addEventListener('resize', () => {
80        if (window.innerWidth > 1024) {
81            closeMenu();
82            dropdownItems.forEach(item => item.classList.remove('is-open'));
83        }
84    });
85});

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.