import type SgdsButton from "../components/Button/sgds-button"; import type { ReactiveController, ReactiveControllerHost } from "lit"; import SgdsElement from "../base/sgds-element"; import { SgdsInput } from "../components"; /** * A controller to help with form submission */ export declare class FormSubmitController implements ReactiveController { host?: ReactiveControllerHost & Element; form?: HTMLFormElement | null; options: FormSubmitControllerOptions; constructor(host: ReactiveControllerHost & Element, options?: Partial); hostConnected(): void; hostDisconnected(): void; /** * Creates a temporary native HTML button that can participate in form and invoke form submits and reset * Button is removed once action is performed */ doAction(type: "submit" | "reset", invoker?: HTMLInputElement | SgdsButton): void; /** Resets the form, restoring all the control to their default value */ reset(invoker?: HTMLInputElement | SgdsButton): void; /** Submits the form, triggering validation and form data injection. */ submit(invoker?: HTMLInputElement | SgdsButton): void; } export interface FormSubmitControllerOptions { /** A function that returns the form containing the form control. */ form: (input: unknown) => HTMLFormElement | null; } export interface SgdsFormControl extends SgdsElement { name: string; value: unknown; disabled?: boolean; defaultValue?: unknown; defaultChecked?: boolean; form?: HTMLFormElement; valid?: boolean; invalid?: boolean; pattern?: string; min?: number | string | Date; max?: number | string | Date; step?: number | "any"; required?: boolean; minlength?: number; maxlength?: number; input?: HTMLInputElement | SgdsInput; }