mirror of
https://github.com/facebook/react.git
synced 2025-11-01 09:12:30 +00:00
[react-interactions] Prevent duplicate onPress firing for keyboard Enter (#17266)
* [react-interactions] Prevent duplicate onPress firing for keyboard Enter * address feedback
This commit is contained in:
+5
-2
@@ -97,7 +97,7 @@ function isValidKey(e): boolean {
|
||||
const {key, target} = e;
|
||||
const {tagName, isContentEditable} = (target: any);
|
||||
return (
|
||||
(key === 'Enter' || key === ' ') &&
|
||||
(key === 'Enter' || key === ' ' || key === 'Spacebar') &&
|
||||
(tagName !== 'INPUT' &&
|
||||
tagName !== 'TEXTAREA' &&
|
||||
isContentEditable !== true)
|
||||
@@ -106,7 +106,10 @@ function isValidKey(e): boolean {
|
||||
|
||||
function handlePreventDefault(preventDefault: ?boolean, e: any): void {
|
||||
const key = e.key;
|
||||
if (preventDefault !== false && (key === ' ' || key === 'Enter')) {
|
||||
if (
|
||||
preventDefault !== false &&
|
||||
(key === ' ' || key === 'Enter' || key === 'Spacebar')
|
||||
) {
|
||||
e.preventDefault();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -570,15 +570,14 @@ const pressResponderImpl = {
|
||||
metaKey,
|
||||
shiftKey,
|
||||
} = (nativeEvent: MouseEvent);
|
||||
if (nativeEvent.key === ' ') {
|
||||
nativeEvent.preventDefault();
|
||||
} else if (
|
||||
if (
|
||||
props.preventDefault !== false &&
|
||||
!shiftKey &&
|
||||
!metaKey &&
|
||||
!ctrlKey &&
|
||||
!altKey
|
||||
) {
|
||||
nativeEvent.preventDefault();
|
||||
state.shouldPreventClick = true;
|
||||
}
|
||||
} else {
|
||||
|
||||
@@ -914,8 +914,7 @@ describe.each(environmentTable)('Press responder', hasPointerEvents => {
|
||||
ReactDOM.render(<Component />, container);
|
||||
|
||||
const target = createEventTarget(ref.current);
|
||||
target.keydown({key: 'Enter'});
|
||||
target.click({preventDefault});
|
||||
target.keydown({key: 'Enter', preventDefault});
|
||||
target.keyup({key: 'Enter'});
|
||||
expect(preventDefault).toBeCalled();
|
||||
expect(onPress).toHaveBeenCalledWith(
|
||||
|
||||
Reference in New Issue
Block a user