"use client"; import { z } from "zod"; import { zodResolver } from "@hookform/resolvers/zod"; import { useForm } from "react-hook-form"; import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage, } from "@/components/ui/form"; import { Button } from "@/components/ui/button"; import { Card, CardContent, CardDescription, CardHeader, CardTitle, } from "@/components/ui/card"; import { Input } from "@/components/ui/input"; import useApiMutation from "@/hooks/use-api"; import { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectTrigger, SelectValue, } from "@/components/ui/select" const formSchema = z.object({ firstname: z.string().min(2, { message: "Prénom trop court." }), lastname: z.string().min(2, { message: "Nom trop court." }), role: z.enum(["admin", "user"], { message: "Rôle invalide." }), phone: z .string() .max(10, { message: "Un numéro de téléphone à 10 chiffres." }) .optional(), email: z.string().email({ message: "Email invalide." }) }); export default function CreateMemberForm() { const { trigger } = useApiMutation( "/users/new", { onSuccess: () => console.log("Member created") }, "POST", true, false ) const form = useForm>({ resolver: zodResolver(formSchema), defaultValues: { firstname: "", lastname: "", role: "user", phone: "", email: "", }, }); async function onSubmit(values: z.infer) { try { const res = await trigger(values) if (!res) throw new Error("The server hasn't responded."); if (res.status === "Error") throw new Error(res.message); } catch (error) { console.error("Form submission error", error); } console.log("submited"); } return (
Création de membre Remplissez les différents champs pour créer un membre. Un code sera envoyé par mail à l'utilisateur. Il pourra ensuite modifier le mot de passe de son compte avec ce code.
{/* Firstname Field */} ( Prénom )} />
{/* Firstname Field */} ( Nom )} /> {/* Email Field */} ( Email )} /> ( Role )} /> {/* Phone Field */} ( Phone number )} />
); }