Prevent duplicate form and navbar listeners after page transitions, tidy env, env example
Build and Deploy to Web Server / deploy (push) Successful in 19m17s
Build and Deploy to Web Server / deploy (push) Successful in 19m17s
This commit is contained in:
4 files changed
+28
-13
No files matched your search
@@ -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
|
||||
@@ -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
@@ -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>
|
||||
Vendored
+1
-1
@@ -1,4 +1,4 @@
|
||||
/// <reference types="@astrojs/image/client" />
|
||||
/// <reference types="astro/client" />
|
||||
/// <reference types="./types/SiteImage" />
|
||||
|
||||
interface Window {
|
||||
|
||||
Reference in new issue
Block a user