41 lines
1.3 KiB
JavaScript
41 lines
1.3 KiB
JavaScript
(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();
|
|
}
|
|
});
|
|
})();
|