Skip to content

Commit 3e911d7

Browse files
committed
fix: add onMoveShouldSetResponder to element enabled checking
1 parent b9f9ab7 commit 3e911d7

File tree

2 files changed

+32
-1
lines changed

2 files changed

+32
-1
lines changed

src/__tests__/fireEvent.test.js

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import React from 'react';
33
import {
44
View,
55
TouchableOpacity,
6+
PanResponder,
67
Pressable,
78
Text,
89
ScrollView,
@@ -305,3 +306,27 @@ test('is not fooled by non-responder wrapping host elements', () => {
305306
fireEvent.press(screen.getByText('Trigger'));
306307
expect(handlePress).not.toHaveBeenCalled();
307308
});
309+
310+
function TestDraggableComponent({ onDrag }) {
311+
const responderHandlers = PanResponder.create({
312+
onMoveShouldSetPanResponder: (_evt, _gestureState) => true,
313+
onPanResponderMove: onDrag,
314+
}).panHandlers;
315+
316+
return (
317+
<View {...responderHandlers}>
318+
<Text>Trigger</Text>
319+
</View>
320+
);
321+
}
322+
323+
test('has only onMove', () => {
324+
const handleDrag = jest.fn();
325+
326+
const screen = render(<TestDraggableComponent onDrag={handleDrag} />);
327+
328+
fireEvent(screen.getByText('Trigger'), 'responderMove', {
329+
touchHistory: { mostRecentTimeStamp: '2', touchBank: [] },
330+
});
331+
expect(handleDrag).toHaveBeenCalled();
332+
});

src/fireEvent.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,13 @@ const isEventEnabled = (
2323
) => {
2424
if (isTextInput(element)) return element?.props.editable !== false;
2525

26-
return touchResponder?.props.onStartShouldSetResponder?.() !== false;
26+
const touchStart = touchResponder?.props.onStartShouldSetResponder?.();
27+
const touchMove = touchResponder?.props.onMoveShouldSetResponder?.();
28+
29+
if (touchStart) return true;
30+
if (touchMove) return true;
31+
32+
return touchStart === undefined && touchMove === undefined;
2733
};
2834

2935
const findEventHandler = (

0 commit comments

Comments
 (0)