@tanstack/table-core 8.5.16 → 8.5.18
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/core/column.js +3 -0
- package/build/cjs/core/column.js.map +1 -1
- package/build/cjs/core/row.js +16 -0
- package/build/cjs/core/row.js.map +1 -1
- package/build/cjs/utils/getFacetedMinMaxValues.js +9 -6
- package/build/cjs/utils/getFacetedMinMaxValues.js.map +1 -1
- package/build/cjs/utils/getFacetedUniqueValues.js +8 -6
- package/build/cjs/utils/getFacetedUniqueValues.js.map +1 -1
- package/build/esm/index.js +36 -12
- package/build/esm/index.js.map +1 -1
- package/build/stats-html.html +1 -1
- package/build/stats-react.json +316 -316
- package/build/types/index.d.ts +3 -0
- package/build/umd/index.development.js +36 -12
- 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 +1 -1
- package/src/core/column.ts +5 -0
- package/src/core/row.ts +26 -0
- package/src/types.ts +1 -0
- package/src/utils/getFacetedMinMaxValues.ts +12 -6
- package/src/utils/getFacetedUniqueValues.ts +13 -8
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tanstack/table-core",
|
|
3
3
|
"author": "Tanner Linsley",
|
|
4
|
-
"version": "8.5.
|
|
4
|
+
"version": "8.5.18",
|
|
5
5
|
"description": "Headless UI for building powerful tables & datagrids for TS/JS.",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"homepage": "https://github.com/tanstack/table#readme",
|
package/src/core/column.ts
CHANGED
|
@@ -56,6 +56,11 @@ export function createColumn<TData extends RowData, TValue>(
|
|
|
56
56
|
|
|
57
57
|
for (const key of accessorKey.split('.')) {
|
|
58
58
|
result = result[key]
|
|
59
|
+
if (process.env.NODE_ENV !== 'production' && result === undefined) {
|
|
60
|
+
throw new Error(
|
|
61
|
+
`"${key}" in deeply nested key "${accessorKey}" returned undefined.`
|
|
62
|
+
)
|
|
63
|
+
}
|
|
59
64
|
}
|
|
60
65
|
|
|
61
66
|
return result
|
package/src/core/row.ts
CHANGED
|
@@ -8,7 +8,9 @@ export type CoreRow<TData extends RowData> = {
|
|
|
8
8
|
original: TData
|
|
9
9
|
depth: number
|
|
10
10
|
_valuesCache: Record<string, unknown>
|
|
11
|
+
_uniqueValuesCache: Record<string, unknown>
|
|
11
12
|
getValue: <TValue>(columnId: string) => TValue
|
|
13
|
+
getUniqueValues: <TValue>(columnId: string) => TValue[]
|
|
12
14
|
renderValue: <TValue>(columnId: string) => TValue
|
|
13
15
|
subRows: Row<TData>[]
|
|
14
16
|
getLeafRows: () => Row<TData>[]
|
|
@@ -31,6 +33,7 @@ export const createRow = <TData extends RowData>(
|
|
|
31
33
|
original,
|
|
32
34
|
depth,
|
|
33
35
|
_valuesCache: {},
|
|
36
|
+
_uniqueValuesCache: {},
|
|
34
37
|
getValue: columnId => {
|
|
35
38
|
if (row._valuesCache.hasOwnProperty(columnId)) {
|
|
36
39
|
return row._valuesCache[columnId]
|
|
@@ -49,6 +52,29 @@ export const createRow = <TData extends RowData>(
|
|
|
49
52
|
|
|
50
53
|
return row._valuesCache[columnId] as any
|
|
51
54
|
},
|
|
55
|
+
getUniqueValues: columnId => {
|
|
56
|
+
if (row._uniqueValuesCache.hasOwnProperty(columnId)) {
|
|
57
|
+
return row._uniqueValuesCache[columnId]
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
const column = table.getColumn(columnId)
|
|
61
|
+
|
|
62
|
+
if (!column.accessorFn) {
|
|
63
|
+
return undefined
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
if (!column.columnDef.getUniqueValues) {
|
|
67
|
+
row._uniqueValuesCache[columnId] = [row.getValue(columnId)]
|
|
68
|
+
return row._uniqueValuesCache[columnId]
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
row._uniqueValuesCache[columnId] = column.columnDef.getUniqueValues(
|
|
72
|
+
row.original as TData,
|
|
73
|
+
rowIndex
|
|
74
|
+
)
|
|
75
|
+
|
|
76
|
+
return row._uniqueValuesCache[columnId] as any
|
|
77
|
+
},
|
|
52
78
|
renderValue: columnId =>
|
|
53
79
|
row.getValue(columnId) ?? table.options.renderFallbackValue,
|
|
54
80
|
subRows: subRows ?? [],
|
package/src/types.ts
CHANGED
|
@@ -197,6 +197,7 @@ type ColumnIdentifiers<TData extends RowData, TValue> =
|
|
|
197
197
|
//
|
|
198
198
|
|
|
199
199
|
export type ColumnDefBase<TData extends RowData, TValue = unknown> = {
|
|
200
|
+
getUniqueValues?: AccessorFn<TData, unknown[]>
|
|
200
201
|
footer?: ColumnDefTemplate<HeaderContext<TData, TValue>>
|
|
201
202
|
cell?: ColumnDefTemplate<CellContext<TData, TValue>>
|
|
202
203
|
meta?: ColumnMeta<TData, TValue>
|
|
@@ -9,7 +9,8 @@ export function getFacetedMinMaxValues<TData extends RowData>(): (
|
|
|
9
9
|
memo(
|
|
10
10
|
() => [table.getColumn(columnId).getFacetedRowModel()],
|
|
11
11
|
facetedRowModel => {
|
|
12
|
-
const firstValue =
|
|
12
|
+
const firstValue =
|
|
13
|
+
facetedRowModel.flatRows[0]?.getUniqueValues(columnId)
|
|
13
14
|
|
|
14
15
|
if (typeof firstValue === 'undefined') {
|
|
15
16
|
return undefined
|
|
@@ -18,12 +19,17 @@ export function getFacetedMinMaxValues<TData extends RowData>(): (
|
|
|
18
19
|
let facetedMinMaxValues: [any, any] = [firstValue, firstValue]
|
|
19
20
|
|
|
20
21
|
for (let i = 0; i < facetedRowModel.flatRows.length; i++) {
|
|
21
|
-
const
|
|
22
|
+
const values =
|
|
23
|
+
facetedRowModel.flatRows[i]!.getUniqueValues<number>(columnId)
|
|
22
24
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
facetedMinMaxValues[
|
|
25
|
+
for (let j = 0; j < values.length; j++) {
|
|
26
|
+
const value = values[j]!
|
|
27
|
+
|
|
28
|
+
if (value < facetedMinMaxValues[0]) {
|
|
29
|
+
facetedMinMaxValues[0] = value
|
|
30
|
+
} else if (value > facetedMinMaxValues[1]) {
|
|
31
|
+
facetedMinMaxValues[1] = value
|
|
32
|
+
}
|
|
27
33
|
}
|
|
28
34
|
}
|
|
29
35
|
|
|
@@ -12,15 +12,20 @@ export function getFacetedUniqueValues<TData extends RowData>(): (
|
|
|
12
12
|
let facetedUniqueValues = new Map<any, number>()
|
|
13
13
|
|
|
14
14
|
for (let i = 0; i < facetedRowModel.flatRows.length; i++) {
|
|
15
|
-
const
|
|
15
|
+
const values =
|
|
16
|
+
facetedRowModel.flatRows[i]!.getUniqueValues<number>(columnId)
|
|
16
17
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
18
|
+
for (let j = 0; j < values.length; j++) {
|
|
19
|
+
const value = values[j]!
|
|
20
|
+
|
|
21
|
+
if (facetedUniqueValues.has(value)) {
|
|
22
|
+
facetedUniqueValues.set(
|
|
23
|
+
value,
|
|
24
|
+
(facetedUniqueValues.get(value) ?? 0) + 1
|
|
25
|
+
)
|
|
26
|
+
} else {
|
|
27
|
+
facetedUniqueValues.set(value, 1)
|
|
28
|
+
}
|
|
24
29
|
}
|
|
25
30
|
}
|
|
26
31
|
|