PageSourceSearch

https://musicologie.org/scripts/menu.js

js musicologie.org collected 2026-10-02 05:28:23 UTC 1,433 bytes, 46 lines download raw bytes

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.