refactor: switch ui scripts to data hooks

This commit is contained in:
2026-04-15 00:10:20 +02:00
parent 0a5f64c604
commit 29e49b9fcc
9 changed files with 111 additions and 45 deletions

View File

@@ -1,15 +1,32 @@
// static/js/anime.ts
(() => {
const parseClassList = (value) => {
if (!value) {
return [];
}
return value.split(" ").map((entry) => entry.trim()).filter((entry) => entry.length > 0);
};
const setMenuState = (menu, isOpen) => {
const openClasses = parseClassList(menu.getAttribute("data-dropdown-open-classes"));
const closedClasses = parseClassList(menu.getAttribute("data-dropdown-closed-classes"));
if (isOpen) {
menu.classList.remove(...closedClasses);
menu.classList.add(...openClasses);
return;
}
menu.classList.remove(...openClasses);
menu.classList.add(...closedClasses);
};
const toggleDropdown = () => {
const dropdown = document.getElementById("watchlist-dropdown");
if (!dropdown) {
return;
}
dropdown.classList.toggle("open");
const isOpen = !dropdown.classList.contains("open");
dropdown.classList.toggle("open", isOpen);
const menu = dropdown.querySelector("[data-dropdown-menu]");
if (menu instanceof HTMLElement) {
menu.classList.toggle("invisible");
menu.classList.toggle("opacity-0");
setMenuState(menu, isOpen);
}
};
window.toggleDropdown = toggleDropdown;
@@ -26,8 +43,7 @@
dropdown.classList.remove("open");
const menu = dropdown.querySelector("[data-dropdown-menu]");
if (menu instanceof HTMLElement) {
menu.classList.add("invisible");
menu.classList.add("opacity-0");
setMenuState(menu, false);
}
}
});