PageSourceSearch

https://aiisa.se/wp-content/themes/aiisa/blocks/mobile-menu/script.js?ver=1778244560

js aiisa.se collected 2026-10-02 02:08:07 UTC 2,406 bytes, 69 lines download raw bytes

1/**
2 * Mobile Menu Block Frontend Script
3 * Handles menu toggle functionality with slide-in animation
4 */
5(function() {
6   'use strict';
7   
8   // Handle all mobile menu instances on the page
9   document.addEventListener('DOMContentLoaded', function() {
10      const menuBlocks = document.querySelectorAll('.mobile-menu-block[data-menu], .wp-block-theme-mobile-menu[data-menu]');
11      
12      menuBlocks.forEach(function(menuBlock) {
13         const toggle = menuBlock.querySelector('.menu-toggle');
14         const menuPanel = menuBlock.querySelector('.menu-panel');
15         
16         if (!toggle || !menuPanel) {
17            return;
18         }
19         
20         // Create overlay element if it doesn't exist
21         let overlay = menuBlock.querySelector('.menu-overlay');
22         if (!overlay) {
23            overlay = document.createElement('div');
24            overlay.className = 'menu-overlay';
25            menuBlock.appendChild(overlay);
26         }
27         
28         // Toggle menu function
29         function toggleMenu() {
30            const isOpen = toggle.getAttribute('aria-expanded') === 'true';
31            const newState = !isOpen;
32            
33            toggle.setAttribute('aria-expanded', newState);
34            
35            if (newState) {
36               // Open menu
37               menuPanel.classList.add('is-open');
38               overlay.classList.add('is-visible');
39               document.body.style.overflow = 'hidden'; // Prevent background scrolling
40            } else {
41               // Close menu
42               menuPanel.classList.remove('is-open');
43               overlay.classList.remove('is-visible');
44               document.body.style.overflow = ''; // Restore scrolling
45            }
46         }
47         
48         // Toggle button click
49         toggle.addEventListener('click', function(e) {
50            e.stopPropagation();
51            toggleMenu();
52         });
53         
54         // Close menu when clicking overlay
55         overlay.addEventListener('click', function() {
56            if (menuPanel.classList.contains('is-open')) {
57               toggleMenu();
58            }
59         });
60         
61         // Close menu when pressing Escape key
62         document.addEventListener('keydown', function(e) {
63            if (e.key === 'Escape' && menuPanel.classList.contains('is-open')) {
64               toggleMenu();
65            }
66         });
67      });
68   });
69})();

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.