material-react-table 0.30.0 → 0.31.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.
@@ -1,7 +1,7 @@
1
1
  import React, { useMemo, useState, useCallback, Fragment, useRef, useLayoutEffect, useEffect } from 'react';
2
2
  import { ArrowRight, Cancel, CheckBox, ClearAll, Close, DensityLarge, DensityMedium, DensitySmall, DragHandle, DynamicFeed, Edit, ExpandLess, ExpandMore, FilterAlt, FilterAltOff, FilterList, FilterListOff, FullscreenExit, Fullscreen, KeyboardDoubleArrowDown, MoreHoriz, MoreVert, PushPin, RestartAlt, Save, Search, SearchOff, Sort, ViewColumn, VisibilityOff } from '@mui/icons-material';
3
3
  import { filterFns, sortingFns, useReactTable, getCoreRowModel, getExpandedRowModel, getFacetedRowModel, getFilteredRowModel, getGroupedRowModel, getPaginationRowModel, getSortedRowModel } from '@tanstack/react-table';
4
- import { Tooltip, IconButton, Menu, MenuItem, Box, FormControlLabel, Switch, Typography, Button, Divider, ListItemIcon, Checkbox, debounce, Collapse, TextField, InputAdornment, LinearProgress, TablePagination, Chip, Alert, AlertTitle, useMediaQuery, Toolbar, lighten, alpha, ListItemText, Grow, TableSortLabel, useTheme, TableCell, TableRow, TableHead, darken, Skeleton, TableBody, TableFooter, Table, TableContainer, Paper, Dialog } from '@mui/material';
4
+ import { Tooltip, IconButton, Menu, MenuItem, Box, FormControlLabel, Switch, Typography, Button, Divider, ListItemIcon, Checkbox, debounce, Collapse, TextField, InputAdornment, LinearProgress, TablePagination, Chip, Alert, AlertTitle, Fade, alpha, useMediaQuery, Toolbar, lighten, ListItemText, Grow, TableSortLabel, useTheme, TableCell, TableRow, TableHead, darken, Skeleton, TableBody, TableFooter, Table, TableContainer, Paper, Dialog } from '@mui/material';
5
5
  import { rankItem, rankings, compareItems } from '@tanstack/match-sorter-utils';
6
6
  import { useVirtualizer } from '@tanstack/react-virtual';
7
7
 
