@tanstack/table-core 8.0.0-alpha.64 → 8.0.0-alpha.68
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/cjs/aggregationFns.js +25 -37
- package/build/cjs/aggregationFns.js.map +1 -1
- package/build/cjs/core.js +167 -47
- package/build/cjs/core.js.map +1 -1
- package/build/cjs/createTable.js +24 -40
- package/build/cjs/createTable.js.map +1 -1
- package/build/cjs/features/Cells.js +29 -35
- package/build/cjs/features/Cells.js.map +1 -1
- package/build/cjs/features/ColumnSizing.js +126 -218
- package/build/cjs/features/ColumnSizing.js.map +1 -1
- package/build/cjs/features/Columns.js +59 -86
- package/build/cjs/features/Columns.js.map +1 -1
- package/build/cjs/features/Expanding.js +78 -125
- package/build/cjs/features/Expanding.js.map +1 -1
- package/build/cjs/features/Filters.js +143 -218
- package/build/cjs/features/Filters.js.map +1 -1
- package/build/cjs/features/Grouping.js +70 -116
- package/build/cjs/features/Grouping.js.map +1 -1
- package/build/cjs/features/Headers.js +125 -205
- package/build/cjs/features/Headers.js.map +1 -1
- package/build/cjs/features/Ordering.js +31 -43
- package/build/cjs/features/Ordering.js.map +1 -1
- package/build/cjs/features/Pagination.js +64 -72
- package/build/cjs/features/Pagination.js.map +1 -1
- package/build/cjs/features/Pinning.js +96 -177
- package/build/cjs/features/Pinning.js.map +1 -1
- package/build/cjs/features/RowSelection.js +134 -205
- package/build/cjs/features/RowSelection.js.map +1 -1
- package/build/cjs/features/Rows.js +32 -22
- package/build/cjs/features/Rows.js.map +1 -1
- package/build/cjs/features/Sorting.js +62 -131
- package/build/cjs/features/Sorting.js.map +1 -1
- package/build/cjs/features/Visibility.js +53 -120
- package/build/cjs/features/Visibility.js.map +1 -1
- package/build/cjs/filterFns.js +52 -133
- package/build/cjs/filterFns.js.map +1 -1
- package/build/cjs/index.js +13 -13
- package/build/cjs/sortingFns.js +21 -21
- package/build/cjs/sortingFns.js.map +1 -1
- package/build/cjs/utils/filterRowsUtils.js +56 -41
- package/build/cjs/utils/filterRowsUtils.js.map +1 -1
- package/build/cjs/utils/getCoreRowModel.js +98 -0
- package/build/cjs/utils/getCoreRowModel.js.map +1 -0
- package/build/cjs/utils/getExpandedRowModel.js +18 -22
- package/build/cjs/utils/getExpandedRowModel.js.map +1 -1
- package/build/cjs/utils/getFacetedMinMaxValues.js +48 -0
- package/build/cjs/utils/getFacetedMinMaxValues.js.map +1 -0
- package/build/cjs/utils/getFacetedRowModel.js +50 -0
- package/build/cjs/utils/getFacetedRowModel.js.map +1 -0
- package/build/cjs/utils/getFacetedUniqueValues.js +48 -0
- package/build/cjs/utils/getFacetedUniqueValues.js.map +1 -0
- package/build/cjs/utils/getFilteredRowModel.js +130 -0
- package/build/cjs/utils/getFilteredRowModel.js.map +1 -0
- package/build/cjs/utils/getGroupedRowModel.js +126 -136
- package/build/cjs/utils/getGroupedRowModel.js.map +1 -1
- package/build/cjs/utils/getPaginationRowModel.js +39 -39
- package/build/cjs/utils/getPaginationRowModel.js.map +1 -1
- package/build/cjs/utils/getSortedRowModel.js +112 -0
- package/build/cjs/utils/getSortedRowModel.js.map +1 -0
- package/build/cjs/utils.js +36 -211
- package/build/cjs/utils.js.map +1 -1
- package/build/esm/index.js +1970 -2956
- package/build/esm/index.js.map +1 -1
- package/build/stats-html.html +1 -1
- package/build/stats-react.json +390 -482
- package/build/types/core.d.ts +3 -5
- package/build/types/features/Cells.d.ts +1 -1
- package/build/types/features/ColumnSizing.d.ts +2 -13
- package/build/types/features/Columns.d.ts +1 -1
- package/build/types/features/Expanding.d.ts +1 -6
- package/build/types/features/Filters.d.ts +42 -30
- package/build/types/features/Grouping.d.ts +4 -10
- package/build/types/features/Pinning.d.ts +0 -4
- package/build/types/features/RowSelection.d.ts +1 -7
- package/build/types/features/Rows.d.ts +4 -3
- package/build/types/features/Sorting.d.ts +3 -14
- package/build/types/features/Visibility.d.ts +0 -4
- package/build/types/filterFns.d.ts +10 -52
- package/build/types/index.d.ts +6 -5
- package/build/types/types.d.ts +5 -17
- package/build/types/utils/filterRowsUtils.d.ts +3 -2
- package/build/types/utils/getCoreRowModel.d.ts +2 -0
- package/build/types/utils/getFacetedMinMaxValues.d.ts +2 -0
- package/build/types/utils/getFacetedRowModel.d.ts +2 -0
- package/build/types/utils/getFacetedUniqueValues.d.ts +2 -0
- package/build/types/utils/{getCoreRowModelSync.d.ts → getFilteredRowModel.d.ts} +1 -1
- package/build/types/utils/getGroupedRowModel.d.ts +1 -1
- package/build/types/utils/getSortedRowModel.d.ts +2 -0
- package/build/types/utils.d.ts +2 -18
- package/build/umd/index.development.js +1948 -2935
- package/build/umd/index.development.js.map +1 -1
- package/build/umd/index.production.js +1 -1
- package/build/umd/index.production.js.map +1 -1
- package/package.json +2 -1
- package/src/core.ts +197 -46
- package/src/features/Cells.ts +10 -12
- package/src/features/ColumnSizing.ts +72 -129
- package/src/features/Columns.ts +16 -15
- package/src/features/Expanding.ts +58 -105
- package/src/features/Filters.ts +223 -226
- package/src/features/Grouping.ts +51 -79
- package/src/features/Headers.ts +18 -40
- package/src/features/Ordering.ts +1 -1
- package/src/features/Pagination.ts +1 -1
- package/src/features/Pinning.ts +73 -92
- package/src/features/RowSelection.ts +71 -120
- package/src/features/Rows.ts +21 -6
- package/src/features/Sorting.ts +39 -99
- package/src/features/Visibility.ts +21 -50
- package/src/filterFns.ts +74 -147
- package/src/index.ts +12 -5
- package/src/sortingFns.ts +11 -11
- package/src/types.ts +5 -18
- package/src/utils/filterRowsUtils.ts +59 -56
- package/src/utils/{getCoreRowModelSync.ts → getCoreRowModel.ts} +3 -9
- package/src/utils/getExpandedRowModel.ts +2 -2
- package/src/utils/getFacetedMinMaxValues.ts +37 -0
- package/src/utils/getFacetedRowModel.ts +50 -0
- package/src/utils/getFacetedUniqueValues.ts +37 -0
- package/src/utils/getFilteredRowModel.ts +150 -0
- package/src/utils/getGroupedRowModel.ts +53 -62
- package/src/utils/getPaginationRowModel.ts +1 -1
- package/src/utils/{getSortedRowModelSync.ts → getSortedRowModel.ts} +7 -7
- package/src/utils.ts +29 -239
- package/build/cjs/_virtual/_rollupPluginBabelHelpers.js +0 -112
- package/build/cjs/_virtual/_rollupPluginBabelHelpers.js.map +0 -1
- package/build/cjs/utils/getColumnFilteredRowModelSync.js +0 -115
- package/build/cjs/utils/getColumnFilteredRowModelSync.js.map +0 -1
- package/build/cjs/utils/getCoreRowModelAsync.js +0 -125
- package/build/cjs/utils/getCoreRowModelAsync.js.map +0 -1
- package/build/cjs/utils/getCoreRowModelSync.js +0 -102
- package/build/cjs/utils/getCoreRowModelSync.js.map +0 -1
- package/build/cjs/utils/getGlobalFilteredRowModelSync.js +0 -91
- package/build/cjs/utils/getGlobalFilteredRowModelSync.js.map +0 -1
- package/build/cjs/utils/getSortedRowModelSync.js +0 -118
- package/build/cjs/utils/getSortedRowModelSync.js.map +0 -1
- package/build/types/utils/getColumnFilteredRowModelAsync.d.ts +0 -4
- package/build/types/utils/getColumnFilteredRowModelSync.d.ts +0 -2
- package/build/types/utils/getCoreRowModelAsync.d.ts +0 -4
- package/build/types/utils/getGlobalFilteredRowModelAsync.d.ts +0 -4
- package/build/types/utils/getGlobalFilteredRowModelSync.d.ts +0 -2
- package/build/types/utils/getSortedRowModelAsync.d.ts +0 -13
- package/build/types/utils/getSortedRowModelSync.d.ts +0 -2
- package/src/utils/getColumnFilteredRowModelAsync.ts +0 -118
- package/src/utils/getColumnFilteredRowModelSync.ts +0 -102
- package/src/utils/getCoreRowModelAsync.ts +0 -104
- package/src/utils/getGlobalFilteredRowModelAsync.ts +0 -96
- package/src/utils/getGlobalFilteredRowModelSync.ts +0 -79
- package/src/utils/getSortedRowModelAsync.ts +0 -200
package/src/features/Filters.ts
CHANGED
|
@@ -20,8 +20,8 @@ import {
|
|
|
20
20
|
export type FiltersTableState = {
|
|
21
21
|
columnFilters: ColumnFiltersState
|
|
22
22
|
globalFilter: any
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
// filtersProgress: number
|
|
24
|
+
// facetProgress: Record<string, number>
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
export type ColumnFiltersState = ColumnFilter[]
|
|
@@ -31,17 +31,25 @@ export type ColumnFilter = {
|
|
|
31
31
|
value: unknown
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
34
|
+
export type ResolvedColumnFilter<TGenerics extends TableGenerics> = {
|
|
35
|
+
id: string
|
|
36
|
+
resolvedValue: unknown
|
|
37
|
+
filterFn: FilterFn<TGenerics>
|
|
38
|
+
}
|
|
37
39
|
|
|
38
40
|
export type FilterFn<TGenerics extends TableGenerics> = {
|
|
39
|
-
(
|
|
41
|
+
(row: Row<TGenerics>, columnId: string, filterValue: any): boolean
|
|
42
|
+
resolveFilterValue?: TransformFilterValueFn<TGenerics>
|
|
40
43
|
autoRemove?: ColumnFilterAutoRemoveTestFn<TGenerics>
|
|
41
44
|
}
|
|
42
45
|
|
|
46
|
+
export type TransformFilterValueFn<TGenerics extends TableGenerics> = (
|
|
47
|
+
value: any,
|
|
48
|
+
column?: Column<TGenerics>
|
|
49
|
+
) => unknown
|
|
50
|
+
|
|
43
51
|
export type ColumnFilterAutoRemoveTestFn<TGenerics extends TableGenerics> = (
|
|
44
|
-
value:
|
|
52
|
+
value: any,
|
|
45
53
|
column?: Column<TGenerics>
|
|
46
54
|
) => boolean
|
|
47
55
|
|
|
@@ -60,72 +68,87 @@ export type FiltersColumnDef<TGenerics extends TableGenerics> = {
|
|
|
60
68
|
filterFn?: FilterFnOption<Overwrite<TGenerics, { Value: any }>>
|
|
61
69
|
enableColumnFilter?: boolean
|
|
62
70
|
enableGlobalFilter?: boolean
|
|
71
|
+
enableFaceting?: boolean
|
|
63
72
|
}
|
|
64
73
|
|
|
65
74
|
export type FiltersColumn<TGenerics extends TableGenerics> = {
|
|
66
75
|
filterFn: FilterFnOption<Overwrite<TGenerics, { Value: any }>>
|
|
67
|
-
|
|
76
|
+
getAutoFilterFn: () => FilterFn<TGenerics> | undefined
|
|
77
|
+
getFilterFn: () => FilterFn<TGenerics> | undefined
|
|
78
|
+
setFilterValue: (updater: Updater<any>) => void
|
|
79
|
+
getCanFilter: () => boolean
|
|
68
80
|
getCanGlobalFilter: () => boolean
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
81
|
+
getFacetedRowModel: () => RowModel<TGenerics>
|
|
82
|
+
_getFacetedRowModel?: () => RowModel<TGenerics>
|
|
83
|
+
getIsFiltered: () => boolean
|
|
84
|
+
getFilterValue: () => unknown
|
|
85
|
+
getFilterIndex: () => number
|
|
86
|
+
getFacetedUniqueValues: () => Map<any, number>
|
|
87
|
+
_getFacetedUniqueValues?: () => Map<any, number>
|
|
88
|
+
getFacetedMinMaxValues: () => [any, any]
|
|
89
|
+
_getFacetedMinMaxValues?: () => [any, any]
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
export type FiltersRow<TGenerics extends TableGenerics> = {
|
|
93
|
+
columnFilterMap: Record<string, boolean>
|
|
94
|
+
subRowsByFacetId: Record<string, Row<TGenerics>[]>
|
|
76
95
|
}
|
|
77
96
|
|
|
78
97
|
export type FiltersOptions<TGenerics extends TableGenerics> = {
|
|
98
|
+
enableFilters?: boolean
|
|
99
|
+
manualFiltering?: boolean
|
|
79
100
|
filterFromLeafRows?: boolean
|
|
80
101
|
filterFns?: TGenerics['FilterFns']
|
|
102
|
+
getFilteredRowModel?: (
|
|
103
|
+
instance: TableInstance<TGenerics>
|
|
104
|
+
) => () => RowModel<TGenerics>
|
|
81
105
|
|
|
82
106
|
// Column
|
|
83
|
-
manualColumnFiltering?: boolean
|
|
84
107
|
onColumnFiltersChange?: OnChangeFn<ColumnFiltersState>
|
|
85
108
|
enableColumnFilters?: boolean
|
|
86
|
-
getColumnFilteredRowModel?: (
|
|
87
|
-
instance: TableInstance<TGenerics>
|
|
88
|
-
) => () => RowModel<TGenerics>
|
|
89
109
|
|
|
90
110
|
// Global
|
|
91
|
-
manualGlobalFiltering?: boolean
|
|
92
111
|
globalFilterFn?: FilterFnOption<TGenerics>
|
|
93
112
|
onGlobalFilterChange?: OnChangeFn<any>
|
|
94
113
|
enableGlobalFilter?: boolean
|
|
95
|
-
getGlobalFilteredRowModel?: (
|
|
96
|
-
instance: TableInstance<TGenerics>
|
|
97
|
-
) => () => RowModel<TGenerics>
|
|
98
114
|
getColumnCanGlobalFilter?: (column: Column<TGenerics>) => boolean
|
|
115
|
+
|
|
116
|
+
// Faceting
|
|
117
|
+
getFacetedRowModel?: (
|
|
118
|
+
instance: TableInstance<TGenerics>,
|
|
119
|
+
columnId: string
|
|
120
|
+
) => () => RowModel<TGenerics>
|
|
121
|
+
getFacetedUniqueValues?: (
|
|
122
|
+
instance: TableInstance<TGenerics>,
|
|
123
|
+
columnId: string
|
|
124
|
+
) => () => Map<any, number>
|
|
125
|
+
getFacetedMinMaxValues?: (
|
|
126
|
+
instance: TableInstance<TGenerics>,
|
|
127
|
+
columnId: string
|
|
128
|
+
) => () => [number, number]
|
|
99
129
|
}
|
|
100
130
|
|
|
101
131
|
export type FiltersInstance<TGenerics extends TableGenerics> = {
|
|
102
|
-
getColumnAutoFilterFn: (columnId: string) => FilterFn<TGenerics> | undefined
|
|
103
|
-
|
|
104
|
-
getColumnFilterFn: (columnId: string) => FilterFn<TGenerics> | undefined
|
|
105
|
-
|
|
106
132
|
setColumnFilters: (updater: Updater<ColumnFiltersState>) => void
|
|
107
|
-
setColumnFilterValue: (columnId: string, updater: Updater<any>) => void
|
|
108
|
-
resetColumnFilters: () => void
|
|
109
|
-
getColumnCanColumnFilter: (columnId: string) => boolean
|
|
110
133
|
|
|
111
|
-
|
|
112
|
-
getColumnFilterValue: (columnId: string) => unknown
|
|
113
|
-
getColumnFilterIndex: (columnId: string) => number
|
|
134
|
+
resetColumnFilters: () => void
|
|
114
135
|
|
|
115
136
|
// Column Filters
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
137
|
+
getPreFilteredRowModel: () => RowModel<TGenerics>
|
|
138
|
+
getFilteredRowModel: () => RowModel<TGenerics>
|
|
139
|
+
_getFilteredRowModel?: () => RowModel<TGenerics>
|
|
119
140
|
|
|
120
141
|
// Global Filters
|
|
121
142
|
setGlobalFilter: (updater: Updater<any>) => void
|
|
122
143
|
resetGlobalFilter: () => void
|
|
123
144
|
getGlobalAutoFilterFn: () => FilterFn<TGenerics> | undefined
|
|
124
145
|
getGlobalFilterFn: () => FilterFn<TGenerics> | undefined
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
146
|
+
getGlobalFacetedRowModel: () => RowModel<TGenerics>
|
|
147
|
+
_getGlobalFacetedRowModel?: () => RowModel<TGenerics>
|
|
148
|
+
getGlobalFacetedUniqueValues: () => Map<any, number>
|
|
149
|
+
_getGlobalFacetedUniqueValues?: () => Map<any, number>
|
|
150
|
+
getGlobalFacetedMinMaxValues: () => [number, number]
|
|
151
|
+
_getGlobalFacetedMinMaxValues?: () => [number, number]
|
|
129
152
|
}
|
|
130
153
|
|
|
131
154
|
//
|
|
@@ -143,8 +166,8 @@ export const Filters: TableFeature = {
|
|
|
143
166
|
return {
|
|
144
167
|
columnFilters: [],
|
|
145
168
|
globalFilter: undefined,
|
|
146
|
-
|
|
147
|
-
|
|
169
|
+
// filtersProgress: 1,
|
|
170
|
+
// facetProgress: {},
|
|
148
171
|
...state,
|
|
149
172
|
}
|
|
150
173
|
},
|
|
@@ -155,12 +178,13 @@ export const Filters: TableFeature = {
|
|
|
155
178
|
return {
|
|
156
179
|
onColumnFiltersChange: makeStateUpdater('columnFilters', instance),
|
|
157
180
|
onGlobalFilterChange: makeStateUpdater('globalFilter', instance),
|
|
158
|
-
filterFromLeafRows:
|
|
181
|
+
filterFromLeafRows: false,
|
|
159
182
|
globalFilterFn: 'auto',
|
|
160
183
|
getColumnCanGlobalFilter: column => {
|
|
161
184
|
const value = instance
|
|
162
185
|
.getCoreRowModel()
|
|
163
|
-
.flatRows[0]?.getAllCellsByColumnId()
|
|
186
|
+
.flatRows[0]?.getAllCellsByColumnId()
|
|
187
|
+
[column.id]?.getValue()
|
|
164
188
|
|
|
165
189
|
return typeof value === 'string'
|
|
166
190
|
},
|
|
@@ -171,76 +195,19 @@ export const Filters: TableFeature = {
|
|
|
171
195
|
column: Column<TGenerics>,
|
|
172
196
|
instance: TableInstance<TGenerics>
|
|
173
197
|
): FiltersColumn<TGenerics> => {
|
|
174
|
-
const getFacetInfo = memo(
|
|
175
|
-
() => [column.getPreFilteredRows()],
|
|
176
|
-
(rows = []) => {
|
|
177
|
-
let preFilteredUniqueValues = new Map<any, number>()
|
|
178
|
-
|
|
179
|
-
let preFilteredMinMaxValues: [any, any] = [
|
|
180
|
-
rows[0]?.values[column.id] ?? null,
|
|
181
|
-
rows[0]?.values[column.id] ?? null,
|
|
182
|
-
]
|
|
183
|
-
|
|
184
|
-
for (let i = 0; i < rows.length; i++) {
|
|
185
|
-
const value = rows[i]?.values[column.id]
|
|
186
|
-
|
|
187
|
-
if (preFilteredUniqueValues.has(value)) {
|
|
188
|
-
preFilteredUniqueValues.set(
|
|
189
|
-
value,
|
|
190
|
-
(preFilteredUniqueValues.get(value) ?? 0) + 1
|
|
191
|
-
)
|
|
192
|
-
} else {
|
|
193
|
-
preFilteredUniqueValues.set(value, 1)
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
if (value < preFilteredMinMaxValues[0]) {
|
|
197
|
-
preFilteredMinMaxValues[0] = value
|
|
198
|
-
} else if (value > preFilteredMinMaxValues[1]) {
|
|
199
|
-
preFilteredMinMaxValues[1] = value
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
return {
|
|
204
|
-
preFilteredUniqueValues,
|
|
205
|
-
preFilteredMinMaxValues,
|
|
206
|
-
}
|
|
207
|
-
},
|
|
208
|
-
{
|
|
209
|
-
key: 'column.getFacetInfo',
|
|
210
|
-
debug: () => instance.options.debugAll ?? instance.options.debugColumns,
|
|
211
|
-
}
|
|
212
|
-
)
|
|
213
|
-
|
|
214
198
|
return {
|
|
215
199
|
filterFn: column.filterFn,
|
|
216
|
-
|
|
217
|
-
getCanGlobalFilter: () => instance.getColumnCanGlobalFilter(column.id),
|
|
218
|
-
getColumnFilterIndex: () => instance.getColumnFilterIndex(column.id),
|
|
219
|
-
getColumnIsFiltered: () => instance.getColumnIsFiltered(column.id),
|
|
220
|
-
getColumnFilterValue: () => instance.getColumnFilterValue(column.id),
|
|
221
|
-
setColumnFilterValue: val =>
|
|
222
|
-
instance.setColumnFilterValue(column.id, val),
|
|
223
|
-
getPreFilteredUniqueValues: () => getFacetInfo().preFilteredUniqueValues,
|
|
224
|
-
getPreFilteredMinMaxValues: () => getFacetInfo().preFilteredMinMaxValues,
|
|
225
|
-
getPreFilteredRows: () => undefined,
|
|
226
|
-
}
|
|
227
|
-
},
|
|
228
|
-
|
|
229
|
-
createInstance: <TGenerics extends TableGenerics>(
|
|
230
|
-
instance: TableInstance<TGenerics>
|
|
231
|
-
): FiltersInstance<TGenerics> => {
|
|
232
|
-
return {
|
|
233
|
-
getColumnAutoFilterFn: columnId => {
|
|
200
|
+
getAutoFilterFn: () => {
|
|
234
201
|
const firstRow = instance.getCoreRowModel().flatRows[0]
|
|
235
202
|
|
|
236
|
-
const value = firstRow?.
|
|
203
|
+
const value = firstRow?.getValue(column.id)
|
|
237
204
|
|
|
238
205
|
if (typeof value === 'string') {
|
|
239
206
|
return filterFns.includesString
|
|
240
207
|
}
|
|
241
208
|
|
|
242
209
|
if (typeof value === 'number') {
|
|
243
|
-
return filterFns.
|
|
210
|
+
return filterFns.inNumberRange
|
|
244
211
|
}
|
|
245
212
|
|
|
246
213
|
if (value !== null && typeof value === 'object') {
|
|
@@ -253,21 +220,13 @@ export const Filters: TableFeature = {
|
|
|
253
220
|
|
|
254
221
|
return filterFns.weakEquals
|
|
255
222
|
},
|
|
256
|
-
|
|
257
|
-
return filterFns.includesString
|
|
258
|
-
},
|
|
259
|
-
getColumnFilterFn: columnId => {
|
|
260
|
-
const column = instance.getColumn(columnId)
|
|
223
|
+
getFilterFn: () => {
|
|
261
224
|
const userFilterFns = instance.options.filterFns
|
|
262
225
|
|
|
263
|
-
if (!column) {
|
|
264
|
-
throw new Error()
|
|
265
|
-
}
|
|
266
|
-
|
|
267
226
|
return isFunction(column.filterFn)
|
|
268
227
|
? column.filterFn
|
|
269
228
|
: column.filterFn === 'auto'
|
|
270
|
-
?
|
|
229
|
+
? column.getAutoFilterFn()
|
|
271
230
|
: (userFilterFns as Record<string, any>)?.[
|
|
272
231
|
column.filterFn as string
|
|
273
232
|
] ??
|
|
@@ -275,111 +234,38 @@ export const Filters: TableFeature = {
|
|
|
275
234
|
column.filterFn as BuiltInFilterFn
|
|
276
235
|
] as FilterFn<TGenerics>)
|
|
277
236
|
},
|
|
278
|
-
|
|
279
|
-
getGlobalFilterFn: () => {
|
|
280
|
-
const { filterFns: userFilterFns, globalFilterFn: globalFilterFn } =
|
|
281
|
-
instance.options
|
|
282
|
-
|
|
283
|
-
debugger
|
|
284
|
-
|
|
285
|
-
return isFunction(globalFilterFn)
|
|
286
|
-
? globalFilterFn
|
|
287
|
-
: globalFilterFn === 'auto'
|
|
288
|
-
? instance.getGlobalAutoFilterFn()
|
|
289
|
-
: (userFilterFns as Record<string, any>)?.[
|
|
290
|
-
globalFilterFn as string
|
|
291
|
-
] ??
|
|
292
|
-
(filterFns[
|
|
293
|
-
globalFilterFn as BuiltInFilterFn
|
|
294
|
-
] as FilterFn<TGenerics>)
|
|
295
|
-
},
|
|
296
|
-
|
|
297
|
-
setColumnFilters: (updater: Updater<ColumnFiltersState>) => {
|
|
298
|
-
const leafColumns = instance.getAllLeafColumns()
|
|
299
|
-
|
|
300
|
-
const updateFn = (old: ColumnFiltersState) => {
|
|
301
|
-
return functionalUpdate(updater, old)?.filter(filter => {
|
|
302
|
-
const column = leafColumns.find(d => d.id === filter.id)
|
|
303
|
-
|
|
304
|
-
if (column) {
|
|
305
|
-
const filterFn = instance.getColumnFilterFn(column.id)
|
|
306
|
-
|
|
307
|
-
if (shouldAutoRemoveFilter(filterFn, filter.value, column)) {
|
|
308
|
-
return false
|
|
309
|
-
}
|
|
310
|
-
}
|
|
311
|
-
|
|
312
|
-
return true
|
|
313
|
-
})
|
|
314
|
-
}
|
|
315
|
-
|
|
316
|
-
instance.options.onColumnFiltersChange?.(updateFn)
|
|
317
|
-
},
|
|
318
|
-
|
|
319
|
-
setGlobalFilter: updater => {
|
|
320
|
-
instance.options.onGlobalFilterChange?.(updater)
|
|
321
|
-
},
|
|
322
|
-
|
|
323
|
-
resetGlobalFilter: () => {
|
|
324
|
-
instance.setGlobalFilter(instance.initialState.globalFilter)
|
|
325
|
-
},
|
|
326
|
-
|
|
327
|
-
getColumnCanColumnFilter: columnId => {
|
|
328
|
-
const column = instance.getColumn(columnId)
|
|
329
|
-
|
|
330
|
-
if (!column) {
|
|
331
|
-
throw new Error()
|
|
332
|
-
}
|
|
333
|
-
|
|
237
|
+
getCanFilter: () => {
|
|
334
238
|
return (
|
|
335
239
|
(column.enableColumnFilter ?? true) &&
|
|
336
240
|
(instance.options.enableColumnFilters ?? true) &&
|
|
241
|
+
(instance.options.enableFilters ?? true) &&
|
|
337
242
|
!!column.accessorFn
|
|
338
243
|
)
|
|
339
244
|
},
|
|
340
245
|
|
|
341
|
-
|
|
342
|
-
const column = instance.getColumn(columnId)
|
|
343
|
-
|
|
344
|
-
if (!column) {
|
|
345
|
-
throw new Error()
|
|
346
|
-
}
|
|
347
|
-
|
|
246
|
+
getCanGlobalFilter: () => {
|
|
348
247
|
return (
|
|
349
248
|
(column.enableGlobalFilter ?? true) &&
|
|
350
249
|
(instance.options.enableGlobalFilter ?? true) &&
|
|
250
|
+
(instance.options.enableFilters ?? true) &&
|
|
351
251
|
(instance.options.getColumnCanGlobalFilter?.(column) ?? true) &&
|
|
352
252
|
!!column.accessorFn
|
|
353
253
|
)
|
|
354
254
|
},
|
|
355
255
|
|
|
356
|
-
|
|
357
|
-
instance.getColumnFilterIndex(columnId) > -1,
|
|
256
|
+
getIsFiltered: () => column.getFilterIndex() > -1,
|
|
358
257
|
|
|
359
|
-
|
|
360
|
-
instance.getState().columnFilters?.find(d => d.id ===
|
|
258
|
+
getFilterValue: () =>
|
|
259
|
+
instance.getState().columnFilters?.find(d => d.id === column.id)?.value,
|
|
361
260
|
|
|
362
|
-
|
|
363
|
-
instance.getState().columnFilters?.findIndex(d => d.id ===
|
|
261
|
+
getFilterIndex: () =>
|
|
262
|
+
instance.getState().columnFilters?.findIndex(d => d.id === column.id) ??
|
|
364
263
|
-1,
|
|
365
264
|
|
|
366
|
-
|
|
367
|
-
if (!columnId) return
|
|
368
|
-
|
|
265
|
+
setFilterValue: value => {
|
|
369
266
|
instance.setColumnFilters(old => {
|
|
370
|
-
const
|
|
371
|
-
|
|
372
|
-
if (!column) {
|
|
373
|
-
if (process.env.NODE_ENV !== 'production') {
|
|
374
|
-
console.warn(
|
|
375
|
-
`Table: Could not find a column with id: ${columnId}`
|
|
376
|
-
)
|
|
377
|
-
}
|
|
378
|
-
throw new Error()
|
|
379
|
-
}
|
|
380
|
-
|
|
381
|
-
const filterFn = instance.getColumnFilterFn(column.id)
|
|
382
|
-
const previousfilter = old?.find(d => d.id === columnId)
|
|
267
|
+
const filterFn = column.getFilterFn()
|
|
268
|
+
const previousfilter = old?.find(d => d.id === column.id)
|
|
383
269
|
|
|
384
270
|
const newFilter = functionalUpdate(
|
|
385
271
|
value,
|
|
@@ -394,15 +280,15 @@ export const Filters: TableFeature = {
|
|
|
394
280
|
column
|
|
395
281
|
)
|
|
396
282
|
) {
|
|
397
|
-
return old?.filter(d => d.id !==
|
|
283
|
+
return old?.filter(d => d.id !== column.id) ?? []
|
|
398
284
|
}
|
|
399
285
|
|
|
400
|
-
const newFilterObj = { id:
|
|
286
|
+
const newFilterObj = { id: column.id, value: newFilter }
|
|
401
287
|
|
|
402
288
|
if (previousfilter) {
|
|
403
289
|
return (
|
|
404
290
|
old?.map(d => {
|
|
405
|
-
if (d.id ===
|
|
291
|
+
if (d.id === column.id) {
|
|
406
292
|
return newFilterObj
|
|
407
293
|
}
|
|
408
294
|
return d
|
|
@@ -417,48 +303,159 @@ export const Filters: TableFeature = {
|
|
|
417
303
|
return [newFilterObj]
|
|
418
304
|
})
|
|
419
305
|
},
|
|
306
|
+
_getFacetedRowModel:
|
|
307
|
+
instance.options.getFacetedRowModel &&
|
|
308
|
+
instance.options.getFacetedRowModel(instance, column.id),
|
|
309
|
+
getFacetedRowModel: () => {
|
|
310
|
+
if (!column._getFacetedRowModel) {
|
|
311
|
+
return instance.getPreFilteredRowModel()
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
return column._getFacetedRowModel()
|
|
315
|
+
},
|
|
316
|
+
_getFacetedUniqueValues:
|
|
317
|
+
instance.options.getFacetedUniqueValues &&
|
|
318
|
+
instance.options.getFacetedUniqueValues(instance, column.id),
|
|
319
|
+
getFacetedUniqueValues: () => {
|
|
320
|
+
if (!column._getFacetedUniqueValues) {
|
|
321
|
+
return new Map()
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
return column._getFacetedUniqueValues()
|
|
325
|
+
},
|
|
326
|
+
_getFacetedMinMaxValues:
|
|
327
|
+
instance.options.getFacetedMinMaxValues &&
|
|
328
|
+
instance.options.getFacetedMinMaxValues(instance, column.id),
|
|
329
|
+
getFacetedMinMaxValues: () => {
|
|
330
|
+
if (!column._getFacetedMinMaxValues) {
|
|
331
|
+
return [NaN, NaN]
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
return column._getFacetedMinMaxValues()
|
|
335
|
+
},
|
|
336
|
+
// () => [column.getFacetedRowModel()],
|
|
337
|
+
// facetedRowModel => getRowModelMinMaxValues(facetedRowModel, column.id),
|
|
338
|
+
}
|
|
339
|
+
},
|
|
340
|
+
|
|
341
|
+
createRow: <TGenerics extends TableGenerics>(
|
|
342
|
+
row: Row<TGenerics>,
|
|
343
|
+
instance: TableInstance<TGenerics>
|
|
344
|
+
): FiltersRow<TGenerics> => {
|
|
345
|
+
return {
|
|
346
|
+
columnFilterMap: {},
|
|
347
|
+
subRowsByFacetId: {},
|
|
348
|
+
}
|
|
349
|
+
},
|
|
350
|
+
|
|
351
|
+
createInstance: <TGenerics extends TableGenerics>(
|
|
352
|
+
instance: TableInstance<TGenerics>
|
|
353
|
+
): FiltersInstance<TGenerics> => {
|
|
354
|
+
return {
|
|
355
|
+
getGlobalAutoFilterFn: () => {
|
|
356
|
+
return filterFns.includesString
|
|
357
|
+
},
|
|
358
|
+
|
|
359
|
+
getGlobalFilterFn: () => {
|
|
360
|
+
const { filterFns: userFilterFns, globalFilterFn: globalFilterFn } =
|
|
361
|
+
instance.options
|
|
362
|
+
|
|
363
|
+
return isFunction(globalFilterFn)
|
|
364
|
+
? globalFilterFn
|
|
365
|
+
: globalFilterFn === 'auto'
|
|
366
|
+
? instance.getGlobalAutoFilterFn()
|
|
367
|
+
: (userFilterFns as Record<string, any>)?.[
|
|
368
|
+
globalFilterFn as string
|
|
369
|
+
] ??
|
|
370
|
+
(filterFns[
|
|
371
|
+
globalFilterFn as BuiltInFilterFn
|
|
372
|
+
] as FilterFn<TGenerics>)
|
|
373
|
+
},
|
|
374
|
+
|
|
375
|
+
setColumnFilters: (updater: Updater<ColumnFiltersState>) => {
|
|
376
|
+
const leafColumns = instance.getAllLeafColumns()
|
|
377
|
+
|
|
378
|
+
const updateFn = (old: ColumnFiltersState) => {
|
|
379
|
+
return functionalUpdate(updater, old)?.filter(filter => {
|
|
380
|
+
const column = leafColumns.find(d => d.id === filter.id)
|
|
381
|
+
|
|
382
|
+
if (column) {
|
|
383
|
+
const filterFn = column.getFilterFn()
|
|
384
|
+
|
|
385
|
+
if (shouldAutoRemoveFilter(filterFn, filter.value, column)) {
|
|
386
|
+
return false
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
return true
|
|
391
|
+
})
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
instance.options.onColumnFiltersChange?.(updateFn)
|
|
395
|
+
},
|
|
396
|
+
|
|
397
|
+
setGlobalFilter: updater => {
|
|
398
|
+
instance.options.onGlobalFilterChange?.(updater)
|
|
399
|
+
},
|
|
400
|
+
|
|
401
|
+
resetGlobalFilter: () => {
|
|
402
|
+
instance.setGlobalFilter(instance.initialState.globalFilter)
|
|
403
|
+
},
|
|
420
404
|
|
|
421
405
|
resetColumnFilters: () => {
|
|
422
406
|
instance.setColumnFilters(instance.initialState?.columnFilters ?? [])
|
|
423
407
|
},
|
|
424
408
|
|
|
425
|
-
|
|
426
|
-
|
|
409
|
+
getPreFilteredRowModel: () => instance.getCoreRowModel(),
|
|
410
|
+
_getFilteredRowModel:
|
|
411
|
+
instance.options.getFilteredRowModel &&
|
|
412
|
+
instance.options.getFilteredRowModel(instance),
|
|
413
|
+
getFilteredRowModel: () => {
|
|
427
414
|
if (
|
|
428
|
-
|
|
429
|
-
instance.
|
|
415
|
+
instance.options.manualFiltering ||
|
|
416
|
+
!instance._getFilteredRowModel
|
|
430
417
|
) {
|
|
431
|
-
instance.
|
|
432
|
-
instance.options.getColumnFilteredRowModel(instance)
|
|
418
|
+
return instance.getPreFilteredRowModel()
|
|
433
419
|
}
|
|
434
420
|
|
|
421
|
+
return instance._getFilteredRowModel()
|
|
422
|
+
},
|
|
423
|
+
|
|
424
|
+
_getGlobalFacetedRowModel:
|
|
425
|
+
instance.options.getFacetedRowModel &&
|
|
426
|
+
instance.options.getFacetedRowModel(instance, '__global__'),
|
|
427
|
+
|
|
428
|
+
getGlobalFacetedRowModel: () => {
|
|
435
429
|
if (
|
|
436
|
-
instance.options.
|
|
437
|
-
!instance.
|
|
430
|
+
instance.options.manualFiltering ||
|
|
431
|
+
!instance._getGlobalFacetedRowModel
|
|
438
432
|
) {
|
|
439
|
-
return instance.
|
|
433
|
+
return instance.getPreFilteredRowModel()
|
|
440
434
|
}
|
|
441
435
|
|
|
442
|
-
return instance.
|
|
436
|
+
return instance._getGlobalFacetedRowModel()
|
|
443
437
|
},
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
) {
|
|
450
|
-
|
|
451
|
-
instance.options.getGlobalFilteredRowModel(instance)
|
|
438
|
+
|
|
439
|
+
_getGlobalFacetedUniqueValues:
|
|
440
|
+
instance.options.getFacetedUniqueValues &&
|
|
441
|
+
instance.options.getFacetedUniqueValues(instance, '__global__'),
|
|
442
|
+
getGlobalFacetedUniqueValues: () => {
|
|
443
|
+
if (!instance._getGlobalFacetedUniqueValues) {
|
|
444
|
+
return new Map()
|
|
452
445
|
}
|
|
453
446
|
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
447
|
+
return instance._getGlobalFacetedUniqueValues()
|
|
448
|
+
},
|
|
449
|
+
|
|
450
|
+
_getGlobalFacetedMinMaxValues:
|
|
451
|
+
instance.options.getFacetedMinMaxValues &&
|
|
452
|
+
instance.options.getFacetedMinMaxValues(instance, '__global__'),
|
|
453
|
+
getGlobalFacetedMinMaxValues: () => {
|
|
454
|
+
if (!instance._getGlobalFacetedMinMaxValues) {
|
|
455
|
+
return [NaN, NaN]
|
|
459
456
|
}
|
|
460
457
|
|
|
461
|
-
return instance.
|
|
458
|
+
return instance._getGlobalFacetedMinMaxValues()
|
|
462
459
|
},
|
|
463
460
|
}
|
|
464
461
|
},
|