2026-06-04 16:02:20 +02:00
|
|
|
const filterButtons = document.querySelectorAll(".filter-menu button");
|
2026-06-05 16:45:55 +02:00
|
|
|
const projectItems = document.querySelectorAll(".projects-index li.project");
|
2026-06-04 16:02:20 +02:00
|
|
|
|
|
|
|
|
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);
|
2026-06-05 16:45:55 +02:00
|
|
|
item.classList.remove("selected", "unselected");
|
2026-06-04 16:02:20 +02:00
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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);
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
2026-06-05 16:45:55 +02:00
|
|
|
window.addEventListener("routechange", () =>
|
|
|
|
|
applyFilter(Router.getParam("filter")),
|
|
|
|
|
);
|
2026-06-04 16:02:20 +02:00
|
|
|
|
|
|
|
|
applyFilter(Router.getParam("filter"));
|