material-react-table 0.8.0 → 0.8.1

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 (33) hide show
  1. package/dist/MaterialReactTable.d.ts +3 -1
  2. package/dist/head/MRT_DraggableTableHeadCell.d.ts +8 -0
  3. package/dist/head/MRT_TableHeadCell.d.ts +5 -1
  4. package/dist/head/MRT_TableHeadCellFilterContainer.d.ts +8 -0
  5. package/dist/head/MRT_TableHeadCellFilterLabel.d.ts +8 -0
  6. package/dist/head/MRT_TableHeadCellGrabHandle.d.ts +9 -0
  7. package/dist/head/MRT_TableHeadCellResizeHandle.d.ts +8 -0
  8. package/dist/head/MRT_TableHeadCellSortLabel.d.ts +8 -0
  9. package/dist/icons.d.ts +1 -0
  10. package/dist/inputs/MRT_FilterRangeFields.d.ts +2 -2
  11. package/dist/localization.d.ts +1 -0
  12. package/dist/material-react-table.cjs.development.js +307 -111
  13. package/dist/material-react-table.cjs.development.js.map +1 -1
  14. package/dist/material-react-table.cjs.production.min.js +1 -1
  15. package/dist/material-react-table.cjs.production.min.js.map +1 -1
  16. package/dist/material-react-table.esm.js +309 -113
  17. package/dist/material-react-table.esm.js.map +1 -1
  18. package/dist/utils.d.ts +1 -1
  19. package/package.json +8 -5
  20. package/src/MaterialReactTable.tsx +6 -0
  21. package/src/head/MRT_DraggableTableHeadCell.tsx +52 -0
  22. package/src/head/MRT_TableHeadCell.tsx +62 -154
  23. package/src/head/MRT_TableHeadCellFilterContainer.tsx +32 -0
  24. package/src/head/MRT_TableHeadCellFilterLabel.tsx +82 -0
  25. package/src/head/MRT_TableHeadCellGrabHandle.tsx +52 -0
  26. package/src/head/MRT_TableHeadCellResizeHandle.tsx +52 -0
  27. package/src/head/MRT_TableHeadCellSortLabel.tsx +45 -0
  28. package/src/head/MRT_TableHeadRow.tsx +17 -8
  29. package/src/icons.ts +3 -0
  30. package/src/inputs/MRT_FilterRangeFields.tsx +1 -3
  31. package/src/localization.ts +2 -0
  32. package/src/table/MRT_TablePaper.tsx +26 -22
  33. 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
@@ -2137,10 +2299,12 @@ var MRT_TableHeadCell = function MRT_TableHeadCell(_ref) {
2137
2299
  return (tableInstance.getRightLeafHeaders().length - 1 - column.getPinnedIndex()) * 150;
2138
2300
  };
2139
2301
 
