@tanstack/table-core 8.7.9 → 8.8.0

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.
Files changed (48) hide show
  1. package/build/lib/aggregationFns.js.map +1 -1
  2. package/build/lib/columnHelper.js.map +1 -1
  3. package/build/lib/core/cell.js.map +1 -1
  4. package/build/lib/core/column.js.map +1 -1
  5. package/build/lib/core/headers.js.map +1 -1
  6. package/build/lib/core/row.d.ts +2 -1
  7. package/build/lib/core/row.js +2 -1
  8. package/build/lib/core/row.js.map +1 -1
  9. package/build/lib/core/table.js.map +1 -1
  10. package/build/lib/features/ColumnSizing.js.map +1 -1
  11. package/build/lib/features/Expanding.js.map +1 -1
  12. package/build/lib/features/Filters.js.map +1 -1
  13. package/build/lib/features/Grouping.js.map +1 -1
  14. package/build/lib/features/Ordering.js.map +1 -1
  15. package/build/lib/features/Pagination.js.map +1 -1
  16. package/build/lib/features/Pinning.js.map +1 -1
  17. package/build/lib/features/RowSelection.js.map +1 -1
  18. package/build/lib/features/Sorting.js.map +1 -1
  19. package/build/lib/features/Visibility.js.map +1 -1
  20. package/build/lib/filterFns.js.map +1 -1
  21. package/build/lib/index.esm.js +15 -14
  22. package/build/lib/index.esm.js.map +1 -1
  23. package/build/lib/index.mjs +15 -14
  24. package/build/lib/index.mjs.map +1 -1
  25. package/build/lib/sortingFns.js.map +1 -1
  26. package/build/lib/utils/filterRowsUtils.js +6 -6
  27. package/build/lib/utils/filterRowsUtils.js.map +1 -1
  28. package/build/lib/utils/getCoreRowModel.js +2 -2
  29. package/build/lib/utils/getCoreRowModel.js.map +1 -1
  30. package/build/lib/utils/getExpandedRowModel.js.map +1 -1
  31. package/build/lib/utils/getFacetedMinMaxValues.js.map +1 -1
  32. package/build/lib/utils/getFacetedRowModel.js.map +1 -1
  33. package/build/lib/utils/getFacetedUniqueValues.js.map +1 -1
  34. package/build/lib/utils/getFilteredRowModel.js.map +1 -1
  35. package/build/lib/utils/getGroupedRowModel.js +5 -5
  36. package/build/lib/utils/getGroupedRowModel.js.map +1 -1
  37. package/build/lib/utils/getPaginationRowModel.js.map +1 -1
  38. package/build/lib/utils/getSortedRowModel.js.map +1 -1
  39. package/build/lib/utils.js.map +1 -1
  40. package/build/umd/index.development.js +15 -14
  41. package/build/umd/index.development.js.map +1 -1
  42. package/build/umd/index.production.js +1 -1
  43. package/build/umd/index.production.js.map +1 -1
  44. package/package.json +1 -1
  45. package/src/core/row.ts +4 -1
  46. package/src/utils/filterRowsUtils.ts +18 -6
  47. package/src/utils/getCoreRowModel.ts +5 -3
  48. package/src/utils/getGroupedRowModel.ts +12 -4
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tanstack/table-core",
3
3
  "author": "Tanner Linsley",
4
- "version": "8.7.9",
4
+ "version": "8.8.0",
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/row.ts CHANGED
@@ -17,6 +17,7 @@ export interface CoreRow<TData extends RowData> {
17
17
  originalSubRows?: TData[]
18
18
  getAllCells: () => Cell<TData, unknown>[]
19
19
  _getAllCellsByColumnId: () => Record<string, Cell<TData, unknown>>
20
+ parentRow?: Row<TData>
20
21
  }
21
22
 
