material-react-table 2.0.0-alpha.2 → 2.0.0-alpha.3

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/cjs/index.js CHANGED
@@ -30,9 +30,11 @@ var ListItemIcon = require('@mui/material/ListItemIcon');
30
30
  var Menu = require('@mui/material/Menu');
31
31
  var Checkbox = require('@mui/material/Checkbox');
32
32
  var FormControlLabel = require('@mui/material/FormControlLabel');
33
+ var Autocomplete = require('@mui/material/Autocomplete');
33
34
  var Chip = require('@mui/material/Chip');
34
35
  var InputAdornment = require('@mui/material/InputAdornment');
35
36
  var utils = require('@mui/material/utils');
37
+ var DatePicker = require('@mui/x-date-pickers/DatePicker');
36
38
  var FormHelperText = require('@mui/material/FormHelperText');
37
39
  var Slider = require('@mui/material/Slider');
38
40
  var Stack = require('@mui/material/Stack');
@@ -108,6 +110,7 @@ var ListItemIcon__default = /*#__PURE__*/_interopDefaultLegacy(ListItemIcon);
108
110
  var Menu__default = /*#__PURE__*/_interopDefaultLegacy(Menu);
109
111
  var Checkbox__default = /*#__PURE__*/_interopDefaultLegacy(Checkbox);
110
112
  var FormControlLabel__default = /*#__PURE__*/_interopDefaultLegacy(FormControlLabel);
113
+ var Autocomplete__default = /*#__PURE__*/_interopDefaultLegacy(Autocomplete);
111
114
  var Chip__default = /*#__PURE__*/_interopDefaultLegacy(Chip);
112
115
  var InputAdornment__default = /*#__PURE__*/_interopDefaultLegacy(InputAdornment);
113
116
  var FormHelperText__default = /*#__PURE__*/_interopDefaultLegacy(FormHelperText);
@@ -346,10 +349,10 @@ const getDefaultColumnOrderIds = (props) => {
346
349
  return [...leadingDisplayCols, ...allLeafColumnDefs, ...trailingDisplayCols];
347
350
  };
348
351
  const getDefaultColumnFilterFn = (columnDef) => {
352
+ var _a;
349
353
  if (columnDef.filterVariant === 'multi-select')
350
354
  return 'arrIncludesSome';
351
- if (columnDef.filterVariant === 'range' ||
352
- columnDef.filterVariant === 'range-slider')
355
+ if ((_a = columnDef.filterVariant) === null || _a === void 0 ? void 0 : _a.includes('range'))
353
356
  return 'betweenInclusive';
354
357
  if (columnDef.filterVariant === 'select' ||
355
358
  columnDef.filterVariant === 'checkbox')
@@ -1217,7 +1220,7 @@ const MRT_FilterOptionMenu = ({ anchorEl, header, onSelect, setAnchorEl, setFilt
1217
1220
  globalFilterModeOptions.includes(filterOption.option)) &&
1218
1221
  ['contains', 'fuzzy', 'startsWith'].includes(filterOption.option)), []);
