iter(g31): 新增 tree 树形组件
This commit is contained in:
@@ -604,6 +604,14 @@
|
||||
"acceptance": "check 链为 build → demo → style → typecheck → smoke → index → verify → lint-iterations;verify 校验产物含全部 sec-* 锚点(负向删除锚点即失败);文档四处链路描述同步;npm run check 全绿",
|
||||
"status": "done",
|
||||
"notes": "自补:门禁改进;文档四处链路描述同步"
|
||||
},
|
||||
{
|
||||
"id": "g31",
|
||||
"title": "新增 tree 树形组件",
|
||||
"motivation": "文件树/组织架构/权限勾选等场景缺组件,只能手写嵌套 DOM,展开态与键盘可达性都要重造",
|
||||
"acceptance": "tree({ nodes, expanded, selected, defaultExpandAll, onSelect }) 递归渲染 + 箭头展开收起 + 点选 + Enter/→/← 键盘 + 禁用不响应;组件数 40→41 三处计数同步;npm run check 全绿",
|
||||
"status": "open",
|
||||
"notes": "自补:组件补充"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
+45
-2
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"$schema": "ui-arch-registry-index/0.1",
|
||||
"generatedAt": "2026-10-26T03:40:46.247Z",
|
||||
"generatedAt": "2026-10-26T03:41:59.549Z",
|
||||
"repoRoot": ".",
|
||||
"packages": [
|
||||
{
|
||||
@@ -183,7 +183,8 @@
|
||||
"descriptions(props):描述列表,items(label/value/span) 铺进 column 列网格,bordered 切表格形态,窄屏自动单列",
|
||||
"statistic(props):统计数值,标题 + 大号数字 + 前后缀 + 环比趋势,value 变化时 rAF 滚动过渡(400ms easeOutCubic),减弱动效偏好下直落终值",
|
||||
"list(props):列表,header/footer 外壳 + 条目 avatar/title/description/extra,onItemClick 让条目可点击,items 为空回落空状态",
|
||||
"carousel(props):轮播,items 横排位移,指示点/箭头/←→ 键切换,autoplay 毫秒自动前进且悬停暂停,index 信号可外部受控"
|
||||
"carousel(props):轮播,items 横排位移,指示点/箭头/←→ 键切换,autoplay 毫秒自动前进且悬停暂停,index 信号可外部受控",
|
||||
"tree(props):树形,递归节点 + 箭头展开/收起 + 点选节点,键盘 Enter 选中、→ 展开、← 收起,禁用节点不响应"
|
||||
],
|
||||
"keyTypes": [
|
||||
"ButtonProps",
|
||||
@@ -1861,6 +1862,48 @@
|
||||
"键盘:聚焦轮播后 ←→ 切换,事件不冒泡避免连带切换外层 tabs/menu",
|
||||
"指示点与箭头都可点击,末张下一张环形回到首张"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "tree",
|
||||
"title": "树形 Tree",
|
||||
"demo": "sec-tree",
|
||||
"props": [
|
||||
{
|
||||
"n": "nodes",
|
||||
"t": "TreeNode[]",
|
||||
"r": 1,
|
||||
"d": "根节点列表,每项 { key, label, children?, disabled? }"
|
||||
},
|
||||
{
|
||||
"n": "expanded",
|
||||
"t": "Signal<string[]>",
|
||||
"d": "展开的 key 集合;不传则内部维护"
|
||||
},
|
||||
{
|
||||
"n": "selected",
|
||||
"t": "Signal<string>",
|
||||
"d": "选中 key 信号;不传则内部维护"
|
||||
},
|
||||
{
|
||||
"n": "defaultExpandAll",
|
||||
"t": "boolean",
|
||||
"d": "首屏展开全部分支;缺省 false"
|
||||
},
|
||||
{
|
||||
"n": "onSelect",
|
||||
"t": "(node: TreeNode) => void",
|
||||
"k": 1,
|
||||
"d": "选中回调:点击标签或 Enter/空格触发"
|
||||
}
|
||||
],
|
||||
"example": "const sel = signal(''); tree({ nodes: [{ key: 'src', label: 'src', children: [{ key: 'ui', label: 'ui' }] }], selected: sel, onSelect: (n) => console.log(n.key) })",
|
||||
"steps": [
|
||||
"节点树用 { key, label, children } 描述,key 唯一即可(选中与展开都按 key 记)",
|
||||
"传 selected 信号即可外部受控;不传则组件内部维护选中态",
|
||||
"点箭头只展开/收起,点标签才选中;叶子节点箭头位置留空以对齐",
|
||||
"键盘 Enter/空格 选中、→ 展开、← 收起;disabled 节点点击与键盘都不响应",
|
||||
"defaultExpandAll 首屏展开全部分支(外部已给 expanded 初值时以外部为准)"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user