Fix bind:this switching transitioning elements

pull/8930/head
Robert Smith 3 years ago
parent bb5d3948ed
commit 2cddada6de

@ -84,6 +84,14 @@ export default function bind_this(component, block, binding, variable) {
});
}
`);
block.chunks.destroy.push(b`${callee}(null);`);
if (block.has_outro_method) {
block.chunks.outro.push(b`${callee}(null);` );
block.chunks.destroy.push(b`if(#current) {
${callee}(null);
}`);
}
else {
block.chunks.destroy.push(b`${callee}(null);`);
}
return b`${callee}(${variable});`;
}

@ -0,0 +1,13 @@
export default {
get props() {
return { show: 'a' };
},
test({ assert, component, target, raf }) {
assert.equal(component.el, target.querySelector('div.first'));
component.show = 'b';
raf.tick(200);
assert.equal(component.el, target.querySelector('div.second'));
}
};

@ -0,0 +1,16 @@
<script>
export let el;
export let show;
function foo(node) {
return {
duration: 100
};
}
</script>
{#if show=="a"}
<div class="first" bind:this={el} transition:foo>first</div>
{:else if show=="b"}
<div class="second" bind:this={el} transition:foo>second</div>
{/if}

@ -10,11 +10,11 @@ export default {
raf.tick(25);
assert.equal(component.yes.foo, undefined);
assert.equal(component.no.foo, 0.75);
assert.equal(component.no, null);
raf.tick(75);
assert.equal(component.yes.foo, undefined);
assert.equal(component.no.foo, 0.25);
assert.equal(component.no, null);
raf.tick(100);
}

@ -6,11 +6,11 @@ export default {
raf.tick(25);
assert.equal(component.yes.foo, undefined);
assert.equal(component.no.foo, 0.75);
assert.equal(component.no, null);
raf.tick(75);
assert.equal(component.yes.foo, undefined);
assert.equal(component.no.foo, 0.25);
assert.equal(component.no, null);
raf.tick(100);
}

@ -11,11 +11,11 @@ export default {
raf.tick(25);
assert.equal(component.yes.foo, undefined);
assert.equal(component.no.foo, 0.75);
assert.equal(component.no, null);
raf.tick(75);
assert.equal(component.yes.foo, undefined);
assert.equal(component.no.foo, 0.25);
assert.equal(component.no, null);
raf.tick(100);
}

Loading…
Cancel
Save