material-react-table 2.11.3 → 2.12.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/dist/index.js CHANGED
@@ -3,8 +3,8 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var reactTable = require('@tanstack/react-table');
6
- var matchSorterUtils = require('@tanstack/match-sorter-utils');
7
6
  var react = require('react');
7
+ var matchSorterUtils = require('@tanstack/match-sorter-utils');
8
8
  var jsxRuntime = require('react/jsx-runtime');
9
9
  var IconButton = require('@mui/material/IconButton');
10
10
  var Tooltip = require('@mui/material/Tooltip');
@@ -259,6 +259,54 @@ const getDefaultColumnFilterFn = (columnDef) => {
259
259
  return 'equals';
260
260
  return 'fuzzy';
261
261
  };
262
+ const getColumnFilterInfo = ({ header, table, }) => {
263
+ var _a;
264
+ const { options: { columnFilterModeOptions }, } = table;
265
+ const { column } = header;
266
+ const { columnDef } = column;
267
+ const { filterVariant } = columnDef;
268
+ const isDateFilter = !!((filterVariant === null || filterVariant === void 0 ? void 0 : filterVariant.startsWith('date')) || (filterVariant === null || filterVariant === void 0 ? void 0 : filterVariant.startsWith('time')));
269
+ const isAutocompleteFilter = filterVariant === 'autocomplete';
270
+ const isRangeFilter = (filterVariant === null || filterVariant === void 0 ? void 0 : filterVariant.includes('range')) ||
271
+ ['between', 'betweenInclusive', 'inNumberRange'].includes(columnDef._filterFn);
272
+ const isSelectFilter = filterVariant === 'select';
273
+ const isMultiSelectFilter = filterVariant === 'multi-select';
274
+ const isTextboxFilter = ['autocomplete', 'text'].includes(filterVariant) ||
275
+ (!isSelectFilter && !isMultiSelectFilter);
276
+ const currentFilterOption = columnDef._filterFn;
277
+ const allowedColumnFilterOptions = (_a = columnDef === null || columnDef === void 0 ? void 0 : columnDef.columnFilterModeOptions) !== null && _a !== void 0 ? _a : columnFilterModeOptions;
278
+ const facetedUniqueValues = column.getFacetedUniqueValues();
279
+ return {
280
+ allowedColumnFilterOptions,
281
+ currentFilterOption,
282
+ facetedUniqueValues,
283
+ isAutocompleteFilter,
284
+ isDateFilter,
285
+ isMultiSelectFilter,
286
+ isRangeFilter,
287
+ isSelectFilter,
288
+ isTextboxFilter,
289
+ };
290
+ };
291
+ const useDropdownOptions = ({ header, table, }) => {
292
+ const { column } = header;
293
+ const { columnDef } = column;
294
+ const { facetedUniqueValues, isAutocompleteFilter, isMultiSelectFilter, isSelectFilter, } = getColumnFilterInfo({ header, table });
295
+ return react.useMemo(() => {
296
+ var _a;
297
+ return (_a = columnDef.filterSelectOptions) !== null && _a !== void 0 ? _a : ((isSelectFilter || isMultiSelectFilter || isAutocompleteFilter) &&
298
+ facetedUniqueValues
299
+ ? Array.from(facetedUniqueValues.keys())
300
+ .filter((value) => value !== null && value !== undefined)
301
+ .sort((a, b) => a.localeCompare(b))
302
+ : undefined);
303
+ }, [
304
+ columnDef.filterSelectOptions,
305
+ facetedUniqueValues,
306
+ isMultiSelectFilter,
307
+ isSelectFilter,
308
+ ]);
309
+ };
262
310
 
263
311
  const flexRender = reactTable.flexRender;
264
312
  function createMRTColumnHelper() {
@@ -2098,6 +2146,11 @@ const MRT_TableBodyCell = (_a) => {
2098
2146
  setHoveredColumn(columnDef.enableColumnOrdering !== false ? column : null);
2099
2147
  }
2100
2148
  };
2149
+ const handleDragOver = (e) => {
2150
+ if (columnDef.enableColumnOrdering !== false) {
2151
+ e.preventDefault();
2152
+ }
2153
+ };
2101
2154
  const handleContextMenu = (e) => {
2102
2155
  var _a;
2103
2156
  (_a = tableCellProps === null || tableCellProps === void 0 ? void 0 : tableCellProps.onContextMenu) === null || _a === void 0 ? void 0 : _a.call(tableCellProps, e);
@@ -2107,7 +2160,7 @@ const MRT_TableBodyCell = (_a) => {
2107
2160
  table.refs.actionCellRef.current = e.currentTarget;
2108
2161
  }
2109
2162
  };
