Skip to content

Commit 34aaec6

Browse files
authored
[react-events] Ensure screen reader virtual clicks support preventDefault (#16600)
1 parent 01fb68b commit 34aaec6

File tree

2 files changed

+8
-1
lines changed

2 files changed

+8
-1
lines changed

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -635,6 +635,11 @@ const pressResponderImpl = {
635635
if (isFunction(onPress) && isScreenReaderVirtualClick(nativeEvent)) {
636636
state.pointerType = 'keyboard';
637637
state.pressTarget = event.responderTarget;
638+
const preventDefault = props.preventDefault;
639+
640+
if (preventDefault !== false) {
641+
nativeEvent.preventDefault();
642+
}
638643
dispatchEvent(event, onPress, context, state, 'press', DiscreteEvent);
639644
}
640645
break;

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -423,7 +423,9 @@ describe.each(environmentTable)('Press responder', hasPointerEvents => {
423423

424424
it('is called once after virtual screen reader "click" event', () => {
425425
const target = createEventTarget(ref.current);
426-
target.virtualclick();
426+
const preventDefault = jest.fn();
427+
target.virtualclick({preventDefault});
428+
expect(preventDefault).toBeCalled();
427429
expect(onPress).toHaveBeenCalledTimes(1);
428430
expect(onPress).toHaveBeenCalledWith(
429431
expect.objectContaining({

0 commit comments

Comments
 (0)