mirror of https://github.com/sveltejs/svelte
fix: treat slots as if they don't exist when using CSS adjacent and general sibling combinators (#8422)
Fixes #8284. The problem is that the <slot> element is treated as an actual element, and for this purpose, we have to treat them as if they don't exist. More specifically, we treat all slot fallback children nodes on the same level as the slot's non-slot siblings.pull/8566/head
parent
19e163f59d
commit
c0363966d3
@ -0,0 +1 @@
|
||||
h1.svelte-xyz~p.svelte-xyz{color:red}
|
@ -0,0 +1,12 @@
|
||||
<slot>
|
||||
<h1>Heading 1</h1>
|
||||
</slot>
|
||||
<span>Span 1</span>
|
||||
<span>Span 2</span>
|
||||
<p>Paragraph 2</p>
|
||||
|
||||
<style>
|
||||
h1 ~ p {
|
||||
color: red;
|
||||
}
|
||||
</style>
|
@ -0,0 +1 @@
|
||||
h1.svelte-xyz~p.svelte-xyz{color:red}
|
@ -0,0 +1,7 @@
|
||||
<slot><slot><h1>Heading 1</h1></slot></slot><span>Span 1</span><span>Span 2</span><slot><slot><p>Paragraph 2</p></slot></slot>
|
||||
|
||||
<style>
|
||||
h1 ~ p {
|
||||
color: red;
|
||||
}
|
||||
</style>
|
@ -0,0 +1 @@
|
||||
h1.svelte-xyz~p.svelte-xyz{color:red}
|
@ -0,0 +1,18 @@
|
||||
<slot>
|
||||
<slot>
|
||||
<h1>Heading 1</h1>
|
||||
</slot>
|
||||
</slot>
|
||||
<span>Span 1</span>
|
||||
<span>Span 2</span>
|
||||
<slot>
|
||||
<slot>
|
||||
<p>Paragraph 2</p>
|
||||
</slot>
|
||||
</slot>
|
||||
|
||||
<style>
|
||||
h1 ~ p {
|
||||
color: red;
|
||||
}
|
||||
</style>
|
@ -0,0 +1 @@
|
||||
h1.svelte-xyz~p.svelte-xyz{color:red}
|
@ -0,0 +1,12 @@
|
||||
<h1>Heading 1</h1>
|
||||
<span>Span 1</span>
|
||||
<span>Span 2</span>
|
||||
<slot>
|
||||
<p>Paragraph 2</p>
|
||||
</slot>
|
||||
|
||||
<style>
|
||||
h1 ~ p {
|
||||
color: red;
|
||||
}
|
||||
</style>
|
@ -0,0 +1 @@
|
||||
h1.svelte-xyz~span.svelte-xyz{color:green}h1.svelte-xyz~p.svelte-xyz{color:red}span.svelte-xyz~p.svelte-xyz{color:blue}
|
@ -0,0 +1,22 @@
|
||||
<h1>Heading 1</h1>
|
||||
<slot>
|
||||
<span>Span 1</span>
|
||||
</slot>
|
||||
<slot>
|
||||
<span>Span 2</span>
|
||||
</slot>
|
||||
<p>Paragraph 2</p>
|
||||
|
||||
<style>
|
||||
h1 ~ span {
|
||||
color: green;
|
||||
}
|
||||
|
||||
h1 ~ p {
|
||||
color: red;
|
||||
}
|
||||
|
||||
span ~ p {
|
||||
color: blue;
|
||||
}
|
||||
</style>
|
@ -0,0 +1 @@
|
||||
h1.svelte-xyz+span.svelte-xyz{color:red}
|
@ -0,0 +1,10 @@
|
||||
<slot>
|
||||
<h1>test</h1>
|
||||
</slot>
|
||||
<span>Hello</span>
|
||||
|
||||
<style>
|
||||
h1 + span {
|
||||
color: red;
|
||||
}
|
||||
</style>
|
@ -0,0 +1 @@
|
||||
h1.svelte-xyz+span.svelte-xyz{color:red}
|
@ -0,0 +1,7 @@
|
||||
<slot><slot><slot><h1>test</h1></slot></slot></slot><slot><slot><span>Hello</span></slot></slot>
|
||||
|
||||
<style>
|
||||
h1 + span {
|
||||
color: red;
|
||||
}
|
||||
</style>
|
@ -0,0 +1 @@
|
||||
h1.svelte-xyz+span.svelte-xyz{color:red}
|
@ -0,0 +1,18 @@
|
||||
<slot>
|
||||
<slot>
|
||||
<slot>
|
||||
<h1>test</h1>
|
||||
</slot>
|
||||
</slot>
|
||||
</slot>
|
||||
<slot>
|
||||
<slot>
|
||||
<span>Hello</span>
|
||||
</slot>
|
||||
</slot>
|
||||
|
||||
<style>
|
||||
h1 + span {
|
||||
color: red;
|
||||
}
|
||||
</style>
|
@ -0,0 +1 @@
|
||||
h1.svelte-xyz+span.svelte-xyz{color:red}
|
@ -0,0 +1,10 @@
|
||||
<h1>test</h1>
|
||||
<slot>
|
||||
<span>Hello</span>
|
||||
</slot>
|
||||
|
||||
<style>
|
||||
h1 + span {
|
||||
color: red;
|
||||
}
|
||||
</style>
|
@ -0,0 +1 @@
|
||||
h1.svelte-xyz+span.svelte-xyz{color:red}
|
@ -0,0 +1,11 @@
|
||||
<h1>test</h1>
|
||||
<slot name="a"></slot>
|
||||
<slot name="b"></slot>
|
||||
<slot name="c"></slot>
|
||||
<span>Hello</span>
|
||||
|
||||
<style>
|
||||
h1 + span {
|
||||
color: red;
|
||||
}
|
||||
</style>
|
@ -0,0 +1,3 @@
|
||||
export default {
|
||||
customElement: true
|
||||
};
|
@ -0,0 +1,20 @@
|
||||
<svelte:options tag="my-element" />
|
||||
|
||||
<h1>Heading 1</h1>
|
||||
<span>Span 1</span>
|
||||
<span>Span 2</span>
|
||||
<slot>
|
||||
<p>Paragraph 2</p>
|
||||
</slot>
|
||||
|
||||
<style>
|
||||
/* This will not get picked up */
|
||||
h1 ~ p {
|
||||
color: red;
|
||||
}
|
||||
|
||||
/* This will be picked up */
|
||||
h1 ~ slot > p {
|
||||
color: red;
|
||||
}
|
||||
</style>
|
@ -0,0 +1,14 @@
|
||||
[
|
||||
{
|
||||
"code": "css-unused-selector",
|
||||
"message": "Unused CSS selector \"h1 ~ p\"",
|
||||
"start": {
|
||||
"column": 1,
|
||||
"line": 12
|
||||
},
|
||||
"end": {
|
||||
"column": 7,
|
||||
"line": 12
|
||||
}
|
||||
}
|
||||
]
|
@ -0,0 +1,3 @@
|
||||
export default {
|
||||
customElement: true
|
||||
};
|
@ -0,0 +1,18 @@
|
||||
<svelte:options tag="custom-element" />
|
||||
|
||||
<h1>test</h1>
|
||||
<slot>
|
||||
<span>Hello</span>
|
||||
</slot>
|
||||
|
||||
<style>
|
||||
/* This will not be picked up */
|
||||
h1 + span {
|
||||
color: red;
|
||||
}
|
||||
|
||||
/* This will be picked up */
|
||||
h1 + slot > span {
|
||||
color: red;
|
||||
}
|
||||
</style>
|
@ -0,0 +1,14 @@
|
||||
[
|
||||
{
|
||||
"code": "css-unused-selector",
|
||||
"end": {
|
||||
"column": 11,
|
||||
"line": 10
|
||||
},
|
||||
"message": "Unused CSS selector \"h1 + span\"",
|
||||
"start": {
|
||||
"column": 2,
|
||||
"line": 10
|
||||
}
|
||||
}
|
||||
]
|
Loading…
Reference in new issue