Skip to content

Commit 80591bf

Browse files
committed
[add] Support for PointerEvent props
Adds support for PointerEvent prop handlers and removes `onClickCapture`. Ref #2377
1 parent d60b90b commit 80591bf

File tree

4 files changed

+84
-6
lines changed

4 files changed

+84
-6
lines changed

packages/react-native-web/src/exports/Text/__tests__/index-test.js

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
import React from 'react';
1111
import Text from '../';
12-
import { createEventTarget } from 'dom-event-testing-library';
12+
import { createEventTarget, setPointerEvent } from 'dom-event-testing-library';
1313
import { act, render } from '@testing-library/react';
1414

1515
describe('components/Text', () => {
@@ -230,6 +230,28 @@ describe('components/Text', () => {
230230
});
231231
});
232232

233+
describe('prop "onPointerDown"', () => {
234+
beforeEach(() => {
235+
setPointerEvent(true);
236+
});
237+
afterEach(() => {
238+
setPointerEvent(false);
239+
});
240+
241+
test('is called', () => {
242+
const onPointerDown = jest.fn();
243+
const ref = React.createRef();
244+
act(() => {
245+
render(<Text onPointerDown={onPointerDown} ref={ref} />);
246+
});
247+
const target = createEventTarget(ref.current);
248+
act(() => {
249+
target.pointerdown({ pointerType: 'touch' });
250+
});
251+
expect(onPointerDown).toBeCalled();
252+
});
253+
});
254+
233255
describe('prop "onPress"', () => {
234256
test('is called', () => {
235257
const onPress = jest.fn();

packages/react-native-web/src/exports/View/__tests__/index-test.js

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
import React from 'react';
99
import View from '../';
10-
import { createEventTarget } from 'dom-event-testing-library';
10+
import { createEventTarget, setPointerEvent } from 'dom-event-testing-library';
1111
import { act, render } from '@testing-library/react';
1212

1313
describe('components/View', () => {
@@ -202,6 +202,21 @@ describe('components/View', () => {
202202
});
203203
});
204204

205+
describe('prop "onClick"', () => {
206+
test('is called', () => {
207+
const onClick = jest.fn();
208+
const ref = React.createRef();
209+
act(() => {
210+
render(<View onClick={onClick} ref={ref} />);
211+
});
212+
const target = createEventTarget(ref.current);
213+
act(() => {
214+
target.click();
215+
});
216+
expect(onClick).toBeCalled();
217+
});
218+
});
219+
205220
describe('prop "onFocus"', () => {
206221
test('is called', () => {
207222
const onFocus = jest.fn();
@@ -218,6 +233,28 @@ describe('components/View', () => {
218233
});
219234
});
220235

236+
describe('prop "onPointerDown"', () => {
237+
beforeEach(() => {
238+
setPointerEvent(true);
239+
});
240+
afterEach(() => {
241+
setPointerEvent(false);
242+
});
243+
244+
test('is called', () => {
245+
const onPointerDown = jest.fn();
246+
const ref = React.createRef();
247+
act(() => {
248+
render(<View onPointerDown={onPointerDown} ref={ref} />);
249+
});
250+
const target = createEventTarget(ref.current);
251+
act(() => {
252+
target.pointerdown({ pointerType: 'touch' });
253+
});
254+
expect(onPointerDown).toBeCalled();
255+
});
256+
});
257+
221258
describe('prop "ref"', () => {
222259
test('value is set', () => {
223260
const ref = jest.fn();

packages/react-native-web/src/exports/View/types.js

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,16 +136,26 @@ export type AccessibilityProps = {|
136136
|};
137137

138138
export type EventProps = {|
139+
onAuxClick?: (e: any) => void,
139140
onBlur?: (e: any) => void,
140141
onClick?: (e: any) => void,
141-
onClickCapture?: (e: any) => void,
142142
onContextMenu?: (e: any) => void,
143143
onFocus?: (e: any) => void,
144+
onGotPointerCapture?: (e: any) => void,
144145
onKeyDown?: (e: any) => void,
145146
onKeyUp?: (e: any) => void,
146147
onLayout?: (e: LayoutEvent) => void,
148+
onLostPointerCapture?: (e: any) => void,
147149
onMoveShouldSetResponder?: (e: any) => boolean,
148150
onMoveShouldSetResponderCapture?: (e: any) => boolean,
151+
onPointerCancel?: (e: any) => void,
152+
onPointerDown?: (e: any) => void,
153+
onPointerEnter?: (e: any) => void,
154+
onPointerMove?: (e: any) => void,
155+
onPointerLeave?: (e: any) => void,
156+
onPointerOut?: (e: any) => void,
157+
onPointerOver?: (e: any) => void,
158+
onPointerUp?: (e: any) => void,
149159
onResponderEnd?: (e: any) => void,
150160
onResponderGrant?: (e: any) => void | boolean,
151161
onResponderMove?: (e: any) => void,

packages/react-native-web/src/modules/forwardedProps/index.js

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -119,8 +119,18 @@ export const accessibilityProps = {
119119

120120
export const clickProps = {
121121
onClick: true,
122-
onClickCapture: true,
123-
onContextMenu: true
122+
onAuxClick: true,
123+
onContextMenu: true,
124+
onGotPointerCapture: true,
125+
onLostPointerCapture: true,
126+
onPointerCancel: true,
127+
onPointerDown: true,
128+
onPointerEnter: true,
129+
onPointerMove: true,
130+
onPointerLeave: true,
131+
onPointerOut: true,
132+
onPointerOver: true,
133+
onPointerUp: true
124134
};
125135

126136
export const focusProps = {
@@ -157,6 +167,5 @@ export const touchProps = {
157167
};
158168

159169
export const styleProps = {
160-
classList: true,
161170
style: true
162171
};

0 commit comments

Comments
 (0)