134 lines
3.9 KiB
JavaScript
134 lines
3.9 KiB
JavaScript
import { loadGlucksbox } from "./quickmenu/glucksbox.js";
|
||
import { loadEvents } from "./quickmenu/events.js";
|
||
import { loadHeldenbonus } from "./quickmenu/heldenbonus.js";
|
||
import { loadSealedliga } from "./quickmenu/sealedliga.js";
|
||
import { loadBeschwoerer } from "./quickmenu/beschwoerer.js";
|
||
import { loadOnlinebonus } from "./quickmenu/onlinebonus.js";
|
||
import { loadAktionen } from "./quickmenu/aktionen.js";
|
||
import { loadBasar } from "./quickmenu/basar.js";
|
||
import { loadBoosteraktion } from "./quickmenu/boosteraktion.js";
|
||
import { loadBoosterjagd } from "./quickmenu/boosterjagd.js";
|
||
|
||
/* Popup-ID → Loader Funktion */
|
||
const popupLoaders = {
|
||
"qm-popup-glucksbox": loadGlucksbox,
|
||
"qm-popup-events": loadEvents,
|
||
"qm-popup-heldenbonus": loadHeldenbonus,
|
||
"qm-popup-sealedliga": loadSealedliga,
|
||
"qm-popup-beschwoerer": loadBeschwoerer,
|
||
"qm-popup-onlinebonus": loadOnlinebonus,
|
||
"qm-popup-aktionen": loadAktionen,
|
||
"qm-popup-basar": loadBasar,
|
||
"qm-popup-boosteraktion": loadBoosteraktion,
|
||
"qm-popup-boosterjagd": loadBoosterjagd,
|
||
};
|
||
|
||
/* ================================
|
||
Quick Menu – Toggle
|
||
================================ */
|
||
|
||
const toggleBtn = document.getElementById("quickmenu-toggle");
|
||
const panel = document.getElementById("quickmenu-panel");
|
||
const overlay = document.getElementById("qm-overlay");
|
||
|
||
let menuOpen = true;
|
||
|
||
toggleBtn.addEventListener("click", () => {
|
||
menuOpen = !menuOpen;
|
||
panel.classList.toggle("hidden", !menuOpen);
|
||
toggleBtn.textContent = menuOpen ? "\u25c4" : "\u25ba";
|
||
});
|
||
|
||
/* ================================
|
||
Quick Menu – Popups öffnen
|
||
================================ */
|
||
|
||
document.querySelectorAll(".qm-slot").forEach((slot) => {
|
||
slot.addEventListener("click", () => {
|
||
const id = slot.dataset.popup;
|
||
if (!id) return;
|
||
|
||
const popup = document.getElementById(id);
|
||
if (!popup) return;
|
||
|
||
// Popup zurück zur Mitte setzen
|
||
popup.style.transform = "translate(-50%, -50%) scale(1)";
|
||
popup.style.left = "50%";
|
||
popup.style.top = "50%";
|
||
|
||
overlay.classList.add("active");
|
||
popup.classList.add("active");
|
||
|
||
// Zugehörigen Loader aufrufen
|
||
const loader = popupLoaders[id];
|
||
if (loader) loader();
|
||
});
|
||
});
|
||
|
||
/* ================================
|
||
Quick Menu – Popups verschiebbar
|
||
================================ */
|
||
|
||
document.querySelectorAll(".qm-popup").forEach((popup) => {
|
||
const header = popup.querySelector(".qm-popup-header");
|
||
if (!header) return;
|
||
|
||
let isDragging = false;
|
||
let startX, startY, startLeft, startTop;
|
||
|
||
header.style.cursor = "grab";
|
||
|
||
header.addEventListener("mousedown", (e) => {
|
||
if (e.target.classList.contains("qm-popup-close")) return;
|
||
|
||
isDragging = true;
|
||
header.style.cursor = "grabbing";
|
||
|
||
const rect = popup.getBoundingClientRect();
|
||
startX = e.clientX;
|
||
startY = e.clientY;
|
||
startLeft = rect.left;
|
||
startTop = rect.top;
|
||
|
||
// transform zurücksetzen auf konkrete px-Werte
|
||
popup.style.transform = "none";
|
||
popup.style.left = startLeft + "px";
|
||
popup.style.top = startTop + "px";
|
||
|
||
e.preventDefault();
|
||
});
|
||
|
||
document.addEventListener("mousemove", (e) => {
|
||
if (!isDragging) return;
|
||
popup.style.left = (startLeft + (e.clientX - startX)) + "px";
|
||
popup.style.top = (startTop + (e.clientY - startY)) + "px";
|
||
});
|
||
|
||
document.addEventListener("mouseup", () => {
|
||
if (!isDragging) return;
|
||
isDragging = false;
|
||
header.style.cursor = "grab";
|
||
});
|
||
});
|
||
|
||
/* ================================
|
||
Quick Menu – Popups schließen
|
||
================================ */
|
||
|
||
document.querySelectorAll(".qm-popup-close").forEach((btn) => {
|
||
btn.addEventListener("click", closeAllPopups);
|
||
});
|
||
|
||
overlay.addEventListener("click", closeAllPopups);
|
||
|
||
function closeAllPopups() {
|
||
document.querySelectorAll(".qm-popup").forEach((p) => {
|
||
p.classList.remove("active");
|
||
});
|
||
overlay.classList.remove("active");
|
||
}
|
||
|
||
document.addEventListener("keydown", (e) => {
|
||
if (e.key === "Escape") closeAllPopups();
|
||
});
|