material-react-table 0.39.0 → 0.40.2
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 +11 -2
- package/dist/cjs/index.js +40 -23
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/MaterialReactTable.d.ts +11 -2
- package/dist/esm/material-react-table.esm.js +40 -23
- package/dist/esm/material-react-table.esm.js.map +1 -1
- package/dist/index.d.ts +12 -3
- package/package.json +4 -4
- package/src/MaterialReactTable.tsx +11 -5
- package/src/body/MRT_TableBody.tsx +15 -10
- package/src/body/MRT_TableBodyCell.tsx +6 -4
- package/src/head/MRT_TableHeadCell.tsx +21 -13
- package/src/menus/MRT_ShowHideColumnsMenuItems.tsx +1 -1
- package/src/table/MRT_TableRoot.tsx +15 -9
- package/src/toolbar/MRT_ToolbarDropZone.tsx +10 -2
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Dispatch, DragEvent, MutableRefObject, ReactNode, SetStateAction } from 'react';
|
|
2
2
|
import type { AlertProps, ButtonProps, CheckboxProps, ChipProps, IconButtonProps, LinearProgressProps, PaperProps, 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
|
-
import type { Options as VirtualizerOptions } from 'react-virtual';
|
|
4
|
+
import type { Options as VirtualizerOptions, VirtualItem } from 'react-virtual';
|
|
5
5
|
import { MRT_Icons } from './icons';
|
|
6
6
|
import { MRT_FilterFns } from './filterFns';
|
|
7
7
|
import { MRT_Localization } from './localization';
|
|
@@ -505,9 +505,18 @@ export declare type MaterialReactTableProps<TData extends Record<string, any> =
|
|
|
505
505
|
rowNumberMode?: 'original' | 'static';
|
|
506
506
|
selectAllMode?: 'all' | 'page';
|
|
507
507
|
state?: Partial<MRT_TableState<TData>>;
|
|
508
|
+
tableInstanceRef?: MutableRefObject<MRT_TableInstance<TData> | null>;
|
|
508
509
|
virtualizerProps?: Partial<VirtualizerOptions<HTMLDivElement>> | (({ table, }: {
|
|
509
510
|
table: MRT_TableInstance<TData>;
|
|
510
511
|
}) => Partial<VirtualizerOptions<HTMLDivElement>>);
|
|
512
|
+
virtualizerInstanceRef?: MutableRefObject<Virtualizer | null>;
|
|
511
513
|
};
|
|
512
|
-
declare
|
|
514
|
+
export declare type Virtualizer = {
|
|
515
|
+
virtualItems: VirtualItem[];
|
|
516
|
+
totalSize: number;
|
|
517
|
+
scrollToOffset: (index: number, options?: any | undefined) => void;
|
|
518
|
+
scrollToIndex: (index: number, options?: any | undefined) => void;
|
|
519
|
+
measure: () => void;
|
|
520
|
+
};
|
|
521
|
+
declare const _default: <TData extends Record<string, any> = {}>({ aggregationFns, autoResetExpanded, columnResizeMode, defaultColumn, 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, localization, positionActionsColumn, positionExpandColumn, positionGlobalFilter, positionPagination, positionToolbarAlertBanner, positionToolbarDropZone, rowNumberMode, selectAllMode, sortingFns, ...rest }: MaterialReactTableProps<TData>) => JSX.Element;
|
|
513
522
|
export default _default;
|
package/dist/cjs/index.js
CHANGED
|
@@ -623,7 +623,7 @@ const MRT_ShowHideColumnsMenuItems = ({ allColumns, hoveredColumn, setHoveredCol
|
|
|
623
623
|
}
|
|
624
624
|
};
|
|
625
625
|
const handleDragEnter = (_e) => {
|
|
626
|
-
if (!isDragging) {
|
|
626
|
+
if (!isDragging && columnDef.enableColumnOrdering !== false) {
|
|
627
627
|
setHoveredColumn(column);
|
|
628
628
|
}
|
|
629
629
|
};
|
|
@@ -1183,11 +1183,13 @@ const MRT_ToolbarInternalButtons = ({ table }) => {
|
|
|
1183
1183
|
const MRT_ToolbarDropZone = ({ table }) => {
|
|
1184
1184
|
var _a, _b;
|
|
1185
1185
|
const { getState, options: { enableGrouping, localization }, setHoveredColumn, } = table;
|
|
1186
|
-
const { draggingColumn, hoveredColumn } = getState();
|
|
1186
|
+
const { draggingColumn, hoveredColumn, grouping } = getState();
|
|
1187
1187
|
const handleDragEnter = (_event) => {
|
|
1188
1188
|
setHoveredColumn({ id: 'drop-zone' });
|
|
1189
1189
|
};
|
|
1190
|
-
return (React__default["default"].createElement(material.Fade, { unmountOnExit: true, mountOnEnter: true, in: !!enableGrouping &&
|
|
1190
|
+
return (React__default["default"].createElement(material.Fade, { unmountOnExit: true, mountOnEnter: true, in: !!enableGrouping &&
|
|
1191
|
+
!!draggingColumn &&
|
|
1192
|
+
!grouping.includes(draggingColumn.id) },
|
|
1191
1193
|
React__default["default"].createElement(material.Box, { sx: (theme) => ({
|
|
1192
1194
|
alignItems: 'center',
|
|
1193
1195
|
backgroundColor: material.alpha(theme.palette.info.main, (hoveredColumn === null || hoveredColumn === void 0 ? void 0 : hoveredColumn.id) === 'drop-zone' ? 0.2 : 0.1),
|
|
@@ -1634,7 +1636,7 @@ const MRT_TableHeadCell = ({ header, table }) => {
|
|
|
1634
1636
|
var _a, _b, _c, _d;
|
|
1635
1637
|
const theme = material.useTheme();
|
|
1636
1638
|
const { getState, options: { enableColumnActions, enableColumnDragging, enableColumnOrdering, enableColumnResizing, enableGrouping, enableMultiSort, muiTableHeadCellProps, }, setHoveredColumn, } = table;
|
|
1637
|
-
const { density, draggingColumn, hoveredColumn, showColumnFilters } = getState();
|
|
1639
|
+
const { density, draggingColumn, grouping, hoveredColumn, showColumnFilters, } = getState();
|
|
1638
1640
|
const { column } = header;
|
|
1639
1641
|
const { columnDef } = column;
|
|
1640
1642
|
const { columnDefType } = columnDef;
|
|
@@ -1750,11 +1752,14 @@ const MRT_TableHeadCell = ({ header, table }) => {
|
|
|
1750
1752
|
column.getCanSort() && (React__default["default"].createElement(MRT_TableHeadCellSortLabel, { header: header, table: table })),
|
|
1751
1753
|
column.getCanFilter() && (React__default["default"].createElement(MRT_TableHeadCellFilterLabel, { header: header, table: table }))),
|
|
1752
1754
|
columnDefType !== 'group' && (React__default["default"].createElement(material.Box, { sx: { whiteSpace: 'nowrap' } },
|
|
1753
|
-
|
|
1754
|
-
columnDef.enableColumnDragging !== false
|
|
1755
|
-
(
|
|
1756
|
-
|
|
1757
|
-
|
|
1755
|
+
enableColumnDragging !== false &&
|
|
1756
|
+
columnDef.enableColumnDragging !== false &&
|
|
1757
|
+
(enableColumnDragging ||
|
|
1758
|
+
(enableColumnOrdering &&
|
|
1759
|
+
columnDef.enableColumnOrdering !== false) ||
|
|
1760
|
+
(enableGrouping &&
|
|
1761
|
+
columnDef.enableGrouping !== false &&
|
|
1762
|
+
!grouping.includes(column.id))) && (React__default["default"].createElement(MRT_TableHeadCellGrabHandle, { column: column, table: table, tableHeadCellRef: tableHeadCellRef })),
|
|
1758
1763
|
(enableColumnActions || columnDef.enableColumnActions) &&
|
|
1759
1764
|
columnDef.enableColumnActions !== false && (React__default["default"].createElement(MRT_TableHeadCellColumnActionsButton, { header: header, table: table })))),
|
|
1760
1765
|
column.getCanResize() && (React__default["default"].createElement(MRT_TableHeadCellResizeHandle, { header: header, table: table })))),
|
|
@@ -1937,7 +1942,9 @@ const MRT_TableBodyCell = ({ cell, enableHover, rowIndex, rowRef, table, }) => {
|
|
|
1937
1942
|
: Math.round(Math.random() * (column.getSize() - column.getSize() / 3) +
|
|
1938
1943
|
column.getSize() / 3)
|
|
1939
1944
|
: 100), [isLoading, showSkeletons]);
|
|
1940
|
-
const handleDoubleClick = (
|
|
1945
|
+
const handleDoubleClick = (event) => {
|
|
1946
|
+
var _a;
|
|
1947
|
+
(_a = tableCellProps === null || tableCellProps === void 0 ? void 0 : tableCellProps.onDoubleClick) === null || _a === void 0 ? void 0 : _a.call(tableCellProps, event);
|
|
1941
1948
|
if ((enableEditing || columnDef.enableEditing) &&
|
|
1942
1949
|
columnDef.enableEditing !== false &&
|
|
1943
1950
|
editingMode === 'cell') {
|
|
@@ -1961,7 +1968,9 @@ const MRT_TableBodyCell = ({ cell, enableHover, rowIndex, rowRef, table, }) => {
|
|
|
1961
1968
|
const getTotalRight = () => {
|
|
1962
1969
|
return ((table.getRightLeafHeaders().length - 1 - column.getPinnedIndex()) * 150);
|
|
1963
1970
|
};
|
|
1964
|
-
const handleDragEnter = (
|
|
1971
|
+
const handleDragEnter = (e) => {
|
|
1972
|
+
var _a;
|
|
1973
|
+
(_a = tableCellProps === null || tableCellProps === void 0 ? void 0 : tableCellProps.onDragEnter) === null || _a === void 0 ? void 0 : _a.call(tableCellProps, e);
|
|
1965
1974
|
if (enableGrouping && (hoveredColumn === null || hoveredColumn === void 0 ? void 0 : hoveredColumn.id) === 'drop-zone') {
|
|
1966
1975
|
setHoveredColumn(null);
|
|
1967
1976
|
}
|
|
@@ -1987,7 +1996,7 @@ const MRT_TableBodyCell = ({ cell, enableHover, rowIndex, rowRef, table, }) => {
|
|
|
1987
1996
|
: undefined,
|
|
1988
1997
|
}
|
|
1989
1998
|
: undefined;
|
|
1990
|
-
return (React__default["default"].createElement(material.TableCell, Object.assign({
|
|
1999
|
+
return (React__default["default"].createElement(material.TableCell, Object.assign({}, tableCellProps, { onDragEnter: handleDragEnter, onDoubleClick: handleDoubleClick, sx: (theme) => {
|
|
1991
2000
|
var _a;
|
|
1992
2001
|
return (Object.assign(Object.assign(Object.assign({ backgroundColor: column.getIsPinned()
|
|
1993
2002
|
? material.alpha(material.lighten(theme.palette.background.default, 0.04), 0.95)
|
|
@@ -2104,7 +2113,7 @@ const MRT_TableBodyRow = ({ row, rowIndex, table, virtualRow, }) => {
|
|
|
2104
2113
|
};
|
|
2105
2114
|
|
|
2106
2115
|
const MRT_TableBody = ({ table, tableContainerRef }) => {
|
|
2107
|
-
const { getRowModel, getPrePaginationRowModel, getState, options: { enableGlobalFilterRankedResults, enablePagination, enableRowVirtualization, muiTableBodyProps, virtualizerProps, }, } = table;
|
|
2116
|
+
const { getRowModel, getPrePaginationRowModel, getState, options: { enableGlobalFilterRankedResults, enablePagination, enableRowVirtualization, muiTableBodyProps, virtualizerProps, virtualizerInstanceRef, }, } = table;
|
|
2108
2117
|
const { globalFilter, pagination, sorting } = getState();
|
|
2109
2118
|
const tableBodyProps = muiTableBodyProps instanceof Function
|
|
2110
2119
|
? muiTableBodyProps({ table })
|
|
@@ -2132,10 +2141,15 @@ const MRT_TableBody = ({ table, tableContainerRef }) => {
|
|
|
2132
2141
|
: getRowModel().rows,
|
|
2133
2142
|
globalFilter,
|
|
2134
2143
|
]);
|
|
2135
|
-
const
|
|
2144
|
+
const virtualizer = enableRowVirtualization
|
|
2136
2145
|
? reactVirtual.useVirtual(Object.assign({ size: rows.length, parentRef: tableContainerRef, overscan: 15 }, vProps))
|
|
2137
2146
|
: {};
|
|
2138
|
-
|
|
2147
|
+
React.useEffect(() => {
|
|
2148
|
+
if (virtualizerInstanceRef) {
|
|
2149
|
+
virtualizerInstanceRef.current = virtualizer;
|
|
2150
|
+
}
|
|
2151
|
+
}, [virtualizer]);
|
|
2152
|
+
// const virtualizer: Virtualizer = enableRowVirtualization
|
|
2139
2153
|
// ? useVirtualizer({
|
|
2140
2154
|
// count: rows.length,
|
|
2141
2155
|
// estimateSize: () => (density === 'compact' ? 25 : 50),
|
|
@@ -2144,24 +2158,22 @@ const MRT_TableBody = ({ table, tableContainerRef }) => {
|
|
|
2144
2158
|
// ...vProps,
|
|
2145
2159
|
// })
|
|
2146
2160
|
// : ({} as any);
|
|
2147
|
-
const virtualRows = enableRowVirtualization
|
|
2148
|
-
? rowVirtualizer.virtualItems
|
|
2149
|
-
: [];
|
|
2161
|
+
const virtualRows = enableRowVirtualization ? virtualizer.virtualItems : [];
|
|
2150
2162
|
// const virtualRows = enableRowVirtualization
|
|
2151
|
-
// ?
|
|
2163
|
+
// ? virtualizer.getVirtualItems()
|
|
2152
2164
|
// : [];
|
|
2153
2165
|
let paddingTop = 0;
|
|
2154
2166
|
let paddingBottom = 0;
|
|
2155
2167
|
if (enableRowVirtualization) {
|
|
2156
2168
|
paddingTop = !!virtualRows.length ? virtualRows[0].start : 0;
|
|
2157
2169
|
paddingBottom = !!virtualRows.length
|
|
2158
|
-
?
|
|
2170
|
+
? virtualizer.totalSize - virtualRows[virtualRows.length - 1].end
|
|
2159
2171
|
: 0;
|
|
2160
2172
|
}
|
|
2161
2173
|
// if (enableRowVirtualization) {
|
|
2162
2174
|
// paddingTop = !!virtualRows.length ? virtualRows[0].start : 0;
|
|
2163
2175
|
// paddingBottom = !!virtualRows.length
|
|
2164
|
-
// ?
|
|
2176
|
+
// ? virtualizer.getTotalSize() - virtualRows[virtualRows.length - 1].end
|
|
2165
2177
|
// : 0;
|
|
2166
2178
|
// }
|
|
2167
2179
|
return (React__default["default"].createElement(material.TableBody, Object.assign({}, tableBodyProps),
|
|
@@ -2443,6 +2455,11 @@ const MRT_TableRoot = (props) => {
|
|
|
2443
2455
|
tableContainerRef,
|
|
2444
2456
|
topToolbarRef,
|
|
2445
2457
|
}, setColumnFilterFns: (_w = props.onFilterFnsChange) !== null && _w !== void 0 ? _w : setColumnFilterFns, setDensity: (_x = props.onDensityChange) !== null && _x !== void 0 ? _x : setDensity, setDraggingColumn: (_y = props.onDraggingColumnChange) !== null && _y !== void 0 ? _y : setDraggingColumn, setDraggingRow: (_z = props.onDraggingRowChange) !== null && _z !== void 0 ? _z : setDraggingRow, setEditingCell: (_0 = props.onEditingCellChange) !== null && _0 !== void 0 ? _0 : setEditingCell, setEditingRow: (_1 = props.onEditingRowChange) !== null && _1 !== void 0 ? _1 : setEditingRow, setGlobalFilterFn: (_2 = props.onGlobalFilterFnChange) !== null && _2 !== void 0 ? _2 : setGlobalFilterFn, setHoveredColumn: (_3 = props.onHoveredColumnChange) !== null && _3 !== void 0 ? _3 : setHoveredColumn, setHoveredRow: (_4 = props.onHoveredRowChange) !== null && _4 !== void 0 ? _4 : setHoveredRow, setIsFullScreen: (_5 = props.onIsFullScreenChange) !== null && _5 !== void 0 ? _5 : setIsFullScreen, setShowAlertBanner: (_6 = props.onShowAlertBannerChange) !== null && _6 !== void 0 ? _6 : setShowAlertBanner, setShowFilters: (_7 = props.onShowFiltersChange) !== null && _7 !== void 0 ? _7 : setShowFilters, setShowGlobalFilter: (_8 = props.onShowGlobalFilterChange) !== null && _8 !== void 0 ? _8 : setShowGlobalFilter });
|
|
2458
|
+
React.useEffect(() => {
|
|
2459
|
+
if (props.tableInstanceRef) {
|
|
2460
|
+
props.tableInstanceRef.current = table;
|
|
2461
|
+
}
|
|
2462
|
+
}, [table]);
|
|
2446
2463
|
return (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
2447
2464
|
React__default["default"].createElement(material.Dialog, { PaperComponent: material.Box, TransitionComponent: material.Grow, disablePortal: true, fullScreen: true, keepMounted: false, onClose: () => setIsFullScreen(false), open: isFullScreen, transitionDuration: 400 },
|
|
2448
2465
|
React__default["default"].createElement(MRT_TablePaper, { table: table })),
|
|
@@ -2451,8 +2468,8 @@ const MRT_TableRoot = (props) => {
|
|
|
2451
2468
|
};
|
|
2452
2469
|
|
|
2453
2470
|
var MaterialReactTable = (_a) => {
|
|
2454
|
-
var { aggregationFns, autoResetExpanded = false, columnResizeMode = 'onEnd', defaultColumn = { minSize: 40, maxSize: 1000, size: 180 }, editingMode = 'modal', enableBottomToolbar = true, enableColumnActions = true,
|
|
2455
|
-
return (React__default["default"].createElement(MRT_TableRoot, Object.assign({ aggregationFns: Object.assign(Object.assign({}, MRT_AggregationFns), aggregationFns), autoResetExpanded: autoResetExpanded, columnResizeMode: columnResizeMode, defaultColumn: defaultColumn, editingMode: editingMode, enableBottomToolbar: enableBottomToolbar, enableColumnActions: enableColumnActions,
|
|
2471
|
+
var { aggregationFns, autoResetExpanded = false, columnResizeMode = 'onEnd', defaultColumn = { minSize: 40, maxSize: 1000, size: 180 }, 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, localization, positionActionsColumn = 'first', positionExpandColumn = 'first', positionGlobalFilter = 'right', positionPagination = 'bottom', positionToolbarAlertBanner = 'top', positionToolbarDropZone = 'top', rowNumberMode = 'original', selectAllMode = 'all', sortingFns } = _a, rest = __rest(_a, ["aggregationFns", "autoResetExpanded", "columnResizeMode", "defaultColumn", "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", "localization", "positionActionsColumn", "positionExpandColumn", "positionGlobalFilter", "positionPagination", "positionToolbarAlertBanner", "positionToolbarDropZone", "rowNumberMode", "selectAllMode", "sortingFns"]);
|
|
2472
|
+
return (React__default["default"].createElement(MRT_TableRoot, Object.assign({ aggregationFns: Object.assign(Object.assign({}, MRT_AggregationFns), aggregationFns), autoResetExpanded: autoResetExpanded, columnResizeMode: columnResizeMode, defaultColumn: defaultColumn, 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: Object.assign(Object.assign({}, MRT_FilterFns), filterFns), icons: Object.assign(Object.assign({}, MRT_Default_Icons), icons), localization: Object.assign(Object.assign({}, MRT_DefaultLocalization_EN), localization), positionActionsColumn: positionActionsColumn, positionExpandColumn: positionExpandColumn, positionGlobalFilter: positionGlobalFilter, positionPagination: positionPagination, positionToolbarAlertBanner: positionToolbarAlertBanner, positionToolbarDropZone: positionToolbarDropZone, rowNumberMode: rowNumberMode, selectAllMode: selectAllMode, sortingFns: Object.assign(Object.assign({}, MRT_SortingFns), sortingFns) }, rest)));
|
|
2456
2473
|
};
|
|
2457
2474
|
|
|
2458
2475
|
exports.MRT_CopyButton = MRT_CopyButton;
|