UNPKG

@vtaits/react-hook-form-schema

Version:

Integration of react-hook-form and @vtaits/form-schema

58 lines (55 loc) 5.32 kB
import { FieldSchemaBase, GetFieldSchema, FieldType as FieldType$1, ParentType, BaseValues } from '@vtaits/form-schema'; import { ReactNode, BaseSyntheticEvent } from 'react'; import { FieldValues, Path, UseFormReturn, UseFormProps, SubmitErrorHandler } from 'react-hook-form'; type MapErrors<Values extends FieldValues = FieldValues, SerializedValues extends FieldValues = FieldValues, Errors extends Record<string, any> = Record<string, any>> = (rawErrors: Errors, valuesForSubmit: SerializedValues, values: Values) => Errors; type RenderParams<FieldSchema, Values extends FieldValues = FieldValues, RawValues extends FieldValues = FieldValues, SerializedValues extends FieldValues = FieldValues, Errors extends Record<string, any> = Record<string, any>, Payload = any> = Readonly<{ /** * Current name of the field on the level. For example: * * `fieldPath === "group.list.0.input"` * `name === "input"` */ name: string; /** * Full path to the field from root. For example: * * `fieldPath === "group.list.0.input"` * `name === "input"` */ fieldPath: Path<Values>; fieldSchema: FieldSchema; payload?: Payload; getFieldSchema: GetFieldSchema<FieldSchema>; getFieldType: GetFieldType<FieldSchema, Values, RawValues, SerializedValues, Errors, Payload>; /** * stack of parent fields above current field with runtime values */ parents: readonly ParentType<Values>[]; dependencies: unknown; }>; type FieldType<FieldSchema, Values extends FieldValues = FieldValues, RawValues extends FieldValues = FieldValues, SerializedValues extends FieldValues = FieldValues, Errors extends Record<string, any> = Record<string, any>, Payload = any, TContext = any> = Readonly<FieldType$1<FieldSchema, Values, RawValues, SerializedValues, Errors> & { render: (renderParams: RenderParams<FieldSchema, Values, RawValues, SerializedValues, Errors, Payload>, formResult: UseFormReturn<Values, TContext, Values>) => ReactNode; }>; type FieldSchemaWithRenderBase = FieldSchemaBase & { render?: (renderParams: RenderParams<FieldSchemaWithRenderBase, BaseValues, BaseValues, BaseValues>, formResult: UseFormReturn<BaseValues, any, BaseValues>) => ReactNode; }; type GetFieldType<FieldSchema, Values extends FieldValues = FieldValues, RawValues extends FieldValues = FieldValues, SerializedValues extends FieldValues = FieldValues, Errors extends Record<string, any> = Record<string, any>, Payload = any, TContext = any> = (fieldSchema: FieldSchema) => FieldType<FieldSchema, Values, RawValues, SerializedValues, Errors, Payload, TContext>; type FormSchemaParams<FieldSchema, Values extends FieldValues = FieldValues, RawValues extends FieldValues = FieldValues, SerializedValues extends FieldValues = FieldValues, Errors extends Record<string, any> = Record<string, any>, Payload = any, TContext = any> = { names: string[]; getFieldSchema?: GetFieldSchema<FieldSchema>; getFieldType: GetFieldType<FieldSchema, Values, RawValues, SerializedValues, Errors, Payload, TContext>; }; type UseFormSchemaParams<FieldSchema, Values extends FieldValues = FieldValues, RawValues extends FieldValues = FieldValues, SerializedValues extends FieldValues = FieldValues, Errors extends Record<string, any> = Record<string, any>, Payload = any, TContext = any> = Readonly<Omit<UseFormProps<Values, TContext>, "defaultValues"> & FormSchemaParams<FieldSchema, Values, RawValues, SerializedValues, Errors, Payload, TContext> & Pick<UseFormProps<RawValues, TContext>, "defaultValues"> & { mapErrors?: MapErrors<Values, SerializedValues, Errors>; }>; type OnSubmit<Values extends FieldValues = FieldValues, SerializedValues extends FieldValues = FieldValues, Errors extends Record<string, any> = Record<string, any>> = (serializedValues: SerializedValues, rawValues: Values, event?: BaseSyntheticEvent) => Errors | null | undefined | Promise<Errors | null | undefined>; type HandleSubmitBySchema<Values extends FieldValues = FieldValues, SerializedValues extends FieldValues = FieldValues, Errors extends Record<string, any> = Record<string, any>> = (onSubmit: OnSubmit<Values, SerializedValues, Errors>, onError?: SubmitErrorHandler<Values>) => (e?: BaseSyntheticEvent) => Promise<void>; type RenderField<Values extends FieldValues = FieldValues, Payload = any> = (name: string, payload?: Payload, parents?: readonly ParentType<Values>[]) => ReactNode; type UseFormSchemaReturn<Values extends FieldValues = FieldValues, RawValues extends FieldValues = FieldValues, SerializedValues extends FieldValues = FieldValues, Errors extends Record<string, any> = Record<string, any>, Payload = any, TContext = any> = Readonly<Omit<UseFormReturn<Values, TContext, Values>, "handleSubmit"> & { handleSubmit: HandleSubmitBySchema<Values, SerializedValues, Errors>; parseValues: (values: RawValues) => Values | Promise<Values>; setValues: (values: Values) => Promise<void>; parseAndSetValues: (rawValues: RawValues) => Promise<void>; renderField: RenderField<Values, Payload>; }>; export type { FieldSchemaWithRenderBase as F, GetFieldType as G, HandleSubmitBySchema as H, MapErrors as M, OnSubmit as O, RenderParams as R, UseFormSchemaParams as U, UseFormSchemaReturn as a, FieldType as b, FormSchemaParams as c, RenderField as d };