diff --git a/components/event/DateRange.vue b/components/event/DateRange.vue index 148f6de1..216d81b2 100644 --- a/components/event/DateRange.vue +++ b/components/event/DateRange.vue @@ -4,7 +4,7 @@ import { format, parseISO, isSameDay, isSameMonth, isSameYear } from 'date-fns' const props = defineProps<{ start: string | Date - end: string | Date + end?: string | Date | null formatString?: string }>() @@ -12,12 +12,21 @@ const parse = (date: string | Date) => typeof date === 'string' ? parseISO(date) : date const startDate = computed(() => parse(props.start)) -const endDate = computed(() => parse(props.end)) +const endDate = computed(() => + props.end != null && props.end !== '' + ? parse(props.end as string | Date) + : null +) + +const isOpenEnd = computed(() => endDate.value === null) const formattedRange = computed(() => { const s = startDate.value const e = endDate.value + if (e == null) { + return format(s, props.formatString || 'MMM d, yyyy') + } if (isSameDay(s, e)) { return format(s, props.formatString || 'MMM d, yyyy') } else if (isSameMonth(s, e)) { @@ -31,5 +40,8 @@ const formattedRange = computed(() => { diff --git a/components/event/EventView.vue b/components/event/EventView.vue index 8dc68524..f4bb544e 100644 --- a/components/event/EventView.vue +++ b/components/event/EventView.vue @@ -299,9 +299,11 @@ const navigation = computed(() => [
- {{ getDateTime(event.endDate) }} + {{ event.endDate ? getDateTime(event.endDate) : 'Open end' }} +
+
+ {{ event.endDate ? 'End' : 'No end time' }}
-
End
diff --git a/components/event/edit/EventAboutEditor.vue b/components/event/edit/EventAboutEditor.vue index 4e567876..c2d22720 100644 --- a/components/event/edit/EventAboutEditor.vue +++ b/components/event/edit/EventAboutEditor.vue @@ -28,7 +28,7 @@ const schema = z.object({ cover: z.string().optional().default(''), status: statusSchema, startDate: z.string().optional(), - endDate: z.string().optional(), + endDate: z.string().optional().nullable(), type: z.string().optional().default('Party'), venue: z .object({ @@ -186,7 +186,7 @@ const askToDelete = () => { - Start + Start Date @@ -194,12 +194,31 @@ const askToDelete = () => { - - - End - - - + + +
+ + + Open end party (no end date/time) + +
+
diff --git a/server/trpc/routers/events.ts b/server/trpc/routers/events.ts index 015a8d0d..7e266773 100644 --- a/server/trpc/routers/events.ts +++ b/server/trpc/routers/events.ts @@ -278,7 +278,7 @@ export const eventsRouter = router({ cover: z.string().optional(), status: z.string().optional(), startDate: z.string().optional(), - endDate: z.string().optional(), + endDate: z.string().optional().nullable(), type: z.string().optional(), venue: z .object({ @@ -311,7 +311,12 @@ export const eventsRouter = router({ data: { ...data, startDate: data.startDate ? new Date(data.startDate) : undefined, - endDate: data.endDate ? new Date(data.endDate) : undefined, + endDate: + data.endDate === null || data.endDate === '' + ? null + : data.endDate + ? new Date(data.endDate) + : undefined, venueId: venue?.id, organizerId: organizer?.id, styles: stylesData,