Skip to content

DropdownMenu 下拉菜单

桌面风格的弹出菜单,支持点击触发和右键菜单。

基本用法

通过 ADropdownMenu 包裹触发元素,AMenuItem 定义菜单项。

vue
<ADropdownMenu>
  <template #trigger>
    <ABtn>操作</ABtn>
  </template>
  <AMenuItem label="新建文件" />
  <AMenuItem label="打开文件" />
  <AMenuDivider />
  <AMenuItem label="保存" accelerator="⌘S" />
  <AMenuItem label="另存为" disabled />
</ADropdownMenu>

危险操作

设置 danger 标记危险操作项。

vue
<ADropdownMenu>
  <template #trigger>
    <ABtn>更多</ABtn>
  </template>
  <AMenuItem label="编辑" />
  <AMenuDivider />
  <AMenuItem label="删除" danger />
</ADropdownMenu>

右键菜单

设置 trigger="contextmenu" 右键触发。

在此区域右键点击
vue
<ADropdownMenu trigger="contextmenu">
  <template #trigger>
    <div>在此区域右键点击</div>
  </template>
  <AMenuItem label="复制" />
  <AMenuItem label="粘贴" />
  <AMenuDivider />
  <AMenuItem label="全选" />
</ADropdownMenu>

分组

使用 AMenuGroup 对菜单项进行分组。

vue
<ADropdownMenu>
  <template #trigger>
    <ABtn>分组菜单</ABtn>
  </template>
  <AMenuGroup label="编辑">
    <AMenuItem label="撤销" />
    <AMenuItem label="重做" />
  </AMenuGroup>
  <AMenuDivider />
  <AMenuGroup label="视图">
    <AMenuItem label="缩放" />
    <AMenuItem label="全屏" />
  </AMenuGroup>
</ADropdownMenu>

API

名称类型默认值说明
modelValuebooleanfalse是否显示
trigger'click' | 'contextmenu' | 'hover''click'触发方式
placement'bottom-start' | 'bottom' | 'bottom-end' | 'top-start' | 'top' | 'top-end''bottom-start'弹出位置
disabledbooleanfalse是否禁用
autoClosebooleantrue点击菜单项后自动关闭
名称说明
update:modelValue显示状态变化
open打开时触发
close关闭时触发
名称类型默认值说明
labelstring菜单项文本
disabledbooleanfalse禁用
dangerbooleanfalse危险操作模式
iconstring图标类名(RemixIcon)
acceleratorstring快捷键提示文本

交互特性

  • 点击外部自动关闭
  • 选中菜单项自动关闭(autoClose
  • 禁用状态阻止交互
  • 危险操作红色高亮
  • 右键菜单定位到鼠标位置
  • fade + translate 弹出动画

MIT License