1219
1222
  const handleSelectFilterMode = (option) => {
1220
- var _a;
1223
+ var _a, _b;
1221
1224
  const prevFilterMode = (_a = columnDef === null || columnDef === void 0 ? void 0 : columnDef._filterFn) !== null && _a !== void 0 ? _a : '';
1222
1225
  if (!header || !column) {
1223
1226
  // global filter mode
@@ -1249,7 +1252,7 @@ const MRT_FilterOptionMenu = ({ anchorEl, header, onSelect, setAnchorEl, setFilt
1249
1252
  column.setFilterValue(currentFilterValue); // perform new filter render
1250
1253
  }
1251
1254
  }
1252
- else if ((columnDef === null || columnDef === void 0 ? void 0 : columnDef.filterVariant) === 'range' ||
1255
+ else if (((_b = columnDef === null || columnDef === void 0 ? void 0 : columnDef.filterVariant) === null || _b === void 0 ? void 0 : _b.includes('range')) ||
1253
1256
  rangeModes.includes(option)) {
1254
1257
  // will now be range filter mode
1255
1258
  if (!Array.isArray(currentFilterValue) ||
@@ -1316,7 +1319,7 @@ const commonListItemStyles = {
1316
1319
  };
1317
1320
  const MRT_ColumnActionMenu = ({ anchorEl, header, setAnchorEl, table, }) => {
1318
1321
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
1319
- const { getState, options: { columnFilterModeOptions, enableColumnFilterModes, enableColumnFilters, enableColumnPinning, enableColumnResizing, enableGrouping, enableHiding, enableSorting, enableSortingRemoval, icons: { ArrowRightIcon, ClearAllIcon, DynamicFeedIcon, FilterListIcon, FilterListOffIcon, PushPinIcon, RestartAltIcon, SortIcon, ViewColumnIcon, VisibilityOffIcon, }, localization, renderColumnActionsMenuItems, }, refs: { filterInputRefs }, setColumnOrder, setColumnSizingInfo, setShowColumnFilters, toggleAllColumnsVisible, } = table;
1322
+ const { getState, options: { columnFilterDisplayMode, columnFilterModeOptions, enableColumnFilterModes, enableColumnFilters, enableColumnPinning, enableColumnResizing, enableGrouping, enableHiding, enableSorting, enableSortingRemoval, icons: { ArrowRightIcon, ClearAllIcon, DynamicFeedIcon, FilterListIcon, FilterListOffIcon, PushPinIcon, RestartAltIcon, SortIcon, ViewColumnIcon, VisibilityOffIcon, }, localization, renderColumnActionsMenuItems, }, refs: { filterInputRefs }, setColumnOrder, setColumnSizingInfo, setShowColumnFilters, toggleAllColumnsVisible, } = table;
1320
1323
  const { column } = header;
1321
1324
  const { columnDef } = column;
1322
1325
  const { columnSizing, columnVisibility, density, showColumnFilters } = getState();
@@ -1389,11 +1392,11 @@ const MRT_ColumnActionMenu = ({ anchorEl, header, setAnchorEl, table, }) => {
1389
1392
  jsxRuntime.jsx(MenuItem__default["default"], { disabled: !columnFilterValue ||
1390
1393
  (Array.isArray(columnFilterValue) &&
1391
1394
  !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),
1392
- jsxRuntime.jsxs(MenuItem__default["default"], { disabled: showColumnFilters && !enableColumnFilterModes, divider: enableGrouping || enableHiding, onClick: showColumnFilters
1395
+ columnFilterDisplayMode === 'subheader' && (jsxRuntime.jsxs(MenuItem__default["default"], { disabled: showColumnFilters && !enableColumnFilterModes, divider: enableGrouping || enableHiding, onClick: showColumnFilters
1393
1396
  ? handleOpenFilterModeMenu
1394
- : 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),
1397
+ : 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)),
1395
1398
  showFilterModeSubMenu && (jsxRuntime.jsx(MRT_FilterOptionMenu, { anchorEl: filterMenuAnchorEl, header: header, onSelect: handleFilterByColumn, setAnchorEl: setFilterMenuAnchorEl, table: table }, 5)),
1396
- ]
1399
+ ].filter(Boolean)
1397
1400
  : []),
1398
1401
  ...(enableGrouping && column.getCanGroup()
1399
1402
  ? [
@@ -1487,18 +1490,29 @@ const MRT_FilterCheckbox = ({ column, table, }) => {
1487
1490
  };
1488
1491
 
1489
1492
  const MRT_FilterTextField = ({ header, rangeFilterIndex, table, }) => {
1490
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
1491
- const { options: { columnFilterModeOptions, enableColumnFilterModes, icons: { CloseIcon, FilterListIcon }, localization, manualFiltering, muiFilterTextFieldProps, }, refs: { filterInputRefs }, setColumnFilterFns, } = table;
1493
+ var _a, _b, _c, _d, _f, _g, _h, _j, _k, _l, _m, _o;
1494
+ const { options: { columnFilterModeOptions, enableColumnFilterModes, icons: { CloseIcon, FilterListIcon }, localization, manualFiltering, muiFilterAutocompleteProps, muiFilterDatePickerProps, muiFilterTextFieldProps, }, refs: { filterInputRefs }, setColumnFilterFns, } = table;
1492
1495
  const { column } = header;
1493
1496
  const { columnDef } = column;
1497
+ const { filterVariant } = columnDef;
1494
1498
  const textFieldProps = Object.assign(Object.assign({}, parseFromValuesOrFunc(muiFilterTextFieldProps, { column, table })), parseFromValuesOrFunc(columnDef.muiFilterTextFieldProps, {
1495
1499
  column,
1496
1500
  table,
1497
1501
  }));
1498
- const isRangeFilter = columnDef.filterVariant === 'range' || rangeFilterIndex !== undefined;
1499
- const isSelectFilter = columnDef.filterVariant === 'select';
1500
- const isMultiSelectFilter = columnDef.filterVariant === 'multi-select';
1501
- const isTextboxFilter = columnDef.filterVariant === 'text' ||
1502
+ const autocompleteProps = Object.assign(Object.assign({}, parseFromValuesOrFunc(muiFilterAutocompleteProps, { column, table })), parseFromValuesOrFunc(columnDef.muiFilterAutocompleteProps, {
1503
+ column,
1504
+ table,
1505
+ }));
1506
+ const datePickerProps = Object.assign(Object.assign({}, parseFromValuesOrFunc(muiFilterDatePickerProps, { column, table })), parseFromValuesOrFunc(columnDef.muiFilterDatePickerProps, {
1507
+ column,
1508
+ table,
1509
+ }));
1510
+ const isDateFilter = filterVariant === null || filterVariant === void 0 ? void 0 : filterVariant.startsWith('date');
1511
+ const isAutocompleteFilter = filterVariant === 'autocomplete';
1512
+ const isRangeFilter = (filterVariant === null || filterVariant === void 0 ? void 0 : filterVariant.includes('range')) || rangeFilterIndex !== undefined;
1513
+ const isSelectFilter = filterVariant === 'select';
1514
+ const isMultiSelectFilter = filterVariant === 'multi-select';
1515
+ const isTextboxFilter = ['autocomplete', 'text'].includes(filterVariant) ||
1502
1516
  (!isSelectFilter && !isMultiSelectFilter);
1503
1517
  const currentFilterOption = columnDef._filterFn;
1504
1518
  const filterChipLabel = ['empty', 'notEmpty'].includes(currentFilterOption)
@@ -1513,55 +1527,48 @@ const MRT_FilterTextField = ({ header, rangeFilterIndex, table, }) => {
1513
1527
  : rangeFilterIndex === 1
1514
1528
  ? localization.max
1515
1529
  : '';
1516
- const allowedColumnFilterOptions = (_e = columnDef === null || columnDef === void 0 ? void 0 : columnDef.columnFilterModeOptions) !== null && _e !== void 0 ? _e : columnFilterModeOptions;
1530
+ const allowedColumnFilterOptions = (_f = columnDef === null || columnDef === void 0 ? void 0 : columnDef.columnFilterModeOptions) !== null && _f !== void 0 ? _f : columnFilterModeOptions;
1517
1531
  const showChangeModeButton = enableColumnFilterModes &&
1518
1532
  columnDef.enableColumnFilterModes !== false &&
1519
1533
  !rangeFilterIndex &&
1520
1534
  (allowedColumnFilterOptions === undefined ||
1521
1535
  !!(allowedColumnFilterOptions === null || allowedColumnFilterOptions === void 0 ? void 0 : allowedColumnFilterOptions.length));
1522
1536
  const facetedUniqueValues = column.getFacetedUniqueValues();
1523
- const filterSelectOptions = react.useMemo(() => {
1524
- var _a;
1525
- return (_a = columnDef.filterSelectOptions) !== null && _a !== void 0 ? _a : ((isSelectFilter || isMultiSelectFilter) && facetedUniqueValues
1526
- ? Array.from(facetedUniqueValues.keys())
1527
- .filter((value) => value !== null && value !== undefined)
1528
- .sort((a, b) => a.localeCompare(b))
1529
- : undefined);
1530
- }, [
1531
- columnDef.filterSelectOptions,
1532
- facetedUniqueValues,
1533
- isMultiSelectFilter,
1534
- isSelectFilter,
1535
- ]);
1536
1537
  const [anchorEl, setAnchorEl] = react.useState(null);
1537
1538
  const [filterValue, setFilterValue] = react.useState(() => {
1538
1539
  var _a, _b;
1539
1540
  return isMultiSelectFilter
1540
1541
  ? column.getFilterValue() || []
1541
1542
  : isRangeFilter
1542
- ? ((_a = column.getFilterValue()) === null || _a === void 0 ? void 0 : _a[rangeFilterIndex]) || []
1543
+ ? ((_a = column.getFilterValue()) === null || _a === void 0 ? void 0 : _a[rangeFilterIndex]) || ''
1543
1544
  : (_b = column.getFilterValue()) !== null && _b !== void 0 ? _b : '';
1544
1545
  });
1545
- const handleChangeDebounced = react.useCallback(utils.debounce((event) => {
1546
- const value = textFieldProps.type === 'date'
1547
- ? event.target.valueAsDate
1548
- : textFieldProps.type === 'number'
1549
- ? event.target.valueAsNumber
1550
- : event.target.value;
1546
+ const handleChangeDebounced = react.useCallback(utils.debounce((newValue) => {
1551
1547
  if (isRangeFilter) {
1552
1548
  column.setFilterValue((old) => {
1553
1549
  const newFilterValues = old !== null && old !== void 0 ? old : ['', ''];
1554
- newFilterValues[rangeFilterIndex] = value;
1550
+ newFilterValues[rangeFilterIndex] = newValue;
1555
1551
  return newFilterValues;
1556
1552
  });
1557
1553
  }
1558
1554
  else {
1559
- column.setFilterValue(value !== null && value !== void 0 ? value : undefined);
1555
+ column.setFilterValue(newValue !== null && newValue !== void 0 ? newValue : undefined);
1560
1556
  }
1561
1557
  }, isTextboxFilter ? (manualFiltering ? 400 : 200) : 1), []);
1562
- const handleChange = (event) => {
1563
- setFilterValue(event.target.value);
1564
- handleChangeDebounced(event);
1558
+ const handleChange = (newValue) => {
1559
+ var _a;
1560
+ setFilterValue((_a = newValue === null || newValue === void 0 ? void 0 : newValue.toString()) !== null && _a !== void 0 ? _a : '');
1561
+ handleChangeDebounced(newValue);
1562
+ };
1563
+ const handleTextFieldChange = (event) => {
1564
+ var _a;
1565
+ const newValue = textFieldProps.type === 'date'
1566
+ ? event.target.valueAsDate
1567
+ : textFieldProps.type === 'number'
1568
+ ? event.target.valueAsNumber
1569
+ : event.target.value;
1570
+ handleChange(newValue);
1571
+ (_a = textFieldProps === null || textFieldProps === void 0 ? void 0 : textFieldProps.onChange) === null || _a === void 0 ? void 0 : _a.call(textFieldProps, event);
1565
1572
  };
1566
1573
  const handleClear = () => {
1567
1574
  if (isMultiSelectFilter) {
@@ -1609,26 +1616,76 @@ const MRT_FilterTextField = ({ header, rangeFilterIndex, table, }) => {
1609
1616
  isMounted.current = true;
1610
1617
  }, [column.getFilterValue()]);
1611
1618
  if (columnDef.Filter) {
1612
- return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: (_f = columnDef.Filter) === null || _f === void 0 ? void 0 : _f.call(columnDef, { column, header, rangeFilterIndex, table }) }));
1619
+ return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: (_g = columnDef.Filter) === null || _g === void 0 ? void 0 : _g.call(columnDef, { column, header, rangeFilterIndex, table }) }));
1613
1620
  }
1614
- return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsxs(TextField__default["default"], Object.assign({ FormHelperTextProps: {
1615
- sx: {
1616
- fontSize: '0.75rem',
1617
- lineHeight: '0.8rem',
1618
- whiteSpace: 'nowrap',
1619
- },
1620
- }, InputProps: {
1621
- endAdornment: !filterChipLabel && (jsxRuntime.jsx(InputAdornment__default["default"], { position: "end", children: jsxRuntime.jsx(Tooltip__default["default"], { arrow: true, placement: "right", title: (_g = localization.clearFilter) !== null && _g !== void 0 ? _g : '', children: jsxRuntime.jsx("span", { children: jsxRuntime.jsx(IconButton__default["default"], { "aria-label": localization.clearFilter, disabled: !((_h = filterValue === null || filterValue === void 0 ? void 0 : filterValue.toString()) === null || _h === void 0 ? void 0 : _h.length), onClick: handleClear, size: "small", sx: {
1622
- height: '1.75rem',
1623
- width: '1.75rem',
1624
- }, children: jsxRuntime.jsx(CloseIcon, {}) }) }) }) })),
1625
- startAdornment: showChangeModeButton ? (jsxRuntime.jsxs(InputAdornment__default["default"], { position: "start", children: [jsxRuntime.jsx(Tooltip__default["default"], { arrow: true, title: localization.changeFilterMode, children: jsxRuntime.jsx("span", { children: jsxRuntime.jsx(IconButton__default["default"], { "aria-label": localization.changeFilterMode, onClick: handleFilterMenuOpen, size: "small", sx: { height: '1.75rem', width: '1.75rem' }, children: jsxRuntime.jsx(FilterListIcon, {}) }) }) }), filterChipLabel && (jsxRuntime.jsx(Chip__default["default"], { label: filterChipLabel, onDelete: handleClearEmptyFilterChip }))] })) : null,
1626
- }, SelectProps: {
1621
+ const dropdownOptions = react.useMemo(() => {
1622
+ var _a;
1623
+ return (_a = columnDef.filterSelectOptions) !== null && _a !== void 0 ? _a : ((isSelectFilter || isMultiSelectFilter || isAutocompleteFilter) &&
1624
+ facetedUniqueValues
1625
+ ? Array.from(facetedUniqueValues.keys())
1626
+ .filter((value) => value !== null && value !== undefined)
1627
+ .sort((a, b) => a.localeCompare(b))
1628
+ : undefined);
1629
+ }, [
1630
+ columnDef.filterSelectOptions,
1631
+ facetedUniqueValues,
1632
+ isMultiSelectFilter,
1633
+ isSelectFilter,
1634
+ ]);
1635
+ const endAdornment = !isAutocompleteFilter && !isDateFilter && !filterChipLabel ? (jsxRuntime.jsx(InputAdornment__default["default"], { position: "end", sx: { mr: isSelectFilter || isMultiSelectFilter ? '20px' : undefined }, children: jsxRuntime.jsx(Tooltip__default["default"], { arrow: true, 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: {
1636
+ height: '2rem',
1637
+ transform: 'scale(0.9)',
1638
+ width: '2rem'
1639
+ }, children: jsxRuntime.jsx(CloseIcon, {}) }) }) }) })) : null;
1640
+ const startAdornment = showChangeModeButton ? (jsxRuntime.jsxs(InputAdornment__default["default"], { position: "start", children: [jsxRuntime.jsx(Tooltip__default["default"], { arrow: true, title: localization.changeFilterMode, children: jsxRuntime.jsx("span", { children: jsxRuntime.jsx(IconButton__default["default"], { "aria-label": localization.changeFilterMode, onClick: handleFilterMenuOpen, size: "small", sx: { height: '1.75rem', width: '1.75rem' }, children: jsxRuntime.jsx(FilterListIcon, {}) }) }) }), filterChipLabel && (jsxRuntime.jsx(Chip__default["default"], { label: filterChipLabel, onDelete: handleClearEmptyFilterChip }))] })) : null;
1641
+ const commonTextFieldProps = Object.assign(Object.assign({ FormHelperTextProps: {
1642
+ sx: {
1643
+ fontSize: '0.75rem',
1644
+ lineHeight: '0.8rem',
1645
+ whiteSpace: 'nowrap',
1646
+ },
1647
+ }, InputProps: endAdornment //hack because mui looks for presense of endAdornment key instead of undefined
1648
+ ? { endAdornment, startAdornment }
1649
+ : { startAdornment }, fullWidth: true, helperText: showChangeModeButton ? (jsxRuntime.jsx("label", { children: localization.filterMode.replace('{filterType}',
1650
+ // @ts-ignore
1651
+ localization[`filter${((_k = currentFilterOption === null || currentFilterOption === void 0 ? void 0 : currentFilterOption.charAt(0)) === null || _k === void 0 ? void 0 : _k.toUpperCase()) +
1652
+ (currentFilterOption === null || currentFilterOption === void 0 ? void 0 : currentFilterOption.slice(1))}`]) })) : null, inputProps: {
1653
+ autoComplete: 'new-password',
1654
+ disabled: !!filterChipLabel,
1655
+ sx: {
1656
+ textOverflow: 'ellipsis',
1657
+ width: filterChipLabel ? 0 : undefined,
1658
+ },
1659
+ title: filterPlaceholder,
1660
+ }, inputRef: (inputRef) => {
1661
+ filterInputRefs.current[`${column.id}-${rangeFilterIndex !== null && rangeFilterIndex !== void 0 ? rangeFilterIndex : 0}`] =
1662
+ inputRef;
1663
+ if (textFieldProps.inputRef) {
1664
+ textFieldProps.inputRef = inputRef;
1665
+ }
1666
+ }, margin: 'none', onClick: (e) => e.stopPropagation(), placeholder: filterChipLabel || isSelectFilter || isMultiSelectFilter
1667
+ ? undefined
1668
+ : filterPlaceholder, variant: 'standard' }, textFieldProps), { sx: (theme) => (Object.assign({ minWidth: isDateFilter
1669
+ ? '160px'
1670
+ : isRangeFilter
1671
+ ? '100px'
1672
+ : !filterChipLabel
1673
+ ? '120px'
1674
+ : 'auto', mx: '-2px', p: 0, width: 'calc(100% + 4px)' }, parseFromValuesOrFunc(textFieldProps === null || textFieldProps === void 0 ? void 0 : textFieldProps.sx, theme))) });
1675
+ return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [isDateFilter ? (jsxRuntime.jsx(DatePicker.DatePicker, Object.assign({ onChange: (newDate) => {
1676
+ handleChange(newDate);
1677
+ }, value: filterValue || null }, datePickerProps, { slotProps: {
1678
+ field: Object.assign({ clearable: true, onClear: () => handleClear() }, (_l = datePickerProps === null || datePickerProps === void 0 ? void 0 : datePickerProps.slotProps) === null || _l === void 0 ? void 0 : _l.field),
1679
+ textField: Object.assign(Object.assign({}, commonTextFieldProps), (_m = datePickerProps === null || datePickerProps === void 0 ? void 0 : datePickerProps.slotProps) === null || _m === void 0 ? void 0 : _m.textField),
1680
+ } }))) : isAutocompleteFilter ? (jsxRuntime.jsx(Autocomplete__default["default"], Object.assign({ getOptionLabel: (option) => option, onChange: (_e, newValue) => handleChange(newValue), options: dropdownOptions !== null && dropdownOptions !== void 0 ? dropdownOptions : [] }, autocompleteProps, { renderInput: (builtinTextFieldProps) => {
1681
+ var _a;
1682
+ 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 })));
1683
+ }, value: filterValue }))) : (jsxRuntime.jsx(TextField__default["default"], Object.assign({ SelectProps: {
1627
1684
  displayEmpty: true,
1628
1685
  multiple: isMultiSelectFilter,
1629
1686
  renderValue: isMultiSelectFilter
1630
1687
  ? (selected) => !(selected === null || selected === void 0 ? void 0 : selected.length) ? (jsxRuntime.jsx(Box__default["default"], { sx: { opacity: 0.5 }, children: filterPlaceholder })) : (jsxRuntime.jsx(Box__default["default"], { sx: { display: 'flex', flexWrap: 'wrap', gap: '2px' }, children: selected === null || selected === void 0 ? void 0 : selected.map((value) => {
1631
- const selectedValue = filterSelectOptions === null || filterSelectOptions === void 0 ? void 0 : filterSelectOptions.find((option) => option instanceof Object
1688
+ const selectedValue = dropdownOptions === null || dropdownOptions === void 0 ? void 0 : dropdownOptions.find((option) => option instanceof Object
1632
1689
  ? option.value === value
1633
1690
  : option === value);
1634
1691
  return (jsxRuntime.jsx(Chip__default["default"], { label: selectedValue instanceof Object
@@ -1636,52 +1693,33 @@ const MRT_FilterTextField = ({ header, rangeFilterIndex, table, }) => {
1636
1693
  : selectedValue }, value));
1637
1694
  }) }))
1638
1695
  : undefined,
1639
- }, fullWidth: true, helperText: showChangeModeButton ? (jsxRuntime.jsx("label", { children: localization.filterMode.replace('{filterType}',
1640
- // @ts-ignore
1641
- localization[`filter${((_j = currentFilterOption === null || currentFilterOption === void 0 ? void 0 : currentFilterOption.charAt(0)) === null || _j === void 0 ? void 0 : _j.toUpperCase()) +
1642
- (currentFilterOption === null || currentFilterOption === void 0 ? void 0 : currentFilterOption.slice(1))}`]) })) : null, inputProps: {
1643
- disabled: !!filterChipLabel,
1644
- sx: {
1645
- textOverflow: 'ellipsis',
1646
- width: filterChipLabel ? 0 : undefined,
1647
- },
1648
- title: filterPlaceholder,
1649
- }, margin: "none", onChange: handleChange, onClick: (e) => e.stopPropagation(), placeholder: filterChipLabel || isSelectFilter || isMultiSelectFilter
1650
- ? undefined
1651
- : filterPlaceholder, select: isSelectFilter || isMultiSelectFilter, value: filterValue !== null && filterValue !== void 0 ? filterValue : '', variant: "standard" }, textFieldProps, { inputRef: (inputRef) => {
1652
- filterInputRefs.current[`${column.id}-${rangeFilterIndex !== null && rangeFilterIndex !== void 0 ? rangeFilterIndex : 0}`] =
1653
- inputRef;
1654
- if (textFieldProps.inputRef) {
1655
- textFieldProps.inputRef = inputRef;
1656
- }
1657
- }, sx: (theme) => (Object.assign({ '& .MuiSelect-icon': {
1658
- mr: '1.5rem',
1659
- }, minWidth: isRangeFilter
1660
- ? '100px'
1661
- : !filterChipLabel
1662
- ? '120px'
1663
- : 'auto', mx: '-2px', p: 0, width: 'calc(100% + 4px)' }, parseFromValuesOrFunc(textFieldProps === null || textFieldProps === void 0 ? void 0 : textFieldProps.sx, theme))), children: [(isSelectFilter || isMultiSelectFilter) && (jsxRuntime.jsx(MenuItem__default["default"], { disabled: true, divider: 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) => {
1664
- var _a;
1665
- if (!option)
1666
- return '';
1667
- let value;
1668
- let text;
1669
- if (typeof option !== 'object') {
1670
- value = option;
1671
- text = option;
1672
- }
1673
- else {
1674
- value = option.value;
1675
- text = option.text;
1676
- }
1677
- return (jsxRuntime.jsxs(MenuItem__default["default"], { sx: {
1678
- alignItems: 'center',
1679
- display: 'flex',
1680
- gap: '0.5rem',
1681
- m: 0,
1682
- }, value: value, children: [isMultiSelectFilter && (jsxRuntime.jsx(Checkbox__default["default"], { checked: ((_a = column.getFilterValue()) !== null && _a !== void 0 ? _a : []).includes(value), sx: { mr: '0.5rem' } })), text, ' ', !columnDef.filterSelectOptions &&
1683
- `(${facetedUniqueValues.get(value)})`] }, value));
1684
- })] })), jsxRuntime.jsx(MRT_FilterOptionMenu, { anchorEl: anchorEl, header: header, setAnchorEl: setAnchorEl, setFilterValue: setFilterValue, table: table })] }));
1696
+ }, onChange: handleTextFieldChange, select: isSelectFilter || isMultiSelectFilter }, commonTextFieldProps, { value: filterValue !== null && filterValue !== void 0 ? filterValue : '', children: (isSelectFilter || isMultiSelectFilter) && [
1697
+ 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"),
1698
+ ...[
1699
+ (_o = textFieldProps.children) !== null && _o !== void 0 ? _o : dropdownOptions === null || dropdownOptions === void 0 ? void 0 : dropdownOptions.map((option, index) => {
1700
+ var _a;
1701
+ if (!option)
1702
+ return '';
1703
+ let value;
1704
+ let text;
1705
+ if (typeof option !== 'object') {
1706
+ value = option;
1707
+ text = option;
1708
+ }
1709
+ else {
1710
+ value = option.value;
1711
+ text = option.text;
1712
+ }
1713
+ return (jsxRuntime.jsxs(MenuItem__default["default"], { sx: {
1714
+ alignItems: 'center',
1715
+ display: 'flex',
1716
+ gap: '0.5rem',
1717
+ m: 0,
1718
+ }, value: value, children: [isMultiSelectFilter && (jsxRuntime.jsx(Checkbox__default["default"], { checked: ((_a = column.getFilterValue()) !== null && _a !== void 0 ? _a : []).includes(value), sx: { mr: '0.5rem' } })), text, ' ', !columnDef.filterSelectOptions &&
1719
+ `(${facetedUniqueValues.get(value)})`] }, `${index}-${value}`));
1720
+ }),
1721
+ ],
1722
+ ] }))), jsxRuntime.jsx(MRT_FilterOptionMenu, { anchorEl: anchorEl, header: header, setAnchorEl: setAnchorEl, setFilterValue: setFilterValue, table: table })] }));
1685
1723
  };
