material-react-table 2.9.2 → 2.11.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/README.md +3 -2
- package/dist/index.d.ts +222 -152
- package/dist/index.esm.js +906 -769
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +910 -768
- package/dist/index.js.map +1 -1
- package/locales/ar/index.esm.js +2 -0
- package/locales/ar/index.js +2 -0
- package/locales/az/index.esm.js +2 -0
- package/locales/az/index.js +2 -0
- package/locales/bg/index.esm.js +2 -0
- package/locales/bg/index.js +2 -0
- package/locales/cs/index.esm.js +2 -0
- package/locales/cs/index.js +2 -0
- package/locales/da/index.esm.js +2 -0
- package/locales/da/index.js +2 -0
- package/locales/de/index.esm.js +2 -0
- package/locales/de/index.js +2 -0
- package/locales/en/index.esm.js +2 -0
- package/locales/en/index.js +2 -0
- package/locales/es/index.esm.js +2 -0
- package/locales/es/index.js +2 -0
- package/locales/et/index.esm.js +2 -0
- package/locales/et/index.js +2 -0
- package/locales/fa/index.esm.js +2 -0
- package/locales/fa/index.js +2 -0
- package/locales/fi/index.esm.js +2 -0
- package/locales/fi/index.js +2 -0
- package/locales/fr/index.esm.js +2 -0
- package/locales/fr/index.js +2 -0
- package/locales/he/index.esm.js +2 -0
- package/locales/he/index.js +2 -0
- package/locales/hu/index.esm.js +2 -0
- package/locales/hu/index.js +2 -0
- package/locales/hy/index.esm.js +2 -0
- package/locales/hy/index.js +2 -0
- package/locales/id/index.esm.js +2 -0
- package/locales/id/index.js +2 -0
- package/locales/it/index.esm.js +2 -0
- package/locales/it/index.js +2 -0
- package/locales/ja/index.esm.js +2 -0
- package/locales/ja/index.js +2 -0
- package/locales/ko/index.esm.js +2 -0
- package/locales/ko/index.js +2 -0
- package/locales/nl/index.esm.js +2 -0
- package/locales/nl/index.js +2 -0
- package/locales/no/index.esm.js +2 -0
- package/locales/no/index.js +2 -0
- package/locales/np/index.esm.js +2 -0
- package/locales/np/index.js +2 -0
- package/locales/pl/index.esm.js +2 -0
- package/locales/pl/index.js +2 -0
- package/locales/pt/index.esm.js +2 -0
- package/locales/pt/index.js +2 -0
- package/locales/pt-BR/index.esm.js +2 -0
- package/locales/pt-BR/index.js +2 -0
- package/locales/ro/index.esm.js +2 -0
- package/locales/ro/index.js +2 -0
- package/locales/ru/index.esm.js +2 -0
- package/locales/ru/index.js +2 -0
- package/locales/sk/index.esm.js +2 -0
- package/locales/sk/index.js +2 -0
- package/locales/sr-Cyrl-RS/index.esm.js +2 -0
- package/locales/sr-Cyrl-RS/index.js +2 -0
- package/locales/sr-Latn-RS/index.esm.js +2 -0
- package/locales/sr-Latn-RS/index.js +2 -0
- package/locales/sv/index.esm.js +2 -0
- package/locales/sv/index.js +2 -0
- package/locales/tr/index.esm.js +2 -0
- package/locales/tr/index.js +2 -0
- package/locales/uk/index.esm.js +2 -0
- package/locales/uk/index.js +2 -0
- package/locales/vi/index.esm.js +2 -0
- package/locales/vi/index.js +2 -0
- package/locales/zh-Hans/index.esm.js +2 -0
- package/locales/zh-Hans/index.js +2 -0
- package/locales/zh-Hant/index.esm.js +2 -0
- package/locales/zh-Hant/index.js +2 -0
- package/package.json +20 -20
- package/src/components/MaterialReactTable.tsx +3 -3
- package/src/components/body/MRT_TableBody.tsx +3 -2
- package/src/components/body/MRT_TableBodyCell.tsx +45 -34
- package/src/components/body/MRT_TableBodyCellValue.tsx +5 -2
- package/src/components/body/MRT_TableBodyRow.tsx +13 -12
- package/src/components/body/MRT_TableBodyRowGrabHandle.tsx +4 -3
- package/src/components/body/MRT_TableBodyRowPinButton.tsx +3 -2
- package/src/components/body/MRT_TableDetailPanel.tsx +3 -2
- package/src/components/buttons/MRT_ColumnPinningButtons.tsx +3 -2
- package/src/components/buttons/MRT_CopyButton.tsx +4 -2
- package/src/components/buttons/MRT_EditActionButtons.tsx +3 -2
- package/src/components/buttons/MRT_ExpandAllButton.tsx +3 -2
- package/src/components/buttons/MRT_ExpandButton.tsx +3 -2
- package/src/components/buttons/MRT_GrabHandleButton.tsx +9 -15
- package/src/components/buttons/MRT_RowPinButton.tsx +3 -2
- package/src/components/buttons/MRT_ShowHideColumnsButton.tsx +3 -2
- package/src/components/buttons/MRT_ToggleDensePaddingButton.tsx +3 -2
- package/src/components/buttons/MRT_ToggleFiltersButton.tsx +3 -2
- package/src/components/buttons/MRT_ToggleFullScreenButton.tsx +3 -2
- package/src/components/buttons/MRT_ToggleGlobalFilterButton.tsx +3 -2
- package/src/components/buttons/MRT_ToggleRowActionMenuButton.tsx +3 -2
- package/src/components/footer/MRT_TableFooter.tsx +3 -2
- package/src/components/footer/MRT_TableFooterCell.tsx +3 -2
- package/src/components/footer/MRT_TableFooterRow.tsx +5 -3
- package/src/components/head/MRT_TableHead.tsx +3 -2
- package/src/components/head/MRT_TableHeadCell.tsx +9 -5
- package/src/components/head/MRT_TableHeadCellColumnActionsButton.tsx +4 -2
- package/src/components/head/MRT_TableHeadCellFilterContainer.tsx +4 -2
- package/src/components/head/MRT_TableHeadCellFilterLabel.tsx +4 -2
- package/src/components/head/MRT_TableHeadCellGrabHandle.tsx +4 -3
- package/src/components/head/MRT_TableHeadCellResizeHandle.tsx +3 -2
- package/src/components/head/MRT_TableHeadCellSortLabel.tsx +3 -2
- package/src/components/head/MRT_TableHeadRow.tsx +4 -2
- package/src/components/inputs/MRT_EditCellTextField.tsx +3 -2
- package/src/components/inputs/MRT_FilterCheckbox.tsx +3 -2
- package/src/components/inputs/MRT_FilterRangeFields.tsx +3 -2
- package/src/components/inputs/MRT_FilterRangeSlider.tsx +3 -2
- package/src/components/inputs/MRT_FilterTextField.tsx +15 -6
- package/src/components/inputs/MRT_GlobalFilterTextField.tsx +3 -2
- package/src/components/inputs/MRT_SelectCheckbox.tsx +26 -33
- package/src/components/menus/MRT_ActionMenuItem.tsx +61 -0
- package/src/components/menus/MRT_CellActionMenu.tsx +109 -0
- package/src/components/menus/MRT_ColumnActionMenu.tsx +92 -172
- package/src/components/menus/MRT_FilterOptionMenu.tsx +9 -16
- package/src/components/menus/MRT_RowActionMenu.tsx +10 -17
- package/src/components/menus/MRT_ShowHideColumnsMenu.tsx +11 -3
- package/src/components/menus/MRT_ShowHideColumnsMenuItems.tsx +7 -5
- package/src/components/modals/MRT_EditRowModal.tsx +3 -2
- package/src/components/table/MRT_Table.tsx +2 -2
- package/src/components/table/MRT_TableContainer.tsx +7 -2
- package/src/components/table/MRT_TableLoadingOverlay.tsx +11 -8
- package/src/components/table/MRT_TablePaper.tsx +3 -2
- package/src/components/toolbar/MRT_BottomToolbar.tsx +3 -2
- package/src/components/toolbar/MRT_LinearProgressBar.tsx +3 -2
- package/src/components/toolbar/MRT_TablePagination.tsx +2 -2
- package/src/components/toolbar/MRT_ToolbarAlertBanner.tsx +30 -13
- package/src/components/toolbar/MRT_ToolbarDropZone.tsx +3 -2
- package/src/components/toolbar/MRT_ToolbarInternalButtons.tsx +3 -2
- package/src/components/toolbar/MRT_TopToolbar.tsx +2 -2
- package/src/hooks/display-columns/getMRT_RowActionsColumnDef.tsx +1 -8
- package/src/hooks/display-columns/getMRT_RowDragColumnDef.tsx +1 -8
- package/src/hooks/display-columns/getMRT_RowExpandColumnDef.tsx +1 -8
- package/src/hooks/display-columns/getMRT_RowNumbersColumnDef.tsx +1 -8
- package/src/hooks/display-columns/getMRT_RowPinningColumnDef.tsx +1 -8
- package/src/hooks/display-columns/getMRT_RowSelectColumnDef.tsx +1 -8
- package/src/hooks/display-columns/getMRT_RowSpacerColumnDef.tsx +1 -8
- package/src/hooks/useMRT_Effects.ts +14 -4
- package/src/hooks/useMRT_Rows.ts +11 -79
- package/src/hooks/useMRT_TableInstance.ts +114 -59
- package/src/hooks/useMRT_TableOptions.ts +2 -0
- package/src/icons.ts +2 -0
- package/src/index.ts +2 -0
- package/src/locales/ar.ts +2 -0
- package/src/locales/az.ts +2 -0
- package/src/locales/bg.ts +2 -0
- package/src/locales/cs.ts +2 -0
- package/src/locales/da.ts +2 -0
- package/src/locales/de.ts +2 -0
- package/src/locales/en.ts +2 -0
- package/src/locales/es.ts +2 -0
- package/src/locales/et.ts +2 -0
- package/src/locales/fa.ts +2 -0
- package/src/locales/fi.ts +2 -0
- package/src/locales/fr.ts +2 -0
- package/src/locales/he.ts +2 -0
- package/src/locales/hu.ts +2 -0
- package/src/locales/hy.ts +2 -0
- package/src/locales/id.ts +2 -0
- package/src/locales/it.ts +2 -0
- package/src/locales/ja.ts +2 -0
- package/src/locales/ko.ts +2 -0
- package/src/locales/nl.ts +2 -0
- package/src/locales/no.ts +2 -0
- package/src/locales/np.ts +2 -0
- package/src/locales/pl.ts +2 -0
- package/src/locales/pt-BR.ts +2 -0
- package/src/locales/pt.ts +2 -0
- package/src/locales/ro.ts +2 -0
- package/src/locales/ru.ts +2 -0
- package/src/locales/sk.ts +2 -0
- package/src/locales/sr-Cyrl-RS.ts +2 -0
- package/src/locales/sr-Latn-RS.ts +2 -0
- package/src/locales/sv.ts +2 -0
- package/src/locales/tr.ts +2 -0
- package/src/locales/uk.ts +2 -0
- package/src/locales/vi.ts +2 -0
- package/src/locales/zh-Hans.ts +2 -0
- package/src/locales/zh-Hant.ts +2 -0
- package/src/types.ts +51 -13
- package/src/utils/cell.utils.ts +50 -0
- package/src/utils/column.utils.ts +4 -6
- package/src/utils/displayColumn.utils.ts +39 -21
- package/src/utils/row.utils.ts +179 -21
- package/locales/am/index.d.ts +0 -3
- package/locales/am/index.esm.d.ts +0 -3
- package/locales/am/index.esm.js +0 -93
- package/locales/am/index.js +0 -97
- package/locales/am/package.json +0 -6
- package/src/hooks/display-columns/getMRT_DisplayColumns.tsx +0 -26
- package/src/locales/am.ts +0 -94
|
@@ -7,14 +7,15 @@ import { type MRT_RowData, type MRT_TableInstance } from '../../types';
|
|
|
7
7
|
import { getMRTTheme } from '../../utils/style.utils';
|
|
8
8
|
import { parseFromValuesOrFunc } from '../../utils/utils';
|
|
9
9
|
|
|
10
|
-
interface
|
|
10
|
+
export interface MRT_TableLoadingOverlayProps<TData extends MRT_RowData>
|
|
11
|
+
extends CircularProgressProps {
|
|
11
12
|
table: MRT_TableInstance<TData>;
|
|
12
13
|
}
|
|
13
14
|
|
|
14
15
|
export const MRT_TableLoadingOverlay = <TData extends MRT_RowData>({
|
|
15
16
|
table,
|
|
16
17
|
...rest
|
|
17
|
-
}:
|
|
18
|
+
}: MRT_TableLoadingOverlayProps<TData>) => {
|
|
18
19
|
const {
|
|
19
20
|
options: { localization, muiCircularProgressProps },
|
|
20
21
|
} = table;
|
|
@@ -41,14 +42,16 @@ export const MRT_TableLoadingOverlay = <TData extends MRT_RowData>({
|
|
|
41
42
|
right: 0,
|
|
42
43
|
top: 0,
|
|
43
44
|
width: '100%',
|
|
44
|
-
zIndex:
|
|
45
|
+
zIndex: 3,
|
|
45
46
|
})}
|
|
46
47
|
>
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
48
|
+
{circularProgressProps?.Component ?? (
|
|
49
|
+
<CircularProgress
|
|
50
|
+
aria-label={localization.noRecordsToDisplay}
|
|
51
|
+
id="mrt-progress"
|
|
52
|
+
{...circularProgressProps}
|
|
53
|
+
/>
|
|
54
|
+
)}
|
|
52
55
|
</Box>
|
|
53
56
|
);
|
|
54
57
|
};
|
|
@@ -6,14 +6,15 @@ import { parseFromValuesOrFunc } from '../../utils/utils';
|
|
|
6
6
|
import { MRT_BottomToolbar } from '../toolbar/MRT_BottomToolbar';
|
|
7
7
|
import { MRT_TopToolbar } from '../toolbar/MRT_TopToolbar';
|
|
8
8
|
|
|
9
|
-
interface
|
|
9
|
+
export interface MRT_TablePaperProps<TData extends MRT_RowData>
|
|
10
|
+
extends PaperProps {
|
|
10
11
|
table: MRT_TableInstance<TData>;
|
|
11
12
|
}
|
|
12
13
|
|
|
13
14
|
export const MRT_TablePaper = <TData extends MRT_RowData>({
|
|
14
15
|
table,
|
|
15
16
|
...rest
|
|
16
|
-
}:
|
|
17
|
+
}: MRT_TablePaperProps<TData>) => {
|
|
17
18
|
const {
|
|
18
19
|
getState,
|
|
19
20
|
options: {
|
|
@@ -9,14 +9,15 @@ import { type MRT_RowData, type MRT_TableInstance } from '../../types';
|
|
|
9
9
|
import { getCommonToolbarStyles } from '../../utils/style.utils';
|
|
10
10
|
import { parseFromValuesOrFunc } from '../../utils/utils';
|
|
11
11
|
|
|
12
|
-
interface
|
|
12
|
+
export interface MRT_BottomToolbarProps<TData extends MRT_RowData>
|
|
13
|
+
extends BoxProps {
|
|
13
14
|
table: MRT_TableInstance<TData>;
|
|
14
15
|
}
|
|
15
16
|
|
|
16
17
|
export const MRT_BottomToolbar = <TData extends MRT_RowData>({
|
|
17
18
|
table,
|
|
18
19
|
...rest
|
|
19
|
-
}:
|
|
20
|
+
}: MRT_BottomToolbarProps<TData>) => {
|
|
20
21
|
const {
|
|
21
22
|
getState,
|
|
22
23
|
options: {
|
|
@@ -5,7 +5,8 @@ import LinearProgress, {
|
|
|
5
5
|
import { type MRT_RowData, type MRT_TableInstance } from '../../types';
|
|
6
6
|
import { parseFromValuesOrFunc } from '../../utils/utils';
|
|
7
7
|
|
|
8
|
-
interface
|
|
8
|
+
export interface MRT_LinearProgressBarProps<TData extends MRT_RowData>
|
|
9
|
+
extends LinearProgressProps {
|
|
9
10
|
isTopToolbar: boolean;
|
|
10
11
|
table: MRT_TableInstance<TData>;
|
|
11
12
|
}
|
|
@@ -14,7 +15,7 @@ export const MRT_LinearProgressBar = <TData extends MRT_RowData>({
|
|
|
14
15
|
isTopToolbar,
|
|
15
16
|
table,
|
|
16
17
|
...rest
|
|
17
|
-
}:
|
|
18
|
+
}: MRT_LinearProgressBarProps<TData>) => {
|
|
18
19
|
const {
|
|
19
20
|
getState,
|
|
20
21
|
options: { muiLinearProgressProps },
|
|
@@ -15,7 +15,7 @@ import { parseFromValuesOrFunc } from '../../utils/utils';
|
|
|
15
15
|
|
|
16
16
|
const defaultRowsPerPage = [5, 10, 15, 20, 25, 30, 50, 100];
|
|
17
17
|
|
|
18
|
-
interface
|
|
18
|
+
export interface MRT_TablePaginationProps<TData extends MRT_RowData>
|
|
19
19
|
extends Partial<
|
|
20
20
|
PaginationProps & {
|
|
21
21
|
SelectProps?: Partial<SelectProps>;
|
|
@@ -32,7 +32,7 @@ export const MRT_TablePagination = <TData extends MRT_RowData>({
|
|
|
32
32
|
position = 'bottom',
|
|
33
33
|
table,
|
|
34
34
|
...rest
|
|
35
|
-
}:
|
|
35
|
+
}: MRT_TablePaginationProps<TData>) => {
|
|
36
36
|
const theme = useTheme();
|
|
37
37
|
const isMobile = useMediaQuery('(max-width: 720px)');
|
|
38
38
|
|
|
@@ -2,6 +2,7 @@ import { Fragment, useMemo } from 'react';
|
|
|
2
2
|
import Alert, { type AlertProps } from '@mui/material/Alert';
|
|
3
3
|
import AlertTitle from '@mui/material/AlertTitle';
|
|
4
4
|
import Box from '@mui/material/Box';
|
|
5
|
+
import Button from '@mui/material/Button';
|
|
5
6
|
import Chip from '@mui/material/Chip';
|
|
6
7
|
import Collapse from '@mui/material/Collapse';
|
|
7
8
|
import Stack from '@mui/material/Stack';
|
|
@@ -9,7 +10,8 @@ import { type MRT_RowData, type MRT_TableInstance } from '../../types';
|
|
|
9
10
|
import { parseFromValuesOrFunc } from '../../utils/utils';
|
|
10
11
|
import { MRT_SelectCheckbox } from '../inputs/MRT_SelectCheckbox';
|
|
11
12
|
|
|
12
|
-
interface
|
|
13
|
+
export interface MRT_ToolbarAlertBannerProps<TData extends MRT_RowData>
|
|
14
|
+
extends AlertProps {
|
|
13
15
|
stackAlertBanner?: boolean;
|
|
14
16
|
table: MRT_TableInstance<TData>;
|
|
15
17
|
}
|
|
@@ -18,21 +20,23 @@ export const MRT_ToolbarAlertBanner = <TData extends MRT_RowData>({
|
|
|
18
20
|
stackAlertBanner,
|
|
19
21
|
table,
|
|
20
22
|
...rest
|
|
21
|
-
}:
|
|
23
|
+
}: MRT_ToolbarAlertBannerProps<TData>) => {
|
|
22
24
|
const {
|
|
25
|
+
getFilteredSelectedRowModel,
|
|
23
26
|
getPrePaginationRowModel,
|
|
24
27
|
getState,
|
|
25
28
|
options: {
|
|
26
29
|
enableRowSelection,
|
|
27
30
|
enableSelectAll,
|
|
28
31
|
localization,
|
|
32
|
+
manualPagination,
|
|
29
33
|
muiToolbarAlertBannerChipProps,
|
|
30
34
|
muiToolbarAlertBannerProps,
|
|
31
35
|
positionToolbarAlertBanner,
|
|
32
36
|
renderToolbarAlertBannerContent,
|
|
33
37
|
rowCount,
|
|
34
38
|
},
|
|
35
|
-
refs: { tablePaperRef },
|
|
39
|
+
refs: { lastSelectedRowId, tablePaperRef },
|
|
36
40
|
} = table;
|
|
37
41
|
const { density, grouping, rowSelection, showAlertBanner } = getState();
|
|
38
42
|
|
|
@@ -47,20 +51,33 @@ export const MRT_ToolbarAlertBanner = <TData extends MRT_RowData>({
|
|
|
47
51
|
table,
|
|
48
52
|
});
|
|
49
53
|
|
|
54
|
+
const totalRowCount = rowCount ?? getPrePaginationRowModel().rows.length;
|
|
55
|
+
|
|
50
56
|
const selectedRowCount = useMemo(
|
|
51
|
-
() =>
|
|
52
|
-
|
|
57
|
+
() =>
|
|
58
|
+
manualPagination
|
|
59
|
+
? Object.values(rowSelection).filter(Boolean).length
|
|
60
|
+
: getFilteredSelectedRowModel().rows.length,
|
|
61
|
+
[rowSelection, totalRowCount, manualPagination],
|
|
53
62
|
);
|
|
54
|
-
|
|
55
63
|
const selectedAlert =
|
|
56
|
-
selectedRowCount > 0
|
|
57
|
-
|
|
64
|
+
selectedRowCount > 0 ? (
|
|
65
|
+
<Stack alignItems="center" direction="row" gap="16px">
|
|
66
|
+
{localization.selectedCountOfRowCountRowsSelected
|
|
58
67
|
?.replace('{selectedCount}', selectedRowCount.toLocaleString())
|
|
59
|
-
?.replace(
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
68
|
+
?.replace('{rowCount}', totalRowCount.toString())}
|
|
69
|
+
<Button
|
|
70
|
+
onClick={() => {
|
|
71
|
+
table.toggleAllRowsSelected(false);
|
|
72
|
+
lastSelectedRowId.current = null;
|
|
73
|
+
}}
|
|
74
|
+
size="small"
|
|
75
|
+
sx={{ p: '2px' }}
|
|
76
|
+
>
|
|
77
|
+
{localization.clearSelection}
|
|
78
|
+
</Button>
|
|
79
|
+
</Stack>
|
|
80
|
+
) : null;
|
|
64
81
|
|
|
65
82
|
const groupedAlert =
|
|
66
83
|
grouping.length > 0 ? (
|
|
@@ -6,14 +6,15 @@ import { alpha } from '@mui/material/styles';
|
|
|
6
6
|
import { type MRT_RowData, type MRT_TableInstance } from '../../types';
|
|
7
7
|
import { parseFromValuesOrFunc } from '../../utils/utils';
|
|
8
8
|
|
|
9
|
-
interface
|
|
9
|
+
export interface MRT_ToolbarDropZoneProps<TData extends MRT_RowData>
|
|
10
|
+
extends BoxProps {
|
|
10
11
|
table: MRT_TableInstance<TData>;
|
|
11
12
|
}
|
|
12
13
|
|
|
13
14
|
export const MRT_ToolbarDropZone = <TData extends MRT_RowData>({
|
|
14
15
|
table,
|
|
15
16
|
...rest
|
|
16
|
-
}:
|
|
17
|
+
}: MRT_ToolbarDropZoneProps<TData>) => {
|
|
17
18
|
const {
|
|
18
19
|
getState,
|
|
19
20
|
options: { enableGrouping, localization },
|
|
@@ -7,14 +7,15 @@ import { MRT_ToggleFiltersButton } from '../buttons/MRT_ToggleFiltersButton';
|
|
|
7
7
|
import { MRT_ToggleFullScreenButton } from '../buttons/MRT_ToggleFullScreenButton';
|
|
8
8
|
import { MRT_ToggleGlobalFilterButton } from '../buttons/MRT_ToggleGlobalFilterButton';
|
|
9
9
|
|
|
10
|
-
interface
|
|
10
|
+
export interface MRT_ToolbarInternalButtonsProps<TData extends MRT_RowData>
|
|
11
|
+
extends BoxProps {
|
|
11
12
|
table: MRT_TableInstance<TData>;
|
|
12
13
|
}
|
|
13
14
|
|
|
14
15
|
export const MRT_ToolbarInternalButtons = <TData extends MRT_RowData>({
|
|
15
16
|
table,
|
|
16
17
|
...rest
|
|
17
|
-
}:
|
|
18
|
+
}: MRT_ToolbarInternalButtonsProps<TData>) => {
|
|
18
19
|
const {
|
|
19
20
|
options: {
|
|
20
21
|
columnFilterDisplayMode,
|
|
@@ -10,13 +10,13 @@ import { getCommonToolbarStyles } from '../../utils/style.utils';
|
|
|
10
10
|
import { parseFromValuesOrFunc } from '../../utils/utils';
|
|
11
11
|
import { MRT_GlobalFilterTextField } from '../inputs/MRT_GlobalFilterTextField';
|
|
12
12
|
|
|
13
|
-
interface
|
|
13
|
+
export interface MRT_TopToolbarProps<TData extends MRT_RowData> {
|
|
14
14
|
table: MRT_TableInstance<TData>;
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
export const MRT_TopToolbar = <TData extends MRT_RowData>({
|
|
18
18
|
table,
|
|
19
|
-
}:
|
|
19
|
+
}: MRT_TopToolbarProps<TData>) => {
|
|
20
20
|
const {
|
|
21
21
|
getState,
|
|
22
22
|
options: {
|
|
@@ -4,18 +4,11 @@ import {
|
|
|
4
4
|
type MRT_RowData,
|
|
5
5
|
type MRT_StatefulTableOptions,
|
|
6
6
|
} from '../../types';
|
|
7
|
-
import {
|
|
8
|
-
defaultDisplayColumnProps,
|
|
9
|
-
showRowActionsColumn,
|
|
10
|
-
} from '../../utils/displayColumn.utils';
|
|
7
|
+
import { defaultDisplayColumnProps } from '../../utils/displayColumn.utils';
|
|
11
8
|
|
|
12
9
|
export const getMRT_RowActionsColumnDef = <TData extends MRT_RowData>(
|
|
13
10
|
tableOptions: MRT_StatefulTableOptions<TData>,
|
|
14
11
|
): MRT_ColumnDef<TData> | null => {
|
|
15
|
-
if (!showRowActionsColumn(tableOptions)) {
|
|
16
|
-
return null;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
12
|
return {
|
|
20
13
|
Cell: ({ cell, row, staticRowIndex, table }) => (
|
|
21
14
|
<MRT_ToggleRowActionMenuButton
|
|
@@ -5,18 +5,11 @@ import {
|
|
|
5
5
|
type MRT_RowData,
|
|
6
6
|
type MRT_StatefulTableOptions,
|
|
7
7
|
} from '../../types';
|
|
8
|
-
import {
|
|
9
|
-
defaultDisplayColumnProps,
|
|
10
|
-
showRowDragColumn,
|
|
11
|
-
} from '../../utils/displayColumn.utils';
|
|
8
|
+
import { defaultDisplayColumnProps } from '../../utils/displayColumn.utils';
|
|
12
9
|
|
|
13
10
|
export const getMRT_RowDragColumnDef = <TData extends MRT_RowData>(
|
|
14
11
|
tableOptions: MRT_StatefulTableOptions<TData>,
|
|
15
12
|
): MRT_ColumnDef<TData> | null => {
|
|
16
|
-
if (!showRowDragColumn(tableOptions)) {
|
|
17
|
-
return null;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
13
|
return {
|
|
21
14
|
Cell: ({ row, rowRef, table }) => (
|
|
22
15
|
<MRT_TableBodyRowGrabHandle
|
|
@@ -8,19 +8,12 @@ import {
|
|
|
8
8
|
type MRT_RowData,
|
|
9
9
|
type MRT_StatefulTableOptions,
|
|
10
10
|
} from '../../types';
|
|
11
|
-
import {
|
|
12
|
-
defaultDisplayColumnProps,
|
|
13
|
-
showRowExpandColumn,
|
|
14
|
-
} from '../../utils/displayColumn.utils';
|
|
11
|
+
import { defaultDisplayColumnProps } from '../../utils/displayColumn.utils';
|
|
15
12
|
import { getCommonTooltipProps } from '../../utils/style.utils';
|
|
16
13
|
|
|
17
14
|
export const getMRT_RowExpandColumnDef = <TData extends MRT_RowData>(
|
|
18
15
|
tableOptions: MRT_StatefulTableOptions<TData>,
|
|
19
16
|
): MRT_ColumnDef<TData> | null => {
|
|
20
|
-
if (!showRowExpandColumn(tableOptions)) {
|
|
21
|
-
return null;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
17
|
const {
|
|
25
18
|
defaultColumn,
|
|
26
19
|
enableExpandAll,
|
|
@@ -3,18 +3,11 @@ import {
|
|
|
3
3
|
type MRT_RowData,
|
|
4
4
|
type MRT_StatefulTableOptions,
|
|
5
5
|
} from '../../types';
|
|
6
|
-
import {
|
|
7
|
-
defaultDisplayColumnProps,
|
|
8
|
-
showRowNumbersColumn,
|
|
9
|
-
} from '../../utils/displayColumn.utils';
|
|
6
|
+
import { defaultDisplayColumnProps } from '../../utils/displayColumn.utils';
|
|
10
7
|
|
|
11
8
|
export const getMRT_RowNumbersColumnDef = <TData extends MRT_RowData>(
|
|
12
9
|
tableOptions: MRT_StatefulTableOptions<TData>,
|
|
13
10
|
): MRT_ColumnDef<TData> | null => {
|
|
14
|
-
if (!showRowNumbersColumn(tableOptions)) {
|
|
15
|
-
return null;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
11
|
const { localization, rowNumberDisplayMode } = tableOptions;
|
|
19
12
|
const {
|
|
20
13
|
pagination: { pageIndex, pageSize },
|
|
@@ -4,18 +4,11 @@ import {
|
|
|
4
4
|
type MRT_RowData,
|
|
5
5
|
type MRT_StatefulTableOptions,
|
|
6
6
|
} from '../../types';
|
|
7
|
-
import {
|
|
8
|
-
defaultDisplayColumnProps,
|
|
9
|
-
showRowPinningColumn,
|
|
10
|
-
} from '../../utils/displayColumn.utils';
|
|
7
|
+
import { defaultDisplayColumnProps } from '../../utils/displayColumn.utils';
|
|
11
8
|
|
|
12
9
|
export const getMRT_RowPinningColumnDef = <TData extends MRT_RowData>(
|
|
13
10
|
tableOptions: MRT_StatefulTableOptions<TData>,
|
|
14
11
|
): MRT_ColumnDef<TData> | null => {
|
|
15
|
-
if (!showRowPinningColumn(tableOptions)) {
|
|
16
|
-
return null;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
12
|
return {
|
|
20
13
|
Cell: ({ row, table }) => (
|
|
21
14
|
<MRT_TableBodyRowPinButton row={row} table={table} />
|
|
@@ -4,18 +4,11 @@ import {
|
|
|
4
4
|
type MRT_RowData,
|
|
5
5
|
type MRT_StatefulTableOptions,
|
|
6
6
|
} from '../../types';
|
|
7
|
-
import {
|
|
8
|
-
defaultDisplayColumnProps,
|
|
9
|
-
showRowSelectionColumn,
|
|
10
|
-
} from '../../utils/displayColumn.utils';
|
|
7
|
+
import { defaultDisplayColumnProps } from '../../utils/displayColumn.utils';
|
|
11
8
|
|
|
12
9
|
export const getMRT_RowSelectColumnDef = <TData extends MRT_RowData>(
|
|
13
10
|
tableOptions: MRT_StatefulTableOptions<TData>,
|
|
14
11
|
): MRT_ColumnDef<TData> | null => {
|
|
15
|
-
if (!showRowSelectionColumn(tableOptions)) {
|
|
16
|
-
return null;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
12
|
const { enableMultiRowSelection, enableSelectAll } = tableOptions;
|
|
20
13
|
|
|
21
14
|
return {
|
|
@@ -4,10 +4,7 @@ import {
|
|
|
4
4
|
type MRT_RowData,
|
|
5
5
|
type MRT_StatefulTableOptions,
|
|
6
6
|
} from '../../types';
|
|
7
|
-
import {
|
|
8
|
-
defaultDisplayColumnProps,
|
|
9
|
-
showRowSpacerColumn,
|
|
10
|
-
} from '../../utils/displayColumn.utils';
|
|
7
|
+
import { defaultDisplayColumnProps } from '../../utils/displayColumn.utils';
|
|
11
8
|
|
|
12
9
|
const blankColProps = {
|
|
13
10
|
children: null,
|
|
@@ -21,10 +18,6 @@ const blankColProps = {
|
|
|
21
18
|
export const getMRT_RowSpacerColumnDef = <TData extends MRT_RowData>(
|
|
22
19
|
tableOptions: MRT_StatefulTableOptions<TData>,
|
|
23
20
|
): MRT_ColumnDef<TData> | null => {
|
|
24
|
-
if (!showRowSpacerColumn(tableOptions)) {
|
|
25
|
-
return null;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
21
|
return {
|
|
29
22
|
...defaultDisplayColumnProps({
|
|
30
23
|
id: 'mrt-row-spacer',
|
|
@@ -4,6 +4,7 @@ import {
|
|
|
4
4
|
type MRT_SortingState,
|
|
5
5
|
type MRT_TableInstance,
|
|
6
6
|
} from '../types';
|
|
7
|
+
import { getDefaultColumnOrderIds } from '../utils/displayColumn.utils';
|
|
7
8
|
import { getCanRankRows } from '../utils/row.utils';
|
|
8
9
|
|
|
9
10
|
export const useMRT_Effects = <TData extends MRT_RowData>(
|
|
@@ -16,6 +17,7 @@ export const useMRT_Effects = <TData extends MRT_RowData>(
|
|
|
16
17
|
options: { enablePagination, enableRowPinning, rowCount },
|
|
17
18
|
} = table;
|
|
18
19
|
const {
|
|
20
|
+
columnOrder,
|
|
19
21
|
density,
|
|
20
22
|
globalFilter,
|
|
21
23
|
isFullScreen,
|
|
@@ -25,10 +27,10 @@ export const useMRT_Effects = <TData extends MRT_RowData>(
|
|
|
25
27
|
sorting,
|
|
26
28
|
} = getState();
|
|
27
29
|
|
|
30
|
+
const totalColumnCount = table.options.columns.length;
|
|
28
31
|
const totalRowCount = rowCount ?? getPrePaginationRowModel().rows.length;
|
|
29
32
|
|
|
30
33
|
const rerender = useReducer(() => ({}), {})[1];
|
|
31
|
-
const isMounted = useRef(false);
|
|
32
34
|
const initialBodyHeight = useRef<string>();
|
|
33
35
|
const previousTop = useRef<number>();
|
|
34
36
|
|
|
@@ -38,11 +40,12 @@ export const useMRT_Effects = <TData extends MRT_RowData>(
|
|
|
38
40
|
}
|
|
39
41
|
}, []);
|
|
40
42
|
|
|
43
|
+
//hide scrollbars when table is in full screen mode, preserve body scroll position after full screen exit
|
|
41
44
|
useEffect(() => {
|
|
42
|
-
if (
|
|
45
|
+
if (typeof window !== 'undefined') {
|
|
43
46
|
if (isFullScreen) {
|
|
44
47
|
previousTop.current = document.body.getBoundingClientRect().top; //save scroll position
|
|
45
|
-
document.body.style.height = '
|
|
48
|
+
document.body.style.height = '100dvh'; //hide page scrollbars when table is in full screen mode
|
|
46
49
|
} else {
|
|
47
50
|
document.body.style.height = initialBodyHeight.current as string;
|
|
48
51
|
if (!previousTop.current) return;
|
|
@@ -53,9 +56,15 @@ export const useMRT_Effects = <TData extends MRT_RowData>(
|
|
|
53
56
|
});
|
|
54
57
|
}
|
|
55
58
|
}
|
|
56
|
-
isMounted.current = true;
|
|
57
59
|
}, [isFullScreen]);
|
|
58
60
|
|
|
61
|
+
//recalculate column order when columns change or features are toggled on/off
|
|
62
|
+
useEffect(() => {
|
|
63
|
+
if (totalColumnCount !== columnOrder.length) {
|
|
64
|
+
table.setColumnOrder(getDefaultColumnOrderIds(table.options));
|
|
65
|
+
}
|
|
66
|
+
}, [totalColumnCount]);
|
|
67
|
+
|
|
59
68
|
//if page index is out of bounds, set it to the last page
|
|
60
69
|
useEffect(() => {
|
|
61
70
|
if (!enablePagination || isLoading || showSkeletons) return;
|
|
@@ -83,6 +92,7 @@ export const useMRT_Effects = <TData extends MRT_RowData>(
|
|
|
83
92
|
}
|
|
84
93
|
}, [globalFilter]);
|
|
85
94
|
|
|
95
|
+
//fix pinned row top style when density changes
|
|
86
96
|
useEffect(() => {
|
|
87
97
|
if (enableRowPinning && getIsSomeRowsPinned()) {
|
|
88
98
|
setTimeout(() => {
|
package/src/hooks/useMRT_Rows.ts
CHANGED
|
@@ -1,36 +1,19 @@
|
|
|
1
1
|
import { useMemo } from 'react';
|
|
2
|
-
import { rankGlobalFuzzy } from '../fns/sortingFns';
|
|
3
2
|
import {
|
|
4
3
|
type MRT_Row,
|
|
5
4
|
type MRT_RowData,
|
|
6
5
|
type MRT_TableInstance,
|
|
7
6
|
} from '../types';
|
|
8
|
-
import {
|
|
7
|
+
import { getMRT_Rows } from '../utils/row.utils';
|
|
9
8
|
|
|
10
9
|
export const useMRT_Rows = <TData extends MRT_RowData>(
|
|
11
10
|
table: MRT_TableInstance<TData>,
|
|
12
11
|
pinnedRowIds: string[] = [],
|
|
13
12
|
): MRT_Row<TData>[] => {
|
|
14
13
|
const {
|
|
15
|
-
getBottomRows,
|
|
16
|
-
getCenterRows,
|
|
17
|
-
getPrePaginationRowModel,
|
|
18
14
|
getRowModel,
|
|
19
15
|
getState,
|
|
20
|
-
|
|
21
|
-
options: {
|
|
22
|
-
createDisplayMode,
|
|
23
|
-
enableGlobalFilterRankedResults,
|
|
24
|
-
enablePagination,
|
|
25
|
-
enableRowPinning,
|
|
26
|
-
manualExpanding,
|
|
27
|
-
manualFiltering,
|
|
28
|
-
manualGrouping,
|
|
29
|
-
manualPagination,
|
|
30
|
-
manualSorting,
|
|
31
|
-
positionCreatingRow,
|
|
32
|
-
rowPinningDisplayMode,
|
|
33
|
-
},
|
|
16
|
+
options: { data, enableGlobalFilterRankedResults, positionCreatingRow },
|
|
34
17
|
} = table;
|
|
35
18
|
const {
|
|
36
19
|
creatingRow,
|
|
@@ -41,73 +24,22 @@ export const useMRT_Rows = <TData extends MRT_RowData>(
|
|
|
41
24
|
sorting,
|
|
42
25
|
} = getState();
|
|
43
26
|
|
|
44
|
-
const
|
|
45
|
-
() =>
|
|
46
|
-
getCanRankRows(table) &&
|
|
47
|
-
!Object.values(sorting).some(Boolean) &&
|
|
48
|
-
globalFilter,
|
|
27
|
+
const rows = useMemo(
|
|
28
|
+
() => getMRT_Rows(table, pinnedRowIds),
|
|
49
29
|
[
|
|
30
|
+
creatingRow,
|
|
31
|
+
data,
|
|
50
32
|
enableGlobalFilterRankedResults,
|
|
51
33
|
expanded,
|
|
34
|
+
getRowModel().rows,
|
|
52
35
|
globalFilter,
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
36
|
+
pagination.pageIndex,
|
|
37
|
+
pagination.pageSize,
|
|
38
|
+
positionCreatingRow,
|
|
39
|
+
rowPinning,
|
|
57
40
|
sorting,
|
|
58
41
|
],
|
|
59
42
|
);
|
|
60
43
|
|
|
61
|
-
const rows = useMemo(() => {
|
|
62
|
-
let rows: MRT_Row<TData>[] = [];
|
|
63
|
-
if (!shouldRankRows) {
|
|
64
|
-
rows =
|
|
65
|
-
!enableRowPinning || rowPinningDisplayMode?.includes('sticky')
|
|
66
|
-
? getRowModel().rows
|
|
67
|
-
: getCenterRows();
|
|
68
|
-
} else {
|
|
69
|
-
rows = getPrePaginationRowModel().rows.sort((a, b) =>
|
|
70
|
-
rankGlobalFuzzy(a, b),
|
|
71
|
-
);
|
|
72
|
-
if (enablePagination && !manualPagination) {
|
|
73
|
-
const start = pagination.pageIndex * pagination.pageSize;
|
|
74
|
-
rows = rows.slice(start, start + pagination.pageSize);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
if (enableRowPinning && rowPinningDisplayMode?.includes('sticky')) {
|
|
78
|
-
rows = [
|
|
79
|
-
...getTopRows().filter((row) => !pinnedRowIds.includes(row.id)),
|
|
80
|
-
...rows,
|
|
81
|
-
...getBottomRows().filter((row) => !pinnedRowIds.includes(row.id)),
|
|
82
|
-
];
|
|
83
|
-
}
|
|
84
|
-
if (
|
|
85
|
-
positionCreatingRow !== undefined &&
|
|
86
|
-
creatingRow &&
|
|
87
|
-
createDisplayMode === 'row'
|
|
88
|
-
) {
|
|
89
|
-
const creatingRowIndex = !isNaN(+positionCreatingRow)
|
|
90
|
-
? +positionCreatingRow
|
|
91
|
-
: positionCreatingRow === 'top'
|
|
92
|
-
? 0
|
|
93
|
-
: rows.length;
|
|
94
|
-
rows = [
|
|
95
|
-
...rows.slice(0, creatingRowIndex),
|
|
96
|
-
creatingRow,
|
|
97
|
-
...rows.slice(creatingRowIndex),
|
|
98
|
-
];
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
return rows;
|
|
102
|
-
}, [
|
|
103
|
-
creatingRow,
|
|
104
|
-
pagination.pageIndex,
|
|
105
|
-
pagination.pageSize,
|
|
106
|
-
positionCreatingRow,
|
|
107
|
-
rowPinning,
|
|
108
|
-
shouldRankRows ? getPrePaginationRowModel().rows : getRowModel().rows,
|
|
109
|
-
shouldRankRows,
|
|
110
|
-
]);
|
|
111
|
-
|
|
112
44
|
return rows;
|
|
113
45
|
};
|