material-react-table 0.30.2 → 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',
@@ -1928,6 +1929,48 @@ var MRT_ToolbarInternalButtons = function MRT_ToolbarInternalButtons(_ref) {
1928
1929
  })));
1929
1930
  };
1930
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
+
1931
1974
  var commonToolbarStyles = function commonToolbarStyles(_ref) {
1932
1975
  var theme = _ref.theme;
1933
1976
  return {
@@ -1955,6 +1998,7 @@ var MRT_ToolbarTop = function MRT_ToolbarTop(_ref2) {
1955
1998
  positionGlobalFilter = _table$options.positionGlobalFilter,
1956
1999
  positionPagination = _table$options.positionPagination,
1957
2000
  positionToolbarAlertBanner = _table$options.positionToolbarAlertBanner,
2001
+ positionToolbarDropZone = _table$options.positionToolbarDropZone,
1958
2002
  renderToolbarTopCustomActions = _table$options.renderToolbarTopCustomActions,
1959
2003
  tableId = _table$options.tableId;
1960
2004
 
@@ -1982,6 +2026,8 @@ var MRT_ToolbarTop = function MRT_ToolbarTop(_ref2) {
1982
2026
  }), positionToolbarAlertBanner === 'top' && React.createElement(MRT_ToolbarAlertBanner, {
1983
2027
  stackAlertBanner: stackAlertBanner,
1984
2028
  table: table
2029
+ }), ['both', 'top'].includes(positionToolbarDropZone != null ? positionToolbarDropZone : '') && React.createElement(MRT_ToolbarDropZone, {
2030
+ table: table
1985
2031
  }), React.createElement(Box, {
1986
2032
  sx: {
1987
2033
  alignItems: 'flex-start',
@@ -2019,6 +2065,7 @@ var MRT_ToolbarBottom = function MRT_ToolbarBottom(_ref) {
2019
2065
  muiTableToolbarBottomProps = _table$options.muiTableToolbarBottomProps,
2020
2066
  positionPagination = _table$options.positionPagination,
2021
2067
  positionToolbarAlertBanner = _table$options.positionToolbarAlertBanner,
2068
+ positionToolbarDropZone = _table$options.positionToolbarDropZone,
2022
2069
  renderToolbarBottomCustomActions = _table$options.renderToolbarBottomCustomActions,
2023
2070
  tableId = _table$options.tableId;
2024
2071
 
@@ -2050,6 +2097,8 @@ var MRT_ToolbarBottom = function MRT_ToolbarBottom(_ref) {
2050
2097
  table: table
2051
2098
  }), positionToolbarAlertBanner === 'bottom' && React.createElement(MRT_ToolbarAlertBanner, {
2052
2099
  table: table
2100
+ }), ['both', 'bottom'].includes(positionToolbarDropZone != null ? positionToolbarDropZone : '') && React.createElement(MRT_ToolbarDropZone, {
2101
+ table: table
2053
2102
  }), React.createElement(Box, {
2054
2103
  sx: {
2055
2104
  display: 'flex',
@@ -2526,7 +2575,9 @@ var MRT_TableHeadCellGrabHandle = function MRT_TableHeadCellGrabHandle(_ref) {
2526
2575
  targetColumn: currentHoveredColumn
2527
2576
  });
2528
2577
 
2529
- 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)) {
2530
2581
  setColumnOrder(reorderColumn(column, currentHoveredColumn, columnOrder));
2531
2582
  }
2532
2583
 
@@ -2663,6 +2714,10 @@ var MRT_TableHeadCell = function MRT_TableHeadCell(_ref) {
2663
2714
  };
2664
2715
 
2665
2716
  var handleDragEnter = function handleDragEnter(_e) {
2717
+ if (enableGrouping && (currentHoveredColumn == null ? void 0 : currentHoveredColumn.id) === 'drop-zone') {
2718
+ setCurrentHoveredColumn(null);
2719
+ }
2720
+
2666
2721
  if (enableColumnOrdering && currentDraggingColumn) {
2667
2722
  setCurrentHoveredColumn(columnDef.enableColumnOrdering !== false ? column : null);
2668
2723
  }
@@ -2997,6 +3052,7 @@ var MRT_TableBodyCell = function MRT_TableBodyCell(_ref) {
2997
3052
  enableClickToCopy = _table$options.enableClickToCopy,
2998
3053
  enableColumnOrdering = _table$options.enableColumnOrdering,
2999
3054
  enableEditing = _table$options.enableEditing,
3055
+ enableGrouping = _table$options.enableGrouping,
3000
3056
  enablePagination = _table$options.enablePagination,
3001
3057
  enableRowNumbers = _table$options.enableRowNumbers,
3002
3058
  muiTableBodyCellProps = _table$options.muiTableBodyCellProps,
@@ -3063,6 +3119,10 @@ var MRT_TableBodyCell = function MRT_TableBodyCell(_ref) {
3063
3119
  };
3064
3120
 
3065
3121
  var handleDragEnter = function handleDragEnter(_e) {
3122
+ if (enableGrouping && (currentHoveredColumn == null ? void 0 : currentHoveredColumn.id) === 'drop-zone') {
3123
+ setCurrentHoveredColumn(null);
3124
+ }
3125
+
3066
3126
  if (enableColumnOrdering && currentDraggingColumn) {
3067
3127
  setCurrentHoveredColumn(columnDef.enableColumnOrdering !== false ? column : null);
3068
3128
  }
@@ -3723,14 +3783,14 @@ var MRT_TableRoot = function MRT_TableRoot(props) {
3723
3783
  getGroupedRowModel: getGroupedRowModel(),
3724
3784
  getPaginationRowModel: getPaginationRowModel(),
3725
3785
  getSortedRowModel: getSortedRowModel(),
3726
- onColumnOrderChange: setColumnOrder
3786
+ onColumnOrderChange: setColumnOrder,
3787
+ getSubRows: function getSubRows(row) {
3788
+ return row == null ? void 0 : row.subRows;
3789
+ }
3727
3790
  }, props, {
3728
3791
  //@ts-ignore
3729
3792
  columns: columnDefs,
3730
3793
  data: data,
3731
- getSubRows: function getSubRows(row) {
3732
- return row == null ? void 0 : row.subRows;
3733
- },
3734
3794
  globalFilterFn: //@ts-ignore
3735
3795
  (_MRT_FilterFns$curren = MRT_FilterFns[currentGlobalFilterFn]) != null ? _MRT_FilterFns$curren : MRT_FilterFns.fuzzy,
3736
3796
  initialState: initialState,
@@ -3788,7 +3848,7 @@ var MRT_TableRoot = function MRT_TableRoot(props) {
3788
3848
  }));
3789
3849
  };
3790
3850
 
3791
- 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"];
3792
3852
  var MaterialReactTable = (function (_ref) {
3793
3853
  var _ref$autoResetExpande = _ref.autoResetExpanded,
3794
3854
  autoResetExpanded = _ref$autoResetExpande === void 0 ? false : _ref$autoResetExpande,
@@ -3868,6 +3928,8 @@ var MaterialReactTable = (function (_ref) {
3868
3928
  positionPagination = _ref$positionPaginati === void 0 ? 'bottom' : _ref$positionPaginati,
3869
3929
  _ref$positionToolbarA = _ref.positionToolbarAlertBanner,
3870
3930
  positionToolbarAlertBanner = _ref$positionToolbarA === void 0 ? 'top' : _ref$positionToolbarA,
3931
+ _ref$positionToolbarD = _ref.positionToolbarDropZone,
3932
+ positionToolbarDropZone = _ref$positionToolbarD === void 0 ? 'top' : _ref$positionToolbarD,
3871
3933
  _ref$rowNumberMode = _ref.rowNumberMode,
3872
3934
  rowNumberMode = _ref$rowNumberMode === void 0 ? 'original' : _ref$rowNumberMode,
3873
3935
  _ref$selectAllMode = _ref.selectAllMode,
@@ -3913,6 +3975,7 @@ var MaterialReactTable = (function (_ref) {
3913
3975
  positionGlobalFilter: positionGlobalFilter,
3914
3976
  positionPagination: positionPagination,
3915
3977
  positionToolbarAlertBanner: positionToolbarAlertBanner,
3978
+ positionToolbarDropZone: positionToolbarDropZone,
3916
3979
  rowNumberMode: rowNumberMode,
3917
3980
  selectAllMode: selectAllMode
3918
3981
  }, rest));