UNPKG

@furystack/shades-common-components

Version:

38 lines 1.5 kB
import type { ChildrenList, PartialElement } from '@furystack/shades'; import { ObservableValue } from '@furystack/utils'; import type { InputValidationResult } from './inputs/input.js'; type UnknownFormValidationResult = { isValid: null; }; type ValidFormValidationResult = { isValid: true; }; type InvalidFormValidationResult = { isValid: false; reason: 'validation-failed' | 'input-validation-failed' | 'unknown'; }; type FormValidationResult = ValidFormValidationResult | InvalidFormValidationResult | UnknownFormValidationResult; export declare class FormService<T> { validatedFormData: ObservableValue<T | null>; rawFormData: ObservableValue<{ [k: string]: FormDataEntryValue; } | null>; validationResult: ObservableValue<FormValidationResult>; fieldErrors: ObservableValue<{ [x: string]: { validationResult: InputValidationResult; validity: ValidityState; } | undefined; }>; inputs: Set<HTMLInputElement>; setFieldState: (key: keyof T, validationResult: InputValidationResult, validity: ValidityState) => void; [Symbol.dispose](): void; } type FormProps<T> = { onSubmit: (formData: T) => void; onReset?: () => void; validate: (formData: any) => formData is T; } & PartialElement<Omit<HTMLFormElement, 'onsubmit' | 'onchange' | 'onreset'>>; export declare const Form: <T>(props: FormProps<T>, children: ChildrenList) => JSX.Element; export {}; //# sourceMappingURL=form.d.ts.map