UNPKG

@modular-forms/solid

Version:

The modular and type-safe form library for SolidJS

44 lines (43 loc) 2.23 kB
import { type JSX } from 'solid-js'; import type { FieldElement, FieldPath, FieldPathValue, FieldType, FieldValues, FormStore, Maybe, MaybeArray, MaybeValue, PartialKey, ResponseData, TransformField, ValidateField, ValidationMode } from '../types'; /** * Value type ot the field store. */ export type FieldStore<TFieldValues extends FieldValues, TFieldName extends FieldPath<TFieldValues>> = { get name(): TFieldName; get value(): Maybe<FieldPathValue<TFieldValues, TFieldName>>; get error(): string; get active(): boolean; get touched(): boolean; get dirty(): boolean; }; /** * Value type of the field element props. */ export type FieldElementProps<TFieldValues extends FieldValues, TFieldName extends FieldPath<TFieldValues>> = { get name(): TFieldName; get autofocus(): boolean; ref: (element: FieldElement) => void; onInput: JSX.EventHandler<FieldElement, InputEvent>; onChange: JSX.EventHandler<FieldElement, Event>; onBlur: JSX.EventHandler<FieldElement, FocusEvent>; }; /** * Value type of the field props. */ export type FieldProps<TFieldValues extends FieldValues, TResponseData extends ResponseData, TFieldName extends FieldPath<TFieldValues>> = { of: FormStore<TFieldValues, TResponseData>; name: TFieldName; type: FieldType<FieldPathValue<TFieldValues, TFieldName>>; children: (store: FieldStore<TFieldValues, TFieldName>, props: FieldElementProps<TFieldValues, TFieldName>) => JSX.Element; validate?: Maybe<MaybeArray<ValidateField<FieldPathValue<TFieldValues, TFieldName>>>>; validateOn?: Maybe<ValidationMode>; revalidateOn?: Maybe<ValidationMode>; transform?: Maybe<MaybeArray<TransformField<FieldPathValue<TFieldValues, TFieldName>>>>; keepActive?: boolean; keepState?: boolean; }; /** * Headless form field that provides reactive properties and state. */ export declare function Field<TFieldValues extends FieldValues, TResponseData extends ResponseData, TFieldName extends FieldPath<TFieldValues>>(props: FieldPathValue<TFieldValues, TFieldName> extends MaybeValue<string> ? PartialKey<FieldProps<TFieldValues, TResponseData, TFieldName>, 'type'> : FieldProps<TFieldValues, TResponseData, TFieldName>): JSX.Element;