1686
1724
 
1687
1725
  const MRT_FilterRangeFields = ({ header, table, }) => {
@@ -1760,16 +1798,17 @@ const MRT_FilterRangeSlider = ({ header, table, }) => {
1760
1798
  };
1761
1799
 
1762
1800
  const MRT_TableHeadCellFilterContainer = ({ header, table, }) => {
1801
+ var _a;
1763
1802
  const { getState, options: { columnFilterDisplayMode }, } = table;
1764
1803
  const { showColumnFilters } = getState();
1765
1804
  const { column } = header;
1766
1805
  const { columnDef } = column;
1767
- return (jsxRuntime.jsx(Collapse__default["default"], { in: showColumnFilters || columnFilterDisplayMode === 'popover', mountOnEnter: true, unmountOnExit: true, children: columnDef.filterVariant === 'checkbox' ? (jsxRuntime.jsx(MRT_FilterCheckbox, { column: column, table: table })) : columnDef.filterVariant === 'range-slider' ? (jsxRuntime.jsx(MRT_FilterRangeSlider, { header: header, table: table })) : columnDef.filterVariant === 'range' ||
1806
+ return (jsxRuntime.jsx(Collapse__default["default"], { in: showColumnFilters || columnFilterDisplayMode === 'popover', mountOnEnter: true, unmountOnExit: true, children: columnDef.filterVariant === 'checkbox' ? (jsxRuntime.jsx(MRT_FilterCheckbox, { column: column, table: table })) : columnDef.filterVariant === 'range-slider' ? (jsxRuntime.jsx(MRT_FilterRangeSlider, { header: header, table: table })) : ((_a = columnDef.filterVariant) === null || _a === void 0 ? void 0 : _a.includes('range')) ||
1768
1807
  ['between', 'betweenInclusive', 'inNumberRange'].includes(columnDef._filterFn) ? (jsxRuntime.jsx(MRT_FilterRangeFields, { header: header, table: table })) : (jsxRuntime.jsx(MRT_FilterTextField, { header: header, table: table })) }));
1769
1808
  };
1770
1809
 
1771
1810
  const MRT_TableHeadCellFilterLabel = ({ header, table, }) => {
1772
- var _a, _b, _c, _d;
1811
+ var _a, _b, _c;
1773
1812
  const { options: { columnFilterDisplayMode, icons: { FilterAltIcon }, localization, }, refs: { filterInputRefs }, setShowColumnFilters, } = table;
1774
1813
  const { column } = header;
1775
1814
  const { columnDef } = column;
@@ -1777,26 +1816,26 @@ const MRT_TableHeadCellFilterLabel = ({ header, table, }) => {
1777
1816
  const [anchorEl, setAnchorEl] = react.useState(null);
1778
1817
  const isFilterActive = (Array.isArray(filterValue) && filterValue.some(Boolean)) ||
1779
1818
  (!!filterValue && !Array.isArray(filterValue));
1780
- const isRangeFilter = columnDef.filterVariant === 'range' ||
1819
+ const isRangeFilter = ((_a = columnDef.filterVariant) === null || _a === void 0 ? void 0 : _a.includes('range')) ||
1781
1820
  ['between', 'betweenInclusive', 'inNumberRange'].includes(columnDef._filterFn);
1782
1821
  const currentFilterOption = columnDef._filterFn;
1783
1822
  const filterTooltip = columnFilterDisplayMode === 'popover' && !isFilterActive
1784
- ? (_a = localization.filterByColumn) === null || _a === void 0 ? void 0 : _a.replace('{column}', String(columnDef.header))
1823
+ ? (_b = localization.filterByColumn) === null || _b === void 0 ? void 0 : _b.replace('{column}', String(columnDef.header))
1785
1824
  : localization.filteringByColumn
1786
1825
  .replace('{column}', String(columnDef.header))
1787
1826
  .replace('{filterType}', currentFilterOption
1788
1827
  ? // @ts-ignore
1789
- localization[`filter${((_b = currentFilterOption === null || currentFilterOption === void 0 ? void 0 : currentFilterOption.charAt(0)) === null || _b === void 0 ? void 0 : _b.toUpperCase()) +
1828
+ localization[`filter${((_c = currentFilterOption === null || currentFilterOption === void 0 ? void 0 : currentFilterOption.charAt(0)) === null || _c === void 0 ? void 0 : _c.toUpperCase()) +
1790
1829
  (currentFilterOption === null || currentFilterOption === void 0 ? void 0 : currentFilterOption.slice(1))}`]
1791
1830
  : '')
1792
- .replace('{filterValue}', `"${Array.isArray(column.getFilterValue())
1793
- ? column.getFilterValue().join(`" ${isRangeFilter ? localization.and : localization.or} "`)
1794
- : column.getFilterValue()}"`)
1831
+ .replace('{filterValue}', `"${Array.isArray(filterValue)
1832
+ ? filterValue.join(`" ${isRangeFilter ? localization.and : localization.or} "`)
1833
+ : filterValue}"`)
1795
1834
  .replace('" "', '');
1796
1835
  return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(Grow__default["default"], { in: columnFilterDisplayMode === 'popover' ||
1797
- (!!column.getFilterValue() && !isRangeFilter) ||
1836
+ (!!filterValue && !isRangeFilter) ||
1798
1837
  (isRangeFilter && // @ts-ignore
1799
- (!!((_c = column.getFilterValue()) === null || _c === void 0 ? void 0 : _c[0]) || !!((_d = column.getFilterValue()) === null || _d === void 0 ? void 0 : _d[1]))), unmountOnExit: true, 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) => {
1838
+ (!!(filterValue === null || filterValue === void 0 ? void 0 : filterValue[0]) || !!(filterValue === null || filterValue === void 0 ? void 0 : filterValue[1]))), unmountOnExit: true, 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) => {
1800
1839
  if (columnFilterDisplayMode === 'popover') {
1801
1840
  setAnchorEl(event.currentTarget);
1802
1841
  }