PageSourceSearch

https://shary.eg/front/js/navbar.js?v=20260527-mobile-nav

js shary.eg collected 2026-09-24 10:28:53 UTC 2,252 bytes, 70 lines download raw bytes

1(function () {
2  let previousWidth = window.innerWidth;
3  const isHomePage = window.location.pathname === '/' || window.location.pathname === '' || window.location.pathname === '/index.html';
4
5  function closeMobileMenu() {
6    const header = document.getElementById('header');
7    const navItems = document.getElementById('navItems');
8    const icon = document.getElementById('openCloseIcon');
9
10    if (header) header.classList.remove('mobile-menu-open');
11    if (navItems) {
12      navItems.classList.remove('menu-open');
13      navItems.setAttribute('aria-hidden', 'true');
14    }
15    if (icon) icon.src = '/front/images/ic_twotone-menu.svg';
16    document.body.style.overflow = '';
17  }
18
19  function openMobileMenu() {
20    const header = document.getElementById('header');
21    const navItems = document.getElementById('navItems');
22    const icon = document.getElementById('openCloseIcon');
23
24    if (header) header.classList.add('mobile-menu-open');
25    if (navItems) {
26      navItems.classList.add('menu-open');
27      navItems.setAttribute('aria-hidden', 'false');
28    }
29    if (icon) icon.src = '/front/icons/material-symbols_close.svg';
30    document.body.style.overflow = 'hidden';
31  }
32
33  function expandCollapseNavbar() {
34    const navItems = document.getElementById('navItems');
35    if (!navItems) return;
36
37    if (navItems.classList.contains('menu-open')) {
38      closeMobileMenu();
39    } else {
40      openMobileMenu();
41    }
42  }
43
44  function handleResize() {
45    const currentWidth = window.innerWidth;
46    const header = document.getElementById('header');
47    if (!header) return;
48
49    if (previousWidth !== currentWidth) {
50      previousWidth = currentWidth;
51      header.classList.add(isHomePage ? 'header-collapsed' : 'header-filter-collapsed');
52      header.classList.remove('header-expanded');
53      closeMobileMenu();
54    }
55  }
56
57  window.closeMobileMenu = closeMobileMenu;
58  window.openMobileMenu = openMobileMenu;
59  window.expandCollapseNavbar = expandCollapseNavbar;
60
61  window.addEventListener('resize', handleResize);
62
63  document.addEventListener('click', function (event) {
64    const toggle = event.target.closest('[data-mobile-menu-toggle]');
65    if (!toggle) return;
66
67    event.preventDefault();
68    expandCollapseNavbar();
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.