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.
@@ -0,0 +1,8 @@
1
+ import { FC } from 'react';
2
+ import type { MRT_Column, MRT_TableInstance } from '..';
3
+ interface Props {
4
+ column: MRT_Column;
5
+ tableInstance: MRT_TableInstance;
6
+ }
7
+ export declare const MRT_ColumnPinningButtons: FC<Props>;
8
+ export {};
@@ -56,6 +56,7 @@ export interface MRT_Localization {
56
56
  toggleSelectRow: string;
57
57
  ungroupByColumn: string;
58
58
  unpin: string;
59
+ unpinAll: string;
59
60
  unsorted: string;
60
61
  }
61
62
  export declare const MRT_DefaultLocalization_EN: MRT_Localization;
@@ -129,6 +129,7 @@ var MRT_DefaultLocalization_EN = {
129
129
  toggleSelectRow: 'Toggle select row',
130
130
  ungroupByColumn: 'Ungroup by {column}',
131
131
  unpin: 'Unpin',
132
+ unpinAll: 'Unpin all',
132
133
  unsorted: 'Unsorted'
133
134
  };
134
135
 
@@ -517,6 +518,57 @@ var MRT_FilterOptionMenu = function MRT_FilterOptionMenu(_ref) {
517
518
  }));
518
519
  };
519
520
 