@@ -49,6 +49,7 @@ var MRT_DefaultLocalization_EN = {
49
49
  clickToCopy: 'Click to copy',
50
50
  columnActions: 'Column Actions',
51
51
  copiedToClipboard: 'Copied to clipboard',
52
+ dropToGroupBy: 'Drop to group by {column}',
52
53
  edit: 'Edit',
53
54
  expand: 'Expand',
54
55
  expandAll: 'Expand all',
@@ -711,7 +712,8 @@ var prepareColumns = function prepareColumns(columnDefs, currentFilterFns) {
711
712
  if (Object.keys(MRT_FilterFns).includes(currentFilterFns[columnDef.id])) {
712
713
  var _MRT_FilterFns$curren;
713
714
 
714
- columnDef.filterFn = (_MRT_FilterFns$curren = MRT_FilterFns[currentFilterFns[columnDef.id]]) != null ? _MRT_FilterFns$curren : MRT_FilterFns.fuzzy; //@ts-ignore
715
+ columnDef.filterFn = // @ts-ignore
716
+ (_MRT_FilterFns$curren = MRT_FilterFns[currentFilterFns[columnDef.id]]) != null ? _MRT_FilterFns$curren : MRT_FilterFns.fuzzy; //@ts-ignore
715
717
 
716
718
  columnDef._filterFn = currentFilterFns[columnDef.id];
717
719
  }
@@ -1144,7 +1146,11 @@ var MRT_ColumnActionMenu = function MRT_ColumnActionMenu(_ref) {
1144
1146
  sx: commonMenuItemStyles
1145
1147
  }, React.createElement(Box, {
1146
1148
  sx: commonListItemStyles
1147
- }, React.createElement(ListItemIcon, null, React.createElement(SortIcon, null)), (_localization$sortByC = localization.sortByColumnAsc) == null ? void 0 : _localization$sortByC.replace('{column}', String(columnDef.header)))), React.createElement(MenuItem, {
1149
+ }, React.createElement(ListItemIcon, null, React.createElement(SortIcon, {
1150
+ style: {
1151
+ transform: 'rotate(180deg) scaleX(-1)'
1152
+ }
1153
+ })), (_localization$sortByC = localization.sortByColumnAsc) == null ? void 0 : _localization$sortByC.replace('{column}', String(columnDef.header)))), React.createElement(MenuItem, {
1148
1154
  divider: enableColumnFilters || enableGrouping || enableHiding,
1149
1155
  key: 2,
1150
1156
  disabled: column.getIsSorted() === 'desc',
@@ -1152,11 +1158,7 @@ var MRT_ColumnActionMenu = function MRT_ColumnActionMenu(_ref) {
1152
1158
  sx: commonMenuItemStyles
1153
1159
  }, React.createElement(Box, {
1154
1160
  sx: commonListItemStyles
1155
- }, React.createElement(ListItemIcon, null, React.createElement(SortIcon, {
1156
- style: {
1157
- transform: 'rotate(180deg) scaleX(-1)'
1158
- }
1159
- })), (_localization$sortByC2 = localization.sortByColumnDesc) == null ? void 0 : _localization$sortByC2.replace('{column}', String(columnDef.header))))], enableColumnFilters && column.getCanFilter() && [React.createElement(MenuItem, {
1161
+ }, React.createElement(ListItemIcon, null, React.createElement(SortIcon, null)), (_localization$sortByC2 = localization.sortByColumnDesc) == null ? void 0 : _localization$sortByC2.replace('{column}', String(columnDef.header))))], enableColumnFilters && column.getCanFilter() && [React.createElement(MenuItem, {
1160
1162
  disabled: !column.getFilterValue(),
1161
1163
  key: 0,
1162
1164
  onClick: handleClearFilter,
@@ -1547,7 +1549,11 @@ var MRT_GlobalFilterTextField = function MRT_GlobalFilterTextField(_ref) {
1547
1549
  height: '1.75rem',
1548
1550
  width: '1.75rem'
1549
1551
  }
1550
- }, React.createElement(SearchIcon, null)))) : React.createElement(SearchIcon, null),
1552
+ }, React.createElement(SearchIcon, null)))) : React.createElement(SearchIcon, {
1553
+ style: {
1554
+ marginRight: '4px'
1555
+ }
1556
+ }),
1551
1557
  endAdornment: React.createElement(InputAdornment, {
1552
1558
  position: "end"
1553
1559
  }, React.createElement(Tooltip, {
@@ -1923,6 +1929,48 @@ var MRT_ToolbarInternalButtons = function MRT_ToolbarInternalButtons(_ref) {
1923
1929
  })));
1924
1930
  };
1925
1931
 
