@appbuckets/react-ui-forms
Version:
An utilities package to manage and create Form using AppBuckets ReactUI
77 lines (76 loc) • 2.65 kB
TypeScript
/// <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 };