material-react-table 0.6.5 → 0.6.8

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.
@@ -4,8 +4,10 @@ import { Menu, MenuItem, TextField, InputAdornment, Tooltip, IconButton, Chip, F
4
4
  import { matchSorter } from 'match-sorter';
5
5
  import ArrowRightIcon from '@mui/icons-material/ArrowRight';
6
6
  import CancelIcon from '@mui/icons-material/Cancel';
7
+ import CheckBoxIcon from '@mui/icons-material/CheckBox';
7
8
  import ClearAllIcon from '@mui/icons-material/ClearAll';
8
9
  import CloseIcon from '@mui/icons-material/Close';
10
+ import ContentCopyIcon from '@mui/icons-material/ContentCopy';
9
11
  import DensityMediumIcon from '@mui/icons-material/DensityMedium';
10
12
  import DensitySmallIcon from '@mui/icons-material/DensitySmall';
11
13
  import DoubleArrowDownIcon from '@mui/icons-material/KeyboardDoubleArrowDown';
@@ -445,7 +447,9 @@ var MRT_FilterTypeMenu = function MRT_FilterTypeMenu(_ref) {
445
447
  label: localization.filterNotEmpty,
446
448
  divider: false,
447
449
  fn: notEmpty
448
- }];
450
+ }].filter(function (filterType) {
451
+ return !column.filterTypes || column.filterTypes.includes(filterType.type);
452
+ });
449
453
  }, []);
450
454
 
