material-react-table 0.5.6 → 0.5.9

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.
Files changed (57) hide show
  1. package/dist/MaterialReactTable.d.ts +8 -2
  2. package/dist/body/MRT_TableBodyCell.d.ts +1 -1
  3. package/dist/body/MRT_TableBodyRow.d.ts +1 -1
  4. package/dist/body/MRT_TableDetailPanel.d.ts +1 -1
  5. package/dist/buttons/MRT_EditActionButtons.d.ts +1 -1
  6. package/dist/buttons/MRT_ExpandButton.d.ts +1 -1
  7. package/dist/buttons/MRT_ToggleColumnActionMenuButton.d.ts +1 -1
  8. package/dist/buttons/MRT_ToggleRowActionMenuButton.d.ts +1 -1
  9. package/dist/enums.d.ts +12 -0
  10. package/dist/filtersFNs.d.ts +20 -0
  11. package/dist/footer/MRT_TableFooterCell.d.ts +1 -1
  12. package/dist/footer/MRT_TableFooterRow.d.ts +1 -1
  13. package/dist/head/MRT_TableHeadCell.d.ts +1 -1
  14. package/dist/head/MRT_TableHeadRow.d.ts +1 -1
  15. package/dist/inputs/MRT_EditCellTextField.d.ts +1 -1
  16. package/dist/inputs/MRT_FilterTextField.d.ts +1 -1
  17. package/dist/inputs/MRT_SelectCheckbox.d.ts +1 -1
  18. package/dist/localization.d.ts +3 -0
  19. package/dist/material-react-table.cjs.development.js +234 -68
  20. package/dist/material-react-table.cjs.development.js.map +1 -1
  21. package/dist/material-react-table.cjs.production.min.js +1 -1
  22. package/dist/material-react-table.cjs.production.min.js.map +1 -1
  23. package/dist/material-react-table.esm.js +235 -69
  24. package/dist/material-react-table.esm.js.map +1 -1
  25. package/dist/menus/MRT_ColumnActionMenu.d.ts +12 -1
  26. package/dist/menus/MRT_FilterTypeMenu.d.ts +1 -1
  27. package/dist/menus/MRT_RowActionMenu.d.ts +1 -1
  28. package/dist/menus/MRT_ShowHideColumnsMenu.d.ts +1 -1
  29. package/dist/useMRT.d.ts +1 -1
  30. package/package.json +3 -4
  31. package/src/MaterialReactTable.tsx +5 -9
  32. package/src/body/MRT_TableBody.tsx +1 -1
  33. package/src/body/MRT_TableBodyCell.tsx +1 -1
  34. package/src/body/MRT_TableBodyRow.tsx +1 -1
  35. package/src/body/MRT_TableDetailPanel.tsx +1 -1
  36. package/src/buttons/MRT_EditActionButtons.tsx +1 -1
  37. package/src/buttons/MRT_ExpandButton.tsx +1 -1
  38. package/src/buttons/MRT_ShowHideColumnsButton.tsx +1 -2
  39. package/src/buttons/MRT_ToggleColumnActionMenuButton.tsx +2 -1
  40. package/src/buttons/MRT_ToggleRowActionMenuButton.tsx +1 -1
  41. package/src/enums.ts +12 -0
  42. package/src/filtersFNs.ts +42 -0
  43. package/src/footer/MRT_TableFooter.tsx +1 -1
  44. package/src/footer/MRT_TableFooterCell.tsx +1 -1
  45. package/src/footer/MRT_TableFooterRow.tsx +1 -1
  46. package/src/head/MRT_TableHead.tsx +1 -1
  47. package/src/head/MRT_TableHeadCell.tsx +7 -16
  48. package/src/head/MRT_TableHeadRow.tsx +1 -1
  49. package/src/inputs/MRT_EditCellTextField.tsx +1 -1
  50. package/src/inputs/MRT_FilterTextField.tsx +70 -16
  51. package/src/inputs/MRT_SelectCheckbox.tsx +1 -1
  52. package/src/localization.ts +6 -0
  53. package/src/menus/MRT_ColumnActionMenu.tsx +51 -43
  54. package/src/menus/MRT_FilterTypeMenu.tsx +56 -16
  55. package/src/menus/MRT_RowActionMenu.tsx +6 -8
  56. package/src/menus/MRT_ShowHideColumnsMenu.tsx +6 -2
  57. package/src/useMRT.tsx +36 -14
