})
test('it should support key modifiers and system modifiers', () => {
- const el = document.createElement('div')
- const fn = jest.fn()
- // <div @keyup.ctrl.esc="test"/>
- const nextValue = withKeys(withModifiers(fn, ['ctrl']), [
- 'esc',
- 'arrow-left'
- ])
- patchEvent(el, 'onKeyup', null, nextValue, null)
-
- triggerEvent(el, 'keyup', e => (e.key = 'a'))
- expect(fn).not.toBeCalled()
-
- triggerEvent(el, 'keyup', e => {
- e.ctrlKey = false
- e.key = 'esc'
- })
- expect(fn).not.toBeCalled()
+ const keyNames = ["ctrl","shift","meta","alt"]
- triggerEvent(el, 'keyup', e => {
- e.ctrlKey = true
- e.key = 'Escape'
- })
- expect(fn).toBeCalledTimes(1)
-
- triggerEvent(el, 'keyup', e => {
- e.ctrlKey = true
- e.key = 'ArrowLeft'
- })
- expect(fn).toBeCalledTimes(2)
+ keyNames.forEach(keyName=>{
+ const el = document.createElement('div')
+ const fn = jest.fn()
+ // <div @keyup[keyName].esc="test"/>
+ const nextValue = withKeys(withModifiers(fn, [keyName]), [
+ 'esc',
+ 'arrow-left'
+ ])
+ patchEvent(el, 'onKeyup', null, nextValue, null)
+
+ triggerEvent(el, 'keyup', e => (e.key = 'a'))
+ expect(fn).not.toBeCalled()
+
+ triggerEvent(el, 'keyup', e => {
+ e[`${keyName}Key`] = false
+ e.key = 'esc'
+ })
+ expect(fn).not.toBeCalled()
+
+ triggerEvent(el, 'keyup', e => {
+ e[`${keyName}Key`] = true
+ e.key = 'Escape'
+ })
+ expect(fn).toBeCalledTimes(1)
+
+ triggerEvent(el, 'keyup', e => {
+ e[`${keyName}Key`] = true
+ e.key = 'ArrowLeft'
+ })
+ expect(fn).toBeCalledTimes(2)
+ });
})
test('it should support "exact" modifier', () => {