From 7011bc5e8351d3a06cbcd2551216ab34df13183b Mon Sep 17 00:00:00 2001 From: Albert Kaaman Date: Fri, 15 May 2020 12:09:19 +0200 Subject: [PATCH] fix(runtime-dom): event handlers with modifiers should get all event arguments --- packages/runtime-dom/__tests__/directives/vOn.spec.ts | 9 +++++++++ packages/runtime-dom/src/directives/vOn.ts | 4 ++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/packages/runtime-dom/__tests__/directives/vOn.spec.ts b/packages/runtime-dom/__tests__/directives/vOn.spec.ts index 4b9c14716e2..a08c85af9ce 100644 --- a/packages/runtime-dom/__tests__/directives/vOn.spec.ts +++ b/packages/runtime-dom/__tests__/directives/vOn.spec.ts @@ -118,4 +118,13 @@ describe('runtime-dom: v-on directive', () => { expect(fn).toBeCalled() }) }) + + it('should handle multiple arguments when using modifiers', () => { + const el = document.createElement('div') + const fn = jest.fn() + const handler = withModifiers(fn, ['ctrl']) + const event = triggerEvent(el, 'click', e => (e.ctrlKey = true)) + handler(event, 'value', true) + expect(fn).toBeCalledWith(event, 'value', true) + }) }) diff --git a/packages/runtime-dom/src/directives/vOn.ts b/packages/runtime-dom/src/directives/vOn.ts index 09cc9558e54..155ee8e2579 100644 --- a/packages/runtime-dom/src/directives/vOn.ts +++ b/packages/runtime-dom/src/directives/vOn.ts @@ -26,12 +26,12 @@ const modifierGuards: Record< * @internal */ export const withModifiers = (fn: Function, modifiers: string[]) => { - return (event: Event) => { + return (event: Event, ...args: unknown[]) => { for (let i = 0; i < modifiers.length; i++) { const guard = modifierGuards[modifiers[i]] if (guard && guard(event, modifiers)) return } - return fn(event) + return fn(event, ...args) } }