匯入

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 提供。