Publiczna aplikacja fdmtech.pl: renderer CMS, formularz audytu, szablony i logotypy
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
(() => {
|
||||
"use strict";
|
||||
|
||||
const toggle = document.querySelector("[data-nav-toggle]");
|
||||
const nav = document.getElementById("site-nav");
|
||||
const scrim = document.querySelector("[data-nav-scrim]");
|
||||
|
||||
function setOpen(open) {
|
||||
if (!nav || !toggle) return;
|
||||
nav.dataset.open = open ? "true" : "false";
|
||||
toggle.setAttribute("aria-expanded", open ? "true" : "false");
|
||||
if (scrim) scrim.hidden = !open;
|
||||
document.body.style.overflow = open ? "hidden" : "";
|
||||
if (open) {
|
||||
const first = nav.querySelector("a");
|
||||
if (first) first.focus({ preventScroll: true });
|
||||
} else {
|
||||
toggle.focus({ preventScroll: true });
|
||||
}
|
||||
}
|
||||
|
||||
function isOpen() {
|
||||
return !!nav && nav.dataset.open === "true";
|
||||
}
|
||||
|
||||
if (toggle && nav) {
|
||||
if (nav.dataset.open !== "true") nav.dataset.open = "false";
|
||||
toggle.addEventListener("click", () => setOpen(!isOpen()));
|
||||
document.addEventListener("keydown", (event) => {
|
||||
if (event.key === "Escape" && isOpen()) setOpen(false);
|
||||
});
|
||||
}
|
||||
if (scrim) scrim.addEventListener("click", () => setOpen(false));
|
||||
|
||||
// Active nav item for the current path (progressive enhancement only).
|
||||
try {
|
||||
const here = new URL(window.location.href).pathname.replace(/\/$/, "") || "/";
|
||||
document.querySelectorAll(".site-nav a[href]").forEach((link) => {
|
||||
const target = new URL(link.getAttribute("href"), window.location.origin).pathname.replace(/\/$/, "") || "/";
|
||||
if (target === here) link.setAttribute("aria-current", "page");
|
||||
});
|
||||
} catch {
|
||||
/* keep server-rendered navigation as is */
|
||||
}
|
||||
|
||||
// Footer year (progressive enhancement only).
|
||||
const year = document.querySelector("[data-year]");
|
||||
if (year) year.textContent = String(new Date().getFullYear());
|
||||
})();
|
||||
Reference in New Issue
Block a user