(() => { const formSelector = "form[data-submit-once]"; function progressIndicator() { return document.getElementById("submit-progress"); } function resetForm(form) { form.removeAttribute("aria-busy"); delete form.dataset.submitting; const button = form.querySelector("[data-submit-button]"); if (!button) { return; } button.disabled = false; button.removeAttribute("aria-disabled"); if (button.dataset.idleLabel) { button.textContent = button.dataset.idleLabel; delete button.dataset.idleLabel; } } document.addEventListener("submit", (event) => { const form = event.target.closest(formSelector); if (!form) { return; } if (form.dataset.submitting === "true") { event.preventDefault(); return; } form.dataset.submitting = "true"; form.setAttribute("aria-busy", "true"); const button = event.submitter || form.querySelector("[data-submit-button]"); if (button) { button.dataset.idleLabel = button.textContent; button.textContent = form.dataset.submittingLabel || "Posting…"; button.disabled = true; button.setAttribute("aria-disabled", "true"); } const progress = progressIndicator(); if (progress) { progress.hidden = false; } }); window.addEventListener("pageshow", () => { document.querySelectorAll(formSelector).forEach(resetForm); const progress = progressIndicator(); if (progress) { progress.hidden = true; } }); })();