fix(runtime-dom): event handlers with modifiers should get all event arguments (#1193)

This commit is contained in:
Albert Kaaman 2020-05-18 16:11:39 +02:00 committed by GitHub
parent d73a508a73
commit ab86b190ce
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 2 deletions

View File

@ -118,4 +118,13 @@ describe('runtime-dom: v-on directive', () => {
expect(fn).toBeCalled() 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)
})
}) })

View File

@ -26,12 +26,12 @@ const modifierGuards: Record<
* @internal * @internal
*/ */
export const withModifiers = (fn: Function, modifiers: string[]) => { export const withModifiers = (fn: Function, modifiers: string[]) => {
return (event: Event) => { return (event: Event, ...args: unknown[]) => {
for (let i = 0; i < modifiers.length; i++) { for (let i = 0; i < modifiers.length; i++) {
const guard = modifierGuards[modifiers[i]] const guard = modifierGuards[modifiers[i]]
if (guard && guard(event, modifiers)) return if (guard && guard(event, modifiers)) return
} }
return fn(event) return fn(event, ...args)
} }
} }