material-react-table 1.10.0 → 1.11.1
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/cjs/index.js +182 -185
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types/_locales/fi.d.ts +2 -0
- package/dist/cjs/types/_locales/id.d.ts +2 -0
- package/dist/cjs/types/menus/MRT_ShowHideColumnsMenu.d.ts +1 -1
- package/dist/cjs/types/menus/MRT_ShowHideColumnsMenuItems.d.ts +1 -2
- package/dist/esm/material-react-table.esm.js +179 -182
- package/dist/esm/material-react-table.esm.js.map +1 -1
- package/dist/esm/types/_locales/fi.d.ts +2 -0
- package/dist/esm/types/_locales/id.d.ts +2 -0
- package/dist/esm/types/menus/MRT_ShowHideColumnsMenu.d.ts +1 -1
- package/dist/esm/types/menus/MRT_ShowHideColumnsMenuItems.d.ts +1 -2
- package/locales/fi.d.ts +2 -0
- package/locales/fi.esm.d.ts +2 -0
- package/locales/fi.esm.js +94 -0
- package/locales/fi.esm.js.map +1 -0
- package/locales/fi.js +98 -0
- package/locales/fi.js.map +1 -0
- package/locales/id.d.ts +2 -0
- package/locales/id.esm.d.ts +2 -0
- package/locales/id.esm.js +94 -0
- package/locales/id.esm.js.map +1 -0
- package/locales/id.js +98 -0
- package/locales/id.js.map +1 -0
- package/locales/it.esm.js +5 -5
- package/locales/it.esm.js.map +1 -1
- package/locales/it.js +5 -5
- package/locales/it.js.map +1 -1
- package/locales/nl.esm.js +25 -25
- package/locales/nl.esm.js.map +1 -1
- package/locales/nl.js +25 -25
- package/locales/nl.js.map +1 -1
- package/package.json +7 -7
- package/src/_locales/fi.ts +95 -0
- package/src/_locales/id.ts +95 -0
- package/src/_locales/it.ts +5 -5
- package/src/_locales/nl.ts +25 -25
- package/src/body/MRT_TableDetailPanel.tsx +6 -1
- package/src/head/MRT_TableHeadCell.tsx +2 -2
- package/src/head/MRT_TableHeadCellResizeHandle.tsx +1 -1
- package/src/menus/MRT_ColumnActionMenu.tsx +8 -27
- package/src/menus/MRT_ShowHideColumnsMenu.tsx +4 -6
- package/src/menus/MRT_ShowHideColumnsMenuItems.tsx +3 -8
package/dist/cjs/index.js
CHANGED
@@ -43,10 +43,6 @@ var ListItemIcon = require('@mui/material/ListItemIcon');
|
|
43
43
|
var Menu = require('@mui/material/Menu');
|
44
44
|
var MenuItem = require('@mui/material/MenuItem');
|
45
45
|
var Button = require('@mui/material/Button');
|
46
|
-
var Divider = require('@mui/material/Divider');
|
47
|
-
var FormControlLabel = require('@mui/material/FormControlLabel');
|
48
|
-
var Switch = require('@mui/material/Switch');
|
49
|
-
var Typography = require('@mui/material/Typography');
|
50
46
|
var Checkbox = require('@mui/material/Checkbox');
|
51
47
|
var Radio = require('@mui/material/Radio');
|
52
48
|
var Paper = require('@mui/material/Paper');
|
@@ -61,6 +57,10 @@ var TablePagination = require('@mui/material/TablePagination');
|
|
61
57
|
var Alert = require('@mui/material/Alert');
|
62
58
|
var AlertTitle = require('@mui/material/AlertTitle');
|
63
59
|
var Chip = require('@mui/material/Chip');
|
60
|
+
var Divider = require('@mui/material/Divider');
|
61
|
+
var FormControlLabel = require('@mui/material/FormControlLabel');
|
62
|
+
var Switch = require('@mui/material/Switch');
|
63
|
+
var Typography = require('@mui/material/Typography');
|
64
64
|
var Fade = require('@mui/material/Fade');
|
65
65
|
var TableContainer = require('@mui/material/TableContainer');
|
66
66
|
var reactVirtual = require('@tanstack/react-virtual');
|
@@ -119,10 +119,6 @@ var ListItemIcon__default = /*#__PURE__*/_interopDefaultLegacy(ListItemIcon);
|
|
119
119
|
var Menu__default = /*#__PURE__*/_interopDefaultLegacy(Menu);
|
120
120
|
var MenuItem__default = /*#__PURE__*/_interopDefaultLegacy(MenuItem);
|
121
121
|
var Button__default = /*#__PURE__*/_interopDefaultLegacy(Button);
|
122
|
-
var Divider__default = /*#__PURE__*/_interopDefaultLegacy(Divider);
|
123
|
-
var FormControlLabel__default = /*#__PURE__*/_interopDefaultLegacy(FormControlLabel);
|
124
|
-
var Switch__default = /*#__PURE__*/_interopDefaultLegacy(Switch);
|
125
|
-
var Typography__default = /*#__PURE__*/_interopDefaultLegacy(Typography);
|
126
122
|
var Checkbox__default = /*#__PURE__*/_interopDefaultLegacy(Checkbox);
|
127
123
|
var Radio__default = /*#__PURE__*/_interopDefaultLegacy(Radio);
|
128
124
|
var Paper__default = /*#__PURE__*/_interopDefaultLegacy(Paper);
|
@@ -136,6 +132,10 @@ var TablePagination__default = /*#__PURE__*/_interopDefaultLegacy(TablePaginatio
|
|
136
132
|
var Alert__default = /*#__PURE__*/_interopDefaultLegacy(Alert);
|
137
133
|
var AlertTitle__default = /*#__PURE__*/_interopDefaultLegacy(AlertTitle);
|
138
134
|
var Chip__default = /*#__PURE__*/_interopDefaultLegacy(Chip);
|
135
|
+
var Divider__default = /*#__PURE__*/_interopDefaultLegacy(Divider);
|
136
|
+
var FormControlLabel__default = /*#__PURE__*/_interopDefaultLegacy(FormControlLabel);
|
137
|
+
var Switch__default = /*#__PURE__*/_interopDefaultLegacy(Switch);
|
138
|
+
var Typography__default = /*#__PURE__*/_interopDefaultLegacy(Typography);
|
139
139
|
var Fade__default = /*#__PURE__*/_interopDefaultLegacy(Fade);
|
140
140
|
var TableContainer__default = /*#__PURE__*/_interopDefaultLegacy(TableContainer);
|
141
141
|
var Table__default = /*#__PURE__*/_interopDefaultLegacy(Table);
|
@@ -747,168 +747,6 @@ const MRT_FilterOptionMenu = ({ anchorEl, header, onSelect, setAnchorEl, setFilt
|
|
747
747
|
label)))));
|
748
748
|
};
|
749
749
|
|
750
|
-
const MRT_ColumnPinningButtons = ({ column, table, }) => {
|
751
|
-
const { options: { icons: { PushPinIcon }, localization, }, } = table;
|
752
|
-
const handlePinColumn = (pinDirection) => {
|
753
|
-
column.pin(pinDirection);
|
754
|
-
};
|
755
|
-
return (React__default["default"].createElement(Box__default["default"], { sx: { minWidth: '70px', textAlign: 'center' } }, column.getIsPinned() ? (React__default["default"].createElement(Tooltip__default["default"], { arrow: true, title: localization.unpin },
|
756
|
-
React__default["default"].createElement(IconButton__default["default"], { onClick: () => handlePinColumn(false), size: "small" },
|
757
|
-
React__default["default"].createElement(PushPinIcon, null)))) : (React__default["default"].createElement(React__default["default"].Fragment, null,
|
758
|
-
React__default["default"].createElement(Tooltip__default["default"], { arrow: true, title: localization.pinToLeft },
|
759
|
-
React__default["default"].createElement(IconButton__default["default"], { onClick: () => handlePinColumn('left'), size: "small" },
|
760
|
-
React__default["default"].createElement(PushPinIcon, { style: {
|
761
|
-
transform: 'rotate(90deg)',
|
762
|
-
} }))),
|
763
|
-
React__default["default"].createElement(Tooltip__default["default"], { arrow: true, title: localization.pinToRight },
|
764
|
-
React__default["default"].createElement(IconButton__default["default"], { onClick: () => handlePinColumn('right'), size: "small" },
|
765
|
-
React__default["default"].createElement(PushPinIcon, { style: {
|
766
|
-
transform: 'rotate(-90deg)',
|
767
|
-
} })))))));
|
768
|
-
};
|
769
|
-
|
770
|
-
const MRT_GrabHandleButton = ({ iconButtonProps, onDragEnd, onDragStart, table, }) => {
|
771
|
-
var _a;
|
772
|
-
const { options: { icons: { DragHandleIcon }, localization, }, } = table;
|
773
|
-
return (React__default["default"].createElement(Tooltip__default["default"], { arrow: true, enterDelay: 1000, enterNextDelay: 1000, placement: "top", title: (_a = iconButtonProps === null || iconButtonProps === void 0 ? void 0 : iconButtonProps.title) !== null && _a !== void 0 ? _a : localization.move },
|
774
|
-
React__default["default"].createElement(IconButton__default["default"], Object.assign({ disableRipple: true, draggable: "true", size: "small" }, iconButtonProps, { onClick: (e) => {
|
775
|
-
var _a;
|
776
|
-
e.stopPropagation();
|
777
|
-
(_a = iconButtonProps === null || iconButtonProps === void 0 ? void 0 : iconButtonProps.onClick) === null || _a === void 0 ? void 0 : _a.call(iconButtonProps, e);
|
778
|
-
}, onDragStart: onDragStart, onDragEnd: onDragEnd, sx: (theme) => (Object.assign({ cursor: 'grab', m: '0 -0.1rem', opacity: 0.5, p: '2px', transition: 'all 150ms ease-in-out', '&:hover': {
|
779
|
-
backgroundColor: 'transparent',
|
780
|
-
opacity: 1,
|
781
|
-
}, '&:active': {
|
782
|
-
cursor: 'grabbing',
|
783
|
-
} }, ((iconButtonProps === null || iconButtonProps === void 0 ? void 0 : iconButtonProps.sx) instanceof Function
|
784
|
-
? iconButtonProps === null || iconButtonProps === void 0 ? void 0 : iconButtonProps.sx(theme)
|
785
|
-
: iconButtonProps === null || iconButtonProps === void 0 ? void 0 : iconButtonProps.sx))), title: undefined }),
|
786
|
-
React__default["default"].createElement(DragHandleIcon, null))));
|
787
|
-
};
|
788
|
-
|
789
|
-
const MRT_ShowHideColumnsMenuItems = ({ allColumns, hoveredColumn, setHoveredColumn, column, isSubMenu, table, }) => {
|
790
|
-
var _a;
|
791
|
-
const { getState, options: { enableColumnOrdering, enableHiding, enablePinning, localization, }, setColumnOrder, } = table;
|
792
|
-
const { columnOrder } = getState();
|
793
|
-
const { columnDef } = column;
|
794
|
-
const { columnDefType } = columnDef;
|
795
|
-
const switchChecked = (columnDefType !== 'group' && column.getIsVisible()) ||
|
796
|
-
(columnDefType === 'group' &&
|
797
|
-
column.getLeafColumns().some((col) => col.getIsVisible()));
|
798
|
-
const handleToggleColumnHidden = (column) => {
|
799
|
-
var _a, _b;
|
800
|
-
if (columnDefType === 'group') {
|
801
|
-
(_b = (_a = column === null || column === void 0 ? void 0 : column.columns) === null || _a === void 0 ? void 0 : _a.forEach) === null || _b === void 0 ? void 0 : _b.call(_a, (childColumn) => {
|
802
|
-
childColumn.toggleVisibility(!switchChecked);
|
803
|
-
});
|
804
|
-
}
|
805
|
-
else {
|
806
|
-
column.toggleVisibility();
|
807
|
-
}
|
808
|
-
};
|
809
|
-
const menuItemRef = React.useRef(null);
|
810
|
-
const [isDragging, setIsDragging] = React.useState(false);
|
811
|
-
const handleDragStart = (e) => {
|
812
|
-
setIsDragging(true);
|
813
|
-
e.dataTransfer.setDragImage(menuItemRef.current, 0, 0);
|
814
|
-
};
|
815
|
-
const handleDragEnd = (_e) => {
|
816
|
-
setIsDragging(false);
|
817
|
-
setHoveredColumn(null);
|
818
|
-
if (hoveredColumn) {
|
819
|
-
setColumnOrder(reorderColumn(column, hoveredColumn, columnOrder));
|
820
|
-
}
|
821
|
-
};
|
822
|
-
const handleDragEnter = (_e) => {
|
823
|
-
if (!isDragging && columnDef.enableColumnOrdering !== false) {
|
824
|
-
setHoveredColumn(column);
|
825
|
-
}
|
826
|
-
};
|
827
|
-
return (React__default["default"].createElement(React__default["default"].Fragment, null,
|
828
|
-
React__default["default"].createElement(MenuItem__default["default"], { disableRipple: true, ref: menuItemRef, onDragEnter: handleDragEnter, sx: (theme) => ({
|
829
|
-
alignItems: 'center',
|
830
|
-
justifyContent: 'flex-start',
|
831
|
-
my: 0,
|
832
|
-
opacity: isDragging ? 0.5 : 1,
|
833
|
-
outlineOffset: '-2px',
|
834
|
-
outline: isDragging
|
835
|
-
? `2px dashed ${theme.palette.divider}`
|
836
|
-
: (hoveredColumn === null || hoveredColumn === void 0 ? void 0 : hoveredColumn.id) === column.id
|
837
|
-
? `2px dashed ${theme.palette.primary.main}`
|
838
|
-
: 'none',
|
839
|
-
pl: `${(column.depth + 0.5) * 2}rem`,
|
840
|
-
py: '6px',
|
841
|
-
}) },
|
842
|
-
React__default["default"].createElement(Box__default["default"], { sx: {
|
843
|
-
display: 'flex',
|
844
|
-
flexWrap: 'nowrap',
|
845
|
-
gap: '8px',
|
846
|
-
} },
|
847
|
-
!isSubMenu &&
|
848
|
-
columnDefType !== 'group' &&
|
849
|
-
enableColumnOrdering &&
|
850
|
-
!allColumns.some((col) => col.columnDef.columnDefType === 'group') &&
|
851
|
-
(columnDef.enableColumnOrdering !== false ? (React__default["default"].createElement(MRT_GrabHandleButton, { onDragEnd: handleDragEnd, onDragStart: handleDragStart, table: table })) : (React__default["default"].createElement(Box__default["default"], { sx: { width: '28px' } }))),
|
852
|
-
!isSubMenu &&
|
853
|
-
enablePinning &&
|
854
|
-
(column.getCanPin() ? (React__default["default"].createElement(MRT_ColumnPinningButtons, { column: column, table: table })) : (React__default["default"].createElement(Box__default["default"], { sx: { width: '70px' } }))),
|
855
|
-
enableHiding ? (React__default["default"].createElement(FormControlLabel__default["default"], { componentsProps: {
|
856
|
-
typography: {
|
857
|
-
sx: {
|
858
|
-
mb: 0,
|
859
|
-
opacity: columnDefType !== 'display' ? 1 : 0.5,
|
860
|
-
},
|
861
|
-
},
|
862
|
-
}, checked: switchChecked, control: React__default["default"].createElement(Tooltip__default["default"], { arrow: true, enterDelay: 1000, enterNextDelay: 1000, title: localization.toggleVisibility },
|
863
|
-
React__default["default"].createElement(Switch__default["default"], null)), disabled: (isSubMenu && switchChecked) || !column.getCanHide(), label: columnDef.header, onChange: () => handleToggleColumnHidden(column) })) : (React__default["default"].createElement(Typography__default["default"], { sx: { alignSelf: 'center' } }, columnDef.header)))), (_a = column.columns) === null || _a === void 0 ? void 0 :
|
864
|
-
_a.map((c, i) => (React__default["default"].createElement(MRT_ShowHideColumnsMenuItems, { allColumns: allColumns, column: c, hoveredColumn: hoveredColumn, isSubMenu: isSubMenu, key: `${i}-${c.id}`, setHoveredColumn: setHoveredColumn, table: table })))));
|
865
|
-
};
|
866
|
-
|
867
|
-
const MRT_ShowHideColumnsMenu = ({ anchorEl, isSubMenu, setAnchorEl, table, }) => {
|
868
|
-
const { getAllColumns, getAllLeafColumns, getCenterLeafColumns, getIsAllColumnsVisible, getIsSomeColumnsPinned, getIsSomeColumnsVisible, getLeftLeafColumns, getRightLeafColumns, getState, toggleAllColumnsVisible, options: { enableColumnOrdering, enableHiding, enablePinning, localization, }, } = table;
|
869
|
-
const { density, columnOrder, columnPinning } = getState();
|
870
|
-
const hideAllColumns = () => {
|
871
|
-
getAllLeafColumns()
|
872
|
-
.filter((col) => col.columnDef.enableHiding !== false)
|
873
|
-
.forEach((col) => col.toggleVisibility(false));
|
874
|
-
};
|
875
|
-
const allColumns = React.useMemo(() => {
|
876
|
-
const columns = getAllColumns();
|
877
|
-
if (columnOrder.length > 0 &&
|
878
|
-
!columns.some((col) => col.columnDef.columnDefType === 'group')) {
|
879
|
-
return [
|
880
|
-
...getLeftLeafColumns(),
|
881
|
-
...Array.from(new Set(columnOrder)).map((colId) => getCenterLeafColumns().find((col) => (col === null || col === void 0 ? void 0 : col.id) === colId)),
|
882
|
-
...getRightLeafColumns(),
|
883
|
-
].filter(Boolean);
|
884
|
-
}
|
885
|
-
return columns;
|
886
|
-
}, [
|
887
|
-
columnOrder,
|
888
|
-
columnPinning,
|
889
|
-
getAllColumns(),
|
890
|
-
getCenterLeafColumns(),
|
891
|
-
getLeftLeafColumns(),
|
892
|
-
getRightLeafColumns(),
|
893
|
-
]);
|
894
|
-
const [hoveredColumn, setHoveredColumn] = React.useState(null);
|
895
|
-
return (React__default["default"].createElement(Menu__default["default"], { anchorEl: anchorEl, open: !!anchorEl, onClose: () => setAnchorEl(null), MenuListProps: {
|
896
|
-
dense: density === 'compact',
|
897
|
-
} },
|
898
|
-
React__default["default"].createElement(Box__default["default"], { sx: {
|
899
|
-
display: 'flex',
|
900
|
-
justifyContent: isSubMenu ? 'center' : 'space-between',
|
901
|
-
p: '0.5rem',
|
902
|
-
pt: 0,
|
903
|
-
} },
|
904
|
-
!isSubMenu && enableHiding && (React__default["default"].createElement(Button__default["default"], { disabled: !getIsSomeColumnsVisible(), onClick: hideAllColumns }, localization.hideAll)),
|
905
|
-
!isSubMenu && enableColumnOrdering && (React__default["default"].createElement(Button__default["default"], { onClick: () => table.setColumnOrder(getDefaultColumnOrderIds(table.options)) }, localization.resetOrder)),
|
906
|
-
!isSubMenu && enablePinning && (React__default["default"].createElement(Button__default["default"], { disabled: !getIsSomeColumnsPinned(), onClick: () => table.resetColumnPinning(true) }, localization.unpinAll)),
|
907
|
-
enableHiding && (React__default["default"].createElement(Button__default["default"], { disabled: getIsAllColumnsVisible(), onClick: () => toggleAllColumnsVisible(true) }, localization.showAll))),
|
908
|
-
React__default["default"].createElement(Divider__default["default"], null),
|
909
|
-
allColumns.map((column, index) => (React__default["default"].createElement(MRT_ShowHideColumnsMenuItems, { allColumns: allColumns, column: column, hoveredColumn: hoveredColumn, isSubMenu: isSubMenu, key: `${index}-${column.id}`, setHoveredColumn: setHoveredColumn, table: table })))));
|
910
|
-
};
|
911
|
-
|
912
750
|
const commonMenuItemStyles = {
|
913
751
|
py: '6px',
|
914
752
|
my: 0,
|
@@ -924,9 +762,8 @@ const MRT_ColumnActionMenu = ({ anchorEl, header, setAnchorEl, table, }) => {
|
|
924
762
|
const { getState, toggleAllColumnsVisible, setColumnOrder, options: { columnFilterModeOptions, enableColumnFilterModes, enableColumnFilters, enableColumnResizing, enableGrouping, enableHiding, enablePinning, enableSorting, icons: { ArrowRightIcon, ClearAllIcon, ViewColumnIcon, DynamicFeedIcon, FilterListIcon, FilterListOffIcon, PushPinIcon, SortIcon, RestartAltIcon, VisibilityOffIcon, }, localization, renderColumnActionsMenuItems, }, refs: { filterInputRefs }, setColumnSizingInfo, setShowColumnFilters, } = table;
|
925
763
|
const { column } = header;
|
926
764
|
const { columnDef } = column;
|
927
|
-
const { columnSizing, columnVisibility, density } = getState();
|
765
|
+
const { columnSizing, columnVisibility, density, showColumnFilters } = getState();
|
928
766
|
const [filterMenuAnchorEl, setFilterMenuAnchorEl] = React.useState(null);
|
929
|
-
const [showHideColumnsMenuAnchorEl, setShowHideColumnsMenuAnchorEl] = React.useState(null);
|
930
767
|
const handleClearSort = () => {
|
931
768
|
column.clearSorting();
|
932
769
|
setAnchorEl(null);
|
@@ -974,10 +811,6 @@ const MRT_ColumnActionMenu = ({ anchorEl, header, setAnchorEl, table, }) => {
|
|
974
811
|
event.stopPropagation();
|
975
812
|
setFilterMenuAnchorEl(event.currentTarget);
|
976
813
|
};
|
977
|
-
const handleOpenShowHideColumnsMenu = (event) => {
|
978
|
-
event.stopPropagation();
|
979
|
-
setShowHideColumnsMenuAnchorEl(event.currentTarget);
|
980
|
-
};
|
981
814
|
const isSelectFilter = !!columnDef.filterSelectOptions;
|
982
815
|
const allowedColumnFilterOptions = (_a = columnDef === null || columnDef === void 0 ? void 0 : columnDef.columnFilterModeOptions) !== null && _a !== void 0 ? _a : columnFilterModeOptions;
|
983
816
|
const showFilterModeSubMenu = enableColumnFilterModes &&
|
@@ -1021,7 +854,9 @@ const MRT_ColumnActionMenu = ({ anchorEl, header, setAnchorEl, table, }) => {
|
|
1021
854
|
React__default["default"].createElement(ListItemIcon__default["default"], null,
|
1022
855
|
React__default["default"].createElement(FilterListOffIcon, null)),
|
1023
856
|
localization.clearFilter)),
|
1024
|
-
React__default["default"].createElement(MenuItem__default["default"], { divider: enableGrouping || enableHiding, key: 1, onClick:
|
857
|
+
React__default["default"].createElement(MenuItem__default["default"], { disabled: showColumnFilters && !enableColumnFilterModes, divider: enableGrouping || enableHiding, key: 1, onClick: showColumnFilters
|
858
|
+
? handleOpenFilterModeMenu
|
859
|
+
: handleFilterByColumn, sx: commonMenuItemStyles },
|
1025
860
|
React__default["default"].createElement(Box__default["default"], { sx: commonListItemStyles },
|
1026
861
|
React__default["default"].createElement(ListItemIcon__default["default"], null,
|
1027
862
|
React__default["default"].createElement(FilterListIcon, null)), (_g = localization.filterByColumn) === null || _g === void 0 ? void 0 :
|
@@ -1075,10 +910,7 @@ const MRT_ColumnActionMenu = ({ anchorEl, header, setAnchorEl, table, }) => {
|
|
1075
910
|
React__default["default"].createElement(Box__default["default"], { sx: commonListItemStyles },
|
1076
911
|
React__default["default"].createElement(ListItemIcon__default["default"], null,
|
1077
912
|
React__default["default"].createElement(ViewColumnIcon, null)), (_k = localization.showAllColumns) === null || _k === void 0 ? void 0 :
|
1078
|
-
_k.replace('{column}', String(columnDef.header))),
|
1079
|
-
React__default["default"].createElement(IconButton__default["default"], { onClick: handleOpenShowHideColumnsMenu, onMouseEnter: handleOpenShowHideColumnsMenu, size: "small", sx: { p: 0 } },
|
1080
|
-
React__default["default"].createElement(ArrowRightIcon, null))),
|
1081
|
-
React__default["default"].createElement(MRT_ShowHideColumnsMenu, { anchorEl: showHideColumnsMenuAnchorEl, isSubMenu: true, key: 2, setAnchorEl: setShowHideColumnsMenuAnchorEl, table: table }),
|
913
|
+
_k.replace('{column}', String(columnDef.header)))),
|
1082
914
|
]));
|
1083
915
|
};
|
1084
916
|
|
@@ -1369,6 +1201,166 @@ const MRT_FullScreenToggleButton = (_a) => {
|
|
1369
1201
|
React__default["default"].createElement(IconButton__default["default"], Object.assign({ "aria-label": localization.showHideFilters, onClick: handleToggleFullScreen }, rest, { title: undefined }), isFullScreen ? React__default["default"].createElement(FullscreenExitIcon, null) : React__default["default"].createElement(FullscreenIcon, null))));
|
1370
1202
|
};
|
1371
1203
|
|
1204
|
+
const MRT_ColumnPinningButtons = ({ column, table, }) => {
|
1205
|
+
const { options: { icons: { PushPinIcon }, localization, }, } = table;
|
1206
|
+
const handlePinColumn = (pinDirection) => {
|
1207
|
+
column.pin(pinDirection);
|
1208
|
+
};
|
1209
|
+
return (React__default["default"].createElement(Box__default["default"], { sx: { minWidth: '70px', textAlign: 'center' } }, column.getIsPinned() ? (React__default["default"].createElement(Tooltip__default["default"], { arrow: true, title: localization.unpin },
|
1210
|
+
React__default["default"].createElement(IconButton__default["default"], { onClick: () => handlePinColumn(false), size: "small" },
|
1211
|
+
React__default["default"].createElement(PushPinIcon, null)))) : (React__default["default"].createElement(React__default["default"].Fragment, null,
|
1212
|
+
React__default["default"].createElement(Tooltip__default["default"], { arrow: true, title: localization.pinToLeft },
|
1213
|
+
React__default["default"].createElement(IconButton__default["default"], { onClick: () => handlePinColumn('left'), size: "small" },
|
1214
|
+
React__default["default"].createElement(PushPinIcon, { style: {
|
1215
|
+
transform: 'rotate(90deg)',
|
1216
|
+
} }))),
|
1217
|
+
React__default["default"].createElement(Tooltip__default["default"], { arrow: true, title: localization.pinToRight },
|
1218
|
+
React__default["default"].createElement(IconButton__default["default"], { onClick: () => handlePinColumn('right'), size: "small" },
|
1219
|
+
React__default["default"].createElement(PushPinIcon, { style: {
|
1220
|
+
transform: 'rotate(-90deg)',
|
1221
|
+
} })))))));
|
1222
|
+
};
|
1223
|
+
|
1224
|
+
const MRT_GrabHandleButton = ({ iconButtonProps, onDragEnd, onDragStart, table, }) => {
|
1225
|
+
var _a;
|
1226
|
+
const { options: { icons: { DragHandleIcon }, localization, }, } = table;
|
1227
|
+
return (React__default["default"].createElement(Tooltip__default["default"], { arrow: true, enterDelay: 1000, enterNextDelay: 1000, placement: "top", title: (_a = iconButtonProps === null || iconButtonProps === void 0 ? void 0 : iconButtonProps.title) !== null && _a !== void 0 ? _a : localization.move },
|
1228
|
+
React__default["default"].createElement(IconButton__default["default"], Object.assign({ disableRipple: true, draggable: "true", size: "small" }, iconButtonProps, { onClick: (e) => {
|
1229
|
+
var _a;
|
1230
|
+
e.stopPropagation();
|
1231
|
+
(_a = iconButtonProps === null || iconButtonProps === void 0 ? void 0 : iconButtonProps.onClick) === null || _a === void 0 ? void 0 : _a.call(iconButtonProps, e);
|
1232
|
+
}, onDragStart: onDragStart, onDragEnd: onDragEnd, sx: (theme) => (Object.assign({ cursor: 'grab', m: '0 -0.1rem', opacity: 0.5, p: '2px', transition: 'all 150ms ease-in-out', '&:hover': {
|
1233
|
+
backgroundColor: 'transparent',
|
1234
|
+
opacity: 1,
|
1235
|
+
}, '&:active': {
|
1236
|
+
cursor: 'grabbing',
|
1237
|
+
} }, ((iconButtonProps === null || iconButtonProps === void 0 ? void 0 : iconButtonProps.sx) instanceof Function
|
1238
|
+
? iconButtonProps === null || iconButtonProps === void 0 ? void 0 : iconButtonProps.sx(theme)
|
1239
|
+
: iconButtonProps === null || iconButtonProps === void 0 ? void 0 : iconButtonProps.sx))), title: undefined }),
|
1240
|
+
React__default["default"].createElement(DragHandleIcon, null))));
|
1241
|
+
};
|
1242
|
+
|
1243
|
+
const MRT_ShowHideColumnsMenuItems = ({ allColumns, hoveredColumn, setHoveredColumn, column, table, }) => {
|
1244
|
+
var _a;
|
1245
|
+
const { getState, options: { enableColumnOrdering, enableHiding, enablePinning, localization, }, setColumnOrder, } = table;
|
1246
|
+
const { columnOrder } = getState();
|
1247
|
+
const { columnDef } = column;
|
1248
|
+
const { columnDefType } = columnDef;
|
1249
|
+
const switchChecked = (columnDefType !== 'group' && column.getIsVisible()) ||
|
1250
|
+
(columnDefType === 'group' &&
|
1251
|
+
column.getLeafColumns().some((col) => col.getIsVisible()));
|
1252
|
+
const handleToggleColumnHidden = (column) => {
|
1253
|
+
var _a, _b;
|
1254
|
+
if (columnDefType === 'group') {
|
1255
|
+
(_b = (_a = column === null || column === void 0 ? void 0 : column.columns) === null || _a === void 0 ? void 0 : _a.forEach) === null || _b === void 0 ? void 0 : _b.call(_a, (childColumn) => {
|
1256
|
+
childColumn.toggleVisibility(!switchChecked);
|
1257
|
+
});
|
1258
|
+
}
|
1259
|
+
else {
|
1260
|
+
column.toggleVisibility();
|
1261
|
+
}
|
1262
|
+
};
|
1263
|
+
const menuItemRef = React.useRef(null);
|
1264
|
+
const [isDragging, setIsDragging] = React.useState(false);
|
1265
|
+
const handleDragStart = (e) => {
|
1266
|
+
setIsDragging(true);
|
1267
|
+
e.dataTransfer.setDragImage(menuItemRef.current, 0, 0);
|
1268
|
+
};
|
1269
|
+
const handleDragEnd = (_e) => {
|
1270
|
+
setIsDragging(false);
|
1271
|
+
setHoveredColumn(null);
|
1272
|
+
if (hoveredColumn) {
|
1273
|
+
setColumnOrder(reorderColumn(column, hoveredColumn, columnOrder));
|
1274
|
+
}
|
1275
|
+
};
|
1276
|
+
const handleDragEnter = (_e) => {
|
1277
|
+
if (!isDragging && columnDef.enableColumnOrdering !== false) {
|
1278
|
+
setHoveredColumn(column);
|
1279
|
+
}
|
1280
|
+
};
|
1281
|
+
return (React__default["default"].createElement(React__default["default"].Fragment, null,
|
1282
|
+
React__default["default"].createElement(MenuItem__default["default"], { disableRipple: true, ref: menuItemRef, onDragEnter: handleDragEnter, sx: (theme) => ({
|
1283
|
+
alignItems: 'center',
|
1284
|
+
justifyContent: 'flex-start',
|
1285
|
+
my: 0,
|
1286
|
+
opacity: isDragging ? 0.5 : 1,
|
1287
|
+
outlineOffset: '-2px',
|
1288
|
+
outline: isDragging
|
1289
|
+
? `2px dashed ${theme.palette.divider}`
|
1290
|
+
: (hoveredColumn === null || hoveredColumn === void 0 ? void 0 : hoveredColumn.id) === column.id
|
1291
|
+
? `2px dashed ${theme.palette.primary.main}`
|
1292
|
+
: 'none',
|
1293
|
+
pl: `${(column.depth + 0.5) * 2}rem`,
|
1294
|
+
py: '6px',
|
1295
|
+
}) },
|
1296
|
+
React__default["default"].createElement(Box__default["default"], { sx: {
|
1297
|
+
display: 'flex',
|
1298
|
+
flexWrap: 'nowrap',
|
1299
|
+
gap: '8px',
|
1300
|
+
} },
|
1301
|
+
columnDefType !== 'group' &&
|
1302
|
+
enableColumnOrdering &&
|
1303
|
+
!allColumns.some((col) => col.columnDef.columnDefType === 'group') &&
|
1304
|
+
(columnDef.enableColumnOrdering !== false ? (React__default["default"].createElement(MRT_GrabHandleButton, { onDragEnd: handleDragEnd, onDragStart: handleDragStart, table: table })) : (React__default["default"].createElement(Box__default["default"], { sx: { width: '28px' } }))),
|
1305
|
+
enablePinning &&
|
1306
|
+
(column.getCanPin() ? (React__default["default"].createElement(MRT_ColumnPinningButtons, { column: column, table: table })) : (React__default["default"].createElement(Box__default["default"], { sx: { width: '70px' } }))),
|
1307
|
+
enableHiding ? (React__default["default"].createElement(FormControlLabel__default["default"], { componentsProps: {
|
1308
|
+
typography: {
|
1309
|
+
sx: {
|
1310
|
+
mb: 0,
|
1311
|
+
opacity: columnDefType !== 'display' ? 1 : 0.5,
|
1312
|
+
},
|
1313
|
+
},
|
1314
|
+
}, checked: switchChecked, control: React__default["default"].createElement(Tooltip__default["default"], { arrow: true, enterDelay: 1000, enterNextDelay: 1000, title: localization.toggleVisibility },
|
1315
|
+
React__default["default"].createElement(Switch__default["default"], null)), disabled: !column.getCanHide(), label: columnDef.header, onChange: () => handleToggleColumnHidden(column) })) : (React__default["default"].createElement(Typography__default["default"], { sx: { alignSelf: 'center' } }, columnDef.header)))), (_a = column.columns) === null || _a === void 0 ? void 0 :
|
1316
|
+
_a.map((c, i) => (React__default["default"].createElement(MRT_ShowHideColumnsMenuItems, { allColumns: allColumns, column: c, hoveredColumn: hoveredColumn, key: `${i}-${c.id}`, setHoveredColumn: setHoveredColumn, table: table })))));
|
1317
|
+
};
|
1318
|
+
|
1319
|
+
const MRT_ShowHideColumnsMenu = ({ anchorEl, setAnchorEl, table, }) => {
|
1320
|
+
const { getAllColumns, getAllLeafColumns, getCenterLeafColumns, getIsAllColumnsVisible, getIsSomeColumnsPinned, getIsSomeColumnsVisible, getLeftLeafColumns, getRightLeafColumns, getState, toggleAllColumnsVisible, options: { enableColumnOrdering, enableHiding, enablePinning, localization, }, } = table;
|
1321
|
+
const { density, columnOrder, columnPinning } = getState();
|
1322
|
+
const hideAllColumns = () => {
|
1323
|
+
getAllLeafColumns()
|
1324
|
+
.filter((col) => col.columnDef.enableHiding !== false)
|
1325
|
+
.forEach((col) => col.toggleVisibility(false));
|
1326
|
+
};
|
1327
|
+
const allColumns = React.useMemo(() => {
|
1328
|
+
const columns = getAllColumns();
|
1329
|
+
if (columnOrder.length > 0 &&
|
1330
|
+
!columns.some((col) => col.columnDef.columnDefType === 'group')) {
|
1331
|
+
return [
|
1332
|
+
...getLeftLeafColumns(),
|
1333
|
+
...Array.from(new Set(columnOrder)).map((colId) => getCenterLeafColumns().find((col) => (col === null || col === void 0 ? void 0 : col.id) === colId)),
|
1334
|
+
...getRightLeafColumns(),
|
1335
|
+
].filter(Boolean);
|
1336
|
+
}
|
1337
|
+
return columns;
|
1338
|
+
}, [
|
1339
|
+
columnOrder,
|
1340
|
+
columnPinning,
|
1341
|
+
getAllColumns(),
|
1342
|
+
getCenterLeafColumns(),
|
1343
|
+
getLeftLeafColumns(),
|
1344
|
+
getRightLeafColumns(),
|
1345
|
+
]);
|
1346
|
+
const [hoveredColumn, setHoveredColumn] = React.useState(null);
|
1347
|
+
return (React__default["default"].createElement(Menu__default["default"], { anchorEl: anchorEl, open: !!anchorEl, onClose: () => setAnchorEl(null), MenuListProps: {
|
1348
|
+
dense: density === 'compact',
|
1349
|
+
} },
|
1350
|
+
React__default["default"].createElement(Box__default["default"], { sx: {
|
1351
|
+
display: 'flex',
|
1352
|
+
justifyContent: 'space-between',
|
1353
|
+
p: '0.5rem',
|
1354
|
+
pt: 0,
|
1355
|
+
} },
|
1356
|
+
enableHiding && (React__default["default"].createElement(Button__default["default"], { disabled: !getIsSomeColumnsVisible(), onClick: hideAllColumns }, localization.hideAll)),
|
1357
|
+
enableColumnOrdering && (React__default["default"].createElement(Button__default["default"], { onClick: () => table.setColumnOrder(getDefaultColumnOrderIds(table.options)) }, localization.resetOrder)),
|
1358
|
+
enablePinning && (React__default["default"].createElement(Button__default["default"], { disabled: !getIsSomeColumnsPinned(), onClick: () => table.resetColumnPinning(true) }, localization.unpinAll)),
|
1359
|
+
enableHiding && (React__default["default"].createElement(Button__default["default"], { disabled: getIsAllColumnsVisible(), onClick: () => toggleAllColumnsVisible(true) }, localization.showAll))),
|
1360
|
+
React__default["default"].createElement(Divider__default["default"], null),
|
1361
|
+
allColumns.map((column, index) => (React__default["default"].createElement(MRT_ShowHideColumnsMenuItems, { allColumns: allColumns, column: column, hoveredColumn: hoveredColumn, key: `${index}-${column.id}`, setHoveredColumn: setHoveredColumn, table: table })))));
|
1362
|
+
};
|
1363
|
+
|
1372
1364
|
const MRT_ShowHideColumnsButton = (_a) => {
|
1373
1365
|
var _b;
|
1374
1366
|
var { table } = _a, rest = __rest(_a, ["table"]);
|
@@ -1958,7 +1950,7 @@ const MRT_TableHeadCellResizeHandle = ({ header, table }) => {
|
|
1958
1950
|
cursor: 'col-resize',
|
1959
1951
|
mr: density === 'compact' ? '-0.75rem' : '-1rem',
|
1960
1952
|
position: 'absolute',
|
1961
|
-
right: '
|
1953
|
+
right: '4px',
|
1962
1954
|
px: '4px',
|
1963
1955
|
'&:active > hr': {
|
1964
1956
|
backgroundColor: theme.palette.info.main,
|
@@ -2102,7 +2094,7 @@ const MRT_TableHeadCell = ({ header, table }) => {
|
|
2102
2094
|
theme,
|
2103
2095
|
})), draggingBorders)) }),
|
2104
2096
|
header.isPlaceholder ? null : (React__default["default"].createElement(Box__default["default"], { className: "Mui-TableHeadCell-Content", sx: {
|
2105
|
-
alignItems: '
|
2097
|
+
alignItems: 'center',
|
2106
2098
|
display: 'flex',
|
2107
2099
|
flexDirection: (tableCellProps === null || tableCellProps === void 0 ? void 0 : tableCellProps.align) === 'right' ? 'row-reverse' : 'row',
|
2108
2100
|
justifyContent: columnDefType === 'group' || (tableCellProps === null || tableCellProps === void 0 ? void 0 : tableCellProps.align) === 'center'
|
@@ -2126,7 +2118,7 @@ const MRT_TableHeadCell = ({ header, table }) => {
|
|
2126
2118
|
: undefined,
|
2127
2119
|
} },
|
2128
2120
|
React__default["default"].createElement(Box__default["default"], { className: "Mui-TableHeadCell-Content-Wrapper", sx: {
|
2129
|
-
minWidth:
|
2121
|
+
minWidth: `${Math.min(columnDef.header.length, 5)}ch`,
|
2130
2122
|
overflow: columnDefType === 'data' ? 'hidden' : undefined,
|
2131
2123
|
textOverflow: 'ellipsis',
|
2132
2124
|
whiteSpace: ((_d = (_c = columnDef.header) === null || _c === void 0 ? void 0 : _c.length) !== null && _d !== void 0 ? _d : 0) < 20 ? 'nowrap' : 'normal',
|
@@ -2528,7 +2520,12 @@ const MRT_TableDetailPanel = ({ parentRowRef, row, rowIndex, table, virtualRow,
|
|
2528
2520
|
const { getVisibleLeafColumns, getState, options: { layoutMode, muiTableBodyRowProps, muiTableDetailPanelProps, renderDetailPanel, }, } = table;
|
2529
2521
|
const { isLoading } = getState();
|
2530
2522
|
const tableRowProps = muiTableBodyRowProps instanceof Function
|
2531
|
-
? muiTableBodyRowProps({
|
2523
|
+
? muiTableBodyRowProps({
|
2524
|
+
isDetailPanel: true,
|
2525
|
+
row,
|
2526
|
+
staticRowIndex: rowIndex,
|
2527
|
+
table,
|
2528
|
+
})
|
2532
2529
|
: muiTableBodyRowProps;
|
2533
2530
|
const tableCellProps = muiTableDetailPanelProps instanceof Function
|
2534
2531
|
? muiTableDetailPanelProps({ row, table })
|