@@ -210,7 +210,7 @@ test('should not fire on disabled Pressable', () => {
210
210
expect ( handlePress ) . not . toHaveBeenCalled ( ) ;
211
211
} ) ;
212
212
213
- test ( 'should not fire inside View with pointerEvents="none"' , ( ) => {
213
+ test ( 'should not fire inside View with pointerEvents="none" in props ' , ( ) => {
214
214
const onPress = jest . fn ( ) ;
215
215
render (
216
216
< View pointerEvents = "none" >
@@ -225,7 +225,37 @@ test('should not fire inside View with pointerEvents="none"', () => {
225
225
expect ( onPress ) . not . toHaveBeenCalled ( ) ;
226
226
} ) ;
227
227
228
- test ( 'should not fire inside View with pointerEvents="box-only"' , ( ) => {
228
+ test ( 'should not fire inside View with pointerEvents="none" in styles' , ( ) => {
229
+ const onPress = jest . fn ( ) ;
230
+ render (
231
+ < View style = { { pointerEvents : 'none' } } >
232
+ < Pressable onPress = { onPress } >
233
+ < Text > Trigger</ Text >
234
+ </ Pressable >
235
+ </ View > ,
236
+ ) ;
237
+
238
+ fireEvent . press ( screen . getByText ( 'Trigger' ) ) ;
239
+ fireEvent ( screen . getByText ( 'Trigger' ) , 'onPress' ) ;
240
+ expect ( onPress ) . not . toHaveBeenCalled ( ) ;
241
+ } ) ;
242
+
243
+ test ( 'should not fire inside View with pointerEvents="none" in styles array' , ( ) => {
244
+ const onPress = jest . fn ( ) ;
245
+ render (
246
+ < View style = { [ { pointerEvents : 'none' } ] } >
247
+ < Pressable onPress = { onPress } >
248
+ < Text > Trigger</ Text >
249
+ </ Pressable >
250
+ </ View > ,
251
+ ) ;
252
+
253
+ fireEvent . press ( screen . getByText ( 'Trigger' ) ) ;
254
+ fireEvent ( screen . getByText ( 'Trigger' ) , 'onPress' ) ;
255
+ expect ( onPress ) . not . toHaveBeenCalled ( ) ;
256
+ } ) ;
257
+
258
+ test ( 'should not fire inside View with pointerEvents="box-only" in props' , ( ) => {
229
259
const onPress = jest . fn ( ) ;
230
260
render (
231
261
< View pointerEvents = "box-only" >
@@ -240,7 +270,22 @@ test('should not fire inside View with pointerEvents="box-only"', () => {
240
270
expect ( onPress ) . not . toHaveBeenCalled ( ) ;
241
271
} ) ;
242
272
243
- test ( 'should fire inside View with pointerEvents="box-none"' , ( ) => {
273
+ test ( 'should not fire inside View with pointerEvents="box-only" in styles' , ( ) => {
274
+ const onPress = jest . fn ( ) ;
275
+ render (
276
+ < View style = { { pointerEvents : 'box-only' } } >
277
+ < Pressable onPress = { onPress } >
278
+ < Text > Trigger</ Text >
279
+ </ Pressable >
280
+ </ View > ,
281
+ ) ;
282
+
283
+ fireEvent . press ( screen . getByText ( 'Trigger' ) ) ;
284
+ fireEvent ( screen . getByText ( 'Trigger' ) , 'onPress' ) ;
285
+ expect ( onPress ) . not . toHaveBeenCalled ( ) ;
286
+ } ) ;
287
+
288
+ test ( 'should fire inside View with pointerEvents="box-none" in props' , ( ) => {
244
289
const onPress = jest . fn ( ) ;
245
290
render (
246
291
< View pointerEvents = "box-none" >
@@ -255,7 +300,22 @@ test('should fire inside View with pointerEvents="box-none"', () => {
255
300
expect ( onPress ) . toHaveBeenCalledTimes ( 2 ) ;
256
301
} ) ;
257
302
258
- test ( 'should fire inside View with pointerEvents="auto"' , ( ) => {
303
+ test ( 'should fire inside View with pointerEvents="box-none" in styles' , ( ) => {
304
+ const onPress = jest . fn ( ) ;
305
+ render (
306
+ < View style = { { pointerEvents : 'box-none' } } >
307
+ < Pressable onPress = { onPress } >
308
+ < Text > Trigger</ Text >
309
+ </ Pressable >
310
+ </ View > ,
311
+ ) ;
312
+
313
+ fireEvent . press ( screen . getByText ( 'Trigger' ) ) ;
314
+ fireEvent ( screen . getByText ( 'Trigger' ) , 'onPress' ) ;
315
+ expect ( onPress ) . toHaveBeenCalledTimes ( 2 ) ;
316
+ } ) ;
317
+
318
+ test ( 'should fire inside View with pointerEvents="auto" in props' , ( ) => {
259
319
const onPress = jest . fn ( ) ;
260
320
render (
261
321
< View pointerEvents = "auto" >
@@ -270,7 +330,22 @@ test('should fire inside View with pointerEvents="auto"', () => {
270
330
expect ( onPress ) . toHaveBeenCalledTimes ( 2 ) ;
271
331
} ) ;
272
332
273
- test ( 'should not fire deeply inside View with pointerEvents="box-only"' , ( ) => {
333
+ test ( 'should fire inside View with pointerEvents="auto" in styles' , ( ) => {
334
+ const onPress = jest . fn ( ) ;
335
+ render (
336
+ < View style = { { pointerEvents : 'auto' } } >
337
+ < Pressable onPress = { onPress } >
338
+ < Text > Trigger</ Text >
339
+ </ Pressable >
340
+ </ View > ,
341
+ ) ;
342
+
343
+ fireEvent . press ( screen . getByText ( 'Trigger' ) ) ;
344
+ fireEvent ( screen . getByText ( 'Trigger' ) , 'onPress' ) ;
345
+ expect ( onPress ) . toHaveBeenCalledTimes ( 2 ) ;
346
+ } ) ;
347
+
348
+ test ( 'should not fire deeply inside View with pointerEvents="box-only" in props' , ( ) => {
274
349
const onPress = jest . fn ( ) ;
275
350
render (
276
351
< View pointerEvents = "box-only" >
@@ -287,32 +362,73 @@ test('should not fire deeply inside View with pointerEvents="box-only"', () => {
287
362
expect ( onPress ) . not . toHaveBeenCalled ( ) ;
288
363
} ) ;
289
364
290
- test ( 'should fire non-pointer events inside View with pointerEvents="box-none"' , ( ) => {
365
+ test ( 'should not fire deeply inside View with pointerEvents="box-only" in styles' , ( ) => {
366
+ const onPress = jest . fn ( ) ;
367
+ render (
368
+ < View style = { { pointerEvents : 'box-only' } } >
369
+ < View >
370
+ < Pressable onPress = { onPress } >
371
+ < Text > Trigger</ Text >
372
+ </ Pressable >
373
+ </ View >
374
+ </ View > ,
375
+ ) ;
376
+
377
+ fireEvent . press ( screen . getByText ( 'Trigger' ) ) ;
378
+ fireEvent ( screen . getByText ( 'Trigger' ) , 'onPress' ) ;
379
+ expect ( onPress ) . not . toHaveBeenCalled ( ) ;
380
+ } ) ;
381
+
382
+ test ( 'should fire non-pointer events inside View with pointerEvents="box-none" in props' , ( ) => {
291
383
const onTouchStart = jest . fn ( ) ;
292
384
render ( < View testID = "view" pointerEvents = "box-none" onTouchStart = { onTouchStart } /> ) ;
293
385
294
386
fireEvent ( screen . getByTestId ( 'view' ) , 'touchStart' ) ;
295
387
expect ( onTouchStart ) . toHaveBeenCalled ( ) ;
296
388
} ) ;
297
389
298
- test ( 'should fire non-touch events inside View with pointerEvents="box-none"' , ( ) => {
390
+ test ( 'should fire non-pointer events inside View with pointerEvents="box-none" in styles' , ( ) => {
391
+ const onTouchStart = jest . fn ( ) ;
392
+ render ( < View testID = "view" style = { { pointerEvents : 'box-none' } } onTouchStart = { onTouchStart } /> ) ;
393
+
394
+ fireEvent ( screen . getByTestId ( 'view' ) , 'touchStart' ) ;
395
+ expect ( onTouchStart ) . toHaveBeenCalled ( ) ;
396
+ } ) ;
397
+
398
+ test ( 'should fire non-touch events inside View with pointerEvents="box-none" in props' , ( ) => {
299
399
const onLayout = jest . fn ( ) ;
300
400
render ( < View testID = "view" pointerEvents = "box-none" onLayout = { onLayout } /> ) ;
301
401
302
402
fireEvent ( screen . getByTestId ( 'view' ) , 'layout' ) ;
303
403
expect ( onLayout ) . toHaveBeenCalled ( ) ;
304
404
} ) ;
305
405
406
+ test ( 'should fire non-touch events inside View with pointerEvents="box-none" in styles' , ( ) => {
407
+ const onLayout = jest . fn ( ) ;
408
+ render ( < View testID = "view" style = { { pointerEvents : 'box-none' } } onLayout = { onLayout } /> ) ;
409
+
410
+ fireEvent ( screen . getByTestId ( 'view' ) , 'layout' ) ;
411
+ expect ( onLayout ) . toHaveBeenCalled ( ) ;
412
+ } ) ;
413
+
306
414
// This test if pointerEvents="box-only" on composite `Pressable` is blocking
307
415
// the 'press' event on host View rendered by pressable.
308
- test ( 'should fire on Pressable with pointerEvents="box-only' , ( ) => {
416
+ test ( 'should fire on Pressable with pointerEvents="box-only" in props ' , ( ) => {
309
417
const onPress = jest . fn ( ) ;
310
418
render ( < Pressable testID = "pressable" pointerEvents = "box-only" onPress = { onPress } /> ) ;
311
419
312
420
fireEvent . press ( screen . getByTestId ( 'pressable' ) ) ;
313
421
expect ( onPress ) . toHaveBeenCalled ( ) ;
314
422
} ) ;
315
423
424
+ test ( 'should fire on Pressable with pointerEvents="box-only" in styles' , ( ) => {
425
+ const onPress = jest . fn ( ) ;
426
+ render ( < Pressable testID = "pressable" style = { { pointerEvents : 'box-only' } } onPress = { onPress } /> ) ;
427
+
428
+ fireEvent . press ( screen . getByTestId ( 'pressable' ) ) ;
429
+ expect ( onPress ) . toHaveBeenCalled ( ) ;
430
+ } ) ;
431
+
316
432
test ( 'should pass event up on disabled TouchableOpacity' , ( ) => {
317
433
const handleInnerPress = jest . fn ( ) ;
318
434
const handleOuterPress = jest . fn ( ) ;
0 commit comments