Skip to content

树形列表

@astryxdesign/core v0.7.1 · TreeList

属性 ​

名称类型默认值说明
itemsTreeListItemData[]-树的数据。字段见下表。
density'compact' | 'balanced' | 'spacious''balanced'一行的上下内边距:4px、8px 或 12px。
variant'lineGuides' | 'noGuides''lineGuides'父子行之间是否画引导线。
headerstring-树上方的纯文本标题。复杂内容用 header 插槽。
labelstring-没有可见标题时,树的无障碍名称。

TreeListItemData ​

字段类型说明
idstring焦点和展开用的稳定标识。
labelstring可见名称。
descriptionstring第二行说明。
iconstring前置字形名,或以 i- 开头的 CSS 图标类。
endIconstring末尾字形或 CSS 图标类。
badgestring末尾计数。
childrenTreeListItemData[]子项。有这个字段的行可以展开。
href / targetstring把这一行渲染成链接。target="_blank" 会带上 rel="noopener noreferrer"。
onClick(event: MouseEvent) => void把叶子渲染成按钮。
isDisabledboolean这一行不接受焦点,也不能激活。
isSelectedboolean由调用方标出当前项。树没有根上的选中值,也不强制只有一行选中。
isExpandedboolean初始是否展开。之后的切换由树自己记住。
classNamestring额外类名,落在这一行上。
styleCSSProperties行内样式,落在这一行上。

start 和 end 插槽收到 { item },用来替换 icon 和 endIcon。

读屏时一行的名字只有标题。说明通过 aria-describedby 单独读出,展开按钮和图标不进名字。敲字符跳转也只匹配标题。有可见 header 时,树的名字用这个标题,不用外面传来的 aria-label。在根上监听按键并 preventDefault 之后,方向键不再移动树里的焦点。

主题 ​

缩进是 --astryx-spacing-4。行内容的左右内边距和间距都是 --astryx-spacing-2。引导线是 1px 的强调边框。焦点使用共用的焦点轮廓 token。选中行使用强调色的淡底。