material-react-table 0.5.5 → 0.5.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  import { ChangeEvent, FC, MouseEvent, ReactNode } from 'react';
2
- import { AlertProps, IconButtonProps, TableBodyProps, TableCellProps, TableContainerProps, TableFooterProps, TableHeadProps, TablePaginationProps, TableProps, TableRowProps, TextFieldProps, ToolbarProps } from '@mui/material';
3
- import { Cell, Column, ColumnInstance, HeaderGroup, Row, TableInstance, TableOptions, TableState, UseColumnOrderInstanceProps, UseColumnOrderState, UseExpandedInstanceProps, UseExpandedOptions, UseExpandedRowProps, UseExpandedState, UseFiltersColumnOptions, UseFiltersColumnProps, UseFiltersInstanceProps, UseFiltersOptions, UseFiltersState, UseGlobalFiltersColumnOptions, UseGlobalFiltersInstanceProps, UseGlobalFiltersOptions, UseGlobalFiltersState, UseGroupByCellProps, UseGroupByColumnOptions, UseGroupByColumnProps, UseGroupByInstanceProps, UseGroupByOptions, UseGroupByRowProps, UseGroupByState, UsePaginationInstanceProps, UsePaginationOptions, UsePaginationState, UseResizeColumnsColumnOptions, UseResizeColumnsColumnProps, UseResizeColumnsOptions, UseResizeColumnsState, UseRowSelectInstanceProps, UseRowSelectOptions, UseRowSelectRowProps, UseRowSelectState, UseRowStateCellProps, UseRowStateInstanceProps, UseRowStateOptions, UseRowStateRowProps, UseRowStateState, UseSortByColumnOptions, UseSortByColumnProps, UseSortByInstanceProps, UseSortByOptions, UseSortByState, UseTableHeaderGroupProps, UseTableInstanceProps, UseTableOptions } from 'react-table';
2
+ import { AlertProps, IconButtonProps, LinearProgressProps, SkeletonProps, TableBodyProps, TableCellProps, TableContainerProps, TableFooterProps, TableHeadProps, TablePaginationProps, TableProps, TableRowProps, TextFieldProps, ToolbarProps } from '@mui/material';
3
+ import { Cell, Column, ColumnInstance, FilterType, HeaderGroup, Row, TableInstance, TableOptions, TableState, UseColumnOrderInstanceProps, UseColumnOrderState, UseExpandedInstanceProps, UseExpandedOptions, UseExpandedRowProps, UseExpandedState, UseFiltersColumnOptions, UseFiltersColumnProps, UseFiltersInstanceProps, UseFiltersOptions, UseFiltersState, UseGlobalFiltersColumnOptions, UseGlobalFiltersInstanceProps, UseGlobalFiltersOptions, UseGlobalFiltersState, UseGroupByCellProps, UseGroupByColumnOptions, UseGroupByColumnProps, UseGroupByInstanceProps, UseGroupByOptions, UseGroupByRowProps, UseGroupByState, UsePaginationInstanceProps, UsePaginationOptions, UsePaginationState, UseResizeColumnsColumnOptions, UseResizeColumnsColumnProps, UseResizeColumnsOptions, UseResizeColumnsState, UseRowSelectInstanceProps, UseRowSelectOptions, UseRowSelectRowProps, UseRowSelectState, UseRowStateCellProps, UseRowStateInstanceProps, UseRowStateOptions, UseRowStateRowProps, UseRowStateState, UseSortByColumnOptions, UseSortByColumnProps, UseSortByInstanceProps, UseSortByOptions, UseSortByState, UseTableHeaderGroupProps, UseTableInstanceProps, UseTableOptions } from 'react-table';
4
4
  import { MRT_Localization } from './localization';
5
5
  import { MRT_Icons } from './icons';
6
6
  export declare type MRT_TableOptions<D extends {} = {}> = TableOptions<D> & UseExpandedOptions<D> & UseFiltersOptions<D> & UseGlobalFiltersOptions<D> & UseGroupByOptions<D> & UsePaginationOptions<D> & UseResizeColumnsOptions<D> & UseRowSelectOptions<D> & UseRowStateOptions<D> & UseSortByOptions<D> & {
@@ -30,6 +30,11 @@ export declare type MRT_ColumnInterface<D extends {} = {}> = UseFiltersColumnOpt
30
30
  Header?: string;
31
31
  disableFilters?: boolean;
32
32
  editable?: boolean;
33
+ filter?: MRT_FilterType | string | FilterType<D>;
34
+ filterSelectOptions?: (string | {
35
+ text: string;
36
+ value: string;
37
+ })[];
33
38
  muiTableBodyCellEditTextFieldProps?: TextFieldProps | ((cell: MRT_Cell<D>) => TextFieldProps);
34
39
  muiTableBodyCellProps?: TableCellProps | ((cell: MRT_Cell<D>) => TableCellProps);
35
40
  muiTableFooterCellProps?: TableCellProps | ((column: Column<D>) => TableCellProps);
@@ -48,7 +53,17 @@ export declare type MRT_Row<D extends {} = {}> = Row<D> & UseExpandedRowProps<D>
48
53
  cells: MRT_Cell<D>[];
49
54
  };
