Blazor Dropdown

Dropdowns are toggleable, contextual overlays for displaying lists of links and more. They are toggled by clicking, not by hovering; this is an intentional design decision'by bootstrap.

Single button#

razor
<Dropdown>
    <DropdownToggleButton Color="ButtonColor.Secondary">Dropdown button</DropdownToggleButton>
    <DropdownMenu>
        <DropdownItem To="#" Type="ButtonType.Link">Action</DropdownItem>
        <DropdownItem To="#" Type="ButtonType.Link">Another action</DropdownItem>
        <DropdownItem To="#" Type="ButtonType.Link">Something else here</DropdownItem>
    </DropdownMenu>
</Dropdown>

Color#

Split button#

Sizing#

razor
<div class="d-flex gap-2 mb-4">
    <Dropdown Size="Size.Large">
        <DropdownToggleButton Color="ButtonColor.Secondary">Large button</DropdownToggleButton>
        <DropdownMenu>
            <DropdownItem Size="Size.Large" To="#" Type="ButtonType.Link">Action</DropdownItem>
            <DropdownItem To="#" Type="ButtonType.Link">Another action</DropdownItem>
            <DropdownItem To="#" Type="ButtonType.Link">Something else here</DropdownItem>
        </DropdownMenu>
    </Dropdown>
    <Dropdown Size="Size.Large" Split="true">
        <DropdownActionButton Color="ButtonColor.Secondary">Large split button</DropdownActionButton>
        <DropdownToggleButton Color="ButtonColor.Secondary" />
        <DropdownMenu>
            <DropdownItem To="#" Type="ButtonType.Link">Action</DropdownItem>
            <DropdownItem To="#" Type="ButtonType.Link">Another action</DropdownItem>
            <DropdownItem To="#" Type="ButtonType.Link">Something else here</DropdownItem>
        </DropdownMenu>
    </Dropdown>
</div>
razor
<div class="d-flex gap-2 mb-4">
    <Dropdown Size="Size.Small">
        <DropdownToggleButton Color="ButtonColor.Secondary">Small button</DropdownToggleButton>
        <DropdownMenu>
            <DropdownItem To="#" Type="ButtonType.Link">Action</DropdownItem>
            <DropdownItem To="#" Type="ButtonType.Link">Another action</DropdownItem>
            <DropdownItem To="#" Type="ButtonType.Link">Something else here</DropdownItem>
        </DropdownMenu>
    </Dropdown>
    <Dropdown Size="Size.Small" Split="true">
        <DropdownActionButton Color="ButtonColor.Secondary">Small split button</DropdownActionButton>
        <DropdownToggleButton Color="ButtonColor.Secondary" />
        <DropdownMenu>
            <DropdownItem To="#" Type="ButtonType.Link">Action</DropdownItem>
            <DropdownItem To="#" Type="ButtonType.Link">Another action</DropdownItem>
            <DropdownItem To="#" Type="ButtonType.Link">Something else here</DropdownItem>
        </DropdownMenu>
    </Dropdown>
</div>

Directions#

Dropup#

To trigger DropdownMenu above elements, add the Direction="DropdownDirection.Dropup" to the Dropdown component.
razor
<div class="d-flex gap-2">
    <Dropdown Direction="DropdownDirection.Dropup">
        <DropdownToggleButton Color="ButtonColor.Secondary">Dropup button with text</DropdownToggleButton>
        <DropdownMenu>
            <DropdownItem To="#" Type="ButtonType.Link">Action</DropdownItem>
            <DropdownItem To="#" Type="ButtonType.Link">Another action</DropdownItem>
            <DropdownItem To="#" Type="ButtonType.Link">Something else here</DropdownItem>
        </DropdownMenu>
    </Dropdown>
    <Dropdown Direction="DropdownDirection.Dropup" Split="true">
        <DropdownActionButton Color="ButtonColor.Secondary">Dropup split button</DropdownActionButton>
        <DropdownToggleButton Color="ButtonColor.Secondary" />
        <DropdownMenu>
            <DropdownItem To="#" Type="ButtonType.Link">Action</DropdownItem>
            <DropdownItem To="#" Type="ButtonType.Link">Another action</DropdownItem>
            <DropdownItem To="#" Type="ButtonType.Link">Something else here</DropdownItem>
        </DropdownMenu>
    </Dropdown>
</div>

Dropup centered#

