Files
ad/molodetz/static/js/utils/FormManager.js
T

31 lines
980 B
JavaScript
Raw Normal View History

2026-10-05 09:36:20 +02:00
// retoor <retoor@molodetz.nl>
import { LoadingButton } from "./LoadingButton.js";
export class FormManager {
constructor(dialog) {
this.dialog = dialog;
document.addEventListener("submit", (event) => this.onSubmit(event), true);
}
async onSubmit(event) {
const form = event.target;
if (!(form instanceof HTMLFormElement)) {
return;
}
if (form.dataset.confirm && form.dataset.confirmed !== "1") {
event.preventDefault();
const accepted = await this.dialog.confirm(form.dataset.confirm);
if (accepted) {
form.dataset.confirmed = "1";
form.requestSubmit(event.submitter || undefined);
}
return;
}
const button = event.submitter || form.querySelector("[data-loading]");
if (button && button.hasAttribute("data-loading")) {
LoadingButton.setLoading(button, true);
window.addEventListener("pageshow", () => LoadingButton.setLoading(button, false), { once: true });
}
}
}