material-react-table 1.13.1 → 1.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -59,7 +59,7 @@ _All features can easily be enabled/disabled_
59
59
 
60
60
  _**Fully Fleshed out [Docs](https://www.material-react-table.com/docs/guides#guides) are available for all features**_
61
61
 
62
- - [x] < 45kb gzipped - [Bundlephobia](https://bundlephobia.com/package/material-react-table)
62
+ - [x] < 47kb gzipped - [Bundlephobia](https://bundlephobia.com/package/material-react-table)
63
63
  - [x] Advanced TypeScript Generics Support (TypeScript Optional)
64
64
  - [x] Aggregation and Grouping (Sum, Average, Count, etc.)
65
65
  - [x] Click To Copy Cell Values
@@ -73,6 +73,7 @@ _**Fully Fleshed out [Docs](https://www.material-react-table.com/docs/guides#gui
73
73
  - [x] Data Editing (4 different editing modes)
74
74
  - [x] Density Toggle
75
75
  - [x] Detail Panels (Expansion)
76
+ - [x] Faceted Value Generation for Filter Options
76
77
  - [x] Filtering (supports client-side and server-side)
77
78
  - [x] Filter Match Highlighting
78
79
  - [x] Full Screen Mode
package/dist/cjs/index.js CHANGED
@@ -69,7 +69,9 @@ var Table = require('@mui/material/Table');
69
69
  var TableHead = require('@mui/material/TableHead');
70
70
  var TableRow = require('@mui/material/TableRow');
71
71
  var TableCell = require('@mui/material/TableCell');
72
- var material = require('@mui/material');
72
+ var Slider = require('@mui/material/Slider');
73
+ var Stack = require('@mui/material/Stack');
74
+ var FormHelperText = require('@mui/material/FormHelperText');
73
75
  var Badge = require('@mui/material/Badge');
74
76
  var TableSortLabel = require('@mui/material/TableSortLabel');
75
77
  var TableBody = require('@mui/material/TableBody');
@@ -79,7 +81,6 @@ var TableFooter = require('@mui/material/TableFooter');
79
81
  var DialogActions = require('@mui/material/DialogActions');
80
82
  var DialogContent = require('@mui/material/DialogContent');
81
83
  var DialogTitle = require('@mui/material/DialogTitle');
82
- var Stack = require('@mui/material/Stack');
83
84
 
84
85
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
85
86
 
@@ -143,6 +144,9 @@ var Table__default = /*#__PURE__*/_interopDefaultLegacy(Table);
143
144
  var TableHead__default = /*#__PURE__*/_interopDefaultLegacy(TableHead);
144
145
  var TableRow__default = /*#__PURE__*/_interopDefaultLegacy(TableRow);
145
146
  var TableCell__default = /*#__PURE__*/_interopDefaultLegacy(TableCell);
147
+ var Slider__default = /*#__PURE__*/_interopDefaultLegacy(Slider);
148
+ var Stack__default = /*#__PURE__*/_interopDefaultLegacy(Stack);
149
+ var FormHelperText__default = /*#__PURE__*/_interopDefaultLegacy(FormHelperText);
146
150
  var Badge__default = /*#__PURE__*/_interopDefaultLegacy(Badge);
147
151
  var TableSortLabel__default = /*#__PURE__*/_interopDefaultLegacy(TableSortLabel);
148
152
  var TableBody__default = /*#__PURE__*/_interopDefaultLegacy(TableBody);
@@ -152,7 +156,6 @@ var TableFooter__default = /*#__PURE__*/_interopDefaultLegacy(TableFooter);
152
156
  var DialogActions__default = /*#__PURE__*/_interopDefaultLegacy(DialogActions);
153
157
  var DialogContent__default = /*#__PURE__*/_interopDefaultLegacy(DialogContent);
154
158
  var DialogTitle__default = /*#__PURE__*/_interopDefaultLegacy(DialogTitle);
155
- var Stack__default = /*#__PURE__*/_interopDefaultLegacy(Stack);
156
159
 
157
160
  /******************************************************************************
158
161
  Copyright (c) Microsoft Corporation.
@@ -176,6 +179,10 @@ function __rest(s, e) {
176
179
  }
177
180
  return t;
178
181
  }
182
+ typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
183
+ var e = new Error(message);
184
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
185
+ };
179
186
 
180
187
  const MRT_AggregationFns = Object.assign({}, reactTable.aggregationFns);
181
188
 
@@ -861,6 +868,7 @@ const MRT_ColumnActionMenu = ({ anchorEl, header, setAnchorEl, table, }) => {
861
868
  const { column } = header;
862
869
  const { columnDef } = column;
863
870
  const { columnSizing, columnVisibility, density, showColumnFilters } = getState();
871
+ const columnFilterValue = column.getFilterValue();
864
872
  const [filterMenuAnchorEl, setFilterMenuAnchorEl] = react.useState(null);
865
873
  const handleClearSort = () => {
866
874
  column.clearSorting();
@@ -916,46 +924,63 @@ const MRT_ColumnActionMenu = ({ anchorEl, header, setAnchorEl, table, }) => {
916
924
  !isSelectFilter &&
917
925
  (allowedColumnFilterOptions === undefined ||
918
926
  !!(allowedColumnFilterOptions === null || allowedColumnFilterOptions === void 0 ? void 0 : allowedColumnFilterOptions.length));
919
- return (jsxRuntime.jsxs(Menu__default["default"], { anchorEl: anchorEl, open: !!anchorEl, onClose: () => setAnchorEl(null), MenuListProps: {
920
- dense: density === 'compact',
921
- }, children: [(_d = (_c = (_b = columnDef.renderColumnActionsMenuItems) === null || _b === void 0 ? void 0 : _b.call(columnDef, {
922
- closeMenu: () => setAnchorEl(null),
923
- column,
924
- table,
925
- })) !== null && _c !== void 0 ? _c : renderColumnActionsMenuItems === null || renderColumnActionsMenuItems === void 0 ? void 0 : renderColumnActionsMenuItems({
926
- closeMenu: () => setAnchorEl(null),
927
- column,
928
- table,
929
- })) !== null && _d !== void 0 ? _d : (enableSorting &&
930
- column.getCanSort() &&
931
- [
932
- enableSortingRemoval !== false && (jsxRuntime.jsx(MenuItem__default["default"], { disabled: !column.getIsSorted(), onClick: handleClearSort, sx: commonMenuItemStyles, children: jsxRuntime.jsxs(Box__default["default"], { sx: commonListItemStyles, children: [jsxRuntime.jsx(ListItemIcon__default["default"], { children: jsxRuntime.jsx(ClearAllIcon, {}) }), localization.clearSort] }) }, 0)),
933
- jsxRuntime.jsx(MenuItem__default["default"], { disabled: column.getIsSorted() === 'asc', onClick: handleSortAsc, sx: commonMenuItemStyles, children: jsxRuntime.jsxs(Box__default["default"], { sx: commonListItemStyles, children: [jsxRuntime.jsx(ListItemIcon__default["default"], { children: jsxRuntime.jsx(SortIcon, { style: { transform: 'rotate(180deg) scaleX(-1)' } }) }), (_e = localization.sortByColumnAsc) === null || _e === void 0 ? void 0 : _e.replace('{column}', String(columnDef.header))] }) }, 1),
934
- jsxRuntime.jsx(MenuItem__default["default"], { divider: enableColumnFilters || enableGrouping || enableHiding, disabled: column.getIsSorted() === 'desc', onClick: handleSortDesc, sx: commonMenuItemStyles, children: jsxRuntime.jsxs(Box__default["default"], { sx: commonListItemStyles, children: [jsxRuntime.jsx(ListItemIcon__default["default"], { children: jsxRuntime.jsx(SortIcon, {}) }), (_f = localization.sortByColumnDesc) === null || _f === void 0 ? void 0 : _f.replace('{column}', String(columnDef.header))] }) }, 2),
935
- ].filter(Boolean)), enableColumnFilters &&
936
- column.getCanFilter() &&
937
- [
938
- jsxRuntime.jsx(MenuItem__default["default"], { disabled: !column.getFilterValue(), onClick: handleClearFilter, sx: commonMenuItemStyles, children: jsxRuntime.jsxs(Box__default["default"], { sx: commonListItemStyles, children: [jsxRuntime.jsx(ListItemIcon__default["default"], { children: jsxRuntime.jsx(FilterListOffIcon, {}) }), localization.clearFilter] }) }, 0),
939
- jsxRuntime.jsxs(MenuItem__default["default"], { disabled: showColumnFilters && !enableColumnFilterModes, divider: enableGrouping || enableHiding, onClick: showColumnFilters
940
- ? handleOpenFilterModeMenu
941
- : handleFilterByColumn, sx: commonMenuItemStyles, children: [jsxRuntime.jsxs(Box__default["default"], { sx: commonListItemStyles, children: [jsxRuntime.jsx(ListItemIcon__default["default"], { children: jsxRuntime.jsx(FilterListIcon, {}) }), (_g = localization.filterByColumn) === null || _g === void 0 ? void 0 : _g.replace('{column}', String(columnDef.header))] }), showFilterModeSubMenu && (jsxRuntime.jsx(IconButton__default["default"], { onClick: handleOpenFilterModeMenu, onMouseEnter: handleOpenFilterModeMenu, size: "small", sx: { p: 0 }, children: jsxRuntime.jsx(ArrowRightIcon, {}) }))] }, 1),
942
- showFilterModeSubMenu && (jsxRuntime.jsx(MRT_FilterOptionMenu, { anchorEl: filterMenuAnchorEl, header: header, onSelect: handleFilterByColumn, setAnchorEl: setFilterMenuAnchorEl, table: table }, 2)),
943
- ].filter(Boolean), enableGrouping &&
944
- column.getCanGroup() && [
945
- jsxRuntime.jsx(MenuItem__default["default"], { divider: enablePinning, onClick: handleGroupByColumn, sx: commonMenuItemStyles, children: jsxRuntime.jsxs(Box__default["default"], { sx: commonListItemStyles, children: [jsxRuntime.jsx(ListItemIcon__default["default"], { children: jsxRuntime.jsx(DynamicFeedIcon, {}) }), (_h = localization[column.getIsGrouped() ? 'ungroupByColumn' : 'groupByColumn']) === null || _h === void 0 ? void 0 : _h.replace('{column}', String(columnDef.header))] }) }, 0),
946
- ], enablePinning &&
947
- column.getCanPin() && [
948
- jsxRuntime.jsx(MenuItem__default["default"], { disabled: column.getIsPinned() === 'left' || !column.getCanPin(), onClick: () => handlePinColumn('left'), sx: commonMenuItemStyles, children: jsxRuntime.jsxs(Box__default["default"], { sx: commonListItemStyles, children: [jsxRuntime.jsx(ListItemIcon__default["default"], { children: jsxRuntime.jsx(PushPinIcon, { style: { transform: 'rotate(90deg)' } }) }), localization.pinToLeft] }) }, 0),
949
- jsxRuntime.jsx(MenuItem__default["default"], { disabled: column.getIsPinned() === 'right' || !column.getCanPin(), onClick: () => handlePinColumn('right'), sx: commonMenuItemStyles, children: jsxRuntime.jsxs(Box__default["default"], { sx: commonListItemStyles, children: [jsxRuntime.jsx(ListItemIcon__default["default"], { children: jsxRuntime.jsx(PushPinIcon, { style: { transform: 'rotate(-90deg)' } }) }), localization.pinToRight] }) }, 1),
950
- jsxRuntime.jsx(MenuItem__default["default"], { disabled: !column.getIsPinned(), divider: enableHiding, onClick: () => handlePinColumn(false), sx: commonMenuItemStyles, children: jsxRuntime.jsxs(Box__default["default"], { sx: commonListItemStyles, children: [jsxRuntime.jsx(ListItemIcon__default["default"], { children: jsxRuntime.jsx(PushPinIcon, {}) }), localization.unpin] }) }, 2),
951
- ], enableColumnResizing &&
952
- column.getCanResize() && [
953
- jsxRuntime.jsx(MenuItem__default["default"], { disabled: !columnSizing[column.id], onClick: handleResetColumnSize, sx: commonMenuItemStyles, children: jsxRuntime.jsxs(Box__default["default"], { sx: commonListItemStyles, children: [jsxRuntime.jsx(ListItemIcon__default["default"], { children: jsxRuntime.jsx(RestartAltIcon, {}) }), localization.resetColumnSize] }) }, 0),
954
- ], enableHiding && [
955
- jsxRuntime.jsx(MenuItem__default["default"], { disabled: !column.getCanHide(), onClick: handleHideColumn, sx: commonMenuItemStyles, children: jsxRuntime.jsxs(Box__default["default"], { sx: commonListItemStyles, children: [jsxRuntime.jsx(ListItemIcon__default["default"], { children: jsxRuntime.jsx(VisibilityOffIcon, {}) }), (_j = localization.hideColumn) === null || _j === void 0 ? void 0 : _j.replace('{column}', String(columnDef.header))] }) }, 0),
927
+ const internalColumnMenuItems = [
928
+ ...(enableSorting && column.getCanSort()
929
+ ? [
930
+ enableSortingRemoval !== false && (jsxRuntime.jsx(MenuItem__default["default"], { disabled: !column.getIsSorted(), onClick: handleClearSort, sx: commonMenuItemStyles, children: jsxRuntime.jsxs(Box__default["default"], { sx: commonListItemStyles, children: [jsxRuntime.jsx(ListItemIcon__default["default"], { children: jsxRuntime.jsx(ClearAllIcon, {}) }), localization.clearSort] }) }, 0)),
931
+ jsxRuntime.jsx(MenuItem__default["default"], { disabled: column.getIsSorted() === 'asc', onClick: handleSortAsc, sx: commonMenuItemStyles, children: jsxRuntime.jsxs(Box__default["default"], { sx: commonListItemStyles, children: [jsxRuntime.jsx(ListItemIcon__default["default"], { children: jsxRuntime.jsx(SortIcon, { style: { transform: 'rotate(180deg) scaleX(-1)' } }) }), (_b = localization.sortByColumnAsc) === null || _b === void 0 ? void 0 : _b.replace('{column}', String(columnDef.header))] }) }, 1),
932
+ jsxRuntime.jsx(MenuItem__default["default"], { divider: enableColumnFilters || enableGrouping || enableHiding, disabled: column.getIsSorted() === 'desc', onClick: handleSortDesc, sx: commonMenuItemStyles, children: jsxRuntime.jsxs(Box__default["default"], { sx: commonListItemStyles, children: [jsxRuntime.jsx(ListItemIcon__default["default"], { children: jsxRuntime.jsx(SortIcon, {}) }), (_c = localization.sortByColumnDesc) === null || _c === void 0 ? void 0 : _c.replace('{column}', String(columnDef.header))] }) }, 2),
933
+ ]
934
+ : []),
935
+ ...(enableColumnFilters && column.getCanFilter()
936
+ ? [
937
+ jsxRuntime.jsx(MenuItem__default["default"], { disabled: !columnFilterValue ||
938
+ (Array.isArray(columnFilterValue) &&
939
+ !columnFilterValue.filter((value) => value).length), onClick: handleClearFilter, sx: commonMenuItemStyles, children: jsxRuntime.jsxs(Box__default["default"], { sx: commonListItemStyles, children: [jsxRuntime.jsx(ListItemIcon__default["default"], { children: jsxRuntime.jsx(FilterListOffIcon, {}) }), localization.clearFilter] }) }, 3),
940
+ jsxRuntime.jsxs(MenuItem__default["default"], { disabled: showColumnFilters && !enableColumnFilterModes, divider: enableGrouping || enableHiding, onClick: showColumnFilters
941
+ ? handleOpenFilterModeMenu
942
+ : handleFilterByColumn, sx: commonMenuItemStyles, children: [jsxRuntime.jsxs(Box__default["default"], { sx: commonListItemStyles, children: [jsxRuntime.jsx(ListItemIcon__default["default"], { children: jsxRuntime.jsx(FilterListIcon, {}) }), (_d = localization.filterByColumn) === null || _d === void 0 ? void 0 : _d.replace('{column}', String(columnDef.header))] }), showFilterModeSubMenu && (jsxRuntime.jsx(IconButton__default["default"], { onClick: handleOpenFilterModeMenu, onMouseEnter: handleOpenFilterModeMenu, size: "small", sx: { p: 0 }, children: jsxRuntime.jsx(ArrowRightIcon, {}) }))] }, 4),
943
+ showFilterModeSubMenu && (jsxRuntime.jsx(MRT_FilterOptionMenu, { anchorEl: filterMenuAnchorEl, header: header, onSelect: handleFilterByColumn, setAnchorEl: setFilterMenuAnchorEl, table: table }, 5)),
944
+ ]
945
+ : []),
946
+ ...(enableGrouping && column.getCanGroup()
947
+ ? [
948
+ jsxRuntime.jsx(MenuItem__default["default"], { divider: enablePinning, onClick: handleGroupByColumn, sx: commonMenuItemStyles, children: jsxRuntime.jsxs(Box__default["default"], { sx: commonListItemStyles, children: [jsxRuntime.jsx(ListItemIcon__default["default"], { children: jsxRuntime.jsx(DynamicFeedIcon, {}) }), (_e = localization[column.getIsGrouped() ? 'ungroupByColumn' : 'groupByColumn']) === null || _e === void 0 ? void 0 : _e.replace('{column}', String(columnDef.header))] }) }, 6),
949
+ ]
950
+ : []),
951
+ ...(enablePinning && column.getCanPin()
952
+ ? [
953
+ jsxRuntime.jsx(MenuItem__default["default"], { disabled: column.getIsPinned() === 'left' || !column.getCanPin(), onClick: () => handlePinColumn('left'), sx: commonMenuItemStyles, children: jsxRuntime.jsxs(Box__default["default"], { sx: commonListItemStyles, children: [jsxRuntime.jsx(ListItemIcon__default["default"], { children: jsxRuntime.jsx(PushPinIcon, { style: { transform: 'rotate(90deg)' } }) }), localization.pinToLeft] }) }, 7),
954
+ jsxRuntime.jsx(MenuItem__default["default"], { disabled: column.getIsPinned() === 'right' || !column.getCanPin(), onClick: () => handlePinColumn('right'), sx: commonMenuItemStyles, children: jsxRuntime.jsxs(Box__default["default"], { sx: commonListItemStyles, children: [jsxRuntime.jsx(ListItemIcon__default["default"], { children: jsxRuntime.jsx(PushPinIcon, { style: { transform: 'rotate(-90deg)' } }) }), localization.pinToRight] }) }, 8),
955
+ jsxRuntime.jsx(MenuItem__default["default"], { disabled: !column.getIsPinned(), divider: enableHiding, onClick: () => handlePinColumn(false), sx: commonMenuItemStyles, children: jsxRuntime.jsxs(Box__default["default"], { sx: commonListItemStyles, children: [jsxRuntime.jsx(ListItemIcon__default["default"], { children: jsxRuntime.jsx(PushPinIcon, {}) }), localization.unpin] }) }, 9),
956
+ ]
957
+ : []),
958
+ ...(enableColumnResizing && column.getCanResize()
959
+ ? [
960
+ jsxRuntime.jsx(MenuItem__default["default"], { disabled: !columnSizing[column.id], onClick: handleResetColumnSize, sx: commonMenuItemStyles, children: jsxRuntime.jsxs(Box__default["default"], { sx: commonListItemStyles, children: [jsxRuntime.jsx(ListItemIcon__default["default"], { children: jsxRuntime.jsx(RestartAltIcon, {}) }), localization.resetColumnSize] }) }, 10),
961
+ ]
962
+ : []),
963
+ ...(enableHiding
964
+ ? [
965
+ jsxRuntime.jsx(MenuItem__default["default"], { disabled: !column.getCanHide(), onClick: handleHideColumn, sx: commonMenuItemStyles, children: jsxRuntime.jsxs(Box__default["default"], { sx: commonListItemStyles, children: [jsxRuntime.jsx(ListItemIcon__default["default"], { children: jsxRuntime.jsx(VisibilityOffIcon, {}) }), (_f = localization.hideColumn) === null || _f === void 0 ? void 0 : _f.replace('{column}', String(columnDef.header))] }) }, 11),
956
966
  jsxRuntime.jsx(MenuItem__default["default"], { disabled: !Object.values(columnVisibility).filter((visible) => !visible)
957
- .length, onClick: handleShowAllColumns, sx: commonMenuItemStyles, children: jsxRuntime.jsxs(Box__default["default"], { sx: commonListItemStyles, children: [jsxRuntime.jsx(ListItemIcon__default["default"], { children: jsxRuntime.jsx(ViewColumnIcon, {}) }), (_k = localization.showAllColumns) === null || _k === void 0 ? void 0 : _k.replace('{column}', String(columnDef.header))] }) }, 1),
958
- ]] }));
967
+ .length, onClick: handleShowAllColumns, sx: commonMenuItemStyles, children: jsxRuntime.jsxs(Box__default["default"], { sx: commonListItemStyles, children: [jsxRuntime.jsx(ListItemIcon__default["default"], { children: jsxRuntime.jsx(ViewColumnIcon, {}) }), (_g = localization.showAllColumns) === null || _g === void 0 ? void 0 : _g.replace('{column}', String(columnDef.header))] }) }, 12),
968
+ ]
969
+ : []),
970
+ ].filter(Boolean);
971
+ return (jsxRuntime.jsx(Menu__default["default"], { anchorEl: anchorEl, open: !!anchorEl, onClose: () => setAnchorEl(null), MenuListProps: {
972
+ dense: density === 'compact',
973
+ }, children: (_k = (_j = (_h = columnDef.renderColumnActionsMenuItems) === null || _h === void 0 ? void 0 : _h.call(columnDef, {
974
+ closeMenu: () => setAnchorEl(null),
975
+ column,
976
+ internalColumnMenuItems,
977
+ table,
978
+ })) !== null && _j !== void 0 ? _j : renderColumnActionsMenuItems === null || renderColumnActionsMenuItems === void 0 ? void 0 : renderColumnActionsMenuItems({
979
+ closeMenu: () => setAnchorEl(null),
980
+ column,
981
+ internalColumnMenuItems,
982
+ table,
983
+ })) !== null && _k !== void 0 ? _k : internalColumnMenuItems }));
959
984
  };
960
985
 
961
986
  const MRT_RowActionMenu = ({ anchorEl, handleEdit, row, setAnchorEl, table, }) => {
@@ -1730,6 +1755,8 @@ const MRT_FilterTextField = ({ header, rangeFilterIndex, table, }) => {
1730
1755
  ? textFieldProps.sx(theme)
1731
1756
  : textFieldProps === null || textFieldProps === void 0 ? void 0 : textFieldProps.sx))), children: [(isSelectFilter || isMultiSelectFilter) && (jsxRuntime.jsx(MenuItem__default["default"], { divider: true, disabled: true, hidden: true, value: "", children: jsxRuntime.jsx(Box__default["default"], { sx: { opacity: 0.5 }, children: filterPlaceholder }) })), (_k = textFieldProps.children) !== null && _k !== void 0 ? _k : filterSelectOptions === null || filterSelectOptions === void 0 ? void 0 : filterSelectOptions.map((option) => {
1732
1757
  var _a;
1758
+ if (!option)
1759
+ return '';
1733
1760
  let value;
1734
1761
  let text;
1735
1762
  if (typeof option !== 'object') {
@@ -1812,16 +1839,16 @@ const MRT_FilterRangeSlider = ({ header, table }) => {
1812
1839
  const sliderProps = Object.assign(Object.assign({}, mTableHeadCellFilterTextFieldProps), mcTableHeadCellFilterTextFieldProps);
1813
1840
  let [min, max] = sliderProps.min !== undefined && sliderProps.max !== undefined
1814
1841
  ? [sliderProps.min, sliderProps.max]
1815
- : (_a = column.getFacetedMinMaxValues()) !== null && _a !== void 0 ? _a : [0, 0];
1816
- // column.getFacetedMinMaxValues() seems to return an array of arrays for the min value
1817
- // under some conditions, so check for that and take the first array value if that happens.
1818
- // To be a bit defensive, implement the same check for max, just in case.
1819
- if (Array.isArray(min)) {
1842
+ : (_a = column.getFacetedMinMaxValues()) !== null && _a !== void 0 ? _a : [0, 1];
1843
+ //fix potential TanStack Table bugs where min or max is an array
1844
+ if (Array.isArray(min))
1820
1845
  min = min[0];
1821
- }
1822
- if (Array.isArray(max)) {
1846
+ if (Array.isArray(max))
1823
1847
  max = max[0];
1824
- }
1848
+ if (min === null)
1849
+ min = 0;
1850
+ if (max === null)
1851
+ max = 1;
1825
1852
  const [filterValues, setFilterValues] = react.useState([min, max]);
1826
1853
  const columnFilterValue = column.getFilterValue();
1827
1854
  const isMounted = react.useRef(false);
@@ -1831,20 +1858,23 @@ const MRT_FilterRangeSlider = ({ header, table }) => {
1831
1858
  setFilterValues([min, max]);
1832
1859
  }
1833
1860
  else if (Array.isArray(columnFilterValue)) {
1834
- if (columnFilterValue[0] <= min && columnFilterValue[1] >= max) {
1835
- column.setFilterValue(undefined);
1836
- }
1837
- else {
1838
- setFilterValues(columnFilterValue);
1839
- }
1861
+ setFilterValues(columnFilterValue);
1840
1862
  }
1841
1863
  }
1842
1864
  isMounted.current = true;
1843
- }, [column.getFilterValue()]);
1844
- return (jsxRuntime.jsxs(material.Stack, { children: [jsxRuntime.jsx(material.Slider, Object.assign({ disableSwap: true, min: min, max: max, onChange: (_event, value) => {
1845
- setFilterValues(value);
1865
+ }, [columnFilterValue, min, max]);
1866
+ return (jsxRuntime.jsxs(Stack__default["default"], { children: [jsxRuntime.jsx(Slider__default["default"], Object.assign({ disableSwap: true, min: min, max: max, onChange: (_event, values) => {
1867
+ setFilterValues(values);
1846
1868
  }, onChangeCommitted: (_event, value) => {
1847
- column.setFilterValue(value);
1869
+ if (Array.isArray(value)) {
1870
+ if (value[0] <= min && value[1] >= max) {
1871
+ //if the user has selected the entire range, remove the filter
1872
+ column.setFilterValue(undefined);
1873
+ }
1874
+ else {
1875
+ column.setFilterValue(value);
1876
+ }
1877
+ }
1848
1878
  }, value: filterValues, valueLabelDisplay: "auto" }, sliderProps, { slotProps: {
1849
1879
  input: {
1850
1880
  ref: (node) => {
@@ -1861,7 +1891,7 @@ const MRT_FilterRangeSlider = ({ header, table }) => {
1861
1891
  },
1862
1892
  }, sx: (theme) => (Object.assign({ m: 'auto', mt: !showChangeModeButton ? '10px' : '6px', px: '4px', width: 'calc(100% - 8px)' }, ((sliderProps === null || sliderProps === void 0 ? void 0 : sliderProps.sx) instanceof Function
1863
1893
  ? sliderProps.sx(theme)
1864
- : sliderProps === null || sliderProps === void 0 ? void 0 : sliderProps.sx))) })), showChangeModeButton ? (jsxRuntime.jsx(material.FormHelperText, { sx: {
1894
+ : sliderProps === null || sliderProps === void 0 ? void 0 : sliderProps.sx))) })), showChangeModeButton ? (jsxRuntime.jsx(FormHelperText__default["default"], { sx: {
1865
1895
  m: '-3px -6px',
1866
1896
  fontSize: '0.75rem',
1867
1897
  lineHeight: '0.8rem',
@@ -1882,18 +1912,18 @@ const MRT_TableHeadCellFilterContainer = ({ header, table }) => {
1882
1912
  };
1883
1913
 
1884
1914
  const MRT_TableHeadCellFilterLabel = ({ header, table }) => {
1885
- var _a, _b, _c;
1915
+ var _a, _b, _c, _d;
1886
1916
  const { options: { icons: { FilterAltIcon }, localization, }, refs: { filterInputRefs }, setShowColumnFilters, } = table;
1887
1917
  const { column } = header;
1888
1918
  const { columnDef } = column;
1889
- const isRangeFilter = columnDef.filterVariant === 'range' ||
1919
+ const isRangeFilter = ['range', 'ranger-slider'].includes((_a = columnDef.filterVariant) !== null && _a !== void 0 ? _a : '') ||
1890
1920
  ['between', 'betweenInclusive', 'inNumberRange'].includes(columnDef._filterFn);
1891
1921
  const currentFilterOption = columnDef._filterFn;
1892
1922
  const filterTooltip = localization.filteringByColumn
1893
1923
  .replace('{column}', String(columnDef.header))
1894
1924
  .replace('{filterType}',
1895
1925
  // @ts-ignore
1896
- localization[`filter${((_a = currentFilterOption === null || currentFilterOption === void 0 ? void 0 : currentFilterOption.charAt(0)) === null || _a === void 0 ? void 0 : _a.toUpperCase()) +
1926
+ localization[`filter${((_b = currentFilterOption === null || currentFilterOption === void 0 ? void 0 : currentFilterOption.charAt(0)) === null || _b === void 0 ? void 0 : _b.toUpperCase()) +
1897
1927
  (currentFilterOption === null || currentFilterOption === void 0 ? void 0 : currentFilterOption.slice(1))}`])
1898
1928
  .replace('{filterValue}', `"${Array.isArray(column.getFilterValue())
1899
1929
  ? column.getFilterValue().join(`" ${isRangeFilter ? localization.and : localization.or} "`)
@@ -1901,7 +1931,7 @@ const MRT_TableHeadCellFilterLabel = ({ header, table }) => {
1901
1931
  .replace('" "', '');
1902
1932
  return (jsxRuntime.jsx(Grow__default["default"], { unmountOnExit: true, in: (!!column.getFilterValue() && !isRangeFilter) ||
1903
1933
  (isRangeFilter && // @ts-ignore
1904
- (!!((_b = column.getFilterValue()) === null || _b === void 0 ? void 0 : _b[0]) || !!((_c = column.getFilterValue()) === null || _c === void 0 ? void 0 : _c[1]))), children: jsxRuntime.jsx(Box__default["default"], { component: "span", sx: { flex: '0 0' }, children: jsxRuntime.jsx(Tooltip__default["default"], { arrow: true, placement: "top", title: filterTooltip, children: jsxRuntime.jsx(IconButton__default["default"], { disableRipple: true, onClick: (event) => {
1934
+ (!!((_c = column.getFilterValue()) === null || _c === void 0 ? void 0 : _c[0]) || !!((_d = column.getFilterValue()) === null || _d === void 0 ? void 0 : _d[1]))), children: jsxRuntime.jsx(Box__default["default"], { component: "span", sx: { flex: '0 0' }, children: jsxRuntime.jsx(Tooltip__default["default"], { arrow: true, placement: "top", title: filterTooltip, children: jsxRuntime.jsx(IconButton__default["default"], { disableRipple: true, onClick: (event) => {
1905
1935
  setShowColumnFilters(true);
1906
1936
  queueMicrotask(() => {
1907
1937
  var _a, _b;
@@ -2491,7 +2521,7 @@ const MRT_TableBodyCell = ({ cell, measureElement, numRows, rowIndex, rowRef, ta
2491
2521
  table,
2492
2522
  theme,
2493
2523
  tableCellProps,
2494
- })), draggingBorders)), children: jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [cell.getIsPlaceholder() ? ((_b = (_a = columnDef.PlaceholderCell) === null || _a === void 0 ? void 0 : _a.call(columnDef, { cell, column, row, table })) !== null && _b !== void 0 ? _b : null) : isLoading || showSkeletons ? (jsxRuntime.jsx(Skeleton__default["default"], Object.assign({ animation: "wave", height: 20, width: skeletonWidth }, skeletonProps))) : enableRowNumbers &&
2524
+ })), draggingBorders)), children: jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [cell.getIsPlaceholder() ? ((_b = (_a = columnDef.PlaceholderCell) === null || _a === void 0 ? void 0 : _a.call(columnDef, { cell, column, row, table })) !== null && _b !== void 0 ? _b : null) : (isLoading || showSkeletons) && cell.getValue() === null ? (jsxRuntime.jsx(Skeleton__default["default"], Object.assign({ animation: "wave", height: 20, width: skeletonWidth }, skeletonProps))) : enableRowNumbers &&
2495
2525
  rowNumberMode === 'static' &&
2496
2526
  column.id === 'mrt-row-numbers' ? (rowIndex + 1) : column.id === 'mrt-row-drag' ? (jsxRuntime.jsx(MRT_TableBodyRowGrabHandle, { cell: cell, rowRef: rowRef, table: table })) : columnDefType === 'display' &&
2497
2527
  (column.id === 'mrt-row-select' ||