material-react-table 0.40.0 → 0.40.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/MaterialReactTable.d.ts +10 -2
- package/dist/cjs/index.js +28 -20
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/MaterialReactTable.d.ts +10 -2
- package/dist/esm/material-react-table.esm.js +28 -20
- package/dist/esm/material-react-table.esm.js.map +1 -1
- package/dist/index.d.ts +11 -3
- package/package.json +1 -1
- package/src/MaterialReactTable.tsx +10 -3
- package/src/body/MRT_TableBody.tsx +15 -10
- package/src/head/MRT_TableHeadCell.tsx +21 -13
- package/src/menus/MRT_ShowHideColumnsMenuItems.tsx +1 -1
- package/src/table/MRT_TableRoot.tsx +1 -1
- 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';
|
|
@@ -509,6 +509,14 @@ export declare type MaterialReactTableProps<TData extends Record<string, any> =
|
|
|
509
509
|
virtualizerProps?: Partial<VirtualizerOptions<HTMLDivElement>> | (({ table, }: {
|
|
510
510
|
table: MRT_TableInstance<TData>;
|
|
511
511
|
}) => Partial<VirtualizerOptions<HTMLDivElement>>);
|
|
512
|
+
virtualizerInstanceRef?: MutableRefObject<Virtualizer | null>;
|
|
512
513
|
};
|
|
513
|
-
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;
|
|
514
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 })))),
|
|
@@ -2108,7 +2113,7 @@ const MRT_TableBodyRow = ({ row, rowIndex, table, virtualRow, }) => {
|
|
|
2108
2113
|
};
|
|
2109
2114
|
|
|
2110
2115
|
const MRT_TableBody = ({ table, tableContainerRef }) => {
|
|
2111
|
-
const { getRowModel, getPrePaginationRowModel, getState, options: { enableGlobalFilterRankedResults, enablePagination, enableRowVirtualization, muiTableBodyProps, virtualizerProps, }, } = table;
|
|
2116
|
+
const { getRowModel, getPrePaginationRowModel, getState, options: { enableGlobalFilterRankedResults, enablePagination, enableRowVirtualization, muiTableBodyProps, virtualizerProps, virtualizerInstanceRef, }, } = table;
|
|
2112
2117
|
const { globalFilter, pagination, sorting } = getState();
|
|
2113
2118
|
const tableBodyProps = muiTableBodyProps instanceof Function
|
|
2114
2119
|
? muiTableBodyProps({ table })
|
|
@@ -2136,10 +2141,15 @@ const MRT_TableBody = ({ table, tableContainerRef }) => {
|
|
|
2136
2141
|
: getRowModel().rows,
|
|
2137
2142
|
globalFilter,
|
|
2138
2143
|
]);
|
|
2139
|
-
const
|
|
2144
|
+
const virtualizer = enableRowVirtualization
|
|
2140
2145
|
? reactVirtual.useVirtual(Object.assign({ size: rows.length, parentRef: tableContainerRef, overscan: 15 }, vProps))
|
|
2141
2146
|
: {};
|
|
2142
|
-
|
|
2147
|
+
React.useEffect(() => {
|
|
2148
|
+
if (virtualizerInstanceRef) {
|
|
2149
|
+
virtualizerInstanceRef.current = virtualizer;
|
|
2150
|
+
}
|
|
2151
|
+
}, [virtualizer]);
|
|
2152
|
+
// const virtualizer: Virtualizer = enableRowVirtualization
|
|
2143
2153
|
// ? useVirtualizer({
|
|
2144
2154
|
// count: rows.length,
|
|
2145
2155
|
// estimateSize: () => (density === 'compact' ? 25 : 50),
|
|
@@ -2148,24 +2158,22 @@ const MRT_TableBody = ({ table, tableContainerRef }) => {
|
|
|
2148
2158
|
// ...vProps,
|
|
2149
2159
|
// })
|
|
2150
2160
|
// : ({} as any);
|
|
2151
|
-
const virtualRows = enableRowVirtualization
|
|
2152
|
-
? rowVirtualizer.virtualItems
|
|
2153
|
-
: [];
|
|
2161
|
+
const virtualRows = enableRowVirtualization ? virtualizer.virtualItems : [];
|
|
2154
2162
|
// const virtualRows = enableRowVirtualization
|
|
2155
|
-
// ?
|
|
2163
|
+
// ? virtualizer.getVirtualItems()
|
|
2156
2164
|
// : [];
|
|
2157
2165
|
let paddingTop = 0;
|
|
2158
2166
|
let paddingBottom = 0;
|
|
2159
2167
|
if (enableRowVirtualization) {
|
|
2160
2168
|
paddingTop = !!virtualRows.length ? virtualRows[0].start : 0;
|
|
2161
2169
|
paddingBottom = !!virtualRows.length
|
|
2162
|
-
?
|
|
2170
|
+
? virtualizer.totalSize - virtualRows[virtualRows.length - 1].end
|
|
2163
2171
|
: 0;
|
|
2164
2172
|
}
|
|
2165
2173
|
// if (enableRowVirtualization) {
|
|
2166
2174
|
// paddingTop = !!virtualRows.length ? virtualRows[0].start : 0;
|
|
2167
2175
|
// paddingBottom = !!virtualRows.length
|
|
2168
|
-
// ?
|
|
2176
|
+
// ? virtualizer.getTotalSize() - virtualRows[virtualRows.length - 1].end
|
|
2169
2177
|
// : 0;
|
|
2170
2178
|
// }
|
|
2171
2179
|
return (React__default["default"].createElement(material.TableBody, Object.assign({}, tableBodyProps),
|
|
@@ -2451,7 +2459,7 @@ const MRT_TableRoot = (props) => {
|
|
|
2451
2459
|
if (props.tableInstanceRef) {
|
|
2452
2460
|
props.tableInstanceRef.current = table;
|
|
2453
2461
|
}
|
|
2454
|
-
}, []);
|
|
2462
|
+
}, [table]);
|
|
2455
2463
|
return (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
2456
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 },
|
|
2457
2465
|
React__default["default"].createElement(MRT_TablePaper, { table: table })),
|
|
@@ -2460,7 +2468,7 @@ const MRT_TableRoot = (props) => {
|
|
|
2460
2468
|
};
|
|
2461
2469
|
|
|
2462
2470
|
var MaterialReactTable = (_a) => {
|
|
2463
|
-
var { aggregationFns, autoResetExpanded = false, columnResizeMode = 'onEnd', defaultColumn = { minSize: 40, maxSize: 1000, size: 180 }, editingMode = 'modal', enableBottomToolbar = true, enableColumnActions = true,
|
|
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"]);
|
|
2464
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, enableColumnFilterModes: enableColumnFilterModes, enableColumnFilters: enableColumnFilters, enableColumnOrdering: enableColumnOrdering, enableColumnResizing: enableColumnResizing, enableDensityToggle: enableDensityToggle, enableExpandAll: enableExpandAll, enableFilters: enableFilters, enableFullScreenToggle: enableFullScreenToggle, enableGlobalFilter: enableGlobalFilter, enableGlobalFilterModes: enableGlobalFilterModes, 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)));
|
|
2465
2473
|
};
|
|
2466
2474
|
|