Hooks
useSmartTable, useTableSearchParams, useTableFilters y los hooks de soporte.
useSmartTable(config)
| Opción | Tipo | Descripción |
|---|---|---|
fetchPage * | (params, filterValues) => Promise<DataTableFetchResult> | Tu page action. filterValues es Record<string, string[]> con los filtros facetados vigentes. |
filterDefinitions | FilterDefinition[] | Los filtros del menú. |
defaultPageSize | number (20) | Tamaño por defecto (no se escribe en la URL). |
legacyFilterKeys | Record<string, string> | Nombre nuevo → nombre viejo aceptado al leer. |
navigateTo | string | Prefijo del detalle: doble clic → {navigateTo}/{row.id}. |
liveRefresh | (refresh) => cleanup | Suscripción a eventos externos (SSE…). |
paramPrefix | string | Prefijo de las claves de URL (multi-tabla). |
Devuelve: { smartProps, tableRef, filtersUI, filterValuesRef, searchTextRef, hasUrlParams, hasActiveFilters, clearFilters }.
useTableSearchParams(config?)
La pieza de bajo nivel (la usa useSmartTable). Config: defaultPageSize, filterKeys, legacyFilterKeys, paramPrefix.
Devuelve initialPageIndex/PageSize/Sorting/Filter, hasUrlParams, getFilter(key) y updateParams(fetchParams, filters?) — llamada dentro del fetchFn para mantener la URL al día.
useTableFilters(config)
Config: { definitions, tableRef, getFilter }. Estado + UI de los filtros facetados. Devuelve filtersUI (el menú), valuesRef, asSearchParams(), clearAll() y hasAny.
Los valores viven además en una ref porque el fetchFn se ejecuta antes del siguiente render.
useRowNavigate(prefix, idKey?)
const onRowDoubleClick = useRowNavigate<OrderRow>("/orders");
// fila → /orders/{row.id} · idKey cambia el campo usado como iduseDataTableLiveRefresh(tableRef, subscribe)
useDataTableLiveRefresh(tableRef, (refresh) =>
subscribeRealtime("order:updated", refresh));Eventos en ráfaga se agrupan (debounce 300ms) y disparan silentRefetch(). La función de suscripción devuelve su cleanup.
useDataTableRefetch()
Para componentes dentro de la tabla (celdas, diálogos de una celda): devuelve una función que hace silentRefetch() de la tabla contenedora. Fuera de una tabla smart no hace nada.