インポート
import { NuiGrid, type NuiGridColumn, type NuiGridHandle } from '@needless-ui/react/grid';NuiGrid
ネイティブのテーブルで構築したデータグリッド。
| 名前 | 型 | デフォルト | 説明 |
|---|---|---|---|
rowsプロップ | readonly T[] | データ。編集すると行が置き換わり、onRowsChange が呼び出されます。次に渡した rows で、編集内容は置き換えられます。 | |
onRowsChangeコールバック | (rows: readonly T[]) => void | 編集が確定するたびに、編集後の行を引数に呼び出されます。 | |
columnsプロップ | NuiGridColumn<T>[] | 列。NuiGridColumn オブジェクトで指定します。 | |
rowIdプロップ | (row: T) => unknown | row.id ?? row | 行のキー。選択と追跡に使います。 |
labelプロップ | string | グリッドのアクセシブルな名前。 | |
selectionプロップ | 'none' | 'single' | 'multiple' | 'none' | 行を選択できるかどうかと、選択できる数。 |
selecteddefaultSelectedonSelectedChange状態 | unknown[] | [] | 選択された行のキー。 |
sortdefaultSortonSortChange状態 | NuiGridSort[] | [] | 並べ替え。{ column, direction } オブジェクトで指定し、先頭のものが優先されます。 |
filtersdefaultFiltersonFiltersChange状態 | Record<string, NuiGridFilter> | {} | 列 id ごとのフィルター。演算子と値で指定します。 |
searchdefaultSearchonSearchChange状態 | string | '' | 行にすべて含まれている必要がある語。 |
pageSizedefaultPageSizeonPageSizeChange状態 | number | 0 | 1ページあたりの行数。0 にすると、スクロールする1つのリストになります。 |
pagedefaultPageonPageChange状態 | number | 0 | 表示するページ。0 から数えます。 |
pageSizesプロップ | number[] | [10, 25, 50, 100] | ページャーの選択肢。 |
virtualプロップ | boolean | 'auto' | 'auto' | 表示範囲の行だけをレンダリングします。常に行う、行わない、ページングなしで100行を超えたら行う auto のいずれか。 |
heightプロップ | string | グリッドの高さを制限する CSS の長さ。内部がスクロールします。 | |
columnStatedefaultColumnStateonColumnStateChange状態 | NuiGridColumnState[] | [] | 各列の幅、順序、固定、表示状態。保存と復元に使います。 |
modeプロップ | 'client' | 'server' | 'client' | server は受け取った行をそのまま表示し、並べ替え、絞り込み、ページングはアプリ側に任せます。 |
totalプロップ | number | サーバー上の行数。 | |
loadingプロップ | boolean | false | プログレスバーを表示し、行がない間はプレースホルダーの行を表示します。 |
localeプロップ | string | 'en-US' | 数値と日付の書式設定、および入力された数値の読み取りに使うロケール。 |
labelsプロップ | Partial<NuiGridLabels> | グリッドが表示または読み上げるすべてのテキスト。翻訳に使います。 | |
cornersプロップ | NuiCorners | 角の形:round、squircle、bevel、scoop、notch、square のいずれか。 | |
radiusプロップ | NuiRadius | 角の大きさ:none、small、medium、large、full のいずれか。 | |
densityプロップ | NuiDensity | 占めるスペースの広さ:compact、regular、roomy のいずれか。 | |
groupByプロップ | string[] | [] | 行をグループ化する列。外側から順に指定します。 |
collapseddefaultCollapsedonCollapsedChange状態 | string[] | [] | 閉じているグループのキー。グループは最初は開いています。 |
getChildrenプロップ | (row: T) => T[] | undefined | 行の子。指定すると、グリッドはツリーデータを表示します。 | |
expandeddefaultExpandedonExpandedChange状態 | unknown[] | [] | ツリーデータで開いている行のキー。行は最初は閉じています。 |
detailsdefaultDetailsonDetailsChange状態 | unknown[] | [] | 詳細を開いている行のキー。 |
totals, flashプロップ | boolean | false | 絞り込まれたすべての行を集計する行と、テキストが変わると一瞬光るセル。後者は、更新後も変わらない rowId を持つ行が対象です。 |
layoutプロップ | 'table' | 'list' | 'auto' | 'table' | list は行をカードとして表示し、auto は狭い画面でだけそうします。 |
toolbarプロップ | boolean | 'auto' | 'auto' | 行の並べ替え、絞り込み、全選択を行うバー。常に表示する、表示しない、カード表示のときに表示する auto のいずれか。 |
renderEmptyレンダープロップ | (filtered: boolean) => ReactNode | 行がないときに表示する内容。フィルターで行が隠れたかどうかを受け取ります。 | |
renderDetailレンダープロップ | (row: T) => ReactNode | 行の詳細。開くとその行の下に表示されます。グリッドにはトグルの列が加わります。 | |
onRowActivateコールバック | (row: T) => void | Enter キーまたはダブルクリックで開かれた行を引数に呼び出されます。 | |
onCellEditコールバック | (edit: NuiGridEdit<T>) => void | 編集が確定するたびに、その編集を引数に呼び出されます。 | |
onQueryChangeコールバック | (query: NuiGridQuery) => void | 並べ替え、フィルター、検索、ページが変わるたびに、それらを引数に呼び出されます。最初にも1回呼び出されます。 | |
refプロップ | Ref<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… の値を渡してコンポーネントに保持させます。
カスタマイズ用の props のうち、設定しなかったものは最も近い data-nui-* 属性に従います。詳しくはカスタマイズガイドをご覧ください。
NuiGridColumn
1つの列。Angular の列のすべてのプロパティ(必須なのは id と header だけです)と、列を描画する次の2つを受け取ります。
| 名前 | 型 | デフォルト | 説明 |
|---|---|---|---|
renderCellレンダープロップ | ({ row, value, text, column }) => ReactNode | 列のセルを自分で描画します。行、その値、テキストを受け取ります。 | |
renderHeaderレンダープロップ | (column) => ReactNode | 列のヘッダーを自分で描画します。列の名前には引き続き header が使われます。 |