import { Staff } from "@repo/db/types"; import React, { useState, useEffect } from "react"; interface StaffFormProps { initialData?: Partial; onSubmit: (data: Omit) => void; onCancel: () => void; isLoading?: boolean; } export function StaffForm({ initialData, onSubmit, onCancel, isLoading, }: StaffFormProps) { const [name, setName] = useState(""); const [email, setEmail] = useState(""); const [role, setRole] = useState("Staff"); const [phone, setPhone] = useState(""); const [userId, setUserId] = useState(undefined); const [hasTypedRole, setHasTypedRole] = useState(false); // Set initial values once on mount useEffect(() => { if (initialData) { if (initialData.name) setName(initialData.name); if (initialData.email) setEmail(initialData.email); if (initialData.role) setRole(initialData.role); if (initialData.phone) setPhone(initialData.phone); } }, []); // run once only const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); if (!name.trim()) { alert("Name is required"); return; } onSubmit({ name: name.trim(), email: email.trim() || undefined, role: role.trim(), phone: phone.trim() || undefined, userId: userId || 0, }); }; return (
setName(e.target.value)} required disabled={isLoading} />
setEmail(e.target.value)} disabled={isLoading} />
{ setHasTypedRole(true); setRole(e.target.value); }} onFocus={() => { if (!hasTypedRole && role === "Staff") { setRole(""); } }} required disabled={isLoading} />
setPhone(e.target.value)} disabled={isLoading} />
); }