React Dropdown Component API

Dropdown API

Rocket
New Year sale. Skyrocket your business in 2025!
Extra 25% off for all sale items + Free CoreUI Icons PRO with every order!
Limited-time offer for the first 100 customers in 2025. Use code 2025SKY25 at checkout.

Explore the API reference for the React Dropdown component and discover how to effectively utilize its props for customization.

CDropdown#

import { CDropdown } from '@coreui/react'
// or
import CDropdown from '@coreui/react/src/components/dropdown/CDropdown'
PropertyDefaultType
alignment#-'start', 'end', { xs: 'start' | 'end' }, { sm: 'start' | 'end' }, { md: 'start' | 'end' }, { lg: 'start' | 'end' }, { xl: 'start' | 'end'}, { xxl: 'start' | 'end'}

Specifies the alignment of the React Dropdown Menu within this React Dropdown.

// Align dropdown menu to the end on large devices, otherwise start
<CDropdown alignment={{ lg: 'end', xs: 'start' }}>
<CDropdownToggle>Toggle dropdown</CDropdownToggle>
<CDropdownMenu>
<CDropdownItem>Action</CDropdownItem>
<CDropdownItem>Another Action</CDropdownItem>
</CDropdownMenu>
</CDropdown>
as#div(ElementType & 'symbol'), (ElementType & 'object'), (ElementType & 'div'), (ElementType & 'slot'), (ElementType & 'style'), ... 174 more ..., (ElementType & FunctionComponent<...>)

Determines the root node component (native HTML element or a custom React component) for the React Dropdown.

autoClose#trueboolean, 'inside', 'outside'

Configures automatic closing behavior for the React Dropdown:

  • true - Close on clicks inside or outside of the React Dropdown Menu.
  • false - Disable auto-close; manually call hide or toggle (also not closed by Escape).
  • 'inside' - Close only when clicking inside the React Dropdown Menu.
  • 'outside' - Close only when clicking outside the React Dropdown Menu.
// Close only when user clicks outside of the menu
<CDropdown autoClose="outside" />
className#-string

Adds custom classes to the React Dropdown root element.

container#4.11.0+-Element, DocumentFragment, (() => Element | DocumentFragment)

Appends the React Dropdown Menu to a specific element. You can pass an HTML element or a function returning an element. Defaults to document.body.

// Append the menu to a custom container
const myContainer = document.getElementById('my-container')
<CDropdown container={myContainer} />
dark#-boolean

Applies a darker color scheme to the React Dropdown Menu, often used within dark navbars.

direction#-'center', 'dropup', 'dropup-center', 'dropend', 'dropstart'

Specifies the direction of the React Dropdown.

offset#[0, 2][number, number]

Defines x and y offsets ([x, y]) for the React Dropdown Menu relative to its target.

// Offset the menu 10px in X and 5px in Y direction
<CDropdown offset={[10, 5]}>
...
</CDropdown>
onHide#4.9.0+-() => void

Callback fired right before the React Dropdown becomes hidden.

onShow#-() => void

Callback fired immediately after the React Dropdown is displayed.

placement#bottom-start'auto', 'auto-start', 'auto-end', 'top-end', 'top', 'top-start', 'bottom-end', 'bottom', 'bottom-start', 'right-start', 'right', 'right-end', 'left-start', 'left', 'left-end'

Determines the placement of the React Dropdown Menu after Popper.js modifiers.

popper#trueboolean

Enables or disables dynamic positioning via Popper.js for the React Dropdown Menu.

popperConfig#5.5.0+-Partial<Options>, ((defaultPopperConfig: Partial<Options>) => Partial<Options>)

Provides a custom Popper.js configuration or a function that returns a modified Popper.js configuration for advanced positioning of the React Dropdown Menu. Read more

// Providing a custom popper config
<CDropdown
popperConfig={{
modifiers: [
{
name: 'flip',
options: { fallbackPlacements: ['bottom', 'top'] },
},
],
}}
>...</CDropdown>
portal#4.8.0+falseboolean

Renders the React Dropdown Menu using a React Portal, allowing it to escape the DOM hierarchy for improved positioning.

variant#btn-group'btn-group', 'dropdown', 'input-group', 'nav-item'

Defines the visual variant of the React Dropdown

visible#falseboolean

Controls the visibility of the React Dropdown Menu:

  • true - Visible
  • false - Hidden
