material-react-table 0.5.3 → 0.5.4

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.
@@ -7,7 +7,9 @@ function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'defau
7
7
  var React = require('react');
8
8
  var React__default = _interopDefault(React);
9
9
  var reactTable = require('react-table');
10
+ var matchSorter = require('match-sorter');
10
11
  var material = require('@mui/material');
12
+ var ArrowRightIcon = _interopDefault(require('@mui/icons-material/ArrowRight'));
11
13
  var CancelIcon = _interopDefault(require('@mui/icons-material/Cancel'));
12
14
  var ClearAllIcon = _interopDefault(require('@mui/icons-material/ClearAll'));
13
15
  var CloseIcon = _interopDefault(require('@mui/icons-material/Close'));
@@ -100,6 +102,100 @@ function _objectWithoutPropertiesLoose(source, excluded) {
100
102
  return target;
101
103
  }
102
104
 
105
+ var fuzzyFilterFN = function fuzzyFilterFN(rows, id, filterValue) {
106
+ return matchSorter.matchSorter(rows, filterValue.toString().trim(), {
107
+ keys: ["values." + id],
108
+ sorter: function sorter(rankedItems) {
109
+ return rankedItems;
110
+ }
111
+ });
112
+ };
113
+
114
+ fuzzyFilterFN.autoRemove = function (val) {
115
+ return !val;
116
+ };
117
+
118
+ var containsFilterFN = function containsFilterFN(rows, id, filterValue) {
119
+ return rows.filter(function (row) {
120
+ return row.values[id].toString().toLowerCase().trim().includes(filterValue.toString().toLowerCase().trim());
121
+ });
122
+ };
123
+
124
+ containsFilterFN.autoRemove = function (val) {
125
+ return !val;
126
+ };
127
+
128
+ var startsWithFilterFN = function startsWithFilterFN(rows, id, filterValue) {
129
+ return rows.filter(function (row) {
130
+ return row.values[id].toString().toLowerCase().trim().startsWith(filterValue.toString().toLowerCase().trim());
131
+ });
132
+ };
133
+
134
+ startsWithFilterFN.autoRemove = function (val) {
135
+ return !val;
136
+ };
137
+
138
+ var endsWithFilterFN = function endsWithFilterFN(rows, id, filterValue) {
139
+ return rows.filter(function (row) {
140
+ return row.values[id].toString().toLowerCase().trim().endsWith(filterValue.toString().toLowerCase().trim());
141
+ });
142
+ };
143
+
144
+ endsWithFilterFN.autoRemove = function (val) {
145
+ return !val;
146
+ };
147
+
148
+ var equalsFilterFN = function equalsFilterFN(rows, id, filterValue) {
149
+ return rows.filter(function (row) {
150
+ return row.values[id].toString().toLowerCase().trim() === filterValue.toString().toLowerCase().trim();
151
+ });
152
+ };
153
+
154
+ equalsFilterFN.autoRemove = function (val) {
155
+ return !val;
156
+ };
157
+
158
+ var notEqualsFilterFN = function notEqualsFilterFN(rows, id, filterValue) {
159
+ return rows.filter(function (row) {
160
+ return row.values[id].toString().toLowerCase().trim() !== filterValue.toString().toLowerCase().trim();
161
+ });
162
+ };
163
+
164
+ notEqualsFilterFN.autoRemove = function (val) {
165
+ return !val;
166
+ };
167
+
168
+ var emptyFilterFN = function emptyFilterFN(rows, id, _filterValue) {
169
+ return rows.filter(function (row) {
170
+ return !row.values[id].toString().toLowerCase().trim();
171
+ });
172
+ };
173
+
174
+ emptyFilterFN.autoRemove = function (val) {
175
+ return !val;
176
+ };
177
+
178
+ var notEmptyFilterFN = function notEmptyFilterFN(rows, id, _filterValue) {
179
+ return rows.filter(function (row) {
180
+ return !!row.values[id].toString().toLowerCase().trim();
181
+ });
182
+ };
183
+
184
+ notEmptyFilterFN.autoRemove = function (val) {
185
+ return !val;
186
+ };
187
+
188
+ var defaultFilterFNs = {
189
+ contains: containsFilterFN,
190
+ empty: emptyFilterFN,
191
+ endsWith: endsWithFilterFN,
192
+ equals: equalsFilterFN,
193
+ fuzzy: fuzzyFilterFN,
194
+ notEmpty: notEmptyFilterFN,
195
+ notEquals: notEqualsFilterFN,
196
+ startsWith: startsWithFilterFN
197
+ };
198
+
103
199
  var MaterialReactTableContext = /*#__PURE__*/function () {
104
200
  return React.createContext({});
105
201
  }();
