From 17fd8e88045c7ba84485ee89afc317a313850750 Mon Sep 17 00:00:00 2001 From: nekosaur Date: Sat, 6 Apr 2024 21:01:21 +0200 Subject: [PATCH] feat(VCalendar): add event slot --- .../vuetify/src/labs/VCalendar/VCalendar.tsx | 4 ++++ .../src/labs/VCalendar/VCalendarMonthDay.tsx | 19 ++++++++++++------- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/packages/vuetify/src/labs/VCalendar/VCalendar.tsx b/packages/vuetify/src/labs/VCalendar/VCalendar.tsx index 8896e863a64..7ef60eb2c32 100644 --- a/packages/vuetify/src/labs/VCalendar/VCalendar.tsx +++ b/packages/vuetify/src/labs/VCalendar/VCalendar.tsx @@ -25,6 +25,7 @@ export const makeVCalendarProps = propsFactory({ export type VCalendarSlots = { header: { title: string } + event: { day?: Object, allDay: boolean, event: Record } } export const VCalendar = genericComponent()({ @@ -152,6 +153,9 @@ export const VCalendar = genericComponent()({ day={ day } title={ day ? adapter.format(day.date, 'dayOfMonth') : 'NaN' } events={ props.events?.filter(e => adapter.isSameDay(day.date, e.start) || adapter.isSameDay(day.date, e.end)) } + v-slots={{ + event: slots.event, + }} > )), ] diff --git a/packages/vuetify/src/labs/VCalendar/VCalendarMonthDay.tsx b/packages/vuetify/src/labs/VCalendar/VCalendarMonthDay.tsx index 74bf4d3e369..14103c1d5f9 100644 --- a/packages/vuetify/src/labs/VCalendar/VCalendarMonthDay.tsx +++ b/packages/vuetify/src/labs/VCalendar/VCalendarMonthDay.tsx @@ -12,6 +12,7 @@ export type VCalendarMonthDaySlots = { default: never content: never title: { title?: number | string } + event: { day?: Object, allDay: boolean, event: Record } } export const makeVCalendarMonthDayProps = propsFactory({ @@ -23,7 +24,7 @@ export const makeVCalendarMonthDayProps = propsFactory({ title: [Number, String], }, 'VCalendarMonthDay') -export const VCalendarMonthDay = genericComponent< VCalendarMonthDaySlots >()({ +export const VCalendarMonthDay = genericComponent()({ name: 'VCalendarMonthDay', props: makeVCalendarMonthDayProps(), @@ -58,14 +59,18 @@ export const VCalendarMonthDay = genericComponent< VCalendarMonthDaySlots >()({ { slots.content?.() ?? (
- { props.events?.filter(event => event.allDay).map(event => ( - - ))} + { props.events?.filter(event => event.allDay).map(event => slots.event + ? slots.event({ day: props.day, allDay: true, event }) + : ( + + ))}
- { props.events?.filter(event => !event.allDay).map(event => ( - - ))} + { props.events?.filter(event => !event.allDay).map(event => slots.event + ? slots.event({ day: props.day, event, allDay: false }) + : ( + + ))}
)}