50
55
  export declare type MRT_Cell<D extends {} = {}, _V = any> = Cell<D> & UseGroupByCellProps<D> & UseRowStateCellProps<D> & {};
51
- export declare type MRT_FilterType = 'contains' | 'empty' | 'endsWith' | 'equals' | 'fuzzy' | 'notEmpty' | 'notEquals' | 'startsWith';
56
+ export declare enum MRT_FILTER_TYPE {
57
+ CONTAINS = "contains",
58
+ EMPTY = "empty",
59
+ ENDS_WITH = "endsWith",
60
+ EQUALS = "equals",
61
+ FUZZY = "fuzzy",
62
+ NOT_EMPTY = "notEmpty",
63
+ NOT_EQUALS = "notEquals",
64
+ STARTS_WITH = "startsWith"
65
+ }
66
+ export declare type MRT_FilterType = MRT_FILTER_TYPE | Function;
52
67
  export declare type MRT_TableState<D extends {} = {}> = TableState<D> & UseColumnOrderState<D> & UseExpandedState<D> & UseFiltersState<D> & UseGlobalFiltersState<D> & UseGroupByState<D> & UsePaginationState<D> & UseResizeColumnsState<D> & UseRowSelectState<D> & UseRowStateState<D> & UseSortByState<D> & {
53
68
  currentEditingRow: MRT_Row<D> | null;
54
69
  currentFilterTypes: {
@@ -83,9 +98,11 @@ export declare type MaterialReactTableProps<D extends {} = {}> = UseTableOptions
83
98
  isFetching?: boolean;
84
99
  isLoading?: boolean;
85
100
  localization?: Partial<MRT_Localization>;
101
+ muiLinearProgressProps?: LinearProgressProps | ((tableInstance: MRT_TableInstance) => LinearProgressProps);
86
102
  muiSearchTextFieldProps?: TextFieldProps;
87
103
  muiTableBodyCellEditTextFieldProps?: TextFieldProps | ((cell?: MRT_Cell<D>) => TextFieldProps);
88
104
  muiTableBodyCellProps?: TableCellProps | ((cell?: MRT_Cell<D>) => TableCellProps);
105
+ muiTableBodyCellSkeletonProps?: SkeletonProps | ((cell?: MRT_Cell<D>) => SkeletonProps);
89
106
  muiTableBodyProps?: TableBodyProps | ((tableInstance: MRT_TableInstance<D>) => TableBodyProps);
90
107
  muiTableBodyRowProps?: TableRowProps | ((row: Row<D>) => TableRowProps);
91
108
  muiTableContainerProps?: TableContainerProps | ((tableInstance: MRT_TableInstance<D>) => TableContainerProps);
@@ -1,4 +1,8 @@
1
1
  import { MRT_Row } from '.';
2
+ export declare const fuzzySearchFN: {
3
+ (rows: MRT_Row[], columnIds: string[], filterValue: string | number): MRT_Row<{}>[];
4
+ autoRemove(val: any): boolean;
5
+ };
2
6
  export declare const fuzzyFilterFN: {
3
7
  (rows: MRT_Row[], id: string, filterValue: string | number): MRT_Row<{}>[];
4
8
  autoRemove(val: any): boolean;
@@ -26,6 +26,7 @@ export interface MRT_Localization {
26
26
  filterTextFieldChipLabelNotEmpty: string;
27
27
  filterTextFieldClearButtonTitle: string;
28
28
  filterTextFieldPlaceholder: string;
29
+ changeFilterMode: string;
29
30
  rowActionButtonCancel: string;
30
31
  rowActionButtonSave: string;
31
32
  rowActionMenuButtonTitle: string;
@@ -234,13 +234,9 @@ var MaterialReactTableProvider = function MaterialReactTableProvider(props) {
234
234
 
235
235
  var _useState6 = React.useState(function () {
236
236
  return Object.assign.apply(Object, [{}].concat(props.columns.map(function (c) {
237
- var _c$accessor;
237
+ var _ref, _c$filter, _props$initialState5, _props$initialState5$, _ref2;
238
238
 
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;
242
-
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;
239
+ 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
240
  })));
245
241
  }),
246
242
  currentFilterTypes = _useState6[0],
@@ -256,6 +252,7 @@ var MaterialReactTableProvider = function MaterialReactTableProvider(props) {
256
252
  columns: columns,
257
253
  // @ts-ignore
258
254
  filterTypes: filterTypes,
255
+ globalFilterValue: 'fuzzy',
259
256
  useControlledState: function useControlledState(state) {
260
257
  return React.useMemo(function () {
261
258
  return _extends({}, state, {
@@ -305,6 +302,11 @@ var useMRT = function useMRT() {
305
302
  return React.useContext(MaterialReactTableContext);
306
303
  };
307
304
 
305
+ var commonMenuItemStyles = {
306
+ py: '6px',
307
+ my: 0,
308
+ alignItems: 'center'
309
+ };
308
310
  var MRT_FilterTypeMenu = function MRT_FilterTypeMenu(_ref) {
309
311
  var anchorEl = _ref.anchorEl,
310
312
  column = _ref.column,
@@ -318,35 +320,35 @@ var MRT_FilterTypeMenu = function MRT_FilterTypeMenu(_ref) {
318
320
 
319
321
  var filterTypes = React.useMemo(function () {
320
322
  return [{
321
- type: 'fuzzy',
323
+ type: exports.MRT_FILTER_TYPE.FUZZY,
322
324
  label: localization.filterMenuItemFuzzy,
323
325
  divider: false
324
326
  }, {
325
- type: 'contains',
327
+ type: exports.MRT_FILTER_TYPE.CONTAINS,
326
328
  label: localization.filterMenuItemContains,
327
329
  divider: true
328
330
  }, {
329
- type: 'startsWith',
331
+ type: exports.MRT_FILTER_TYPE.STARTS_WITH,
330
332
  label: localization.filterMenuItemStartsWith,
331
333
  divider: false
332
334
  }, {
333
- type: 'endsWith',
335
+ type: exports.MRT_FILTER_TYPE.ENDS_WITH,
334
336
  label: localization.filterMenuItemEndsWith,
335
337
  divider: true
336
338
  }, {
337
- type: 'equals',
339
+ type: exports.MRT_FILTER_TYPE.EQUALS,
338
340
  label: localization.filterMenuItemEquals,
339
341
  divider: false
340
342
  }, {
341
- type: 'notEquals',
343
+ type: exports.MRT_FILTER_TYPE.NOT_EQUALS,
342
344
  label: localization.filterMenuItemNotEquals,
343
345
  divider: true
344
346
  }, {
345
- type: 'empty',
347
+ type: exports.MRT_FILTER_TYPE.EMPTY,
346
348
  label: localization.filterMenuItemEmpty,
347
349
  divider: false
348
350
  }, {
349
- type: 'notEmpty',
351
+ type: exports.MRT_FILTER_TYPE.NOT_EMPTY,
350
352
  label: localization.filterMenuItemNotEmpty,
351
353
  divider: false
352
354
  }];
@@ -360,7 +362,7 @@ var MRT_FilterTypeMenu = function MRT_FilterTypeMenu(_ref) {
360
362
  return _extends({}, prev, (_extends2 = {}, _extends2[column.id] = value, _extends2));
361
363
  });
362
364
 
363
- if (['empty', 'notEmpty'].includes(value)) {
365
+ if ([exports.MRT_FILTER_TYPE.EMPTY, exports.MRT_FILTER_TYPE.NOT_EMPTY].includes(value)) {
364
366
  column.setFilter(' ');
365
367
  }
366
368
 
@@ -377,28 +379,29 @@ var MRT_FilterTypeMenu = function MRT_FilterTypeMenu(_ref) {
377
379
  onClose: function onClose() {
378
380
  return setAnchorEl(null);
379
381
  },
380
- open: !!anchorEl
381
- }, React__default.createElement(material.MenuList, {
382
- dense: tableInstance.state.densePadding,
383
- disablePadding: true
384
- }, filterTypes.map(function (_ref2) {
382
+ open: !!anchorEl,
383
+ MenuListProps: {
384
+ dense: tableInstance.state.densePadding
385
+ }
386
+ }, filterTypes.map(function (_ref2, index) {
385
387
  var type = _ref2.type,
386
388
  label = _ref2.label,
387
389
  divider = _ref2.divider;
388
390
  return React__default.createElement(material.MenuItem, {
389
391
  divider: divider,
390
- key: type,
392
+ key: index,
391
393
  onClick: function onClick() {
392
394
  return handleSelectFilterType(type);
393
395
  },
394
396
  selected: type === filterType,
397
+ sx: commonMenuItemStyles,
395
398
  value: type
396
399
  }, label);
397
- })));
400
+ }));
398
401
  };
399
402
 
400
403
  var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
401
- var _localization$filterT, _localization$filterT2;
404
+ var _localization$filterT, _localization$filterT2, _column$filterSelectO;
402
405
 
403
406
  var column = _ref.column;
404
407
 
@@ -446,7 +449,7 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
446
449
  setCurrentFilterTypes(function (prev) {
447
450
  var _extends2;
448
451
 
449
- return _extends({}, prev, (_extends2 = {}, _extends2[column.id] = 'fuzzy', _extends2));
452
+ return _extends({}, prev, (_extends2 = {}, _extends2[column.id] = exports.MRT_FILTER_TYPE.FUZZY, _extends2));
450
453
  });
451
454
  };
452
455
 
@@ -457,7 +460,9 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
457
460
  }
458
461
 
459
462
  var filterType = tableInstance.state.currentFilterTypes[column.id];
460
- var filterChipLabel = ['empty', 'notEmpty'].includes(filterType);
463
+ var isCustomFilterType = filterType instanceof Function;
464
+ var isSelectFilter = !!column.filterSelectOptions;
465
+ var filterChipLabel = !isCustomFilterType && [exports.MRT_FILTER_TYPE.EMPTY, exports.MRT_FILTER_TYPE.NOT_EMPTY].includes(filterType);
461
466
  var filterPlaceholder = (_localization$filterT = localization.filterTextFieldPlaceholder) == null ? void 0 : _localization$filterT.replace('{column}', String(column.Header));
462
467
  return React__default.createElement(React__default.Fragment, null, React__default.createElement(material.TextField, Object.assign({
463
468
  fullWidth: true,
@@ -466,12 +471,20 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
466
471
  disabled: !!filterChipLabel,
467
472
  sx: {
468
473
  textOverflow: 'ellipsis',
469
- width: filterChipLabel ? 0 : 'auto'
474
+ width: filterChipLabel ? 0 : undefined
475
+ },
476
+ title: filterPlaceholder
477
+ },
478
+ label: isSelectFilter && !filterValue ? filterPlaceholder : undefined,
479
+ InputLabelProps: {
480
+ shrink: false,
481
+ sx: {
482
+ maxWidth: 'calc(100% - 2.5rem)'
470
483
  },
471
484
  title: filterPlaceholder
472
485
  },
473
486
  margin: "none",
474
- placeholder: filterChipLabel ? '' : filterPlaceholder,
487
+ placeholder: filterChipLabel || isSelectFilter ? undefined : filterPlaceholder,
475
488
  onChange: function onChange(e) {
476
489
  setFilterValue(e.target.value);
477
490
  handleChange(e.target.value);
@@ -479,22 +492,24 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
479
492
  onClick: function onClick(e) {
480
493
  return e.stopPropagation();
481
494
  },
495
+ select: isSelectFilter,
482
496
  value: filterValue != null ? filterValue : '',
483
497
  variant: "standard",
484
498
  InputProps: {
485
- startAdornment: React__default.createElement(material.InputAdornment, {
499
+ startAdornment: !isSelectFilter && React__default.createElement(material.InputAdornment, {
486
500
  position: "start"
487
501
  }, React__default.createElement(material.Tooltip, {
488
502
  arrow: true,
489
- title: "Change Filter Mode"
490
- }, React__default.createElement(material.IconButton, {
503
+ title: localization.changeFilterMode
504
+ }, React__default.createElement("span", null, React__default.createElement(material.IconButton, {
505
+ disabled: isCustomFilterType,
491
506
  onClick: handleFilterMenuOpen,
492
507
  size: "small",
493
508
  sx: {
494
509
  height: '1.75rem',
495
510
  width: '1.75rem'
496
511
  }
497
- }, React__default.createElement(FilterListIcon, null))), filterChipLabel && React__default.createElement(material.Chip, {
512
+ }, React__default.createElement(FilterListIcon, null)))), filterChipLabel && React__default.createElement(material.Chip, {
498
513
  onDelete: handleClearFilterChip,
499
514
  label: filterType
500
515
  })),
@@ -502,11 +517,12 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
502
517
  position: "end"
503
518
  }, React__default.createElement(material.Tooltip, {
504
519
  arrow: true,
520
+ disableHoverListener: isSelectFilter,
505
521
  placement: "right",
506
522
  title: (_localization$filterT2 = localization.filterTextFieldClearButtonTitle) != null ? _localization$filterT2 : ''
507
523
  }, React__default.createElement("span", null, React__default.createElement(material.IconButton, {
508
524
  "aria-label": localization.filterTextFieldClearButtonTitle,
509
- disabled: (filterValue == null ? void 0 : filterValue.length) === 0,
525
+ disabled: !(filterValue != null && filterValue.length),
510
526
  onClick: handleClear,
511
527
  size: "small",
512
528
  sx: {
@@ -521,8 +537,32 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
521
537
  sx: _extends({
522
538
  m: '0 -0.25rem',
523
539
  minWidth: !filterChipLabel ? '5rem' : 'auto',
524
- width: 'calc(100% + 0.5rem)'
540
+ width: 'calc(100% + 0.5rem)',
541
+ mt: isSelectFilter && !filterValue ? '-1rem' : undefined,
542
+ '& .MuiSelect-icon': {
543
+ mr: '1.5rem'
544
+ }
525
545
  }, textFieldProps == null ? void 0 : textFieldProps.sx)
546
+ }), isSelectFilter && React__default.createElement(material.MenuItem, {
547
+ divider: true,
548
+ disabled: !filterValue,
549
+ value: ""
550
+ }, localization.filterTextFieldClearButtonTitle), column == null ? void 0 : (_column$filterSelectO = column.filterSelectOptions) == null ? void 0 : _column$filterSelectO.map(function (option) {
551
+ var value;
552
+ var text;
553
+
554
+ if (typeof option === 'string') {
555
+ value = option;
556
+ text = option;
557
+ } else if (typeof option === 'object') {
558
+ value = option.value;
559
+ text = option.text;
560
+ }
561
+
562
+ return React__default.createElement(material.MenuItem, {
563
+ key: value,
564
+ value: value
565
+ }, text);
526
566
  })), React__default.createElement(MRT_FilterTypeMenu, {
527
567
  anchorEl: anchorEl,
528
568
  column: column,
@@ -530,8 +570,15 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
530
570
  }));
531
571
  };
532
572
 
533
- var commonMenuItemStyles = {
573
+ var commonMenuItemStyles$1 = {
574
+ py: '6px',
575
+ my: 0,
576
+ justifyContent: 'space-between',
577
+ alignItems: 'center'
578
+ };
579
+ var commonListItemStyles = {
534
580
  display: 'flex',
581
+ gap: '0.75rem',
535
582
  alignItems: 'center'
536
583
  };
537
584
  var MRT_ColumnActionMenu = function MRT_ColumnActionMenu(_ref) {
@@ -551,6 +598,7 @@ var MRT_ColumnActionMenu = function MRT_ColumnActionMenu(_ref) {
551
598
  ClearAllIcon = _useMRT$icons.ClearAllIcon,
552
599
  DynamicFeedIcon = _useMRT$icons.DynamicFeedIcon,
553
600
  FilterListIcon = _useMRT$icons.FilterListIcon,
601
+ FilterListOffIcon = _useMRT$icons.FilterListOffIcon,
554
602
  SortIcon = _useMRT$icons.SortIcon,
555
603
  VisibilityOffIcon = _useMRT$icons.VisibilityOffIcon,
556
604
  idPrefix = _useMRT.idPrefix,
@@ -587,6 +635,11 @@ var MRT_ColumnActionMenu = function MRT_ColumnActionMenu(_ref) {
587
635
  setAnchorEl(null);
588
636
  };
589
637
 
638
+ var handleClearFilter = function handleClearFilter() {
639
+ column.setFilter('');
640
+ setAnchorEl(null);
641
+ };
642
+
590
643
  var handleFilterByColumn = function handleFilterByColumn() {
591
644
  setShowFilters(true);
592
645
  setTimeout(function () {
@@ -608,36 +661,51 @@ var MRT_ColumnActionMenu = function MRT_ColumnActionMenu(_ref) {
608
661
  open: !!anchorEl,
609
662
  onClose: function onClose() {
610
663
  return setAnchorEl(null);
664
+ },
665
+ MenuListProps: {
666
+ dense: tableInstance.state.densePadding
611
667
  }
612
- }, React__default.createElement(material.MenuList, {
613
- dense: tableInstance.state.densePadding,
614
- disablePadding: true
615
668
  }, !disableSortBy && column.canSort && [React__default.createElement(material.MenuItem, {
616
- key: 1,
617
669
  disabled: !column.isSorted,
670
+ key: 1,
618
671
  onClick: handleClearSort,
619
- sx: commonMenuItemStyles
620
- }, React__default.createElement(material.ListItemIcon, null, React__default.createElement(ClearAllIcon, null)), React__default.createElement(material.ListItemText, null, localization.columnActionMenuItemClearSort)), React__default.createElement(material.MenuItem, {
672
+ sx: commonMenuItemStyles$1
673
+ }, React__default.createElement(material.Box, {
674
+ sx: commonListItemStyles
675
+ }, React__default.createElement(ClearAllIcon, null), localization.columnActionMenuItemClearSort)), React__default.createElement(material.MenuItem, {
621
676
  disabled: column.isSorted && !column.isSortedDesc,
622
677
  key: 2,
623
678
  onClick: handleSortAsc,
624
- sx: commonMenuItemStyles
625
- }, 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, {
679
+ sx: commonMenuItemStyles$1
680
+ }, React__default.createElement(material.Box, {
681
+ sx: commonListItemStyles
682
+ }, React__default.createElement(SortIcon, null), (_localization$columnA = localization.columnActionMenuItemSortAsc) == null ? void 0 : _localization$columnA.replace('{column}', String(column.Header)))), React__default.createElement(material.MenuItem, {
626
683
  divider: !disableFilters || enableColumnGrouping || !disableColumnHiding,
627
684
  key: 3,
628
685
  disabled: column.isSorted && column.isSortedDesc,
629
686
  onClick: handleSortDesc,
630
- sx: commonMenuItemStyles
631
- }, React__default.createElement(material.ListItemIcon, null, React__default.createElement(SortIcon, {
687
+ sx: commonMenuItemStyles$1
688
+ }, React__default.createElement(material.Box, {
689
+ sx: commonListItemStyles
690
+ }, React__default.createElement(SortIcon, {
632
691
  style: {
633
692
  transform: 'rotate(180deg) scaleX(-1)'
634
693
  }
635
- })), 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, {
694
+ }), (_localization$columnA2 = localization.columnActionMenuItemSortDesc) == null ? void 0 : _localization$columnA2.replace('{column}', String(column.Header))))], !disableFilters && column.canFilter && [React__default.createElement(material.MenuItem, {
695
+ disabled: !column.filterValue,
696
+ key: 0,
697
+ onClick: handleClearFilter,
698
+ sx: commonMenuItemStyles$1
699
+ }, React__default.createElement(material.Box, {
700
+ sx: commonListItemStyles
701
+ }, React__default.createElement(FilterListOffIcon, null), localization.filterTextFieldClearButtonTitle)), React__default.createElement(material.MenuItem, {
636
702
  divider: enableColumnGrouping || !disableColumnHiding,
637
703
  key: 1,
638
704
  onClick: handleFilterByColumn,
639
- sx: commonMenuItemStyles
640
- }, 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, {
705
+ sx: commonMenuItemStyles$1
706
+ }, React__default.createElement(material.Box, {
707
+ sx: commonListItemStyles
708
+ }, 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, {
641
709
  onClick: handleOpenFilterModeMenu,
642
710
  onMouseEnter: handleOpenFilterModeMenu,
643
711
  size: "small",
@@ -654,12 +722,16 @@ var MRT_ColumnActionMenu = function MRT_ColumnActionMenu(_ref) {
654
722
  divider: !disableColumnHiding,
655
723
  key: 2,
656
724
  onClick: handleGroupByColumn,
657
- sx: commonMenuItemStyles
658
- }, 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, {
725
+ sx: commonMenuItemStyles$1
726
+ }, React__default.createElement(material.Box, {
727
+ sx: commonListItemStyles
728
+ }, 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, {
659
729
  key: 1,
660
730
  onClick: handleHideColumn,
661
- sx: commonMenuItemStyles
662
- }, 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))))]));
731
+ sx: commonMenuItemStyles$1
732
+ }, React__default.createElement(material.Box, {
733
+ sx: commonListItemStyles
734
+ }, React__default.createElement(VisibilityOffIcon, null), (_localization$columnA3 = localization.columnActionMenuItemHideColumn) == null ? void 0 : _localization$columnA3.replace('{column}', String(column.Header))))]);
663
735
  };
664
736
 
665
737
  var MRT_ToggleColumnActionMenuButton = function MRT_ToggleColumnActionMenuButton(_ref) {
@@ -742,8 +814,7 @@ var MRT_TableHeadCell = function MRT_TableHeadCell(_ref) {
742
814
  });
743
815
 
744
816
  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);
745
- var filterTooltip = !!column.filterValue ? localization.filterApplied.replace('{column}', String(column.Header)).replace('{filterType}', // @ts-ignore
746
- localization["filterMenuItem" + (tableInstance.state.currentFilterTypes[column.id].charAt(0).toUpperCase() + tableInstance.state.currentFilterTypes[column.id].slice(1))]) : localization.toggleFilterButtonTitle;
817
+ var filterTooltip = !!column.filterValue ? localization.filterApplied.replace('{column}', String(column.Header)).replace('{filterType}', column.filterValue) : localization.toggleFilterButtonTitle;
747
818
  var columnHeader = column.render('Header');
748
819
  return React__default.createElement(material.TableCell, Object.assign({
749
820
  align: isParentHeader ? 'center' : 'left'
@@ -766,6 +837,7 @@ var MRT_TableHeadCell = function MRT_TableHeadCell(_ref) {
766
837
  title: undefined
767
838
  }), column.render('Header'), !isParentHeader && column.canSort && React__default.createElement(material.Tooltip, {
768
839
  arrow: true,
840
+ placement: "top",
769
841
  title: sortTooltip
770
842
  }, React__default.createElement(material.TableSortLabel, {
771
843
  "aria-label": sortTooltip,
@@ -773,19 +845,22 @@ var MRT_TableHeadCell = function MRT_TableHeadCell(_ref) {
773
845
  direction: column.isSortedDesc ? 'desc' : 'asc'
774
846
  })), !isParentHeader && !!column.canFilter && React__default.createElement(material.Tooltip, {
775
847
  arrow: true,
848
+ placement: "top",
776
849
  title: filterTooltip
777
850
  }, React__default.createElement(material.IconButton, {
851
+ disableRipple: true,
778
852
  onClick: function onClick(event) {
779
853
  event.stopPropagation();
780
854
  setShowFilters(!tableInstance.state.showFilters);
781
855
  },
782
856
  size: "small",
783
857
  sx: {
858
+ m: 0,
784
859
  opacity: !!column.filterValue ? 0.8 : 0,
785
860
  p: '2px',
786
- m: 0,
787
861
  transition: 'all 0.2s ease-in-out',
788
862
  '&:hover': {
863
+ backgroundColor: 'transparent',
789
864
  opacity: 0.8
790
865
  }
791
866
  }
@@ -882,8 +957,10 @@ var MRT_TableBodyCell = function MRT_TableBodyCell(_ref) {
882
957
  var cell = _ref.cell;
883
958
 
884
959
  var _useMRT = useMRT(),
885
- onCellClick = _useMRT.onCellClick,
960
+ isLoading = _useMRT.isLoading,
886
961
  muiTableBodyCellProps = _useMRT.muiTableBodyCellProps,
962
+ muiTableBodyCellSkeletonProps = _useMRT.muiTableBodyCellSkeletonProps,
963
+ onCellClick = _useMRT.onCellClick,
887
964
  _useMRT$tableInstance = _useMRT.tableInstance.state,
888
965
  currentEditingRow = _useMRT$tableInstance.currentEditingRow,
889
966
  densePadding = _useMRT$tableInstance.densePadding;
@@ -901,7 +978,11 @@ var MRT_TableBodyCell = function MRT_TableBodyCell(_ref) {
901
978
  }
902
979
  }, tableCellProps, {
903
980
  sx: _extends({}, commonTableBodyCellStyles(densePadding), tableCellProps == null ? void 0 : tableCellProps.sx)
904
- }), (currentEditingRow == null ? void 0 : currentEditingRow.id) === cell.row.id ? React__default.createElement(MRT_EditCellTextField, {
981
+ }), isLoading ? React__default.createElement(material.Skeleton, Object.assign({
982
+ animation: "wave",
983
+ height: 20,
984
+ width: Math.random() * (120 - 60) + 60
985
+ }, muiTableBodyCellSkeletonProps)) : (currentEditingRow == null ? void 0 : currentEditingRow.id) === cell.row.id ? React__default.createElement(MRT_EditCellTextField, {
905
986
  cell: cell
906
987
  }) : cell.isPlaceholder ? null : cell.isAggregated ? cell.render('Aggregated') : cell.isGrouped ? React__default.createElement("span", null, cell.render('Cell'), " (", cell.row.subRows.length, ")") : cell.render('Cell'));
907
988
  };
@@ -1138,15 +1219,16 @@ var MRT_RowActionMenu = function MRT_RowActionMenu(_ref) {
1138
1219
  open: !!anchorEl,
1139
1220
  onClose: function onClose() {
1140
1221
  return setAnchorEl(null);
1222
+ },
1223
+ MenuListProps: {
1224
+ dense: tableInstance.state.densePadding
1141
1225
  }
1142
- }, React__default.createElement(material.MenuList, {
1143
- dense: tableInstance.state.densePadding,
1144
- disablePadding: true
1145
1226
  }, enableRowEditing && React__default.createElement(material.MenuItem, {
1146
- onClick: handleEdit
1147
- }, 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 () {
1227
+ onClick: handleEdit,
1228
+ sx: commonMenuItemStyles$1
1229
+ }, React__default.createElement(EditIcon, null), localization.rowActionMenuItemEdit), (_renderRowActionMenuI = renderRowActionMenuItems == null ? void 0 : renderRowActionMenuItems(row, tableInstance, function () {
1148
1230
  return setAnchorEl(null);
1149
- })) != null ? _renderRowActionMenuI : null));
1231
+ })) != null ? _renderRowActionMenuI : null);
1150
1232
  };
1151
1233
 
1152
1234
  function createCommonjsModule(fn, module) {
@@ -2328,10 +2410,17 @@ var MRT_ShowHideColumnsMenu = function MRT_ShowHideColumnsMenu(_ref) {
2328
2410
  };
2329
2411
 
2330
2412
  return React__default.createElement(React__default.Fragment, null, React__default.createElement(material.MenuItem, {
2331
- sx: {
2413
+ sx: _extends({}, commonMenuItemStyles$1, {
2332
2414
  pl: (column.depth + 0.5) * 2 + "rem"
2333
- }
2415
+ })
2334
2416
  }, React__default.createElement(material.FormControlLabel, {
2417
+ componentsProps: {
2418
+ typography: {
2419
+ sx: {
2420
+ marginBottom: 0
2421
+ }
2422
+ }
2423
+ },
2335
2424
  checked: switchChecked,
2336
2425
  control: React__default.createElement(material.Switch, null),
2337
2426
  label: column.Header,
@@ -2374,15 +2463,15 @@ var MRT_ShowHideColumnsButton = function MRT_ShowHideColumnsButton(_ref) {
2374
2463
  open: !!anchorEl,
2375
2464
  onClose: function onClose() {
2376
2465
  return setAnchorEl(null);
2466
+ },
2467
+ MenuListProps: {
2468
+ dense: tableInstance.state.densePadding
2377
2469
  }
2378
- }, React__default.createElement(material.MenuList, {
2379
- dense: tableInstance.state.densePadding,
2380
- disablePadding: true
2381
2470
  }, React__default.createElement(material.Box, {
2382
2471
  sx: {
2383
2472
  display: 'flex',
2384
2473
  justifyContent: 'space-between',
2385
- p: '0 0.5rem 0.5rem 0.5rem'
2474
+ p: '0.5rem'
2386
2475
  }
2387
2476
  }, React__default.createElement(material.Button, {
2388
2477
  disabled: !tableInstance.getToggleHideAllColumnsProps().checked && !tableInstance.getToggleHideAllColumnsProps().indeterminate,
@@ -2399,7 +2488,7 @@ var MRT_ShowHideColumnsButton = function MRT_ShowHideColumnsButton(_ref) {
2399
2488
  key: index + "-" + column.id,
2400
2489
  column: column
2401
2490
  });
2402
- }))));
2491
+ })));
2403
2492
  };
2404
2493
 
2405
2494
  var MRT_ToggleDensePaddingButton = function MRT_ToggleDensePaddingButton(_ref) {
@@ -2684,6 +2773,7 @@ var MRT_TableContainer = function MRT_TableContainer() {
2684
2773
  hideToolbarTop = _useMRT.hideToolbarTop,
2685
2774
  isFetching = _useMRT.isFetching,
2686
2775
  isLoading = _useMRT.isLoading,
2776
+ muiLinearProgressProps = _useMRT.muiLinearProgressProps,
2687
2777
  muiTableContainerProps = _useMRT.muiTableContainerProps,
2688
2778
  tableInstance = _useMRT.tableInstance;
2689
2779
 
@@ -2708,6 +2798,7 @@ var MRT_TableContainer = function MRT_TableContainer() {
2708
2798
  }
2709
2799
  }, [fullScreen]);
2710
2800
  var tableContainerProps = muiTableContainerProps instanceof Function ? muiTableContainerProps(tableInstance) : muiTableContainerProps;
2801
+ var linearProgressProps = muiLinearProgressProps instanceof Function ? muiLinearProgressProps(tableInstance) : muiLinearProgressProps;
2711
2802
  return React__default.createElement(material.TableContainer, Object.assign({
2712
2803
  component: material.Paper
2713
2804
  }, tableContainerProps, {
@@ -2726,7 +2817,7 @@ var MRT_TableContainer = function MRT_TableContainer() {
2726
2817
  }), !hideToolbarTop && React__default.createElement(MRT_ToolbarTop, null), React__default.createElement(material.Collapse, {
2727
2818
  "in": isFetching || isLoading,
2728
2819
  unmountOnExit: true
2729
- }, React__default.createElement(material.LinearProgress, null)), React__default.createElement(material.Box, {
2820
+ }, React__default.createElement(material.LinearProgress, Object.assign({}, linearProgressProps))), React__default.createElement(material.Box, {
2730
2821
  sx: {
2731
2822
  maxWidth: '100%',
2732
2823
  overflowX: 'auto'
@@ -2752,6 +2843,7 @@ var MRT_DefaultLocalization_EN = {
2752
2843
  filterMenuItemEmpty: 'Empty',
2753
2844
  filterMenuItemEndsWith: 'Ends With',
2754
2845
  filterMenuItemEquals: 'Equals',
2846
+ changeFilterMode: 'Change filter mode',
2755
2847
  filterMenuItemFuzzy: 'Fuzzy Match (Default)',
2756
2848
  filterMenuItemNotEmpty: 'Not Empty',
2757
2849
  filterMenuItemNotEquals: 'Not Equals',
@@ -2810,6 +2902,18 @@ var MRT_Default_Icons = {
2810
2902
  };
2811
2903
 
2812
2904
  var _excluded = ["defaultColumn", "icons", "localization", "positionActionsColumn", "positionPagination", "positionToolbarActions", "positionToolbarAlertBanner"];
2905
+
2906
+ (function (MRT_FILTER_TYPE) {
2907
+ MRT_FILTER_TYPE["CONTAINS"] = "contains";
2908
+ MRT_FILTER_TYPE["EMPTY"] = "empty";
2909
+ MRT_FILTER_TYPE["ENDS_WITH"] = "endsWith";
2910
+ MRT_FILTER_TYPE["EQUALS"] = "equals";
2911
+ MRT_FILTER_TYPE["FUZZY"] = "fuzzy";
2912
+ MRT_FILTER_TYPE["NOT_EMPTY"] = "notEmpty";
2913
+ MRT_FILTER_TYPE["NOT_EQUALS"] = "notEquals";
2914
+ MRT_FILTER_TYPE["STARTS_WITH"] = "startsWith";
2915
+ })(exports.MRT_FILTER_TYPE || (exports.MRT_FILTER_TYPE = {}));
2916
+
2813
2917
  var MaterialReactTable = (function (_ref) {
2814
2918
  var _ref$defaultColumn = _ref.defaultColumn,
2815
2919
  defaultColumn = _ref$defaultColumn === void 0 ? {