Prevent duplicate form and navbar listeners after page transitions, tidy env, env example
Build and Deploy to Web Server / deploy (push) Successful in 19m17s

This commit is contained in:
encie22 committed 2026-10-15 12:19:04 +10:30
1 parent 433b84ea8f
commit 3b702a1399
4 files changed
+28 -13

No files matched your search

+7
View File
@@ -0,0 +1,7 @@
# Copy to `.env` and fill in real values. Never commit `.env`.
EMAIL_HOST=smtp.example.com
EMAIL_PORT=587
EMAIL_SECURE=false
EMAIL_USER=user@example.com
EMAIL_PASS=change-me
EMAIL_FROM=noreply@example.com
+2 -1
View File
@@ -77,7 +77,8 @@ const { id: ID = "contact-form" } = Astro.props;
<script define:vars={{ ID }}>
function init() {
const form = document.getElementById(ID);
if (!form) return;
if (!form || form.dataset.initialised) return;
form.dataset.initialised = "true";
const responseMsg = form.querySelector(
`#${CSS.escape(ID + "-response-message")}`
);
+18 -11
View File
@@ -139,7 +139,8 @@ const { navbarDisplay = "normal" } = Astro.props as Props;
nav = document.getElementById("nav");
toggle = document.getElementById("menu-toggle");
if (toggle) {
if (toggle && !toggle.dataset.bound) {
toggle.dataset.bound = "true";
toggle.addEventListener("click", () => {
if (nav) {
const visible = nav.getAttribute("data-mobile-menu") === "visible";
@@ -151,18 +152,24 @@ const { navbarDisplay = "normal" } = Astro.props as Props;
});
}
document.addEventListener("keydown", (e) => {
if (
e.key === "Escape" &&
nav?.getAttribute("data-mobile-menu") === "visible"
) {
nav.setAttribute("data-mobile-menu", "hidden");
toggle?.setAttribute("aria-expanded", "false");
}
});
if (!document.documentElement.dataset.navbarKeydownBound) {
document.documentElement.dataset.navbarKeydownBound = "true";
document.addEventListener("keydown", (e) => {
if (
e.key === "Escape" &&
nav?.getAttribute("data-mobile-menu") === "visible"
) {
nav.setAttribute("data-mobile-menu", "hidden");
toggle?.setAttribute("aria-expanded", "false");
}
});
}
checkScroll();
});
window.addEventListener("scroll", checkScroll);
if (!document.documentElement.dataset.navbarScrollBound) {
document.documentElement.dataset.navbarScrollBound = "true";
window.addEventListener("scroll", checkScroll, { passive: true });
}
</script>
+1 -1
View File
@@ -1,4 +1,4 @@
/// <reference types="@astrojs/image/client" />
/// <reference types="astro/client" />
/// <reference types="./types/SiteImage" />
interface Window {