Files
Trilium/packages/share-theme/src/scripts/modules/expanders.ts

33 lines
1.2 KiB
TypeScript
Raw Normal View History

// 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;
// }
// }
2023-09-28 00:14:44 -04:00
2023-09-27 23:18:03 -04:00
export default function setupExpanders() {
2025-06-09 14:54:04 +03:00
const expanders = Array.from(document.querySelectorAll("#menu .submenu-item .collapse-button"));
for (const expander of expanders) {
const li = expander.parentElement?.parentElement;
if (!li) {
continue;
}
expander.addEventListener("click", e => {
if ((e.target as Element).closest(".submenu-item,.item") !== li) return;
2023-09-27 23:18:03 -04:00
e.preventDefault();
e.stopPropagation();
2025-06-09 14:54:04 +03:00
const ul = li.querySelector("ul")!;
ul.style.height = `${ul.scrollHeight}px`;
2025-06-09 14:54:04 +03:00
setTimeout(() => li.classList.toggle("expanded"), 1);
setTimeout(() => ul.style.height = ``, 200);
2023-09-27 23:18:03 -04:00
});
}
2025-06-09 14:54:04 +03:00
}