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.
@@ -106,6 +106,22 @@ function _objectWithoutPropertiesLoose(source, excluded) {
106
106
  return target;
107
107
  }
108
108
 
109
+ var MRT_FILTER_TYPE;
110
+
111
+ (function (MRT_FILTER_TYPE) {
112
+ MRT_FILTER_TYPE["BEST_MATCH"] = "bestMatch";
113
+ MRT_FILTER_TYPE["BEST_MATCH_FIRST"] = "bestMatchFirst";
114
+ MRT_FILTER_TYPE["CONTAINS"] = "contains";
115
+ MRT_FILTER_TYPE["EMPTY"] = "empty";
116
+ MRT_FILTER_TYPE["ENDS_WITH"] = "endsWith";
117
+ MRT_FILTER_TYPE["EQUALS"] = "equals";
118
+ MRT_FILTER_TYPE["GREATER_THAN"] = "greaterThan";
119
+ MRT_FILTER_TYPE["LESS_THAN"] = "lessThan";
120
+ MRT_FILTER_TYPE["NOT_EMPTY"] = "notEmpty";
121
+ MRT_FILTER_TYPE["NOT_EQUALS"] = "notEquals";
122
+ MRT_FILTER_TYPE["STARTS_WITH"] = "startsWith";
123
+ })(MRT_FILTER_TYPE || (MRT_FILTER_TYPE = {}));
124
+
109
125
  var findLowestLevelCols = function findLowestLevelCols(columns) {
110
126
  var lowestLevelColumns = columns;
111
127
  var currentCols = columns;
@@ -167,14 +183,18 @@ var MaterialReactTableProvider = function MaterialReactTableProvider(props) {
167
183
 
168
184
  var _useState6 = React.useState(function () {
169
185
  return Object.assign.apply(Object, [{}].concat(findLowestLevelCols(props.columns).map(function (c) {
170
- var _ref, _c$filter, _props$initialState5, _props$initialState5$, _ref2;
186
+ var _ref, _c$filter, _props$initialState5, _props$initialState5$, _c$filterSelectOption, _ref2;
171
187
 
172
- 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;
188
+ 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;
173
189
  })));
174
190
  }),
175
191
  currentFilterTypes = _useState6[0],
176
192
  setCurrentFilterTypes = _useState6[1];
177
193
 
194
+ var _useState7 = React.useState(props.globalFilter),
195
+ currentGlobalFilterType = _useState7[0],
196
+ setCurrentGlobalFilterType = _useState7[1];
197
+
178
198
  var applyFiltersToColumns = React.useCallback(function (cols) {
179
199
  return cols.map(function (column) {
180
200
  if (column.columns) {
@@ -205,17 +225,19 @@ var MaterialReactTableProvider = function MaterialReactTableProvider(props) {
205
225
  // @ts-ignore
206
226
  columns: columns,
207
227
  data: data,
228
+ globalFilter: currentGlobalFilterType,
208
229
  useControlledState: function useControlledState(state) {
209
230
  return React.useMemo(function () {
210
231
  return _extends({}, state, {
211
232
  currentEditingRow: currentEditingRow,
212
233
  currentFilterTypes: currentFilterTypes,
234
+ currentGlobalFilterType: currentGlobalFilterType,
213
235
  densePadding: densePadding,
214
236
  fullScreen: fullScreen,
215
237
  showFilters: showFilters,
216
238
  showSearch: showSearch
217
239
  }, props == null ? void 0 : props.useControlledState == null ? void 0 : props.useControlledState(state));
218
- }, [currentEditingRow, currentFilterTypes, densePadding, fullScreen, showFilters, showSearch, state]);
240
+ }, [currentEditingRow, currentFilterTypes, currentGlobalFilterType, densePadding, fullScreen, showFilters, showSearch, state]);
219
241
  }
220
242
  })].concat(hooks));
221
243
  var idPrefix = React.useMemo(function () {
@@ -241,6 +263,7 @@ var MaterialReactTableProvider = function MaterialReactTableProvider(props) {
241
263
  //@ts-ignore
242
264
  setCurrentEditingRow: setCurrentEditingRow,
243
265
  setCurrentFilterTypes: setCurrentFilterTypes,
266
+ setCurrentGlobalFilterType: setCurrentGlobalFilterType,
244
267
  setDensePadding: setDensePadding,
245
268
  setFullScreen: setFullScreen,
246
269
  setShowFilters: setShowFilters,
@@ -254,22 +277,19 @@ var useMRT = function useMRT() {
254
277
  return React.useContext(MaterialReactTableContext);
255
278
  };
256
279
 
257
- var MRT_FILTER_TYPE;
280
+ var bestMatchFirst = function bestMatchFirst(rows, columnIds, filterValue) {
281
+ return matchSorter.matchSorter(rows, filterValue.toString().trim(), {
282
+ keys: Array.isArray(columnIds) ? columnIds.map(function (c) {
283
+ return "values." + c;
284
+ }) : ["values." + columnIds]
285
+ });
286
+ };
258
287
 
259
- (function (MRT_FILTER_TYPE) {
260
- MRT_FILTER_TYPE["CONTAINS"] = "contains";
261
- MRT_FILTER_TYPE["EMPTY"] = "empty";
262
- MRT_FILTER_TYPE["ENDS_WITH"] = "endsWith";
263
- MRT_FILTER_TYPE["EQUALS"] = "equals";
264
- MRT_FILTER_TYPE["FUZZY"] = "fuzzy";
265
- MRT_FILTER_TYPE["GREATER_THAN"] = "greaterThan";
266
- MRT_FILTER_TYPE["LESS_THAN"] = "lessThan";
267
- MRT_FILTER_TYPE["NOT_EMPTY"] = "notEmpty";
268
- MRT_FILTER_TYPE["NOT_EQUALS"] = "notEquals";
269
- MRT_FILTER_TYPE["STARTS_WITH"] = "startsWith";
270
- })(MRT_FILTER_TYPE || (MRT_FILTER_TYPE = {}));
288
+ bestMatchFirst.autoRemove = function (val) {
289
+ return !val;
290
+ };
271
291
 
272
- var fuzzy = function fuzzy(rows, columnIds, filterValue) {
292
+ var bestMatch = function bestMatch(rows, columnIds, filterValue) {
273
293
  return matchSorter.matchSorter(rows, filterValue.toString().trim(), {
274
294
  keys: Array.isArray(columnIds) ? columnIds.map(function (c) {
275
295
  return "values." + c;
@@ -280,7 +300,7 @@ var fuzzy = function fuzzy(rows, columnIds, filterValue) {
280
300
  });
281
301
  };
282
302
 
283
- fuzzy.autoRemove = function (val) {
303
+ bestMatch.autoRemove = function (val) {
284
304
  return !val;
285
305
  };
286
306
 
@@ -375,11 +395,12 @@ notEmpty.autoRemove = function (val) {
375
395
  };
376
396
 
377
397
  var defaultFilterFNs = {
398
+ bestMatch: bestMatch,
399
+ bestMatchFirst: bestMatchFirst,
378
400
  contains: contains,
379
401
  empty: empty,
380
402
  endsWith: endsWith,
381
403
  equals: equals,
382
- fuzzy: fuzzy,
383
404
  greaterThan: greaterThan,
384
405
  lessThan: lessThan,
385
406
  notEmpty: notEmpty,
@@ -399,20 +420,27 @@ var MRT_FilterTypeMenu = function MRT_FilterTypeMenu(_ref) {
399
420
  setAnchorEl = _ref.setAnchorEl;
400
421
 
401
422
  var _useMRT = useMRT(),
423
+ enabledGlobalFilterTypes = _useMRT.enabledGlobalFilterTypes,
402
424
  localization = _useMRT.localization,
403
425
  setCurrentFilterTypes = _useMRT.setCurrentFilterTypes,
426
+ setCurrentGlobalFilterType = _useMRT.setCurrentGlobalFilterType,
404
427
  tableInstance = _useMRT.tableInstance;
405
428
 
406
429
  var filterTypes = React.useMemo(function () {
407
430
  return [{
408
- type: MRT_FILTER_TYPE.FUZZY,
409
- label: localization.filterFuzzy,
431
+ type: MRT_FILTER_TYPE.BEST_MATCH_FIRST,
432
+ label: localization.filterBestMatchFirst,
410
433
  divider: false,
411
- fn: fuzzy
434
+ fn: bestMatchFirst
435
+ }, {
436
+ type: MRT_FILTER_TYPE.BEST_MATCH,
437
+ label: localization.filterBestMatch,
438
+ divider: !!column,
439
+ fn: bestMatch
412
440
  }, {
413
441
  type: MRT_FILTER_TYPE.CONTAINS,
414
442
  label: localization.filterContains,
415
- divider: true,
443
+ divider: false,
416
444
  fn: contains
417
445
  }, {
418
446
  type: MRT_FILTER_TYPE.STARTS_WITH,
@@ -455,26 +483,30 @@ var MRT_FilterTypeMenu = function MRT_FilterTypeMenu(_ref) {
455
483
  divider: false,
456
484
  fn: notEmpty
457
485
  }].filter(function (filterType) {
458
- return !column.filterTypes || column.filterTypes.includes(filterType.type);
486
+ 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);
459
487
  });
460
488
  }, []);
461
489
 
462
490
  var handleSelectFilterType = function handleSelectFilterType(value) {
463
- setAnchorEl(null);
464
- setCurrentFilterTypes(function (prev) {
465
- var _extends2;
491
+ if (column) {
492
+ setCurrentFilterTypes(function (prev) {
493
+ var _extends2;
466
494
 
467
- return _extends({}, prev, (_extends2 = {}, _extends2[column.id] = value, _extends2));
468
- });
495
+ return _extends({}, prev, (_extends2 = {}, _extends2[column.id] = value, _extends2));
496
+ });
469
497
 
470
- if ([MRT_FILTER_TYPE.EMPTY, MRT_FILTER_TYPE.NOT_EMPTY].includes(value)) {
471
- column.setFilter(' ');
498
+ if ([MRT_FILTER_TYPE.EMPTY, MRT_FILTER_TYPE.NOT_EMPTY].includes(value)) {
499
+ column.setFilter(' ');
500
+ }
501
+ } else {
502
+ setCurrentGlobalFilterType(value);
472
503
  }
473
504
 
505
+ setAnchorEl(null);
474
506
  onSelect == null ? void 0 : onSelect();
475
507
  };
476
508
 
477
- var filterType = tableInstance.state.currentFilterTypes[column.id];
509
+ var filterType = column ? tableInstance.state.currentFilterTypes[column.id] : tableInstance.state.currentGlobalFilterType;
478
510
  return React__default.createElement(material.Menu, {
479
511
  anchorEl: anchorEl,
480
512
  anchorOrigin: {
@@ -553,7 +585,7 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
553
585
  setCurrentFilterTypes(function (prev) {
554
586
  var _extends2;
555
587
 
556
- return _extends({}, prev, (_extends2 = {}, _extends2[column.id] = MRT_FILTER_TYPE.FUZZY, _extends2));
588
+ return _extends({}, prev, (_extends2 = {}, _extends2[column.id] = MRT_FILTER_TYPE.BEST_MATCH, _extends2));
557
589
  });
558
590
  };
559
591
 
@@ -592,13 +624,6 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
592
624
  }
593
625
  },
594
626
  label: isSelectFilter && !filterValue ? filterPlaceholder : undefined,
595
- InputLabelProps: {
596
- shrink: false,
597
- sx: {
598
- maxWidth: 'calc(100% - 2.5rem)'
599
- },
600
- title: filterPlaceholder
601
- },
602
627
  margin: "none",
603
628
  placeholder: filterChipLabel || isSelectFilter ? undefined : filterPlaceholder,
604
629
  onChange: function onChange(e) {
@@ -1083,7 +1108,7 @@ var MRT_TableHeadCell = function MRT_TableHeadCell(_ref) {
1083
1108
  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);
1084
1109
  var filterType = tableInstance.state.currentFilterTypes[column.id];
1085
1110
  var filterTooltip = !!column.filterValue ? localization.filteringByColumn.replace('{column}', String(column.Header)).replace('{filterType}', filterType instanceof Function ? '' : // @ts-ignore
1086
- localization["filter" + (filterType.charAt(0).toUpperCase() + filterType.slice(1))]).replace('{filterValue}', column.filterValue) : localization.showHideFilters;
1111
+ localization["filter" + (filterType.charAt(0).toUpperCase() + filterType.slice(1))]).replace('{filterValue}', column.filterValue).replace('" "', '') : localization.showHideFilters;
1087
1112
  var columnHeader = column.render('Header');
1088
1113
  return React__default.createElement(material.TableCell, Object.assign({
1089
1114
  align: isParentHeader ? 'center' : 'left'
@@ -1168,142 +1193,6 @@ var MRT_TableHeadCell = function MRT_TableHeadCell(_ref) {
1168
1193
  })));
1169
1194
  };
1170
1195
 
1171
- var MRT_EditCellTextField = function MRT_EditCellTextField(_ref) {
1172
- var cell = _ref.cell;
1173
-
1174
- var _useMRT = useMRT(),
1175
- muiTableBodyCellEditTextFieldProps = _useMRT.muiTableBodyCellEditTextFieldProps,
1176
- setCurrentEditingRow = _useMRT.setCurrentEditingRow,
1177
- currentEditingRow = _useMRT.tableInstance.state.currentEditingRow;
1178
-
1179
- var handleChange = function handleChange(event) {
1180
- if (currentEditingRow) {
1181
- cell.row.values[cell.column.id] = event.target.value;
1182
- setCurrentEditingRow(_extends({}, currentEditingRow));
1183
- }
1184
-
1185
- cell.column.onCellEditChange == null ? void 0 : cell.column.onCellEditChange(event, cell);
1186
- };
1187
-
1188
- var mTableBodyCellEditTextFieldProps = muiTableBodyCellEditTextFieldProps instanceof Function ? muiTableBodyCellEditTextFieldProps(cell) : muiTableBodyCellEditTextFieldProps;
1189
- var mcTableBodyCellEditTextFieldProps = cell.column.muiTableBodyCellEditTextFieldProps instanceof Function ? cell.column.muiTableBodyCellEditTextFieldProps(cell) : cell.column.muiTableBodyCellEditTextFieldProps;
1190
-
1191
- var textFieldProps = _extends({}, mTableBodyCellEditTextFieldProps, mcTableBodyCellEditTextFieldProps);
1192
-
1193
- if (!cell.column.disableEditing && cell.column.Edit) {
1194
- return React__default.createElement(React__default.Fragment, null, cell.column.Edit(_extends({}, textFieldProps, {
1195
- cell: cell
1196
- })));
1197
- }
1198
-
1199
- return React__default.createElement(material.TextField, Object.assign({
1200
- margin: "dense",
1201
- onChange: handleChange,
1202
- onClick: function onClick(e) {
1203
- return e.stopPropagation();
1204
- },
1205
- placeholder: cell.column.Header,
1206
- value: cell.value,
1207
- variant: "standard"
1208
- }, textFieldProps));
1209
- };
1210
-
1211
- var MRT_CopyButton = function MRT_CopyButton(_ref) {
1212
- var cell = _ref.cell;
1213
-
1214
- var _useMRT = useMRT(),
1215
- localization = _useMRT.localization;
1216
-
1217
- var _useState = React.useState(false),
1218
- copied = _useState[0],
1219
- setCopied = _useState[1];
1220
-
1221
- var handleCopy = function handleCopy(text) {
1222
- navigator.clipboard.writeText(text);
1223
- setCopied(true);
1224
- setTimeout(function () {
1225
- return setCopied(false);
1226
- }, 4000);
1227
- };
1228
-
1229
- return React__default.createElement(material.Tooltip, {
1230
- arrow: true,
1231
- enterDelay: 1000,
1232
- enterNextDelay: 1000,
1233
- placement: "top",
1234
- title: copied ? localization.copiedToClipboard : localization.clickToCopy
1235
- }, React__default.createElement(material.Button, {
1236
- "aria-label": localization.clickToCopy,
1237
- onClick: function onClick() {
1238
- return handleCopy(cell.value);
1239
- },
1240
- size: "small",
1241
- sx: {
1242
- backgroundColor: 'transparent',
1243
- color: 'inherit',
1244
- letterSpacing: 'inherit',
1245
- fontFamily: 'inherit',
1246
- fontSize: 'inherit',
1247
- m: '-0.25rem',
1248
- textTransform: 'inherit',
1249
- textAlign: 'inherit',
1250
- minWidth: 'unset'
1251
- },
1252
- variant: "text"
1253
- }, cell.render('Cell')));
1254
- };
1255
-
1256
- var commonTableBodyCellStyles = function commonTableBodyCellStyles(densePadding) {
1257
- return {
1258
- p: densePadding ? '0.5rem' : '1rem',
1259
- transition: 'all 0.2s ease-in-out',
1260
- whiteSpace: densePadding ? 'nowrap' : 'normal'
1261
- };
1262
- };
1263
- var commonTableBodyButtonCellStyles = function commonTableBodyButtonCellStyles(densePadding) {
1264
- return {
1265
- p: densePadding ? '1px' : '0.6rem',
1266
- textAlign: 'center',
1267
- transition: 'all 0.2s ease-in-out'
1268
- };
1269
- };
1270
- var MRT_TableBodyCell = function MRT_TableBodyCell(_ref) {
1271
- var cell = _ref.cell;
1272
-
1273
- var _useMRT = useMRT(),
1274
- enableClickToCopy = _useMRT.enableClickToCopy,
1275
- isLoading = _useMRT.isLoading,
1276
- muiTableBodyCellProps = _useMRT.muiTableBodyCellProps,
1277
- muiTableBodyCellSkeletonProps = _useMRT.muiTableBodyCellSkeletonProps,
1278
- onCellClick = _useMRT.onCellClick,
1279
- _useMRT$tableInstance = _useMRT.tableInstance.state,
1280
- currentEditingRow = _useMRT$tableInstance.currentEditingRow,
1281
- densePadding = _useMRT$tableInstance.densePadding;
1282
-
1283
- var mTableCellBodyProps = muiTableBodyCellProps instanceof Function ? muiTableBodyCellProps(cell) : muiTableBodyCellProps;
1284
- var mcTableCellBodyProps = cell.column.muiTableBodyCellProps instanceof Function ? cell.column.muiTableBodyCellProps(cell) : cell.column.muiTableBodyCellProps;
1285
-
1286
- var tableCellProps = _extends({}, mTableCellBodyProps, mcTableCellBodyProps, cell.getCellProps(), {
1287
- style: _extends({}, cell.getCellProps().style, mTableCellBodyProps == null ? void 0 : mTableCellBodyProps.style, mcTableCellBodyProps == null ? void 0 : mcTableCellBodyProps.style)
1288
- });
1289
-
1290
- return React__default.createElement(material.TableCell, Object.assign({
1291
- onClick: function onClick(event) {
1292
- return onCellClick == null ? void 0 : onCellClick(event, cell);
1293
- }
1294
- }, tableCellProps, {
1295
- sx: _extends({}, commonTableBodyCellStyles(densePadding), tableCellProps == null ? void 0 : tableCellProps.sx)
1296
- }), isLoading ? React__default.createElement(material.Skeleton, Object.assign({
1297
- animation: "wave",
1298
- height: 20,
1299
- width: Math.random() * (120 - 60) + 60
1300
- }, muiTableBodyCellSkeletonProps)) : !cell.column.disableEditing && (currentEditingRow == null ? void 0 : currentEditingRow.id) === cell.row.id ? React__default.createElement(MRT_EditCellTextField, {
1301
- cell: cell
1302
- }) : cell.isPlaceholder ? null : cell.isAggregated ? cell.render('Aggregated') : cell.isGrouped ? React__default.createElement("span", null, cell.render('Cell'), " (", cell.row.subRows.length, ")") : enableClickToCopy && !cell.column.disableClickToCopy ? React__default.createElement(MRT_CopyButton, {
1303
- cell: cell
1304
- }) : cell.render('Cell'));
1305
- };
1306
-
1307
1196
  var MRT_SelectCheckbox = function MRT_SelectCheckbox(_ref) {
1308
1197
  var row = _ref.row,
1309
1198
  selectAll = _ref.selectAll;
@@ -1362,11 +1251,7 @@ var MRT_ExpandAllButton = function MRT_ExpandAllButton() {
1362
1251
  localization = _useMRT.localization,
1363
1252
  tableInstance = _useMRT.tableInstance;
1364
1253
 
1365
- return React__default.createElement(material.TableCell, Object.assign({
1366
- size: "small"
1367
- }, tableInstance.getToggleAllRowsExpandedProps(), {
1368
- sx: commonTableBodyButtonCellStyles(tableInstance.state.densePadding)
1369
- }), React__default.createElement(material.IconButton, {
1254
+ return React__default.createElement(material.IconButton, {
1370
1255
  "aria-label": localization.expandAll,
1371
1256
  title: localization.expandAll
1372
1257
  }, React__default.createElement(DoubleArrowDownIcon, {
@@ -1374,7 +1259,7 @@ var MRT_ExpandAllButton = function MRT_ExpandAllButton() {
1374
1259
  transform: "rotate(" + (tableInstance.isAllRowsExpanded ? -180 : anyRowsExpanded ? -90 : 0) + "deg)",
1375
1260
  transition: 'transform 0.2s'
1376
1261
  }
1377
- })));
1262
+ }));
1378
1263
  };
1379
1264
 
1380
1265
  var MRT_TableSpacerCell = function MRT_TableSpacerCell(_ref) {
@@ -1437,20 +1322,32 @@ var MRT_TableHeadRow = function MRT_TableHeadRow(_ref) {
1437
1322
  style: _extends({}, headerGroup.getHeaderGroupProps().style, mTableHeadRowProps == null ? void 0 : mTableHeadRowProps.style)
1438
1323
  });
1439
1324
 
1440
- return React__default.createElement(material.TableRow, Object.assign({}, tableRowProps), enableRowNumbers && (isParentHeader ? React__default.createElement(MRT_TableSpacerCell, null) : React__default.createElement(material.TableCell, {
1441
- sx: _extends({}, commonTableHeadCellStyles(tableInstance.state.densePadding))
1442
- }, "#")), (enableRowActions || enableRowEditing) && positionActionsColumn === 'first' && (isParentHeader ? React__default.createElement(MRT_TableSpacerCell, null) : React__default.createElement(MRT_TableHeadCellActions, null)), anyRowsCanExpand || renderDetailPanel ? !disableExpandAll && !isParentHeader ? React__default.createElement(MRT_ExpandAllButton, null) : React__default.createElement(MRT_TableSpacerCell, {
1325
+ return React__default.createElement(material.TableRow, Object.assign({}, tableRowProps), (enableRowActions || enableRowEditing) && positionActionsColumn === 'first' && (isParentHeader ? React__default.createElement(MRT_TableSpacerCell, null) : React__default.createElement(MRT_TableHeadCellActions, null)), anyRowsCanExpand || renderDetailPanel ? !disableExpandAll && !isParentHeader ? React__default.createElement(material.TableCell, Object.assign({
1326
+ size: "small"
1327
+ }, tableInstance.getToggleAllRowsExpandedProps(), {
1328
+ sx: _extends({}, commonTableHeadCellStyles(tableInstance.state.densePadding), {
1329
+ width: '3rem',
1330
+ maxWidth: '3rem',
1331
+ textAlign: 'center'
1332
+ })
1333
+ }), React__default.createElement(MRT_ExpandAllButton, null)) : React__default.createElement(MRT_TableSpacerCell, {
1443
1334
  width: (renderDetailPanel ? 2 : tableInstance.expandedDepth + 0.5) + "rem"
1444
1335
  }) : null, enableSelection ? !isParentHeader && !disableSelectAll ? React__default.createElement(material.TableCell, {
1445
- sx: _extends({}, commonTableBodyButtonCellStyles(tableInstance.state.densePadding), {
1336
+ sx: _extends({}, commonTableHeadCellStyles(tableInstance.state.densePadding), {
1446
1337
  maxWidth: '3rem',
1447
- width: '3rem'
1338
+ width: '3rem',
1339
+ textAlign: 'center'
1448
1340
  })
1449
1341
  }, React__default.createElement(MRT_SelectCheckbox, {
1450
1342
  selectAll: true
1451
1343
  })) : React__default.createElement(MRT_TableSpacerCell, {
1452
1344
  width: "1rem"
1453
- }) : null, headerGroup.headers.map(function (column) {
1345
+ }) : null, enableRowNumbers && (isParentHeader ? React__default.createElement(MRT_TableSpacerCell, null) : React__default.createElement(material.TableCell, {
1346
+ sx: _extends({}, commonTableHeadCellStyles(tableInstance.state.densePadding), {
1347
+ width: '2rem',
1348
+ maxWidth: '2rem'
1349
+ })
1350
+ }, "#")), headerGroup.headers.map(function (column) {
1454
1351
  return React__default.createElement(MRT_TableHeadCell, {
1455
1352
  key: column.getHeaderProps().key,
1456
1353
  column: column
@@ -1472,6 +1369,153 @@ var MRT_TableHead = function MRT_TableHead() {
1472
1369
  }));
1473
1370
  };
1474
1371
 
1372
+ var MRT_EditCellTextField = function MRT_EditCellTextField(_ref) {
1373
+ var cell = _ref.cell;
1374
+
1375
+ var _useMRT = useMRT(),
1376
+ muiTableBodyCellEditTextFieldProps = _useMRT.muiTableBodyCellEditTextFieldProps,
1377
+ setCurrentEditingRow = _useMRT.setCurrentEditingRow,
1378
+ currentEditingRow = _useMRT.tableInstance.state.currentEditingRow;
1379
+
1380
+ var handleChange = function handleChange(event) {
1381
+ if (currentEditingRow) {
1382
+ cell.row.values[cell.column.id] = event.target.value;
1383
+ setCurrentEditingRow(_extends({}, currentEditingRow));
1384
+ }
1385
+
1386
+ cell.column.onCellEditChange == null ? void 0 : cell.column.onCellEditChange(event, cell);
1387
+ };
1388
+
1389
+ var mTableBodyCellEditTextFieldProps = muiTableBodyCellEditTextFieldProps instanceof Function ? muiTableBodyCellEditTextFieldProps(cell) : muiTableBodyCellEditTextFieldProps;
1390
+ var mcTableBodyCellEditTextFieldProps = cell.column.muiTableBodyCellEditTextFieldProps instanceof Function ? cell.column.muiTableBodyCellEditTextFieldProps(cell) : cell.column.muiTableBodyCellEditTextFieldProps;
1391
+
1392
+ var textFieldProps = _extends({}, mTableBodyCellEditTextFieldProps, mcTableBodyCellEditTextFieldProps);
1393
+
1394
+ if (!cell.column.disableEditing && cell.column.Edit) {
1395
+ return React__default.createElement(React__default.Fragment, null, cell.column.Edit(_extends({}, textFieldProps, {
1396
+ cell: cell
1397
+ })));
1398
+ }
1399
+
1400
+ return React__default.createElement(material.TextField, Object.assign({
1401
+ margin: "dense",
1402
+ onChange: handleChange,
1403
+ onClick: function onClick(e) {
1404
+ return e.stopPropagation();
1405
+ },
1406
+ placeholder: cell.column.Header,
1407
+ value: cell.value,
1408
+ variant: "standard"
1409
+ }, textFieldProps));
1410
+ };
1411
+
1412
+ var MRT_CopyButton = function MRT_CopyButton(_ref) {
1413
+ var cell = _ref.cell,
1414
+ children = _ref.children;
1415
+
1416
+ var _useMRT = useMRT(),
1417
+ localization = _useMRT.localization,
1418
+ muiTableBodyCellCopyButtonProps = _useMRT.muiTableBodyCellCopyButtonProps;
1419
+
1420
+ var _useState = React.useState(false),
1421
+ copied = _useState[0],
1422
+ setCopied = _useState[1];
1423
+
1424
+ var handleCopy = function handleCopy(text) {
1425
+ navigator.clipboard.writeText(text);
1426
+ setCopied(true);
1427
+ setTimeout(function () {
1428
+ return setCopied(false);
1429
+ }, 4000);
1430
+ };
1431
+
1432
+ var mTableBodyCellCopyButtonProps = muiTableBodyCellCopyButtonProps instanceof Function ? muiTableBodyCellCopyButtonProps(cell) : muiTableBodyCellCopyButtonProps;
1433
+ var mcTableBodyCellCopyButtonProps = cell.column.muiTableBodyCellCopyButtonProps instanceof Function ? cell.column.muiTableBodyCellCopyButtonProps(cell) : cell.column.muiTableBodyCellCopyButtonProps;
1434
+
1435
+ var buttonProps = _extends({}, mTableBodyCellCopyButtonProps, mcTableBodyCellCopyButtonProps);
1436
+
1437
+ return React__default.createElement(material.Tooltip, {
1438
+ arrow: true,
1439
+ enterDelay: 1000,
1440
+ enterNextDelay: 1000,
1441
+ placement: "top",
1442
+ title: copied ? localization.copiedToClipboard : localization.clickToCopy
1443
+ }, React__default.createElement(material.Button, Object.assign({
1444
+ "aria-label": localization.clickToCopy,
1445
+ onClick: function onClick() {
1446
+ return handleCopy(cell.value);
1447
+ },
1448
+ size: "small"
1449
+ }, buttonProps, {
1450
+ sx: _extends({
1451
+ backgroundColor: 'transparent',
1452
+ border: 'none',
1453
+ color: 'inherit',
1454
+ fontFamily: 'inherit',
1455
+ fontSize: 'inherit',
1456
+ letterSpacing: 'inherit',
1457
+ m: '-0.25rem',
1458
+ minWidth: 'unset',
1459
+ textAlign: 'inherit',
1460
+ textTransform: 'inherit'
1461
+ }, buttonProps == null ? void 0 : buttonProps.sx),
1462
+ variant: "text"
1463
+ }), children));
1464
+ };
1465
+
1466
+ var commonTableBodyCellStyles = function commonTableBodyCellStyles(densePadding) {
1467
+ return {
1468
+ p: densePadding ? '0.5rem' : '1rem',
1469
+ transition: 'all 0.2s ease-in-out',
1470
+ whiteSpace: densePadding ? 'nowrap' : 'normal'
1471
+ };
1472
+ };
1473
+ var commonTableBodyButtonCellStyles = function commonTableBodyButtonCellStyles(densePadding) {
1474
+ return {
1475
+ p: densePadding ? '1px' : '0.6rem',
1476
+ textAlign: 'center',
1477
+ transition: 'all 0.2s ease-in-out'
1478
+ };
1479
+ };
1480
+ var MRT_TableBodyCell = function MRT_TableBodyCell(_ref) {
1481
+ var cell = _ref.cell;
1482
+
1483
+ var _useMRT = useMRT(),
1484
+ enableClickToCopy = _useMRT.enableClickToCopy,
1485
+ isLoading = _useMRT.isLoading,
1486
+ muiTableBodyCellProps = _useMRT.muiTableBodyCellProps,
1487
+ muiTableBodyCellSkeletonProps = _useMRT.muiTableBodyCellSkeletonProps,
1488
+ onCellClick = _useMRT.onCellClick,
1489
+ _useMRT$tableInstance = _useMRT.tableInstance.state,
1490
+ currentEditingRow = _useMRT$tableInstance.currentEditingRow,
1491
+ densePadding = _useMRT$tableInstance.densePadding;
1492
+
1493
+ var mTableCellBodyProps = muiTableBodyCellProps instanceof Function ? muiTableBodyCellProps(cell) : muiTableBodyCellProps;
1494
+ var mcTableCellBodyProps = cell.column.muiTableBodyCellProps instanceof Function ? cell.column.muiTableBodyCellProps(cell) : cell.column.muiTableBodyCellProps;
1495
+
1496
+ var tableCellProps = _extends({}, mTableCellBodyProps, mcTableCellBodyProps, cell.getCellProps(), {
1497
+ style: _extends({}, cell.getCellProps().style, mTableCellBodyProps == null ? void 0 : mTableCellBodyProps.style, mcTableCellBodyProps == null ? void 0 : mcTableCellBodyProps.style)
1498
+ });
1499
+
1500
+ return React__default.createElement(material.TableCell, Object.assign({
1501
+ onClick: function onClick(event) {
1502
+ return onCellClick == null ? void 0 : onCellClick(event, cell);
1503
+ }
1504
+ }, tableCellProps, {
1505
+ sx: _extends({}, commonTableBodyCellStyles(densePadding), tableCellProps == null ? void 0 : tableCellProps.sx)
1506
+ }), isLoading ? React__default.createElement(material.Skeleton, Object.assign({
1507
+ animation: "wave",
1508
+ height: 20,
1509
+ width: Math.random() * (120 - 60) + 60
1510
+ }, muiTableBodyCellSkeletonProps)) : !cell.column.disableEditing && (currentEditingRow == null ? void 0 : currentEditingRow.id) === cell.row.id ? React__default.createElement(MRT_EditCellTextField, {
1511
+ cell: cell
1512
+ }) : cell.isPlaceholder ? null : cell.isAggregated ? enableClickToCopy && !cell.column.disableClickToCopy ? React__default.createElement(MRT_CopyButton, {
1513
+ cell: cell
1514
+ }, cell.render('Aggregated')) : cell.render('Aggregated') : cell.isGrouped ? React__default.createElement("span", null, cell.render('Cell'), " (", cell.row.subRows.length, ")") : enableClickToCopy && !cell.column.disableClickToCopy ? React__default.createElement(MRT_CopyButton, {
1515
+ cell: cell
1516
+ }, cell.render('Cell')) : cell.render('Cell'));
1517
+ };
1518
+
1475
1519
  var MRT_TableDetailPanel = function MRT_TableDetailPanel(_ref) {
1476
1520
  var row = _ref.row;
1477
1521
 
@@ -1508,8 +1552,7 @@ var MRT_ExpandButton = function MRT_ExpandButton(_ref) {
1508
1552
  ExpandMoreIcon = _useMRT.icons.ExpandMoreIcon,
1509
1553
  localization = _useMRT.localization,
1510
1554
  onRowExpandChange = _useMRT.onRowExpandChange,
1511
- renderDetailPanel = _useMRT.renderDetailPanel,
1512
- densePadding = _useMRT.tableInstance.state.densePadding;
1555
+ renderDetailPanel = _useMRT.renderDetailPanel;
1513
1556
 
1514
1557
  var handleToggleExpand = function handleToggleExpand(event) {
1515
1558
  var _row$getToggleRowExpa;
@@ -1519,13 +1562,7 @@ var MRT_ExpandButton = function MRT_ExpandButton(_ref) {
1519
1562
  onRowExpandChange == null ? void 0 : onRowExpandChange(event, row);
1520
1563
  };
1521
1564
 
1522
- return React__default.createElement(material.TableCell, {
1523
- size: "small",
1524
- sx: _extends({}, commonTableBodyButtonCellStyles(densePadding), {
1525
- pl: row.depth + 0.5 + "rem",
1526
- textAlign: 'left'
1527
- })
1528
- }, React__default.createElement(material.IconButton, Object.assign({
1565
+ return React__default.createElement(material.IconButton, Object.assign({
1529
1566
  "aria-label": localization.expand,
1530
1567
  disabled: !row.canExpand && !renderDetailPanel,
1531
1568
  title: localization.expand
@@ -1536,7 +1573,7 @@ var MRT_ExpandButton = function MRT_ExpandButton(_ref) {
1536
1573
  transform: "rotate(" + (!row.canExpand && !renderDetailPanel ? -90 : row.isExpanded ? -180 : 0) + "deg)",
1537
1574
  transition: 'transform 0.2s'
1538
1575
  }
1539
- })));
1576
+ }));
1540
1577
  };
1541
1578
 
1542
1579
  var MRT_RowActionMenu = function MRT_RowActionMenu(_ref) {
@@ -2494,20 +2531,26 @@ var MRT_TableBodyRow = function MRT_TableBodyRow(_ref) {
2494
2531
  return onRowClick == null ? void 0 : onRowClick(event, row);
2495
2532
  },
2496
2533
  selected: row.isSelected
2497
- }, tableRowProps), enableRowNumbers && React__default.createElement(material.TableCell, {
2498
- sx: _extends({}, commonTableBodyCellStyles(densePadding))
2499
- }, row.index + 1), (enableRowActions || enableRowEditing) && positionActionsColumn === 'first' && React__default.createElement(MRT_ToggleRowActionMenuButton, {
2534
+ }, tableRowProps), (enableRowActions || enableRowEditing) && positionActionsColumn === 'first' && React__default.createElement(MRT_ToggleRowActionMenuButton, {
2500
2535
  row: row
2501
- }), (anyRowsCanExpand || renderDetailPanel) && React__default.createElement(MRT_ExpandButton, {
2536
+ }), (anyRowsCanExpand || renderDetailPanel) && React__default.createElement(material.TableCell, {
2537
+ size: "small",
2538
+ sx: _extends({}, commonTableBodyButtonCellStyles(densePadding), {
2539
+ pl: row.depth + 0.5 + "rem",
2540
+ textAlign: 'left'
2541
+ })
2542
+ }, React__default.createElement(MRT_ExpandButton, {
2502
2543
  row: row
2503
- }), enableSelection && React__default.createElement(material.TableCell, {
2544
+ })), enableSelection && React__default.createElement(material.TableCell, {
2504
2545
  sx: _extends({}, commonTableBodyButtonCellStyles(tableInstance.state.densePadding), {
2505
2546
  maxWidth: '3rem',
2506
2547
  width: '3rem'
2507
2548
  })
2508
2549
  }, React__default.createElement(MRT_SelectCheckbox, {
2509
2550
  row: row
2510
- })), row.cells.map(function (cell) {
2551
+ })), enableRowNumbers && React__default.createElement(material.TableCell, {
2552
+ sx: _extends({}, commonTableBodyCellStyles(densePadding))
2553
+ }, row.index + 1), row.cells.map(function (cell) {
2511
2554
  return React__default.createElement(MRT_TableBodyCell, {
2512
2555
  key: cell.getCellProps().key,
2513
2556
  cell: cell
@@ -2652,9 +2695,13 @@ var MRT_SearchTextField = function MRT_SearchTextField() {
2652
2695
  onGlobalFilterChange = _useMRT.onGlobalFilterChange,
2653
2696
  tableInstance = _useMRT.tableInstance;
2654
2697
 
2655
- var _useState = React.useState(''),
2656
- searchValue = _useState[0],
2657
- setSearchValue = _useState[1];
2698
+ var _useState = React.useState(null),
2699
+ anchorEl = _useState[0],
2700
+ setAnchorEl = _useState[1];
2701
+
2702
+ var _useState2 = React.useState(''),
2703
+ searchValue = _useState2[0],
2704
+ setSearchValue = _useState2[1];
2658
2705
 
2659
2706
  var handleChange = reactTable.useAsyncDebounce(function (event) {
2660
2707
  var _event$target$value;
@@ -2663,6 +2710,10 @@ var MRT_SearchTextField = function MRT_SearchTextField() {
2663
2710
  onGlobalFilterChange == null ? void 0 : onGlobalFilterChange(event);
2664
2711
  }, 200);
2665
2712
 
2713
+ var handleGlobalFilterMenuOpen = function handleGlobalFilterMenuOpen(event) {
2714
+ setAnchorEl(event.currentTarget);
2715
+ };
2716
+
2666
2717
  var handleClear = function handleClear() {
2667
2718
  setSearchValue('');
2668
2719
  tableInstance.setGlobalFilter(undefined);
@@ -2683,9 +2734,20 @@ var MRT_SearchTextField = function MRT_SearchTextField() {
2683
2734
  InputProps: {
2684
2735
  startAdornment: React__default.createElement(material.InputAdornment, {
2685
2736
  position: "start"
2737
+ }, React__default.createElement(material.Tooltip, {
2738
+ arrow: true,
2739
+ title: localization.changeSearchMode
2740
+ }, React__default.createElement("span", null, React__default.createElement(material.IconButton, {
2741
+ "aria-label": localization.changeSearchMode,
2742
+ onClick: handleGlobalFilterMenuOpen,
2743
+ size: "small",
2744
+ sx: {
2745
+ height: '1.75rem',
2746
+ width: '1.75rem'
2747
+ }
2686
2748
  }, React__default.createElement(SearchIcon, {
2687
2749
  fontSize: "small"
2688
- })),
2750
+ }))))),
2689
2751
  endAdornment: React__default.createElement(material.InputAdornment, {
2690
2752
  position: "end"
2691
2753
  }, React__default.createElement(material.IconButton, {
@@ -2702,7 +2764,10 @@ var MRT_SearchTextField = function MRT_SearchTextField() {
2702
2764
  sx: _extends({
2703
2765
  justifySelf: 'end'
2704
2766
  }, muiSearchTextFieldProps == null ? void 0 : muiSearchTextFieldProps.sx)
2705
- })));
2767
+ })), React__default.createElement(MRT_FilterTypeMenu, {
2768
+ anchorEl: anchorEl,
2769
+ setAnchorEl: setAnchorEl
2770
+ }));
2706
2771
  };
2707
2772
 
2708
2773
  var MRT_FullScreenToggleButton = function MRT_FullScreenToggleButton(_ref) {
@@ -3098,6 +3163,7 @@ var MRT_DefaultLocalization_EN = {
3098
3163
  actions: 'Actions',
3099
3164
  cancel: 'Cancel',
3100
3165
  changeFilterMode: 'Change filter mode',
3166
+ changeSearchMode: 'Change search mode',
3101
3167
  clearFilter: 'Clear filter',
3102
3168
  clearSearch: 'Clear search',
3103
3169
  clearSort: 'Clear sort',
@@ -3107,12 +3173,13 @@ var MRT_DefaultLocalization_EN = {
3107
3173
  edit: 'Edit',
3108
3174
  expand: 'Expand',
3109
3175
  expandAll: 'Expand all',
3176
+ filterBestMatch: 'Best Match',
3177
+ filterBestMatchFirst: 'Best Match First',
3110
3178
  filterByColumn: 'Filter by {column}',
3111
- filterContains: 'Contains Exact',
3179
+ filterContains: 'Contains',
3112
3180
  filterEmpty: 'Empty',
3113
3181
  filterEndsWith: 'Ends With',
3114
3182
  filterEquals: 'Equals',
3115
- filterFuzzy: 'Fuzzy Match',
3116
3183
  filterGreaterThan: 'Greater Than',
3117
3184
  filterLessThan: 'Less Than',
3118
3185
  filterMode: 'Filter Mode: {filterType}',
@@ -3182,7 +3249,7 @@ var MaterialReactTable = (function (_ref) {
3182
3249
  } : _ref$defaultColumn,
3183
3250
  filterTypes = _ref.filterTypes,
3184
3251
  _ref$globalFilter = _ref.globalFilter,
3185
- globalFilter = _ref$globalFilter === void 0 ? 'fuzzy' : _ref$globalFilter,
3252
+ globalFilter = _ref$globalFilter === void 0 ? MRT_FILTER_TYPE.BEST_MATCH_FIRST : _ref$globalFilter,
3186
3253
  icons = _ref.icons,
3187
3254
  localization = _ref.localization,
3188
3255
  _ref$positionActionsC = _ref.positionActionsColumn,