Skip to content

Commit c578c2b

Browse files
committed
progress on using static functions
1 parent 4316af3 commit c578c2b

38 files changed

+762
-433
lines changed

examples/react/column-pinning/src/main.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import { makeData } from './makeData'
1515
import type {
1616
ColumnDef,
1717
ColumnOrderState,
18+
ColumnPinningState,
1819
ColumnVisibilityState,
1920
} from '@tanstack/react-table'
2021
import type { Person } from './makeData'
@@ -80,7 +81,10 @@ function App() {
8081
const [columnVisibility, setColumnVisibility] =
8182
React.useState<ColumnVisibilityState>({})
8283
const [columnOrder, setColumnOrder] = React.useState<ColumnOrderState>([])
83-
const [columnPinning, setColumnPinning] = React.useState({})
84+
const [columnPinning, setColumnPinning] = React.useState<ColumnPinningState>({
85+
left: [],
86+
right: [],
87+
})
8488

8589
const [isSplit, setIsSplit] = React.useState(false)
8690
const rerender = () => setData(() => makeData(5000))

packages/solid-table/src/FlexRender.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,9 @@ export function flexRender<TProps>(
1515
}
1616

1717
export function FlexRender<TProps>(
18-
props: { Comp: ((_props: TProps) => JSX.Element) | JSX.Element | undefined } & TProps,
18+
props: {
19+
Comp: ((_props: TProps) => JSX.Element) | JSX.Element | undefined
20+
} & TProps,
1921
): JSX.Element {
2022
return flexRender(props.Comp, props)
21-
}
23+
}

packages/table-core/src/core/headers/buildHeaderGroups.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ export function buildHeaderGroups<
3232
maxDepth = Math.max(maxDepth, depth)
3333

