Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions packages/table-core/src/core/cell.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { RowData, Cell, Column, Row, Table } from '../types'
import { Getter, getMemoOptions, memo } from '../utils'

export interface CellContext<TData extends RowData, TValue> {
export interface CellContext<in out TData extends RowData, in out TValue> {
cell: Cell<TData, TValue>
column: Column<TData, TValue>
getValue: Getter<TValue>
Expand All @@ -10,7 +10,7 @@ export interface CellContext<TData extends RowData, TValue> {
table: Table<TData>
}

export interface CoreCell<TData extends RowData, TValue> {
export interface CoreCell<in out TData extends RowData, in out TValue> {
/**
* The associated Column object for the cell.
* @link [API Docs](https://tanstack.com/table/v8/docs/api/core/cell#column)
Expand Down
2 changes: 1 addition & 1 deletion packages/table-core/src/core/column.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import {
} from '../types'
import { getMemoOptions, memo } from '../utils'

export interface CoreColumn<TData extends RowData, TValue> {
export interface CoreColumn<in out TData extends RowData, in out TValue> {
/**
* The resolved accessor function to use when extracting the value for the column from each row. Will only be defined if the column def has a valid accessor key or function defined.
* @link [API Docs](https://tanstack.com/table/v8/docs/api/core/column#accessorfn)
Expand Down
4 changes: 2 additions & 2 deletions packages/table-core/src/core/headers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ export interface CoreHeaderGroup<TData extends RowData> {
id: string
}

export interface HeaderContext<TData, TValue> {
export interface HeaderContext<in out TData, in out TValue> {
/**
* An instance of a column.
*/
Expand All @@ -31,7 +31,7 @@ export interface HeaderContext<TData, TValue> {
table: Table<TData>
}

export interface CoreHeader<TData extends RowData, TValue> {
export interface CoreHeader<in out TData extends RowData, in out TValue> {
/**
* The col-span for the header.
* @link [API Docs](https://tanstack.com/table/v8/docs/api/core/header#colspan)
Expand Down
4 changes: 2 additions & 2 deletions packages/table-core/src/features/ColumnFaceting.ts
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,8 @@ export interface FacetedOptions<TData extends RowData> {
//

export const ColumnFaceting: TableFeature = {
createColumn: <TData extends RowData>(
column: Column<TData, unknown>,
createColumn: <TData extends RowData, TValue>(
column: Column<TData, TValue>,
table: Table<TData>,
): void => {
column._getFacetedRowModel =
Expand Down
6 changes: 3 additions & 3 deletions packages/table-core/src/features/ColumnFiltering.ts
Original file line number Diff line number Diff line change
Expand Up @@ -265,8 +265,8 @@ export const ColumnFiltering: TableFeature = {
} as ColumnFiltersOptions<TData>
},

createColumn: <TData extends RowData>(
column: Column<TData, unknown>,
createColumn: <TData extends RowData, TValue>(
column: Column<TData, TValue>,
table: Table<TData>,
): void => {
column.getAutoFilterFn = () => {
Expand Down Expand Up @@ -334,7 +334,7 @@ export const ColumnFiltering: TableFeature = {

//
if (
shouldAutoRemoveFilter(filterFn as FilterFn<TData>, newFilter, column)
shouldAutoRemoveFilter(filterFn as FilterFn<TData>, newFilter, column as Column<TData, unknown>)
) {
return old?.filter((d) => d.id !== column.id) ?? []
}
Expand Down
2 changes: 1 addition & 1 deletion packages/table-core/src/features/ColumnGrouping.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ export type AggregationFnOption<TData extends RowData> =
| BuiltInAggregationFn
| AggregationFn<TData>

export interface GroupingColumnDef<TData extends RowData, TValue> {
export interface GroupingColumnDef<in out TData extends RowData, in out TValue> {
/**
* The cell to display each row for the column if the cell is an aggregate. If a function is passed, it will be passed a props object with the context of the cell and should return the property type for your adapter (the exact type depends on the adapter being used).
* @link [API Docs](https://tanstack.com/table/v8/docs/api/features/grouping#aggregatedcell)
Expand Down
4 changes: 2 additions & 2 deletions packages/table-core/src/features/ColumnOrdering.ts
Original file line number Diff line number Diff line change
Expand Up @@ -88,8 +88,8 @@ export const ColumnOrdering: TableFeature = {
}
},

createColumn: <TData extends RowData>(
column: Column<TData, unknown>,
createColumn: <TData extends RowData, TValue>(
column: Column<TData, TValue>,
table: Table<TData>,
): void => {
column.getIndex = memo(
Expand Down
6 changes: 3 additions & 3 deletions packages/table-core/src/features/GlobalFiltering.ts
Original file line number Diff line number Diff line change
Expand Up @@ -118,16 +118,16 @@ export const GlobalFiltering: TableFeature = {
} as GlobalFilterOptions<TData>
},

createColumn: <TData extends RowData>(
column: Column<TData, unknown>,
createColumn: <TData extends RowData, TValue>(
column: Column<TData, TValue>,
table: Table<TData>,
): void => {
column.getCanGlobalFilter = () => {
return (
(column.columnDef.enableGlobalFilter ?? true) &&
(table.options.enableGlobalFilter ?? true) &&
(table.options.enableFilters ?? true) &&
(table.options.getColumnCanGlobalFilter?.(column) ?? true) &&
(table.options.getColumnCanGlobalFilter?.(column as Column<TData, unknown>) ?? true) &&
!!column.accessorFn
)
}
Expand Down
52 changes: 30 additions & 22 deletions packages/table-core/src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -98,14 +98,20 @@ import { CellContext, CoreCell } from './core/cell'
import { CoreColumn } from './core/column'

export interface TableFeature<TData extends RowData = any> {
createCell?: (
cell: Cell<TData, unknown>,
column: Column<TData>,
createCell?: <TValue>(
cell: Cell<TData, TValue>,
column: Column<TData, TValue>,
row: Row<TData>,
table: Table<TData>,
) => void
createColumn?: (column: Column<TData, unknown>, table: Table<TData>) => void
createHeader?: (header: Header<TData, unknown>, table: Table<TData>) => void
createColumn?: <TValue>(
column: Column<TData, TValue>,
table: Table<TData>
) => void
createHeader?: <TValue>(
header: Header<TData, TValue>,
table: Table<TData>
) => void
createRow?: (row: Row<TData>, table: Table<TData>) => void
createTable?: (table: Table<TData>) => void
getDefaultColumnDef?: () => Partial<ColumnDef<TData, unknown>>
Expand Down Expand Up @@ -227,7 +233,7 @@ export interface RowModel<TData extends RowData> {
rowsById: Record<string, Row<TData>>
}

export type AccessorFn<TData extends RowData, TValue = unknown> = (
export type AccessorFn<in TData extends RowData, out TValue = unknown> = (
originalRow: TData,
index: number,
) => TValue
Expand Down Expand Up @@ -256,7 +262,7 @@ type ColumnIdentifiers<TData extends RowData, TValue> =

//

interface ColumnDefExtensions<TData extends RowData, TValue = unknown>
interface ColumnDefExtensions<in out TData extends RowData, in out TValue = unknown>
extends
VisibilityColumnDef,
ColumnPinningColumnDef,
Expand All @@ -267,8 +273,8 @@ interface ColumnDefExtensions<TData extends RowData, TValue = unknown>
ColumnSizingColumnDef {}

export interface ColumnDefBase<
TData extends RowData,
TValue = unknown,
in out TData extends RowData,
in out TValue = unknown,
> extends ColumnDefExtensions<TData, TValue> {
getUniqueValues?: AccessorFn<TData, unknown[]>
footer?: ColumnDefTemplate<HeaderContext<TData, TValue>>
Expand All @@ -279,8 +285,8 @@ export interface ColumnDefBase<
//

export interface IdentifiedColumnDef<
TData extends RowData,
TValue = unknown,
in out TData extends RowData,
in out TValue = unknown,
> extends ColumnDefBase<TData, TValue> {
id?: string
header?: StringOrTemplateHeader<TData, TValue>
Expand All @@ -292,8 +298,8 @@ export type DisplayColumnDef<
> = ColumnDefBase<TData, TValue> & ColumnIdentifiers<TData, TValue>

interface GroupColumnDefBase<
TData extends RowData,
TValue = unknown,
in out TData extends RowData,
in out TValue = unknown,
> extends ColumnDefBase<TData, TValue> {
columns?: ColumnDef<TData, any>[]
}
Expand All @@ -304,8 +310,8 @@ export type GroupColumnDef<
> = GroupColumnDefBase<TData, TValue> & ColumnIdentifiers<TData, TValue>

export interface AccessorFnColumnDefBase<
TData extends RowData,
TValue = unknown,
in out TData extends RowData,
in out TValue = unknown,
> extends ColumnDefBase<TData, TValue> {
accessorFn: AccessorFn<TData, TValue>
}
Expand All @@ -316,8 +322,8 @@ export type AccessorFnColumnDef<
> = AccessorFnColumnDefBase<TData, TValue> & ColumnIdentifiers<TData, TValue>

export interface AccessorKeyColumnDefBase<
TData extends RowData,
TValue = unknown,
in out TData extends RowData,
in out TValue = unknown,
> extends ColumnDefBase<TData, TValue> {
id?: string
accessorKey: (string & {}) | keyof TData
Expand Down Expand Up @@ -347,7 +353,7 @@ export type ColumnDefResolved<
accessorKey?: string
}

export interface Column<TData extends RowData, TValue = unknown>
export interface Column<in out TData extends RowData, in out TValue = unknown>
extends
CoreColumn<TData, TValue>,
ColumnVisibilityColumn,
Expand All @@ -360,11 +366,13 @@ export interface Column<TData extends RowData, TValue = unknown>
ColumnSizingColumn,
ColumnOrderColumn {}

export interface Cell<TData extends RowData, TValue>
extends CoreCell<TData, TValue>, GroupingCell {}
export interface Cell<in out TData extends RowData, in out TValue>
extends CoreCell<TData, TValue>,
GroupingCell {}

export interface Header<TData extends RowData, TValue>
extends CoreHeader<TData, TValue>, ColumnSizingHeader {}
export interface Header<in out TData extends RowData, in out TValue>
extends CoreHeader<TData, TValue>,
ColumnSizingHeader {}

export interface HeaderGroup<
TData extends RowData,
Expand Down