import { useForm } from '@inertiajs/react'; import { LoaderCircle, Plus } from 'lucide-react'; import { FormEventHandler, useEffect } from 'react' ; import InputError from '@/components/input-error'; import { Button } from '@/components/ui/button'; import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, DialogTrigger } from '@/components/ui/dialog'; import { Input } from '@/components/ui/input'; import { Label } from '@/components/ui/label'; import { toast } from 'sonner'; import { useRole } from './role-context'; type RoleForm = { name: string; email: string; password?: string; }; interface RoleFormProps { status?: string; } export default function RoleForm({ status }: RoleFormProps) { const { open, setOpen } = useRole(); const { data, setData, post, put, processing, errors, reset } = useForm>({ name: '', email: '', password: '', }); useEffect(() => { if (open && selectedUser) { setData({ name: selectedUser?.name || '', email: selectedUser?.email || '', password: '', }); } else { reset('name', 'email', 'password'); } }, [open, selectedUser, setData, reset]); const submit: FormEventHandler = (e) => { e.preventDefault(); const method = selectedUser ? put : post; const routeName = selectedUser ? 'user.update' : 'user.store'; method(route(routeName, selectedUser?.id), { preserveScroll: true, onSuccess: () => { reset('name', 'email', 'password'); setOpen(false, null); toast.success(`User successfully ${selectedUser ? 'updated' : 'created'}.`, { description: new Date().toLocaleDateString(undefined, { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric', }), }); }, }); }; return ( setOpen(!open, null)}> {selectedUser ? 'Edit User' : 'Create User'} {selectedUser ? 'Update the user details here.' : 'Create a new user here.'}
setData('name', e.target.value)} placeholder="Full Name" />
setData('email', e.target.value)} placeholder="Email Address" />
setData('password', e.target.value)} placeholder="Password" />
{status &&
{status}
}
); }