Skip to main content

Return object

This Hook returns an object of the following shape:

{
buttonProps: {
onKeyDown: (e: React.KeyboardEvent | React.MouseEvent) => void;
onClick: (e: React.KeyboardEvent | React.MouseEvent) => void;
tabIndex: 0;
ref: React.RefObject<HTMLButtonElement>;
role: 'button';
'aria-haspopup': true;
'aria-expanded': boolean;
};
itemProps: [
{
onKeyDown: (e: React.KeyboardEvent<HTMLAnchorElement>) => void;
tabIndex: -1;
role: 'menuitem';
ref: React.RefObject<HTMLAnchorElement>;
};
...
];
isOpen: boolean;
setIsOpen: (newValue: boolean) => void;
moveFocus: (itemIndex: number) => void;
}
  • buttonProps: An object meant to be spread as properties on a <button /> element.
    • onKeyDown: A function which manages the behavior of your dropdown menu when a key is pressed while focused on the menu button.
    • onClick: The same function as onKeyDown(), but its behavior differs somewhat for click events.
    • tabIndex: Sets the tab index property of the <button /> element.
    • ref: A React ref applied to the <button /> element, used to manage focus.
    • role: A role property in accordance with WAI-ARIA guidelines.
    • aria-haspopup: An ARIA attribute indicating this button has a related menu element.
    • aria-expanded: An ARIA attribute indicating whether the menu is currently open.
  • itemProps: An array of objects meant to be spread as properties on <a /> elements that serve as menu items in your dropdown.
    • onKeyDown: A function which manages the behavior of your dropdown menu when a key is pressed while focused on a menu item.
    • tabIndex: Sets the tab index property to -1 to prevent the browser’s native focusing logic. Focus is managed programatically by this Hook.
    • role: A role property in accordance with WAI-ARIA guidelines.
    • ref: A React ref applied to each menu item, used to manage focus.
  • isOpen: A boolean value indicating if the menu is open or closed. The developer should use this value to make the menu visible or not.
  • setIsOpen: A function useful for allowing the developer to programmatically open/close the menu.
  • moveFocus: A function that moves the browser’s focus to the specified item index.