@samitouri / QOS-React-2 / commits / cd1bdcd067

[react-interactions] Prevent duplicate onPress firing for keyboard Enter (#17266)

* [react-interactions] Prevent duplicate onPress firing for keyboard Enter * address feedback

Dominic Gannaway committed Nov 5, 2019 at 23:28 UTC cd1bdcd0672d87f275a6394b055dea1016a7f29d
3 files changed +8 -7
packages/react-interactions/events/src/dom/Press.js
+5 -2
@@ -97,7 +97,7 @@ function isValidKey(e): boolean {
97 const {key, target} = e;
98 const {tagName, isContentEditable} = (target: any);
99 return (
100 - (key === 'Enter' || key === ' ') &&
100 + (key === 'Enter' || key === ' ' || key === 'Spacebar') &&
101 (tagName !== 'INPUT' &&
102 tagName !== 'TEXTAREA' &&
103 isContentEditable !== true)
@@ -106,7 +106,10 @@ function isValidKey(e): boolean {
106
107 function handlePreventDefault(preventDefault: ?boolean, e: any): void {
108 const key = e.key;
109 - if (preventDefault !== false && (key === ' ' || key === 'Enter')) {
109 + if (
110 + preventDefault !== false &&
111 + (key === ' ' || key === 'Enter' || key === 'Spacebar')
112 + ) {
113 e.preventDefault();
114 }
115 }
packages/react-interactions/events/src/dom/PressLegacy.js
+2 -3
@@ -570,15 +570,14 @@ const pressResponderImpl = {
570 metaKey,
571 shiftKey,
572 } = (nativeEvent: MouseEvent);
573 - if (nativeEvent.key === ' ') {
574 - nativeEvent.preventDefault();
575 - } else if (
573 + if (
574 props.preventDefault !== false &&
575 !shiftKey &&
576 !metaKey &&
577 !ctrlKey &&
578 !altKey
579 ) {
580 + nativeEvent.preventDefault();
581 state.shouldPreventClick = true;
582 }
583 } else {
packages/react-interactions/events/src/dom/__tests__/PressLegacy-test.internal.js
+1 -2
@@ -914,8 +914,7 @@ describe.each(environmentTable)('Press responder', hasPointerEvents => {
914 ReactDOM.render(<Component />, container);
915
916 const target = createEventTarget(ref.current);
917 - target.keydown({key: 'Enter'});
918 - target.click({preventDefault});
917 + target.keydown({key: 'Enter', preventDefault});
918 target.keyup({key: 'Enter'});
919 expect(preventDefault).toBeCalled();
920 expect(onPress).toHaveBeenCalledWith(