@@ -130,19 +226,52 @@ var MaterialReactTableProvider = function MaterialReactTableProvider(props) {
130
226
  showSearch = _useState5[0],
131
227
  setShowSearch = _useState5[1];
132
228
 
229
+ var filterTypes = React.useMemo(function () {
230
+ return _extends({}, defaultFilterFNs, props.filterTypes);
231
+ }, [props.filterTypes]);
232
+
233
+ var _useState6 = React.useState(function () {
234
+ return Object.assign.apply(Object, [{}].concat(props.columns.map(function (c) {
235
+ var _c$accessor;
236
+
237
+ return (_c$accessor = c.accessor) == null ? void 0 : _c$accessor.toString();
238
+ }).map(function (accessor) {
239
+ var _props$initialState$f2, _props$initialState5, _props$initialState5$, _ref;
240
+
241
+ return _ref = {}, _ref[accessor] = (_props$initialState$f2 = props == null ? void 0 : (_props$initialState5 = props.initialState) == null ? void 0 : (_props$initialState5$ = _props$initialState5.filters) == null ? void 0 : _props$initialState5$[accessor]) != null ? _props$initialState$f2 : 'fuzzy', _ref;
242
+ })));
243
+ }),
244
+ currentFilterTypes = _useState6[0],
245
+ setCurrentFilterTypes = _useState6[1];
246
+
247
+ var columns = React.useMemo(function () {
248
+ return props.columns.map(function (column) {
249
+ column.filter = filterTypes[currentFilterTypes[column.accessor]];
250
+ return column;
251
+ });
252
+ }, [props.columns, filterTypes, currentFilterTypes]);
133
253
  var tableInstance = reactTable.useTable.apply(void 0, [_extends({}, props, {
254
+ columns: columns,
255
+ // @ts-ignore
256
+ filterTypes: filterTypes,
134
257
  useControlledState: function useControlledState(state) {
135
258
  return React.useMemo(function () {
136
259
  return _extends({}, state, {
137
260
  currentEditingRow: currentEditingRow,
261
+ currentFilterTypes: currentFilterTypes,
138
262
  densePadding: densePadding,
139
263
  fullScreen: fullScreen,
140
264
  showFilters: showFilters,
141
265
  showSearch: showSearch
142
266
  }, props == null ? void 0 : props.useControlledState == null ? void 0 : props.useControlledState(state));
143
- }, [currentEditingRow, densePadding, fullScreen, showFilters, showSearch, state]);
267
+ }, [currentEditingRow, currentFilterTypes, densePadding, fullScreen, showFilters, showSearch, state]);
144
268
  }
145
269
  })].concat(hooks));
