import { FormStatus, Role, User } from "@/types"; import { useForm } from "@inertiajs/react"; import { Button, MultiSelect, PasswordInput, Select, Stack, TextInput } from "@mantine/core"; import { IconDeviceFloppy } from "@tabler/icons-react"; import React from "react"; interface Props { roles: Role[]; managers: { value: string; label: string }[]; user?: User; status: FormStatus; } export default function UserForm({ roles, managers, user, status }: Props) { const { data, setData, post, processing, errors } = useForm({ name: user?.name ?? "", email: user?.email ?? "", password: "", manager_id: user?.manager_id ? String(user.manager_id) : null, roles: user?.roles?.map((role) => role.name) ?? [], }); const roleOptions = roles.map((role) => ({ value: role.name, label: role.name, })); const submit = (event: React.FormEvent) => { event.preventDefault(); if (status === "create") { post(route("management.users.store")); return; } post(route("management.users.update", { id: user?.id ?? "" })); }; return (
setData("name", event.target.value)} error={errors.name} required /> setData("email", event.target.value)} error={errors.email} type="email" required /> setData("password", event.target.value)} error={errors.password} description={ status === "update" ? "Leave blank to keep the existing password." : undefined } required={status === "create"} minLength={status === "create" ? 8 : undefined} />