Skip to content

Commit ee9d5ef

Browse files
fix: allow global next to & for nesting (#11784)
Fixes #11782
1 parent b963e53 commit ee9d5ef

File tree

6 files changed

+42
-7
lines changed

6 files changed

+42
-7
lines changed

.changeset/selfish-panthers-add.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"svelte": patch
3+
---
4+
5+
fix: allow global next to `&` for nesting

packages/svelte/src/compiler/phases/3-transform/css/index.js

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -238,6 +238,13 @@ const visitors = {
238238
}
239239
}
240240

241+
// for any :global() at the middle of compound selector
242+
for (const selector of relative_selector.selectors) {
243+
if (selector.type === 'PseudoClassSelector' && selector.name === 'global') {
244+
remove_global_pseudo_class(selector);
245+
}
246+
}
247+
241248
if (relative_selector.selectors.some((s) => s.type === 'NestingSelector')) {
242249
continue;
243250
}
@@ -250,13 +257,6 @@ const visitors = {
250257

251258
context.state.specificity.bumped = true;
252259

253-
// for any :global() at the middle of compound selector
254-
for (const selector of relative_selector.selectors) {
255-
if (selector.type === 'PseudoClassSelector' && selector.name === 'global') {
256-
remove_global_pseudo_class(selector);
257-
}
258-
}
259-
260260
let i = relative_selector.selectors.length;
261261
while (i--) {
262262
const selector = relative_selector.selectors[i];
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import { test } from '../../test';
2+
3+
export default test({
4+
warnings: []
5+
});
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
div.svelte-xyz {
2+
&.class{
3+
color: red;
4+
}
5+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<div class="svelte-xyz">
2+
</div>
3+
4+
<div class="class svelte-xyz">
5+
foo
6+
</div>
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<style>
2+
div {
3+
&:global(.class){
4+
color: red;
5+
}
6+
}
7+
</style>
8+
9+
<div>
10+
</div>
11+
12+
<div class="class">
13+
foo
14+
</div>

0 commit comments

Comments
 (0)