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.
- package/dist/buttons/MRT_ColumnPinningButtons.d.ts +8 -0
- package/dist/localization.d.ts +1 -0
- package/dist/material-react-table.cjs.development.js +91 -24
- package/dist/material-react-table.cjs.development.js.map +1 -1
- package/dist/material-react-table.cjs.production.min.js +1 -1
- package/dist/material-react-table.cjs.production.min.js.map +1 -1
- package/dist/material-react-table.esm.js +92 -25
- package/dist/material-react-table.esm.js.map +1 -1
- package/package.json +3 -3
- package/src/buttons/MRT_ColumnPinningButtons.tsx +69 -0
- package/src/localization.ts +2 -0
- package/src/menus/MRT_ShowHideColumnsMenu.tsx +25 -11
- package/src/menus/MRT_ShowHideColumnsMenuItems.tsx +15 -3
- package/src/table/MRT_Table.tsx +3 -3
- package/src/table/MRT_TableContainer.tsx +16 -6
- package/src/table/MRT_TableRoot.tsx +3 -3
|
@@ -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,
|
|
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
|
-
|
|
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:
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
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
|
-
|
|
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
|
-
|
|
2657
|
-
enableTableHead = _tableInstance$option.enableTableHead,
|
|
2726
|
+
enableStickyHeader = _tableInstance$option.enableStickyHeader,
|
|
2658
2727
|
enableTableFooter = _tableInstance$option.enableTableFooter,
|
|
2659
|
-
|
|
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 &&
|
|
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:
|
|
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:
|
|
2833
|
+
visible: isSomeColumnsPinnedRight
|
|
2767
2834
|
});
|
|
2768
2835
|
}
|
|
2769
2836
|
}, React.createElement(MRT_Table, {
|