material-react-table 0.7.5 → 0.7.6

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.
@@ -28,7 +28,7 @@ import SortIcon from '@mui/icons-material/Sort';
28
28
  import ViewColumnIcon from '@mui/icons-material/ViewColumn';
29
29
  import VisibilityOffIcon from '@mui/icons-material/VisibilityOff';
30
30
  import { createTable, useTableInstance, getColumnFilteredRowModelSync, getCoreRowModelSync, getExpandedRowModel, getGlobalFilteredRowModelSync, getGroupedRowModelSync, getPaginationRowModel, getSortedRowModelSync, functionalUpdate } from '@tanstack/react-table';
31
- import { IconButton, Menu, MenuItem, FormControlLabel, Switch, Box, Button, Divider, ListItemIcon, Tooltip, Checkbox, debounce, Collapse, TextField, InputAdornment, TablePagination, useMediaQuery, Chip, Alert, LinearProgress, Toolbar, alpha, TableCell, TableSortLabel, TableRow, TableHead, Skeleton, TableBody, TableFooter, Table, TableContainer, Paper, Dialog, Grow } from '@mui/material';
31
+ import { IconButton, Menu, MenuItem, Box, Tooltip, FormControlLabel, Switch, Button, Divider, ListItemIcon, Checkbox, debounce, Collapse, TextField, InputAdornment, TablePagination, useMediaQuery, Chip, Alert, LinearProgress, Toolbar, alpha, TableCell, TableSortLabel, TableRow, TableHead, Skeleton, TableBody, TableFooter, Table, TableContainer, Paper, Dialog, Grow } from '@mui/material';
32
32
  import { matchSorter } from 'match-sorter';
33
33
 
34
34
  function _extends() {
@@ -122,6 +122,7 @@ var MRT_DefaultLocalization_EN = {
122
122
  toggleSelectRow: 'Toggle select row',
123
123
  ungroupByColumn: 'Ungroup by {column}',
124
124
  unpin: 'Unpin',
125
+ unpinAll: 'Unpin all',
125
126
  unsorted: 'Unsorted'
126
127
  };
127
128
 
@@ -510,6 +511,57 @@ var MRT_FilterOptionMenu = function MRT_FilterOptionMenu(_ref) {
510
511
  }));
511
512
  };
512
513
 
