Props
| Name | Type | Default | Description |
|---|---|---|---|
activator | ElementOrComponentRef | undefined | - | External activator element or component ref. When provided, the activator slot is not rendered and click events are attached programmatically to the referenced element. For a trigger that already exists elsewhere — a toolbar button, a table cell. The listeners and the ARIA are attached to that element directly, so there is nothing to spread and the |
adaptive | boolean | undefined | `config.adaptive` (`true`) | On mobile viewports (below Three-state on purpose: unset falls back to the plugin config ( |
boundary | ElementOrComponentRefOrSelector | undefined | - | Constrains the popover within a bounding element. When provided, the popover will not overflow this container's bounds (e.g. a sidebar). Accepts an HTMLElement, a Vue component ref, or a CSS selector string. Keeps the flip and shift maths inside a container instead of the viewport — a sidebar, a scrolling card. Reach for it when the panel escapes a region it should stay inside, not as a default. See example |
disabled | boolean | undefined | false | Disables the component. Suppresses opening and marks the slot activator disabled. It does not close a panel that is already open — write |
eager | boolean | undefined | false | Prevents rendering content before it's made visible. The body is lazy: it renders on first open, so a query against the panel before then finds nothing. Turn this on to pre-measure a chart or to let a test read the panel while it is closed. |
focusTarget | string | undefined | - | Selector for the element that receives focus after opening. Defaults to the first focusable element inside the popover. A CSS selector resolved inside the panel. Worth setting when the first focusable element is not the one the reader came for — a header Reset button ahead of the body search field. See example |
id | string | undefined | - | The identifier of the component. |
modelValue | boolean | undefined | false | Used by v-model to open / close the popover. A popover with no |
offCanvasProps | Partial<BbOffCanvasProps> | undefined | - | Props for the phone sheet. A The properties are |
offset | number | undefined | 3 | Space the floating container will maintain from the activator. See example |
padding | number | undefined | 10 | Minimum empty space to keep from the edge of the page. The gap from the edge of the page, not the panel's inner padding. That one is CSS on |
placement | Placement | "cursor" | undefined | "bottom" | Position of the popover relative to the activator.
Use A v3 popover never draws an arrow, so the only thing |
pt | PtMap<BbPopoverPtPart, "open"> | undefined | - | Passthrough, object form: the same keys as the |
pt:content | PtValue | undefined | - | |
pt:content:open | PtValue | undefined | - | |
pt:footer | PtValue | undefined | - | |
pt:footer:open | PtValue | undefined | - | |
pt:header | PtValue | undefined | - | |
pt:header:open | PtValue | undefined | - | |
pt:panel | PtValue | undefined | - | |
pt:panel:open | PtValue | undefined | - | |
pt:root | PtValue | undefined | - | |
pt:root:open | PtValue | undefined | - | |
pt:sheet | PtValue | undefined | - | |
pt:sheet:open | PtValue | undefined | - | |
scrollable | boolean | undefined | false | Caps the popover height to the available viewport space and enables internal scrolling. Useful for tall content like filter panels. Not recommended for atomic popovers (calendars, color pickers). Caps the panel at the space left for the resolved placement, after any flip. Right for a feed or a filter list; wrong for atomic content such as a calendar or a colour picker. See example |
transitionDuration | number | undefined | 250 | How long the transition has to last in milliseconds. |
trigger | PopoverTrigger | PopoverTrigger[] | undefined | "click" | Interaction(s) that open the popover.
Accepts a single trigger or an array to combine them.
-
|
width | string | number | undefined | - | Width of the popover. Accepts pixels or percentage (relative to activator width). Pixels, or a percentage of the trigger's width — only the percentage form re-measures when the trigger resizes. Ignored entirely by the adaptive mobile sheet. See example |
v-model
Values kept in sync through v-model.
| Name | Type | Description |
|---|---|---|
modelValue | boolean | undefined | The replacement for the template-ref |
Events
| Name | Type | Description |
|---|---|---|
hidden | (event: "hidden"): void | Fires after the panel has closed and focus is back on the trigger. See example |
hide | (event: "hide"): void | |
show | (event: "show"): void | |
shown | (event: "shown"): void | Fires after the panel is open and focus has moved inside — the safe point for anything that assumes focus has settled. See example |
update:modelValue | (event: "update:modelValue", value: boolean): void |
Slots
The listed properties are the ones exposed to the slot scope.
| Name | Type | Description |
|---|---|---|
activator | BbPopoverActivatorSlotProps | The element that triggers the popover to open. Spread Spread |
default | BbPopoverDefaultSlotProps | The popover body content rendered inside the floating panel. The scope carries |
footer | BbPopoverDefaultSlotProps | Content pinned to the bottom of the panel, outside the scroll region.
Stays visible while the body scrolls (when |
header | BbPopoverDefaultSlotProps | Content pinned to the top of the panel, outside the scroll region.
Stays visible while the body scrolls (when |
Changes from v2
Props removed or renamed in 3.0. If you are coming from v2, the answer is here.
arrowPaddingremovedfails silentlyblockremovedfails silentlycloseLabelremovedfails silentlyhideArrowremovedfails silentlyoffcanvasPropsoffCanvasPropsfails silentlyrestoreFocusremovedfails silentlyshowArrowremovedfails silentlyshowCloseremovedfails silentlythemeremovedfails silently