document.addEventListener("DOMContentLoaded", () => { const buttons = document.querySelectorAll("[data-hb-sidebar-toggle]"); buttons.forEach((button) => { button.addEventListener("click", (e) => { e.preventDefault(); const parent = button.parentElement.parentElement; if (parent) { parent.classList.toggle("open"); } }); }); }); // Hamburger menu for mobile navigation document.addEventListener("DOMContentLoaded", () => { const menu = document.querySelector("#nav-toggle"); const overlay = document.querySelector(".hb-sidebar-mobile-menu"); const sidebarContainer = document.querySelector(".hb-sidebar-container"); if (!overlay) { return; } // Initialize the overlay const overlayClasses = ["fixed", "z-10", "inset-0", "bg-white", "dark:bg-black/80"]; overlay.classList.add("bg-transparent"); overlay.classList.remove("hidden", ...overlayClasses); function toggleMenu() { // Toggle the hamburger menu // See `hb-nav.js` - it handles the default behavior (irrespective of if sidebar is shown). // When menu is open, show the navigation sidebar sidebarContainer.classList.toggle("max-lg:[transform:translate3d(0,-100%,0)]"); sidebarContainer.classList.toggle("max-lg:[transform:translate3d(0,0,0)]"); // When menu is open, prevent body from scrolling document.body.classList.toggle("overflow-hidden"); document.body.classList.toggle("lg:overflow-auto"); } menu.addEventListener("click", (e) => { console.debug("Hamburger clicked."); e.preventDefault(); toggleMenu(); if (overlay.classList.contains("bg-transparent")) { // Show overlay overlay.classList.add(...overlayClasses); overlay.classList.remove("bg-transparent"); } else { // Hide overlay overlay.classList.remove(...overlayClasses); overlay.classList.add("bg-transparent"); } }); overlay.addEventListener("click", (e) => { e.preventDefault(); toggleMenu(); // Hide overlay overlay.classList.remove(...overlayClasses); overlay.classList.add("bg-transparent"); }); });