diff --git a/package-lock.json b/package-lock.json index 9ee0b53af6..f2cd6b5abb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "svelte", - "version": "3.17.0", + "version": "3.17.1", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/src/runtime/internal/transitions.ts b/src/runtime/internal/transitions.ts index ed23d3c1dd..14f2f1faa4 100644 --- a/src/runtime/internal/transitions.ts +++ b/src/runtime/internal/transitions.ts @@ -207,6 +207,12 @@ export function create_out_transition(node: Element & ElementCSSInlineStyle, fn: config = config(); go(); }); + } else if (config && config.then) { + add_render_callback(() => dispatch(node, false, 'start')); + config.then(() => { + dispatch(node, false, 'end'); + if (!--group.r) run_all(group.c); + }); } else { go(); } diff --git a/src/runtime/transition/index.ts b/src/runtime/transition/index.ts index 0a20c81b1f..1b5ef71376 100644 --- a/src/runtime/transition/index.ts +++ b/src/runtime/transition/index.ts @@ -4,6 +4,7 @@ import { assign, is_function } from 'svelte/internal'; type EasingFunction = (t: number) => number; export interface TransitionConfig { + then?: Promise['then']; delay?: number; duration?: number; easing?: EasingFunction;