@tanstack/table-core 8.0.0-alpha.57 → 8.0.0-alpha.60

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 (80) hide show
  1. package/build/cjs/core.js +10 -21
  2. package/build/cjs/core.js.map +1 -1
  3. package/build/cjs/createTable.js +3 -3
  4. package/build/cjs/createTable.js.map +1 -1
  5. package/build/cjs/features/Cells.js +0 -15
  6. package/build/cjs/features/Cells.js.map +1 -1
  7. package/build/cjs/features/ColumnSizing.js +8 -19
  8. package/build/cjs/features/ColumnSizing.js.map +1 -1
  9. package/build/cjs/features/Columns.js.map +1 -1
  10. package/build/cjs/features/Expanding.js +12 -20
  11. package/build/cjs/features/Expanding.js.map +1 -1
  12. package/build/cjs/features/Filters.js +2 -2
  13. package/build/cjs/features/Filters.js.map +1 -1
  14. package/build/cjs/features/Grouping.js +7 -10
  15. package/build/cjs/features/Grouping.js.map +1 -1
  16. package/build/cjs/features/Headers.js +1 -67
  17. package/build/cjs/features/Headers.js.map +1 -1
  18. package/build/cjs/features/Pagination.js +4 -4
  19. package/build/cjs/features/Pagination.js.map +1 -1
  20. package/build/cjs/features/Pinning.js.map +1 -1
  21. package/build/cjs/features/RowSelection.js +15 -47
  22. package/build/cjs/features/RowSelection.js.map +1 -1
  23. package/build/cjs/features/Rows.js +0 -15
  24. package/build/cjs/features/Rows.js.map +1 -1
  25. package/build/cjs/features/Sorting.js +8 -11
  26. package/build/cjs/features/Sorting.js.map +1 -1
  27. package/build/cjs/features/Visibility.js +8 -21
  28. package/build/cjs/features/Visibility.js.map +1 -1
  29. package/build/cjs/filterFns.js +16 -0
  30. package/build/cjs/filterFns.js.map +1 -1
  31. package/build/cjs/index.js +0 -1
  32. package/build/cjs/index.js.map +1 -1
  33. package/build/cjs/utils.js +0 -16
  34. package/build/cjs/utils.js.map +1 -1
  35. package/build/esm/index.js +96 -272
  36. package/build/esm/index.js.map +1 -1
  37. package/build/stats-html.html +1 -1
  38. package/build/stats-react.json +348 -348
  39. package/build/types/core.d.ts +8 -10
  40. package/build/types/createTable.d.ts +10 -11
  41. package/build/types/features/Cells.d.ts +1 -2
  42. package/build/types/features/ColumnSizing.d.ts +4 -18
  43. package/build/types/features/Expanding.d.ts +5 -8
  44. package/build/types/features/Filters.d.ts +2 -0
  45. package/build/types/features/Grouping.d.ts +5 -8
  46. package/build/types/features/Headers.d.ts +1 -5
  47. package/build/types/features/Pagination.d.ts +6 -6
  48. package/build/types/features/RowSelection.d.ts +5 -12
  49. package/build/types/features/Rows.d.ts +2 -4
  50. package/build/types/features/Sorting.d.ts +4 -7
  51. package/build/types/features/Visibility.d.ts +3 -6
  52. package/build/types/filterFns.d.ts +5 -0
  53. package/build/types/types.d.ts +10 -60
  54. package/build/types/utils.d.ts +1 -4
  55. package/build/umd/index.development.js +95 -272
  56. package/build/umd/index.development.js.map +1 -1
  57. package/build/umd/index.production.js +1 -1
  58. package/build/umd/index.production.js.map +1 -1
  59. package/package.json +1 -1
  60. package/src/core.ts +29 -53
  61. package/src/createTable.ts +13 -17
  62. package/src/features/Cells.ts +1 -27
  63. package/src/features/ColumnSizing.ts +14 -44
  64. package/src/features/Columns.ts +0 -2
  65. package/src/features/Expanding.ts +19 -41
  66. package/src/features/Filters.ts +10 -2
  67. package/src/features/Grouping.ts +12 -38
  68. package/src/features/Headers.ts +1 -95
  69. package/src/features/Pagination.ts +13 -3
  70. package/src/features/Pinning.ts +1 -1
  71. package/src/features/RowSelection.ts +25 -87
  72. package/src/features/Rows.ts +2 -30
  73. package/src/features/Sorting.ts +19 -42
  74. package/src/features/Visibility.ts +15 -43
  75. package/src/filterFns.ts +20 -0
  76. package/src/types.ts +36 -98
  77. package/src/utils/getColumnFilteredRowModelAsync.ts +1 -5
  78. package/src/utils/getGlobalFilteredRowModelAsync.ts +2 -6
  79. package/src/utils/getSortedRowModelAsync.ts +0 -1
  80. package/src/utils.ts +1 -28
