export interface FormControlInstance extends HTMLElement {
_internals: ElementInternals;
formAssociated: true;
form: HTMLFormElement;
name: string;
type: string;
defaultValue: string;
validity: ValidityState;
validationMessage: string;
willValidate: boolean;
valueAsNumber: number;
composedLabel: string;
checked?: boolean;
readOnly: boolean;
required: boolean;
noValidate: boolean;
disabled: boolean;
value?: FormControlValue;
min: number | string | null;
max: number | string | null;
pattern?: string;
placeholder?: string;
minLength?: number;
maxLength?: number;
step?: number;
multiple?: boolean;
autocomplete?: string;
size?: number;
formNoValidate?: boolean;
formAction?: string;
formMethod?: string;
formTarget?: string;
dirName?: string;
list?: HTMLDataListElement | null;
selectionStart?: number | null;
selectionEnd?: number | null;
selectionDirection?: 'forward' | 'backward' | 'none';
reset(): void;
focus(): void;
select(): void;
setSelectionRange(start: number, end: number, direction?: 'forward' | 'backward' | 'none'): void;
setRangeText(replacement: string, start?: number, end?: number, selectMode?: 'select' | 'start' | 'end' | 'preserve'): void;
updateValue(value: FormControlValue): void;
checkValidity(): boolean;
reportValidity(): boolean;
setValidity(validity: Partial, message?: string): void;
setCustomValidity(message: string): void;
setFormValue(value: string | File | FormData | null): void;
_onChange(e: InputEvent, config?: {
valueType: 'string' | 'number';
}): void;
_onInput(e: InputEvent, config?: {
valueType: 'string' | 'number';
}): void;
}
export interface FormControlMixin {
new (...args: any[]): FormControlInstance;
formAssociated: boolean;
readonly observedAttributes: string[];
}
export type FormControlValue = string | number | File | File[] | FormData | null | Record;
type Constructor = (new (...args: any[]) => HTMLElement & {
connectedCallback?(): void;
disconnectedCallback?(): void;
attributeChangedCallback?(name: string, oldValue: string | null, newValue: string | null): void;
requestUpdate?(name?: string, oldValue?: unknown): void;
}) & {
observedAttributes?: string[];
};
export declare function FormControlMixin(SuperClass: TBase): TBase & FormControlMixin;
export {};