material-react-table 0.5.4 → 0.5.7

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,7 +1,7 @@
1
1
  import React, { useState, useMemo, useContext, createContext, Fragment, useRef, useEffect } from 'react';
2
2
  import { useTable, useFilters, useGlobalFilter, useGroupBy, useSortBy, useExpanded, usePagination, useRowSelect, useResizeColumns, useFlexLayout, useAsyncDebounce } from 'react-table';
3
3
  import { matchSorter } from 'match-sorter';
4
- import { Menu, Typography, Divider, MenuItem, TextField, InputAdornment, Tooltip, IconButton, Chip, MenuList, ListItemIcon, ListItemText, TableCell, Box, TableSortLabel, Collapse, Checkbox, TableRow, TableHead, alpha, TableBody, TableFooter, Table, FormControlLabel, Switch, Button, TablePagination, useMediaQuery, Alert, Toolbar, TableContainer, Paper, LinearProgress } from '@mui/material';
4
+ import { Menu, MenuItem, ListItemIcon, ListItemText, IconButton, TextField, InputAdornment, Tooltip, Chip, TableCell, Box, TableSortLabel, Divider, Collapse, Skeleton, Checkbox, TableRow, TableHead, alpha, TableBody, TableFooter, Table, FormControlLabel, Switch, Button, TablePagination, useMediaQuery, Alert, Toolbar, TableContainer, Paper, LinearProgress } from '@mui/material';
5
5
  import ArrowRightIcon from '@mui/icons-material/ArrowRight';
6
6
  import CancelIcon from '@mui/icons-material/Cancel';
7
7
  import ClearAllIcon from '@mui/icons-material/ClearAll';
@@ -13,6 +13,8 @@ import DynamicFeedIcon from '@mui/icons-material/DynamicFeed';
13
13
  import EditIcon from '@mui/icons-material/Edit';
14
14
  import ExpandLessIcon from '@mui/icons-material/ExpandLess';
15
15
  import ExpandMoreIcon from '@mui/icons-material/ExpandMore';
16
+ import FilterAltIcon from '@mui/icons-material/FilterAlt';
17
+ import FilterAltOff from '@mui/icons-material/FilterAltOff';
16
18
  import FilterListIcon from '@mui/icons-material/FilterList';
17
19
  import FilterListOffIcon from '@mui/icons-material/FilterListOff';
18
20
  import FullscreenExitIcon from '@mui/icons-material/FullscreenExit';
@@ -296,7 +298,152 @@ var useMRT = function useMRT() {
296
298
  return useContext(MaterialReactTableContext);
297
299
  };
298
300
 
