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.
There are two ways to use this component: using slot or using items property
Using Slot
You can use slots to add menu items and submenu items components inside a menu item list component. This gives you greater control over the layout and content of the menu item list.
Single level menu
<qtm-menu-item-list>
<qtm-menu-item id="menu1">
<qtm-menu-item-label>
<qtm-icon icon="account_circle"></qtm-icon>
<qtm-typography>Menu Item</qtm-typography>
</qtm-menu-item-label>
</qtm-menu-item>
<qtm-menu-item id="menu2">
<qtm-menu-item-label>
<qtm-icon icon="account_circle"></qtm-icon>
<qtm-typography>Menu Item</qtm-typography>
</qtm-menu-item-label>
</qtm-menu-item>
<qtm-menu-item id="menu3">
<qtm-menu-item-label>
<qtm-icon icon="account_circle"></qtm-icon>
<qtm-typography>Menu Item</qtm-typography>
</qtm-menu-item-label>
</qtm-menu-item>
</qtm-menu-item-list>
Multi-level menu
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 Icon documentation.
<qtm-menu-item-list>
<qtm-menu-item id="menu1">
<qtm-menu-item-label>
<qtm-icon icon="account_circle"></qtm-icon>
<qtm-typography>Menu Item</qtm-typography>
</qtm-menu-item-label>
</qtm-menu-item>
<qtm-menu-item id="menu2">
<qtm-menu-item-label>
<qtm-icon icon="account_circle"></qtm-icon>
<qtm-typography>Menu Item</qtm-typography>
</qtm-menu-item-label>
</qtm-menu-item>
<qtm-menu-item id="menu3">
<qtm-menu-item-label>
<qtm-icon icon="account_circle"></qtm-icon>
<qtm-typography>Menu Item</qtm-typography>
<qtm-icon icon="keyboard_arrow_up"></qtm-icon>
</qtm-menu-item-label>
<qtm-submenu-item-list>
<qtm-submenu-item id="submenu1">Submenu Item</qtm-submenu-item>
<qtm-submenu-item id="submenu2">Submenu Item</qtm-submenu-item>
<qtm-submenu-item id="submenu3">Submenu Item</qtm-submenu-item>
</qtm-submenu-item-list>
</qtm-menu-item>
</qtm-menu-item-list>
Using items property
You can also use the items property to generate the menu item list dynamically. This property has the following format:
type MenuItemItemType = {
label: string,
id: string,
icon?: string | IconType,
children?: [
{
label: string,
id: string,
}
],
};
Single level menu
const items=[
{ label: 'Menu item', id: 'menu1', icon: 'account_circle' },
{ label: 'Menu item', id: 'menu2', icon: 'account_circle' },
{ label: 'Menu item', id: 'menu3', icon: 'account_circle' },
]
<qtm-menu-item-list :items="items"></qtm-menu-item-list>
Multi-level menu
For menu items that contain submenu items, a collapsed icon will be automatically displayed on the right side of the menu label. When a menu item with a submenu is clicked, the icon will dynamically expand or collapse.
const items=[
{label: "Menu item", id: "menu1", icon: "account_circle"},
{label: "Menu item", id: "menu2", icon: "account_circle"},
{
label: "Menu item", id: "menu3", icon: "account_circle",
children: [
{ label: 'Submenu item', id: 'submenu1' },
{ label: 'Submenu item', id: 'submenu2' },
{ label: 'Submenu item', id: 'submenu3' },
],
},
]
<qtm-menu-item-list :items="items"></qtm-menu-item-list>
Multi-level menu with custom icon
To select an appropriate icon, please consult the Icon component documentation.
You can include an icon in the items property by adding either the icon name or an icon object with the following format:
type IconType = {
icon: string,
classes?: string,
lib?: IconLibType,
size?: IconSizeType,
variant?: IconVariantType,
};
const items=[
{label: "Menu item", id: "menu1", icon: {icon: 'applied_settings', lib:"business"}},
{label: "Menu item", id: "menu2", icon: {icon: 'applied_settings', lib:"business"}},
{
label: "Menu item", id: "menu3",
icon: { icon: 'applied_settings', lib:"business"}
children: [
{ label: 'Submenu item', id: 'submenu1' },
{ label: 'Submenu item', id: 'submenu2' },
{ label: 'Submenu item', id: 'submenu3' },
],
},
]
<qtm-menu-item-list :items="items"></qtm-menu-item-list>
Properties
All the properties listed below can be applied directly to the menu item list tag. This means that they are applicable to the menu item list generated by using either the slot or the items prop method.
NOTE: All menu item element and submenu item element must have an id attribute for the features to work properly.