Skip to content

Commit ef13d31

Browse files
committed
start making feature types be dynamic
1 parent 795e8e4 commit ef13d31

File tree

21 files changed

+327
-203
lines changed

21 files changed

+327
-203
lines changed

docs/guide/custom-features.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ export interface TableFeature<TFeatures extends TableFeatures, TData extends Row
4545
_getDefaultColumnDef?: () => Partial<ColumnDef<TFeatures, TData, unknown>>
4646
_getDefaultOptions?: (
4747
table: Table<TFeatures, TData>
48-
) => Partial<TableOptionsResolved<TFeatures, TData>>
48+
) => Partial<TableOptions<TFeatures, TData>>
4949
_getInitialState?: (initialState?: InitialTableState) => Partial<TableState>
5050
}
5151
```
@@ -146,7 +146,7 @@ declare module '@tanstack/react-table' { // or whatever framework adapter you ar
146146
//merge our new feature's state with the existing table state
147147
interface TableState extends DensityTableState {}
148148
//merge our new feature's options with the existing table options
149-
interface TableOptionsResolved<TFeatures extends TableFeatures, TData extends RowData>
149+
interface TableOptions<TFeatures extends TableFeatures, TData extends RowData>
150150
extends DensityOptions {}
151151
//merge our new feature's instance APIs with the existing table instance APIs
152152
interface Table<TFeatures extends TableFeatures, TData extends RowData> extends DensityInstance {}

examples/react/custom-features/src/main.tsx

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,10 +52,8 @@ declare module '@tanstack/react-table' {
5252
//merge our new feature's state with the existing table state
5353
interface TableState extends DensityTableState {}
5454
//merge our new feature's options with the existing table options
55-
interface TableOptionsResolved<
56-
TFeatures extends TableFeatures,
57-
TData extends RowData,
58-
> extends DensityOptions {}
55+
interface TableOptions<TFeatures extends TableFeatures, TData extends RowData>
56+
extends DensityOptions {}
5957
//merge our new feature's instance APIs with the existing table instance APIs
6058
interface Table<TFeatures extends TableFeatures, TData extends RowData>
6159
extends DensityInstance {}

packages/angular-table/src/index.ts

Lines changed: 18 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import type {
77
Table,
88
TableFeatures,
99
TableOptions,
10-
TableOptionsResolved,
1110
TableState,
1211
} from '@tanstack/table-core'
1312

@@ -41,26 +40,24 @@ export function injectTable<
4140

4241
// Compose table options using computed.
4342
// This is to allow `tableSignal` to listen and set table option
44-
const updatedOptions = computed<TableOptionsResolved<TFeatures, TData>>(
45-
() => {
46-
// listen to table state changed
47-
const tableState = state()
48-
// listen to input options changed
49-
const tableOptions = options()
50-
return {
51-
...table.options,
52-
...resolvedOptions,
53-
...tableOptions,
54-
state: { ...tableState, ...tableOptions.state },
55-
onStateChange: (updater) => {
56-
const value =
57-
updater instanceof Function ? updater(tableState) : updater
58-
state.set(value)
59-
resolvedOptions.onStateChange(updater)
60-
},
61-
}
62-
},
63-
)
43+
const updatedOptions = computed<TableOptions<TFeatures, TData>>(() => {
44+
// listen to table state changed
45+
const tableState = state()
46+
// listen to input options changed
47+
const tableOptions = options()
48+
return {
49+
...table.options,
50+
...resolvedOptions,
51+
...tableOptions,
52+
state: { ...tableState, ...tableOptions.state },
53+
onStateChange: (updater) => {
54+
const value =
55+
updater instanceof Function ? updater(tableState) : updater
56+
state.set(value)
57+
resolvedOptions.onStateChange(updater)
58+
},
59+
}
60+
})
6461

6562
// convert table instance to signal for proxify to listen to any table state and options changes
6663
const tableSignal = computed(

packages/lit-table/src/index.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import type {
44
Table,
55
TableFeatures,
66
TableOptions,
7-
TableOptionsResolved,
87
TableState,
98
} from '@tanstack/table-core'
109
import type {
@@ -45,7 +44,7 @@ export class TableController<
4544

4645
public table(options: TableOptions<TFeatures, TData>) {
4746
if (!this.tableInstance) {
48-
const resolvedOptions: TableOptionsResolved<TFeatures, TData> = {
47+
const resolvedOptions: TableOptions<TFeatures, TData> = {
4948
state: {},
5049
onStateChange: () => {}, // noop
5150
renderFallbackValue: null,

packages/qwik-table/src/index.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import type {
55
Table,
66
TableFeatures,
77
TableOptions,
8-
TableOptionsResolved,
98
} from '@tanstack/table-core'
109

1110
export * from '@tanstack/table-core'
@@ -36,7 +35,7 @@ export function useTable<
3635
TData extends RowData,
3736
>(options: TableOptions<TFeatures, TData>) {
3837
// Compose in the generic options to the user options
39-
const resolvedOptions: TableOptionsResolved<TFeatures, TData> = {
38+
const resolvedOptions: TableOptions<TFeatures, TData> = {
4039
state: {},
4140
onStateChange: () => {},
4241
renderFallbackValue: null,

packages/react-table/src/tableFactory.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { _createTable, createColumnHelper } from '@tanstack/table-core'
1+
import { createColumnHelper } from '@tanstack/table-core'
22
import { useTable } from './useTable'
33
import type {
44
ColumnHelper,

packages/react-table/src/useTable.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,11 @@ import type {
1010
Table,
1111
TableFeatures,
1212
TableOptions,
13-
TableOptionsResolved,
1413
TableState,
1514
} from '@tanstack/table-core'
1615

1716
function useTableRef<TFeatures extends TableFeatures, TData extends RowData>(
18-
options: TableOptionsResolved<TFeatures, TData>,
17+
options: TableOptions<TFeatures, TData>,
1918
): Table<TFeatures, TData> {
2019
const tableRef = React.useRef<Table<TFeatures, TData>>()
2120

@@ -38,7 +37,7 @@ export function useTable<
3837
getInitialTableState(builtInFeatures, tableOptions.initialState),
3938
)
4039

41-
const statefulOptions: TableOptionsResolved<TFeatures, TData> = {
40+
const statefulOptions: TableOptions<TFeatures, TData> = {
4241
...tableOptions,
4342
state: { ...state, ...tableOptions.state },
4443
onStateChange: (updater) => {

packages/solid-table/src/index.tsx

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,7 @@
11
import { _createTable } from '@tanstack/table-core'
22
import { createComponent, createComputed, mergeProps } from 'solid-js'
33
import { createStore } from 'solid-js/store'
4-
import type {
5-
RowData,
6-
TableFeatures,
7-
TableOptions,
8-
TableOptionsResolved,
9-
} from '@tanstack/table-core'
4+
import type { RowData, TableFeatures, TableOptions } from '@tanstack/table-core'
105

116
import type { JSX } from 'solid-js'
127

@@ -29,7 +24,7 @@ export function createTable<
2924
TFeatures extends TableFeatures,
3025
TData extends RowData,
3126
>(options: TableOptions<TFeatures, TData>) {
32-
const resolvedOptions: TableOptionsResolved<TFeatures, TData> = mergeProps(
27+
const resolvedOptions: TableOptions<TFeatures, TData> = mergeProps(
3328
{
3429
state: {}, // Dummy state
3530
onStateChange: () => {}, // noop

packages/svelte-table/src/table.svelte.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import {
22
type RowData,
33
type TableFeatures,
44
type TableOptions,
5-
type TableOptionsResolved,
5+
type TableOptions,
66
type TableState,
77
_createTable,
88
} from '@tanstack/table-core'
@@ -37,7 +37,7 @@ export function createTable<
3737
TFeatures extends TableFeatures,
3838
TData extends RowData,
3939
>(options: TableOptions<TFeatures, TData>) {
40-
const resolvedOptions: TableOptionsResolved<TFeatures, TData> = mergeObjects(
40+
const resolvedOptions: TableOptions<TFeatures, TData> = mergeObjects(
4141
{
4242
state: {},
4343
onStateChange() {},

packages/table-core/src/core/columns/Columns.types.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import type {
33
CellData,
44
Column,
55
ColumnDef,
6+
ColumnDef_All,
67
RowData,
78
TableFeatures,
89
} from '../../types'
@@ -23,7 +24,7 @@ export interface Column_CoreProperties<
2324
* @link [API Docs](https://tanstack.com/table/v8/docs/api/core/column#columndef)
2425
* @link [Guide](https://tanstack.com/table/v8/docs/guide/column-defs)
2526
*/
26-
columnDef: ColumnDef<TFeatures, TData, TValue>
27+
columnDef: ColumnDef_All<TData, TValue>
2728
/**
2829
* The child column (if the column is a group column). Will be an empty array if the column is not a group column.
2930
* @link [API Docs](https://tanstack.com/table/v8/docs/api/core/column#columns)

0 commit comments

Comments
 (0)