Open linden-dg opened 2 months ago
I believe this is related to this breaking change in chromium, which was the result of this change in the CSS specification. The change also broke I think every floating radix-ui element inside a container
without using Portal
.
I am not sure if the radix-ui team can do anything to fix this (because the change broke the usage, not the library), but you can try adding position: relative
or contain: layout
to your container
element as mentioned in the linked comment. (Edit: using contain: layout
or contain-layout
in tailwind fixed it in our app.)
Using Portal
works, because it "moves out" the tooltip element from inside of the container
and by default attaches it to the body
.
This didn't work on my side, but moving the Content inside a Portal did.
but you can try adding
position: relative
orcontain: layout
to yourcontainer
element as mentioned in the linked comment.
moving inside a portal also works for me!
Works for me
<CardHeader
className='flex flex-row items-center gap-2 flex-wrap @container/header space-y-0'
style={{ contain: 'layout' }} <-----
>
<TooltipProvider>
<Tooltip>
<TooltipTrigger asChild>
<Button variant='outline'>Hover</Button>
</TooltipTrigger>
<TooltipContent>
<p>Add to library</p>
</TooltipContent>
</Tooltip>
</TooltipProvider>
</CardHeader>
Bug report
Current Behavior
When a Tooltip (i.e. Root, Trigger, and Content) is placed inside a div with the CSS
container-type: inline-size
then the Tooltip Content isn't properly positioned (it's positioned way off to the side).However if the Tooltip Content is placed inside a Tooltip Portal, then it is properly positioned adjacent to the Trigger.
Expected behavior
The Tooltip Content should always appear adjacent to the Trigger
Reproducible example
Example on StackBlitz
Suggested solution
Either have the Content positioning work with container queries regardless of whether the Tooltip Portal is used, or make it clear in the documentation that the Portal is required when nesting inside CSS container queries.
Additional context
Your environment