2302
+ console.log(column.getCanGroup());
2140
2303
  return React__default.createElement(material.TableCell, Object.assign({
2141
2304
  align: column.columnDefType === 'group' ? 'center' : 'left',
2142
2305
  colSpan: header.colSpan
2143
2306
  }, tableCellProps, {
2307
+ ref: column.columnDefType === 'data' ? dropRef : undefined,
2144
2308
  sx: function sx(theme) {
2145
2309
  return _extends({
2146
2310
  backgroundColor: column.getIsPinned() && column.columnDefType !== 'group' ? material.alpha(material.lighten(theme.palette.background["default"], 0.04), 0.95) : 'inherit',
@@ -2166,10 +2330,12 @@ var MRT_TableHeadCell = function MRT_TableHeadCell(_ref) {
2166
2330
  width: header.getSize()
2167
2331
  }
2168
2332
  }), header.isPlaceholder ? null : column.columnDefType === 'display' ? headerElement : React__default.createElement(material.Box, {
2333
+ ref: previewRef,
2169
2334
  sx: {
2170
2335
  alignItems: 'flex-start',
2171
2336
  display: 'flex',
2172
2337
  justifyContent: column.columnDefType === 'group' ? 'center' : 'space-between',
2338
+ opacity: isDragging ? 0.5 : 1,
2173
2339
  width: '100%'
2174
2340
  }
2175
2341
  }, React__default.createElement(material.Box, {
@@ -2183,85 +2349,90 @@ var MRT_TableHeadCell = function MRT_TableHeadCell(_ref) {
2183
2349
  flexWrap: 'nowrap',
2184
2350
  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
2351
  }
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",
2352
+ }, headerElement, column.columnDefType === 'data' && column.getCanSort() && React__default.createElement(MRT_TableHeadCellSortLabel, {
2353
+ header: header,
2354
+ tableInstance: tableInstance
2355
+ }), column.columnDefType === 'data' && enableColumnFilters && column.getCanFilter() && React__default.createElement(MRT_TableHeadCellFilterLabel, {
2356
+ header: header,
2357
+ tableInstance: tableInstance
2358
+ })), React__default.createElement(material.Box, {
2205
2359
  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
- }
2360
+ whiteSpace: 'nowrap'
2214
2361
  }
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, {
2362
+ }, column.columnDefType === 'data' && (enableColumnOrdering && column.enableColumnOrdering !== false || enableGrouping && column.enableGrouping !== false) && React__default.createElement(MRT_TableHeadCellGrabHandle, {
2216
2363
  header: header,
2364
+ ref: dragRef,
2217
2365
  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) {
2366
+ }), (enableColumnActions || column.enableColumnActions) && column.enableColumnActions !== false && column.columnDefType !== 'group' && React__default.createElement(MRT_ToggleColumnActionMenuButton, {
2367
+ header: header,
2368
+ tableInstance: tableInstance
2369
+ })), column.getCanResize() && React__default.createElement(MRT_TableHeadCellResizeHandle, {
2370
+ header: header,
2371
+ tableInstance: tableInstance
2372
+ })), column.columnDefType === 'data' && column.getCanFilter() && React__default.createElement(MRT_TableHeadCellFilterContainer, {
2373
+ header: header,
2374
+ tableInstance: tableInstance
2375
+ }));
2376
+ };
2377
+
2378
+ var MRT_DraggableTableHeadCell = function MRT_DraggableTableHeadCell(_ref) {
2379
+ var header = _ref.header,
2380
+ tableInstance = _ref.tableInstance;
2381
+ var getState = tableInstance.getState;
2382
+
2383
+ _objectDestructuringEmpty(tableInstance.options);
2384
+
2385
+ var setColumnOrder = tableInstance.setColumnOrder;
2386
+
2387
+ var _getState = getState(),
2388
+ columnOrder = _getState.columnOrder;
2389
+
2390
+ var reorder = function reorder(item, newIndex) {
2391
+ var currentIndex = item.index;
2392
+ columnOrder.splice(newIndex, 0, columnOrder.splice(currentIndex, 1)[0]);
2393
+ setColumnOrder([].concat(columnOrder));
2394
+ };
2395
+
2396
+ var _useDrop = reactDnd.useDrop({
2397
+ accept: 'header',
2398
+ drop: function drop(item) {
2399
+ return reorder(item, header.index);
2400
+ }
2401
+ }),
2402
+ drop = _useDrop[1];
2403
+
2404
+ var _useDrag = reactDnd.useDrag({
2405
+ collect: function collect(monitor) {
2225
2406
  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
- }
2407
+ isDragging: monitor.isDragging()
2241
2408
  };
2242
2409
  },
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, {
2410
+ item: function item() {
2411
+ return header;
2412
+ },
2413
+ type: 'header'
2414
+ }),
2415
+ isDragging = _useDrag[0].isDragging,
2416
+ drag = _useDrag[1],
2417
+ preview = _useDrag[2];
2418
+
2419
+ return React__default.createElement(MRT_TableHeadCell, {
2420
+ dragRef: drag,
2421
+ dropRef: drop,
2256
2422
  header: header,
2423
+ isDragging: isDragging,
2424
+ previewRef: preview,
2257
2425
  tableInstance: tableInstance
2258
- })));
2426
+ });
2259
2427
  };
2260
2428
 
