添加折叠面板
This commit is contained in:
@@ -461,28 +461,19 @@ interface IBimComponent {
|
||||
- **BimEngine**: 总控制器,通过 Manager 统一管理所有组件
|
||||
|
||||
#### 为什么必须通过 Manager?
|
||||
1. **统一管理**: Manager 负责组件的生命周期管理,确保资源正确释放
|
||||
1. **强制统一管理**: SDK 入口不再导出组件类(如 `BimDialog`),物理上切断了直接实例化的可能。
|
||||
2. **主题和语言**: Manager 统一应用主题和国际化,保证一致性
|
||||
3. **事件总线**: Manager 可以监听和发送事件,实现组件间解耦通信
|
||||
- 简单场景:直接调用 Manager 方法
|
||||
- 复杂场景:通过事件总线进行发布订阅
|
||||
4. **容器管理**: Manager 管理组件的挂载容器,避免冲突
|
||||
5. **API 封装**: Manager 提供统一的公共 API,隐藏组件实现细节
|
||||
|
||||
#### 使用示例
|
||||
|
||||
**❌ 错误方式 - 直接使用组件:**
|
||||
**❌ 错误方式 - 尝试直接导入组件:**
|
||||
```typescript
|
||||
// 错误:直接创建和使用组件
|
||||
import { BimDialog } from 'bim-engine-sdk';
|
||||
|
||||
const dialog = new BimDialog({
|
||||
container: document.getElementById('container'),
|
||||
title: '测试弹窗',
|
||||
content: '这是内容'
|
||||
});
|
||||
dialog.init();
|
||||
// 问题:没有通过 Manager 管理,无法统一应用主题、语言等
|
||||
// 错误:BimDialog 类未导出,会导致编译错误
|
||||
import { BimDialog } from 'bim-engine-sdk';
|
||||
// Error: Module 'bim-engine-sdk' has no exported member 'BimDialog'.
|
||||
```
|
||||
|
||||
**✅ 正确方式 - 通过 Manager 使用:**
|
||||
@@ -500,41 +491,15 @@ const dialog = engine.dialog.create({
|
||||
title: '测试弹窗',
|
||||
content: '这是内容'
|
||||
});
|
||||
// 优势:
|
||||
// 1. 自动应用当前主题
|
||||
// 2. 自动应用当前语言
|
||||
// 3. 统一管理弹窗实例
|
||||
// 4. 可以监听事件总线
|
||||
```
|
||||
|
||||
**✅ 另一个正确示例 - 工具栏按钮:**
|
||||
```typescript
|
||||
// 正确:通过 ToolbarManager 操作工具栏
|
||||
import { BimEngine } from 'bim-engine-sdk';
|
||||
|
||||
const engine = new BimEngine('container');
|
||||
|
||||
// 通过 ToolbarManager 添加按钮
|
||||
engine.toolbar.addButton({
|
||||
id: 'my-button',
|
||||
groupId: 'group-1',
|
||||
type: 'button',
|
||||
label: 'toolbar.myButton',
|
||||
icon: '<svg>...</svg>',
|
||||
onClick: (button) => {
|
||||
console.log('按钮被点击');
|
||||
}
|
||||
});
|
||||
|
||||
// 通过 ToolbarManager 控制可见性
|
||||
engine.toolbar.setButtonVisibility('my-button', false);
|
||||
```
|
||||
|
||||
#### 组件导出说明
|
||||
虽然 `src/index.ts` 中导出了 `BimButtonGroup` 和 `Toolbar` 组件,但这是为了:
|
||||
- 高级用户需要完全自定义的场景
|
||||
- 内部 Manager 的实现需要
|
||||
- **不推荐** 外部用户直接使用,应该通过 Manager
|
||||
`src/index.ts` **仅导出** `BimEngine` 主类和必要的类型定义(如 `DialogOptions`)。
|
||||
所有具体的组件类(如 `BimDialog`、`Toolbar`)均视为**内部实现细节**,不对外暴露。这意味着:
|
||||
- 用户不能继承这些组件类进行扩展。
|
||||
- 用户必须依赖 SDK 提供的 Manager API。
|
||||
- 这保证了 SDK 内部架构的封闭性和稳定性。
|
||||
|
||||
|
||||
### 4.1 Manager 类清单
|
||||
|
||||
@@ -545,7 +510,8 @@ engine.toolbar.setButtonVisibility('my-button', false);
|
||||
| `ButtonGroupManager` | `src/managers/button-group-manager.ts` | 管理通用按钮组 | `BimComponent` |
|
||||
| `EngineManager` | `src/managers/engine-manager.ts` | 管理 3D 引擎 | `BimComponent` |
|
||||
| `RightKeyManager` | `src/managers/right-key-manager.ts` | 管理右键菜单 (Context Menu) | `BimComponent` |
|
||||
| `ModelTreeManager` | `src/managers/model-tree-manager.ts` | 模型树业务管理器 (组合 Dialog 和 Tree),管理 Tree 实例 | `BimComponent` |
|
||||
| `ModelTreeManager` | `src/managers/model-tree-manager.ts` | 模型树业务管理器 | `BimComponent` |
|
||||
| `PropertyPanelManager` | `src/managers/property-panel-manager.ts` | 属性面板业务管理器 (演示 Collapse) | `BimComponent` |
|
||||
|
||||
### 4.2 组件类清单
|
||||
|
||||
@@ -559,7 +525,8 @@ engine.toolbar.setButtonVisibility('my-button', false);
|
||||
| `BimRightKey` | `src/components/right-key/index.ts` | 右键浮层容器 | `IBimComponent` |
|
||||
| `BimMenu` | `src/components/menu/index.ts` | 通用菜单列表 | `IBimComponent` |
|
||||
| `BimTree` | `src/components/tree/index.ts` | 通用树形组件 | `IBimComponent` |
|
||||
| `BimTab` | `src/components/tab/index.ts` | 固定标签页组件(无运行时增删,当前在 ConstructTreeManagerBtn 内直接使用) | `IBimComponent` |
|
||||
| `BimTab` | `src/components/tab/index.ts` | 固定标签页组件 | `IBimComponent` |
|
||||
| `BimCollapse` | `src/components/collapse/index.ts` | 折叠面板组件 | `IBimComponent` |
|
||||
|
||||
### 4.3 服务类清单
|
||||
|
||||
|
||||
Reference in New Issue
Block a user