270
+ var idPrefix = React.useMemo(function () {
271
+ var _props$idPrefix;
272
+
273
+ return (_props$idPrefix = props.idPrefix) != null ? _props$idPrefix : Math.random().toString(36).substring(2, 9);
274
+ }, [props.idPrefix]);
146
275
  var anyRowsCanExpand = React.useMemo(function () {
147
276
  return tableInstance.rows.some(function (row) {
148
277
  return row.canExpand;
@@ -157,7 +286,10 @@ var MaterialReactTableProvider = function MaterialReactTableProvider(props) {
157
286
  value: _extends({}, props, {
158
287
  anyRowsCanExpand: anyRowsCanExpand,
159
288
  anyRowsExpanded: anyRowsExpanded,
289
+ idPrefix: idPrefix,
290
+ //@ts-ignore
160
291
  setCurrentEditingRow: setCurrentEditingRow,
292
+ setCurrentFilterTypes: setCurrentFilterTypes,
161
293
  setDensePadding: setDensePadding,
162
294
  setFullScreen: setFullScreen,
163
295
  setShowFilters: setShowFilters,
@@ -168,13 +300,106 @@ var MaterialReactTableProvider = function MaterialReactTableProvider(props) {
168
300
  }, props.children);
169
301
  };
170
302
  var useMRT = function useMRT() {
171
- return (// @ts-ignore
172
- React.useContext(MaterialReactTableContext)
173
- );
303
+ return React.useContext(MaterialReactTableContext);
304
+ };
305
+
306
+ var MRT_FilterMenu = function MRT_FilterMenu(_ref) {
307
+ var anchorEl = _ref.anchorEl,
308
+ column = _ref.column,
309
+ onSelect = _ref.onSelect,
310
+ setAnchorEl = _ref.setAnchorEl;
311
+
312
+ var _useMRT = useMRT(),
313
+ localization = _useMRT.localization,
314
+ setCurrentFilterTypes = _useMRT.setCurrentFilterTypes,
315
+ tableInstance = _useMRT.tableInstance;
316
+
317
+ var filterTypes = React.useMemo(function () {
318
+ return [{
319
+ type: 'fuzzy',
320
+ label: localization.filterMenuItemFuzzy,
321
+ divider: false
322
+ }, {
323
+ type: 'contains',
324
+ label: localization.filterMenuItemContains,
325
+ divider: true
326
+ }, {
327
+ type: 'startsWith',
328
+ label: localization.filterMenuItemStartsWith,
329
+ divider: false
330
+ }, {
331
+ type: 'endsWith',
332
+ label: localization.filterMenuItemEndsWith,
333
+ divider: true
334
+ }, {
335
+ type: 'equals',
336
+ label: localization.filterMenuItemEquals,
337
+ divider: false
338
+ }, {
339
+ type: 'notEquals',
340
+ label: localization.filterMenuItemNotEquals,
341
+ divider: true
342
+ }, {
343
+ type: 'empty',
344
+ label: localization.filterMenuItemEmpty,
345
+ divider: false
346
+ }, {
347
+ type: 'notEmpty',
348
+ label: localization.filterMenuItemNotEmpty,
349
+ divider: false
350
+ }];
351
+ }, []);
352
+
353
+ var handleSelectMenuItem = function handleSelectMenuItem(value) {
354
+ setAnchorEl(null);
355
+ setCurrentFilterTypes(function (prev) {
356
+ var _extends2;
357
+
358
+ return _extends({}, prev, (_extends2 = {}, _extends2[column.id] = value, _extends2));
359
+ });
360
+
361
+ if (['empty', 'notEmpty'].includes(value)) {
362
+ column.setFilter(' ');
363
+ }
364
+
365
+ onSelect == null ? void 0 : onSelect();
366
+ };
367
+
368
+ var filterType = tableInstance.state.currentFilterTypes[column.id];
369
+ return React__default.createElement(material.Menu, {
370
+ anchorEl: anchorEl,
371
+ open: !!anchorEl,
372
+ anchorOrigin: {
373
+ vertical: 'center',
374
+ horizontal: 'right'
375
+ },
376
+ onClose: function onClose() {
377
+ return setAnchorEl(null);
378
+ }
379
+ }, React__default.createElement(material.Typography, {
380
+ sx: {
381
+ fontWeight: 'bold',
382
+ p: '1rem',
383
+ fontSize: '1.1rem'
384
+ }
385
+ }, localization.filterMenuTitle), React__default.createElement(material.Divider, null), filterTypes.map(function (_ref2) {
386
+ var type = _ref2.type,
387
+ label = _ref2.label,
388
+ divider = _ref2.divider;
389
+ return React__default.createElement(material.MenuItem, {
390
+ divider: divider,
391
+ key: type,
392
+ onClick: function onClick() {
393
+ return handleSelectMenuItem(type);
394
+ },
395
+ selected: type === filterType,
396
+ value: type
397
+ }, label);
398
+ }));
174
399
  };
175
400
 
176
401
  var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
177
- var _localization$filterT, _localization$filterT2, _localization$filterT3;
402
+ var _localization$filterT, _localization$filterT2;
178
403
 
179
404
  var column = _ref.column;
180
405
 
@@ -182,37 +407,70 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
182
407
  _useMRT$icons = _useMRT.icons,
183
408
  FilterListIcon = _useMRT$icons.FilterListIcon,
184
409
  CloseIcon = _useMRT$icons.CloseIcon,
185
- localization = _useMRT.localization;
410
+ idPrefix = _useMRT.idPrefix,
411
+ localization = _useMRT.localization,
412
+ muiTableHeadCellFilterTextFieldProps = _useMRT.muiTableHeadCellFilterTextFieldProps,
413
+ setCurrentFilterTypes = _useMRT.setCurrentFilterTypes,
414
+ tableInstance = _useMRT.tableInstance;
186
415
 
187
- var _useState = React.useState(''),
188
- filterValue = _useState[0],
189
- setFilterValue = _useState[1];
416
+ var _useState = React.useState(null),
417
+ anchorEl = _useState[0],
418
+ setAnchorEl = _useState[1];
419
+
420
+ var mTableHeadCellFilterTextFieldProps = muiTableHeadCellFilterTextFieldProps instanceof Function ? muiTableHeadCellFilterTextFieldProps(column) : muiTableHeadCellFilterTextFieldProps;
421
+ var mcTableHeadCellFilterTextFieldProps = column.muiTableHeadCellFilterTextFieldProps instanceof Function ? column.muiTableHeadCellFilterTextFieldProps(column) : column.muiTableHeadCellFilterTextFieldProps;
422
+
423
+ var textFieldProps = _extends({}, mTableHeadCellFilterTextFieldProps, mcTableHeadCellFilterTextFieldProps, {
424
+ style: _extends({}, mTableHeadCellFilterTextFieldProps == null ? void 0 : mTableHeadCellFilterTextFieldProps.style, mcTableHeadCellFilterTextFieldProps == null ? void 0 : mcTableHeadCellFilterTextFieldProps.style)
425
+ });
426
+
427
+ var _useState2 = React.useState(''),
428
+ filterValue = _useState2[0],
429
+ setFilterValue = _useState2[1];
190
430
 
191
431
  var handleChange = reactTable.useAsyncDebounce(function (value) {
192
432
  column.setFilter(value != null ? value : undefined);
193
433
  }, 150);
194
434
 
435
+ var handleFilterMenuOpen = function handleFilterMenuOpen(event) {
436
+ setAnchorEl(event.currentTarget);
437
+ };
438
+
195
439
  var handleClear = function handleClear() {
196
440
  setFilterValue('');
197
441
  column.setFilter(undefined);
198
442
  };
199
443
 
444
+ var handleClearFilterChip = function handleClearFilterChip() {
445
+ setFilterValue('');
446
+ column.setFilter(undefined);
447
+ setCurrentFilterTypes(function (prev) {
448
+ var _extends2;
449
+
450
+ return _extends({}, prev, (_extends2 = {}, _extends2[column.id] = 'fuzzy', _extends2));
451
+ });
452
+ };
453
+
200
454
  if (column.Filter) {
201
455
  return React__default.createElement(React__default.Fragment, null, column.Filter == null ? void 0 : column.Filter({
202
456
  column: column
203
457
  }));
204
458
  }
205
459
 
206
- return React__default.createElement(material.TextField, {
460
+ var filterType = tableInstance.state.currentFilterTypes[column.id];
461
+ var showFilterChip = ['empty', 'notEmpty'].includes(filterType);
462
+ var filterPlaceholder = (_localization$filterT = localization.filterTextFieldPlaceholder) == null ? void 0 : _localization$filterT.replace('{column}', String(column.Header));
463
+ return React__default.createElement(React__default.Fragment, null, React__default.createElement(material.TextField, Object.assign({
207
464
  fullWidth: true,
208
- id: "filter-" + column.id + "-column",
465
+ id: "mrt-" + idPrefix + "-" + column.id + "-filter-text-field",
209
466
  inputProps: {
210
- style: {
467
+ sx: {
211
468
  textOverflow: 'ellipsis'
212
- }
469
+ },
470
+ title: filterPlaceholder
213
471
  },
214
- margin: "dense",
215
- placeholder: (_localization$filterT = localization.filterTextFieldPlaceholder) == null ? void 0 : _localization$filterT.replace('{column}', String(column.Header)),
472
+ margin: "none",
473
+ placeholder: showFilterChip ? '' : filterPlaceholder,
216
474
  onChange: function onChange(e) {
217
475
  setFilterValue(e.target.value);
218
476
  handleChange(e.target.value);
@@ -223,33 +481,52 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
223
481
  value: filterValue != null ? filterValue : '',
224
482
  variant: "standard",
225
483
  InputProps: {
226
- startAdornment: React__default.createElement(material.Tooltip, {
227
- arrow: true,
228
- title: (_localization$filterT2 = localization.filterTextFieldPlaceholder) == null ? void 0 : _localization$filterT2.replace('{column}', String(column.Header))
229
- }, React__default.createElement(material.InputAdornment, {
484
+ startAdornment: React__default.createElement(material.InputAdornment, {
230
485
  position: "start"
231
- }, React__default.createElement(FilterListIcon, null))),
232
- endAdornment: React__default.createElement(material.InputAdornment, {
486
+ }, React__default.createElement(material.Tooltip, {
487
+ arrow: true,
488
+ title: "Change Filter Mode"
489
+ }, React__default.createElement(material.IconButton, {
490
+ onClick: handleFilterMenuOpen,
491
+ size: "small",
492
+ sx: {
493
+ height: '1.75rem',
494
+ width: '1.75rem'
495
+ }
496
+ }, React__default.createElement(FilterListIcon, null))), showFilterChip && React__default.createElement(material.Chip, {
497
+ onDelete: handleClearFilterChip,
498
+ label: filterType
499
+ })),
500
+ endAdornment: !showFilterChip && React__default.createElement(material.InputAdornment, {
233
501
  position: "end"
234
502
  }, React__default.createElement(material.Tooltip, {
235
503
  arrow: true,
236
- title: (_localization$filterT3 = localization.filterTextFieldClearButtonTitle) != null ? _localization$filterT3 : ''
504
+ placement: "right",
505
+ title: (_localization$filterT2 = localization.filterTextFieldClearButtonTitle) != null ? _localization$filterT2 : ''
237
506
  }, React__default.createElement("span", null, React__default.createElement(material.IconButton, {
238
507
  "aria-label": localization.filterTextFieldClearButtonTitle,
239
508
  disabled: (filterValue == null ? void 0 : filterValue.length) === 0,
240
509
  onClick: handleClear,
241
- size: "small"
510
+ size: "small",
511
+ sx: {
512
+ height: '1.75rem',
513
+ width: '1.75rem'
514
+ }
242
515
  }, React__default.createElement(CloseIcon, {
243
516
  fontSize: "small"
244
517
  })))))
245
518
  }
246
- });
519
+ }, textFieldProps, {
520
+ sx: _extends({
521
+ minWidth: '6rem'
522
+ }, textFieldProps == null ? void 0 : textFieldProps.sx)
523
+ })), React__default.createElement(MRT_FilterMenu, {
524
+ anchorEl: anchorEl,
525
+ column: column,
526
+ setAnchorEl: setAnchorEl
527
+ }));
247
528
  };
248
529
 
249
- var commonMenuItemStyles = {
250
- display: 'flex',
251
- gap: '0.75rem'
252
- };
253
530
  var MRT_ColumnActionMenu = function MRT_ColumnActionMenu(_ref) {
254
531
  var _localization$columnA, _localization$columnA2, _localization$filterT, _localization, _localization$columnA3;
255
532
 
@@ -262,14 +539,19 @@ var MRT_ColumnActionMenu = function MRT_ColumnActionMenu(_ref) {
262
539
  disableFilters = _useMRT.disableFilters,
263
540
  disableSortBy = _useMRT.disableSortBy,
264
541
  enableColumnGrouping = _useMRT.enableColumnGrouping,
265
- localization = _useMRT.localization,
266
- setShowFilters = _useMRT.setShowFilters,
267
542
  _useMRT$icons = _useMRT.icons,
268
- FilterListIcon = _useMRT$icons.FilterListIcon,
269
- SortIcon = _useMRT$icons.SortIcon,
270
543
  ClearAllIcon = _useMRT$icons.ClearAllIcon,
271
544
  DynamicFeedIcon = _useMRT$icons.DynamicFeedIcon,
272
- VisibilityOffIcon = _useMRT$icons.VisibilityOffIcon;
545
+ FilterListIcon = _useMRT$icons.FilterListIcon,
546
+ SortIcon = _useMRT$icons.SortIcon,
547
+ VisibilityOffIcon = _useMRT$icons.VisibilityOffIcon,
548
+ idPrefix = _useMRT.idPrefix,
549
+ localization = _useMRT.localization,
550
+ setShowFilters = _useMRT.setShowFilters;
551
+
552
+ var _useState = React.useState(null),
553
+ filterMenuAnchorEl = _useState[0],
554
+ setFilterMenuAnchorEl = _useState[1];
273
555
 
274
556
  var handleClearSort = function handleClearSort() {
275
557
  column.clearSortBy();
@@ -302,55 +584,63 @@ var MRT_ColumnActionMenu = function MRT_ColumnActionMenu(_ref) {
302
584
  var _document$getElementB, _column$muiTableHeadC, _column$muiTableHeadC2;
303
585
 
304
586
  return (_document$getElementB = document.getElementById( // @ts-ignore
305
- (_column$muiTableHeadC = (_column$muiTableHeadC2 = column.muiTableHeadCellFilterTextFieldProps) == null ? void 0 : _column$muiTableHeadC2.id) != null ? _column$muiTableHeadC : "filter-" + column.id + "-column")) == null ? void 0 : _document$getElementB.focus();
587
+ (_column$muiTableHeadC = (_column$muiTableHeadC2 = column.muiTableHeadCellFilterTextFieldProps) == null ? void 0 : _column$muiTableHeadC2.id) != null ? _column$muiTableHeadC : "mrt-" + idPrefix + "-" + column.id + "-filter-text-field")) == null ? void 0 : _document$getElementB.focus();
306
588
  }, 200);
307
589
  setAnchorEl(null);
308
590
  };
309
591
 
592
+ var handleOpenFilterModeMenu = function handleOpenFilterModeMenu(event) {
593
+ event.stopPropagation();
594
+ setFilterMenuAnchorEl(event.currentTarget);
595
+ };
596
+
310
597
  return React__default.createElement(material.Menu, {
311
598
  anchorEl: anchorEl,
312
599
  open: !!anchorEl,
313
600
  onClose: function onClose() {
314
601
  return setAnchorEl(null);
315
602
  }
316
- }, !disableSortBy && column.canSort && [React__default.createElement(material.MenuItem, {
603
+ }, React__default.createElement(material.MenuList, null, !disableSortBy && column.canSort && [React__default.createElement(material.MenuItem, {
317
604
  key: 1,
318
605
  disabled: !column.isSorted,
319
- onClick: handleClearSort,
320
- sx: commonMenuItemStyles
321
- }, React__default.createElement(ClearAllIcon, null), " ", localization.columnActionMenuItemClearSort), React__default.createElement(material.MenuItem, {
606
+ onClick: handleClearSort
607
+ }, React__default.createElement(material.ListItemIcon, null, React__default.createElement(ClearAllIcon, null)), React__default.createElement(material.ListItemText, null, localization.columnActionMenuItemClearSort)), React__default.createElement(material.MenuItem, {
322
608
  key: 2,
323
609
  disabled: column.isSorted && !column.isSortedDesc,
324
- onClick: handleSortAsc,
325
- sx: commonMenuItemStyles
326
- }, React__default.createElement(SortIcon, null), ' ', (_localization$columnA = localization.columnActionMenuItemSortAsc) == null ? void 0 : _localization$columnA.replace('{column}', String(column.Header))), React__default.createElement(material.MenuItem, {
610
+ onClick: handleSortAsc
611
+ }, React__default.createElement(material.ListItemIcon, null, React__default.createElement(SortIcon, null)), React__default.createElement(material.ListItemText, null, (_localization$columnA = localization.columnActionMenuItemSortAsc) == null ? void 0 : _localization$columnA.replace('{column}', String(column.Header)))), React__default.createElement(material.MenuItem, {
327
612
  key: 3,
328
613
  disabled: column.isSorted && column.isSortedDesc,
329
- onClick: handleSortDesc,
330
- sx: commonMenuItemStyles
331
- }, React__default.createElement(SortIcon, {
614
+ onClick: handleSortDesc
615
+ }, React__default.createElement(material.ListItemIcon, null, React__default.createElement(SortIcon, {
332
616
  style: {
333
617
  transform: 'rotate(180deg) scaleX(-1)'
334
618
  }
335
- }), ' ', (_localization$columnA2 = localization.columnActionMenuItemSortDesc) == null ? void 0 : _localization$columnA2.replace('{column}', String(column.Header)))], !disableFilters && column.canFilter && [React__default.createElement(material.Divider, {
619
+ })), React__default.createElement(material.ListItemText, null, (_localization$columnA2 = localization.columnActionMenuItemSortDesc) == null ? void 0 : _localization$columnA2.replace('{column}', String(column.Header))))], !disableFilters && column.canFilter && [React__default.createElement(material.Divider, {
336
620
  key: 0
337
621
  }), React__default.createElement(material.MenuItem, {
338
622
  key: 1,
339
- onClick: handleFilterByColumn,
340
- sx: commonMenuItemStyles
341
- }, React__default.createElement(FilterListIcon, null), ' ', (_localization$filterT = localization.filterTextFieldPlaceholder) == null ? void 0 : _localization$filterT.replace('{column}', String(column.Header)))], enableColumnGrouping && column.canGroupBy && [React__default.createElement(material.Divider, {
623
+ onClick: handleFilterByColumn
624
+ }, React__default.createElement(material.ListItemIcon, null, React__default.createElement(FilterListIcon, null)), React__default.createElement(material.ListItemText, null, (_localization$filterT = localization.filterTextFieldPlaceholder) == null ? void 0 : _localization$filterT.replace('{column}', String(column.Header))), React__default.createElement(material.IconButton, {
625
+ size: "small",
626
+ onMouseEnter: handleOpenFilterModeMenu
627
+ }, React__default.createElement(ArrowRightIcon, null))), React__default.createElement(MRT_FilterMenu, {
628
+ anchorEl: filterMenuAnchorEl,
629
+ column: column,
630
+ key: 2,
631
+ setAnchorEl: setFilterMenuAnchorEl,
632
+ onSelect: handleFilterByColumn
633
+ })], enableColumnGrouping && column.canGroupBy && [React__default.createElement(material.Divider, {
342
634
  key: 1
343
635
  }), React__default.createElement(material.MenuItem, {
344
636
  key: 2,
345
- onClick: handleGroupByColumn,
346
- sx: commonMenuItemStyles
347
- }, React__default.createElement(DynamicFeedIcon, null), ' ', (_localization = localization[column.isGrouped ? 'columnActionMenuItemUnGroupBy' : 'columnActionMenuItemGroupBy']) == null ? void 0 : _localization.replace('{column}', String(column.Header)))], !disableColumnHiding && [React__default.createElement(material.Divider, {
637
+ onClick: handleGroupByColumn
638
+ }, React__default.createElement(material.ListItemIcon, null, React__default.createElement(DynamicFeedIcon, null)), React__default.createElement(material.ListItemText, null, (_localization = localization[column.isGrouped ? 'columnActionMenuItemUnGroupBy' : 'columnActionMenuItemGroupBy']) == null ? void 0 : _localization.replace('{column}', String(column.Header))))], !disableColumnHiding && [React__default.createElement(material.Divider, {
348
639
  key: 0
349
640
  }), React__default.createElement(material.MenuItem, {
350
641
  key: 1,
351
- onClick: handleHideColumn,
352
- sx: commonMenuItemStyles
353
- }, React__default.createElement(VisibilityOffIcon, null), ' ', (_localization$columnA3 = localization.columnActionMenuItemHideColumn) == null ? void 0 : _localization$columnA3.replace('{column}', String(column.Header)))]);
642
+ onClick: handleHideColumn
643
+ }, React__default.createElement(material.ListItemIcon, null, React__default.createElement(VisibilityOffIcon, null)), React__default.createElement(material.ListItemText, null, (_localization$columnA3 = localization.columnActionMenuItemHideColumn) == null ? void 0 : _localization$columnA3.replace('{column}', String(column.Header))))]));
354
644
  };
355
645
 
356
646
  var MRT_ToggleColumnActionMenuButton = function MRT_ToggleColumnActionMenuButton(_ref) {
@@ -380,11 +670,12 @@ var MRT_ToggleColumnActionMenuButton = function MRT_ToggleColumnActionMenuButton
380
670
  onClick: handleClick,
381
671
  size: "small",
382
672
  sx: {
673
+ height: '2rem',
674
+ mr: '2px',
675
+ mt: '-0.2rem',
383
676
  opacity: 0.5,
384
677
  transition: 'opacity 0.2s',
385
- marginRight: '2px',
386
- height: '1.6rem',
387
- width: '1.6rem',
678
+ width: '2rem',
388
679
  '&:hover': {
389
680
  opacity: 1
390
681
  }
@@ -428,17 +719,12 @@ var MRT_TableHeadCell = function MRT_TableHeadCell(_ref) {
428
719
  });
429
720
 
430
721
  var sortTooltip = column.isSorted ? column.isSortedDesc ? localization.columnActionMenuItemClearSort : (_localization$columnA = localization.columnActionMenuItemSortDesc) == null ? void 0 : _localization$columnA.replace('{column}', column.Header) : (_localization$columnA2 = localization.columnActionMenuItemSortAsc) == null ? void 0 : _localization$columnA2.replace('{column}', column.Header);
722
+ var columnHeader = column.render('Header');
431
723
  return React__default.createElement(material.TableCell, Object.assign({
432
724
  align: isParentHeader ? 'center' : 'left'
433
725
  }, tableCellProps, {
434
726
  sx: _extends({}, commonTableHeadCellStyles(tableInstance.state.densePadding, enableColumnResizing), tableCellProps == null ? void 0 : tableCellProps.sx)
435
727
  }), React__default.createElement(material.Box, {
436
- sx: {
437
- alignContent: 'space-between',
438
- display: 'grid',
439
- height: '100%'
440
- }
441
- }, React__default.createElement(material.Box, {
442
728
  sx: {
443
729
  alignItems: 'flex-start',
444
730
  display: 'flex',
@@ -449,7 +735,8 @@ var MRT_TableHeadCell = function MRT_TableHeadCell(_ref) {
449
735
  sx: {
450
736
  alignItems: 'center',
451
737
  display: 'flex',
452
- flexWrap: 'nowrap'
738
+ flexWrap: 'nowrap',
739
+ whiteSpace: columnHeader.length < 15 ? 'nowrap' : 'normal'
453
740
  },
454
741
  title: undefined
455
742
  }), column.render('Header'), !isParentHeader && column.canSort && React__default.createElement(material.Tooltip, {
@@ -483,7 +770,7 @@ var MRT_TableHeadCell = function MRT_TableHeadCell(_ref) {
483
770
  "in": tableInstance.state.showFilters
484
771
  }, React__default.createElement(MRT_FilterTextField, {
485
772
  column: column
486
- }))));
773
+ })));
487
774
  };
488
775
 
489
776
  var MRT_EditCellTextField = function MRT_EditCellTextField(_ref) {
@@ -1890,6 +2177,7 @@ var MRT_SearchTextField = function MRT_SearchTextField() {
1890
2177
  _useMRT$icons = _useMRT.icons,
1891
2178
  SearchIcon = _useMRT$icons.SearchIcon,
1892
2179
  CloseIcon = _useMRT$icons.CloseIcon,
2180
+ idPrefix = _useMRT.idPrefix,
1893
2181
  localization = _useMRT.localization,
1894
2182
  muiSearchTextFieldProps = _useMRT.muiSearchTextFieldProps,
1895
2183
  onGlobalFilterChange = _useMRT.onGlobalFilterChange,
@@ -1915,7 +2203,7 @@ var MRT_SearchTextField = function MRT_SearchTextField() {
1915
2203
  "in": tableInstance.state.showSearch,
1916
2204
  orientation: "horizontal"
1917
2205
  }, React__default.createElement(material.TextField, Object.assign({
1918
- id: "global-search-text-field",
2206
+ id: "mrt-" + idPrefix + "-search-text-field",
1919
2207
  placeholder: localization.searchTextFieldPlaceholder,
1920
2208
  onChange: function onChange(event) {
1921
2209
  setSearchValue(event.target.value);
@@ -2118,6 +2406,7 @@ var MRT_ToggleSearchButton = function MRT_ToggleSearchButton(_ref) {
2118
2406
  _useMRT$icons = _useMRT.icons,
2119
2407
  SearchIcon = _useMRT$icons.SearchIcon,
2120
2408
  SearchOffIcon = _useMRT$icons.SearchOffIcon,
2409
+ idPrefix = _useMRT.idPrefix,
2121
2410
  localization = _useMRT.localization,
2122
2411
  muiSearchTextFieldProps = _useMRT.muiSearchTextFieldProps,
2123
2412
  setShowSearch = _useMRT.setShowSearch,
@@ -2128,7 +2417,7 @@ var MRT_ToggleSearchButton = function MRT_ToggleSearchButton(_ref) {
2128
2417
  setTimeout(function () {
2129
2418
  var _document$getElementB, _muiSearchTextFieldPr;
2130
2419
 
2131
- return (_document$getElementB = document.getElementById((_muiSearchTextFieldPr = muiSearchTextFieldProps == null ? void 0 : muiSearchTextFieldProps.id) != null ? _muiSearchTextFieldPr : "global-search-text-field")) == null ? void 0 : _document$getElementB.focus();
2420
+ return (_document$getElementB = document.getElementById((_muiSearchTextFieldPr = muiSearchTextFieldProps == null ? void 0 : muiSearchTextFieldProps.id) != null ? _muiSearchTextFieldPr : "mrt-" + idPrefix + "-search-text-field")) == null ? void 0 : _document$getElementB.focus();
2132
2421
  }, 200);
2133
2422
  };
2134
2423
 
@@ -2409,6 +2698,15 @@ var MRT_DefaultLocalization_EN = {
2409
2698
  columnShowHideMenuShowAll: 'Show all',
2410
2699
  expandAllButtonTitle: 'Expand all',
2411
2700
  expandButtonTitle: 'Expand',
2701
+ filterMenuItemContains: 'Contains Exact',
2702
+ filterMenuItemEmpty: 'Empty',
2703
+ filterMenuItemEndsWith: 'Ends With',
2704
+ filterMenuItemEquals: 'Equals',
2705
+ filterMenuItemFuzzy: 'Fuzzy Match',
2706
+ filterMenuItemNotEmpty: 'Not Empty',
2707
+ filterMenuItemNotEquals: 'Not Equals',
2708
+ filterMenuItemStartsWith: 'Starts With',
2709
+ filterMenuTitle: 'Filter Mode',
2412
2710
  filterTextFieldClearButtonTitle: 'Clear filter',
2413
2711
  filterTextFieldPlaceholder: 'Filter by {column}',
2414
2712
  rowActionButtonCancel: 'Cancel',
@@ -2425,9 +2723,9 @@ var MRT_DefaultLocalization_EN = {
2425
2723
  toggleFilterButtonTitle: 'Toggle filters',
2426
2724
  toggleFullScreenButtonTitle: 'Toggle full screen',
2427
2725
  toggleSearchButtonTitle: 'Toggle search',
2428
- toolbarAlertSelectionMessage: '{selectedCount} of {rowCount} row(s) selected',
2429
2726
  toolbarAlertGroupedByMessage: 'Grouped by ',
2430
- toolbarAlertGroupedThenByMessage: ', then by '
2727
+ toolbarAlertGroupedThenByMessage: ', then by ',
2728
+ toolbarAlertSelectionMessage: '{selectedCount} of {rowCount} row(s) selected'
2431
2729
  };
2432
2730
 
2433
2731
  var MRT_Default_Icons = {