material-react-table 0.8.0 → 0.8.3

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 (36) hide show
  1. package/README.md +1 -1
  2. package/dist/MaterialReactTable.d.ts +3 -1
  3. package/dist/head/MRT_DraggableTableHeadCell.d.ts +8 -0
  4. package/dist/head/MRT_TableHeadCell.d.ts +5 -1
  5. package/dist/head/MRT_TableHeadCellFilterContainer.d.ts +8 -0
  6. package/dist/head/MRT_TableHeadCellFilterLabel.d.ts +8 -0
  7. package/dist/head/MRT_TableHeadCellGrabHandle.d.ts +9 -0
  8. package/dist/head/MRT_TableHeadCellResizeHandle.d.ts +8 -0
  9. package/dist/head/MRT_TableHeadCellSortLabel.d.ts +8 -0
  10. package/dist/icons.d.ts +1 -0
  11. package/dist/inputs/MRT_FilterRangeFields.d.ts +2 -2
  12. package/dist/localization.d.ts +1 -0
  13. package/dist/material-react-table.cjs.development.js +306 -111
  14. package/dist/material-react-table.cjs.development.js.map +1 -1
  15. package/dist/material-react-table.cjs.production.min.js +1 -1
  16. package/dist/material-react-table.cjs.production.min.js.map +1 -1
  17. package/dist/material-react-table.esm.js +308 -113
  18. package/dist/material-react-table.esm.js.map +1 -1
  19. package/dist/table/MRT_TableContainer.d.ts +1 -1
  20. package/dist/utils.d.ts +1 -1
  21. package/package.json +10 -8
  22. package/src/MaterialReactTable.tsx +6 -0
  23. package/src/head/MRT_DraggableTableHeadCell.tsx +52 -0
  24. package/src/head/MRT_TableHeadCell.tsx +61 -153
  25. package/src/head/MRT_TableHeadCellFilterContainer.tsx +32 -0
  26. package/src/head/MRT_TableHeadCellFilterLabel.tsx +82 -0
  27. package/src/head/MRT_TableHeadCellGrabHandle.tsx +52 -0
  28. package/src/head/MRT_TableHeadCellResizeHandle.tsx +52 -0
  29. package/src/head/MRT_TableHeadCellSortLabel.tsx +45 -0
  30. package/src/head/MRT_TableHeadRow.tsx +17 -8
  31. package/src/icons.ts +3 -0
  32. package/src/inputs/MRT_FilterRangeFields.tsx +1 -3
  33. package/src/localization.ts +2 -0
  34. package/src/table/MRT_TableContainer.tsx +1 -1
  35. package/src/table/MRT_TablePaper.tsx +26 -22
  36. package/src/table/MRT_TableRoot.tsx +8 -0
@@ -14,6 +14,7 @@ var CloseIcon = _interopDefault(require('@mui/icons-material/Close'));
14
14
  var DensityMediumIcon = _interopDefault(require('@mui/icons-material/DensityMedium'));
15
15
  var DensitySmallIcon = _interopDefault(require('@mui/icons-material/DensitySmall'));
16
16
  var DoubleArrowDownIcon = _interopDefault(require('@mui/icons-material/KeyboardDoubleArrowDown'));
17
+ var DragHandleIcon = _interopDefault(require('@mui/icons-material/DragHandle'));
17
18
  var DynamicFeedIcon = _interopDefault(require('@mui/icons-material/DynamicFeed'));
18
19
  var EditIcon = _interopDefault(require('@mui/icons-material/Edit'));
19
20
  var ExpandLessIcon = _interopDefault(require('@mui/icons-material/ExpandLess'));