451
455
  var handleSelectFilterType = function handleSelectFilterType(value) {
@@ -517,9 +521,7 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
517
521
  var mTableHeadCellFilterTextFieldProps = muiTableHeadCellFilterTextFieldProps instanceof Function ? muiTableHeadCellFilterTextFieldProps(column) : muiTableHeadCellFilterTextFieldProps;
518
522
  var mcTableHeadCellFilterTextFieldProps = column.muiTableHeadCellFilterTextFieldProps instanceof Function ? column.muiTableHeadCellFilterTextFieldProps(column) : column.muiTableHeadCellFilterTextFieldProps;
519
523
 
520
- var textFieldProps = _extends({}, mTableHeadCellFilterTextFieldProps, mcTableHeadCellFilterTextFieldProps, {
521
- style: _extends({}, mTableHeadCellFilterTextFieldProps == null ? void 0 : mTableHeadCellFilterTextFieldProps.style, mcTableHeadCellFilterTextFieldProps == null ? void 0 : mcTableHeadCellFilterTextFieldProps.style)
522
- });
524
+ var textFieldProps = _extends({}, mTableHeadCellFilterTextFieldProps, mcTableHeadCellFilterTextFieldProps);
523
525
 
524
526
  var _useState2 = useState(''),
525
527
  filterValue = _useState2[0],
@@ -722,7 +724,7 @@ var MRT_ShowHideColumnsMenuItems = function MRT_ShowHideColumnsMenuItems(_ref) {
722
724
  },
723
725
  checked: switchChecked,
724
726
  control: React.createElement(Switch, null),
725
- disabled: isSubMenu && switchChecked,
727
+ disabled: isSubMenu && switchChecked || column.disableColumnHiding,
726
728
  label: column.Header,
727
729
  onChange: function onChange() {
728
730
  return handleToggleColumnHidden(column);
@@ -745,6 +747,14 @@ var MRT_ShowHideColumnsMenu = function MRT_ShowHideColumnsMenu(_ref) {
745
747
  localization = _useMRT.localization,
746
748
  tableInstance = _useMRT.tableInstance;
747
749
 
750
+ var hideAllColumns = function hideAllColumns() {
751
+ findLowestLevelCols(tableInstance.columns).filter(function (col) {
752
+ return !col.disableColumnHiding;
753
+ }).forEach(function (col) {
754
+ return col.toggleHidden(true);
755
+ });
756
+ };
757
+
748
758
  return React.createElement(Menu, {
749
759
  anchorEl: anchorEl,
750
760
  open: !!anchorEl,
@@ -763,9 +773,7 @@ var MRT_ShowHideColumnsMenu = function MRT_ShowHideColumnsMenu(_ref) {
763
773
  }
764
774
  }, !isSubMenu && React.createElement(Button, {
765
775
  disabled: !tableInstance.getToggleHideAllColumnsProps().checked && !tableInstance.getToggleHideAllColumnsProps().indeterminate,
766
- onClick: function onClick() {
767
- return tableInstance.toggleHideAllColumns(true);
768
- }
776
+ onClick: hideAllColumns
769
777
  }, localization.hideAll), React.createElement(Button, {
770
778
  disabled: tableInstance.getToggleHideAllColumnsProps().checked,
771
779
  onClick: function onClick() {
@@ -950,6 +958,7 @@ var MRT_ColumnActionMenu = function MRT_ColumnActionMenu(_ref) {
950
958
  }, React.createElement(Box, {
951
959
  sx: commonListItemStyles
952
960
  }, React.createElement(ListItemIcon, null, React.createElement(DynamicFeedIcon, null)), (_localization = localization[column.isGrouped ? 'ungroupByColumn' : 'groupByColumn']) == null ? void 0 : _localization.replace('{column}', String(column.Header))))], !disableColumnHiding && [React.createElement(MenuItem, {
961
+ disabled: column.disableColumnHiding,
953
962
  key: 0,
954
963
  onClick: handleHideColumn,
955
964
  sx: commonMenuItemStyles$1
@@ -981,8 +990,9 @@ var MRT_ToggleColumnActionMenuButton = function MRT_ToggleColumnActionMenuButton
981
990
  var column = _ref.column;
982
991
 
983
992
  var _useMRT = useMRT(),
993
+ MoreVertIcon = _useMRT.icons.MoreVertIcon,
984
994
  localization = _useMRT.localization,
985
- MoreVertIcon = _useMRT.icons.MoreVertIcon;
995
+ muiTableHeadCellColumnActionsButtonProps = _useMRT.muiTableHeadCellColumnActionsButtonProps;
986
996
 
987
997
  var _useState = useState(null),
988
998
  anchorEl = _useState[0],
@@ -994,17 +1004,23 @@ var MRT_ToggleColumnActionMenuButton = function MRT_ToggleColumnActionMenuButton
994
1004
  setAnchorEl(event.currentTarget);
995
1005
  };
996
1006
 
1007
+ var mTableHeadCellColumnActionsButtonProps = muiTableHeadCellColumnActionsButtonProps instanceof Function ? muiTableHeadCellColumnActionsButtonProps(column) : muiTableHeadCellColumnActionsButtonProps;
1008
+ var mcTableHeadCellColumnActionsButtonProps = column.muiTableHeadCellColumnActionsButtonProps instanceof Function ? column.muiTableHeadCellColumnActionsButtonProps(column) : column.muiTableHeadCellColumnActionsButtonProps;
1009
+
1010
+ var iconButtonProps = _extends({}, mTableHeadCellColumnActionsButtonProps, mcTableHeadCellColumnActionsButtonProps);
1011
+
997
1012
  return React.createElement(React.Fragment, null, React.createElement(Tooltip, {
998
1013
  arrow: true,
999
1014
  enterDelay: 1000,
1000
1015
  enterNextDelay: 1000,
1001
1016
  placement: "top",
1002
1017
  title: localization.columnActions
1003
- }, React.createElement(IconButton, {
1018
+ }, React.createElement(IconButton, Object.assign({
1004
1019
  "aria-label": localization.columnActions,
1005
1020
  onClick: handleClick,
1006
- size: "small",
1007
- sx: {
1021
+ size: "small"
1022
+ }, iconButtonProps, {
1023
+ sx: _extends({
1008
1024
  height: '2rem',
1009
1025
  mr: '2px',
1010
1026
  mt: '-0.2rem',
@@ -1014,23 +1030,23 @@ var MRT_ToggleColumnActionMenuButton = function MRT_ToggleColumnActionMenuButton
1014
1030
  '&:hover': {
1015
1031
  opacity: 1
1016
1032
  }
1017
- }
1018
- }, React.createElement(MoreVertIcon, null))), React.createElement(MRT_ColumnActionMenu, {
1033
+ }, iconButtonProps.sx)
1034
+ }), React.createElement(MoreVertIcon, null))), React.createElement(MRT_ColumnActionMenu, {
1019
1035
  anchorEl: anchorEl,
1020
1036
  column: column,
1021
1037
  setAnchorEl: setAnchorEl
1022
1038
  }));
1023
1039
  };
1024
1040
 
1025
- var commonTableHeadCellStyles = function commonTableHeadCellStyles(densePadding, enableColumnResizing) {
1026
- return {
1041
+ var commonTableHeadCellStyles = function commonTableHeadCellStyles(densePadding, enableColumnResizing, widths) {
1042
+ return _extends({
1027
1043
  fontWeight: 'bold',
1028
1044
  height: '100%',
1029
1045
  p: densePadding ? '0.5rem' : '1rem',
1030
1046
  pt: densePadding ? '0.75rem' : '1.25rem',
1031
1047
  transition: "all " + (enableColumnResizing ? '10ms' : '0.2s') + " ease-in-out",
1032
1048
  verticalAlign: 'text-top'
1033
- };
1049
+ }, widths);
1034
1050
  };
1035
1051
  var MRT_TableHeadCell = function MRT_TableHeadCell(_ref) {
1036
1052
  var _column$columns, _localization$sortByC, _localization$sortByC2;
@@ -1065,7 +1081,11 @@ var MRT_TableHeadCell = function MRT_TableHeadCell(_ref) {
1065
1081
  return React.createElement(TableCell, Object.assign({
1066
1082
  align: isParentHeader ? 'center' : 'left'
1067
1083
  }, tableCellProps, {
1068
- sx: _extends({}, commonTableHeadCellStyles(tableInstance.state.densePadding, enableColumnResizing), tableCellProps == null ? void 0 : tableCellProps.sx)
1084
+ sx: _extends({}, commonTableHeadCellStyles(tableInstance.state.densePadding, enableColumnResizing, {
1085
+ maxWidth: column.maxWidth,
1086
+ minWidth: column.minWidth,
1087
+ width: column.width
1088
+ }), tableCellProps == null ? void 0 : tableCellProps.sx)
1069
1089
  }), React.createElement(Box, {
1070
1090
  sx: {
1071
1091
  alignItems: 'flex-start',
@@ -1120,7 +1140,7 @@ var MRT_TableHeadCell = function MRT_TableHeadCell(_ref) {
1120
1140
  display: 'flex',
1121
1141
  flexWrap: 'nowrap'
1122
1142
  }
1123
- }, !disableColumnActions && !isParentHeader && React.createElement(MRT_ToggleColumnActionMenuButton, {
1143
+ }, !disableColumnActions && !column.disableColumnActions && !isParentHeader && React.createElement(MRT_ToggleColumnActionMenuButton, {
1124
1144
  column: column
1125
1145
  }), enableColumnResizing && !isParentHeader && React.createElement(Divider, Object.assign({
1126
1146
  flexItem: true,
@@ -1142,8 +1162,6 @@ var MRT_TableHeadCell = function MRT_TableHeadCell(_ref) {
1142
1162
  };
1143
1163
 
1144
1164
  var MRT_EditCellTextField = function MRT_EditCellTextField(_ref) {
1145
- var _cell$column$muiTable;
1146
-
1147
1165
  var cell = _ref.cell;
1148
1166
 
1149
1167
  var _useMRT = useMRT(),
@@ -1163,9 +1181,7 @@ var MRT_EditCellTextField = function MRT_EditCellTextField(_ref) {
1163
1181
  var mTableBodyCellEditTextFieldProps = muiTableBodyCellEditTextFieldProps instanceof Function ? muiTableBodyCellEditTextFieldProps(cell) : muiTableBodyCellEditTextFieldProps;
1164
1182
  var mcTableBodyCellEditTextFieldProps = cell.column.muiTableBodyCellEditTextFieldProps instanceof Function ? cell.column.muiTableBodyCellEditTextFieldProps(cell) : cell.column.muiTableBodyCellEditTextFieldProps;
1165
1183
 
1166
- var textFieldProps = _extends({}, mTableBodyCellEditTextFieldProps, mcTableBodyCellEditTextFieldProps, {
1167
- style: _extends({}, muiTableBodyCellEditTextFieldProps == null ? void 0 : muiTableBodyCellEditTextFieldProps.style, (_cell$column$muiTable = cell.column.muiTableBodyCellEditTextFieldProps) == null ? void 0 : _cell$column$muiTable.style)
1168
- });
1184
+ var textFieldProps = _extends({}, mTableBodyCellEditTextFieldProps, mcTableBodyCellEditTextFieldProps);
1169
1185
 
1170
1186
  if (!cell.column.disableEditing && cell.column.Edit) {
1171
1187
  return React.createElement(React.Fragment, null, cell.column.Edit(_extends({}, textFieldProps, {
@@ -1185,6 +1201,51 @@ var MRT_EditCellTextField = function MRT_EditCellTextField(_ref) {
1185
1201
  }, textFieldProps));
1186
1202
  };
1187
1203
 
1204
+ var MRT_CopyButton = function MRT_CopyButton(_ref) {
1205
+ var cell = _ref.cell;
1206
+
1207
+ var _useMRT = useMRT(),
1208
+ localization = _useMRT.localization;
1209
+
1210
+ var _useState = useState(false),
1211
+ copied = _useState[0],
1212
+ setCopied = _useState[1];
1213
+
1214
+ var handleCopy = function handleCopy(text) {
1215
+ navigator.clipboard.writeText(text);
1216
+ setCopied(true);
1217
+ setTimeout(function () {
1218
+ return setCopied(false);
1219
+ }, 4000);
1220
+ };
1221
+
1222
+ return React.createElement(Tooltip, {
1223
+ arrow: true,
1224
+ enterDelay: 1000,
1225
+ enterNextDelay: 1000,
1226
+ placement: "top",
1227
+ title: copied ? localization.copiedToClipboard : localization.clickToCopy
1228
+ }, React.createElement(Button, {
1229
+ "aria-label": localization.clickToCopy,
1230
+ onClick: function onClick() {
1231
+ return handleCopy(cell.value);
1232
+ },
1233
+ size: "small",
1234
+ sx: {
1235
+ backgroundColor: 'transparent',
1236
+ color: 'inherit',
1237
+ letterSpacing: 'inherit',
1238
+ fontFamily: 'inherit',
1239
+ fontSize: 'inherit',
1240
+ m: '-0.25rem',
1241
+ textTransform: 'inherit',
1242
+ textAlign: 'inherit',
1243
+ minWidth: 'unset'
1244
+ },
1245
+ variant: "text"
1246
+ }, cell.render('Cell')));
1247
+ };
1248
+
1188
1249
  var commonTableBodyCellStyles = function commonTableBodyCellStyles(densePadding) {
1189
1250
  return {
1190
1251
  p: densePadding ? '0.5rem' : '1rem',
@@ -1203,6 +1264,7 @@ var MRT_TableBodyCell = function MRT_TableBodyCell(_ref) {
1203
1264
  var cell = _ref.cell;
1204
1265
 
1205
1266
  var _useMRT = useMRT(),
1267
+ enableClickToCopy = _useMRT.enableClickToCopy,
1206
1268
  isLoading = _useMRT.isLoading,
1207
1269
  muiTableBodyCellProps = _useMRT.muiTableBodyCellProps,
1208
1270
  muiTableBodyCellSkeletonProps = _useMRT.muiTableBodyCellSkeletonProps,
@@ -1230,7 +1292,9 @@ var MRT_TableBodyCell = function MRT_TableBodyCell(_ref) {
1230
1292
  width: Math.random() * (120 - 60) + 60
1231
1293
  }, muiTableBodyCellSkeletonProps)) : !cell.column.disableEditing && (currentEditingRow == null ? void 0 : currentEditingRow.id) === cell.row.id ? React.createElement(MRT_EditCellTextField, {
1232
1294
  cell: cell
1233
- }) : cell.isPlaceholder ? null : cell.isAggregated ? cell.render('Aggregated') : cell.isGrouped ? React.createElement("span", null, cell.render('Cell'), " (", cell.row.subRows.length, ")") : cell.render('Cell'));
1295
+ }) : cell.isPlaceholder ? null : cell.isAggregated ? cell.render('Aggregated') : cell.isGrouped ? React.createElement("span", null, cell.render('Cell'), " (", cell.row.subRows.length, ")") : enableClickToCopy && !cell.column.disableClickToCopy ? React.createElement(MRT_CopyButton, {
1296
+ cell: cell
1297
+ }) : cell.render('Cell'));
1234
1298
  };
1235
1299
 
1236
1300
  var MRT_SelectCheckbox = function MRT_SelectCheckbox(_ref) {
@@ -1259,7 +1323,10 @@ var MRT_SelectCheckbox = function MRT_SelectCheckbox(_ref) {
1259
1323
 
1260
1324
  var checkboxProps = selectAll ? tableInstance.getToggleAllRowsSelectedProps() : row == null ? void 0 : row.getToggleRowSelectedProps();
1261
1325
  return React.createElement(TableCell, {
1262
- sx: commonTableBodyButtonCellStyles(tableInstance.state.densePadding)
1326
+ sx: _extends({}, commonTableBodyButtonCellStyles(tableInstance.state.densePadding), {
1327
+ maxWidth: '2rem',
1328
+ width: '2rem'
1329
+ })
1263
1330
  }, React.createElement(Tooltip, {
1264
1331
  arrow: true,
1265
1332
  enterDelay: 1000,
@@ -1303,12 +1370,7 @@ var MRT_TableSpacerCell = function MRT_TableSpacerCell(_ref) {
1303
1370
  var _useMRT = useMRT(),
1304
1371
  muiTableBodyCellProps = _useMRT.muiTableBodyCellProps;
1305
1372
 
1306
- var mTableBodyCellrops = muiTableBodyCellProps instanceof Function ? muiTableBodyCellProps() : muiTableBodyCellProps;
1307
-
1308
- var tableCellProps = _extends({}, mTableBodyCellrops, {
1309
- style: _extends({}, mTableBodyCellrops == null ? void 0 : mTableBodyCellrops.style)
1310
- });
1311
-
1373
+ var tableCellProps = muiTableBodyCellProps instanceof Function ? muiTableBodyCellProps() : muiTableBodyCellProps;
1312
1374
  return React.createElement(TableCell, Object.assign({}, tableCellProps, {
1313
1375
  sx: _extends({
1314
1376
  width: width
@@ -1326,7 +1388,9 @@ var MRT_TableHeadCellActions = function MRT_TableHeadCellActions() {
1326
1388
  textAlign: 'center'
1327
1389
  },
1328
1390
  sx: _extends({}, commonTableHeadCellStyles(densePadding), {
1329
- textAlign: 'center'
1391
+ textAlign: 'center',
1392
+ maxWidth: '4rem',
1393
+ width: '4rem'
1330
1394
  })
1331
1395
  }, localization.actions);
1332
1396
  };
@@ -1337,6 +1401,7 @@ var MRT_TableHeadRow = function MRT_TableHeadRow(_ref) {
1337
1401
  var _useMRT = useMRT(),
1338
1402
  anyRowsCanExpand = _useMRT.anyRowsCanExpand,
1339
1403
  disableExpandAll = _useMRT.disableExpandAll,
1404
+ disableSelectAll = _useMRT.disableSelectAll,
1340
1405
  enableRowActions = _useMRT.enableRowActions,
1341
1406
  enableRowEditing = _useMRT.enableRowEditing,
1342
1407
  enableRowNumbers = _useMRT.enableRowNumbers,
@@ -1363,7 +1428,7 @@ var MRT_TableHeadRow = function MRT_TableHeadRow(_ref) {
1363
1428
  sx: _extends({}, commonTableHeadCellStyles(tableInstance.state.densePadding))
1364
1429
  }, "#")), (enableRowActions || enableRowEditing) && positionActionsColumn === 'first' && (isParentHeader ? React.createElement(MRT_TableSpacerCell, null) : React.createElement(MRT_TableHeadCellActions, null)), anyRowsCanExpand || renderDetailPanel ? !disableExpandAll && !isParentHeader ? React.createElement(MRT_ExpandAllButton, null) : React.createElement(MRT_TableSpacerCell, {
1365
1430
  width: (renderDetailPanel ? 2 : tableInstance.expandedDepth + 0.5) + "rem"
1366
- }) : null, enableSelection ? !isParentHeader ? React.createElement(MRT_SelectCheckbox, {
1431
+ }) : null, enableSelection ? !isParentHeader && !disableSelectAll ? React.createElement(MRT_SelectCheckbox, {
1367
1432
  selectAll: true
1368
1433
  }) : React.createElement(MRT_TableSpacerCell, {
1369
1434
  width: "1rem"
@@ -3012,7 +3077,9 @@ var MRT_DefaultLocalization_EN = {
3012
3077
  clearFilter: 'Clear filter',
3013
3078
  clearSearch: 'Clear search',
3014
3079
  clearSort: 'Clear sort',
3080
+ clickToCopy: 'Click to copy',
3015
3081
  columnActions: 'Column Actions',
3082
+ copiedToClipboard: 'Copied to clipboard',
3016
3083
  edit: 'Edit',
3017
3084
  expand: 'Expand',
3018
3085
  expandAll: 'Expand all',
@@ -3055,8 +3122,10 @@ var MRT_DefaultLocalization_EN = {
3055
3122
  var MRT_Default_Icons = {
3056
3123
  ArrowRightIcon: ArrowRightIcon,
3057
3124
  CancelIcon: CancelIcon,
3125
+ CheckBoxIcon: CheckBoxIcon,
3058
3126
  ClearAllIcon: ClearAllIcon,
3059
3127
  CloseIcon: CloseIcon,
3128
+ ContentCopyIcon: ContentCopyIcon,
3060
3129
  DensityMediumIcon: DensityMediumIcon,
3061
3130
  DensitySmallIcon: DensitySmallIcon,
3062
3131
  DoubleArrowDownIcon: DoubleArrowDownIcon,