material-react-table 1.10.0 → 1.11.0

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 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,7 @@ 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: handleFilterByColumn, sx: commonMenuItemStyles },
857
+ React__default["default"].createElement(MenuItem__default["default"], { disabled: showColumnFilters && !enableColumnFilterModes, divider: enableGrouping || enableHiding, key: 1, onClick: handleFilterByColumn, sx: commonMenuItemStyles },
1025
858
  React__default["default"].createElement(Box__default["default"], { sx: commonListItemStyles },
1026
859
  React__default["default"].createElement(ListItemIcon__default["default"], null,
1027
860
  React__default["default"].createElement(FilterListIcon, null)), (_g = localization.filterByColumn) === null || _g === void 0 ? void 0 :
@@ -1075,10 +908,7 @@ const MRT_ColumnActionMenu = ({ anchorEl, header, setAnchorEl, table, }) => {
1075
908
  React__default["default"].createElement(Box__default["default"], { sx: commonListItemStyles },
1076
909
  React__default["default"].createElement(ListItemIcon__default["default"], null,
1077
910
  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 }),
911
+ _k.replace('{column}', String(columnDef.header)))),
1082
912
  ]));
1083
913
  };
1084
914
 
@@ -1369,6 +1199,166 @@ const MRT_FullScreenToggleButton = (_a) => {
1369
1199
  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
1200
  };
1371
1201
 