2110
- return (jsxRuntime.jsx(TableCell__default["default"], Object.assign({ align: theme.direction === 'rtl' ? 'right' : 'left', "data-index": staticColumnIndex, "data-pinned": !!isColumnPinned || undefined }, tableCellProps, { onContextMenu: handleContextMenu, onDoubleClick: handleDoubleClick, onDragEnter: handleDragEnter, sx: (theme) => (Object.assign(Object.assign({ '&:hover': {
2163
+ return (jsxRuntime.jsx(TableCell__default["default"], Object.assign({ align: theme.direction === 'rtl' ? 'right' : 'left', "data-index": staticColumnIndex, "data-pinned": !!isColumnPinned || undefined }, tableCellProps, { onContextMenu: handleContextMenu, onDoubleClick: handleDoubleClick, onDragEnter: handleDragEnter, onDragOver: handleDragOver, sx: (theme) => (Object.assign(Object.assign({ '&:hover': {
2111
2164
  outline: (actionCell === null || actionCell === void 0 ? void 0 : actionCell.id) === cell.id ||
2112
2165
  (editDisplayMode === 'cell' && isEditable) ||
2113
2166
  (editDisplayMode === 'table' && (isCreating || isEditing))
@@ -2152,7 +2205,7 @@ const Memo_MRT_TableBodyCell = react.memo(MRT_TableBodyCell, (prev, next) => nex
2152
2205
 
2153
2206
  const MRT_TableDetailPanel = (_a) => {
2154
2207
  var { parentRowRef, row, rowVirtualizer, staticRowIndex, table, virtualRow } = _a, rest = __rest(_a, ["parentRowRef", "row", "rowVirtualizer", "staticRowIndex", "table", "virtualRow"]);
2155
- const { getState, getVisibleLeafColumns, options: { enableRowVirtualization, layoutMode, mrtTheme: { baseBackgroundColor }, muiDetailPanelProps, muiTableBodyRowProps, renderDetailPanel, }, } = table;
2208
+ const { getState, getVisibleLeafColumns, options: { layoutMode, mrtTheme: { baseBackgroundColor }, muiDetailPanelProps, muiTableBodyRowProps, renderDetailPanel, }, } = table;
2156
2209
  const { isLoading } = getState();
2157
2210
  const tableRowProps = parseFromValuesOrFunc(muiTableBodyRowProps, {
2158
2211
  isDetailPanel: true,
@@ -2177,9 +2230,7 @@ const MRT_TableDetailPanel = (_a) => {
2177
2230
  : undefined, transform: virtualRow
2178
2231
  ? `translateY(${virtualRow === null || virtualRow === void 0 ? void 0 : virtualRow.start}px)`
2179
2232
  : undefined, width: '100%' }, parseFromValuesOrFunc(tableRowProps === null || tableRowProps === void 0 ? void 0 : tableRowProps.sx, theme)));
2180
- }, children: jsxRuntime.jsx(TableCell__default["default"], Object.assign({ className: "Mui-TableBodyCell-DetailPanel", colSpan: getVisibleLeafColumns().length }, tableCellProps, { sx: (theme) => (Object.assign({ backgroundColor: virtualRow ? baseBackgroundColor : undefined, borderBottom: !row.getIsExpanded() ? 'none' : undefined, display: (layoutMode === null || layoutMode === void 0 ? void 0 : layoutMode.startsWith('grid')) ? 'flex' : undefined, py: !!DetailPanel && row.getIsExpanded() ? '1rem' : 0, transition: !enableRowVirtualization
2181
- ? 'all 150ms ease-in-out'
2182
- : undefined, width: `100%` }, parseFromValuesOrFunc(tableCellProps === null || tableCellProps === void 0 ? void 0 : tableCellProps.sx, theme))), children: enableRowVirtualization ? (row.getIsExpanded() && DetailPanel) : (jsxRuntime.jsx(Collapse__default["default"], { in: row.getIsExpanded(), mountOnEnter: true, unmountOnExit: true, children: DetailPanel })) })) })));
2233
+ }, children: jsxRuntime.jsx(TableCell__default["default"], Object.assign({ className: "Mui-TableBodyCell-DetailPanel", colSpan: getVisibleLeafColumns().length }, tableCellProps, { sx: (theme) => (Object.assign({ backgroundColor: virtualRow ? baseBackgroundColor : undefined, borderBottom: !row.getIsExpanded() ? 'none' : undefined, display: (layoutMode === null || layoutMode === void 0 ? void 0 : layoutMode.startsWith('grid')) ? 'flex' : undefined, py: !!DetailPanel && row.getIsExpanded() ? '1rem' : 0, transition: !virtualRow ? 'all 150ms ease-in-out' : undefined, width: `100%` }, parseFromValuesOrFunc(tableCellProps === null || tableCellProps === void 0 ? void 0 : tableCellProps.sx, theme))), children: virtualRow ? (row.getIsExpanded() && DetailPanel) : (jsxRuntime.jsx(Collapse__default["default"], { in: row.getIsExpanded(), mountOnEnter: true, unmountOnExit: true, children: DetailPanel })) })) })));
2183
2234
  };
2184
2235
 
2185
2236
  const MRT_TableBodyRow = (_a) => {
@@ -2225,6 +2276,9 @@ const MRT_TableBodyRow = (_a) => {
2225
2276
  setHoveredRow(row);
2226
2277
  }
2227
2278
  };
2279
+ const handleDragOver = (e) => {
2280
+ e.preventDefault();
2281
+ };
2228
2282
  const rowRef = react.useRef(null);
2229
2283
  const cellHighlightColor = isRowSelected
2230
2284
  ? selectedRowBackgroundColor
@@ -2238,7 +2292,7 @@ const MRT_TableBodyRow = (_a) => {
2238
2292
  ? `${styles.lighten(baseBackgroundColor, 0.3)}`
2239
2293
  : `${styles.darken(baseBackgroundColor, 0.3)}`
2240
2294
  : undefined;
2241
- return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsxs(TableRow__default["default"], Object.assign({ "data-index": renderDetailPanel ? staticRowIndex * 2 : staticRowIndex, "data-pinned": !!isRowPinned || undefined, "data-selected": isRowSelected || undefined, onDragEnter: handleDragEnter, ref: (node) => {
2295
+ return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsxs(TableRow__default["default"], Object.assign({ "data-index": renderDetailPanel ? staticRowIndex * 2 : staticRowIndex, "data-pinned": !!isRowPinned || undefined, "data-selected": isRowSelected || undefined, onDragEnter: handleDragEnter, onDragOver: handleDragOver, ref: (node) => {
2242
2296
  if (node) {
2243
2297
  rowRef.current = node;
2244
2298
  rowVirtualizer === null || rowVirtualizer === void 0 ? void 0 : rowVirtualizer.measureElement(node);
@@ -2833,9 +2887,9 @@ const MRT_FilterCheckbox = (_a) => {
2833
2887
  };
2834
2888
 
2835
2889
  const MRT_FilterTextField = (_a) => {
2836
- var _b, _c, _d, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u;
2890
+ var _b, _c, _d, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;
2837
2891
  var { header, rangeFilterIndex, table } = _a, rest = __rest(_a, ["header", "rangeFilterIndex", "table"]);
2838
- const { options: { columnFilterModeOptions, enableColumnFilterModes, icons: { CloseIcon, FilterListIcon }, localization, manualFiltering, muiFilterAutocompleteProps, muiFilterDatePickerProps, muiFilterDateTimePickerProps, muiFilterTextFieldProps, muiFilterTimePickerProps, }, refs: { filterInputRefs }, setColumnFilterFns, } = table;
2892
+ const { options: { enableColumnFilterModes, icons: { CloseIcon, FilterListIcon }, localization, manualFiltering, muiFilterAutocompleteProps, muiFilterDatePickerProps, muiFilterDateTimePickerProps, muiFilterTextFieldProps, muiFilterTimePickerProps, }, refs: { filterInputRefs }, setColumnFilterFns, } = table;
2839
2893
  const { column } = header;
2840
2894
  const { columnDef } = column;
2841
2895
  const { filterVariant } = columnDef;
@@ -2859,14 +2913,8 @@ const MRT_FilterTextField = (_a) => {
2859
2913
  column,
2860
2914
  table,
2861
2915
  }));
2862
- const isDateFilter = (filterVariant === null || filterVariant === void 0 ? void 0 : filterVariant.startsWith('date')) || (filterVariant === null || filterVariant === void 0 ? void 0 : filterVariant.startsWith('time'));
2863
- const isAutocompleteFilter = filterVariant === 'autocomplete';
2864
- const isRangeFilter = (filterVariant === null || filterVariant === void 0 ? void 0 : filterVariant.includes('range')) || rangeFilterIndex !== undefined;
2865
- const isSelectFilter = filterVariant === 'select';
2866
- const isMultiSelectFilter = filterVariant === 'multi-select';
2867
- const isTextboxFilter = ['autocomplete', 'text'].includes(filterVariant) ||
2868
- (!isSelectFilter && !isMultiSelectFilter);
2869
- const currentFilterOption = columnDef._filterFn;
2916
+ const { allowedColumnFilterOptions, currentFilterOption, facetedUniqueValues, isAutocompleteFilter, isDateFilter, isMultiSelectFilter, isRangeFilter, isSelectFilter, isTextboxFilter, } = getColumnFilterInfo({ header, table });
2917
+ const dropdownOptions = useDropdownOptions({ header, table });
2870
2918
  const filterChipLabel = ['empty', 'notEmpty'].includes(currentFilterOption)
2871
2919
  ? //@ts-ignore
2872
2920
  localization[`filter${((_c = (_b = currentFilterOption === null || currentFilterOption === void 0 ? void 0 : currentFilterOption.charAt) === null || _b === void 0 ? void 0 : _b.call(currentFilterOption, 0)) === null || _c === void 0 ? void 0 : _c.toUpperCase()) +
@@ -2879,13 +2927,11 @@ const MRT_FilterTextField = (_a) => {
2879
2927
  : rangeFilterIndex === 1
2880
2928
  ? localization.max
2881
2929
  : '';
2882
- const allowedColumnFilterOptions = (_g = columnDef === null || columnDef === void 0 ? void 0 : columnDef.columnFilterModeOptions) !== null && _g !== void 0 ? _g : columnFilterModeOptions;
2883
- const showChangeModeButton = enableColumnFilterModes &&
2930
+ const showChangeModeButton = !!(enableColumnFilterModes &&
2884
2931
  columnDef.enableColumnFilterModes !== false &&
2885
2932
  !rangeFilterIndex &&
2886
2933
  (allowedColumnFilterOptions === undefined ||
2887
- !!(allowedColumnFilterOptions === null || allowedColumnFilterOptions === void 0 ? void 0 : allowedColumnFilterOptions.length));
2888
- const facetedUniqueValues = column.getFacetedUniqueValues();
2934
+ !!(allowedColumnFilterOptions === null || allowedColumnFilterOptions === void 0 ? void 0 : allowedColumnFilterOptions.length)));
2889
2935
  const [anchorEl, setAnchorEl] = react.useState(null);
2890
2936
  const [filterValue, setFilterValue] = react.useState(() => {
2891
2937
  var _a, _b;
@@ -2972,23 +3018,9 @@ const MRT_FilterTextField = (_a) => {
2972
3018
  isMounted.current = true;
2973
3019
  }, [column.getFilterValue()]);
2974
3020
  if (columnDef.Filter) {
2975
- return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: (_h = columnDef.Filter) === null || _h === void 0 ? void 0 : _h.call(columnDef, { column, header, rangeFilterIndex, table }) }));
3021
+ return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: (_g = columnDef.Filter) === null || _g === void 0 ? void 0 : _g.call(columnDef, { column, header, rangeFilterIndex, table }) }));
2976
3022
  }
2977
- const dropdownOptions = react.useMemo(() => {
2978
- var _a;
2979
- return (_a = columnDef.filterSelectOptions) !== null && _a !== void 0 ? _a : ((isSelectFilter || isMultiSelectFilter || isAutocompleteFilter) &&
2980
- facetedUniqueValues
2981
- ? Array.from(facetedUniqueValues.keys())
2982
- .filter((value) => value !== null && value !== undefined)
2983
- .sort((a, b) => a.localeCompare(b))
2984
- : undefined);
2985
- }, [
2986
- columnDef.filterSelectOptions,
2987
- facetedUniqueValues,
2988
- isMultiSelectFilter,
2989
- isSelectFilter,
2990
- ]);
2991
- const endAdornment = !isAutocompleteFilter && !isDateFilter && !filterChipLabel ? (jsxRuntime.jsx(InputAdornment__default["default"], { position: "end", sx: { mr: isSelectFilter || isMultiSelectFilter ? '20px' : undefined }, children: jsxRuntime.jsx(Tooltip__default["default"], { placement: "right", title: (_j = localization.clearFilter) !== null && _j !== void 0 ? _j : '', children: jsxRuntime.jsx("span", { children: jsxRuntime.jsx(IconButton__default["default"], { "aria-label": localization.clearFilter, disabled: !((_k = filterValue === null || filterValue === void 0 ? void 0 : filterValue.toString()) === null || _k === void 0 ? void 0 : _k.length), onClick: handleClear, size: "small", sx: {
3023
+ const endAdornment = !isAutocompleteFilter && !isDateFilter && !filterChipLabel ? (jsxRuntime.jsx(InputAdornment__default["default"], { position: "end", sx: { mr: isSelectFilter || isMultiSelectFilter ? '20px' : undefined }, children: jsxRuntime.jsx(Tooltip__default["default"], { placement: "right", title: (_h = localization.clearFilter) !== null && _h !== void 0 ? _h : '', children: jsxRuntime.jsx("span", { children: jsxRuntime.jsx(IconButton__default["default"], { "aria-label": localization.clearFilter, disabled: !((_j = filterValue === null || filterValue === void 0 ? void 0 : filterValue.toString()) === null || _j === void 0 ? void 0 : _j.length), onClick: handleClear, size: "small", sx: {
2992
3024
  height: '2rem',
2993
3025
  transform: 'scale(0.9)',
2994
3026
  width: '2rem',
@@ -3004,7 +3036,7 @@ const MRT_FilterTextField = (_a) => {
3004
3036
  ? { endAdornment, startAdornment }
3005
3037
  : { startAdornment }, fullWidth: true, helperText: showChangeModeButton ? (jsxRuntime.jsx("label", { children: localization.filterMode.replace('{filterType}',
3006
3038
  // @ts-ignore
3007
- localization[`filter${((_l = currentFilterOption === null || currentFilterOption === void 0 ? void 0 : currentFilterOption.charAt(0)) === null || _l === void 0 ? void 0 : _l.toUpperCase()) +
3039
+ localization[`filter${((_k = currentFilterOption === null || currentFilterOption === void 0 ? void 0 : currentFilterOption.charAt(0)) === null || _k === void 0 ? void 0 : _k.toUpperCase()) +
3008
3040
  (currentFilterOption === null || currentFilterOption === void 0 ? void 0 : currentFilterOption.slice(1))}`]) })) : null, inputProps: {
3009
3041
  'aria-label': filterPlaceholder,
3010
3042
  autoComplete: 'new-password', // disable autocomplete and autofill
@@ -3038,15 +3070,15 @@ const MRT_FilterTextField = (_a) => {
3038
3070
  value: filterValue || null,
3039
3071
  };
3040
3072
  return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [(filterVariant === null || filterVariant === void 0 ? void 0 : filterVariant.startsWith('time')) ? (jsxRuntime.jsx(TimePicker.TimePicker, Object.assign({}, commonDatePickerProps, timePickerProps, { slotProps: {
3041
- field: Object.assign({ clearable: true, onClear: () => handleClear() }, (_m = timePickerProps === null || timePickerProps === void 0 ? void 0 : timePickerProps.slotProps) === null || _m === void 0 ? void 0 : _m.field),
3042
- textField: Object.assign(Object.assign({}, commonTextFieldProps), (_o = timePickerProps === null || timePickerProps === void 0 ? void 0 : timePickerProps.slotProps) === null || _o === void 0 ? void 0 : _o.textField),
3073
+ field: Object.assign({ clearable: true, onClear: () => handleClear() }, (_l = timePickerProps === null || timePickerProps === void 0 ? void 0 : timePickerProps.slotProps) === null || _l === void 0 ? void 0 : _l.field),
3074
+ textField: Object.assign(Object.assign({}, commonTextFieldProps), (_m = timePickerProps === null || timePickerProps === void 0 ? void 0 : timePickerProps.slotProps) === null || _m === void 0 ? void 0 : _m.textField),
3043
3075
  } }))) : (filterVariant === null || filterVariant === void 0 ? void 0 : filterVariant.startsWith('datetime')) ? (jsxRuntime.jsx(DateTimePicker.DateTimePicker, Object.assign({}, commonDatePickerProps, dateTimePickerProps, { slotProps: {
3044
- field: Object.assign({ clearable: true, onClear: () => handleClear() }, (_p = dateTimePickerProps === null || dateTimePickerProps === void 0 ? void 0 : dateTimePickerProps.slotProps) === null || _p === void 0 ? void 0 : _p.field),
3045
- textField: Object.assign(Object.assign({}, commonTextFieldProps), (_q = dateTimePickerProps === null || dateTimePickerProps === void 0 ? void 0 : dateTimePickerProps.slotProps) === null || _q === void 0 ? void 0 : _q.textField),
3076
+ field: Object.assign({ clearable: true, onClear: () => handleClear() }, (_o = dateTimePickerProps === null || dateTimePickerProps === void 0 ? void 0 : dateTimePickerProps.slotProps) === null || _o === void 0 ? void 0 : _o.field),
3077
+ textField: Object.assign(Object.assign({}, commonTextFieldProps), (_p = dateTimePickerProps === null || dateTimePickerProps === void 0 ? void 0 : dateTimePickerProps.slotProps) === null || _p === void 0 ? void 0 : _p.textField),
3046
3078
  } }))) : (filterVariant === null || filterVariant === void 0 ? void 0 : filterVariant.startsWith('date')) ? (jsxRuntime.jsx(DatePicker.DatePicker, Object.assign({}, commonDatePickerProps, datePickerProps, { slotProps: {
3047
- field: Object.assign({ clearable: true, onClear: () => handleClear() }, (_r = datePickerProps === null || datePickerProps === void 0 ? void 0 : datePickerProps.slotProps) === null || _r === void 0 ? void 0 : _r.field),
3048
- textField: Object.assign(Object.assign({}, commonTextFieldProps), (_s = datePickerProps === null || datePickerProps === void 0 ? void 0 : datePickerProps.slotProps) === null || _s === void 0 ? void 0 : _s.textField),
3049
- } }))) : isAutocompleteFilter ? (jsxRuntime.jsx(Autocomplete__default["default"], Object.assign({ freeSolo: true, getOptionLabel: (option) => getValueAndLabel(option).label, onChange: (_e, newValue) => handleAutocompleteChange(newValue), options: (_t = dropdownOptions === null || dropdownOptions === void 0 ? void 0 : dropdownOptions.map((option) => getValueAndLabel(option))) !== null && _t !== void 0 ? _t : [] }, autocompleteProps, { renderInput: (builtinTextFieldProps) => {
3079
+ field: Object.assign({ clearable: true, onClear: () => handleClear() }, (_q = datePickerProps === null || datePickerProps === void 0 ? void 0 : datePickerProps.slotProps) === null || _q === void 0 ? void 0 : _q.field),
3080
+ textField: Object.assign(Object.assign({}, commonTextFieldProps), (_r = datePickerProps === null || datePickerProps === void 0 ? void 0 : datePickerProps.slotProps) === null || _r === void 0 ? void 0 : _r.textField),
3081
+ } }))) : isAutocompleteFilter ? (jsxRuntime.jsx(Autocomplete__default["default"], Object.assign({ freeSolo: true, getOptionLabel: (option) => getValueAndLabel(option).label, onChange: (_e, newValue) => handleAutocompleteChange(newValue), options: (_s = dropdownOptions === null || dropdownOptions === void 0 ? void 0 : dropdownOptions.map((option) => getValueAndLabel(option))) !== null && _s !== void 0 ? _s : [] }, autocompleteProps, { renderInput: (builtinTextFieldProps) => {
3050
3082
  var _a;
3051
3083
  return (jsxRuntime.jsx(TextField__default["default"], Object.assign({}, builtinTextFieldProps, commonTextFieldProps, { InputProps: Object.assign(Object.assign({}, builtinTextFieldProps.InputProps), { startAdornment: (_a = commonTextFieldProps === null || commonTextFieldProps === void 0 ? void 0 : commonTextFieldProps.InputProps) === null || _a === void 0 ? void 0 : _a.startAdornment }), inputProps: Object.assign(Object.assign({}, builtinTextFieldProps.inputProps), commonTextFieldProps === null || commonTextFieldProps === void 0 ? void 0 : commonTextFieldProps.inputProps), onChange: handleTextFieldChange, onClick: (e) => e.stopPropagation() })));
3052
3084
  }, value: autocompleteValue }))) : (jsxRuntime.jsx(TextField__default["default"], Object.assign({ select: isSelectFilter || isMultiSelectFilter }, commonTextFieldProps, { SelectProps: Object.assign({ MenuProps: { disableScrollLock: true }, displayEmpty: true, multiple: isMultiSelectFilter, renderValue: isMultiSelectFilter
@@ -3057,7 +3089,7 @@ const MRT_FilterTextField = (_a) => {
3057
3089
  : undefined }, commonTextFieldProps.SelectProps), onChange: handleTextFieldChange, onClick: (e) => e.stopPropagation(), value: filterValue !== null && filterValue !== void 0 ? filterValue : '', children: (isSelectFilter || isMultiSelectFilter) && [
3058
3090
  jsxRuntime.jsx(MenuItem__default["default"], { disabled: true, divider: true, hidden: true, value: "", children: jsxRuntime.jsx(Box__default["default"], { sx: { opacity: 0.5 }, children: filterPlaceholder }) }, "p"),
3059
3091
  ...[
3060
- (_u = textFieldProps.children) !== null && _u !== void 0 ? _u : dropdownOptions === null || dropdownOptions === void 0 ? void 0 : dropdownOptions.map((option, index) => {
3092
+ (_t = textFieldProps.children) !== null && _t !== void 0 ? _t : dropdownOptions === null || dropdownOptions === void 0 ? void 0 : dropdownOptions.map((option, index) => {
3061
3093
  var _a;
3062
3094
  const { label, value } = getValueAndLabel(option);
3063
3095
  return (jsxRuntime.jsxs(MenuItem__default["default"], { sx: {
@@ -3074,7 +3106,7 @@ const MRT_FilterTextField = (_a) => {
3074
3106
 
3075
3107
  const MRT_FilterRangeFields = (_a) => {
3076
3108
  var { header, table } = _a, rest = __rest(_a, ["header", "table"]);
3077
- return (jsxRuntime.jsxs(Box__default["default"], Object.assign({}, rest, { sx: (theme) => (Object.assign({ display: 'grid', gap: '1rem', gridTemplateColumns: '1fr 1fr' }, parseFromValuesOrFunc(rest === null || rest === void 0 ? void 0 : rest.sx, theme))), children: [jsxRuntime.jsx(MRT_FilterTextField, { header: header, rangeFilterIndex: 0, table: table }), jsxRuntime.jsx(MRT_FilterTextField, { header: header, rangeFilterIndex: 1, table: table })] })));
3109
+ return (jsxRuntime.jsx(Box__default["default"], Object.assign({}, rest, { sx: (theme) => (Object.assign({ display: 'grid', gap: '1rem', gridTemplateColumns: '1fr 1fr' }, parseFromValuesOrFunc(rest === null || rest === void 0 ? void 0 : rest.sx, theme))), children: [0, 1].map((rangeFilterIndex) => (jsxRuntime.jsx(MRT_FilterTextField, { header: header, rangeFilterIndex: rangeFilterIndex, table: table }, rangeFilterIndex))) })));
3078
3110
  };
3079
3111
 
3080
3112
  const MRT_FilterRangeSlider = (_a) => {
@@ -3150,41 +3182,45 @@ const MRT_FilterRangeSlider = (_a) => {
3150
3182
  };
3151
3183
 
3152
3184
  const MRT_TableHeadCellFilterContainer = (_a) => {
3153
- var _b;
3154
3185
  var { header, table } = _a, rest = __rest(_a, ["header", "table"]);
3155
3186
  const { getState, options: { columnFilterDisplayMode }, } = table;
3156
3187
  const { showColumnFilters } = getState();
3157
3188
  const { column } = header;
3158
3189
  const { columnDef } = column;
3159
- return (jsxRuntime.jsx(Collapse__default["default"], Object.assign({ in: showColumnFilters || columnFilterDisplayMode === 'popover', mountOnEnter: true, unmountOnExit: true }, rest, { children: columnDef.filterVariant === 'checkbox' ? (jsxRuntime.jsx(MRT_FilterCheckbox, { column: column, table: table })) : columnDef.filterVariant === 'range-slider' ? (jsxRuntime.jsx(MRT_FilterRangeSlider, { header: header, table: table })) : ((_b = columnDef.filterVariant) === null || _b === void 0 ? void 0 : _b.includes('range')) ||
3160
- ['between', 'betweenInclusive', 'inNumberRange'].includes(columnDef._filterFn) ? (jsxRuntime.jsx(MRT_FilterRangeFields, { header: header, table: table })) : (jsxRuntime.jsx(MRT_FilterTextField, { header: header, table: table })) })));
3190
+ const { isRangeFilter } = getColumnFilterInfo({ header, table });
3191
+ return (jsxRuntime.jsx(Collapse__default["default"], Object.assign({ in: showColumnFilters || columnFilterDisplayMode === 'popover', mountOnEnter: true, unmountOnExit: true }, rest, { children: columnDef.filterVariant === 'checkbox' ? (jsxRuntime.jsx(MRT_FilterCheckbox, { column: column, table: table })) : columnDef.filterVariant === 'range-slider' ? (jsxRuntime.jsx(MRT_FilterRangeSlider, { header: header, table: table })) : isRangeFilter ? (jsxRuntime.jsx(MRT_FilterRangeFields, { header: header, table: table })) : (jsxRuntime.jsx(MRT_FilterTextField, { header: header, table: table })) })));
3161
3192
  };
3162
3193
 
3163
3194
  const MRT_TableHeadCellFilterLabel = (_a) => {
3164
- var _b, _c, _d;
3195
+ var _b, _c;
3165
3196
  var { header, table } = _a, rest = __rest(_a, ["header", "table"]);
3166
3197
  const { options: { columnFilterDisplayMode, icons: { FilterAltIcon }, localization, }, refs: { filterInputRefs }, setShowColumnFilters, } = table;
3167
3198
  const { column } = header;
3168
3199
  const { columnDef } = column;
3169
3200
  const filterValue = column.getFilterValue();
3170
3201
  const [anchorEl, setAnchorEl] = react.useState(null);
3202
+ const { currentFilterOption, isMultiSelectFilter, isRangeFilter, isSelectFilter, } = getColumnFilterInfo({ header, table });
3203
+ const dropdownOptions = useDropdownOptions({ header, table });
3204
+ const getSelectLabel = (index) => getValueAndLabel(dropdownOptions === null || dropdownOptions === void 0 ? void 0 : dropdownOptions.find((option) => getValueAndLabel(option).value ===
3205
+ (index !== undefined ? filterValue[index] : filterValue))).label;
3171
3206
  const isFilterActive = (Array.isArray(filterValue) && filterValue.some(Boolean)) ||
3172
3207
  (!!filterValue && !Array.isArray(filterValue));
3173
- const isRangeFilter = ((_b = columnDef.filterVariant) === null || _b === void 0 ? void 0 : _b.includes('range')) ||
3174
- ['between', 'betweenInclusive', 'inNumberRange'].includes(columnDef._filterFn);
3175
- const currentFilterOption = columnDef._filterFn;
3176
3208
  const filterTooltip = columnFilterDisplayMode === 'popover' && !isFilterActive
3177
- ? (_c = localization.filterByColumn) === null || _c === void 0 ? void 0 : _c.replace('{column}', String(columnDef.header))
3209
+ ? (_b = localization.filterByColumn) === null || _b === void 0 ? void 0 : _b.replace('{column}', String(columnDef.header))
3178
3210
  : localization.filteringByColumn
3179
3211
  .replace('{column}', String(columnDef.header))
3180
3212
  .replace('{filterType}', currentFilterOption
3181
3213
  ? // @ts-ignore
3182
- localization[`filter${((_d = currentFilterOption === null || currentFilterOption === void 0 ? void 0 : currentFilterOption.charAt(0)) === null || _d === void 0 ? void 0 : _d.toUpperCase()) +
3214
+ localization[`filter${((_c = currentFilterOption === null || currentFilterOption === void 0 ? void 0 : currentFilterOption.charAt(0)) === null || _c === void 0 ? void 0 : _c.toUpperCase()) +
3183
3215
  (currentFilterOption === null || currentFilterOption === void 0 ? void 0 : currentFilterOption.slice(1))}`]
3184
3216
  : '')
3185
3217
  .replace('{filterValue}', `"${Array.isArray(filterValue)
3186
- ? filterValue.join(`" ${isRangeFilter ? localization.and : localization.or} "`)
3187
- : filterValue}"`)
3218
+ ? filterValue
3219
+ .map((value, index) => isMultiSelectFilter ? getSelectLabel(index) : value)
3220
+ .join(`" ${isRangeFilter ? localization.and : localization.or} "`)
3221
+ : isSelectFilter
3222
+ ? getSelectLabel()
3223
+ : filterValue}"`)
3188
3224
  .replace('" "', '');
3189
3225
  return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(Grow__default["default"], { in: columnFilterDisplayMode === 'popover' ||
3190
3226
  (!!filterValue && !isRangeFilter) ||
@@ -3202,7 +3238,7 @@ const MRT_TableHeadCellFilterLabel = (_a) => {
3202
3238
  (_d = (_c = filterInputRefs.current[`${column.id}-0`]) === null || _c === void 0 ? void 0 : _c.select) === null || _d === void 0 ? void 0 : _d.call(_c);
3203
3239
  });
3204
3240
  event.stopPropagation();
3205
- }, size: "small" }, rest, { sx: (theme) => (Object.assign({ height: '16px', ml: '4px', opacity: isFilterActive ? 1 : 0.3, p: '8px', transform: 'scale(0.75)', transition: 'all 150ms ease-in-out', width: '16px' }, parseFromValuesOrFunc(rest === null || rest === void 0 ? void 0 : rest.sx, theme))), children: jsxRuntime.jsx(FilterAltIcon, {}) })) }) }) }), jsxRuntime.jsx(Popover__default["default"], { anchorEl: anchorEl, anchorOrigin: {
3241
+ }, size: "small" }, rest, { sx: (theme) => (Object.assign({ height: '16px', ml: '4px', opacity: isFilterActive ? 1 : 0.3, p: '8px', transform: 'scale(0.75)', transition: 'all 150ms ease-in-out', width: '16px' }, parseFromValuesOrFunc(rest === null || rest === void 0 ? void 0 : rest.sx, theme))), children: jsxRuntime.jsx(FilterAltIcon, {}) })) }) }) }), columnFilterDisplayMode === 'popover' && (jsxRuntime.jsx(Popover__default["default"], { anchorEl: anchorEl, anchorOrigin: {
3206
3242
  horizontal: 'center',
3207
3243
  vertical: 'top',
3208
3244
  }, disableScrollLock: true, onClick: (event) => event.stopPropagation(), onClose: (event) => {
@@ -3212,7 +3248,7 @@ const MRT_TableHeadCellFilterLabel = (_a) => {
3212
3248
  }, onKeyDown: (event) => event.key === 'Enter' && setAnchorEl(null), open: !!anchorEl, slotProps: { paper: { sx: { overflow: 'visible' } } }, transformOrigin: {
3213
3249
  horizontal: 'center',
3214
3250
  vertical: 'bottom',
3215
- }, children: jsxRuntime.jsx(Box__default["default"], { sx: { p: '1rem' }, children: jsxRuntime.jsx(MRT_TableHeadCellFilterContainer, { header: header, table: table }) }) })] }));
3251
+ }, children: jsxRuntime.jsx(Box__default["default"], { sx: { p: '1rem' }, children: jsxRuntime.jsx(MRT_TableHeadCellFilterContainer, { header: header, table: table }) }) }))] }));
3216
3252
  };
3217
3253
 
3218
3254
  const MRT_TableHeadCellGrabHandle = (_a) => {
@@ -3392,6 +3428,11 @@ const MRT_TableHeadCell = (_a) => {
3392
3428
  setHoveredColumn(columnDef.enableColumnOrdering !== false ? column : null);
3393
3429
  }
3394
3430
  };
3431
+ const handleDragOver = (e) => {
3432
+ if (columnDef.enableColumnOrdering !== false) {
3433
+ e.preventDefault();
3434
+ }
3435
+ };
3395
3436
  const HeaderElement = (_b = parseFromValuesOrFunc(columnDef.Header, {
3396
3437
  column,
3397
3438
  header,
@@ -3401,7 +3442,7 @@ const MRT_TableHeadCell = (_a) => {
3401
3442
  ? 'center'
3402
3443
  : theme.direction === 'rtl'
3403
3444
  ? 'right'
3404
- : 'left', colSpan: header.colSpan, "data-index": staticColumnIndex, "data-pinned": !!isColumnPinned || undefined, onDragEnter: handleDragEnter, ref: (node) => {
3445
+ : 'left', colSpan: header.colSpan, "data-index": staticColumnIndex, "data-pinned": !!isColumnPinned || undefined, onDragEnter: handleDragEnter, onDragOver: handleDragOver, ref: (node) => {
3405
3446
  var _a;
3406
3447
  if (node) {
3407
3448
  tableHeadCellRefs.current[column.id] = node;
@@ -3544,7 +3585,7 @@ const MRT_ToolbarAlertBanner = (_a) => {
3544
3585
 
3545
3586
  const MRT_TableHead = (_a) => {
3546
3587
  var { columnVirtualizer, table } = _a, rest = __rest(_a, ["columnVirtualizer", "table"]);
3547
- const { getHeaderGroups, getSelectedRowModel, getState, options: { enableStickyHeader, layoutMode, muiTableHeadProps, positionToolbarAlertBanner, }, refs: { tableHeadRef }, } = table;
3588
+ const { getState, options: { enableStickyHeader, layoutMode, muiTableHeadProps, positionToolbarAlertBanner, }, refs: { tableHeadRef }, } = table;
3548
3589
  const { isFullScreen, showAlertBanner } = getState();
3549
3590
  const tableHeadProps = Object.assign(Object.assign({}, parseFromValuesOrFunc(muiTableHeadProps, { table })), rest);
3550
3591
  const stickyHeader = enableStickyHeader || isFullScreen;
@@ -3555,12 +3596,14 @@ const MRT_TableHead = (_a) => {
3555
3596
  tableHeadProps.ref.current = ref;
3556
3597
  }
3557
3598
  }, sx: (theme) => (Object.assign({ display: (layoutMode === null || layoutMode === void 0 ? void 0 : layoutMode.startsWith('grid')) ? 'grid' : undefined, opacity: 0.97, position: stickyHeader ? 'sticky' : 'relative', top: stickyHeader && (layoutMode === null || layoutMode === void 0 ? void 0 : layoutMode.startsWith('grid')) ? 0 : undefined, zIndex: stickyHeader ? 2 : undefined }, parseFromValuesOrFunc(tableHeadProps === null || tableHeadProps === void 0 ? void 0 : tableHeadProps.sx, theme))), children: positionToolbarAlertBanner === 'head-overlay' &&
3558
- (showAlertBanner || getSelectedRowModel().rows.length > 0) ? (jsxRuntime.jsx("tr", { style: {
3599
+ (showAlertBanner || table.getSelectedRowModel().rows.length > 0) ? (jsxRuntime.jsx("tr", { style: {
3559
3600
  display: (layoutMode === null || layoutMode === void 0 ? void 0 : layoutMode.startsWith('grid')) ? 'grid' : undefined,
3560
3601
  }, children: jsxRuntime.jsx("th", { colSpan: table.getVisibleLeafColumns().length, style: {
3561
3602
  display: (layoutMode === null || layoutMode === void 0 ? void 0 : layoutMode.startsWith('grid')) ? 'grid' : undefined,
3562
3603
  padding: 0,
3563
- }, children: jsxRuntime.jsx(MRT_ToolbarAlertBanner, { table: table }) }) })) : (getHeaderGroups().map((headerGroup) => (jsxRuntime.jsx(MRT_TableHeadRow, { columnVirtualizer: columnVirtualizer, headerGroup: headerGroup, table: table }, headerGroup.id)))) })));
3604
+ }, children: jsxRuntime.jsx(MRT_ToolbarAlertBanner, { table: table }) }) })) : (table
3605
+ .getHeaderGroups()
3606
+ .map((headerGroup) => (jsxRuntime.jsx(MRT_TableHeadRow, { columnVirtualizer: columnVirtualizer, headerGroup: headerGroup, table: table }, headerGroup.id)))) })));
3564
3607
  };
3565
3608
 
3566
3609
  const MRT_Table = (_a) => {
@@ -3809,6 +3852,9 @@ const MRT_ToolbarDropZone = (_a) => {
3809
3852
  const handleDragEnter = (_event) => {
3810
3853
  setHoveredColumn({ id: 'drop-zone' });
3811
3854
  };
3855
+ const handleDragOver = (e) => {
3856
+ e.preventDefault();
3857
+ };
3812
3858
  react.useEffect(() => {
3813
3859
  var _a;
3814
3860
  if (((_a = table.options.state) === null || _a === void 0 ? void 0 : _a.showToolbarDropZone) !== undefined) {
@@ -3818,7 +3864,7 @@ const MRT_ToolbarDropZone = (_a) => {
3818
3864
  !grouping.includes(draggingColumn.id));
3819
3865
  }
3820
3866
  }, [enableGrouping, draggingColumn, grouping]);
3821
- return (jsxRuntime.jsx(Fade__default["default"], { in: showToolbarDropZone, children: jsxRuntime.jsx(Box__default["default"], Object.assign({ className: "Mui-ToolbarDropZone", onDragEnter: handleDragEnter }, rest, { sx: (theme) => (Object.assign({ alignItems: 'center', backdropFilter: 'blur(4px)', backgroundColor: styles.alpha(theme.palette.info.main, (hoveredColumn === null || hoveredColumn === void 0 ? void 0 : hoveredColumn.id) === 'drop-zone' ? 0.2 : 0.1), border: `dashed ${theme.palette.info.main} 2px`, boxSizing: 'border-box', display: 'flex', height: '100%', justifyContent: 'center', position: 'absolute', width: '100%', zIndex: 4 }, parseFromValuesOrFunc(rest === null || rest === void 0 ? void 0 : rest.sx, theme))), children: jsxRuntime.jsx(Typography__default["default"], { fontStyle: "italic", children: localization.dropToGroupBy.replace('{column}', (_c = (_b = draggingColumn === null || draggingColumn === void 0 ? void 0 : draggingColumn.columnDef) === null || _b === void 0 ? void 0 : _b.header) !== null && _c !== void 0 ? _c : '') }) })) }));
3867
+ return (jsxRuntime.jsx(Fade__default["default"], { in: showToolbarDropZone, children: jsxRuntime.jsx(Box__default["default"], Object.assign({ className: "Mui-ToolbarDropZone", onDragEnter: handleDragEnter, onDragOver: handleDragOver }, rest, { sx: (theme) => (Object.assign({ alignItems: 'center', backdropFilter: 'blur(4px)', backgroundColor: styles.alpha(theme.palette.info.main, (hoveredColumn === null || hoveredColumn === void 0 ? void 0 : hoveredColumn.id) === 'drop-zone' ? 0.2 : 0.1), border: `dashed ${theme.palette.info.main} 2px`, boxSizing: 'border-box', display: 'flex', height: '100%', justifyContent: 'center', position: 'absolute', width: '100%', zIndex: 4 }, parseFromValuesOrFunc(rest === null || rest === void 0 ? void 0 : rest.sx, theme))), children: jsxRuntime.jsx(Typography__default["default"], { fontStyle: "italic", children: localization.dropToGroupBy.replace('{column}', (_c = (_b = draggingColumn === null || draggingColumn === void 0 ? void 0 : draggingColumn.columnDef) === null || _b === void 0 ? void 0 : _b.header) !== null && _c !== void 0 ? _c : '') }) })) }));
3822
3868
  };
3823
3869
 
3824
3870
  const MRT_BottomToolbar = (_a) => {
@@ -4163,16 +4209,16 @@ const MRT_TablePaper = (_a) => {
4163
4209
  }, style: Object.assign(Object.assign({}, (isFullScreen
4164
4210
  ? {
4165
4211
  bottom: 0,
4166
- height: '100vh',
4212
+ height: '100dvh',
4167
4213
  left: 0,
4168
4214
  margin: 0,
4169
- maxHeight: '100vh',
4170
- maxWidth: '100vw',
4215
+ maxHeight: '100dvh',
4216
+ maxWidth: '100dvw',
4171
4217
  padding: 0,
4172
4218
  position: 'fixed',
4173
4219
  right: 0,
4174
4220
  top: 0,
4175
- width: '100vw',
4221
+ width: '100dvw',
4176
4222
  zIndex: 999,
4177
4223
  }
4178
4224
  : {})), paperProps === null || paperProps === void 0 ? void 0 : paperProps.style), sx: (theme) => (Object.assign({ backgroundColor: baseBackgroundColor, backgroundImage: 'unset', overflow: 'hidden', transition: 'all 100ms ease-in-out' }, parseFromValuesOrFunc(paperProps === null || paperProps === void 0 ? void 0 : paperProps.sx, theme))), children: [enableTopToolbar &&
@@ -4264,6 +4310,7 @@ exports.defaultDisplayColumnProps = defaultDisplayColumnProps;
4264
4310
  exports.flexRender = flexRender;
4265
4311
  exports.getAllLeafColumnDefs = getAllLeafColumnDefs;
4266
4312
  exports.getCanRankRows = getCanRankRows;
4313
+ exports.getColumnFilterInfo = getColumnFilterInfo;
4267
4314
  exports.getColumnId = getColumnId;
4268
4315
  exports.getDefaultColumnFilterFn = getDefaultColumnFilterFn;
4269
4316
  exports.getDefaultColumnOrderIds = getDefaultColumnOrderIds;
@@ -4287,6 +4334,7 @@ exports.showRowNumbersColumn = showRowNumbersColumn;
4287
4334
  exports.showRowPinningColumn = showRowPinningColumn;
4288
4335
  exports.showRowSelectionColumn = showRowSelectionColumn;
4289
4336
  exports.showRowSpacerColumn = showRowSpacerColumn;
4337
+ exports.useDropdownOptions = useDropdownOptions;
4290
4338
  exports.useMRT_ColumnVirtualizer = useMRT_ColumnVirtualizer;
4291
4339
  exports.useMRT_Effects = useMRT_Effects;
4292
4340
  exports.useMRT_RowVirtualizer = useMRT_RowVirtualizer;