@@ -3,24 +3,14 @@ import { BuiltInAggregationFn, aggregationFns } from '../aggregationFns'
3
3
  import {
4
4
  Cell,
5
5
  Column,
6
- Getter,
7
6
  OnChangeFn,
8
- PropGetterValue,
9
7
  TableInstance,
10
8
  Row,
11
9
  Updater,
12
10
  Renderable,
13
- UseRenderer,
14
11
  TableGenerics,
15
12
  } from '../types'
16
- import {
17
- functionalUpdate,
18
- isFunction,
19
- makeStateUpdater,
20
- memo,
21
- Overwrite,
22
- propGetter,
23
- } from '../utils'
13
+ import { isFunction, makeStateUpdater, Overwrite } from '../utils'
24
14
 
25
15
  export type GroupingState = string[]
26
16
 
@@ -67,9 +57,7 @@ export type GroupingColumn<TGenerics extends TableGenerics> = {
67
57
  getIsGrouped: () => boolean
68
58
  getGroupedIndex: () => number
69
59
  toggleGrouping: () => void
70
- getToggleGroupingProps: <TGetter extends Getter<ToggleGroupingProps>>(
71
- userProps?: TGetter
72
- ) => undefined | PropGetterValue<ToggleGroupingProps, TGetter>
60
+ getToggleGroupingHandler: () => () => void
73
61
  }
74
62
 
