Skip to content

Commit 5c40fa0

Browse files
committed
feat: allow for svelte:options css injected
1 parent e417d3a commit 5c40fa0

File tree

14 files changed

+82
-0
lines changed

14 files changed

+82
-0
lines changed

.changeset/eight-comics-tell.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+
feat: allow for `svelte:options` css injected

packages/svelte/src/compiler/phases/1-parse/read/options.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,17 @@ export default function read_options(node) {
175175

176176
break;
177177
}
178+
case 'css': {
179+
const value = get_static_value(attribute);
180+
181+
if (value === 'injected' || value === 'external') {
182+
component_options.css = value;
183+
} else {
184+
e.svelte_options_invalid_attribute_value(attribute, `"injected", "external"`);
185+
}
186+
187+
break;
188+
}
178189
case 'immutable': {
179190
component_options.immutable = get_boolean_value(attribute);
180191
break;

packages/svelte/src/compiler/types/template.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ export interface SvelteOptions {
7575
accessors?: boolean;
7676
preserveWhitespace?: boolean;
7777
namespace?: Namespace;
78+
css?: 'injected' | 'external';
7879
customElement?: {
7980
tag: string;
8081
shadow?: 'open' | 'none';
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<svelte:options css="injected" />
2+
3+
<div class="foo">foo</div>
4+
5+
<style>
6+
.foo {
7+
color: red;
8+
}
9+
</style>
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { test } from '../../test';
2+
3+
export default test({
4+
compileOptions: {
5+
css: 'external'
6+
}
7+
});
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
2+
.foo.svelte-sg04hs {
3+
color: red;
4+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<!--[--><div class="foo svelte-sg04hs">foo</div><!----> <div class="foo svelte-sg04hs">foo</div><!--]-->
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<style id="svelte-sg04hs">
2+
.foo.svelte-sg04hs {
3+
color: red;
4+
}
5+
</style>
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<script lang="ts">
2+
import Nested from './Nested.svelte';
3+
</script>
4+
5+
<Nested />
6+
7+
<div class="foo">foo</div>
8+
9+
<style>
10+
.foo {
11+
color: red;
12+
}
13+
</style>
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { test } from '../../test';
2+
3+
export default test({
4+
compileOptions: {
5+
css: 'external'
6+
}
7+
});
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
2+
.foo.svelte-sg04hs {
3+
color: red;
4+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<div class="foo svelte-sg04hs">foo</div>
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<style id="svelte-sg04hs">
2+
.foo.svelte-sg04hs {
3+
color: red;
4+
}
5+
</style>
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<svelte:options css="injected" />
2+
3+
<div class="foo">foo</div>
4+
5+
<style>
6+
.foo {
7+
color: red;
8+
}
9+
</style>

0 commit comments

Comments
 (0)