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.
@@ -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 const _default: <TData extends Record<string, any> = {}>({ aggregationFns, autoResetExpanded, columnResizeMode, defaultColumn, editingMode, enableBottomToolbar, enableColumnActions, enableColumnFilterModes, enableColumnFilters, enableColumnOrdering, enableColumnResizing, enableDensityToggle, enableExpandAll, enableFilters, enableFullScreenToggle, enableGlobalFilter, enableGlobalFilterModes, 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
+ 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 && !!draggingColumn },
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
- ((enableColumnDragging &&
1754
- columnDef.enableColumnDragging !== false) ||
1755
- (enableColumnOrdering &&
1756
- columnDef.enableColumnOrdering !== false) ||
1757
- (enableGrouping && columnDef.enableGrouping !== false)) && (React__default["default"].createElement(MRT_TableHeadCellGrabHandle, { column: column, table: table, tableHeadCellRef: tableHeadCellRef })),
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 rowVirtualizer = enableRowVirtualization
2144
+ const virtualizer = enableRowVirtualization
2140
2145
  ? reactVirtual.useVirtual(Object.assign({ size: rows.length, parentRef: tableContainerRef, overscan: 15 }, vProps))
2141
2146
  : {};
2142
- // const rowVirtualizer: Virtualizer = enableRowVirtualization
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
- // ? rowVirtualizer.getVirtualItems()
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
- ? rowVirtualizer.totalSize - virtualRows[virtualRows.length - 1].end
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
- // ? rowVirtualizer.getTotalSize() - virtualRows[virtualRows.length - 1].end
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, enableColumnFilterModes = false, enableColumnFilters = true, enableColumnOrdering = false, enableColumnResizing = false, enableDensityToggle = true, enableExpandAll = true, enableFilters = true, enableFullScreenToggle = true, enableGlobalFilter = true, enableGlobalFilterModes = false, 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", "enableColumnFilterModes", "enableColumnFilters", "enableColumnOrdering", "enableColumnResizing", "enableDensityToggle", "enableExpandAll", "enableFilters", "enableFullScreenToggle", "enableGlobalFilter", "enableGlobalFilterModes", "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"]);
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