Skip to content

Commit aee2c9c

Browse files
committed
dont detach <svelte:head> contents twice - fixes #2086
1 parent 9883a50 commit aee2c9c

File tree

6 files changed

+38
-3
lines changed

6 files changed

+38
-3
lines changed

src/compiler/compile/render_dom/wrappers/Element/index.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -272,7 +272,7 @@ export default class ElementWrapper extends Wrapper {
272272
);
273273

274274
if (parent_node === '@_document.head') {
275-
block.builders.destroy.add_line(`@detach(${node});`);
275+
block.builders.destroy.add_conditional('detaching', `@detach(${node});`);
276276
}
277277
} else {
278278
block.builders.mount.add_line(`@insert(#target, ${node}, anchor);`);

test/js/samples/head-no-whitespace/expected.js

+4-2
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,10 @@ function create_fragment(ctx) {
3333
o: noop,
3434

3535
d(detaching) {
36-
detach(meta0);
37-
detach(meta1);
36+
if (detaching) {
37+
detach(meta0);
38+
detach(meta1);
39+
}
3840
}
3941
};
4042
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<svelte:head>
2+
<meta name="description" content="A"/>
3+
</svelte:head>
4+
5+
A
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<svelte:head>
2+
<meta name="description" content="B"/>
3+
</svelte:head>
4+
5+
B
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
export default {
2+
html: `
3+
A
4+
`,
5+
6+
test({ assert, component, window }) {
7+
component.x = false;
8+
9+
const meta = window.document.querySelectorAll('meta');
10+
11+
assert.equal(meta.length, 1);
12+
assert.equal(meta[0].name, 'description');
13+
assert.equal(meta[0].content, 'B');
14+
}
15+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<script>
2+
import A from './A.svelte';
3+
import B from './B.svelte';
4+
5+
export let x = true;
6+
</script>
7+
8+
<svelte:component this="{x ? A : B}"/>

0 commit comments

Comments
 (0)