import { Action } from '@judo/actions'; import { Table } from '@judo/model-api'; import { GridFilterModel, GridPaginationModel, GridSortModel } from '@mui/x-data-grid'; /** * Options for useTableData hook. */ export interface UseTableDataOptions { /** Table visual element */ element: Table; /** Pre-resolved refresh action for non-eager tables (resolved by xmi:id in TableRenderer) */ refreshAction?: Action; /** Raw data from DataContext */ rawData: any[] | undefined; /** Action dispatcher for non-eager mode (optional) */ dispatch?: ((action: any) => Promise) | null; /** Loading state from data store */ loading?: boolean; /** Whether to request total count from backend (for pagination) */ showTotalCount?: boolean; /** Total count from server (for server-side pagination with showTotalCount) */ totalCount?: number; /** Pre-computed mask string to include in query customizers */ mask?: string; /** Whether MUI Pro multi-column sorting is available */ isProEnabled?: boolean; } /** * Result type from useTableData hook. */ export interface TableDataResult { /** Raw data rows (DataGrid handles filtering/sorting/pagination based on mode) */ rows: any[]; /** Total count (for server-side pagination) */ rowCount?: number; /** Current pagination state */ paginationModel: GridPaginationModel; /** Current sort state */ sortModel: GridSortModel; /** Current filter state */ filterModel: GridFilterModel; /** Pagination mode: 'client' for eager, 'server' for non-eager */ paginationMode: "client" | "server"; /** Sorting mode: 'client' for eager, 'server' for non-eager */ sortingMode: "client" | "server"; /** Filter mode: 'client' for eager, 'server' for non-eager */ filterMode: "client" | "server"; /** Handle pagination change */ onPaginationModelChange: (model: GridPaginationModel) => void; /** Handle sort change */ onSortModelChange: (model: GridSortModel) => void; /** Handle filter change */ onFilterModelChange: (model: GridFilterModel) => void; /** Loading state */ loading: boolean; } /** * Hook for managing table data with support for both eager (client-side) * and non-eager (server-side) data management modes. * * Leverages MUI DataGrid's built-in mode props: * - `paginationMode`: 'client' | 'server' * - `sortingMode`: 'client' | 'server' * - `filterMode`: 'client' | 'server' * * **Eager Mode** (`element.isEager === true`): * - Sets all modes to 'client' * - DataGrid handles filtering/sorting/pagination internally * - All data passed to DataGrid at once * - No backend calls for user interactions * * **Non-Eager Mode** (`element.isEager === false`): * - Sets all modes to 'server' * - DataGrid fires events, we dispatch actions * - Backend processes all operations and returns results * * @param element - The Table visual element * @param refreshAction - Pre-resolved refresh action for non-eager tables * @param rawData - The raw data array from backend/context * @returns TableDataResult with mode configuration and event handlers */ export declare function useTableData({ element, refreshAction, rawData, dispatch, loading: externalLoading, showTotalCount, totalCount, mask, isProEnabled, }: UseTableDataOptions): TableDataResult; //# sourceMappingURL=use-table-data.d.ts.map