1document.addEventListener("DOMContentLoaded", function () { 2 const mobileButtons = document.querySelectorAll(".mobile_menu .mobilebtn"); 3 4 mobileButtons.forEach(function (btn) { 5 btn.addEventListener("click", function () { 6 const menuActive = document.getElementById("menuActive"); 7 8 if (menuActive.classList.contains("active")) { 9 closeMenu(); 10 } else { 11 openMenu(); 12 } 13 }); 14 }); 15 16 function openMenu() { 17 const menuActive = document.getElementById("menuActive"); 18 menuActive.classList.add("active"); 19 document.body.style.overflow = "hidden"; 20 21 // Fade in 22 setTimeout(() => { 23 menuActive.style.opacity = "1"; 24 }, 10); 25 } 26 27 function closeMenu() { 28 const menuActive = document.getElementById("menuActive"); 29 30 // Fade out 31 menuActive.style.opacity = "0"; 32 33 setTimeout(() => { 34 menuActive.classList.remove("active"); 35 document.body.style.overflow = "auto"; 36 }, 300); // Matches the CSS transition duration 37 } 38 39 // Optional: Close button functionality 40 document.addEventListener("click", function (e) { 41 if (e.target.classList.contains("closeMenuBtn")|| 42 e.target.closest(".closeMenuBtn")) { 43 closeMenu(); 44 } 45 }); 46 47 document.querySelectorAll(".accordion-headerMobile").forEach((header) => { 48 header.addEventListener("click", () => { 49 const content = header.nextElementSibling; 50 const isOpen = header.classList.contains("active"); 51 52 // Close all 53 document 54 .querySelectorAll(".accordion-headerMobile") 55 .forEach((h) => h.classList.remove("active")); 56 document 57 .querySelectorAll(".accordion-contentMobile") 58 .forEach((c) => (c.style.maxHeight = null)); 59 60 // Open current if not already open 61 if (!isOpen) { 62 header.classList.add("active"); 63 content.style.maxHeight = content.scrollHeight + "px"; 64 } 65 }); 66 }); 67 68 const tabButtons = document.querySelectorAll(".mobileTab-btn"); 69 const tabPanels = document.querySelectorAll(".mobileTab-panel"); 70 71 tabButtons.forEach((button) => { 72 button.addEventListener("click", () => { 73 // Remove active classes 74 tabButtons.forEach((btn) => btn.classList.remove("active")); 75 tabPanels.forEach((panel) => panel.classList.remove("active")); 76 77 // Add active to clicked tab and its panel 78 button.classList.add("active"); 79 const targetPanel = document.getElementById(button.dataset.tab); 80 targetPanel.classList.add("active"); 81 }); 82 }); 83});
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.