mirror of https://github.com/sveltejs/svelte
Abort outro if block is recreated — fixes #1425
parent
e1db82773d
commit
e8a780676d
@ -0,0 +1,39 @@
|
||||
export default {
|
||||
data: {
|
||||
things: [
|
||||
'one',
|
||||
'two',
|
||||
'three'
|
||||
]
|
||||
},
|
||||
|
||||
test(assert, component, target, window, raf) {
|
||||
const { things } = component.get();
|
||||
|
||||
component.set({ things: [] });
|
||||
const spans = target.querySelectorAll('span');
|
||||
|
||||
raf.tick(25);
|
||||
assert.equal(spans[0].foo, 0.75);
|
||||
assert.equal(spans[1].foo, undefined);
|
||||
assert.equal(spans[2].foo, undefined);
|
||||
|
||||
raf.tick(125);
|
||||
assert.equal(spans[0].foo, 0);
|
||||
assert.equal(spans[1].foo, 0.25);
|
||||
assert.equal(spans[2].foo, 0.75);
|
||||
|
||||
component.set({ things });
|
||||
raf.tick(225);
|
||||
|
||||
assert.htmlEqual(target.innerHTML, `
|
||||
<span>one</span>
|
||||
<span>two</span>
|
||||
<span>three</span>
|
||||
`);
|
||||
|
||||
assert.equal(spans[0].foo, 1);
|
||||
assert.equal(spans[1].foo, 1);
|
||||
assert.equal(spans[2].foo, 1);
|
||||
},
|
||||
};
|
@ -0,0 +1,19 @@
|
||||
{#each things as thing, i}
|
||||
<span out:foo="{delay: i * 50}">{thing}</span>
|
||||
{/each}
|
||||
|
||||
<script>
|
||||
export default {
|
||||
transitions: {
|
||||
foo(node, params) {
|
||||
return {
|
||||
delay: params.delay,
|
||||
duration: 100,
|
||||
tick: t => {
|
||||
node.foo = t;
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
@ -0,0 +1,24 @@
|
||||
export default {
|
||||
data: {
|
||||
visible: true,
|
||||
},
|
||||
|
||||
test(assert, component, target, window, raf) {
|
||||
component.set({ visible: false });
|
||||
const span = target.querySelector('span');
|
||||
|
||||
raf.tick(50);
|
||||
assert.equal(span.foo, 0.5);
|
||||
|
||||
component.set({ visible: true });
|
||||
assert.equal(span.foo, 1);
|
||||
|
||||
raf.tick(75);
|
||||
assert.equal(span.foo, 1);
|
||||
|
||||
raf.tick(100);
|
||||
assert.htmlEqual(target.innerHTML, `
|
||||
<span>hello</span>
|
||||
`);
|
||||
},
|
||||
};
|
@ -0,0 +1,18 @@
|
||||
{#if visible}
|
||||
<span out:foo>hello</span>
|
||||
{/if}
|
||||
|
||||
<script>
|
||||
export default {
|
||||
transitions: {
|
||||
foo(node, params) {
|
||||
return {
|
||||
duration: 100,
|
||||
tick: t => {
|
||||
node.foo = t;
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
Loading…
Reference in new issue