导入

import-grid.tsx
import { NuiGrid, type NuiGridColumn, type NuiGridHandle } from '@needless-ui/react/grid';

NuiGrid

基于原生 table 元素的数据表格。

NuiGrid: 属性
名称类型默认值说明
rowspropreadonly T[]数据。编辑会替换对应的行并调用 onRowsChange;之后传入的 rows 会取代这些编辑。
onRowsChange回调(rows: readonly T[]) => void每次提交编辑后调用,参数为编辑后的行。
columnspropNuiGridColumn<T>[]列,以 NuiGridColumn 对象的形式提供。
rowIdprop(row: T) => unknownrow.id ?? row行的 key,用于选择和跟踪。
labelpropstring表格的可访问名称。
selectionprop'none' | 'single' | 'multiple''none'行是否可选,以及可选几行。
selected
defaultSelected
onSelectedChange状态
unknown[][]所选行的 key。
sort
defaultSort
onSortChange状态
NuiGridSort[][]排序,以 { column, direction } 对象的形式提供;排在前面的优先。
filters
defaultFilters
onFiltersChange状态
Record<string, NuiGridFilter>{}按列 id 设置的筛选条件:一个运算符和一个值。
search
defaultSearch
onSearchChange状态
string''必须全部出现在同一行中的词。
pageSize
defaultPageSize
onPageSizeChange状态
number0每页行数;设为 0 则显示为一个滚动列表。
page
defaultPage
onPageChange状态
number0当前显示的页,从 0 开始。
pageSizespropnumber[][10, 25, 50, 100]分页器中可选的每页行数。
virtualpropboolean | 'auto''auto'只渲染可见的行:始终、从不,或 auto(不分页且超过 100 行时启用)。
heightpropstring限制表格高度的 CSS 长度,内容在表格内部滚动。
columnState
defaultColumnState
onColumnStateChange状态
NuiGridColumnState[][]每列的宽度、顺序、固定和可见性,用于保存和恢复。
modeprop'client' | 'server''client'server 按原样显示收到的行,把排序、筛选和分页交给你处理。
totalpropnumber服务器上的总行数。
loadingpropbooleanfalse显示进度条;没有行时显示占位行。
localepropstring'en-US'用于格式化数字和日期,以及解析输入的数字。
labelspropPartial<NuiGridLabels>表格显示或播报的所有文本,供翻译使用。
cornerspropNuiCorners边角的形状:round、squircle、bevel、scoop、notch 或 square。
radiuspropNuiRadius边角的大小:none、small、medium、large 或 full。
densitypropNuiDensity占用的空间:compact、regular 或 roomy。
groupBypropstring[][]用于对行分组的列,从最外层开始。
collapsed
defaultCollapsed
onCollapsedChange状态
string[][]已折叠分组的 key;分组默认展开。
getChildrenprop(row: T) => T[] | undefined行的子行:表格会显示树形数据。
expanded
defaultExpanded
onExpandedChange状态
unknown[][]树形数据中已展开行的 key;行默认折叠。
details
defaultDetails
onDetailsChange状态
unknown[][]已打开详情的行的 key。
totals, flashpropbooleanfalse一行汇总所有筛选后行的聚合值;以及文本变化时会闪烁的单元格,仅适用于具有固定 rowId 的行。
layoutprop'table' | 'list' | 'auto''table'list 以卡片显示行,auto 则只在窄屏上这样显示。
toolbarpropboolean | 'auto''auto'对行排序、筛选和全选的工具栏:始终、从不,或 auto(显示卡片时出现)。
renderEmpty渲染 prop(filtered: boolean) => ReactNode没有行时显示的内容;参数会说明这些行是否被筛选条件隐藏。
renderDetail渲染 prop(row: T) => ReactNode行的详情,打开后显示在该行下方。表格会添加一列切换按钮。
onRowActivate回调(row: T) => void按 Enter 键或双击打开某行时调用,参数为该行。
onCellEdit回调(edit: NuiGridEdit<T>) => void每次提交编辑时调用,参数为该编辑。
onQueryChange回调(query: NuiGridQuery) => void排序、筛选、搜索或页码变化时调用,参数为它们;开始时也会调用一次。
refpropRef<NuiGridHandle>表格的 ref 能调用的方法:导出、打印和焦点。
exportXlsx, print方法(options?) => Blob, () => void以电子表格形式导出筛选和排序后的行;打印所有行。
exportCsv方法(options?) => string以 CSV 格式返回筛选和排序后的行,只包含可见的列。
expandAll方法(open?: boolean) => void展开所有分组和所有带子行的行,或全部折叠。
focusCell方法(row: number, col: number) => void让某个单元格获得焦点;第 -1 行是表头。
clearFilters方法() => void清除所有筛选条件和搜索。
fit方法(id: string) => void把列宽调整为已渲染单元格中最宽的那个。

状态的用法与 React 自带的表单输入相同:传入一个值,并在它的 on…Change 回调中更新;或者传入 default… 值,让组件自己保存。

用于自定义的 prop 如果未设置,会沿用最近的 data-nui-* 属性。详见自定义指南。

NuiGridColumn

一列。接收 Angular 列的所有属性(只有 id 和 header 是必需的),以及用来绘制该列的这两个属性。

NuiGridColumn: 属性
名称类型默认值说明
renderCell渲染 prop({ row, value, text, column }) => ReactNode自行绘制该列的单元格,参数为行、它的值和文本。
renderHeader渲染 prop(column) => ReactNode自行绘制该列的表头;列的名称仍由 header 提供。