75
63
  export type GroupingRow = {
@@ -82,7 +70,7 @@ export type GroupingCell<TGenerics extends TableGenerics> = {
82
70
  getIsGrouped: () => boolean
83
71
  getIsPlaceholder: () => boolean
84
72
  getIsAggregated: () => boolean
85
- renderAggregatedCell: () => string | null | ReturnType<UseRenderer<TGenerics>>
73
+ renderAggregatedCell: () => string | null | TGenerics['Rendered']
86
74
  }
87
75
 
88
76
  export type ColumnDefaultOptions = {
@@ -93,6 +81,7 @@ export type ColumnDefaultOptions = {
93
81
  }
94
82
 
95
83
  export type GroupingOptions<TGenerics extends TableGenerics> = {
84
+ manualGrouping?: boolean
96
85
  aggregationFns?: TGenerics['AggregationFns']
97
86
  onGroupingChange?: OnChangeFn<GroupingState>
98
87
  autoResetGrouping?: boolean
@@ -107,11 +96,6 @@ export type GroupingOptions<TGenerics extends TableGenerics> = {
107
96
 
108
97
  export type GroupingColumnMode = false | 'reorder' | 'remove'
109
98
 
110
- export type ToggleGroupingProps = {
111
- title?: string
112
- onClick?: (event: unknown) => void
113
- }
114
-
115
99
  export type GroupingInstance<TGenerics extends TableGenerics> = {
116
100
  queueResetGrouping: () => void
117
101
  getColumnAutoAggregationFn: (
@@ -126,10 +110,7 @@ export type GroupingInstance<TGenerics extends TableGenerics> = {
126
110
  getColumnCanGroup: (columnId: string) => boolean
127
111
  getColumnIsGrouped: (columnId: string) => boolean
128
112
  getColumnGroupedIndex: (columnId: string) => number
129
- getToggleGroupingProps: <TGetter extends Getter<ToggleGroupingProps>>(
130
- columnId: string,
131
- userProps?: TGetter
132
- ) => undefined | PropGetterValue<ToggleGroupingProps, TGetter>
113
+ getToggleGroupingHandler: (columnId: string) => undefined | (() => void)
133
114
  getRowIsGrouped: (rowId: string) => boolean
134
115
  getPreGroupedRowModel: () => RowModel<TGenerics>
135
116
  getGroupedRowModel: () => RowModel<TGenerics>
@@ -173,8 +154,8 @@ export const Grouping = {
173
154
  getGroupedIndex: () => instance.getColumnGroupedIndex(column.id),
174
155
  getIsGrouped: () => instance.getColumnIsGrouped(column.id),
175
156
  toggleGrouping: () => instance.toggleColumnGrouping(column.id),
176
- getToggleGroupingProps: userProps =>
177
- instance.getToggleGroupingProps(column.id, userProps),
157
+ getToggleGroupingHandler: () =>
158
+ instance.getToggleGroupingHandler(column.id)!,
178
159
  }
179
160
  },
180
161
 
@@ -277,21 +258,14 @@ export const Grouping = {
277
258
  instance.setGrouping(instance.initialState?.grouping ?? [])
278
259
  },
279
260
 
280
- getToggleGroupingProps: (columnId, userProps) => {
261
+ getToggleGroupingHandler: columnId => {
281
262
  const column = instance.getColumn(columnId)
282
-
283
263
  const canGroup = column.getCanGroup()
284
264
 
285
- const initialProps: ToggleGroupingProps = {
286
- title: canGroup ? 'Toggle Grouping' : undefined,
287
- onClick: canGroup
288
- ? (e: unknown) => {
289
- column.toggleGrouping?.()
290
- }
291
- : undefined,
265
+ return () => {
266
+ if (!canGroup) return
267
+ column.toggleGrouping?.()
292
268
  }
293
-
294
- return propGetter(initialProps, userProps)
295
269
  },
296
270
 
297
271
  getRowIsGrouped: rowId => !!instance.getRow(rowId)?.groupingColumnId,
@@ -306,7 +280,7 @@ export const Grouping = {
306
280
  instance.options.getGroupedRowModel(instance)
307
281
  }
308
282
 
309
- if (!instance._getGroupedRowModel) {
283
+ if (instance.options.manualGrouping || !instance._getGroupedRowModel) {
310
284
  return instance.getPreGroupedRowModel()
311
285
  }
312
286
 
@@ -1,20 +1,12 @@
1
1
  import {
2
- Cell,
3
2
  Column,
4
3
  CoreHeader,
5
- FooterGroupProps,
6
- FooterProps,
7
- Getter,
8
4
  Header,
9
5
  HeaderGroup,
10
- HeaderGroupProps,
11
- HeaderProps,
12
6
  TableGenerics,
13
- PropGetterValue,
14
7
  TableInstance,
15
- Row,
16
8
  } from '../types'
17
- import { propGetter, memo } from '../utils'
9
+ import { memo } from '../utils'
18
10
 
19
11
  export type HeadersInstance<TGenerics extends TableGenerics> = {
20
12
  createHeader: (
@@ -48,23 +40,6 @@ export type HeadersInstance<TGenerics extends TableGenerics> = {
48
40
  getRightLeafHeaders: () => Header<TGenerics>[]
49
41
 
50
42
  getHeader: (id: string) => Header<TGenerics>
51
-
52
- getHeaderGroupProps: <TGetter extends Getter<HeaderGroupProps>>(
53
- id: string,
54
- userProps?: TGetter
55
- ) => undefined | PropGetterValue<HeaderGroupProps, TGetter>
56
- getFooterGroupProps: <TGetter extends Getter<FooterGroupProps>>(
57
- id: string,
58
- userProps?: TGetter
59
- ) => undefined | PropGetterValue<FooterGroupProps, TGetter>
60
- getHeaderProps: <TGetter extends Getter<HeaderProps>>(
61
- headerId: string,
62
- userProps?: TGetter
63
- ) => undefined | PropGetterValue<HeaderProps, TGetter>
64
- getFooterProps: <TGetter extends Getter<FooterProps>>(
65
- headerId: string,
66
- userProps?: TGetter
67
- ) => undefined | PropGetterValue<FooterProps, TGetter>
68
43
  }
69
44
 
70
45
  //
@@ -135,10 +110,6 @@ export const Headers = {
135
110
 
136
111
  return leafHeaders as Header<TGenerics>[]
137
112
  },
138
- getHeaderProps: userProps =>
139
- instance.getHeaderProps(header.id, userProps)!,
140
- getFooterProps: userProps =>
141
- instance.getFooterProps(header.id, userProps)!,
142
113
  renderHeader: () =>
143
114
  column.header
144
115
  ? instance.render(column.header, {
@@ -447,67 +418,6 @@ export const Headers = {
447
418
 
448
419
  return header
449
420
  },
450
-
451
- getHeaderGroupProps: (id, userProps) => {
452
- const headerGroup = instance.getHeaderGroups().find(d => d.id === id)
453
-
454
- if (!headerGroup) {
455
- return
456
- }
457
-
458
- return propGetter(
459
- {
460
- key: headerGroup.id,
461
- role: 'row',
462
- },
463
- userProps
464
- )
465
- },
466
-
467
- getFooterGroupProps: (id, userProps) => {
468
- const headerGroup = instance.getFooterGroups().find(d => d.id === id)
469
-
470
- if (!headerGroup) {
471
- return
472
- }
473
-
474
- const initialProps = {
475
- key: headerGroup.id,
476
- role: 'row',
477
- }
478
-
479
- return propGetter(initialProps, userProps)
480
- },
481
-
482
- getHeaderProps: (id, userProps) => {
483
- const header = instance.getHeader(id)
484
-
485
- if (!header) {
486
- throw new Error()
487
- }
488
-
489
- const initialProps: HeaderProps = {
490
- key: header.id,
491
- role: 'columnheader',
492
- colSpan: header.colSpan,
493
- rowSpan: header.rowSpan,
494
- }
495
-
496
- return propGetter(initialProps, userProps)
497
- },
498
-
499
- getFooterProps: (id, userProps) => {
500
- const header = instance.getHeader(id)
501
-
502
- const initialProps: FooterProps = {
503
- key: header.id,
504
- role: 'columnfooter',
505
- colSpan: header.colSpan,
506
- rowSpan: header.rowSpan,
507
- }
508
-
509
- return propGetter(initialProps, userProps)
510
- },
511
421
  }
512
422
  },
513
423
  }
@@ -551,10 +461,6 @@ export function buildHeaderGroups<TGenerics extends TableGenerics>(
551
461
  depth,
552
462
  id: [headerFamily, `${depth}`].filter(Boolean).join('_'),
553
463
  headers: [],
554
- getHeaderGroupProps: getterValue =>
555
- instance.getHeaderGroupProps(`${depth}`, getterValue)!,
556
- getFooterGroupProps: getterValue =>
557
- instance.getFooterGroupProps(`${depth}`, getterValue)!,
558
464
  }
559
465
 
560
466
  // The parent columns we're going to scan next
@@ -4,6 +4,7 @@ import {
4
4
  TableInstance,
5
5
  RowModel,
6
6
  Updater,
7
+ TableFeature,
7
8
  } from '../types'
8
9
  import { functionalUpdate, makeStateUpdater, memo } from '../utils'
9
10
 
@@ -17,7 +18,12 @@ export type PaginationTableState = {
17
18
  pagination: PaginationState
18
19
  }
19
20
 
21
+ export type PaginationInitialTableState = {
22
+ pagination?: Partial<PaginationState>
23
+ }
24
+
20
25
  export type PaginationOptions<TGenerics extends TableGenerics> = {
26
+ manualPagination?: boolean
21
27
  onPaginationChange?: OnChangeFn<PaginationState>
22
28
  autoResetPageIndex?: boolean
23
29
  getPaginationRowModel?: (
@@ -52,13 +58,14 @@ export type PaginationInstance<TGenerics extends TableGenerics> = {
52
58
 
53
59
  //
54
60
 
55
- export const Pagination = {
56
- getInitialState: (): PaginationTableState => {
61
+ export const Pagination: TableFeature = {
62
+ getInitialState: (initialState): PaginationTableState => {
57
63
  return {
58
64
  pagination: {
59
65
  pageCount: -1,
60
66
  pageIndex: 0,
61
67
  pageSize: 10,
68
+ ...initialState?.pagination,
62
69
  },
63
70
  }
64
71
  },
@@ -218,7 +225,10 @@ export const Pagination = {
218
225
  instance.options.getPaginationRowModel(instance)
219
226
  }
220
227
 
221
- if (!instance._getPaginationRowModel) {
228
+ if (
229
+ instance.options.manualPagination ||
230
+ !instance._getPaginationRowModel
231
+ ) {
222
232
  return instance.getPrePaginationRowModel()
223
233
  }
224
234
 
@@ -7,7 +7,7 @@ import {
7
7
  Row,
8
8
  Cell,
9
9
  } from '../types'
10
- import { functionalUpdate, makeStateUpdater, memo } from '../utils'
10
+ import { makeStateUpdater, memo } from '../utils'
11
11
 
12
12
  export type ColumnPinningPosition = false | 'left' | 'right'
13
13
 
@@ -1,14 +1,12 @@
1
1
  import {
2
- Getter,
3
2
  OnChangeFn,
4
3
  TableGenerics,
5
- PropGetterValue,
6
4
  TableInstance,
7
5
  Row,
8
6
  RowModel,
9
7
  Updater,
10
8
  } from '../types'
11
- import { functionalUpdate, makeStateUpdater, memo, propGetter } from '../utils'
9
+ import { makeStateUpdater, memo } from '../utils'
12
10
 
13
11
  export type RowSelectionState = Record<string, boolean>
14
12
 
@@ -41,40 +39,22 @@ export type RowSelectionOptions<TGenerics extends TableGenerics> = {
41
39
  // ) => RowModel<TGenerics>
42
40
  }
43
41
 
44
- type ToggleRowSelectedProps = {
45
- onChange?: (e: unknown) => void
46
- checked?: boolean
47
- title?: string
48
- indeterminate?: boolean
49
- }
50
-
51
42
  export type RowSelectionRow = {
52
43
  getIsSelected: () => boolean
53
44
  getIsSomeSelected: () => boolean
54
45
  getCanSelect: () => boolean
55
46
  getCanMultiSelect: () => boolean
56
47
  toggleSelected: (value?: boolean) => void
57
- getToggleSelectedProps: <TGetter extends Getter<ToggleRowSelectedProps>>(
58
- userProps?: TGetter
59
- ) => undefined | PropGetterValue<ToggleRowSelectedProps, TGetter>
48
+ getToggleSelectedHandler: () => (event: unknown) => void
60
49
  }
61
50
 
62
51
  export type RowSelectionInstance<TGenerics extends TableGenerics> = {
63
52
  queueResetRowSelection: () => void
64
- getToggleRowSelectedProps: <TGetter extends Getter<ToggleRowSelectedProps>>(
65
- rowId: string,
66
- userProps?: TGetter
67
- ) => undefined | PropGetterValue<ToggleRowSelectedProps, TGetter>
68
- getToggleAllRowsSelectedProps: <
69
- TGetter extends Getter<ToggleRowSelectedProps>
70
- >(
71
- userProps?: TGetter
72
- ) => undefined | PropGetterValue<ToggleRowSelectedProps, TGetter>
73
- getToggleAllPageRowsSelectedProps: <
74
- TGetter extends Getter<ToggleRowSelectedProps>
75
- >(
76
- userProps?: TGetter
77
- ) => undefined | PropGetterValue<ToggleRowSelectedProps, TGetter>
53
+ getToggleRowSelectedHandler: (
54
+ rowId: string
55
+ ) => undefined | ((e: unknown) => void)
56
+ getToggleAllRowsSelectedHandler: () => (event: unknown) => void
57
+ getToggleAllPageRowsSelectedHandler: () => (event: unknown) => void
78
58
  setRowSelection: (updater: Updater<RowSelectionState>) => void
79
59
  resetRowSelection: () => void
80
60
  toggleRowSelected: (rowId: string, value?: boolean) => void
@@ -460,77 +440,35 @@ export const RowSelection = {
460
440
  : !!paginationFlatRows?.length
461
441
  },
462
442
 
463
- getToggleRowSelectedProps: (rowId, userProps) => {
443
+ getToggleRowSelectedHandler: rowId => {
464
444
  const row = instance.getRow(rowId)
465
445
 
466
446
  const isSelected = row.getIsSelected()
467
447
  const isSomeSelected = row.getIsSomeSelected()
468
448
  const canSelect = row.getCanSelect()
469
449
 
470
- const initialProps: ToggleRowSelectedProps = {
471
- onChange: canSelect
472
- ? (e: unknown) => {
473
- row.toggleSelected(
474
- ((e as MouseEvent).target as HTMLInputElement).checked
475
- )
476
- }
477
- : undefined,
478
- checked: isSelected,
479
- title: 'Toggle Row Selected',
480
- indeterminate: isSomeSelected,
481
- // onChange: forInput
482
- // ? (e: Event) => e.stopPropagation()
483
- // : (e: Event) => {
484
- // if (instance.options.isAdditiveSelectEvent(e)) {
485
- // row.toggleSelected()
486
- // } else if (instance.options.isInclusiveSelectEvent(e)) {
487
- // instance.addRowSelectionRange(row.id)
488
- // } else {
489
- // instance.setRowSelection({})
490
- // row.toggleSelected()
491
- // }
492
-
493
- // if (props.onClick) props.onClick(e)
494
- // },
450
+ return (e: unknown) => {
451
+ if (!canSelect) return
452
+ row.toggleSelected(
453
+ ((e as MouseEvent).target as HTMLInputElement)?.checked
454
+ )
495
455
  }
496
-
497
- return propGetter(initialProps, userProps)
498
456
  },
499
457
 
500
- getToggleAllRowsSelectedProps: userProps => {
501
- const isSomeRowsSelected = instance.getIsSomeRowsSelected()
502
- const isAllRowsSelected = instance.getIsAllRowsSelected()
503
-
504
- const initialProps: ToggleRowSelectedProps = {
505
- onChange: (e: unknown) => {
506
- instance.toggleAllRowsSelected(
507
- ((e as MouseEvent).target as HTMLInputElement).checked
508
- )
509
- },
510
- checked: isAllRowsSelected,
511
- title: 'Toggle All Rows Selected',
512
- indeterminate: isSomeRowsSelected,
458
+ getToggleAllRowsSelectedHandler: () => {
459
+ return (e: unknown) => {
460
+ instance.toggleAllRowsSelected(
461
+ ((e as MouseEvent).target as HTMLInputElement).checked
462
+ )
513
463
  }
514
-
515
- return propGetter(initialProps, userProps)
516
464
  },
517
465
 
518
- getToggleAllPageRowsSelectedProps: userProps => {
519
- const isSomePageRowsSelected = instance.getIsSomePageRowsSelected()
520
- const isAllPageRowsSelected = instance.getIsAllPageRowsSelected()
521
-
522
- const initialProps: ToggleRowSelectedProps = {
523
- onChange: (e: unknown) => {
524
- instance.toggleAllPageRowsSelected(
525
- ((e as MouseEvent).target as HTMLInputElement).checked
526
- )
527
- },
528
- checked: isAllPageRowsSelected,
529
- title: 'Toggle All Current Page Rows Selected',
530
- indeterminate: isSomePageRowsSelected,
466
+ getToggleAllPageRowsSelectedHandler: () => {
467
+ return (e: unknown) => {
468
+ instance.toggleAllPageRowsSelected(
469
+ ((e as MouseEvent).target as HTMLInputElement).checked
470
+ )
531
471
  }
532
-
533
- return propGetter(initialProps, userProps)
534
472
  },
535
473
  }
536
474
  },
@@ -543,8 +481,8 @@ export const RowSelection = {
543
481
  getIsSelected: () => instance.getRowIsSelected(row.id),
544
482
  getIsSomeSelected: () => instance.getRowIsSomeSelected(row.id),
545
483
  toggleSelected: value => instance.toggleRowSelected(row.id, value),
546
- getToggleSelectedProps: userProps =>
547
- instance.getToggleRowSelectedProps(row.id, userProps),
484
+ getToggleSelectedHandler: () =>
485
+ instance.getToggleRowSelectedHandler(row.id)!,
548
486
  getCanMultiSelect: () => instance.getRowCanMultiSelect(row.id),
549
487
  getCanSelect: () => instance.getRowCanSelect(row.id),
550
488
  }
@@ -1,19 +1,11 @@
1
1
  import {
2
- Cell,
3
2
  TableGenerics,
4
3
  TableInstance,
5
4
  Row,
6
- Column,
7
- CoreCell,
8
- Getter,
9
- CellProps,
10
- PropGetterValue,
11
- RowProps,
12
5
  RowModel,
13
6
  RowValues,
14
- PropGetter,
15
7
  } from '../types'
16
- import { flattenBy, memo, propGetter } from '../utils'
8
+ import { flattenBy } from '../utils'
17
9
 
18
10
  export type CoreRow<TGenerics extends TableGenerics> = {
19
11
  id: string
@@ -23,7 +15,6 @@ export type CoreRow<TGenerics extends TableGenerics> = {
23
15
  values: RowValues
24
16
  subRows: Row<TGenerics>[]
25
17
  getLeafRows: () => Row<TGenerics>[]
26
- getRowProps: PropGetter<RowProps>
27
18
  originalSubRows?: TGenerics['Row'][]
28
19
  }
29
20
 
@@ -34,7 +25,7 @@ export type RowsOptions<TGenerics extends TableGenerics> = {
34
25
  getSubRows?: (
35
26
  originalRow: TGenerics['Row'],
36
27
  index: number
37
- ) => TGenerics['Row'][]
28
+ ) => undefined | TGenerics['Row'][]
38
29
  getRowId?: (
39
30
  originalRow: TGenerics['Row'],
40
31
  index: number,
@@ -59,10 +50,6 @@ export type RowsInstance<TGenerics extends TableGenerics> = {
59
50
  _getCoreRowModel?: () => RowModel<TGenerics>
60
51
  getRowModel: () => RowModel<TGenerics>
61
52
  getRow: (id: string) => Row<TGenerics>
62
- getRowProps: <TGetter extends Getter<RowProps>>(
63
- rowId: string,
64
- userProps?: TGetter
65
- ) => undefined | PropGetterValue<RowProps, TGetter>
66
53
  }
67
54
 
68
55
  //
@@ -95,7 +82,6 @@ export const Rows = {
95
82
  values,
96
83
  subRows: [],
97
84
  getLeafRows: () => flattenBy(row.subRows, d => d.subRows),
98
- getRowProps: userProps => instance.getRowProps(row.id, userProps)!,
99
85
  }
100
86
 
101
87
  for (let i = 0; i < instance._features.length; i++) {
@@ -132,20 +118,6 @@ export const Rows = {
132
118
 
133
119
  return row
134
120
  },
135
- getRowProps: (rowId, userProps) => {
136
- const row = instance.getRow(rowId)
137
- if (!row) {
138
- return
139
- }
140
-
141
- return propGetter(
142
- {
143
- key: row.id,
144
- role: 'row',
145
- },
146
- userProps
147
- )
148
- },
149
121
  }
150
122
  },
151
123
  }
@@ -7,24 +7,14 @@ import {
7
7
 
8
8
  import {
9
9
  Column,
10
- Getter,
11
- Header,
12
10
  OnChangeFn,
13
11
  TableGenerics,
14
- PropGetterValue,
15
12
  TableInstance,
16
13
  Row,
17
14
  Updater,
18
15
  } from '../types'
19
16
 
20
- import {
21
- functionalUpdate,
22
- isFunction,
23
- makeStateUpdater,
24
- memo,
25
- Overwrite,
26
- propGetter,
27
- } from '../utils'
17
+ import { isFunction, makeStateUpdater, Overwrite } from '../utils'
28
18
 
29
19
  export type SortDirection = 'asc' | 'desc'
30
20
 
@@ -72,12 +62,11 @@ export type SortingColumn<TGenerics extends TableGenerics> = {
72
62
  getIsSorted: () => false | SortDirection
73
63
  resetSorting: () => void
74
64
  toggleSorting: (desc?: boolean, isMulti?: boolean) => void
75
- getToggleSortingProps: <TGetter extends Getter<ToggleSortingProps>>(
76
- userProps?: TGetter
77
- ) => undefined | PropGetterValue<ToggleSortingProps, TGetter>
65
+ getToggleSortingHandler: () => undefined | ((event: unknown) => void)
78
66
  }
79
67
 
80
68
  export type SortingOptions<TGenerics extends TableGenerics> = {
69
+ manualSorting?: boolean
81
70
  sortingFns?: TGenerics['SortingFns']
82
71
  onSortingChange?: OnChangeFn<SortingState>
83
72
  autoResetSorting?: boolean
@@ -93,11 +82,6 @@ export type SortingOptions<TGenerics extends TableGenerics> = {
93
82
  isMultiSortEvent?: (e: unknown) => boolean
94
83
  }
95
84
 
96
- export type ToggleSortingProps = {
97
- title?: string
98
- onClick?: (event: unknown) => void
99
- }
100
-
101
85
  export type SortingInstance<TGenerics extends TableGenerics> = {
102
86
  queueResetSorting: () => void
103
87
  getColumnAutoSortingFn: (columnId: string) => SortingFn<TGenerics> | undefined
@@ -116,10 +100,9 @@ export type SortingInstance<TGenerics extends TableGenerics> = {
116
100
  getColumnCanMultiSort: (columnId: string) => boolean
117
101
  getColumnIsSorted: (columnId: string) => false | 'asc' | 'desc'
118
102
  getColumnSortIndex: (columnId: string) => number
119
- getToggleSortingProps: <TGetter extends Getter<ToggleSortingProps>>(
120
- columnId: string,
121
- userProps?: TGetter
122
- ) => undefined | PropGetterValue<ToggleSortingProps, TGetter>
103
+ getToggleSortingHandler: (
104
+ columnId: string
105
+ ) => undefined | ((event: unknown) => void)
123
106
  getPreSortedRowModel: () => RowModel<TGenerics>
124
107
  getSortedRowModel: () => RowModel<TGenerics>
125
108
  _getSortedRowModel?: () => RowModel<TGenerics>
@@ -167,8 +150,8 @@ export const Sorting = {
167
150
  resetSorting: () => instance.resetSorting(column.id),
168
151
  toggleSorting: (desc, isMulti) =>
169
152
  instance.toggleColumnSorting(column.id, desc, isMulti),
170
- getToggleSortingProps: userProps =>
171
- instance.getToggleSortingProps(column.id, userProps),
153
+ getToggleSortingHandler: () =>
154
+ instance.getToggleSortingHandler(column.id)!,
172
155
  }
173
156
  },
174
157
 
@@ -415,7 +398,7 @@ export const Sorting = {
415
398
  }
416
399
  },
417
400
 
418
- getToggleSortingProps: (columnId, userProps) => {
401
+ getToggleSortingHandler: columnId => {
419
402
  const column = instance.getColumn(columnId)
420
403
 
421
404
  if (!column) {
@@ -424,22 +407,16 @@ export const Sorting = {
424
407
 
425
408
  const canSort = column.getCanSort()
426
409
 
427
- const initialProps: ToggleSortingProps = {
428
- title: canSort ? 'Toggle Sorting' : undefined,
429
- onClick: canSort
430
- ? (e: unknown) => {
431
- ;(e as any).persist?.()
432
- column.toggleSorting?.(
433
- undefined,
434
- column.getCanMultiSort()
435
- ? instance.options.isMultiSortEvent?.(e)
436
- : false
437
- )
438
- }
439
- : undefined,
410
+ return (e: unknown) => {
411
+ if (!canSort) return
412
+ ;(e as any).persist?.()
413
+ column.toggleSorting?.(
414
+ undefined,
415
+ column.getCanMultiSort()
416
+ ? instance.options.isMultiSortEvent?.(e)
417
+ : false
418
+ )
440
419
  }
441
-
442
- return propGetter(initialProps, userProps)
443
420
  },
444
421
 
445
422
  getPreSortedRowModel: () => instance.getGlobalFilteredRowModel(),
@@ -452,7 +429,7 @@ export const Sorting = {
452
429
  instance.options.getSortedRowModel(instance)
453
430
  }
454
431
 
455
- if (!instance._getSortedRowModel) {
432
+ if (instance.options.manualSorting || !instance._getSortedRowModel) {
456
433
  return instance.getPreSortedRowModel()
457
434
  }
458
435