Skip to content

树形列表

@astryxdesign/core v0.7.1 · TreeList

  • src

使用方法 ​

TreeList 用数据画出一棵树。每一项有 id 和 label。children 是下一层。isExpanded 是初始展开状态。点分支会切换展开。带 href 的叶子是链接。带 onClick 的叶子是按钮。

variant="lineGuides" 画连接线。noGuides 只保留缩进。density 改变行的上下内边距:紧凑 4px,适中 8px,宽松 12px。

icon 和 endIcon 可以是 Icon 的字形名,也可以是以 i- 开头的 CSS 图标类。badge 是末尾的短计数。内容比图标复杂时,用 start 和 end 插槽替换这两处字符串。

键盘遵循树的常见习惯:上下移动,左右展开和折叠(从右到左的布局里左右对调),Home 和 End 跳到两端,Enter 和空格激活,继续打字会跳到匹配的标签。

vue
<script setup lang="ts">
import { TreeList } from '@astryx-vue/core/TreeList'

const items = [
  {
    id: 'src',
    label: 'src',
    isExpanded: true,
    children: [{ id: 'app', label: 'App.tsx', onClick: () => {} }],
  },
]
</script>

<template>
  <TreeList :items="items" />
</template>

建议 ​

建议做法
推荐每一项给一个稳定的 id。焦点和展开都靠它跟踪。
推荐层级深、只靠缩进不好认时用 lineGuides。
推荐数量放进 badge,末尾的提示放进 endIcon,不要拼进标签。
避免一行里又是链接又是按钮。一行只做一件事。
避免很大的树默认全部展开。从读者当前所在的路径展开。

解剖

部分说明
树列表呈现层级树的容器。
页眉使用方提供的内容,用来给这棵树一个看得见的名字。
项层级里一个节点的着色行。
箭头有子节点的项上的展开和收起控件。
箭头符号箭头里由 Icon 画出的方向符号。
项标签标识一项的主要内容。
项说明项标签下面的次要文字。
起始内容画在项标签前面的、由使用方提供的内容。
尾部内容画在项标签后面的、由使用方提供的内容。
引导线表示父子关系的连接线。

示例 ​

TreeList — 带图标的文件树

  • src

文件树用文件夹和文档图标区分目录和文件。

TreeList — 可交互的设置

设置项可以点,文档那一行是链接。

TreeList — 邮箱

  • Inbox3
    • 3
  • 1

邮件文件夹,未读数量用徽标标出。

TreeList — 导航

  • Navigation

导航树里,当前页那一项是选中状态。

Tree List — 变体

lineGuides (default)
  • src
    • components
noGuides
  • src
    • components

lineGuides 在父子之间画连接线。noGuides 只留缩进。密度是另一件事,只改行的内边距。