@modular-forms/react
Version:
The modular and type-safe form library for React
32 lines (31 loc) • 1.53 kB
TypeScript
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;