Files
wordpress-theme-aksrt/assets/js/core/nav.js
T

55 lines
1.7 KiB
JavaScript

/**
* AKSRT Navigation Drawer
*/
(function () {
"use strict";
function initNavDrawer() {
var toggle = document.getElementById("nav-toggle");
var drawer = document.getElementById("nav-drawer");
var backdrop = document.getElementById("nav-drawer-backdrop");
var closeBtn = document.getElementById("nav-drawer-close");
if (!toggle || !drawer || !backdrop) return;
var openIcon = toggle.querySelector(".nav-toggle-open");
var closeIcon = toggle.querySelector(".nav-toggle-close");
function setOpen(open) {
toggle.setAttribute("aria-expanded", open ? "true" : "false");
drawer.classList.toggle("is-open", open);
backdrop.classList.toggle("is-open", open);
drawer.setAttribute("aria-hidden", open ? "false" : "true");
backdrop.setAttribute("aria-hidden", open ? "false" : "true");
document.body.style.overflow = open ? "hidden" : "";
if (openIcon && closeIcon) {
openIcon.style.display = open ? "none" : "";
closeIcon.style.display = open ? "" : "none";
}
if (open && typeof window.__aksrtCloseSearchPanel === "function") {
window.__aksrtCloseSearchPanel();
}
}
setOpen(false);
toggle.addEventListener("click", function () {
setOpen(!drawer.classList.contains("is-open"));
});
backdrop.addEventListener("click", function () {
setOpen(false);
});
if (closeBtn) closeBtn.addEventListener("click", function () {
setOpen(false);
});
document.addEventListener("keydown", function (e) {
if (e.key === "Escape" && drawer.classList.contains("is-open")) {
setOpen(false);
toggle.focus();
}
});
}
window.AksrtFrontend.register("aksrt-nav-drawer", function () { initNavDrawer(); });
})();