Menu
The Menu item list is a component that allows you to display related content grouped together and organized vertically. It can be used in various UI components such as dropdown, drawer, split button and more.
The structure of the Menu item list consists of list of Menu Item, which contains a Menu Item Label and a Submenu item list. The Submenu item list, in turn, contains a list of Submenu Items.
NOTE: To add functionality to the menu, you will need to write your own JavaScript code as the @qtm/css library only provides CSS for the UI of the menu.
Single level menu
<ul class="qtm-menu-item-list">
<li class="qtm-menu-item">
<a class="qtm-menu-item-label" tabindex="0">
<i class="material-icons qtm-icon">account_circle</i>
<span>Menu item</span>
</a>
</li>
<li class="qtm-menu-item">
<a class="qtm-menu-item-label" tabindex="0">
<i class="material-icons qtm-icon">account_circle</i>
<span>Menu item</span>
</a>
</li>
<li class="qtm-menu-item">
<a class="qtm-menu-item-label" tabindex="0">
<i class="material-icons qtm-icon">account_circle</i>
<span>Menu item</span>
</a>
</li>
</ul>
Multi level menu
When using menu items with icons, the icon should be positioned on the left side of the menu item label. For menu item with submenu items, a collapsed icon should also be displayed on the right side of menu item label. To select a suitable icon, please refer to the Iconography documentation.
<ul class="qtm-menu-item-list">
<li class="qtm-menu-item">
<a class="qtm-menu-item-label" tabindex="0">
<i class="material-icons qtm-icon">account_circle</i>
<span>Menu item</span>
</a>
</li>
<li class="qtm-menu-item">
<a class="qtm-menu-item-label" tabindex="0">
<i class="material-icons qtm-icon">account_circle</i>
<span>Menu item</span>
</a>
</li>
<li class="qtm-menu-item">
<a class="qtm-menu-item-label" tabindex="0">
<i class="material-icons qtm-icon">account_circle</i>
<span>Menu item</span>
<i class="material-icons qtm-icon">keyboard_arrow_up</i>
</a>
<ul class="qtm-submenu-item-list">
<li class="qtm-submenu-item" tabindex="0">
<a><span>Submenu Item</span></a>
</li>
<li class="qtm-submenu-item" tabindex="0">
<a><span>Submenu Item</span></a>
</li>
<li class="qtm-submenu-item" tabindex="0">
<a><span>Submenu Item</span></a>
</li>
</ul>
</li>
</ul>
State
Active items
Add .qtm-active
class to style menu items as active. When a submenu item is active, apply the .qtm-active
class to both it and its parent menu item to display the active style.
<ul class="qtm-menu-item-list">
<li class="qtm-menu-item">
<a class="qtm-menu-item-label" tabindex="0">
<i class="material-icons qtm-icon">account_circle</i>
<span>Menu item</span>
</a>
</li>
<li class="qtm-menu-item">
<a class="qtm-menu-item-label" tabindex="0">
<i class="material-icons qtm-icon">account_circle</i>
<span>Menu item</span>
</a>
</li>
<li class="qtm-menu-item qtm-active">
<a class="qtm-menu-item-label" tabindex="0">
<i class="material-icons qtm-icon">account_circle</i>
<span>Menu item</span>
<i class="material-icons qtm-icon">keyboard_arrow_up</i>
</a>
<ul class="qtm-submenu-item-list">
<li class="qtm-submenu-item qtm-active" tabindex="0">
<a><span>Submenu Item</span></a>
</li>
<li class="qtm-submenu-item" tabindex="0">
<a><span>Submenu Item</span></a>
</li>
<li class="qtm-submenu-item" tabindex="0">
<a><span>Submenu Item</span></a>
</li>
</ul>
</li>
</ul>
Disabled menu item
Add .qtm-disabled
to a menu item to style it and its children as disabled.
<ul class="qtm-menu-item-list">
<li class="qtm-menu-item qtm-disabled">
<a class="qtm-menu-item-label" tabindex="0">
<i class="material-icons qtm-icon">account_circle</i>
<span>Menu item</span>
</a>
</li>
<li class="qtm-menu-item">
<a class="qtm-menu-item-label" tabindex="0">
<i class="material-icons qtm-icon">account_circle</i>
<span>Menu item</span>
</a>
</li>
<li class="qtm-menu-item qtm-active qtm-disabled">
<a class="qtm-menu-item-label" tabindex="0">
<i class="material-icons qtm-icon">account_circle</i>
<span>Menu item</span>
<i class="material-icons qtm-icon">keyboard_arrow_up</i>
</a>
<ul class="qtm-submenu-item-list">
<li class="qtm-submenu-item qtm-active" tabindex="0">
<a><span>Submenu Item</span></a>
</li>
<li class="qtm-submenu-item" tabindex="0">
<a><span>Submenu Item</span></a>
</li>
<li class="qtm-submenu-item" tabindex="0">
<a><span>Submenu Item</span></a>
</li>
</ul>
</li>
</ul>
Collapsed menu items
Add .qtm-collapsed
to a menu item to hidden nesting its submenu item list.
<ul class="qtm-menu-item-list">
<li class="qtm-menu-item">
<a class="qtm-menu-item-label" tabindex="0">
<div class="qtm-icon">
<i class="material-icons">account_circle</i>
</div>
<span>Menu item</span>
</a>
</li>
<li class="qtm-menu-item">
<a class="qtm-menu-item-label" tabindex="0">
<div class="qtm-icon">
<i class="material-icons">account_circle</i>
</div>
<span>Menu item</span>
</a>
</li>
<li class="qtm-menu-item qtm-collapsed">
<a class="qtm-menu-item-label" tabindex="0">
<div class="qtm-icon">
<i class="material-icons">account_circle</i>
</div>
<span>Menu item</span>
<div class="qtm-icon">
<i class="material-icons">keyboard_arrow_down</i>
</div>
</a>
<ul class="qtm-submenu-item-list">
<li class="qtm-submenu-item" tabindex="0">
<a><span>Submenu Item</span></a>
</li>
<li class="qtm-submenu-item" tabindex="0">
<a><span>Submenu Item</span></a>
</li>
<li class="qtm-submenu-item" tabindex="0">
<a><span>Submenu Item</span></a>
</li>
</ul>
</li>
</ul>
Sizes
You can choose between 3 additional sizes: .qtm-small
, .qtm-medium
and .qtm-large
. By default, a menu item list has medium size.
<ul class="qtm-menu-item-list qtm-small">
...
</ul>
<ul class="qtm-menu-item-list qtm-medium">
...
</ul>
<ul class="qtm-menu-item-list qtm-large">
...
</ul>
Scrolling
If there are more menu items than can be displayed at once, you can make the menu item list scrollable by adding the .qtm-scrollable
class to this component. By default, the scrollable menu item list displays the first five menu items and half of the sixth one.
<ul class="qtm-menu-item-list qtm-scrollable">
...
</ul>
You can also control the number of visible items by modifying the --nb-visible-items
CSS variable:
<ul class="qtm-menu-item-list qtm-scrollable" style="--nb-visible-items: 5;">
...
</ul>