material-react-table 2.10.0 → 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 +144 -125
- package/dist/index.esm.js +201 -152
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +201 -149
- 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/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/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 +18 -18
- package/src/components/MaterialReactTable.tsx +3 -3
- package/src/components/body/MRT_TableBody.tsx +3 -2
- package/src/components/body/MRT_TableBodyCell.tsx +4 -2
- package/src/components/body/MRT_TableBodyCellValue.tsx +5 -2
- package/src/components/body/MRT_TableBodyRow.tsx +13 -8
- 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 +3 -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 +3 -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 +3 -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 +3 -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 +3 -2
- package/src/components/menus/MRT_CellActionMenu.tsx +5 -4
- package/src/components/menus/MRT_ColumnActionMenu.tsx +5 -4
- package/src/components/menus/MRT_FilterOptionMenu.tsx +3 -2
- package/src/components/menus/MRT_RowActionMenu.tsx +3 -2
- package/src/components/menus/MRT_ShowHideColumnsMenu.tsx +8 -2
- 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 +3 -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/useMRT_Effects.ts +11 -11
- package/src/hooks/useMRT_Rows.ts +11 -79
- package/src/hooks/useMRT_TableInstance.ts +2 -0
- package/src/hooks/useMRT_TableOptions.ts +2 -0
- 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/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/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 +10 -4
- package/src/utils/column.utils.ts +4 -6
- package/src/utils/displayColumn.utils.ts +1 -1
- 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
|
@@ -13,7 +13,8 @@ import {
|
|
|
13
13
|
import { getDefaultColumnOrderIds } from '../../utils/displayColumn.utils';
|
|
14
14
|
import { getMRTTheme } from '../../utils/style.utils';
|
|
15
15
|
|
|
16
|
-
interface
|
|
16
|
+
export interface MRT_ShowHideColumnsMenuProps<TData extends MRT_RowData>
|
|
17
|
+
extends Partial<MenuProps> {
|
|
17
18
|
anchorEl: HTMLElement | null;
|
|
18
19
|
isSubMenu?: boolean;
|
|
19
20
|
setAnchorEl: (anchorEl: HTMLElement | null) => void;
|
|
@@ -25,7 +26,7 @@ export const MRT_ShowHideColumnsMenu = <TData extends MRT_RowData>({
|
|
|
25
26
|
setAnchorEl,
|
|
26
27
|
table,
|
|
27
28
|
...rest
|
|
28
|
-
}:
|
|
29
|
+
}: MRT_ShowHideColumnsMenuProps<TData>) => {
|
|
29
30
|
const {
|
|
30
31
|
getAllColumns,
|
|
31
32
|
getAllLeafColumns,
|
|
@@ -75,6 +76,10 @@ export const MRT_ShowHideColumnsMenu = <TData extends MRT_RowData>({
|
|
|
75
76
|
getRightLeafColumns(),
|
|
76
77
|
]) as MRT_Column<TData>[];
|
|
77
78
|
|
|
79
|
+
const isNestedColumns = allColumns.some(
|
|
80
|
+
(col) => col.columnDef.columnDefType === 'group',
|
|
81
|
+
);
|
|
82
|
+
|
|
78
83
|
const [hoveredColumn, setHoveredColumn] = useState<MRT_Column<TData> | null>(
|
|
79
84
|
null,
|
|
80
85
|
);
|
|
@@ -146,6 +151,7 @@ export const MRT_ShowHideColumnsMenu = <TData extends MRT_RowData>({
|
|
|
146
151
|
allColumns={allColumns}
|
|
147
152
|
column={column}
|
|
148
153
|
hoveredColumn={hoveredColumn}
|
|
154
|
+
isNestedColumns={isNestedColumns}
|
|
149
155
|
key={`${index}-${column.id}`}
|
|
150
156
|
setHoveredColumn={setHoveredColumn}
|
|
151
157
|
table={table}
|
|
@@ -22,10 +22,12 @@ import { parseFromValuesOrFunc } from '../../utils/utils';
|
|
|
22
22
|
import { MRT_ColumnPinningButtons } from '../buttons/MRT_ColumnPinningButtons';
|
|
23
23
|
import { MRT_GrabHandleButton } from '../buttons/MRT_GrabHandleButton';
|
|
24
24
|
|
|
25
|
-
interface
|
|
25
|
+
export interface MRT_ShowHideColumnsMenuItemsProps<TData extends MRT_RowData>
|
|
26
|
+
extends MenuItemProps {
|
|
26
27
|
allColumns: MRT_Column<TData>[];
|
|
27
28
|
column: MRT_Column<TData>;
|
|
28
29
|
hoveredColumn: MRT_Column<TData> | null;
|
|
30
|
+
isNestedColumns: boolean;
|
|
29
31
|
setHoveredColumn: Dispatch<SetStateAction<MRT_Column<TData> | null>>;
|
|
30
32
|
table: MRT_TableInstance<TData>;
|
|
31
33
|
}
|
|
@@ -34,10 +36,11 @@ export const MRT_ShowHideColumnsMenuItems = <TData extends MRT_RowData>({
|
|
|
34
36
|
allColumns,
|
|
35
37
|
column,
|
|
36
38
|
hoveredColumn,
|
|
39
|
+
isNestedColumns,
|
|
37
40
|
setHoveredColumn,
|
|
38
41
|
table,
|
|
39
42
|
...rest
|
|
40
|
-
}:
|
|
43
|
+
}: MRT_ShowHideColumnsMenuItemsProps<TData>) => {
|
|
41
44
|
const {
|
|
42
45
|
getState,
|
|
43
46
|
options: {
|
|
@@ -130,9 +133,7 @@ export const MRT_ShowHideColumnsMenuItems = <TData extends MRT_RowData>({
|
|
|
130
133
|
>
|
|
131
134
|
{columnDefType !== 'group' &&
|
|
132
135
|
enableColumnOrdering &&
|
|
133
|
-
!
|
|
134
|
-
(col) => col.columnDef.columnDefType === 'group',
|
|
135
|
-
) &&
|
|
136
|
+
!isNestedColumns &&
|
|
136
137
|
(columnDef.enableColumnOrdering !== false ? (
|
|
137
138
|
<MRT_GrabHandleButton
|
|
138
139
|
onDragEnd={handleDragEnd}
|
|
@@ -183,6 +184,7 @@ export const MRT_ShowHideColumnsMenuItems = <TData extends MRT_RowData>({
|
|
|
183
184
|
allColumns={allColumns}
|
|
184
185
|
column={c}
|
|
185
186
|
hoveredColumn={hoveredColumn}
|
|
187
|
+
isNestedColumns={isNestedColumns}
|
|
186
188
|
key={`${i}-${c.id}`}
|
|
187
189
|
setHoveredColumn={setHoveredColumn}
|
|
188
190
|
table={table}
|
|
@@ -12,7 +12,8 @@ import { parseFromValuesOrFunc } from '../../utils/utils';
|
|
|
12
12
|
import { MRT_EditActionButtons } from '../buttons/MRT_EditActionButtons';
|
|
13
13
|
import { MRT_EditCellTextField } from '../inputs/MRT_EditCellTextField';
|
|
14
14
|
|
|
15
|
-
interface
|
|
15
|
+
export interface MRT_EditRowModalProps<TData extends MRT_RowData>
|
|
16
|
+
extends Partial<DialogProps> {
|
|
16
17
|
open: boolean;
|
|
17
18
|
table: MRT_TableInstance<TData>;
|
|
18
19
|
}
|
|
@@ -21,7 +22,7 @@ export const MRT_EditRowModal = <TData extends MRT_RowData>({
|
|
|
21
22
|
open,
|
|
22
23
|
table,
|
|
23
24
|
...rest
|
|
24
|
-
}:
|
|
25
|
+
}: MRT_EditRowModalProps<TData>) => {
|
|
25
26
|
const {
|
|
26
27
|
getState,
|
|
27
28
|
options: {
|
|
@@ -8,14 +8,14 @@ import { MRT_TableBody, Memo_MRT_TableBody } from '../body/MRT_TableBody';
|
|
|
8
8
|
import { MRT_TableFooter } from '../footer/MRT_TableFooter';
|
|
9
9
|
import { MRT_TableHead } from '../head/MRT_TableHead';
|
|
10
10
|
|
|
11
|
-
interface
|
|
11
|
+
export interface MRT_TableProps<TData extends MRT_RowData> extends TableProps {
|
|
12
12
|
table: MRT_TableInstance<TData>;
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
export const MRT_Table = <TData extends MRT_RowData>({
|
|
16
16
|
table,
|
|
17
17
|
...rest
|
|
18
|
-
}:
|
|
18
|
+
}: MRT_TableProps<TData>) => {
|
|
19
19
|
const {
|
|
20
20
|
getFlatHeaders,
|
|
21
21
|
getState,
|
|
@@ -12,14 +12,15 @@ import { MRT_EditRowModal } from '../modals/MRT_EditRowModal';
|
|
|
12
12
|
const useIsomorphicLayoutEffect =
|
|
13
13
|
typeof window !== 'undefined' ? useLayoutEffect : useEffect;
|
|
14
14
|
|
|
15
|
-
interface
|
|
15
|
+
export interface MRT_TableContainerProps<TData extends MRT_RowData>
|
|
16
|
+
extends TableContainerProps {
|
|
16
17
|
table: MRT_TableInstance<TData>;
|
|
17
18
|
}
|
|
18
19
|
|
|
19
20
|
export const MRT_TableContainer = <TData extends MRT_RowData>({
|
|
20
21
|
table,
|
|
21
22
|
...rest
|
|
22
|
-
}:
|
|
23
|
+
}: MRT_TableContainerProps<TData>) => {
|
|
23
24
|
const {
|
|
24
25
|
getState,
|
|
25
26
|
options: {
|
|
@@ -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: {
|
|
@@ -31,7 +31,6 @@ 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 isMounted = useRef(false);
|
|
35
34
|
const initialBodyHeight = useRef<string>();
|
|
36
35
|
const previousTop = useRef<number>();
|
|
37
36
|
|
|
@@ -41,11 +40,12 @@ export const useMRT_Effects = <TData extends MRT_RowData>(
|
|
|
41
40
|
}
|
|
42
41
|
}, []);
|
|
43
42
|
|
|
43
|
+
//hide scrollbars when table is in full screen mode, preserve body scroll position after full screen exit
|
|
44
44
|
useEffect(() => {
|
|
45
|
-
if (
|
|
45
|
+
if (typeof window !== 'undefined') {
|
|
46
46
|
if (isFullScreen) {
|
|
47
47
|
previousTop.current = document.body.getBoundingClientRect().top; //save scroll position
|
|
48
|
-
document.body.style.height = '
|
|
48
|
+
document.body.style.height = '100dvh'; //hide page scrollbars when table is in full screen mode
|
|
49
49
|
} else {
|
|
50
50
|
document.body.style.height = initialBodyHeight.current as string;
|
|
51
51
|
if (!previousTop.current) return;
|
|
@@ -56,9 +56,15 @@ export const useMRT_Effects = <TData extends MRT_RowData>(
|
|
|
56
56
|
});
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
|
-
isMounted.current = true;
|
|
60
59
|
}, [isFullScreen]);
|
|
61
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
|
+
|
|
62
68
|
//if page index is out of bounds, set it to the last page
|
|
63
69
|
useEffect(() => {
|
|
64
70
|
if (!enablePagination || isLoading || showSkeletons) return;
|
|
@@ -86,6 +92,7 @@ export const useMRT_Effects = <TData extends MRT_RowData>(
|
|
|
86
92
|
}
|
|
87
93
|
}, [globalFilter]);
|
|
88
94
|
|
|
95
|
+
//fix pinned row top style when density changes
|
|
89
96
|
useEffect(() => {
|
|
90
97
|
if (enableRowPinning && getIsSomeRowsPinned()) {
|
|
91
98
|
setTimeout(() => {
|
|
@@ -93,11 +100,4 @@ export const useMRT_Effects = <TData extends MRT_RowData>(
|
|
|
93
100
|
}, 150);
|
|
94
101
|
}
|
|
95
102
|
}, [density]);
|
|
96
|
-
|
|
97
|
-
//recalculate column order when columns change or features are toggled on/off
|
|
98
|
-
useEffect(() => {
|
|
99
|
-
if (totalColumnCount !== columnOrder.length) {
|
|
100
|
-
table.setColumnOrder(getDefaultColumnOrderIds(table.options));
|
|
101
|
-
}
|
|
102
|
-
}, [totalColumnCount]);
|
|
103
103
|
};
|
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
|
};
|
|
@@ -53,6 +53,7 @@ import { useMRT_Effects } from './useMRT_Effects';
|
|
|
53
53
|
export const useMRT_TableInstance = <TData extends MRT_RowData>(
|
|
54
54
|
definedTableOptions: MRT_DefinedTableOptions<TData>,
|
|
55
55
|
): MRT_TableInstance<TData> => {
|
|
56
|
+
const lastSelectedRowId = useRef<null | string>(null);
|
|
56
57
|
const actionCellRef = useRef<HTMLTableCellElement>(null);
|
|
57
58
|
const bottomToolbarRef = useRef<HTMLDivElement>(null);
|
|
58
59
|
const editInputRefs = useRef<Record<string, HTMLInputElement>>({});
|
|
@@ -261,6 +262,7 @@ export const useMRT_TableInstance = <TData extends MRT_RowData>(
|
|
|
261
262
|
bottomToolbarRef,
|
|
262
263
|
editInputRefs,
|
|
263
264
|
filterInputRefs,
|
|
265
|
+
lastSelectedRowId,
|
|
264
266
|
searchInputRef,
|
|
265
267
|
tableContainerRef,
|
|
266
268
|
tableFooterRef,
|
|
@@ -56,6 +56,7 @@ export const useMRT_TableOptions: <TData extends MRT_RowData>(
|
|
|
56
56
|
defaultColumn,
|
|
57
57
|
defaultDisplayColumn,
|
|
58
58
|
editDisplayMode = 'modal',
|
|
59
|
+
enableBatchRowSelection = true,
|
|
59
60
|
enableBottomToolbar = true,
|
|
60
61
|
enableColumnActions = true,
|
|
61
62
|
enableColumnFilters = true,
|
|
@@ -180,6 +181,7 @@ export const useMRT_TableOptions: <TData extends MRT_RowData>(
|
|
|
180
181
|
defaultColumn,
|
|
181
182
|
defaultDisplayColumn,
|
|
182
183
|
editDisplayMode,
|
|
184
|
+
enableBatchRowSelection,
|
|
183
185
|
enableBottomToolbar,
|
|
184
186
|
enableColumnActions,
|
|
185
187
|
enableColumnFilters,
|
package/src/locales/ar.ts
CHANGED
|
@@ -8,6 +8,7 @@ export const MRT_Localization_AR: MRT_Localization = {
|
|
|
8
8
|
changeSearchMode: 'تغيير وضع البحث',
|
|
9
9
|
clearFilter: 'إعادة تعين المرشح',
|
|
10
10
|
clearSearch: 'إعادة تعيين البحث',
|
|
11
|
+
clearSelection: 'إعادة تعيين التحديد',
|
|
11
12
|
clearSort: 'إعادة تعيين الفرز',
|
|
12
13
|
clickToCopy: 'انقر للنسخ',
|
|
13
14
|
copy: 'نسخ',
|
package/src/locales/az.ts
CHANGED
|
@@ -8,6 +8,7 @@ export const MRT_Localization_AZ: MRT_Localization = {
|
|
|
8
8
|
changeSearchMode: 'Axtarış Rejimini Dəyiş',
|
|
9
9
|
clearFilter: 'Filteri təmizlə',
|
|
10
10
|
clearSearch: 'Axtarışı təmizlə',
|
|
11
|
+
clearSelection: 'Seçimi təmizlə',
|
|
11
12
|
clearSort: 'Sıralamanı sıfırla',
|
|
12
13
|
clickToCopy: 'Köçür',
|
|
13
14
|
copy: 'Köçür',
|
package/src/locales/bg.ts
CHANGED
|
@@ -8,6 +8,7 @@ export const MRT_Localization_BG: MRT_Localization = {
|
|
|
8
8
|
changeSearchMode: 'Промяна на режима на търсене',
|
|
9
9
|
clearFilter: 'Изчисти филтъра',
|
|
10
10
|
clearSearch: 'Изчисти търсенето',
|
|
11
|
+
clearSelection: 'Изчисти избора',
|
|
11
12
|
clearSort: 'Изчисти сортирането',
|
|
12
13
|
clickToCopy: 'Кликни, за да копираш',
|
|
13
14
|
copy: 'Копирай',
|
package/src/locales/cs.ts
CHANGED
|
@@ -8,6 +8,7 @@ export const MRT_Localization_CS: MRT_Localization = {
|
|
|
8
8
|
changeSearchMode: 'Změnit režim hledání',
|
|
9
9
|
clearFilter: 'Vyčistit filtr',
|
|
10
10
|
clearSearch: 'Vyčistit hledání',
|
|
11
|
+
clearSelection: 'Vyčistit výběr',
|
|
11
12
|
clearSort: 'vyčistit řazení',
|
|
12
13
|
clickToCopy: 'Kliknutím zkopírovat',
|
|
13
14
|
copy: 'Kopírovat',
|
package/src/locales/da.ts
CHANGED
|
@@ -8,6 +8,7 @@ export const MRT_Localization_DA: MRT_Localization = {
|
|
|
8
8
|
changeSearchMode: 'Skift søgetilstand',
|
|
9
9
|
clearFilter: 'Ryd filter',
|
|
10
10
|
clearSearch: 'Ryd søgning',
|
|
11
|
+
clearSelection: 'Ryd valg',
|
|
11
12
|
clearSort: 'Ryd sortering',
|
|
12
13
|
clickToCopy: 'Tryk for at kopiere',
|
|
13
14
|
copy: 'Kopier',
|
package/src/locales/de.ts
CHANGED
|
@@ -8,6 +8,7 @@ export const MRT_Localization_DE: MRT_Localization = {
|
|
|
8
8
|
changeSearchMode: 'Suchmodus ändern',
|
|
9
9
|
clearFilter: 'Filter zurücksetzen',
|
|
10
10
|
clearSearch: 'Suche zurücksetzen',
|
|
11
|
+
clearSelection: 'Auswahl zurücksetzen',
|
|
11
12
|
clearSort: 'Sortierung zurücksetzen',
|
|
12
13
|
clickToCopy: 'Kopieren',
|
|
13
14
|
copy: 'Kopieren',
|