import { zodResolver } from '@hookform/resolvers/zod' import { useEffect } from 'react' import { SubmitHandler, useForm } from 'react-hook-form' import { Button, Dialog, DialogContent, DialogFooter, DialogHeader, DialogSection, DialogSectionSeparator, DialogTitle, Form, FormControl, FormField, Input, Textarea, } from 'ui' import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout' import * as z from 'zod' const formSchema = z.object({ name: z.string().min(1, 'Required'), description: z.string().optional(), }) type SavedQuery = z.infer export interface UpdateSavedQueryProps { header: string visible: boolean onCancel: () => void onSubmit: SubmitHandler initialValues: SavedQuery } export const UpdateSavedQueryModal = ({ header, visible, onCancel, onSubmit, initialValues, }: UpdateSavedQueryProps) => { const form = useForm({ resolver: zodResolver(formSchema), defaultValues: { ...initialValues, description: initialValues.description ?? '' }, }) const { reset, formState } = form const { isDirty, isSubmitting } = formState useEffect(() => { if (isDirty) return reset({ ...initialValues, description: initialValues.description ?? '' }) }, [isDirty, initialValues, reset]) const handleCancel = () => { form.reset() onCancel() } return ( {header}
( )} /> (