material-react-table 0.14.5 → 0.14.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,8 +1,8 @@
1
1
  import React, { useMemo, forwardRef, useState, useCallback, Fragment, useLayoutEffect, useEffect } from 'react';
2
2
  import { ArrowRight, Cancel, CheckBox, ClearAll, Close, DensityLarge, DensityMedium, DensitySmall, DragHandle, DynamicFeed, Edit, ExpandLess, ExpandMore, FilterAlt, FilterAltOff, FilterList, FilterListOff, FullscreenExit, Fullscreen, KeyboardDoubleArrowDown, MoreHoriz, MoreVert, PushPin, RestartAlt, Save, Search, SearchOff, Sort, ViewColumn, VisibilityOff } from '@mui/icons-material';
3
- import { createTable, getCoreRowModel, getExpandedRowModel, getFacetedRowModel, getFilteredRowModel, getGroupedRowModel, getPaginationRowModel, getSortedRowModel, useTableInstance } from '@tanstack/react-table';
3
+ import { sortingFns, createTable, filterFns, getCoreRowModel, getExpandedRowModel, getFacetedRowModel, getFilteredRowModel, getGroupedRowModel, getPaginationRowModel, getSortedRowModel, useTableInstance } from '@tanstack/react-table';
4
4
  import { Tooltip, IconButton, Menu, MenuItem, Box, FormControlLabel, Switch, Button, Divider, ListItemIcon, Checkbox, debounce, Collapse, TextField, InputAdornment, TablePagination, Chip, Alert, LinearProgress, useMediaQuery, Toolbar, lighten, alpha, Grow, TableSortLabel, TableCell, TableRow, TableHead, darken, Skeleton, TableBody, TableFooter, Table, TableContainer, Paper, Dialog } from '@mui/material';
5
- import { rankItem, rankings } from '@tanstack/match-sorter-utils';
5
+ import { rankItem, rankings, compareItems } from '@tanstack/match-sorter-utils';
6
6
  import { useDrop, useDrag, DndProvider } from 'react-dnd';
7
7
  import { HTML5Backend } from 'react-dnd-html5-backend';
8
8
  import { useVirtual } from 'react-virtual';
@@ -329,7 +329,7 @@ notEmpty.autoRemove = function (val) {
329
329
  return !val;
330
330
  };
331
331
 
332
- var defaultFilterFNs = {
332
+ var MRT_FilterFns = {
333
333
  between: between,
334
334
  contains: contains,
335
335
  empty: empty,
@@ -616,7 +616,7 @@ var createDataColumn = function createDataColumn(table, column, currentFilterFns
616
616
  return (// @ts-ignore
617
617
  table.createDataColumn(column.id, _extends({
618
618
  filterFn: currentFilterFns[column.id] instanceof Function ? currentFilterFns[column.id] : // @ts-ignore
619
- defaultFilterFNs[currentFilterFns[column.id]]
619
+ MRT_FilterFns[currentFilterFns[column.id]]
620
620
  }, column))
621
621
  );
622
622
  };
@@ -1539,19 +1539,22 @@ var MRT_ToggleGlobalFilterButton = function MRT_ToggleGlobalFilterButton(_ref) {
1539
1539
  }, rest), showGlobalFilter ? React.createElement(SearchOffIcon, null) : React.createElement(SearchIcon, null)));
1540
1540
  };
1541
1541
 
