@tanstack/table-core 8.9.9 → 8.9.11

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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tanstack/table-core",
3
3
  "author": "Tanner Linsley",
4
- "version": "8.9.9",
4
+ "version": "8.9.11",
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",
@@ -348,7 +348,7 @@ export const RowSelection: TableFeature = {
348
348
  table.setRowSelection(old => {
349
349
  value = typeof value !== 'undefined' ? value : !isSelected
350
350
 
351
- if (isSelected === value) {
351
+ if (row.getCanSelect() && isSelected === value) {
352
352
  return old
353
353
  }
354
354
 
@@ -496,25 +496,38 @@ export function isSubRowSelected<TData extends RowData>(
496
496
  selection: Record<string, boolean>,
497
497
  table: Table<TData>
498
498
  ): boolean | 'some' | 'all' {
499
- if (row.subRows && row.subRows.length) {
500
- let allChildrenSelected = true
501
- let someSelected = false
502
-
503
- row.subRows.forEach(subRow => {
504
- // Bail out early if we know both of these
505
- if (someSelected && !allChildrenSelected) {
506
- return
507
- }
499
+ if (!row.subRows?.length) return false
500
+
501
+ let allChildrenSelected = true
502
+ let someSelected = false
503
+
504
+ row.subRows.forEach(subRow => {
505
+ // Bail out early if we know both of these
506
+ if (someSelected && !allChildrenSelected) {
507
+ return
508
+ }
508
509
 
510
+ if (subRow.getCanSelect()) {
509
511
  if (isRowSelected(subRow, selection)) {
510
512
  someSelected = true
511
513
  } else {
512
514
  allChildrenSelected = false
513
515
  }
514
- })
516
+ }
515
517
 
516
- return allChildrenSelected ? 'all' : someSelected ? 'some' : false
517
- }
518
+ // Check row selection of nested subrows
519
+ if (subRow.subRows && subRow.subRows.length) {
520
+ const subRowChildrenSelected = isSubRowSelected(subRow, selection, table)
521
+ if (subRowChildrenSelected === 'all') {
522
+ someSelected = true
523
+ } else if (subRowChildrenSelected === 'some') {
524
+ someSelected = true
525
+ allChildrenSelected = false
526
+ } else {
527
+ allChildrenSelected = false
528
+ }
529
+ }
530
+ })
518
531
 
519
- return false
532
+ return allChildrenSelected ? 'all' : someSelected ? 'some' : false
520
533
  }
package/src/utils.ts CHANGED
@@ -43,16 +43,16 @@ type AllowedIndexes<
43
43
  ? AllowedIndexes<Tail, Keys | Tail['length']>
44
44
  : Keys
45
45
 
46
- export type DeepKeys<T, TDepth extends any[] = []> = TDepth['length'] extends 10
46
+ export type DeepKeys<T, TDepth extends any[] = []> = TDepth['length'] extends 5
47
47
  ? never
48
48
  : unknown extends T
49
- ? keyof T
49
+ ? string
50
50
  : object extends T
51
51
  ? string
52
52
  : T extends readonly any[] & IsTuple<T>
53
53
  ? AllowedIndexes<T> | DeepKeysPrefix<T, AllowedIndexes<T>, TDepth>
54
54
  : T extends any[]
55
- ? never & 'Dynamic length array indexing is not supported'
55
+ ? DeepKeys<T[number], [...TDepth, any]>
56
56
  : T extends Date
57
57
  ? never
58
58
  : T extends object