299
- var MRT_FilterMenu = function MRT_FilterMenu(_ref) {
301
+ var commonMenuItemStyles = {
302
+ py: '0 !important',
303
+ my: '0 !important'
304
+ };
305
+ var MRT_ColumnActionMenu = function MRT_ColumnActionMenu(_ref) {
306
+ var _localization$columnA, _localization$columnA2, _localization$filterT, _localization, _localization$columnA3;
307
+
308
+ var anchorEl = _ref.anchorEl,
309
+ column = _ref.column,
310
+ setAnchorEl = _ref.setAnchorEl;
311
+
312
+ var _useMRT = useMRT(),
313
+ disableColumnHiding = _useMRT.disableColumnHiding,
314
+ disableFilters = _useMRT.disableFilters,
315
+ disableSortBy = _useMRT.disableSortBy,
316
+ enableColumnGrouping = _useMRT.enableColumnGrouping,
317
+ _useMRT$icons = _useMRT.icons,
318
+ ArrowRightIcon = _useMRT$icons.ArrowRightIcon,
319
+ ClearAllIcon = _useMRT$icons.ClearAllIcon,
320
+ DynamicFeedIcon = _useMRT$icons.DynamicFeedIcon,
321
+ FilterListIcon = _useMRT$icons.FilterListIcon,
322
+ SortIcon = _useMRT$icons.SortIcon,
323
+ VisibilityOffIcon = _useMRT$icons.VisibilityOffIcon,
324
+ idPrefix = _useMRT.idPrefix,
325
+ localization = _useMRT.localization,
326
+ setShowFilters = _useMRT.setShowFilters,
327
+ tableInstance = _useMRT.tableInstance;
328
+
329
+ var _useState = useState(null),
330
+ filterMenuAnchorEl = _useState[0],
331
+ setFilterMenuAnchorEl = _useState[1];
332
+
333
+ var handleClearSort = function handleClearSort() {
334
+ column.clearSortBy();
335
+ setAnchorEl(null);
336
+ };
337
+
338
+ var handleSortAsc = function handleSortAsc() {
339
+ column.toggleSortBy(false);
340
+ setAnchorEl(null);
341
+ };
342
+
343
+ var handleSortDesc = function handleSortDesc() {
344
+ column.toggleSortBy(true);
345
+ setAnchorEl(null);
346
+ };
347
+
348
+ var handleHideColumn = function handleHideColumn() {
349
+ column.toggleHidden();
350
+ setAnchorEl(null);
351
+ };
352
+
353
+ var handleGroupByColumn = function handleGroupByColumn() {
354
+ column.toggleGroupBy();
355
+ setAnchorEl(null);
356
+ };
357
+
358
+ var handleFilterByColumn = function handleFilterByColumn() {
359
+ setShowFilters(true);
360
+ setTimeout(function () {
361
+ var _document$getElementB, _column$muiTableHeadC, _column$muiTableHeadC2;
362
+
363
+ return (_document$getElementB = document.getElementById( // @ts-ignore
364
+ (_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();
365
+ }, 200);
366
+ setAnchorEl(null);
367
+ };
368
+
369
+ var handleOpenFilterModeMenu = function handleOpenFilterModeMenu(event) {
370
+ event.stopPropagation();
371
+ setFilterMenuAnchorEl(event.currentTarget);
372
+ };
373
+
374
+ return React.createElement(Menu, {
375
+ anchorEl: anchorEl,
376
+ open: !!anchorEl,
377
+ onClose: function onClose() {
378
+ return setAnchorEl(null);
379
+ },
380
+ MenuListProps: {
381
+ dense: tableInstance.state.densePadding,
382
+ disablePadding: true
383
+ }
384
+ }, !disableSortBy && column.canSort && [React.createElement(MenuItem, {
385
+ key: 1,
386
+ disabled: !column.isSorted,
387
+ onClick: handleClearSort,
388
+ sx: commonMenuItemStyles
389
+ }, React.createElement(ListItemIcon, null, React.createElement(ClearAllIcon, null)), React.createElement(ListItemText, {
390
+ sx: commonMenuItemStyles
391
+ }, localization.columnActionMenuItemClearSort)), React.createElement(MenuItem, {
392
+ disabled: column.isSorted && !column.isSortedDesc,
393
+ key: 2,
394
+ onClick: handleSortAsc,
395
+ sx: commonMenuItemStyles
396
+ }, React.createElement(ListItemIcon, null, React.createElement(SortIcon, null)), React.createElement(ListItemText, {
397
+ sx: commonMenuItemStyles
398
+ }, (_localization$columnA = localization.columnActionMenuItemSortAsc) == null ? void 0 : _localization$columnA.replace('{column}', String(column.Header)))), React.createElement(MenuItem, {
399
+ divider: !disableFilters || enableColumnGrouping || !disableColumnHiding,
400
+ key: 3,
401
+ disabled: column.isSorted && column.isSortedDesc,
402
+ onClick: handleSortDesc,
403
+ sx: commonMenuItemStyles
404
+ }, React.createElement(ListItemIcon, null, React.createElement(SortIcon, {
405
+ style: {
406
+ transform: 'rotate(180deg) scaleX(-1)'
407
+ }
408
+ })), React.createElement(ListItemText, {
409
+ sx: commonMenuItemStyles
410
+ }, (_localization$columnA2 = localization.columnActionMenuItemSortDesc) == null ? void 0 : _localization$columnA2.replace('{column}', String(column.Header))))], !disableFilters && column.canFilter && [React.createElement(MenuItem, {
411
+ divider: enableColumnGrouping || !disableColumnHiding,
412
+ key: 1,
413
+ onClick: handleFilterByColumn,
414
+ sx: commonMenuItemStyles
415
+ }, React.createElement(ListItemIcon, null, React.createElement(FilterListIcon, null)), React.createElement(ListItemText, {
416
+ sx: commonMenuItemStyles
417
+ }, (_localization$filterT = localization.filterTextFieldPlaceholder) == null ? void 0 : _localization$filterT.replace('{column}', String(column.Header))), React.createElement(IconButton, {
418
+ onClick: handleOpenFilterModeMenu,
419
+ onMouseEnter: handleOpenFilterModeMenu,
420
+ size: "small",
421
+ sx: {
422
+ p: 0
423
+ }
424
+ }, React.createElement(ArrowRightIcon, null))), React.createElement(MRT_FilterTypeMenu, {
425
+ anchorEl: filterMenuAnchorEl,
426
+ column: column,
427
+ key: 2,
428
+ setAnchorEl: setFilterMenuAnchorEl,
429
+ onSelect: handleFilterByColumn
430
+ })], enableColumnGrouping && column.canGroupBy && [React.createElement(MenuItem, {
431
+ divider: !disableColumnHiding,
432
+ key: 2,
433
+ onClick: handleGroupByColumn,
434
+ sx: commonMenuItemStyles
435
+ }, React.createElement(ListItemIcon, null, React.createElement(DynamicFeedIcon, null)), React.createElement(ListItemText, {
436
+ sx: commonMenuItemStyles
437
+ }, (_localization = localization[column.isGrouped ? 'columnActionMenuItemUnGroupBy' : 'columnActionMenuItemGroupBy']) == null ? void 0 : _localization.replace('{column}', String(column.Header))))], !disableColumnHiding && [React.createElement(MenuItem, {
438
+ key: 1,
439
+ onClick: handleHideColumn,
440
+ sx: commonMenuItemStyles
441
+ }, React.createElement(ListItemIcon, null, React.createElement(VisibilityOffIcon, null)), React.createElement(ListItemText, {
442
+ sx: commonMenuItemStyles
443
+ }, (_localization$columnA3 = localization.columnActionMenuItemHideColumn) == null ? void 0 : _localization$columnA3.replace('{column}', String(column.Header))))]);
444
+ };
445
+
446
+ var MRT_FilterTypeMenu = function MRT_FilterTypeMenu(_ref) {
300
447
  var anchorEl = _ref.anchorEl,
301
448
  column = _ref.column,
302
449
  onSelect = _ref.onSelect,
@@ -343,7 +490,7 @@ var MRT_FilterMenu = function MRT_FilterMenu(_ref) {
343
490
  }];
344
491
  }, []);
345
492
 
346
- var handleSelectMenuItem = function handleSelectMenuItem(value) {
493
+ var handleSelectFilterType = function handleSelectFilterType(value) {
347
494
  setAnchorEl(null);
348
495
  setCurrentFilterTypes(function (prev) {
349
496
  var _extends2;
@@ -361,21 +508,19 @@ var MRT_FilterMenu = function MRT_FilterMenu(_ref) {
361
508
  var filterType = tableInstance.state.currentFilterTypes[column.id];
362
509
  return React.createElement(Menu, {
363
510
  anchorEl: anchorEl,
364
- open: !!anchorEl,
365
511
  anchorOrigin: {
366
512
  vertical: 'center',
367
513
  horizontal: 'right'
368
514
  },
369
515
  onClose: function onClose() {
370
516
  return setAnchorEl(null);
517
+ },
518
+ open: !!anchorEl,
519
+ MenuListProps: {
520
+ dense: tableInstance.state.densePadding,
521
+ disablePadding: true
371
522
  }
372
- }, React.createElement(Typography, {
373
- sx: {
374
- fontWeight: 'bold',
375
- p: '1rem',
376
- fontSize: '1.1rem'
377
- }
378
- }, localization.filterMenuTitle), React.createElement(Divider, null), filterTypes.map(function (_ref2) {
523
+ }, filterTypes.map(function (_ref2) {
379
524
  var type = _ref2.type,
380
525
  label = _ref2.label,
381
526
  divider = _ref2.divider;
@@ -383,10 +528,11 @@ var MRT_FilterMenu = function MRT_FilterMenu(_ref) {
383
528
  divider: divider,
384
529
  key: type,
385
530
  onClick: function onClick() {
386
- return handleSelectMenuItem(type);
531
+ return handleSelectFilterType(type);
387
532
  },
388
533
  selected: type === filterType,
389
- value: type
534
+ value: type,
535
+ sx: commonMenuItemStyles
390
536
  }, label);
391
537
  }));
392
538
  };
@@ -451,19 +597,21 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
451
597
  }
452
598
 
453
599
  var filterType = tableInstance.state.currentFilterTypes[column.id];
454
- var showFilterChip = ['empty', 'notEmpty'].includes(filterType);
600
+ var filterChipLabel = ['empty', 'notEmpty'].includes(filterType);
455
601
  var filterPlaceholder = (_localization$filterT = localization.filterTextFieldPlaceholder) == null ? void 0 : _localization$filterT.replace('{column}', String(column.Header));
456
602
  return React.createElement(React.Fragment, null, React.createElement(TextField, Object.assign({
457
603
  fullWidth: true,
458
604
  id: "mrt-" + idPrefix + "-" + column.id + "-filter-text-field",
459
605
  inputProps: {
606
+ disabled: !!filterChipLabel,
460
607
  sx: {
461
- textOverflow: 'ellipsis'
608
+ textOverflow: 'ellipsis',
609
+ width: filterChipLabel ? 0 : undefined
462
610
  },
463
611
  title: filterPlaceholder
464
612
  },
465
613
  margin: "none",
466
- placeholder: showFilterChip ? '' : filterPlaceholder,
614
+ placeholder: filterChipLabel ? '' : filterPlaceholder,
467
615
  onChange: function onChange(e) {
468
616
  setFilterValue(e.target.value);
469
617
  handleChange(e.target.value);
@@ -486,11 +634,11 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
486
634
  height: '1.75rem',
487
635
  width: '1.75rem'
488
636
  }
489
- }, React.createElement(FilterListIcon, null))), showFilterChip && React.createElement(Chip, {
637
+ }, React.createElement(FilterListIcon, null))), filterChipLabel && React.createElement(Chip, {
490
638
  onDelete: handleClearFilterChip,
491
639
  label: filterType
492
640
  })),
493
- endAdornment: !showFilterChip && React.createElement(InputAdornment, {
641
+ endAdornment: !filterChipLabel && React.createElement(InputAdornment, {
494
642
  position: "end"
495
643
  }, React.createElement(Tooltip, {
496
644
  arrow: true,
@@ -511,131 +659,17 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
511
659
  }
512
660
  }, textFieldProps, {
513
661
  sx: _extends({
514
- minWidth: '6rem'
662
+ m: '0 -0.25rem',
663
+ minWidth: !filterChipLabel ? '5rem' : 'auto',
664
+ width: 'calc(100% + 0.5rem)'
515
665
  }, textFieldProps == null ? void 0 : textFieldProps.sx)
516
- })), React.createElement(MRT_FilterMenu, {
666
+ })), React.createElement(MRT_FilterTypeMenu, {
517
667
  anchorEl: anchorEl,
518
668
  column: column,
519
669
  setAnchorEl: setAnchorEl
520
670
  }));
521
671
  };
522
672
 
523
- var MRT_ColumnActionMenu = function MRT_ColumnActionMenu(_ref) {
524
- var _localization$columnA, _localization$columnA2, _localization$filterT, _localization, _localization$columnA3;
525
-
526
- var anchorEl = _ref.anchorEl,
527
- column = _ref.column,
528
- setAnchorEl = _ref.setAnchorEl;
529
-
530
- var _useMRT = useMRT(),
531
- disableColumnHiding = _useMRT.disableColumnHiding,
532
- disableFilters = _useMRT.disableFilters,
533
- disableSortBy = _useMRT.disableSortBy,
534
- enableColumnGrouping = _useMRT.enableColumnGrouping,
535
- _useMRT$icons = _useMRT.icons,
536
- ClearAllIcon = _useMRT$icons.ClearAllIcon,
537
- DynamicFeedIcon = _useMRT$icons.DynamicFeedIcon,
538
- FilterListIcon = _useMRT$icons.FilterListIcon,
539
- SortIcon = _useMRT$icons.SortIcon,
540
- VisibilityOffIcon = _useMRT$icons.VisibilityOffIcon,
541
- idPrefix = _useMRT.idPrefix,
542
- localization = _useMRT.localization,
543
- setShowFilters = _useMRT.setShowFilters;
544
-
545
- var _useState = useState(null),
546
- filterMenuAnchorEl = _useState[0],
547
- setFilterMenuAnchorEl = _useState[1];
548
-
549
- var handleClearSort = function handleClearSort() {
550
- column.clearSortBy();
551
- setAnchorEl(null);
552
- };
553
-
554
- var handleSortAsc = function handleSortAsc() {
555
- column.toggleSortBy(false);
556
- setAnchorEl(null);
557
- };
558
-
559
- var handleSortDesc = function handleSortDesc() {
560
- column.toggleSortBy(true);
561
- setAnchorEl(null);
562
- };
563
-
564
- var handleHideColumn = function handleHideColumn() {
565
- column.toggleHidden();
566
- setAnchorEl(null);
567
- };
568
-
569
- var handleGroupByColumn = function handleGroupByColumn() {
570
- column.toggleGroupBy();
571
- setAnchorEl(null);
572
- };
573
-
574
- var handleFilterByColumn = function handleFilterByColumn() {
575
- setShowFilters(true);
576
- setTimeout(function () {
577
- var _document$getElementB, _column$muiTableHeadC, _column$muiTableHeadC2;
578
-
579
- return (_document$getElementB = document.getElementById( // @ts-ignore
580
- (_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();
581
- }, 200);
582
- setAnchorEl(null);
583
- };
584
-
585
- var handleOpenFilterModeMenu = function handleOpenFilterModeMenu(event) {
586
- event.stopPropagation();
587
- setFilterMenuAnchorEl(event.currentTarget);
588
- };
589
-
590
- return React.createElement(Menu, {
591
- anchorEl: anchorEl,
592
- open: !!anchorEl,
593
- onClose: function onClose() {
594
- return setAnchorEl(null);
595
- }
596
- }, React.createElement(MenuList, null, !disableSortBy && column.canSort && [React.createElement(MenuItem, {
597
- key: 1,
598
- disabled: !column.isSorted,
599
- onClick: handleClearSort
600
- }, React.createElement(ListItemIcon, null, React.createElement(ClearAllIcon, null)), React.createElement(ListItemText, null, localization.columnActionMenuItemClearSort)), React.createElement(MenuItem, {
601
- key: 2,
602
- disabled: column.isSorted && !column.isSortedDesc,
603
- onClick: handleSortAsc
604
- }, React.createElement(ListItemIcon, null, React.createElement(SortIcon, null)), React.createElement(ListItemText, null, (_localization$columnA = localization.columnActionMenuItemSortAsc) == null ? void 0 : _localization$columnA.replace('{column}', String(column.Header)))), React.createElement(MenuItem, {
605
- key: 3,
606
- disabled: column.isSorted && column.isSortedDesc,
607
- onClick: handleSortDesc
608
- }, React.createElement(ListItemIcon, null, React.createElement(SortIcon, {
609
- style: {
610
- transform: 'rotate(180deg) scaleX(-1)'
611
- }
612
- })), React.createElement(ListItemText, null, (_localization$columnA2 = localization.columnActionMenuItemSortDesc) == null ? void 0 : _localization$columnA2.replace('{column}', String(column.Header))))], !disableFilters && column.canFilter && [React.createElement(Divider, {
613
- key: 0
614
- }), React.createElement(MenuItem, {
615
- key: 1,
616
- onClick: handleFilterByColumn
617
- }, React.createElement(ListItemIcon, null, React.createElement(FilterListIcon, null)), React.createElement(ListItemText, null, (_localization$filterT = localization.filterTextFieldPlaceholder) == null ? void 0 : _localization$filterT.replace('{column}', String(column.Header))), React.createElement(IconButton, {
618
- size: "small",
619
- onMouseEnter: handleOpenFilterModeMenu
620
- }, React.createElement(ArrowRightIcon, null))), React.createElement(MRT_FilterMenu, {
621
- anchorEl: filterMenuAnchorEl,
622
- column: column,
623
- key: 2,
624
- setAnchorEl: setFilterMenuAnchorEl,
625
- onSelect: handleFilterByColumn
626
- })], enableColumnGrouping && column.canGroupBy && [React.createElement(Divider, {
627
- key: 1
628
- }), React.createElement(MenuItem, {
629
- key: 2,
630
- onClick: handleGroupByColumn
631
- }, React.createElement(ListItemIcon, null, React.createElement(DynamicFeedIcon, null)), React.createElement(ListItemText, null, (_localization = localization[column.isGrouped ? 'columnActionMenuItemUnGroupBy' : 'columnActionMenuItemGroupBy']) == null ? void 0 : _localization.replace('{column}', String(column.Header))))], !disableColumnHiding && [React.createElement(Divider, {
632
- key: 0
633
- }), React.createElement(MenuItem, {
634
- key: 1,
635
- onClick: handleHideColumn
636
- }, React.createElement(ListItemIcon, null, React.createElement(VisibilityOffIcon, null)), React.createElement(ListItemText, null, (_localization$columnA3 = localization.columnActionMenuItemHideColumn) == null ? void 0 : _localization$columnA3.replace('{column}', String(column.Header))))]));
637
- };
638
-
639
673
  var MRT_ToggleColumnActionMenuButton = function MRT_ToggleColumnActionMenuButton(_ref) {
640
674
  var column = _ref.column;
641
675
 
@@ -691,7 +725,7 @@ var commonTableHeadCellStyles = function commonTableHeadCellStyles(densePadding,
691
725
  };
692
726
  };
693
727
  var MRT_TableHeadCell = function MRT_TableHeadCell(_ref) {
694
- var _column$columns$lengt, _column$columns, _localization$columnA, _localization$columnA2;
728
+ var _column$columns, _localization$columnA, _localization$columnA2;
695
729
 
696
730
  var column = _ref.column;
697
731
 
@@ -699,11 +733,15 @@ var MRT_TableHeadCell = function MRT_TableHeadCell(_ref) {
699
733
  disableColumnActions = _useMRT.disableColumnActions,
700
734
  disableFilters = _useMRT.disableFilters,
701
735
  enableColumnResizing = _useMRT.enableColumnResizing,
736
+ _useMRT$icons = _useMRT.icons,
737
+ FilterAltIcon = _useMRT$icons.FilterAltIcon,
738
+ FilterAltOff = _useMRT$icons.FilterAltOff,
702
739
  localization = _useMRT.localization,
703
740
  muiTableHeadCellProps = _useMRT.muiTableHeadCellProps,
741
+ setShowFilters = _useMRT.setShowFilters,
704
742
  tableInstance = _useMRT.tableInstance;
705
743
 
706
- var isParentHeader = ((_column$columns$lengt = column == null ? void 0 : (_column$columns = column.columns) == null ? void 0 : _column$columns.length) != null ? _column$columns$lengt : 0) > 0;
744
+ var isParentHeader = !!(column != null && (_column$columns = column.columns) != null && _column$columns.length);
707
745
  var mTableHeadCellProps = muiTableHeadCellProps instanceof Function ? muiTableHeadCellProps(column) : muiTableHeadCellProps;
708
746
  var mcTableHeadCellProps = column.muiTableHeadCellProps instanceof Function ? column.muiTableHeadCellProps(column) : column.muiTableHeadCellProps;
709
747
 
@@ -712,6 +750,8 @@ var MRT_TableHeadCell = function MRT_TableHeadCell(_ref) {
712
750
  });
713
751
 
714
752
  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);
753
+ var filterTooltip = !!column.filterValue ? localization.filterApplied.replace('{column}', String(column.Header)).replace('{filterType}', // @ts-ignore
754
+ localization["filterMenuItem" + (tableInstance.state.currentFilterTypes[column.id].charAt(0).toUpperCase() + tableInstance.state.currentFilterTypes[column.id].slice(1))]) : localization.toggleFilterButtonTitle;
715
755
  var columnHeader = column.render('Header');
716
756
  return React.createElement(TableCell, Object.assign({
717
757
  align: isParentHeader ? 'center' : 'left'
@@ -739,7 +779,29 @@ var MRT_TableHeadCell = function MRT_TableHeadCell(_ref) {
739
779
  "aria-label": sortTooltip,
740
780
  active: column.isSorted,
741
781
  direction: column.isSortedDesc ? 'desc' : 'asc'
742
- }))), React.createElement(Box, {
782
+ })), !isParentHeader && !!column.canFilter && React.createElement(Tooltip, {
783
+ arrow: true,
784
+ title: filterTooltip
785
+ }, React.createElement(IconButton, {
786
+ onClick: function onClick(event) {
787
+ event.stopPropagation();
788
+ setShowFilters(!tableInstance.state.showFilters);
789
+ },
790
+ size: "small",
791
+ sx: {
792
+ opacity: !!column.filterValue ? 0.8 : 0,
793
+ p: '2px',
794
+ m: 0,
795
+ transition: 'all 0.2s ease-in-out',
796
+ '&:hover': {
797
+ opacity: 0.8
798
+ }
799
+ }
800
+ }, tableInstance.state.showFilters && !column.filterValue ? React.createElement(FilterAltOff, {
801
+ fontSize: "small"
802
+ }) : React.createElement(FilterAltIcon, {
803
+ fontSize: "small"
804
+ })))), React.createElement(Box, {
743
805
  sx: {
744
806
  alignItems: 'center',
745
807
  display: 'flex',
@@ -828,8 +890,10 @@ var MRT_TableBodyCell = function MRT_TableBodyCell(_ref) {
828
890
  var cell = _ref.cell;
829
891
 
830
892
  var _useMRT = useMRT(),
831
- onCellClick = _useMRT.onCellClick,
893
+ isLoading = _useMRT.isLoading,
832
894
  muiTableBodyCellProps = _useMRT.muiTableBodyCellProps,
895
+ muiTableBodyCellSkeletonProps = _useMRT.muiTableBodyCellSkeletonProps,
896
+ onCellClick = _useMRT.onCellClick,
833
897
  _useMRT$tableInstance = _useMRT.tableInstance.state,
834
898
  currentEditingRow = _useMRT$tableInstance.currentEditingRow,
835
899
  densePadding = _useMRT$tableInstance.densePadding;
@@ -847,7 +911,11 @@ var MRT_TableBodyCell = function MRT_TableBodyCell(_ref) {
847
911
  }
848
912
  }, tableCellProps, {
849
913
  sx: _extends({}, commonTableBodyCellStyles(densePadding), tableCellProps == null ? void 0 : tableCellProps.sx)
850
- }), (currentEditingRow == null ? void 0 : currentEditingRow.id) === cell.row.id ? React.createElement(MRT_EditCellTextField, {
914
+ }), isLoading ? React.createElement(Skeleton, Object.assign({
915
+ animation: "wave",
916
+ height: 20,
917
+ width: Math.random() * (120 - 60) + 60
918
+ }, muiTableBodyCellSkeletonProps)) : (currentEditingRow == null ? void 0 : currentEditingRow.id) === cell.row.id ? React.createElement(MRT_EditCellTextField, {
851
919
  cell: cell
852
920
  }) : cell.isPlaceholder ? null : cell.isAggregated ? cell.render('Aggregated') : cell.isGrouped ? React.createElement("span", null, cell.render('Cell'), " (", cell.row.subRows.length, ")") : cell.render('Cell'));
853
921
  };
@@ -1084,14 +1152,17 @@ var MRT_RowActionMenu = function MRT_RowActionMenu(_ref) {
1084
1152
  open: !!anchorEl,
1085
1153
  onClose: function onClose() {
1086
1154
  return setAnchorEl(null);
1155
+ },
1156
+ MenuListProps: {
1157
+ dense: tableInstance.state.densePadding,
1158
+ disablePadding: true
1087
1159
  }
1088
1160
  }, enableRowEditing && React.createElement(MenuItem, {
1089
- sx: {
1090
- display: 'flex',
1091
- gap: '0.75rem'
1092
- },
1093
- onClick: handleEdit
1094
- }, React.createElement(EditIcon, null), " ", localization.rowActionMenuItemEdit), (_renderRowActionMenuI = renderRowActionMenuItems == null ? void 0 : renderRowActionMenuItems(row, tableInstance, function () {
1161
+ onClick: handleEdit,
1162
+ sx: commonMenuItemStyles
1163
+ }, React.createElement(ListItemIcon, null, React.createElement(EditIcon, null)), React.createElement(ListItemText, {
1164
+ sx: commonMenuItemStyles
1165
+ }, localization.rowActionMenuItemEdit)), (_renderRowActionMenuI = renderRowActionMenuItems == null ? void 0 : renderRowActionMenuItems(row, tableInstance, function () {
1095
1166
  return setAnchorEl(null);
1096
1167
  })) != null ? _renderRowActionMenuI : null);
1097
1168
  };
@@ -2068,7 +2139,7 @@ var MRT_TableBody = function MRT_TableBody() {
2068
2139
  };
2069
2140
 
2070
2141
  var MRT_TableFooterCell = function MRT_TableFooterCell(_ref) {
2071
- var _column$columns$lengt, _column$columns;
2142
+ var _column$columns;
2072
2143
 
2073
2144
  var column = _ref.column;
2074
2145
 
@@ -2077,7 +2148,7 @@ var MRT_TableFooterCell = function MRT_TableFooterCell(_ref) {
2077
2148
  enableColumnResizing = _useMRT.enableColumnResizing,
2078
2149
  densePadding = _useMRT.tableInstance.state.densePadding;
2079
2150
 
2080
- var isParentHeader = ((_column$columns$lengt = column == null ? void 0 : (_column$columns = column.columns) == null ? void 0 : _column$columns.length) != null ? _column$columns$lengt : 0) > 0;
2151
+ var isParentHeader = !!(column != null && (_column$columns = column.columns) != null && _column$columns.length);
2081
2152
  var mTableFooterCellProps = muiTableFooterCellProps instanceof Function ? muiTableFooterCellProps(column) : muiTableFooterCellProps;
2082
2153
  var mcTableFooterCellProps = column.muiTableFooterCellProps instanceof Function ? column.muiTableFooterCellProps(column) : column.muiTableFooterCellProps;
2083
2154
 
@@ -2253,10 +2324,10 @@ var MRT_FullScreenToggleButton = function MRT_FullScreenToggleButton(_ref) {
2253
2324
  };
2254
2325
 
2255
2326
  var MRT_ShowHideColumnsMenu = function MRT_ShowHideColumnsMenu(_ref) {
2256
- var _column$columns$lengt, _column$columns, _column$columns2, _column$isVisible, _column$columns4;
2327
+ var _column$columns, _column$columns2, _column$isVisible, _column$columns4;
2257
2328
 
2258
2329
  var column = _ref.column;
2259
- var isParentHeader = ((_column$columns$lengt = column == null ? void 0 : (_column$columns = column.columns) == null ? void 0 : _column$columns.length) != null ? _column$columns$lengt : 0) > 0;
2330
+ var isParentHeader = !!(column != null && (_column$columns = column.columns) != null && _column$columns.length);
2260
2331
  var allChildColumnsVisible = isParentHeader && !!((_column$columns2 = column.columns) != null && _column$columns2.every(function (childColumn) {
2261
2332
  return childColumn.isVisible;
2262
2333
  }));
@@ -2297,9 +2368,9 @@ var MRT_ShowHideColumnsButton = function MRT_ShowHideColumnsButton(_ref) {
2297
2368
  var rest = _extends({}, _ref);
2298
2369
 
2299
2370
  var _useMRT = useMRT(),
2300
- tableInstance = _useMRT.tableInstance,
2371
+ ViewColumnIcon = _useMRT.icons.ViewColumnIcon,
2301
2372
  localization = _useMRT.localization,
2302
- ViewColumnIcon = _useMRT.icons.ViewColumnIcon;
2373
+ tableInstance = _useMRT.tableInstance;
2303
2374
 
2304
2375
  var _useState = useState(null),
2305
2376
  anchorEl = _useState[0],
@@ -2321,12 +2392,17 @@ var MRT_ShowHideColumnsButton = function MRT_ShowHideColumnsButton(_ref) {
2321
2392
  open: !!anchorEl,
2322
2393
  onClose: function onClose() {
2323
2394
  return setAnchorEl(null);
2324
- }
2395
+ },
2396
+ MenuListProps: {
2397
+ dense: tableInstance.state.densePadding,
2398
+ disablePadding: true
2399
+ },
2400
+ sx: commonMenuItemStyles
2325
2401
  }, React.createElement(Box, {
2326
2402
  sx: {
2327
2403
  display: 'flex',
2328
2404
  justifyContent: 'space-between',
2329
- p: '0 0.5rem 0.5rem 0.5rem'
2405
+ p: '0.5rem'
2330
2406
  }
2331
2407
  }, React.createElement(Button, {
2332
2408
  disabled: !tableInstance.getToggleHideAllColumnsProps().checked && !tableInstance.getToggleHideAllColumnsProps().indeterminate,
@@ -2628,6 +2704,7 @@ var MRT_TableContainer = function MRT_TableContainer() {
2628
2704
  hideToolbarTop = _useMRT.hideToolbarTop,
2629
2705
  isFetching = _useMRT.isFetching,
2630
2706
  isLoading = _useMRT.isLoading,
2707
+ muiLinearProgressProps = _useMRT.muiLinearProgressProps,
2631
2708
  muiTableContainerProps = _useMRT.muiTableContainerProps,
2632
2709
  tableInstance = _useMRT.tableInstance;
2633
2710
 
@@ -2652,6 +2729,7 @@ var MRT_TableContainer = function MRT_TableContainer() {
2652
2729
  }
2653
2730
  }, [fullScreen]);
2654
2731
  var tableContainerProps = muiTableContainerProps instanceof Function ? muiTableContainerProps(tableInstance) : muiTableContainerProps;
2732
+ var linearProgressProps = muiLinearProgressProps instanceof Function ? muiLinearProgressProps(tableInstance) : muiLinearProgressProps;
2655
2733
  return React.createElement(TableContainer, Object.assign({
2656
2734
  component: Paper
2657
2735
  }, tableContainerProps, {
@@ -2670,7 +2748,7 @@ var MRT_TableContainer = function MRT_TableContainer() {
2670
2748
  }), !hideToolbarTop && React.createElement(MRT_ToolbarTop, null), React.createElement(Collapse, {
2671
2749
  "in": isFetching || isLoading,
2672
2750
  unmountOnExit: true
2673
- }, React.createElement(LinearProgress, null)), React.createElement(Box, {
2751
+ }, React.createElement(LinearProgress, Object.assign({}, linearProgressProps))), React.createElement(Box, {
2674
2752
  sx: {
2675
2753
  maxWidth: '100%',
2676
2754
  overflowX: 'auto'
@@ -2691,15 +2769,19 @@ var MRT_DefaultLocalization_EN = {
2691
2769
  columnShowHideMenuShowAll: 'Show all',
2692
2770
  expandAllButtonTitle: 'Expand all',
2693
2771
  expandButtonTitle: 'Expand',
2772
+ filterApplied: 'Filtering by {column} - ({filterType})',
2694
2773
  filterMenuItemContains: 'Contains Exact',
2695
2774
  filterMenuItemEmpty: 'Empty',
2696
2775
  filterMenuItemEndsWith: 'Ends With',
2697
2776
  filterMenuItemEquals: 'Equals',
2698
- filterMenuItemFuzzy: 'Fuzzy Match',
2777
+ filterMenuItemFuzzy: 'Fuzzy Match (Default)',
2699
2778
  filterMenuItemNotEmpty: 'Not Empty',
2700
2779
  filterMenuItemNotEquals: 'Not Equals',
2701
2780
  filterMenuItemStartsWith: 'Starts With',
2702
2781
  filterMenuTitle: 'Filter Mode',
2782
+ filterTextFieldChangeFilterButtonTitle: 'Change Filter Mode',
2783
+ filterTextFieldChipLabelEmpty: 'Empty',
2784
+ filterTextFieldChipLabelNotEmpty: 'Not Empty',
2703
2785
  filterTextFieldClearButtonTitle: 'Clear filter',
2704
2786
  filterTextFieldPlaceholder: 'Filter by {column}',
2705
2787
  rowActionButtonCancel: 'Cancel',
@@ -2713,15 +2795,16 @@ var MRT_DefaultLocalization_EN = {
2713
2795
  selectCheckboxTitle: 'Toggle select row',
2714
2796
  showHideColumnsButtonTitle: 'Show/Hide columns',
2715
2797
  toggleDensePaddingSwitchTitle: 'Toggle dense padding',
2716
- toggleFilterButtonTitle: 'Toggle filters',
2798
+ toggleFilterButtonTitle: 'Show/Hide filters',
2717
2799
  toggleFullScreenButtonTitle: 'Toggle full screen',
2718
- toggleSearchButtonTitle: 'Toggle search',
2800
+ toggleSearchButtonTitle: 'Show/Hide search',
2719
2801
  toolbarAlertGroupedByMessage: 'Grouped by ',
2720
2802
  toolbarAlertGroupedThenByMessage: ', then by ',
2721
2803
  toolbarAlertSelectionMessage: '{selectedCount} of {rowCount} row(s) selected'
2722
2804
  };
2723
2805
 
2724
2806
  var MRT_Default_Icons = {
2807
+ ArrowRightIcon: ArrowRightIcon,
2725
2808
  CancelIcon: CancelIcon,
2726
2809
  ClearAllIcon: ClearAllIcon,
2727
2810
  CloseIcon: CloseIcon,
@@ -2732,6 +2815,8 @@ var MRT_Default_Icons = {
2732
2815
  EditIcon: EditIcon,
2733
2816
  ExpandLessIcon: ExpandLessIcon,
2734
2817
  ExpandMoreIcon: ExpandMoreIcon,
2818
+ FilterAltIcon: FilterAltIcon,
2819
+ FilterAltOff: FilterAltOff,
2735
2820
  FilterListIcon: FilterListIcon,
2736
2821
  FilterListOffIcon: FilterListOffIcon,
2737
2822
  FullscreenExitIcon: FullscreenExitIcon,