diff --git a/src/internal/transitions.js b/src/internal/transitions.js index 1ba1c0ff0c..a6579b0cef 100644 --- a/src/internal/transitions.js +++ b/src/internal/transitions.js @@ -164,8 +164,10 @@ export function create_out_transition(node, fn, params) { } if (typeof config === 'function') { - config = config(); - wait().then(go); + wait().then(() => { + config = config(); + go(); + }); } else { go(); } diff --git a/test/runtime/samples/transition-js-deferred-b/_config.js b/test/runtime/samples/transition-js-deferred-b/_config.js new file mode 100644 index 0000000000..05929964cd --- /dev/null +++ b/test/runtime/samples/transition-js-deferred-b/_config.js @@ -0,0 +1,13 @@ +export default { + test({ assert, component, target, raf }) { + component.visible = true; + + return Promise.resolve().then(() => { + const div = target.querySelector('.foo'); + assert.equal(div.foo, 0); + + raf.tick(50); + assert.equal(div.foo, 0.5); + }); + }, +}; diff --git a/test/runtime/samples/transition-js-deferred-b/main.svelte b/test/runtime/samples/transition-js-deferred-b/main.svelte new file mode 100644 index 0000000000..2cd1dc3e7c --- /dev/null +++ b/test/runtime/samples/transition-js-deferred-b/main.svelte @@ -0,0 +1,46 @@ + + +{#if visible} +
a
+{:else} +
b
+{/if} \ No newline at end of file diff --git a/test/runtime/samples/transition-js-deferred/_config.js b/test/runtime/samples/transition-js-deferred/_config.js index 5569795371..9d6833d2f4 100644 --- a/test/runtime/samples/transition-js-deferred/_config.js +++ b/test/runtime/samples/transition-js-deferred/_config.js @@ -1,5 +1,5 @@ export default { - test({ assert, component, target, window, raf }) { + test({ assert, component, target, raf }) { component.visible = true; return Promise.resolve().then(() => { diff --git a/test/runtime/samples/transition-js-deferred/main.svelte b/test/runtime/samples/transition-js-deferred/main.svelte index 32e68a46f3..063773df39 100644 --- a/test/runtime/samples/transition-js-deferred/main.svelte +++ b/test/runtime/samples/transition-js-deferred/main.svelte @@ -1,8 +1,34 @@ {#if visible} -
+
a
+{:else} +
b
{/if} \ No newline at end of file