sudovanilla-website/public/@shoelace-style/shoelace/cdn/internal/form.d.ts
2024-05-13 23:34:06 -04:00

79 lines
4.3 KiB
TypeScript

import type { ReactiveController, ReactiveControllerHost } from 'lit';
import type { ShoelaceFormControl } from '../internal/shoelace-element.js';
import type SlButton from '../components/button/button.js';
export declare const formCollections: WeakMap<HTMLFormElement, Set<ShoelaceFormControl>>;
export interface FormControlControllerOptions {
/** A function that returns the form containing the form control. */
form: (input: ShoelaceFormControl) => HTMLFormElement | null;
/** A function that returns the form control's name, which will be submitted with the form data. */
name: (input: ShoelaceFormControl) => string;
/** A function that returns the form control's current value. */
value: (input: ShoelaceFormControl) => unknown | unknown[];
/** A function that returns the form control's default value. */
defaultValue: (input: ShoelaceFormControl) => unknown | unknown[];
/** A function that returns the form control's current disabled state. If disabled, the value won't be submitted. */
disabled: (input: ShoelaceFormControl) => boolean;
/**
* A function that maps to the form control's reportValidity() function. When the control is invalid, this will
* prevent submission and trigger the browser's constraint violation warning.
*/
reportValidity: (input: ShoelaceFormControl) => boolean;
/**
* A function that maps to the form control's `checkValidity()` function. When the control is invalid, this will return false.
* this is helpful is you want to check validation without triggering the native browser constraint violation warning.
*/
checkValidity: (input: ShoelaceFormControl) => boolean;
/** A function that sets the form control's value */
setValue: (input: ShoelaceFormControl, value: unknown) => void;
/**
* An array of event names to listen to. When all events in the list are emitted, the control will receive validity
* states such as user-valid and user-invalid.user interacted validity states. */
assumeInteractionOn: string[];
}
/** A reactive controller to allow form controls to participate in form submission, validation, etc. */
export declare class FormControlController implements ReactiveController {
host: ShoelaceFormControl & ReactiveControllerHost;
form?: HTMLFormElement | null;
options: FormControlControllerOptions;
constructor(host: ReactiveControllerHost & ShoelaceFormControl, options?: Partial<FormControlControllerOptions>);
hostConnected(): void;
hostDisconnected(): void;
hostUpdated(): void;
private attachForm;
private detachForm;
private handleFormData;
private handleFormSubmit;
private handleFormReset;
private handleInteraction;
private checkFormValidity;
private reportFormValidity;
private setUserInteracted;
private doAction;
/** Returns the associated `<form>` element, if one exists. */
getForm(): HTMLFormElement | null;
/** Resets the form, restoring all the control to their default value */
reset(submitter?: HTMLInputElement | SlButton): void;
/** Submits the form, triggering validation and form data injection. */
submit(submitter?: HTMLInputElement | SlButton): void;
/**
* Synchronously sets the form control's validity. Call this when you know the future validity but need to update
* the host element immediately, i.e. before Lit updates the component in the next update.
*/
setValidity(isValid: boolean): void;
/**
* Updates the form control's validity based on the current value of `host.validity.valid`. Call this when anything
* that affects constraint validation changes so the component receives the correct validity states.
*/
updateValidity(): void;
/**
* Dispatches a non-bubbling, cancelable custom event of type `sl-invalid`.
* If the `sl-invalid` event will be cancelled then the original `invalid`
* event (which may have been passed as argument) will also be cancelled.
* If no original `invalid` event has been passed then the `sl-invalid`
* event will be cancelled before being dispatched.
*/
emitInvalidEvent(originalInvalidEvent?: Event): void;
}
export declare const validValidityState: ValidityState;
export declare const valueMissingValidityState: ValidityState;
export declare const customErrorValidityState: ValidityState;