1// JavaScript Document 2 3document.addEventListener("DOMContentLoaded", () => { 4 const menuToggle = document.getElementById("menu-toggle"); 5 const menuList = document.getElementById("menu-list"); 6 const dropdowns = document.querySelectorAll(".dropdown"); 7 8 console.log("menu.js chargé !"); 9 10 // --- Bouton principal (mobile) 11 if (menuToggle && menuList) { 12 menuToggle.addEventListener("click", (e) => { 13 e.stopPropagation(); // évite de refermer instantanément 14 menuList.classList.toggle("active"); 15 }); 16 } 17 18 // --- Sous-menus 19 dropdowns.forEach((dropdown) => { 20 const button = dropdown.querySelector(".dropbtn"); 21 const content = dropdown.querySelector(".dropdown-content"); 22 23 button.addEventListener("click", (e) => { 24 e.stopPropagation(); // empêche la fermeture immédiate 25 closeAllDropdownsExcept(content); 26 content.classList.toggle("show"); 27 }); 28 }); 29 30 // --- Ferme tout si on clique ailleurs 31 document.addEventListener("click", () => { 32 closeAllDropdowns(); 33 if (menuList) menuList.classList.remove("active"); 34 }); 35 36 // --- Fonctions utilitaires 37 function closeAllDropdowns() { 38 document.querySelectorAll(".dropdown-content").forEach((c) => c.classList.remove("show")); 39 } 40 41 function closeAllDropdownsExcept(current) { 42 document.querySelectorAll(".dropdown-content").forEach((c) => { 43 if (c !== current) c.classList.remove("show"); 44 }); 45 } 46});
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.