树形列表
@astryxdesign/core v0.7.1 · TreeList
属性
| 名称 | 类型 | 默认值 | 说明 |
|---|---|---|---|
items | TreeListItemData[] | - | 树的数据。字段见下表。 |
density | 'compact' | 'balanced' | 'spacious' | 'balanced' | 一行的上下内边距:4px、8px 或 12px。 |
variant | 'lineGuides' | 'noGuides' | 'lineGuides' | 父子行之间是否画引导线。 |
header | string | - | 树上方的纯文本标题。复杂内容用 header 插槽。 |
label | string | - | 没有可见标题时,树的无障碍名称。 |
TreeListItemData
| 字段 | 类型 | 说明 |
|---|---|---|
id | string | 焦点和展开用的稳定标识。 |
label | string | 可见名称。 |
description | string | 第二行说明。 |
icon | string | 前置字形名,或以 i- 开头的 CSS 图标类。 |
endIcon | string | 末尾字形或 CSS 图标类。 |
badge | string | 末尾计数。 |
children | TreeListItemData[] | 子项。有这个字段的行可以展开。 |
href / target | string | 把这一行渲染成链接。target="_blank" 会带上 rel="noopener noreferrer"。 |
onClick | (event: MouseEvent) => void | 把叶子渲染成按钮。 |
isDisabled | boolean | 这一行不接受焦点,也不能激活。 |
isSelected | boolean | 由调用方标出当前项。树没有根上的选中值,也不强制只有一行选中。 |
isExpanded | boolean | 初始是否展开。之后的切换由树自己记住。 |
className | string | 额外类名,落在这一行上。 |
style | CSSProperties | 行内样式,落在这一行上。 |
start 和 end 插槽收到 { item },用来替换 icon 和 endIcon。
读屏时一行的名字只有标题。说明通过 aria-describedby 单独读出,展开按钮和图标不进名字。敲字符跳转也只匹配标题。有可见 header 时,树的名字用这个标题,不用外面传来的 aria-label。在根上监听按键并 preventDefault 之后,方向键不再移动树里的焦点。
主题
缩进是 --astryx-spacing-4。行内容的左右内边距和间距都是 --astryx-spacing-2。引导线是 1px 的强调边框。焦点使用共用的焦点轮廓 token。选中行使用强调色的淡底。