material-react-table 1.4.3 → 1.5.0-beta.1
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 +183 -71
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types/MaterialReactTable.d.ts +19 -6
- 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 +179 -67
- package/dist/esm/material-react-table.esm.js.map +1 -1
- package/dist/esm/types/MaterialReactTable.d.ts +19 -6
- 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 +21 -8
- package/locales/ru.esm.js +1 -1
- package/locales/ru.js +1 -1
- package/package.json +1 -1
- package/src/MaterialReactTable.tsx +48 -11
- 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/column.utils.ts +4 -1
- package/src/footer/MRT_TableFooter.tsx +13 -1
- package/src/footer/MRT_TableFooterCell.tsx +6 -1
- package/src/footer/MRT_TableFooterRow.tsx +27 -4
- package/src/head/MRT_TableHead.tsx +13 -1
- package/src/head/MRT_TableHeadCell.tsx +2 -2
- package/src/head/MRT_TableHeadRow.tsx +26 -4
- package/src/table/MRT_Table.tsx +105 -7
- package/src/table/MRT_TableRoot.tsx +1 -1
- 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');
|
@@ -324,7 +324,9 @@ const getCommonCellStyles = ({ column, header, table, tableCellProps, theme, })
|
|
324
324
|
? 'sticky'
|
325
325
|
: undefined, right: column.getIsPinned() === 'right'
|
326
326
|
? `${getTotalRight(table, column)}px`
|
327
|
-
: undefined, transition:
|
327
|
+
: undefined, transition: table.options.enableColumnVirtualization || column.getIsResizing()
|
328
|
+
? 'none'
|
329
|
+
: `all 150ms ease-in-out` }, ((tableCellProps === null || tableCellProps === void 0 ? void 0 : tableCellProps.sx) instanceof Function
|
328
330
|
? tableCellProps.sx(theme)
|
329
331
|
: tableCellProps === null || tableCellProps === void 0 ? void 0 : tableCellProps.sx)), { flex: table.options.layoutMode === 'grid'
|
330
332
|
? `${column.getSize()} 0 auto`
|
@@ -1210,7 +1212,7 @@ const MRT_LinearProgressBar = ({ isTopToolbar, table }) => {
|
|
1210
1212
|
React__default["default"].createElement(LinearProgress__default["default"], Object.assign({ "aria-label": "Loading", "aria-busy": "true", sx: { position: 'relative' } }, linearProgressProps))));
|
1211
1213
|
};
|
1212
1214
|
|
1213
|
-
const MRT_TablePagination = ({ table, position, }) => {
|
1215
|
+
const MRT_TablePagination = ({ table, position = 'bottom', }) => {
|
1214
1216
|
const { getPrePaginationRowModel, getState, setPageIndex, setPageSize, options: { muiTablePaginationProps, enableToolbarInternalActions, localization, rowCount, }, } = table;
|
1215
1217
|
const { pagination: { pageSize = 10, pageIndex = 0 }, showGlobalFilter, } = getState();
|
1216
1218
|
const totalRowCount = rowCount !== null && rowCount !== void 0 ? rowCount : getPrePaginationRowModel().rows.length;
|
@@ -2041,17 +2043,25 @@ const MRT_TableHeadCell = ({ header, table }) => {
|
|
2041
2043
|
column.getCanFilter() && (React__default["default"].createElement(MRT_TableHeadCellFilterContainer, { header: header, table: table }))));
|
2042
2044
|
};
|
2043
2045
|
|
2044
|
-
const MRT_TableHeadRow = ({ headerGroup, table }) => {
|
2046
|
+
const MRT_TableHeadRow = ({ headerGroup, table, virtualColumns, virtualPaddingLeft, virtualPaddingRight, }) => {
|
2045
2047
|
const { options: { layoutMode, muiTableHeadRowProps }, } = table;
|
2046
2048
|
const tableRowProps = muiTableHeadRowProps instanceof Function
|
2047
2049
|
? muiTableHeadRowProps({ headerGroup, table })
|
2048
2050
|
: muiTableHeadRowProps;
|
2049
2051
|
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
2052
|
? tableRowProps === null || tableRowProps === void 0 ? void 0 : tableRowProps.sx(theme)
|
2051
|
-
: tableRowProps === null || tableRowProps === void 0 ? void 0 : tableRowProps.sx))) }),
|
2052
|
-
}
|
2053
|
-
|
2054
|
-
const
|
2053
|
+
: tableRowProps === null || tableRowProps === void 0 ? void 0 : tableRowProps.sx))) }),
|
2054
|
+
virtualPaddingLeft ? (React__default["default"].createElement("th", { style: { display: 'flex', width: virtualPaddingLeft } })) : null,
|
2055
|
+
(virtualColumns !== null && virtualColumns !== void 0 ? virtualColumns : headerGroup.headers).map((headerOrVirtualHeader) => {
|
2056
|
+
const header = virtualColumns
|
2057
|
+
? headerGroup.headers[headerOrVirtualHeader.index]
|
2058
|
+
: headerOrVirtualHeader;
|
2059
|
+
return (React__default["default"].createElement(MRT_TableHeadCell, { header: header, key: header.id, table: table }));
|
2060
|
+
}),
|
2061
|
+
virtualPaddingRight ? (React__default["default"].createElement("th", { style: { display: 'flex', width: virtualPaddingRight } })) : null));
|
2062
|
+
};
|
2063
|
+
|
2064
|
+
const MRT_TableHead = ({ table, virtualColumns, virtualPaddingLeft, virtualPaddingRight, }) => {
|
2055
2065
|
const { getHeaderGroups, getState, options: { enableStickyHeader, layoutMode, muiTableHeadProps }, } = table;
|
2056
2066
|
const { isFullScreen } = getState();
|
2057
2067
|
const tableHeadProps = muiTableHeadProps instanceof Function
|
@@ -2060,7 +2070,7 @@ const MRT_TableHead = ({ table }) => {
|
|
2060
2070
|
const stickyHeader = enableStickyHeader || isFullScreen;
|
2061
2071
|
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
2072
|
? 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 })))));
|
2073
|
+
: 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
2074
|
};
|
2065
2075
|
|
2066
2076
|
const MRT_EditCellTextField = ({ cell, showLabel, table, }) => {
|
@@ -2199,7 +2209,7 @@ const MRT_TableBodyCellValue = ({ cell, table }) => {
|
|
2199
2209
|
: (_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
2210
|
};
|
2201
2211
|
|
2202
|
-
const MRT_TableBodyCell = ({ cell, enableHover, numRows, rowIndex, rowRef, table, }) => {
|
2212
|
+
const MRT_TableBodyCell = ({ cell, enableHover, measureElement, numRows, rowIndex, rowRef, table, virtualCell, }) => {
|
2203
2213
|
var _a, _b;
|
2204
2214
|
const theme = styles.useTheme();
|
2205
2215
|
const { getState, options: { editingMode, enableClickToCopy, enableColumnOrdering, enableEditing, enableGrouping, enableRowNumbers, layoutMode, muiTableBodyCellProps, muiTableBodyCellSkeletonProps, rowNumberMode, }, refs: { editInputRefs }, setEditingCell, setHoveredColumn, } = table;
|
@@ -2271,7 +2281,11 @@ const MRT_TableBodyCell = ({ cell, enableHover, numRows, rowIndex, rowRef, table
|
|
2271
2281
|
setHoveredColumn(columnDef.enableColumnOrdering !== false ? column : null);
|
2272
2282
|
}
|
2273
2283
|
};
|
2274
|
-
return (React__default["default"].createElement(TableCell__default["default"], Object.assign({
|
2284
|
+
return (React__default["default"].createElement(TableCell__default["default"], Object.assign({ "data-index": virtualCell === null || virtualCell === void 0 ? void 0 : virtualCell.index, ref: (node) => {
|
2285
|
+
if (node) {
|
2286
|
+
measureElement === null || measureElement === void 0 ? void 0 : measureElement(node);
|
2287
|
+
}
|
2288
|
+
} }, 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
2289
|
? columnDefType === 'display'
|
2276
2290
|
? '0 0.5rem'
|
2277
2291
|
: '0.5rem'
|
@@ -2297,7 +2311,12 @@ const MRT_TableBodyCell = ({ cell, enableHover, numRows, rowIndex, rowRef, table
|
|
2297
2311
|
? `${styles.lighten(theme.palette.background.default, 0.2)} !important`
|
2298
2312
|
: `${styles.darken(theme.palette.background.default, 0.1)} !important`
|
2299
2313
|
: undefined,
|
2300
|
-
} }, getCommonCellStyles({
|
2314
|
+
} }, getCommonCellStyles({
|
2315
|
+
column,
|
2316
|
+
table,
|
2317
|
+
theme,
|
2318
|
+
tableCellProps,
|
2319
|
+
})), draggingBorders)) }),
|
2301
2320
|
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
2321
|
rowNumberMode === 'static' &&
|
2303
2322
|
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 +2358,7 @@ const MRT_TableDetailPanel = ({ parentRowRef, row, table, virtualRow, }) => {
|
|
2339
2358
|
: 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
2359
|
};
|
2341
2360
|
|
2342
|
-
const MRT_TableBodyRow = ({ measureElement, numRows, row, rowIndex, table, virtualRow, }) => {
|
2361
|
+
const MRT_TableBodyRow = ({ columnVirtualizer, measureElement, numRows, row, rowIndex, table, virtualColumns, virtualPaddingLeft, virtualPaddingRight, virtualRow, }) => {
|
2343
2362
|
const theme = styles.useTheme();
|
2344
2363
|
const { getIsSomeColumnsPinned, getState, options: { enableRowOrdering, layoutMode, memoMode, muiTableBodyRowProps, renderDetailPanel, }, setHoveredRow, } = table;
|
2345
2364
|
const { draggingColumn, draggingRow, editingCell, editingRow, hoveredRow } = getState();
|
@@ -2378,37 +2397,50 @@ const MRT_TableBodyRow = ({ measureElement, numRows, row, rowIndex, table, virtu
|
|
2378
2397
|
: undefined,
|
2379
2398
|
} }, ((tableRowProps === null || tableRowProps === void 0 ? void 0 : tableRowProps.sx) instanceof Function
|
2380
2399
|
? 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
|
-
|
2400
|
+
: tableRowProps === null || tableRowProps === void 0 ? void 0 : tableRowProps.sx)), draggingBorders)) }),
|
2401
|
+
virtualPaddingLeft ? (React__default["default"].createElement("td", { style: { display: 'flex', width: virtualPaddingLeft } })) : null,
|
2402
|
+
(virtualColumns !== null && virtualColumns !== void 0 ? virtualColumns : row.getVisibleCells()).map((cellOrVirtualCell) => {
|
2403
|
+
const cell = columnVirtualizer
|
2404
|
+
? row.getVisibleCells()[cellOrVirtualCell.index]
|
2405
|
+
: cellOrVirtualCell;
|
2406
|
+
const props = {
|
2407
|
+
cell,
|
2408
|
+
enableHover: (tableRowProps === null || tableRowProps === void 0 ? void 0 : tableRowProps.hover) !== false,
|
2409
|
+
key: cell.id,
|
2410
|
+
measureElement: columnVirtualizer === null || columnVirtualizer === void 0 ? void 0 : columnVirtualizer.measureElement,
|
2411
|
+
numRows,
|
2412
|
+
rowIndex,
|
2413
|
+
rowRef,
|
2414
|
+
table,
|
2415
|
+
virtualCell: columnVirtualizer
|
2416
|
+
? cellOrVirtualCell
|
2417
|
+
: undefined,
|
2418
|
+
};
|
2419
|
+
return memoMode === 'cells' &&
|
2420
|
+
cell.column.columnDef.columnDefType === 'data' &&
|
2421
|
+
!draggingColumn &&
|
2422
|
+
!draggingRow &&
|
2423
|
+
(editingCell === null || editingCell === void 0 ? void 0 : editingCell.id) !== cell.id &&
|
2424
|
+
(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)));
|
2425
|
+
}),
|
2426
|
+
virtualPaddingRight ? (React__default["default"].createElement("td", { style: { display: 'flex', width: virtualPaddingRight } })) : null),
|
2398
2427
|
renderDetailPanel && !row.getIsGrouped() && (React__default["default"].createElement(MRT_TableDetailPanel, { parentRowRef: rowRef, row: row, table: table, virtualRow: virtualRow }))));
|
2399
2428
|
};
|
2400
2429
|
const Memo_MRT_TableBodyRow = React.memo(MRT_TableBodyRow, (prev, next) => prev.row === next.row);
|
2401
2430
|
|
2402
|
-
const MRT_TableBody = ({ table }) => {
|
2431
|
+
const MRT_TableBody = ({ columnVirtualizer, table, virtualColumns, virtualPaddingLeft, virtualPaddingRight, }) => {
|
2403
2432
|
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;
|
2433
|
+
const { getRowModel, getPrePaginationRowModel, getState, options: { enableGlobalFilterRankedResults, enablePagination, enableRowVirtualization, layoutMode, localization, manualFiltering, manualSorting, memoMode, muiTableBodyProps, rowVirtualizerInstanceRef, rowVirtualizerProps, virtualizerInstanceRef, virtualizerProps, }, refs: { tableContainerRef, tablePaperRef }, } = table;
|
2405
2434
|
const { columnFilters, density, globalFilter, pagination, sorting } = getState();
|
2406
2435
|
const tableBodyProps = muiTableBodyProps instanceof Function
|
2407
2436
|
? muiTableBodyProps({ table })
|
2408
2437
|
: muiTableBodyProps;
|
2409
|
-
const
|
2438
|
+
const vProps_old = virtualizerProps instanceof Function
|
2410
2439
|
? virtualizerProps({ table })
|
2411
2440
|
: virtualizerProps;
|
2441
|
+
const vProps = rowVirtualizerProps instanceof Function
|
2442
|
+
? rowVirtualizerProps({ table })
|
2443
|
+
: rowVirtualizerProps;
|
2412
2444
|
const rows = React.useMemo(() => {
|
2413
2445
|
if (enableGlobalFilterRankedResults &&
|
2414
2446
|
globalFilter &&
|
@@ -2434,14 +2466,22 @@ const MRT_TableBody = ({ table }) => {
|
|
2434
2466
|
pagination.pageIndex,
|
2435
2467
|
pagination.pageSize,
|
2436
2468
|
]);
|
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))
|
2469
|
+
const rowVirtualizer = enableRowVirtualization
|
2470
|
+
? 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
2471
|
: undefined;
|
2440
|
-
if (
|
2441
|
-
|
2472
|
+
if (rowVirtualizerInstanceRef && rowVirtualizer) {
|
2473
|
+
rowVirtualizerInstanceRef.current = rowVirtualizer;
|
2442
2474
|
}
|
2443
|
-
|
2444
|
-
|
2475
|
+
//deprecated
|
2476
|
+
if (virtualizerInstanceRef && rowVirtualizer) {
|
2477
|
+
virtualizerInstanceRef.current = rowVirtualizer;
|
2478
|
+
}
|
2479
|
+
const virtualRows = rowVirtualizer
|
2480
|
+
? rowVirtualizer.getVirtualItems()
|
2481
|
+
: undefined;
|
2482
|
+
return (React__default["default"].createElement(TableBody__default["default"], Object.assign({}, tableBodyProps, { sx: (theme) => (Object.assign({ display: layoutMode === 'grid' ? 'grid' : 'table-row-group', height: rowVirtualizer
|
2483
|
+
? `${rowVirtualizer.getTotalSize()}px`
|
2484
|
+
: 'inherit', minHeight: !rows.length ? '100px' : undefined, position: 'relative' }, ((tableBodyProps === null || tableBodyProps === void 0 ? void 0 : tableBodyProps.sx) instanceof Function
|
2445
2485
|
? tableBodyProps === null || tableBodyProps === void 0 ? void 0 : tableBodyProps.sx(theme)
|
2446
2486
|
: 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
2487
|
React__default["default"].createElement("td", { colSpan: table.getVisibleLeafColumns().length, style: { display: layoutMode === 'grid' ? 'grid' : 'table-cell' } },
|
@@ -2455,19 +2495,21 @@ const MRT_TableBody = ({ table }) => {
|
|
2455
2495
|
} }, globalFilter || columnFilters.length
|
2456
2496
|
? localization.noResultsFound
|
2457
2497
|
: localization.noRecordsToDisplay)))) : (React__default["default"].createElement(React__default["default"].Fragment, null, (virtualRows !== null && virtualRows !== void 0 ? virtualRows : rows).map((rowOrVirtualRow, rowIndex) => {
|
2458
|
-
const row =
|
2498
|
+
const row = rowVirtualizer
|
2459
2499
|
? rows[rowOrVirtualRow.index]
|
2460
2500
|
: rowOrVirtualRow;
|
2461
2501
|
const props = {
|
2502
|
+
columnVirtualizer,
|
2462
2503
|
key: row.id,
|
2463
|
-
measureElement:
|
2464
|
-
? virtualizer.measureElement
|
2465
|
-
: undefined,
|
2504
|
+
measureElement: rowVirtualizer === null || rowVirtualizer === void 0 ? void 0 : rowVirtualizer.measureElement,
|
2466
2505
|
numRows: rows.length,
|
2467
2506
|
row,
|
2468
|
-
rowIndex:
|
2507
|
+
rowIndex: rowVirtualizer ? rowOrVirtualRow.index : rowIndex,
|
2469
2508
|
table,
|
2470
|
-
|
2509
|
+
virtualColumns,
|
2510
|
+
virtualPaddingLeft,
|
2511
|
+
virtualPaddingRight,
|
2512
|
+
virtualRow: rowVirtualizer
|
2471
2513
|
? rowOrVirtualRow
|
2472
2514
|
: undefined,
|
2473
2515
|
};
|
@@ -2494,7 +2536,12 @@ const MRT_TableFooterCell = ({ footer, table }) => {
|
|
2494
2536
|
? '0.5rem'
|
2495
2537
|
: density === 'comfortable'
|
2496
2538
|
? '1rem'
|
2497
|
-
: '1.5rem', verticalAlign: 'top', zIndex: column.getIsPinned() && columnDefType !== 'group' ? 2 : 1 }, getCommonCellStyles({
|
2539
|
+
: '1.5rem', verticalAlign: 'top', zIndex: column.getIsPinned() && columnDefType !== 'group' ? 2 : 1 }, getCommonCellStyles({
|
2540
|
+
column,
|
2541
|
+
table,
|
2542
|
+
theme,
|
2543
|
+
tableCellProps,
|
2544
|
+
}))) }),
|
2498
2545
|
React__default["default"].createElement(React__default["default"].Fragment, null, footer.isPlaceholder
|
2499
2546
|
? null
|
2500
2547
|
: (_c = (_b = (columnDef.Footer instanceof Function
|
@@ -2506,7 +2553,7 @@ const MRT_TableFooterCell = ({ footer, table }) => {
|
|
2506
2553
|
: columnDef.Footer)) !== null && _b !== void 0 ? _b : columnDef.footer) !== null && _c !== void 0 ? _c : null)));
|
2507
2554
|
};
|
2508
2555
|
|
2509
|
-
const MRT_TableFooterRow = ({ footerGroup, table }) => {
|
2556
|
+
const MRT_TableFooterRow = ({ footerGroup, table, virtualColumns, virtualPaddingLeft, virtualPaddingRight, }) => {
|
2510
2557
|
var _a;
|
2511
2558
|
const { options: { layoutMode, muiTableFooterRowProps }, } = table;
|
2512
2559
|
// if no content in row, skip row
|
@@ -2517,12 +2564,20 @@ const MRT_TableFooterRow = ({ footerGroup, table }) => {
|
|
2517
2564
|
const tableRowProps = muiTableFooterRowProps instanceof Function
|
2518
2565
|
? muiTableFooterRowProps({ footerGroup, table })
|
2519
2566
|
: 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
|
2567
|
+
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
2568
|
? tableRowProps === null || tableRowProps === void 0 ? void 0 : tableRowProps.sx(theme)
|
2522
|
-
: tableRowProps === null || tableRowProps === void 0 ? void 0 : tableRowProps.sx))) }),
|
2523
|
-
}
|
2524
|
-
|
2525
|
-
const
|
2569
|
+
: tableRowProps === null || tableRowProps === void 0 ? void 0 : tableRowProps.sx))) }),
|
2570
|
+
virtualPaddingLeft ? (React__default["default"].createElement("th", { style: { display: 'flex', width: virtualPaddingLeft } })) : null,
|
2571
|
+
(virtualColumns !== null && virtualColumns !== void 0 ? virtualColumns : footerGroup.headers).map((footerOrVirtualFooter) => {
|
2572
|
+
const footer = virtualColumns
|
2573
|
+
? footerGroup.headers[footerOrVirtualFooter.index]
|
2574
|
+
: footerOrVirtualFooter;
|
2575
|
+
return (React__default["default"].createElement(MRT_TableFooterCell, { footer: footer, key: footer.id, table: table }));
|
2576
|
+
}),
|
2577
|
+
virtualPaddingRight ? (React__default["default"].createElement("th", { style: { display: 'flex', width: virtualPaddingRight } })) : null));
|
2578
|
+
};
|
2579
|
+
|
2580
|
+
const MRT_TableFooter = ({ table, virtualColumns, virtualPaddingLeft, virtualPaddingRight, }) => {
|
2526
2581
|
const { getFooterGroups, getState, options: { enableStickyFooter, layoutMode, muiTableFooterProps }, } = table;
|
2527
2582
|
const { isFullScreen } = getState();
|
2528
2583
|
const tableFooterProps = muiTableFooterProps instanceof Function
|
@@ -2535,21 +2590,74 @@ const MRT_TableFooter = ({ table }) => {
|
|
2535
2590
|
: `1px solid ${theme.palette.grey[700]}`
|
2536
2591
|
: undefined, position: stickFooter ? 'sticky' : undefined }, ((tableFooterProps === null || tableFooterProps === void 0 ? void 0 : tableFooterProps.sx) instanceof Function
|
2537
2592
|
? 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 })))));
|
2593
|
+
: 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
2594
|
};
|
2540
2595
|
|
2541
2596
|
const MRT_Table = ({ table }) => {
|
2542
|
-
|
2543
|
-
const {
|
2597
|
+
var _a, _b;
|
2598
|
+
const { getState, options: { columnVirtualizerInstanceRef, columnVirtualizerProps, enableColumnResizing, enableColumnVirtualization, enablePinning, enableStickyHeader, enableTableFooter, enableTableHead, layoutMode, memoMode, muiTableProps, }, refs: { tableContainerRef }, } = table;
|
2599
|
+
const { isFullScreen, columnPinning, columnVisibility } = getState();
|
2544
2600
|
const tableProps = muiTableProps instanceof Function
|
2545
2601
|
? muiTableProps({ table })
|
2546
2602
|
: muiTableProps;
|
2547
|
-
|
2603
|
+
const vProps = columnVirtualizerProps instanceof Function
|
2604
|
+
? columnVirtualizerProps({ table })
|
2605
|
+
: columnVirtualizerProps;
|
2606
|
+
//get first 16 column widths and average them
|
2607
|
+
const averageColumnWidth = React.useMemo(() => {
|
2608
|
+
var _a, _b, _c, _d;
|
2609
|
+
const columnsWidths = (_d = (_c = (_b = (_a = table
|
2610
|
+
.getRowModel()
|
2611
|
+
.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 : [];
|
2612
|
+
return columnsWidths.reduce((a, b) => a + b, 0) / columnsWidths.length;
|
2613
|
+
}, [table.getRowModel().rows, columnPinning, columnVisibility]);
|
2614
|
+
const pinnedColumnIndexes = React.useMemo(() => enableColumnVirtualization && enablePinning
|
2615
|
+
? [
|
2616
|
+
...table.getLeftFlatHeaders().map((h) => h.column.getPinnedIndex()),
|
2617
|
+
...table
|
2618
|
+
.getRightFlatHeaders()
|
2619
|
+
.map((h) => table.getVisibleFlatColumns().length -
|
2620
|
+
h.column.getPinnedIndex() -
|
2621
|
+
1),
|
2622
|
+
]
|
2623
|
+
: [], [columnPinning, enableColumnVirtualization, enablePinning]);
|
2624
|
+
const columnVirtualizer = enableColumnVirtualization
|
2625
|
+
? 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) => [
|
2626
|
+
...new Set([
|
2627
|
+
...pinnedColumnIndexes,
|
2628
|
+
...reactVirtual.defaultRangeExtractor(range),
|
2629
|
+
]),
|
2630
|
+
].sort((a, b) => a - b), [pinnedColumnIndexes]) }, vProps))
|
2631
|
+
: undefined;
|
2632
|
+
if (columnVirtualizerInstanceRef && columnVirtualizer) {
|
2633
|
+
columnVirtualizerInstanceRef.current = columnVirtualizer;
|
2634
|
+
}
|
2635
|
+
const virtualColumns = columnVirtualizer
|
2636
|
+
? columnVirtualizer.getVirtualItems()
|
2637
|
+
: undefined;
|
2638
|
+
let virtualPaddingLeft;
|
2639
|
+
let virtualPaddingRight;
|
2640
|
+
if (columnVirtualizer && (virtualColumns === null || virtualColumns === void 0 ? void 0 : virtualColumns.length)) {
|
2641
|
+
virtualPaddingLeft = (virtualColumns === null || virtualColumns === void 0 ? void 0 : virtualColumns.length)
|
2642
|
+
? ((_a = virtualColumns[0]) === null || _a === void 0 ? void 0 : _a.start) || 0
|
2643
|
+
: 0;
|
2644
|
+
virtualPaddingRight = (virtualColumns === null || virtualColumns === void 0 ? void 0 : virtualColumns.length)
|
2645
|
+
? columnVirtualizer.getTotalSize() -
|
2646
|
+
(((_b = virtualColumns[virtualColumns.length - 1]) === null || _b === void 0 ? void 0 : _b.end) || 0)
|
2647
|
+
: 0;
|
2648
|
+
}
|
2649
|
+
const props = {
|
2650
|
+
table,
|
2651
|
+
virtualColumns,
|
2652
|
+
virtualPaddingLeft,
|
2653
|
+
virtualPaddingRight,
|
2654
|
+
};
|
2655
|
+
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
2656
|
? tableProps.sx(theme)
|
2549
2657
|
: 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, {
|
2658
|
+
enableTableHead && React__default["default"].createElement(MRT_TableHead, Object.assign({}, props)),
|
2659
|
+
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))),
|
2660
|
+
enableTableFooter && React__default["default"].createElement(MRT_TableFooter, Object.assign({}, props))));
|
2553
2661
|
};
|
2554
2662
|
|
2555
2663
|
const useIsomorphicLayoutEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;
|
@@ -2742,12 +2850,9 @@ const MRT_TableRoot = (props) => {
|
|
2742
2850
|
...Array(((_d = (_c = props.state) === null || _c === void 0 ? void 0 : _c.pagination) === null || _d === void 0 ? void 0 : _d.pageSize) ||
|
2743
2851
|
((_e = initialState === null || initialState === void 0 ? void 0 : initialState.pagination) === null || _e === void 0 ? void 0 : _e.pageSize) ||
|
2744
2852
|
10).fill(null),
|
2745
|
-
].map(() => Object.assign({}, ...getAllLeafColumnDefs(props.columns).map((col) => {
|
2746
|
-
|
2747
|
-
|
2748
|
-
[(_b = (_a = col.id) !== null && _a !== void 0 ? _a : col.accessorKey) !== null && _b !== void 0 ? _b : '']: null,
|
2749
|
-
});
|
2750
|
-
})))
|
2853
|
+
].map(() => Object.assign({}, ...getAllLeafColumnDefs(props.columns).map((col) => ({
|
2854
|
+
[getColumnId(col)]: null,
|
2855
|
+
}))))
|
2751
2856
|
: props.data;
|
2752
2857
|
}, [props.data, (_s = props.state) === null || _s === void 0 ? void 0 : _s.isLoading, (_t = props.state) === null || _t === void 0 ? void 0 : _t.showSkeletons]);
|
2753
2858
|
//@ts-ignore
|
@@ -2896,19 +3001,26 @@ const MRT_Localization_EN = {
|
|
2896
3001
|
};
|
2897
3002
|
|
2898
3003
|
const MaterialReactTable = (_a) => {
|
2899
|
-
var
|
2900
|
-
|
3004
|
+
var _b;
|
3005
|
+
var { aggregationFns, autoResetExpanded = false, columnResizeMode = 'onEnd', defaultColumn, defaultDisplayColumn, editingMode = 'modal', enableBottomToolbar = true, enableColumnActions = true, enableColumnFilters = true, enableColumnOrdering = false, enableColumnResizing = false, enableDensityToggle = true, enableExpandAll = true, enableFilters = true, enableFullScreenToggle = true, enableGlobalFilter = true, enableGlobalFilterRankedResults = true, enableGrouping = false, enableHiding = true, enableMultiRowSelection = true, enableMultiSort = true, enablePagination = true, enablePinning = false, enableRowSelection = false, enableSelectAll = true, enableSorting = true, enableStickyHeader = false, enableTableFooter = true, enableTableHead = true, enableToolbarInternalActions = true, enableTopToolbar = true, filterFns, icons, layoutMode = 'semantic', localization, manualFiltering, manualGrouping, manualPagination, manualSorting, positionActionsColumn = 'first', positionExpandColumn = 'first', positionGlobalFilter = 'right', positionPagination = 'bottom', positionToolbarAlertBanner = 'top', positionToolbarDropZone = 'top', rowNumberMode = 'original', selectAllMode = 'page', sortingFns } = _a, rest = __rest(_a, ["aggregationFns", "autoResetExpanded", "columnResizeMode", "defaultColumn", "defaultDisplayColumn", "editingMode", "enableBottomToolbar", "enableColumnActions", "enableColumnFilters", "enableColumnOrdering", "enableColumnResizing", "enableDensityToggle", "enableExpandAll", "enableFilters", "enableFullScreenToggle", "enableGlobalFilter", "enableGlobalFilterRankedResults", "enableGrouping", "enableHiding", "enableMultiRowSelection", "enableMultiSort", "enablePagination", "enablePinning", "enableRowSelection", "enableSelectAll", "enableSorting", "enableStickyHeader", "enableTableFooter", "enableTableHead", "enableToolbarInternalActions", "enableTopToolbar", "filterFns", "icons", "layoutMode", "localization", "manualFiltering", "manualGrouping", "manualPagination", "manualSorting", "positionActionsColumn", "positionExpandColumn", "positionGlobalFilter", "positionPagination", "positionToolbarAlertBanner", "positionToolbarDropZone", "rowNumberMode", "selectAllMode", "sortingFns"]);
|
3006
|
+
const _icons = React.useMemo(() => (Object.assign(Object.assign({}, MRT_Default_Icons), icons)), [icons]);
|
2901
3007
|
const _localization = React.useMemo(() => (Object.assign(Object.assign({}, MRT_Localization_EN), localization)), [localization]);
|
2902
3008
|
const _aggregationFns = React.useMemo(() => (Object.assign(Object.assign({}, MRT_AggregationFns), aggregationFns)), []);
|
2903
3009
|
const _filterFns = React.useMemo(() => (Object.assign(Object.assign({}, MRT_FilterFns), filterFns)), []);
|
2904
3010
|
const _sortingFns = React.useMemo(() => (Object.assign(Object.assign({}, MRT_SortingFns), sortingFns)), []);
|
2905
|
-
const _defaultColumn = React.useMemo(() => (Object.assign(Object.assign({}, MRT_DefaultColumn), defaultColumn)), []);
|
2906
|
-
const _defaultDisplayColumn = React.useMemo(() => (Object.assign(Object.assign({}, MRT_DefaultDisplayColumn), defaultDisplayColumn)), []);
|
2907
|
-
if (rest.enableRowVirtualization) {
|
3011
|
+
const _defaultColumn = React.useMemo(() => (Object.assign(Object.assign({}, MRT_DefaultColumn), defaultColumn)), [defaultColumn]);
|
3012
|
+
const _defaultDisplayColumn = React.useMemo(() => (Object.assign(Object.assign({}, MRT_DefaultDisplayColumn), defaultDisplayColumn)), [defaultDisplayColumn]);
|
3013
|
+
if (rest.enableRowVirtualization || rest.enableColumnVirtualization) {
|
2908
3014
|
layoutMode = 'grid';
|
2909
3015
|
enableStickyHeader = true;
|
2910
3016
|
}
|
2911
|
-
|
3017
|
+
if (!((_b = rest.data) === null || _b === void 0 ? void 0 : _b.length)) {
|
3018
|
+
manualFiltering = true;
|
3019
|
+
manualGrouping = true;
|
3020
|
+
manualPagination = true;
|
3021
|
+
manualSorting = true;
|
3022
|
+
}
|
3023
|
+
return (React__default["default"].createElement(MRT_TableRoot, Object.assign({ aggregationFns: _aggregationFns, autoResetExpanded: autoResetExpanded, columnResizeMode: columnResizeMode, defaultColumn: _defaultColumn, defaultDisplayColumn: _defaultDisplayColumn, editingMode: editingMode, enableBottomToolbar: enableBottomToolbar, enableColumnActions: enableColumnActions, enableColumnFilters: enableColumnFilters, enableColumnOrdering: enableColumnOrdering, enableColumnResizing: enableColumnResizing, enableDensityToggle: enableDensityToggle, enableExpandAll: enableExpandAll, enableFilters: enableFilters, enableFullScreenToggle: enableFullScreenToggle, enableGlobalFilter: enableGlobalFilter, enableGlobalFilterRankedResults: enableGlobalFilterRankedResults, enableGrouping: enableGrouping, enableHiding: enableHiding, enableMultiRowSelection: enableMultiRowSelection, enableMultiSort: enableMultiSort, enablePagination: enablePagination, enablePinning: enablePinning, enableRowSelection: enableRowSelection, enableSelectAll: enableSelectAll, enableSorting: enableSorting, enableStickyHeader: enableStickyHeader, enableTableFooter: enableTableFooter, enableTableHead: enableTableHead, enableToolbarInternalActions: enableToolbarInternalActions, enableTopToolbar: enableTopToolbar, filterFns: _filterFns, icons: _icons, layoutMode: layoutMode, localization: _localization, manualFiltering: manualFiltering, manualGrouping: manualGrouping, manualPagination: manualPagination, manualSorting: manualSorting, positionActionsColumn: positionActionsColumn, positionExpandColumn: positionExpandColumn, positionGlobalFilter: positionGlobalFilter, positionPagination: positionPagination, positionToolbarAlertBanner: positionToolbarAlertBanner, positionToolbarDropZone: positionToolbarDropZone, rowNumberMode: rowNumberMode, selectAllMode: selectAllMode, sortingFns: _sortingFns }, rest)));
|
2912
3024
|
};
|
2913
3025
|
|
2914
3026
|
exports.MRT_CopyButton = MRT_CopyButton;
|