hic-et-nunc/assets/js/filter-menu.js
Camilledenoray d20952d2fb
All checks were successful
Deploy / Deploy to Production (push) Successful in 3s
Fix Filter-menu
2026-06-05 16:45:56 +02:00

31 lines
1 KiB
JavaScript

const filterButtons = document.querySelectorAll(".filter-menu button");
const projectItems = document.querySelectorAll(".projects-index li.project");
function applyFilter(filter) {
filterButtons.forEach((b) => b.classList.remove("active"));
if (!filter) {
projectItems.forEach((item) => item.classList.remove("filtered-out"));
return;
}
const btn = [...filterButtons].find((b) => b.dataset.filter === filter);
if (btn) btn.classList.add("active");
projectItems.forEach((item) => {
item.classList.toggle("filtered-out", item.dataset.category !== filter);
item.classList.remove("selected", "unselected");
});
}
filterButtons.forEach((btn) => {
btn.addEventListener("click", () => {
const isActive = btn.classList.contains("active");
const newFilter = isActive ? null : btn.dataset.filter;
applyFilter(newFilter);
Router.setParam("filter", newFilter);
});
});
window.addEventListener("routechange", () =>
applyFilter(Router.getParam("filter")),
);
applyFilter(Router.getParam("filter"));