-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmenu.js
More file actions
59 lines (51 loc) · 2.78 KB
/
menu.js
File metadata and controls
59 lines (51 loc) · 2.78 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
// menu.js
document.addEventListener('DOMContentLoaded', () => {
console.log("menu.js: DOMContentLoaded event fired.");
const hamburgerButton = document.querySelector('.hamburger-menu');
const mobileNav = document.querySelector('.mobile-nav');
const body = document.body;
if (hamburgerButton && mobileNav) {
console.log("menu.js: Hamburger menu and mobile nav found. Attaching event listener.");
hamburgerButton.addEventListener('click', () => {
console.log("menu.js: Hamburger button clicked.");
hamburgerButton.classList.toggle('open');
mobileNav.classList.toggle('active');
body.classList.toggle('mobile-menu-open');
});
// Funzione per chiudere il menu al click esterno
const closeMenuOnOutsideClick = (event) => {
// Se il click non è sul pulsante hamburger e non è all'interno del menu mobile
if (!hamburgerButton.contains(event.target) && !mobileNav.contains(event.target)) {
console.log("menu.js: Click outside menu detected. Closing menu.");
hamburgerButton.classList.remove('open');
mobileNav.classList.remove('active');
body.classList.remove('mobile-menu-open');
document.removeEventListener('click', closeMenuOnOutsideClick); // Rimuovi il listener una volta chiuso
}
};
// Aggiungi/Rimuovi listener per click esterno quando il menu si apre/chiude
hamburgerButton.addEventListener('click', () => {
if (mobileNav.classList.contains('active')) {
// Il menu è appena stato aperto, aggiungi listener per click esterno
setTimeout(() => { // Timeout per evitare che il click di apertura chiuda subito
document.addEventListener('click', closeMenuOnOutsideClick);
}, 0);
} else {
// Il menu è appena stato chiuso, rimuovi listener per click esterno
document.removeEventListener('click', closeMenuOnOutsideClick);
}
});
// Chiudi il menu quando un link al suo interno viene cliccato
mobileNav.querySelectorAll('a').forEach(link => {
link.addEventListener('click', () => {
console.log("menu.js: Menu link clicked. Closing menu.");
hamburgerButton.classList.remove('open');
mobileNav.classList.remove('active');
body.classList.remove('mobile-menu-open');
document.removeEventListener('click', closeMenuOnOutsideClick);
});
});
} else {
console.error("menu.js: ERROR - Hamburger menu or mobile navigation elements not found in the DOM.");
}
});