@gulibs/vgrove-ui
Version:
VGrove UI component library built with HeroUI and React
45 lines • 2.53 kB
TypeScript
import React from 'react';
import type { UseFormReturn, FieldValues, SubmitHandler, SubmitErrorHandler, UseFormReset, UseFormSetValue, Mode, FieldPath } from 'react-hook-form';
import type { SlotsToClasses } from '@heroui/react';
import type { ButtonProps } from '@heroui/react';
export type FormSlots = "base" | "footer";
export type FormFooterConfig = {
resetProps?: Omit<ButtonProps, "children">;
resetText?: React.ReactNode;
submitProps?: Omit<ButtonProps, "children">;
submitText?: React.ReactNode;
hiddenReset?: boolean;
onReset?: () => void;
};
export interface FormInstance<TFieldValues extends FieldValues = FieldValues> extends UseFormReturn<TFieldValues> {
getFieldValue: (name: FieldPath<TFieldValues>) => any;
getFieldsValue: () => TFieldValues;
setFieldValue: (name: FieldPath<TFieldValues>, value: any) => void;
setFieldsValue: (values: Partial<TFieldValues>) => void;
resetFields: () => void;
validateFields: () => Promise<boolean>;
setFieldError: (name: FieldPath<TFieldValues>, error: any) => void;
clearFieldErrors: (names?: FieldPath<TFieldValues>[]) => void;
}
export interface FormAction<TFieldValues extends FieldValues = FieldValues> {
submit: () => void;
reset: UseFormReset<TFieldValues>;
setFieldValue: UseFormSetValue<TFieldValues>;
setFieldValues: (values: Partial<TFieldValues>) => void;
getFieldValues: () => TFieldValues;
}
export interface FormProps<TFieldValues extends FieldValues = FieldValues> extends Omit<React.DetailedHTMLProps<React.FormHTMLAttributes<HTMLFormElement>, HTMLFormElement>, 'method'> {
classNames?: SlotsToClasses<FormSlots>;
footer?: false | FormFooterConfig;
mode?: Mode;
watchNames?: FieldPath<TFieldValues> | FieldPath<TFieldValues>[];
onFinish?: SubmitHandler<TFieldValues>;
onFinishError?: SubmitErrorHandler<TFieldValues>;
form?: FormInstance<TFieldValues>;
}
export declare function Form<TFieldValues extends FieldValues = FieldValues>(props: FormProps<TFieldValues>): import("react/jsx-runtime").JSX.Element;
export interface FormWithMethodsProps<TFieldValues extends FieldValues = FieldValues> extends FormProps<TFieldValues> {
method: FormInstance<TFieldValues>;
}
export declare function FormWithMethods<TFieldValues extends FieldValues = FieldValues>({ method, classNames, footer, watchNames, onFinish, onFinishError, children, ...formProps }: FormWithMethodsProps<TFieldValues>): import("react/jsx-runtime").JSX.Element;
//# sourceMappingURL=Form.d.ts.map