开始重构
This commit is contained in:
@@ -312,7 +312,9 @@ const addFloatingPanel = () => {
|
||||
showTitleBar: true,
|
||||
// 2. 向Area添加一个TabPage。TabPage的初始设置为填充满父容器
|
||||
tabPages: [
|
||||
{
|
||||
]
|
||||
}
|
||||
const newTabPage = {
|
||||
id: `tabpage-${areaIdCounter - 1}-1`,
|
||||
title: `标签页 1`,
|
||||
// TabPage填充满父容器
|
||||
@@ -320,7 +322,9 @@ const addFloatingPanel = () => {
|
||||
height: 100,
|
||||
// 3. 向TabPage添加一个Panel。Panel的初始设置为填充满父容器
|
||||
panels: [
|
||||
{
|
||||
]
|
||||
}
|
||||
const newPanel = {
|
||||
id: `panel-${areaIdCounter - 1}-1-1`,
|
||||
title: `面板 ${areaIdCounter - 1}`,
|
||||
x: 0,
|
||||
@@ -332,13 +336,10 @@ const addFloatingPanel = () => {
|
||||
// 添加随机测试内容以便合并测试
|
||||
content: generateRandomContent(areaIdCounter - 1)
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
newTabPage.panels.push(newPanel)
|
||||
newArea.tabPages.push(newTabPage)
|
||||
floatingAreas.value.push(newArea)
|
||||
}
|
||||
|
||||
// 更新区域位置
|
||||
const onUpdatePosition = (id, position) => {
|
||||
const area = floatingAreas.value.find(a => a.id === id)
|
||||
|
||||
@@ -39,34 +39,47 @@
|
||||
4.1. Area的merge行为只接受一个Area参数.
|
||||
4.1. 如果目标Area内容区为空,则将源Area内容区的子组件添加到目标Area内容区。这个源Area保存到DockLayout的的隐藏列表中。
|
||||
4.2. 如果目标Area内容区已经包含一个TabPage,则将源Area的TabPage组件的每个标签页添加到目标Area的Tabpage中。这个源Area和源Area的TabPage组件保存到DockLayout的的隐藏列表中。
|
||||
5. 当将源Area拖动到外部边缘指示器时
|
||||
5. 当将源Area拖动到外部边缘指示器时 ✅ **已完成**
|
||||
|
||||
**核心功能实现**:
|
||||
- ✅ 外部边缘停靠检测和执行逻辑
|
||||
- ✅ 并排布局创建(createSideBySideLayout函数)
|
||||
- ✅ ResizeBar集成和事件处理
|
||||
|
||||
5.1. 如果主区域内只有一个Area(目标区域),则压缩目标Area的空间,源区域和目标区域并排放置在主区域内。
|
||||
- 实现压缩目标Area空间的逻辑(已实现)
|
||||
- 设置源Area和目标Area的并排布局(已实现)
|
||||
- 在并排的Area之间添加ResizeBar组件以支持拖动调整大小
|
||||
- ResizeBar的方向根据停靠方向动态设置:
|
||||
- ✅ 实现压缩目标Area空间的逻辑(已完成)
|
||||
- ✅ 设置源Area和目标Area的并排布局(已完成)
|
||||
- ✅ 在并排的Area之间添加ResizeBar组件以支持拖动调整大小
|
||||
- ✅ ResizeBar的方向根据停靠方向动态设置:
|
||||
* 左右停靠:使用水平ResizeBar(垂直分割线)
|
||||
* 上下停靠:使用垂直ResizeBar(水平分割线)
|
||||
- 确保ResizeBar支持最小/最大尺寸限制
|
||||
- ✅ 确保ResizeBar支持最小/最大尺寸限制
|
||||
|
||||
5.2. 如果主区域内没有Area,则从隐藏列表中取出Area,如果隐藏列表中没有Area,则创建一个Area,将主区域内的组件添加到Area中作为目标Area。 压缩目标Area的空间,源区域和目标区域并排放置在主区域内。
|
||||
- 检查隐藏列表是否有可用Area
|
||||
- 如果没有隐藏Area,创建新的Area
|
||||
- 将主区域内的组件移动到新创建的Area中作为目标Area
|
||||
- 执行并排放置逻辑(复用5.1的实现)
|
||||
- 添加ResizeBar支持拖动调整
|
||||
- ✅ 检查隐藏列表是否有可用Area
|
||||
- ✅ 如果没有隐藏Area,创建新的Area
|
||||
- ✅ 将主区域内的组件移动到新创建的Area中作为目标Area
|
||||
- ✅ 自动迁移tabPages和receivedContent
|
||||
- ✅ 清空主区域内容为并排布局做准备
|
||||
- ✅ 创建默认tabPage当主区域为空时
|
||||
- ✅ 执行并排放置逻辑(复用5.1的实现)
|
||||
- ✅ 添加ResizeBar支持拖动调整
|
||||
|
||||
**技术特性**:
|
||||
5.3. 并排停靠后的ResizeBar集成
|
||||
- 在并排的Area之间动态插入ResizeBar组件
|
||||
- ResizeBar的事件处理:
|
||||
- ✅ 在并排的Area之间动态插入ResizeBar组件
|
||||
- ✅ ResizeBar的事件处理:
|
||||
* resize事件:实时调整并排Area的尺寸比例
|
||||
* resizeStart/resizeEnd事件:处理调整开始/结束状态
|
||||
- 保持Area的最小尺寸限制(避免调整过小无法使用)
|
||||
- 调整后更新Area的ratio属性以保持布局持久化
|
||||
- 支持双向调整:拖动ResizeBar可以同时影响两个Area的大小
|
||||
- ✅ 保持Area的最小尺寸限制(避免调整过小无法使用)
|
||||
- ✅ 调整后更新Area的ratio属性以保持布局持久化
|
||||
- ✅ 支持双向调整:拖动ResizeBar可以同时影响两个Area的大小
|
||||
|
||||
5.4. ResizeBar的样式和交互优化
|
||||
- ResizeBar的显示条件:仅在并排布局中存在时显示
|
||||
- 鼠标悬停效果:高亮显示ResizeBar指示器
|
||||
- 拖动时的视觉反馈:实时显示调整效果
|
||||
- 确保ResizeBar不会影响Area的拖拽和停靠功能
|
||||
- ✅ ResizeBar的显示条件:仅在并排布局中存在时显示
|
||||
- ✅ 鼠标悬停效果:高亮显示ResizeBar指示器
|
||||
- ✅ 拖动时的视觉反馈:实时显示调整效果
|
||||
- ✅ 确保ResizeBar不会影响Area的拖拽和停靠功能
|
||||
|
||||
### ResizeBar集成技术要求
|
||||
1. ResizeBar组件依赖
|
||||
|
||||
Reference in New Issue
Block a user