mirror of
https://github.com/ajnart/homarr.git
synced 2026-02-27 08:50:56 +01:00
* refactor: move zod import from validation package to zod * refactor: move missing zod imports
30 lines
885 B
TypeScript
30 lines
885 B
TypeScript
import { useForm, zodResolver } from "@mantine/form";
|
|
import { z } from "zod";
|
|
import type { AnyZodObject, ZodDiscriminatedUnion, ZodEffects, ZodIntersection } from "zod";
|
|
|
|
import { useI18n } from "@homarr/translation/client";
|
|
import { zodErrorMap } from "@homarr/validation/form";
|
|
|
|
export const useZodForm = <
|
|
TSchema extends
|
|
| AnyZodObject
|
|
| ZodEffects<AnyZodObject>
|
|
| ZodIntersection<AnyZodObject | ZodDiscriminatedUnion<string, AnyZodObject[]>, AnyZodObject>,
|
|
>(
|
|
schema: TSchema,
|
|
options: Omit<
|
|
Exclude<Parameters<typeof useForm<z.infer<TSchema>>>[0], undefined>,
|
|
"validate" | "validateInputOnBlur" | "validateInputOnChange"
|
|
>,
|
|
) => {
|
|
const t = useI18n();
|
|
|
|
z.setErrorMap(zodErrorMap(t));
|
|
return useForm<z.infer<TSchema>>({
|
|
...options,
|
|
validateInputOnBlur: true,
|
|
validateInputOnChange: true,
|
|
validate: zodResolver(schema),
|
|
});
|
|
};
|