remix-validated-form
Version:
Form component and utils for easy form validation in remix
39 lines (38 loc) • 2 kB
TypeScript
import { Atom } from "jotai";
export declare type InternalFormId = string | symbol;
export declare const formAtomFamily: <T>(data: T) => {
(param: InternalFormId): Atom<T> & {
write: (get: {
<Value>(atom: Atom<Value | Promise<Value>>): Value;
<Value_1>(atom: Atom<Promise<Value_1>>): Value_1;
<Value_2>(atom: Atom<Value_2>): Value_2 extends Promise<infer V> ? V : Value_2;
} & {
<Value_3>(atom: Atom<Value_3 | Promise<Value_3>>, options: {
unstable_promise: true;
}): Value_3 | Promise<Value_3>;
<Value_4>(atom: Atom<Promise<Value_4>>, options: {
unstable_promise: true;
}): Value_4 | Promise<Value_4>;
<Value_5>(atom: 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: T | ((prev: T) => T)) => void;
onMount?: (<S extends import("jotai/core/atom").SetAtom<T | ((prev: T) => T), void>>(setAtom: S) => void | (() => void)) | undefined;
} & {
init: T;
};
remove(param: InternalFormId): void;
setShouldRemove(shouldRemove: ((createdAt: number, param: InternalFormId) => boolean) | null): void;
};
export declare type FieldAtomKey = {
formId: InternalFormId;
field: string;
};
export declare const fieldAtomFamily: <T extends Atom<unknown>>(func: (key: FieldAtomKey) => T) => {
(param: FieldAtomKey): T;
remove(param: FieldAtomKey): void;
setShouldRemove(shouldRemove: ((createdAt: number, param: FieldAtomKey) => boolean) | null): void;
};