From 299330cc64b9a3590822062dbba6f1028f6207d3 Mon Sep 17 00:00:00 2001 From: Kael Date: Tue, 9 Aug 2022 19:31:06 +1000 Subject: [PATCH] fix(VCalendar): forward all bound events to internal elements (#15592) --- .../VCalendar/mixins/__tests__/mouse.spec.ts | 4 ++-- .../src/components/VCalendar/mixins/mouse.ts | 17 ++++++++--------- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/packages/vuetify/src/components/VCalendar/mixins/__tests__/mouse.spec.ts b/packages/vuetify/src/components/VCalendar/mixins/__tests__/mouse.spec.ts index 6cb1056b920..6cfaf711f21 100644 --- a/packages/vuetify/src/components/VCalendar/mixins/__tests__/mouse.spec.ts +++ b/packages/vuetify/src/components/VCalendar/mixins/__tests__/mouse.spec.ts @@ -35,11 +35,11 @@ describe('mouse.ts', () => { const noop = e => e const wrapper = mount(Mock, { listeners: { - click: noop, + 'click:foo': noop, }, }) - expect(typeof wrapper.vm.getDefaultMouseEventHandlers('', noop).click).toBe('function') + expect(typeof wrapper.vm.getDefaultMouseEventHandlers(':foo', noop).click).toBe('function') expect(Object.keys(typeof wrapper.vm.getDefaultMouseEventHandlers('', noop))).toHaveLength(6) }) diff --git a/packages/vuetify/src/components/VCalendar/mixins/mouse.ts b/packages/vuetify/src/components/VCalendar/mixins/mouse.ts index c6690209301..24e785a12be 100644 --- a/packages/vuetify/src/components/VCalendar/mixins/mouse.ts +++ b/packages/vuetify/src/components/VCalendar/mixins/mouse.ts @@ -24,17 +24,16 @@ export default Vue.extend({ methods: { getDefaultMouseEventHandlers (suffix: string, getEvent: MouseHandler): MouseEventsMap { + const listeners = Object.keys(this.$listeners) + .filter(key => key.endsWith(suffix)) + .reduce((acc, key) => { + acc[key] = { event: key.slice(0, -suffix.length) } + return acc + }, {} as MouseEvents) + return this.getMouseEventHandlers({ - ['click' + suffix]: { event: 'click' }, + ...listeners, ['contextmenu' + suffix]: { event: 'contextmenu', prevent: true, result: false }, - ['mousedown' + suffix]: { event: 'mousedown' }, - ['mousemove' + suffix]: { event: 'mousemove' }, - ['mouseup' + suffix]: { event: 'mouseup' }, - ['mouseenter' + suffix]: { event: 'mouseenter' }, - ['mouseleave' + suffix]: { event: 'mouseleave' }, - ['touchstart' + suffix]: { event: 'touchstart' }, - ['touchmove' + suffix]: { event: 'touchmove' }, - ['touchend' + suffix]: { event: 'touchend' }, }, getEvent) }, getMouseEventHandlers (events: MouseEvents, getEvent: MouseHandler): MouseEventsMap {