521
+ var MRT_ColumnPinningButtons = function MRT_ColumnPinningButtons(_ref) {
522
+ var column = _ref.column,
523
+ tableInstance = _ref.tableInstance;
524
+ var getState = tableInstance.getState,
525
+ _tableInstance$option = tableInstance.options,
526
+ PushPinIcon = _tableInstance$option.icons.PushPinIcon,
527
+ localization = _tableInstance$option.localization;
528
+
529
+ var _getState = getState(),
530
+ columnOrder = _getState.columnOrder;
531
+
532
+ var handlePinColumn = function handlePinColumn(pinDirection) {
533
+ column.pin(pinDirection);
534
+
535
+ if (column.columnDefType === 'display') {
536
+ tableInstance.setColumnOrder([column.id].concat(columnOrder));
537
+ }
538
+ };
539
+
540
+ var pinned = column.getIsPinned();
541
+ return React__default.createElement(material.Box, {
542
+ sx: {
543
+ mr: '8px'
544
+ }
545
+ }, React__default.createElement(material.Tooltip, {
546
+ arrow: true,
547
+ title: pinned === 'left' ? localization.unpin : localization.pinToLeft
548
+ }, React__default.createElement(material.IconButton, {
549
+ onClick: function onClick() {
550
+ return handlePinColumn(pinned === 'left' ? false : 'left');
551
+ },
552
+ size: "small"
553
+ }, React__default.createElement(PushPinIcon, {
554
+ style: {
555
+ transform: pinned === 'left' ? 'rotate(0)' : 'rotate(90deg)'
556
+ }
557
+ }))), React__default.createElement(material.Tooltip, {
558
+ arrow: true,
559
+ title: pinned === 'right' ? localization.unpin : localization.pinToRight
560
+ }, React__default.createElement(material.IconButton, {
561
+ onClick: function onClick() {
562
+ return handlePinColumn(pinned === 'right' ? false : 'right');
563
+ },
564
+ size: "small"
565
+ }, React__default.createElement(PushPinIcon, {
566
+ style: {
567
+ transform: pinned === 'right' ? 'rotate(0)' : 'rotate(-90deg)'
568
+ }
569
+ }))));
570
+ };
571
+
520
572
  var MRT_ShowHideColumnsMenuItems = function MRT_ShowHideColumnsMenuItems(_ref) {
521
573
  var _column$columns2;
522
574
 
@@ -524,7 +576,9 @@ var MRT_ShowHideColumnsMenuItems = function MRT_ShowHideColumnsMenuItems(_ref) {
524
576
  isSubMenu = _ref.isSubMenu,
525
577
  tableInstance = _ref.tableInstance;
526
578
  var getState = tableInstance.getState,
527
- onToggleColumnVisibility = tableInstance.options.onToggleColumnVisibility;
579
+ _tableInstance$option = tableInstance.options,
580
+ onToggleColumnVisibility = _tableInstance$option.onToggleColumnVisibility,
581
+ enablePinning = _tableInstance$option.enablePinning;
528
582
 
529
583
  var _getState = getState(),
530
584
  columnVisibility = _getState.columnVisibility;
@@ -552,10 +606,17 @@ var MRT_ShowHideColumnsMenuItems = function MRT_ShowHideColumnsMenuItems(_ref) {
552
606
  };
553
607
 
554
608
  return React__default.createElement(React__default.Fragment, null, React__default.createElement(material.MenuItem, {
555
- sx: _extends({}, commonMenuItemStyles$1, {
556
- pl: (column.depth + 0.5) * 2 + "rem"
557
- })
558
- }, React__default.createElement(material.FormControlLabel, {
609
+ sx: {
610
+ alignItems: 'center',
611
+ justifyContent: 'flex-start',
612
+ my: 0,
613
+ pl: (column.depth + 0.5) * 2 + "rem",
614
+ py: '6px'
615
+ }
616
+ }, !isSubMenu && enablePinning && React__default.createElement(MRT_ColumnPinningButtons, {
617
+ column: column,
618
+ tableInstance: tableInstance
619
+ }), React__default.createElement(material.FormControlLabel, {
559
620
  componentsProps: {
560
621
  typography: {
561
622
  sx: {
@@ -592,7 +653,9 @@ var MRT_ShowHideColumnsMenu = function MRT_ShowHideColumnsMenu(_ref) {
592
653
  getState = tableInstance.getState,
593
654
  toggleAllColumnsVisible = tableInstance.toggleAllColumnsVisible,
594
655
  getAllLeafColumns = tableInstance.getAllLeafColumns,
595
- localization = tableInstance.options.localization;
656
+ _tableInstance$option = tableInstance.options,
657
+ localization = _tableInstance$option.localization,
658
+ enablePinning = _tableInstance$option.enablePinning;
596
659
 
597
660
  var _getState = getState(),
598
661
  isDensePadding = _getState.isDensePadding;
@@ -616,9 +679,9 @@ var MRT_ShowHideColumnsMenu = function MRT_ShowHideColumnsMenu(_ref) {
616
679
  });
617
680
  return getIsSomeColumnsPinned() ? [].concat(dataColumns.filter(function (c) {
618
681
  return c.getIsPinned() === 'left';
619
- }), dataColumns.filter(function (c) {
682
+ }), [null], dataColumns.filter(function (c) {
620
683
  return c.getIsPinned() === false;
621
- }), dataColumns.filter(function (c) {
684
+ }), [null], dataColumns.filter(function (c) {
622
685
  return c.getIsPinned() === 'right';
623
686
  })) : dataColumns;
624
687
  }, [getAllColumns(), getState().columnPinning, getIsSomeColumnsPinned()]);
@@ -641,7 +704,12 @@ var MRT_ShowHideColumnsMenu = function MRT_ShowHideColumnsMenu(_ref) {
641
704
  }, !isSubMenu && React__default.createElement(material.Button, {
642
705
  disabled: !getIsSomeColumnsVisible(),
643
706
  onClick: hideAllColumns
644
- }, localization.hideAll), React__default.createElement(material.Button, {
707
+ }, localization.hideAll), !isSubMenu && enablePinning && React__default.createElement(material.Button, {
708
+ disabled: !getIsSomeColumnsPinned(),
709
+ onClick: function onClick() {
710
+ return tableInstance.setColumnPinning({});
711
+ }
712
+ }, localization.unpinAll), React__default.createElement(material.Button, {
645
713
  disabled: getIsAllColumnsVisible(),
646
714
  onClick: function onClick() {
647
715
  return toggleAllColumnsVisible(true);
@@ -654,11 +722,13 @@ var MRT_ShowHideColumnsMenu = function MRT_ShowHideColumnsMenu(_ref) {
654
722
  tableInstance: tableInstance
655
723
  });
656
724
  }), React__default.createElement(material.Divider, null), allDataColumns.map(function (column, index) {
657
- return React__default.createElement(MRT_ShowHideColumnsMenuItems, {
725
+ return column ? React__default.createElement(MRT_ShowHideColumnsMenuItems, {
658
726
  column: column,
659
727
  isSubMenu: isSubMenu,
660
728
  key: index + "-" + column.id,
661
729
  tableInstance: tableInstance
730
+ }) : React__default.createElement(material.Divider, {
731
+ key: index + "-divider"
662
732
  });
663
733
  }));
664
734
  };
@@ -2660,10 +2730,10 @@ var MRT_Table = function MRT_Table(_ref) {
2660
2730
  tableInstance = _ref.tableInstance;
2661
2731
  var getTableProps = tableInstance.getTableProps,
2662
2732
  _tableInstance$option = tableInstance.options,
2663
- muiTableProps = _tableInstance$option.muiTableProps,
2664
- enableTableHead = _tableInstance$option.enableTableHead,
2733
+ enableStickyHeader = _tableInstance$option.enableStickyHeader,
2665
2734
  enableTableFooter = _tableInstance$option.enableTableFooter,
2666
- enableStickyHeader = _tableInstance$option.enableStickyHeader;
2735
+ enableTableHead = _tableInstance$option.enableTableHead,
2736
+ muiTableProps = _tableInstance$option.muiTableProps;
2667
2737
  var mTableProps = muiTableProps instanceof Function ? muiTableProps({
2668
2738
  tableInstance: tableInstance
2669
2739
  }) : muiTableProps;
@@ -2699,7 +2769,6 @@ var commonBoxStyles = function commonBoxStyles(_ref) {
2699
2769
  var MRT_TableContainer = function MRT_TableContainer(_ref2) {
2700
2770
  var tableInstance = _ref2.tableInstance;
2701
2771
  var getCenterTableWidth = tableInstance.getCenterTableWidth,
2702
- getIsSomeColumnsPinned = tableInstance.getIsSomeColumnsPinned,
2703
2772
  getLeftTableWidth = tableInstance.getLeftTableWidth,
2704
2773
  getRightTableWidth = tableInstance.getRightTableWidth,
2705
2774
  getState = tableInstance.getState,
@@ -2710,8 +2779,7 @@ var MRT_TableContainer = function MRT_TableContainer(_ref2) {
2710
2779
  muiTableContainerProps = _tableInstance$option.muiTableContainerProps;
2711
2780
 
2712
2781
  var _getState = getState(),
2713
- isFullScreen = _getState.isFullScreen,
2714
- columnPinning = _getState.columnPinning;
2782
+ isFullScreen = _getState.isFullScreen;
2715
2783
 
2716
2784
  var _useState = React.useState(0),
2717
2785
  totalToolbarHeight = _useState[0],
@@ -2727,6 +2795,8 @@ var MRT_TableContainer = function MRT_TableContainer(_ref2) {
2727
2795
  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;
2728
2796
  setTotalToolbarHeight(topToolbarHeight + bottomToolbarHeight);
2729
2797
  });
2798
+ var isSomeColumnsPinnedLeft = !!tableInstance.getLeftFlatHeaders().length;
2799
+ var isSomeColumnsPinnedRight = !!tableInstance.getRightFlatHeaders().length;
2730
2800
  return React__default.createElement(material.TableContainer, Object.assign({}, tableContainerProps, {
2731
2801
  sx: _extends({
2732
2802
  maxWidth: '100%',
@@ -2736,19 +2806,17 @@ var MRT_TableContainer = function MRT_TableContainer(_ref2) {
2736
2806
  style: {
2737
2807
  maxHeight: isFullScreen ? "calc(100vh - " + totalToolbarHeight + "px)" : undefined
2738
2808
  }
2739
- }), enablePinning && getIsSomeColumnsPinned() ? React__default.createElement(material.Box, {
2809
+ }), enablePinning && isSomeColumnsPinnedLeft || isSomeColumnsPinnedRight ? React__default.createElement(material.Box, {
2740
2810
  sx: {
2741
2811
  display: 'grid',
2742
2812
  gridTemplateColumns: getLeftTableWidth() + "fr " + getCenterTableWidth() + "fr " + getRightTableWidth() + "fr"
2743
2813
  }
2744
2814
  }, React__default.createElement(material.Box, {
2745
2815
  sx: function sx(theme) {
2746
- var _columnPinning$left;
2747
-
2748
2816
  return commonBoxStyles({
2749
2817
  pinned: 'left',
2750
2818
  theme: theme,
2751
- visible: !!((_columnPinning$left = columnPinning.left) != null && _columnPinning$left.length)
2819
+ visible: isSomeColumnsPinnedLeft
2752
2820
  });
2753
2821
  }
2754
2822
  }, React__default.createElement(MRT_Table, {
@@ -2757,7 +2825,8 @@ var MRT_TableContainer = function MRT_TableContainer(_ref2) {
2757
2825
  })), React__default.createElement(material.Box, {
2758
2826
  sx: function sx(theme) {
2759
2827
  return commonBoxStyles({
2760
- theme: theme
2828
+ theme: theme,
2829
+ visible: !!tableInstance.getCenterFlatHeaders().length
2761
2830
  });
2762
2831
  }
2763
2832
  }, React__default.createElement(MRT_Table, {
@@ -2765,12 +2834,10 @@ var MRT_TableContainer = function MRT_TableContainer(_ref2) {
2765
2834
  tableInstance: tableInstance
2766
2835
  })), React__default.createElement(material.Box, {
2767
2836
  sx: function sx(theme) {
2768
- var _columnPinning$right;
2769
-
2770
2837
  return commonBoxStyles({
2771
2838
  pinned: 'right',
2772
2839
  theme: theme,
2773
- visible: !!((_columnPinning$right = columnPinning.right) != null && _columnPinning$right.length)
2840
+ visible: isSomeColumnsPinnedRight
2774
2841
  });
2775
2842
  }
2776
2843
  }, React__default.createElement(MRT_Table, {