Skip to content

Commit 38e49f2

Browse files
committed
make all util functions use table internal type
1 parent 6be9060 commit 38e49f2

File tree

23 files changed

+279
-726
lines changed

23 files changed

+279
-726
lines changed

examples/react/basic-table-helper/src/main.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import * as React from 'react'
22
import ReactDOM from 'react-dom/client'
33
import { createTableHelper, flexRender } from '@tanstack/react-table'
4+
import type { ColumnDef } from '@tanstack/react-table'
45
import './index.css'
56

67
// This example uses the new `createTableHelper` method to create a re-usable table helper object instead of independently using the standalone `useTable` hook and `createColumnHelper` method. You can choose to use either way.
@@ -94,7 +95,7 @@ const columns = [
9495
header: 'Profile Progress',
9596
footer: (info) => info.column.id,
9697
}),
97-
]
98+
] as Array<ColumnDef<typeof tableHelper.features, Person, unknown>>
9899

99100
function App() {
100101
// 6. Store data with a stable reference

examples/react/basic/src/main.tsx

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,8 +110,6 @@ function App() {
110110
// add additional table options here
111111
})
112112

113-
console.log('table', table)
114-
115113
// 7. Render your table markup from the table instance APIs
116114
return (
117115
<div className="p-2">

packages/react-table/src/tableHelper.ts

Lines changed: 25 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { constructTableHelper } from '@tanstack/table-core'
22
import { useTable } from './useTable'
33
import type {
4+
ColumnDef,
45
RowData,
56
Table,
67
TableFeatures,
@@ -36,27 +37,27 @@ export function createTableHelper<
3637

3738
// test
3839

39-
// type Person = {
40-
// firstName: string
41-
// lastName: string
42-
// age: number
43-
// }
44-
45-
// const tableHelper = createTableHelper({
46-
// _features: { RowSelection: {} },
47-
// TData: {} as Person,
48-
// })
49-
50-
// const columns = [
51-
// tableHelper.columnHelper.accessor('firstName', { header: 'First Name' }),
52-
// tableHelper.columnHelper.accessor('lastName', { header: 'Last Name' }),
53-
// tableHelper.columnHelper.accessor('age', { header: 'Age' }),
54-
// tableHelper.columnHelper.display({ header: 'Actions', id: 'actions' }),
55-
// ]
56-
57-
// const data: Array<Person> = []
58-
59-
// tableHelper.useTable({
60-
// columns,
61-
// data,
62-
// })
40+
type Person = {
41+
firstName: string
42+
lastName: string
43+
age: number
44+
}
45+
46+
const tableHelper = createTableHelper({
47+
_features: { RowSelection: {} },
48+
TData: {} as Person,
49+
})
50+
51+
const columns = [
52+
tableHelper.columnHelper.accessor('firstName', { header: 'First Name' }),
53+
tableHelper.columnHelper.accessor('lastName', { header: 'Last Name' }),
54+
tableHelper.columnHelper.accessor('age', { header: 'Age' }),
55+
tableHelper.columnHelper.display({ header: 'Actions', id: 'actions' }),
56+
] as Array<ColumnDef<typeof tableHelper.features, Person, unknown>>
57+
58+
const data: Array<Person> = []
59+
60+
tableHelper.useTable({
61+
columns,
62+
data,
63+
})

packages/table-core/src/core/table/Tables.utils.ts

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,24 @@ import { createCoreRowModel } from './createCoreRowModel'
44
import type { RowData, Updater } from '../../types/type-utils'
55
import type { TableFeatures } from '../../types/TableFeatures'
66
import type { RowModel } from '../../types/RowModel'
7-
import type { Table } from '../../types/Table'
7+
import type { Table_Internal } from '../../types/Table'
88
import type { TableOptions } from '../../types/TableOptions'
99
import type { TableState } from '../../types/TableState'
1010

1111
export function table_reset<
1212
TFeatures extends TableFeatures,
1313
TData extends RowData,
14-
>(table: Table<TFeatures, TData>): void {
14+
>(table: Table_Internal<TFeatures, TData>): void {
1515
table_setState(table, table.initialState)
1616
}
1717

1818
export function table_mergeOptions<
1919
TFeatures extends TableFeatures,
2020
TData extends RowData,
21-
>(table: Table<TFeatures, TData>, newOptions: TableOptions<TFeatures, TData>) {
21+
>(
22+
table: Table_Internal<TFeatures, TData>,
23+
newOptions: TableOptions<TFeatures, TData>,
24+
) {
2225
if (table.options.mergeOptions) {
2326
return table.options.mergeOptions(table.options, newOptions)
2427
}
@@ -33,7 +36,7 @@ export function table_setOptions<
3336
TFeatures extends TableFeatures,
3437
TData extends RowData,
3538
>(
36-
table: Table<TFeatures, TData>,
39+
table: Table_Internal<TFeatures, TData>,
3740
updater: Updater<TableOptions<TFeatures, TData>>,
3841
): void {
3942
const newOptions = functionalUpdate(updater, table.options)
@@ -43,22 +46,22 @@ export function table_setOptions<
4346
export function table_getInitialState<
4447
TFeatures extends TableFeatures,
4548
TData extends RowData,
46-
>(table: Table<TFeatures, TData>): TableState<TFeatures> {
49+
>(table: Table_Internal<TFeatures, TData>): TableState<TFeatures> {
4750
return structuredClone(table.initialState)
4851
}
4952

5053
export function table_getState<
5154
TFeatures extends TableFeatures,
5255
TData extends RowData,
53-
>(table: Table<TFeatures, TData>): TableState<TFeatures> {
56+
>(table: Table_Internal<TFeatures, TData>): TableState<TFeatures> {
5457
return table.options.state as TableState<TFeatures>
5558
}
5659

5760
export function table_setState<
5861
TFeatures extends TableFeatures,
5962
TData extends RowData,
6063
>(
61-
table: Table<TFeatures, TData>,
64+
table: Table_Internal<TFeatures, TData>,
6265
updater: Updater<TableState<TFeatures>>,
6366
): void {
6467
table.options.onStateChange?.(updater)
@@ -67,7 +70,7 @@ export function table_setState<
6770
export function table_getCoreRowModel<
6871
TFeatures extends TableFeatures,
6972
TData extends RowData,
70-
>(table: Table<TFeatures, TData>): RowModel<TFeatures, TData> {
73+
>(table: Table_Internal<TFeatures, TData>): RowModel<TFeatures, TData> {
7174
if (!table._rowModels.Core) {
7275
table._rowModels.Core =
7376
table.options._rowModels?.Core?.(table) ??
@@ -80,6 +83,6 @@ export function table_getCoreRowModel<
8083
export function table_getRowModel<
8184
TFeatures extends TableFeatures,
8285
TData extends RowData,
83-
>(table: Table<TFeatures, TData>): RowModel<TFeatures, TData> {
86+
>(table: Table_Internal<TFeatures, TData>): RowModel<TFeatures, TData> {
8487
return table_getPaginatedRowModel(table)
8588
}

packages/table-core/src/features/column-faceting/ColumnFaceting.utils.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { table_getPreFilteredRowModel } from '../column-filtering/ColumnFilterin
22
import type { CellData, RowData } from '../../types/type-utils'
33
import type { TableFeatures } from '../../types/TableFeatures'
44
import type { RowModel } from '../../types/RowModel'
5-
import type { Table } from '../../types/Table'
5+
import type { Table_Internal } from '../../types/Table'
66
import type { Column } from '../../types/Column'
77

88
export function column_getFacetedMinMaxValues<
@@ -11,7 +11,7 @@ export function column_getFacetedMinMaxValues<
1111
TValue extends CellData = CellData,
1212
>(
1313
column: Column<TFeatures, TData, TValue>,
14-
table: Table<TFeatures, TData>,
14+
table: Table_Internal<TFeatures, TData>,
1515
): () => [number, number] | undefined {
1616
return (
1717
table.options._rowModels?.FacetedMinMax?.(table, column.id) ??
@@ -25,7 +25,7 @@ export function column_getFacetedRowModel<
2525
TValue extends CellData = CellData,
2626
>(
2727
column: Column<TFeatures, TData, TValue> | undefined,
28-
table: Table<TFeatures, TData>,
28+
table: Table_Internal<TFeatures, TData>,
2929
): () => RowModel<TFeatures, TData> {
3030
return (
3131
table.options._rowModels?.Faceted?.(table, column?.id ?? '') ??
@@ -39,7 +39,7 @@ export function column_getFacetedUniqueValues<
3939
TValue extends CellData = CellData,
4040
>(
4141
column: Column<TFeatures, TData, TValue>,
42-
table: Table<TFeatures, TData>,
42+
table: Table_Internal<TFeatures, TData>,
4343
): () => Map<any, number> {
4444
return (
4545
table.options._rowModels?.FacetedUnique?.(table, column.id) ??

packages/table-core/src/features/column-filtering/ColumnFiltering.utils.ts

Lines changed: 15 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -9,20 +9,22 @@ import type { BuiltInFilterFn } from '../../fns/filterFns'
99
import type { CellData, RowData, Updater } from '../../types/type-utils'
1010
import type { TableFeatures } from '../../types/TableFeatures'
1111
import type { RowModel } from '../../types/RowModel'
12-
import type { Table } from '../../types/Table'
12+
import type { Table_Internal } from '../../types/Table'
1313
import type { Column } from '../../types/Column'
1414
import type {
1515
ColumnDef_ColumnFiltering,
1616
ColumnFiltersState,
1717
FilterFn,
18-
TableOptions_ColumnFiltering,
1918
} from './ColumnFiltering.types'
2019

2120
export function column_getAutoFilterFn<
2221
TFeatures extends TableFeatures,
2322
TData extends RowData,
2423
TValue extends CellData = CellData,
25-
>(column: Column<TFeatures, TData, TValue>, table: Table<TFeatures, TData>) {
24+
>(
25+
column: Column<TFeatures, TData, TValue>,
26+
table: Table_Internal<TFeatures, TData>,
27+
) {
2628
const firstRow = table_getCoreRowModel(table).flatRows[0]
2729

2830
const value = firstRow ? row_getValue(firstRow, table, column.id) : undefined
@@ -58,9 +60,7 @@ export function column_getFilterFn<
5860
column: Column<TFeatures, TData, TValue> & {
5961
columnDef: ColumnDef_ColumnFiltering<TFeatures, TData>
6062
},
61-
table: Table<TFeatures, TData> & {
62-
options: TableOptions_ColumnFiltering<TFeatures, TData>
63-
},
63+
table: Table_Internal<TFeatures, TData>,
6464
): FilterFn<TFeatures, TData> | undefined {
6565
return isFunction(column.columnDef.filterFn)
6666
? column.columnDef.filterFn
@@ -78,9 +78,7 @@ export function column_getCanFilter<
7878
column: Column<TFeatures, TData, TValue> & {
7979
columnDef: ColumnDef_ColumnFiltering<TFeatures, TData>
8080
},
81-
table: Table<TFeatures, TData> & {
82-
options: TableOptions_ColumnFiltering<TFeatures, TData>
83-
},
81+
table: Table_Internal<TFeatures, TData>,
8482
) {
8583
return (
8684
(column.columnDef.enableColumnFilter ?? true) &&
@@ -98,9 +96,7 @@ export function column_getIsFiltered<
9896
column: Column<TFeatures, TData, TValue> & {
9997
columnDef: ColumnDef_ColumnFiltering<TFeatures, TData>
10098
},
101-
table: Table<TFeatures, TData> & {
102-
options: TableOptions_ColumnFiltering<TFeatures, TData>
103-
},
99+
table: Table_Internal<TFeatures, TData>,
104100
) {
105101
return column_getFilterIndex(column, table) > -1
106102
}
@@ -113,9 +109,7 @@ export function column_getFilterValue<
113109
column: Column<TFeatures, TData, TValue> & {
114110
columnDef: ColumnDef_ColumnFiltering<TFeatures, TData>
115111
},
116-
table: Table<TFeatures, TData> & {
117-
options: TableOptions_ColumnFiltering<TFeatures, TData>
118-
},
112+
table: Table_Internal<TFeatures, TData>,
119113
) {
120114
return table_getState(table).columnFilters?.find((d) => d.id === column.id)
121115
?.value
@@ -129,9 +123,7 @@ export function column_getFilterIndex<
129123
column: Column<TFeatures, TData, TValue> & {
130124
columnDef: ColumnDef_ColumnFiltering<TFeatures, TData>
131125
},
132-
table: Table<TFeatures, TData> & {
133-
options: TableOptions_ColumnFiltering<TFeatures, TData>
134-
},
126+
table: Table_Internal<TFeatures, TData>,
135127
): number {
136128
return (
137129
table_getState(table).columnFilters?.findIndex((d) => d.id === column.id) ??
@@ -147,9 +139,7 @@ export function column_setFilterValue<
147139
column: Column<TFeatures, TData, TValue> & {
148140
columnDef: ColumnDef_ColumnFiltering<TFeatures, TData>
149141
},
150-
table: Table<TFeatures, TData> & {
151-
options: TableOptions_ColumnFiltering<TFeatures, TData>
152-
},
142+
table: Table_Internal<TFeatures, TData>,
153143
value: any,
154144
) {
155145
table_setColumnFilters(table, (old) => {
@@ -188,9 +178,7 @@ export function table_setColumnFilters<
188178
TFeatures extends TableFeatures,
189179
TData extends RowData,
190180
>(
191-
table: Table<TFeatures, TData> & {
192-
options: TableOptions_ColumnFiltering<TFeatures, TData>
193-
},
181+
table: Table_Internal<TFeatures, TData>,
194182
updater: Updater<ColumnFiltersState>,
195183
) {
196184
const leafColumns = table.getAllLeafColumns()
@@ -217,12 +205,7 @@ export function table_setColumnFilters<
217205
export function table_resetColumnFilters<
218206
TFeatures extends TableFeatures,
219207
TData extends RowData,
220-
>(
221-
table: Table<TFeatures, TData> & {
222-
options: TableOptions_ColumnFiltering<TFeatures, TData>
223-
},
224-
defaultState?: boolean,
225-
) {
208+
>(table: Table_Internal<TFeatures, TData>, defaultState?: boolean) {
226209
table_setColumnFilters(
227210
table,
228211
defaultState ? [] : table.initialState.columnFilters ?? [],
@@ -232,22 +215,14 @@ export function table_resetColumnFilters<
232215
export function table_getPreFilteredRowModel<
233216
TFeatures extends TableFeatures,
234217
TData extends RowData,
235-
>(
236-
table: Table<TFeatures, TData> & {
237-
options: TableOptions_ColumnFiltering<TFeatures, TData>
238-
},
239-
) {
218+
>(table: Table_Internal<TFeatures, TData>) {
240219
return table_getCoreRowModel(table)
241220
}
242221

243222
export function table_getFilteredRowModel<
244223
TFeatures extends TableFeatures,
245224
TData extends RowData,
246-
>(
247-
table: Table<TFeatures, TData> & {
248-
options: TableOptions_ColumnFiltering<TFeatures, TData>
249-
},
250-
): RowModel<TFeatures, TData> {
225+
>(table: Table_Internal<TFeatures, TData>): RowModel<TFeatures, TData> {
251226
if (!table._rowModels.Filtered) {
252227
table._rowModels.Filtered = table.options._rowModels?.Filtered?.(table)
253228
}

0 commit comments

Comments
 (0)