import { Controller, FormProvider, useForm } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; import { z } from "zod"; import { Button, FormControl, Input, ModalClose, TextArea } from "@app/components/v2"; import { TPamFolder } from "@app/hooks/api/pam"; import { slugSchema } from "@app/lib/schemas"; type Props = { folder?: TPamFolder; onSubmit: (formData: FormData) => Promise; }; const formSchema = z.object({ name: slugSchema({ min: 1, max: 64, field: "Name" }), description: z.string().max(512).optional() }); type FormData = z.infer; export const PamFolderForm = ({ folder, onSubmit }: Props) => { const isUpdate = Boolean(folder); const form = useForm({ resolver: zodResolver(formSchema), defaultValues: folder ? { name: folder.name, description: folder.description || "" } : undefined }); const { control, handleSubmit, formState: { isSubmitting, isDirty } } = form; return (
{ handleSubmit(onSubmit)(e); }} > ( )} /> (