remix-validated-form
Version:
Form component and utils for easy form validation in remix
29 lines (28 loc) • 1.31 kB
TypeScript
import React from "react";
export type FieldArrayValidationBehavior = "onChange" | "onSubmit";
export type FieldArrayValidationBehaviorOptions = {
initial: FieldArrayValidationBehavior;
whenSubmitted: FieldArrayValidationBehavior;
};
export type FieldArrayHelpers<Item = any> = {
push: (item: Item) => void;
swap: (indexA: number, indexB: number) => void;
move: (from: number, to: number) => void;
insert: (index: number, value: Item) => void;
unshift: (value: Item) => void;
remove: (index: number) => void;
pop: () => void;
replace: (index: number, value: Item) => void;
};
export type UseFieldArrayOptions = {
formId?: string;
validationBehavior?: Partial<FieldArrayValidationBehaviorOptions>;
};
export declare function useFieldArray<Item = any>(name: string, { formId, validationBehavior }?: UseFieldArrayOptions): [itemDefaults: Item[], helpers: FieldArrayHelpers<any>, error: string | undefined];
export type FieldArrayProps = {
name: string;
children: (itemDefaults: any[], helpers: FieldArrayHelpers, error: string | undefined) => React.ReactNode;
formId?: string;
validationBehavior?: FieldArrayValidationBehaviorOptions;
};
export declare const FieldArray: ({ name, children, formId, validationBehavior, }: FieldArrayProps) => JSX.Element;