// Programmatically manage the dropdown visibility
const [visible, setVisible] = useState(false)
<CDropdown visible={visible}>
...
</CDropdown>

CDropdownDivider#

import { CDropdownDivider } from '@coreui/react'
// or
import CDropdownDivider from '@coreui/react/src/components/dropdown/CDropdownDivider'
PropertyDefaultType
className#-string

A string of all className you want applied to the component.

CDropdownHeader#

import { CDropdownHeader } from '@coreui/react'
// or
import CDropdownHeader from '@coreui/react/src/components/dropdown/CDropdownHeader'
PropertyDefaultType
as#-(ElementType & 'symbol'), (ElementType & 'object'), (ElementType & 'h6'), (ElementType & 'slot'), (ElementType & 'style'), ... 174 more ..., (ElementType & FunctionComponent<...>)

Component used for the root node. Either a string to use a HTML element or a component.

className#-string

A string of all className you want applied to the component.

CDropdownItem#

import { CDropdownItem } from '@coreui/react'
// or
import CDropdownItem from '@coreui/react/src/components/dropdown/CDropdownItem'
PropertyDefaultType
active#-boolean

Toggle the active state for the component.

as#a(ElementType & 'symbol'), (ElementType & 'object'), (ElementType & 'a'), (ElementType & 'cite'), (ElementType & 'data'), ... 174 more ..., (ElementType & FunctionComponent<...>)

Component used for the root node. Either a string to use a HTML element or a component.

className#-string

A string of all className you want applied to the component.

disabled#-boolean

Toggle the disabled state for the component.

href#-string

The href attribute specifies the URL of the page the link goes to.

CDropdownItemPlain#

import { CDropdownItemPlain } from '@coreui/react'
// or
import CDropdownItemPlain from '@coreui/react/src/components/dropdown/CDropdownItemPlain'
PropertyDefaultType
as#-(ElementType & 'symbol'), (ElementType & 'object'), (ElementType & 'span'), (ElementType & 'slot'), (ElementType & 'style'), ... 174 more ..., (ElementType & FunctionComponent<...>)

Component used for the root node. Either a string to use a HTML element or a component.

className#-string

A string of all className you want applied to the component.

CDropdownMenu#

import { CDropdownMenu } from '@coreui/react'
// or
import CDropdownMenu from '@coreui/react/src/components/dropdown/CDropdownMenu'
PropertyDefaultType
as#-(ElementType & 'symbol'), (ElementType & 'object'), (ElementType & 'ul'), (ElementType & 'slot'), (ElementType & 'style'), ... 174 more ..., (ElementType & FunctionComponent<...>)

Component used for the root node. Either a string to use a HTML element or a component.

className#-string

A string of all className you want applied to the base component.

CDropdownToggle#

import { CDropdownToggle } from '@coreui/react'
// or
import CDropdownToggle from '@coreui/react/src/components/dropdown/CDropdownToggle'
PropertyDefaultType
active#-boolean

Toggle the active state for the component.

as#-ElementType

Component used for the root node. Either a string to use a HTML element or a component.

caret#trueboolean

Enables pseudo element caret on toggler.

className#-string

A string of all className you want applied to the base component.

color#-'primary', 'secondary', 'success', 'danger', 'warning', 'info', 'dark', 'light', string

Sets the color context of the component to one of CoreUI’s themed colors.

custom#-boolean

Create a custom toggler which accepts any content.

disabled#-boolean

Toggle the disabled state for the component.

href#-string

The href attribute specifies the URL of the page the link goes to.

If a dropdown variant is set to nav-item then render the toggler as a link instead of a button.

role#-string

The role attribute describes the role of an element in programs that can make use of it, such as screen readers or magnifiers.

shape#-'rounded', 'rounded-top', 'rounded-end', 'rounded-bottom', 'rounded-start', 'rounded-circle', 'rounded-pill', 'rounded-0', 'rounded-1', 'rounded-2', 'rounded-3', string

Select the shape of the component.

size#-'sm', 'lg'

Size the component small or large.

split#-boolean

Similarly, create split button dropdowns with virtually the same markup as single button dropdowns, but with the addition of .dropdown-toggle-split className for proper spacing around the dropdown caret.

trigger#click'hover', 'focus', 'click'

Sets which event handlers you’d like provided to your toggle prop. You can specify one trigger or an array of them.

variant#-'outline', 'ghost'

Set the button variant to an outlined button or a ghost button.