material-react-table 0.16.1 → 0.17.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.
@@ -24,10 +24,6 @@ function _extends() {
24
24
  return _extends.apply(this, arguments);
25
25
  }
26
26
 
27
- function _objectDestructuringEmpty(obj) {
28
- if (obj == null) throw new TypeError("Cannot destructure undefined");
29
- }
30
-
31
27
  function _objectWithoutPropertiesLoose(source, excluded) {
32
28
  if (source == null) return {};
33
29
  var target = {};
@@ -623,13 +619,13 @@ var createDataColumn = function createDataColumn(table, column, currentFilterFns
623
619
  var createDisplayColumn = function createDisplayColumn(table, column) {
624
620
  return table.createDisplayColumn(column);
625
621
  };
626
- var reorderColumn = function reorderColumn(movingColumn, receivingColumn, columnOrder, setColumnOrder) {
622
+ var reorderColumn = function reorderColumn(movingColumn, receivingColumn, columnOrder) {
627
623
  if (movingColumn.getCanPin()) {
628
624
  movingColumn.pin(receivingColumn.getIsPinned());
629
625
  }
630
626
 
631
627
  columnOrder.splice(columnOrder.indexOf(receivingColumn.id), 0, columnOrder.splice(columnOrder.indexOf(movingColumn.id), 1)[0]);
632
- setColumnOrder([].concat(columnOrder));
628
+ return [].concat(columnOrder);
633
629
  };
634
630
  var getLeadingDisplayColumnIds = function getLeadingDisplayColumnIds(props) {
635
631
  return [(props.positionActionsColumn === 'first' && props.enableRowActions || props.enableEditing && props.editingMode === 'row') && 'mrt-row-actions', (props.enableExpanding || props.enableGrouping) && 'mrt-expand', props.enableRowSelection && 'mrt-select', props.enableRowNumbers && 'mrt-row-numbers'].filter(Boolean);
@@ -656,12 +652,10 @@ var MRT_ShowHideColumnsMenuItems = function MRT_ShowHideColumnsMenuItems(_ref) {
656
652
  enableHiding = _instance$options.enableHiding,
657
653
  enablePinning = _instance$options.enablePinning,
658
654
  localization = _instance$options.localization,
659
- onColumnVisibilityChanged = _instance$options.onColumnVisibilityChanged,
660
655
  setColumnOrder = instance.setColumnOrder;
661
656
 
662
657
  var _getState = getState(),
663
- columnOrder = _getState.columnOrder,
664
- columnVisibility = _getState.columnVisibility;
658
+ columnOrder = _getState.columnOrder;
665
659
 
666
660
  var columnDef = column.columnDef,
667
661
  columnDefType = column.columnDefType;
@@ -669,7 +663,8 @@ var MRT_ShowHideColumnsMenuItems = function MRT_ShowHideColumnsMenuItems(_ref) {
669
663
  var _useDrop = useDrop({
670
664
  accept: 'column',
671
665
  drop: function drop(movingColumn) {
672
- return reorderColumn(movingColumn, column, columnOrder, setColumnOrder);
666
+ var newColumnOrder = reorderColumn(movingColumn, column, columnOrder);
667
+ setColumnOrder(newColumnOrder);
673
668
  }
674
669
  }),
675
670
  dropRef = _useDrop[1];
@@ -702,12 +697,6 @@ var MRT_ShowHideColumnsMenuItems = function MRT_ShowHideColumnsMenuItems(_ref) {
702
697
  } else {
703
698
  column.toggleVisibility();
704
699
  }
705
-
706
- onColumnVisibilityChanged == null ? void 0 : onColumnVisibilityChanged({
707
- column: column,
708
- columnVisibility: columnVisibility,
709
- instance: instance
710
- });
711
700
  };
712
701
 
713
702
  return React.createElement(React.Fragment, null, React.createElement(MenuItem, {
@@ -881,7 +870,7 @@ var commonListItemStyles = {
881
870
  alignItems: 'center'
882
871
  };
883
872
  var MRT_ColumnActionMenu = function MRT_ColumnActionMenu(_ref) {
884
- var _localization$sortByC, _localization$sortByC2, _localization$filterB, _localization, _localization$hideCol, _localization$showAll;
873
+ var _columnDef$enabledCol, _localization$sortByC, _localization$sortByC2, _localization$filterB, _localization, _localization$hideCol, _localization$showAll;
885
874
 
886
875
  var anchorEl = _ref.anchorEl,
887
876
  header = _ref.header,
@@ -891,12 +880,14 @@ var MRT_ColumnActionMenu = function MRT_ColumnActionMenu(_ref) {
891
880
  toggleAllColumnsVisible = instance.toggleAllColumnsVisible,
892
881
  setColumnOrder = instance.setColumnOrder,
893
882
  _instance$options = instance.options,
883
+ enableColumnFilterChangeMode = _instance$options.enableColumnFilterChangeMode,
894
884
  enableColumnFilters = _instance$options.enableColumnFilters,
895
885
  enableColumnResizing = _instance$options.enableColumnResizing,
896
886
  enableGrouping = _instance$options.enableGrouping,
897
887
  enableHiding = _instance$options.enableHiding,
898
888
  enablePinning = _instance$options.enablePinning,
899
889
  enableSorting = _instance$options.enableSorting,
890
+ enabledColumnFilterOptions = _instance$options.enabledColumnFilterOptions,
900
891
  _instance$options$ico = _instance$options.icons,
901
892
  ArrowRightIcon = _instance$options$ico.ArrowRightIcon,
902
893
  ClearAllIcon = _instance$options$ico.ClearAllIcon,
@@ -996,6 +987,9 @@ var MRT_ColumnActionMenu = function MRT_ColumnActionMenu(_ref) {
996
987
  setShowHideColumnsMenuAnchorEl(event.currentTarget);
997
988
  };
998
989
 
990
+ var isSelectFilter = !!columnDef.filterSelectOptions;
991
+ var allowedColumnFilterOptions = (_columnDef$enabledCol = columnDef == null ? void 0 : columnDef.enabledColumnFilterOptions) != null ? _columnDef$enabledCol : enabledColumnFilterOptions;
992
+ var showFilterModeSubMenu = enableColumnFilterChangeMode && columnDef.enableColumnFilterChangeMode !== false && !isSelectFilter && (allowedColumnFilterOptions === undefined || !!(allowedColumnFilterOptions != null && allowedColumnFilterOptions.length));
999
993
  return React.createElement(Menu, {
1000
994
  anchorEl: anchorEl,
1001
995
  open: !!anchorEl,
@@ -1045,21 +1039,21 @@ var MRT_ColumnActionMenu = function MRT_ColumnActionMenu(_ref) {
1045
1039
  sx: commonMenuItemStyles$1
1046
1040
  }, React.createElement(Box, {
1047
1041
  sx: commonListItemStyles
1048
- }, React.createElement(ListItemIcon, null, React.createElement(FilterListIcon, null)), (_localization$filterB = localization.filterByColumn) == null ? void 0 : _localization$filterB.replace('{column}', String(columnDef.header))), !columnDef.filterSelectOptions && React.createElement(IconButton, {
1042
+ }, React.createElement(ListItemIcon, null, React.createElement(FilterListIcon, null)), (_localization$filterB = localization.filterByColumn) == null ? void 0 : _localization$filterB.replace('{column}', String(columnDef.header))), showFilterModeSubMenu && React.createElement(IconButton, {
1049
1043
  onClick: handleOpenFilterModeMenu,
1050
1044
  onMouseEnter: handleOpenFilterModeMenu,
1051
1045
  size: "small",
1052
1046
  sx: {
1053
1047
  p: 0
1054
1048
  }
1055
- }, React.createElement(ArrowRightIcon, null))), React.createElement(MRT_FilterOptionMenu, {
1049
+ }, React.createElement(ArrowRightIcon, null))), showFilterModeSubMenu && React.createElement(MRT_FilterOptionMenu, {
1056
1050
  anchorEl: filterMenuAnchorEl,
1057
1051
  header: header,
1058
1052
  key: 2,
1059
1053
  onSelect: handleFilterByColumn,
1060
1054
  setAnchorEl: setFilterMenuAnchorEl,
1061
1055
  instance: instance
1062
- })], enableGrouping && column.getCanGroup() && [React.createElement(MenuItem, {
1056
+ })].filter(Boolean), enableGrouping && column.getCanGroup() && [React.createElement(MenuItem, {
1063
1057
  divider: enablePinning,
1064
1058
  key: 0,
1065
1059
  onClick: handleGroupByColumn,
@@ -1714,7 +1708,8 @@ var MRT_TablePagination = function MRT_TablePagination(_ref) {
1714
1708
  setPageSize = instance.setPageSize,
1715
1709
  _instance$options = instance.options,
1716
1710
  muiTablePaginationProps = _instance$options.muiTablePaginationProps,
1717
- enableToolbarInternalActions = _instance$options.enableToolbarInternalActions;
1711
+ enableToolbarInternalActions = _instance$options.enableToolbarInternalActions,
1712
+ rowCount = _instance$options.rowCount;
1718
1713
 
1719
1714
  var _getState = getState(),
1720
1715
  _getState$pagination = _getState.pagination,
@@ -1732,7 +1727,8 @@ var MRT_TablePagination = function MRT_TablePagination(_ref) {
1732
1727
  setPageSize(+event.target.value);
1733
1728
  };
1734
1729
 
1735
- var showFirstLastPageButtons = getPrePaginationRowModel().rows.length / pageSize > 2;
1730
+ var totalRowCount = rowCount != null ? rowCount : getPrePaginationRowModel().rows.length;
1731
+ var showFirstLastPageButtons = totalRowCount / pageSize > 2;
1736
1732
  return React.createElement(TablePagination, Object.assign({
1737
1733
  SelectProps: {
1738
1734
  sx: {
@@ -1745,7 +1741,7 @@ var MRT_TablePagination = function MRT_TablePagination(_ref) {
1745
1741
  }
1746
1742
  },
1747
1743
  component: "div",
1748
- count: getPrePaginationRowModel().rows.length,
1744
+ count: totalRowCount,
1749
1745
  onPageChange: function onPageChange(_, newPage) {
1750
1746
  return setPageIndex(newPage);
1751
1747
  },
@@ -1999,7 +1995,7 @@ var MRT_ToolbarBottom = function MRT_ToolbarBottom(_ref) {
1999
1995
  };
2000
1996
 
2001
1997
  var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
2002
- var _localization$filterB, _columnDef$enabledCol, _allowedColumnFilterO, _localization$filterM, _localization, _localization$clearFi, _columnDef$filterSele;
1998
+ var _localization$filterB, _columnDef$enabledCol, _localization$filterM, _localization, _localization$clearFi, _columnDef$filterSele;
2003
1999
 
2004
2000
  var header = _ref.header,
2005
2001
  inputIndex = _ref.inputIndex,
@@ -2132,7 +2128,7 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
2132
2128
  localization["filter" + (filterFn.charAt(0).toUpperCase() + filterFn.slice(1))] : '';
2133
2129
  var filterPlaceholder = inputIndex === undefined ? (_localization$filterB = localization.filterByColumn) == null ? void 0 : _localization$filterB.replace('{column}', String(columnDef.header)) : inputIndex === 0 ? localization.min : inputIndex === 1 ? localization.max : '';
2134
2130
  var allowedColumnFilterOptions = (_columnDef$enabledCol = columnDef == null ? void 0 : columnDef.enabledColumnFilterOptions) != null ? _columnDef$enabledCol : enabledColumnFilterOptions;
2135
- var allowColumnChangeMode = enableColumnFilterChangeMode && columnDef.enableColumnFilterChangeMode !== false;
2131
+ var showChangeModeButton = enableColumnFilterChangeMode && columnDef.enableColumnFilterChangeMode !== false && !isSelectFilter && !inputIndex && (allowedColumnFilterOptions === undefined || !!(allowedColumnFilterOptions != null && allowedColumnFilterOptions.length));
2136
2132
  return React.createElement(React.Fragment, null, React.createElement(TextField, Object.assign({
2137
2133
  fullWidth: true,
2138
2134
  id: filterId,
@@ -2144,7 +2140,7 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
2144
2140
  },
2145
2141
  title: filterPlaceholder
2146
2142
  },
2147
- helperText: allowColumnChangeMode && !inputIndex && (allowedColumnFilterOptions === undefined || ((_allowedColumnFilterO = allowedColumnFilterOptions == null ? void 0 : allowedColumnFilterOptions.length) != null ? _allowedColumnFilterO : 0) > 0) ? React.createElement("label", {
2143
+ helperText: showChangeModeButton ? React.createElement("label", {
2148
2144
  htmlFor: filterId
2149
2145
  }, filterFn instanceof Function ? (_localization$filterM = localization.filterMode.replace('{filterType}', // @ts-ignore
2150
2146
  (_localization = localization["filter" + (filterFn.name.charAt(0).toUpperCase() + filterFn.name.slice(1))]) != null ? _localization : '')) != null ? _localization$filterM : '' : localization.filterMode.replace('{filterType}', // @ts-ignore
@@ -2166,7 +2162,7 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
2166
2162
  value: filterValue != null ? filterValue : '',
2167
2163
  variant: "standard",
2168
2164
  InputProps: {
2169
- startAdornment: allowColumnChangeMode && !isSelectFilter && !inputIndex && (allowedColumnFilterOptions === undefined || !!(allowedColumnFilterOptions != null && allowedColumnFilterOptions.length)) ? React.createElement(InputAdornment, {
2165
+ startAdornment: showChangeModeButton ? React.createElement(InputAdornment, {
2170
2166
  position: "start"
2171
2167
  }, React.createElement(Tooltip, {
2172
2168
  arrow: true,
@@ -2330,6 +2326,7 @@ var MRT_TableHeadCellResizeHandle = function MRT_TableHeadCellResizeHandle(_ref)
2330
2326
  var getState = instance.getState;
2331
2327
 
2332
2328
  var _getState = getState(),
2329
+ density = _getState.density,
2333
2330
  showFilters = _getState.showFilters;
2334
2331
 
2335
2332
  var column = header.column;
@@ -2346,13 +2343,14 @@ var MRT_TableHeadCellResizeHandle = function MRT_TableHeadCellResizeHandle(_ref)
2346
2343
  borderRightWidth: '2px',
2347
2344
  cursor: 'col-resize',
2348
2345
  height: showFilters && columnDefType === 'data' ? '4rem' : '2rem',
2346
+ mr: density === 'compact' ? '-0.5rem' : '-1rem',
2349
2347
  opacity: 0.8,
2350
2348
  position: 'absolute',
2351
- mr: '-1rem',
2352
2349
  right: '1px',
2353
2350
  touchAction: 'none',
2354
2351
  transition: column.getIsResizing() ? undefined : 'all 0.2s ease-in-out',
2355
2352
  userSelect: 'none',
2353
+ zIndex: 4,
2356
2354
  '&:active': {
2357
2355
  backgroundColor: theme.palette.info.main,
2358
2356
  opacity: 1
@@ -2580,11 +2578,8 @@ var MRT_TableHeadCell = function MRT_TableHeadCell(_ref) {
2580
2578
  var MRT_DraggableTableHeadCell = function MRT_DraggableTableHeadCell(_ref) {
2581
2579
  var header = _ref.header,
2582
2580
  instance = _ref.instance;
2583
- var getState = instance.getState;
2584
-
2585
- _objectDestructuringEmpty(instance.options);
2586
-
2587
- var setColumnOrder = instance.setColumnOrder;
2581
+ var getState = instance.getState,
2582
+ setColumnOrder = instance.setColumnOrder;
2588
2583
 
2589
2584
  var _getState = getState(),
2590
2585
  columnOrder = _getState.columnOrder;
@@ -2594,7 +2589,8 @@ var MRT_DraggableTableHeadCell = function MRT_DraggableTableHeadCell(_ref) {
2594
2589
  var _useDrop = useDrop({
2595
2590
  accept: 'column',
2596
2591
  drop: function drop(movingColumn) {
2597
- return reorderColumn(movingColumn, column, columnOrder, setColumnOrder);
2592
+ var newColumnOrder = reorderColumn(movingColumn, column, columnOrder);
2593
+ setColumnOrder(newColumnOrder);
2598
2594
  }
2599
2595
  }),
2600
2596
  dropRef = _useDrop[1];
@@ -2861,7 +2857,8 @@ var MRT_TableBodyCell = function MRT_TableBodyCell(_ref) {
2861
2857
  var _useDrop = useDrop({
2862
2858
  accept: 'column',
2863
2859
  drop: function drop(movingColumn) {
2864
- return reorderColumn(movingColumn, column, columnOrder, setColumnOrder);
2860
+ var newColumnOrder = reorderColumn(movingColumn, column, columnOrder);
2861
+ setColumnOrder(newColumnOrder);
2865
2862
  }
2866
2863
  }),
2867
2864
  dropRef = _useDrop[1];
@@ -3384,29 +3381,6 @@ var MRT_TableRoot = function MRT_TableRoot(props) {
3384
3381
 
3385
3382
  var initState = (_props$initialState = props.initialState) != null ? _props$initialState : {};
3386
3383
  initState.columnOrder = (_initState$columnOrde = initState.columnOrder) != null ? _initState$columnOrde : getDefaultColumnOrderIds(props);
3387
-
3388
- if (!props.enablePersistentState || !props.tableId) {
3389
- return initState;
3390
- }
3391
-
3392
- if (typeof window === 'undefined') {
3393
- if (process.env.NODE_ENV !== 'production') {
3394
- console.error('The MRT Persistent Table State feature is not supported if using SSR, but you can wrap your <MaterialReactTable /> in a MUI <NoSsr> tags to let it work');
3395
- }
3396
-
3397
- return initState;
3398
- }
3399
-
3400
- var storedState = props.persistentStateMode === 'localStorage' ? localStorage.getItem("mrt-" + tableId + "-table-state") : props.persistentStateMode === 'sessionStorage' ? sessionStorage.getItem("mrt-" + tableId + "-table-state") : '{}';
3401
-
3402
- if (storedState) {
3403
- var parsedState = JSON.parse(storedState);
3404
-
3405
- if (parsedState) {
3406
- return _extends({}, initState, parsedState);
3407
- }
3408
- }
3409
-
3410
3384
  return initState;
3411
3385
  }, []);
3412
3386
 
@@ -3590,27 +3564,26 @@ var MRT_TableRoot = function MRT_TableRoot(props) {
3590
3564
  });
3591
3565
 
3592
3566
  useEffect(function () {
3593
- if (typeof window === 'undefined' || !props.enablePersistentState) {
3594
- return;
3595
- }
3596
-
3597
- if (!props.tableId && process.env.NODE_ENV !== 'production') {
3598
- console.warn('a unique tableId prop is required for persistent table state to work');
3599
- return;
3600
- }
3601
-
3602
- var itemArgs = ["mrt-" + tableId + "-table-state", JSON.stringify(instance.getState())];
3603
-
3604
- if (props.persistentStateMode === 'localStorage') {
3605
- var _localStorage;
3606
-
3607
- (_localStorage = localStorage).setItem.apply(_localStorage, itemArgs);
3608
- } else if (props.persistentStateMode === 'sessionStorage') {
3609
- var _sessionStorage;
3610
-
3611
- (_sessionStorage = sessionStorage).setItem.apply(_sessionStorage, itemArgs);
3612
- }
3613
- }, [props.enablePersistentState, props.tableId, props.persistentStateMode, instance]);
3567
+ props == null ? void 0 : props.onColumnOrderChanged == null ? void 0 : props.onColumnOrderChanged({
3568
+ columnOrder: instance.getState().columnOrder,
3569
+ //@ts-ignore
3570
+ instance: instance
3571
+ });
3572
+ }, [instance.getState().columnOrder]);
3573
+ useEffect(function () {
3574
+ props == null ? void 0 : props.onColumnPinningChanged == null ? void 0 : props.onColumnPinningChanged({
3575
+ columnPinning: instance.getState().columnPinning,
3576
+ //@ts-ignore
3577
+ instance: instance
3578
+ });
3579
+ }, [instance.getState().columnPinning]);
3580
+ useEffect(function () {
3581
+ props == null ? void 0 : props.onColumnVisibilityChanged == null ? void 0 : props.onColumnVisibilityChanged({
3582
+ columnPinning: instance.getState().columnVisibility,
3583
+ //@ts-ignore
3584
+ instance: instance
3585
+ });
3586
+ }, [instance.getState().columnVisibility]);
3614
3587
  return React.createElement(React.Fragment, null, React.createElement(Dialog, {
3615
3588
  PaperComponent: Box,
3616
3589
  TransitionComponent: Grow,
@@ -3629,7 +3602,7 @@ var MRT_TableRoot = function MRT_TableRoot(props) {
3629
3602
  }));
3630
3603
  };
3631
3604
 
3632
- var _excluded$5 = ["autoResetExpanded", "columnResizeMode", "defaultColumn", "editingMode", "enableColumnActions", "enableColumnFilterChangeMode", "enableColumnFilters", "enableColumnOrdering", "enableColumnResizing", "enableDensityToggle", "enableExpandAll", "enableFilters", "enableFullScreenToggle", "enableGlobalFilter", "enableGlobalFilterChangeMode", "enableGlobalFilterRankedResults", "enableGrouping", "enableHiding", "enableMultiRowSelection", "enableMultiSort", "enablePagination", "enablePinning", "enableRowSelection", "enableSelectAll", "enableSorting", "enableStickyHeader", "enableTableFooter", "enableTableHead", "enableToolbarBottom", "enableToolbarInternalActions", "enableToolbarTop", "icons", "localization", "persistentStateMode", "positionActionsColumn", "positionGlobalFilter", "positionPagination", "positionToolbarAlertBanner", "rowNumberMode", "selectAllMode"];
3605
+ var _excluded$5 = ["autoResetExpanded", "columnResizeMode", "defaultColumn", "editingMode", "enableColumnActions", "enableColumnFilterChangeMode", "enableColumnFilters", "enableColumnOrdering", "enableColumnResizing", "enableDensityToggle", "enableExpandAll", "enableFilters", "enableFullScreenToggle", "enableGlobalFilter", "enableGlobalFilterChangeMode", "enableGlobalFilterRankedResults", "enableGrouping", "enableHiding", "enableMultiRowSelection", "enableMultiSort", "enablePagination", "enablePinning", "enableRowSelection", "enableSelectAll", "enableSorting", "enableStickyHeader", "enableTableFooter", "enableTableHead", "enableToolbarBottom", "enableToolbarInternalActions", "enableToolbarTop", "icons", "localization", "positionActionsColumn", "positionGlobalFilter", "positionPagination", "positionToolbarAlertBanner", "rowNumberMode", "selectAllMode"];
3633
3606
  var MaterialReactTable = (function (_ref) {
3634
3607
  var _ref$autoResetExpande = _ref.autoResetExpanded,
3635
3608
  autoResetExpanded = _ref$autoResetExpande === void 0 ? false : _ref$autoResetExpande,
@@ -3699,8 +3672,6 @@ var MaterialReactTable = (function (_ref) {
3699
3672
  enableToolbarTop = _ref$enableToolbarTop === void 0 ? true : _ref$enableToolbarTop,
3700
3673
  icons = _ref.icons,
3701
3674
  localization = _ref.localization,
3702
- _ref$persistentStateM = _ref.persistentStateMode,
3703
- persistentStateMode = _ref$persistentStateM === void 0 ? 'sessionStorage' : _ref$persistentStateM,
3704
3675
  _ref$positionActionsC = _ref.positionActionsColumn,
3705
3676
  positionActionsColumn = _ref$positionActionsC === void 0 ? 'first' : _ref$positionActionsC,
3706
3677
  _ref$positionGlobalFi = _ref.positionGlobalFilter,
@@ -3749,7 +3720,6 @@ var MaterialReactTable = (function (_ref) {
3749
3720
  enableToolbarTop: enableToolbarTop,
3750
3721
  icons: _extends({}, MRT_Default_Icons, icons),
3751
3722
  localization: _extends({}, MRT_DefaultLocalization_EN, localization),
3752
- persistentStateMode: persistentStateMode,
3753
3723
  positionActionsColumn: positionActionsColumn,
3754
3724
  positionGlobalFilter: positionGlobalFilter,
3755
3725
  positionPagination: positionPagination,