- Installation
- Usage
- Accessibility
- Examples
- Single button
- Split button
- Sizing
- Dark dropdowns
- Directions
- Menu items
- Active and disabled items
- Menu alignment
- Responsive alignment
- Alignment options
- Headers, dividers, and text
- Forms
- Dropdown options
- Auto close behavior
- API Reference
-
Dropdown -
Dropdown:Header -
Dropdown:Item -
Dropdown:Menu -
Dropdown:Text -
Dropdown:Toggle
Dropdown
Display contextual menus from buttons and links in any Bootstrap direction.
<div class="d-flex justify-content-center align-items-start align-self-stretch w-100">
<twig:Dropdown>
<twig:Dropdown:Toggle id="demo-dropdown">Dropdown button</twig:Dropdown:Toggle>
<twig:Dropdown:Menu labelledBy="demo-dropdown">
<twig:Dropdown:Item href="#">Action</twig:Dropdown:Item>
<twig:Dropdown:Item href="#">Another action</twig:Dropdown:Item>
<twig:Dropdown:Item href="#">Something else here</twig:Dropdown:Item>
</twig:Dropdown:Menu>
</twig:Dropdown>
</div>
Installation
php bin/console ux:install dropdown --kit bootstrap
Install the following Composer dependencies:
composer require twig/extra-bundle twig/html-extra:^3.12.0
Install the following front-end dependencies:
npm install bootstrap@^5.3.0
# ...or with Symfony AssetMapper
php bin/console importmap:require bootstrap bootstrap/dist/css/bootstrap.min.css
Copy the following file(s) into your app:
{# @prop direction 'down'|'center'|'up'|'up-center'|'end'|'start' The direction in which the menu opens. #}
{# @prop grouped boolean Whether to use a button group wrapper, as required by split toggles. #}
{# @block content The dropdown toggle and menu. #}
{%- props direction = 'down', grouped = false -%}
{%- set classes = html_classes({
dropdown: direction == 'down' and not grouped,
'btn-group': grouped or direction in ['up', 'end', 'start'],
'dropdown-center': direction == 'center',
dropup: direction == 'up',
'dropup-center dropup': direction == 'up-center',
dropend: direction == 'end',
dropstart: direction == 'start',
}) -%}
<div {{ attributes.defaults({class: classes}) }}>
{%- block content %}{% endblock -%}
</div>
<li><hr {{ attributes.defaults({class: 'dropdown-divider'}) }}></li>
{# @prop tag 'h1'|'h2'|'h3'|'h4'|'h5'|'h6' The heading element to render. #}
{# @block content The dropdown section heading. #}
{%- props tag = 'h6' -%}
{%- set final_tag = tag in ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'] ? tag : 'h6' -%}
<li><{{ final_tag }} {{ attributes.defaults({class: 'dropdown-header'}) }}>{%- block content %}{% endblock -%}</{{ final_tag }}></li>
{# @prop tag 'a'|'button' The interactive element to render. #}
{# @prop href string The destination used by link items. #}
{# @prop active boolean Whether the item represents the current selection. #}
{# @prop disabled boolean Whether the item is unavailable. #}
{# @block content The dropdown item label. #}
{%- props tag = 'a', href = '#', active = false, disabled = false -%}
{%- set final_tag = tag == 'button' ? 'button' : 'a' -%}
{%- set default_attrs = {
class: html_classes({'dropdown-item': true, active: active, disabled: disabled}),
} -%}
{%- if final_tag == 'button' -%}
{%- set default_attrs = default_attrs|merge({type: 'button', disabled: disabled}) -%}
{%- else -%}
{%- if disabled -%}
{%- set default_attrs = default_attrs|merge({'aria-disabled': 'true', tabindex: '-1'}) -%}
{%- else -%}
{%- set default_attrs = default_attrs|merge({href: href}) -%}
{%- endif -%}
{%- if active -%}
{%- set default_attrs = default_attrs|merge({'aria-current': 'true'}) -%}
{%- endif -%}
{%- endif -%}
<li><{{ final_tag }} {{ attributes.defaults(default_attrs) }}>{%- block content %}{% endblock -%}</{{ final_tag }}></li>
{# @prop tag 'ul'|'div'|'form' The menu container element to render. #}
{# @prop dark boolean Whether to use Bootstrap's dark menu variant. #}
{# @prop align string|array<string>|null One or more Bootstrap alignment suffixes, such as `end` or `lg-end`. #}
{# @prop labelledBy string|null The identifier of the toggle that labels the menu. #}
{# @block content The dropdown menu items and custom content. #}
{%- props tag = 'ul', dark = false, align = null, labelledBy = null -%}
{%- set final_tag = tag in ['ul', 'div', 'form'] ? tag : 'ul' -%}
{%- set menu_classes = html_classes({
'dropdown-menu': true,
'dropdown-menu-dark': dark,
}) -%}
{%- if align is iterable -%}
{%- for alignment in align -%}
{%- set menu_classes = menu_classes ~ ' dropdown-menu-' ~ alignment -%}
{%- endfor -%}
{%- elseif align is not null -%}
{%- set menu_classes = menu_classes ~ ' dropdown-menu-' ~ align -%}
{%- endif -%}
{%- set default_attrs = {class: menu_classes} -%}
{%- if labelledBy is not null -%}
{%- set default_attrs = default_attrs|merge({'aria-labelledby': labelledBy}) -%}
{%- endif -%}
<{{ final_tag }} {{ attributes.defaults(default_attrs) }}>
{%- block content %}{% endblock -%}
</{{ final_tag }}>
{# @block content The non-interactive dropdown text. #}
<li><span {{ attributes.defaults({class: 'dropdown-item-text'}) }}>{%- block content %}{% endblock -%}</span></li>
{# @prop tag 'button'|'a' The interactive element to render. #}
{# @prop color 'primary'|'secondary'|'success'|'danger'|'warning'|'info'|'light'|'dark' The Bootstrap contextual color. #}
{# @prop outline boolean Whether to render the outline variant. #}
{# @prop size 'sm'|'lg'|null The optional button size. #}
{# @prop split boolean Whether to render only the split-menu caret. #}
{# @prop disabled boolean Whether the toggle is disabled. #}
{# @block content The visible toggle label. #}
{%- props
tag = 'button',
color = 'secondary',
outline = false,
size = null,
split = false,
disabled = false
-%}
{%- set final_tag = tag == 'a' ? 'a' : 'button' -%}
{%- set classes = html_classes({
btn: true,
('btn-' ~ (outline ? 'outline-' : '') ~ color): true,
('btn-' ~ size): size in ['sm', 'lg'],
'dropdown-toggle': true,
'dropdown-toggle-split': split,
}) -%}
{%- set default_attrs = {
class: classes,
'data-bs-toggle': 'dropdown',
'aria-expanded': 'false',
} -%}
{%- if final_tag == 'button' -%}
{%- set default_attrs = default_attrs|merge({type: 'button', disabled: disabled}) -%}
{%- else -%}
{%- set default_attrs = default_attrs|merge({role: 'button'}) -%}
{%- if disabled -%}
{%- set default_attrs = default_attrs|merge({'aria-disabled': 'true', tabindex: '-1'}) -%}
{%- else -%}
{%- set default_attrs = default_attrs|merge({href: '#'}) -%}
{%- endif -%}
{%- endif -%}
<{{ final_tag }} {{ attributes.defaults(default_attrs) }}>
{%- if split %}<span class="visually-hidden">Toggle Dropdown</span>{% else %}{%- block content %}{% endblock -%}{% endif -%}
</{{ final_tag }}>
Usage
<twig:Dropdown>
<twig:Dropdown:Toggle id="actions-dropdown">Actions</twig:Dropdown:Toggle>
<twig:Dropdown:Menu labelledBy="actions-dropdown">
<twig:Dropdown:Item href="/edit">Edit</twig:Dropdown:Item>
<twig:Dropdown:Item href="/duplicate">Duplicate</twig:Dropdown:Item>
<twig:Dropdown:Divider />
<twig:Dropdown:Item href="/archive">Archive</twig:Dropdown:Item>
</twig:Dropdown:Menu>
</twig:Dropdown>
Accessibility
Bootstrap dropdowns are generic popovers, so the component does not add ARIA menu roles automatically. Add role="menu", role="menuitem", and the matching keyboard behavior only when the dropdown implements the complete ARIA menu pattern.
Use a button for actions and reserve link toggles and items for navigation. Give a toggle an id and pass it to the menu's labelledBy prop when an explicit accessible relationship is useful. Disabled links receive aria-disabled="true" and are removed from sequential keyboard navigation, but application code must still prevent any custom activation behavior.
Examples
Single button
Use buttons or links with Bootstrap's contextual colors.
<div class="d-flex flex-wrap justify-content-center align-items-start gap-2 w-100">
{% for color in ['primary', 'secondary', 'success', 'info', 'warning', 'danger'] %}
<twig:Dropdown>
<twig:Dropdown:Toggle color="{{ color }}">{{ color|title }}</twig:Dropdown:Toggle>
<twig:Dropdown:Menu>
<twig:Dropdown:Item href="#">Action</twig:Dropdown:Item>
<twig:Dropdown:Item href="#">Another action</twig:Dropdown:Item>
<twig:Dropdown:Item href="#">Something else here</twig:Dropdown:Item>
</twig:Dropdown:Menu>
</twig:Dropdown>
{% endfor %}
<twig:Dropdown>
<twig:Dropdown:Toggle tag="a" color="primary">Dropdown link</twig:Dropdown:Toggle>
<twig:Dropdown:Menu>
<twig:Dropdown:Item href="#">Action</twig:Dropdown:Item>
<twig:Dropdown:Item href="#">Another action</twig:Dropdown:Item>
</twig:Dropdown:Menu>
</twig:Dropdown>
</div>
Split button
Separate the primary action from the menu toggle.
<div class="d-flex flex-wrap justify-content-center align-items-start gap-2 w-100">
{% for color in ['primary', 'secondary', 'success', 'info', 'warning', 'danger'] %}
<twig:Dropdown grouped>
<button type="button" class="btn btn-{{ color }}">{{ color|title }}</button>
<twig:Dropdown:Toggle color="{{ color }}" split />
<twig:Dropdown:Menu>
<twig:Dropdown:Item href="#">Action</twig:Dropdown:Item>
<twig:Dropdown:Item href="#">Another action</twig:Dropdown:Item>
<twig:Dropdown:Divider />
<twig:Dropdown:Item href="#">Separated link</twig:Dropdown:Item>
</twig:Dropdown:Menu>
</twig:Dropdown>
{% endfor %}
</div>
Sizing
Create large and small regular or split dropdown buttons.
<div class="d-flex flex-wrap justify-content-center align-items-center gap-3 w-100">
<twig:Dropdown>
<twig:Dropdown:Toggle color="secondary" size="lg">Large button</twig:Dropdown:Toggle>
<twig:Dropdown:Menu><twig:Dropdown:Item href="#">Action</twig:Dropdown:Item></twig:Dropdown:Menu>
</twig:Dropdown>
<twig:Dropdown grouped>
<button class="btn btn-light btn-lg" type="button">Large split button</button>
<twig:Dropdown:Toggle color="light" size="lg" split />
<twig:Dropdown:Menu><twig:Dropdown:Item href="#">Action</twig:Dropdown:Item></twig:Dropdown:Menu>
</twig:Dropdown>
<twig:Dropdown>
<twig:Dropdown:Toggle color="secondary" size="sm">Small button</twig:Dropdown:Toggle>
<twig:Dropdown:Menu><twig:Dropdown:Item href="#">Action</twig:Dropdown:Item></twig:Dropdown:Menu>
</twig:Dropdown>
<twig:Dropdown grouped>
<button class="btn btn-light btn-sm" type="button">Small split button</button>
<twig:Dropdown:Toggle color="light" size="sm" split />
<twig:Dropdown:Menu><twig:Dropdown:Item href="#">Action</twig:Dropdown:Item></twig:Dropdown:Menu>
</twig:Dropdown>
</div>
Dark dropdowns
Render a dark menu with a visible active item.
<div class="d-flex justify-content-center align-items-start align-self-stretch w-100">
<twig:Dropdown>
<twig:Dropdown:Toggle id="dark-dropdown" color="secondary">Dropdown button</twig:Dropdown:Toggle>
<twig:Dropdown:Menu dark labelledBy="dark-dropdown">
<twig:Dropdown:Item href="#" active>Action</twig:Dropdown:Item>
<twig:Dropdown:Item href="#">Another action</twig:Dropdown:Item>
<twig:Dropdown:Item href="#">Something else here</twig:Dropdown:Item>
<twig:Dropdown:Divider />
<twig:Dropdown:Item href="#">Separated link</twig:Dropdown:Item>
</twig:Dropdown:Menu>
</twig:Dropdown>
</div>
Directions
Open menus from the center, above, or from either side.
<div class="d-flex flex-wrap justify-content-center align-items-center gap-3 w-100">
<twig:Dropdown direction="center">
<twig:Dropdown:Toggle>Centered dropdown</twig:Dropdown:Toggle>
<twig:Dropdown:Menu><twig:Dropdown:Item href="#">Action</twig:Dropdown:Item></twig:Dropdown:Menu>
</twig:Dropdown>
<twig:Dropdown direction="up">
<twig:Dropdown:Toggle>Dropup</twig:Dropdown:Toggle>
<twig:Dropdown:Menu><twig:Dropdown:Item href="#">Action</twig:Dropdown:Item></twig:Dropdown:Menu>
</twig:Dropdown>
<twig:Dropdown direction="up" grouped>
<button type="button" class="btn btn-secondary">Split dropup</button>
<twig:Dropdown:Toggle split />
<twig:Dropdown:Menu><twig:Dropdown:Item href="#">Action</twig:Dropdown:Item></twig:Dropdown:Menu>
</twig:Dropdown>
<twig:Dropdown direction="up-center">
<twig:Dropdown:Toggle>Centered dropup</twig:Dropdown:Toggle>
<twig:Dropdown:Menu><twig:Dropdown:Item href="#">Action</twig:Dropdown:Item></twig:Dropdown:Menu>
</twig:Dropdown>
<twig:Dropdown direction="end">
<twig:Dropdown:Toggle>Dropend</twig:Dropdown:Toggle>
<twig:Dropdown:Menu><twig:Dropdown:Item href="#">Action</twig:Dropdown:Item></twig:Dropdown:Menu>
</twig:Dropdown>
<twig:Dropdown direction="end" grouped>
<button type="button" class="btn btn-secondary">Split dropend</button>
<twig:Dropdown:Toggle split />
<twig:Dropdown:Menu><twig:Dropdown:Item href="#">Action</twig:Dropdown:Item></twig:Dropdown:Menu>
</twig:Dropdown>
<twig:Dropdown direction="start">
<twig:Dropdown:Toggle>Dropstart</twig:Dropdown:Toggle>
<twig:Dropdown:Menu><twig:Dropdown:Item href="#">Action</twig:Dropdown:Item></twig:Dropdown:Menu>
</twig:Dropdown>
<twig:Dropdown direction="start" grouped>
<twig:Dropdown:Toggle split />
<button type="button" class="btn btn-secondary">Split dropstart</button>
<twig:Dropdown:Menu><twig:Dropdown:Item href="#">Action</twig:Dropdown:Item></twig:Dropdown:Menu>
</twig:Dropdown>
</div>
Menu items
Use links, buttons, or non-interactive text as menu content.
<div class="d-flex flex-wrap justify-content-center align-items-start gap-4 w-100">
<twig:Dropdown:Menu class="d-block position-static">
<twig:Dropdown:Item href="#">Action</twig:Dropdown:Item>
<twig:Dropdown:Item href="#">Another action</twig:Dropdown:Item>
<twig:Dropdown:Item href="#">Something else here</twig:Dropdown:Item>
</twig:Dropdown:Menu>
<twig:Dropdown:Menu class="d-block position-static">
<twig:Dropdown:Item tag="button">Action</twig:Dropdown:Item>
<twig:Dropdown:Item tag="button">Another action</twig:Dropdown:Item>
<twig:Dropdown:Item tag="button">Something else here</twig:Dropdown:Item>
</twig:Dropdown:Menu>
<twig:Dropdown:Menu class="d-block position-static">
<twig:Dropdown:Text>Dropdown item text</twig:Dropdown:Text>
<twig:Dropdown:Item href="#">Action</twig:Dropdown:Item>
</twig:Dropdown:Menu>
</div>
Active and disabled items
Communicate the current item and unavailable choices.
<twig:Dropdown:Menu class="d-block position-static">
<twig:Dropdown:Item href="#">Regular link</twig:Dropdown:Item>
<twig:Dropdown:Item href="#" active>Active link</twig:Dropdown:Item>
<twig:Dropdown:Item href="#" disabled>Disabled link</twig:Dropdown:Item>
</twig:Dropdown:Menu>
Menu alignment
Align a menu against the end of its toggle.
<div class="d-flex justify-content-center align-items-start align-self-stretch w-100">
<twig:Dropdown>
<twig:Dropdown:Toggle id="aligned-dropdown">Right-aligned menu</twig:Dropdown:Toggle>
<twig:Dropdown:Menu align="end" labelledBy="aligned-dropdown">
<twig:Dropdown:Item href="#">Action</twig:Dropdown:Item>
<twig:Dropdown:Item href="#">Another action</twig:Dropdown:Item>
<twig:Dropdown:Item href="#">Something else here</twig:Dropdown:Item>
</twig:Dropdown:Menu>
</twig:Dropdown>
</div>
Responsive alignment
Change menu alignment at Bootstrap breakpoints.
<div class="d-flex flex-wrap justify-content-center align-items-start gap-3 w-100">
<twig:Dropdown>
<twig:Dropdown:Toggle data-bs-display="static">Left-aligned but right-aligned when large screen</twig:Dropdown:Toggle>
<twig:Dropdown:Menu align="lg-end"><twig:Dropdown:Item href="#">Action</twig:Dropdown:Item></twig:Dropdown:Menu>
</twig:Dropdown>
<twig:Dropdown>
<twig:Dropdown:Toggle data-bs-display="static">Right-aligned but left-aligned when large screen</twig:Dropdown:Toggle>
<twig:Dropdown:Menu :align="['end', 'lg-start']"><twig:Dropdown:Item href="#">Action</twig:Dropdown:Item></twig:Dropdown:Menu>
</twig:Dropdown>
</div>
Alignment options
Combine responsive alignment with dropdowns that open in different directions.
<div class="d-flex flex-wrap justify-content-center align-items-center gap-3 w-100">
<twig:Dropdown>
<twig:Dropdown:Toggle>Dropdown</twig:Dropdown:Toggle>
<twig:Dropdown:Menu>
<twig:Dropdown:Item href="#">Menu item</twig:Dropdown:Item>
<twig:Dropdown:Item href="#">Menu item</twig:Dropdown:Item>
</twig:Dropdown:Menu>
</twig:Dropdown>
<twig:Dropdown direction="end">
<twig:Dropdown:Toggle>Dropend</twig:Dropdown:Toggle>
<twig:Dropdown:Menu :align="['end', 'lg-start']">
<twig:Dropdown:Item href="#">Right-aligned, left-aligned when large</twig:Dropdown:Item>
</twig:Dropdown:Menu>
</twig:Dropdown>
<twig:Dropdown direction="start">
<twig:Dropdown:Toggle>Dropstart</twig:Dropdown:Toggle>
<twig:Dropdown:Menu align="lg-end">
<twig:Dropdown:Item href="#">Left-aligned, right-aligned when large</twig:Dropdown:Item>
</twig:Dropdown:Menu>
</twig:Dropdown>
<twig:Dropdown direction="up">
<twig:Dropdown:Toggle>Dropup</twig:Dropdown:Toggle>
<twig:Dropdown:Menu align="end"><twig:Dropdown:Item href="#">Right-aligned menu</twig:Dropdown:Item></twig:Dropdown:Menu>
</twig:Dropdown>
</div>
Headers, dividers, and text
Structure longer menus with headings, separators, and explanatory copy.
<twig:Dropdown:Menu class="d-block position-static">
<twig:Dropdown:Header>Dropdown header</twig:Dropdown:Header>
<twig:Dropdown:Item href="#">Action</twig:Dropdown:Item>
<twig:Dropdown:Item href="#">Another action</twig:Dropdown:Item>
<twig:Dropdown:Divider />
<twig:Dropdown:Text>Some example text that's free-flowing within the dropdown menu.</twig:Dropdown:Text>
<twig:Dropdown:Item href="#">Separated link</twig:Dropdown:Item>
</twig:Dropdown:Menu>
Forms
Display a static form or open one from a dropdown toggle.
<div class="d-flex flex-wrap justify-content-center align-items-start gap-4 w-100">
<twig:Dropdown:Menu tag="form" class="d-block position-static p-4">
<div class="mb-3">
<label for="dropdown-email" class="form-label">Email address</label>
<input type="email" class="form-control" id="dropdown-email" placeholder="email@example.com">
</div>
<div class="mb-3">
<label for="dropdown-password" class="form-label">Password</label>
<input type="password" class="form-control" id="dropdown-password" placeholder="Password">
</div>
<div class="mb-3">
<div class="form-check">
<input type="checkbox" class="form-check-input" id="dropdown-check">
<label class="form-check-label" for="dropdown-check">Remember me</label>
</div>
</div>
<button type="submit" class="btn btn-primary">Sign in</button>
</twig:Dropdown:Menu>
<twig:Dropdown>
<twig:Dropdown:Toggle>Dropdown form</twig:Dropdown:Toggle>
<twig:Dropdown:Menu tag="form" class="p-4">
<div class="mb-3">
<label for="menu-email" class="form-label">Email address</label>
<input type="email" class="form-control" id="menu-email">
</div>
<button type="submit" class="btn btn-primary">Sign in</button>
</twig:Dropdown:Menu>
</twig:Dropdown>
</div>
Dropdown options
Configure Popper's offset and reference element with Bootstrap data attributes.
<div class="d-flex flex-wrap justify-content-center align-items-start gap-3 w-100">
<twig:Dropdown>
<twig:Dropdown:Toggle data-bs-offset="10,20">Offset</twig:Dropdown:Toggle>
<twig:Dropdown:Menu><twig:Dropdown:Item href="#">Action</twig:Dropdown:Item></twig:Dropdown:Menu>
</twig:Dropdown>
<twig:Dropdown grouped>
<button type="button" class="btn btn-secondary">Reference</button>
<twig:Dropdown:Toggle split data-bs-reference="parent" />
<twig:Dropdown:Menu><twig:Dropdown:Item href="#">Action</twig:Dropdown:Item></twig:Dropdown:Menu>
</twig:Dropdown>
</div>
Auto close behavior
Choose which inside or outside interactions dismiss the menu.
<div class="d-flex flex-wrap justify-content-center align-items-start gap-3 w-100">
{% for behavior, label in {
true: 'Default dropdown',
inside: 'Clickable inside',
outside: 'Clickable outside',
false: 'Manual close',
} %}
<twig:Dropdown>
<twig:Dropdown:Toggle data-bs-auto-close="{{ behavior }}">{{ label }}</twig:Dropdown:Toggle>
<twig:Dropdown:Menu>
<twig:Dropdown:Item href="#">Menu item</twig:Dropdown:Item>
<twig:Dropdown:Item href="#">Menu item</twig:Dropdown:Item>
</twig:Dropdown:Menu>
</twig:Dropdown>
{% endfor %}
</div>
API Reference
<twig:Dropdown>
| Prop | Type | Default |
|---|---|---|
direction The direction in which the menu opens.
|
'down'|'center'|'up'|'up-center'|'end'|'start' |
'down' |
grouped Whether to use a button group wrapper, as required by split toggles.
|
boolean |
false |
| Block | Description |
|---|---|
content |
The dropdown toggle and menu. |
<twig:Dropdown:Header>
| Prop | Type | Default |
|---|---|---|
tag The heading element to render.
|
'h1'|'h2'|'h3'|'h4'|'h5'|'h6' |
'h6' |
| Block | Description |
|---|---|
content |
The dropdown section heading. |
<twig:Dropdown:Item>
| Prop | Type | Default |
|---|---|---|
tag The interactive element to render.
|
'a'|'button' |
'a' |
href The destination used by link items.
|
string |
'#' |
active Whether the item represents the current selection.
|
boolean |
false |
disabled Whether the item is unavailable.
|
boolean |
false |
| Block | Description |
|---|---|
content |
The dropdown item label. |
<twig:Dropdown:Menu>
| Prop | Type | Default |
|---|---|---|
tag The menu container element to render.
|
'ul'|'div'|'form' |
'ul' |
dark Whether to use Bootstrap's dark menu variant.
|
boolean |
false |
align One or more Bootstrap alignment suffixes, such as
end or lg-end. |
string|array<string>|null |
null |
labelledBy The identifier of the toggle that labels the menu.
|
string|null |
null |
| Block | Description |
|---|---|
content |
The dropdown menu items and custom content. |
<twig:Dropdown:Text>
| Block | Description |
|---|---|
content |
The non-interactive dropdown text. |
<twig:Dropdown:Toggle>
| Prop | Type | Default |
|---|---|---|
tag The interactive element to render.
|
'button'|'a' |
'button' |
color The Bootstrap contextual color.
|
'primary'|'secondary'|'success'|'danger'|'warning'|'info'|'light'|'dark' |
'secondary' |
outline Whether to render the outline variant.
|
boolean |
false |
size The optional button size.
|
'sm'|'lg'|null |
null |
split Whether to render only the split-menu caret.
|
boolean |
false |
disabled Whether the toggle is disabled.
|
boolean |
false |
| Block | Description |
|---|---|
content |
The visible toggle label. |