Skip to content

Commit

Permalink
[react-interactions] Prevent duplicate onPress firing for keyboard En…
Browse files Browse the repository at this point in the history
…ter (#17266)

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

* address feedback
  • Loading branch information
trueadm authored Nov 5, 2019
1 parent 4f02c93 commit cd1bdcd
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 7 deletions.
7 changes: 5 additions & 2 deletions packages/react-interactions/events/src/dom/Press.js
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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();
}
}
Expand Down
5 changes: 2 additions & 3 deletions packages/react-interactions/events/src/dom/PressLegacy.js
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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(
Expand Down

0 comments on commit cd1bdcd

Please sign in to comment.