material-react-table 0.38.4 → 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';
@@ -154,7 +154,7 @@ export declare type MRT_ColumnDef<TData extends Record<string, any> = {}> = Omit
154
154
  enableClickToCopy?: boolean;
155
155
  enableColumnActions?: boolean;
156
156
  enableColumnDragging?: boolean;
157
- enableColumnFilterChangeMode?: boolean;
157
+ enableColumnFilterModes?: boolean;
158
158
  enableColumnOrdering?: boolean;
159
159
  enableEditing?: boolean;
160
160
  filterFn?: MRT_FilterFn<TData>;
@@ -216,6 +216,10 @@ export declare type MRT_ColumnDef<TData extends Record<string, any> = {}> = Omit
216
216
  table: MRT_TableInstance<TData>;
217
217
  column: MRT_Column<TData>;
218
218
  }) => TableCellProps);
219
+ renderColumnFilterModeMenuItems?: ({ table, column, }: {
220
+ table: MRT_TableInstance<TData>;
221
+ column: MRT_Column<TData>;
222
+ }) => ReactNode[];
219
223
  sortingFn?: MRT_SortingFn;
220
224
  };
221
225
  export declare type MRT_DefinedColumnDef<TData extends Record<string, any> = {}> = Omit<MRT_ColumnDef<TData>, 'id'> & {
@@ -249,6 +253,12 @@ export declare type MRT_SortingOption = LiteralUnion<string & keyof typeof MRT_S
249
253
  export declare type MRT_SortingFn<TData extends Record<string, any> = {}> = SortingFn<TData> | MRT_SortingOption;
250
254
  export declare type MRT_FilterOption = LiteralUnion<string & keyof typeof MRT_FilterFns>;
251
255
  export declare type MRT_FilterFn<TData extends Record<string, any> = {}> = FilterFn<TData> | MRT_FilterOption;
256
+ export declare type MRT_InternalFilterOption = {
257
+ option: string;
258
+ symbol: string;
259
+ label: string;
260
+ divider: boolean;
261
+ };
252
262
  export declare type MRT_DisplayColumnIds = 'mrt-row-actions' | 'mrt-row-drag' | 'mrt-row-expand' | 'mrt-row-numbers' | 'mrt-row-select';
253
263
  /**
254
264
  * `columns` and `data` props are the only required props, but there are over 150 other optional props.
@@ -272,13 +282,13 @@ export declare type MaterialReactTableProps<TData extends Record<string, any> =
272
282
  enableClickToCopy?: boolean;
273
283
  enableColumnActions?: boolean;
274
284
  enableColumnDragging?: boolean;
275
- enableColumnFilterChangeMode?: boolean;
285
+ enableColumnFilterModes?: boolean;
276
286
  enableColumnOrdering?: boolean;
277
287
  enableDensityToggle?: boolean;
278
288
  enableEditing?: boolean;
279
289
  enableExpandAll?: boolean;
280
290
  enableFullScreenToggle?: boolean;
281
- enableGlobalFilterChangeMode?: boolean;
291
+ enableGlobalFilterModes?: boolean;
282
292
  enableGlobalFilterRankedResults?: boolean;
283
293
  enablePagination?: boolean;
284
294
  enableRowActions?: boolean;
@@ -460,10 +470,21 @@ export declare type MaterialReactTableProps<TData extends Record<string, any> =
460
470
  renderBottomToolbarCustomActions?: ({ table, }: {
461
471
  table: MRT_TableInstance<TData>;
462
472
  }) => ReactNode;
473
+ renderColumnFilterModeMenuItems?: ({ column, internalFilterOptions, onSelectFilterMode, table, }: {
474
+ column: MRT_Column<TData>;
475
+ internalFilterOptions: MRT_InternalFilterOption[];
476
+ onSelectFilterMode: (filterMode: MRT_FilterOption) => void;
477
+ table: MRT_TableInstance<TData>;
478
+ }) => ReactNode;
463
479
  renderDetailPanel?: ({ row, table, }: {
464
480
  row: MRT_Row<TData>;
465
481
  table: MRT_TableInstance<TData>;
466
482
  }) => ReactNode;
483
+ renderGlobalFilterModeMenuItems?: ({ internalFilterOptions, onSelectFilterMode, table, }: {
484
+ internalFilterOptions: MRT_InternalFilterOption[];
485
+ onSelectFilterMode: (filterMode: MRT_FilterOption) => void;
486
+ table: MRT_TableInstance<TData>;
487
+ }) => ReactNode[];
467
488
  renderRowActionMenuItems?: ({ closeMenu, row, table, }: {
468
489
  closeMenu: () => void;
469
490
  row: MRT_Row<TData>;
@@ -484,9 +505,18 @@ export declare type MaterialReactTableProps<TData extends Record<string, any> =
484
505
  rowNumberMode?: 'original' | 'static';
485
506
  selectAllMode?: 'all' | 'page';
486
507
  state?: Partial<MRT_TableState<TData>>;
508
+ tableInstanceRef?: MutableRefObject<MRT_TableInstance<TData> | null>;
487
509
  virtualizerProps?: Partial<VirtualizerOptions<HTMLDivElement>> | (({ table, }: {
488
510
  table: MRT_TableInstance<TData>;
489
511
  }) => Partial<VirtualizerOptions<HTMLDivElement>>);
512
+ virtualizerInstanceRef?: MutableRefObject<Virtualizer | null>;
513
+ };
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;
490
520
  };
491
- declare const _default: <TData extends Record<string, any> = {}>({ aggregationFns, autoResetExpanded, columnResizeMode, defaultColumn, editingMode, enableBottomToolbar, enableColumnActions, enableColumnFilterChangeMode, enableColumnFilters, enableColumnOrdering, enableColumnResizing, enableDensityToggle, enableExpandAll, enableFilters, enableFullScreenToggle, enableGlobalFilter, enableGlobalFilterChangeMode, 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;
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;
492
522
  export default _default;
@@ -3,6 +3,7 @@ import { MaterialReactTableProps, MRT_Column, MRT_ColumnDef, MRT_DefinedColumnDe
3
3
  import { MRT_FilterFns } from './filterFns';
4
4
  import { MRT_SortingFns } from './sortingFns';
5
5
  export declare const defaultDisplayColumnDefOptions: Partial<MRT_ColumnDef<{}>>;
6
+ export declare const getColumnId: <TData extends Record<string, any> = {}>(columnDef: MRT_ColumnDef<TData>) => string;
6
7
  export declare const getAllLeafColumnDefs: <TData extends Record<string, any> = {}>(columns: MRT_ColumnDef<TData>[]) => MRT_ColumnDef<TData>[];
7
8
  export declare const prepareColumns: <TData extends Record<string, any> = {}>(columnDefs: MRT_ColumnDef<TData>[], columnFilterFns: {
8
9
  [key: string]: MRT_FilterOption;
package/dist/cjs/index.js CHANGED
@@ -300,7 +300,7 @@ const MRT_ExpandButton = ({ row, table }) => {
300
300
  } })))));
301
301
  };
302
302
 
303
- const internalFilterOptions = (localization) => [
303
+ const mrtFilterOptions = (localization) => [
304
304
  {
305
305
  option: 'fuzzy',
306
306
  symbol: '≈',
@@ -387,19 +387,19 @@ const internalFilterOptions = (localization) => [
387
387
  },
388
388
  ];
389
389
  const MRT_FilterOptionMenu = ({ anchorEl, header, onSelect, setAnchorEl, table, }) => {
390
- var _a;
391
- const { getState, options: { enabledGlobalFilterOptions, columnFilterModeOptions, localization, }, setColumnFilterFns, setGlobalFilterFn, } = table;
392
- const { columnFilterFns, globalFilterFn, density } = getState();
390
+ var _a, _b;
391
+ const { getState, options: { enabledGlobalFilterOptions, columnFilterModeOptions, localization, renderColumnFilterModeMenuItems, renderGlobalFilterModeMenuItems, }, setColumnFilterFns, setGlobalFilterFn, } = table;
392
+ const { globalFilterFn, density } = getState();
393
393
  const { column } = header !== null && header !== void 0 ? header : {};
394
394
  const { columnDef } = column !== null && column !== void 0 ? column : {};
395
395
  const allowedColumnFilterOptions = (_a = columnDef === null || columnDef === void 0 ? void 0 : columnDef.columnFilterModeOptions) !== null && _a !== void 0 ? _a : columnFilterModeOptions;
396
- const filterOptions = React.useMemo(() => internalFilterOptions(localization).filter((filterOption) => columnDef
396
+ const internalFilterOptions = React.useMemo(() => mrtFilterOptions(localization).filter((filterOption) => columnDef
397
397
  ? allowedColumnFilterOptions === undefined ||
398
398
  (allowedColumnFilterOptions === null || allowedColumnFilterOptions === void 0 ? void 0 : allowedColumnFilterOptions.includes(filterOption.option))
399
399
  : (!enabledGlobalFilterOptions ||
400
400
  enabledGlobalFilterOptions.includes(filterOption.option)) &&
401
- ['fuzzy', 'contains'].includes(filterOption.option)), []);
402
- const handleSelectFilterType = (option) => {
401
+ ['fuzzy', 'contains', 'startsWith'].includes(filterOption.option)), []);
402
+ const handleSelectFilterMode = (option) => {
403
403
  if (header && column) {
404
404
  setColumnFilterFns((prev) => (Object.assign(Object.assign({}, prev), { [header.id]: option })));
405
405
  if (['empty', 'notEmpty'].includes(option)) {
@@ -418,15 +418,26 @@ const MRT_FilterOptionMenu = ({ anchorEl, header, onSelect, setAnchorEl, table,
418
418
  setAnchorEl(null);
419
419
  onSelect === null || onSelect === void 0 ? void 0 : onSelect();
420
420
  };
421
- const filterOption = !!header ? columnFilterFns[header.id] : globalFilterFn;
421
+ const filterOption = !!header && columnDef ? columnDef._filterFn : globalFilterFn;
422
422
  return (React__default["default"].createElement(material.Menu, { anchorEl: anchorEl, anchorOrigin: { vertical: 'center', horizontal: 'right' }, onClose: () => setAnchorEl(null), open: !!anchorEl, MenuListProps: {
423
423
  dense: density === 'compact',
424
- } }, filterOptions.map(({ option, label, divider, symbol }, index) => (React__default["default"].createElement(material.MenuItem, { divider: divider, key: index, onClick: () => handleSelectFilterType(option), selected: option === filterOption, sx: {
425
- py: '6px',
426
- my: 0,
424
+ } }, (_b = (header && column
425
+ ? renderColumnFilterModeMenuItems === null || renderColumnFilterModeMenuItems === void 0 ? void 0 : renderColumnFilterModeMenuItems({
426
+ column: column,
427
+ internalFilterOptions,
428
+ onSelectFilterMode: handleSelectFilterMode,
429
+ table,
430
+ })
431
+ : renderGlobalFilterModeMenuItems === null || renderGlobalFilterModeMenuItems === void 0 ? void 0 : renderGlobalFilterModeMenuItems({
432
+ internalFilterOptions,
433
+ onSelectFilterMode: handleSelectFilterMode,
434
+ table,
435
+ }))) !== null && _b !== void 0 ? _b : internalFilterOptions.map(({ option, label, divider, symbol }, index) => (React__default["default"].createElement(material.MenuItem, { divider: divider, key: index, onClick: () => handleSelectFilterMode(option), selected: option === filterOption, sx: {
427
436
  alignItems: 'center',
428
437
  display: 'flex',
429
438
  gap: '2ch',
439
+ my: 0,
440
+ py: '6px',
430
441
  }, value: option },
431
442
  React__default["default"].createElement(material.Box, { sx: { fontSize: '1.25rem', width: '2ch' } }, symbol),
432
443
  label)))));
@@ -612,7 +623,7 @@ const MRT_ShowHideColumnsMenuItems = ({ allColumns, hoveredColumn, setHoveredCol
612
623
  }
613
624
  };
614
625
  const handleDragEnter = (_e) => {
615
- if (!isDragging) {
626
+ if (!isDragging && columnDef.enableColumnOrdering !== false) {
616
627
  setHoveredColumn(column);
617
628
  }
618
629
  };
@@ -714,7 +725,7 @@ const commonListItemStyles = {
714
725
  };
715
726
  const MRT_ColumnActionMenu = ({ anchorEl, header, setAnchorEl, table, }) => {
716
727
  var _a, _b, _c, _d, _e, _f, _g;
717
- const { getState, toggleAllColumnsVisible, setColumnOrder, options: { enableColumnFilterChangeMode, enableColumnFilters, enableColumnResizing, enableGrouping, enableHiding, enablePinning, enableSorting, columnFilterModeOptions, icons: { ArrowRightIcon, ClearAllIcon, ViewColumnIcon, DynamicFeedIcon, FilterListIcon, FilterListOffIcon, PushPinIcon, SortIcon, RestartAltIcon, VisibilityOffIcon, }, localization, }, refs: { filterInputRefs }, setShowFilters, } = table;
728
+ const { getState, toggleAllColumnsVisible, setColumnOrder, options: { enableColumnFilterModes, enableColumnFilters, enableColumnResizing, enableGrouping, enableHiding, enablePinning, enableSorting, columnFilterModeOptions, icons: { ArrowRightIcon, ClearAllIcon, ViewColumnIcon, DynamicFeedIcon, FilterListIcon, FilterListOffIcon, PushPinIcon, SortIcon, RestartAltIcon, VisibilityOffIcon, }, localization, }, refs: { filterInputRefs }, setShowFilters, } = table;
718
729
  const { column } = header;
719
730
  const { columnDef } = column;
720
731
  const { columnSizing, columnVisibility, density } = getState();
@@ -772,8 +783,8 @@ const MRT_ColumnActionMenu = ({ anchorEl, header, setAnchorEl, table, }) => {
772
783
  };
773
784
  const isSelectFilter = !!columnDef.filterSelectOptions;
774
785
  const allowedColumnFilterOptions = (_a = columnDef === null || columnDef === void 0 ? void 0 : columnDef.columnFilterModeOptions) !== null && _a !== void 0 ? _a : columnFilterModeOptions;
775
- const showFilterModeSubMenu = enableColumnFilterChangeMode &&
776
- columnDef.enableColumnFilterChangeMode !== false &&
786
+ const showFilterModeSubMenu = enableColumnFilterModes &&
787
+ columnDef.enableColumnFilterModes !== false &&
777
788
  !isSelectFilter &&
778
789
  (allowedColumnFilterOptions === undefined ||
779
790
  !!(allowedColumnFilterOptions === null || allowedColumnFilterOptions === void 0 ? void 0 : allowedColumnFilterOptions.length));
@@ -975,7 +986,7 @@ const MRT_SelectCheckbox = ({ row, selectAll, table }) => {
975
986
 
976
987
  const MRT_GlobalFilterTextField = ({ table, }) => {
977
988
  var _a;
978
- const { getState, setGlobalFilter, options: { enableGlobalFilterChangeMode, icons: { SearchIcon, CloseIcon }, localization, muiSearchTextFieldProps, }, refs: { searchInputRef }, } = table;
989
+ const { getState, setGlobalFilter, options: { enableGlobalFilterModes, icons: { SearchIcon, CloseIcon }, localization, muiSearchTextFieldProps, }, refs: { searchInputRef }, } = table;
979
990
  const { globalFilter, showGlobalFilter } = getState();
980
991
  const [anchorEl, setAnchorEl] = React.useState(null);
981
992
  const [searchValue, setSearchValue] = React.useState(globalFilter !== null && globalFilter !== void 0 ? globalFilter : '');
@@ -999,7 +1010,7 @@ const MRT_GlobalFilterTextField = ({ table, }) => {
999
1010
  : muiSearchTextFieldProps;
1000
1011
  return (React__default["default"].createElement(material.Collapse, { in: showGlobalFilter, orientation: "horizontal" },
1001
1012
  React__default["default"].createElement(material.TextField, Object.assign({ placeholder: localization.search, onChange: handleChange, value: searchValue !== null && searchValue !== void 0 ? searchValue : '', variant: "standard", InputProps: {
1002
- startAdornment: enableGlobalFilterChangeMode ? (React__default["default"].createElement(material.InputAdornment, { position: "start" },
1013
+ startAdornment: enableGlobalFilterModes ? (React__default["default"].createElement(material.InputAdornment, { position: "start" },
1003
1014
  React__default["default"].createElement(material.Tooltip, { arrow: true, title: localization.changeSearchMode },
1004
1015
  React__default["default"].createElement(material.IconButton, { "aria-label": localization.changeSearchMode, onClick: handleGlobalFilterMenuOpen, size: "small", sx: { height: '1.75rem', width: '1.75rem' } },
1005
1016
  React__default["default"].createElement(SearchIcon, null))))) : (React__default["default"].createElement(SearchIcon, { style: { marginRight: '4px' } })),
@@ -1172,11 +1183,13 @@ const MRT_ToolbarInternalButtons = ({ table }) => {
1172
1183
  const MRT_ToolbarDropZone = ({ table }) => {
1173
1184
  var _a, _b;
1174
1185
  const { getState, options: { enableGrouping, localization }, setHoveredColumn, } = table;
1175
- const { draggingColumn, hoveredColumn } = getState();
1186
+ const { draggingColumn, hoveredColumn, grouping } = getState();
1176
1187
  const handleDragEnter = (_event) => {
1177
1188
  setHoveredColumn({ id: 'drop-zone' });
1178
1189
  };
1179
- 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) },
1180
1193
  React__default["default"].createElement(material.Box, { sx: (theme) => ({
1181
1194
  alignItems: 'center',
1182
1195
  backgroundColor: material.alpha(theme.palette.info.main, (hoveredColumn === null || hoveredColumn === void 0 ? void 0 : hoveredColumn.id) === 'drop-zone' ? 0.2 : 0.1),
@@ -1310,10 +1323,9 @@ const MRT_TableHeadCellColumnActionsButton = ({ header, table, }) => {
1310
1323
 
1311
1324
  const MRT_FilterTextField = ({ header, rangeFilterIndex, table, }) => {
1312
1325
  var _a, _b, _c, _d, _e, _f, _g, _h;
1313
- const { getState, options: { enableColumnFilterChangeMode, columnFilterModeOptions, icons: { FilterListIcon, CloseIcon }, localization, muiTableHeadCellFilterTextFieldProps, }, refs: { filterInputRefs }, setColumnFilterFns, } = table;
1326
+ const { options: { enableColumnFilterModes, columnFilterModeOptions, icons: { FilterListIcon, CloseIcon }, localization, muiTableHeadCellFilterTextFieldProps, }, refs: { filterInputRefs }, setColumnFilterFns, } = table;
1314
1327
  const { column } = header;
1315
1328
  const { columnDef } = column;
1316
- const { columnFilterFns } = getState();
1317
1329
  const mTableHeadCellFilterTextFieldProps = muiTableHeadCellFilterTextFieldProps instanceof Function
1318
1330
  ? muiTableHeadCellFilterTextFieldProps({
1319
1331
  column,
@@ -1334,7 +1346,7 @@ const MRT_FilterTextField = ({ header, rangeFilterIndex, table, }) => {
1334
1346
  const isMultiSelectFilter = columnDef.filterVariant === 'multi-select';
1335
1347
  const isTextboxFilter = columnDef.filterVariant === 'text' ||
1336
1348
  (!isSelectFilter && !isMultiSelectFilter);
1337
- const currentFilterOption = columnFilterFns === null || columnFilterFns === void 0 ? void 0 : columnFilterFns[header.id];
1349
+ const currentFilterOption = columnDef._filterFn;
1338
1350
  const filterChipLabel = ['empty', 'notEmpty'].includes(currentFilterOption)
1339
1351
  ? //@ts-ignore
1340
1352
  localization[`filter${((_b = (_a = currentFilterOption === null || currentFilterOption === void 0 ? void 0 : currentFilterOption.charAt) === null || _a === void 0 ? void 0 : _a.call(currentFilterOption, 0)) === null || _b === void 0 ? void 0 : _b.toUpperCase()) +
@@ -1348,8 +1360,8 @@ const MRT_FilterTextField = ({ header, rangeFilterIndex, table, }) => {
1348
1360
  ? localization.max
1349
1361
  : '';
1350
1362
  const allowedColumnFilterOptions = (_d = columnDef === null || columnDef === void 0 ? void 0 : columnDef.columnFilterModeOptions) !== null && _d !== void 0 ? _d : columnFilterModeOptions;
1351
- const showChangeModeButton = enableColumnFilterChangeMode &&
1352
- columnDef.enableColumnFilterChangeMode !== false &&
1363
+ const showChangeModeButton = enableColumnFilterModes &&
1364
+ columnDef.enableColumnFilterModes !== false &&
1353
1365
  !rangeFilterIndex &&
1354
1366
  (allowedColumnFilterOptions === undefined ||
1355
1367
  !!(allowedColumnFilterOptions === null || allowedColumnFilterOptions === void 0 ? void 0 : allowedColumnFilterOptions.length));
@@ -1456,7 +1468,7 @@ const MRT_FilterTextField = ({ header, rangeFilterIndex, table, }) => {
1456
1468
  if (textFieldProps.inputRef) {
1457
1469
  textFieldProps.inputRef = inputRef;
1458
1470
  }
1459
- }, sx: (theme) => (Object.assign({ p: 0, minWidth: !filterChipLabel ? '150px' : 'auto', width: '100%', '& .MuiSelect-icon': {
1471
+ }, sx: (theme) => (Object.assign({ p: 0, minWidth: !filterChipLabel ? '120px' : 'auto', width: '100%', '& .MuiSelect-icon': {
1460
1472
  mr: '1.5rem',
1461
1473
  } }, ((textFieldProps === null || textFieldProps === void 0 ? void 0 : textFieldProps.sx) instanceof Function
1462
1474
  ? textFieldProps.sx(theme)
@@ -1490,9 +1502,10 @@ const MRT_FilterRangeFields = ({ header, table }) => {
1490
1502
 
1491
1503
  const MRT_TableHeadCellFilterContainer = ({ header, table, }) => {
1492
1504
  const { getState } = table;
1493
- const { columnFilterFns, showColumnFilters } = getState();
1505
+ const { showColumnFilters } = getState();
1494
1506
  const { column } = header;
1495
- return (React__default["default"].createElement(material.Collapse, { in: showColumnFilters, mountOnEnter: true, unmountOnExit: true }, ['between', 'betweenInclusive', 'inNumberRange'].includes(columnFilterFns[column.id]) ? (React__default["default"].createElement(MRT_FilterRangeFields, { header: header, table: table })) : (React__default["default"].createElement(MRT_FilterTextField, { header: header, table: table }))));
1507
+ const { columnDef } = column;
1508
+ return (React__default["default"].createElement(material.Collapse, { in: showColumnFilters, mountOnEnter: true, unmountOnExit: true }, ['between', 'betweenInclusive', 'inNumberRange'].includes(columnDef._filterFn) ? (React__default["default"].createElement(MRT_FilterRangeFields, { header: header, table: table })) : (React__default["default"].createElement(MRT_FilterTextField, { header: header, table: table }))));
1496
1509
  };
1497
1510
 
1498
1511
  const MRT_TableHeadCellFilterLabel = ({ header, table }) => {
@@ -1623,7 +1636,7 @@ const MRT_TableHeadCell = ({ header, table }) => {
1623
1636
  var _a, _b, _c, _d;
1624
1637
  const theme = material.useTheme();
1625
1638
  const { getState, options: { enableColumnActions, enableColumnDragging, enableColumnOrdering, enableColumnResizing, enableGrouping, enableMultiSort, muiTableHeadCellProps, }, setHoveredColumn, } = table;
1626
- const { density, draggingColumn, hoveredColumn, showColumnFilters } = getState();
1639
+ const { density, draggingColumn, grouping, hoveredColumn, showColumnFilters, } = getState();
1627
1640
  const { column } = header;
1628
1641
  const { columnDef } = column;
1629
1642
  const { columnDefType } = columnDef;
@@ -1739,11 +1752,14 @@ const MRT_TableHeadCell = ({ header, table }) => {
1739
1752
  column.getCanSort() && (React__default["default"].createElement(MRT_TableHeadCellSortLabel, { header: header, table: table })),
1740
1753
  column.getCanFilter() && (React__default["default"].createElement(MRT_TableHeadCellFilterLabel, { header: header, table: table }))),
1741
1754
  columnDefType !== 'group' && (React__default["default"].createElement(material.Box, { sx: { whiteSpace: 'nowrap' } },
1742
- ((enableColumnDragging &&
1743
- columnDef.enableColumnDragging !== false) ||
1744
- (enableColumnOrdering &&
1745
- columnDef.enableColumnOrdering !== false) ||
1746
- (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 })),
1747
1763
  (enableColumnActions || columnDef.enableColumnActions) &&
1748
1764
  columnDef.enableColumnActions !== false && (React__default["default"].createElement(MRT_TableHeadCellColumnActionsButton, { header: header, table: table })))),
1749
1765
  column.getCanResize() && (React__default["default"].createElement(MRT_TableHeadCellResizeHandle, { header: header, table: table })))),
@@ -1926,7 +1942,9 @@ const MRT_TableBodyCell = ({ cell, enableHover, rowIndex, rowRef, table, }) => {
1926
1942
  : Math.round(Math.random() * (column.getSize() - column.getSize() / 3) +
1927
1943
  column.getSize() / 3)
1928
1944
  : 100), [isLoading, showSkeletons]);
1929
- const handleDoubleClick = (_event) => {
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);
1930
1948
  if ((enableEditing || columnDef.enableEditing) &&
1931
1949
  columnDef.enableEditing !== false &&
1932
1950
  editingMode === 'cell') {
@@ -1950,7 +1968,9 @@ const MRT_TableBodyCell = ({ cell, enableHover, rowIndex, rowRef, table, }) => {
1950
1968
  const getTotalRight = () => {
1951
1969
  return ((table.getRightLeafHeaders().length - 1 - column.getPinnedIndex()) * 150);
1952
1970
  };
1953
- const handleDragEnter = (_e) => {
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);
1954
1974
  if (enableGrouping && (hoveredColumn === null || hoveredColumn === void 0 ? void 0 : hoveredColumn.id) === 'drop-zone') {
1955
1975
  setHoveredColumn(null);
1956
1976
  }
@@ -1976,7 +1996,7 @@ const MRT_TableBodyCell = ({ cell, enableHover, rowIndex, rowRef, table, }) => {
1976
1996
  : undefined,
1977
1997
  }
1978
1998
  : undefined;
1979
- return (React__default["default"].createElement(material.TableCell, Object.assign({ onDoubleClick: handleDoubleClick, onDragEnter: handleDragEnter }, tableCellProps, { sx: (theme) => {
1999
+ return (React__default["default"].createElement(material.TableCell, Object.assign({}, tableCellProps, { onDragEnter: handleDragEnter, onDoubleClick: handleDoubleClick, sx: (theme) => {
1980
2000
  var _a;
1981
2001
  return (Object.assign(Object.assign(Object.assign({ backgroundColor: column.getIsPinned()
1982
2002
  ? material.alpha(material.lighten(theme.palette.background.default, 0.04), 0.95)
@@ -2093,7 +2113,7 @@ const MRT_TableBodyRow = ({ row, rowIndex, table, virtualRow, }) => {
2093
2113
  };
2094
2114
 
2095
2115
  const MRT_TableBody = ({ table, tableContainerRef }) => {
2096
- const { getRowModel, getPrePaginationRowModel, getState, options: { enableGlobalFilterRankedResults, enablePagination, enableRowVirtualization, muiTableBodyProps, virtualizerProps, }, } = table;
2116
+ const { getRowModel, getPrePaginationRowModel, getState, options: { enableGlobalFilterRankedResults, enablePagination, enableRowVirtualization, muiTableBodyProps, virtualizerProps, virtualizerInstanceRef, }, } = table;
2097
2117
  const { globalFilter, pagination, sorting } = getState();
2098
2118
  const tableBodyProps = muiTableBodyProps instanceof Function
2099
2119
  ? muiTableBodyProps({ table })
@@ -2121,10 +2141,15 @@ const MRT_TableBody = ({ table, tableContainerRef }) => {
2121
2141
  : getRowModel().rows,
2122
2142
  globalFilter,
2123
2143
  ]);
2124
- const rowVirtualizer = enableRowVirtualization
2144
+ const virtualizer = enableRowVirtualization
2125
2145
  ? reactVirtual.useVirtual(Object.assign({ size: rows.length, parentRef: tableContainerRef, overscan: 15 }, vProps))
2126
2146
  : {};
2127
- // const rowVirtualizer: Virtualizer = enableRowVirtualization
2147
+ React.useEffect(() => {
2148
+ if (virtualizerInstanceRef) {
2149
+ virtualizerInstanceRef.current = virtualizer;
2150
+ }
2151
+ }, [virtualizer]);
2152
+ // const virtualizer: Virtualizer = enableRowVirtualization
2128
2153
  // ? useVirtualizer({
2129
2154
  // count: rows.length,
2130
2155
  // estimateSize: () => (density === 'compact' ? 25 : 50),
@@ -2133,24 +2158,22 @@ const MRT_TableBody = ({ table, tableContainerRef }) => {
2133
2158
  // ...vProps,
2134
2159
  // })
2135
2160
  // : ({} as any);
2136
- const virtualRows = enableRowVirtualization
2137
- ? rowVirtualizer.virtualItems
2138
- : [];
2161
+ const virtualRows = enableRowVirtualization ? virtualizer.virtualItems : [];
2139
2162
  // const virtualRows = enableRowVirtualization
2140
- // ? rowVirtualizer.getVirtualItems()
2163
+ // ? virtualizer.getVirtualItems()
2141
2164
  // : [];
2142
2165
  let paddingTop = 0;
2143
2166
  let paddingBottom = 0;
2144
2167
  if (enableRowVirtualization) {
2145
2168
  paddingTop = !!virtualRows.length ? virtualRows[0].start : 0;
2146
2169
  paddingBottom = !!virtualRows.length
2147
- ? rowVirtualizer.totalSize - virtualRows[virtualRows.length - 1].end
2170
+ ? virtualizer.totalSize - virtualRows[virtualRows.length - 1].end
2148
2171
  : 0;
2149
2172
  }
2150
2173
  // if (enableRowVirtualization) {
2151
2174
  // paddingTop = !!virtualRows.length ? virtualRows[0].start : 0;
2152
2175
  // paddingBottom = !!virtualRows.length
2153
- // ? rowVirtualizer.getTotalSize() - virtualRows[virtualRows.length - 1].end
2176
+ // ? virtualizer.getTotalSize() - virtualRows[virtualRows.length - 1].end
2154
2177
  // : 0;
2155
2178
  // }
2156
2179
  return (React__default["default"].createElement(material.TableBody, Object.assign({}, tableBodyProps),
@@ -2338,11 +2361,11 @@ const MRT_TableRoot = (props) => {
2338
2361
  return initState;
2339
2362
  }, []);
2340
2363
  const [columnFilterFns, setColumnFilterFns] = React.useState(() => Object.assign({}, ...getAllLeafColumnDefs(props.columns).map((col) => {
2341
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
2364
+ var _a, _b, _c, _d;
2342
2365
  return ({
2343
- [(_d = (_b = (_a = col.id) === null || _a === void 0 ? void 0 : _a.toString()) !== null && _b !== void 0 ? _b : (_c = col.accessorKey) === null || _c === void 0 ? void 0 : _c.toString()) !== null && _d !== void 0 ? _d : '']: col.filterFn instanceof Function
2344
- ? (_e = col.filterFn.name) !== null && _e !== void 0 ? _e : 'custom'
2345
- : (_m = (_f = col.filterFn) !== null && _f !== void 0 ? _f : (_g = initialState === null || initialState === void 0 ? void 0 : initialState.columnFilterFns) === null || _g === void 0 ? void 0 : _g[(_l = (_j = (_h = col.id) === null || _h === void 0 ? void 0 : _h.toString()) !== null && _j !== void 0 ? _j : (_k = col.accessorKey) === null || _k === void 0 ? void 0 : _k.toString()) !== null && _l !== void 0 ? _l : '']) !== null && _m !== void 0 ? _m : getDefaultColumnFilterFn(col),
2366
+ [getColumnId(col)]: col.filterFn instanceof Function
2367
+ ? (_a = col.filterFn.name) !== null && _a !== void 0 ? _a : 'custom'
2368
+ : (_d = (_b = col.filterFn) !== null && _b !== void 0 ? _b : (_c = initialState === null || initialState === void 0 ? void 0 : initialState.columnFilterFns) === null || _c === void 0 ? void 0 : _c[getColumnId(col)]) !== null && _d !== void 0 ? _d : getDefaultColumnFilterFn(col),
2346
2369
  });
2347
2370
  })));
2348
2371
  const [columnOrder, setColumnOrder] = React.useState((_a = initialState.columnOrder) !== null && _a !== void 0 ? _a : []);
@@ -2432,6 +2455,11 @@ const MRT_TableRoot = (props) => {
2432
2455
  tableContainerRef,
2433
2456
  topToolbarRef,
2434
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]);
2435
2463
  return (React__default["default"].createElement(React__default["default"].Fragment, null,
2436
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 },
2437
2465
  React__default["default"].createElement(MRT_TablePaper, { table: table })),
@@ -2440,8 +2468,8 @@ const MRT_TableRoot = (props) => {
2440
2468
  };
2441
2469
 
2442
2470
  var MaterialReactTable = (_a) => {
2443
- var { aggregationFns, autoResetExpanded = false, columnResizeMode = 'onEnd', defaultColumn = { minSize: 40, maxSize: 1000, size: 180 }, editingMode = 'modal', enableBottomToolbar = true, enableColumnActions = true, enableColumnFilterChangeMode = false, enableColumnFilters = true, enableColumnOrdering = false, enableColumnResizing = false, enableDensityToggle = true, enableExpandAll = true, enableFilters = true, enableFullScreenToggle = true, enableGlobalFilter = true, enableGlobalFilterChangeMode = 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", "enableColumnFilterChangeMode", "enableColumnFilters", "enableColumnOrdering", "enableColumnResizing", "enableDensityToggle", "enableExpandAll", "enableFilters", "enableFullScreenToggle", "enableGlobalFilter", "enableGlobalFilterChangeMode", "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"]);
2444
- 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, enableColumnFilterChangeMode: enableColumnFilterChangeMode, enableColumnFilters: enableColumnFilters, enableColumnOrdering: enableColumnOrdering, enableColumnResizing: enableColumnResizing, enableDensityToggle: enableDensityToggle, enableExpandAll: enableExpandAll, enableFilters: enableFilters, enableFullScreenToggle: enableFullScreenToggle, enableGlobalFilter: enableGlobalFilter, enableGlobalFilterChangeMode: enableGlobalFilterChangeMode, 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)));
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, 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)));
2445
2473
  };
2446
2474
 
2447
2475
  exports.MRT_CopyButton = MRT_CopyButton;