1202
+ const MRT_ColumnPinningButtons = ({ column, table, }) => {
1203
+ const { options: { icons: { PushPinIcon }, localization, }, } = table;
1204
+ const handlePinColumn = (pinDirection) => {
1205
+ column.pin(pinDirection);
1206
+ };
1207
+ 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 },
1208
+ React__default["default"].createElement(IconButton__default["default"], { onClick: () => handlePinColumn(false), size: "small" },
1209
+ React__default["default"].createElement(PushPinIcon, null)))) : (React__default["default"].createElement(React__default["default"].Fragment, null,
1210
+ React__default["default"].createElement(Tooltip__default["default"], { arrow: true, title: localization.pinToLeft },
1211
+ React__default["default"].createElement(IconButton__default["default"], { onClick: () => handlePinColumn('left'), size: "small" },
1212
+ React__default["default"].createElement(PushPinIcon, { style: {
1213
+ transform: 'rotate(90deg)',
1214
+ } }))),
1215
+ React__default["default"].createElement(Tooltip__default["default"], { arrow: true, title: localization.pinToRight },
1216
+ React__default["default"].createElement(IconButton__default["default"], { onClick: () => handlePinColumn('right'), size: "small" },
1217
+ React__default["default"].createElement(PushPinIcon, { style: {
1218
+ transform: 'rotate(-90deg)',
1219
+ } })))))));
1220
+ };
1221
+
1222
+ const MRT_GrabHandleButton = ({ iconButtonProps, onDragEnd, onDragStart, table, }) => {
1223
+ var _a;
1224
+ const { options: { icons: { DragHandleIcon }, localization, }, } = table;
1225
+ 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 },
1226
+ React__default["default"].createElement(IconButton__default["default"], Object.assign({ disableRipple: true, draggable: "true", size: "small" }, iconButtonProps, { onClick: (e) => {
1227
+ var _a;
1228
+ e.stopPropagation();
1229
+ (_a = iconButtonProps === null || iconButtonProps === void 0 ? void 0 : iconButtonProps.onClick) === null || _a === void 0 ? void 0 : _a.call(iconButtonProps, e);
1230
+ }, 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': {
1231
+ backgroundColor: 'transparent',
1232
+ opacity: 1,
1233
+ }, '&:active': {
1234
+ cursor: 'grabbing',
1235
+ } }, ((iconButtonProps === null || iconButtonProps === void 0 ? void 0 : iconButtonProps.sx) instanceof Function
1236
+ ? iconButtonProps === null || iconButtonProps === void 0 ? void 0 : iconButtonProps.sx(theme)
1237
+ : iconButtonProps === null || iconButtonProps === void 0 ? void 0 : iconButtonProps.sx))), title: undefined }),
1238
+ React__default["default"].createElement(DragHandleIcon, null))));
1239
+ };
1240
+
1241
+ const MRT_ShowHideColumnsMenuItems = ({ allColumns, hoveredColumn, setHoveredColumn, column, table, }) => {
1242
+ var _a;
1243
+ const { getState, options: { enableColumnOrdering, enableHiding, enablePinning, localization, }, setColumnOrder, } = table;
1244
+ const { columnOrder } = getState();
1245
+ const { columnDef } = column;
1246
+ const { columnDefType } = columnDef;
1247
+ const switchChecked = (columnDefType !== 'group' && column.getIsVisible()) ||
1248
+ (columnDefType === 'group' &&
1249
+ column.getLeafColumns().some((col) => col.getIsVisible()));
1250
+ const handleToggleColumnHidden = (column) => {
1251
+ var _a, _b;
1252
+ if (columnDefType === 'group') {
1253
+ (_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) => {
1254
+ childColumn.toggleVisibility(!switchChecked);
1255
+ });
1256
+ }
1257
+ else {
1258
+ column.toggleVisibility();
1259
+ }
1260
+ };
1261
+ const menuItemRef = React.useRef(null);
1262
+ const [isDragging, setIsDragging] = React.useState(false);
1263
+ const handleDragStart = (e) => {
1264
+ setIsDragging(true);
1265
+ e.dataTransfer.setDragImage(menuItemRef.current, 0, 0);
1266
+ };
1267
+ const handleDragEnd = (_e) => {
1268
+ setIsDragging(false);
1269
+ setHoveredColumn(null);
1270
+ if (hoveredColumn) {
1271
+ setColumnOrder(reorderColumn(column, hoveredColumn, columnOrder));
1272
+ }
1273
+ };
1274
+ const handleDragEnter = (_e) => {
1275
+ if (!isDragging && columnDef.enableColumnOrdering !== false) {
1276
+ setHoveredColumn(column);
1277
+ }
1278
+ };
1279
+ return (React__default["default"].createElement(React__default["default"].Fragment, null,
1280
+ React__default["default"].createElement(MenuItem__default["default"], { disableRipple: true, ref: menuItemRef, onDragEnter: handleDragEnter, sx: (theme) => ({
1281
+ alignItems: 'center',
1282
+ justifyContent: 'flex-start',
1283
+ my: 0,
1284
+ opacity: isDragging ? 0.5 : 1,
1285
+ outlineOffset: '-2px',
1286
+ outline: isDragging
1287
+ ? `2px dashed ${theme.palette.divider}`
1288
+ : (hoveredColumn === null || hoveredColumn === void 0 ? void 0 : hoveredColumn.id) === column.id
1289
+ ? `2px dashed ${theme.palette.primary.main}`
1290
+ : 'none',
1291
+ pl: `${(column.depth + 0.5) * 2}rem`,
1292
+ py: '6px',
1293
+ }) },
1294
+ React__default["default"].createElement(Box__default["default"], { sx: {
1295
+ display: 'flex',
1296
+ flexWrap: 'nowrap',
1297
+ gap: '8px',
1298
+ } },
1299
+ columnDefType !== 'group' &&
1300
+ enableColumnOrdering &&
1301
+ !allColumns.some((col) => col.columnDef.columnDefType === 'group') &&
1302
+ (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' } }))),
1303
+ enablePinning &&
1304
+ (column.getCanPin() ? (React__default["default"].createElement(MRT_ColumnPinningButtons, { column: column, table: table })) : (React__default["default"].createElement(Box__default["default"], { sx: { width: '70px' } }))),
1305
+ enableHiding ? (React__default["default"].createElement(FormControlLabel__default["default"], { componentsProps: {
1306
+ typography: {
1307
+ sx: {
1308
+ mb: 0,
1309
+ opacity: columnDefType !== 'display' ? 1 : 0.5,
1310
+ },
1311
+ },
1312
+ }, checked: switchChecked, control: React__default["default"].createElement(Tooltip__default["default"], { arrow: true, enterDelay: 1000, enterNextDelay: 1000, title: localization.toggleVisibility },
1313
+ 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 :
1314
+ _a.map((c, i) => (React__default["default"].createElement(MRT_ShowHideColumnsMenuItems, { allColumns: allColumns, column: c, hoveredColumn: hoveredColumn, key: `${i}-${c.id}`, setHoveredColumn: setHoveredColumn, table: table })))));
1315
+ };
1316
+
1317
+ const MRT_ShowHideColumnsMenu = ({ anchorEl, setAnchorEl, table, }) => {
1318
+ const { getAllColumns, getAllLeafColumns, getCenterLeafColumns, getIsAllColumnsVisible, getIsSomeColumnsPinned, getIsSomeColumnsVisible, getLeftLeafColumns, getRightLeafColumns, getState, toggleAllColumnsVisible, options: { enableColumnOrdering, enableHiding, enablePinning, localization, }, } = table;
1319
+ const { density, columnOrder, columnPinning } = getState();
1320
+ const hideAllColumns = () => {
1321
+ getAllLeafColumns()
1322
+ .filter((col) => col.columnDef.enableHiding !== false)
1323
+ .forEach((col) => col.toggleVisibility(false));
1324
+ };
1325
+ const allColumns = React.useMemo(() => {
1326
+ const columns = getAllColumns();
1327
+ if (columnOrder.length > 0 &&
1328
+ !columns.some((col) => col.columnDef.columnDefType === 'group')) {
1329
+ return [
1330
+ ...getLeftLeafColumns(),
1331
+ ...Array.from(new Set(columnOrder)).map((colId) => getCenterLeafColumns().find((col) => (col === null || col === void 0 ? void 0 : col.id) === colId)),
1332
+ ...getRightLeafColumns(),
1333
+ ].filter(Boolean);
1334
+ }
1335
+ return columns;
1336
+ }, [
1337
+ columnOrder,
1338
+ columnPinning,
1339
+ getAllColumns(),
1340
+ getCenterLeafColumns(),
1341
+ getLeftLeafColumns(),
1342
+ getRightLeafColumns(),
1343
+ ]);
1344
+ const [hoveredColumn, setHoveredColumn] = React.useState(null);
1345
+ return (React__default["default"].createElement(Menu__default["default"], { anchorEl: anchorEl, open: !!anchorEl, onClose: () => setAnchorEl(null), MenuListProps: {
1346
+ dense: density === 'compact',
1347
+ } },
1348
+ React__default["default"].createElement(Box__default["default"], { sx: {
1349
+ display: 'flex',
1350
+ justifyContent: 'space-between',
1351
+ p: '0.5rem',
1352
+ pt: 0,
1353
+ } },
1354
+ enableHiding && (React__default["default"].createElement(Button__default["default"], { disabled: !getIsSomeColumnsVisible(), onClick: hideAllColumns }, localization.hideAll)),
1355
+ enableColumnOrdering && (React__default["default"].createElement(Button__default["default"], { onClick: () => table.setColumnOrder(getDefaultColumnOrderIds(table.options)) }, localization.resetOrder)),
1356
+ enablePinning && (React__default["default"].createElement(Button__default["default"], { disabled: !getIsSomeColumnsPinned(), onClick: () => table.resetColumnPinning(true) }, localization.unpinAll)),
1357
+ enableHiding && (React__default["default"].createElement(Button__default["default"], { disabled: getIsAllColumnsVisible(), onClick: () => toggleAllColumnsVisible(true) }, localization.showAll))),
1358
+ React__default["default"].createElement(Divider__default["default"], null),
1359
+ allColumns.map((column, index) => (React__default["default"].createElement(MRT_ShowHideColumnsMenuItems, { allColumns: allColumns, column: column, hoveredColumn: hoveredColumn, key: `${index}-${column.id}`, setHoveredColumn: setHoveredColumn, table: table })))));
1360
+ };
1361
+
1372
1362
  const MRT_ShowHideColumnsButton = (_a) => {
1373
1363
  var _b;
1374
1364
  var { table } = _a, rest = __rest(_a, ["table"]);
@@ -1958,7 +1948,7 @@ const MRT_TableHeadCellResizeHandle = ({ header, table }) => {
1958
1948
  cursor: 'col-resize',
1959
1949
  mr: density === 'compact' ? '-0.75rem' : '-1rem',
1960
1950
  position: 'absolute',
1961
- right: '1px',
1951
+ right: '4px',
1962
1952
  px: '4px',
1963
1953
  '&:active > hr': {
1964
1954
  backgroundColor: theme.palette.info.main,
@@ -2102,7 +2092,7 @@ const MRT_TableHeadCell = ({ header, table }) => {
2102
2092
  theme,
2103
2093
  })), draggingBorders)) }),
2104
2094
  header.isPlaceholder ? null : (React__default["default"].createElement(Box__default["default"], { className: "Mui-TableHeadCell-Content", sx: {
2105
- alignItems: 'flex-start',
2095
+ alignItems: 'center',
2106
2096
  display: 'flex',
2107
2097
  flexDirection: (tableCellProps === null || tableCellProps === void 0 ? void 0 : tableCellProps.align) === 'right' ? 'row-reverse' : 'row',
2108
2098
  justifyContent: columnDefType === 'group' || (tableCellProps === null || tableCellProps === void 0 ? void 0 : tableCellProps.align) === 'center'
@@ -2126,7 +2116,7 @@ const MRT_TableHeadCell = ({ header, table }) => {
2126
2116
  : undefined,
2127
2117
  } },
2128
2118
  React__default["default"].createElement(Box__default["default"], { className: "Mui-TableHeadCell-Content-Wrapper", sx: {
2129
- minWidth: '5ch',
2119
+ minWidth: `${Math.min(columnDef.header.length, 5)}ch`,
2130
2120
  overflow: columnDefType === 'data' ? 'hidden' : undefined,
2131
2121
  textOverflow: 'ellipsis',
2132
2122
  whiteSpace: ((_d = (_c = columnDef.header) === null || _c === void 0 ? void 0 : _c.length) !== null && _d !== void 0 ? _d : 0) < 20 ? 'nowrap' : 'normal',