To center the DropdownMenu above the toggle, add the Direction="DropdownDirection.DropupCentered" to the Dropdown component.
razor
<div class="d-flex gap-2">
    <Dropdown Direction="DropdownDirection.DropupCentered">
        <DropdownToggleButton Color="ButtonColor.Secondary">Centered dropup</DropdownToggleButton>
        <DropdownMenu>
            <DropdownItem To="#" Type="ButtonType.Link">Action</DropdownItem>
            <DropdownItem To="#" Type="ButtonType.Link">Another action</DropdownItem>
            <DropdownItem To="#" Type="ButtonType.Link">Something else here</DropdownItem>
        </DropdownMenu>
    </Dropdown>
</div>

Dropend#

To trigger DropdownMenu at the right of elements, add the Direction="DropdownDirection.Dropend" to the Dropdown component.
razor
<div class="d-flex gap-2">
    <Dropdown Direction="DropdownDirection.Dropend">
        <DropdownToggleButton Color="ButtonColor.Secondary">Dropend</DropdownToggleButton>
        <DropdownMenu>
            <DropdownItem To="#" Type="ButtonType.Link">Action</DropdownItem>
            <DropdownItem To="#" Type="ButtonType.Link">Another action</DropdownItem>
            <DropdownItem To="#" Type="ButtonType.Link">Something else here</DropdownItem>
        </DropdownMenu>
    </Dropdown>
    <Dropdown Direction="DropdownDirection.Dropend" Split="true">
        <DropdownActionButton Color="ButtonColor.Secondary">Split dropend</DropdownActionButton>
        <DropdownToggleButton Color="ButtonColor.Secondary" />
        <DropdownMenu>
            <DropdownItem To="#" Type="ButtonType.Link">Action</DropdownItem>
            <DropdownItem To="#" Type="ButtonType.Link">Another action</DropdownItem>
            <DropdownItem To="#" Type="ButtonType.Link">Something else here</DropdownItem>
        </DropdownMenu>
    </Dropdown>
</div>

Dropstart#

To trigger DropdownMenu at the left of elements, you can add the Direction="DropdownDirection.Dropstart" to the Dropdown component.
razor
<div class="d-flex gap-2">
    <Dropdown Direction="DropdownDirection.Dropstart">
        <DropdownToggleButton Color="ButtonColor.Secondary">Dropstart</DropdownToggleButton>
        <DropdownMenu>
            <DropdownItem To="#" Type="ButtonType.Link">Action</DropdownItem>
            <DropdownItem To="#" Type="ButtonType.Link">Another action</DropdownItem>
            <DropdownItem To="#" Type="ButtonType.Link">Something else here</DropdownItem>
        </DropdownMenu>
    </Dropdown>
    <Dropdown Direction="DropdownDirection.Dropstart" Split="true">
        <DropdownToggleButton Color="ButtonColor.Secondary" />
        <DropdownMenu>
            <DropdownItem To="#" Type="ButtonType.Link">Action</DropdownItem>
            <DropdownItem To="#" Type="ButtonType.Link">Another action</DropdownItem>
            <DropdownItem To="#" Type="ButtonType.Link">Something else here</DropdownItem>
        </DropdownMenu>
        <DropdownActionButton Color="ButtonColor.Secondary">Split dropstart</DropdownActionButton>
    </Dropdown>
</div>

Active#

To style DropdownItem as active, add the Active="true" parameter to the DropdownItem element in the DropdownMenu.
razor
<Dropdown>
    <DropdownToggleButton Color="ButtonColor.Secondary">Dropstart</DropdownToggleButton>
    <DropdownMenu>
        <DropdownItem To="#" Type="ButtonType.Link">Action</DropdownItem>
        <DropdownItem To="#" Type="ButtonType.Link" Active="true">Another action</DropdownItem>
        <DropdownItem To="#" Type="ButtonType.Link">Something else here</DropdownItem>
    </DropdownMenu>
</Dropdown>

Disabled#

To disable the dropdown, set the Disabled parameter to true on the Dropdown component.
razor
<Dropdown Disabled="@isDropdownDisabled">
    <DropdownToggleButton Color="ButtonColor.Secondary">Dropstart</DropdownToggleButton>
    <DropdownMenu>
        <DropdownItem To="#" Type="ButtonType.Link">Action</DropdownItem>
        <DropdownItem To="#" Type="ButtonType.Link">Another action</DropdownItem>
        <DropdownItem To="#" Type="ButtonType.Link">Something else here</DropdownItem>
    </DropdownMenu>
</Dropdown>

<div class="mt-3">
    <Button Color="ButtonColor.Primary" Size="Size.Small" @onclick="EnableDropdown">Enable</Button>
    <Button Color="ButtonColor.Danger" Size="Size.Small" @onclick="DisableDropdown">Disable</Button>
