Skip to content

Dropdown 下拉菜单

用于将一组低频或次级操作收纳到触发器附近。菜单使用 Aurora Plus 统一的 Apple 风格圆角材质,打开后会自动进行视口避让,并支持鼠标、键盘和点击外部关闭。

基础用法

items 是菜单项数组,触发器通过 trigger 插槽传入任意按钮或链接。菜单选择后会触发 select,默认关闭菜单。

项目操作

圆角菜单项使用轻量状态色,支持图标、快捷键提示、分隔线、禁用项和危险操作。

vue

菜单项结构

字段说明类型
id菜单项唯一标识string / number
label显示文字;也可使用 textstring
value业务值,同时作为未设置 command 时的回传值unknown
icon图标组件Component
shortcut仅展示的快捷键提示string
disabled是否禁用boolean
danger是否使用危险色boolean
commandcommand 事件的回传值unknown
type / dividertype="divider"divider=true 渲染分隔线

使用建议

  • 菜单项应使用明确的动词和对象;同一层级避免放入过多低频操作。
  • 需要二元开关或多选状态时使用 AuSwitch / AuCheckbox,不要把菜单项当作持久状态控件。
  • 触发器应提供可见文字;纯图标触发器需要 aria-labeltitle
  • 破坏性操作设置 danger,并在 beforeSelect 中完成确认或权限判断。

Attributes

属性说明类型默认值
modelValue菜单是否打开booleanfalse
items菜单项数组array[]
placement菜单相对触发器的位置stringbottom-start
offset菜单与触发器的间距number6
matchTriggerWidth是否使用触发器宽度作为最小宽度booleanfalse
disabled是否禁用打开booleanfalse
closeOnSelect选择后是否关闭booleantrue
closeOnClickOutside点击外部是否关闭booleantrue
beforeSelect选择前的同步或异步判断;返回 false 会取消functionnull
itemKey自定义菜单项 key 解析函数functionnull
teleported是否 Teleport 到 appendTobooleantrue
appendToTeleport 目标string / elementbody
ariaLabel菜单无障碍名称string下拉菜单
zIndex菜单层级number1200

placement 可选 top-starttoptop-endbottom-startbottombottom-endtopbottom 居中对齐,带 start / end 后缀时按对应边缘对齐。未声明的属性会透传到根元素。

Events

事件名说明参数
update:modelValue打开状态变化(visible)
open菜单打开()
close菜单关闭(reason)
select选择菜单项(item)
command回传 item.commanditem.value 或 item 本身(command)
cancelbeforeSelect 返回 false(item)

Slots

插槽名说明
trigger触发菜单的按钮或链接
default未提供 trigger 时作为触发器内容
menu自定义菜单内容;可接收 closeselect 作用域方法

打开菜单后,ArrowUpArrowDownHomeEnd 在可用菜单项间移动,Escape 关闭并恢复触发器焦点。

Aurora Plus · Vue 3 Component Library