material-react-table 3.0.3 → 3.2.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 +23 -73
- package/dist/index.esm.js +130 -107
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +130 -107
- package/dist/index.js.map +1 -1
- package/locales/ar/index.esm.js +1 -0
- package/locales/ar/index.js +1 -0
- package/locales/az/index.esm.js +1 -0
- package/locales/az/index.js +1 -0
- package/locales/bg/index.esm.js +1 -0
- package/locales/bg/index.js +1 -0
- package/locales/cs/index.esm.js +1 -0
- package/locales/cs/index.js +1 -0
- package/locales/da/index.esm.js +1 -0
- package/locales/da/index.js +1 -0
- package/locales/de/index.esm.js +1 -0
- package/locales/de/index.js +1 -0
- package/locales/el/index.esm.js +1 -0
- package/locales/el/index.js +1 -0
- package/locales/en/index.esm.js +1 -0
- package/locales/en/index.js +1 -0
- package/locales/es/index.esm.js +1 -0
- package/locales/es/index.js +1 -0
- package/locales/et/index.esm.js +1 -0
- package/locales/et/index.js +1 -0
- package/locales/fa/index.esm.js +1 -0
- package/locales/fa/index.js +1 -0
- package/locales/fi/index.esm.js +1 -0
- package/locales/fi/index.js +1 -0
- package/locales/fr/index.esm.js +1 -0
- package/locales/fr/index.js +1 -0
- package/locales/he/index.esm.js +1 -0
- package/locales/he/index.js +1 -0
- package/locales/hr/index.esm.js +1 -0
- package/locales/hr/index.js +1 -0
- package/locales/hu/index.esm.js +1 -0
- package/locales/hu/index.js +1 -0
- package/locales/hy/index.esm.js +1 -0
- package/locales/hy/index.js +1 -0
- package/locales/id/index.esm.js +1 -0
- package/locales/id/index.js +1 -0
- package/locales/it/index.esm.js +1 -0
- package/locales/it/index.js +1 -0
- package/locales/ja/index.esm.js +1 -0
- package/locales/ja/index.js +1 -0
- package/locales/ko/index.esm.js +1 -0
- package/locales/ko/index.js +1 -0
- package/locales/nl/index.esm.js +1 -0
- package/locales/nl/index.js +1 -0
- package/locales/no/index.esm.js +1 -0
- package/locales/no/index.js +1 -0
- package/locales/np/index.esm.js +1 -0
- package/locales/np/index.js +1 -0
- package/locales/pl/index.esm.js +1 -0
- package/locales/pl/index.js +1 -0
- package/locales/pt/index.esm.js +1 -0
- package/locales/pt/index.js +1 -0
- package/locales/pt-BR/index.esm.js +1 -0
- package/locales/pt-BR/index.js +1 -0
- package/locales/ro/index.esm.js +1 -0
- package/locales/ro/index.js +1 -0
- package/locales/ru/index.esm.js +1 -0
- package/locales/ru/index.js +1 -0
- package/locales/sk/index.esm.js +1 -0
- package/locales/sk/index.js +1 -0
- package/locales/sr-Cyrl-RS/index.esm.js +1 -0
- package/locales/sr-Cyrl-RS/index.js +1 -0
- package/locales/sr-Latn-RS/index.esm.js +1 -0
- package/locales/sr-Latn-RS/index.js +1 -0
- package/locales/sv/index.esm.js +1 -0
- package/locales/sv/index.js +1 -0
- package/locales/tr/index.esm.js +1 -0
- package/locales/tr/index.js +1 -0
- package/locales/uk/index.esm.js +1 -0
- package/locales/uk/index.js +1 -0
- package/locales/vi/index.esm.js +1 -0
- package/locales/vi/index.js +1 -0
- package/locales/zh-Hans/index.esm.js +1 -0
- package/locales/zh-Hans/index.js +1 -0
- package/locales/zh-Hant/index.esm.js +1 -0
- package/locales/zh-Hant/index.js +1 -0
- package/package.json +31 -32
- package/src/components/body/MRT_TableBodyCell.tsx +2 -2
- package/src/components/body/MRT_TableBodyCellValue.tsx +1 -1
- package/src/components/body/MRT_TableBodyRow.tsx +1 -1
- package/src/components/body/MRT_TableBodyRowGrabHandle.tsx +1 -1
- package/src/components/body/MRT_TableDetailPanel.tsx +1 -1
- package/src/components/buttons/MRT_EditActionButtons.tsx +2 -2
- package/src/components/footer/MRT_TableFooter.tsx +1 -1
- package/src/components/head/MRT_TableHead.tsx +1 -1
- package/src/components/head/MRT_TableHeadCell.tsx +2 -2
- package/src/components/head/MRT_TableHeadCellFilterLabel.tsx +8 -10
- package/src/components/head/MRT_TableHeadCellGrabHandle.tsx +1 -1
- package/src/components/inputs/MRT_EditCellTextField.tsx +5 -3
- package/src/components/inputs/MRT_FilterRangeSlider.tsx +12 -5
- package/src/components/inputs/MRT_FilterTextField.tsx +106 -70
- package/src/components/menus/MRT_ColumnActionMenu.tsx +3 -2
- package/src/components/menus/MRT_ShowHideColumnsMenu.tsx +12 -0
- package/src/components/table/MRT_TableContainer.tsx +1 -1
- package/src/components/table/MRT_TablePaper.tsx +1 -1
- package/src/components/toolbar/MRT_BottomToolbar.tsx +1 -1
- package/src/components/toolbar/MRT_TablePagination.tsx +5 -3
- package/src/components/toolbar/MRT_ToolbarAlertBanner.tsx +4 -4
- package/src/components/toolbar/MRT_TopToolbar.tsx +1 -1
- package/src/hooks/display-columns/getMRT_RowDragColumnDef.tsx +1 -1
- package/src/hooks/useMRT_ColumnVirtualizer.ts +1 -1
- package/src/hooks/useMRT_Effects.ts +3 -3
- package/src/hooks/useMRT_RowVirtualizer.ts +17 -5
- package/src/hooks/useMRT_TableInstance.ts +1 -1
- package/src/locales/ar.ts +1 -0
- package/src/locales/az.ts +1 -0
- package/src/locales/bg.ts +1 -0
- package/src/locales/cs.ts +1 -0
- package/src/locales/da.ts +1 -0
- package/src/locales/de.ts +1 -0
- package/src/locales/el.ts +1 -0
- package/src/locales/en.ts +1 -0
- package/src/locales/es.ts +1 -0
- package/src/locales/et.ts +1 -0
- package/src/locales/fa.ts +1 -0
- package/src/locales/fi.ts +1 -0
- package/src/locales/fr.ts +1 -0
- package/src/locales/he.ts +1 -0
- package/src/locales/hr.ts +1 -0
- package/src/locales/hu.ts +1 -0
- package/src/locales/hy.ts +1 -0
- package/src/locales/id.ts +1 -0
- package/src/locales/it.ts +1 -0
- package/src/locales/ja.ts +1 -0
- package/src/locales/ko.ts +1 -0
- package/src/locales/nl.ts +1 -0
- package/src/locales/no.ts +1 -0
- package/src/locales/np.ts +1 -0
- package/src/locales/pl.ts +1 -0
- package/src/locales/pt-BR.ts +1 -0
- package/src/locales/pt.ts +1 -0
- package/src/locales/ro.ts +1 -0
- package/src/locales/ru.ts +1 -0
- package/src/locales/sk.ts +1 -0
- package/src/locales/sr-Cyrl-RS.ts +1 -0
- package/src/locales/sr-Latn-RS.ts +1 -0
- package/src/locales/sv.ts +1 -0
- package/src/locales/tr.ts +1 -0
- package/src/locales/uk.ts +1 -0
- package/src/locales/vi.ts +1 -0
- package/src/locales/zh-Hans.ts +1 -0
- package/src/locales/zh-Hant.ts +1 -0
- package/src/types.ts +17 -67
- package/src/utils/cell.utils.ts +2 -2
- package/src/utils/column.utils.ts +1 -1
- package/src/utils/tanstack.helpers.ts +1 -1
- package/src/utils/virtualization.utils.ts +5 -0
@@ -35,6 +35,7 @@ export const MRT_ShowHideColumnsMenu = <TData extends MRT_RowData>({
|
|
35
35
|
getLeftLeafColumns,
|
36
36
|
getRightLeafColumns,
|
37
37
|
getState,
|
38
|
+
initialState,
|
38
39
|
options: {
|
39
40
|
enableColumnOrdering,
|
40
41
|
enableColumnPinning,
|
@@ -79,6 +80,16 @@ export const MRT_ShowHideColumnsMenu = <TData extends MRT_RowData>({
|
|
79
80
|
(col) => col.columnDef.columnDefType === 'group',
|
80
81
|
);
|
81
82
|
|
83
|
+
const hasColumnOrderChanged = useMemo(
|
84
|
+
() =>
|
85
|
+
columnOrder.length !== initialState.columnOrder.length ||
|
86
|
+
!columnOrder.every(
|
87
|
+
(column, index) => column === initialState.columnOrder[index],
|
88
|
+
),
|
89
|
+
|
90
|
+
[columnOrder, initialState.columnOrder],
|
91
|
+
);
|
92
|
+
|
82
93
|
const [hoveredColumn, setHoveredColumn] = useState<MRT_Column<TData> | null>(
|
83
94
|
null,
|
84
95
|
);
|
@@ -120,6 +131,7 @@ export const MRT_ShowHideColumnsMenu = <TData extends MRT_RowData>({
|
|
120
131
|
getDefaultColumnOrderIds(table.options, true),
|
121
132
|
)
|
122
133
|
}
|
134
|
+
disabled={!hasColumnOrderChanged}
|
123
135
|
>
|
124
136
|
{localization.resetOrder}
|
125
137
|
</Button>
|
@@ -174,10 +174,12 @@ export const MRT_TablePagination = <TData extends MRT_RowData>({
|
|
174
174
|
sx={{ m: '0 4px', minWidth: '8ch' }}
|
175
175
|
variant="body2"
|
176
176
|
>{`${
|
177
|
-
lastRowIndex === 0
|
178
|
-
|
177
|
+
lastRowIndex === 0
|
178
|
+
? 0
|
179
|
+
: (firstRowIndex + 1).toLocaleString(localization.language)
|
180
|
+
}-${lastRowIndex.toLocaleString(localization.language)} ${
|
179
181
|
localization.of
|
180
|
-
} ${totalRowCount.toLocaleString()}`}</Typography>
|
182
|
+
} ${totalRowCount.toLocaleString(localization.language)}`}</Typography>
|
181
183
|
<Box gap="xs">
|
182
184
|
{showFirstButton && (
|
183
185
|
<Tooltip {...tooltipProps} title={localization.goToFirstPage}>
|
@@ -24,7 +24,7 @@ export const MRT_ToolbarAlertBanner = <TData extends MRT_RowData>({
|
|
24
24
|
}: MRT_ToolbarAlertBannerProps<TData>) => {
|
25
25
|
const {
|
26
26
|
getFilteredSelectedRowModel,
|
27
|
-
|
27
|
+
getCoreRowModel,
|
28
28
|
getState,
|
29
29
|
options: {
|
30
30
|
enableRowSelection,
|
@@ -52,7 +52,7 @@ export const MRT_ToolbarAlertBanner = <TData extends MRT_RowData>({
|
|
52
52
|
table,
|
53
53
|
});
|
54
54
|
|
55
|
-
const totalRowCount = rowCount ??
|
55
|
+
const totalRowCount = rowCount ?? getCoreRowModel().rows.length;
|
56
56
|
|
57
57
|
const selectedRowCount = useMemo(
|
58
58
|
() =>
|
@@ -65,8 +65,8 @@ export const MRT_ToolbarAlertBanner = <TData extends MRT_RowData>({
|
|
65
65
|
selectedRowCount > 0 ? (
|
66
66
|
<Stack alignItems="center" direction="row" gap="16px">
|
67
67
|
{localization.selectedCountOfRowCountRowsSelected
|
68
|
-
?.replace('{selectedCount}', selectedRowCount.toLocaleString())
|
69
|
-
?.replace('{rowCount}', totalRowCount.
|
68
|
+
?.replace('{selectedCount}', selectedRowCount.toLocaleString(localization.language))
|
69
|
+
?.replace('{rowCount}', totalRowCount.toLocaleString(localization.language))}
|
70
70
|
<Button
|
71
71
|
onClick={(event) =>
|
72
72
|
getMRT_SelectAllHandler({ table })(event, false, true)
|
@@ -14,7 +14,7 @@ export const getMRT_RowDragColumnDef = <TData extends MRT_RowData>(
|
|
14
14
|
Cell: ({ row, rowRef, table }) => (
|
15
15
|
<MRT_TableBodyRowGrabHandle
|
16
16
|
row={row}
|
17
|
-
rowRef={rowRef as RefObject<HTMLTableRowElement>}
|
17
|
+
rowRef={rowRef as RefObject<HTMLTableRowElement | null>}
|
18
18
|
table={table}
|
19
19
|
/>
|
20
20
|
),
|
@@ -31,8 +31,8 @@ export const useMRT_Effects = <TData extends MRT_RowData>(
|
|
31
31
|
const totalRowCount = rowCount ?? getPrePaginationRowModel().rows.length;
|
32
32
|
|
33
33
|
const rerender = useReducer(() => ({}), {})[1];
|
34
|
-
const initialBodyHeight = useRef<string>();
|
35
|
-
const previousTop = useRef<number>();
|
34
|
+
const initialBodyHeight = useRef<string>(null);
|
35
|
+
const previousTop = useRef<number>(null);
|
36
36
|
|
37
37
|
useEffect(() => {
|
38
38
|
if (typeof window !== 'undefined') {
|
@@ -73,7 +73,7 @@ export const useMRT_Effects = <TData extends MRT_RowData>(
|
|
73
73
|
if (firstVisibleRowIndex >= totalRowCount) {
|
74
74
|
table.setPageIndex(Math.ceil(totalRowCount / pageSize) - 1);
|
75
75
|
}
|
76
|
-
}, [totalRowCount]);
|
76
|
+
}, [totalRowCount, enablePagination, isLoading, showSkeletons]);
|
77
77
|
|
78
78
|
//turn off sort when global filter is looking for ranked results
|
79
79
|
const appliedSort = useRef<MRT_SortingState>(sorting);
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { useCallback } from 'react';
|
1
|
+
import { useCallback, useMemo } from 'react';
|
2
2
|
import { type Range, useVirtualizer } from '@tanstack/react-virtual';
|
3
3
|
import {
|
4
4
|
type MRT_Row,
|
@@ -36,7 +36,19 @@ export const useMRT_RowVirtualizer = <
|
|
36
36
|
table,
|
37
37
|
});
|
38
38
|
|
39
|
-
const
|
39
|
+
const realRows = rows ?? getRowModel().rows;
|
40
|
+
/**
|
41
|
+
* when filtering, should find the correct index in filtered rows
|
42
|
+
*/
|
43
|
+
const draggingRowIndex = useMemo(
|
44
|
+
() =>
|
45
|
+
draggingRow?.id
|
46
|
+
? realRows.findIndex((r) => r.id === draggingRow?.id)
|
47
|
+
: undefined,
|
48
|
+
[realRows, draggingRow?.id],
|
49
|
+
);
|
50
|
+
|
51
|
+
const rowCount = realRows.length;
|
40
52
|
|
41
53
|
const normalRowHeight =
|
42
54
|
density === 'compact' ? 37 : density === 'comfortable' ? 58 : 73;
|
@@ -58,9 +70,9 @@ export const useMRT_RowVirtualizer = <
|
|
58
70
|
overscan: 4,
|
59
71
|
rangeExtractor: useCallback(
|
60
72
|
(range: Range) => {
|
61
|
-
return extraIndexRangeExtractor(range,
|
73
|
+
return extraIndexRangeExtractor(range, draggingRowIndex);
|
62
74
|
},
|
63
|
-
[
|
75
|
+
[draggingRowIndex],
|
64
76
|
),
|
65
77
|
...rowVirtualizerProps,
|
66
78
|
}) as unknown as MRT_RowVirtualizer<TScrollElement, TItemElement>;
|
@@ -68,7 +80,7 @@ export const useMRT_RowVirtualizer = <
|
|
68
80
|
rowVirtualizer.virtualRows = rowVirtualizer.getVirtualItems() as any;
|
69
81
|
|
70
82
|
if (rowVirtualizerInstanceRef) {
|
71
|
-
//@ts-
|
83
|
+
//@ts-expect-error
|
72
84
|
rowVirtualizerInstanceRef.current = rowVirtualizer;
|
73
85
|
}
|
74
86
|
|
package/src/locales/ar.ts
CHANGED
package/src/locales/az.ts
CHANGED
package/src/locales/bg.ts
CHANGED
package/src/locales/cs.ts
CHANGED
package/src/locales/da.ts
CHANGED
package/src/locales/de.ts
CHANGED
package/src/locales/el.ts
CHANGED
package/src/locales/en.ts
CHANGED
package/src/locales/es.ts
CHANGED
package/src/locales/et.ts
CHANGED
package/src/locales/fa.ts
CHANGED
package/src/locales/fi.ts
CHANGED
package/src/locales/fr.ts
CHANGED
package/src/locales/he.ts
CHANGED
package/src/locales/hr.ts
CHANGED
package/src/locales/hu.ts
CHANGED
package/src/locales/hy.ts
CHANGED
package/src/locales/id.ts
CHANGED
package/src/locales/it.ts
CHANGED
package/src/locales/ja.ts
CHANGED
package/src/locales/ko.ts
CHANGED
package/src/locales/nl.ts
CHANGED
package/src/locales/no.ts
CHANGED
package/src/locales/np.ts
CHANGED
package/src/locales/pl.ts
CHANGED
package/src/locales/pt-BR.ts
CHANGED
package/src/locales/pt.ts
CHANGED
package/src/locales/ro.ts
CHANGED
package/src/locales/ru.ts
CHANGED
package/src/locales/sk.ts
CHANGED
package/src/locales/sv.ts
CHANGED
package/src/locales/tr.ts
CHANGED
package/src/locales/uk.ts
CHANGED
package/src/locales/vi.ts
CHANGED
package/src/locales/zh-Hans.ts
CHANGED