2025-11-09 13:09:22 +01:00
|
|
|
import React, {useState} from "react";
|
|
|
|
|
import { useNavigate } from "react-router";
|
|
|
|
|
import useRoutes from "~/hooks/useRoutes";
|
|
|
|
|
import {updateUser} from "~/utils/api/usersApi";
|
|
|
|
|
import PageTitle from "~/components/ui/PageTitle";
|
|
|
|
|
import { Link } from "react-router";
|
|
|
|
|
import Alert from "~/components/ui/Alert";
|
|
|
|
|
import {UserType} from "~/types/UserType";
|
|
|
|
|
import SolidButton from "~/components/ui/Buttons/SolidButton";
|
2025-10-13 14:57:11 +02:00
|
|
|
|
|
|
|
|
interface Props {
|
|
|
|
|
user: UserType;
|
|
|
|
|
}
|
|
|
|
|
|
2025-11-09 13:09:22 +01:00
|
|
|
const EditUserForm = ({ user }: Props) => {
|
2025-10-13 14:57:11 +02:00
|
|
|
|
|
|
|
|
const [name, setName] = useState<string>(user.name);
|
|
|
|
|
const [error, setError] = useState<string>('');
|
2025-11-09 13:09:22 +01:00
|
|
|
const navigate = useNavigate();
|
2025-10-13 14:57:11 +02:00
|
|
|
const routes = useRoutes();
|
|
|
|
|
|
|
|
|
|
const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {
|
|
|
|
|
e.preventDefault();
|
|
|
|
|
|
|
|
|
|
// validateName
|
|
|
|
|
if (!name.trim()) {
|
|
|
|
|
setError('Name cannot be empty.');
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
updateUser(user, name)
|
|
|
|
|
.then(() => {
|
2025-11-09 13:09:22 +01:00
|
|
|
navigate(routes.user.index())
|
2025-10-13 14:57:11 +02:00
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return (
|
|
|
|
|
<div className="w-full flex flex-col items-center">
|
|
|
|
|
<PageTitle>Create User</PageTitle>
|
2025-11-09 13:09:22 +01:00
|
|
|
<Link to={routes.user.index()} className="mr-auto">Back to users</Link>
|
2025-10-13 14:57:11 +02:00
|
|
|
|
|
|
|
|
<form onSubmit={handleSubmit} className="w-full max-w-sm mt-4 border-secondary border-2 rounded p-4">
|
|
|
|
|
{
|
|
|
|
|
error != '' && <Alert type="error" className="mt-4">{ error }</Alert>
|
|
|
|
|
}
|
|
|
|
|
|
2025-10-13 20:22:47 +02:00
|
|
|
<label htmlFor="name">Name</label>
|
|
|
|
|
<input type="text"
|
|
|
|
|
placeholder=""
|
|
|
|
|
name="name"
|
|
|
|
|
id="name"
|
|
|
|
|
value={name}
|
|
|
|
|
onChange={(e) => setName(e.target.value)}
|
|
|
|
|
className="w-full p-2 border rounded bg-primary border-secondary bg-gray-600 text-secondary"
|
2025-10-13 14:57:11 +02:00
|
|
|
/>
|
|
|
|
|
|
2025-10-13 20:22:47 +02:00
|
|
|
<SolidButton type="submit" className="mt-4">Update</SolidButton>
|
2025-10-13 14:57:11 +02:00
|
|
|
</form>
|
|
|
|
|
</div>
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export default EditUserForm;
|