3434
columns
35-
.filter((column) => column.getIsVisible())
35+
.filter((column) => column_getIsVisible(column, table))
3636
.forEach((column) => {
3737
if (column.columns.length) {
3838
findMaxDepth(column.columns, depth + 1)

packages/table-core/src/core/table/createCoreRowModel.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { _createRow } from '../rows/createRow'
22
import { getMemoOptions, memo } from '../../utils'
33
import { table_getRowId } from '../rows/Rows.utils'
4+
import { table_autoResetPageIndex } from '../../features/row-pagination/RowPagination.utils'
45
import type { RowData } from '../../types/type-utils'
56
import type { TableFeatures } from '../../types/TableFeatures'
67
import type { RowModel } from '../../types/RowModel'
@@ -73,7 +74,7 @@ export function createCoreRowModel<
7374
return rowModel
7475
},
7576
getMemoOptions(table.options, 'debugTable', 'getRowModel', () =>
76-
table._autoResetPageIndex(),
77+
table_autoResetPageIndex(table),
7778
),
7879
)
7980
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,11 @@ export function column_getFacetedRowModel<
2424
TData extends RowData,
2525
TValue extends CellData = CellData,
2626
>(
27-
column: Column<TFeatures, TData, TValue>,
27+
column: Column<TFeatures, TData, TValue> | undefined,
2828
table: Table<TFeatures, TData>,
2929
): () => RowModel<TFeatures, TData> {
3030
return (
31-
table.options._rowModels?.Faceted?.(table, column.id) ??
31+
table.options._rowModels?.Faceted?.(table, column?.id ?? '') ??
3232
(() => table_getPreFilteredRowModel(table))
3333
)
3434
}

packages/table-core/src/features/column-faceting/createFacetedMinMaxValues.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { getMemoOptions, memo } from '../../utils'
22
import { row_getUniqueValues } from '../../core/rows/Rows.utils'
3+
import { column_getFacetedRowModel } from './ColumnFaceting.utils'
34
import type { RowData } from '../../types/type-utils'
45
import type { TableFeatures } from '../../types/TableFeatures'
56
import type { Table } from '../../types/Table'
@@ -13,7 +14,7 @@ export function createFacetedMinMaxValues<
1314
) => () => undefined | [number, number] {
1415
return (table, columnId) =>
1516
memo(
16-
() => [table.getColumn(columnId)?.getFacetedRowModel()],
17+
() => [column_getFacetedRowModel(table.getColumn(columnId), table)()],
1718
(facetedRowModel) => {
1819
if (!facetedRowModel) return undefined
1920

packages/table-core/src/features/column-faceting/createFacetedRowModel.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
import { getMemoOptions, memo } from '../../utils'
22
import { filterRows } from '../column-filtering/filterRowsUtils'
33
import { _table_getState } from '../../core/table/Tables.utils'
4+
import {
5+
table_getFilteredRowModel,
6+
table_getPreFilteredRowModel,
7+
} from '../column-filtering/ColumnFiltering.utils'
48
import type { RowData } from '../../types/type-utils'
59
import type { TableFeatures } from '../../types/TableFeatures'
610
import type { RowModel } from '../../types/RowModel'
@@ -17,10 +21,10 @@ export function createFacetedRowModel<
1721
return (table, columnId) =>
1822
memo(
1923
() => [
20-
table.getPreFilteredRowModel(),
24+
table_getPreFilteredRowModel(table),
2125
_table_getState(table).columnFilters,
2226
_table_getState(table).globalFilter,
23-
table.getFilteredRowModel(),
27+
table_getFilteredRowModel(table),
2428
],
2529
(preRowModel, columnFilters, globalFilter) => {
2630
if (

packages/table-core/src/features/column-faceting/createFacetedUniqueValues.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { getMemoOptions, memo } from '../../utils'
22
import { row_getUniqueValues } from '../../core/rows/Rows.utils'
3+
import { column_getFacetedRowModel } from './ColumnFaceting.utils'
34
import type { RowData } from '../../types/type-utils'
45
import type { TableFeatures } from '../../types/TableFeatures'
56
import type { Table } from '../../types/Table'
@@ -13,7 +14,7 @@ export function createFacetedUniqueValues<
1314
) => () => Map<any, number> {
1415
return (table, columnId) =>
1516
memo(
16-
() => [table.getColumn(columnId)?.getFacetedRowModel()],
17+
() => [column_getFacetedRowModel(table.getColumn(columnId), table)()],
1718
(facetedRowModel) => {
1819
if (!facetedRowModel) return new Map()
1920

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

Lines changed: 76 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,12 @@ import type { TableFeatures } from '../../types/TableFeatures'
1111
import type { RowModel } from '../../types/RowModel'
1212
import type { Table } from '../../types/Table'
1313
import type { Column } from '../../types/Column'
14-
import type { ColumnFiltersState, FilterFn } from './ColumnFiltering.types'
14+
import type {
15+
ColumnDef_ColumnFiltering,
16+
ColumnFiltersState,
17+
FilterFn,
18+
TableOptions_ColumnFiltering,
19+
} from './ColumnFiltering.types'
1520

1621
export function column_getAutoFilterFn<
1722
TFeatures extends TableFeatures,
@@ -49,11 +54,18 @@ export function column_getFilterFn<
4954
TFeatures extends TableFeatures,
5055
TData extends RowData,
5156
TValue extends CellData = CellData,
52-
>(column: Column<TFeatures, TData, TValue>, table: Table<TFeatures, TData>) {
57+
>(
58+
column: Column<TFeatures, TData, TValue> & {
59+
columnDef: ColumnDef_ColumnFiltering<TFeatures, TData>
60+
},
61+
table: Table<TFeatures, TData> & {
62+
options: TableOptions_ColumnFiltering<TFeatures, TData>
63+
},
64+
) {
5365
return isFunction(column.columnDef.filterFn)
5466
? column.columnDef.filterFn
5567
: column.columnDef.filterFn === 'auto'
56-
? column.getAutoFilterFn()
68+
? column_getAutoFilterFn(column, table)
5769
: table.options.filterFns?.[column.columnDef.filterFn as string] ??
5870
filterFns[column.columnDef.filterFn as BuiltInFilterFn]
5971
}
@@ -62,7 +74,14 @@ export function column_getCanFilter<
6274
TFeatures extends TableFeatures,
6375
TData extends RowData,
6476
TValue extends CellData = CellData,
65-
>(column: Column<TFeatures, TData, TValue>, table: Table<TFeatures, TData>) {
77+
>(
78+
column: Column<TFeatures, TData, TValue> & {
79+
columnDef: ColumnDef_ColumnFiltering<TFeatures, TData>
80+
},
81+
table: Table<TFeatures, TData> & {
82+
options: TableOptions_ColumnFiltering<TFeatures, TData>
83+
},
84+
) {
6685
return (
6786
(column.columnDef.enableColumnFilter ?? true) &&
6887
(table.options.enableColumnFilters ?? true) &&
@@ -75,15 +94,29 @@ export function column_getIsFiltered<
7594
TFeatures extends TableFeatures,
7695
TData extends RowData,
7796
TValue extends CellData = CellData,
78-
>(column: Column<TFeatures, TData, TValue>, table: Table<TFeatures, TData>) {
97+
>(
98+
column: Column<TFeatures, TData, TValue> & {
99+
columnDef: ColumnDef_ColumnFiltering<TFeatures, TData>
100+
},
101+
table: Table<TFeatures, TData> & {
102+
options: TableOptions_ColumnFiltering<TFeatures, TData>
103+
},
104+
) {
79105
return column_getFilterIndex(column, table) > -1
80106
}
81107

82108
export function column_getFilterValue<
83109
TFeatures extends TableFeatures,
84110
TData extends RowData,
85111
TValue extends CellData = CellData,
86-
>(column: Column<TFeatures, TData, TValue>, table: Table<TFeatures, TData>) {
112+
>(
113+
column: Column<TFeatures, TData, TValue> & {
114+
columnDef: ColumnDef_ColumnFiltering<TFeatures, TData>
115+
},
116+
table: Table<TFeatures, TData> & {
117+
options: TableOptions_ColumnFiltering<TFeatures, TData>
118+
},
119+
) {
87120
return _table_getState(table).columnFilters?.find((d) => d.id === column.id)
88121
?.value
89122
}
@@ -93,8 +126,12 @@ export function column_getFilterIndex<
93126
TData extends RowData,
94127
TValue extends CellData = CellData,
95128
>(
96-
column: Column<TFeatures, TData, TValue>,
97-
table: Table<TFeatures, TData>,
129+
column: Column<TFeatures, TData, TValue> & {
130+
columnDef: ColumnDef_ColumnFiltering<TFeatures, TData>
131+
},
132+
table: Table<TFeatures, TData> & {
133+
options: TableOptions_ColumnFiltering<TFeatures, TData>
134+
},
98135
): number {
99136
return (
100137
_table_getState(table).columnFilters?.findIndex(
@@ -108,12 +145,16 @@ export function column_setFilterValue<
108145
TData extends RowData,
109146
TValue extends CellData = CellData,
110147
>(
111-
column: Column<TFeatures, TData, TValue>,
112-
table: Table<TFeatures, TData>,
148+
column: Column<TFeatures, TData, TValue> & {
149+
columnDef: ColumnDef_ColumnFiltering<TFeatures, TData>
150+
},
151+
table: Table<TFeatures, TData> & {
152+
options: TableOptions_ColumnFiltering<TFeatures, TData>
153+
},
113154
value: any,
114155
) {
115156
table_setColumnFilters(table, (old) => {
116-
const filterFn = column.getFilterFn()
157+
const filterFn = column_getFilterFn(column, table)
117158
const previousFilter = old.find((d) => d.id === column.id)
118159

119160
const newFilter = functionalUpdate(
@@ -147,17 +188,22 @@ export function column_setFilterValue<
147188
export function table_setColumnFilters<
148189
TFeatures extends TableFeatures,
149190
TData extends RowData,
150-
>(table: Table<TFeatures, TData>, updater: Updater<ColumnFiltersState>) {
191+
>(
192+
table: Table<TFeatures, TData> & {
193+
options: TableOptions_ColumnFiltering<TFeatures, TData>
194+
},
195+
updater: Updater<ColumnFiltersState>,
196+
) {
151197
const leafColumns = table.getAllLeafColumns()
152198

153199
const updateFn = (old: ColumnFiltersState) => {
154200
return functionalUpdate(updater, old).filter((filter) => {
155201
const column = leafColumns.find((d) => d.id === filter.id)
156202

157203
if (column) {
158-
const filterFn = column.getFilterFn()
204+
const filterFn = column_getFilterFn(column, table)
159205

160-
if (shouldAutoRemoveFilter(filterFn, filter.value, column)) {
206+
if (shouldAutoRemoveFilter(filterFn, filter.value, column as any)) {
161207
return false
162208
}
163209
}
@@ -172,7 +218,12 @@ export function table_setColumnFilters<
172218
export function table_resetColumnFilters<
173219
TFeatures extends TableFeatures,
174220
TData extends RowData,
175-
>(table: Table<TFeatures, TData>, defaultState?: boolean) {
221+
>(
222+
table: Table<TFeatures, TData> & {
223+
options: TableOptions_ColumnFiltering<TFeatures, TData>
224+
},
225+
defaultState?: boolean,
226+
) {
176227
table_setColumnFilters(
177228
table,
178229
defaultState ? [] : table.initialState.columnFilters ?? [],
@@ -182,14 +233,22 @@ export function table_resetColumnFilters<
182233
export function table_getPreFilteredRowModel<
183234
TFeatures extends TableFeatures,
184235
TData extends RowData,
185-
>(table: Table<TFeatures, TData>) {
236+
>(
237+
table: Table<TFeatures, TData> & {
238+
options: TableOptions_ColumnFiltering<TFeatures, TData>
239+
},
240+
) {
186241
return table_getCoreRowModel(table)
187242
}
188243

189244
export function table_getFilteredRowModel<
190245
TFeatures extends TableFeatures,
191246
TData extends RowData,
192-
>(table: Table<TFeatures, TData>): RowModel<TFeatures, TData> {
247+
>(
248+
table: Table<TFeatures, TData> & {
249+
options: TableOptions_ColumnFiltering<TFeatures, TData>
250+
},
251+
): RowModel<TFeatures, TData> {
193252
if (!table._rowModels.Filtered) {
194253
table._rowModels.Filtered = table.options._rowModels?.Filtered?.(table)
195254
}

0 commit comments

Comments
 (0)