@@ -37,6 +38,8 @@ var VisibilityOffIcon = _interopDefault(require('@mui/icons-material/VisibilityO
37
38
  var reactTable = require('@tanstack/react-table');
38
39
  var material = require('@mui/material');
39
40
  var matchSorterUtils = require('@tanstack/match-sorter-utils');
41
+ var reactDnd = require('react-dnd');
42
+ var reactDndHtml5Backend = require('react-dnd-html5-backend');
40
43
 
41
44
  function _extends() {
42
45
  _extends = Object.assign ? Object.assign.bind() : function (target) {
@@ -55,6 +58,10 @@ function _extends() {
55
58
  return _extends.apply(this, arguments);
56
59
  }
57
60
 
61
+ function _objectDestructuringEmpty(obj) {
62
+ if (obj == null) throw new TypeError("Cannot destructure undefined");
63
+ }
64
+
58
65
  function _objectWithoutPropertiesLoose(source, excluded) {
59
66
  if (source == null) return {};
60
67
  var target = {};
@@ -99,6 +106,7 @@ var MRT_DefaultLocalization_EN = {
99
106
  filterNotEquals: 'Not Equals',
100
107
  filterStartsWith: 'Starts With',
101
108
  filteringByColumn: 'Filtering by {column} - {filterType} {filterValue}',
109
+ grab: 'Grab',
102
110
  groupByColumn: 'Group by {column}',
103
111
  groupedBy: 'Grouped by ',
104
112
  hideAll: 'Hide all',
@@ -145,6 +153,7 @@ var MRT_Default_Icons = {
145
153
  DensityMediumIcon: DensityMediumIcon,
146
154
  DensitySmallIcon: DensitySmallIcon,
147
155
  DoubleArrowDownIcon: DoubleArrowDownIcon,
156
+ DragHandleIcon: DragHandleIcon,
148
157
  DynamicFeedIcon: DynamicFeedIcon,
149
158
  EditIcon: EditIcon,
150
159
  ExpandLessIcon: ExpandLessIcon,
@@ -1996,6 +2005,190 @@ var MRT_FilterTextField = function MRT_FilterTextField(_ref) {
1996
2005
  }));
1997
2006
  };
1998
2007
 
2008
+ var MRT_FilterRangeFields = function MRT_FilterRangeFields(_ref) {
2009
+ var header = _ref.header,
2010
+ tableInstance = _ref.tableInstance;
2011
+ var localization = tableInstance.options.localization;
2012
+ return React__default.createElement(material.Box, {
2013
+ sx: {
2014
+ display: 'grid',
2015
+ gridTemplateColumns: '6fr auto 5fr'
2016
+ }
2017
+ }, React__default.createElement(MRT_FilterTextField, {
2018
+ header: header,
2019
+ inputIndex: 0,
2020
+ tableInstance: tableInstance
2021
+ }), React__default.createElement(material.Box, {
2022
+ sx: {
2023
+ width: '100%',
2024
+ minWidth: '5ch',
2025
+ textAlign: 'center'
2026
+ }
2027
+ }, localization.to), React__default.createElement(MRT_FilterTextField, {
2028
+ header: header,
2029
+ inputIndex: 1,
2030
+ tableInstance: tableInstance
2031
+ }));
2032
+ };
2033
+
2034
+ var MRT_TableHeadCellFilterContainer = function MRT_TableHeadCellFilterContainer(_ref) {
2035
+ var header = _ref.header,
2036
+ tableInstance = _ref.tableInstance;
2037
+ var getState = tableInstance.getState;
2038
+
2039
+ var _getState = getState(),
2040
+ currentFilterFns = _getState.currentFilterFns,
2041
+ showFilters = _getState.showFilters;
2042
+
2043
+ var column = header.column;
2044
+ return React__default.createElement(material.Collapse, {
2045
+ "in": showFilters,
2046
+ mountOnEnter: true,
2047
+ unmountOnExit: true
2048
+ }, currentFilterFns[column.id] === MRT_FILTER_OPTION.BETWEEN ? React__default.createElement(MRT_FilterRangeFields, {
2049
+ header: header,
2050
+ tableInstance: tableInstance
2051
+ }) : React__default.createElement(MRT_FilterTextField, {
2052
+ header: header,
2053
+ tableInstance: tableInstance
2054
+ }));
2055
+ };
2056
+
2057
+ var MRT_TableHeadCellFilterLabel = function MRT_TableHeadCellFilterLabel(_ref) {
2058
+ var _getState2, _getState2$currentFil;
2059
+
2060
+ var header = _ref.header,
2061
+ tableInstance = _ref.tableInstance;
2062
+ var getState = tableInstance.getState,
2063
+ _tableInstance$option = tableInstance.options,
2064
+ _tableInstance$option2 = _tableInstance$option.icons,
2065
+ FilterAltIcon = _tableInstance$option2.FilterAltIcon,
2066
+ FilterAltOff = _tableInstance$option2.FilterAltOff,
2067
+ localization = _tableInstance$option.localization,
2068
+ setShowFilters = tableInstance.setShowFilters;
2069
+
2070
+ var _getState = getState(),
2071
+ showFilters = _getState.showFilters;
2072
+
2073
+ var column = header.column;
2074
+ var filterFn = (_getState2 = getState()) == null ? void 0 : (_getState2$currentFil = _getState2.currentFilterFns) == null ? void 0 : _getState2$currentFil[header.id];
2075
+ var filterTooltip = !!column.getFilterValue() ? localization.filteringByColumn.replace('{column}', String(column.columnDef.header)).replace('{filterType}', filterFn instanceof Function ? '' : // @ts-ignore
2076
+ localization["filter" + (filterFn.charAt(0).toUpperCase() + filterFn.slice(1))]).replace('{filterValue}', "\"" + (Array.isArray(column.getFilterValue()) ? column.getFilterValue().join("\" " + localization.and + " \"") : column.getFilterValue()) + "\"").replace('" "', '') : localization.showHideFilters;
2077
+ return React__default.createElement(material.Tooltip, {
2078
+ arrow: true,
2079
+ placement: "top",
2080
+ title: filterTooltip
2081
+ }, React__default.createElement(material.IconButton, {
2082
+ disableRipple: true,
2083
+ onClick: function onClick(event) {
2084
+ event.stopPropagation();
2085
+ setShowFilters(!showFilters);
2086
+ },
2087
+ size: "small",
2088
+ sx: {
2089
+ m: 0,
2090
+ opacity: !!column.getFilterValue() || showFilters ? 0.8 : 0,
2091
+ p: '2px',
2092
+ transition: 'all 0.2s ease-in-out',
2093
+ '&:hover': {
2094
+ backgroundColor: 'transparent',
2095
+ opacity: 0.8
2096
+ }
2097
+ }
2098
+ }, showFilters && !column.getFilterValue() ? React__default.createElement(FilterAltOff, null) : React__default.createElement(FilterAltIcon, null)));
2099
+ };
2100
+
2101
+ var MRT_TableHeadCellGrabHandle = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
2102
+ var tableInstance = _ref.tableInstance;
2103
+ var _tableInstance$option = tableInstance.options,
2104
+ DragHandleIcon = _tableInstance$option.icons.DragHandleIcon,
2105
+ localization = _tableInstance$option.localization;
2106
+ return React__default.createElement(material.Tooltip, {
2107
+ arrow: true,
2108
+ enterDelay: 1000,
2109
+ enterNextDelay: 1000,
2110
+ placement: "top",
2111
+ title: localization.grab
2112
+ }, React__default.createElement(material.IconButton, {
2113
+ disableRipple: true,
2114
+ ref: ref,
2115
+ size: "small",
2116
+ sx: {
2117
+ cursor: 'grab',
2118
+ m: 0,
2119
+ opacity: 0.5,
2120
+ p: '2px',
2121
+ transition: 'all 0.2s ease-in-out',
2122
+ '&:hover': {
2123
+ backgroundColor: 'transparent',
2124
+ opacity: 1
2125
+ },
2126
+ '&:active': {
2127
+ cursor: 'grabbing'
2128
+ }
2129
+ }
2130
+ }, React__default.createElement(DragHandleIcon, null)));
2131
+ });
2132
+
2133
+ var MRT_TableHeadCellResizeHandle = function MRT_TableHeadCellResizeHandle(_ref) {
2134
+ var header = _ref.header,
2135
+ tableInstance = _ref.tableInstance;
2136
+ var getState = tableInstance.getState;
2137
+
2138
+ var _getState = getState(),
2139
+ showFilters = _getState.showFilters;
2140
+
2141
+ var column = header.column;
2142
+ return React__default.createElement(material.Divider, {
2143
+ flexItem: true,
2144
+ orientation: "vertical",
2145
+ onDoubleClick: function onDoubleClick() {
2146
+ return column.resetSize();
2147
+ },
2148
+ sx: function sx(theme) {
2149
+ return {
2150
+ borderRadius: '2px',
2151
+ borderRightWidth: '2px',
2152
+ cursor: 'col-resize',
2153
+ height: showFilters && column.columnDefType === 'data' ? '4rem' : '2rem',
2154
+ opacity: 0.8,
2155
+ position: 'absolute',
2156
+ right: '1px',
2157
+ touchAction: 'none',
2158
+ transition: column.getIsResizing() ? undefined : 'all 0.2s ease-in-out',
2159
+ userSelect: 'none',
2160
+ zIndex: 2000,
2161
+ '&:active': {
2162
+ backgroundColor: theme.palette.info.main,
2163
+ opacity: 1
2164
+ }
2165
+ };
2166
+ },
2167
+ onMouseDown: header.getResizeHandler(),
2168
+ onTouchStart: header.getResizeHandler(),
2169
+ style: {
2170
+ transform: column.getIsResizing() ? "translateX(" + getState().columnSizingInfo.deltaOffset + "px)" : 'none'
2171
+ }
2172
+ });
2173
+ };
2174
+
2175
+ var MRT_TableHeadCellSortLabel = function MRT_TableHeadCellSortLabel(_ref) {
2176
+ var header = _ref.header,
2177
+ tableInstance = _ref.tableInstance;
2178
+ var localization = tableInstance.options.localization;
2179
+ var column = header.column;
2180
+ var sortTooltip = !!column.getIsSorted() ? column.getIsSorted() === 'desc' ? localization.sortedByColumnDesc.replace('{column}', column.columnDef.header) : localization.sortedByColumnAsc.replace('{column}', column.columnDef.header) : localization.unsorted;
2181
+ return React__default.createElement(material.Tooltip, {
2182
+ arrow: true,
2183
+ placement: "top",
2184
+ title: sortTooltip
2185
+ }, React__default.createElement(material.TableSortLabel, {
2186
+ "aria-label": sortTooltip,
2187
+ active: !!column.getIsSorted(),
2188
+ direction: column.getIsSorted() ? column.getIsSorted() : undefined
2189
+ }));
2190
+ };
2191
+
1999
2192
  var MRT_ToggleColumnActionMenuButton = function MRT_ToggleColumnActionMenuButton(_ref) {
2000
2193
  var header = _ref.header,
2001
2194
  tableInstance = _ref.tableInstance;
@@ -2056,53 +2249,26 @@ var MRT_ToggleColumnActionMenuButton = function MRT_ToggleColumnActionMenuButton
2056
2249
  }));
