mirror of
https://github.com/khairul169/vaulterm.git
synced 2025-06-18 01:29:37 +07:00
27 lines
587 B
TypeScript
27 lines
587 B
TypeScript
|
import { z } from "zod";
|
||
|
import { FieldValues, useForm } from "react-hook-form";
|
||
|
import { zodResolver } from "@hookform/resolvers/zod";
|
||
|
import { useEffect } from "react";
|
||
|
|
||
|
export const useZForm = <T extends FieldValues>(
|
||
|
schema: z.ZodSchema<T>,
|
||
|
value?: Partial<T> | null
|
||
|
) => {
|
||
|
const form = useForm<T>({
|
||
|
resolver: zodResolver(schema),
|
||
|
defaultValues: value as never,
|
||
|
});
|
||
|
|
||
|
useEffect(() => {
|
||
|
if (value) {
|
||
|
form.reset(value as never);
|
||
|
}
|
||
|
}, [value]);
|
||
|
|
||
|
return form;
|
||
|
};
|
||
|
|
||
|
export type UseZFormReturn<T extends FieldValues> = ReturnType<
|
||
|
typeof useZForm<T>
|
||
|
>;
|