UNPKG

@nestledjs/forms

Version:

A flexible React form library supporting both declarative and imperative usage patterns with TypeScript support

92 lines (91 loc) 3.61 kB
import { ZodTypeAny } from 'zod'; import { FieldValues, RegisterOptions, Resolver } from 'react-hook-form'; import { BaseFieldOptions, InputFieldOptions } from '../form-types'; /** * Creates validation rules for a field that combine Zod schema validation * with traditional validation functions. * * @param field - The field configuration containing validation options * @param isRequired - Whether the field is currently required (considering dynamic conditions) * @returns RegisterOptions for react-hook-form register function */ export declare function createFieldValidation(field: InputFieldOptions, // InputFieldOptions extends BaseFieldOptions and has validate isRequired: boolean, currentValidationGroup?: string): RegisterOptions; /** * Creates a form-level resolver that can handle both Zod schemas and field-level validation. * This allows for mixed validation strategies within the same form. * * @param schema - Optional Zod schema for form-level validation * @param fields - Array of form fields with their validation configurations * @returns A resolver function for react-hook-form */ export declare function createFormResolver<TFieldValues extends FieldValues = FieldValues>(schema?: ZodTypeAny, fields?: Array<{ key: string; options: InputFieldOptions; }>, currentValidationGroup?: string): Resolver<TFieldValues> | undefined; /** * Creates a validation function that only validates fields in a specific group. * Useful for multi-step forms where you want to validate only the current step. * * @param form - The react-hook-form instance * @param validationGroup - The group to validate * @param fields - Array of form fields * @returns Promise that resolves to true if valid, or validation errors */ export declare function validateGroup<T extends FieldValues>(form: { getValues: () => T; trigger: (names?: string[]) => Promise<boolean>; }, validationGroup: string, fields: Array<{ key: string; options: BaseFieldOptions & { validationGroup?: string; }; }>): Promise<boolean>; /** * Gets all validation groups present in the form fields. * * @param fields - Array of form fields * @returns Array of unique validation group names */ export declare function getValidationGroups(fields: Array<{ key: string; options: BaseFieldOptions & { validationGroup?: string; }; }>): string[]; /** * Gets all fields that belong to a specific validation group. * * @param fields - Array of form fields * @param validationGroup - The group to filter by * @returns Array of fields in the specified group */ export declare function getFieldsInGroup(fields: Array<{ key: string; options: BaseFieldOptions & { validationGroup?: string; }; }>, validationGroup: string): Array<{ key: string; options: BaseFieldOptions & { validationGroup?: string; }; }>; /** * Checks if a field should be validated based on current form values and validation conditions. * * @param field - The field to check * @param formValues - Current form values * @param currentValidationGroup - Current validation group (if any) * @returns true if field should be validated, false otherwise */ export declare function shouldValidateField(field: { options: BaseFieldOptions & { validateWhen?: (formValues: any) => boolean; validationGroup?: string; }; }, formValues: any, currentValidationGroup?: string): boolean; /** * Utility to extract TypeScript types from Zod schemas for better type inference */ export type InferSchemaType<T> = T extends ZodTypeAny ? T['_output'] : never;