2261
2429
  var MRT_TableHeadRow = function MRT_TableHeadRow(_ref) {
2262
2430
  var headerGroup = _ref.headerGroup,
2263
2431
  tableInstance = _ref.tableInstance;
2264
- var muiTableHeadRowProps = tableInstance.options.muiTableHeadRowProps;
2432
+ var _tableInstance$option = tableInstance.options,
2433
+ enableColumnOrdering = _tableInstance$option.enableColumnOrdering,
2434
+ enableGrouping = _tableInstance$option.enableGrouping,
2435
+ muiTableHeadRowProps = _tableInstance$option.muiTableHeadRowProps;
2265
2436
  var tableRowProps = muiTableHeadRowProps instanceof Function ? muiTableHeadRowProps({
2266
2437
  headerGroup: headerGroup,
2267
2438
  tableInstance: tableInstance
@@ -2274,7 +2445,11 @@ var MRT_TableHeadRow = function MRT_TableHeadRow(_ref) {
2274
2445
  }, tableRowProps == null ? void 0 : tableRowProps.sx);
2275
2446
  }
2276
2447
  }), headerGroup.headers.map(function (header, index) {
2277
- return React__default.createElement(MRT_TableHeadCell, {
2448
+ return enableColumnOrdering || enableGrouping ? React__default.createElement(MRT_DraggableTableHeadCell, {
2449
+ header: header,
2450
+ key: header.id || index,
2451
+ tableInstance: tableInstance
2452
+ }) : React__default.createElement(MRT_TableHeadCell, {
2278
2453
  header: header,
2279
2454
  key: header.id || index,
2280
2455
  tableInstance: tableInstance
@@ -2848,7 +3023,9 @@ var MRT_TablePaper = function MRT_TablePaper(_ref) {
2848
3023
  var tablePaperProps = muiTablePaperProps instanceof Function ? muiTablePaperProps({
2849
3024
  tableInstance: tableInstance
2850
3025
  }) : muiTablePaperProps;
2851
- return React__default.createElement(material.Paper, Object.assign({
3026
+ return React__default.createElement(reactDnd.DndProvider, {
3027
+ backend: reactDndHtml5Backend.HTML5Backend
3028
+ }, React__default.createElement(material.Paper, Object.assign({
2852
3029
  elevation: 2
2853
3030
  }, tablePaperProps, {
2854
3031
  sx: _extends({
@@ -2868,7 +3045,7 @@ var MRT_TablePaper = function MRT_TablePaper(_ref) {
2868
3045
  tableInstance: tableInstance
2869
3046
  }), enableToolbarBottom && React__default.createElement(MRT_ToolbarBottom, {
2870
3047
  tableInstance: tableInstance
2871
- }));
3048
+ })));
2872
3049
  };
2873
3050
 
2874
3051
  var getAllLeafColumnDefs = function getAllLeafColumnDefs(columns) {
@@ -3083,7 +3260,18 @@ var MRT_TableRoot = function MRT_TableRoot(props) {
3083
3260
  return _ref7 = {}, _ref7[c.id] = null, _ref7;
3084
3261
  })));
3085
3262
  }) : 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
3263
+ }, [props.data, (_props$state3 = props.state) == null ? void 0 : _props$state3.isLoading, (_props$state4 = props.state) == null ? void 0 : _props$state4.showSkeletons]);
3264
+
3265
+ var _useState11 = React.useState(function () {
3266
+ var _initialState$columnO;
3267
+
3268
+ return ((_initialState$columnO = initialState == null ? void 0 : initialState.columnOrder) != null ? _initialState$columnO : props.enableColumnOrdering) ? getAllLeafColumnDefs(columns).map(function (c) {
3269
+ return c.id;
3270
+ }) : [];
3271
+ }),
3272
+ columnOrder = _useState11[0],
3273
+ setColumnOrder = _useState11[1]; //@ts-ignore
3274
+
3087
3275
 
3088
3276
  var tableInstance = _extends({}, reactTable.useTableInstance(table, _extends({
3089
3277
  filterFns: defaultFilterFNs,
@@ -3099,6 +3287,7 @@ var MRT_TableRoot = function MRT_TableRoot(props) {
3099
3287
  },
3100
3288
  //@ts-ignore
3101
3289
  globalFilterFn: currentGlobalFilterFn,
3290
+ onColumnOrderChange: setColumnOrder,
3102
3291
  onPaginationChange: function onPaginationChange(updater) {
3103
3292
  return setPagination(function (old) {
3104
3293
  return reactTable.functionalUpdate(updater, old);
@@ -3111,6 +3300,7 @@ var MRT_TableRoot = function MRT_TableRoot(props) {
3111
3300
  idPrefix: idPrefix,
3112
3301
  initialState: initialState,
3113
3302
  state: _extends({
3303
+ columnOrder: columnOrder,
3114
3304
  currentEditingCell: currentEditingCell,
3115
3305
  currentEditingRow: currentEditingRow,
3116
3306
  currentFilterFns: currentFilterFns,
@@ -3173,7 +3363,7 @@ var MRT_TableRoot = function MRT_TableRoot(props) {
3173
3363
  }));
3174
3364
  };
3175
3365
 
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"];
3366
+ 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
3367
  var MaterialReactTable = (function (_ref) {
3178
3368
  var _ref$autoResetExpande = _ref.autoResetExpanded,
3179
3369
  autoResetExpanded = _ref$autoResetExpande === void 0 ? false : _ref$autoResetExpande,
@@ -3191,6 +3381,8 @@ var MaterialReactTable = (function (_ref) {
3191
3381
  enableColumnActions = _ref$enableColumnActi === void 0 ? true : _ref$enableColumnActi,
3192
3382
  _ref$enableColumnFilt = _ref.enableColumnFilters,
3193
3383
  enableColumnFilters = _ref$enableColumnFilt === void 0 ? true : _ref$enableColumnFilt,
3384
+ _ref$enableColumnOrde = _ref.enableColumnOrdering,
3385
+ enableColumnOrdering = _ref$enableColumnOrde === void 0 ? false : _ref$enableColumnOrde,
3194
3386
  _ref$enableColumnResi = _ref.enableColumnResizing,
3195
3387
  enableColumnResizing = _ref$enableColumnResi === void 0 ? false : _ref$enableColumnResi,
3196
3388
  _ref$enableDensePaddi = _ref.enableDensePaddingToggle,
@@ -3203,6 +3395,8 @@ var MaterialReactTable = (function (_ref) {
3203
3395
  enableFullScreenToggle = _ref$enableFullScreen === void 0 ? true : _ref$enableFullScreen,
3204
3396
  _ref$enableGlobalFilt = _ref.enableGlobalFilter,
3205
3397
  enableGlobalFilter = _ref$enableGlobalFilt === void 0 ? true : _ref$enableGlobalFilt,
3398
+ _ref$enableGrouping = _ref.enableGrouping,
3399
+ enableGrouping = _ref$enableGrouping === void 0 ? false : _ref$enableGrouping,
3206
3400
  _ref$enableHiding = _ref.enableHiding,
3207
3401
  enableHiding = _ref$enableHiding === void 0 ? true : _ref$enableHiding,
3208
3402
  _ref$enableMultiRowSe = _ref.enableMultiRowSelection,
@@ -3248,12 +3442,14 @@ var MaterialReactTable = (function (_ref) {
3248
3442
  editingMode: editingMode,
3249
3443
  enableColumnActions: enableColumnActions,
3250
3444
  enableColumnFilters: enableColumnFilters,
3445
+ enableColumnOrdering: enableColumnOrdering,
3251
3446
  enableColumnResizing: enableColumnResizing,
3252
3447
  enableDensePaddingToggle: enableDensePaddingToggle,
3253
3448
  enableExpandAll: enableExpandAll,
3254
3449
  enableFilters: enableFilters,
3255
3450
  enableFullScreenToggle: enableFullScreenToggle,
3256
3451
  enableGlobalFilter: enableGlobalFilter,
3452
+ enableGrouping: enableGrouping,
3257
3453
  enableHiding: enableHiding,
3258
3454
  enableMultiRowSelection: enableMultiRowSelection,
3259
3455
  enablePagination: enablePagination,