import { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, } from '@/components/ui/dialog'; import { FormEventHandler, ReactNode, useState } from 'react'; import { Button } from '@/components/ui/button'; import { LoaderCircle } from 'lucide-react'; import { useForm } from '@inertiajs/react'; import { Form, FormField, FormFields } from '@/components/ui/form'; import { Label } from '@/components/ui/label'; import { Input } from '@/components/ui/input'; import InputError from '@/components/ui/input-error'; import { Select, SelectContent, SelectGroup, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'; import { User } from '@/types/user'; import FormSuccessful from '@/components/form-successful'; export default function UserForm({ user, children }: { user?: User; children: ReactNode }) { const [open, setOpen] = useState(false); const form = useForm({ name: user?.name || '', email: user?.email || '', password: '', role: user?.role || 'user', }); const submit: FormEventHandler = (e) => { e.preventDefault(); if (user) { form.patch(route('users.update', user.id)); return; } form.post(route('users.store'), { onSuccess() { setOpen(false); }, }); }; return ( {children} {user ? `Edit ${user.name}` : 'Create user'} {user ? `Fill the form to edit ${user.name}` : 'Fill the form to create a new user'}
form.setData('name', e.target.value)} /> form.setData('email', e.target.value)} /> form.setData('password', e.target.value)} />
); }