@tanstack/table-core 8.0.0-alpha.58 → 8.0.0-alpha.59

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 (76) 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 +11 -19
  11. package/build/cjs/features/Expanding.js.map +1 -1
  12. package/build/cjs/features/Grouping.js +6 -9
  13. package/build/cjs/features/Grouping.js.map +1 -1
  14. package/build/cjs/features/Headers.js +1 -67
  15. package/build/cjs/features/Headers.js.map +1 -1
  16. package/build/cjs/features/Pagination.js +3 -3
  17. package/build/cjs/features/Pagination.js.map +1 -1
  18. package/build/cjs/features/Pinning.js.map +1 -1
  19. package/build/cjs/features/RowSelection.js +15 -47
  20. package/build/cjs/features/RowSelection.js.map +1 -1
  21. package/build/cjs/features/Rows.js +0 -15
  22. package/build/cjs/features/Rows.js.map +1 -1
  23. package/build/cjs/features/Sorting.js +7 -10
  24. package/build/cjs/features/Sorting.js.map +1 -1
  25. package/build/cjs/features/Visibility.js +8 -21
  26. package/build/cjs/features/Visibility.js.map +1 -1
  27. package/build/cjs/filterFns.js +16 -0
  28. package/build/cjs/filterFns.js.map +1 -1
  29. package/build/cjs/index.js +0 -1
  30. package/build/cjs/index.js.map +1 -1
  31. package/build/cjs/utils.js +0 -16
  32. package/build/cjs/utils.js.map +1 -1
  33. package/build/esm/index.js +90 -266
  34. package/build/esm/index.js.map +1 -1
  35. package/build/stats-html.html +1 -1
  36. package/build/stats-react.json +346 -346
  37. package/build/types/core.d.ts +8 -10
  38. package/build/types/createTable.d.ts +10 -11
  39. package/build/types/features/Cells.d.ts +1 -2
  40. package/build/types/features/ColumnSizing.d.ts +4 -18
  41. package/build/types/features/Expanding.d.ts +4 -8
  42. package/build/types/features/Grouping.d.ts +4 -8
  43. package/build/types/features/Headers.d.ts +1 -5
  44. package/build/types/features/Pagination.d.ts +5 -6
  45. package/build/types/features/RowSelection.d.ts +5 -12
  46. package/build/types/features/Rows.d.ts +2 -4
  47. package/build/types/features/Sorting.d.ts +3 -7
  48. package/build/types/features/Visibility.d.ts +3 -6
  49. package/build/types/filterFns.d.ts +5 -0
  50. package/build/types/types.d.ts +10 -60
  51. package/build/types/utils.d.ts +1 -4
  52. package/build/umd/index.development.js +89 -266
  53. package/build/umd/index.development.js.map +1 -1
  54. package/build/umd/index.production.js +1 -1
  55. package/build/umd/index.production.js.map +1 -1
  56. package/package.json +1 -1
  57. package/src/core.ts +28 -52
  58. package/src/createTable.ts +13 -17
  59. package/src/features/Cells.ts +1 -27
  60. package/src/features/ColumnSizing.ts +14 -44
  61. package/src/features/Columns.ts +0 -2
  62. package/src/features/Expanding.ts +14 -40
  63. package/src/features/Grouping.ts +10 -37
  64. package/src/features/Headers.ts +1 -95
  65. package/src/features/Pagination.ts +8 -2
  66. package/src/features/Pinning.ts +1 -1
  67. package/src/features/RowSelection.ts +25 -87
  68. package/src/features/Rows.ts +2 -30
  69. package/src/features/Sorting.ts +17 -41
  70. package/src/features/Visibility.ts +15 -43
  71. package/src/filterFns.ts +20 -0
  72. package/src/types.ts +36 -98
  73. package/src/utils/getColumnFilteredRowModelAsync.ts +1 -5
  74. package/src/utils/getGlobalFilteredRowModelAsync.ts +2 -6
  75. package/src/utils/getSortedRowModelAsync.ts +0 -1
  76. package/src/utils.ts +1 -28
