material-react-table 0.15.1 → 0.16.2

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, forwardRef, useState, useCallback, Fragment, 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 { sortingFns, createTable, filterFns, getCoreRowModel, getExpandedRowModel, getFacetedRowModel, getFilteredRowModel, getGroupedRowModel, getPaginationRowModel, getSortedRowModel, useTableInstance } from '@tanstack/react-table';
4
- import { Tooltip, IconButton, Menu, MenuItem, Box, FormControlLabel, Switch, Button, Divider, ListItemIcon, Checkbox, debounce, Collapse, TextField, InputAdornment, TablePagination, Chip, Alert, LinearProgress, useMediaQuery, Toolbar, lighten, alpha, Grow, TableSortLabel, 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, TablePagination, Chip, Alert, LinearProgress, useMediaQuery, Toolbar, lighten, alpha, Grow, TableSortLabel, 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 { useDrop, useDrag, DndProvider } from 'react-dnd';
7
7
  import { HTML5Backend } from 'react-dnd-html5-backend';
@@ -24,10 +24,6 @@ function _extends() {
24
24
  return _extends.apply(this, arguments);
25
25
  }
26
26
 
27
- function _objectDestructuringEmpty(obj) {
28
- if (obj == null) throw new TypeError("Cannot destructure undefined");
29
- }
30
-
31
27
  function _objectWithoutPropertiesLoose(source, excluded) {
32
28
  if (source == null) return {};
33
29
  var target = {};
@@ -100,11 +96,11 @@ var MRT_DefaultLocalization_EN = {
100
96
  sortedByColumnAsc: 'Sorted by {column} ascending',
101
97
  sortedByColumnDesc: 'Sorted by {column} descending',
102
98
  thenBy: ', then by ',
103
- to: 'to',
104
99
  toggleDensity: 'Toggle density',
105
100
  toggleFullScreen: 'Toggle full screen',
106
101
  toggleSelectAll: 'Toggle select all',
107
102
  toggleSelectRow: 'Toggle select row',
103
+ toggleVisibility: 'Toggle visibility',
108
104
  ungroupByColumn: 'Ungroup by {column}',
109
105
  unpin: 'Unpin',
110
106
  unpinAll: 'Unpin all',
@@ -623,13 +619,13 @@ var createDataColumn = function createDataColumn(table, column, currentFilterFns
623
619
  var createDisplayColumn = function createDisplayColumn(table, column) {
624
620
  return table.createDisplayColumn(column);
625
621
  };
626
- var reorderColumn = function reorderColumn(movingColumn, receivingColumn, columnOrder, setColumnOrder) {
622
+ var reorderColumn = function reorderColumn(movingColumn, receivingColumn, columnOrder) {
627
623
  if (movingColumn.getCanPin()) {
628
624
  movingColumn.pin(receivingColumn.getIsPinned());
629
625
  }
630
626
 
631
627
  columnOrder.splice(columnOrder.indexOf(receivingColumn.id), 0, columnOrder.splice(columnOrder.indexOf(movingColumn.id), 1)[0]);
632
- setColumnOrder([].concat(columnOrder));
628
+ return [].concat(columnOrder);
633
629
  };
634
630
  var getLeadingDisplayColumnIds = function getLeadingDisplayColumnIds(props) {
635
631
  return [(props.positionActionsColumn === 'first' && props.enableRowActions || props.enableEditing && props.editingMode === 'row') && 'mrt-row-actions', (props.enableExpanding || props.enableGrouping) && 'mrt-expand', props.enableRowSelection && 'mrt-select', props.enableRowNumbers && 'mrt-row-numbers'].filter(Boolean);
@@ -653,12 +649,13 @@ var MRT_ShowHideColumnsMenuItems = function MRT_ShowHideColumnsMenuItems(_ref) {
653
649
  var getState = instance.getState,
654
650
  _instance$options = instance.options,
655
651
  enableColumnOrdering = _instance$options.enableColumnOrdering,
656
- onColumnVisibilityChanged = _instance$options.onColumnVisibilityChanged,
652
+ enableHiding = _instance$options.enableHiding,
653
+ enablePinning = _instance$options.enablePinning,
654
+ localization = _instance$options.localization,
657
655
  setColumnOrder = instance.setColumnOrder;
658
656
 
659
657
  var _getState = getState(),
660
- columnOrder = _getState.columnOrder,
661
- columnVisibility = _getState.columnVisibility;
658
+ columnOrder = _getState.columnOrder;
662
659
 
663
660
  var columnDef = column.columnDef,
664
661
  columnDefType = column.columnDefType;
@@ -666,7 +663,8 @@ var MRT_ShowHideColumnsMenuItems = function MRT_ShowHideColumnsMenuItems(_ref) {
666
663
  var _useDrop = useDrop({
667
664
  accept: 'column',
668
665
  drop: function drop(movingColumn) {
669
- return reorderColumn(movingColumn, column, columnOrder, setColumnOrder);
666
+ var newColumnOrder = reorderColumn(movingColumn, column, columnOrder);
667
+ setColumnOrder(newColumnOrder);
670
668
  }
671
669
  }),
672
670
  dropRef = _useDrop[1];
@@ -699,12 +697,6 @@ var MRT_ShowHideColumnsMenuItems = function MRT_ShowHideColumnsMenuItems(_ref) {
699
697
  } else {
700
698
  column.toggleVisibility();
701
699
  }
702
-
703
- onColumnVisibilityChanged == null ? void 0 : onColumnVisibilityChanged({
704
- column: column,
705
- columnVisibility: columnVisibility,
706
- instance: instance
707
- });
708
700
  };
709
701
 
710
702
  return React.createElement(React.Fragment, null, React.createElement(MenuItem, {
@@ -723,15 +715,23 @@ var MRT_ShowHideColumnsMenuItems = function MRT_ShowHideColumnsMenuItems(_ref) {
723
715
  flexWrap: 'nowrap',
724
716
  gap: '8px'
725
717
  }
726
- }, columnDefType !== 'group' && enableColumnOrdering && columnDef.enableColumnOrdering !== false && !allColumns.some(function (col) {
718
+ }, columnDefType !== 'group' && enableColumnOrdering && !allColumns.some(function (col) {
727
719
  return col.columnDefType === 'group';
728
- }) && React.createElement(MRT_GrabHandleButton, {
720
+ }) && (columnDef.enableColumnOrdering !== false ? React.createElement(MRT_GrabHandleButton, {
729
721
  ref: dragRef,
730
722
  instance: instance
731
- }), !isSubMenu && column.getCanPin() && React.createElement(MRT_ColumnPinningButtons, {
723
+ }) : React.createElement(Box, {
724
+ sx: {
725
+ width: '28px'
726
+ }
727
+ })), enablePinning && !isSubMenu && (column.getCanPin() ? React.createElement(MRT_ColumnPinningButtons, {
732
728
  column: column,
733
729
  instance: instance
734
- }), React.createElement(FormControlLabel, {
730
+ }) : React.createElement(Box, {
731
+ sx: {
732
+ width: '70px'
733
+ }
734
+ })), enableHiding ? React.createElement(FormControlLabel, {
735
735
  componentsProps: {
736
736
  typography: {
737
737
  sx: {
@@ -741,13 +741,22 @@ var MRT_ShowHideColumnsMenuItems = function MRT_ShowHideColumnsMenuItems(_ref) {
741
741
  }
742
742
  },
743
743
  checked: switchChecked,
744
- control: React.createElement(Switch, null),
744
+ control: React.createElement(Tooltip, {
745
+ arrow: true,
746
+ enterDelay: 1000,
747
+ enterNextDelay: 1000,
748
+ title: localization.toggleVisibility
749
+ }, React.createElement(Switch, null)),
745
750
  disabled: isSubMenu && switchChecked || !column.getCanHide() || column.getIsGrouped(),
746
751
  label: columnDef.header,
747
752
  onChange: function onChange() {
748
753
  return handleToggleColumnHidden(column);
749
754
  }
750
- }))), (_column$columns2 = column.columns) == null ? void 0 : _column$columns2.map(function (c, i) {
755
+ }) : React.createElement(Typography, {
756
+ sx: {
757
+ alignSelf: 'center'
758
+ }
759
+ }, columnDef.header))), (_column$columns2 = column.columns) == null ? void 0 : _column$columns2.map(function (c, i) {
751
760
  return React.createElement(MRT_ShowHideColumnsMenuItems, {
752
761
  allColumns: allColumns,
753
762
  key: i + "-" + c.id,
@@ -1648,11 +1657,13 @@ var MRT_ToolbarInternalButtons = function MRT_ToolbarInternalButtons(_ref) {
1648
1657
  var instance = _ref.instance;
1649
1658
  var _instance$options = instance.options,
1650
1659
  enableColumnFilters = _instance$options.enableColumnFilters,
1660
+ enableColumnOrdering = _instance$options.enableColumnOrdering,
1651
1661
  enableDensityToggle = _instance$options.enableDensityToggle,
1652
1662
  enableFilters = _instance$options.enableFilters,
1653
1663
  enableFullScreenToggle = _instance$options.enableFullScreenToggle,
1654
1664
  enableGlobalFilter = _instance$options.enableGlobalFilter,
1655
1665
  enableHiding = _instance$options.enableHiding,
1666
+ enablePinning = _instance$options.enablePinning,
1656
1667
  positionGlobalFilter = _instance$options.positionGlobalFilter,
1657
1668
  renderToolbarInternalActions = _instance$options.renderToolbarInternalActions;
1658
1669
  return React.createElement(Box, {
@@ -1674,7 +1685,7 @@ var MRT_ToolbarInternalButtons = function MRT_ToolbarInternalButtons(_ref) {
1674
1685
  instance: instance
1675
1686
  }), enableFilters && enableColumnFilters && React.createElement(MRT_ToggleFiltersButton, {
1676
1687
  instance: instance
1677
- }), enableHiding && React.createElement(MRT_ShowHideColumnsButton, {
1688
+ }), (enableHiding || enableColumnOrdering || enablePinning) && React.createElement(MRT_ShowHideColumnsButton, {
1678
1689
  instance: instance
1679
1690
  }), enableDensityToggle && React.createElement(MRT_ToggleDensePaddingButton, {
1680
1691
  instance: instance
@@ -1977,7 +1988,7 @@ var MRT_ToolbarBottom = function MRT_ToolbarBottom(_ref) {
1977
1988
  };
1978
1989
 
1979
1990
  var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
1980
- var _localization$filterB, _columnDef$enabledCol, _allowedColumnFilterO, _localization$filterM, _localization$, _localization$clearFi, _columnDef$filterSele;
1991
+ var _localization$filterB, _columnDef$enabledCol, _allowedColumnFilterO, _localization$filterM, _localization, _localization$clearFi, _columnDef$filterSele;
1981
1992
 
1982
1993
  var header = _ref.header,
1983
1994
  inputIndex = _ref.inputIndex,
@@ -2125,7 +2136,7 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
2125
2136
  helperText: allowColumnChangeMode && !inputIndex && (allowedColumnFilterOptions === undefined || ((_allowedColumnFilterO = allowedColumnFilterOptions == null ? void 0 : allowedColumnFilterOptions.length) != null ? _allowedColumnFilterO : 0) > 0) ? React.createElement("label", {
2126
2137
  htmlFor: filterId
2127
2138
  }, filterFn instanceof Function ? (_localization$filterM = localization.filterMode.replace('{filterType}', // @ts-ignore
2128
- (_localization$ = localization["filter" + (filterFn.name.charAt(0).toUpperCase() + filterFn.name.slice(1))]) != null ? _localization$ : '')) != null ? _localization$filterM : '' : localization.filterMode.replace('{filterType}', // @ts-ignore
2139
+ (_localization = localization["filter" + (filterFn.name.charAt(0).toUpperCase() + filterFn.name.slice(1))]) != null ? _localization : '')) != null ? _localization$filterM : '' : localization.filterMode.replace('{filterType}', // @ts-ignore
2129
2140
  localization["filter" + (filterFn.charAt(0).toUpperCase() + filterFn.slice(1))])) : null,
2130
2141
  FormHelperTextProps: {
2131
2142
  sx: {
@@ -2220,23 +2231,17 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
2220
2231
  var MRT_FilterRangeFields = function MRT_FilterRangeFields(_ref) {
2221
2232
  var header = _ref.header,
2222
2233
  instance = _ref.instance;
2223
- var localization = instance.options.localization;
2224
2234
  return React.createElement(Box, {
2225
2235
  sx: {
2226
2236
  display: 'grid',
2227
- gridTemplateColumns: '6fr auto 5fr'
2237
+ gridTemplateColumns: '6fr 6fr',
2238
+ gap: '1rem'
2228
2239
  }
2229
2240
  }, React.createElement(MRT_FilterTextField, {
2230
2241
  header: header,
2231
2242
  inputIndex: 0,
2232
2243
  instance: instance
2233
- }), React.createElement(Box, {
2234
- sx: {
2235
- width: '100%',
2236
- minWidth: '5ch',
2237
- textAlign: 'center'
2238
- }
2239
- }, localization.to), React.createElement(MRT_FilterTextField, {
2244
+ }), React.createElement(MRT_FilterTextField, {
2240
2245
  header: header,
2241
2246
  inputIndex: 1,
2242
2247
  instance: instance
@@ -2337,7 +2342,6 @@ var MRT_TableHeadCellResizeHandle = function MRT_TableHeadCellResizeHandle(_ref)
2337
2342
  touchAction: 'none',
2338
2343
  transition: column.getIsResizing() ? undefined : 'all 0.2s ease-in-out',
2339
2344
  userSelect: 'none',
2340
- zIndex: 2000,
2341
2345
  '&:active': {
2342
2346
  backgroundColor: theme.palette.info.main,
2343
2347
  opacity: 1
@@ -2565,11 +2569,8 @@ var MRT_TableHeadCell = function MRT_TableHeadCell(_ref) {
2565
2569
  var MRT_DraggableTableHeadCell = function MRT_DraggableTableHeadCell(_ref) {
2566
2570
  var header = _ref.header,
2567
2571
  instance = _ref.instance;
2568
- var getState = instance.getState;
2569
-
2570
- _objectDestructuringEmpty(instance.options);
2571
-
2572
- var setColumnOrder = instance.setColumnOrder;
2572
+ var getState = instance.getState,
2573
+ setColumnOrder = instance.setColumnOrder;
2573
2574
 
2574
2575
  var _getState = getState(),
2575
2576
  columnOrder = _getState.columnOrder;
@@ -2579,7 +2580,8 @@ var MRT_DraggableTableHeadCell = function MRT_DraggableTableHeadCell(_ref) {
2579
2580
  var _useDrop = useDrop({
2580
2581
  accept: 'column',
2581
2582
  drop: function drop(movingColumn) {
2582
- return reorderColumn(movingColumn, column, columnOrder, setColumnOrder);
2583
+ var newColumnOrder = reorderColumn(movingColumn, column, columnOrder);
2584
+ setColumnOrder(newColumnOrder);
2583
2585
  }
2584
2586
  }),
2585
2587
  dropRef = _useDrop[1];
@@ -2846,7 +2848,8 @@ var MRT_TableBodyCell = function MRT_TableBodyCell(_ref) {
2846
2848
  var _useDrop = useDrop({
2847
2849
  accept: 'column',
2848
2850
  drop: function drop(movingColumn) {
2849
- return reorderColumn(movingColumn, column, columnOrder, setColumnOrder);
2851
+ var newColumnOrder = reorderColumn(movingColumn, column, columnOrder);
2852
+ setColumnOrder(newColumnOrder);
2850
2853
  }
2851
2854
  }),
2852
2855
  dropRef = _useDrop[1];
@@ -3070,7 +3073,7 @@ var rankGlobalFuzzy = function rankGlobalFuzzy(rowA, rowB) {
3070
3073
  var MRT_TableBody = function MRT_TableBody(_ref) {
3071
3074
  var instance = _ref.instance,
3072
3075
  tableContainerRef = _ref.tableContainerRef;
3073
- var getPaginationRowModel = instance.getPaginationRowModel,
3076
+ var getRowModel = instance.getRowModel,
3074
3077
  getPrePaginationRowModel = instance.getPrePaginationRowModel,
3075
3078
  getState = instance.getState,
3076
3079
  _instance$options = instance.options,
@@ -3107,8 +3110,8 @@ var MRT_TableBody = function MRT_TableBody(_ref) {
3107
3110
  return rankedRows;
3108
3111
  }
3109
3112
 
3110
- return enablePagination ? getPaginationRowModel().rows : getPrePaginationRowModel().rows;
3111
- }, [enableGlobalFilterRankedResults, enableGlobalFilterRankedResults && globalFilter || !enablePagination ? getPrePaginationRowModel().rows : getPaginationRowModel().rows, globalFilter]);
3113
+ return enablePagination ? getRowModel().rows : getPrePaginationRowModel().rows;
3114
+ }, [enableGlobalFilterRankedResults, enableGlobalFilterRankedResults && globalFilter || !enablePagination ? getPrePaginationRowModel().rows : getRowModel().rows, globalFilter]);
3112
3115
  var rowVirtualizer = enableRowVirtualization ? useVirtual(_extends({
3113
3116
  overscan: density === 'compact' ? 20 : 10,
3114
3117
  size: rows.length,
@@ -3334,7 +3337,8 @@ var MRT_TablePaper = function MRT_TablePaper(_ref) {
3334
3337
  }, tablePaperProps, {
3335
3338
  sx: _extends({
3336
3339
  transition: 'all 0.2s ease-in-out'
3337
- }, tablePaperProps == null ? void 0 : tablePaperProps.sx, {
3340
+ }, tablePaperProps == null ? void 0 : tablePaperProps.sx),
3341
+ style: _extends({}, tablePaperProps == null ? void 0 : tablePaperProps.style, {
3338
3342
  height: isFullScreen ? '100vh' : undefined,
3339
3343
  margin: isFullScreen ? '0' : undefined,
3340
3344
  maxHeight: isFullScreen ? '100vh' : undefined,
@@ -3484,7 +3488,7 @@ var MRT_TableRoot = function MRT_TableRoot(props) {
3484
3488
  id: 'mrt-expand',
3485
3489
  muiTableBodyCellProps: props.muiTableBodyCellProps,
3486
3490
  muiTableHeadCellProps: props.muiTableHeadCellProps,
3487
- size: 50
3491
+ size: 60
3488
3492
  }), columnOrder.includes('mrt-select') && createDisplayColumn(table, {
3489
3493
  Cell: function Cell(_ref5) {
3490
3494
  var cell = _ref5.cell;
@@ -3503,7 +3507,7 @@ var MRT_TableRoot = function MRT_TableRoot(props) {
3503
3507
  id: 'mrt-select',
3504
3508
  muiTableBodyCellProps: props.muiTableBodyCellProps,
3505
3509
  muiTableHeadCellProps: props.muiTableHeadCellProps,
3506
- size: 50
3510
+ size: 60
3507
3511
  }), columnOrder.includes('mrt-row-numbers') && createDisplayColumn(table, {
3508
3512
  Cell: function Cell(_ref6) {
3509
3513
  var cell = _ref6.cell;
@@ -3518,7 +3522,7 @@ var MRT_TableRoot = function MRT_TableRoot(props) {
3518
3522
  id: 'mrt-row-numbers',
3519
3523
  muiTableBodyCellProps: props.muiTableBodyCellProps,
3520
3524
  muiTableHeadCellProps: props.muiTableHeadCellProps,
3521
- size: 50
3525
+ size: 60
3522
3526
  })].filter(Boolean);
3523
3527
  }, [columnOrder, props.editingMode, props.enableEditing, props.enableExpandAll, props.enableExpanding, props.enableGrouping, props.enableRowActions, props.enableRowNumbers, props.enableRowSelection, props.enableSelectAll, props.localization, props.muiTableBodyCellProps, props.muiTableHeadCellProps, props.positionActionsColumn, table]);
3524
3528
  var columns = useMemo(function () {
@@ -3595,6 +3599,27 @@ var MRT_TableRoot = function MRT_TableRoot(props) {
3595
3599
  (_sessionStorage = sessionStorage).setItem.apply(_sessionStorage, itemArgs);
3596
3600
  }
3597
3601
  }, [props.enablePersistentState, props.tableId, props.persistentStateMode, instance]);
3602
+ useEffect(function () {
3603
+ props == null ? void 0 : props.onColumnOrderChanged == null ? void 0 : props.onColumnOrderChanged({
3604
+ columnOrder: instance.getState().columnOrder,
3605
+ //@ts-ignore
3606
+ instance: instance
3607
+ });
3608
+ }, [instance.getState().columnOrder]);
3609
+ useEffect(function () {
3610
+ props == null ? void 0 : props.onColumnPinningChanged == null ? void 0 : props.onColumnPinningChanged({
3611
+ columnPinning: instance.getState().columnPinning,
3612
+ //@ts-ignore
3613
+ instance: instance
3614
+ });
3615
+ }, [instance.getState().columnPinning]);
3616
+ useEffect(function () {
3617
+ props == null ? void 0 : props.onColumnVisibilityChanged == null ? void 0 : props.onColumnVisibilityChanged({
3618
+ columnPinning: instance.getState().columnVisibility,
3619
+ //@ts-ignore
3620
+ instance: instance
3621
+ });
3622
+ }, [instance.getState().columnVisibility]);
3598
3623
  return React.createElement(React.Fragment, null, React.createElement(Dialog, {
3599
3624
  PaperComponent: Box,
3600
3625
  TransitionComponent: Grow,