DataTableReferencia de API
SmartDataTable
Tipos del fetch, props del componente y el ref imperativo.
Tipos de datos
Lo que pide y devuelve un fetch:
interface DataTableFetchParams {
pageIndex: number; // 0-based
pageSize: number; // ya acotado a MAX_PAGE_SIZE (100)
sorting: { id: string; desc: boolean }[]; // [0] es el orden activo
globalFilter: string; // texto de búsqueda ("" si no hay)
}
interface DataTableFetchResult<T> {
data: T[];
totalRows: number;
aggregates?: Record<string, string | number>; // totales de pie (opcional)
}
type DataTableFetchFn<T> = (params: DataTableFetchParams) => Promise<DataTableFetchResult<T>>;Props
| Prop | Tipo | Default | Descripción |
|---|---|---|---|
columns * | CustomColumnDef<T>[] | — | Definición de columnas. Crear con useMemo. |
getRowId * | (row: T) => string | — | Id estable por fila (normalmente row.id). |
fetchFn * | DataTableFetchFn<T> | — | Cómo pedir una página. |
initialData | T[] | — | Primera página (SSR). Si está presente, no hay fetch al montar. |
initialTotalRows | number | 0 | Total que acompaña a initialData. |
initialPageIndex | number | 0 | Estado inicial. Normalmente sale de useTableSearchParams o de smartProps. |
initialPageSize | number | 10 | Estado inicial. |
initialSorting | SortingState[] | [] | Estado inicial. |
initialFilter | string | "" | Estado inicial. |
initialColumnVisibility | Record<string, boolean> | {} | Visibilidad inicial por columna. |
initialDensity | "compact"|"default"|"comfortable" | "default" | Densidad inicial. |
syncSearchParams | boolean | false | La tabla lee la URL al montar y la reescribe sola. No combinar con useTableSearchParams en la misma tabla. |
selection / expansion / pagination / sorting / filter / columnVisibility | configs "smart" | — | Las configs sin sus campos de estado (el store los pone). |
| presentación | Acepta además todas las props de presentación de CustomDataTable: style, toolbarConfig, export, copy, print, fullscreen, bulkActions, emptyMessage/emptyIcon/emptyState, mobileCardRender, columnOrder, columnPinning, columnResizing, virtualization, keyboardNavigation, persistence, loadingConfig, caption, footer, onRowClick/onRowDoubleClick/onRowContextMenu, clases… |
La fila de totales no tiene prop en el modo smart: si el fetch devuelve aggregates, se pinta sola.
Ref imperativo — SmartDataTableRef<T>
| Método | Qué hace | Cuándo usarlo |
|---|---|---|
refetch() | Repite la página actual mostrando el indicador. | Botón "reintentar" manual. |
silentRefetch() | Repite sin indicador; gana a cualquier fetch en vuelo. | El estándar tras cualquier mutación. |
resetAndRefetch() | Página 0 + refetch. Limpia selección. | Tras cambiar un filtro externo. |
updateRow(id, partial) | Parchea la fila en memoria e invalida fetches en vuelo. | Actualización optimista de un toggle. |
removeRow(id) | Quita la fila y resta 1 al total. | Eliminación optimista. |
getSelectedRowIds() | Ids marcados. | Acciones masivas. |
clearSelection() | Desmarca todo (incluida la selección cross-page). | Tras completar una acción masiva. |