UNPKG

@appbuckets/react-ui-forms

Version:

An utilities package to manage and create Form using AppBuckets ReactUI

77 lines (76 loc) 2.65 kB
/// <reference types="react" /> import { FieldValues, UseFormReturn, SetValueConfig } from 'react-hook-form'; import type { FieldPath, UnpackNestedValue, FieldPathValue, } from 'react-hook-form'; import { StrictHookedFormProps } from '../HookedForm/HookedForm.types'; export declare type FieldChangedHandlerCallback<Value> = (value: Value) => void; declare type UnregisterChangeHandler = () => void; export declare type FieldChangeHandler< Values, FieldName extends FieldPath<Values> = FieldPath<Values> > = ( field: FieldName, handler: FieldChangedHandlerCallback< UnpackNestedValue<FieldPathValue<Values, FieldName>> > ) => UnregisterChangeHandler; export declare type TriggerFieldChanged< Values, FieldName extends FieldPath<Values> = FieldPath<Values> > = ( field: FieldName, value: UnpackNestedValue<FieldPathValue<Values, FieldName>> ) => void; export declare type UseFieldValue< Values, FieldName extends FieldPath<Values> = FieldPath<Values> > = ( field: FieldName ) => [ UnpackNestedValue<FieldPathValue<Values, FieldName>>, ( value: UnpackNestedValue<FieldPathValue<Values, FieldName>>, options?: SetValueConfig ) => void ]; export interface HookedFormContext<Values extends FieldValues = FieldValues> extends UseFormReturn<Values> { /** Element used to wrap form actions */ actionsWrapper: StrictHookedFormProps<Values, any, any>['actionsWrapper']; /** The cancel button */ cancelButton: StrictHookedFormProps<Values, any, any>['cancelButton']; /** Element used to wrap form content */ contentWrapper: StrictHookedFormProps<Values, any, any>['contentWrapper']; /** Default values */ defaultValues: Values | undefined; /** Disable entire form */ disabled: boolean; /** Handle form Cancel */ handleCancel: () => void; /** Handle form value change */ registerChangeHandler: FieldChangeHandler<Values>; /** The submit button */ submitButton: StrictHookedFormProps<Values, any, any>['submitButton']; /** Trigger field changed */ triggerFieldChanged: TriggerFieldChanged<Values>; /** Shorthand to use current field values */ useFieldValue: <FieldName extends FieldPath<Values> = FieldPath<Values>>( field: FieldName ) => [ UnpackNestedValue<FieldPathValue<Values, FieldName>>, ( value: UnpackNestedValue<FieldPathValue<Values, FieldName>>, options?: SetValueConfig ) => void ]; } declare const HookedFormProvider: import('react').Provider< HookedFormContext<any> >; declare function useHookedFormContext< Values extends FieldValues >(): HookedFormContext<Values>; export { useHookedFormContext, HookedFormProvider };