UNPKG

remix-validated-form

Version:

Form component and utils for easy form validation in remix

344 lines (343 loc) 20.6 kB
import { FieldErrors, TouchedFields } from "../validation/types"; import { InternalFormId } from "./state/atomUtils"; export declare const ATOM_SCOPE: unique symbol; export declare type SyncedFormProps = { formId?: string; action?: string; subaction?: string; defaultValues: { [fieldName: string]: any; }; validateField: (fieldName: string) => Promise<string | null>; registerReceiveFocus: (fieldName: string, handler: () => void) => () => void; }; export declare const isHydratedAtom: { (param: InternalFormId): import("jotai").Atom<boolean> & { write: (get: { <Value>(atom: import("jotai").Atom<Value | Promise<Value>>): Value; <Value_1>(atom: import("jotai").Atom<Promise<Value_1>>): Value_1; <Value_2>(atom: import("jotai").Atom<Value_2>): Value_2 extends Promise<infer V> ? V : Value_2; } & { <Value_3>(atom: import("jotai").Atom<Value_3 | Promise<Value_3>>, options: { unstable_promise: true; }): Value_3 | Promise<Value_3>; <Value_4>(atom: import("jotai").Atom<Promise<Value_4>>, options: { unstable_promise: true; }): Value_4 | Promise<Value_4>; <Value_5>(atom: import("jotai").Atom<Value_5>, options: { unstable_promise: true; }): (Value_5 extends Promise<infer V> ? V : Value_5) | Promise<Value_5 extends Promise<infer V> ? V : Value_5>; }, set: { <Value_6, Result extends void | Promise<void>>(atom: import("jotai").WritableAtom<Value_6, undefined, Result>): Result; <Value_7, Update, Result_1 extends void | Promise<void>>(atom: import("jotai").WritableAtom<Value_7, Update, Result_1>, update: Update): Result_1; }, update: boolean | ((prev: boolean) => boolean)) => void; onMount?: (<S extends (update: boolean | ((prev: boolean) => boolean)) => void>(setAtom: S) => void | (() => void)) | undefined; } & { init: boolean; }; remove(param: InternalFormId): void; setShouldRemove(shouldRemove: ((createdAt: number, param: InternalFormId) => boolean) | null): void; }; export declare const isSubmittingAtom: { (param: InternalFormId): import("jotai").Atom<boolean> & { write: (get: { <Value>(atom: import("jotai").Atom<Value | Promise<Value>>): Value; <Value_1>(atom: import("jotai").Atom<Promise<Value_1>>): Value_1; <Value_2>(atom: import("jotai").Atom<Value_2>): Value_2 extends Promise<infer V> ? V : Value_2; } & { <Value_3>(atom: import("jotai").Atom<Value_3 | Promise<Value_3>>, options: { unstable_promise: true; }): Value_3 | Promise<Value_3>; <Value_4>(atom: import("jotai").Atom<Promise<Value_4>>, options: { unstable_promise: true; }): Value_4 | Promise<Value_4>; <Value_5>(atom: import("jotai").Atom<Value_5>, options: { unstable_promise: true; }): (Value_5 extends Promise<infer V> ? V : Value_5) | Promise<Value_5 extends Promise<infer V> ? V : Value_5>; }, set: { <Value_6, Result extends void | Promise<void>>(atom: import("jotai").WritableAtom<Value_6, undefined, Result>): Result; <Value_7, Update, Result_1 extends void | Promise<void>>(atom: import("jotai").WritableAtom<Value_7, Update, Result_1>, update: Update): Result_1; }, update: boolean | ((prev: boolean) => boolean)) => void; onMount?: (<S extends (update: boolean | ((prev: boolean) => boolean)) => void>(setAtom: S) => void | (() => void)) | undefined; } & { init: boolean; }; remove(param: InternalFormId): void; setShouldRemove(shouldRemove: ((createdAt: number, param: InternalFormId) => boolean) | null): void; }; export declare const hasBeenSubmittedAtom: { (param: InternalFormId): import("jotai").Atom<boolean> & { write: (get: { <Value>(atom: import("jotai").Atom<Value | Promise<Value>>): Value; <Value_1>(atom: import("jotai").Atom<Promise<Value_1>>): Value_1; <Value_2>(atom: import("jotai").Atom<Value_2>): Value_2 extends Promise<infer V> ? V : Value_2; } & { <Value_3>(atom: import("jotai").Atom<Value_3 | Promise<Value_3>>, options: { unstable_promise: true; }): Value_3 | Promise<Value_3>; <Value_4>(atom: import("jotai").Atom<Promise<Value_4>>, options: { unstable_promise: true; }): Value_4 | Promise<Value_4>; <Value_5>(atom: import("jotai").Atom<Value_5>, options: { unstable_promise: true; }): (Value_5 extends Promise<infer V> ? V : Value_5) | Promise<Value_5 extends Promise<infer V> ? V : Value_5>; }, set: { <Value_6, Result extends void | Promise<void>>(atom: import("jotai").WritableAtom<Value_6, undefined, Result>): Result; <Value_7, Update, Result_1 extends void | Promise<void>>(atom: import("jotai").WritableAtom<Value_7, Update, Result_1>, update: Update): Result_1; }, update: boolean | ((prev: boolean) => boolean)) => void; onMount?: (<S extends (update: boolean | ((prev: boolean) => boolean)) => void>(setAtom: S) => void | (() => void)) | undefined; } & { init: boolean; }; remove(param: InternalFormId): void; setShouldRemove(shouldRemove: ((createdAt: number, param: InternalFormId) => boolean) | null): void; }; export declare const fieldErrorsAtom: { (param: InternalFormId): import("jotai").Atom<FieldErrors> & { write: (get: { <Value>(atom: import("jotai").Atom<Value | Promise<Value>>): Value; <Value_1>(atom: import("jotai").Atom<Promise<Value_1>>): Value_1; <Value_2>(atom: import("jotai").Atom<Value_2>): Value_2 extends Promise<infer V> ? V : Value_2; } & { <Value_3>(atom: import("jotai").Atom<Value_3 | Promise<Value_3>>, options: { unstable_promise: true; }): Value_3 | Promise<Value_3>; <Value_4>(atom: import("jotai").Atom<Promise<Value_4>>, options: { unstable_promise: true; }): Value_4 | Promise<Value_4>; <Value_5>(atom: import("jotai").Atom<Value_5>, options: { unstable_promise: true; }): (Value_5 extends Promise<infer V> ? V : Value_5) | Promise<Value_5 extends Promise<infer V> ? V : Value_5>; }, set: { <Value_6, Result extends void | Promise<void>>(atom: import("jotai").WritableAtom<Value_6, undefined, Result>): Result; <Value_7, Update, Result_1 extends void | Promise<void>>(atom: import("jotai").WritableAtom<Value_7, Update, Result_1>, update: Update): Result_1; }, update: FieldErrors | ((prev: FieldErrors) => FieldErrors)) => void; onMount?: (<S extends (update: FieldErrors | ((prev: FieldErrors) => FieldErrors)) => void>(setAtom: S) => void | (() => void)) | undefined; } & { init: FieldErrors; }; remove(param: InternalFormId): void; setShouldRemove(shouldRemove: ((createdAt: number, param: InternalFormId) => boolean) | null): void; }; export declare const touchedFieldsAtom: { (param: InternalFormId): import("jotai").Atom<TouchedFields> & { write: (get: { <Value>(atom: import("jotai").Atom<Value | Promise<Value>>): Value; <Value_1>(atom: import("jotai").Atom<Promise<Value_1>>): Value_1; <Value_2>(atom: import("jotai").Atom<Value_2>): Value_2 extends Promise<infer V> ? V : Value_2; } & { <Value_3>(atom: import("jotai").Atom<Value_3 | Promise<Value_3>>, options: { unstable_promise: true; }): Value_3 | Promise<Value_3>; <Value_4>(atom: import("jotai").Atom<Promise<Value_4>>, options: { unstable_promise: true; }): Value_4 | Promise<Value_4>; <Value_5>(atom: import("jotai").Atom<Value_5>, options: { unstable_promise: true; }): (Value_5 extends Promise<infer V> ? V : Value_5) | Promise<Value_5 extends Promise<infer V> ? V : Value_5>; }, set: { <Value_6, Result extends void | Promise<void>>(atom: import("jotai").WritableAtom<Value_6, undefined, Result>): Result; <Value_7, Update, Result_1 extends void | Promise<void>>(atom: import("jotai").WritableAtom<Value_7, Update, Result_1>, update: Update): Result_1; }, update: TouchedFields | ((prev: TouchedFields) => TouchedFields)) => void; onMount?: (<S extends (update: TouchedFields | ((prev: TouchedFields) => TouchedFields)) => void>(setAtom: S) => void | (() => void)) | undefined; } & { init: TouchedFields; }; remove(param: InternalFormId): void; setShouldRemove(shouldRemove: ((createdAt: number, param: InternalFormId) => boolean) | null): void; }; export declare const formPropsAtom: { (param: InternalFormId): import("jotai").Atom<SyncedFormProps> & { write: (get: { <Value>(atom: import("jotai").Atom<Value | Promise<Value>>): Value; <Value_1>(atom: import("jotai").Atom<Promise<Value_1>>): Value_1; <Value_2>(atom: import("jotai").Atom<Value_2>): Value_2 extends Promise<infer V> ? V : Value_2; } & { <Value_3>(atom: import("jotai").Atom<Value_3 | Promise<Value_3>>, options: { unstable_promise: true; }): Value_3 | Promise<Value_3>; <Value_4>(atom: import("jotai").Atom<Promise<Value_4>>, options: { unstable_promise: true; }): Value_4 | Promise<Value_4>; <Value_5>(atom: import("jotai").Atom<Value_5>, options: { unstable_promise: true; }): (Value_5 extends Promise<infer V> ? V : Value_5) | Promise<Value_5 extends Promise<infer V> ? V : Value_5>; }, set: { <Value_6, Result extends void | Promise<void>>(atom: import("jotai").WritableAtom<Value_6, undefined, Result>): Result; <Value_7, Update, Result_1 extends void | Promise<void>>(atom: import("jotai").WritableAtom<Value_7, Update, Result_1>, update: Update): Result_1; }, update: SyncedFormProps | ((prev: SyncedFormProps) => SyncedFormProps)) => void; onMount?: (<S extends (update: SyncedFormProps | ((prev: SyncedFormProps) => SyncedFormProps)) => void>(setAtom: S) => void | (() => void)) | undefined; } & { init: SyncedFormProps; }; remove(param: InternalFormId): void; setShouldRemove(shouldRemove: ((createdAt: number, param: InternalFormId) => boolean) | null): void; }; export declare const formElementAtom: { (param: InternalFormId): import("jotai").Atom<HTMLFormElement | null> & { write: (get: { <Value>(atom: import("jotai").Atom<Value | Promise<Value>>): Value; <Value_1>(atom: import("jotai").Atom<Promise<Value_1>>): Value_1; <Value_2>(atom: import("jotai").Atom<Value_2>): Value_2 extends Promise<infer V> ? V : Value_2; } & { <Value_3>(atom: import("jotai").Atom<Value_3 | Promise<Value_3>>, options: { unstable_promise: true; }): Value_3 | Promise<Value_3>; <Value_4>(atom: import("jotai").Atom<Promise<Value_4>>, options: { unstable_promise: true; }): Value_4 | Promise<Value_4>; <Value_5>(atom: import("jotai").Atom<Value_5>, options: { unstable_promise: true; }): (Value_5 extends Promise<infer V> ? V : Value_5) | Promise<Value_5 extends Promise<infer V> ? V : Value_5>; }, set: { <Value_6, Result extends void | Promise<void>>(atom: import("jotai").WritableAtom<Value_6, undefined, Result>): Result; <Value_7, Update, Result_1 extends void | Promise<void>>(atom: import("jotai").WritableAtom<Value_7, Update, Result_1>, update: Update): Result_1; }, update: HTMLFormElement | ((prev: HTMLFormElement | null) => HTMLFormElement | null) | null) => void; onMount?: (<S extends (update: HTMLFormElement | ((prev: HTMLFormElement | null) => HTMLFormElement | null) | null) => void>(setAtom: S) => void | (() => void)) | undefined; } & { init: HTMLFormElement | null; }; remove(param: InternalFormId): void; setShouldRemove(shouldRemove: ((createdAt: number, param: InternalFormId) => boolean) | null): void; }; export declare const cleanupFormState: (formId: InternalFormId) => void; export declare const isValidAtom: { (param: InternalFormId): import("jotai").Atom<boolean>; remove(param: InternalFormId): void; setShouldRemove(shouldRemove: ((createdAt: number, param: InternalFormId) => boolean) | null): void; }; export declare const startSubmitAtom: { (param: InternalFormId): import("jotai").Atom<null> & { write: (get: { <Value>(atom: import("jotai").Atom<Value | Promise<Value>>): Value; <Value_1>(atom: import("jotai").Atom<Promise<Value_1>>): Value_1; <Value_2>(atom: import("jotai").Atom<Value_2>): Value_2 extends Promise<infer V> ? V : Value_2; } & { <Value_3>(atom: import("jotai").Atom<Value_3 | Promise<Value_3>>, options: { unstable_promise: true; }): Value_3 | Promise<Value_3>; <Value_4>(atom: import("jotai").Atom<Promise<Value_4>>, options: { unstable_promise: true; }): Value_4 | Promise<Value_4>; <Value_5>(atom: import("jotai").Atom<Value_5>, options: { unstable_promise: true; }): (Value_5 extends Promise<infer V> ? V : Value_5) | Promise<Value_5 extends Promise<infer V> ? V : Value_5>; }, set: { <Value_6, Result extends void | Promise<void>>(atom: import("jotai").WritableAtom<Value_6, undefined, Result>): Result; <Value_7, Update, Result_1 extends void | Promise<void>>(atom: import("jotai").WritableAtom<Value_7, Update, Result_1>, update: Update): Result_1; }, update: unknown) => void; onMount?: (<S extends (update?: unknown) => void>(setAtom: S) => void | (() => void)) | undefined; } & { init: null; }; remove(param: InternalFormId): void; setShouldRemove(shouldRemove: ((createdAt: number, param: InternalFormId) => boolean) | null): void; }; export declare const endSubmitAtom: { (param: InternalFormId): import("jotai").Atom<null> & { write: (get: { <Value>(atom: import("jotai").Atom<Value | Promise<Value>>): Value; <Value_1>(atom: import("jotai").Atom<Promise<Value_1>>): Value_1; <Value_2>(atom: import("jotai").Atom<Value_2>): Value_2 extends Promise<infer V> ? V : Value_2; } & { <Value_3>(atom: import("jotai").Atom<Value_3 | Promise<Value_3>>, options: { unstable_promise: true; }): Value_3 | Promise<Value_3>; <Value_4>(atom: import("jotai").Atom<Promise<Value_4>>, options: { unstable_promise: true; }): Value_4 | Promise<Value_4>; <Value_5>(atom: import("jotai").Atom<Value_5>, options: { unstable_promise: true; }): (Value_5 extends Promise<infer V> ? V : Value_5) | Promise<Value_5 extends Promise<infer V> ? V : Value_5>; }, set: { <Value_6, Result extends void | Promise<void>>(atom: import("jotai").WritableAtom<Value_6, undefined, Result>): Result; <Value_7, Update, Result_1 extends void | Promise<void>>(atom: import("jotai").WritableAtom<Value_7, Update, Result_1>, update: Update): Result_1; }, update: unknown) => void; onMount?: (<S extends (update?: unknown) => void>(setAtom: S) => void | (() => void)) | undefined; } & { init: null; }; remove(param: InternalFormId): void; setShouldRemove(shouldRemove: ((createdAt: number, param: InternalFormId) => boolean) | null): void; }; export declare const setTouchedAtom: { (param: InternalFormId): import("jotai").Atom<null> & { write: (get: { <Value>(atom: import("jotai").Atom<Value | Promise<Value>>): Value; <Value_1>(atom: import("jotai").Atom<Promise<Value_1>>): Value_1; <Value_2>(atom: import("jotai").Atom<Value_2>): Value_2 extends Promise<infer V> ? V : Value_2; } & { <Value_3>(atom: import("jotai").Atom<Value_3 | Promise<Value_3>>, options: { unstable_promise: true; }): Value_3 | Promise<Value_3>; <Value_4>(atom: import("jotai").Atom<Promise<Value_4>>, options: { unstable_promise: true; }): Value_4 | Promise<Value_4>; <Value_5>(atom: import("jotai").Atom<Value_5>, options: { unstable_promise: true; }): (Value_5 extends Promise<infer V> ? V : Value_5) | Promise<Value_5 extends Promise<infer V> ? V : Value_5>; }, set: { <Value_6, Result extends void | Promise<void>>(atom: import("jotai").WritableAtom<Value_6, undefined, Result>): Result; <Value_7, Update, Result_1 extends void | Promise<void>>(atom: import("jotai").WritableAtom<Value_7, Update, Result_1>, update: Update): Result_1; }, update: { field: string; touched: boolean; }) => void; onMount?: (<S extends (update: { field: string; touched: boolean; }) => void>(setAtom: S) => void | (() => void)) | undefined; } & { init: null; }; remove(param: InternalFormId): void; setShouldRemove(shouldRemove: ((createdAt: number, param: InternalFormId) => boolean) | null): void; }; export declare const setFieldErrorAtom: { (param: InternalFormId): import("jotai").Atom<null> & { write: (get: { <Value>(atom: import("jotai").Atom<Value | Promise<Value>>): Value; <Value_1>(atom: import("jotai").Atom<Promise<Value_1>>): Value_1; <Value_2>(atom: import("jotai").Atom<Value_2>): Value_2 extends Promise<infer V> ? V : Value_2; } & { <Value_3>(atom: import("jotai").Atom<Value_3 | Promise<Value_3>>, options: { unstable_promise: true; }): Value_3 | Promise<Value_3>; <Value_4>(atom: import("jotai").Atom<Promise<Value_4>>, options: { unstable_promise: true; }): Value_4 | Promise<Value_4>; <Value_5>(atom: import("jotai").Atom<Value_5>, options: { unstable_promise: true; }): (Value_5 extends Promise<infer V> ? V : Value_5) | Promise<Value_5 extends Promise<infer V> ? V : Value_5>; }, set: { <Value_6, Result extends void | Promise<void>>(atom: import("jotai").WritableAtom<Value_6, undefined, Result>): Result; <Value_7, Update, Result_1 extends void | Promise<void>>(atom: import("jotai").WritableAtom<Value_7, Update, Result_1>, update: Update): Result_1; }, update: { field: string; error: string | undefined; }) => void; onMount?: (<S extends (update: { field: string; error: string | undefined; }) => void>(setAtom: S) => void | (() => void)) | undefined; } & { init: null; }; remove(param: InternalFormId): void; setShouldRemove(shouldRemove: ((createdAt: number, param: InternalFormId) => boolean) | null): void; }; export declare const fieldTouchedAtom: { (param: import("./state/atomUtils").FieldAtomKey): import("jotai").WritableAtom<boolean, boolean, void>; remove(param: import("./state/atomUtils").FieldAtomKey): void; setShouldRemove(shouldRemove: ((createdAt: number, param: import("./state/atomUtils").FieldAtomKey) => boolean) | null): void; }; export declare const fieldErrorAtom: { (param: import("./state/atomUtils").FieldAtomKey): import("jotai").WritableAtom<string, string | undefined, void>; remove(param: import("./state/atomUtils").FieldAtomKey): void; setShouldRemove(shouldRemove: ((createdAt: number, param: import("./state/atomUtils").FieldAtomKey) => boolean) | null): void; }; export declare const fieldDefaultValueAtom: { (param: import("./state/atomUtils").FieldAtomKey): import("jotai").Atom<any>; remove(param: import("./state/atomUtils").FieldAtomKey): void; setShouldRemove(shouldRemove: ((createdAt: number, param: import("./state/atomUtils").FieldAtomKey) => boolean) | null): void; };