UNPKG

@sandlada/vue-mdc

Version:

![Vue MDC Logo](https://raw.githubusercontent.com/sandlada/vue-mdc/refs/heads/main/docs/vue-mdc-cover.png)

81 lines (80 loc) 2.14 kB
/** * @license * Copyright 2019 Google LLC * SPDX-License-Identifier: Apache-2.0 * * @link * https://github.com/material-components/material-web/blob/main/internal/controller/form-submitter.ts * * [Modified by Sandlada & Kai Orion] * * @license * Copyright 2025 Sandlada & Kai Orion * SPDX-License-Identifier: MIT */ import { isServer } from "../../utils/is-server.js"; const FormSubmitterType = { Button: "button", Submit: "submit", Reset: "reset" }; const clickHandlers = /* @__PURE__ */ new WeakMap(); function setupFormSubmitter(elementInstance) { if (isServer()) { return; } if (clickHandlers.has(elementInstance)) { return; } const handleClick = async (event) => { const { type, form } = elementInstance; if (!form || type === "button") { return; } if (elementInstance.hasAttribute("disabled")) { return; } await new Promise((resolve) => { requestAnimationFrame(() => resolve()); }); if (event.defaultPrevented) { return; } if (type === "reset") { form.reset(); return; } const patchSubmitEvent = (submitEvent) => { Object.defineProperty(submitEvent, "submitter", { configurable: true, enumerable: true, get: () => elementInstance }); }; form.addEventListener("submit", patchSubmitEvent, { capture: true, once: true }); try { if (elementInstance.name) { } else { } } catch (error) { console.error("Error during form submission request:", error); form.removeEventListener("submit", patchSubmitEvent, { capture: true }); } form.requestSubmit(elementInstance); }; elementInstance.addEventListener("click", handleClick); clickHandlers.set(elementInstance, handleClick); } function cleanupFormSubmitter(elementInstance) { const handler = clickHandlers.get(elementInstance); if (handler) { elementInstance.removeEventListener("click", handler); clickHandlers.delete(elementInstance); } } export { FormSubmitterType, cleanupFormSubmitter, setupFormSubmitter }; //# sourceMappingURL=form-submitter.js.map