sabisan/web/static/app.js

41 lines
1.3 KiB
JavaScript
Raw Permalink Normal View History

2026-05-16 19:30:20 +00:00
(function () {
const updateHeader = () => {
const header = document.querySelector("[data-site-header]");
if (!header) return;
const compact = window.scrollY > 24;
header.classList.toggle("is-compact", compact);
};
updateHeader();
window.addEventListener("scroll", updateHeader, { passive: true });
function closeOverlay() {
const root = document.getElementById("overlay-root");
if (root) root.innerHTML = "";
document.documentElement.classList.remove("overflow-hidden");
}
document.addEventListener("htmx:afterSwap", function (event) {
if (event.detail.target && event.detail.target.id === "overlay-root") {
const overlay = event.detail.target.querySelector("[data-overlay]");
if (!overlay) return;
document.documentElement.classList.add("overflow-hidden");
const close = overlay.querySelector("[data-overlay-close]");
if (close) close.focus();
}
});
document.addEventListener("htmx:afterSettle", updateHeader);
document.addEventListener("click", function (event) {
if (event.target.matches("[data-overlay], [data-overlay-close]")) {
closeOverlay();
}
});
document.addEventListener("keydown", function (event) {
if (event.key === "Escape") {
closeOverlay();
}
});
})();