Intro

Unlike a regular button, the menu button features an expand icon that triggers a dropdown menu (sap.ui.unified.Menu). The menu button was introduced to address numerous limitations of the action sheet. By default, the menu is positioned below the button, but it can also be displayed above if there is not enough space.

Usage

Use the menu button if:

Do not use the menu button if:

Responsiveness

On smartphones (size S), the menu opens in a full screen dialog. The button label becomes the title of the dialog. The footer contains a Cancel button. Navigation is available with a Back button.

Menu button – Size S

Menu button – Size S

On tablet and desktop devices (Size M/L), the menu button triggers a cascading dropdown menu.

Menu button, regular and split mode - size M/L

Menu button, regular and split mode - size M/L

Layout

The menu button consists of a button with a label and an expand icon that indicates a menu.

The button has two different modes:

  1. Regular button mode (default): The menu button appears as a regular button. The user clicks or taps it to open a menu. In regular mode, you can use an icon in front of the label description.
  2. Split button mode: The menu button appears as a split button. The user clicks or taps the button to fire the menu’s default action, and clicking/tapping the arrow opens the menu.

The split button is separated into two areas: the label and the icon. The separator between them signals that the two areas result in different actions. The split button supports the emphasized, positive, and negative states of the regular button. The split button consolidates a set of command variations, especially when one of the commands is used more often.

In split mode, the label depends on the default action. If the default action is displayed with an icon only, all the menu items must contain icons.

For more information about cozy and compact modes, see content density.

Width and Truncation

If no fixed width is set, the width of the button is set automatically, depending on the text and the container. The maximum width of the menu button is 12 rem (192 px).

If the label is very long, the maximum width ensures that the menu button is consistent with the width of the menu.

After reaching the maximum width or the set fixed width, the text truncates.

Text-only menu button in compact mode

Text-only menu button in compact mode

Text-only menu button in cozy mode

Text-only menu button in cozy mode

Icon-only menu button in compact mode

Icon-only menu button in compact mode

Icon-only menu button in cozy mode

Icon-only menu button in cozy mode

Menu button with truncated text

Menu button with truncated text

Types

Regular Menu Button

Regular type (default): The user clicks or taps the button to open the menu.

Split Menu Button

The user clicks or taps the button to fire the default action. Clicking or tapping the arrow icon opens a menu.

Regular menu button

Regular menu button

Split menu button

Split menu button

Components

The menu button consists of a button with a label and/or icon and an expanding icon that indicates that a menu is available.

In split mode, the two basic elements – the label and the expanding icon – are separated.

Menu button components

Menu button components

Behavior and Interaction

On Tablets and Desktops

The menu button displays a dropdown menu (sap.ui.unified.Menu) as currently implemented.

On Smartphones

The menu opens in a full screen dialog. The button’s label becomes the title of the dialog.

Split Button

Clicking/tapping the label area triggers one of two types of behavior, which the app developer can configure individually:

Expand Icon

If the user clicks or taps the expand icon, the dropdown menu opens.

Styles

The menu button supports all states of the button (sap.m.button).

Default

Default

Positive (property: type = accept)

Positive (property: type = accept)

Transparent

Transparent

Negative (property: type = reject)

Negative (property: type = reject)

Ghost

Ghost

Emphasized

Emphasized

Resources

Elements and Controls

Implementation