Skip to content

Commit cd1bdcd

Browse files
authored
[react-interactions] Prevent duplicate onPress firing for keyboard Enter (#17266)
* [react-interactions] Prevent duplicate onPress firing for keyboard Enter * address feedback
1 parent 4f02c93 commit cd1bdcd

File tree

3 files changed

+8
-7
lines changed

3 files changed

+8
-7
lines changed

packages/react-interactions/events/src/dom/Press.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ function isValidKey(e): boolean {
9797
const {key, target} = e;
9898
const {tagName, isContentEditable} = (target: any);
9999
return (
100-
(key === 'Enter' || key === ' ') &&
100+
(key === 'Enter' || key === ' ' || key === 'Spacebar') &&
101101
(tagName !== 'INPUT' &&
102102
tagName !== 'TEXTAREA' &&
103103
isContentEditable !== true)
@@ -106,7 +106,10 @@ function isValidKey(e): boolean {
106106

107107
function handlePreventDefault(preventDefault: ?boolean, e: any): void {
108108
const key = e.key;
109-
if (preventDefault !== false && (key === ' ' || key === 'Enter')) {
109+
if (
110+
preventDefault !== false &&
111+
(key === ' ' || key === 'Enter' || key === 'Spacebar')
112+
) {
110113
e.preventDefault();
111114
}
112115
}

packages/react-interactions/events/src/dom/PressLegacy.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -570,15 +570,14 @@ const pressResponderImpl = {
570570
metaKey,
571571
shiftKey,
572572
} = (nativeEvent: MouseEvent);
573-
if (nativeEvent.key === ' ') {
574-
nativeEvent.preventDefault();
575-
} else if (
573+
if (
576574
props.preventDefault !== false &&
577575
!shiftKey &&
578576
!metaKey &&
579577
!ctrlKey &&
580578
!altKey
581579
) {
580+
nativeEvent.preventDefault();
582581
state.shouldPreventClick = true;
583582
}
584583
} else {

packages/react-interactions/events/src/dom/__tests__/PressLegacy-test.internal.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -914,8 +914,7 @@ describe.each(environmentTable)('Press responder', hasPointerEvents => {
914914
ReactDOM.render(<Component />, container);
915915

916916
const target = createEventTarget(ref.current);
917-
target.keydown({key: 'Enter'});
918-
target.click({preventDefault});
917+
target.keydown({key: 'Enter', preventDefault});
919918
target.keyup({key: 'Enter'});
920919
expect(preventDefault).toBeCalled();
921920
expect(onPress).toHaveBeenCalledWith(

0 commit comments

Comments
 (0)