Skip to content

Commit e76a17d

Browse files
hassankhannecolas
authored andcommitted
[fix] Correctly propagate pointer-events: auto to children when set to box-none
Corrects `pointer-events: box-none` behavior to match what's described at https://reactnative.dev/docs/view#pointerevents Fix #2606 Close #2789
1 parent 208fe57 commit e76a17d

File tree

4 files changed

+30
-6
lines changed

4 files changed

+30
-6
lines changed

packages/react-native-web/src/exports/AppRegistry/__tests__/__snapshots__/index-test.js.snap

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ exports[`AppRegistry runApplication styles roots in different documents 1`] = `
1616
".r-bottom-1p0dtai {bottom: 0px;}",
1717
".r-left-1d2f490 {left: 0px;}",
1818
".r-pointerEvents-105ug2t {pointer-events: auto !important;}",
19-
".r-pointerEvents-12vffkv>* {pointer-events: auto;}",
19+
".r-pointerEvents-12vffkv * {pointer-events: auto;}",
2020
".r-pointerEvents-12vffkv {pointer-events: none !important;}",
2121
".r-pointerEvents-633pao {pointer-events: none !important;}",
2222
".r-pointerEvents-ah5dr5>* {pointer-events: none;}",
@@ -43,7 +43,7 @@ exports[`AppRegistry runApplication styles roots in different documents 2`] = `
4343
".r-bottom-1p0dtai {bottom: 0px;}",
4444
".r-left-1d2f490 {left: 0px;}",
4545
".r-pointerEvents-105ug2t {pointer-events: auto !important;}",
46-
".r-pointerEvents-12vffkv>* {pointer-events: auto;}",
46+
".r-pointerEvents-12vffkv * {pointer-events: auto;}",
4747
".r-pointerEvents-12vffkv {pointer-events: none !important;}",
4848
".r-pointerEvents-633pao {pointer-events: none !important;}",
4949
".r-pointerEvents-ah5dr5>* {pointer-events: none;}",

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ describe('AppRegistry', () => {
6161
.r-left-1d2f490{left:0px;}
6262
.r-maxWidth-dnmrzs{max-width:100%;}
6363
.r-pointerEvents-105ug2t{pointer-events:auto!important;}
64-
.r-pointerEvents-12vffkv>*{pointer-events:auto;}
64+
.r-pointerEvents-12vffkv * {pointer-events:auto;}
6565
.r-pointerEvents-12vffkv{pointer-events:none!important;}
6666
.r-pointerEvents-633pao{pointer-events:none!important;}
6767
.r-pointerEvents-ah5dr5>*{pointer-events:none;}
@@ -119,7 +119,7 @@ describe('AppRegistry', () => {
119119
.r-left-1d2f490{left:0px;}
120120
.r-maxWidth-dnmrzs{max-width:100%;}
121121
.r-pointerEvents-105ug2t{pointer-events:auto!important;}
122-
.r-pointerEvents-12vffkv>*{pointer-events:auto;}
122+
.r-pointerEvents-12vffkv * {pointer-events:auto;}
123123
.r-pointerEvents-12vffkv{pointer-events:none!important;}
124124
.r-pointerEvents-633pao{pointer-events:none!important;}
125125
.r-pointerEvents-ah5dr5>*{pointer-events:none;}
@@ -170,7 +170,7 @@ describe('AppRegistry', () => {
170170
.r-left-1d2f490{left:0px;}
171171
.r-maxWidth-dnmrzs{max-width:100%;}
172172
.r-pointerEvents-105ug2t{pointer-events:auto!important;}
173-
.r-pointerEvents-12vffkv>*{pointer-events:auto;}
173+
.r-pointerEvents-12vffkv * {pointer-events:auto;}
174174
.r-pointerEvents-12vffkv{pointer-events:none!important;}
175175
.r-pointerEvents-633pao{pointer-events:none!important;}
176176
.r-pointerEvents-ah5dr5>*{pointer-events:none;}

packages/react-native-web/src/exports/StyleSheet/__tests__/compiler-test.js

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,30 @@ describe('StyleSheet/compile', () => {
176176
]
177177
`);
178178
});
179+
180+
test('when parent is pointer-events=box-none, pointer-events=auto applied to children', () => {
181+
const result = atomic({
182+
pointerEvents: 'box-none'
183+
});
184+
185+
expect(result).toMatchInlineSnapshot(`
186+
[
187+
{
188+
"$$css": true,
189+
"pointerEvents": "r-pointerEvents-12vffkv",
190+
},
191+
[
192+
[
193+
[
194+
".r-pointerEvents-12vffkv * {pointer-events:auto;}",
195+
".r-pointerEvents-12vffkv{pointer-events:none!important;}",
196+
],
197+
3,
198+
],
199+
],
200+
]
201+
`);
202+
});
179203
});
180204

181205
describe('classic', () => {

packages/react-native-web/src/exports/StyleSheet/compiler/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -391,7 +391,7 @@ function createAtomicRules(identifier: string, property, value): Rules {
391391
finalValue = 'none!important';
392392
if (value === 'box-none') {
393393
const block = createDeclarationBlock({ pointerEvents: 'auto' });
394-
rules.push(`${selector}>*${block}`);
394+
rules.push(`${selector} * ${block}`);
395395
}
396396
}
397397
const block = createDeclarationBlock({ pointerEvents: finalValue });

0 commit comments

Comments
 (0)