allow empty player slots for manual entry

This commit is contained in:
2025-12-12 09:35:44 +01:00
parent 78cd5f7007
commit 90ad03ba56
3 changed files with 18 additions and 9 deletions
@@ -71,15 +71,24 @@ const TeamSelection = ({ name, label, clubOptions, className }: IProps) => {
fetchPlayers(); fetchPlayers();
}, [selectedId, name, setTeamsPlayers]); }, [selectedId, name, setTeamsPlayers]);
const playerOptions = const playerOptions = [
teamsPlayers[name]?.map((player) => ({ {
value: {
nrFFE: "",
name: "",
elo: "",
},
label: "-- EMPTY PLAYER --",
},
...(teamsPlayers[name]?.map((player) => ({
value: { value: {
nrFFE: player.nrFFE, nrFFE: player.nrFFE,
name: player.name, name: player.name,
elo: player.elo, elo: player.elo,
}, },
label: `${player.name} (${player.elo})`, label: `${player.name} (${player.elo})`,
})) || []; })) || []),
];
return ( return (
<div className={className}> <div className={className}>
@@ -122,7 +131,7 @@ const TeamSelection = ({ name, label, clubOptions, className }: IProps) => {
instanceId={`${name}-player-${index}`} instanceId={`${name}-player-${index}`}
options={playerOptions} options={playerOptions}
isSearchable isSearchable
placeholder="Search player..." placeholder="Search for a player..."
onChange={(option) => selectField.onChange(option?.value)} onChange={(option) => selectField.onChange(option?.value)}
value={playerOptions.find( value={playerOptions.find(
(op) => op.value === selectField.value, (op) => op.value === selectField.value,
@@ -152,7 +161,7 @@ const TeamSelection = ({ name, label, clubOptions, className }: IProps) => {
teamsPlayers[name]?.length > 0 && ( teamsPlayers[name]?.length > 0 && (
<button <button
type="button" type="button"
onClick={() => append({ nrFFE: "", name: "", elo: 0 })} onClick={() => append({ nrFFE: "", name: "", elo: "" })}
className="flex items-center gap-2 text-sm font-medium text-blue-600 hover:text-blue-800" className="flex items-center gap-2 text-sm font-medium text-blue-600 hover:text-blue-800"
> >
<FaPlus /> <FaPlus />
+1 -1
View File
@@ -46,7 +46,7 @@ export default async function Match() {
)(); )();
return ( return (
<section className="grid place-items-center bg-white pb-20 dark:bg-gray-800"> <section className="grid place-items-center bg-white p-2 pb-20 dark:bg-gray-800">
<div className="mx-auto max-w-screen-md px-4 py-8 lg:py-16"> <div className="mx-auto max-w-screen-md px-4 py-8 lg:py-16">
<h2 className="mb-4 text-center text-4xl font-extrabold tracking-tight text-gray-900 dark:text-white"> <h2 className="mb-4 text-center text-4xl font-extrabold tracking-tight text-gray-900 dark:text-white">
Match Match
+3 -3
View File
@@ -65,9 +65,9 @@ export const fetchClubPlayersSchema = z.object({
}); });
const matchPlayerSchema = z.object({ const matchPlayerSchema = z.object({
name: z.string(), name: z.string().optional(),
elo: z.string(), elo: z.string().optional(),
nrFFE: z.string(), nrFFE: z.string().optional(),
}); });
export const matchSchema = z.object({ export const matchSchema = z.object({