EtDock · 停靠区
dock 节点的呈现件:stack 并列分摊 / tabs 单槽 tab 化,内容归消费方。
分隔条是 role="separator":聚焦后用 ←/→(横排)调尺寸,Home/End 到 min/max。
API
Props
| 名称 | 类型 | 默认 | 说明 |
|---|---|---|---|
| dock | Object | 必填 | 停靠区节点:{ id, side, collapsed, panels, presentation? }(presentation === 'tabs' 走 tab 化) |
| maximized | String | null | 当前全屏面板 id(全局唯一) |
Emits
| 事件 | 载荷 | 说明 |
|---|---|---|
| update:dock | updated | v-model(dock)的写入 |
| panel-collapse | id | 区内某面板折叠;载荷 = 面板 id(改的是树,本件不自存) |
| panel-expand | id | 区内某面板展开;载荷 = 面板 id |
| panel-close | id | 区内某面板关闭;载荷 = 面板 id |
| panel-maximize | id | 区内某面板最大化;载荷 = 面板 id |
| panel-restore | — | 区内面板从最大化还原(无载荷) |
| dock-toggle | dock.id | 整条停靠区经折叠把手切换;载荷 = 停靠区 id |
Slots
| 槽 | 吃什么 | 作用域 |
|---|---|---|
| #panel | 面板渲染位 | { panel, dock } |
键盘 · 可访问名 · 密度
| 键盘 | 不接管按键 |
|---|---|
| 可访问名 | aria-labelaria-label ← handleLabel |
| 密度 | --et-chrome-band-bg |
行为
stack(默认):每个可见面板一个面板位,同屏并列;停靠主轴 = 各位声明宽之和,拖拽在底座 min/max 夹角内重分配,百分比换算回 px 写回树(过夹角、可持久化)。tabs(dock.presentation === 'tabs'):单槽 +EtPanelGroup,任一时刻只有激活面板渲染内容,尺寸度量取激活面板。- 折叠面板位收成标题条高度(标题栏仍可达、展开钮可还原),且不参与尺寸回写。
- 隐藏面板整条退出渲染但留在树里(产品层用
visiblePanels/showPanel拉回来)。 - 全屏时只渲染全屏目标位,兄弟面板让位,停靠位跨满主体行(EtWorkbench 的 grid 让位)。
- 尺寸回写等一拍(120ms)只落稳定值,过渡中间值不进树。
令牌与门禁
--et-panel-header-height:折叠把手与折叠位尺寸同源(28px)。- 拖拽条度量由族内
EtSplitter的样式表负责,见 分隔面板族。 - 内存:拖拽/折叠过渡的定时器卸载时清理。