Popover
Also called pop-up, flyout, disclosure panel, inline panel
A layer anchored to a trigger, opened deliberately by click, that can contain interactive content.
Example
Columns shown: 2
TaskStatusAssignee
Fix login redirect——
Update pricing page——
Everything inside is focusable and the table stays visible while you change it — the two things a tooltip cannot offer.
When to use it
- A handful of controls belong to one specific element — a colour picker, a date picker, a set of filters for one column.
- Extra detail with an action attached: a definition plus a link, a summary plus a button.
- The content is genuinely optional and the user should be able to open it when they want it, not have it pushed at them.
- The panel needs to stay visually tied to its trigger, so a modal in the middle of the screen would break the connection.
When not to
- It is plain text with nothing to click. That is a tooltip, and a popover makes the user work for it.
- There is a lot of content or it needs scrolling. Use a drawer, or a page.
- The decision is blocking or destructive — a popover is too easy to dismiss by clicking away.
- You want it to open on hover. Hover-opened panels with buttons inside are a well-known trap: the pointer has to cross a gap to reach them and they vanish on the way.
- It would open from inside another popover. Anchored layers stacked on anchored layers lose their anchor.
Trade-offs
- Keeps context: the panel points at the thing it belongs to.
- Holds real controls, unlike a tooltip.
- Dismissing is cheap — click outside or press Escape — which suits optional content.
- Cheap dismissal cuts both ways: half-finished input can be lost with a stray click.
- Positioning near viewport edges is fiddly and needs a real positioning engine.
- On narrow screens it often ends up nearly full width, at which point a bottom sheet is the better shape.
Accessibility
What this pattern needs in order to work for everyone.
- Keyboard
- Opens with Enter or Space on the trigger, not on hover.
- Escape closes it and returns focus to the trigger.
- Tab moves through the content inside. Whether it wraps or falls through to the page is your choice — but be consistent, and never leave focus stranded.
- Roles and state
- Give the trigger `aria-expanded` so its state is announced, and `aria-controls` pointing at the panel.
- Use `role="dialog"` only if the popover is modal — with a focus trap and an inert background. Most popovers are not, and claiming otherwise misleads assistive tech.
- Label the panel with `aria-labelledby` when it has a heading.
- Focus
- Focus moves into the panel on open and returns to the trigger on close. That single behaviour is what makes a popover usable where a tooltip is not — and why anything clickable belongs here rather than there.
In the wild
- Linear — Assignee and label pickers open as popovers anchored to the field they change.
- Notion — The formatting menu is a popover tied to the selection, keeping the text in view while you work on it.
Compared with
Side-by-side breakdowns of patterns that solve a similar problem.