2057
2250
  };
2058
2251
 
2059
- var MRT_FilterRangeFields = function MRT_FilterRangeFields(_ref) {
2060
- var header = _ref.header,
2061
- tableInstance = _ref.tableInstance;
2062
- var localization = tableInstance.options.localization;
2063
- return React__default.createElement(material.Box, {
2064
- sx: {
2065
- display: 'grid',
2066
- gridTemplateColumns: '6fr auto 5fr'
2067
- }
2068
- }, React__default.createElement(MRT_FilterTextField, {
2069
- header: header,
2070
- inputIndex: 0,
2071
- tableInstance: tableInstance
2072
- }), React__default.createElement(material.Box, {
2073
- sx: {
2074
- width: '100%',
2075
- minWidth: '5ch',
2076
- textAlign: 'center'
2077
- }
2078
- }, localization.to), React__default.createElement(MRT_FilterTextField, {
2079
- header: header,
2080
- inputIndex: 1,
2081
- tableInstance: tableInstance
2082
- }));
2083
- };
2084
-
2085
2252
  var MRT_TableHeadCell = function MRT_TableHeadCell(_ref) {
2086
- var _getState2, _getState2$currentFil, _column$columnDef$Hea, _column$columnDef, _column$minSize, _column$columnDef$hea, _column$columnDef$hea2;
2253
+ var _column$columnDef$Hea, _column$columnDef, _column$minSize, _column$columnDef$hea, _column$columnDef$hea2;
2087
2254
 
2088
- var header = _ref.header,
2255
+ var dragRef = _ref.dragRef,
2256
+ dropRef = _ref.dropRef,
2257
+ header = _ref.header,
2258
+ isDragging = _ref.isDragging,
2259
+ previewRef = _ref.previewRef,
2089
2260
  tableInstance = _ref.tableInstance;
2090
2261
  var getState = tableInstance.getState,
2091
2262
  _tableInstance$option = tableInstance.options,
2092
2263
  enableColumnActions = _tableInstance$option.enableColumnActions,
2093
2264
  enableColumnFilters = _tableInstance$option.enableColumnFilters,
2265
+ enableColumnOrdering = _tableInstance$option.enableColumnOrdering,
2094
2266
  enableColumnResizing = _tableInstance$option.enableColumnResizing,
2095
- _tableInstance$option2 = _tableInstance$option.icons,
2096
- FilterAltIcon = _tableInstance$option2.FilterAltIcon,
2097
- FilterAltOff = _tableInstance$option2.FilterAltOff,
2098
- localization = _tableInstance$option.localization,
2099
- muiTableHeadCellProps = _tableInstance$option.muiTableHeadCellProps,
2100
- setShowFilters = tableInstance.setShowFilters;
2267
+ enableGrouping = _tableInstance$option.enableGrouping,
2268
+ muiTableHeadCellProps = _tableInstance$option.muiTableHeadCellProps;
2101
2269
 
2102
2270
  var _getState = getState(),
2103
- currentFilterFns = _getState.currentFilterFns,
2104
- isDensePadding = _getState.isDensePadding,
2105
- showFilters = _getState.showFilters;
2271
+ isDensePadding = _getState.isDensePadding;
2106
2272
 
2107
2273
  var column = header.column;
2108
2274
  var mTableHeadCellProps = muiTableHeadCellProps instanceof Function ? muiTableHeadCellProps({
@@ -2116,10 +2282,6 @@ var MRT_TableHeadCell = function MRT_TableHeadCell(_ref) {
2116
2282
 
2117
2283
  var tableCellProps = _extends({}, mTableHeadCellProps, mcTableHeadCellProps);
2118
2284
 
2119
- var sortTooltip = !!column.getIsSorted() ? column.getIsSorted() === 'desc' ? localization.sortedByColumnDesc.replace('{column}', column.columnDef.header) : localization.sortedByColumnAsc.replace('{column}', column.columnDef.header) : localization.unsorted;
2120
- var filterFn = (_getState2 = getState()) == null ? void 0 : (_getState2$currentFil = _getState2.currentFilterFns) == null ? void 0 : _getState2$currentFil[header.id];
2121
- var filterTooltip = !!column.getFilterValue() ? localization.filteringByColumn.replace('{column}', String(column.columnDef.header)).replace('{filterType}', filterFn instanceof Function ? '' : // @ts-ignore
2122
- localization["filter" + (filterFn.charAt(0).toUpperCase() + filterFn.slice(1))]).replace('{filterValue}', "\"" + (Array.isArray(column.getFilterValue()) ? column.getFilterValue().join("\" " + localization.and + " \"") : column.getFilterValue()) + "\"").replace('" "', '') : localization.showHideFilters;
2123
2285
  var headerElement = (_column$columnDef$Hea = (_column$columnDef = column.columnDef) == null ? void 0 : _column$columnDef.Header == null ? void 0 : _column$columnDef.Header({
2124
2286
  header: header,
2125
2287
  tableInstance: tableInstance
@@ -2141,6 +2303,7 @@ var MRT_TableHeadCell = function MRT_TableHeadCell(_ref) {
2141
2303
  align: column.columnDefType === 'group' ? 'center' : 'left',
2142
2304
  colSpan: header.colSpan
2143
2305
  }, tableCellProps, {
2306
+ ref: column.columnDefType === 'data' ? dropRef : undefined,
2144
2307
  sx: function sx(theme) {
2145
2308
  return _extends({
2146
2309
  backgroundColor: column.getIsPinned() && column.columnDefType !== 'group' ? material.alpha(material.lighten(theme.palette.background["default"], 0.04), 0.95) : 'inherit',
@@ -2166,10 +2329,12 @@ var MRT_TableHeadCell = function MRT_TableHeadCell(_ref) {
2166
2329
  width: header.getSize()
2167
2330
  }
2168
2331
  }), header.isPlaceholder ? null : column.columnDefType === 'display' ? headerElement : React__default.createElement(material.Box, {
2332
+ ref: previewRef,
2169
2333
  sx: {
2170
2334
  alignItems: 'flex-start',
2171
2335
  display: 'flex',
2172
2336
  justifyContent: column.columnDefType === 'group' ? 'center' : 'space-between',
2337
+ opacity: isDragging ? 0.5 : 1,
2173
2338
  width: '100%'
2174
2339
  }
2175
2340
  }, React__default.createElement(material.Box, {
@@ -2183,85 +2348,90 @@ var MRT_TableHeadCell = function MRT_TableHeadCell(_ref) {
2183
2348
  flexWrap: 'nowrap',
2184
2349
  whiteSpace: ((_column$columnDef$hea = (_column$columnDef$hea2 = column.columnDef.header) == null ? void 0 : _column$columnDef$hea2.length) != null ? _column$columnDef$hea : 0) < 24 ? 'nowrap' : 'normal'
2185
2350
  }
2186
- }, headerElement, column.columnDefType === 'data' && column.getCanSort() && React__default.createElement(material.Tooltip, {
2187
- arrow: true,
2188
- placement: "top",
2189
- title: sortTooltip
2190
- }, React__default.createElement(material.TableSortLabel, {
2191
- "aria-label": sortTooltip,
2192
- active: !!column.getIsSorted(),
2193
- direction: column.getIsSorted() ? column.getIsSorted() : undefined
2194
- })), column.columnDefType === 'data' && enableColumnFilters && !!column.getCanFilter() && React__default.createElement(material.Tooltip, {
2195
- arrow: true,
2196
- placement: "top",
2197
- title: filterTooltip
2198
- }, React__default.createElement(material.IconButton, {
2199
- disableRipple: true,
2200
- onClick: function onClick(event) {
2201
- event.stopPropagation();
2202
- setShowFilters(!showFilters);
2203
- },
2204
- size: "small",
2351
+ }, headerElement, column.columnDefType === 'data' && column.getCanSort() && React__default.createElement(MRT_TableHeadCellSortLabel, {
2352
+ header: header,
2353
+ tableInstance: tableInstance
2354
+ }), column.columnDefType === 'data' && enableColumnFilters && column.getCanFilter() && React__default.createElement(MRT_TableHeadCellFilterLabel, {
2355
+ header: header,
2356
+ tableInstance: tableInstance
2357
+ })), React__default.createElement(material.Box, {
2205
2358
  sx: {
2206
- m: 0,
2207
- opacity: !!column.getFilterValue() ? 0.8 : 0,
2208
- p: '2px',
2209
- transition: 'all 0.2s ease-in-out',
2210
- '&:hover': {
2211
- backgroundColor: 'transparent',
2212
- opacity: 0.8
2213
- }
2359
+ whiteSpace: 'nowrap'
2214
2360
  }
2215
- }, showFilters && !column.getFilterValue() ? React__default.createElement(FilterAltOff, null) : React__default.createElement(FilterAltIcon, null)))), (enableColumnActions || column.enableColumnActions) && column.enableColumnActions !== false && column.columnDefType !== 'group' && React__default.createElement(MRT_ToggleColumnActionMenuButton, {
2361
+ }, column.columnDefType === 'data' && (enableColumnOrdering && column.enableColumnOrdering !== false || enableGrouping && column.enableGrouping !== false) && React__default.createElement(MRT_TableHeadCellGrabHandle, {
2216
2362
  header: header,
2363
+ ref: dragRef,
2217
2364
  tableInstance: tableInstance
2218
- }), column.getCanResize() && React__default.createElement(material.Divider, {
2219
- flexItem: true,
2220
- orientation: "vertical",
2221
- onDoubleClick: function onDoubleClick() {
2222
- return column.resetSize();
2223
- },
2224
- sx: function sx(theme) {
2365
+ }), (enableColumnActions || column.enableColumnActions) && column.enableColumnActions !== false && column.columnDefType !== 'group' && React__default.createElement(MRT_ToggleColumnActionMenuButton, {
2366
+ header: header,
2367
+ tableInstance: tableInstance
2368
+ })), column.getCanResize() && React__default.createElement(MRT_TableHeadCellResizeHandle, {
2369
+ header: header,
2370
+ tableInstance: tableInstance
2371
+ })), column.columnDefType === 'data' && column.getCanFilter() && React__default.createElement(MRT_TableHeadCellFilterContainer, {
2372
+ header: header,
2373
+ tableInstance: tableInstance
2374
+ }));
2375
+ };
2376
+
2377
+ var MRT_DraggableTableHeadCell = function MRT_DraggableTableHeadCell(_ref) {
2378
+ var header = _ref.header,
2379
+ tableInstance = _ref.tableInstance;
2380
+ var getState = tableInstance.getState;
2381
+
2382
+ _objectDestructuringEmpty(tableInstance.options);
2383
+
2384
+ var setColumnOrder = tableInstance.setColumnOrder;
2385
+
2386
+ var _getState = getState(),
2387
+ columnOrder = _getState.columnOrder;
2388
+
2389
+ var reorder = function reorder(item, newIndex) {
2390
+ var currentIndex = item.index;
2391
+ columnOrder.splice(newIndex, 0, columnOrder.splice(currentIndex, 1)[0]);
2392
+ setColumnOrder([].concat(columnOrder));
2393
+ };
2394
+
2395
+ var _useDrop = reactDnd.useDrop({
2396
+ accept: 'header',
2397
+ drop: function drop(item) {
2398
+ return reorder(item, header.index);
2399
+ }
2400
+ }),
2401
+ drop = _useDrop[1];
2402
+
2403
+ var _useDrag = reactDnd.useDrag({
2404
+ collect: function collect(monitor) {
2225
2405
  return {
2226
- borderRadius: '2px',
2227
- borderRightWidth: '2px',
2228
- cursor: 'col-resize',
2229
- height: showFilters && column.columnDefType === 'data' ? '4rem' : '2rem',
2230
- opacity: 0.8,
2231
- position: 'absolute',
2232
- right: '1px',
2233
- touchAction: 'none',
2234
- transition: column.getIsResizing() ? undefined : 'all 0.2s ease-in-out',
2235
- userSelect: 'none',
2236
- zIndex: 2000,
2237
- '&:active': {
2238
- backgroundColor: theme.palette.info.main,
2239
- opacity: 1
2240
- }
2406
+ isDragging: monitor.isDragging()
2241
2407
  };
2242
2408
  },
2243
- onMouseDown: header.getResizeHandler(),
2244
- onTouchStart: header.getResizeHandler(),
2245
- style: {
2246
- transform: column.getIsResizing() ? "translateX(" + getState().columnSizingInfo.deltaOffset + "px)" : 'none'
2247
- }
2248
- })), column.columnDefType === 'data' && column.getCanFilter() && React__default.createElement(material.Collapse, {
2249
- "in": showFilters,
2250
- mountOnEnter: true,
2251
- unmountOnExit: true
2252
- }, currentFilterFns[column.id] === MRT_FILTER_OPTION.BETWEEN ? React__default.createElement(MRT_FilterRangeFields, {
2253
- header: header,
2254
- tableInstance: tableInstance
2255
- }) : React__default.createElement(MRT_FilterTextField, {
2409
+ item: function item() {
2410
+ return header;
2411
+ },
2412
+ type: 'header'
2413
+ }),
2414
+ isDragging = _useDrag[0].isDragging,
2415
+ drag = _useDrag[1],
2416
+ preview = _useDrag[2];
2417
+
2418
+ return React__default.createElement(MRT_TableHeadCell, {
2419
+ dragRef: drag,
2420
+ dropRef: drop,
2256
2421
  header: header,
2422
+ isDragging: isDragging,
2423
+ previewRef: preview,
2257
2424
  tableInstance: tableInstance
2258
- })));
2425
+ });
2259
2426
  };
2260
2427
 
2261
2428
  var MRT_TableHeadRow = function MRT_TableHeadRow(_ref) {
2262
2429
  var headerGroup = _ref.headerGroup,
2263
2430
  tableInstance = _ref.tableInstance;
2264
- var muiTableHeadRowProps = tableInstance.options.muiTableHeadRowProps;
2431
+ var _tableInstance$option = tableInstance.options,
2432
+ enableColumnOrdering = _tableInstance$option.enableColumnOrdering,
2433
+ enableGrouping = _tableInstance$option.enableGrouping,
2434
+ muiTableHeadRowProps = _tableInstance$option.muiTableHeadRowProps;
2265
2435
  var tableRowProps = muiTableHeadRowProps instanceof Function ? muiTableHeadRowProps({
2266
2436
  headerGroup: headerGroup,
2267
2437
  tableInstance: tableInstance
@@ -2274,7 +2444,11 @@ var MRT_TableHeadRow = function MRT_TableHeadRow(_ref) {
2274
2444
  }, tableRowProps == null ? void 0 : tableRowProps.sx);
2275
2445
  }
2276
2446
  }), headerGroup.headers.map(function (header, index) {
2277
- return React__default.createElement(MRT_TableHeadCell, {
2447
+ return enableColumnOrdering || enableGrouping ? React__default.createElement(MRT_DraggableTableHeadCell, {
2448
+ header: header,
2449
+ key: header.id || index,
2450
+ tableInstance: tableInstance
2451
+ }) : React__default.createElement(MRT_TableHeadCell, {
2278
2452
  header: header,
2279
2453
  key: header.id || index,
2280
2454
  tableInstance: tableInstance
@@ -2848,7 +3022,9 @@ var MRT_TablePaper = function MRT_TablePaper(_ref) {
2848
3022
  var tablePaperProps = muiTablePaperProps instanceof Function ? muiTablePaperProps({
2849
3023
  tableInstance: tableInstance
2850
3024
  }) : muiTablePaperProps;
2851
- return React__default.createElement(material.Paper, Object.assign({
3025
+ return React__default.createElement(reactDnd.DndProvider, {
3026
+ backend: reactDndHtml5Backend.HTML5Backend
3027
+ }, React__default.createElement(material.Paper, Object.assign({
2852
3028
  elevation: 2
2853
3029
  }, tablePaperProps, {
2854
3030
  sx: _extends({
@@ -2868,7 +3044,7 @@ var MRT_TablePaper = function MRT_TablePaper(_ref) {
2868
3044
  tableInstance: tableInstance
2869
3045
  }), enableToolbarBottom && React__default.createElement(MRT_ToolbarBottom, {
2870
3046
  tableInstance: tableInstance
2871
- }));
3047
+ })));
2872
3048
  };
2873
3049
 
2874
3050
  var getAllLeafColumnDefs = function getAllLeafColumnDefs(columns) {
@@ -3083,7 +3259,18 @@ var MRT_TableRoot = function MRT_TableRoot(props) {
3083
3259
  return _ref7 = {}, _ref7[c.id] = null, _ref7;
3084
3260
  })));
3085
3261
  }) : props.data;
3086
- }, [props.data, (_props$state3 = props.state) == null ? void 0 : _props$state3.isLoading, (_props$state4 = props.state) == null ? void 0 : _props$state4.showSkeletons]); //@ts-ignore
3262
+ }, [props.data, (_props$state3 = props.state) == null ? void 0 : _props$state3.isLoading, (_props$state4 = props.state) == null ? void 0 : _props$state4.showSkeletons]);
3263
+
3264
+ var _useState11 = React.useState(function () {
3265
+ var _initialState$columnO;
3266
+
3267
+ return ((_initialState$columnO = initialState == null ? void 0 : initialState.columnOrder) != null ? _initialState$columnO : props.enableColumnOrdering) ? getAllLeafColumnDefs(columns).map(function (c) {
3268
+ return c.id;
3269
+ }) : [];
3270
+ }),
3271
+ columnOrder = _useState11[0],
3272
+ setColumnOrder = _useState11[1]; //@ts-ignore
3273
+
3087
3274
 
3088
3275
  var tableInstance = _extends({}, reactTable.useTableInstance(table, _extends({
3089
3276
  filterFns: defaultFilterFNs,
@@ -3099,6 +3286,7 @@ var MRT_TableRoot = function MRT_TableRoot(props) {
3099
3286
  },
3100
3287
  //@ts-ignore
3101
3288
  globalFilterFn: currentGlobalFilterFn,
3289
+ onColumnOrderChange: setColumnOrder,
3102
3290
  onPaginationChange: function onPaginationChange(updater) {
3103
3291
  return setPagination(function (old) {
3104
3292
  return reactTable.functionalUpdate(updater, old);
@@ -3111,6 +3299,7 @@ var MRT_TableRoot = function MRT_TableRoot(props) {
3111
3299
  idPrefix: idPrefix,
3112
3300
  initialState: initialState,
3113
3301
  state: _extends({
3302
+ columnOrder: columnOrder,
3114
3303
  currentEditingCell: currentEditingCell,
3115
3304
  currentEditingRow: currentEditingRow,
3116
3305
  currentFilterFns: currentFilterFns,
@@ -3173,7 +3362,7 @@ var MRT_TableRoot = function MRT_TableRoot(props) {
3173
3362
  }));
3174
3363
  };
3175
3364
 
3176
- var _excluded$5 = ["autoResetExpanded", "columnResizeMode", "defaultColumn", "editingMode", "enableColumnActions", "enableColumnFilters", "enableColumnResizing", "enableDensePaddingToggle", "enableExpandAll", "enableFilters", "enableFullScreenToggle", "enableGlobalFilter", "enableHiding", "enableMultiRowSelection", "enablePagination", "enablePinning", "enableSelectAll", "enableSorting", "enableStickyHeader", "enableTableFooter", "enableTableHead", "enableToolbarBottom", "enableToolbarInternalActions", "enableToolbarTop", "icons", "localization", "persistentStateMode", "positionActionsColumn", "positionPagination", "positionToolbarActions", "positionToolbarAlertBanner"];
3365
+ var _excluded$5 = ["autoResetExpanded", "columnResizeMode", "defaultColumn", "editingMode", "enableColumnActions", "enableColumnFilters", "enableColumnOrdering", "enableColumnResizing", "enableDensePaddingToggle", "enableExpandAll", "enableFilters", "enableFullScreenToggle", "enableGlobalFilter", "enableGrouping", "enableHiding", "enableMultiRowSelection", "enablePagination", "enablePinning", "enableSelectAll", "enableSorting", "enableStickyHeader", "enableTableFooter", "enableTableHead", "enableToolbarBottom", "enableToolbarInternalActions", "enableToolbarTop", "icons", "localization", "persistentStateMode", "positionActionsColumn", "positionPagination", "positionToolbarActions", "positionToolbarAlertBanner"];
3177
3366
  var MaterialReactTable = (function (_ref) {
3178
3367
  var _ref$autoResetExpande = _ref.autoResetExpanded,
3179
3368
  autoResetExpanded = _ref$autoResetExpande === void 0 ? false : _ref$autoResetExpande,
@@ -3191,6 +3380,8 @@ var MaterialReactTable = (function (_ref) {
3191
3380
  enableColumnActions = _ref$enableColumnActi === void 0 ? true : _ref$enableColumnActi,
3192
3381
  _ref$enableColumnFilt = _ref.enableColumnFilters,
3193
3382
  enableColumnFilters = _ref$enableColumnFilt === void 0 ? true : _ref$enableColumnFilt,
3383
+ _ref$enableColumnOrde = _ref.enableColumnOrdering,
3384
+ enableColumnOrdering = _ref$enableColumnOrde === void 0 ? false : _ref$enableColumnOrde,
3194
3385
  _ref$enableColumnResi = _ref.enableColumnResizing,
3195
3386
  enableColumnResizing = _ref$enableColumnResi === void 0 ? false : _ref$enableColumnResi,
3196
3387
  _ref$enableDensePaddi = _ref.enableDensePaddingToggle,
@@ -3203,6 +3394,8 @@ var MaterialReactTable = (function (_ref) {
3203
3394
  enableFullScreenToggle = _ref$enableFullScreen === void 0 ? true : _ref$enableFullScreen,
3204
3395
  _ref$enableGlobalFilt = _ref.enableGlobalFilter,
3205
3396
  enableGlobalFilter = _ref$enableGlobalFilt === void 0 ? true : _ref$enableGlobalFilt,
3397
+ _ref$enableGrouping = _ref.enableGrouping,
3398
+ enableGrouping = _ref$enableGrouping === void 0 ? false : _ref$enableGrouping,
3206
3399
  _ref$enableHiding = _ref.enableHiding,
3207
3400
  enableHiding = _ref$enableHiding === void 0 ? true : _ref$enableHiding,
3208
3401
  _ref$enableMultiRowSe = _ref.enableMultiRowSelection,
@@ -3248,12 +3441,14 @@ var MaterialReactTable = (function (_ref) {
3248
3441
  editingMode: editingMode,
3249
3442
  enableColumnActions: enableColumnActions,
3250
3443
  enableColumnFilters: enableColumnFilters,
3444
+ enableColumnOrdering: enableColumnOrdering,
3251
3445
  enableColumnResizing: enableColumnResizing,
3252
3446
  enableDensePaddingToggle: enableDensePaddingToggle,
3253
3447
  enableExpandAll: enableExpandAll,
3254
3448
  enableFilters: enableFilters,
3255
3449
  enableFullScreenToggle: enableFullScreenToggle,
3256
3450
  enableGlobalFilter: enableGlobalFilter,
3451
+ enableGrouping: enableGrouping,
3257
3452
  enableHiding: enableHiding,
3258
3453
  enableMultiRowSelection: enableMultiRowSelection,
3259
3454
  enablePagination: enablePagination,