material-react-table 1.0.10 → 1.1.0-beta.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/cjs/MaterialReactTable.d.ts +10 -3
- package/dist/cjs/body/MRT_TableBody.d.ts +2 -1
- package/dist/cjs/body/MRT_TableBodyCell.d.ts +2 -1
- package/dist/cjs/body/MRT_TableBodyRow.d.ts +2 -1
- package/dist/cjs/index.js +79 -48
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/table/MRT_TableRoot.d.ts +3 -2
- package/dist/esm/MaterialReactTable.d.ts +10 -3
- package/dist/esm/body/MRT_TableBody.d.ts +2 -1
- package/dist/esm/body/MRT_TableBodyCell.d.ts +2 -1
- package/dist/esm/body/MRT_TableBodyRow.d.ts +2 -1
- package/dist/esm/material-react-table.esm.js +81 -50
- package/dist/esm/material-react-table.esm.js.map +1 -1
- package/dist/esm/table/MRT_TableRoot.d.ts +3 -2
- package/dist/index.d.ts +10 -3
- package/package.json +1 -1
- package/src/MaterialReactTable.tsx +11 -3
- package/src/body/MRT_TableBody.tsx +18 -12
- package/src/body/MRT_TableBodyCell.tsx +7 -1
- package/src/body/MRT_TableBodyRow.tsx +36 -15
- package/src/body/MRT_TableDetailPanel.tsx +1 -1
- package/src/buttons/MRT_ExpandAllButton.tsx +1 -1
- package/src/buttons/MRT_ExpandButton.tsx +1 -1
- package/src/buttons/MRT_GrabHandleButton.tsx +1 -1
- package/src/buttons/MRT_ToggleRowActionMenuButton.tsx +1 -1
- package/src/column.utils.ts +1 -1
- package/src/head/MRT_TableHead.tsx +8 -3
- package/src/head/MRT_TableHeadCellColumnActionsButton.tsx +9 -7
- package/src/head/MRT_TableHeadCellResizeHandle.tsx +3 -1
- package/src/inputs/MRT_SelectCheckbox.tsx +51 -46
- package/src/table/MRT_Table.tsx +7 -2
- package/src/table/MRT_TablePaper.tsx +1 -1
- package/src/table/MRT_TableRoot.tsx +1 -1
- package/src/toolbar/MRT_TopToolbar.tsx +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Dispatch, MutableRefObject, ReactNode, SetStateAction } from 'react';
|
|
2
|
-
import type { AlertProps, ButtonProps, CheckboxProps, ChipProps, IconButtonProps, LinearProgressProps, PaperProps, SkeletonProps, TableBodyProps, TableCellProps, TableContainerProps, TableFooterProps, TableHeadProps, TablePaginationProps, TableProps, TableRowProps, TextFieldProps, ToolbarProps } from '@mui/material';
|
|
2
|
+
import type { AlertProps, ButtonProps, CheckboxProps, ChipProps, IconButtonProps, LinearProgressProps, PaperProps, RadioProps, SkeletonProps, TableBodyProps, TableCellProps, TableContainerProps, TableFooterProps, TableHeadProps, TablePaginationProps, TableProps, TableRowProps, TextFieldProps, ToolbarProps } from '@mui/material';
|
|
3
3
|
import type { Cell, Column, ColumnDef, DeepKeys, FilterFn, Header, HeaderGroup, OnChangeFn, Row, SortingFn, Table, TableOptions, TableState } from '@tanstack/react-table';
|
|
4
4
|
import type { Options as VirtualizerOptions, VirtualItem } from 'react-virtual';
|
|
5
5
|
import { MRT_Icons } from './icons';
|
|
@@ -448,6 +448,13 @@ export declare type MaterialReactTableProps<TData extends Record<string, any> =
|
|
|
448
448
|
* @link https://www.material-react-table.com/docs/guides/localization
|
|
449
449
|
*/
|
|
450
450
|
localization?: Partial<MRT_Localization>;
|
|
451
|
+
/**
|
|
452
|
+
* Memoize cells, rows, or the entire table body to potentially improve render performance.
|
|
453
|
+
*
|
|
454
|
+
* @warning This will break some dynamic rendering features. See the memoization guide for more info:
|
|
455
|
+
* @link https://www.material-react-table.com/docs/guides/memoize-components
|
|
456
|
+
*/
|
|
457
|
+
memoMode?: 'cell' | 'row' | 'table-body';
|
|
451
458
|
muiBottomToolbarProps?: ToolbarProps | (({ table }: {
|
|
452
459
|
table: MRT_TableInstance<TData>;
|
|
453
460
|
}) => ToolbarProps);
|
|
@@ -468,10 +475,10 @@ export declare type MaterialReactTableProps<TData extends Record<string, any> =
|
|
|
468
475
|
muiSelectAllCheckboxProps?: CheckboxProps | (({ table }: {
|
|
469
476
|
table: MRT_TableInstance<TData>;
|
|
470
477
|
}) => CheckboxProps);
|
|
471
|
-
muiSelectCheckboxProps?: CheckboxProps | (({ table, row, }: {
|
|
478
|
+
muiSelectCheckboxProps?: (CheckboxProps | RadioProps) | (({ table, row, }: {
|
|
472
479
|
table: MRT_TableInstance<TData>;
|
|
473
480
|
row: MRT_Row<TData>;
|
|
474
|
-
}) => CheckboxProps);
|
|
481
|
+
}) => CheckboxProps | RadioProps);
|
|
475
482
|
muiTableBodyCellCopyButtonProps?: ButtonProps | (({ cell, column, row, table, }: {
|
|
476
483
|
cell: MRT_Cell<TData>;
|
|
477
484
|
column: MRT_Column<TData>;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { FC } from 'react';
|
|
1
|
+
import React, { FC } from 'react';
|
|
2
2
|
import type { MRT_TableInstance } from '..';
|
|
3
3
|
interface Props {
|
|
4
4
|
table: MRT_TableInstance;
|
|
5
5
|
}
|
|
6
6
|
export declare const MRT_TableBody: FC<Props>;
|
|
7
|
+
export declare const Memo_MRT_TableBody: React.NamedExoticComponent<Props>;
|
|
7
8
|
export {};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { FC, RefObject } from 'react';
|
|
1
|
+
import React, { FC, RefObject } from 'react';
|
|
2
2
|
import type { MRT_Cell, MRT_TableInstance } from '..';
|
|
3
3
|
interface Props {
|
|
4
4
|
cell: MRT_Cell;
|
|
@@ -8,4 +8,5 @@ interface Props {
|
|
|
8
8
|
table: MRT_TableInstance;
|
|
9
9
|
}
|
|
10
10
|
export declare const MRT_TableBodyCell: FC<Props>;
|
|
11
|
+
export declare const Memo_MRT_TableBodyCell: React.NamedExoticComponent<Props>;
|
|
11
12
|
export {};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { FC } from 'react';
|
|
1
|
+
import React, { FC } from 'react';
|
|
2
2
|
import type { MRT_Row, MRT_TableInstance } from '..';
|
|
3
3
|
interface Props {
|
|
4
4
|
row: MRT_Row;
|
|
@@ -7,4 +7,5 @@ interface Props {
|
|
|
7
7
|
virtualRow?: any;
|
|
8
8
|
}
|
|
9
9
|
export declare const MRT_TableBodyRow: FC<Props>;
|
|
10
|
+
export declare const Memo_MRT_TableBodyRow: React.NamedExoticComponent<Props>;
|
|
10
11
|
export {};
|
package/dist/cjs/index.js
CHANGED
|
@@ -281,7 +281,7 @@ const MRT_ExpandAllButton = ({ table }) => {
|
|
|
281
281
|
: getIsSomeRowsExpanded()
|
|
282
282
|
? -90
|
|
283
283
|
: 0}deg)`,
|
|
284
|
-
transition: 'transform
|
|
284
|
+
transition: 'transform 150ms',
|
|
285
285
|
} })))));
|
|
286
286
|
};
|
|
287
287
|
|
|
@@ -309,7 +309,7 @@ const MRT_ExpandButton = ({ row, table }) => {
|
|
|
309
309
|
: row.getIsExpanded()
|
|
310
310
|
? -180
|
|
311
311
|
: 0}deg)`,
|
|
312
|
-
transition: 'transform
|
|
312
|
+
transition: 'transform 150ms',
|
|
313
313
|
} })))));
|
|
314
314
|
};
|
|
315
315
|
|
|
@@ -497,7 +497,7 @@ const MRT_GrabHandleButton = ({ iconButtonProps, onDragEnd, onDragStart, table,
|
|
|
497
497
|
var _a;
|
|
498
498
|
e.stopPropagation();
|
|
499
499
|
(_a = iconButtonProps === null || iconButtonProps === void 0 ? void 0 : iconButtonProps.onClick) === null || _a === void 0 ? void 0 : _a.call(iconButtonProps, e);
|
|
500
|
-
}, onDragStart: onDragStart, onDragEnd: onDragEnd, sx: (theme) => (Object.assign({ cursor: 'grab', m: 0, opacity: 0.5, p: '2px', transition: 'all
|
|
500
|
+
}, onDragStart: onDragStart, onDragEnd: onDragEnd, sx: (theme) => (Object.assign({ cursor: 'grab', m: 0, opacity: 0.5, p: '2px', transition: 'all 150ms ease-in-out', '&:hover': {
|
|
501
501
|
backgroundColor: 'transparent',
|
|
502
502
|
opacity: 1,
|
|
503
503
|
}, '&:active': {
|
|
@@ -641,7 +641,7 @@ const getCommonCellStyles = ({ column, header, table, tableCellProps, theme, })
|
|
|
641
641
|
? 'sticky'
|
|
642
642
|
: undefined, right: column.getIsPinned() === 'right'
|
|
643
643
|
? `${getTotalRight(table, column)}px`
|
|
644
|
-
: undefined, transition: `all ${column.getIsResizing() ? 0 : '
|
|
644
|
+
: undefined, transition: `all ${column.getIsResizing() ? 0 : '150ms'} ease-in-out` }, ((tableCellProps === null || tableCellProps === void 0 ? void 0 : tableCellProps.sx) instanceof Function
|
|
645
645
|
? tableCellProps.sx(theme)
|
|
646
646
|
: tableCellProps === null || tableCellProps === void 0 ? void 0 : tableCellProps.sx)), { maxWidth: `min(${column.getSize()}px, fit-content)`, minWidth: `max(${column.getSize()}px, ${(_c = column.columnDef.minSize) !== null && _c !== void 0 ? _c : 30}px)`, width: (_d = header === null || header === void 0 ? void 0 : header.getSize()) !== null && _d !== void 0 ? _d : column.getSize() }));
|
|
647
647
|
};
|
|
@@ -1015,7 +1015,7 @@ const commonIconButtonStyles = {
|
|
|
1015
1015
|
height: '2rem',
|
|
1016
1016
|
ml: '10px',
|
|
1017
1017
|
opacity: 0.5,
|
|
1018
|
-
transition: 'opacity
|
|
1018
|
+
transition: 'opacity 150ms',
|
|
1019
1019
|
width: '2rem',
|
|
1020
1020
|
'&:hover': {
|
|
1021
1021
|
opacity: 1,
|
|
@@ -1046,7 +1046,7 @@ const MRT_ToggleRowActionMenuButton = ({ cell, row, table, }) => {
|
|
|
1046
1046
|
|
|
1047
1047
|
const MRT_SelectCheckbox = ({ row, selectAll, table }) => {
|
|
1048
1048
|
var _a;
|
|
1049
|
-
const { getState, options: { localization, muiSelectCheckboxProps, muiSelectAllCheckboxProps, selectAllMode, }, } = table;
|
|
1049
|
+
const { getState, options: { localization, enableMultiRowSelection, muiSelectCheckboxProps, muiSelectAllCheckboxProps, selectAllMode, }, } = table;
|
|
1050
1050
|
const { density } = getState();
|
|
1051
1051
|
const checkboxProps = !row
|
|
1052
1052
|
? muiSelectAllCheckboxProps instanceof Function
|
|
@@ -1055,33 +1055,33 @@ const MRT_SelectCheckbox = ({ row, selectAll, table }) => {
|
|
|
1055
1055
|
: muiSelectCheckboxProps instanceof Function
|
|
1056
1056
|
? muiSelectCheckboxProps({ row, table })
|
|
1057
1057
|
: muiSelectCheckboxProps;
|
|
1058
|
+
const commonProps = Object.assign(Object.assign({ checked: selectAll
|
|
1059
|
+
? selectAllMode === 'page'
|
|
1060
|
+
? table.getIsAllPageRowsSelected()
|
|
1061
|
+
: table.getIsAllRowsSelected()
|
|
1062
|
+
: row === null || row === void 0 ? void 0 : row.getIsSelected(), inputProps: {
|
|
1063
|
+
'aria-label': selectAll
|
|
1064
|
+
? localization.toggleSelectAll
|
|
1065
|
+
: localization.toggleSelectRow,
|
|
1066
|
+
}, onChange: row
|
|
1067
|
+
? row.getToggleSelectedHandler()
|
|
1068
|
+
: selectAllMode === 'all'
|
|
1069
|
+
? table.getToggleAllRowsSelectedHandler()
|
|
1070
|
+
: table.getToggleAllPageRowsSelectedHandler(), size: (density === 'compact' ? 'small' : 'medium') }, checkboxProps), { onClick: (e) => {
|
|
1071
|
+
var _a;
|
|
1072
|
+
e.stopPropagation();
|
|
1073
|
+
(_a = checkboxProps === null || checkboxProps === void 0 ? void 0 : checkboxProps.onClick) === null || _a === void 0 ? void 0 : _a.call(checkboxProps, e);
|
|
1074
|
+
}, sx: (theme) => (Object.assign({ height: density === 'compact' ? '1.75rem' : '2.5rem', width: density === 'compact' ? '1.75rem' : '2.5rem', m: density !== 'compact' ? '-0.4rem' : undefined }, ((checkboxProps === null || checkboxProps === void 0 ? void 0 : checkboxProps.sx) instanceof Function
|
|
1075
|
+
? checkboxProps.sx(theme)
|
|
1076
|
+
: checkboxProps === null || checkboxProps === void 0 ? void 0 : checkboxProps.sx))), title: undefined });
|
|
1058
1077
|
return (React__default["default"].createElement(material.Tooltip, { arrow: true, enterDelay: 1000, enterNextDelay: 1000, title: (_a = checkboxProps === null || checkboxProps === void 0 ? void 0 : checkboxProps.title) !== null && _a !== void 0 ? _a : (selectAll
|
|
1059
1078
|
? localization.toggleSelectAll
|
|
1060
|
-
: localization.toggleSelectRow) },
|
|
1061
|
-
|
|
1062
|
-
|
|
1079
|
+
: localization.toggleSelectRow) }, enableMultiRowSelection === false ? (React__default["default"].createElement(material.Radio, Object.assign({}, commonProps))) : (React__default["default"].createElement(material.Checkbox, Object.assign({ indeterminate: selectAll
|
|
1080
|
+
? table.getIsSomeRowsSelected() &&
|
|
1081
|
+
!(selectAllMode === 'page'
|
|
1063
1082
|
? table.getIsAllPageRowsSelected()
|
|
1064
|
-
: table.getIsAllRowsSelected()
|
|
1065
|
-
|
|
1066
|
-
? table.getIsSomeRowsSelected() &&
|
|
1067
|
-
!(selectAllMode === 'page'
|
|
1068
|
-
? table.getIsAllPageRowsSelected()
|
|
1069
|
-
: table.getIsAllRowsSelected())
|
|
1070
|
-
: row === null || row === void 0 ? void 0 : row.getIsSomeSelected(), inputProps: {
|
|
1071
|
-
'aria-label': selectAll
|
|
1072
|
-
? localization.toggleSelectAll
|
|
1073
|
-
: localization.toggleSelectRow,
|
|
1074
|
-
}, onChange: row
|
|
1075
|
-
? row.getToggleSelectedHandler()
|
|
1076
|
-
: selectAllMode === 'all'
|
|
1077
|
-
? table.getToggleAllRowsSelectedHandler()
|
|
1078
|
-
: table.getToggleAllPageRowsSelectedHandler(), size: density === 'compact' ? 'small' : 'medium' }, checkboxProps, { onClick: (e) => {
|
|
1079
|
-
var _a;
|
|
1080
|
-
e.stopPropagation();
|
|
1081
|
-
(_a = checkboxProps === null || checkboxProps === void 0 ? void 0 : checkboxProps.onClick) === null || _a === void 0 ? void 0 : _a.call(checkboxProps, e);
|
|
1082
|
-
}, sx: (theme) => (Object.assign({ height: density === 'compact' ? '1.75rem' : '2.5rem', width: density === 'compact' ? '1.75rem' : '2.5rem', m: density !== 'compact' ? '-0.4rem' : undefined }, ((checkboxProps === null || checkboxProps === void 0 ? void 0 : checkboxProps.sx) instanceof Function
|
|
1083
|
-
? checkboxProps.sx(theme)
|
|
1084
|
-
: checkboxProps === null || checkboxProps === void 0 ? void 0 : checkboxProps.sx))), title: undefined }))));
|
|
1083
|
+
: table.getIsAllRowsSelected())
|
|
1084
|
+
: row === null || row === void 0 ? void 0 : row.getIsSomeSelected() }, commonProps)))));
|
|
1085
1085
|
};
|
|
1086
1086
|
|
|
1087
1087
|
const MRT_GlobalFilterTextField = ({ table, }) => {
|
|
@@ -1344,7 +1344,7 @@ const commonToolbarStyles = ({ theme }) => ({
|
|
|
1344
1344
|
minHeight: '3.5rem',
|
|
1345
1345
|
overflow: 'hidden',
|
|
1346
1346
|
p: '0 !important',
|
|
1347
|
-
transition: 'all
|
|
1347
|
+
transition: 'all 150ms ease-in-out',
|
|
1348
1348
|
zIndex: 1,
|
|
1349
1349
|
});
|
|
1350
1350
|
const MRT_TopToolbar = ({ table }) => {
|
|
@@ -1454,13 +1454,13 @@ const MRT_TableHeadCellColumnActionsButton = ({ header, table, }) => {
|
|
|
1454
1454
|
const iconButtonProps = Object.assign(Object.assign({}, mTableHeadCellColumnActionsButtonProps), mcTableHeadCellColumnActionsButtonProps);
|
|
1455
1455
|
return (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
1456
1456
|
React__default["default"].createElement(material.Tooltip, { arrow: true, enterDelay: 1000, enterNextDelay: 1000, placement: "top", title: (_a = iconButtonProps === null || iconButtonProps === void 0 ? void 0 : iconButtonProps.title) !== null && _a !== void 0 ? _a : localization.columnActions },
|
|
1457
|
-
React__default["default"].createElement(material.IconButton, Object.assign({ "aria-label": localization.columnActions, onClick: handleClick, size: "small" }, iconButtonProps, { sx: (theme) => (Object.assign({ height: '2rem', mt: '-0.2rem', opacity: 0.5, transition: 'opacity
|
|
1457
|
+
React__default["default"].createElement(material.IconButton, Object.assign({ "aria-label": localization.columnActions, onClick: handleClick, size: "small" }, iconButtonProps, { sx: (theme) => (Object.assign({ height: '2rem', mt: '-0.2rem', opacity: 0.5, transition: 'opacity 150ms', width: '2rem', '&:hover': {
|
|
1458
1458
|
opacity: 1,
|
|
1459
1459
|
} }, ((iconButtonProps === null || iconButtonProps === void 0 ? void 0 : iconButtonProps.sx) instanceof Function
|
|
1460
1460
|
? iconButtonProps.sx(theme)
|
|
1461
1461
|
: iconButtonProps === null || iconButtonProps === void 0 ? void 0 : iconButtonProps.sx))), title: undefined }),
|
|
1462
1462
|
React__default["default"].createElement(MoreVertIcon, null))),
|
|
1463
|
-
React__default["default"].createElement(MRT_ColumnActionMenu, { anchorEl: anchorEl, header: header, setAnchorEl: setAnchorEl, table: table })));
|
|
1463
|
+
anchorEl && (React__default["default"].createElement(MRT_ColumnActionMenu, { anchorEl: anchorEl, header: header, setAnchorEl: setAnchorEl, table: table }))));
|
|
1464
1464
|
};
|
|
1465
1465
|
|
|
1466
1466
|
const MRT_FilterTextField = ({ header, rangeFilterIndex, table, }) => {
|
|
@@ -1798,7 +1798,9 @@ const MRT_TableHeadCellResizeHandle = ({ header, table }) => {
|
|
|
1798
1798
|
position: 'absolute',
|
|
1799
1799
|
right: '1px',
|
|
1800
1800
|
touchAction: 'none',
|
|
1801
|
-
transition: column.getIsResizing()
|
|
1801
|
+
transition: column.getIsResizing()
|
|
1802
|
+
? undefined
|
|
1803
|
+
: 'all 150ms ease-in-out',
|
|
1802
1804
|
userSelect: 'none',
|
|
1803
1805
|
zIndex: 4,
|
|
1804
1806
|
'&:active': {
|
|
@@ -1959,11 +1961,13 @@ const MRT_TableHeadRow = ({ headerGroup, table }) => {
|
|
|
1959
1961
|
};
|
|
1960
1962
|
|
|
1961
1963
|
const MRT_TableHead = ({ table }) => {
|
|
1962
|
-
const { getHeaderGroups, options: { enableStickyHeader, muiTableHeadProps }, } = table;
|
|
1964
|
+
const { getHeaderGroups, getState, options: { enableStickyHeader, muiTableHeadProps, enableRowVirtualization }, } = table;
|
|
1965
|
+
const { isFullScreen } = getState();
|
|
1963
1966
|
const tableHeadProps = muiTableHeadProps instanceof Function
|
|
1964
1967
|
? muiTableHeadProps({ table })
|
|
1965
1968
|
: muiTableHeadProps;
|
|
1966
|
-
|
|
1969
|
+
const stickyHeader = enableStickyHeader || enableRowVirtualization || isFullScreen;
|
|
1970
|
+
return (React__default["default"].createElement(material.TableHead, Object.assign({}, tableHeadProps, { sx: (theme) => (Object.assign({ opacity: 0.97, position: stickyHeader ? 'sticky' : undefined, zIndex: stickyHeader ? 2 : undefined }, ((tableHeadProps === null || tableHeadProps === void 0 ? void 0 : tableHeadProps.sx) instanceof Function
|
|
1967
1971
|
? tableHeadProps === null || tableHeadProps === void 0 ? void 0 : tableHeadProps.sx(theme)
|
|
1968
1972
|
: tableHeadProps === null || tableHeadProps === void 0 ? void 0 : tableHeadProps.sx))) }), getHeaderGroups().map((headerGroup) => (React__default["default"].createElement(MRT_TableHeadRow, { headerGroup: headerGroup, key: headerGroup.id, table: table })))));
|
|
1969
1973
|
};
|
|
@@ -2180,7 +2184,7 @@ const MRT_TableBodyCell = ({ cell, enableHover, rowIndex, rowRef, table, }) => {
|
|
|
2180
2184
|
: undefined,
|
|
2181
2185
|
}
|
|
2182
2186
|
: undefined;
|
|
2183
|
-
return (React__default["default"].createElement(material.TableCell, Object.assign({}, tableCellProps, { onDragEnter: handleDragEnter, onDoubleClick: handleDoubleClick, sx: (theme) => (Object.assign(Object.assign({ cursor: isEditable && editingMode === 'cell' ? 'pointer' : '
|
|
2187
|
+
return (React__default["default"].createElement(material.TableCell, Object.assign({}, tableCellProps, { onDragEnter: handleDragEnter, onDoubleClick: handleDoubleClick, sx: (theme) => (Object.assign(Object.assign({ cursor: isEditable && editingMode === 'cell' ? 'pointer' : 'inherit', overflow: 'hidden', p: density === 'compact'
|
|
2184
2188
|
? columnDefType === 'display'
|
|
2185
2189
|
? '0 0.5rem'
|
|
2186
2190
|
: '0.5rem'
|
|
@@ -2220,6 +2224,7 @@ const MRT_TableBodyCell = ({ cell, enableHover, rowIndex, rowRef, table, }) => {
|
|
|
2220
2224
|
_b.length,
|
|
2221
2225
|
")"))));
|
|
2222
2226
|
};
|
|
2227
|
+
const Memo_MRT_TableBodyCell = React.memo(MRT_TableBodyCell, (prev, next) => next.cell === prev.cell);
|
|
2223
2228
|
|
|
2224
2229
|
const MRT_TableDetailPanel = ({ row, table }) => {
|
|
2225
2230
|
const { getVisibleLeafColumns, options: { muiTableBodyRowProps, muiTableDetailPanelProps, renderDetailPanel, }, } = table;
|
|
@@ -2230,7 +2235,7 @@ const MRT_TableDetailPanel = ({ row, table }) => {
|
|
|
2230
2235
|
? muiTableDetailPanelProps({ row, table })
|
|
2231
2236
|
: muiTableDetailPanelProps;
|
|
2232
2237
|
return (React__default["default"].createElement(material.TableRow, Object.assign({}, tableRowProps),
|
|
2233
|
-
React__default["default"].createElement(material.TableCell, Object.assign({ colSpan: getVisibleLeafColumns().length }, tableCellProps, { sx: (theme) => (Object.assign({ borderBottom: !row.getIsExpanded() ? 'none' : undefined, pb: row.getIsExpanded() ? '1rem' : 0, pt: row.getIsExpanded() ? '1rem' : 0, transition: 'all
|
|
2238
|
+
React__default["default"].createElement(material.TableCell, Object.assign({ colSpan: getVisibleLeafColumns().length }, tableCellProps, { sx: (theme) => (Object.assign({ borderBottom: !row.getIsExpanded() ? 'none' : undefined, pb: row.getIsExpanded() ? '1rem' : 0, pt: row.getIsExpanded() ? '1rem' : 0, transition: 'all 150ms ease-in-out', width: `${table.getTotalSize()}px` }, ((tableCellProps === null || tableCellProps === void 0 ? void 0 : tableCellProps.sx) instanceof Function
|
|
2234
2239
|
? tableCellProps.sx(theme)
|
|
2235
2240
|
: tableCellProps === null || tableCellProps === void 0 ? void 0 : tableCellProps.sx))) }), renderDetailPanel && (React__default["default"].createElement(material.Collapse, { in: row.getIsExpanded() }, renderDetailPanel({ row, table }))))));
|
|
2236
2241
|
};
|
|
@@ -2238,8 +2243,8 @@ const MRT_TableDetailPanel = ({ row, table }) => {
|
|
|
2238
2243
|
const MRT_TableBodyRow = ({ row, rowIndex, table, virtualRow, }) => {
|
|
2239
2244
|
var _a, _b;
|
|
2240
2245
|
const theme = material.useTheme();
|
|
2241
|
-
const { getIsSomeColumnsPinned, getState, options: { enableRowOrdering, muiTableBodyRowProps, renderDetailPanel }, setHoveredRow, } = table;
|
|
2242
|
-
const { draggingRow, hoveredRow } = getState();
|
|
2246
|
+
const { getIsSomeColumnsPinned, getState, options: { enableRowOrdering, memoMode, muiTableBodyRowProps, renderDetailPanel, }, setHoveredRow, } = table;
|
|
2247
|
+
const { draggingColumn, draggingRow, editingCell, editingRow, hoveredRow } = getState();
|
|
2243
2248
|
const tableRowProps = muiTableBodyRowProps instanceof Function
|
|
2244
2249
|
? muiTableBodyRowProps({ row, table })
|
|
2245
2250
|
: muiTableBodyRowProps;
|
|
@@ -2265,7 +2270,7 @@ const MRT_TableBodyRow = ({ row, rowIndex, table, virtualRow, }) => {
|
|
|
2265
2270
|
if (virtualRow === null || virtualRow === void 0 ? void 0 : virtualRow.measureRef) {
|
|
2266
2271
|
virtualRow.measureRef = node;
|
|
2267
2272
|
}
|
|
2268
|
-
} }, tableRowProps, { sx: (theme) => (Object.assign(Object.assign({ backgroundColor: material.lighten(theme.palette.background.default, 0.06), opacity: (draggingRow === null || draggingRow === void 0 ? void 0 : draggingRow.id) === row.id || (hoveredRow === null || hoveredRow === void 0 ? void 0 : hoveredRow.id) === row.id ? 0.5 : 1, transition: 'all
|
|
2273
|
+
} }, tableRowProps, { sx: (theme) => (Object.assign(Object.assign({ backgroundColor: material.lighten(theme.palette.background.default, 0.06), opacity: (draggingRow === null || draggingRow === void 0 ? void 0 : draggingRow.id) === row.id || (hoveredRow === null || hoveredRow === void 0 ? void 0 : hoveredRow.id) === row.id ? 0.5 : 1, transition: 'all 150ms ease-in-out', '&:hover td': {
|
|
2269
2274
|
backgroundColor: (tableRowProps === null || tableRowProps === void 0 ? void 0 : tableRowProps.hover) !== false && getIsSomeColumnsPinned()
|
|
2270
2275
|
? theme.palette.mode === 'dark'
|
|
2271
2276
|
? `${material.lighten(theme.palette.background.default, 0.12)}`
|
|
@@ -2273,13 +2278,29 @@ const MRT_TableBodyRow = ({ row, rowIndex, table, virtualRow, }) => {
|
|
|
2273
2278
|
: undefined,
|
|
2274
2279
|
} }, ((tableRowProps === null || tableRowProps === void 0 ? void 0 : tableRowProps.sx) instanceof Function
|
|
2275
2280
|
? tableRowProps.sx(theme)
|
|
2276
|
-
: tableRowProps === null || tableRowProps === void 0 ? void 0 : tableRowProps.sx)), draggingBorders)) }), (_b = (_a = row === null || row === void 0 ? void 0 : row.getVisibleCells()) === null || _a === void 0 ? void 0 : _a.map) === null || _b === void 0 ? void 0 : _b.call(_a, (cell) =>
|
|
2281
|
+
: tableRowProps === null || tableRowProps === void 0 ? void 0 : tableRowProps.sx)), draggingBorders)) }), (_b = (_a = row === null || row === void 0 ? void 0 : row.getVisibleCells()) === null || _a === void 0 ? void 0 : _a.map) === null || _b === void 0 ? void 0 : _b.call(_a, (cell) => {
|
|
2282
|
+
const props = {
|
|
2283
|
+
cell,
|
|
2284
|
+
enableHover: (tableRowProps === null || tableRowProps === void 0 ? void 0 : tableRowProps.hover) !== false,
|
|
2285
|
+
key: cell.id,
|
|
2286
|
+
rowIndex,
|
|
2287
|
+
rowRef,
|
|
2288
|
+
table,
|
|
2289
|
+
};
|
|
2290
|
+
return memoMode === 'cell' &&
|
|
2291
|
+
cell.column.columnDef.columnDefType === 'data' &&
|
|
2292
|
+
!draggingColumn &&
|
|
2293
|
+
!draggingRow &&
|
|
2294
|
+
(editingCell === null || editingCell === void 0 ? void 0 : editingCell.id) !== cell.id &&
|
|
2295
|
+
(editingRow === null || editingRow === void 0 ? void 0 : editingRow.id) !== row.id ? (React__default["default"].createElement(Memo_MRT_TableBodyCell, Object.assign({}, props))) : (React__default["default"].createElement(MRT_TableBodyCell, Object.assign({}, props)));
|
|
2296
|
+
})),
|
|
2277
2297
|
renderDetailPanel && !row.getIsGrouped() && (React__default["default"].createElement(MRT_TableDetailPanel, { row: row, table: table }))));
|
|
2278
2298
|
};
|
|
2299
|
+
const Memo_MRT_TableBodyRow = React.memo(MRT_TableBodyRow, (prev, next) => prev.row === next.row);
|
|
2279
2300
|
|
|
2280
2301
|
const MRT_TableBody = ({ table }) => {
|
|
2281
2302
|
var _a;
|
|
2282
|
-
const { getRowModel, getPrePaginationRowModel, getState, options: { enableGlobalFilterRankedResults, enablePagination, enableRowVirtualization, localization, manualFiltering, manualSorting, muiTableBodyProps, virtualizerInstanceRef, virtualizerProps, }, refs: { tableContainerRef, tablePaperRef }, } = table;
|
|
2303
|
+
const { getRowModel, getPrePaginationRowModel, getState, options: { enableGlobalFilterRankedResults, enablePagination, enableRowVirtualization, localization, manualFiltering, manualSorting, memoMode, muiTableBodyProps, virtualizerInstanceRef, virtualizerProps, }, refs: { tableContainerRef, tablePaperRef }, } = table;
|
|
2283
2304
|
const { columnFilters, globalFilter, pagination, sorting } = getState();
|
|
2284
2305
|
const tableBodyProps = muiTableBodyProps instanceof Function
|
|
2285
2306
|
? muiTableBodyProps({ table })
|
|
@@ -2363,11 +2384,21 @@ const MRT_TableBody = ({ table }) => {
|
|
|
2363
2384
|
const row = enableRowVirtualization
|
|
2364
2385
|
? rows[rowOrVirtualRow.index]
|
|
2365
2386
|
: rowOrVirtualRow;
|
|
2366
|
-
|
|
2387
|
+
const props = {
|
|
2388
|
+
key: row.id,
|
|
2389
|
+
row,
|
|
2390
|
+
rowIndex: enableRowVirtualization
|
|
2391
|
+
? rowOrVirtualRow.index
|
|
2392
|
+
: rowIndex,
|
|
2393
|
+
table,
|
|
2394
|
+
virtualRow: enableRowVirtualization ? rowOrVirtualRow : null,
|
|
2395
|
+
};
|
|
2396
|
+
return memoMode === 'row' ? (React__default["default"].createElement(Memo_MRT_TableBodyRow, Object.assign({}, props))) : (React__default["default"].createElement(MRT_TableBodyRow, Object.assign({}, props)));
|
|
2367
2397
|
}),
|
|
2368
2398
|
enableRowVirtualization && paddingBottom > 0 && (React__default["default"].createElement("tr", null,
|
|
2369
2399
|
React__default["default"].createElement("td", { style: { height: `${paddingBottom}px` } })))))));
|
|
2370
2400
|
};
|
|
2401
|
+
const Memo_MRT_TableBody = React.memo(MRT_TableBody, () => true);
|
|
2371
2402
|
|
|
2372
2403
|
const MRT_TableFooterCell = ({ footer, table }) => {
|
|
2373
2404
|
var _a, _b, _c;
|
|
@@ -2430,7 +2461,7 @@ const MRT_TableFooter = ({ table }) => {
|
|
|
2430
2461
|
};
|
|
2431
2462
|
|
|
2432
2463
|
const MRT_Table = ({ table }) => {
|
|
2433
|
-
const { getState, options: { enableColumnResizing, enableRowVirtualization, enableStickyHeader, enableTableFooter, enableTableHead, muiTableProps, }, } = table;
|
|
2464
|
+
const { getState, options: { enableColumnResizing, enableRowVirtualization, enableStickyHeader, enableTableFooter, enableTableHead, memoMode, muiTableProps, }, } = table;
|
|
2434
2465
|
const { isFullScreen } = getState();
|
|
2435
2466
|
const tableProps = muiTableProps instanceof Function
|
|
2436
2467
|
? muiTableProps({ table })
|
|
@@ -2439,7 +2470,7 @@ const MRT_Table = ({ table }) => {
|
|
|
2439
2470
|
? tableProps.sx(theme)
|
|
2440
2471
|
: tableProps === null || tableProps === void 0 ? void 0 : tableProps.sx))) }),
|
|
2441
2472
|
enableTableHead && React__default["default"].createElement(MRT_TableHead, { table: table }),
|
|
2442
|
-
React__default["default"].createElement(MRT_TableBody, { table: table }),
|
|
2473
|
+
memoMode === 'table-body' ? (React__default["default"].createElement(Memo_MRT_TableBody, { table: table })) : (React__default["default"].createElement(MRT_TableBody, { table: table })),
|
|
2443
2474
|
enableTableFooter && React__default["default"].createElement(MRT_TableFooter, { table: table })));
|
|
2444
2475
|
};
|
|
2445
2476
|
|
|
@@ -2489,7 +2520,7 @@ const MRT_TablePaper = ({ table }) => {
|
|
|
2489
2520
|
//@ts-ignore
|
|
2490
2521
|
tablePaperProps.ref.current = ref;
|
|
2491
2522
|
}
|
|
2492
|
-
}, sx: (theme) => (Object.assign({ transition: 'all
|
|
2523
|
+
}, sx: (theme) => (Object.assign({ transition: 'all 150ms ease-in-out' }, ((tablePaperProps === null || tablePaperProps === void 0 ? void 0 : tablePaperProps.sx) instanceof Function
|
|
2493
2524
|
? tablePaperProps === null || tablePaperProps === void 0 ? void 0 : tablePaperProps.sx(theme)
|
|
2494
2525
|
: tablePaperProps === null || tablePaperProps === void 0 ? void 0 : tablePaperProps.sx))), style: Object.assign(Object.assign({}, tablePaperProps === null || tablePaperProps === void 0 ? void 0 : tablePaperProps.style), (isFullScreen
|
|
2495
2526
|
? {
|
|
@@ -2580,7 +2611,7 @@ const MRT_TableRoot = (props) => {
|
|
|
2580
2611
|
columnOrder.includes('mrt-row-actions') && Object.assign(Object.assign(Object.assign({ Cell: ({ cell, row }) => (React__default["default"].createElement(MRT_ToggleRowActionMenuButton, { cell: cell, row: row, table: table })), header: props.localization.actions, size: 70 }, props.defaultDisplayColumn), (_b = props.displayColumnDefOptions) === null || _b === void 0 ? void 0 : _b['mrt-row-actions']), { id: 'mrt-row-actions' }),
|
|
2581
2612
|
columnOrder.includes('mrt-row-expand') &&
|
|
2582
2613
|
showExpandColumn(props, grouping) && Object.assign(Object.assign(Object.assign({ Cell: ({ row }) => (React__default["default"].createElement(MRT_ExpandButton, { row: row, table: table })), Header: () => props.enableExpandAll ? (React__default["default"].createElement(MRT_ExpandAllButton, { table: table })) : null, header: props.localization.expand, size: 60 }, props.defaultDisplayColumn), (_c = props.displayColumnDefOptions) === null || _c === void 0 ? void 0 : _c['mrt-row-expand']), { id: 'mrt-row-expand' }),
|
|
2583
|
-
columnOrder.includes('mrt-row-select') && Object.assign(Object.assign(Object.assign({ Cell: ({ row }) => (React__default["default"].createElement(MRT_SelectCheckbox, { row: row, table: table })), Header: () => props.enableSelectAll ? (React__default["default"].createElement(MRT_SelectCheckbox, { selectAll: true, table: table })) : null, header: props.localization.select, size: 60 }, props.defaultDisplayColumn), (_d = props.displayColumnDefOptions) === null || _d === void 0 ? void 0 : _d['mrt-row-select']), { id: 'mrt-row-select' }),
|
|
2614
|
+
columnOrder.includes('mrt-row-select') && Object.assign(Object.assign(Object.assign({ Cell: ({ row }) => (React__default["default"].createElement(MRT_SelectCheckbox, { row: row, table: table })), Header: () => props.enableSelectAll && props.enableMultiRowSelection ? (React__default["default"].createElement(MRT_SelectCheckbox, { selectAll: true, table: table })) : null, header: props.localization.select, size: 60 }, props.defaultDisplayColumn), (_d = props.displayColumnDefOptions) === null || _d === void 0 ? void 0 : _d['mrt-row-select']), { id: 'mrt-row-select' }),
|
|
2584
2615
|
columnOrder.includes('mrt-row-numbers') && Object.assign(Object.assign(Object.assign({ Cell: ({ row }) => row.index + 1, Header: () => props.localization.rowNumber, header: props.localization.rowNumbers, size: 60 }, props.defaultDisplayColumn), (_e = props.displayColumnDefOptions) === null || _e === void 0 ? void 0 : _e['mrt-row-numbers']), { id: 'mrt-row-numbers' }),
|
|
2585
2616
|
].filter(Boolean);
|
|
2586
2617
|
}, [
|