2.0 KiB
2.0 KiB
Menu 组件文档
1. 组件概述
BimMenu 是一个通用的菜单列表组件。
- 位置:
src/components/menu/index.ts - 功能: 渲染一组
BimMenuItem,支持分组、排序、图标、快捷键提示和多级子菜单。 - 特点: 数据驱动(通过 Item 类实例),支持国际化。
2. 组件类 API
BimMenu
构造函数
new BimMenu(options: MenuOptions)
方法
| 方法名 | 参数 | 返回值 | 描述 |
|---|---|---|---|
init |
() |
void |
初始化,渲染 DOM |
destroy |
() |
void |
销毁,清理事件和子菜单 |
getElement |
() |
HTMLElement |
获取根 DOM 元素 (实现 IRightKeyContent) |
BimMenuItem (基类)
所有菜单项必须继承此抽象类。
| 方法/属性 | 类型 | 描述 |
|---|---|---|
id |
string |
唯一标识 |
group |
string |
分组 ID (默认 'default') |
order |
number |
排序权重 |
getLabel() |
string |
获取显示文本 |
onClick() |
void |
点击回调 |
getIcon() |
string? |
获取图标 HTML |
getChildren() |
BimMenuItem[]? |
获取子菜单项 |
3. UI 详细描述
- 根元素:
<ul class="bim-menu"> - 分组分割线:
<li class="bim-menu-divider"> - 菜单项:
<li class="bim-menu-item">- 图标槽:
.bim-menu-item-icon - 文本槽:
.bim-menu-item-label - 箭头槽:
.bim-menu-item-arrow(仅当有子菜单时)
- 图标槽:
4. 逻辑流程
- 分组与排序:
- 根据
item.group将项归类。 - 根据
options.groupOrder对组进行排序。 - 组内根据
item.order排序。
- 根据
- 多级菜单:
- 鼠标进入 (
mouseenter) 带子菜单的项时,创建新的BimMenu实例。 - 将新实例挂载到临时的 fixed 容器中。
- 自动计算位置(通常在父项右侧,空间不足时翻转)。
- 鼠标进入 (
5. 类型定义
export interface MenuOptions {
items: BimMenuItem[];
groupOrder?: string[];
}