Skip to content

ContextMenu 右键菜单 ​

在指定区域内右键唤出的菜单,位置会按视口边界自动修正。

基础用法 ​

vue
<template>
  <KbContextMenu :items="items" @select="onSelect">
    <div style="padding:40px;border:1px dashed #dcdfe6">在此区域右键</div>
  </KbContextMenu>
</template>

<script setup>
const items = [
  { key: 'copy', label: '复制' },
  { key: 'paste', label: '粘贴' },
  { key: 'delete', label: '删除', divided: true },
]
</script>
在此区域点击右键

禁用项与分隔线 ​

disabled 的菜单项会跳过 select,divided 会在该项上方画一条分隔线。

vue
<script setup>
const items = [
  { key: 'edit', label: '编辑', icon: 'edit' },
  { key: 'lock', label: '锁定', disabled: true },
  { key: 'remove', label: '删除', divided: true },
]
</script>

关闭方式 ​

方式说明
选中菜单项派发 select 后自动关闭
点击菜单外部自动关闭
Esc自动关闭
调用实例方法ref.close()
vue
<template>
  <KbContextMenu ref="menu" :items="items">…</KbContextMenu>
</template>

<script setup>
import { ref } from 'vue'
const menu = ref()
const closeMenu = () => menu.value?.close()
</script>

API ​

Props ​

属性类型默认值说明
itemsContextMenuItem[][]菜单项
disabledbooleanfalse禁用右键菜单

ContextMenuItem 字段:key、label、icon?、disabled?、divided?。

事件 ​

事件参数说明
selectstring选中项的 key
open—菜单打开
close—菜单关闭

实例方法 ​

方法说明
close()主动关闭菜单