import React, { type ReactNode } from "react"; import type { DataTable2ColumnEditFeatures, TableColumn } from "./types"; import type { TableAction } from "./types/tableActions"; type DataTable2Props = { /** * ページネーションの現在のページ */ currentPage: number; /** * ページネーションの1ページあたりの表示件数 */ pageSize: number; /** * ページネーションの1ページあたりの表示件数の選択肢 */ pageSizeOptions: number[]; /** * ページネーションの全件数 */ totalCount: number; columns: TableColumn[]; /** * ページネーションのページ変更時のコールバック * @param page 変更後のページ */ onPageChange: (page: number) => void; /** * ページネーションの1ページあたりの表示件数変更時のコールバック * @param param 変更後の1ページあたりの表示件数 */ onPageSizeChange: (size: number) => void; /** * カラムの状態が変更されたときに呼び出されるコールバック
* 順序変更時、表示/非表示変更時、フィルタ入力クリア時に呼び出されるので * それに合わせて、そのまま columns を更新してください。
* フィルタ入力クリア時は、filtered が false になっているので、自身で各フィルタの入力値を空白にしてください。 * @param columns 変更後のカラム */ onColumnsChange: (columns: TableColumn[]) => void; /** * テーブルアクションボタン群の定義。enabledWhenとdisplayInで表示場所を制御: * - enabledWhen: "checked" + displayIn: "toolbar" → デスクトップ時は左側の直接ボタン、モバイル時は「n件を操作」ドロップダウン * - enabledWhen: "checked" + displayIn: "dropdown" → デスクトップ時は左側の3点リーダーボタン、モバイル時は「n件を操作」ドロップダウン * - enabledWhen: "unchecked" + displayIn: "toolbar" → デスクトップ時は右側の直接ボタン、モバイル時は右側の3点リーダーボタン * - enabledWhen: "unchecked" + displayIn: "dropdown" → デスクトップ・モバイル共に右側の3点リーダーボタン * * disabledプロパティによる追加制御: * - enabledWhen: "checked"/"unchecked" と組み合わせて使用可能。基本条件に加えて追加の無効化条件を指定できる * - 例: enabledWhen: "checked" + disabled: (rows) => rows.length >= 2 → 1件選択時のみ有効 * - enabledWhen: "custom" の場合はdisabled関数の結果のみで有効/無効が決定される */ tableActions?: TableAction[]; /** * テーブルアクションエリアを完全カスタマイズしたい場合のrender-props。isSmallLayout, checkedRows等を受け取れる。 */ customTableActionArea?: (context: { isSmallLayout: boolean; checkedRows: string[]; }) => React.ReactNode; /** * 複数行選択 UI を有効にするか。`false` のとき一括チェック・「n件を」・行頭チェック列を出さない。 * 行選択 UI を出すには `true` に加え **`tableActions` を渡す**必要がある(`tableActions` が無いとチェック列もツールバーも出ない)。 * @default true */ enableRowSelection?: boolean; /** * カラム編集メニューでエンドユーザーに許可する操作。 * 例: `{ reorder: false }` で表示 ON/OFF のみ、`{ visibility: false }` で並び替えのみ。 */ columnEditFeatures?: DataTable2ColumnEditFeatures; /** * テーブル下部にも件数表示・ページネーションを表示する。 * 上部ツールバー右側と同じ UI を右下に複製する。 * @default false */ showBottomPagination?: boolean; } & { /** * 見た目の制御。枠線で囲むか否か。枠線で囲むと角丸も適用される */ bordered?: boolean; children: ReactNode; /** * 行のチェック状態が変更されたときに呼び出されるコールバック * 読み取り専用で、今のところは外から `checkedRows` を変更することはできません */ onCheckedRowsChange?: (checkedRows: string[]) => void; }; export declare const DataTable2: ({ bordered, currentPage, pageSize, pageSizeOptions, totalCount, columns, onPageChange, onPageSizeChange, onColumnsChange, onCheckedRowsChange, children, tableActions, customTableActionArea, enableRowSelection, columnEditFeatures: columnEditFeaturesProp, showBottomPagination, }: DataTable2Props) => React.JSX.Element; export {};