From c740943bfb077f62e4b6b5173bd6eda92cb051e8 Mon Sep 17 00:00:00 2001 From: bozdoz Date: Fri, 18 Dec 2020 10:59:18 -0400 Subject: [PATCH 1/6] Adds handlers for Home and End keys --- src/type.js | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/src/type.js b/src/type.js index 336e4533..3e09ce5c 100644 --- a/src/type.js +++ b/src/type.js @@ -92,6 +92,8 @@ const specialCharMap = { arrowRight: '{arrowright}', arrowDown: '{arrowdown}', arrowUp: '{arrowup}', + home: '{home}', + end: '{end}', enter: '{enter}', escape: '{esc}', delete: '{del}', @@ -106,6 +108,8 @@ const specialCharCallbackMap = { [specialCharMap.arrowRight]: navigationKey('ArrowRight'), [specialCharMap.arrowDown]: handleArrowDown, [specialCharMap.arrowUp]: handleArrowUp, + [specialCharMap.home]: handleHome, + [specialCharMap.end]: handleEnd, [specialCharMap.enter]: handleEnter, [specialCharMap.escape]: handleEsc, [specialCharMap.delete]: handleDel, @@ -786,5 +790,43 @@ function handleArrowUp({currentElement, eventOverrides}) { ...eventOverrides, }) } + +function handleHome({currentElement, eventOverrides}) { + const key = 'Home' + const keyCode = 36 + + fireEvent.keyDown(currentElement(), { + key, + keyCode, + which: keyCode, + ...eventOverrides, + }) + + fireEvent.keyUp(currentElement(), { + key, + keyCode, + which: keyCode, + ...eventOverrides, + }) +} + +function handleHome({currentElement, eventOverrides}) { + const key = 'End' + const keyCode = 35 + + fireEvent.keyDown(currentElement(), { + key, + keyCode, + which: keyCode, + ...eventOverrides, + }) + + fireEvent.keyUp(currentElement(), { + key, + keyCode, + which: keyCode, + ...eventOverrides, + }) +} export {type, specialCharMap} From 6a7ea906f1ac9908458498bce3a8db45fc93b194 Mon Sep 17 00:00:00 2001 From: bozdoz Date: Fri, 18 Dec 2020 11:03:12 -0400 Subject: [PATCH 2/6] feat: support home and end events: update home/end tests --- src/__tests__/type.js | 52 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/src/__tests__/type.js b/src/__tests__/type.js index 80588319..e1833aad 100644 --- a/src/__tests__/type.js +++ b/src/__tests__/type.js @@ -1445,3 +1445,55 @@ test('{arrowup} fires keyup/keydown events', () => { input[value=""] - keyup: ArrowUp (38) `) }) + +test('{home} fires keyup/keydown events', () => { + const {element, getEventSnapshot} = setup('') + + userEvent.type(element, '{home}') + + expect(getEventSnapshot()).toMatchInlineSnapshot(` + Events fired on: input[value=""] + + input[value=""] - pointerover + input[value=""] - pointerenter + input[value=""] - mouseover: Left (0) + input[value=""] - mouseenter: Left (0) + input[value=""] - pointermove + input[value=""] - mousemove: Left (0) + input[value=""] - pointerdown + input[value=""] - mousedown: Left (0) + input[value=""] - focus + input[value=""] - focusin + input[value=""] - pointerup + input[value=""] - mouseup: Left (0) + input[value=""] - click: Left (0) + input[value=""] - keydown: Home (36) + input[value=""] - keyup: Home (36) + `) +}) + +test('{end} fires keyup/keydown events', () => { + const {element, getEventSnapshot} = setup('') + + userEvent.type(element, '{end}') + + expect(getEventSnapshot()).toMatchInlineSnapshot(` + Events fired on: input[value=""] + + input[value=""] - pointerover + input[value=""] - pointerenter + input[value=""] - mouseover: Left (0) + input[value=""] - mouseenter: Left (0) + input[value=""] - pointermove + input[value=""] - mousemove: Left (0) + input[value=""] - pointerdown + input[value=""] - mousedown: Left (0) + input[value=""] - focus + input[value=""] - focusin + input[value=""] - pointerup + input[value=""] - mouseup: Left (0) + input[value=""] - click: Left (0) + input[value=""] - keydown: End (35) + input[value=""] - keyup: End (35) + `) +}) From 7715aead0fd0f4179f0a0127ece81a5109a408e7 Mon Sep 17 00:00:00 2001 From: bozdoz Date: Fri, 18 Dec 2020 11:04:41 -0400 Subject: [PATCH 3/6] feat: support home and end events: updates README --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index b14be68e..f8022268 100644 --- a/README.md +++ b/README.md @@ -202,6 +202,8 @@ The following special character strings are supported: | `{arrowright}` | ArrowRight | N/A | | | `{arrowup}` | ArrowUp | N/A | | | `{arrowdown}` | ArrowDown | N/A | | +| `{home}` | Home | N/A | | +| `{end}` | End | N/A | | | `{shift}` | Shift | `shiftKey` | Does **not** capitalize following characters. | | `{ctrl}` | Control | `ctrlKey` | | | `{alt}` | Alt | `altKey` | | From faef280fc34c3f4888f469cef6111d66f0893d99 Mon Sep 17 00:00:00 2001 From: bozdoz Date: Fri, 18 Dec 2020 11:11:09 -0400 Subject: [PATCH 4/6] typo: duplicate handleHome -> handleEnd --- src/type.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/type.js b/src/type.js index 3e09ce5c..d9db592e 100644 --- a/src/type.js +++ b/src/type.js @@ -810,7 +810,7 @@ function handleHome({currentElement, eventOverrides}) { }) } -function handleHome({currentElement, eventOverrides}) { +function handleEnd({currentElement, eventOverrides}) { const key = 'End' const keyCode = 35 From e5f1fcd64b2edd0727a9c725ea31d0da7380107f Mon Sep 17 00:00:00 2001 From: bozdoz Date: Fri, 18 Dec 2020 12:28:25 -0400 Subject: [PATCH 5/6] adds special chars home and end to README --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index f8022268..afcad2a2 100644 --- a/README.md +++ b/README.md @@ -534,6 +534,8 @@ method. | arrowRight | `{arrowright}` | | arrowDown | `{arrowdown}` | | arrowUp | `{arrowup}` | +| home | `{home}` | +| end | `{end}` | | enter | `{enter}` | | escape | `{esc}` | | delete | `{del}` | From 7a54586788e72d88c38c1d720490fc6e25dcd7e4 Mon Sep 17 00:00:00 2001 From: bozdoz Date: Fri, 18 Dec 2020 12:29:53 -0400 Subject: [PATCH 6/6] Adds home and end types to specialChars --- typings/index.d.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/typings/index.d.ts b/typings/index.d.ts index 56211bfc..3279fcf4 100644 --- a/typings/index.d.ts +++ b/typings/index.d.ts @@ -80,6 +80,8 @@ export enum specialChars { arrowRight = '{arrowright}', arrowDown = '{arrowdown}', arrowUp = '{arrowup}', + home = '{home}', + end = '{end}', enter = '{enter}', escape = '{esc}', delete = '{del}',