表单组件版本 0.1.0

TreeSelect 树选择器

从可展开层级树中选择一个节点,并在紧凑触发器中显示结果。

使用概览

适合使用

  • 目标值来自目录或组织层级,但页面不适合常驻整棵树时。

不建议使用

  • 需要多选、比较多个分支,或节点之间没有父子关系时。

真实示例

目标文件夹选择

从文档目录树中选择一个目标文件夹。

正在加载示例…

安装

本地候选警告Registry 地址仅指向当前本地文档站;npm 包也只用于本地候选验证,尚未公开发布。
pnpm dlx shadcn@4.16.0 add http://127.0.0.1:3000/r/tree-select.json

基础用法

导入

import { TreeSelect } from "@richardqiu/quartz/tree-select";

JSX

<TreeSelect aria-label="目标文件夹" placeholder="选择文件夹" emptyLabel="没有文件夹" nodes={[{ id: "docs", label: "文档", children: [{ id: "reports", label: "报告" }] }]} expandLabel={(node, expanded) => `${expanded ? "收起" : "展开"}${node.label}`} />

状态与控制摘要

默认
键盘焦点可见
已打开
已选择
空状态
已禁用
label · textactive · boolean

API 参考

属性类型默认值说明
valuestring未设置受控提供当前选中树节点的稳定标识。

组合结构

  1. 01TreeSelect

键盘约定

  • Enter 或空格键打开树,Escape 关闭并恢复焦点;树内行为继承 TreeView。

可访问性契约

  • 触发器与嵌套树分别使用由使用方提供的标签。
  • 已选稳定 ID 参与原生表单提交。