Menu

Menus display a list of choices on a temporary surface. They appear when users interact with a button, action, or other control.

Interactive Demo

Open Controlled MenuItem 1Item 2Item 3

Usage

Menu with Anchor SetNew Text FileNew File...New WindowOpen File...Open Folder...SaveSave As...

<span style="position: relative; display: inline-block">
  <md-button id="some-menu-btn">Menu with Anchor Set</md-button>
  <md-menu id="some-menu" for="some-menu-btn">
    <md-menu-item id="item-new-text-file">New Text File</md-menu-item>
    <md-menu-item id="item-new-file">New File...</md-menu-item>
    <md-menu-item id="item-new-window">New Window</md-menu-item>
    <md-divider></md-divider>
    <md-menu-item id="item-open-file">Open File...</md-menu-item>
    <md-menu-item id="item-open-folder">Open Folder...</md-menu-item>
    <md-divider></md-divider>
    <md-menu-item id="item-save">Save</md-menu-item>
    <md-menu-item id="item-save-as">Save As...</md-menu-item>
  </md-menu>
</span>

<label style="display: block">event:
  <input type="text" readonly id="some-menu-fires" />
</label>

<script>
  const menuButton = document.getElementById('some-menu-btn');
  const menuOutput = document.getElementById('some-menu-fires');
  const menu = document.getElementById('some-menu');

  menuButton.addEventListener('click', () => {
    menu.open = !menu.open;
  });

  menu.addEventListener('select', (e) => {
    menuOutput.value = `select: { index: ${e.detail.index}, item: #${e.detail.item.id}\n}`;
  });
</script>

Properties

NameTypeDefaultDescription
openBooleanfalseWhether the menu is open (inherited from Menu).
quickBooleanfalseWhether to use quick mode for menu opening (inherited from Menu).
alignPlacement'bottom-start'The alignment of the menu relative to the anchor (inherited from Menu).
alignStrategyStrategy'absolute'The positioning strategy for the menu (inherited from Menu).
offsetNumber0The offset distance for the menu (inherited from Menu).
keepOpenBlurBooleanfalseWhether to keep the menu open when focus is lost (inherited from Menu).
keepOpenClickItemBooleanfalseWhether to keep the menu open when an item is clicked (inherited from Menu).
keepOpenClickOutsideBooleanfalseWhether to keep the menu open when clicking outside (inherited from Menu).

Methods

NameDescription
show()Opens the menu.
hide()Closes the menu.

Events

NameTypeDescription
selectCustomEvent<{index: number, item: HTMLElement}>Dispatched when a menu item is selected. The detail property contains the selected item's index and element.