// In case a linked article lead to a new tree const activeLink = document.querySelector("#menu a.active"); if (activeLink) { let parent = activeLink.parentElement; const mainMenu = document.getElementById("#menu"); while (parent && parent !== mainMenu) { if (parent.matches(".submenu-item") && !parent.classList.contains("expanded")) { parent.classList.add("expanded"); } parent = parent.parentElement; } } export default function setupExpanders() { const expanders = Array.from(document.querySelectorAll("#menu .submenu-item")); for (const ex of expanders) { ex.addEventListener("click", e => { if ((e.target as Element).closest(".submenu-item,.item") !== ex) return; e.preventDefault(); e.stopPropagation(); const ul = ex.querySelector("ul")!; ul.style.height = `${ul.scrollHeight}px`; setTimeout(() => ex.classList.toggle("expanded"), 1); setTimeout(() => ul.style.height = ``, 200); }); } }