Table
原生表格,可选配交互适配器。
- 浏览器
- Chrome 123+Firefox 121+Safari 17.5+
- 层级
- 0
- 压缩后大小
- 617 B
- 强制布局预算
- 0 ms
- axe 预算
- 0
- 支持 SSR
- 是
- 公开契约
- 测试环境
交互示例
Table
原生表格示例
| 姓名 | 角色 | 状态 |
|---|---|---|
| Alice Chen | 管理员 | 活跃 |
| Bob Smith | 编辑者 | 活跃 |
| Carol Lee | 查看者 | 已邀请 |
| 3名成员 · 2名活跃 | ||
排序、过滤与展开
| 角色 | 详细信息 | ||
|---|---|---|---|
| Alice Chen | 管理员 | ||
| alice@example.com · 活跃 | |||
| Bob Smith | 编辑者 | ||
| bob@example.com · 活跃 | |||
| Carol Lee | 查看者 | ||
| carol@example.com · 已邀请 | |||
| 3名成员 · 已选0名 | |||
固定表头、表尾和列
API
Table.Root (native)
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
layout | "auto" | "fixed" | "auto" | 原生表格布局。选择、排序和展开使用显式的TableClient入口。 |
size | "sm" | "md" | "lg" | — | 由所选样式表提供的单元格间距。 |
variant | "solid" | "outline" | "ghost" | — | 由所选样式表提供的外观变体。 |
render | ReactElement | ((props, state) => ReactElement) | — | 替换渲染元素,同时保留行为和无障碍连接关系。 |
Table.Footer
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
sticky | boolean | — | 将表尾固定在滚动容器的块轴末端。 |
render | ReactElement | ((props, state) => ReactElement) | — | 替换渲染元素,同时保留行为和无障碍连接关系。 |
Table.RowHeader / Table.Cell / Table.ColumnHeader
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
align | "start" | "center" | "end" | "start" | 该单元格的逻辑文本对齐方式。 |
sticky | "start" | "end" | — | 将单元格固定在逻辑行内边缘。相邻固定单元格应分别设置--uiify-table-sticky-offset。 |
render | ReactElement | ((props, state) => ReactElement) | — | 替换渲染元素,同时保留行为和无障碍连接关系。 |
TableClient.ExpandTrigger / TableClient.ExpandedRow
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
rowId* | string | — | 连接展开按钮与其原生<tr>的共享行key。在展开行内放置<td colSpan={columnCount}>。 |
TableClient.Root — @gunkin/uiify/components/table/client
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
aria-label | string | — | 没有可见标题或表格说明时使用的表格无障碍名称。 |
aria-labelledby | string | — | 为表格提供标签的元素id。 |
selectionMode | "none" | "single" | "multiple" | "none" | 是否允许选择行,以及每次可选多少行;"none"渲染不带grid角色的普通静态表格。 |
selectionBehavior | "toggle" | "replace" | — | 点击行时,将其加入选择还是替换当前选择。 |
defaultSelectedKeys | Iterable<string> | — | 初始选中的行id,选择状态由组件内部非受控管理。 |
selectedKeys | Iterable<string> | — | 当前选中的行id,选择状态由调用方受控管理。 |
onSelectionChange | (selectedKeys: Set<string>) => void | — | 选择变化时,使用新的已选行id集合调用。 |
defaultSortDescriptor | SortDescriptor | null | — | 初始排序列和方向,排序状态由组件内部非受控管理。 |
sortDescriptor | SortDescriptor | null | — | 当前排序列和方向,使排序状态受控。 |
onSortChange | (descriptor: SortDescriptor | null) => void | — | 激活可排序列标题时,使用新的排序描述或null调用。 |
expandedKeys / defaultExpandedKeys | Iterable<string> | — | 受控或初始展开行key。 |
onExpandedChange | (keys: Set<string>) => void | — | 报告展开请求。受控行等待更新后的key。 |
render | ReactElement | ((props, state) => ReactElement) | — | 替换渲染元素,同时保留行为和无障碍连接关系。 |
Table.Header
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
sticky | boolean | false | 将此区块固定在滚动容器中;Header使用块轴起点,Footer使用块轴末端。 |
render | ReactElement | ((props, state) => ReactElement) | — | 替换渲染元素,同时保留行为和无障碍连接关系。 |
Table.Body
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
children | ReactNode | — | 表格主体的行。 |
render | ReactElement | ((props, state) => ReactElement) | — | 替换渲染元素,同时保留行为和无障碍连接关系。 |
Table.Row
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
id* | string | — | 稳定的行id,用作选择key和元素id。 |
disabled | boolean | false | 阻止该行被选择或通过键盘聚焦。 |
selected | boolean | — | 在选择存储接管前,将服务端渲染标记中的行标为选中。 |
render | ReactElement | ((props, state) => ReactElement) | — | 替换渲染元素,同时保留行为和无障碍连接关系。 |
Table.ColumnHeader
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
id* | string | — | 排序描述引用的列id。 |
allowsSorting | boolean | false | 使标题可切换所在列的排序,并发布aria-sort。 |
sortDirection | "ascending" | "descending" | null | — | 该列渲染的排序方向;允许排序时,用于初始服务端标记。 |
onClick | React.MouseEventHandler<HTMLTableCellElement> | — | 排序前运行;preventDefault()可阻止排序变更。 |
children | ReactNode | — | 表头标签。 |
render | ReactElement | ((props, state) => ReactElement) | — | 替换渲染元素,同时保留行为和无障碍连接关系。 |
Table.Cell
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
children | ReactNode | — | 单元格内容。 |
render | ReactElement | ((props, state) => ReactElement) | — | 替换渲染元素,同时保留行为和无障碍连接关系。 |
Table.Caption
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
children | ReactNode | — | 描述表格的说明文字。 |
render | ReactElement | ((props, state) => ReactElement) | — | 替换渲染元素,同时保留行为和无障碍连接关系。 |
Table.RowSelect
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
rowId* | string | — | 该复选框用于选择或取消选择的行id。 |
键盘
| 按键 | 操作 |
|---|---|
| Tab | 聚焦TableClient中的排序、选择和展开控件 |
| Enter / Space | 激活已聚焦的排序或展开按钮;切换复选框 |
| Arrow keys | 在TableClient中可选择的表格主体行之间移动 |
无障碍
默认Table渲染原生<table>、<caption>、<thead>、<tbody>和<tfoot>,无须客户端JavaScript;使用ColumnHeader和RowHeader提供表头语义。/client入口添加排序、选择、键盘行导航和受控展开,并通过aria-sort、aria-expanded和aria-controls暴露状态。ExpandedRow是原生<tr>;应在其内部放置带colSpan的Cell。过滤和排序顺序由使用方处理。
样式钩子
data-uiify-tabledata-partdata-layoutdata-sizedata-variantdata-stickydata-selecteddata-disabled--uiify-table-sticky-offset