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