Multi-Level Menu Component
Simple multi-level menu on Vue3
Usage
npm install -save vue3-menu
import { Vue3Menu } from 'vue3-menu';
To apply styles
import 'vue3-menu/src/assets/menu.css';
Or you can add your own menu styles using the .epic-menu class for menu
Menu props
Prop | Default | Required | Type |
---|---|---|---|
items | true |
MenuItemProps[] Array of menu items |
|
appendTo | "body" | false |
string The element where the menu will be added during rendering |
anchor | [0, 1] | false |
[number, number] Two values setting the starting position or anchor point of the menu relative to its target |
offset | [0, 0] | false |
[number, number] An array of two numbers to offset the menu horizontally and vertically in pixels |
behavior | "click" | false |
"click" | "hover" Specifies exactly how the menu will open, either by click or on hover |
customClassName | false |
string Additional class name for customizing menus with custom styles. When rendering the menu uses Teleport, that's why this property was added |
|
context | false |
boolean Defines the context menu display mode |
MenuItemProps
Prop | Default | Required | Type |
---|---|---|---|
icon | false |
ComponentInternalInstance Adds an icon before the menu item label. |
|
label | false |
string | number Menu item label |
|
items | false |
MenuItemProps[] An array of settings for creating submenus. |
|
style | false |
StyleValue Defining styles for menu item formatting |
|
shortcut | false |
string Hotkey indicator. The indicator is inserted after the menu item label |
|
component | false |
ComponentInternalInstance Instead of a standard menu item, you can add any component |
|
separator | false |
boolean Instead of a menu item there will be a separator |
|
command | false |
function Handler called when a menu item is clicked |
|
stopPropagation | false |
boolean stopPropagation |
Examples
Simple menu
const items = [{
label: 'Upload from computer',
}, {
label: 'Search the web',
}, {
separator: true,
}, {
label: 'Drive',
}, {
label: 'Photos',
}, {
label: 'By URL',
}, {
label: 'Camera',
}];
<template>
<div>
<Menu :items="items"/>
</div>
</template>