Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Transition should sniff for Teleport #5836

Open
Fuzzyma opened this issue Apr 30, 2022 · 11 comments · Fixed by #6548
Open

Transition should sniff for Teleport #5836

Fuzzyma opened this issue Apr 30, 2022 · 11 comments · Fixed by #6548
Assignees
Labels
🍰 p2-nice-to-have Priority 2: this is not breaking anything but nice to have it addressed. has PR A pull request has already been submitted to solve the issue scope: teleport scope: transition ✨ feature request New feature or request

Comments

@Fuzzyma
Copy link

Fuzzyma commented Apr 30, 2022

What problem does this feature solve?

Currently, it's not possible to wrap a teleport by a transition because Component inside <Transition> renders non-element root node that cannot be animated.

While I agree that transition shouldn't start trying to find the first actual element it can apply classes to in custom components, I think that there should be an exception for Teleport.

It's not an uncommon use case that you want to teleport some popover or modal to the body and want to add a transition when it appears or gets removed. I am aware that you can always transition the contents of the stuff you are teleporting but that is less flexible and composable. e.g. a reusable component that always ports itself to the body currently can't be wrapped by a custom transition.

Both components are part of the core library and also don't work as normal components do. So I think it shouldn't be a problem if the transition component sniffs if its child is a teleport and applies the transition to the teleported element instead. Ofc that would require that the teleport only consists of a single root but that is a given (the error message already makes that clear and could be changed for the teleport case: SyntaxError: <Transition> expects exactly one child element or component.)

What does the proposed API look like?

<transition>
  <teleport to="body">
    <div>Whatever</div>
  </teleport>
</transition>
@RoosDev
Copy link

RoosDev commented Aug 17, 2022

Yes I'm agree with you.
I would like to animate a component (like a modal) but inside the component I use a teleport ... so the transition doesn t work.

For me it look's like :

<transition> <ModalWindow> </transition>

and in the component ModalWindow :
<Template> <teleport to=".myWonderfullDiv"> <div>Whatever</div> </teleport> </template>

@klausXR
Copy link

klausXR commented Aug 23, 2022

I'm also interested in this

@edison1105
Copy link
Member

I made a PR. feel free to review.
playground

@edison1105 edison1105 self-assigned this Aug 26, 2022
@sodatea sodatea added scope: teleport has PR A pull request has already been submitted to solve the issue 🍰 p2-nice-to-have Priority 2: this is not breaking anything but nice to have it addressed. labels Mar 16, 2023
@zyxkad
Copy link

zyxkad commented Mar 24, 2023

Hello, could teleport support TransitionGroup? Now I'm doing this, but the animation didn't work

<div class="pinned">
  <TransitionGroup id="id" name="animation-class">
  <TransitionGroup/>
</div>
<div>
  <Teleport :disabled="!shouldPin" v-if="shouldShow"></Teleport>
</div>

@MarkSky
Copy link

MarkSky commented Jul 7, 2023

I made a PR. feel free to review. playground

I just create a project just like yours: Teleport-in-Transition
The had running, but the didn't run.
If I miss anything?

@edison1105
Copy link
Member

@MarkSky The PR is not merged.

@MarkSky
Copy link

MarkSky commented Jul 7, 2023

@MarkSky The PR is not merged.

I know.
I just create a project and use your playground code.
but the is not work in my project.

@edison1105
Copy link
Member

@MarkSky
the version of vue in my playground is based on the PR.

@MarkSky
Copy link

MarkSky commented Jul 7, 2023

@MarkSky the version of vue in my playground is based on the PR.

I understand now, thank you.

@Andreashoj
Copy link

Was there a reason this PR was never merged ?

@vhovorun
Copy link

Still waiting when it'll be released

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🍰 p2-nice-to-have Priority 2: this is not breaking anything but nice to have it addressed. has PR A pull request has already been submitted to solve the issue scope: teleport scope: transition ✨ feature request New feature or request
Projects
None yet
Development

Successfully merging a pull request may close this issue.

9 participants