@@ -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,6 +18,10 @@ 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> = {
21
26
  manualPagination?: boolean
22
27
  onPaginationChange?: OnChangeFn<PaginationState>
@@ -53,13 +58,14 @@ export type PaginationInstance<TGenerics extends TableGenerics> = {
53
58
 
54
59
  //
55
60
 
56
- export const Pagination = {
57
- getInitialState: (): PaginationTableState => {
61
+ export const Pagination: TableFeature = {
62
+ getInitialState: (initialState): PaginationTableState => {
58
63
  return {
59
64
  pagination: {
60
65
  pageCount: -1,
61
66
  pageIndex: 0,
62
67
  pageSize: 10,
68
+ ...initialState?.pagination,
63
69
  },
64
70
  }
65
71
  },
@@ -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,9 +62,7 @@ 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> = {
@@ -94,11 +82,6 @@ export type SortingOptions<TGenerics extends TableGenerics> = {
94
82
  isMultiSortEvent?: (e: unknown) => boolean
95
83
  }
96
84
 
97
- export type ToggleSortingProps = {
98
- title?: string
99
- onClick?: (event: unknown) => void
100
- }
101
-
102
85
  export type SortingInstance<TGenerics extends TableGenerics> = {
103
86
  queueResetSorting: () => void
104
87
  getColumnAutoSortingFn: (columnId: string) => SortingFn<TGenerics> | undefined
@@ -117,10 +100,9 @@ export type SortingInstance<TGenerics extends TableGenerics> = {
117
100
  getColumnCanMultiSort: (columnId: string) => boolean
118
101
  getColumnIsSorted: (columnId: string) => false | 'asc' | 'desc'
119
102
  getColumnSortIndex: (columnId: string) => number
120
- getToggleSortingProps: <TGetter extends Getter<ToggleSortingProps>>(
121
- columnId: string,
122
- userProps?: TGetter
123
- ) => undefined | PropGetterValue<ToggleSortingProps, TGetter>
103
+ getToggleSortingHandler: (
104
+ columnId: string
105
+ ) => undefined | ((event: unknown) => void)
124
106
  getPreSortedRowModel: () => RowModel<TGenerics>
125
107
  getSortedRowModel: () => RowModel<TGenerics>
126
108
  _getSortedRowModel?: () => RowModel<TGenerics>
@@ -168,8 +150,8 @@ export const Sorting = {
168
150
  resetSorting: () => instance.resetSorting(column.id),
169
151
  toggleSorting: (desc, isMulti) =>
170
152
  instance.toggleColumnSorting(column.id, desc, isMulti),
171
- getToggleSortingProps: userProps =>
172
- instance.getToggleSortingProps(column.id, userProps),
153
+ getToggleSortingHandler: () =>
154
+ instance.getToggleSortingHandler(column.id)!,
173
155
  }
174
156
  },
175
157
 
@@ -416,7 +398,7 @@ export const Sorting = {
416
398
  }
417
399
  },
418
400
 
419
- getToggleSortingProps: (columnId, userProps) => {
401
+ getToggleSortingHandler: columnId => {
420
402
  const column = instance.getColumn(columnId)
421
403
 
422
404
  if (!column) {
@@ -425,22 +407,16 @@ export const Sorting = {
425
407
 
426
408
  const canSort = column.getCanSort()
427
409
 
428
- const initialProps: ToggleSortingProps = {
429
- title: canSort ? 'Toggle Sorting' : undefined,
430
- onClick: canSort
431
- ? (e: unknown) => {
432
- ;(e as any).persist?.()
433
- column.toggleSorting?.(
434
- undefined,
435
- column.getCanMultiSort()
436
- ? instance.options.isMultiSortEvent?.(e)
437
- : false
438
- )
439
- }
440
- : 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
+ )
441
419
  }
442
-
443
- return propGetter(initialProps, userProps)
444
420
  },
445
421
 
446
422
  getPreSortedRowModel: () => instance.getGlobalFilteredRowModel(),
@@ -1,15 +1,13 @@
1
1
  import {
2
2
  Cell,
3
3
  Column,
4
- Getter,
5
4
  OnChangeFn,
6
5
  TableGenerics,
7
- PropGetterValue,
8
6
  TableInstance,
9
7
  Updater,
10
8
  Row,
11
9
  } from '../types'
12
- import { makeStateUpdater, memo, propGetter } from '../utils'
10
+ import { makeStateUpdater, memo } from '../utils'
13
11
 
14
12
  export type VisibilityOptions = {
15
13
  onColumnVisibilityChange?: OnChangeFn<VisibilityState>
@@ -39,16 +37,11 @@ export type VisibilityInstance<TGenerics extends TableGenerics> = {
39
37
  getColumnCanHide: (columnId: string) => boolean
40
38
  getIsAllColumnsVisible: () => boolean
41
39
  getIsSomeColumnsVisible: () => boolean
42
- getToggleAllColumnsVisibilityProps: <
43
- TGetter extends Getter<ToggleAllColumnsVisibilityProps>
44
- >(
45
- userProps?: TGetter
46
- ) => undefined | PropGetterValue<ToggleAllColumnsVisibilityProps, TGetter>
40
+ getToggleAllColumnsVisibilityHandler: () =>
41
+ | undefined
42
+ | ((event: unknown) => void)
47
43
  }
48
44
 
49
- type ToggleVisibilityProps = {}
50
- type ToggleAllColumnsVisibilityProps = {}
51
-
52
45
  export type VisibilityColumnDef = {
53
46
  enableHiding?: boolean
54
47
  defaultCanHide?: boolean
@@ -64,9 +57,7 @@ export type VisibilityColumn = {
64
57
  getCanHide: () => boolean
65
58
  getIsVisible: () => boolean
66
59
  toggleVisibility: (value?: boolean) => void
67
- getToggleVisibilityProps: <TGetter extends Getter<ToggleVisibilityProps>>(
68
- userProps?: TGetter
69
- ) => PropGetterValue<ToggleVisibilityProps, TGetter>
60
+ getToggleVisibilityHandler: () => (event: unknown) => void
70
61
  }
71
62
 
72
63
  //
@@ -101,19 +92,12 @@ export const Visibility = {
101
92
  getIsVisible: () => instance.getColumnIsVisible(column.id),
102
93
  toggleVisibility: value =>
103
94
  instance.toggleColumnVisibility(column.id, value),
104
- getToggleVisibilityProps: userProps => {
105
- const props: ToggleVisibilityProps = {
106
- type: 'checkbox',
107
- checked: column.getIsVisible?.(),
108
- title: 'Toggle Column Visibility',
109
- onChange: (e: unknown) => {
110
- column.toggleVisibility?.(
111
- ((e as MouseEvent).target as HTMLInputElement).checked
112
- )
113
- },
95
+ getToggleVisibilityHandler: () => {
96
+ return (e: unknown) => {
97
+ column.toggleVisibility?.(
98
+ ((e as MouseEvent).target as HTMLInputElement).checked
99
+ )
114
100
  }
115
-
116
- return propGetter(props, userProps)
117
101
  },
118
102
  }
119
103
  },
@@ -265,24 +249,12 @@ export const Visibility = {
265
249
  getIsSomeColumnsVisible: () =>
266
250
  instance.getAllLeafColumns().some(column => column.getIsVisible?.()),
267
251
 
268
- getToggleAllColumnsVisibilityProps: userProps => {
269
- const props: ToggleAllColumnsVisibilityProps = {
270
- onChange: (e: MouseEvent) => {
271
- instance.toggleAllColumnsVisible(
272
- (e.target as HTMLInputElement)?.checked
273
- )
274
- },
275
- type: 'checkbox',
276
- title: 'Toggle visibility for all columns',
277
- checked: instance.getIsAllColumnsVisible(),
278
- indeterminate:
279
- !instance.getIsAllColumnsVisible() &&
280
- instance.getIsSomeColumnsVisible()
281
- ? 'indeterminate'
282
- : undefined,
252
+ getToggleAllColumnsVisibilityHandler: () => {
253
+ return (e: unknown) => {
254
+ instance.toggleAllColumnsVisible(
255
+ ((e as MouseEvent).target as HTMLInputElement)?.checked
256
+ )
283
257
  }
284
-
285
- return propGetter(props, userProps)
286
258
  },
287
259
  }
288
260
  },
package/src/filterFns.ts CHANGED
@@ -7,6 +7,7 @@ export const filterFns = {
7
7
  equalsStringSensitive,
8
8
  arrIncludes,
9
9
  arrIncludesAll,
10
+ arrIncludesSome,
10
11
  equals,
11
12
  weakEquals,
12
13
  betweenNumberRange,
@@ -117,6 +118,25 @@ function arrIncludesAll<TGenerics extends TableGenerics>(
117
118
 
118
119
  arrIncludesAll.autoRemove = (val: any) => testFalsey(val) || !val?.length
119
120
 
121
+ function arrIncludesSome<TGenerics extends TableGenerics>(
122
+ rows: Row<TGenerics>[],
123
+ columnIds: string[],
124
+ filterValue: unknown[]
125
+ ) {
126
+ return rows.filter(row => {
127
+ return columnIds.some(id => {
128
+ const rowValue = row.values[id]
129
+ return (
130
+ rowValue &&
131
+ rowValue.length &&
132
+ filterValue.some(val => rowValue.includes(val))
133
+ )
134
+ })
135
+ })
136
+ }
137
+
138
+ arrIncludesSome.autoRemove = (val: any) => testFalsey(val) || !val?.length
139
+
120
140
  function equals<TGenerics extends TableGenerics>(
121
141
  rows: Row<TGenerics>[],
122
142
  columnIds: string[],