[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:
Dominic Gannaway
2019-11-05 23:28:26 +00:00
committed by GitHub
parent 4f02c93c7c
commit cd1bdcd067
3 changed files with 8 additions and 7 deletions
+5 -2
View File
@@ -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();
}
}
+2 -3
View File
@@ -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(