</div>
@code
{
    private bool isDropdownDisabled = true;
    private void EnableDropdown() => isDropdownDisabled = false;
    private void DisableDropdown() => isDropdownDisabled = true;
}
To style a dropdown item as disabled, set the Disabled parameter to true on the DropdownItem element in the DropdownMenu component.
razor
<Dropdown>
    <DropdownToggleButton Color="ButtonColor.Secondary">Dropstart</DropdownToggleButton>
    <DropdownMenu>
        <DropdownItem To="#" Type="ButtonType.Link">Action</DropdownItem>
        <DropdownItem To="#" Type="ButtonType.Link" Disabled="true">Another action</DropdownItem>
        <DropdownItem To="#" Type="ButtonType.Link">Something else here</DropdownItem>
    </DropdownMenu>
</Dropdown>

By default, a DropdownMenu is automatically positioned at 100% from the top and along the left side of its parent. You can change this with the Position parameter.

To right-align a DropdownMenu, add the Position="DropdownMenuPosition.End" parameter to the DropdownMenu component. Directions are mirrored when using Bootstrap in RTL.

razor
<Dropdown>
    <DropdownToggleButton Color="ButtonColor.Secondary">Right-aligned menu example</DropdownToggleButton>
    <DropdownMenu Position="DropdownMenuPosition.End">
        <DropdownItem To="#" Type="ButtonType.Link">Action</DropdownItem>
        <DropdownItem To="#" Type="ButtonType.Link">Another action</DropdownItem>
        <DropdownItem To="#" Type="ButtonType.Link">Something else here</DropdownItem>
    </DropdownMenu>
</Dropdown>
Add a header to label sections of actions in any dropdown menu.
razor
<Dropdown>
    <DropdownToggleButton Color="ButtonColor.Secondary">Dropdown</DropdownToggleButton>
    <DropdownMenu>
        <DropdownHeader>Dropdown header</DropdownHeader>
        <DropdownItem To="#" Type="ButtonType.Link">Action</DropdownItem>
        <DropdownItem To="#" Type="ButtonType.Link">Another action</DropdownItem>
        <DropdownItem To="#" Type="ButtonType.Link">Something else here</DropdownItem>
    </DropdownMenu>
</Dropdown>

Dividers#

Separate groups of related menu items with a divider.
razor
<Dropdown>
    <DropdownToggleButton Color="ButtonColor.Secondary">Dropdown</DropdownToggleButton>
    <DropdownMenu>
        <DropdownItem To="#" Type="ButtonType.Link">Action</DropdownItem>
        <DropdownItem To="#" Type="ButtonType.Link">Another action</DropdownItem>
        <DropdownItem To="#" Type="ButtonType.Link">Something else here</DropdownItem>
        <DropdownDivider>Dropdown header</DropdownDivider>
        <DropdownItem To="#" Type="ButtonType.Link">Separated link</DropdownItem>
    </DropdownMenu>
</Dropdown>

Text#

Place any freeform text within a dropdown menu with text and use spacing utilities. Note that youll likely need additional sizing styles to constrain the menu width.
razor
<Dropdown>
    <DropdownToggleButton Color="ButtonColor.Secondary">Dropdown</DropdownToggleButton>
    <DropdownMenu Class="p-4 text-muted" Style="width: 320px;">
        <p>Some example text that's free-flowing within the dropdown menu.</p>
        <p class="mb-0">And this is more example text.</p>
    </DropdownMenu>
</Dropdown>

Forms#

Put a form within a dropdown menu, or make it into a dropdown menu, and use margin or padding utilities to give it the negative space you require.

Auto close behavior#

By default, the DropdownMenu is closed when clicking either inside or outside the DropdownMenu. You can use the AutoClose and AutoCloseBehavior parameters to change this behavior of the Dropdown.

Methods#

Method Description
HideAsync Hides the dropdown menu of a given navbar or tabbed navigation.
ShowAsync Shows the dropdown menu of a given navbar or tabbed navigation.
ToggleAsync Toggles the dropdown menu of a given navbar or tabbed navigation.
UpdateAsync Updates the position of an element’s dropdown.

Events#

All dropdown events are fired at the toggling element and then bubbled up.
Event type Description
OnHiding This event is fired immediately when the hide method has been called.
OnHidden This event is fired when an dropdown element has been hidden from the user (will wait for CSS transitions to complete).
OnShowing This event fires immediately when the show instance method is called.
OnShown This event is fired when an dropdown element has been made visible to the user (will wait for CSS transitions to complete).