adventskalender/shared/js/door-open.js aktualisiert
This commit is contained in:
@@ -1,49 +1,44 @@
|
|||||||
document.querySelectorAll(".door, .fluegel").forEach(elem => {
|
// Adventskalender 2025 – Türlogik (inkl. Popup)
|
||||||
|
|
||||||
|
document.querySelectorAll(".door, .fluegel, .openfield").forEach(elem => {
|
||||||
elem.addEventListener("click", () => {
|
elem.addEventListener("click", () => {
|
||||||
const day = elem.dataset.day;
|
const day = elem.dataset.day;
|
||||||
const openfield = document.querySelector(`.openfield[data-day="${day}"]`);
|
const openfield = document.querySelector(`.openfield[data-day="${day}"]`);
|
||||||
const gifts = window.gifts || {}; // globale Geschenk-Liste (aus popup.js)
|
const doors = document.querySelectorAll(`.door[data-day="${day}"]`);
|
||||||
const gift = gifts[day] || "<p>Heute ist noch nichts freigeschaltet.</p>";
|
const fluegelLeft = document.querySelector(`.fluegel.left[data-day="${day}"]`);
|
||||||
|
const fluegelRight = document.querySelector(`.fluegel.right[data-day="${day}"]`);
|
||||||
|
|
||||||
// === EINZELTÜR ===
|
// === EINZELTÜR-LOGIK ===
|
||||||
if (elem.classList.contains("door")) {
|
if (elem.classList.contains("door") || (openfield && doors.length)) {
|
||||||
elem.classList.toggle("open");
|
const door = doors[0];
|
||||||
if (openfield) openfield.classList.toggle("open");
|
if (!door.classList.contains("open")) {
|
||||||
showGiftPopup(gift);
|
door.classList.add("open");
|
||||||
|
if (openfield) openfield.classList.add("open");
|
||||||
|
console.log(`Tür ${day} geöffnet`);
|
||||||
|
} else {
|
||||||
|
console.log(`Tür ${day} erneut geöffnet`);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof openPopup === "function") openPopup(day);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// === DOPPELFLÜGEL ===
|
// === FLÜGEL-TÜR-LOGIK ===
|
||||||
if (elem.classList.contains("fluegel")) {
|
if (elem.classList.contains("fluegel") || (openfield && fluegelLeft && fluegelRight)) {
|
||||||
const left = document.querySelector(`.fluegel.left[data-day="${day}"]`);
|
const left = fluegelLeft;
|
||||||
const right = document.querySelector(`.fluegel.right[data-day="${day}"]`);
|
const right = fluegelRight;
|
||||||
|
|
||||||
if (left && right) {
|
if (!left.classList.contains("rota") || !right.classList.contains("rota")) {
|
||||||
left.classList.toggle("rota");
|
if (left) left.classList.add("rota");
|
||||||
right.classList.toggle("rota");
|
if (right) right.classList.add("rota");
|
||||||
|
if (openfield) openfield.classList.add("open");
|
||||||
|
console.log(`Flügeltür ${day} geöffnet`);
|
||||||
|
} else {
|
||||||
|
console.log(`Flügeltür ${day} erneut geöffnet`);
|
||||||
}
|
}
|
||||||
if (openfield) openfield.classList.toggle("open");
|
|
||||||
showGiftPopup(gift);
|
if (typeof openPopup === "function") openPopup(day);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
/* === Popup-Funktion === */
|
|
||||||
function showGiftPopup(html) {
|
|
||||||
const overlay = document.getElementById("popup-overlay");
|
|
||||||
const content = document.getElementById("popup-content");
|
|
||||||
if (!overlay || !content) return;
|
|
||||||
content.innerHTML = html;
|
|
||||||
overlay.style.display = "flex";
|
|
||||||
}
|
|
||||||
|
|
||||||
/* === Schließen-Logik (einmalig) === */
|
|
||||||
document.addEventListener("DOMContentLoaded", () => {
|
|
||||||
const overlay = document.getElementById("popup-overlay");
|
|
||||||
const closeBtn = document.getElementById("popup-close");
|
|
||||||
if (!overlay || !closeBtn) return;
|
|
||||||
closeBtn.addEventListener("click", () => (overlay.style.display = "none"));
|
|
||||||
overlay.addEventListener("click", e => {
|
|
||||||
if (e.target === overlay) overlay.style.display = "none";
|
|
||||||
});
|
|
||||||
});
|
|
||||||
Reference in New Issue
Block a user