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
+19
-4
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 }}>
|
<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")}`
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -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,6 +152,8 @@ const { navbarDisplay = "normal" } = Astro.props as Props;
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!document.documentElement.dataset.navbarKeydownBound) {
|
||||||
|
document.documentElement.dataset.navbarKeydownBound = "true";
|
||||||
document.addEventListener("keydown", (e) => {
|
document.addEventListener("keydown", (e) => {
|
||||||
if (
|
if (
|
||||||
e.key === "Escape" &&
|
e.key === "Escape" &&
|
||||||
@@ -160,9 +163,13 @@ const { navbarDisplay = "normal" } = Astro.props as Props;
|
|||||||
toggle?.setAttribute("aria-expanded", "false");
|
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>
|
||||||
Vendored
+1
-1
@@ -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 {
|
||||||
|
|||||||
Reference in new issue
Block a user