diff --git a/components/CreateEventDialog.vue b/components/CreateEventDialog.vue index b346a7d..8906d4e 100644 --- a/components/CreateEventDialog.vue +++ b/components/CreateEventDialog.vue @@ -480,6 +480,15 @@ watch(recurrenceFrequency, (newValue) => { } }); +// Auto-fill end date when start date is selected (most events are same day) +watch(startDate, (newStartDate) => { + if (newStartDate && !endDate.value) { + // Auto-fill end date to same as start date for same-day events + endDate.value = newStartDate; + console.log('[CreateEventDialog] Auto-filled end date to match start date:', newStartDate); + } +}); + // Watch for separate date and time changes to combine them watch([startDate, startTime], ([newDate, newTime]) => { if (newDate && newTime) { @@ -580,6 +589,12 @@ const resetForm = () => { startDateModel.value = null; endDateModel.value = null; + // Reset separate date/time fields + startDate.value = ''; + startTime.value = ''; + endDate.value = ''; + endTime.value = ''; + // Reset UI state isPaidEvent.value = false; memberPricingEnabled.value = true; @@ -626,6 +641,30 @@ const handleSubmit = async () => { const startDateTime = new Date(`${startDate.value}T${startTime.value}`); const endDateTime = new Date(`${endDate.value}T${endTime.value}`); + console.log('[CreateEventDialog] DateTime validation:', { + startDate: startDate.value, + startTime: startTime.value, + endDate: endDate.value, + endTime: endTime.value, + startDateTime: startDateTime.toISOString(), + endDateTime: endDateTime.toISOString(), + startTimestamp: startDateTime.getTime(), + endTimestamp: endDateTime.getTime() + }); + + // Validate dates are valid + if (isNaN(startDateTime.getTime())) { + errorMessage.value = 'Invalid start date or time'; + loading.value = false; + return; + } + + if (isNaN(endDateTime.getTime())) { + errorMessage.value = 'Invalid end date or time'; + loading.value = false; + return; + } + // Validate start is not in the past if (startDateTime < new Date()) { errorMessage.value = 'Event start time cannot be in the past'; @@ -633,8 +672,8 @@ const handleSubmit = async () => { return; } - // Validate end is after start - if (endDateTime <= startDateTime) { + // Validate end is after start (using getTime() for precise comparison) + if (endDateTime.getTime() <= startDateTime.getTime()) { errorMessage.value = 'Event end time must be after start time'; loading.value = false; return;