material-react-table 2.6.1 → 2.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.
- package/dist/index.d.ts +390 -260
- package/dist/index.esm.js +1977 -1921
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +2372 -2318
- package/dist/index.js.map +1 -1
- package/package.json +20 -20
- package/src/{MaterialReactTable.tsx → components/MaterialReactTable.tsx} +3 -3
- package/src/{body → components/body}/MRT_TableBody.tsx +6 -28
- package/src/{body → components/body}/MRT_TableBodyCell.tsx +6 -23
- package/src/{body → components/body}/MRT_TableBodyCellValue.tsx +2 -2
- package/src/{body → components/body}/MRT_TableBodyRow.tsx +7 -5
- package/src/{body → components/body}/MRT_TableBodyRowGrabHandle.tsx +3 -3
- package/src/{body → components/body}/MRT_TableBodyRowPinButton.tsx +3 -3
- package/src/{body → components/body}/MRT_TableDetailPanel.tsx +6 -6
- package/src/{buttons → components/buttons}/MRT_ColumnPinningButtons.tsx +2 -2
- package/src/{buttons → components/buttons}/MRT_CopyButton.tsx +4 -5
- package/src/{buttons → components/buttons}/MRT_EditActionButtons.tsx +2 -2
- package/src/{buttons → components/buttons}/MRT_ExpandAllButton.tsx +4 -4
- package/src/{buttons → components/buttons}/MRT_ExpandButton.tsx +10 -4
- package/src/{buttons → components/buttons}/MRT_GrabHandleButton.tsx +4 -5
- package/src/{buttons → components/buttons}/MRT_RowPinButton.tsx +4 -4
- package/src/{buttons → components/buttons}/MRT_ShowHideColumnsButton.tsx +1 -1
- package/src/{buttons → components/buttons}/MRT_ToggleDensePaddingButton.tsx +1 -1
- package/src/{buttons → components/buttons}/MRT_ToggleFiltersButton.tsx +1 -1
- package/src/{buttons → components/buttons}/MRT_ToggleFullScreenButton.tsx +1 -1
- package/src/{buttons → components/buttons}/MRT_ToggleGlobalFilterButton.tsx +1 -1
- package/src/{buttons → components/buttons}/MRT_ToggleRowActionMenuButton.tsx +9 -9
- package/src/{footer → components/footer}/MRT_TableFooter.tsx +2 -2
- package/src/{footer → components/footer}/MRT_TableFooterCell.tsx +3 -3
- package/src/{footer → components/footer}/MRT_TableFooterRow.tsx +3 -3
- package/src/{head → components/head}/MRT_TableHead.tsx +3 -3
- package/src/{head → components/head}/MRT_TableHeadCell.tsx +3 -3
- package/src/{head → components/head}/MRT_TableHeadCellColumnActionsButton.tsx +5 -6
- package/src/{head → components/head}/MRT_TableHeadCellFilterContainer.tsx +5 -5
- package/src/{head → components/head}/MRT_TableHeadCellFilterLabel.tsx +2 -2
- package/src/{head → components/head}/MRT_TableHeadCellGrabHandle.tsx +4 -3
- package/src/{head → components/head}/MRT_TableHeadCellResizeHandle.tsx +2 -2
- package/src/{head → components/head}/MRT_TableHeadCellSortLabel.tsx +2 -2
- package/src/{head → components/head}/MRT_TableHeadRow.tsx +3 -3
- package/src/{inputs → components/inputs}/MRT_EditCellTextField.tsx +12 -4
- package/src/{inputs → components/inputs}/MRT_FilterCheckbox.tsx +4 -4
- package/src/{inputs → components/inputs}/MRT_FilterRangeFields.tsx +2 -2
- package/src/{inputs → components/inputs}/MRT_FilterRangeSlider.tsx +2 -2
- package/src/{inputs → components/inputs}/MRT_FilterTextField.tsx +3 -3
- package/src/{inputs → components/inputs}/MRT_GlobalFilterTextField.tsx +2 -2
- package/src/{inputs → components/inputs}/MRT_SelectCheckbox.tsx +4 -4
- package/src/{menus → components/menus}/MRT_ColumnActionMenu.tsx +9 -1
- package/src/{menus → components/menus}/MRT_FilterOptionMenu.tsx +9 -1
- package/src/{menus → components/menus}/MRT_RowActionMenu.tsx +13 -2
- package/src/{menus → components/menus}/MRT_ShowHideColumnsMenu.tsx +11 -5
- package/src/{menus → components/menus}/MRT_ShowHideColumnsMenuItems.tsx +7 -7
- package/src/{modals → components/modals}/MRT_EditRowModal.tsx +4 -4
- package/src/{table → components/table}/MRT_Table.tsx +4 -4
- package/src/{table → components/table}/MRT_TableContainer.tsx +3 -3
- package/src/{table → components/table}/MRT_TableLoadingOverlay.tsx +3 -3
- package/src/{table → components/table}/MRT_TablePaper.tsx +3 -3
- package/src/{toolbar → components/toolbar}/MRT_BottomToolbar.tsx +3 -3
- package/src/{toolbar → components/toolbar}/MRT_LinearProgressBar.tsx +2 -2
- package/src/{toolbar → components/toolbar}/MRT_TablePagination.tsx +9 -7
- package/src/{toolbar → components/toolbar}/MRT_ToolbarAlertBanner.tsx +3 -3
- package/src/{toolbar → components/toolbar}/MRT_ToolbarDropZone.tsx +2 -2
- package/src/{toolbar → components/toolbar}/MRT_ToolbarInternalButtons.tsx +2 -2
- package/src/{toolbar → components/toolbar}/MRT_TopToolbar.tsx +3 -3
- package/src/{filterFns.ts → fns/filterFns.ts} +1 -1
- package/src/{sortingFns.ts → fns/sortingFns.ts} +1 -1
- package/src/hooks/display-columns/getMRT_DisplayColumns.tsx +26 -0
- package/src/hooks/display-columns/getMRT_RowActionsColumnDef.tsx +34 -0
- package/src/hooks/display-columns/getMRT_RowDragColumnDef.tsx +35 -0
- package/src/hooks/display-columns/getMRT_RowExpandColumnDef.tsx +96 -0
- package/src/hooks/display-columns/getMRT_RowNumbersColumnDef.tsx +36 -0
- package/src/hooks/display-columns/getMRT_RowPinningColumnDef.tsx +30 -0
- package/src/hooks/display-columns/getMRT_RowSelectColumnDef.tsx +40 -0
- package/src/hooks/display-columns/getMRT_RowSpacerColumnDef.tsx +40 -0
- package/src/hooks/useMRT_ColumnVirtualizer.ts +2 -4
- package/src/hooks/useMRT_Effects.ts +7 -6
- package/src/hooks/useMRT_RowVirtualizer.ts +2 -4
- package/src/hooks/useMRT_Rows.ts +32 -6
- package/src/hooks/useMRT_TableInstance.ts +91 -87
- package/src/hooks/useMRT_TableOptions.ts +5 -3
- package/src/{useMaterialReactTable.ts → hooks/useMaterialReactTable.ts} +3 -3
- package/src/icons.ts +4 -38
- package/src/index.ts +88 -17
- package/src/types.ts +59 -26
- package/src/utils/column.utils.ts +173 -0
- package/src/utils/displayColumn.utils.ts +134 -0
- package/src/utils/row.utils.ts +26 -0
- package/src/{style.utils.ts → utils/style.utils.ts} +50 -28
- package/src/utils/tanstack.helpers.ts +64 -0
- package/src/utils/utils.ts +23 -0
- package/src/utils/virtualization.utils.ts +19 -0
- package/src/utils.ts +0 -0
- package/src/body/index.ts +0 -7
- package/src/buttons/index.ts +0 -13
- package/src/column.utils.ts +0 -368
- package/src/footer/index.ts +0 -3
- package/src/head/index.ts +0 -9
- package/src/hooks/index.ts +0 -7
- package/src/hooks/useMRT_DisplayColumns.tsx +0 -299
- package/src/inputs/index.ts +0 -7
- package/src/menus/index.ts +0 -5
- package/src/modals/index.ts +0 -1
- package/src/table/index.ts +0 -5
- package/src/toolbar/index.ts +0 -7
- /package/src/{aggregationFns.ts → fns/aggregationFns.ts} +0 -0
@@ -0,0 +1,23 @@
|
|
1
|
+
import { type DropdownOption } from '../types';
|
2
|
+
|
3
|
+
export const parseFromValuesOrFunc = <T, U>(
|
4
|
+
fn: ((arg: U) => T) | T | undefined,
|
5
|
+
arg: U,
|
6
|
+
): T | undefined => (fn instanceof Function ? fn(arg) : fn);
|
7
|
+
|
8
|
+
export const getValueAndLabel = (
|
9
|
+
option: DropdownOption,
|
10
|
+
): { label: string; value: string } => {
|
11
|
+
let label: string = '';
|
12
|
+
let value: string = '';
|
13
|
+
if (option) {
|
14
|
+
if (typeof option !== 'object') {
|
15
|
+
label = option;
|
16
|
+
value = option;
|
17
|
+
} else {
|
18
|
+
label = option.label ?? option.text ?? option.value;
|
19
|
+
value = option.value ?? label;
|
20
|
+
}
|
21
|
+
}
|
22
|
+
return { label, value };
|
23
|
+
};
|
@@ -0,0 +1,19 @@
|
|
1
|
+
import { type Range, defaultRangeExtractor } from '@tanstack/react-virtual';
|
2
|
+
|
3
|
+
export const extraIndexRangeExtractor = (
|
4
|
+
range: Range,
|
5
|
+
draggingIndex?: number,
|
6
|
+
) => {
|
7
|
+
const newIndexes = defaultRangeExtractor(range);
|
8
|
+
if (draggingIndex === undefined) return newIndexes;
|
9
|
+
if (
|
10
|
+
draggingIndex >= 0 &&
|
11
|
+
draggingIndex < Math.max(range.startIndex - range.overscan, 0)
|
12
|
+
) {
|
13
|
+
newIndexes.unshift(draggingIndex);
|
14
|
+
}
|
15
|
+
if (draggingIndex >= 0 && draggingIndex > range.endIndex + range.overscan) {
|
16
|
+
newIndexes.push(draggingIndex);
|
17
|
+
}
|
18
|
+
return newIndexes;
|
19
|
+
};
|
package/src/utils.ts
ADDED
File without changes
|
package/src/body/index.ts
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
export * from './MRT_TableBody';
|
2
|
-
export * from './MRT_TableBodyCell';
|
3
|
-
export * from './MRT_TableBodyCellValue';
|
4
|
-
export * from './MRT_TableBodyRow';
|
5
|
-
export * from './MRT_TableBodyRowGrabHandle';
|
6
|
-
export * from './MRT_TableBodyRowPinButton';
|
7
|
-
export * from './MRT_TableDetailPanel';
|
package/src/buttons/index.ts
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
export * from './MRT_ColumnPinningButtons';
|
2
|
-
export * from './MRT_CopyButton';
|
3
|
-
export * from './MRT_EditActionButtons';
|
4
|
-
export * from './MRT_ExpandAllButton';
|
5
|
-
export * from './MRT_ExpandButton';
|
6
|
-
export * from './MRT_GrabHandleButton';
|
7
|
-
export * from './MRT_RowPinButton';
|
8
|
-
export * from './MRT_ShowHideColumnsButton';
|
9
|
-
export * from './MRT_ToggleDensePaddingButton';
|
10
|
-
export * from './MRT_ToggleFiltersButton';
|
11
|
-
export * from './MRT_ToggleFullScreenButton';
|
12
|
-
export * from './MRT_ToggleGlobalFilterButton';
|
13
|
-
export * from './MRT_ToggleRowActionMenuButton';
|
package/src/column.utils.ts
DELETED
@@ -1,368 +0,0 @@
|
|
1
|
-
import { type ReactNode } from 'react';
|
2
|
-
import {
|
3
|
-
createRow as _createRow,
|
4
|
-
flexRender as _flexRender,
|
5
|
-
type Renderable,
|
6
|
-
type Row,
|
7
|
-
} from '@tanstack/react-table';
|
8
|
-
import { type Range, defaultRangeExtractor } from '@tanstack/react-virtual';
|
9
|
-
import { type MRT_AggregationFns } from './aggregationFns';
|
10
|
-
import { type MRT_FilterFns } from './filterFns';
|
11
|
-
import { type MRT_SortingFns } from './sortingFns';
|
12
|
-
import {
|
13
|
-
type MRT_Column,
|
14
|
-
type MRT_ColumnDef,
|
15
|
-
type MRT_ColumnHelper,
|
16
|
-
type MRT_ColumnOrderState,
|
17
|
-
type MRT_DefinedColumnDef,
|
18
|
-
type MRT_DisplayColumnDef,
|
19
|
-
type MRT_DisplayColumnIds,
|
20
|
-
type MRT_FilterOption,
|
21
|
-
type MRT_GroupColumnDef,
|
22
|
-
type MRT_GroupingState,
|
23
|
-
type MRT_Row,
|
24
|
-
type MRT_RowData,
|
25
|
-
type MRT_TableInstance,
|
26
|
-
type MRT_TableOptions,
|
27
|
-
} from './types';
|
28
|
-
|
29
|
-
export const getColumnId = <TData extends MRT_RowData>(
|
30
|
-
columnDef: MRT_ColumnDef<TData>,
|
31
|
-
): string =>
|
32
|
-
columnDef.id ?? columnDef.accessorKey?.toString?.() ?? columnDef.header;
|
33
|
-
|
34
|
-
export const getAllLeafColumnDefs = <TData extends MRT_RowData>(
|
35
|
-
columns: MRT_ColumnDef<TData>[],
|
36
|
-
): MRT_ColumnDef<TData>[] => {
|
37
|
-
const allLeafColumnDefs: MRT_ColumnDef<TData>[] = [];
|
38
|
-
const getLeafColumns = (cols: MRT_ColumnDef<TData>[]) => {
|
39
|
-
cols.forEach((col) => {
|
40
|
-
if (col.columns) {
|
41
|
-
getLeafColumns(col.columns);
|
42
|
-
} else {
|
43
|
-
allLeafColumnDefs.push(col);
|
44
|
-
}
|
45
|
-
});
|
46
|
-
};
|
47
|
-
getLeafColumns(columns);
|
48
|
-
return allLeafColumnDefs;
|
49
|
-
};
|
50
|
-
|
51
|
-
export const prepareColumns = <TData extends MRT_RowData>({
|
52
|
-
aggregationFns,
|
53
|
-
columnDefs,
|
54
|
-
columnFilterFns,
|
55
|
-
defaultDisplayColumn,
|
56
|
-
filterFns,
|
57
|
-
sortingFns,
|
58
|
-
}: {
|
59
|
-
aggregationFns: typeof MRT_AggregationFns &
|
60
|
-
MRT_TableOptions<TData>['aggregationFns'];
|
61
|
-
columnDefs: MRT_ColumnDef<TData>[];
|
62
|
-
columnFilterFns: { [key: string]: MRT_FilterOption };
|
63
|
-
defaultDisplayColumn: Partial<MRT_ColumnDef<TData>>;
|
64
|
-
filterFns: typeof MRT_FilterFns & MRT_TableOptions<TData>['filterFns'];
|
65
|
-
sortingFns: typeof MRT_SortingFns & MRT_TableOptions<TData>['sortingFns'];
|
66
|
-
}): MRT_DefinedColumnDef<TData>[] =>
|
67
|
-
columnDefs.map((columnDef) => {
|
68
|
-
//assign columnId
|
69
|
-
if (!columnDef.id) columnDef.id = getColumnId(columnDef);
|
70
|
-
if (process.env.NODE_ENV !== 'production' && !columnDef.id) {
|
71
|
-
console.error(
|
72
|
-
'Column definitions must have a valid `accessorKey` or `id` property',
|
73
|
-
);
|
74
|
-
}
|
75
|
-
|
76
|
-
//assign columnDefType
|
77
|
-
if (!columnDef.columnDefType) columnDef.columnDefType = 'data';
|
78
|
-
if (columnDef.columns?.length) {
|
79
|
-
columnDef.columnDefType = 'group';
|
80
|
-
//recursively prepare columns if this is a group column
|
81
|
-
columnDef.columns = prepareColumns({
|
82
|
-
aggregationFns,
|
83
|
-
columnDefs: columnDef.columns,
|
84
|
-
columnFilterFns,
|
85
|
-
defaultDisplayColumn,
|
86
|
-
filterFns,
|
87
|
-
sortingFns,
|
88
|
-
});
|
89
|
-
} else if (columnDef.columnDefType === 'data') {
|
90
|
-
//assign aggregationFns if multiple aggregationFns are provided
|
91
|
-
if (Array.isArray(columnDef.aggregationFn)) {
|
92
|
-
const aggFns = columnDef.aggregationFn as string[];
|
93
|
-
columnDef.aggregationFn = (
|
94
|
-
columnId: string,
|
95
|
-
leafRows: Row<TData>[],
|
96
|
-
childRows: Row<TData>[],
|
97
|
-
) =>
|
98
|
-
aggFns.map(
|
99
|
-
(fn) => aggregationFns[fn]?.(columnId, leafRows, childRows),
|
100
|
-
);
|
101
|
-
}
|
102
|
-
|
103
|
-
//assign filterFns
|
104
|
-
if (Object.keys(filterFns).includes(columnFilterFns[columnDef.id])) {
|
105
|
-
columnDef.filterFn =
|
106
|
-
filterFns[columnFilterFns[columnDef.id]] ?? filterFns.fuzzy;
|
107
|
-
(columnDef as MRT_DefinedColumnDef<TData>)._filterFn =
|
108
|
-
columnFilterFns[columnDef.id];
|
109
|
-
}
|
110
|
-
|
111
|
-
//assign sortingFns
|
112
|
-
if (Object.keys(sortingFns).includes(columnDef.sortingFn as string)) {
|
113
|
-
// @ts-ignore
|
114
|
-
columnDef.sortingFn = sortingFns[columnDef.sortingFn];
|
115
|
-
}
|
116
|
-
} else if (columnDef.columnDefType === 'display') {
|
117
|
-
columnDef = {
|
118
|
-
...(defaultDisplayColumn as MRT_ColumnDef<TData>),
|
119
|
-
...columnDef,
|
120
|
-
};
|
121
|
-
}
|
122
|
-
return columnDef;
|
123
|
-
}) as MRT_DefinedColumnDef<TData>[];
|
124
|
-
|
125
|
-
export const reorderColumn = <TData extends MRT_RowData>(
|
126
|
-
draggedColumn: MRT_Column<TData>,
|
127
|
-
targetColumn: MRT_Column<TData>,
|
128
|
-
columnOrder: MRT_ColumnOrderState,
|
129
|
-
): MRT_ColumnOrderState => {
|
130
|
-
if (draggedColumn.getCanPin()) {
|
131
|
-
draggedColumn.pin(targetColumn.getIsPinned());
|
132
|
-
}
|
133
|
-
const newColumnOrder = [...columnOrder];
|
134
|
-
newColumnOrder.splice(
|
135
|
-
newColumnOrder.indexOf(targetColumn.id),
|
136
|
-
0,
|
137
|
-
newColumnOrder.splice(newColumnOrder.indexOf(draggedColumn.id), 1)[0],
|
138
|
-
);
|
139
|
-
return newColumnOrder;
|
140
|
-
};
|
141
|
-
|
142
|
-
export const showExpandColumn = <TData extends MRT_RowData>(
|
143
|
-
props: MRT_TableOptions<TData>,
|
144
|
-
grouping?: MRT_GroupingState,
|
145
|
-
) =>
|
146
|
-
!!(
|
147
|
-
props.enableExpanding ||
|
148
|
-
(props.enableGrouping && (grouping === undefined || grouping?.length)) ||
|
149
|
-
props.renderDetailPanel
|
150
|
-
);
|
151
|
-
|
152
|
-
export const getLeadingDisplayColumnIds = <TData extends MRT_RowData>(
|
153
|
-
props: MRT_TableOptions<TData>,
|
154
|
-
) =>
|
155
|
-
[
|
156
|
-
props.enableRowPinning &&
|
157
|
-
!props.rowPinningDisplayMode?.startsWith('select') &&
|
158
|
-
'mrt-row-pin',
|
159
|
-
(props.enableRowDragging || props.enableRowOrdering) && 'mrt-row-drag',
|
160
|
-
props.positionActionsColumn === 'first' &&
|
161
|
-
(props.enableRowActions ||
|
162
|
-
(props.enableEditing &&
|
163
|
-
['modal', 'row'].includes(props.editDisplayMode ?? ''))) &&
|
164
|
-
'mrt-row-actions',
|
165
|
-
props.positionExpandColumn === 'first' &&
|
166
|
-
showExpandColumn(props) &&
|
167
|
-
'mrt-row-expand',
|
168
|
-
props.enableRowSelection && 'mrt-row-select',
|
169
|
-
props.enableRowNumbers && 'mrt-row-numbers',
|
170
|
-
].filter(Boolean) as MRT_DisplayColumnIds[];
|
171
|
-
|
172
|
-
export const getTrailingDisplayColumnIds = <TData extends MRT_RowData>(
|
173
|
-
props: MRT_TableOptions<TData>,
|
174
|
-
) =>
|
175
|
-
[
|
176
|
-
props.positionActionsColumn === 'last' &&
|
177
|
-
(props.enableRowActions ||
|
178
|
-
(props.enableEditing &&
|
179
|
-
['modal', 'row'].includes(props.editDisplayMode ?? ''))) &&
|
180
|
-
'mrt-row-actions',
|
181
|
-
props.positionExpandColumn === 'last' &&
|
182
|
-
showExpandColumn(props) &&
|
183
|
-
'mrt-row-expand',
|
184
|
-
props.layoutMode === 'grid-no-grow' && 'mrt-row-spacer',
|
185
|
-
].filter(Boolean) as MRT_DisplayColumnIds[];
|
186
|
-
|
187
|
-
export const getDefaultColumnOrderIds = <TData extends MRT_RowData>(
|
188
|
-
props: MRT_TableOptions<TData>,
|
189
|
-
) => {
|
190
|
-
const leadingDisplayCols: string[] = getLeadingDisplayColumnIds(props);
|
191
|
-
const trailingDisplayCols: string[] = getTrailingDisplayColumnIds(props);
|
192
|
-
const allLeafColumnDefs = getAllLeafColumnDefs(props.columns)
|
193
|
-
.map((columnDef) => getColumnId(columnDef))
|
194
|
-
.filter(
|
195
|
-
(columnId) =>
|
196
|
-
!leadingDisplayCols.includes(columnId) &&
|
197
|
-
!trailingDisplayCols.includes(columnId),
|
198
|
-
);
|
199
|
-
return [...leadingDisplayCols, ...allLeafColumnDefs, ...trailingDisplayCols];
|
200
|
-
};
|
201
|
-
|
202
|
-
export const getDefaultColumnFilterFn = <TData extends MRT_RowData>(
|
203
|
-
columnDef: MRT_ColumnDef<TData>,
|
204
|
-
): MRT_FilterOption => {
|
205
|
-
if (columnDef.filterVariant === 'multi-select') return 'arrIncludesSome';
|
206
|
-
if (columnDef.filterVariant?.includes('range')) return 'betweenInclusive';
|
207
|
-
if (
|
208
|
-
columnDef.filterVariant === 'select' ||
|
209
|
-
columnDef.filterVariant === 'checkbox'
|
210
|
-
)
|
211
|
-
return 'equals';
|
212
|
-
return 'fuzzy';
|
213
|
-
};
|
214
|
-
|
215
|
-
export const getIsFirstColumn = <TData extends MRT_RowData>(
|
216
|
-
column: MRT_Column<TData>,
|
217
|
-
table: MRT_TableInstance<TData>,
|
218
|
-
) => {
|
219
|
-
const leftColumns = table.getLeftVisibleLeafColumns();
|
220
|
-
return leftColumns.length
|
221
|
-
? leftColumns[0].id === column.id
|
222
|
-
: table.getVisibleLeafColumns()[0].id === column.id;
|
223
|
-
};
|
224
|
-
|
225
|
-
export const getIsLastColumn = <TData extends MRT_RowData>(
|
226
|
-
column: MRT_Column<TData>,
|
227
|
-
table: MRT_TableInstance<TData>,
|
228
|
-
) => {
|
229
|
-
const rightColumns = table.getRightVisibleLeafColumns();
|
230
|
-
const columns = table.getVisibleLeafColumns();
|
231
|
-
return rightColumns.length
|
232
|
-
? rightColumns[rightColumns.length - 1].id === column.id
|
233
|
-
: columns[columns.length - 1].id === column.id;
|
234
|
-
};
|
235
|
-
|
236
|
-
export const getIsLastLeftPinnedColumn = <TData extends MRT_RowData>(
|
237
|
-
table: MRT_TableInstance<TData>,
|
238
|
-
column: MRT_Column<TData>,
|
239
|
-
) => {
|
240
|
-
return (
|
241
|
-
column.getIsPinned() === 'left' &&
|
242
|
-
table.getLeftLeafHeaders().length - 1 === column.getPinnedIndex()
|
243
|
-
);
|
244
|
-
};
|
245
|
-
|
246
|
-
export const getIsFirstRightPinnedColumn = <TData extends MRT_RowData>(
|
247
|
-
column: MRT_Column<TData>,
|
248
|
-
) => {
|
249
|
-
return column.getIsPinned() === 'right' && column.getPinnedIndex() === 0;
|
250
|
-
};
|
251
|
-
|
252
|
-
export const getTotalRight = <TData extends MRT_RowData>(
|
253
|
-
table: MRT_TableInstance<TData>,
|
254
|
-
column: MRT_Column<TData>,
|
255
|
-
) => {
|
256
|
-
return table
|
257
|
-
.getRightLeafHeaders()
|
258
|
-
.slice(column.getPinnedIndex() + 1)
|
259
|
-
.reduce((acc, col) => acc + col.getSize(), 0);
|
260
|
-
};
|
261
|
-
|
262
|
-
export const getCanRankRows = <TData extends MRT_RowData>(
|
263
|
-
table: MRT_TableInstance<TData>,
|
264
|
-
) => {
|
265
|
-
const { getState, options } = table;
|
266
|
-
const {
|
267
|
-
enableGlobalFilterRankedResults,
|
268
|
-
manualExpanding,
|
269
|
-
manualFiltering,
|
270
|
-
manualGrouping,
|
271
|
-
manualSorting,
|
272
|
-
} = options;
|
273
|
-
const { expanded, globalFilterFn } = getState();
|
274
|
-
|
275
|
-
return (
|
276
|
-
!manualExpanding &&
|
277
|
-
!manualFiltering &&
|
278
|
-
!manualGrouping &&
|
279
|
-
!manualSorting &&
|
280
|
-
enableGlobalFilterRankedResults &&
|
281
|
-
globalFilterFn === 'fuzzy' &&
|
282
|
-
expanded !== true &&
|
283
|
-
!Object.values(expanded).some(Boolean)
|
284
|
-
);
|
285
|
-
};
|
286
|
-
|
287
|
-
export const parseFromValuesOrFunc = <T, U>(
|
288
|
-
fn: ((arg: U) => T) | T | undefined,
|
289
|
-
arg: U,
|
290
|
-
): T | undefined => (fn instanceof Function ? fn(arg) : fn);
|
291
|
-
|
292
|
-
export const flexRender = _flexRender as (
|
293
|
-
Comp: Renderable<any>,
|
294
|
-
props: any,
|
295
|
-
) => JSX.Element | ReactNode;
|
296
|
-
|
297
|
-
export const createRow = <TData extends MRT_RowData>(
|
298
|
-
table: MRT_TableInstance<TData>,
|
299
|
-
originalRow?: TData,
|
300
|
-
): MRT_Row<TData> =>
|
301
|
-
_createRow(
|
302
|
-
table as any,
|
303
|
-
'mrt-row-create',
|
304
|
-
originalRow ??
|
305
|
-
Object.assign(
|
306
|
-
{},
|
307
|
-
...getAllLeafColumnDefs(table.options.columns).map((col) => ({
|
308
|
-
[getColumnId(col)]: '',
|
309
|
-
})),
|
310
|
-
),
|
311
|
-
-1,
|
312
|
-
0,
|
313
|
-
) as MRT_Row<TData>;
|
314
|
-
|
315
|
-
export const extraIndexRangeExtractor = (
|
316
|
-
range: Range,
|
317
|
-
draggingIndex?: number,
|
318
|
-
) => {
|
319
|
-
const newIndexes = defaultRangeExtractor(range);
|
320
|
-
if (draggingIndex === undefined) return newIndexes;
|
321
|
-
if (
|
322
|
-
draggingIndex >= 0 &&
|
323
|
-
draggingIndex < Math.max(range.startIndex - range.overscan, 0)
|
324
|
-
) {
|
325
|
-
newIndexes.unshift(draggingIndex);
|
326
|
-
}
|
327
|
-
if (draggingIndex >= 0 && draggingIndex > range.endIndex + range.overscan) {
|
328
|
-
newIndexes.push(draggingIndex);
|
329
|
-
}
|
330
|
-
return newIndexes;
|
331
|
-
};
|
332
|
-
|
333
|
-
export function createMRTColumnHelper<
|
334
|
-
TData extends MRT_RowData,
|
335
|
-
>(): MRT_ColumnHelper<TData> {
|
336
|
-
return {
|
337
|
-
accessor: (accessor, column) => {
|
338
|
-
return typeof accessor === 'function'
|
339
|
-
? ({
|
340
|
-
...column,
|
341
|
-
accessorFn: accessor,
|
342
|
-
} as any)
|
343
|
-
: {
|
344
|
-
...column,
|
345
|
-
accessorKey: accessor,
|
346
|
-
};
|
347
|
-
},
|
348
|
-
display: (column) => column as MRT_DisplayColumnDef<TData>,
|
349
|
-
group: (column) => column as MRT_GroupColumnDef<TData>,
|
350
|
-
};
|
351
|
-
}
|
352
|
-
|
353
|
-
export const getValueAndLabel = (
|
354
|
-
option: { label?: string; text?: string; value: string } | string,
|
355
|
-
): { label: string; value: string } => {
|
356
|
-
let label: string = '';
|
357
|
-
let value: string = '';
|
358
|
-
if (option) {
|
359
|
-
if (typeof option !== 'object') {
|
360
|
-
label = option;
|
361
|
-
value = option;
|
362
|
-
} else {
|
363
|
-
label = option.label ?? option.text ?? option.value;
|
364
|
-
value = option.value ?? label;
|
365
|
-
}
|
366
|
-
}
|
367
|
-
return { label, value };
|
368
|
-
};
|
package/src/footer/index.ts
DELETED
package/src/head/index.ts
DELETED
@@ -1,9 +0,0 @@
|
|
1
|
-
export * from './MRT_TableHead';
|
2
|
-
export * from './MRT_TableHeadCell';
|
3
|
-
export * from './MRT_TableHeadCellColumnActionsButton';
|
4
|
-
export * from './MRT_TableHeadCellFilterContainer';
|
5
|
-
export * from './MRT_TableHeadCellFilterLabel';
|
6
|
-
export * from './MRT_TableHeadCellGrabHandle';
|
7
|
-
export * from './MRT_TableHeadCellResizeHandle';
|
8
|
-
export * from './MRT_TableHeadCellSortLabel';
|
9
|
-
export * from './MRT_TableHeadRow';
|
package/src/hooks/index.ts
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
export * from './useMRT_ColumnVirtualizer';
|
2
|
-
export * from './useMRT_DisplayColumns';
|
3
|
-
export * from './useMRT_Effects';
|
4
|
-
export * from './useMRT_RowVirtualizer';
|
5
|
-
export * from './useMRT_Rows';
|
6
|
-
export * from './useMRT_TableInstance';
|
7
|
-
export * from './useMRT_TableOptions';
|