22
23
  export const createRow = <TData extends RowData>(
@@ -25,13 +26,15 @@ export const createRow = <TData extends RowData>(
25
26
  original: TData,
26
27
  rowIndex: number,
27
28
  depth: number,
28
- subRows?: Row<TData>[]
29
+ subRows?: Row<TData>[],
30
+ parentRow?: Row<TData>
29
31
  ): Row<TData> => {
30
32
  let row: CoreRow<TData> = {
31
33
  id,
32
34
  index: rowIndex,
33
35
  original,
34
36
  depth,
37
+ parentRow,
35
38
  _valuesCache: {},
36
39
  _uniqueValuesCache: {},
37
40
  getValue: columnId => {
@@ -22,7 +22,11 @@ export function filterRowModelFromLeafs<TData extends RowData>(
22
22
  const newFilteredRowsById: Record<string, Row<TData>> = {}
23
23
  const maxDepth = table.options.maxLeafRowFilterDepth ?? 100
24
24
 
25
- const recurseFilterRows = (rowsToFilter: Row<TData>[], depth = 0) => {
25
+ const recurseFilterRows = (
26
+ rowsToFilter: Row<TData>[],
27
+ depth = 0,
28
+ parentRow?: Row<TData>
29
+ ) => {
26
30
  const rows: Row<TData>[] = []
27
31
 
28
32
  // Filter from children up first
@@ -34,12 +38,14 @@ export function filterRowModelFromLeafs<TData extends RowData>(
34
38
  row.id,
35
39
  row.original,
36
40
  row.index,
37
- row.depth
41
+ row.depth,
42
+ undefined,
43
+ parentRow
38
44
  )
39
45
  newRow.columnFilters = row.columnFilters
40
46
 
41
47
  if (row.subRows?.length && depth < maxDepth) {
42
- newRow.subRows = recurseFilterRows(row.subRows, depth + 1)
48
+ newRow.subRows = recurseFilterRows(row.subRows, depth + 1, newRow)
43
49
  row = newRow
44
50
 
45
51
  if (filterRow(row) && !newRow.subRows.length) {
@@ -85,7 +91,11 @@ export function filterRowModelFromRoot<TData extends RowData>(
85
91
  const maxDepth = table.options.maxLeafRowFilterDepth ?? 100
86
92
 
87
93
  // Filters top level and nested rows
88
- const recurseFilterRows = (rowsToFilter: Row<TData>[], depth = 0) => {
94
+ const recurseFilterRows = (
95
+ rowsToFilter: Row<TData>[],
96
+ depth = 0,
97
+ parentRow?: Row<TData>
98
+ ) => {
89
99
  // Filter from parents downward first
90
100
 
91
101
  const rows: Row<TData>[] = []
@@ -103,9 +113,11 @@ export function filterRowModelFromRoot<TData extends RowData>(
103
113
  row.id,
104
114
  row.original,
105
115
  row.index,
106
- row.depth
116
+ row.depth,
117
+ undefined,
118
+ parentRow
107
119
  )
108
- newRow.subRows = recurseFilterRows(row.subRows, depth + 1)
120
+ newRow.subRows = recurseFilterRows(row.subRows, depth + 1, newRow)
109
121
  row = newRow
110
122
  }
111
123
 
@@ -24,7 +24,7 @@ export function getCoreRowModel<TData extends RowData>(): (
24
24
  const accessRows = (
25
25
  originalRows: TData[],
26
26
  depth = 0,
27
- parent?: Row<TData>
27
+ parentRow?: Row<TData>
28
28
  ): Row<TData>[] => {
29
29
  const rows = [] as Row<TData>[]
30
30
 
@@ -39,10 +39,12 @@ export function getCoreRowModel<TData extends RowData>(): (
39
39
  // Make the row
40
40
  const row = createRow(
41
41
  table,
42
- table._getRowId(originalRows[i]!, i, parent),
42
+ table._getRowId(originalRows[i]!, i, parentRow),
43
43
  originalRows[i]!,
44
44
  i,
45
- depth
45
+ depth,
46
+ undefined,
47
+ parentRow
46
48
  )
47
49
 
48
50
  // Keep track of every row in a flat array
@@ -29,6 +29,7 @@ export function getGroupedRowModel<TData extends RowData>(): (
29
29
  const groupUpRecursively = (
30
30
  rows: Row<TData>[],
31
31
  depth = 0,
32
+ parentRow?: Row<TData>,
32
33
  parentId?: string
33
34
  ) => {
34
35
  // Grouping depth has been been met
@@ -41,7 +42,7 @@ export function getGroupedRowModel<TData extends RowData>(): (
41
42
  groupedRowsById[row.id] = row
42
43
 
43
44
  if (row.subRows) {
44
- row.subRows = groupUpRecursively(row.subRows, depth + 1)
45
+ row.subRows = groupUpRecursively(row.subRows, depth + 1, row)
45
46
  }
46
47
 
47
48
  return row
@@ -60,7 +61,12 @@ export function getGroupedRowModel<TData extends RowData>(): (
60
61
  id = parentId ? `${parentId}>${id}` : id
61
62
 
62
63
  // First, Recurse to group sub rows before aggregation
63
- const subRows = groupUpRecursively(groupedRows, depth + 1, id)
64
+ const subRows = groupUpRecursively(
65
+ groupedRows,
66
+ depth + 1,
67
+ parentRow,
68
+ id
69
+ )
64
70
 
65
71
  // Flatten the leaf rows of the rows in this group
66
72
  const leafRows = depth
@@ -72,7 +78,9 @@ export function getGroupedRowModel<TData extends RowData>(): (
72
78
  id,
73
79
  leafRows[0]!.original,
74
80
  index,
75
- depth
81
+ depth,
82
+ undefined,
83
+ parentRow
76
84
  )
77
85
 
78
86
  Object.assign(row, {
@@ -134,7 +142,7 @@ export function getGroupedRowModel<TData extends RowData>(): (
134
142
  return aggregatedGroupedRows
135
143
  }
136
144
 
137
- const groupedRows = groupUpRecursively(rowModel.rows, 0, '')
145
+ const groupedRows = groupUpRecursively(rowModel.rows, 0, undefined, '')
138
146
 
139
147
  groupedRows.forEach(subRow => {
140
148
  groupedFlatRows.push(subRow)