Toggle contextual overlays for displaying lists of links and more with the Bootstrap dropdown plugin
Dropdowns are toggleable, contextual overlays for displaying lists of links and more. Like overlays, Dropdowns are built using a third-party library Popper.js, which provides dynamic positioning and viewport detection.
On the other hand, Bootstrap's dropdowns are designed to more generic and application in a variety of situations. For this reason we don't automatically add the menu roles to the markup. We do implement some basic keyboard navigation, and if you do provide the "menu" role, react-bootstrap will do its best to ensure the focus management is compliant with the ARIA authoring guidelines for menus.
Single button dropdowns
The basic Dropdown is composed of a wrapping
<DropdownToggle> will render a
Button component and accepts all the same props.
Since the above is such a common configuration react-bootstrap provides
<DropdownButton> component to help reduce typing. Provide
title prop and some
<DropdownItem>s and you're
ready to go.
DropdownButton will forward Button props to the underlying Toggle component
Split button dropdowns
Similarly, You create a split dropdown by combining the Dropdown components with another Button and a ButtonGroup.
As with DropdownButton,
SplitButton is provided as
Dropdowns work with buttons of all sizes.
Opt into darker dropdowns to match a dark navbar or custom style by adding
variant="dark" onto an existing
DropdownMenu. Alternatively, use
menuVariant="dark" when using the
Dark variants for components were deprecated in Bootstrap v5.3.0 with the introduction
of color modes. Instead of adding
data-bs-theme="dark" on the root
element, a parent wrapper, or the component itself.
menuVariant="dark" in a
Trigger dropdown menus above, below, left, or to the right of their
toggle elements, with the
Historically dropdown menu contents had to be links, but that’s no
longer the case with v4. Now you can optionally use
<button> elements in your dropdowns instead of just
You can also create non-interactive dropdown items with
Feel free to style further with custom CSS or text utilities.
By default, a dropdown menu is aligned to the left, but you can switch
it by passing
align="end" to a
If you want to use responsive menu alignment, pass an object containing a breakpoint to the
align prop on the
You can specify
end for the various breakpoints.
Using responsive alignment will disable Popper usage so any dynamic
positioning features such as
flip will not work.
Add a header to label sections of actions.
Separate groups of related menu items with a divider.
By default, the dropdown menu is closed when selecting a menu item or clicking outside of the
dropdown menu. This behaviour can be changed by using the
autoClose is set to the default value
true and behaves like expected. By choosing
false, the dropdown
menu can only be toggled by clicking on the dropdown button.
inside makes the dropdown disappear only
by choosing a menu item and
outside closes the dropdown menu only by clicking outside.
Notice how the dropdown is toggled in each scenario by clicking on the button.
If the default handling of the dropdown menu and toggle components
aren't to your liking, you can customize them, by using the more basic
<Dropdown> Component to explicitly specify the Toggle and
Custom Dropdown Components
For those that want to customize everything, you can forgo the included
Toggle and Menu components, and create your own. By providing custom
components to the
as prop, you can control how each
component behaves. Custom toggle and menu components must be able to accept refs.