From 78bb1dec4b89c0c938a1c7f105d5f3e4797fbf5c Mon Sep 17 00:00:00 2001 From: Dominic Gannaway Date: Wed, 28 Aug 2019 16:33:19 +0100 Subject: [PATCH 1/2] [react-events] Ensure screen reader virtual clicks support preventDefault --- packages/react-events/src/dom/Press.js | 6 ++++++ .../react-events/src/dom/__tests__/Press-test.internal.js | 4 +++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/packages/react-events/src/dom/Press.js b/packages/react-events/src/dom/Press.js index ce8b745254c61..418dcfa1aa531 100644 --- a/packages/react-events/src/dom/Press.js +++ b/packages/react-events/src/dom/Press.js @@ -635,6 +635,12 @@ const pressResponderImpl = { if (isFunction(onPress) && isScreenReaderVirtualClick(nativeEvent)) { state.pointerType = 'keyboard'; state.pressTarget = event.responderTarget; + const preventDefault = props.preventDefault; + + if (preventDefault !== false) { + nativeEvent.preventDefault(); + state.shouldPreventClick = true; + } dispatchEvent(event, onPress, context, state, 'press', DiscreteEvent); } break; diff --git a/packages/react-events/src/dom/__tests__/Press-test.internal.js b/packages/react-events/src/dom/__tests__/Press-test.internal.js index 159a039bbc691..5e155f5ad839f 100644 --- a/packages/react-events/src/dom/__tests__/Press-test.internal.js +++ b/packages/react-events/src/dom/__tests__/Press-test.internal.js @@ -423,7 +423,9 @@ describe.each(environmentTable)('Press responder', hasPointerEvents => { it('is called once after virtual screen reader "click" event', () => { const target = createEventTarget(ref.current); - target.virtualclick(); + const preventDefault = jest.fn(); + target.virtualclick({preventDefault}); + expect(preventDefault).toBeCalled(); expect(onPress).toHaveBeenCalledTimes(1); expect(onPress).toHaveBeenCalledWith( expect.objectContaining({ From 624febeb720da127868fafe15da551cc329ff041 Mon Sep 17 00:00:00 2001 From: Dominic Gannaway Date: Wed, 28 Aug 2019 16:37:48 +0100 Subject: [PATCH 2/2] Removed un-needed line --- packages/react-events/src/dom/Press.js | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/react-events/src/dom/Press.js b/packages/react-events/src/dom/Press.js index 418dcfa1aa531..267240776af6e 100644 --- a/packages/react-events/src/dom/Press.js +++ b/packages/react-events/src/dom/Press.js @@ -639,7 +639,6 @@ const pressResponderImpl = { if (preventDefault !== false) { nativeEvent.preventDefault(); - state.shouldPreventClick = true; } dispatchEvent(event, onPress, context, state, 'press', DiscreteEvent); }