iter(g48): 新增 splitter 可拖拽分栏容器

This commit is contained in:
HIsheR
2026-10-26 12:11:44 +08:00
parent 5c10eb2a5f
commit d7bfabb3ab
12 changed files with 301 additions and 10 deletions
+28 -1
View File
@@ -1,6 +1,6 @@
# @ui-arch 组件库 Agent 文档(无图形版)
> 自动生成于 2026-10-26T04:10:00.644Z,数据源:各包 ua.manifest.json,勿手改。人类版文档站:apps/docs/index.html。
> 自动生成于 2026-10-26T04:11:34.965Z,数据源:各包 ua.manifest.json,勿手改。人类版文档站:apps/docs/index.html。
> 组件 = 普通函数,传 props 返回 DOM;状态用 signal 双向绑定:读 signal() 写 signal(v)。
## 快速上手
@@ -1229,6 +1229,32 @@ cascader({ value: areaPath, changeOnSelect: true, options: [{ value: 'east', lab
现场演示:apps/docs/demo.html#sec-cascader
### splitter — 可拖拽分栏 Splitter
参数:
- panes(必填):unknown[] —— 各栏内容(节点或纯文本),顺序即排列顺序
- direction:'horizontal' | 'vertical' —— 分割方向;缺省 horizontal(左右)
- sizes:Signal<number[]> —— 各栏百分比数组(和为 100);不传则内部均分
- min:number —— 每栏最小百分比;缺省 10,拖到边界即停
- onChange:(sizes: number[]) => void —— 拖拽 / 键盘调整后回调(传副本)
示例:
```
splitter({ sizes: ratio, min: 15, panes: [leftPanel, rightPanel], onChange: (s) => ratio([...s]) })
```
手把手:
1. panes 长度决定栏数与分隔条数(n 栏对应 n-1 条),栏宽由 sizes 百分比驱动
2. 指针按住分隔条拖动即可改比例,拖动过程两栏之和恒定、各自不低于 min
3. 分隔条可 Tab 聚焦,← → / ↑ ↓ 每次调 2%,按住 Shift 调 10%;双击复位为均分
4. direction 传 vertical 变为上下分栏,键盘方向键与光标同步切换
5. 传入 sizes 信号即受控,外部写入可做「预设布局」切换(如 1:1 / 2:1)
现场演示:apps/docs/demo.html#sec-splitter
API 速览:
- button(props):按钮,variant = primary | ghost | danger,disabled 支持布尔或信号禁用;type 缺省 button(表单内不隐式提交)
@@ -1279,6 +1305,7 @@ API 速览:
- result(props):结果页,status 四档语义色 + 标题 + 说明 + 操作区,用于提交完成/校验失败等终态
- transfer(props):穿梭框,左右两栏勾选后整体搬运,targetKeys 信号双向绑定,两栏各自搜索与全选(含半选),禁用条目不参与搬运也不可勾选
- cascader(props):级联选择,多列联动面板(悬停下钻 / 点击提交),value 为路径数组信号,changeOnSelect 允许停在中间层,全键盘可操作
- splitter(props):可拖拽分栏容器,分隔条支持指针拖拽 / 方向键微调 / 双击复位,sizes 为百分比数组信号
一行用法: