material-react-table 0.6.9 → 0.6.10

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,6 +1,6 @@
1
1
  import React, { useState, useCallback, useMemo, useContext, createContext, Fragment, useEffect } from 'react';
2
2
  import { useTable, useFilters, useGlobalFilter, useGroupBy, useSortBy, useExpanded, usePagination, useRowSelect, useResizeColumns, useFlexLayout, useAsyncDebounce } from 'react-table';
3
- import { Menu, MenuItem, TextField, InputAdornment, Tooltip, IconButton, Chip, FormControlLabel, Switch, Box, Button, Divider, ListItemIcon, TableCell, TableSortLabel, Collapse, Skeleton, Checkbox, TableRow, TableHead, TableBody, TableFooter, Table, TablePagination, useMediaQuery, Alert, LinearProgress, Toolbar, alpha, TableContainer, Paper } from '@mui/material';
3
+ import { Menu, MenuItem, TextField, InputAdornment, Tooltip, IconButton, Chip, FormControlLabel, Switch, Box, Button, Divider, ListItemIcon, TableCell, TableSortLabel, Collapse, Checkbox, TableRow, TableHead, Skeleton, TableBody, TableFooter, Table, TablePagination, useMediaQuery, Alert, LinearProgress, Toolbar, alpha, TableContainer, Paper } from '@mui/material';
4
4
  import { matchSorter } from 'match-sorter';
5
5
  import ArrowRightIcon from '@mui/icons-material/ArrowRight';
6
6
  import CancelIcon from '@mui/icons-material/Cancel';
@@ -99,6 +99,22 @@ function _objectWithoutPropertiesLoose(source, excluded) {
99
99
  return target;
100
100
  }
101
101
 
102
+ var MRT_FILTER_TYPE;
103
+
104
+ (function (MRT_FILTER_TYPE) {
105
+ MRT_FILTER_TYPE["BEST_MATCH"] = "bestMatch";
106
+ MRT_FILTER_TYPE["BEST_MATCH_FIRST"] = "bestMatchFirst";
107
+ MRT_FILTER_TYPE["CONTAINS"] = "contains";
108
+ MRT_FILTER_TYPE["EMPTY"] = "empty";
109
+ MRT_FILTER_TYPE["ENDS_WITH"] = "endsWith";
110
+ MRT_FILTER_TYPE["EQUALS"] = "equals";
111
+ MRT_FILTER_TYPE["GREATER_THAN"] = "greaterThan";
112
+ MRT_FILTER_TYPE["LESS_THAN"] = "lessThan";
113
+ MRT_FILTER_TYPE["NOT_EMPTY"] = "notEmpty";
114
+ MRT_FILTER_TYPE["NOT_EQUALS"] = "notEquals";
115
+ MRT_FILTER_TYPE["STARTS_WITH"] = "startsWith";
116
+ })(MRT_FILTER_TYPE || (MRT_FILTER_TYPE = {}));
117
+
102
118
  var findLowestLevelCols = function findLowestLevelCols(columns) {
103
119
  var lowestLevelColumns = columns;
104
120
  var currentCols = columns;
@@ -160,14 +176,18 @@ var MaterialReactTableProvider = function MaterialReactTableProvider(props) {
160
176
 
161
177
  var _useState6 = useState(function () {
162
178
  return Object.assign.apply(Object, [{}].concat(findLowestLevelCols(props.columns).map(function (c) {
163
- var _ref, _c$filter, _props$initialState5, _props$initialState5$, _ref2;
179
+ var _ref, _c$filter, _props$initialState5, _props$initialState5$, _c$filterSelectOption, _ref2;
164
180
 
165
- return _ref2 = {}, _ref2[c.accessor] = (_ref = (_c$filter = c.filter) != null ? _c$filter : props == null ? void 0 : (_props$initialState5 = props.initialState) == null ? void 0 : (_props$initialState5$ = _props$initialState5.filters) == null ? void 0 : _props$initialState5$[c.accessor]) != null ? _ref : !!c.filterSelectOptions ? 'equals' : 'fuzzy', _ref2;
181
+ return _ref2 = {}, _ref2[c.accessor] = (_ref = (_c$filter = c.filter) != null ? _c$filter : props == null ? void 0 : (_props$initialState5 = props.initialState) == null ? void 0 : (_props$initialState5$ = _props$initialState5.filters) == null ? void 0 : _props$initialState5$[c.accessor]) != null ? _ref : !!((_c$filterSelectOption = c.filterSelectOptions) != null && _c$filterSelectOption.length) ? MRT_FILTER_TYPE.EQUALS : MRT_FILTER_TYPE.BEST_MATCH, _ref2;
166
182
  })));
167
183
  }),
168
184
  currentFilterTypes = _useState6[0],
169
185
  setCurrentFilterTypes = _useState6[1];
170
186
 
187
+ var _useState7 = useState(props.globalFilter),
188
+ currentGlobalFilterType = _useState7[0],
189
+ setCurrentGlobalFilterType = _useState7[1];
190
+
171
191
  var applyFiltersToColumns = useCallback(function (cols) {
172
192
  return cols.map(function (column) {
173
193
  if (column.columns) {
@@ -198,17 +218,19 @@ var MaterialReactTableProvider = function MaterialReactTableProvider(props) {
198
218
  // @ts-ignore
199
219
  columns: columns,
200
220
  data: data,
221
+ globalFilter: currentGlobalFilterType,
201
222
  useControlledState: function useControlledState(state) {
202
223
  return useMemo(function () {
203
224
  return _extends({}, state, {
204
225
  currentEditingRow: currentEditingRow,
205
226
  currentFilterTypes: currentFilterTypes,
227
+ currentGlobalFilterType: currentGlobalFilterType,
206
228
  densePadding: densePadding,
207
229
  fullScreen: fullScreen,
208
230
  showFilters: showFilters,
209
231
  showSearch: showSearch
210
232
  }, props == null ? void 0 : props.useControlledState == null ? void 0 : props.useControlledState(state));
211
- }, [currentEditingRow, currentFilterTypes, densePadding, fullScreen, showFilters, showSearch, state]);
233
+ }, [currentEditingRow, currentFilterTypes, currentGlobalFilterType, densePadding, fullScreen, showFilters, showSearch, state]);
212
234
  }
213
235
  })].concat(hooks));
214
236
  var idPrefix = useMemo(function () {
@@ -234,6 +256,7 @@ var MaterialReactTableProvider = function MaterialReactTableProvider(props) {
234
256
  //@ts-ignore
235
257
  setCurrentEditingRow: setCurrentEditingRow,
236
258
  setCurrentFilterTypes: setCurrentFilterTypes,
259
+ setCurrentGlobalFilterType: setCurrentGlobalFilterType,
237
260
  setDensePadding: setDensePadding,
238
261
  setFullScreen: setFullScreen,
239
262
  setShowFilters: setShowFilters,
@@ -247,22 +270,19 @@ var useMRT = function useMRT() {
247
270
  return useContext(MaterialReactTableContext);
248
271
  };
249
272
 
250
- var MRT_FILTER_TYPE;
273
+ var bestMatchFirst = function bestMatchFirst(rows, columnIds, filterValue) {
274
+ return matchSorter(rows, filterValue.toString().trim(), {
275
+ keys: Array.isArray(columnIds) ? columnIds.map(function (c) {
276
+ return "values." + c;
277
+ }) : ["values." + columnIds]
278
+ });
279
+ };
251
280
 
252
- (function (MRT_FILTER_TYPE) {
253
- MRT_FILTER_TYPE["CONTAINS"] = "contains";
254
- MRT_FILTER_TYPE["EMPTY"] = "empty";
255
- MRT_FILTER_TYPE["ENDS_WITH"] = "endsWith";
256
- MRT_FILTER_TYPE["EQUALS"] = "equals";
257
- MRT_FILTER_TYPE["FUZZY"] = "fuzzy";
258
- MRT_FILTER_TYPE["GREATER_THAN"] = "greaterThan";
259
- MRT_FILTER_TYPE["LESS_THAN"] = "lessThan";
260
- MRT_FILTER_TYPE["NOT_EMPTY"] = "notEmpty";
261
- MRT_FILTER_TYPE["NOT_EQUALS"] = "notEquals";
262
- MRT_FILTER_TYPE["STARTS_WITH"] = "startsWith";
263
- })(MRT_FILTER_TYPE || (MRT_FILTER_TYPE = {}));
281
+ bestMatchFirst.autoRemove = function (val) {
282
+ return !val;
283
+ };
264
284
 
265
- var fuzzy = function fuzzy(rows, columnIds, filterValue) {
285
+ var bestMatch = function bestMatch(rows, columnIds, filterValue) {
266
286
  return matchSorter(rows, filterValue.toString().trim(), {
267
287
  keys: Array.isArray(columnIds) ? columnIds.map(function (c) {
268
288
  return "values." + c;
@@ -273,7 +293,7 @@ var fuzzy = function fuzzy(rows, columnIds, filterValue) {
273
293
  });
274
294
  };
275
295
 
276
- fuzzy.autoRemove = function (val) {
296
+ bestMatch.autoRemove = function (val) {
277
297
  return !val;
278
298
  };
279
299
 
@@ -368,11 +388,12 @@ notEmpty.autoRemove = function (val) {
368
388
  };
369
389
 
370
390
  var defaultFilterFNs = {
391
+ bestMatch: bestMatch,
392
+ bestMatchFirst: bestMatchFirst,
371
393
  contains: contains,
372
394
  empty: empty,
373
395
  endsWith: endsWith,
374
396
  equals: equals,
375
- fuzzy: fuzzy,
376
397
  greaterThan: greaterThan,
377
398
  lessThan: lessThan,
378
399
  notEmpty: notEmpty,
@@ -392,20 +413,27 @@ var MRT_FilterTypeMenu = function MRT_FilterTypeMenu(_ref) {
392
413
  setAnchorEl = _ref.setAnchorEl;
393
414
 
394
415
  var _useMRT = useMRT(),
416
+ enabledGlobalFilterTypes = _useMRT.enabledGlobalFilterTypes,
395
417
  localization = _useMRT.localization,
396
418
  setCurrentFilterTypes = _useMRT.setCurrentFilterTypes,
419
+ setCurrentGlobalFilterType = _useMRT.setCurrentGlobalFilterType,
397
420
  tableInstance = _useMRT.tableInstance;
398
421
 
399
422
  var filterTypes = useMemo(function () {
400
423
  return [{
401
- type: MRT_FILTER_TYPE.FUZZY,
402
- label: localization.filterFuzzy,
424
+ type: MRT_FILTER_TYPE.BEST_MATCH_FIRST,
425
+ label: localization.filterBestMatchFirst,
403
426
  divider: false,
404
- fn: fuzzy
427
+ fn: bestMatchFirst
428
+ }, {
429
+ type: MRT_FILTER_TYPE.BEST_MATCH,
430
+ label: localization.filterBestMatch,
431
+ divider: !!column,
432
+ fn: bestMatch
405
433
  }, {
406
434
  type: MRT_FILTER_TYPE.CONTAINS,
407
435
  label: localization.filterContains,
408
- divider: true,
436
+ divider: false,
409
437
  fn: contains
410
438
  }, {
411
439
  type: MRT_FILTER_TYPE.STARTS_WITH,
@@ -448,26 +476,30 @@ var MRT_FilterTypeMenu = function MRT_FilterTypeMenu(_ref) {
448
476
  divider: false,
449
477
  fn: notEmpty
450
478
  }].filter(function (filterType) {
451
- return !column.filterTypes || column.filterTypes.includes(filterType.type);
479
+ return column ? !column.enabledFilterTypes || column.enabledFilterTypes.includes(filterType.type) : (!enabledGlobalFilterTypes || enabledGlobalFilterTypes.includes(filterType.type)) && [MRT_FILTER_TYPE.BEST_MATCH_FIRST, MRT_FILTER_TYPE.BEST_MATCH].includes(filterType.type);
452
480
  });
453
481
  }, []);
454
482
 
455
483
  var handleSelectFilterType = function handleSelectFilterType(value) {
456
- setAnchorEl(null);
457
- setCurrentFilterTypes(function (prev) {
458
- var _extends2;
484
+ if (column) {
485
+ setCurrentFilterTypes(function (prev) {
486
+ var _extends2;
459
487
 
460
- return _extends({}, prev, (_extends2 = {}, _extends2[column.id] = value, _extends2));
461
- });
488
+ return _extends({}, prev, (_extends2 = {}, _extends2[column.id] = value, _extends2));
489
+ });
462
490
 
463
- if ([MRT_FILTER_TYPE.EMPTY, MRT_FILTER_TYPE.NOT_EMPTY].includes(value)) {
464
- column.setFilter(' ');
491
+ if ([MRT_FILTER_TYPE.EMPTY, MRT_FILTER_TYPE.NOT_EMPTY].includes(value)) {
492
+ column.setFilter(' ');
493
+ }
494
+ } else {
495
+ setCurrentGlobalFilterType(value);
465
496
  }
466
497
 
498
+ setAnchorEl(null);
467
499
  onSelect == null ? void 0 : onSelect();
468
500
  };
469
501
 
470
- var filterType = tableInstance.state.currentFilterTypes[column.id];
502
+ var filterType = column ? tableInstance.state.currentFilterTypes[column.id] : tableInstance.state.currentGlobalFilterType;
471
503
  return React.createElement(Menu, {
472
504
  anchorEl: anchorEl,
473
505
  anchorOrigin: {
@@ -546,7 +578,7 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
546
578
  setCurrentFilterTypes(function (prev) {
547
579
  var _extends2;
548
580
 
549
- return _extends({}, prev, (_extends2 = {}, _extends2[column.id] = MRT_FILTER_TYPE.FUZZY, _extends2));
581
+ return _extends({}, prev, (_extends2 = {}, _extends2[column.id] = MRT_FILTER_TYPE.BEST_MATCH, _extends2));
550
582
  });
551
583
  };
552
584
 
@@ -585,13 +617,6 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
585
617
  }
586
618
  },
587
619
  label: isSelectFilter && !filterValue ? filterPlaceholder : undefined,
588
- InputLabelProps: {
589
- shrink: false,
590
- sx: {
591
- maxWidth: 'calc(100% - 2.5rem)'
592
- },
593
- title: filterPlaceholder
594
- },
595
620
  margin: "none",
596
621
  placeholder: filterChipLabel || isSelectFilter ? undefined : filterPlaceholder,
597
622
  onChange: function onChange(e) {
@@ -1076,7 +1101,7 @@ var MRT_TableHeadCell = function MRT_TableHeadCell(_ref) {
1076
1101
  var sortTooltip = column.isSorted ? column.isSortedDesc ? localization.clearSort : (_localization$sortByC = localization.sortByColumnDesc) == null ? void 0 : _localization$sortByC.replace('{column}', column.Header) : (_localization$sortByC2 = localization.sortByColumnAsc) == null ? void 0 : _localization$sortByC2.replace('{column}', column.Header);
1077
1102
  var filterType = tableInstance.state.currentFilterTypes[column.id];
1078
1103
  var filterTooltip = !!column.filterValue ? localization.filteringByColumn.replace('{column}', String(column.Header)).replace('{filterType}', filterType instanceof Function ? '' : // @ts-ignore
1079
- localization["filter" + (filterType.charAt(0).toUpperCase() + filterType.slice(1))]).replace('{filterValue}', column.filterValue) : localization.showHideFilters;
1104
+ localization["filter" + (filterType.charAt(0).toUpperCase() + filterType.slice(1))]).replace('{filterValue}', column.filterValue).replace('" "', '') : localization.showHideFilters;
1080
1105
  var columnHeader = column.render('Header');
1081
1106
  return React.createElement(TableCell, Object.assign({
1082
1107
  align: isParentHeader ? 'center' : 'left'
@@ -1161,142 +1186,6 @@ var MRT_TableHeadCell = function MRT_TableHeadCell(_ref) {
1161
1186
  })));
1162
1187
  };
1163
1188
 
1164
- var MRT_EditCellTextField = function MRT_EditCellTextField(_ref) {
1165
- var cell = _ref.cell;
1166
-
1167
- var _useMRT = useMRT(),
1168
- muiTableBodyCellEditTextFieldProps = _useMRT.muiTableBodyCellEditTextFieldProps,
1169
- setCurrentEditingRow = _useMRT.setCurrentEditingRow,
1170
- currentEditingRow = _useMRT.tableInstance.state.currentEditingRow;
1171
-
1172
- var handleChange = function handleChange(event) {
1173
- if (currentEditingRow) {
1174
- cell.row.values[cell.column.id] = event.target.value;
1175
- setCurrentEditingRow(_extends({}, currentEditingRow));
1176
- }
1177
-
1178
- cell.column.onCellEditChange == null ? void 0 : cell.column.onCellEditChange(event, cell);
1179
- };
1180
-
1181
- var mTableBodyCellEditTextFieldProps = muiTableBodyCellEditTextFieldProps instanceof Function ? muiTableBodyCellEditTextFieldProps(cell) : muiTableBodyCellEditTextFieldProps;
1182
- var mcTableBodyCellEditTextFieldProps = cell.column.muiTableBodyCellEditTextFieldProps instanceof Function ? cell.column.muiTableBodyCellEditTextFieldProps(cell) : cell.column.muiTableBodyCellEditTextFieldProps;
1183
-
1184
- var textFieldProps = _extends({}, mTableBodyCellEditTextFieldProps, mcTableBodyCellEditTextFieldProps);
1185
-
1186
- if (!cell.column.disableEditing && cell.column.Edit) {
1187
- return React.createElement(React.Fragment, null, cell.column.Edit(_extends({}, textFieldProps, {
1188
- cell: cell
1189
- })));
1190
- }
1191
-
1192
- return React.createElement(TextField, Object.assign({
1193
- margin: "dense",
1194
- onChange: handleChange,
1195
- onClick: function onClick(e) {
1196
- return e.stopPropagation();
1197
- },
1198
- placeholder: cell.column.Header,
1199
- value: cell.value,
1200
- variant: "standard"
1201
- }, textFieldProps));
1202
- };
1203
-
1204
- var MRT_CopyButton = function MRT_CopyButton(_ref) {
1205
- var cell = _ref.cell;
1206
-
1207
- var _useMRT = useMRT(),
1208
- localization = _useMRT.localization;
1209
-
1210
- var _useState = useState(false),
1211
- copied = _useState[0],
1212
- setCopied = _useState[1];
1213
-
1214
- var handleCopy = function handleCopy(text) {
1215
- navigator.clipboard.writeText(text);
1216
- setCopied(true);
1217
- setTimeout(function () {
1218
- return setCopied(false);
1219
- }, 4000);
1220
- };
1221
-
1222
- return React.createElement(Tooltip, {
1223
- arrow: true,
1224
- enterDelay: 1000,
1225
- enterNextDelay: 1000,
1226
- placement: "top",
1227
- title: copied ? localization.copiedToClipboard : localization.clickToCopy
1228
- }, React.createElement(Button, {
1229
- "aria-label": localization.clickToCopy,
1230
- onClick: function onClick() {
1231
- return handleCopy(cell.value);
1232
- },
1233
- size: "small",
1234
- sx: {
1235
- backgroundColor: 'transparent',
1236
- color: 'inherit',
1237
- letterSpacing: 'inherit',
1238
- fontFamily: 'inherit',
1239
- fontSize: 'inherit',
1240
- m: '-0.25rem',
1241
- textTransform: 'inherit',
1242
- textAlign: 'inherit',
1243
- minWidth: 'unset'
1244
- },
1245
- variant: "text"
1246
- }, cell.render('Cell')));
1247
- };
1248
-
1249
- var commonTableBodyCellStyles = function commonTableBodyCellStyles(densePadding) {
1250
- return {
1251
- p: densePadding ? '0.5rem' : '1rem',
1252
- transition: 'all 0.2s ease-in-out',
1253
- whiteSpace: densePadding ? 'nowrap' : 'normal'
1254
- };
1255
- };
1256
- var commonTableBodyButtonCellStyles = function commonTableBodyButtonCellStyles(densePadding) {
1257
- return {
1258
- p: densePadding ? '1px' : '0.6rem',
1259
- textAlign: 'center',
1260
- transition: 'all 0.2s ease-in-out'
1261
- };
1262
- };
1263
- var MRT_TableBodyCell = function MRT_TableBodyCell(_ref) {
1264
- var cell = _ref.cell;
1265
-
1266
- var _useMRT = useMRT(),
1267
- enableClickToCopy = _useMRT.enableClickToCopy,
1268
- isLoading = _useMRT.isLoading,
1269
- muiTableBodyCellProps = _useMRT.muiTableBodyCellProps,
1270
- muiTableBodyCellSkeletonProps = _useMRT.muiTableBodyCellSkeletonProps,
1271
- onCellClick = _useMRT.onCellClick,
1272
- _useMRT$tableInstance = _useMRT.tableInstance.state,
1273
- currentEditingRow = _useMRT$tableInstance.currentEditingRow,
1274
- densePadding = _useMRT$tableInstance.densePadding;
1275
-
1276
- var mTableCellBodyProps = muiTableBodyCellProps instanceof Function ? muiTableBodyCellProps(cell) : muiTableBodyCellProps;
1277
- var mcTableCellBodyProps = cell.column.muiTableBodyCellProps instanceof Function ? cell.column.muiTableBodyCellProps(cell) : cell.column.muiTableBodyCellProps;
1278
-
1279
- var tableCellProps = _extends({}, mTableCellBodyProps, mcTableCellBodyProps, cell.getCellProps(), {
1280
- style: _extends({}, cell.getCellProps().style, mTableCellBodyProps == null ? void 0 : mTableCellBodyProps.style, mcTableCellBodyProps == null ? void 0 : mcTableCellBodyProps.style)
1281
- });
1282
-
1283
- return React.createElement(TableCell, Object.assign({
1284
- onClick: function onClick(event) {
1285
- return onCellClick == null ? void 0 : onCellClick(event, cell);
1286
- }
1287
- }, tableCellProps, {
1288
- sx: _extends({}, commonTableBodyCellStyles(densePadding), tableCellProps == null ? void 0 : tableCellProps.sx)
1289
- }), isLoading ? React.createElement(Skeleton, Object.assign({
1290
- animation: "wave",
1291
- height: 20,
1292
- width: Math.random() * (120 - 60) + 60
1293
- }, muiTableBodyCellSkeletonProps)) : !cell.column.disableEditing && (currentEditingRow == null ? void 0 : currentEditingRow.id) === cell.row.id ? React.createElement(MRT_EditCellTextField, {
1294
- cell: cell
1295
- }) : cell.isPlaceholder ? null : cell.isAggregated ? cell.render('Aggregated') : cell.isGrouped ? React.createElement("span", null, cell.render('Cell'), " (", cell.row.subRows.length, ")") : enableClickToCopy && !cell.column.disableClickToCopy ? React.createElement(MRT_CopyButton, {
1296
- cell: cell
1297
- }) : cell.render('Cell'));
1298
- };
1299
-
1300
1189
  var MRT_SelectCheckbox = function MRT_SelectCheckbox(_ref) {
1301
1190
  var row = _ref.row,
1302
1191
  selectAll = _ref.selectAll;
@@ -1355,11 +1244,7 @@ var MRT_ExpandAllButton = function MRT_ExpandAllButton() {
1355
1244
  localization = _useMRT.localization,
1356
1245
  tableInstance = _useMRT.tableInstance;
1357
1246
 
1358
- return React.createElement(TableCell, Object.assign({
1359
- size: "small"
1360
- }, tableInstance.getToggleAllRowsExpandedProps(), {
1361
- sx: commonTableBodyButtonCellStyles(tableInstance.state.densePadding)
1362
- }), React.createElement(IconButton, {
1247
+ return React.createElement(IconButton, {
1363
1248
  "aria-label": localization.expandAll,
1364
1249
  title: localization.expandAll
1365
1250
  }, React.createElement(DoubleArrowDownIcon, {
@@ -1367,7 +1252,7 @@ var MRT_ExpandAllButton = function MRT_ExpandAllButton() {
1367
1252
  transform: "rotate(" + (tableInstance.isAllRowsExpanded ? -180 : anyRowsExpanded ? -90 : 0) + "deg)",
1368
1253
  transition: 'transform 0.2s'
1369
1254
  }
1370
- })));
1255
+ }));
1371
1256
  };
1372
1257
 
1373
1258
  var MRT_TableSpacerCell = function MRT_TableSpacerCell(_ref) {
@@ -1430,20 +1315,32 @@ var MRT_TableHeadRow = function MRT_TableHeadRow(_ref) {
1430
1315
  style: _extends({}, headerGroup.getHeaderGroupProps().style, mTableHeadRowProps == null ? void 0 : mTableHeadRowProps.style)
1431
1316
  });
1432
1317
 
1433
- return React.createElement(TableRow, Object.assign({}, tableRowProps), enableRowNumbers && (isParentHeader ? React.createElement(MRT_TableSpacerCell, null) : React.createElement(TableCell, {
1434
- sx: _extends({}, commonTableHeadCellStyles(tableInstance.state.densePadding))
1435
- }, "#")), (enableRowActions || enableRowEditing) && positionActionsColumn === 'first' && (isParentHeader ? React.createElement(MRT_TableSpacerCell, null) : React.createElement(MRT_TableHeadCellActions, null)), anyRowsCanExpand || renderDetailPanel ? !disableExpandAll && !isParentHeader ? React.createElement(MRT_ExpandAllButton, null) : React.createElement(MRT_TableSpacerCell, {
1318
+ return React.createElement(TableRow, Object.assign({}, tableRowProps), (enableRowActions || enableRowEditing) && positionActionsColumn === 'first' && (isParentHeader ? React.createElement(MRT_TableSpacerCell, null) : React.createElement(MRT_TableHeadCellActions, null)), anyRowsCanExpand || renderDetailPanel ? !disableExpandAll && !isParentHeader ? React.createElement(TableCell, Object.assign({
1319
+ size: "small"
1320
+ }, tableInstance.getToggleAllRowsExpandedProps(), {
1321
+ sx: _extends({}, commonTableHeadCellStyles(tableInstance.state.densePadding), {
1322
+ width: '3rem',
1323
+ maxWidth: '3rem',
1324
+ textAlign: 'center'
1325
+ })
1326
+ }), React.createElement(MRT_ExpandAllButton, null)) : React.createElement(MRT_TableSpacerCell, {
1436
1327
  width: (renderDetailPanel ? 2 : tableInstance.expandedDepth + 0.5) + "rem"
1437
1328
  }) : null, enableSelection ? !isParentHeader && !disableSelectAll ? React.createElement(TableCell, {
1438
- sx: _extends({}, commonTableBodyButtonCellStyles(tableInstance.state.densePadding), {
1329
+ sx: _extends({}, commonTableHeadCellStyles(tableInstance.state.densePadding), {
1439
1330
  maxWidth: '3rem',
1440
- width: '3rem'
1331
+ width: '3rem',
1332
+ textAlign: 'center'
1441
1333
  })
1442
1334
  }, React.createElement(MRT_SelectCheckbox, {
1443
1335
  selectAll: true
1444
1336
  })) : React.createElement(MRT_TableSpacerCell, {
1445
1337
  width: "1rem"
1446
- }) : null, headerGroup.headers.map(function (column) {
1338
+ }) : null, enableRowNumbers && (isParentHeader ? React.createElement(MRT_TableSpacerCell, null) : React.createElement(TableCell, {
1339
+ sx: _extends({}, commonTableHeadCellStyles(tableInstance.state.densePadding), {
1340
+ width: '2rem',
1341
+ maxWidth: '2rem'
1342
+ })
1343
+ }, "#")), headerGroup.headers.map(function (column) {
1447
1344
  return React.createElement(MRT_TableHeadCell, {
1448
1345
  key: column.getHeaderProps().key,
1449
1346
  column: column
@@ -1465,6 +1362,153 @@ var MRT_TableHead = function MRT_TableHead() {
1465
1362
  }));
1466
1363
  };
1467
1364
 
1365
+ var MRT_EditCellTextField = function MRT_EditCellTextField(_ref) {
1366
+ var cell = _ref.cell;
1367
+
1368
+ var _useMRT = useMRT(),
1369
+ muiTableBodyCellEditTextFieldProps = _useMRT.muiTableBodyCellEditTextFieldProps,
1370
+ setCurrentEditingRow = _useMRT.setCurrentEditingRow,
1371
+ currentEditingRow = _useMRT.tableInstance.state.currentEditingRow;
1372
+
1373
+ var handleChange = function handleChange(event) {
1374
+ if (currentEditingRow) {
1375
+ cell.row.values[cell.column.id] = event.target.value;
1376
+ setCurrentEditingRow(_extends({}, currentEditingRow));
1377
+ }
1378
+
1379
+ cell.column.onCellEditChange == null ? void 0 : cell.column.onCellEditChange(event, cell);
1380
+ };
1381
+
1382
+ var mTableBodyCellEditTextFieldProps = muiTableBodyCellEditTextFieldProps instanceof Function ? muiTableBodyCellEditTextFieldProps(cell) : muiTableBodyCellEditTextFieldProps;
1383
+ var mcTableBodyCellEditTextFieldProps = cell.column.muiTableBodyCellEditTextFieldProps instanceof Function ? cell.column.muiTableBodyCellEditTextFieldProps(cell) : cell.column.muiTableBodyCellEditTextFieldProps;
1384
+
1385
+ var textFieldProps = _extends({}, mTableBodyCellEditTextFieldProps, mcTableBodyCellEditTextFieldProps);
1386
+
1387
+ if (!cell.column.disableEditing && cell.column.Edit) {
1388
+ return React.createElement(React.Fragment, null, cell.column.Edit(_extends({}, textFieldProps, {
1389
+ cell: cell
1390
+ })));
1391
+ }
1392
+
1393
+ return React.createElement(TextField, Object.assign({
1394
+ margin: "dense",
1395
+ onChange: handleChange,
1396
+ onClick: function onClick(e) {
1397
+ return e.stopPropagation();
1398
+ },
1399
+ placeholder: cell.column.Header,
1400
+ value: cell.value,
1401
+ variant: "standard"
1402
+ }, textFieldProps));
1403
+ };
1404
+
1405
+ var MRT_CopyButton = function MRT_CopyButton(_ref) {
1406
+ var cell = _ref.cell,
1407
+ children = _ref.children;
1408
+
1409
+ var _useMRT = useMRT(),
1410
+ localization = _useMRT.localization,
1411
+ muiTableBodyCellCopyButtonProps = _useMRT.muiTableBodyCellCopyButtonProps;
1412
+
1413
+ var _useState = useState(false),
1414
+ copied = _useState[0],
1415
+ setCopied = _useState[1];
1416
+
1417
+ var handleCopy = function handleCopy(text) {
1418
+ navigator.clipboard.writeText(text);
1419
+ setCopied(true);
1420
+ setTimeout(function () {
1421
+ return setCopied(false);
1422
+ }, 4000);
1423
+ };
1424
+
1425
+ var mTableBodyCellCopyButtonProps = muiTableBodyCellCopyButtonProps instanceof Function ? muiTableBodyCellCopyButtonProps(cell) : muiTableBodyCellCopyButtonProps;
1426
+ var mcTableBodyCellCopyButtonProps = cell.column.muiTableBodyCellCopyButtonProps instanceof Function ? cell.column.muiTableBodyCellCopyButtonProps(cell) : cell.column.muiTableBodyCellCopyButtonProps;
1427
+
1428
+ var buttonProps = _extends({}, mTableBodyCellCopyButtonProps, mcTableBodyCellCopyButtonProps);
1429
+
1430
+ return React.createElement(Tooltip, {
1431
+ arrow: true,
1432
+ enterDelay: 1000,
1433
+ enterNextDelay: 1000,
1434
+ placement: "top",
1435
+ title: copied ? localization.copiedToClipboard : localization.clickToCopy
1436
+ }, React.createElement(Button, Object.assign({
1437
+ "aria-label": localization.clickToCopy,
1438
+ onClick: function onClick() {
1439
+ return handleCopy(cell.value);
1440
+ },
1441
+ size: "small"
1442
+ }, buttonProps, {
1443
+ sx: _extends({
1444
+ backgroundColor: 'transparent',
1445
+ border: 'none',
1446
+ color: 'inherit',
1447
+ fontFamily: 'inherit',
1448
+ fontSize: 'inherit',
1449
+ letterSpacing: 'inherit',
1450
+ m: '-0.25rem',
1451
+ minWidth: 'unset',
1452
+ textAlign: 'inherit',
1453
+ textTransform: 'inherit'
1454
+ }, buttonProps == null ? void 0 : buttonProps.sx),
1455
+ variant: "text"
1456
+ }), children));
1457
+ };
1458
+
1459
+ var commonTableBodyCellStyles = function commonTableBodyCellStyles(densePadding) {
1460
+ return {
1461
+ p: densePadding ? '0.5rem' : '1rem',
1462
+ transition: 'all 0.2s ease-in-out',
1463
+ whiteSpace: densePadding ? 'nowrap' : 'normal'
1464
+ };
1465
+ };
1466
+ var commonTableBodyButtonCellStyles = function commonTableBodyButtonCellStyles(densePadding) {
1467
+ return {
1468
+ p: densePadding ? '1px' : '0.6rem',
1469
+ textAlign: 'center',
1470
+ transition: 'all 0.2s ease-in-out'
1471
+ };
1472
+ };
1473
+ var MRT_TableBodyCell = function MRT_TableBodyCell(_ref) {
1474
+ var cell = _ref.cell;
1475
+
1476
+ var _useMRT = useMRT(),
1477
+ enableClickToCopy = _useMRT.enableClickToCopy,
1478
+ isLoading = _useMRT.isLoading,
1479
+ muiTableBodyCellProps = _useMRT.muiTableBodyCellProps,
1480
+ muiTableBodyCellSkeletonProps = _useMRT.muiTableBodyCellSkeletonProps,
1481
+ onCellClick = _useMRT.onCellClick,
1482
+ _useMRT$tableInstance = _useMRT.tableInstance.state,
1483
+ currentEditingRow = _useMRT$tableInstance.currentEditingRow,
1484
+ densePadding = _useMRT$tableInstance.densePadding;
1485
+
1486
+ var mTableCellBodyProps = muiTableBodyCellProps instanceof Function ? muiTableBodyCellProps(cell) : muiTableBodyCellProps;
1487
+ var mcTableCellBodyProps = cell.column.muiTableBodyCellProps instanceof Function ? cell.column.muiTableBodyCellProps(cell) : cell.column.muiTableBodyCellProps;
1488
+
1489
+ var tableCellProps = _extends({}, mTableCellBodyProps, mcTableCellBodyProps, cell.getCellProps(), {
1490
+ style: _extends({}, cell.getCellProps().style, mTableCellBodyProps == null ? void 0 : mTableCellBodyProps.style, mcTableCellBodyProps == null ? void 0 : mcTableCellBodyProps.style)
1491
+ });
1492
+
1493
+ return React.createElement(TableCell, Object.assign({
1494
+ onClick: function onClick(event) {
1495
+ return onCellClick == null ? void 0 : onCellClick(event, cell);
1496
+ }
1497
+ }, tableCellProps, {
1498
+ sx: _extends({}, commonTableBodyCellStyles(densePadding), tableCellProps == null ? void 0 : tableCellProps.sx)
1499
+ }), isLoading ? React.createElement(Skeleton, Object.assign({
1500
+ animation: "wave",
1501
+ height: 20,
1502
+ width: Math.random() * (120 - 60) + 60
1503
+ }, muiTableBodyCellSkeletonProps)) : !cell.column.disableEditing && (currentEditingRow == null ? void 0 : currentEditingRow.id) === cell.row.id ? React.createElement(MRT_EditCellTextField, {
1504
+ cell: cell
1505
+ }) : cell.isPlaceholder ? null : cell.isAggregated ? enableClickToCopy && !cell.column.disableClickToCopy ? React.createElement(MRT_CopyButton, {
1506
+ cell: cell
1507
+ }, cell.render('Aggregated')) : cell.render('Aggregated') : cell.isGrouped ? React.createElement("span", null, cell.render('Cell'), " (", cell.row.subRows.length, ")") : enableClickToCopy && !cell.column.disableClickToCopy ? React.createElement(MRT_CopyButton, {
1508
+ cell: cell
1509
+ }, cell.render('Cell')) : cell.render('Cell'));
1510
+ };
1511
+
1468
1512
  var MRT_TableDetailPanel = function MRT_TableDetailPanel(_ref) {
1469
1513
  var row = _ref.row;
1470
1514
 
@@ -1501,8 +1545,7 @@ var MRT_ExpandButton = function MRT_ExpandButton(_ref) {
1501
1545
  ExpandMoreIcon = _useMRT.icons.ExpandMoreIcon,
1502
1546
  localization = _useMRT.localization,
1503
1547
  onRowExpandChange = _useMRT.onRowExpandChange,
1504
- renderDetailPanel = _useMRT.renderDetailPanel,
1505
- densePadding = _useMRT.tableInstance.state.densePadding;
1548
+ renderDetailPanel = _useMRT.renderDetailPanel;
1506
1549
 
1507
1550
  var handleToggleExpand = function handleToggleExpand(event) {
1508
1551
  var _row$getToggleRowExpa;
@@ -1512,13 +1555,7 @@ var MRT_ExpandButton = function MRT_ExpandButton(_ref) {
1512
1555
  onRowExpandChange == null ? void 0 : onRowExpandChange(event, row);
1513
1556
  };
1514
1557
 
1515
- return React.createElement(TableCell, {
1516
- size: "small",
1517
- sx: _extends({}, commonTableBodyButtonCellStyles(densePadding), {
1518
- pl: row.depth + 0.5 + "rem",
1519
- textAlign: 'left'
1520
- })
1521
- }, React.createElement(IconButton, Object.assign({
1558
+ return React.createElement(IconButton, Object.assign({
1522
1559
  "aria-label": localization.expand,
1523
1560
  disabled: !row.canExpand && !renderDetailPanel,
1524
1561
  title: localization.expand
@@ -1529,7 +1566,7 @@ var MRT_ExpandButton = function MRT_ExpandButton(_ref) {
1529
1566
  transform: "rotate(" + (!row.canExpand && !renderDetailPanel ? -90 : row.isExpanded ? -180 : 0) + "deg)",
1530
1567
  transition: 'transform 0.2s'
1531
1568
  }
1532
- })));
1569
+ }));
1533
1570
  };
1534
1571
 
1535
1572
  var MRT_RowActionMenu = function MRT_RowActionMenu(_ref) {
@@ -2487,20 +2524,26 @@ var MRT_TableBodyRow = function MRT_TableBodyRow(_ref) {
2487
2524
  return onRowClick == null ? void 0 : onRowClick(event, row);
2488
2525
  },
2489
2526
  selected: row.isSelected
2490
- }, tableRowProps), enableRowNumbers && React.createElement(TableCell, {
2491
- sx: _extends({}, commonTableBodyCellStyles(densePadding))
2492
- }, row.index + 1), (enableRowActions || enableRowEditing) && positionActionsColumn === 'first' && React.createElement(MRT_ToggleRowActionMenuButton, {
2527
+ }, tableRowProps), (enableRowActions || enableRowEditing) && positionActionsColumn === 'first' && React.createElement(MRT_ToggleRowActionMenuButton, {
2493
2528
  row: row
2494
- }), (anyRowsCanExpand || renderDetailPanel) && React.createElement(MRT_ExpandButton, {
2529
+ }), (anyRowsCanExpand || renderDetailPanel) && React.createElement(TableCell, {
2530
+ size: "small",
2531
+ sx: _extends({}, commonTableBodyButtonCellStyles(densePadding), {
2532
+ pl: row.depth + 0.5 + "rem",
2533
+ textAlign: 'left'
2534
+ })
2535
+ }, React.createElement(MRT_ExpandButton, {
2495
2536
  row: row
2496
- }), enableSelection && React.createElement(TableCell, {
2537
+ })), enableSelection && React.createElement(TableCell, {
2497
2538
  sx: _extends({}, commonTableBodyButtonCellStyles(tableInstance.state.densePadding), {
2498
2539
  maxWidth: '3rem',
2499
2540
  width: '3rem'
2500
2541
  })
2501
2542
  }, React.createElement(MRT_SelectCheckbox, {
2502
2543
  row: row
2503
- })), row.cells.map(function (cell) {
2544
+ })), enableRowNumbers && React.createElement(TableCell, {
2545
+ sx: _extends({}, commonTableBodyCellStyles(densePadding))
2546
+ }, row.index + 1), row.cells.map(function (cell) {
2504
2547
  return React.createElement(MRT_TableBodyCell, {
2505
2548
  key: cell.getCellProps().key,
2506
2549
  cell: cell
@@ -2645,9 +2688,13 @@ var MRT_SearchTextField = function MRT_SearchTextField() {
2645
2688
  onGlobalFilterChange = _useMRT.onGlobalFilterChange,
2646
2689
  tableInstance = _useMRT.tableInstance;
2647
2690
 
2648
- var _useState = useState(''),
2649
- searchValue = _useState[0],
2650
- setSearchValue = _useState[1];
2691
+ var _useState = useState(null),
2692
+ anchorEl = _useState[0],
2693
+ setAnchorEl = _useState[1];
2694
+
2695
+ var _useState2 = useState(''),
2696
+ searchValue = _useState2[0],
2697
+ setSearchValue = _useState2[1];
2651
2698
 
2652
2699
  var handleChange = useAsyncDebounce(function (event) {
2653
2700
  var _event$target$value;
@@ -2656,6 +2703,10 @@ var MRT_SearchTextField = function MRT_SearchTextField() {
2656
2703
  onGlobalFilterChange == null ? void 0 : onGlobalFilterChange(event);
2657
2704
  }, 200);
2658
2705
 
2706
+ var handleGlobalFilterMenuOpen = function handleGlobalFilterMenuOpen(event) {
2707
+ setAnchorEl(event.currentTarget);
2708
+ };
2709
+
2659
2710
  var handleClear = function handleClear() {
2660
2711
  setSearchValue('');
2661
2712
  tableInstance.setGlobalFilter(undefined);
@@ -2676,9 +2727,20 @@ var MRT_SearchTextField = function MRT_SearchTextField() {
2676
2727
  InputProps: {
2677
2728
  startAdornment: React.createElement(InputAdornment, {
2678
2729
  position: "start"
2730
+ }, React.createElement(Tooltip, {
2731
+ arrow: true,
2732
+ title: localization.changeSearchMode
2733
+ }, React.createElement("span", null, React.createElement(IconButton, {
2734
+ "aria-label": localization.changeSearchMode,
2735
+ onClick: handleGlobalFilterMenuOpen,
2736
+ size: "small",
2737
+ sx: {
2738
+ height: '1.75rem',
2739
+ width: '1.75rem'
2740
+ }
2679
2741
  }, React.createElement(SearchIcon, {
2680
2742
  fontSize: "small"
2681
- })),
2743
+ }))))),
2682
2744
  endAdornment: React.createElement(InputAdornment, {
2683
2745
  position: "end"
2684
2746
  }, React.createElement(IconButton, {
@@ -2695,7 +2757,10 @@ var MRT_SearchTextField = function MRT_SearchTextField() {
2695
2757
  sx: _extends({
2696
2758
  justifySelf: 'end'
2697
2759
  }, muiSearchTextFieldProps == null ? void 0 : muiSearchTextFieldProps.sx)
2698
- })));
2760
+ })), React.createElement(MRT_FilterTypeMenu, {
2761
+ anchorEl: anchorEl,
2762
+ setAnchorEl: setAnchorEl
2763
+ }));
2699
2764
  };
2700
2765
 
2701
2766
  var MRT_FullScreenToggleButton = function MRT_FullScreenToggleButton(_ref) {
@@ -3091,6 +3156,7 @@ var MRT_DefaultLocalization_EN = {
3091
3156
  actions: 'Actions',
3092
3157
  cancel: 'Cancel',
3093
3158
  changeFilterMode: 'Change filter mode',
3159
+ changeSearchMode: 'Change search mode',
3094
3160
  clearFilter: 'Clear filter',
3095
3161
  clearSearch: 'Clear search',
3096
3162
  clearSort: 'Clear sort',
@@ -3100,12 +3166,13 @@ var MRT_DefaultLocalization_EN = {
3100
3166
  edit: 'Edit',
3101
3167
  expand: 'Expand',
3102
3168
  expandAll: 'Expand all',
3169
+ filterBestMatch: 'Best Match',
3170
+ filterBestMatchFirst: 'Best Match First',
3103
3171
  filterByColumn: 'Filter by {column}',
3104
- filterContains: 'Contains Exact',
3172
+ filterContains: 'Contains',
3105
3173
  filterEmpty: 'Empty',
3106
3174
  filterEndsWith: 'Ends With',
3107
3175
  filterEquals: 'Equals',
3108
- filterFuzzy: 'Fuzzy Match',
3109
3176
  filterGreaterThan: 'Greater Than',
3110
3177
  filterLessThan: 'Less Than',
3111
3178
  filterMode: 'Filter Mode: {filterType}',
@@ -3175,7 +3242,7 @@ var MaterialReactTable = (function (_ref) {
3175
3242
  } : _ref$defaultColumn,
3176
3243
  filterTypes = _ref.filterTypes,
3177
3244
  _ref$globalFilter = _ref.globalFilter,
3178
- globalFilter = _ref$globalFilter === void 0 ? 'fuzzy' : _ref$globalFilter,
3245
+ globalFilter = _ref$globalFilter === void 0 ? MRT_FILTER_TYPE.BEST_MATCH_FIRST : _ref$globalFilter,
3179
3246
  icons = _ref.icons,
3180
3247
  localization = _ref.localization,
3181
3248
  _ref$positionActionsC = _ref.positionActionsColumn,