diff --git a/packages/vuetify/src/labs/VCalendar/VCalendar.tsx b/packages/vuetify/src/labs/VCalendar/VCalendar.tsx index a428779ac97..32377f9cb1d 100644 --- a/packages/vuetify/src/labs/VCalendar/VCalendar.tsx +++ b/packages/vuetify/src/labs/VCalendar/VCalendar.tsx @@ -25,7 +25,7 @@ export const makeVCalendarProps = propsFactory({ ...makeCalendarProps(), ...makeVCalendarDayProps(), ...makeVCalendarHeaderProps(), -}, 'VCalender') +}, 'VCalendar') export type VCalendarSlots = VCalendarDaySlots & { allDayContent: { day?: CalendarDay, events?: Array } @@ -34,7 +34,7 @@ export type VCalendarSlots = VCalendarDaySlots & { dayTitle: { title?: number | string } dayEvent: { day?: CalendarDay, allDay: Boolean, event?: Record } header: { title: string, clickNext: Function, clickPrev: Function, clickToday: Function } - intervalDay: { day?: CalendarDay, dayIndex: Number, events?: Array } + weekDay: { day?: CalendarDay, dayIndex: Number, events?: Array } title: { title?: string } } @@ -94,8 +94,8 @@ export const VCalendar = genericComponent()({ }) } - function clickEvent (event: any) { - emit('click:event', event) + function clickEvent (mouseEvent: any, event: any) { + emit('click:event', mouseEvent, event) } function contextmenuDate (mouseEvent: any, date: any) { @@ -208,7 +208,7 @@ export const VCalendar = genericComponent()({ )} { props.viewMode === 'week' && ( daysInWeek.value.map((day, i) => - slots.intervalDay ? slots.intervalDay?.({ + slots.weekDay ? slots.weekDay?.({ ...calendarDayProps, day, dayIndex: i, @@ -219,6 +219,7 @@ export const VCalendar = genericComponent()({ day={ day } dayIndex={ i } events={ props.events?.filter(e => adapter.isSameDay(e.start, day.date) || adapter.isSameDay(e.end, day.date)) } + onClick:event={ clickEvent } onContextmenu:date={ contextmenuDate } onContextmenu:event={ contextmenuEvent } > @@ -229,7 +230,7 @@ export const VCalendar = genericComponent()({ } { props.viewMode === 'day' && ( - slots.intervalDay ? slots.intervalDay({ + slots.weekDay ? slots.weekDay({ day: genDays([displayValue.value as Date], adapter.date() as Date)[0], dayIndex: 0, events: props.events?.filter(e => @@ -247,6 +248,7 @@ export const VCalendar = genericComponent()({ adapter.isSameDay(e.end, genDays([model.value[0] as Date], adapter.date() as Date)[0].date) ) } + onClick:event={ clickEvent } onContextmenu:date={ contextmenuDate } onContextmenu:event={ contextmenuEvent } > diff --git a/packages/vuetify/src/labs/VCalendar/VCalendarDay.tsx b/packages/vuetify/src/labs/VCalendar/VCalendarDay.tsx index bf181a616c5..795ea49d69c 100644 --- a/packages/vuetify/src/labs/VCalendar/VCalendarDay.tsx +++ b/packages/vuetify/src/labs/VCalendar/VCalendarDay.tsx @@ -59,7 +59,6 @@ export const VCalendarDay = genericComponent()({ emit('contextmenu:event', mouseEvent, date, event) } - useRender(() => { const calendarIntervalProps = VCalendarInterval.filterProps(props) diff --git a/packages/vuetify/src/labs/VCalendar/VCalendarEvent.tsx b/packages/vuetify/src/labs/VCalendar/VCalendarEvent.tsx index 68fcd3515df..3921703286d 100644 --- a/packages/vuetify/src/labs/VCalendar/VCalendarEvent.tsx +++ b/packages/vuetify/src/labs/VCalendar/VCalendarEvent.tsx @@ -3,8 +3,8 @@ import { VBadge } from '@/components/VBadge' import { VChip } from '@/components/VChip' // Utilities -import { genericComponent, getPrefixedEventHandlers, propsFactory, useRender } from '@/util' import { withModifiers } from 'vue' +import { genericComponent, getPrefixedEventHandlers, propsFactory, useRender } from '@/util' export const makeVCalendarEventProps = propsFactory({ allDay: Boolean, @@ -19,7 +19,7 @@ export const VCalendarEvent = genericComponent()({ emits: { 'click:event': null, - 'contextmenu:event': null + 'contextmenu:event': null, }, setup (props, { attrs, emit, slots }) { @@ -34,7 +34,7 @@ export const VCalendarEvent = genericComponent()({ day: props.day, event: props.event, }))} - onClick={ withModifiers((event) => emit('click:event', event, props.event), ['stop']) } + onClick={ withModifiers((event: any) => emit('click:event', event, props.event), ['stop']) } onContextmenu={ withModifiers((event: any) => emit('contextmenu:event', event, props.day, props.event), ['stop']) } > ()({ emits: { 'click:event': null, 'contextmenu:date': null, - 'contextmenu:event': null + 'contextmenu:event': null, }, setup (props, { attrs, emit, slots }) { @@ -142,7 +142,7 @@ export const VCalendarInterval = genericComponent()({ class={['v-calendar-day__row-content', interval.value.events.some(e => !e.last) ? 'v-calendar-day__row-content-through' : '']} - onContextmenu={ (event) => contextmenuDate(event, interval.value?.start) } + onContextmenu={ (event: any) => contextmenuDate(event, interval.value?.start) } > { slots.intervalBody?.({ interval: interval.value }) ?? ( @@ -184,7 +184,7 @@ export const VCalendarInterval = genericComponent()({
contextmenuDate(event, interval.value?.start) } + onContextmenu={ (event: any) => contextmenuDate(event, interval.value?.start) } >
!e.last) ? 'v-calendar-day__row-content-through' : '']} @@ -205,6 +205,7 @@ export const VCalendarInterval = genericComponent()({ intervalDivisions={ props.intervalDivisions } intervalDuration={ props.intervalDuration } intervalHeight={ props.intervalHeight } + onClick:event={ clickEvent } onContextmenu:event={ contextmenuEvent } > {{ diff --git a/packages/vuetify/src/labs/VCalendar/VCalendarIntervalEvent.tsx b/packages/vuetify/src/labs/VCalendar/VCalendarIntervalEvent.tsx index 1c8a999008b..c99860c3aa2 100644 --- a/packages/vuetify/src/labs/VCalendar/VCalendarIntervalEvent.tsx +++ b/packages/vuetify/src/labs/VCalendar/VCalendarIntervalEvent.tsx @@ -8,8 +8,8 @@ import { VSheet } from '@/components/VSheet' import { useDate } from '@/composables/date' // Utilities -import { convertToUnit, genericComponent, getPrefixedEventHandlers, propsFactory, useRender } from '@/util' import { withModifiers } from 'vue' +import { convertToUnit, genericComponent, getPrefixedEventHandlers, propsFactory, useRender } from '@/util' export type VCalendarIntervalEventSlots = { intervalEvent: { height: string, margin: string, eventClass: string, event: any, interval: any } @@ -40,7 +40,7 @@ export const VCalendarIntervalEvent = genericComponent { - emit('click:event', mouseEvent, event) - } - - const contextmenuEvent = (mouseEvent: any, date: any, event: any) => { - emit('contextmenu:event', mouseEvent, date, event) - } useRender(() => { return ( @@ -95,8 +88,8 @@ export const VCalendarIntervalEvent = genericComponent clickEvent(event, props.event), ['stop']) } - onContextmenu={ withModifiers((event: any) => contextmenuEvent(event, props.interval?.start, props.event), ['stop']) } + onClick={ withModifiers((event: any) => emit('click:event', event, props.event), ['stop']) } + onContextmenu={ withModifiers((event: any) => emit('contextmenu:event', event, props.event), ['stop']) } { ...getPrefixedEventHandlers(attrs, ':intervalEvent', () => props) } > { props.event?.first ? props.event?.title : '' } diff --git a/packages/vuetify/src/labs/VCalendar/VCalendarMonthDay.tsx b/packages/vuetify/src/labs/VCalendar/VCalendarMonthDay.tsx index f95daa9ce32..2129a5e5678 100644 --- a/packages/vuetify/src/labs/VCalendar/VCalendarMonthDay.tsx +++ b/packages/vuetify/src/labs/VCalendar/VCalendarMonthDay.tsx @@ -37,7 +37,7 @@ export const VCalendarMonthDay = genericComponent()({ emits: { 'click:event': null, 'contextmenu:date': null, - 'contextmenu:event': null + 'contextmenu:event': null, }, setup (props, { emit, attrs, slots }) { @@ -91,7 +91,13 @@ export const VCalendarMonthDay = genericComponent()({ { props.events?.filter(event => event.allDay).map(event => slots.dayEvent ? slots.dayEvent({ day: props.day, allDay: true, event }) : ( - + ))}
@@ -99,7 +105,12 @@ export const VCalendarMonthDay = genericComponent()({ { props.events?.filter(event => !event.allDay).map(event => slots.dayEvent ? slots.dayEvent({ day: props.day, event, allDay: false }) : ( - + ))}