Skip to content

Commit a521fd6

Browse files
authored
fix: preserve code from keyboard events (#2434)
Fixes #2433
1 parent 6998a0f commit a521fd6

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

src/createDomEvent.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ function getEventProperties(eventParams: EventParams) {
110110
cancelable: meta.cancelable,
111111
// Any derived options should go here
112112
keyCode,
113-
code: keyCode,
113+
code: options.code || keyCode,
114114
// if we have a `key`, use it, otherwise dont set anything (allows user to pass custom key)
115115
...(keyModifiers[0] ? { key: keyModifiers[0] } : {})
116116
}

tests/trigger.spec.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,21 @@ describe('trigger', () => {
225225
expect(keydownHandler.mock.calls[0][0].keyCode).toBe(65)
226226
})
227227

228+
it('causes keydown handler to fire with the appropriate code when wrapper.trigger("keydown", { code: "Space" }) is fired', async () => {
229+
const keydownHandler = vi.fn()
230+
const Component = {
231+
template: '<input @keydown="keydownHandler" />',
232+
methods: { keydownHandler }
233+
}
234+
const wrapper = mount(Component, {})
235+
await wrapper.trigger('keydown', { code: 'Space', key: ' ', keyCode: 32 })
236+
237+
expect(keydownHandler).toHaveBeenCalledTimes(1)
238+
expect(keydownHandler.mock.calls[0][0].key).toBe(' ')
239+
expect(keydownHandler.mock.calls[0][0].code).toBe('Space')
240+
expect(keydownHandler.mock.calls[0][0].keyCode).toBe(32)
241+
})
242+
228243
it('causes keydown handler to fire converting keyName in an appropriate keyCode when wrapper.trigger("keydown.${keyName}") is fired', async () => {
229244
let keydownHandler = vi.fn()
230245

0 commit comments

Comments
 (0)