@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.
- package/build/cjs/core.js +10 -21
- package/build/cjs/core.js.map +1 -1
- package/build/cjs/createTable.js +3 -3
- package/build/cjs/createTable.js.map +1 -1
- package/build/cjs/features/Cells.js +0 -15
- package/build/cjs/features/Cells.js.map +1 -1
- package/build/cjs/features/ColumnSizing.js +8 -19
- package/build/cjs/features/ColumnSizing.js.map +1 -1
- package/build/cjs/features/Columns.js.map +1 -1
- package/build/cjs/features/Expanding.js +11 -19
- package/build/cjs/features/Expanding.js.map +1 -1
- package/build/cjs/features/Grouping.js +6 -9
- package/build/cjs/features/Grouping.js.map +1 -1
- package/build/cjs/features/Headers.js +1 -67
- package/build/cjs/features/Headers.js.map +1 -1
- package/build/cjs/features/Pagination.js +3 -3
- package/build/cjs/features/Pagination.js.map +1 -1
- package/build/cjs/features/Pinning.js.map +1 -1
- package/build/cjs/features/RowSelection.js +15 -47
- package/build/cjs/features/RowSelection.js.map +1 -1
- package/build/cjs/features/Rows.js +0 -15
- package/build/cjs/features/Rows.js.map +1 -1
- package/build/cjs/features/Sorting.js +7 -10
- package/build/cjs/features/Sorting.js.map +1 -1
- package/build/cjs/features/Visibility.js +8 -21
- package/build/cjs/features/Visibility.js.map +1 -1
- package/build/cjs/filterFns.js +16 -0
- package/build/cjs/filterFns.js.map +1 -1
- package/build/cjs/index.js +0 -1
- package/build/cjs/index.js.map +1 -1
- package/build/cjs/utils.js +0 -16
- package/build/cjs/utils.js.map +1 -1
- package/build/esm/index.js +90 -266
- package/build/esm/index.js.map +1 -1
- package/build/stats-html.html +1 -1
- package/build/stats-react.json +346 -346
- package/build/types/core.d.ts +8 -10
- package/build/types/createTable.d.ts +10 -11
- package/build/types/features/Cells.d.ts +1 -2
- package/build/types/features/ColumnSizing.d.ts +4 -18
- package/build/types/features/Expanding.d.ts +4 -8
- package/build/types/features/Grouping.d.ts +4 -8
- package/build/types/features/Headers.d.ts +1 -5
- package/build/types/features/Pagination.d.ts +5 -6
- package/build/types/features/RowSelection.d.ts +5 -12
- package/build/types/features/Rows.d.ts +2 -4
- package/build/types/features/Sorting.d.ts +3 -7
- package/build/types/features/Visibility.d.ts +3 -6
- package/build/types/filterFns.d.ts +5 -0
- package/build/types/types.d.ts +10 -60
- package/build/types/utils.d.ts +1 -4
- package/build/umd/index.development.js +89 -266
- 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.ts +28 -52
- package/src/createTable.ts +13 -17
- package/src/features/Cells.ts +1 -27
- package/src/features/ColumnSizing.ts +14 -44
- package/src/features/Columns.ts +0 -2
- package/src/features/Expanding.ts +14 -40
- package/src/features/Grouping.ts +10 -37
- package/src/features/Headers.ts +1 -95
- package/src/features/Pagination.ts +8 -2
- package/src/features/Pinning.ts +1 -1
- package/src/features/RowSelection.ts +25 -87
- package/src/features/Rows.ts +2 -30
- package/src/features/Sorting.ts +17 -41
- package/src/features/Visibility.ts +15 -43
- package/src/filterFns.ts +20 -0
- package/src/types.ts +36 -98
- package/src/utils/getColumnFilteredRowModelAsync.ts +1 -5
- package/src/utils/getGlobalFilteredRowModelAsync.ts +2 -6
- package/src/utils/getSortedRowModelAsync.ts +0 -1
- package/src/utils.ts +1 -28
package/src/features/Headers.ts
CHANGED
|
@@ -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 {
|
|
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
|
},
|
package/src/features/Pinning.ts
CHANGED
|
@@ -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 {
|
|
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
|
-
|
|
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
|
-
|
|
65
|
-
rowId: string
|
|
66
|
-
|
|
67
|
-
) =>
|
|
68
|
-
|
|
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
|
-
|
|
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
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
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
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
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
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
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
|
-
|
|
547
|
-
instance.
|
|
484
|
+
getToggleSelectedHandler: () =>
|
|
485
|
+
instance.getToggleRowSelectedHandler(row.id)!,
|
|
548
486
|
getCanMultiSelect: () => instance.getRowCanMultiSelect(row.id),
|
|
549
487
|
getCanSelect: () => instance.getRowCanSelect(row.id),
|
|
550
488
|
}
|
package/src/features/Rows.ts
CHANGED
|
@@ -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
|
|
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
|
}
|
package/src/features/Sorting.ts
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
121
|
-
columnId: string
|
|
122
|
-
|
|
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
|
-
|
|
172
|
-
instance.
|
|
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
|
-
|
|
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
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
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
|
|
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
|
-
|
|
43
|
-
|
|
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
|
-
|
|
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
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
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
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
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[],
|