From 8e64360fe2a0b7a53e25ed623ba9861f2762c167 Mon Sep 17 00:00:00 2001 From: Guillermo Pages Date: Tue, 11 Nov 2025 23:20:56 +0100 Subject: [PATCH] fix(slot-definitions): make valid_from field required in generate modal - Set default value to today's date - Add validation before form submission - Update UI label to show required field with asterisk - Fixes validation error: 'valid_from' required field --- .../GenerateSlotDefinitionsModal.tsx | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/app/[locale]/admin/clubs/[club_id]/slot-definitions/GenerateSlotDefinitionsModal.tsx b/src/app/[locale]/admin/clubs/[club_id]/slot-definitions/GenerateSlotDefinitionsModal.tsx index eee68c8..f3989ba 100644 --- a/src/app/[locale]/admin/clubs/[club_id]/slot-definitions/GenerateSlotDefinitionsModal.tsx +++ b/src/app/[locale]/admin/clubs/[club_id]/slot-definitions/GenerateSlotDefinitionsModal.tsx @@ -33,7 +33,11 @@ export default function GenerateSlotDefinitionsModal({ // Form state const [preset, setPreset] = useState('workday_standard'); const [selectedCourtIds, setSelectedCourtIds] = useState([]); - const [validFrom, setValidFrom] = useState(''); + const [validFrom, setValidFrom] = useState(() => { + // Default to today's date in YYYY-MM-DD format + const today = new Date(); + return today.toISOString().split('T')[0]; + }); const [validTo, setValidTo] = useState(''); const [showAdvanced, setShowAdvanced] = useState(false); @@ -109,6 +113,11 @@ export default function GenerateSlotDefinitionsModal({ return; } + if (!validFrom) { + setError('Please select a valid from date'); + return; + } + setLoading(true); setError(null); @@ -116,9 +125,9 @@ export default function GenerateSlotDefinitionsModal({ preset, court_ids: selectedCourtIds, pattern_overrides: buildPatternOverrides(), + valid_from: validFrom, }; - if (validFrom) request.valid_from = validFrom; if (validTo) request.valid_to = validTo; const result = await generateSlotDefinitions(clubId, request); @@ -223,7 +232,7 @@ export default function GenerateSlotDefinitionsModal({