[react-events] Ensure screen reader virtual clicks support preventDefault (#16600)
Dominic Gannaway committed
Aug 28, 2019 at 17:39 UTC
34aaec6f908e85d56cbc510677bc1c85d87aa57b
2 files changed
+8
-1
packages/react-events/src/dom/Press.js
+5
@@ -635,6 +635,11 @@ const pressResponderImpl = {
635
if (isFunction(onPress) && isScreenReaderVirtualClick(nativeEvent)) {
636
state.pointerType = 'keyboard';
637
state.pressTarget = event.responderTarget;
638
+ const preventDefault = props.preventDefault;
639
+
640
+ if (preventDefault !== false) {
641
+ nativeEvent.preventDefault();
642
+ }
643
dispatchEvent(event, onPress, context, state, 'press', DiscreteEvent);
644
}
645
break;
packages/react-events/src/dom/__tests__/Press-test.internal.js
+3
-1
@@ -423,7 +423,9 @@ describe.each(environmentTable)('Press responder', hasPointerEvents => {
423
424
it('is called once after virtual screen reader "click" event', () => {
425
const target = createEventTarget(ref.current);
426
- target.virtualclick();
426
+ const preventDefault = jest.fn();
427
+ target.virtualclick({preventDefault});
428
+ expect(preventDefault).toBeCalled();
429
expect(onPress).toHaveBeenCalledTimes(1);
430
expect(onPress).toHaveBeenCalledWith(
431
expect.objectContaining({