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.
Files changed (43) hide show
  1. package/dist/cjs/index.js +182 -185
  2. package/dist/cjs/index.js.map +1 -1
  3. package/dist/cjs/types/_locales/fi.d.ts +2 -0
  4. package/dist/cjs/types/_locales/id.d.ts +2 -0
  5. package/dist/cjs/types/menus/MRT_ShowHideColumnsMenu.d.ts +1 -1
  6. package/dist/cjs/types/menus/MRT_ShowHideColumnsMenuItems.d.ts +1 -2
  7. package/dist/esm/material-react-table.esm.js +179 -182
  8. package/dist/esm/material-react-table.esm.js.map +1 -1
  9. package/dist/esm/types/_locales/fi.d.ts +2 -0
  10. package/dist/esm/types/_locales/id.d.ts +2 -0
  11. package/dist/esm/types/menus/MRT_ShowHideColumnsMenu.d.ts +1 -1
  12. package/dist/esm/types/menus/MRT_ShowHideColumnsMenuItems.d.ts +1 -2
  13. package/locales/fi.d.ts +2 -0
  14. package/locales/fi.esm.d.ts +2 -0
  15. package/locales/fi.esm.js +94 -0
  16. package/locales/fi.esm.js.map +1 -0
  17. package/locales/fi.js +98 -0
  18. package/locales/fi.js.map +1 -0
  19. package/locales/id.d.ts +2 -0
  20. package/locales/id.esm.d.ts +2 -0
  21. package/locales/id.esm.js +94 -0
  22. package/locales/id.esm.js.map +1 -0
  23. package/locales/id.js +98 -0
  24. package/locales/id.js.map +1 -0
  25. package/locales/it.esm.js +5 -5
  26. package/locales/it.esm.js.map +1 -1
  27. package/locales/it.js +5 -5
  28. package/locales/it.js.map +1 -1
  29. package/locales/nl.esm.js +25 -25
  30. package/locales/nl.esm.js.map +1 -1
  31. package/locales/nl.js +25 -25
  32. package/locales/nl.js.map +1 -1
  33. package/package.json +7 -7
  34. package/src/_locales/fi.ts +95 -0
  35. package/src/_locales/id.ts +95 -0
  36. package/src/_locales/it.ts +5 -5
  37. package/src/_locales/nl.ts +25 -25
  38. package/src/body/MRT_TableDetailPanel.tsx +6 -1
  39. package/src/head/MRT_TableHeadCell.tsx +2 -2
  40. package/src/head/MRT_TableHeadCellResizeHandle.tsx +1 -1
  41. package/src/menus/MRT_ColumnActionMenu.tsx +8 -27
  42. package/src/menus/MRT_ShowHideColumnsMenu.tsx +4 -6
  43. 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: handleFilterByColumn, sx: commonMenuItemStyles },
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: '1px',
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: 'flex-start',
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: '5ch',
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({ isDetailPanel: true, row, staticRowIndex: rowIndex, table })
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 })