26 lines
1,016 B
JavaScript
26 lines
1,016 B
JavaScript
// Minimal-JS für den Projekt-Hub — Progressive Enhancement, keine Abhängigkeiten.
|
|
|
|
// 1) Bestätigungsdialog für Formulare mit data-confirm (z.B. Löschen).
|
|
document.addEventListener("submit", function (e) {
|
|
var form = e.target;
|
|
if (form.dataset && form.dataset.confirm) {
|
|
if (!window.confirm(form.dataset.confirm)) {
|
|
e.preventDefault();
|
|
}
|
|
}
|
|
});
|
|
|
|
// 2) Klappbare Bereiche: Klick auf .js-collapse blendet das Ziel (data-target) aus.
|
|
document.addEventListener("click", function (e) {
|
|
var head = e.target.closest(".js-collapse");
|
|
if (!head) return;
|
|
// Klicks auf interaktive Elemente (z.B. Lösch-Button) nicht als Klapp-Klick werten.
|
|
if (e.target.closest("button, a, input, form") && !e.target.closest(".collapse-btn")) {
|
|
return;
|
|
}
|
|
var target = document.getElementById(head.dataset.target);
|
|
if (!target) return;
|
|
var collapsed = target.classList.toggle("hidden");
|
|
var btn = head.querySelector(".collapse-btn");
|
|
if (btn) btn.textContent = collapsed ? "▼" : "▲";
|
|
});
|