@modular-forms/solid
Version:
The modular and type-safe form library for SolidJS
44 lines (43 loc) • 2.23 kB
TypeScript
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;