24 lines
1 KiB
JavaScript
24 lines
1 KiB
JavaScript
/* Admin-Sidebar: mobiles Off-Canvas-Verhalten (zweite v1-JS-Ausnahme, CLAUDE.md).
|
|
Togglet die Klasse cp-sidebar-open am <body>; das CSS schiebt die Sidebar ein.
|
|
Schließt bei Klick auf das Overlay oder auf einen Menüpunkt. Kein Framework. */
|
|
(function () {
|
|
var oeffner = document.querySelector("[data-sidebar-open]");
|
|
var overlay = document.querySelector("[data-sidebar-close]");
|
|
var sidebar = document.getElementById("cp-sidebar");
|
|
if (!oeffner || !sidebar) return;
|
|
|
|
function setOffen(offen) {
|
|
document.body.classList.toggle("cp-sidebar-open", offen);
|
|
oeffner.setAttribute("aria-expanded", offen ? "true" : "false");
|
|
if (overlay) overlay.hidden = !offen;
|
|
}
|
|
|
|
oeffner.addEventListener("click", function () { setOffen(true); });
|
|
if (overlay) overlay.addEventListener("click", function () { setOffen(false); });
|
|
sidebar.addEventListener("click", function (e) {
|
|
if (e.target.closest("a")) setOffen(false);
|
|
});
|
|
document.addEventListener("keydown", function (e) {
|
|
if (e.key === "Escape") setOffen(false);
|
|
});
|
|
})();
|