From 88386ea77ee855c3a489a19e6a196b3aecbe4841 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Afra=20=E2=80=8C?= Date: Sat, 18 Jul 2026 15:06:17 +0330 Subject: [PATCH] perf: host panel, event adding fields modified --- src/pages/AddEvent.tsx | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/src/pages/AddEvent.tsx b/src/pages/AddEvent.tsx index b4af12b..9b68dbc 100644 --- a/src/pages/AddEvent.tsx +++ b/src/pages/AddEvent.tsx @@ -21,11 +21,13 @@ function MatchSelect({ options, now, onChange, + error, }: { value: string options: MatchEvent[] now: Date onChange: (uuid: string) => void + error?: string }) { const [open, setOpen] = useState(false) const selectedMatch = options.find((match) => match.uuid === value) @@ -38,7 +40,7 @@ function MatchSelect({ type="button" disabled={!hasMatches} onClick={() => setOpen((o) => !o)} - className="flex h-14 w-full items-center justify-between rounded-2xl border border-gray-200 px-4 text-right disabled:opacity-50" + className={`flex h-14 w-full items-center justify-between rounded-2xl border px-4 text-right disabled:opacity-50 ${error ? 'border-red-400' : 'border-gray-200'}`} > {selectedMatch @@ -70,6 +72,7 @@ function MatchSelect({ )} + {error &&

{error}

} ) } @@ -171,8 +174,24 @@ export default function AddEvent() { const [entryFee, setEntryFee] = useState(100000) const [description, setDescription] = useState('') const [isSubmitting, setIsSubmitting] = useState(false) + const [fieldErrors, setFieldErrors] = useState>({}) + + const clearFieldError = (field: string) => + setFieldErrors((prev) => { + if (!prev[field]) return prev + const next = { ...prev } + delete next[field] + return next + }) const handleSubmit = async () => { + const errors: Record = {} + if (!selectedMatchUuid) errors.match = 'بازی را انتخاب کنید' + if (Object.keys(errors).length > 0) { + setFieldErrors(errors) + return + } + setFieldErrors({}) setIsSubmitting(true) try { await createCafeSchedule(getCafeUuid() ?? '', { @@ -199,7 +218,13 @@ export default function AddEvent() {
- + { setSelectedMatchUuid(uuid); clearFieldError('match') }} + error={fieldErrors.match} + />