import { z } from 'zod' import { useForm } from 'react-hook-form' import { zodResolver } from '@hookform/resolvers/zod' import { showSubmittedData } from '@/lib/show-submitted-data' import { Button } from '@/components/ui/button' import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage, } from '@/components/ui/form' import { Input } from '@/components/ui/input' import { RadioGroup, RadioGroupItem } from '@/components/ui/radio-group' import { Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, } from '@/components/ui/sheet' import { SelectDropdown } from '@/components/select-dropdown' import { type Task } from '../data/schema' type TaskMutateDrawerProps = { open: boolean onOpenChange: (open: boolean) => void currentRow?: Task } const formSchema = z.object({ title: z.string().min(1, 'Title is required.'), status: z.string().min(1, 'Please select a status.'), label: z.string().min(1, 'Please select a label.'), priority: z.string().min(1, 'Please choose a priority.'), }) type TaskForm = z.infer export function TasksMutateDrawer({ open, onOpenChange, currentRow, }: TaskMutateDrawerProps) { const isUpdate = !!currentRow const form = useForm({ resolver: zodResolver(formSchema), defaultValues: currentRow ?? { title: '', status: '', label: '', priority: '', }, }) const onSubmit = (data: TaskForm) => { // do something with the form data onOpenChange(false) form.reset() showSubmittedData(data) } return ( { onOpenChange(v) form.reset() }} > {isUpdate ? 'Update' : 'Create'} Task {isUpdate ? 'Update the task by providing necessary info.' : 'Add a new task by providing necessary info.'} Click save when you're done.
( Title )} /> ( Status )} /> ( Label Documentation Feature Bug )} /> ( Priority High Medium Low )} />
) }