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 }}> <script define:vars={{ ID }}>
function init() { function init() {
const form = document.getElementById(ID); const form = document.getElementById(ID);
if (!form) return; if (!form || form.dataset.initialised) return;
form.dataset.initialised = "true";
const responseMsg = form.querySelector( const responseMsg = form.querySelector(
`#${CSS.escape(ID + "-response-message")}` `#${CSS.escape(ID + "-response-message")}`
); );
+18 -11
View File
@@ -139,7 +139,8 @@ const { navbarDisplay = "normal" } = Astro.props as Props;
nav = document.getElementById("nav"); nav = document.getElementById("nav");
toggle = document.getElementById("menu-toggle"); toggle = document.getElementById("menu-toggle");
if (toggle) { if (toggle && !toggle.dataset.bound) {
toggle.dataset.bound = "true";
toggle.addEventListener("click", () => { toggle.addEventListener("click", () => {
if (nav) { if (nav) {
const visible = nav.getAttribute("data-mobile-menu") === "visible"; const visible = nav.getAttribute("data-mobile-menu") === "visible";
@@ -151,18 +152,24 @@ const { navbarDisplay = "normal" } = Astro.props as Props;
}); });
} }
document.addEventListener("keydown", (e) => { if (!document.documentElement.dataset.navbarKeydownBound) {
if ( document.documentElement.dataset.navbarKeydownBound = "true";
e.key === "Escape" && document.addEventListener("keydown", (e) => {
nav?.getAttribute("data-mobile-menu") === "visible" if (
) { e.key === "Escape" &&
nav.setAttribute("data-mobile-menu", "hidden"); nav?.getAttribute("data-mobile-menu") === "visible"
toggle?.setAttribute("aria-expanded", "false"); ) {
} nav.setAttribute("data-mobile-menu", "hidden");
}); toggle?.setAttribute("aria-expanded", "false");
}
});
}
checkScroll(); checkScroll();
}); });
window.addEventListener("scroll", checkScroll); if (!document.documentElement.dataset.navbarScrollBound) {
document.documentElement.dataset.navbarScrollBound = "true";
window.addEventListener("scroll", checkScroll, { passive: true });
}
</script> </script>
+1 -1
View File
@@ -1,4 +1,4 @@
/// <reference types="@astrojs/image/client" /> /// <reference types="astro/client" />
/// <reference types="./types/SiteImage" /> /// <reference types="./types/SiteImage" />
interface Window { interface Window {