material-react-table 1.0.11 → 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 +75 -46
- 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 +77 -48
- 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_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': {
|
|
@@ -2182,7 +2184,7 @@ const MRT_TableBodyCell = ({ cell, enableHover, rowIndex, rowRef, table, }) => {
|
|
|
2182
2184
|
: undefined,
|
|
2183
2185
|
}
|
|
2184
2186
|
: undefined;
|
|
2185
|
-
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'
|
|
2186
2188
|
? columnDefType === 'display'
|
|
2187
2189
|
? '0 0.5rem'
|
|
2188
2190
|
: '0.5rem'
|
|
@@ -2222,6 +2224,7 @@ const MRT_TableBodyCell = ({ cell, enableHover, rowIndex, rowRef, table, }) => {
|
|
|
2222
2224
|
_b.length,
|
|
2223
2225
|
")"))));
|
|
2224
2226
|
};
|
|
2227
|
+
const Memo_MRT_TableBodyCell = React.memo(MRT_TableBodyCell, (prev, next) => next.cell === prev.cell);
|
|
2225
2228
|
|
|
2226
2229
|
const MRT_TableDetailPanel = ({ row, table }) => {
|
|
2227
2230
|
const { getVisibleLeafColumns, options: { muiTableBodyRowProps, muiTableDetailPanelProps, renderDetailPanel, }, } = table;
|
|
@@ -2232,7 +2235,7 @@ const MRT_TableDetailPanel = ({ row, table }) => {
|
|
|
2232
2235
|
? muiTableDetailPanelProps({ row, table })
|
|
2233
2236
|
: muiTableDetailPanelProps;
|
|
2234
2237
|
return (React__default["default"].createElement(material.TableRow, Object.assign({}, tableRowProps),
|
|
2235
|
-
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
|
|
2236
2239
|
? tableCellProps.sx(theme)
|
|
2237
2240
|
: tableCellProps === null || tableCellProps === void 0 ? void 0 : tableCellProps.sx))) }), renderDetailPanel && (React__default["default"].createElement(material.Collapse, { in: row.getIsExpanded() }, renderDetailPanel({ row, table }))))));
|
|
2238
2241
|
};
|
|
@@ -2240,8 +2243,8 @@ const MRT_TableDetailPanel = ({ row, table }) => {
|
|
|
2240
2243
|
const MRT_TableBodyRow = ({ row, rowIndex, table, virtualRow, }) => {
|
|
2241
2244
|
var _a, _b;
|
|
2242
2245
|
const theme = material.useTheme();
|
|
2243
|
-
const { getIsSomeColumnsPinned, getState, options: { enableRowOrdering, muiTableBodyRowProps, renderDetailPanel }, setHoveredRow, } = table;
|
|
2244
|
-
const { draggingRow, hoveredRow } = getState();
|
|
2246
|
+
const { getIsSomeColumnsPinned, getState, options: { enableRowOrdering, memoMode, muiTableBodyRowProps, renderDetailPanel, }, setHoveredRow, } = table;
|
|
2247
|
+
const { draggingColumn, draggingRow, editingCell, editingRow, hoveredRow } = getState();
|
|
2245
2248
|
const tableRowProps = muiTableBodyRowProps instanceof Function
|
|
2246
2249
|
? muiTableBodyRowProps({ row, table })
|
|
2247
2250
|
: muiTableBodyRowProps;
|
|
@@ -2267,7 +2270,7 @@ const MRT_TableBodyRow = ({ row, rowIndex, table, virtualRow, }) => {
|
|
|
2267
2270
|
if (virtualRow === null || virtualRow === void 0 ? void 0 : virtualRow.measureRef) {
|
|
2268
2271
|
virtualRow.measureRef = node;
|
|
2269
2272
|
}
|
|
2270
|
-
} }, 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': {
|
|
2271
2274
|
backgroundColor: (tableRowProps === null || tableRowProps === void 0 ? void 0 : tableRowProps.hover) !== false && getIsSomeColumnsPinned()
|
|
2272
2275
|
? theme.palette.mode === 'dark'
|
|
2273
2276
|
? `${material.lighten(theme.palette.background.default, 0.12)}`
|
|
@@ -2275,13 +2278,29 @@ const MRT_TableBodyRow = ({ row, rowIndex, table, virtualRow, }) => {
|
|
|
2275
2278
|
: undefined,
|
|
2276
2279
|
} }, ((tableRowProps === null || tableRowProps === void 0 ? void 0 : tableRowProps.sx) instanceof Function
|
|
2277
2280
|
? tableRowProps.sx(theme)
|
|
2278
|
-
: 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
|
+
})),
|
|
2279
2297
|
renderDetailPanel && !row.getIsGrouped() && (React__default["default"].createElement(MRT_TableDetailPanel, { row: row, table: table }))));
|
|
2280
2298
|
};
|
|
2299
|
+
const Memo_MRT_TableBodyRow = React.memo(MRT_TableBodyRow, (prev, next) => prev.row === next.row);
|
|
2281
2300
|
|
|
2282
2301
|
const MRT_TableBody = ({ table }) => {
|
|
2283
2302
|
var _a;
|
|
2284
|
-
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;
|
|
2285
2304
|
const { columnFilters, globalFilter, pagination, sorting } = getState();
|
|
2286
2305
|
const tableBodyProps = muiTableBodyProps instanceof Function
|
|
2287
2306
|
? muiTableBodyProps({ table })
|
|
@@ -2365,11 +2384,21 @@ const MRT_TableBody = ({ table }) => {
|
|
|
2365
2384
|
const row = enableRowVirtualization
|
|
2366
2385
|
? rows[rowOrVirtualRow.index]
|
|
2367
2386
|
: rowOrVirtualRow;
|
|
2368
|
-
|
|
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)));
|
|
2369
2397
|
}),
|
|
2370
2398
|
enableRowVirtualization && paddingBottom > 0 && (React__default["default"].createElement("tr", null,
|
|
2371
2399
|
React__default["default"].createElement("td", { style: { height: `${paddingBottom}px` } })))))));
|
|
2372
2400
|
};
|
|
2401
|
+
const Memo_MRT_TableBody = React.memo(MRT_TableBody, () => true);
|
|
2373
2402
|
|
|
2374
2403
|
const MRT_TableFooterCell = ({ footer, table }) => {
|
|
2375
2404
|
var _a, _b, _c;
|
|
@@ -2432,7 +2461,7 @@ const MRT_TableFooter = ({ table }) => {
|
|
|
2432
2461
|
};
|
|
2433
2462
|
|
|
2434
2463
|
const MRT_Table = ({ table }) => {
|
|
2435
|
-
const { getState, options: { enableColumnResizing, enableRowVirtualization, enableStickyHeader, enableTableFooter, enableTableHead, muiTableProps, }, } = table;
|
|
2464
|
+
const { getState, options: { enableColumnResizing, enableRowVirtualization, enableStickyHeader, enableTableFooter, enableTableHead, memoMode, muiTableProps, }, } = table;
|
|
2436
2465
|
const { isFullScreen } = getState();
|
|
2437
2466
|
const tableProps = muiTableProps instanceof Function
|
|
2438
2467
|
? muiTableProps({ table })
|
|
@@ -2441,7 +2470,7 @@ const MRT_Table = ({ table }) => {
|
|
|
2441
2470
|
? tableProps.sx(theme)
|
|
2442
2471
|
: tableProps === null || tableProps === void 0 ? void 0 : tableProps.sx))) }),
|
|
2443
2472
|
enableTableHead && React__default["default"].createElement(MRT_TableHead, { table: table }),
|
|
2444
|
-
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 })),
|
|
2445
2474
|
enableTableFooter && React__default["default"].createElement(MRT_TableFooter, { table: table })));
|
|
2446
2475
|
};
|
|
2447
2476
|
|
|
@@ -2491,7 +2520,7 @@ const MRT_TablePaper = ({ table }) => {
|
|
|
2491
2520
|
//@ts-ignore
|
|
2492
2521
|
tablePaperProps.ref.current = ref;
|
|
2493
2522
|
}
|
|
2494
|
-
}, 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
|
|
2495
2524
|
? tablePaperProps === null || tablePaperProps === void 0 ? void 0 : tablePaperProps.sx(theme)
|
|
2496
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
|
|
2497
2526
|
? {
|
|
@@ -2582,7 +2611,7 @@ const MRT_TableRoot = (props) => {
|
|
|
2582
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' }),
|
|
2583
2612
|
columnOrder.includes('mrt-row-expand') &&
|
|
2584
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' }),
|
|
2585
|
-
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' }),
|
|
2586
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' }),
|
|
2587
2616
|
].filter(Boolean);
|
|
2588
2617
|
}, [
|