[react-interactions] Make events non-passive to allow preventDefault (#17136)
Dominic Gannaway committed
Oct 21, 2019 at 22:37 UTC
f7ec65eeba6ca9194a09d317fbeb46fd79530b09
2 files changed
+16
-5
packages/react-interactions/events/src/dom/PressLegacy.js
+11
-4
@@ -114,11 +114,18 @@ const DEFAULT_PRESS_RETENTION_OFFSET = {
114
};
115
116
const targetEventTypes = hasPointerEvents
117
- ? ['keydown_active', 'pointerdown', 'click_active']
118
- : ['keydown_active', 'touchstart', 'mousedown', 'click_active'];
117
+ ? ['keydown_active', 'pointerdown_active', 'click_active']
118
+ : ['keydown_active', 'touchstart', 'mousedown_active', 'click_active'];
119
120
const rootEventTypes = hasPointerEvents
121
- ? ['pointerup', 'pointermove', 'pointercancel', 'click', 'keyup', 'scroll']
121
+ ? [
122
+ 'pointerup_active',
123
+ 'pointermove',
124
+ 'pointercancel',
125
+ 'click',
126
+ 'keyup',
127
+ 'scroll',
128
+ ]
129
: [
130
'click',
131
'keyup',
@@ -128,7 +135,7 @@ const rootEventTypes = hasPointerEvents
135
'touchcancel',
136
// Used as a 'cancel' signal for mouse interactions
137
'dragstart',
131
- 'mouseup',
138
+ 'mouseup_active',
139
'touchend',
140
];
141
packages/react-interactions/events/src/dom/__tests__/PressLegacy-test.internal.js
+5
-1
@@ -1134,11 +1134,13 @@ describe.each(environmentTable)('Press responder', hasPointerEvents => {
1134
1135
it('event.preventDefault works as expected', () => {
1136
const onPress = jest.fn(e => e.preventDefault());
1137
+ const onPressStart = jest.fn(e => e.preventDefault());
1138
+ const onPressEnd = jest.fn(e => e.preventDefault());
1139
const preventDefault = jest.fn();
1140
const buttonRef = React.createRef();
1141
1142
const Component = () => {
1141
- const listener = usePress({onPress});
1143
+ const listener = usePress({onPress, onPressStart, onPressEnd});
1144
return <button ref={buttonRef} listeners={listener} />;
1145
};
1146
ReactDOM.render(<Component />, container);
@@ -1147,5 +1149,7 @@ describe.each(environmentTable)('Press responder', hasPointerEvents => {
1149
target.pointerdown();
1150
target.pointerup({preventDefault});
1151
expect(preventDefault).toBeCalled();
1152
+ expect(onPressStart).toBeCalled();
1153
+ expect(onPressEnd).toBeCalled();
1154
});
1155
});