Overriding the Default Rendering
The Menu enables you to override the default rendering of its items.
To customize the item rendering, use any of the following approaches:
- Override the rendering of the innermost item part
- Override the rendering of the item link
- Add trailing item actions
- Customize group headers
- Set specific content for the item children
Items
By default, the innermost Menu item part displays the item text. If an item has a description, the Menu also displays secondary text below its label.
To override the rendering of that innermost item part, either:
- Override the innermost part for a specific item by using the
renderproperty.
- Override the innermost part for all items by using the
itemRenderproperty of the Menu.
Links
By default, the Menu item link includes its configured icon, text, description, trailing actions, and submenu arrow.
To override the rendering of the item link, either:
- Override the item link for a specific item by using the
linkRenderproperty.
- Override the item link for all items by using the
linkRenderproperty of the Menu.
Item Actions
To add non-interactive trailing content after the item text, use actionsRender. It is suitable for keyboard shortcut hints, badges, or status indicators, but not for focusable controls. The renderer receives MenuItemActionsRenderProps with two properties, item and itemId.
You can set actionsRender at two levels:
- Menu—Use the same renderer for all items.
- Individual item—Set
actionsRenderon aMenuItemcomponent or aMenuItemModelobject to override the Menu's renderer. Set it tonullto hide actions for that item.
The following example displays live order counts across nested review, fulfillment, and history menus.
Group Headers
To replace the default icon and text of a group header, set the item's groupHeaderRender property. Use it on a MenuItem component or a MenuItemModel object with groupHeader property set to true.
The renderer receives MenuItemGroupHeaderRenderProps, which exposes the original item and its hierarchical, zero-based itemId.
The following example adds folder icons and reporting periods to custom group headers in nested finance and operations menus. Open either menu to explore the reports.
Content
You can set specific content that will replace the children of a Menu item by using the contentRender property.
If a component that is rendered inside the content utilizes a popup that is rendered outside the content, the Menu closes the item as soon as the user hovers over the popup. Even if the popup is rendered inside the content, it may still overflow, which will cause the mouse to leave the Menu when the popup is closed.
To avoid the accidental closing of content items:
- Set the
idsof the content items to thecustomCloseItemIdsproperty of the Menu. - Provide a Close button.