UNPKG

@justjarethb/table-core

Version:

Fork of @tanstack/table-core with support for event listeners in different windows

308 lines (263 loc) 7.98 kB
import { CoreOptions, CoreTableState, CoreInstance } from './core/table' import { VisibilityInstance, VisibilityTableState, VisibilityColumn as ColumnVisibilityColumn, VisibilityOptions, VisibilityColumnDef, VisibilityRow, } from './features/Visibility' import { ColumnOrderInstance, ColumnOrderOptions, ColumnOrderTableState, } from './features/Ordering' import { ColumnPinningColumn, ColumnPinningColumnDef, ColumnPinningInstance, ColumnPinningOptions, ColumnPinningRow, ColumnPinningTableState, } from './features/Pinning' import { CoreHeader, CoreHeaderGroup, HeaderContext, HeadersInstance, } from './core/headers' import { FiltersColumn, FiltersColumnDef, FiltersInstance, FiltersOptions, FiltersRow, FiltersTableState, } from './features/Filters' import { SortingColumn, SortingColumnDef, SortingInstance, SortingOptions, SortingTableState, } from './features/Sorting' import { GroupingCell, GroupingColumn, GroupingColumnDef, GroupingInstance, GroupingOptions, GroupingRow, GroupingTableState, } from './features/Grouping' import { ExpandedInstance, ExpandedOptions, ExpandedTableState, ExpandedRow, } from './features/Expanding' import { ColumnSizingColumn, ColumnSizingColumnDef, ColumnSizingHeader, ColumnSizingInstance, ColumnSizingOptions, ColumnSizingTableState, } from './features/ColumnSizing' import { PaginationInitialTableState, PaginationInstance, PaginationOptions, PaginationTableState, } from './features/Pagination' import { RowSelectionInstance, RowSelectionOptions, RowSelectionRow, RowSelectionTableState, } from './features/RowSelection' import { CoreRow } from './core/row' import { PartialKeys, UnionToIntersection } from './utils' import { CellContext, CoreCell } from './core/cell' import { CoreColumn } from './core/column' export interface TableMeta<TData extends RowData> {} export interface ColumnMeta<TData extends RowData, TValue> {} export interface FilterMeta {} export interface FilterFns {} export interface SortingFns {} export interface AggregationFns {} export type Updater<T> = T | ((old: T) => T) export type OnChangeFn<T> = (updaterOrValue: Updater<T>) => void export type RowData = unknown | object | any[] export type AnyRender = (Comp: any, props: any) => any export interface Table<TData extends RowData> extends CoreInstance<TData>, HeadersInstance<TData>, VisibilityInstance<TData>, ColumnOrderInstance<TData>, ColumnPinningInstance<TData>, FiltersInstance<TData>, SortingInstance<TData>, GroupingInstance<TData>, ColumnSizingInstance, ExpandedInstance<TData>, PaginationInstance<TData>, RowSelectionInstance<TData> {} interface FeatureOptions<TData extends RowData> extends VisibilityOptions, ColumnOrderOptions, ColumnPinningOptions, FiltersOptions<TData>, SortingOptions<TData>, GroupingOptions, ExpandedOptions<TData>, ColumnSizingOptions, PaginationOptions, RowSelectionOptions<TData> {} export type TableOptionsResolved<TData extends RowData> = CoreOptions<TData> & FeatureOptions<TData> export interface TableOptions<TData extends RowData> extends PartialKeys< TableOptionsResolved<TData>, 'state' | 'onStateChange' | 'renderFallbackValue' > {} export interface TableState extends CoreTableState, VisibilityTableState, ColumnOrderTableState, ColumnPinningTableState, FiltersTableState, SortingTableState, ExpandedTableState, GroupingTableState, ColumnSizingTableState, PaginationTableState, RowSelectionTableState {} interface CompleteInitialTableState extends CoreTableState, VisibilityTableState, ColumnOrderTableState, ColumnPinningTableState, FiltersTableState, SortingTableState, ExpandedTableState, GroupingTableState, ColumnSizingTableState, PaginationInitialTableState, RowSelectionTableState {} export interface InitialTableState extends Partial<CompleteInitialTableState> {} export interface Row<TData extends RowData> extends CoreRow<TData>, VisibilityRow<TData>, ColumnPinningRow<TData>, FiltersRow<TData>, GroupingRow, RowSelectionRow, ExpandedRow {} export interface RowModel<TData extends RowData> { rows: Row<TData>[] flatRows: Row<TData>[] rowsById: Record<string, Row<TData>> } export type AccessorFn<TData extends RowData, TValue = unknown> = ( originalRow: TData, index: number ) => TValue export type ColumnDefTemplate<TProps extends object> = | string | ((props: TProps) => any) export type StringOrTemplateHeader<TData, TValue> = | string | ColumnDefTemplate<HeaderContext<TData, TValue>> interface StringHeaderIdentifier { header: string id?: string } interface IdIdentifier<TData extends RowData, TValue> { id: string header?: StringOrTemplateHeader<TData, TValue> } type ColumnIdentifiers<TData extends RowData, TValue> = | IdIdentifier<TData, TValue> | StringHeaderIdentifier // interface ColumnDefExtensions<TData extends RowData, TValue = unknown> extends VisibilityColumnDef, ColumnPinningColumnDef, FiltersColumnDef<TData>, SortingColumnDef<TData>, GroupingColumnDef<TData, TValue>, ColumnSizingColumnDef {} export interface ColumnDefBase<TData extends RowData, TValue = unknown> extends ColumnDefExtensions<TData, TValue> { getUniqueValues?: AccessorFn<TData, unknown[]> footer?: ColumnDefTemplate<HeaderContext<TData, TValue>> cell?: ColumnDefTemplate<CellContext<TData, TValue>> meta?: ColumnMeta<TData, TValue> } // export interface IdentifiedColumnDef<TData extends RowData, TValue = unknown> extends ColumnDefBase<TData, TValue> { id?: string header?: StringOrTemplateHeader<TData, TValue> } export type DisplayColumnDef< TData extends RowData, TValue = unknown > = ColumnDefBase<TData, TValue> & ColumnIdentifiers<TData, TValue> interface GroupColumnDefBase<TData extends RowData, TValue = unknown> extends ColumnDefBase<TData, TValue> { columns?: ColumnDef<TData, any>[] } export type GroupColumnDef< TData extends RowData, TValue = unknown > = GroupColumnDefBase<TData, TValue> & ColumnIdentifiers<TData, TValue> interface AccessorFnColumnDefBase<TData extends RowData, TValue = unknown> extends ColumnDefBase<TData, TValue> { accessorFn: AccessorFn<TData, TValue> } export type AccessorFnColumnDef< TData extends RowData, TValue = unknown > = AccessorFnColumnDefBase<TData, TValue> & ColumnIdentifiers<TData, TValue> interface AccessorKeyColumnDefBase<TData extends RowData, TValue = unknown> extends ColumnDefBase<TData, TValue> { id?: string accessorKey: (string & {}) | keyof TData } export type AccessorKeyColumnDef< TData extends RowData, TValue = unknown > = AccessorKeyColumnDefBase<TData, TValue> & Partial<ColumnIdentifiers<TData, TValue>> export type AccessorColumnDef<TData extends RowData, TValue = unknown> = | AccessorKeyColumnDef<TData, TValue> | AccessorFnColumnDef<TData, TValue> // export type ColumnDef<TData extends RowData, TValue = unknown> = | DisplayColumnDef<TData, TValue> | GroupColumnDef<TData, TValue> | AccessorColumnDef<TData, TValue> export type ColumnDefResolved< TData extends RowData, TValue = unknown > = Partial<UnionToIntersection<ColumnDef<TData, TValue>>> & { accessorKey?: string } export interface Column<TData extends RowData, TValue = unknown> extends CoreColumn<TData, TValue>, ColumnVisibilityColumn, ColumnPinningColumn, FiltersColumn<TData>, SortingColumn<TData>, GroupingColumn<TData>, ColumnSizingColumn {} export interface Cell<TData extends RowData, TValue> extends CoreCell<TData, TValue>, GroupingCell {} export interface Header<TData extends RowData, TValue> extends CoreHeader<TData, TValue>, ColumnSizingHeader {} export interface HeaderGroup<TData extends RowData> extends CoreHeaderGroup<TData> {}