remix-validated-form
Version:
Form component and utils for easy form validation in remix
27 lines (26 loc) • 1.35 kB
TypeScript
import { InternalFormId } from "./types";
export declare type FieldState = {
refCount: number;
value: unknown;
defaultValue?: unknown;
hydrated: boolean;
valueUpdatePromise: Promise<void> | undefined;
resolveValueUpdate: (() => void) | undefined;
};
export declare type ControlledFieldState = {
forms: {
[formId: InternalFormId]: {
[fieldName: string]: FieldState | undefined;
};
};
register: (formId: InternalFormId, fieldName: string) => void;
unregister: (formId: InternalFormId, fieldName: string) => void;
getField: (formId: InternalFormId, fieldName: string) => FieldState | undefined;
setValue: (formId: InternalFormId, fieldName: string, value: unknown) => void;
hydrateWithDefault: (formId: InternalFormId, fieldName: string, defaultValue: unknown) => void;
awaitValueUpdate: (formId: InternalFormId, fieldName: string) => Promise<void>;
reset: (formId: InternalFormId) => void;
};
export declare const useControlledFieldStore: import("zustand").UseBoundStore<Omit<import("zustand").StoreApi<ControlledFieldState>, "setState"> & {
setState(nextStateOrUpdater: ControlledFieldState | Partial<ControlledFieldState> | ((state: import("immer/dist/internal").WritableDraft<ControlledFieldState>) => void), shouldReplace?: boolean | undefined): void;
}>;