React Flare: fix PressLegacy preventDefault issue (#18904)
Dominic Gannaway committed
May 13, 2020 at 13:59 UTC
6514e4a179d7f7759f5aca348477c1299a4235ad
2 files changed
+12
-3
packages/react-interactions/events/src/dom/PressLegacy.js
+10
-2
@@ -586,7 +586,11 @@ const pressResponderImpl = {
586
!ctrlKey &&
587
!altKey
588
) {
589
- nativeEvent.preventDefault();
589
+ // Prevent spacebar press from scrolling the window
590
+ const key = nativeEvent.key;
591
+ if (key === ' ' || key === 'Spacebar') {
592
+ nativeEvent.preventDefault();
593
+ }
594
state.shouldPreventClick = true;
595
}
596
} else {
@@ -637,7 +641,11 @@ const pressResponderImpl = {
641
addRootEventTypes(context, state);
642
} else {
643
// Prevent spacebar press from scrolling the window
640
- if (isValidKeyboardEvent(nativeEvent) && nativeEvent.key === ' ') {
644
+ const key = nativeEvent.key;
645
+ if (
646
+ isValidKeyboardEvent(nativeEvent) &&
647
+ (key === ' ' || key === 'Spacebar')
648
+ ) {
649
nativeEvent.preventDefault();
650
}
651
}
packages/react-interactions/events/src/dom/__tests__/PressLegacy-test.internal.js
+2
-1
@@ -1054,8 +1054,9 @@ describe.each(environmentTable)('Press responder', hasPointerEvents => {
1054
ReactDOM.render(<Component />, container);
1055
1056
const target = createEventTarget(ref.current);
1057
- target.keydown({key: 'Enter', preventDefault});
1057
+ target.keydown({key: 'Enter'});
1058
target.keyup({key: 'Enter'});
1059
+ target.click({preventDefault});
1060
expect(preventDefault).toBeCalled();
1061
expect(onPress).toHaveBeenCalledWith(
1062
expect.objectContaining({defaultPrevented: true}),