Skip to content

Menu 导航菜单

AuMenuAuMenuGroupAuMenuItem 用于侧栏、设置分类和工作区视图等持续可见的导航。临时操作集合应使用 AuDropdownAuContextMenu

基础用法

使用 v-model 管理当前项,菜单项的 index 是唯一业务值。图标既可通过 icon 属性传入,也可由 icon 插槽完全自定义。

侧栏导航

支持分组、选中、图标、徽标、状态点和完整键盘导航。

vue
<template>
  <div class="menu-demo">
    <div class="menu-demo__box">
      <div class="menu-demo__menu">
        <AuMenu v-model="activeItem" aria-label="主导航">
          <AuMenuGroup label="分析工作台" />
          <AuMenuItem index="dashboard" label="总览" :icon="IconLayoutDashboard">总览</AuMenuItem>
          <AuMenuItem index="daily-review" label="每日复盘" :icon="IconCalendar">每日复盘</AuMenuItem>
          <AuMenuItem index="auction" label="竞价决策" :icon="IconBolt" badge="LIVE">竞价决策</AuMenuItem>
          <AuMenuItem index="screener" label="AI 选股" :icon="IconSparkles" badge="LIVE">AI 选股</AuMenuItem>
          <AuMenuItem index="strategy" label="策略中心" :icon="IconChartHistogram">策略中心</AuMenuItem>
          <AuMenuItem index="backtest" label="策略回测" :icon="IconChartLine">策略回测</AuMenuItem>
          <AuMenuGroup label="我的工作区" spaced />
          <AuMenuItem index="watchlist" label="自选观察" :icon="IconStar">自选观察</AuMenuItem>
          <AuMenuItem index="risk" label="风控中心" :icon="IconShieldCheck">风控中心</AuMenuItem>
          <AuMenuItem index="ai-settings" label="AI 模型设置" :icon="IconSettings" indicator>AI 模型设置</AuMenuItem>
          <AuMenuItem index="account" label="账户安全" :icon="IconLock">账户安全</AuMenuItem>
          <AuMenuGroup label="系统管理" spaced />
          <AuMenuItem index="admin" label="管理中心" :icon="IconAdjustmentsHorizontal">管理中心</AuMenuItem>
          <AuMenuItem index="content" label="复盘内容管理" :icon="IconCalendarStats">复盘内容管理</AuMenuItem>
        </AuMenu>
      </div>
    </div>
  </div>
</template>
<script setup>
import { ref } from 'vue';
import {
  AuMenu,
  AuMenuGroup,
  AuMenuItem,
  IconAdjustmentsHorizontal,
  IconBolt,
  IconCalendar,
  IconCalendarStats,
  IconChartHistogram,
  IconChartLine,
  IconLayoutDashboard,
  IconLock,
  IconShieldCheck,
  IconSparkles,
  IconStar,
  IconSettings,
} from 'aurora-plus';
const activeItem = ref('dashboard');
</script>
<style scoped>
.menu-demo {
  width: min(100%, 300px);
}
.menu-demo__box {
  box-sizing: border-box;
  width: 100%;
  padding: 18px 14px;
  border: 1px solid rgba(105, 123, 154, 0.13);
  border-radius: 12px;
}
.menu-demo__menu {
  width: 100%;
}
</style>

使用建议

  • 菜单适合放在持续可见的侧栏或设置区域中,当前项会显示浅色选中面和左侧激活条。
  • 分组标题使用 AuMenuGroup,需要更大的段落间距时设置 spaced
  • 纵向菜单使用 ArrowUpArrowDown,横向菜单使用 ArrowLeftArrowRightHomeEnd 定位首尾项,Enter 和 Space 选择当前项。
  • 折叠菜单应为每个菜单项提供 label,组件会将它保留为无障碍名称与鼠标提示。

AuMenu API

Attributes

属性说明类型默认值
modelValue当前菜单项的 indexstring / number''
mode排列方向,可选 vertical / horizontalstringvertical
collapse纵向菜单是否折叠为仅图标模式booleanfalse
disabled是否禁用整个菜单booleanfalse
loop方向键到达边界后是否循环booleantrue
ariaLabel菜单的无障碍名称string导航菜单

未声明的属性会透传至根 ul[role="menu"]

Events

事件名说明参数
update:modelValue选中项发生变化(index)
select菜单项被选择;重复选择当前项也会触发(index, event)
change选中值实际变化(index, previousIndex)

Slots

插槽名说明
default放置 AuMenuItem

Exposes

属性或方法说明
focus(index?)聚焦指定可用项;未找到时聚焦当前项或首个可用项
menuRef菜单根元素引用

AuMenuGroup API

Attributes

属性说明类型默认值
label分组标题string''
spaced是否增加与上一组的间距booleanfalse

Slots

插槽名说明
default自定义分组标题

AuMenuItem API

Attributes

属性说明类型默认值
index菜单项唯一值string / number必填
label文本回退值,并为折叠模式提供无障碍名称string''
iconAurora Plus 图标组件Componentnull
iconColor图标颜色string''
badge尾部徽标文本string / number''
indicator是否显示尾部状态点booleanfalse
disabled是否禁用当前项booleanfalse
title原生鼠标提示;折叠时默认回退为 labelstring''
ariaCurrent选中项的 aria-currentstringpage

Slots

插槽名作用域参数说明
default菜单项文字
icon{ active, disabled }自定义图标
suffix{ active, disabled }徽标、数量或快捷提示等尾部内容

Aurora Plus · Vue 3 Component Library