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;
|
|
@@ -615,7 +615,7 @@ const MRT_ShowHideColumnsMenuItems = ({ allColumns, hoveredColumn, setHoveredCol
|
|
|
615
615
|
}
|
|
616
616
|
};
|
|
617
617
|
const handleDragEnter = (_e) => {
|
|
618
|
-
if (!isDragging) {
|
|
618
|
+
if (!isDragging && columnDef.enableColumnOrdering !== false) {
|
|
619
619
|
setHoveredColumn(column);
|
|
620
620
|
}
|
|
621
621
|
};
|
|
@@ -1175,11 +1175,13 @@ const MRT_ToolbarInternalButtons = ({ table }) => {
|
|
|
1175
1175
|
const MRT_ToolbarDropZone = ({ table }) => {
|
|
1176
1176
|
var _a, _b;
|
|
1177
1177
|
const { getState, options: { enableGrouping, localization }, setHoveredColumn, } = table;
|
|
1178
|
-
const { draggingColumn, hoveredColumn } = getState();
|
|
1178
|
+
const { draggingColumn, hoveredColumn, grouping } = getState();
|
|
1179
1179
|
const handleDragEnter = (_event) => {
|
|
1180
1180
|
setHoveredColumn({ id: 'drop-zone' });
|
|
1181
1181
|
};
|
|
1182
|
-
return (React.createElement(Fade, { unmountOnExit: true, mountOnEnter: true, in: !!enableGrouping &&
|
|
1182
|
+
return (React.createElement(Fade, { unmountOnExit: true, mountOnEnter: true, in: !!enableGrouping &&
|
|
1183
|
+
!!draggingColumn &&
|
|
1184
|
+
!grouping.includes(draggingColumn.id) },
|
|
1183
1185
|
React.createElement(Box, { sx: (theme) => ({
|
|
1184
1186
|
alignItems: 'center',
|
|
1185
1187
|
backgroundColor: alpha(theme.palette.info.main, (hoveredColumn === null || hoveredColumn === void 0 ? void 0 : hoveredColumn.id) === 'drop-zone' ? 0.2 : 0.1),
|
|
@@ -1626,7 +1628,7 @@ const MRT_TableHeadCell = ({ header, table }) => {
|
|
|
1626
1628
|
var _a, _b, _c, _d;
|
|
1627
1629
|
const theme = useTheme();
|
|
1628
1630
|
const { getState, options: { enableColumnActions, enableColumnDragging, enableColumnOrdering, enableColumnResizing, enableGrouping, enableMultiSort, muiTableHeadCellProps, }, setHoveredColumn, } = table;
|
|
1629
|
-
const { density, draggingColumn, hoveredColumn, showColumnFilters } = getState();
|
|
1631
|
+
const { density, draggingColumn, grouping, hoveredColumn, showColumnFilters, } = getState();
|
|
1630
1632
|
const { column } = header;
|
|
1631
1633
|
const { columnDef } = column;
|
|
1632
1634
|
const { columnDefType } = columnDef;
|
|
@@ -1742,11 +1744,14 @@ const MRT_TableHeadCell = ({ header, table }) => {
|
|
|
1742
1744
|
column.getCanSort() && (React.createElement(MRT_TableHeadCellSortLabel, { header: header, table: table })),
|
|
1743
1745
|
column.getCanFilter() && (React.createElement(MRT_TableHeadCellFilterLabel, { header: header, table: table }))),
|
|
1744
1746
|
columnDefType !== 'group' && (React.createElement(Box, { sx: { whiteSpace: 'nowrap' } },
|
|
1745
|
-
|
|
1746
|
-
columnDef.enableColumnDragging !== false
|
|
1747
|
-
(
|
|
1748
|
-
|
|
1749
|
-
|
|
1747
|
+
enableColumnDragging !== false &&
|
|
1748
|
+
columnDef.enableColumnDragging !== false &&
|
|
1749
|
+
(enableColumnDragging ||
|
|
1750
|
+
(enableColumnOrdering &&
|
|
1751
|
+
columnDef.enableColumnOrdering !== false) ||
|
|
1752
|
+
(enableGrouping &&
|
|
1753
|
+
columnDef.enableGrouping !== false &&
|
|
1754
|
+
!grouping.includes(column.id))) && (React.createElement(MRT_TableHeadCellGrabHandle, { column: column, table: table, tableHeadCellRef: tableHeadCellRef })),
|
|
1750
1755
|
(enableColumnActions || columnDef.enableColumnActions) &&
|
|
1751
1756
|
columnDef.enableColumnActions !== false && (React.createElement(MRT_TableHeadCellColumnActionsButton, { header: header, table: table })))),
|
|
1752
1757
|
column.getCanResize() && (React.createElement(MRT_TableHeadCellResizeHandle, { header: header, table: table })))),
|
|
@@ -2100,7 +2105,7 @@ const MRT_TableBodyRow = ({ row, rowIndex, table, virtualRow, }) => {
|
|
|
2100
2105
|
};
|
|
2101
2106
|
|
|
2102
2107
|
const MRT_TableBody = ({ table, tableContainerRef }) => {
|
|
2103
|
-
const { getRowModel, getPrePaginationRowModel, getState, options: { enableGlobalFilterRankedResults, enablePagination, enableRowVirtualization, muiTableBodyProps, virtualizerProps, }, } = table;
|
|
2108
|
+
const { getRowModel, getPrePaginationRowModel, getState, options: { enableGlobalFilterRankedResults, enablePagination, enableRowVirtualization, muiTableBodyProps, virtualizerProps, virtualizerInstanceRef, }, } = table;
|
|
2104
2109
|
const { globalFilter, pagination, sorting } = getState();
|
|
2105
2110
|
const tableBodyProps = muiTableBodyProps instanceof Function
|
|
2106
2111
|
? muiTableBodyProps({ table })
|
|
@@ -2128,10 +2133,15 @@ const MRT_TableBody = ({ table, tableContainerRef }) => {
|
|
|
2128
2133
|
: getRowModel().rows,
|
|
2129
2134
|
globalFilter,
|
|
2130
2135
|
]);
|
|
2131
|
-
const
|
|
2136
|
+
const virtualizer = enableRowVirtualization
|
|
2132
2137
|
? useVirtual(Object.assign({ size: rows.length, parentRef: tableContainerRef, overscan: 15 }, vProps))
|
|
2133
2138
|
: {};
|
|
2134
|
-
|
|
2139
|
+
useEffect(() => {
|
|
2140
|
+
if (virtualizerInstanceRef) {
|
|
2141
|
+
virtualizerInstanceRef.current = virtualizer;
|
|
2142
|
+
}
|
|
2143
|
+
}, [virtualizer]);
|
|
2144
|
+
// const virtualizer: Virtualizer = enableRowVirtualization
|
|
2135
2145
|
// ? useVirtualizer({
|
|
2136
2146
|
// count: rows.length,
|
|
2137
2147
|
// estimateSize: () => (density === 'compact' ? 25 : 50),
|
|
@@ -2140,24 +2150,22 @@ const MRT_TableBody = ({ table, tableContainerRef }) => {
|
|
|
2140
2150
|
// ...vProps,
|
|
2141
2151
|
// })
|
|
2142
2152
|
// : ({} as any);
|
|
2143
|
-
const virtualRows = enableRowVirtualization
|
|
2144
|
-
? rowVirtualizer.virtualItems
|
|
2145
|
-
: [];
|
|
2153
|
+
const virtualRows = enableRowVirtualization ? virtualizer.virtualItems : [];
|
|
2146
2154
|
// const virtualRows = enableRowVirtualization
|
|
2147
|
-
// ?
|
|
2155
|
+
// ? virtualizer.getVirtualItems()
|
|
2148
2156
|
// : [];
|
|
2149
2157
|
let paddingTop = 0;
|
|
2150
2158
|
let paddingBottom = 0;
|
|
2151
2159
|
if (enableRowVirtualization) {
|
|
2152
2160
|
paddingTop = !!virtualRows.length ? virtualRows[0].start : 0;
|
|
2153
2161
|
paddingBottom = !!virtualRows.length
|
|
2154
|
-
?
|
|
2162
|
+
? virtualizer.totalSize - virtualRows[virtualRows.length - 1].end
|
|
2155
2163
|
: 0;
|
|
2156
2164
|
}
|
|
2157
2165
|
// if (enableRowVirtualization) {
|
|
2158
2166
|
// paddingTop = !!virtualRows.length ? virtualRows[0].start : 0;
|
|
2159
2167
|
// paddingBottom = !!virtualRows.length
|
|
2160
|
-
// ?
|
|
2168
|
+
// ? virtualizer.getTotalSize() - virtualRows[virtualRows.length - 1].end
|
|
2161
2169
|
// : 0;
|
|
2162
2170
|
// }
|
|
2163
2171
|
return (React.createElement(TableBody, Object.assign({}, tableBodyProps),
|
|
@@ -2443,7 +2451,7 @@ const MRT_TableRoot = (props) => {
|
|
|
2443
2451
|
if (props.tableInstanceRef) {
|
|
2444
2452
|
props.tableInstanceRef.current = table;
|
|
2445
2453
|
}
|
|
2446
|
-
}, []);
|
|
2454
|
+
}, [table]);
|
|
2447
2455
|
return (React.createElement(React.Fragment, null,
|
|
2448
2456
|
React.createElement(Dialog, { PaperComponent: Box, TransitionComponent: Grow, disablePortal: true, fullScreen: true, keepMounted: false, onClose: () => setIsFullScreen(false), open: isFullScreen, transitionDuration: 400 },
|
|
2449
2457
|
React.createElement(MRT_TablePaper, { table: table })),
|
|
@@ -2452,7 +2460,7 @@ const MRT_TableRoot = (props) => {
|
|
|
2452
2460
|
};
|
|
2453
2461
|
|
|
2454
2462
|
var MaterialReactTable = (_a) => {
|
|
2455
|
-
var { aggregationFns, autoResetExpanded = false, columnResizeMode = 'onEnd', defaultColumn = { minSize: 40, maxSize: 1000, size: 180 }, editingMode = 'modal', enableBottomToolbar = true, enableColumnActions = true,
|
|
2463
|
+
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"]);
|
|
2456
2464
|
return (React.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)));
|
|
2457
2465
|
};
|
|
2458
2466
|
|