@@ -167,6 +167,26 @@ notEqualsFilterFN.autoRemove = function (val) {
167
167
  return !val;
168
168
  };
169
169
 
170
+ var greaterThanFilterFN = function greaterThanFilterFN(rows, id, filterValue) {
171
+ return rows.filter(function (row) {
172
+ return !isNaN(+filterValue) && !isNaN(+row.values[id]) ? +row.values[id] > +filterValue : row.values[id].toString().toLowerCase().trim() > filterValue.toString().toLowerCase().trim();
173
+ });
174
+ };
175
+
176
+ greaterThanFilterFN.autoRemove = function (val) {
177
+ return !val;
178
+ };
179
+
180
+ var lessThanFilterFN = function lessThanFilterFN(rows, id, filterValue) {
181
+ return rows.filter(function (row) {
182
+ return !isNaN(+filterValue) && !isNaN(+row.values[id]) ? +row.values[id] < +filterValue : row.values[id].toString().toLowerCase().trim() < filterValue.toString().toLowerCase().trim();
183
+ });
184
+ };
185
+
186
+ lessThanFilterFN.autoRemove = function (val) {
187
+ return !val;
188
+ };
189
+
170
190
  var emptyFilterFN = function emptyFilterFN(rows, id, _filterValue) {
171
191
  return rows.filter(function (row) {
172
192
  return !row.values[id].toString().toLowerCase().trim();
@@ -191,6 +211,8 @@ var defaultFilterFNs = {
191
211
  contains: containsFilterFN,
192
212
  empty: emptyFilterFN,
193
213
  endsWith: endsWithFilterFN,
214
+ greaterThan: greaterThanFilterFN,
215
+ lessThan: lessThanFilterFN,
194
216
  equals: equalsFilterFN,
195
217
  fuzzy: fuzzyFilterFN,
196
218
  notEmpty: notEmptyFilterFN,
@@ -232,16 +254,40 @@ var MaterialReactTableProvider = function MaterialReactTableProvider(props) {
232
254
  return _extends({}, defaultFilterFNs, props.filterTypes);
233
255
  }, [props.filterTypes]);
234
256
 
235
- var _useState6 = React.useState(function () {
236
- return Object.assign.apply(Object, [{}].concat(props.columns.map(function (c) {
237
- var _c$accessor;
257
+ var getInitialFilterTypeState = function getInitialFilterTypeState() {
258
+ var lowestLevelColumns = props.columns;
259
+ var currentCols = props.columns;
260
+
261
+ while (!!currentCols.length && currentCols.some(function (col) {
262
+ return col.columns;
263
+ })) {
264
+ var nextCols = currentCols.filter(function (col) {
265
+ return !!col.columns;
266
+ }).map(function (col) {
267
+ return col.columns;
268
+ }).flat();
269
+
270
+ if (nextCols.every(function (col) {
271
+ return !col.columns;
272
+ })) {
273
+ lowestLevelColumns = [].concat(lowestLevelColumns, nextCols);
274
+ }
238
275
 
239
- return (_c$accessor = c.accessor) == null ? void 0 : _c$accessor.toString();
240
- }).map(function (accessor) {
241
- var _props$initialState$f2, _props$initialState5, _props$initialState5$, _ref;
276
+ currentCols = nextCols;
277
+ }
242
278
 
243
- 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;
279
+ lowestLevelColumns = lowestLevelColumns.filter(function (col) {
280
+ return !col.columns;
281
+ });
282
+ return Object.assign.apply(Object, [{}].concat(lowestLevelColumns.map(function (c) {
283
+ var _ref, _c$filter, _props$initialState5, _props$initialState5$, _ref2;
284
+
285
+ 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;
244
286
  })));
287
+ };
288
+
289
+ var _useState6 = React.useState(function () {
290
+ return getInitialFilterTypeState();
245
291
  }),
246
292
  currentFilterTypes = _useState6[0],
247
293
  setCurrentFilterTypes = _useState6[1];
@@ -256,6 +302,7 @@ var MaterialReactTableProvider = function MaterialReactTableProvider(props) {
256
302
  columns: columns,
257
303
  // @ts-ignore
258
304
  filterTypes: filterTypes,
305
+ globalFilterValue: 'fuzzy',
259
306
  useControlledState: function useControlledState(state) {
260
307
  return React.useMemo(function () {
261
308
  return _extends({}, state, {
@@ -305,6 +352,26 @@ var useMRT = function useMRT() {
305
352
  return React.useContext(MaterialReactTableContext);
306
353
  };
307
354
 
355
+ var MRT_FILTER_TYPE;
356
+
357
+ (function (MRT_FILTER_TYPE) {
358
+ MRT_FILTER_TYPE["CONTAINS"] = "contains";
359
+ MRT_FILTER_TYPE["EMPTY"] = "empty";
360
+ MRT_FILTER_TYPE["ENDS_WITH"] = "endsWith";
361
+ MRT_FILTER_TYPE["EQUALS"] = "equals";
362
+ MRT_FILTER_TYPE["FUZZY"] = "fuzzy";
363
+ MRT_FILTER_TYPE["GREATER_THAN"] = "greaterThan";
364
+ MRT_FILTER_TYPE["LESS_THAN"] = "lessThan";
365
+ MRT_FILTER_TYPE["NOT_EMPTY"] = "notEmpty";
366
+ MRT_FILTER_TYPE["NOT_EQUALS"] = "notEquals";
367
+ MRT_FILTER_TYPE["STARTS_WITH"] = "startsWith";
368
+ })(MRT_FILTER_TYPE || (MRT_FILTER_TYPE = {}));
369
+
370
+ var commonMenuItemStyles = {
371
+ py: '6px',
372
+ my: 0,
373
+ alignItems: 'center'
374
+ };
308
375
  var MRT_FilterTypeMenu = function MRT_FilterTypeMenu(_ref) {
309
376
  var anchorEl = _ref.anchorEl,
310
377
  column = _ref.column,
@@ -318,37 +385,55 @@ var MRT_FilterTypeMenu = function MRT_FilterTypeMenu(_ref) {
318
385
 
319
386
  var filterTypes = React.useMemo(function () {
320
387
  return [{
321
- type: 'fuzzy',
388
+ type: MRT_FILTER_TYPE.FUZZY,
322
389
  label: localization.filterMenuItemFuzzy,
323
- divider: false
390
+ divider: false,
391
+ fn: fuzzyFilterFN
324
392
  }, {
325
- type: 'contains',
393
+ type: MRT_FILTER_TYPE.CONTAINS,
326
394
  label: localization.filterMenuItemContains,
327
- divider: true
395
+ divider: true,
396
+ fn: containsFilterFN
328
397
  }, {
329
- type: 'startsWith',
398
+ type: MRT_FILTER_TYPE.STARTS_WITH,
330
399
  label: localization.filterMenuItemStartsWith,
331
- divider: false
400
+ divider: false,
401
+ fn: startsWithFilterFN
332
402
  }, {
333
- type: 'endsWith',
403
+ type: MRT_FILTER_TYPE.ENDS_WITH,
334
404
  label: localization.filterMenuItemEndsWith,
335
- divider: true
405
+ divider: true,
406
+ fn: endsWithFilterFN
336
407
  }, {
337
- type: 'equals',
408
+ type: MRT_FILTER_TYPE.EQUALS,
338
409
  label: localization.filterMenuItemEquals,
339
- divider: false
410
+ divider: false,
411
+ fn: equalsFilterFN
340
412
  }, {
341
- type: 'notEquals',
413
+ type: MRT_FILTER_TYPE.NOT_EQUALS,
342
414
  label: localization.filterMenuItemNotEquals,
343
- divider: true
415
+ divider: true,
416
+ fn: notEqualsFilterFN
417
+ }, {
418
+ type: MRT_FILTER_TYPE.GREATER_THAN,
419
+ label: localization.filterMenuItemGreaterThan,
420
+ divider: false,
421
+ fn: greaterThanFilterFN
344
422
  }, {
345
- type: 'empty',
423
+ type: MRT_FILTER_TYPE.LESS_THAN,
424
+ label: localization.filterMenuItemLessThan,
425
+ divider: true,
426
+ fn: lessThanFilterFN
427
+ }, {
428
+ type: MRT_FILTER_TYPE.EMPTY,
346
429
  label: localization.filterMenuItemEmpty,
347
- divider: false
430
+ divider: false,
431
+ fn: emptyFilterFN
348
432
  }, {
349
- type: 'notEmpty',
433
+ type: MRT_FILTER_TYPE.NOT_EMPTY,
350
434
  label: localization.filterMenuItemNotEmpty,
351
- divider: false
435
+ divider: false,
436
+ fn: notEmptyFilterFN
352
437
  }];
353
438
  }, []);
354
439
 
@@ -360,7 +445,7 @@ var MRT_FilterTypeMenu = function MRT_FilterTypeMenu(_ref) {
360
445
  return _extends({}, prev, (_extends2 = {}, _extends2[column.id] = value, _extends2));
361
446
  });
362
447
 
363
- if (['empty', 'notEmpty'].includes(value)) {
448
+ if ([MRT_FILTER_TYPE.EMPTY, MRT_FILTER_TYPE.NOT_EMPTY].includes(value)) {
364
449
  column.setFilter(' ');
365
450
  }
366
451
 
@@ -379,27 +464,28 @@ var MRT_FilterTypeMenu = function MRT_FilterTypeMenu(_ref) {
379
464
  },
380
465
  open: !!anchorEl,
381
466
  MenuListProps: {
382
- dense: tableInstance.state.densePadding,
383
- disablePadding: true
467
+ dense: tableInstance.state.densePadding
384
468
  }
385
- }, filterTypes.map(function (_ref2) {
469
+ }, filterTypes.map(function (_ref2, index) {
386
470
  var type = _ref2.type,
387
471
  label = _ref2.label,
388
- divider = _ref2.divider;
472
+ divider = _ref2.divider,
473
+ fn = _ref2.fn;
389
474
  return React__default.createElement(material.MenuItem, {
390
475
  divider: divider,
391
- key: type,
476
+ key: index,
392
477
  onClick: function onClick() {
393
478
  return handleSelectFilterType(type);
394
479
  },
395
- selected: type === filterType,
480
+ selected: type === filterType || fn === filterType,
481
+ sx: commonMenuItemStyles,
396
482
  value: type
397
483
  }, label);
398
484
  }));
399
485
  };
400
486
 
401
487
  var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
402
- var _localization$filterT, _localization$filterT2;
488
+ var _localization$filterT, _localization$filterT2, _column$filterSelectO;
403
489
 
404
490
  var column = _ref.column;
405
491
 
@@ -447,7 +533,7 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
447
533
  setCurrentFilterTypes(function (prev) {
448
534
  var _extends2;
449
535
 
450
- return _extends({}, prev, (_extends2 = {}, _extends2[column.id] = 'fuzzy', _extends2));
536
+ return _extends({}, prev, (_extends2 = {}, _extends2[column.id] = MRT_FILTER_TYPE.FUZZY, _extends2));
451
537
  });
452
538
  };
453
539
 
@@ -458,7 +544,9 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
458
544
  }
459
545
 
460
546
  var filterType = tableInstance.state.currentFilterTypes[column.id];
461
- var filterChipLabel = ['empty', 'notEmpty'].includes(filterType);
547
+ var isCustomFilterType = filterType instanceof Function;
548
+ var isSelectFilter = !!column.filterSelectOptions;
549
+ var filterChipLabel = !isCustomFilterType && [MRT_FILTER_TYPE.EMPTY, MRT_FILTER_TYPE.NOT_EMPTY].includes(filterType);
462
550
  var filterPlaceholder = (_localization$filterT = localization.filterTextFieldPlaceholder) == null ? void 0 : _localization$filterT.replace('{column}', String(column.Header));
463
551
  return React__default.createElement(React__default.Fragment, null, React__default.createElement(material.TextField, Object.assign({
464
552
  fullWidth: true,
@@ -471,8 +559,16 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
471
559
  },
472
560
  title: filterPlaceholder
473
561
  },
562
+ label: isSelectFilter && !filterValue ? filterPlaceholder : undefined,
563
+ InputLabelProps: {
564
+ shrink: false,
565
+ sx: {
566
+ maxWidth: 'calc(100% - 2.5rem)'
567
+ },
568
+ title: filterPlaceholder
569
+ },
474
570
  margin: "none",
475
- placeholder: filterChipLabel ? '' : filterPlaceholder,
571
+ placeholder: filterChipLabel || isSelectFilter ? undefined : filterPlaceholder,
476
572
  onChange: function onChange(e) {
477
573
  setFilterValue(e.target.value);
478
574
  handleChange(e.target.value);
@@ -480,22 +576,23 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
480
576
  onClick: function onClick(e) {
481
577
  return e.stopPropagation();
482
578
  },
579
+ select: isSelectFilter,
483
580
  value: filterValue != null ? filterValue : '',
484
581
  variant: "standard",
485
582
  InputProps: {
486
- startAdornment: React__default.createElement(material.InputAdornment, {
583
+ startAdornment: !isSelectFilter && React__default.createElement(material.InputAdornment, {
487
584
  position: "start"
488
585
  }, React__default.createElement(material.Tooltip, {
489
586
  arrow: true,
490
- title: "Change Filter Mode"
491
- }, React__default.createElement(material.IconButton, {
587
+ title: localization.changeFilterMode
588
+ }, React__default.createElement("span", null, React__default.createElement(material.IconButton, {
492
589
  onClick: handleFilterMenuOpen,
493
590
  size: "small",
494
591
  sx: {
495
592
  height: '1.75rem',
496
593
  width: '1.75rem'
497
594
  }
498
- }, React__default.createElement(FilterListIcon, null))), filterChipLabel && React__default.createElement(material.Chip, {
595
+ }, React__default.createElement(FilterListIcon, null)))), filterChipLabel && React__default.createElement(material.Chip, {
499
596
  onDelete: handleClearFilterChip,
500
597
  label: filterType
501
598
  })),
@@ -503,11 +600,12 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
503
600
  position: "end"
504
601
  }, React__default.createElement(material.Tooltip, {
505
602
  arrow: true,
603
+ disableHoverListener: isSelectFilter,
506
604
  placement: "right",
507
605
  title: (_localization$filterT2 = localization.filterTextFieldClearButtonTitle) != null ? _localization$filterT2 : ''
508
606
  }, React__default.createElement("span", null, React__default.createElement(material.IconButton, {
509
607
  "aria-label": localization.filterTextFieldClearButtonTitle,
510
- disabled: (filterValue == null ? void 0 : filterValue.length) === 0,
608
+ disabled: !(filterValue != null && filterValue.length),
511
609
  onClick: handleClear,
512
610
  size: "small",
513
611
  sx: {
@@ -522,8 +620,32 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
522
620
  sx: _extends({
523
621
  m: '0 -0.25rem',
524
622
  minWidth: !filterChipLabel ? '5rem' : 'auto',
525
- width: 'calc(100% + 0.5rem)'
623
+ width: 'calc(100% + 0.5rem)',
624
+ mt: isSelectFilter && !filterValue ? '-1rem' : undefined,
625
+ '& .MuiSelect-icon': {
626
+ mr: '1.5rem'
627
+ }
526
628
  }, textFieldProps == null ? void 0 : textFieldProps.sx)
629
+ }), isSelectFilter && React__default.createElement(material.MenuItem, {
630
+ divider: true,
631
+ disabled: !filterValue,
632
+ value: ""
633
+ }, localization.filterTextFieldClearButtonTitle), column == null ? void 0 : (_column$filterSelectO = column.filterSelectOptions) == null ? void 0 : _column$filterSelectO.map(function (option) {
634
+ var value;
635
+ var text;
636
+
637
+ if (typeof option === 'string') {
638
+ value = option;
639
+ text = option;
640
+ } else if (typeof option === 'object') {
641
+ value = option.value;
642
+ text = option.text;
643
+ }
644
+
645
+ return React__default.createElement(material.MenuItem, {
646
+ key: value,
647
+ value: value
648
+ }, text);
527
649
  })), React__default.createElement(MRT_FilterTypeMenu, {
528
650
  anchorEl: anchorEl,
529
651
  column: column,
@@ -531,8 +653,15 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
531
653
  }));
532
654
  };
533
655
 
534
- var commonMenuItemStyles = {
656
+ var commonMenuItemStyles$1 = {
657
+ py: '6px',
658
+ my: 0,
659
+ justifyContent: 'space-between',
660
+ alignItems: 'center'
661
+ };
662
+ var commonListItemStyles = {
535
663
  display: 'flex',
664
+ gap: '0.75rem',
536
665
  alignItems: 'center'
537
666
  };
538
667
  var MRT_ColumnActionMenu = function MRT_ColumnActionMenu(_ref) {
@@ -552,6 +681,7 @@ var MRT_ColumnActionMenu = function MRT_ColumnActionMenu(_ref) {
552
681
  ClearAllIcon = _useMRT$icons.ClearAllIcon,
553
682
  DynamicFeedIcon = _useMRT$icons.DynamicFeedIcon,
554
683
  FilterListIcon = _useMRT$icons.FilterListIcon,
684
+ FilterListOffIcon = _useMRT$icons.FilterListOffIcon,
555
685
  SortIcon = _useMRT$icons.SortIcon,
556
686
  VisibilityOffIcon = _useMRT$icons.VisibilityOffIcon,
557
687
  idPrefix = _useMRT.idPrefix,
@@ -588,6 +718,11 @@ var MRT_ColumnActionMenu = function MRT_ColumnActionMenu(_ref) {
588
718
  setAnchorEl(null);
589
719
  };
590
720
 
721
+ var handleClearFilter = function handleClearFilter() {
722
+ column.setFilter('');
723
+ setAnchorEl(null);
724
+ };
725
+
591
726
  var handleFilterByColumn = function handleFilterByColumn() {
592
727
  setShowFilters(true);
593
728
  setTimeout(function () {
@@ -611,35 +746,49 @@ var MRT_ColumnActionMenu = function MRT_ColumnActionMenu(_ref) {
611
746
  return setAnchorEl(null);
612
747
  },
613
748
  MenuListProps: {
614
- dense: tableInstance.state.densePadding,
615
- disablePadding: true
749
+ dense: tableInstance.state.densePadding
616
750
  }
617
751
  }, !disableSortBy && column.canSort && [React__default.createElement(material.MenuItem, {
618
- key: 1,
619
752
  disabled: !column.isSorted,
753
+ key: 1,
620
754
  onClick: handleClearSort,
621
- sx: commonMenuItemStyles
622
- }, React__default.createElement(material.ListItemIcon, null, React__default.createElement(ClearAllIcon, null)), React__default.createElement(material.ListItemText, null, localization.columnActionMenuItemClearSort)), React__default.createElement(material.MenuItem, {
755
+ sx: commonMenuItemStyles$1
756
+ }, React__default.createElement(material.Box, {
757
+ sx: commonListItemStyles
758
+ }, React__default.createElement(ClearAllIcon, null), localization.columnActionMenuItemClearSort)), React__default.createElement(material.MenuItem, {
623
759
  disabled: column.isSorted && !column.isSortedDesc,
624
760
  key: 2,
625
761
  onClick: handleSortAsc,
626
- sx: commonMenuItemStyles
627
- }, 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, {
762
+ sx: commonMenuItemStyles$1
763
+ }, React__default.createElement(material.Box, {
764
+ sx: commonListItemStyles
765
+ }, React__default.createElement(SortIcon, null), (_localization$columnA = localization.columnActionMenuItemSortAsc) == null ? void 0 : _localization$columnA.replace('{column}', String(column.Header)))), React__default.createElement(material.MenuItem, {
628
766
  divider: !disableFilters || enableColumnGrouping || !disableColumnHiding,
629
767
  key: 3,
630
768
  disabled: column.isSorted && column.isSortedDesc,
631
769
  onClick: handleSortDesc,
632
- sx: commonMenuItemStyles
633
- }, React__default.createElement(material.ListItemIcon, null, React__default.createElement(SortIcon, {
770
+ sx: commonMenuItemStyles$1
771
+ }, React__default.createElement(material.Box, {
772
+ sx: commonListItemStyles
773
+ }, React__default.createElement(SortIcon, {
634
774
  style: {
635
775
  transform: 'rotate(180deg) scaleX(-1)'
636
776
  }
637
- })), 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.MenuItem, {
777
+ }), (_localization$columnA2 = localization.columnActionMenuItemSortDesc) == null ? void 0 : _localization$columnA2.replace('{column}', String(column.Header))))], !disableFilters && column.canFilter && [React__default.createElement(material.MenuItem, {
778
+ disabled: !column.filterValue,
779
+ key: 0,
780
+ onClick: handleClearFilter,
781
+ sx: commonMenuItemStyles$1
782
+ }, React__default.createElement(material.Box, {
783
+ sx: commonListItemStyles
784
+ }, React__default.createElement(FilterListOffIcon, null), localization.filterTextFieldClearButtonTitle)), React__default.createElement(material.MenuItem, {
638
785
  divider: enableColumnGrouping || !disableColumnHiding,
639
786
  key: 1,
640
787
  onClick: handleFilterByColumn,
641
- sx: commonMenuItemStyles
642
- }, 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, {
788
+ sx: commonMenuItemStyles$1
789
+ }, React__default.createElement(material.Box, {
790
+ sx: commonListItemStyles
791
+ }, React__default.createElement(FilterListIcon, null), (_localization$filterT = localization.filterTextFieldPlaceholder) == null ? void 0 : _localization$filterT.replace('{column}', String(column.Header))), !column.filterSelectOptions && React__default.createElement(material.IconButton, {
643
792
  onClick: handleOpenFilterModeMenu,
644
793
  onMouseEnter: handleOpenFilterModeMenu,
645
794
  size: "small",
@@ -656,12 +805,16 @@ var MRT_ColumnActionMenu = function MRT_ColumnActionMenu(_ref) {
656
805
  divider: !disableColumnHiding,
657
806
  key: 2,
658
807
  onClick: handleGroupByColumn,
659
- sx: commonMenuItemStyles
660
- }, 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.MenuItem, {
808
+ sx: commonMenuItemStyles$1
809
+ }, React__default.createElement(material.Box, {
810
+ sx: commonListItemStyles
811
+ }, 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.MenuItem, {
661
812
  key: 1,
662
813
  onClick: handleHideColumn,
663
- sx: commonMenuItemStyles
664
- }, 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))))]);
814
+ sx: commonMenuItemStyles$1
815
+ }, React__default.createElement(material.Box, {
816
+ sx: commonListItemStyles
817
+ }, React__default.createElement(VisibilityOffIcon, null), (_localization$columnA3 = localization.columnActionMenuItemHideColumn) == null ? void 0 : _localization$columnA3.replace('{column}', String(column.Header))))]);
665
818
  };
666
819
 
667
820
  var MRT_ToggleColumnActionMenuButton = function MRT_ToggleColumnActionMenuButton(_ref) {
@@ -685,6 +838,7 @@ var MRT_ToggleColumnActionMenuButton = function MRT_ToggleColumnActionMenuButton
685
838
  arrow: true,
686
839
  enterDelay: 1000,
687
840
  enterNextDelay: 1000,
841
+ placement: "top",
688
842
  title: localization.columnActionMenuButtonTitle
689
843
  }, React__default.createElement(material.IconButton, {
690
844
  "aria-label": localization.columnActionMenuButtonTitle,
@@ -744,8 +898,7 @@ var MRT_TableHeadCell = function MRT_TableHeadCell(_ref) {
744
898
  });
745
899
 
746
900
  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);
747
- var filterTooltip = !!column.filterValue ? localization.filterApplied.replace('{column}', String(column.Header)).replace('{filterType}', // @ts-ignore
748
- localization["filterMenuItem" + (tableInstance.state.currentFilterTypes[column.id].charAt(0).toUpperCase() + tableInstance.state.currentFilterTypes[column.id].slice(1))]) : localization.toggleFilterButtonTitle;
901
+ var filterTooltip = !!column.filterValue ? localization.filterApplied.replace('{column}', String(column.Header)).replace('{filterType}', column.filterValue) : localization.toggleFilterButtonTitle;
749
902
  var columnHeader = column.render('Header');
750
903
  return React__default.createElement(material.TableCell, Object.assign({
751
904
  align: isParentHeader ? 'center' : 'left'
@@ -768,6 +921,7 @@ var MRT_TableHeadCell = function MRT_TableHeadCell(_ref) {
768
921
  title: undefined
769
922
  }), column.render('Header'), !isParentHeader && column.canSort && React__default.createElement(material.Tooltip, {
770
923
  arrow: true,
924
+ placement: "top",
771
925
  title: sortTooltip
772
926
  }, React__default.createElement(material.TableSortLabel, {
773
927
  "aria-label": sortTooltip,
@@ -775,19 +929,22 @@ var MRT_TableHeadCell = function MRT_TableHeadCell(_ref) {
775
929
  direction: column.isSortedDesc ? 'desc' : 'asc'
776
930
  })), !isParentHeader && !!column.canFilter && React__default.createElement(material.Tooltip, {
777
931
  arrow: true,
932
+ placement: "top",
778
933
  title: filterTooltip
779
934
  }, React__default.createElement(material.IconButton, {
935
+ disableRipple: true,
780
936
  onClick: function onClick(event) {
781
937
  event.stopPropagation();
782
938
  setShowFilters(!tableInstance.state.showFilters);
783
939
  },
784
940
  size: "small",
785
941
  sx: {
942
+ m: 0,
786
943
  opacity: !!column.filterValue ? 0.8 : 0,
787
944
  p: '2px',
788
- m: 0,
789
945
  transition: 'all 0.2s ease-in-out',
790
946
  '&:hover': {
947
+ backgroundColor: 'transparent',
791
948
  opacity: 0.8
792
949
  }
793
950
  }
@@ -1148,12 +1305,12 @@ var MRT_RowActionMenu = function MRT_RowActionMenu(_ref) {
1148
1305
  return setAnchorEl(null);
1149
1306
  },
1150
1307
  MenuListProps: {
1151
- dense: tableInstance.state.densePadding,
1152
- disablePadding: true
1308
+ dense: tableInstance.state.densePadding
1153
1309
  }
1154
1310
  }, enableRowEditing && React__default.createElement(material.MenuItem, {
1155
- onClick: handleEdit
1156
- }, React__default.createElement(material.ListItemIcon, null, React__default.createElement(EditIcon, null)), React__default.createElement(material.ListItemText, null, localization.rowActionMenuItemEdit)), (_renderRowActionMenuI = renderRowActionMenuItems == null ? void 0 : renderRowActionMenuItems(row, tableInstance, function () {
1311
+ onClick: handleEdit,
1312
+ sx: commonMenuItemStyles$1
1313
+ }, React__default.createElement(EditIcon, null), localization.rowActionMenuItemEdit), (_renderRowActionMenuI = renderRowActionMenuItems == null ? void 0 : renderRowActionMenuItems(row, tableInstance, function () {
1157
1314
  return setAnchorEl(null);
1158
1315
  })) != null ? _renderRowActionMenuI : null);
1159
1316
  };
@@ -2337,10 +2494,17 @@ var MRT_ShowHideColumnsMenu = function MRT_ShowHideColumnsMenu(_ref) {
2337
2494
  };
2338
2495
 
2339
2496
  return React__default.createElement(React__default.Fragment, null, React__default.createElement(material.MenuItem, {
2340
- sx: {
2497
+ sx: _extends({}, commonMenuItemStyles$1, {
2341
2498
  pl: (column.depth + 0.5) * 2 + "rem"
2342
- }
2499
+ })
2343
2500
  }, React__default.createElement(material.FormControlLabel, {
2501
+ componentsProps: {
2502
+ typography: {
2503
+ sx: {
2504
+ marginBottom: 0
2505
+ }
2506
+ }
2507
+ },
2344
2508
  checked: switchChecked,
2345
2509
  control: React__default.createElement(material.Switch, null),
2346
2510
  label: column.Header,
@@ -2385,8 +2549,7 @@ var MRT_ShowHideColumnsButton = function MRT_ShowHideColumnsButton(_ref) {
2385
2549
  return setAnchorEl(null);
2386
2550
  },
2387
2551
  MenuListProps: {
2388
- dense: tableInstance.state.densePadding,
2389
- disablePadding: true
2552
+ dense: tableInstance.state.densePadding
2390
2553
  }
2391
2554
  }, React__default.createElement(material.Box, {
2392
2555
  sx: {
@@ -2748,6 +2911,7 @@ var MRT_TableContainer = function MRT_TableContainer() {
2748
2911
 
2749
2912
  var MRT_DefaultLocalization_EN = {
2750
2913
  actionsHeadColumnTitle: 'Actions',
2914
+ changeFilterMode: 'Change filter mode',
2751
2915
  columnActionMenuButtonTitle: 'Column Actions',
2752
2916
  columnActionMenuItemClearSort: 'Clear sort',
2753
2917
  columnActionMenuItemGroupBy: 'Group by {column}',
@@ -2765,6 +2929,8 @@ var MRT_DefaultLocalization_EN = {
2765
2929
  filterMenuItemEndsWith: 'Ends With',
2766
2930
  filterMenuItemEquals: 'Equals',
2767
2931
  filterMenuItemFuzzy: 'Fuzzy Match (Default)',
2932
+ filterMenuItemGreaterThan: 'Greater Than',
2933
+ filterMenuItemLessThan: 'Less Than',
2768
2934
  filterMenuItemNotEmpty: 'Not Empty',
2769
2935
  filterMenuItemNotEquals: 'Not Equals',
2770
2936
  filterMenuItemStartsWith: 'Starts With',