UNPKG

@modular-forms/react

Version:

The modular and type-safe form library for React

32 lines (31 loc) 1.53 kB
import type { ReadonlySignal } from '@preact/signals-react'; import { type ReactNode } from 'react'; import type { FieldArrayPath, FieldValues, FormStore, Maybe, MaybeArray, ResponseData, ValidateFieldArray, ValidationMode } from '../types'; /** * Value type ot the field store. */ export type FieldArrayStore<TFieldValues extends FieldValues, TFieldArrayName extends FieldArrayPath<TFieldValues>> = { name: TFieldArrayName; items: ReadonlySignal<number[]>; error: ReadonlySignal<string>; active: ReadonlySignal<boolean>; touched: ReadonlySignal<boolean>; dirty: ReadonlySignal<boolean>; }; /** * Value type of the field array props. */ export type FieldArrayProps<TFieldValues extends FieldValues, TResponseData extends ResponseData, TFieldArrayName extends FieldArrayPath<TFieldValues>> = { of: FormStore<TFieldValues, TResponseData>; name: TFieldArrayName; children: (store: FieldArrayStore<TFieldValues, TFieldArrayName>) => ReactNode; validate?: Maybe<MaybeArray<ValidateFieldArray<number[]>>>; validateOn?: Maybe<ValidationMode>; revalidateOn?: Maybe<ValidationMode>; keepActive?: Maybe<boolean>; keepState?: Maybe<boolean>; }; /** * Headless field array that provides reactive properties and state. */ export declare function FieldArray<TFieldValues extends FieldValues, TResponseData extends ResponseData, TFieldArrayName extends FieldArrayPath<TFieldValues>>({ children, ...props }: FieldArrayProps<TFieldValues, TResponseData, TFieldArrayName>): JSX.Element;