Skip to content

Commit

Permalink
Merge pull request #704 from sveltejs/gh-700
Browse files Browse the repository at this point in the history
use anchor comments to preserve order in keyed each blocks with components
  • Loading branch information
Rich-Harris authored Jul 10, 2017
2 parents b2dd6e3 + 007aee1 commit 6a9e1d5
Show file tree
Hide file tree
Showing 4 changed files with 39 additions and 1 deletion.
2 changes: 1 addition & 1 deletion src/generators/dom/visitors/EachBlock.ts
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ function keyed(
block.addVariable(head);
block.addVariable(last);

if (node.children[0] && node.children[0].type === 'Element') {
if (node.children[0] && node.children[0].type === 'Element' && !generator.components.has(node.children[0].name)) {
// TODO or text/tag/raw
node._block.first = node.children[0]._state.parentNode; // TODO this is highly confusing
} else {
Expand Down
1 change: 1 addition & 0 deletions test/runtime/samples/each-block-keyed-unshift/Nested.html
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<p>{{title}}</p>
24 changes: 24 additions & 0 deletions test/runtime/samples/each-block-keyed-unshift/_config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
export default {
data: {
titles: [{ name: 'b' }, { name: 'c' }]
},

html: `
<p>b</p>
<p>c</p>
`,

test (assert, component, target) {
component.set({
titles: [{ name: 'a' }, { name: 'b' }, { name: 'c' }]
});

assert.htmlEqual(target.innerHTML, `
<p>a</p>
<p>b</p>
<p>c</p>
`);

component.destroy();
}
};
13 changes: 13 additions & 0 deletions test/runtime/samples/each-block-keyed-unshift/main.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{{#each titles as title @name}}
<Nested title="{{title.name}}"/>
{{/each}}

<script>
import Nested from './Nested.html';

export default {
components: {
Nested
}
};
</script>

0 comments on commit 6a9e1d5

Please sign in to comment.