Blazorise Dropdown component
Keep related links and actions together in a menu that opens on demand.
Use the Dropdown component for action menus, navigation choices, or controls with additional options.
Dropdowns are designed to work well with menus to provide a list of options the user can select from. However, dropdowns can also be used in lower-level applications (e.g. color picker and select). The API gives you complete control over showing, hiding, and positioning the menu.
Structure
A Dropdown combines a toggle with a menu. The menu can contain clickable items, dividers, and headings.
<Dropdown>Coordinates the toggle and menu.<DropdownToggle>Opens or closes the menu.<DropdownMenu>Contains the menu content; hidden until opened.<DropdownItem>A clickable link or action.<DropdownDivider>Separates groups of items.<DropdownHeader>A heading for a group of items.
Examples
Dropdown
Hide code example
Copy code
<Dropdown> <DropdownToggle Color="Color.Primary"> Dropdown </DropdownToggle> <DropdownMenu> <DropdownItem>Action</DropdownItem> <DropdownDivider /> <DropdownItem>Another Action</DropdownItem> </DropdownMenu> </Dropdown>
Ghost toggleAdded in v2.4
UseGhost for a transparent, borderless dropdown toggle with visible hover, keyboard focus, and expanded menu states. Choose a theme variant, such as Color.Primary or Color.Danger. Ghost takes precedence over Outline.
Hide code example
Copy code
<Dropdown> <DropdownToggle Ghost Color="Color.Primary">Actions</DropdownToggle> <DropdownMenu> <DropdownItem>Open</DropdownItem> <DropdownItem>Save</DropdownItem> </DropdownMenu> </Dropdown>
Toggle icon visibility
Use theShowToggleIcon parameter to control whether the dropdown toggle displays its indicator icon.
Hide code example
Copy code
<Dropdown> <DropdownToggle Color="Color.Primary" ShowToggleIcon="false"> Dropdown without toggle icon </DropdownToggle> <DropdownMenu> <DropdownItem>Action</DropdownItem> <DropdownDivider /> <DropdownItem>Another Action</DropdownItem> </DropdownMenu> </Dropdown>
Custom colorsAdded in v2.3
Use custom CSS colors for dropdown toggles and matching split buttons.Hide code example
Copy code
<Div Flex="Flex.Wrap.AlignItems.Center" Gap="Gap.Is2"> <Dropdown> <DropdownToggle Color="@("#DBB5E6")">Lavender</DropdownToggle> <DropdownMenu> <DropdownItem>Edit</DropdownItem> <DropdownItem>Duplicate</DropdownItem> </DropdownMenu> </Dropdown> <Dropdown> <DropdownToggle Color="@("rgb(14, 165, 233)")" Outline>Sky outline</DropdownToggle> <DropdownMenu> <DropdownItem>Edit</DropdownItem> <DropdownItem>Duplicate</DropdownItem> </DropdownMenu> </Dropdown> <Dropdown> <Button Color="@(new Color("#312E81"))">Save</Button> <DropdownToggle Color="@(new Color("#312E81"))" Split /> <DropdownMenu> <DropdownItem>Save as draft</DropdownItem> <DropdownItem>Save a copy</DropdownItem> </DropdownMenu> </Dropdown> </Div>
Dropdown checkboxes
SetShowCheckbox to true to render a checkbox by each dropdown item.
Use Indeterminate to show a partial selection, such as when some but not all options are selected.
Calculate this state from your selections and update it through CheckedChanged; it does not change Checked automatically.
Hide code example
Copy code
<Dropdown> <DropdownToggle Color="Color.Primary"> Dropdown With Checkboxes </DropdownToggle> <DropdownMenu> <DropdownItem ShowCheckbox Checked="" Indeterminate="" CheckedChanged="">Select all</DropdownItem> <DropdownDivider /> <DropdownItem ShowCheckbox @bind-Checked="firstSelected">First option</DropdownItem> <DropdownItem ShowCheckbox @bind-Checked="secondSelected">Second option</DropdownItem> <DropdownItem ShowCheckbox Disabled>Checkbox Disabled</DropdownItem> <DropdownItem>Action</DropdownItem> </DropdownMenu> </Dropdown>
@code { private bool firstSelected = true; private bool secondSelected; private bool IsAllSelected => firstSelected && secondSelected; private bool IsPartiallySelected => firstSelected != secondSelected; private void OnSelectAllChangedHandler( bool isChecked ) { firstSelected = isChecked; secondSelected = isChecked; } }
Split Dropdown
Just add another Button to have a split dropdown.Hide code example
Copy code
<Dropdown> <Button Color="Color.Primary">Split Dropdown</Button> <DropdownToggle Color="Color.Primary" Split /> <DropdownMenu> <DropdownItem>Action</DropdownItem> <DropdownDivider /> <DropdownItem>Another Action</DropdownItem> </DropdownMenu> </Dropdown>
Show Menu
By default a dropdown toggle will show and hide a dropdown menu without the need to do it manually. In case you need to control the menu programmatically you have to use the Dropdown reference.Hide code example
Copy code
<Dropdown @ref="dropdown" Display="Display.InlineBlock"> <DropdownToggle Color="Color.Primary">Menu</DropdownToggle> <DropdownMenu> <DropdownItem>Action</DropdownItem> <DropdownDivider /> <DropdownItem>Another Action</DropdownItem> </DropdownMenu> </Dropdown> <Button Clicked="" Color="Color.Secondary">Show Menu</Button>
@code { Dropdown dropdown; Task ShowMenu() { return dropdown.Show(); } }
Scrollable Menu
By default the menu will show all items. If you want to add the scrolling to the menu you just need to define the menuMaxMenuHeight parameter.
Hide code example
Copy code
<Dropdown Display="Display.InlineBlock"> <DropdownToggle Color="Color.Primary">Menu</DropdownToggle> <DropdownMenu MaxMenuHeight="100px"> <DropdownItem>Action</DropdownItem> <DropdownItem>Action 2</DropdownItem> <DropdownItem>Action 3</DropdownItem> <DropdownDivider /> <DropdownItem>Another Action</DropdownItem> <DropdownItem>Another Action 2</DropdownItem> </DropdownMenu> </Dropdown>
Nested submenus
By adding a few more Dropdowns you can add extra levels of submenu to your dropdown. You can apply this to the dropdown in a simple button or within the navbar.Hide code example
Copy code
<Dropdown> <DropdownToggle Color="Color.Primary">Level 1</DropdownToggle> <DropdownMenu> <DropdownItem>Item 1.1</DropdownItem> <Dropdown> <DropdownToggle>Level 2</DropdownToggle> <DropdownMenu> <DropdownItem>Item 2.1</DropdownItem> <DropdownItem>Item 2.2</DropdownItem> <Dropdown> <DropdownToggle>Level 3</DropdownToggle> <DropdownMenu> <DropdownItem>Item 3.1</DropdownItem> <DropdownItem>Item 3.2</DropdownItem> <Dropdown> <DropdownToggle>Level 4</DropdownToggle> <DropdownMenu> <DropdownItem>Item 4.1</DropdownItem> <DropdownItem>Item 4.2</DropdownItem> </DropdownMenu> </Dropdown> </DropdownMenu> </Dropdown> </DropdownMenu> </Dropdown> </DropdownMenu> </Dropdown>
Submenu Direction
Nested dropdowns with the manualDirection is also supported.
Hide code example
Copy code
<Dropdown> <DropdownToggle Color="Color.Primary">Level 1</DropdownToggle> <DropdownMenu> <DropdownItem>Item 1.1</DropdownItem> <Dropdown Direction="Direction.Up"> <DropdownToggle>Level 2</DropdownToggle> <DropdownMenu> <DropdownItem>Item 2.1</DropdownItem> <DropdownItem>Item 2.2</DropdownItem> <Dropdown Direction="Direction.Down"> <DropdownToggle>Level 3</DropdownToggle> <DropdownMenu> <DropdownItem>Item 3.1</DropdownItem> <DropdownItem>Item 3.2</DropdownItem> <Dropdown Direction="Direction.Start"> <DropdownToggle>Level 4</DropdownToggle> <DropdownMenu> <DropdownItem>Item 4.1</DropdownItem> <DropdownItem>Item 4.2</DropdownItem> </DropdownMenu> </Dropdown> </DropdownMenu> </Dropdown> </DropdownMenu> </Dropdown> </DropdownMenu> </Dropdown>
AnimationAdded in v2.4
SetAnimated="false" for immediate changes, or use AnimationDuration to adjust the duration in milliseconds.
A null duration preserves the provider's default; zero or a negative value disables animations.
These settings control the provider's existing animations, so providers that show this component immediately keep that behavior.
Hide code example
Copy code
<Field> <Switch @bind-Value="animated">Animate transitions</Switch> </Field> <Field> <FieldLabel>Animation duration</FieldLabel> <FieldBody> <Select TValue="int?" @bind-Value="animationDuration"> <SelectItem TValue="int?" Value="@((int?)null)">Provider default</SelectItem> <SelectItem TValue="int?" Value="0">Immediate</SelectItem> <SelectItem TValue="int?" Value="100">100 ms</SelectItem> <SelectItem TValue="int?" Value="200">200 ms</SelectItem> <SelectItem TValue="int?" Value="400">400 ms</SelectItem> <SelectItem TValue="int?" Value="1000">1000 ms</SelectItem> </Select> </FieldBody> </Field> <Dropdown Animated="" AnimationDuration=""> <DropdownToggle Color="Color.Primary">Machine settings</DropdownToggle> <DropdownMenu> <DropdownItem>Operating mode</DropdownItem> <DropdownItem>Production speed</DropdownItem> <DropdownItem>Maintenance schedule</DropdownItem> </DropdownMenu> </Dropdown>
@code { private bool animated = true; private int? animationDuration; }
Best Practices
- Dropdown should not be used for navigation. Use tabs for switching between content, or anchor elements for regular navigation.
- Dropdown is not an input field. Use Select, or Radio Button instead.
Functions
| Name | Description |
|---|---|
Show() |
Show the dropdown menu. |
Hide() |
Hides the dropdown menu. |
Toggle() |
Switches the visibility of dropdown menu. |
API
See the API reference for the parameters, events, methods, and related types available to the components covered on this page.