Menus offer a contextual set of options in a Popover.
Use for a single-level menu of options.
<div class="mds-menu">
<div class="mds-popover__wrapper mds-popover--overlay-closable mds-popover--overlay-dismissible">
<button class="mds-button mds-popover__trigger mds-button--secondary" type="button" data-mds-popover="mds-popover--4501" aria-haspopup="true" aria-expanded="true" aria-controls="mds-popover--4501">
<span class="mds-button__text"> Menu </span>
<svg class="mds-icon mds-button__icon mds-button__icon--right" aria-hidden="true">
<use xlink:href="/icons/mds.svg#caret-down--s"> </use>
</svg>
</button>
<div class="mds-popover__overlay"></div>
<section id="mds-popover--4501" class="mds-popover mds-popover mds-popover--bottom-center mds-popover--width-200px" role="tooltip">
<header class="mds-popover__header">
<h2 class="mds-popover__title"> Workbook </h2>
</header>
<div class="mds-popover__content">
<ul class="mds-list-group" role="menu">
<li class="mds-list-group__item " role="none">
<a href="#" class="mds-list-group__link" role="menuitem">
<span class="mds-list-group__item-text"> Create New </span>
</a>
</li>
<li class="mds-list-group__item " role="none">
<a href="#" class="mds-list-group__link" role="menuitem">
<span class="mds-list-group__item-text"> Open </span>
</a>
</li>
<li class="mds-list-group__item mds-list-group__item--disabled" role="none">
<a href="#" class="mds-list-group__link" aria-disabled="true" role="menuitem">
<span class="mds-list-group__item-text"> Save </span>
</a>
</li>
<li class="mds-list-group__item " role="none">
<a href="#" class="mds-list-group__link" role="menuitem">
<span class="mds-list-group__item-text"> Save As </span>
</a>
</li>
</ul>
</div>
</section>
</div>
</div>
<div class="mds-menu">
<div class="mds-popover__wrapper mds-popover--overlay-closable mds-popover--overlay-dismissible">
<button class="mds-button mds-popover__trigger mds-button--secondary" type="button" data-mds-popover="mds-popover--24730" aria-haspopup="true" aria-expanded="true" aria-controls="mds-popover--24730">
<span class="mds-button__text"> Menu </span>
<svg class="mds-icon mds-button__icon mds-button__icon--right" aria-hidden="true">
<use xlink:href="/icons/mds.svg#caret-down--s"> </use>
</svg>
</button>
<div class="mds-popover__overlay"></div>
<section id="mds-popover--24730" class="mds-popover mds-popover mds-popover--bottom-center mds-popover--width-200px" role="tooltip">
<div class="mds-popover__content">
<ul class="mds-list-group" role="menu">
<li class="mds-list-group__item " role="none">
<a href="#" class="mds-list-group__link" role="menuitem">
<span class="mds-list-group__item-text"> Create New </span>
</a>
</li>
<li class="mds-list-group__item " role="none">
<a href="#" class="mds-list-group__link" role="menuitem">
<span class="mds-list-group__item-text"> Open </span>
</a>
</li>
<li class="mds-list-group__item mds-list-group__item--disabled" role="none">
<a href="#" class="mds-list-group__link" aria-disabled="true" role="menuitem">
<span class="mds-list-group__item-text"> Save </span>
</a>
</li>
<li class="mds-list-group__item " role="none">
<a href="#" class="mds-list-group__link" role="menuitem">
<span class="mds-list-group__item-text"> Save As </span>
</a>
</li>
</ul>
</div>
</section>
</div>
</div>
Include an icon to indicate a default or previously chosen item from a list of options.
<div class="mds-menu">
<div class="mds-popover__wrapper mds-popover--overlay-closable mds-popover--overlay-dismissible">
<button class="mds-button mds-popover__trigger mds-button--secondary" type="button" data-mds-popover="mds-popover--43349" aria-haspopup="true" aria-expanded="true" aria-controls="mds-popover--43349">
<span class="mds-button__text"> Menu </span>
<svg class="mds-icon mds-button__icon mds-button__icon--right" aria-hidden="true">
<use xlink:href="/icons/mds.svg#caret-down--s"> </use>
</svg>
</button>
<div class="mds-popover__overlay"></div>
<section id="mds-popover--43349" class="mds-popover mds-popover mds-popover--bottom-center mds-popover--width-200px" role="tooltip">
<div class="mds-popover__content">
<ul class="mds-list-group" role="menu">
<li class="mds-list-group__item mds-list-group__item--active" role="none">
<a href="#" class="mds-list-group__link" role="menuitem">
<span class="mds-list-group__item-text"> Option 1 </span>
<svg class="mds-icon mds-list-group__active-icon" aria-hidden="true">
<use xlink:href="/icons/mds.svg#check--s"> </use>
</svg>
</a>
</li>
<li class="mds-list-group__item " role="none">
<a href="#" class="mds-list-group__link" role="menuitem">
<span class="mds-list-group__item-text"> Option 2 </span>
</a>
</li>
<li class="mds-list-group__item mds-list-group__item--disabled" role="none">
<a href="#" class="mds-list-group__link" aria-disabled="true" role="menuitem">
<span class="mds-list-group__item-text"> Option 3 </span>
</a>
</li>
<li class="mds-list-group__item " role="none">
<a href="#" class="mds-list-group__link" role="menuitem">
<span class="mds-list-group__item-text"> Option 4 </span>
</a>
</li>
</ul>
</div>
</section>
</div>
</div>
check--s
, to indicate selected item.$mds-text-color-link-default
for selected-item text and $mds-interactive-color-primary-default
for selected-item icon.Menus are built using List Groups and Popovers. The size of a menu is defined by the nested List Group and the width is defined by the nested Popover. Refer to the Sizing sections of the List Group and Popover component pages for the corresponding documentation.
caret-down--s
.caret-down--s
, is included to the right of the label.escape
.mds-popover__title
of a Popover, teams should use the header tag (<h#>
) which properly places the content within their product's information hierarchy. As menu is simply a wrapper, the accessibility guidelines covered in Popovers and List Groups should be followed, with the following caveats:
role=”tooltip”
to role=”menu”
to present a list of actions, mds-list-group
.role=”menuitem”
to link items, mds-list-group__link
.aria-labelledby=”[Trigger Button ID]”
attribute.tabindex=”-1”
to both Popover, mds-popover
, and List Group links item, mds-list-group__item
.Additionally, update the Button component that triggers the menu to change its behavior:
aria-haspopup=”true”
to the trigger button.aria-expanded=”false”
to the trigger button and dynamically update the value to true
when menu is open.aria-controls=”[Popover ID]”
to the trigger button.Follow class reference sections in Popovers and List Groups.