mirror of
https://github.com/zadam/trilium.git
synced 2026-02-08 06:44:24 +01:00
57 lines
1.7 KiB
TypeScript
57 lines
1.7 KiB
TypeScript
// 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 = document.querySelectorAll("#menu .submenu-item .collapse-button");
|
|
for (const expander of expanders) {
|
|
const li = expander.closest("li");
|
|
if (!li) {
|
|
continue;
|
|
}
|
|
|
|
expander.addEventListener("click", e => {
|
|
e.preventDefault();
|
|
e.stopPropagation();
|
|
|
|
const ul = li.querySelector("ul");
|
|
if (!ul) {
|
|
return;
|
|
}
|
|
|
|
const isExpanded = li.classList.contains("expanded");
|
|
|
|
if (isExpanded) {
|
|
// Collapsing
|
|
ul.style.height = `${ul.scrollHeight}px`;
|
|
// Force reflow
|
|
ul.offsetHeight;
|
|
|
|
li.classList.remove("expanded");
|
|
ul.style.height = "0";
|
|
} else {
|
|
// Expanding
|
|
ul.style.height = "0";
|
|
// Force reflow
|
|
ul.offsetHeight;
|
|
|
|
li.classList.add("expanded");
|
|
ul.style.height = `${ul.scrollHeight}px`;
|
|
}
|
|
|
|
setTimeout(() => {
|
|
ul.style.height = "";
|
|
}, 200);
|
|
});
|
|
}
|
|
}
|