514
+ var MRT_ColumnPinningButtons = function MRT_ColumnPinningButtons(_ref) {
515
+ var column = _ref.column,
516
+ tableInstance = _ref.tableInstance;
517
+ var getState = tableInstance.getState,
518
+ _tableInstance$option = tableInstance.options,
519
+ PushPinIcon = _tableInstance$option.icons.PushPinIcon,
520
+ localization = _tableInstance$option.localization;
521
+
522
+ var _getState = getState(),
523
+ columnOrder = _getState.columnOrder;
524
+
525
+ var handlePinColumn = function handlePinColumn(pinDirection) {
526
+ column.pin(pinDirection);
527
+
528
+ if (column.columnDefType === 'display') {
529
+ tableInstance.setColumnOrder([column.id].concat(columnOrder));
530
+ }
531
+ };
532
+
533
+ var pinned = column.getIsPinned();
534
+ return React.createElement(Box, {
535
+ sx: {
536
+ mr: '8px'
537
+ }
538
+ }, React.createElement(Tooltip, {
539
+ arrow: true,
540
+ title: pinned === 'left' ? localization.unpin : localization.pinToLeft
541
+ }, React.createElement(IconButton, {
542
+ onClick: function onClick() {
543
+ return handlePinColumn(pinned === 'left' ? false : 'left');
544
+ },
545
+ size: "small"
546
+ }, React.createElement(PushPinIcon, {
547
+ style: {
548
+ transform: pinned === 'left' ? 'rotate(0)' : 'rotate(90deg)'
549
+ }
550
+ }))), React.createElement(Tooltip, {
551
+ arrow: true,
552
+ title: pinned === 'right' ? localization.unpin : localization.pinToRight
553
+ }, React.createElement(IconButton, {
554
+ onClick: function onClick() {
555
+ return handlePinColumn(pinned === 'right' ? false : 'right');
556
+ },
557
+ size: "small"
558
+ }, React.createElement(PushPinIcon, {
559
+ style: {
560
+ transform: pinned === 'right' ? 'rotate(0)' : 'rotate(-90deg)'
561
+ }
562
+ }))));
563
+ };
564
+
513
565
  var MRT_ShowHideColumnsMenuItems = function MRT_ShowHideColumnsMenuItems(_ref) {
514
566
  var _column$columns2;
515
567
 
@@ -517,7 +569,9 @@ var MRT_ShowHideColumnsMenuItems = function MRT_ShowHideColumnsMenuItems(_ref) {
517
569
  isSubMenu = _ref.isSubMenu,
518
570
  tableInstance = _ref.tableInstance;
519
571
  var getState = tableInstance.getState,
520
- onToggleColumnVisibility = tableInstance.options.onToggleColumnVisibility;
572
+ _tableInstance$option = tableInstance.options,
573
+ onToggleColumnVisibility = _tableInstance$option.onToggleColumnVisibility,
574
+ enablePinning = _tableInstance$option.enablePinning;
521
575
 
522
576
  var _getState = getState(),
523
577
  columnVisibility = _getState.columnVisibility;
@@ -545,10 +599,17 @@ var MRT_ShowHideColumnsMenuItems = function MRT_ShowHideColumnsMenuItems(_ref) {
545
599
  };
546
600
 
547
601
  return React.createElement(React.Fragment, null, React.createElement(MenuItem, {
548
- sx: _extends({}, commonMenuItemStyles$1, {
549
- pl: (column.depth + 0.5) * 2 + "rem"
550
- })
551
- }, React.createElement(FormControlLabel, {
602
+ sx: {
603
+ alignItems: 'center',
604
+ justifyContent: 'flex-start',
605
+ my: 0,
606
+ pl: (column.depth + 0.5) * 2 + "rem",
607
+ py: '6px'
608
+ }
609
+ }, !isSubMenu && enablePinning && React.createElement(MRT_ColumnPinningButtons, {
610
+ column: column,
611
+ tableInstance: tableInstance
612
+ }), React.createElement(FormControlLabel, {
552
613
  componentsProps: {
553
614
  typography: {
554
615
  sx: {
@@ -585,7 +646,9 @@ var MRT_ShowHideColumnsMenu = function MRT_ShowHideColumnsMenu(_ref) {
585
646
  getState = tableInstance.getState,
586
647
  toggleAllColumnsVisible = tableInstance.toggleAllColumnsVisible,
587
648
  getAllLeafColumns = tableInstance.getAllLeafColumns,
588
- localization = tableInstance.options.localization;
649
+ _tableInstance$option = tableInstance.options,
650
+ localization = _tableInstance$option.localization,
651
+ enablePinning = _tableInstance$option.enablePinning;
589
652
 
590
653
  var _getState = getState(),
591
654
  isDensePadding = _getState.isDensePadding;
@@ -609,9 +672,9 @@ var MRT_ShowHideColumnsMenu = function MRT_ShowHideColumnsMenu(_ref) {
609
672
  });
610
673
  return getIsSomeColumnsPinned() ? [].concat(dataColumns.filter(function (c) {
611
674
  return c.getIsPinned() === 'left';
612
- }), dataColumns.filter(function (c) {
675
+ }), [null], dataColumns.filter(function (c) {
613
676
  return c.getIsPinned() === false;
614
- }), dataColumns.filter(function (c) {
677
+ }), [null], dataColumns.filter(function (c) {
615
678
  return c.getIsPinned() === 'right';
616
679
  })) : dataColumns;
617
680
  }, [getAllColumns(), getState().columnPinning, getIsSomeColumnsPinned()]);
@@ -634,7 +697,12 @@ var MRT_ShowHideColumnsMenu = function MRT_ShowHideColumnsMenu(_ref) {
634
697
  }, !isSubMenu && React.createElement(Button, {
635
698
  disabled: !getIsSomeColumnsVisible(),
636
699
  onClick: hideAllColumns
637
- }, localization.hideAll), React.createElement(Button, {
700
+ }, localization.hideAll), !isSubMenu && enablePinning && React.createElement(Button, {
701
+ disabled: !getIsSomeColumnsPinned(),
702
+ onClick: function onClick() {
703
+ return tableInstance.setColumnPinning({});
704
+ }
705
+ }, localization.unpinAll), React.createElement(Button, {
638
706
  disabled: getIsAllColumnsVisible(),
639
707
  onClick: function onClick() {
640
708
  return toggleAllColumnsVisible(true);
@@ -647,11 +715,13 @@ var MRT_ShowHideColumnsMenu = function MRT_ShowHideColumnsMenu(_ref) {
647
715
  tableInstance: tableInstance
648
716
  });
649
717
  }), React.createElement(Divider, null), allDataColumns.map(function (column, index) {
650
- return React.createElement(MRT_ShowHideColumnsMenuItems, {
718
+ return column ? React.createElement(MRT_ShowHideColumnsMenuItems, {
651
719
  column: column,
652
720
  isSubMenu: isSubMenu,
653
721
  key: index + "-" + column.id,
654
722
  tableInstance: tableInstance
723
+ }) : React.createElement(Divider, {
724
+ key: index + "-divider"
655
725
  });
656
726
  }));
657
727
  };
@@ -2653,10 +2723,10 @@ var MRT_Table = function MRT_Table(_ref) {
2653
2723
  tableInstance = _ref.tableInstance;
2654
2724
  var getTableProps = tableInstance.getTableProps,
2655
2725
  _tableInstance$option = tableInstance.options,
2656
- muiTableProps = _tableInstance$option.muiTableProps,
2657
- enableTableHead = _tableInstance$option.enableTableHead,
2726
+ enableStickyHeader = _tableInstance$option.enableStickyHeader,
2658
2727
  enableTableFooter = _tableInstance$option.enableTableFooter,
2659
- enableStickyHeader = _tableInstance$option.enableStickyHeader;
2728
+ enableTableHead = _tableInstance$option.enableTableHead,
2729
+ muiTableProps = _tableInstance$option.muiTableProps;
2660
2730
  var mTableProps = muiTableProps instanceof Function ? muiTableProps({
2661
2731
  tableInstance: tableInstance
2662
2732
  }) : muiTableProps;
@@ -2692,7 +2762,6 @@ var commonBoxStyles = function commonBoxStyles(_ref) {
2692
2762
  var MRT_TableContainer = function MRT_TableContainer(_ref2) {
2693
2763
  var tableInstance = _ref2.tableInstance;
2694
2764
  var getCenterTableWidth = tableInstance.getCenterTableWidth,
2695
- getIsSomeColumnsPinned = tableInstance.getIsSomeColumnsPinned,
2696
2765
  getLeftTableWidth = tableInstance.getLeftTableWidth,
2697
2766
  getRightTableWidth = tableInstance.getRightTableWidth,
2698
2767
  getState = tableInstance.getState,
@@ -2703,8 +2772,7 @@ var MRT_TableContainer = function MRT_TableContainer(_ref2) {
2703
2772
  muiTableContainerProps = _tableInstance$option.muiTableContainerProps;
2704
2773
 
2705
2774
  var _getState = getState(),
2706
- isFullScreen = _getState.isFullScreen,
2707
- columnPinning = _getState.columnPinning;
2775
+ isFullScreen = _getState.isFullScreen;
2708
2776
 
2709
2777
  var _useState = useState(0),
2710
2778
  totalToolbarHeight = _useState[0],
@@ -2720,6 +2788,8 @@ var MRT_TableContainer = function MRT_TableContainer(_ref2) {
2720
2788
  var bottomToolbarHeight = typeof document !== 'undefined' ? (_document$getElementB3 = (_document2 = document) == null ? void 0 : (_document2$getElement = _document2.getElementById("mrt-" + idPrefix + "-toolbar-bottom")) == null ? void 0 : _document2$getElement.offsetHeight) != null ? _document$getElementB3 : 0 : 0;
2721
2789
  setTotalToolbarHeight(topToolbarHeight + bottomToolbarHeight);
2722
2790
  });
2791
+ var isSomeColumnsPinnedLeft = !!tableInstance.getLeftFlatHeaders().length;
2792
+ var isSomeColumnsPinnedRight = !!tableInstance.getRightFlatHeaders().length;
2723
2793
  return React.createElement(TableContainer, Object.assign({}, tableContainerProps, {
2724
2794
  sx: _extends({
2725
2795
  maxWidth: '100%',
@@ -2729,19 +2799,17 @@ var MRT_TableContainer = function MRT_TableContainer(_ref2) {
2729
2799
  style: {
2730
2800
  maxHeight: isFullScreen ? "calc(100vh - " + totalToolbarHeight + "px)" : undefined
2731
2801
  }
2732
- }), enablePinning && getIsSomeColumnsPinned() ? React.createElement(Box, {
2802
+ }), enablePinning && isSomeColumnsPinnedLeft || isSomeColumnsPinnedRight ? React.createElement(Box, {
2733
2803
  sx: {
2734
2804
  display: 'grid',
2735
2805
  gridTemplateColumns: getLeftTableWidth() + "fr " + getCenterTableWidth() + "fr " + getRightTableWidth() + "fr"
2736
2806
  }
2737
2807
  }, React.createElement(Box, {
2738
2808
  sx: function sx(theme) {
2739
- var _columnPinning$left;
2740
-
2741
2809
  return commonBoxStyles({
2742
2810
  pinned: 'left',
2743
2811
  theme: theme,
2744
- visible: !!((_columnPinning$left = columnPinning.left) != null && _columnPinning$left.length)
2812
+ visible: isSomeColumnsPinnedLeft
2745
2813
  });
2746
2814
  }
2747
2815
  }, React.createElement(MRT_Table, {
@@ -2750,7 +2818,8 @@ var MRT_TableContainer = function MRT_TableContainer(_ref2) {
2750
2818
  })), React.createElement(Box, {
2751
2819
  sx: function sx(theme) {
2752
2820
  return commonBoxStyles({
2753
- theme: theme
2821
+ theme: theme,
2822
+ visible: !!tableInstance.getCenterFlatHeaders().length
2754
2823
  });
2755
2824
  }
2756
2825
  }, React.createElement(MRT_Table, {
@@ -2758,12 +2827,10 @@ var MRT_TableContainer = function MRT_TableContainer(_ref2) {
2758
2827
  tableInstance: tableInstance
2759
2828
  })), React.createElement(Box, {
2760
2829
  sx: function sx(theme) {
2761
- var _columnPinning$right;
2762
-
2763
2830
  return commonBoxStyles({
2764
2831
  pinned: 'right',
2765
2832
  theme: theme,
2766
- visible: !!((_columnPinning$right = columnPinning.right) != null && _columnPinning$right.length)
2833
+ visible: isSomeColumnsPinnedRight
2767
2834
  });
2768
2835
  }
2769
2836
  }, React.createElement(MRT_Table, {