Skip to content

Commit

Permalink
fix: apply transition_in/out to svelte:element with local transition (#…
Browse files Browse the repository at this point in the history
…8865)

fixes #8233
  • Loading branch information
hackape authored Jun 28, 2023
1 parent 1c7ed55 commit 876f894
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 4 deletions.
5 changes: 5 additions & 0 deletions .changeset/neat-feet-accept.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'svelte': patch
---

fix: apply transition to `<svelte:element>` with local transition
Original file line number Diff line number Diff line change
Expand Up @@ -233,6 +233,14 @@ export default class ElementWrapper extends Wrapper {
strip_whitespace,
next_sibling
);

// in the case of `parent_block -> child_dynamic_element_block -> child_dynamic_element`
// `child_dynamic_element_block.add_intro/outro` is called inside `new ElementWrapper()`
// but when `is_local === true` it does not bubble to parent_block
// we manually add transitions back to the parent_block (#8233)
if (node.intro) block.add_intro(node.intro.is_local);
if (node.outro) block.add_outro(node.outro.is_local);

// the original svelte:element is never used for rendering, because
// it gets assigned a child_dynamic_element which is used in all rendering logic.
// so doing all of this on the original svelte:element will just cause double
Expand Down Expand Up @@ -266,10 +274,10 @@ export default class ElementWrapper extends Wrapper {
this.event_handlers = this.node.handlers.map(
(event_handler) => new EventHandler(event_handler, this)
);
if (node.intro || node.outro) {
if (node.intro) block.add_intro(node.intro.is_local);
if (node.outro) block.add_outro(node.outro.is_local);
}

if (node.intro) block.add_intro(node.intro.is_local);
if (node.outro) block.add_outro(node.outro.is_local);

if (node.animation) {
block.add_animation();
}
Expand Down

0 comments on commit 876f894

Please sign in to comment.