1932
+ var MRT_ToolbarDropZone = function MRT_ToolbarDropZone(_ref) {
1933
+ var _currentDraggingColum, _currentDraggingColum2;
1934
+
1935
+ var table = _ref.table;
1936
+ var getState = table.getState,
1937
+ _table$options = table.options,
1938
+ enableGrouping = _table$options.enableGrouping,
1939
+ localization = _table$options.localization,
1940
+ setCurrentHoveredColumn = table.setCurrentHoveredColumn;
1941
+
1942
+ var _getState = getState(),
1943
+ currentDraggingColumn = _getState.currentDraggingColumn,
1944
+ currentHoveredColumn = _getState.currentHoveredColumn;
1945
+
1946
+ var handleDragEnter = function handleDragEnter(_event) {
1947
+ setCurrentHoveredColumn({
1948
+ id: 'drop-zone'
1949
+ });
1950
+ };
1951
+
1952
+ return React.createElement(Fade, {
1953
+ unmountOnExit: true,
1954
+ mountOnEnter: true,
1955
+ "in": !!enableGrouping && !!currentDraggingColumn
1956
+ }, React.createElement(Box, {
1957
+ sx: function sx(theme) {
1958
+ return {
1959
+ alignItems: 'center',
1960
+ backgroundColor: alpha(theme.palette.info.main, (currentHoveredColumn == null ? void 0 : currentHoveredColumn.id) === 'drop-zone' ? 0.2 : 0.1),
1961
+ border: "dashed " + theme.palette.info.main + " 2px",
1962
+ display: 'flex',
1963
+ justifyContent: 'center',
1964
+ height: 'calc(100% - 4px)',
1965
+ position: 'absolute',
1966
+ width: 'calc(100% - 4px)',
1967
+ zIndex: 2
1968
+ };
1969
+ },
1970
+ onDragEnter: handleDragEnter
1971
+ }, React.createElement(Typography, null, localization.dropToGroupBy.replace('{column}', (_currentDraggingColum = currentDraggingColumn == null ? void 0 : (_currentDraggingColum2 = currentDraggingColumn.columnDef) == null ? void 0 : _currentDraggingColum2.header) != null ? _currentDraggingColum : ''))));
1972
+ };
1973
+
1926
1974
  var commonToolbarStyles = function commonToolbarStyles(_ref) {
1927
1975
  var theme = _ref.theme;
1928
1976
  return {
@@ -1950,6 +1998,7 @@ var MRT_ToolbarTop = function MRT_ToolbarTop(_ref2) {
1950
1998
  positionGlobalFilter = _table$options.positionGlobalFilter,
1951
1999
  positionPagination = _table$options.positionPagination,
1952
2000
  positionToolbarAlertBanner = _table$options.positionToolbarAlertBanner,
2001
+ positionToolbarDropZone = _table$options.positionToolbarDropZone,
1953
2002
  renderToolbarTopCustomActions = _table$options.renderToolbarTopCustomActions,
1954
2003
  tableId = _table$options.tableId;
1955
2004
 
@@ -1977,6 +2026,8 @@ var MRT_ToolbarTop = function MRT_ToolbarTop(_ref2) {
1977
2026
  }), positionToolbarAlertBanner === 'top' && React.createElement(MRT_ToolbarAlertBanner, {
1978
2027
  stackAlertBanner: stackAlertBanner,
1979
2028
  table: table
2029
+ }), ['both', 'top'].includes(positionToolbarDropZone != null ? positionToolbarDropZone : '') && React.createElement(MRT_ToolbarDropZone, {
2030
+ table: table
1980
2031
  }), React.createElement(Box, {
1981
2032
  sx: {
1982
2033
  alignItems: 'flex-start',
@@ -2014,6 +2065,7 @@ var MRT_ToolbarBottom = function MRT_ToolbarBottom(_ref) {
2014
2065
  muiTableToolbarBottomProps = _table$options.muiTableToolbarBottomProps,
2015
2066
  positionPagination = _table$options.positionPagination,
2016
2067
  positionToolbarAlertBanner = _table$options.positionToolbarAlertBanner,
2068
+ positionToolbarDropZone = _table$options.positionToolbarDropZone,
2017
2069
  renderToolbarBottomCustomActions = _table$options.renderToolbarBottomCustomActions,
2018
2070
  tableId = _table$options.tableId;
2019
2071
 
@@ -2045,6 +2097,8 @@ var MRT_ToolbarBottom = function MRT_ToolbarBottom(_ref) {
2045
2097
  table: table
2046
2098
  }), positionToolbarAlertBanner === 'bottom' && React.createElement(MRT_ToolbarAlertBanner, {
2047
2099
  table: table
2100
+ }), ['both', 'bottom'].includes(positionToolbarDropZone != null ? positionToolbarDropZone : '') && React.createElement(MRT_ToolbarDropZone, {
2101
+ table: table
2048
2102
  }), React.createElement(Box, {
2049
2103
  sx: {
2050
2104
  display: 'flex',
@@ -2298,7 +2352,11 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
2298
2352
  }, React.createElement(FilterListIcon, null)))), filterChipLabel && React.createElement(Chip, {
2299
2353
  onDelete: handleClearEmptyFilterChip,
2300
2354
  label: filterChipLabel
2301
- })) : React.createElement(FilterListIcon, null),
2355
+ })) : React.createElement(FilterListIcon, {
2356
+ style: {
2357
+ marginRight: '4px'
2358
+ }
2359
+ }),
2302
2360
  endAdornment: !filterChipLabel && React.createElement(InputAdornment, {
2303
2361
  position: "end"
2304
2362
  }, React.createElement(Tooltip, {
@@ -2343,7 +2401,7 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
2343
2401
  return _extends({
2344
2402
  p: 0,
2345
2403
  minWidth: !filterChipLabel ? '6rem' : 'auto',
2346
- width: 'calc(100% + 0.5rem)',
2404
+ width: '100%',
2347
2405
  '& .MuiSelect-icon': {
2348
2406
  mr: '1.5rem'
2349
2407
  }
@@ -2517,7 +2575,9 @@ var MRT_TableHeadCellGrabHandle = function MRT_TableHeadCellGrabHandle(_ref) {
2517
2575
  targetColumn: currentHoveredColumn
2518
2576
  });
2519
2577
 
2520
- if (enableColumnOrdering && currentHoveredColumn && (currentHoveredColumn == null ? void 0 : currentHoveredColumn.id) !== (currentDraggingColumn == null ? void 0 : currentDraggingColumn.id)) {
2578
+ if ((currentHoveredColumn == null ? void 0 : currentHoveredColumn.id) === 'drop-zone') {
2579
+ column.toggleGrouping();
2580
+ } else if (enableColumnOrdering && currentHoveredColumn && (currentHoveredColumn == null ? void 0 : currentHoveredColumn.id) !== (currentDraggingColumn == null ? void 0 : currentDraggingColumn.id)) {
2521
2581
  setColumnOrder(reorderColumn(column, currentHoveredColumn, columnOrder));
2522
2582
  }
2523
2583
 
@@ -2624,7 +2684,8 @@ var MRT_TableHeadCell = function MRT_TableHeadCell(_ref) {
2624
2684
  var _getState = getState(),
2625
2685
  density = _getState.density,
2626
2686
  currentDraggingColumn = _getState.currentDraggingColumn,
2627
- currentHoveredColumn = _getState.currentHoveredColumn;
2687
+ currentHoveredColumn = _getState.currentHoveredColumn,
2688
+ showColumnFilters = _getState.showColumnFilters;
2628
2689
 
2629
2690
  var column = header.column;
2630
2691
  var columnDef = column.columnDef;
@@ -2653,6 +2714,10 @@ var MRT_TableHeadCell = function MRT_TableHeadCell(_ref) {
2653
2714
  };
2654
2715
 
2655
2716
  var handleDragEnter = function handleDragEnter(_e) {
2717
+ if (enableGrouping && (currentHoveredColumn == null ? void 0 : currentHoveredColumn.id) === 'drop-zone') {
2718
+ setCurrentHoveredColumn(null);
2719
+ }
2720
+
2656
2721
  if (enableColumnOrdering && currentDraggingColumn) {
2657
2722
  setCurrentHoveredColumn(columnDef.enableColumnOrdering !== false ? column : null);
2658
2723
  }
@@ -2687,7 +2752,7 @@ var MRT_TableHeadCell = function MRT_TableHeadCell(_ref) {
2687
2752
  overflow: 'visible',
2688
2753
  opacity: (currentDraggingColumn == null ? void 0 : currentDraggingColumn.id) === column.id || (currentHoveredColumn == null ? void 0 : currentHoveredColumn.id) === column.id ? 0.5 : 1,
2689
2754
  p: density === 'compact' ? '0.5rem' : density === 'comfortable' ? columnDefType === 'display' ? '0.75rem' : '1rem' : columnDefType === 'display' ? '1rem 1.25rem' : '1.5rem',
2690
- pb: columnDefType === 'display' ? 0 : undefined,
2755
+ pb: columnDefType === 'display' ? 0 : showColumnFilters ? '0.5rem' : undefined,
2691
2756
  position: column.getIsPinned() && columnDefType !== 'group' ? 'sticky' : undefined,
2692
2757
  pt: columnDefType === 'group' ? 0 : density === 'compact' ? '0.25' : density === 'comfortable' ? '.75rem' : '1.25rem',
2693
2758
  right: column.getIsPinned() === 'right' ? getTotalRight() + "px" : undefined,
@@ -2987,6 +3052,7 @@ var MRT_TableBodyCell = function MRT_TableBodyCell(_ref) {
2987
3052
  enableClickToCopy = _table$options.enableClickToCopy,
2988
3053
  enableColumnOrdering = _table$options.enableColumnOrdering,
2989
3054
  enableEditing = _table$options.enableEditing,
3055
+ enableGrouping = _table$options.enableGrouping,
2990
3056
  enablePagination = _table$options.enablePagination,
2991
3057
  enableRowNumbers = _table$options.enableRowNumbers,
2992
3058
  muiTableBodyCellProps = _table$options.muiTableBodyCellProps,
@@ -3053,6 +3119,10 @@ var MRT_TableBodyCell = function MRT_TableBodyCell(_ref) {
3053
3119
  };
3054
3120
 
3055
3121
  var handleDragEnter = function handleDragEnter(_e) {
3122
+ if (enableGrouping && (currentHoveredColumn == null ? void 0 : currentHoveredColumn.id) === 'drop-zone') {
3123
+ setCurrentHoveredColumn(null);
3124
+ }
3125
+
3056
3126
  if (enableColumnOrdering && currentDraggingColumn) {
3057
3127
  setCurrentHoveredColumn(columnDef.enableColumnOrdering !== false ? column : null);
3058
3128
  }
@@ -3713,15 +3783,16 @@ var MRT_TableRoot = function MRT_TableRoot(props) {
3713
3783
  getGroupedRowModel: getGroupedRowModel(),
3714
3784
  getPaginationRowModel: getPaginationRowModel(),
3715
3785
  getSortedRowModel: getSortedRowModel(),
3716
- onColumnOrderChange: setColumnOrder
3786
+ onColumnOrderChange: setColumnOrder,
3787
+ getSubRows: function getSubRows(row) {
3788
+ return row == null ? void 0 : row.subRows;
3789
+ }
3717
3790
  }, props, {
3718
3791
  //@ts-ignore
3719
3792
  columns: columnDefs,
3720
3793
  data: data,
3721
- getSubRows: function getSubRows(row) {
3722
- return row == null ? void 0 : row.subRows;
3723
- },
3724
- globalFilterFn: (_MRT_FilterFns$curren = MRT_FilterFns[currentGlobalFilterFn]) != null ? _MRT_FilterFns$curren : MRT_FilterFns.fuzzy,
3794
+ globalFilterFn: //@ts-ignore
3795
+ (_MRT_FilterFns$curren = MRT_FilterFns[currentGlobalFilterFn]) != null ? _MRT_FilterFns$curren : MRT_FilterFns.fuzzy,
3725
3796
  initialState: initialState,
3726
3797
  state: _extends({
3727
3798
  columnOrder: columnOrder,
@@ -3777,7 +3848,7 @@ var MRT_TableRoot = function MRT_TableRoot(props) {
3777
3848
  }));
3778
3849
  };
3779
3850
 
3780
- var _excluded$5 = ["autoResetExpanded", "columnResizeMode", "defaultColumn", "editingMode", "enableColumnActions", "enableColumnFilterChangeMode", "enableColumnFilters", "enableColumnOrdering", "enableColumnResizing", "enableDensityToggle", "enableExpandAll", "enableFilters", "enableFullScreenToggle", "enableGlobalFilter", "enableGlobalFilterChangeMode", "enableGlobalFilterRankedResults", "enableGrouping", "enableHiding", "enableMultiRowSelection", "enableMultiSort", "enablePagination", "enablePinning", "enableRowSelection", "enableSelectAll", "enableSorting", "enableStickyHeader", "enableTableFooter", "enableTableHead", "enableToolbarBottom", "enableToolbarInternalActions", "enableToolbarTop", "icons", "localization", "positionActionsColumn", "positionExpandColumn", "positionGlobalFilter", "positionPagination", "positionToolbarAlertBanner", "rowNumberMode", "selectAllMode"];
3851
+ var _excluded$5 = ["autoResetExpanded", "columnResizeMode", "defaultColumn", "editingMode", "enableColumnActions", "enableColumnFilterChangeMode", "enableColumnFilters", "enableColumnOrdering", "enableColumnResizing", "enableDensityToggle", "enableExpandAll", "enableFilters", "enableFullScreenToggle", "enableGlobalFilter", "enableGlobalFilterChangeMode", "enableGlobalFilterRankedResults", "enableGrouping", "enableHiding", "enableMultiRowSelection", "enableMultiSort", "enablePagination", "enablePinning", "enableRowSelection", "enableSelectAll", "enableSorting", "enableStickyHeader", "enableTableFooter", "enableTableHead", "enableToolbarBottom", "enableToolbarInternalActions", "enableToolbarTop", "icons", "localization", "positionActionsColumn", "positionExpandColumn", "positionGlobalFilter", "positionPagination", "positionToolbarAlertBanner", "positionToolbarDropZone", "rowNumberMode", "selectAllMode"];
3781
3852
  var MaterialReactTable = (function (_ref) {
3782
3853
  var _ref$autoResetExpande = _ref.autoResetExpanded,
3783
3854
  autoResetExpanded = _ref$autoResetExpande === void 0 ? false : _ref$autoResetExpande,
@@ -3857,6 +3928,8 @@ var MaterialReactTable = (function (_ref) {
3857
3928
  positionPagination = _ref$positionPaginati === void 0 ? 'bottom' : _ref$positionPaginati,
3858
3929
  _ref$positionToolbarA = _ref.positionToolbarAlertBanner,
3859
3930
  positionToolbarAlertBanner = _ref$positionToolbarA === void 0 ? 'top' : _ref$positionToolbarA,
3931
+ _ref$positionToolbarD = _ref.positionToolbarDropZone,
3932
+ positionToolbarDropZone = _ref$positionToolbarD === void 0 ? 'top' : _ref$positionToolbarD,
3860
3933
  _ref$rowNumberMode = _ref.rowNumberMode,
3861
3934
  rowNumberMode = _ref$rowNumberMode === void 0 ? 'original' : _ref$rowNumberMode,
3862
3935
  _ref$selectAllMode = _ref.selectAllMode,
@@ -3902,6 +3975,7 @@ var MaterialReactTable = (function (_ref) {
3902
3975
  positionGlobalFilter: positionGlobalFilter,
3903
3976
  positionPagination: positionPagination,
3904
3977
  positionToolbarAlertBanner: positionToolbarAlertBanner,
3978
+ positionToolbarDropZone: positionToolbarDropZone,
3905
3979
  rowNumberMode: rowNumberMode,
3906
3980
  selectAllMode: selectAllMode
3907
3981
  }, rest));