1542
- var MRT_SearchTextField = function MRT_SearchTextField(_ref) {
1542
+ var MRT_GlobalFilterTextField = function MRT_GlobalFilterTextField(_ref) {
1543
+ var _localization$clearSe;
1544
+
1543
1545
  var instance = _ref.instance;
1544
1546
  var getState = instance.getState,
1545
1547
  setGlobalFilter = instance.setGlobalFilter,
1546
1548
  _instance$options = instance.options,
1549
+ enableGlobalFilterChangeMode = _instance$options.enableGlobalFilterChangeMode,
1547
1550
  _instance$options$ico = _instance$options.icons,
1548
1551
  SearchIcon = _instance$options$ico.SearchIcon,
1549
1552
  CloseIcon = _instance$options$ico.CloseIcon,
1550
- tableId = _instance$options.tableId,
1551
1553
  localization = _instance$options.localization,
1552
1554
  muiSearchTextFieldProps = _instance$options.muiSearchTextFieldProps,
1553
1555
  onGlobalFilterValueChanged = _instance$options.onGlobalFilterValueChanged,
1554
- onGlobalFilterValueChangedDebounced = _instance$options.onGlobalFilterValueChangedDebounced;
1556
+ onGlobalFilterValueChangedDebounced = _instance$options.onGlobalFilterValueChangedDebounced,
1557
+ tableId = _instance$options.tableId;
1555
1558
 
1556
1559
  var _getState = getState(),
1557
1560
  globalFilter = _getState.globalFilter,
@@ -1606,7 +1609,7 @@ var MRT_SearchTextField = function MRT_SearchTextField(_ref) {
1606
1609
  value: searchValue != null ? searchValue : '',
1607
1610
  variant: "standard",
1608
1611
  InputProps: {
1609
- startAdornment: React.createElement(InputAdornment, {
1612
+ startAdornment: enableGlobalFilterChangeMode ? React.createElement(InputAdornment, {
1610
1613
  position: "start"
1611
1614
  }, React.createElement(Tooltip, {
1612
1615
  arrow: true,
@@ -1619,16 +1622,18 @@ var MRT_SearchTextField = function MRT_SearchTextField(_ref) {
1619
1622
  height: '1.75rem',
1620
1623
  width: '1.75rem'
1621
1624
  }
1622
- }, React.createElement(SearchIcon, null)))),
1625
+ }, React.createElement(SearchIcon, null)))) : React.createElement(SearchIcon, null),
1623
1626
  endAdornment: React.createElement(InputAdornment, {
1624
1627
  position: "end"
1625
- }, React.createElement(IconButton, {
1628
+ }, React.createElement(Tooltip, {
1629
+ arrow: true,
1630
+ title: (_localization$clearSe = localization.clearSearch) != null ? _localization$clearSe : ''
1631
+ }, React.createElement("span", null, React.createElement(IconButton, {
1626
1632
  "aria-label": localization.clearSearch,
1627
- disabled: (searchValue == null ? void 0 : searchValue.length) === 0,
1633
+ disabled: !(searchValue != null && searchValue.length),
1628
1634
  onClick: handleClear,
1629
- size: "small",
1630
- title: localization.clearSearch
1631
- }, React.createElement(CloseIcon, null)))
1635
+ size: "small"
1636
+ }, React.createElement(CloseIcon, null)))))
1632
1637
  }
