hic-et-nunc/assets/js/project-toggle.js

56 lines
1.6 KiB
JavaScript
Raw Normal View History

2026-06-05 16:45:55 +02:00
const allProjects = document.querySelectorAll(".projects-index li.project");
2026-05-14 17:22:34 +02:00
function selectProject(slug) {
if (!slug) {
allProjects.forEach((p) => p.classList.remove("selected", "unselected"));
return;
}
const target = [...allProjects].find((p) => p.dataset.slug === slug);
if (!target) return;
allProjects.forEach((p) => {
p.classList.add("unselected");
p.classList.remove("selected");
});
target.classList.add("selected");
target.classList.remove("unselected");
}
2026-05-14 17:22:34 +02:00
allProjects.forEach((project) => {
project.addEventListener("click", () => {
allProjects.forEach((p) => {
p.classList.add("unselected");
p.classList.remove("selected");
2026-05-14 17:22:34 +02:00
});
project.classList.add("selected");
project.classList.remove("unselected");
Router.setParam("project", project.dataset.slug);
2026-05-14 17:22:34 +02:00
});
});
2026-06-05 12:13:02 +02:00
const toggleProjects = document.querySelectorAll(".project-toggler");
2026-05-14 17:22:34 +02:00
2026-06-05 12:13:02 +02:00
toggleProjects.forEach((button) => {
2026-05-14 17:22:34 +02:00
button.addEventListener("click", (event) => {
const parentLi = button.closest("li");
if (parentLi.classList.contains("selected")) {
event.stopPropagation();
allProjects.forEach((p) => p.classList.remove("unselected"));
parentLi.classList.remove("selected");
Router.setParam("project", null);
2026-05-14 17:22:34 +02:00
}
});
});
2026-06-05 12:13:02 +02:00
const closeAllProjects = document.querySelectorAll(".all-projects-closer");
closeAllProjects.forEach((closeProject) => {
closeProject.addEventListener("click", () => {
2026-06-04 18:33:08 +02:00
window.location = "/index";
});
2026-05-14 17:22:34 +02:00
});
2026-06-04 18:33:08 +02:00
window.addEventListener("routechange", () =>
selectProject(Router.getParam("project")),
);
selectProject(Router.getParam("project"));