Props
| Name | Type | Default | Description |
|---|---|---|---|
append:icon | string | undefined | - | Icon to be added on the right of the text. |
block | boolean | undefined | false | Displays the component as full width. The extra width goes to the main button; the toggle keeps its own. Useful in a narrow column, not as a way to make the two halves match. See example |
disableAutoLoading | boolean | undefined | false | Disables the automatic loading state that tracks async actions (enabled by default). Only affects the main action button: the split toggle half still mirrors the dropdown's internal async-action loading state. Opts the main button out of tracking its own async |
disabled | boolean | undefined | false | Disables the component Freezes both halves at once. v2 |
eager | boolean | undefined | false | Prevents rendering content before it's made visible. |
id | string | undefined | - | The identifier of the component. |
itemsrequired | Item[] | [] | Array used to render each dropdown button.
They can act as BbDropdown’s item model, with one rule of its own: |
loading | boolean | undefined | false | Triggers a loading indicator. Drives the main button by hand, for work the component cannot see. It does not touch the toggle. See example |
offset | number | undefined | 3 | Space the floating container will maintain from the activator. |
padding | number | undefined | 10 | Minimum empty space to keep from the edge of the page |
placement | Placement | "cursor" | undefined | 'bottom' | Position of the dropdown relative to the activator.
Use Resolved against the whole split control, not the toggle that opened the menu — so the default |
prepend:icon | string | undefined | - | Icon to be added on the left of the text. Dresses the main button, because |
pt | BbDropdownButtonPtMap | undefined | - | Passthrough, object form: the same keys as the |
pt:icon | PtValue | undefined | - | |
pt:icon:disabled | PtValue | undefined | - | |
pt:icon:loading | PtValue | undefined | - | |
pt:icon:open | PtValue | undefined | - | |
pt:item | PtValue | ((ctx: PtItemCtx<InternalItem, BbDropdownButtonPtState>) => PtItemResult) | undefined | - | |
pt:item-description | PtValue | ((ctx: PtItemCtx<InternalItem, BbDropdownButtonPtState>) => PtItemResult) | undefined | - | |
pt:item-description:disabled | PtValue | undefined | - | |
pt:item-description:loading | PtValue | undefined | - | |
pt:item-description:open | PtValue | undefined | - | |
pt:item-description:selected | PtValue | undefined | - | |
pt:item-icon | PtValue | ((ctx: PtItemCtx<InternalItem, BbDropdownButtonPtState>) => PtItemResult) | undefined | - | |
pt:item-icon:disabled | PtValue | undefined | - | |
pt:item-icon:loading | PtValue | undefined | - | |
pt:item-icon:open | PtValue | undefined | - | |
pt:item-icon:selected | PtValue | undefined | - | |
pt:item-text | PtValue | ((ctx: PtItemCtx<InternalItem, BbDropdownButtonPtState>) => PtItemResult) | undefined | - | |
pt:item-text:disabled | PtValue | undefined | - | |
pt:item-text:loading | PtValue | undefined | - | |
pt:item-text:open | PtValue | undefined | - | |
pt:item-text:selected | PtValue | undefined | - | |
pt:item:disabled | PtValue | undefined | - | |
pt:item:loading | PtValue | undefined | - | |
pt:item:open | PtValue | undefined | - | |
pt:item:selected | PtValue | undefined | - | |
pt:panel | PtValue | undefined | - | |
pt:panel:disabled | PtValue | undefined | - | |
pt:panel:loading | PtValue | undefined | - | |
pt:panel:open | PtValue | undefined | - | |
pt:root | PtValue | undefined | - | |
pt:root:disabled | PtValue | undefined | - | |
pt:root:loading | PtValue | undefined | - | |
pt:root:open | PtValue | undefined | - | |
pt:sheet | PtValue | undefined | - | |
pt:sheet:disabled | PtValue | undefined | - | |
pt:sheet:loading | PtValue | undefined | - | |
pt:sheet:open | PtValue | undefined | - | |
pt:spinner | PtValue | undefined | - | |
pt:spinner:disabled | PtValue | undefined | - | |
pt:spinner:loading | PtValue | undefined | - | |
pt:spinner:open | PtValue | undefined | - | |
pt:text | PtValue | undefined | - | |
pt:text:disabled | PtValue | undefined | - | |
pt:text:loading | PtValue | undefined | - | |
pt:text:open | PtValue | undefined | - | |
right:icon | string | undefined | - | Replaces the chevron shown inside the right-side dropdown toggle button.
A constrained alternative to a slot: only the toggle's icon changes, so
the button keeps its semantics. Named for consistency with
Swaps the toggle’s chevron and nothing else — an overflow "…" for a dense row. Deliberately a prop rather than a slot: there is no |
size | Responsive<Sizes> | undefined | "md" | Sets the size of the button. When the value is a string, it will be applied to all screen sizes. Otherwise, it will be applied to the screen size specified by the object. Shared by both halves, and takes the responsive map form ( |
transitionDuration | number | undefined | 150 | How long the transition has to last in milliseconds. Menus use the fast transition rather than the medium one the other popovers default to. |
variant | ButtonVariantType | undefined | "primary" | Visual variant shared by both buttons of the split control. Shared by both halves, from BbButton’s ladder — a name registered through |
width | string | number | undefined | 'auto' | Width of the dropdown in pixels, percentage, or 'auto' to fit content. A percentage resolves against the split control’s width, still floored at the menu’s 128px minimum. |
Events
| Name | Type | Description |
|---|---|---|
hidden | (event: "hidden"): void | |
hide | (event: "hide"): void | |
show | (event: "show"): void | |
shown | (event: "shown"): void |
Slots
The listed properties are the ones exposed to the slot scope.
| Name | Type | Description |
|---|---|---|
<groupKey> | BbDropdownItemSlotProps | That group's title line (the group is passed as |
<groupKey>:append | BbDropdownItemSlotProps | The trailing region of that group's title line. |
<groupKey>:item | BbDropdownItemSlotProps | The content of every row of that group, and no other; a row's own |
<groupKey>:item:append | BbDropdownItemSlotProps | The trailing region of every row of that group; replaces their |
<groupKey>:item:prepend | BbDropdownItemSlotProps | The leading region of every row of that group — e.g. an avatar per record, drawn from |
<groupKey>:prepend | BbDropdownItemSlotProps | The leading region of that group's title line. |
<key> | BbDropdownItemSlotProps | One row's content (text and description), by its key; in a fetched group, by its resolved |
<key>:append | BbDropdownItemSlotProps | One row's trailing region; replaces its |
<key>:prepend | BbDropdownItemSlotProps | One row's leading region; replaces its |
default | any | Companion content forwarded into the dropdown (e.g. |
footer | BbDropdownButtonEdgeSlotProps | Content pinned to the bottom of the dropdown panel, outside the scroll area. See example |
header | BbDropdownButtonEdgeSlotProps | Content pinned to the top of the dropdown panel, outside the scroll area. Forwarded into the inner dropdown unchanged, along with |
item:append | BbDropdownButtonItemSlotProps | The trailing region of every menu row, replacing its |
item:prepend | BbDropdownButtonItemSlotProps | The leading region of every menu row, replacing its Replaces every menu row’s |
loading | BbDropdownPlaceholderSlotProps | Replaces the default loading placeholder row shown in a pipeline group
while its async items load. Rendered once per loading group. Forwarded to
the underlying |
no-data | BbDropdownPlaceholderSlotProps | Replaces the default "no data" placeholder row shown in a pipeline group
that resolved to no items. Rendered once per empty group. Forwarded to the
underlying |
Changes from v2
Props removed or renamed in 3.0. If you are coming from v2, the answer is here.
arrowPaddingremovedfails silentlyautoLoadingdisableAutoLoadingfails silentlythemevariantfails silently