Skip to content

Files

Latest commit

28c0bad · Jul 4, 2021

History

History
154 lines (129 loc) · 3.92 KB

README.CN.md

File metadata and controls

154 lines (129 loc) · 3.92 KB

vue3-context-menu

一个使用 Vue3 制作的简洁美观简单的右键菜单组件

截图


查看演示


安装

npm install -save @imengyu/vue3-context-menu

使用

导入组件:

import '@imengyu/vue3-context-menu/lib/vue3-context-menu.css'
import ContextMenu from '@imengyu/vue3-context-menu'

createApp(App)
  .use(ContextMenu)     
<div class="box" @contextmenu="onContextMenu($event)">
  Right click to show contextmenu.
</div>

显示菜单:

onContextMenu(e : MouseEvent) {
  //prevent the browser's default menu
  e.preventDefault();
  //shou our menu
  this.$contextmenu({
    x: e.x,
    y: e.y,
    items: [
      { 
        label: "A menu item", 
        onClick: () => {
          alert("You click a menu item");
        }
      },
      { 
        label: "A submenu", 
        children: [
          { label: "Item1" },
          { label: "Item2" },
          { label: "Item3" },
        ]
      },
    ]
  });
}

同样,也可以使用组件模式显示菜单:

<context-menu v-model:show="show" :options="options" />
data() {
  return {
    show: false,
    options: {
      items:[
        {
          label: "Copy",
          onClick: () => {
            document.execCommand('copy');
          }
        },
        { label: "Paste", disabled: true },
        {
          label: "Print",
          icon: 'icon-print',
          onClick: () => {
            document.execCommand('print');
          }
        },
      ],
      iconFontClass: 'iconfont',
      customClass: "class-a",
      minWidth: 230,
      x: 0,
      y: 0
    }
  }
},
methods: {
  onButtonClick(e : MouseEvent) {
    //显示菜单
    this.show = true;
    this.options.x = e.x;
    this.options.y = e.y;
  },
}

菜单图标

菜单组件不提供任何图标,如果您想添加图标,推荐使用 iconfont 图标库,导入后填写 MenuItem 的 icon 属性,即可在菜单项前面显示图标。

默认使用 <i> 元素来显示图标。

自定义样式

如果觉得菜单样式不好看,可以重写css样式,所有的css样式定义都在 /src/ContextSubMenu.vue 中。你可以将所有样式复制出来,按需修改,存放在你的文件中。然后在导入的地方覆盖默认样式:

import '@imengyu/vue3-context-menu/lib/vue3-context-menu.css'
import '你的样式css文件路径.css'

参数说明

MenuOptions

属性 描述 类型 可选值 默认值
items 菜单结构信息 MenuItem[]
x 菜单显示X坐标 number 0
y 菜单显示Y坐标 number 0
xOffset 子菜单与父菜单X的偏移 number 0
yOffset 子菜单与父菜单Y的偏移 number 0
iconFontClass 自定义图标字体类名 string iconfont
zIndex 菜单的z-index number 2
customClass 自定义菜单类名 string
minWidth 主菜单最小宽度 number 100
maxWidth 主菜单最大宽度 number 600

MenuItem

属性 描述 类型 可选值 默认值
label 菜单项名称 string
icon 菜单项图标 string
disabled 是否禁用菜单项 boolean false
divided 是否显示分割线 boolean false
customClass 自定义子菜单class string
minWidth 子菜单最小宽度 number 100
maxWidth 子菜单最大宽度 number 600
onClick 菜单项点击事件 Function()
children 子菜单结构信息 MenuItem[]