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;
@@ -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 && !!draggingColumn },
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
- ((enableColumnDragging &&
1746
- columnDef.enableColumnDragging !== false) ||
1747
- (enableColumnOrdering &&
1748
- columnDef.enableColumnOrdering !== false) ||
1749
- (enableGrouping && columnDef.enableGrouping !== false)) && (React.createElement(MRT_TableHeadCellGrabHandle, { column: column, table: table, tableHeadCellRef: tableHeadCellRef })),
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 rowVirtualizer = enableRowVirtualization
2136
+ const virtualizer = enableRowVirtualization
2132
2137
  ? useVirtual(Object.assign({ size: rows.length, parentRef: tableContainerRef, overscan: 15 }, vProps))
2133
2138
  : {};
2134
- // const rowVirtualizer: Virtualizer = enableRowVirtualization
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
- // ? rowVirtualizer.getVirtualItems()
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
- ? rowVirtualizer.totalSize - virtualRows[virtualRows.length - 1].end
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
- // ? rowVirtualizer.getTotalSize() - virtualRows[virtualRows.length - 1].end
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, 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"]);
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