]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
fix(runtime-dom): event handlers with modifiers should get all event arguments (...
authorAlbert Kaaman <albert@kaaman.nu>
Mon, 18 May 2020 14:11:39 +0000 (16:11 +0200)
committerGitHub <noreply@github.com>
Mon, 18 May 2020 14:11:39 +0000 (10:11 -0400)
packages/runtime-dom/__tests__/directives/vOn.spec.ts
packages/runtime-dom/src/directives/vOn.ts

index 4b9c14716e2a5495ede60013e956f7169c79513a..a08c85af9ce21eeea4d4d106a2e7ff578a880f55 100644 (file)
@@ -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)
+  })
 })
index 09cc9558e548db8968718df86fe92a52d01d3146..155ee8e2579a0f1f8f1fc251b1a3c406bfe4f4f2 100644 (file)
@@ -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)
   }
 }