Skip to content
+

Menu

The Menu components provide your users with a list of options on temporary surfaces.

useDropdown API

Import

import useDropdown from '@mui/base/useDropdown';
// or
import { useDropdown } from '@mui/base';
Learn about the difference by reading this guide on minimizing bundle size.

Parameters

defaultOpen

If true, the dropdown is initially open.

Type:

boolean
onOpenChange

Callback fired when the component requests to be opened or closed.

Type:

(event: React.MouseEvent | React.KeyboardEvent | React.FocusEvent | null, open: boolean) => void
open

Allows to control whether the dropdown is open. This is a controlled counterpart of defaultOpen.

Type:

boolean

Return value

contextValue

The value to be passed into the DropdownContext provider.

Type:

DropdownContextValue
open

If true, the dropdown is open.

Type:

boolean


useMenu API

Import

import useMenu from '@mui/base/useMenu';
// or
import { useMenu } from '@mui/base';
Learn about the difference by reading this guide on minimizing bundle size.

Parameters

id

The id of the menu. If not provided, it will be generated.

Type:

string
listboxRef

The ref to the menu's listbox node.

Type:

React.Ref<Element>
onItemsChange

Callback fired when the menu items change.

Type:

(items: string[]) => void

Return value

contextValue

The value to be passed into the MenuProvider.

Type:

MenuProviderValue
dispatch

Action dispatcher for the menu component. Allows to programmatically control the menu.

Type:

(action: ListAction<string>) => void
getListboxProps

Resolver for the listbox slot's props.

Type:

<TOther extends EventHandlers>(otherHandlers?: TOther) => UseMenuListboxSlotProps
highlightedValue

The highlighted option in the menu listbox.

Type:

string | null
listboxRef

The ref to the menu's listbox node.

Type:

React.RefCallback<Element> | null
menuItems

Items in the menu listbox.

Type:

Map<string, MenuItemMetadata>
open

If true, the menu is open.

Type:

boolean
triggerElement

An element that triggers the visibility of the menu.

Type:

HTMLElement | null


useMenuButton API

Import

import useMenuButton from '@mui/base/useMenuButton';
// or
import { useMenuButton } from '@mui/base';
Learn about the difference by reading this guide on minimizing bundle size.

Parameters

disabled

If true, the component is disabled.

Type:

boolean

Default:

false
focusableWhenDisabled

If true, allows a disabled button to receive focus.

Type:

boolean

Default:

false
rootRef

The ref to the root element.

Type:

React.Ref<HTMLElement>

Return value

active

If true, the component is active (pressed).

Type:

boolean
getRootProps

Resolver for the root slot's props.

Type:

(otherHandlers?: EventHandlers) => UseMenuButtonRootSlotProps
open

Type:

boolean
rootRef

The ref to the root element.

Type:

React.RefCallback<Element> | null


useMenuItem API

Import

import useMenuItem from '@mui/base/useMenuItem';
// or
import { useMenuItem } from '@mui/base';
Learn about the difference by reading this guide on minimizing bundle size.

Parameters

rootRefRequired

Type:

React.Ref<Element>
disabled

Type:

boolean
id

Type:

string
label

Type:

string
onClick

Type:

React.MouseEventHandler<any>

Return value

disabled

If true, the component is disabled.

Type:

boolean
focusVisible

If true, the component is being focused using keyboard.

Type:

boolean
getRootProps

Resolver for the root slot's props.

Type:

<TOther extends EventHandlers = {}>(otherHandlers?: TOther) => UseMenuItemRootSlotProps<TOther>
highlighted

If true, the component is being highlighted.

Type:

boolean
index

0-based index of the item in the menu.

Type:

number
rootRef

The ref to the component's root DOM element.

Type:

React.RefCallback<Element> | null
totalItemCount

Total number of items in the menu.

Type:

number