1633
1638
  }, textFieldProps)), React.createElement(MRT_FilterOptionMenu, {
1634
1639
  anchorEl: anchorEl,
@@ -1663,7 +1668,7 @@ var MRT_ToolbarInternalButtons = function MRT_ToolbarInternalButtons(_ref) {
1663
1668
  MRT_ToggleFiltersButton: MRT_ToggleFiltersButton,
1664
1669
  MRT_ToggleGlobalFilterButton: MRT_ToggleGlobalFilterButton,
1665
1670
  instance: instance
1666
- })) != null ? _renderToolbarInterna : React.createElement(React.Fragment, null, enableGlobalFilter && positionGlobalFilter === 'right' && React.createElement(MRT_SearchTextField, {
1671
+ })) != null ? _renderToolbarInterna : React.createElement(React.Fragment, null, enableGlobalFilter && positionGlobalFilter === 'right' && React.createElement(MRT_GlobalFilterTextField, {
1667
1672
  instance: instance
1668
1673
  }), enableFilters && enableGlobalFilter && React.createElement(MRT_ToggleGlobalFilterButton, {
1669
1674
  instance: instance
@@ -1889,13 +1894,13 @@ var MRT_ToolbarTop = function MRT_ToolbarTop(_ref2) {
1889
1894
  top: 0,
1890
1895
  width: '100%'
1891
1896
  }
1892
- }, enableGlobalFilter && positionGlobalFilter === 'left' && React.createElement(MRT_SearchTextField, {
1897
+ }, enableGlobalFilter && positionGlobalFilter === 'left' && React.createElement(MRT_GlobalFilterTextField, {
1893
1898
  instance: instance
1894
1899
  }), (_renderToolbarTopCust = renderToolbarTopCustomActions == null ? void 0 : renderToolbarTopCustomActions({
1895
1900
  instance: instance
1896
1901
  })) != null ? _renderToolbarTopCust : React.createElement("span", null), enableToolbarInternalActions ? React.createElement(MRT_ToolbarInternalButtons, {
1897
1902
  instance: instance
1898
- }) : enableGlobalFilter && positionGlobalFilter === 'right' && React.createElement(MRT_SearchTextField, {
1903
+ }) : enableGlobalFilter && positionGlobalFilter === 'right' && React.createElement(MRT_GlobalFilterTextField, {
1899
1904
  instance: instance
1900
1905
  })), enablePagination && ['top', 'both'].includes(positionPagination != null ? positionPagination : '') && React.createElement(MRT_TablePagination, {
1901
1906
  instance: instance,
@@ -1972,13 +1977,14 @@ var MRT_ToolbarBottom = function MRT_ToolbarBottom(_ref) {
1972
1977
  };
1973
1978
 
1974
1979
  var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
1975
- var _localization$filterB, _columnDef$enabledCol, _allowedColumnFilterO, _localization$filterM, _localization$, _allowedColumnFilterO2, _localization$clearFi, _columnDef$filterSele;
1980
+ var _localization$filterB, _columnDef$enabledCol, _allowedColumnFilterO, _localization$filterM, _localization$, _localization$clearFi, _columnDef$filterSele;
1976
1981
 
1977
1982
  var header = _ref.header,
1978
1983
  inputIndex = _ref.inputIndex,
1979
1984
  instance = _ref.instance;
1980
1985
  var getState = instance.getState,
1981
1986
  _instance$options = instance.options,
1987
+ enableColumnFilterChangeMode = _instance$options.enableColumnFilterChangeMode,
1982
1988
  enabledColumnFilterOptions = _instance$options.enabledColumnFilterOptions,
1983
1989
  _instance$options$ico = _instance$options.icons,
1984
1990
  FilterListIcon = _instance$options$ico.FilterListIcon,
@@ -2104,6 +2110,7 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
2104
2110
  localization["filter" + (filterFn.charAt(0).toUpperCase() + filterFn.slice(1))] : '';
2105
2111
  var filterPlaceholder = inputIndex === undefined ? (_localization$filterB = localization.filterByColumn) == null ? void 0 : _localization$filterB.replace('{column}', String(columnDef.header)) : inputIndex === 0 ? localization.min : inputIndex === 1 ? localization.max : '';
2106
2112
  var allowedColumnFilterOptions = (_columnDef$enabledCol = columnDef == null ? void 0 : columnDef.enabledColumnFilterOptions) != null ? _columnDef$enabledCol : enabledColumnFilterOptions;
2113
+ var allowColumnChangeMode = enableColumnFilterChangeMode && columnDef.enableColumnFilterChangeMode !== false;
2107
2114
  return React.createElement(React.Fragment, null, React.createElement(TextField, Object.assign({
2108
2115
  fullWidth: true,
2109
2116
  id: filterId,
@@ -2115,7 +2122,7 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
2115
2122
  },
2116
2123
  title: filterPlaceholder
2117
2124
  },
2118
- helperText: !inputIndex && (allowedColumnFilterOptions === undefined || ((_allowedColumnFilterO = allowedColumnFilterOptions == null ? void 0 : allowedColumnFilterOptions.length) != null ? _allowedColumnFilterO : 0) > 0) ? React.createElement("label", {
2125
+ helperText: allowColumnChangeMode && !inputIndex && (allowedColumnFilterOptions === undefined || ((_allowedColumnFilterO = allowedColumnFilterOptions == null ? void 0 : allowedColumnFilterOptions.length) != null ? _allowedColumnFilterO : 0) > 0) ? React.createElement("label", {
2119
2126
  htmlFor: filterId
2120
2127
  }, filterFn instanceof Function ? (_localization$filterM = localization.filterMode.replace('{filterType}', // @ts-ignore
2121
2128
  (_localization$ = localization["filter" + (filterFn.name.charAt(0).toUpperCase() + filterFn.name.slice(1))]) != null ? _localization$ : '')) != null ? _localization$filterM : '' : localization.filterMode.replace('{filterType}', // @ts-ignore
@@ -2127,7 +2134,6 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
2127
2134
  whiteSpace: 'nowrap'
2128
2135
  }
2129
2136
  },
2130
- label: isSelectFilter && !filterValue ? filterPlaceholder : undefined,
2131
2137
  margin: "none",
2132
2138
  placeholder: filterChipLabel || isSelectFilter ? undefined : filterPlaceholder,
2133
2139
  onChange: handleChange,
@@ -2138,7 +2144,7 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
2138
2144
  value: filterValue != null ? filterValue : '',
2139
2145
  variant: "standard",
2140
2146
  InputProps: {
2141
- startAdornment: !isSelectFilter && !inputIndex && (allowedColumnFilterOptions === undefined || ((_allowedColumnFilterO2 = allowedColumnFilterOptions == null ? void 0 : allowedColumnFilterOptions.length) != null ? _allowedColumnFilterO2 : 0) > 0) && React.createElement(InputAdornment, {
2147
+ startAdornment: allowColumnChangeMode && !isSelectFilter && !inputIndex && (allowedColumnFilterOptions === undefined || !!(allowedColumnFilterOptions != null && allowedColumnFilterOptions.length)) ? React.createElement(InputAdornment, {
2142
2148
  position: "start"
2143
2149
  }, React.createElement(Tooltip, {
2144
2150
  arrow: true,
@@ -2154,7 +2160,7 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
2154
2160
  }, React.createElement(FilterListIcon, null)))), filterChipLabel && React.createElement(Chip, {
2155
2161
  onDelete: handleClearFilterChip,
2156
2162
  label: filterChipLabel
2157
- })),
2163
+ })) : React.createElement(FilterListIcon, null),
2158
2164
  endAdornment: !filterChipLabel && React.createElement(InputAdornment, {
2159
2165
  position: "end"
2160
2166
  }, React.createElement(Tooltip, {
@@ -2179,7 +2185,6 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
2179
2185
  p: 0,
2180
2186
  minWidth: !filterChipLabel ? '8rem' : 'auto',
2181
2187
  width: 'calc(100% + 0.5rem)',
2182
- mt: isSelectFilter && !filterValue ? '-1rem' : undefined,
2183
2188
  '& .MuiSelect-icon': {
2184
2189
  mr: '1.5rem'
2185
2190
  }
@@ -3301,6 +3306,21 @@ var MRT_TablePaper = function MRT_TablePaper(_ref) {
3301
3306
  })));
3302
3307
  };
3303
3308
 
3309
+ var fuzzy$1 = function fuzzy(rowA, rowB, columnId) {
3310
+ var dir = 0;
3311
+
3312
+ if (rowA.columnFiltersMeta[columnId]) {
3313
+ dir = compareItems(rowA.columnFiltersMeta[columnId], rowB.columnFiltersMeta[columnId]);
3314
+ } // Provide a fallback for when the item ranks are equal
3315
+
3316
+
3317
+ return dir === 0 ? sortingFns.alphanumeric(rowA, rowB, columnId) : dir;
3318
+ };
3319
+
3320
+ var MRT_SortingFns = {
3321
+ fuzzy: fuzzy$1
3322
+ };
3323
+
3304
3324
  var MRT_TableRoot = function MRT_TableRoot(props) {
3305
3325
  var _initialState$columnO, _initialState$current, _initialState$current2, _initialState$density, _initialState$isFullS, _initialState$showFil, _initialState$showGlo, _props$globalFilterFn, _props$state3, _props$state4, _props$onCurrentEditi, _props$onCurrentEditi2, _props$onCurrentFilte, _props$onCurrentGloba, _props$onDensityChang, _props$onIsFullScreen, _props$onShowFiltersC, _props$onShowGlobalFi;
3306
3326
 
@@ -3389,8 +3409,7 @@ var MRT_TableRoot = function MRT_TableRoot(props) {
3389
3409
  var table = useMemo(function () {
3390
3410
  return (// @ts-ignore
3391
3411
  createTable().setOptions({
3392
- //@ts-ignore
3393
- filterFns: defaultFilterFNs,
3412
+ filterFns: _extends({}, filterFns, MRT_FilterFns, props.filterFns),
3394
3413
  getCoreRowModel: getCoreRowModel(),
3395
3414
  getExpandedRowModel: getExpandedRowModel(),
3396
3415
  getFacetedRowModel: getFacetedRowModel(),
@@ -3398,10 +3417,7 @@ var MRT_TableRoot = function MRT_TableRoot(props) {
3398
3417
  getGroupedRowModel: getGroupedRowModel(),
3399
3418
  getPaginationRowModel: getPaginationRowModel(),
3400
3419
  getSortedRowModel: getSortedRowModel(),
3401
- getSubRows: function getSubRows(row) {
3402
- return row == null ? void 0 : row.subRows;
3403
- },
3404
- tableId: tableId
3420
+ sortingFns: _extends({}, sortingFns, MRT_SortingFns, props.sortingFns)
3405
3421
  })
3406
3422
  );
3407
3423
  }, []);
@@ -3498,6 +3514,9 @@ var MRT_TableRoot = function MRT_TableRoot(props) {
3498
3514
  //@ts-ignore
3499
3515
  columns: columns,
3500
3516
  data: data,
3517
+ getSubRows: function getSubRows(row) {
3518
+ return row == null ? void 0 : row.subRows;
3519
+ },
3501
3520
  //@ts-ignore
3502
3521
  globalFilterFn: currentGlobalFilterFn,
3503
3522
  initialState: initialState,
@@ -3511,7 +3530,8 @@ var MRT_TableRoot = function MRT_TableRoot(props) {
3511
3530
  isFullScreen: isFullScreen,
3512
3531
  showFilters: showFilters,
3513
3532
  showGlobalFilter: showGlobalFilter
3514
- }, props.state)
3533
+ }, props.state),
3534
+ tableId: tableId
3515
3535
  })), {
3516
3536
  setCurrentEditingCell: (_props$onCurrentEditi = props.onCurrentEditingCellChange) != null ? _props$onCurrentEditi : setCurrentEditingCell,
3517
3537
  setCurrentEditingRow: (_props$onCurrentEditi2 = props.onCurrentEditingRowChange) != null ? _props$onCurrentEditi2 : setCurrentEditingRow,
@@ -3563,7 +3583,7 @@ var MRT_TableRoot = function MRT_TableRoot(props) {
3563
3583
  }));
3564
3584
  };
3565
3585
 
3566
- var _excluded$5 = ["autoResetExpanded", "columnResizeMode", "defaultColumn", "editingMode", "enableColumnActions", "enableColumnFilters", "enableColumnOrdering", "enableColumnResizing", "enableDensityToggle", "enableExpandAll", "enableFilters", "enableFullScreenToggle", "enableGlobalFilter", "enableGrouping", "enableHiding", "enableMultiRowSelection", "enablePagination", "enablePinning", "enableRowSelection", "enableSelectAll", "enableSorting", "enableStickyHeader", "enableTableFooter", "enableTableHead", "enableToolbarBottom", "enableToolbarInternalActions", "enableToolbarTop", "icons", "localization", "persistentStateMode", "positionActionsColumn", "positionGlobalFilter", "positionPagination", "positionToolbarAlertBanner", "rowNumberMode", "selectAllMode"];
3586
+ var _excluded$5 = ["autoResetExpanded", "columnResizeMode", "defaultColumn", "editingMode", "enableColumnActions", "enableColumnFilterChangeMode", "enableColumnFilters", "enableColumnOrdering", "enableColumnResizing", "enableDensityToggle", "enableExpandAll", "enableFilters", "enableFullScreenToggle", "enableGlobalFilter", "enableGlobalFilterChangeMode", "enableGrouping", "enableHiding", "enableMultiRowSelection", "enablePagination", "enablePinning", "enableRowSelection", "enableSelectAll", "enableSorting", "enableStickyHeader", "enableTableFooter", "enableTableHead", "enableToolbarBottom", "enableToolbarInternalActions", "enableToolbarTop", "icons", "localization", "persistentStateMode", "positionActionsColumn", "positionGlobalFilter", "positionPagination", "positionToolbarAlertBanner", "rowNumberMode", "selectAllMode"];
3567
3587
  var MaterialReactTable = (function (_ref) {
3568
3588
  var _ref$autoResetExpande = _ref.autoResetExpanded,
3569
3589
  autoResetExpanded = _ref$autoResetExpande === void 0 ? false : _ref$autoResetExpande,
@@ -3579,8 +3599,10 @@ var MaterialReactTable = (function (_ref) {
3579
3599
  editingMode = _ref$editingMode === void 0 ? 'row' : _ref$editingMode,
3580
3600
  _ref$enableColumnActi = _ref.enableColumnActions,
3581
3601
  enableColumnActions = _ref$enableColumnActi === void 0 ? true : _ref$enableColumnActi,
3582
- _ref$enableColumnFilt = _ref.enableColumnFilters,
3583
- enableColumnFilters = _ref$enableColumnFilt === void 0 ? true : _ref$enableColumnFilt,
3602
+ _ref$enableColumnFilt = _ref.enableColumnFilterChangeMode,
3603
+ enableColumnFilterChangeMode = _ref$enableColumnFilt === void 0 ? true : _ref$enableColumnFilt,
3604
+ _ref$enableColumnFilt2 = _ref.enableColumnFilters,
3605
+ enableColumnFilters = _ref$enableColumnFilt2 === void 0 ? true : _ref$enableColumnFilt2,
3584
3606
  _ref$enableColumnOrde = _ref.enableColumnOrdering,
3585
3607
  enableColumnOrdering = _ref$enableColumnOrde === void 0 ? false : _ref$enableColumnOrde,
3586
3608
  _ref$enableColumnResi = _ref.enableColumnResizing,
@@ -3595,6 +3617,8 @@ var MaterialReactTable = (function (_ref) {
3595
3617
  enableFullScreenToggle = _ref$enableFullScreen === void 0 ? true : _ref$enableFullScreen,
3596
3618
  _ref$enableGlobalFilt = _ref.enableGlobalFilter,
3597
3619
  enableGlobalFilter = _ref$enableGlobalFilt === void 0 ? true : _ref$enableGlobalFilt,
3620
+ _ref$enableGlobalFilt2 = _ref.enableGlobalFilterChangeMode,
3621
+ enableGlobalFilterChangeMode = _ref$enableGlobalFilt2 === void 0 ? true : _ref$enableGlobalFilt2,
3598
3622
  _ref$enableGrouping = _ref.enableGrouping,
3599
3623
  enableGrouping = _ref$enableGrouping === void 0 ? false : _ref$enableGrouping,
3600
3624
  _ref$enableHiding = _ref.enableHiding,
@@ -3647,6 +3671,7 @@ var MaterialReactTable = (function (_ref) {
3647
3671
  defaultColumn: defaultColumn,
3648
3672
  editingMode: editingMode,
3649
3673
  enableColumnActions: enableColumnActions,
3674
+ enableColumnFilterChangeMode: enableColumnFilterChangeMode,
3650
3675
  enableColumnFilters: enableColumnFilters,
3651
3676
  enableColumnOrdering: enableColumnOrdering,
3652
3677
  enableColumnResizing: enableColumnResizing,
@@ -3655,6 +3680,7 @@ var MaterialReactTable = (function (_ref) {
3655
3680
  enableFilters: enableFilters,
3656
3681
  enableFullScreenToggle: enableFullScreenToggle,
3657
3682
  enableGlobalFilter: enableGlobalFilter,
3683
+ enableGlobalFilterChangeMode: enableGlobalFilterChangeMode,
3658
3684
  enableGrouping: enableGrouping,
3659
3685
  enableHiding: enableHiding,
3660
3686
  enableMultiRowSelection: enableMultiRowSelection,