material-react-table 1.4.3 → 1.5.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/index.js +167 -61
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types/MaterialReactTable.d.ts +18 -5
- package/dist/cjs/types/body/MRT_TableBody.d.ts +5 -0
- package/dist/cjs/types/body/MRT_TableBodyCell.d.ts +3 -0
- package/dist/cjs/types/body/MRT_TableBodyRow.d.ts +5 -1
- package/dist/cjs/types/footer/MRT_TableFooter.d.ts +4 -0
- package/dist/cjs/types/footer/MRT_TableFooterRow.d.ts +4 -0
- package/dist/cjs/types/head/MRT_TableHead.d.ts +4 -0
- package/dist/cjs/types/head/MRT_TableHeadRow.d.ts +4 -0
- package/dist/cjs/types/table/MRT_TableRoot.d.ts +12 -5
- package/dist/cjs/types/toolbar/MRT_TablePagination.d.ts +1 -1
- package/dist/esm/material-react-table.esm.js +163 -57
- package/dist/esm/material-react-table.esm.js.map +1 -1
- package/dist/esm/types/MaterialReactTable.d.ts +18 -5
- package/dist/esm/types/body/MRT_TableBody.d.ts +5 -0
- package/dist/esm/types/body/MRT_TableBodyCell.d.ts +3 -0
- package/dist/esm/types/body/MRT_TableBodyRow.d.ts +5 -1
- package/dist/esm/types/footer/MRT_TableFooter.d.ts +4 -0
- package/dist/esm/types/footer/MRT_TableFooterRow.d.ts +4 -0
- package/dist/esm/types/head/MRT_TableHead.d.ts +4 -0
- package/dist/esm/types/head/MRT_TableHeadRow.d.ts +4 -0
- package/dist/esm/types/table/MRT_TableRoot.d.ts +12 -5
- package/dist/esm/types/toolbar/MRT_TablePagination.d.ts +1 -1
- package/dist/index.d.ts +20 -7
- package/locales/ru.esm.js +1 -1
- package/locales/ru.js +1 -1
- package/package.json +1 -1
- package/src/MaterialReactTable.tsx +30 -8
- package/src/_locales/ru.ts +1 -1
- package/src/body/MRT_TableBody.tsx +42 -13
- package/src/body/MRT_TableBodyCell.tsx +17 -1
- package/src/body/MRT_TableBodyRow.tsx +24 -3
- package/src/footer/MRT_TableFooter.tsx +13 -1
- package/src/footer/MRT_TableFooterCell.tsx +10 -2
- package/src/footer/MRT_TableFooterRow.tsx +31 -4
- package/src/head/MRT_TableHead.tsx +13 -1
- package/src/head/MRT_TableHeadCell.tsx +6 -3
- package/src/head/MRT_TableHeadRow.tsx +30 -4
- package/src/table/MRT_Table.tsx +105 -7
- package/src/toolbar/MRT_TablePagination.tsx +2 -2
package/dist/cjs/index.js
CHANGED
@@ -66,12 +66,12 @@ var AlertTitle = require('@mui/material/AlertTitle');
|
|
66
66
|
var Chip = require('@mui/material/Chip');
|
67
67
|
var Fade = require('@mui/material/Fade');
|
68
68
|
var TableContainer = require('@mui/material/TableContainer');
|
69
|
+
var reactVirtual = require('@tanstack/react-virtual');
|
69
70
|
var Table = require('@mui/material/Table');
|
70
71
|
var TableHead = require('@mui/material/TableHead');
|
71
72
|
var TableRow = require('@mui/material/TableRow');
|
72
73
|
var TableCell = require('@mui/material/TableCell');
|
73
74
|
var TableSortLabel = require('@mui/material/TableSortLabel');
|
74
|
-
var reactVirtual = require('@tanstack/react-virtual');
|
75
75
|
var TableBody = require('@mui/material/TableBody');
|
76
76
|
var Skeleton = require('@mui/material/Skeleton');
|
77
77
|
var TableFooter = require('@mui/material/TableFooter');
|
@@ -1210,7 +1210,7 @@ const MRT_LinearProgressBar = ({ isTopToolbar, table }) => {
|
|
1210
1210
|
React__default["default"].createElement(LinearProgress__default["default"], Object.assign({ "aria-label": "Loading", "aria-busy": "true", sx: { position: 'relative' } }, linearProgressProps))));
|
1211
1211
|
};
|
1212
1212
|
|
1213
|
-
const MRT_TablePagination = ({ table, position, }) => {
|
1213
|
+
const MRT_TablePagination = ({ table, position = 'bottom', }) => {
|
1214
1214
|
const { getPrePaginationRowModel, getState, setPageIndex, setPageSize, options: { muiTablePaginationProps, enableToolbarInternalActions, localization, rowCount, }, } = table;
|
1215
1215
|
const { pagination: { pageSize = 10, pageIndex = 0 }, showGlobalFilter, } = getState();
|
1216
1216
|
const totalRowCount = rowCount !== null && rowCount !== void 0 ? rowCount : getPrePaginationRowModel().rows.length;
|
@@ -1909,7 +1909,7 @@ const MRT_TableHeadCellSortLabel = ({ header, table, tableCellProps, }) => {
|
|
1909
1909
|
}, IconComponent: ArrowDownwardIcon })));
|
1910
1910
|
};
|
1911
1911
|
|
1912
|
-
const MRT_TableHeadCell = ({ header, table }) => {
|
1912
|
+
const MRT_TableHeadCell = ({ header, table, }) => {
|
1913
1913
|
var _a, _b, _c, _d;
|
1914
1914
|
const theme = styles.useTheme();
|
1915
1915
|
const { getState, options: { enableColumnActions, enableColumnDragging, enableColumnOrdering, enableGrouping, enableMultiSort, layoutMode, muiTableHeadCellProps, }, refs: { tableHeadCellRefs }, setHoveredColumn, } = table;
|
@@ -2041,17 +2041,25 @@ const MRT_TableHeadCell = ({ header, table }) => {
|
|
2041
2041
|
column.getCanFilter() && (React__default["default"].createElement(MRT_TableHeadCellFilterContainer, { header: header, table: table }))));
|
2042
2042
|
};
|
2043
2043
|
|
2044
|
-
const MRT_TableHeadRow = ({ headerGroup, table }) => {
|
2044
|
+
const MRT_TableHeadRow = ({ headerGroup, table, virtualColumns, virtualPaddingLeft, virtualPaddingRight, }) => {
|
2045
2045
|
const { options: { layoutMode, muiTableHeadRowProps }, } = table;
|
2046
2046
|
const tableRowProps = muiTableHeadRowProps instanceof Function
|
2047
2047
|
? muiTableHeadRowProps({ headerGroup, table })
|
2048
2048
|
: muiTableHeadRowProps;
|
2049
2049
|
return (React__default["default"].createElement(TableRow__default["default"], Object.assign({}, tableRowProps, { sx: (theme) => (Object.assign({ backgroundColor: styles.lighten(theme.palette.background.default, 0.04), boxShadow: `4px 0 8px ${styles.alpha(theme.palette.common.black, 0.1)}`, display: layoutMode === 'grid' ? 'flex' : 'table-row', top: 0 }, ((tableRowProps === null || tableRowProps === void 0 ? void 0 : tableRowProps.sx) instanceof Function
|
2050
2050
|
? tableRowProps === null || tableRowProps === void 0 ? void 0 : tableRowProps.sx(theme)
|
2051
|
-
: tableRowProps === null || tableRowProps === void 0 ? void 0 : tableRowProps.sx))) }),
|
2052
|
-
}
|
2053
|
-
|
2054
|
-
const
|
2051
|
+
: tableRowProps === null || tableRowProps === void 0 ? void 0 : tableRowProps.sx))) }),
|
2052
|
+
virtualPaddingLeft ? (React__default["default"].createElement("th", { style: { display: 'flex', width: virtualPaddingLeft } })) : null,
|
2053
|
+
(virtualColumns !== null && virtualColumns !== void 0 ? virtualColumns : headerGroup.headers).map((headerOrVirtualHeader) => {
|
2054
|
+
const header = virtualColumns
|
2055
|
+
? headerGroup.headers[headerOrVirtualHeader.index]
|
2056
|
+
: headerOrVirtualHeader;
|
2057
|
+
return (React__default["default"].createElement(MRT_TableHeadCell, { header: header, key: header.id, table: table }));
|
2058
|
+
}),
|
2059
|
+
virtualPaddingRight ? (React__default["default"].createElement("th", { style: { display: 'flex', width: virtualPaddingRight } })) : null));
|
2060
|
+
};
|
2061
|
+
|
2062
|
+
const MRT_TableHead = ({ table, virtualColumns, virtualPaddingLeft, virtualPaddingRight, }) => {
|
2055
2063
|
const { getHeaderGroups, getState, options: { enableStickyHeader, layoutMode, muiTableHeadProps }, } = table;
|
2056
2064
|
const { isFullScreen } = getState();
|
2057
2065
|
const tableHeadProps = muiTableHeadProps instanceof Function
|
@@ -2060,7 +2068,7 @@ const MRT_TableHead = ({ table }) => {
|
|
2060
2068
|
const stickyHeader = enableStickyHeader || isFullScreen;
|
2061
2069
|
return (React__default["default"].createElement(TableHead__default["default"], Object.assign({}, tableHeadProps, { sx: (theme) => (Object.assign({ display: layoutMode === 'grid' ? 'grid' : 'table-row-group', opacity: 0.97, position: stickyHeader ? 'sticky' : 'relative', top: stickyHeader && layoutMode === 'grid' ? 0 : undefined, zIndex: stickyHeader ? 2 : undefined }, ((tableHeadProps === null || tableHeadProps === void 0 ? void 0 : tableHeadProps.sx) instanceof Function
|
2062
2070
|
? tableHeadProps === null || tableHeadProps === void 0 ? void 0 : tableHeadProps.sx(theme)
|
2063
|
-
: 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 })))));
|
2071
|
+
: 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, virtualColumns: virtualColumns, virtualPaddingLeft: virtualPaddingLeft, virtualPaddingRight: virtualPaddingRight })))));
|
2064
2072
|
};
|
2065
2073
|
|
2066
2074
|
const MRT_EditCellTextField = ({ cell, showLabel, table, }) => {
|
@@ -2199,7 +2207,7 @@ const MRT_TableBodyCellValue = ({ cell, table }) => {
|
|
2199
2207
|
: (_b = (_a = columnDef === null || columnDef === void 0 ? void 0 : columnDef.Cell) === null || _a === void 0 ? void 0 : _a.call(columnDef, { cell, column, row, table })) !== null && _b !== void 0 ? _b : cell.renderValue()));
|
2200
2208
|
};
|
2201
2209
|
|
2202
|
-
const MRT_TableBodyCell = ({ cell, enableHover, numRows, rowIndex, rowRef, table, }) => {
|
2210
|
+
const MRT_TableBodyCell = ({ cell, enableHover, measureElement, numRows, rowIndex, rowRef, table, virtualCell, }) => {
|
2203
2211
|
var _a, _b;
|
2204
2212
|
const theme = styles.useTheme();
|
2205
2213
|
const { getState, options: { editingMode, enableClickToCopy, enableColumnOrdering, enableEditing, enableGrouping, enableRowNumbers, layoutMode, muiTableBodyCellProps, muiTableBodyCellSkeletonProps, rowNumberMode, }, refs: { editInputRefs }, setEditingCell, setHoveredColumn, } = table;
|
@@ -2271,7 +2279,11 @@ const MRT_TableBodyCell = ({ cell, enableHover, numRows, rowIndex, rowRef, table
|
|
2271
2279
|
setHoveredColumn(columnDef.enableColumnOrdering !== false ? column : null);
|
2272
2280
|
}
|
2273
2281
|
};
|
2274
|
-
return (React__default["default"].createElement(TableCell__default["default"], Object.assign({
|
2282
|
+
return (React__default["default"].createElement(TableCell__default["default"], Object.assign({ "data-index": virtualCell === null || virtualCell === void 0 ? void 0 : virtualCell.index, ref: (node) => {
|
2283
|
+
if (node) {
|
2284
|
+
measureElement === null || measureElement === void 0 ? void 0 : measureElement(node);
|
2285
|
+
}
|
2286
|
+
} }, tableCellProps, { onDragEnter: handleDragEnter, onDoubleClick: handleDoubleClick, sx: (theme) => (Object.assign(Object.assign({ alignItems: layoutMode === 'grid' ? 'center' : undefined, cursor: isEditable && editingMode === 'cell' ? 'pointer' : 'inherit', overflow: 'hidden', p: density === 'compact'
|
2275
2287
|
? columnDefType === 'display'
|
2276
2288
|
? '0 0.5rem'
|
2277
2289
|
: '0.5rem'
|
@@ -2297,7 +2309,12 @@ const MRT_TableBodyCell = ({ cell, enableHover, numRows, rowIndex, rowRef, table
|
|
2297
2309
|
? `${styles.lighten(theme.palette.background.default, 0.2)} !important`
|
2298
2310
|
: `${styles.darken(theme.palette.background.default, 0.1)} !important`
|
2299
2311
|
: undefined,
|
2300
|
-
} }, getCommonCellStyles({
|
2312
|
+
} }, getCommonCellStyles({
|
2313
|
+
column,
|
2314
|
+
table,
|
2315
|
+
theme,
|
2316
|
+
tableCellProps,
|
2317
|
+
})), draggingBorders)) }),
|
2301
2318
|
React__default["default"].createElement(React__default["default"].Fragment, null, cell.getIsPlaceholder() ? null : isLoading || showSkeletons ? (React__default["default"].createElement(Skeleton__default["default"], Object.assign({ animation: "wave", height: 20, width: skeletonWidth }, skeletonProps))) : enableRowNumbers &&
|
2302
2319
|
rowNumberMode === 'static' &&
|
2303
2320
|
column.id === 'mrt-row-numbers' ? (rowIndex + 1) : column.id === 'mrt-row-drag' ? (React__default["default"].createElement(MRT_TableBodyRowGrabHandle, { cell: cell, rowRef: rowRef, table: table })) : columnDefType === 'display' &&
|
@@ -2339,7 +2356,7 @@ const MRT_TableDetailPanel = ({ parentRowRef, row, table, virtualRow, }) => {
|
|
2339
2356
|
: tableCellProps === null || tableCellProps === void 0 ? void 0 : tableCellProps.sx))) }), renderDetailPanel && (React__default["default"].createElement(Collapse__default["default"], { in: row.getIsExpanded(), mountOnEnter: true, unmountOnExit: true }, !isLoading && renderDetailPanel({ row, table }))))));
|
2340
2357
|
};
|
2341
2358
|
|
2342
|
-
const MRT_TableBodyRow = ({ measureElement, numRows, row, rowIndex, table, virtualRow, }) => {
|
2359
|
+
const MRT_TableBodyRow = ({ columnVirtualizer, measureElement, numRows, row, rowIndex, table, virtualColumns, virtualPaddingLeft, virtualPaddingRight, virtualRow, }) => {
|
2343
2360
|
const theme = styles.useTheme();
|
2344
2361
|
const { getIsSomeColumnsPinned, getState, options: { enableRowOrdering, layoutMode, memoMode, muiTableBodyRowProps, renderDetailPanel, }, setHoveredRow, } = table;
|
2345
2362
|
const { draggingColumn, draggingRow, editingCell, editingRow, hoveredRow } = getState();
|
@@ -2378,37 +2395,50 @@ const MRT_TableBodyRow = ({ measureElement, numRows, row, rowIndex, table, virtu
|
|
2378
2395
|
: undefined,
|
2379
2396
|
} }, ((tableRowProps === null || tableRowProps === void 0 ? void 0 : tableRowProps.sx) instanceof Function
|
2380
2397
|
? tableRowProps.sx(theme)
|
2381
|
-
: tableRowProps === null || tableRowProps === void 0 ? void 0 : tableRowProps.sx)), draggingBorders)) }),
|
2382
|
-
|
2383
|
-
|
2384
|
-
|
2385
|
-
|
2386
|
-
|
2387
|
-
|
2388
|
-
|
2389
|
-
|
2390
|
-
|
2391
|
-
|
2392
|
-
|
2393
|
-
|
2394
|
-
|
2395
|
-
|
2396
|
-
|
2397
|
-
|
2398
|
+
: tableRowProps === null || tableRowProps === void 0 ? void 0 : tableRowProps.sx)), draggingBorders)) }),
|
2399
|
+
virtualPaddingLeft ? (React__default["default"].createElement("td", { style: { display: 'flex', width: virtualPaddingLeft } })) : null,
|
2400
|
+
(virtualColumns !== null && virtualColumns !== void 0 ? virtualColumns : row.getVisibleCells()).map((cellOrVirtualCell) => {
|
2401
|
+
const cell = columnVirtualizer
|
2402
|
+
? row.getVisibleCells()[cellOrVirtualCell.index]
|
2403
|
+
: cellOrVirtualCell;
|
2404
|
+
const props = {
|
2405
|
+
cell,
|
2406
|
+
enableHover: (tableRowProps === null || tableRowProps === void 0 ? void 0 : tableRowProps.hover) !== false,
|
2407
|
+
key: cell.id,
|
2408
|
+
measureElement: columnVirtualizer === null || columnVirtualizer === void 0 ? void 0 : columnVirtualizer.measureElement,
|
2409
|
+
numRows,
|
2410
|
+
rowIndex,
|
2411
|
+
rowRef,
|
2412
|
+
table,
|
2413
|
+
virtualCell: columnVirtualizer
|
2414
|
+
? cellOrVirtualCell
|
2415
|
+
: undefined,
|
2416
|
+
};
|
2417
|
+
return memoMode === 'cells' &&
|
2418
|
+
cell.column.columnDef.columnDefType === 'data' &&
|
2419
|
+
!draggingColumn &&
|
2420
|
+
!draggingRow &&
|
2421
|
+
(editingCell === null || editingCell === void 0 ? void 0 : editingCell.id) !== cell.id &&
|
2422
|
+
(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)));
|
2423
|
+
}),
|
2424
|
+
virtualPaddingRight ? (React__default["default"].createElement("td", { style: { display: 'flex', width: virtualPaddingRight } })) : null),
|
2398
2425
|
renderDetailPanel && !row.getIsGrouped() && (React__default["default"].createElement(MRT_TableDetailPanel, { parentRowRef: rowRef, row: row, table: table, virtualRow: virtualRow }))));
|
2399
2426
|
};
|
2400
2427
|
const Memo_MRT_TableBodyRow = React.memo(MRT_TableBodyRow, (prev, next) => prev.row === next.row);
|
2401
2428
|
|
2402
|
-
const MRT_TableBody = ({ table }) => {
|
2429
|
+
const MRT_TableBody = ({ columnVirtualizer, table, virtualColumns, virtualPaddingLeft, virtualPaddingRight, }) => {
|
2403
2430
|
var _a, _b, _c;
|
2404
|
-
const { getRowModel, getPrePaginationRowModel, getState, options: { enableGlobalFilterRankedResults, enablePagination, enableRowVirtualization, layoutMode, localization, manualFiltering, manualSorting, memoMode, muiTableBodyProps, virtualizerInstanceRef, virtualizerProps, }, refs: { tableContainerRef, tablePaperRef }, } = table;
|
2431
|
+
const { getRowModel, getPrePaginationRowModel, getState, options: { enableGlobalFilterRankedResults, enablePagination, enableRowVirtualization, layoutMode, localization, manualFiltering, manualSorting, memoMode, muiTableBodyProps, rowVirtualizerInstanceRef, rowVirtualizerProps, virtualizerInstanceRef, virtualizerProps, }, refs: { tableContainerRef, tablePaperRef }, } = table;
|
2405
2432
|
const { columnFilters, density, globalFilter, pagination, sorting } = getState();
|
2406
2433
|
const tableBodyProps = muiTableBodyProps instanceof Function
|
2407
2434
|
? muiTableBodyProps({ table })
|
2408
2435
|
: muiTableBodyProps;
|
2409
|
-
const
|
2436
|
+
const vProps_old = virtualizerProps instanceof Function
|
2410
2437
|
? virtualizerProps({ table })
|
2411
2438
|
: virtualizerProps;
|
2439
|
+
const vProps = rowVirtualizerProps instanceof Function
|
2440
|
+
? rowVirtualizerProps({ table })
|
2441
|
+
: rowVirtualizerProps;
|
2412
2442
|
const rows = React.useMemo(() => {
|
2413
2443
|
if (enableGlobalFilterRankedResults &&
|
2414
2444
|
globalFilter &&
|
@@ -2434,14 +2464,22 @@ const MRT_TableBody = ({ table }) => {
|
|
2434
2464
|
pagination.pageIndex,
|
2435
2465
|
pagination.pageSize,
|
2436
2466
|
]);
|
2437
|
-
const
|
2438
|
-
? reactVirtual.useVirtualizer(Object.assign({ count: rows.length, estimateSize: () => density === 'compact' ? 37 : density === 'comfortable' ? 58 : 73, getScrollElement: () => tableContainerRef.current, measureElement: (element) => element === null || element === void 0 ? void 0 : element.getBoundingClientRect().height, overscan: 4 }, vProps))
|
2467
|
+
const rowVirtualizer = enableRowVirtualization
|
2468
|
+
? reactVirtual.useVirtualizer(Object.assign(Object.assign({ count: rows.length, estimateSize: () => density === 'compact' ? 37 : density === 'comfortable' ? 58 : 73, getScrollElement: () => tableContainerRef.current, measureElement: (element) => element === null || element === void 0 ? void 0 : element.getBoundingClientRect().height, overscan: 4 }, vProps_old), vProps))
|
2439
2469
|
: undefined;
|
2440
|
-
if (
|
2441
|
-
|
2470
|
+
if (rowVirtualizerInstanceRef && rowVirtualizer) {
|
2471
|
+
rowVirtualizerInstanceRef.current = rowVirtualizer;
|
2472
|
+
}
|
2473
|
+
//deprecated
|
2474
|
+
if (virtualizerInstanceRef && rowVirtualizer) {
|
2475
|
+
virtualizerInstanceRef.current = rowVirtualizer;
|
2442
2476
|
}
|
2443
|
-
const virtualRows =
|
2444
|
-
|
2477
|
+
const virtualRows = rowVirtualizer
|
2478
|
+
? rowVirtualizer.getVirtualItems()
|
2479
|
+
: undefined;
|
2480
|
+
return (React__default["default"].createElement(TableBody__default["default"], Object.assign({}, tableBodyProps, { sx: (theme) => (Object.assign({ display: layoutMode === 'grid' ? 'grid' : 'table-row-group', height: rowVirtualizer
|
2481
|
+
? `${rowVirtualizer.getTotalSize()}px`
|
2482
|
+
: 'inherit', minHeight: !rows.length ? '100px' : undefined, position: 'relative' }, ((tableBodyProps === null || tableBodyProps === void 0 ? void 0 : tableBodyProps.sx) instanceof Function
|
2445
2483
|
? tableBodyProps === null || tableBodyProps === void 0 ? void 0 : tableBodyProps.sx(theme)
|
2446
2484
|
: tableBodyProps === null || tableBodyProps === void 0 ? void 0 : tableBodyProps.sx))) }), (_a = tableBodyProps === null || tableBodyProps === void 0 ? void 0 : tableBodyProps.children) !== null && _a !== void 0 ? _a : (!rows.length ? (React__default["default"].createElement("tr", { style: { display: layoutMode === 'grid' ? 'grid' : 'table-row' } },
|
2447
2485
|
React__default["default"].createElement("td", { colSpan: table.getVisibleLeafColumns().length, style: { display: layoutMode === 'grid' ? 'grid' : 'table-cell' } },
|
@@ -2455,19 +2493,21 @@ const MRT_TableBody = ({ table }) => {
|
|
2455
2493
|
} }, globalFilter || columnFilters.length
|
2456
2494
|
? localization.noResultsFound
|
2457
2495
|
: localization.noRecordsToDisplay)))) : (React__default["default"].createElement(React__default["default"].Fragment, null, (virtualRows !== null && virtualRows !== void 0 ? virtualRows : rows).map((rowOrVirtualRow, rowIndex) => {
|
2458
|
-
const row =
|
2496
|
+
const row = rowVirtualizer
|
2459
2497
|
? rows[rowOrVirtualRow.index]
|
2460
2498
|
: rowOrVirtualRow;
|
2461
2499
|
const props = {
|
2500
|
+
columnVirtualizer,
|
2462
2501
|
key: row.id,
|
2463
|
-
measureElement:
|
2464
|
-
? virtualizer.measureElement
|
2465
|
-
: undefined,
|
2502
|
+
measureElement: rowVirtualizer === null || rowVirtualizer === void 0 ? void 0 : rowVirtualizer.measureElement,
|
2466
2503
|
numRows: rows.length,
|
2467
2504
|
row,
|
2468
|
-
rowIndex:
|
2505
|
+
rowIndex: rowVirtualizer ? rowOrVirtualRow.index : rowIndex,
|
2469
2506
|
table,
|
2470
|
-
|
2507
|
+
virtualColumns,
|
2508
|
+
virtualPaddingLeft,
|
2509
|
+
virtualPaddingRight,
|
2510
|
+
virtualRow: rowVirtualizer
|
2471
2511
|
? rowOrVirtualRow
|
2472
2512
|
: undefined,
|
2473
2513
|
};
|
@@ -2476,7 +2516,7 @@ const MRT_TableBody = ({ table }) => {
|
|
2476
2516
|
};
|
2477
2517
|
const Memo_MRT_TableBody = React.memo(MRT_TableBody, (prev, next) => prev.table.options.data === next.table.options.data);
|
2478
2518
|
|
2479
|
-
const MRT_TableFooterCell = ({ footer, table }) => {
|
2519
|
+
const MRT_TableFooterCell = ({ footer, table, }) => {
|
2480
2520
|
var _a, _b, _c;
|
2481
2521
|
const { getState, options: { layoutMode, muiTableFooterCellProps }, } = table;
|
2482
2522
|
const { density } = getState();
|
@@ -2494,7 +2534,12 @@ const MRT_TableFooterCell = ({ footer, table }) => {
|
|
2494
2534
|
? '0.5rem'
|
2495
2535
|
: density === 'comfortable'
|
2496
2536
|
? '1rem'
|
2497
|
-
: '1.5rem', verticalAlign: 'top', zIndex: column.getIsPinned() && columnDefType !== 'group' ? 2 : 1 }, getCommonCellStyles({
|
2537
|
+
: '1.5rem', verticalAlign: 'top', zIndex: column.getIsPinned() && columnDefType !== 'group' ? 2 : 1 }, getCommonCellStyles({
|
2538
|
+
column,
|
2539
|
+
table,
|
2540
|
+
theme,
|
2541
|
+
tableCellProps,
|
2542
|
+
}))) }),
|
2498
2543
|
React__default["default"].createElement(React__default["default"].Fragment, null, footer.isPlaceholder
|
2499
2544
|
? null
|
2500
2545
|
: (_c = (_b = (columnDef.Footer instanceof Function
|
@@ -2506,7 +2551,7 @@ const MRT_TableFooterCell = ({ footer, table }) => {
|
|
2506
2551
|
: columnDef.Footer)) !== null && _b !== void 0 ? _b : columnDef.footer) !== null && _c !== void 0 ? _c : null)));
|
2507
2552
|
};
|
2508
2553
|
|
2509
|
-
const MRT_TableFooterRow = ({ footerGroup, table }) => {
|
2554
|
+
const MRT_TableFooterRow = ({ footerGroup, table, virtualColumns, virtualPaddingLeft, virtualPaddingRight, }) => {
|
2510
2555
|
var _a;
|
2511
2556
|
const { options: { layoutMode, muiTableFooterRowProps }, } = table;
|
2512
2557
|
// if no content in row, skip row
|
@@ -2517,12 +2562,20 @@ const MRT_TableFooterRow = ({ footerGroup, table }) => {
|
|
2517
2562
|
const tableRowProps = muiTableFooterRowProps instanceof Function
|
2518
2563
|
? muiTableFooterRowProps({ footerGroup, table })
|
2519
2564
|
: muiTableFooterRowProps;
|
2520
|
-
return (React__default["default"].createElement(TableRow__default["default"], Object.assign({}, tableRowProps, { sx: (theme) => (Object.assign({ display: layoutMode === 'grid' ? 'flex' : 'table-row' }, ((tableRowProps === null || tableRowProps === void 0 ? void 0 : tableRowProps.sx) instanceof Function
|
2565
|
+
return (React__default["default"].createElement(TableRow__default["default"], Object.assign({}, tableRowProps, { sx: (theme) => (Object.assign({ display: layoutMode === 'grid' ? 'flex' : 'table-row', width: '100%' }, ((tableRowProps === null || tableRowProps === void 0 ? void 0 : tableRowProps.sx) instanceof Function
|
2521
2566
|
? tableRowProps === null || tableRowProps === void 0 ? void 0 : tableRowProps.sx(theme)
|
2522
|
-
: tableRowProps === null || tableRowProps === void 0 ? void 0 : tableRowProps.sx))) }),
|
2523
|
-
}
|
2524
|
-
|
2525
|
-
const
|
2567
|
+
: tableRowProps === null || tableRowProps === void 0 ? void 0 : tableRowProps.sx))) }),
|
2568
|
+
virtualPaddingLeft ? (React__default["default"].createElement("th", { style: { display: 'flex', width: virtualPaddingLeft } })) : null,
|
2569
|
+
(virtualColumns !== null && virtualColumns !== void 0 ? virtualColumns : footerGroup.headers).map((footerOrVirtualFooter) => {
|
2570
|
+
const footer = virtualColumns
|
2571
|
+
? footerGroup.headers[footerOrVirtualFooter.index]
|
2572
|
+
: footerOrVirtualFooter;
|
2573
|
+
return (React__default["default"].createElement(MRT_TableFooterCell, { footer: footer, key: footer.id, table: table }));
|
2574
|
+
}),
|
2575
|
+
virtualPaddingRight ? (React__default["default"].createElement("th", { style: { display: 'flex', width: virtualPaddingRight } })) : null));
|
2576
|
+
};
|
2577
|
+
|
2578
|
+
const MRT_TableFooter = ({ table, virtualColumns, virtualPaddingLeft, virtualPaddingRight, }) => {
|
2526
2579
|
const { getFooterGroups, getState, options: { enableStickyFooter, layoutMode, muiTableFooterProps }, } = table;
|
2527
2580
|
const { isFullScreen } = getState();
|
2528
2581
|
const tableFooterProps = muiTableFooterProps instanceof Function
|
@@ -2535,21 +2588,74 @@ const MRT_TableFooter = ({ table }) => {
|
|
2535
2588
|
: `1px solid ${theme.palette.grey[700]}`
|
2536
2589
|
: undefined, position: stickFooter ? 'sticky' : undefined }, ((tableFooterProps === null || tableFooterProps === void 0 ? void 0 : tableFooterProps.sx) instanceof Function
|
2537
2590
|
? tableFooterProps === null || tableFooterProps === void 0 ? void 0 : tableFooterProps.sx(theme)
|
2538
|
-
: tableFooterProps === null || tableFooterProps === void 0 ? void 0 : tableFooterProps.sx))) }), getFooterGroups().map((footerGroup) => (React__default["default"].createElement(MRT_TableFooterRow, { footerGroup: footerGroup, key: footerGroup.id, table: table })))));
|
2591
|
+
: tableFooterProps === null || tableFooterProps === void 0 ? void 0 : tableFooterProps.sx))) }), getFooterGroups().map((footerGroup) => (React__default["default"].createElement(MRT_TableFooterRow, { footerGroup: footerGroup, key: footerGroup.id, table: table, virtualColumns: virtualColumns, virtualPaddingLeft: virtualPaddingLeft, virtualPaddingRight: virtualPaddingRight })))));
|
2539
2592
|
};
|
2540
2593
|
|
2541
2594
|
const MRT_Table = ({ table }) => {
|
2542
|
-
|
2543
|
-
const {
|
2595
|
+
var _a, _b;
|
2596
|
+
const { getState, options: { columnVirtualizerInstanceRef, columnVirtualizerProps, enableColumnResizing, enableColumnVirtualization, enablePinning, enableStickyHeader, enableTableFooter, enableTableHead, layoutMode, memoMode, muiTableProps, }, refs: { tableContainerRef }, } = table;
|
2597
|
+
const { isFullScreen, columnPinning, columnVisibility } = getState();
|
2544
2598
|
const tableProps = muiTableProps instanceof Function
|
2545
2599
|
? muiTableProps({ table })
|
2546
2600
|
: muiTableProps;
|
2547
|
-
|
2601
|
+
const vProps = columnVirtualizerProps instanceof Function
|
2602
|
+
? columnVirtualizerProps({ table })
|
2603
|
+
: columnVirtualizerProps;
|
2604
|
+
//get first 16 column widths and average them
|
2605
|
+
const averageColumnWidth = React.useMemo(() => {
|
2606
|
+
var _a, _b, _c, _d;
|
2607
|
+
const columnsWidths = (_d = (_c = (_b = (_a = table
|
2608
|
+
.getRowModel()
|
2609
|
+
.rows[0]) === null || _a === void 0 ? void 0 : _a.getCenterVisibleCells()) === null || _b === void 0 ? void 0 : _b.slice(0, 16)) === null || _c === void 0 ? void 0 : _c.map((cell) => cell.column.getSize() * 1.25)) !== null && _d !== void 0 ? _d : [];
|
2610
|
+
return columnsWidths.reduce((a, b) => a + b, 0) / columnsWidths.length;
|
2611
|
+
}, [table.getRowModel().rows, columnPinning, columnVisibility]);
|
2612
|
+
const pinnedColumnIndexes = React.useMemo(() => enableColumnVirtualization && enablePinning
|
2613
|
+
? [
|
2614
|
+
...table.getLeftFlatHeaders().map((h) => h.column.getPinnedIndex()),
|
2615
|
+
...table
|
2616
|
+
.getRightFlatHeaders()
|
2617
|
+
.map((h) => table.getVisibleFlatColumns().length -
|
2618
|
+
h.column.getPinnedIndex() -
|
2619
|
+
1),
|
2620
|
+
]
|
2621
|
+
: [], [columnPinning, enableColumnVirtualization, enablePinning]);
|
2622
|
+
const columnVirtualizer = enableColumnVirtualization
|
2623
|
+
? reactVirtual.useVirtualizer(Object.assign({ count: table.getRowModel().rows[0].getVisibleCells().length, estimateSize: () => averageColumnWidth, getScrollElement: () => tableContainerRef.current, horizontal: true, measureElement: (element) => element === null || element === void 0 ? void 0 : element.getBoundingClientRect().width, overscan: 3, rangeExtractor: React.useCallback((range) => [
|
2624
|
+
...new Set([
|
2625
|
+
...pinnedColumnIndexes,
|
2626
|
+
...reactVirtual.defaultRangeExtractor(range),
|
2627
|
+
]),
|
2628
|
+
].sort((a, b) => a - b), [pinnedColumnIndexes]) }, vProps))
|
2629
|
+
: undefined;
|
2630
|
+
if (columnVirtualizerInstanceRef && columnVirtualizer) {
|
2631
|
+
columnVirtualizerInstanceRef.current = columnVirtualizer;
|
2632
|
+
}
|
2633
|
+
const virtualColumns = columnVirtualizer
|
2634
|
+
? columnVirtualizer.getVirtualItems()
|
2635
|
+
: undefined;
|
2636
|
+
let virtualPaddingLeft;
|
2637
|
+
let virtualPaddingRight;
|
2638
|
+
if (columnVirtualizer && (virtualColumns === null || virtualColumns === void 0 ? void 0 : virtualColumns.length)) {
|
2639
|
+
virtualPaddingLeft = (virtualColumns === null || virtualColumns === void 0 ? void 0 : virtualColumns.length)
|
2640
|
+
? ((_a = virtualColumns[0]) === null || _a === void 0 ? void 0 : _a.start) || 0
|
2641
|
+
: 0;
|
2642
|
+
virtualPaddingRight = (virtualColumns === null || virtualColumns === void 0 ? void 0 : virtualColumns.length)
|
2643
|
+
? columnVirtualizer.getTotalSize() -
|
2644
|
+
(((_b = virtualColumns[virtualColumns.length - 1]) === null || _b === void 0 ? void 0 : _b.end) || 0)
|
2645
|
+
: 0;
|
2646
|
+
}
|
2647
|
+
const props = {
|
2648
|
+
table,
|
2649
|
+
virtualColumns,
|
2650
|
+
virtualPaddingLeft,
|
2651
|
+
virtualPaddingRight,
|
2652
|
+
};
|
2653
|
+
return (React__default["default"].createElement(Table__default["default"], Object.assign({ stickyHeader: enableStickyHeader || isFullScreen }, tableProps, { sx: (theme) => (Object.assign({ display: layoutMode === 'grid' ? 'grid' : 'table', tableLayout: layoutMode !== 'grid' && enableColumnResizing ? 'fixed' : undefined }, ((tableProps === null || tableProps === void 0 ? void 0 : tableProps.sx) instanceof Function
|
2548
2654
|
? tableProps.sx(theme)
|
2549
2655
|
: tableProps === null || tableProps === void 0 ? void 0 : tableProps.sx))) }),
|
2550
|
-
enableTableHead && React__default["default"].createElement(MRT_TableHead, {
|
2551
|
-
memoMode === 'table-body' ? (React__default["default"].createElement(Memo_MRT_TableBody, {
|
2552
|
-
enableTableFooter && React__default["default"].createElement(MRT_TableFooter, {
|
2656
|
+
enableTableHead && React__default["default"].createElement(MRT_TableHead, Object.assign({}, props)),
|
2657
|
+
memoMode === 'table-body' ? (React__default["default"].createElement(Memo_MRT_TableBody, Object.assign({ columnVirtualizer: columnVirtualizer }, props))) : (React__default["default"].createElement(MRT_TableBody, Object.assign({ columnVirtualizer: columnVirtualizer }, props))),
|
2658
|
+
enableTableFooter && React__default["default"].createElement(MRT_TableFooter, Object.assign({}, props))));
|
2553
2659
|
};
|
2554
2660
|
|
2555
2661
|
const useIsomorphicLayoutEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;
|
@@ -2904,7 +3010,7 @@ const MaterialReactTable = (_a) => {
|
|
2904
3010
|
const _sortingFns = React.useMemo(() => (Object.assign(Object.assign({}, MRT_SortingFns), sortingFns)), []);
|
2905
3011
|
const _defaultColumn = React.useMemo(() => (Object.assign(Object.assign({}, MRT_DefaultColumn), defaultColumn)), []);
|
2906
3012
|
const _defaultDisplayColumn = React.useMemo(() => (Object.assign(Object.assign({}, MRT_DefaultDisplayColumn), defaultDisplayColumn)), []);
|
2907
|
-
if (rest.enableRowVirtualization) {
|
3013
|
+
if (rest.enableRowVirtualization || rest.enableColumnVirtualization) {
|
2908
3014
|
layoutMode = 'grid';
|
2909
3015
|
enableStickyHeader = true;
|
2910
3016
|
}
|