@stanfordspezi/spezi-web-design-system
Version:
Stanford Biodesign Digital Health Spezi Web Design System
62 lines (61 loc) • 2.19 kB
TypeScript
import { RankingInfo } from '@tanstack/match-sorter-utils';
import { CellContext, FilterFn, RowData } from '@tanstack/react-table';
import { TableOptions } from '@tanstack/table-core';
import { PartialSome } from '../../utils/misc';
declare module "@tanstack/react-table" {
interface FilterFns {
fuzzy: FilterFn<unknown>;
}
interface FilterMeta {
itemRank: RankingInfo;
}
interface ColumnMeta<TData extends RowData, TValue> {
/**
* Applies custom CSS classes to the cell's `<td>` element.
* Can be a static string or a function that receives the cell context
* and returns a class string (or undefined for no classes).
*
* @example
* ```ts
* // Static
* meta: { cellClassName: "bg-success/10 text-success" }
*
* // Dynamic
* meta: {
* cellClassName: (ctx) => ctx.getValue() > 50
* ? "bg-destructive/10 text-destructive"
* : undefined,
* }
* ```
*/
cellClassName?: string | ((context: CellContext<TData, TValue>) => string | undefined);
}
}
/**
* Default fuzzyFilter implementation, used for global text filtering.
*/
export declare const fuzzyFilter: FilterFn<unknown>;
export interface UseDataTableProps<Data> extends PartialSome<TableOptions<Data>, "getCoreRowModel" | "filterFns"> {
/**
* Defines how many items are displayed per one page.
*
* @default 50
*/
pageSize?: number;
}
/**
* Composes useReactTable usage, contains core data table logic.
*/
export declare const useDataTable: <Data>({ columns, data, pageSize, state, initialState, ...props }: UseDataTableProps<Data>) => {
globalFilter: string;
setGlobalFilter: import('react').Dispatch<import('react').SetStateAction<string>>;
setGlobalFilterDebounced: import('use-debounce').DebouncedState<(value: string) => void>;
table: import('@tanstack/table-core').Table<Data>;
rows: import('@tanstack/table-core').Row<Data>[];
emptyProps: {
show: boolean;
textFilter: string | undefined;
hasFilters: boolean;
};
isEmpty: boolean;
};