@mui/x-data-grid 5.9.0 → 5.10.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.
Files changed (151) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/README.md +5 -3
  3. package/components/GridRow.js +5 -0
  4. package/components/containers/GridRootStyles.js +36 -1
  5. package/components/menu/GridMenu.js +1 -0
  6. package/constants/defaultGridSlotsComponents.js +3 -2
  7. package/constants/gridClasses.d.ts +20 -0
  8. package/constants/gridClasses.js +1 -1
  9. package/constants/localeTextConstants.js +3 -1
  10. package/hooks/features/columnMenu/useGridColumnMenu.js +2 -1
  11. package/hooks/features/columns/useGridColumns.d.ts +1 -1
  12. package/hooks/features/rows/useGridRows.js +19 -0
  13. package/hooks/features/virtualization/useGridVirtualScroller.d.ts +2 -0
  14. package/hooks/features/virtualization/useGridVirtualScroller.js +10 -0
  15. package/index.js +1 -1
  16. package/legacy/components/GridRow.js +5 -0
  17. package/legacy/components/containers/GridRootStyles.js +26 -5
  18. package/legacy/components/menu/GridMenu.js +1 -0
  19. package/legacy/constants/defaultGridSlotsComponents.js +3 -2
  20. package/legacy/constants/gridClasses.js +1 -1
  21. package/legacy/constants/localeTextConstants.js +3 -1
  22. package/legacy/hooks/features/columnMenu/useGridColumnMenu.js +2 -1
  23. package/legacy/hooks/features/rows/useGridRows.js +25 -0
  24. package/legacy/hooks/features/virtualization/useGridVirtualScroller.js +10 -0
  25. package/legacy/index.js +1 -1
  26. package/legacy/locales/arSD.js +3 -1
  27. package/legacy/locales/bgBG.js +3 -1
  28. package/legacy/locales/csCZ.js +2 -0
  29. package/legacy/locales/daDK.js +3 -1
  30. package/legacy/locales/deDE.js +3 -1
  31. package/legacy/locales/elGR.js +2 -0
  32. package/legacy/locales/esES.js +2 -0
  33. package/legacy/locales/faIR.js +3 -1
  34. package/legacy/locales/fiFI.js +2 -0
  35. package/legacy/locales/frFR.js +2 -0
  36. package/legacy/locales/heIL.js +3 -1
  37. package/legacy/locales/huHU.js +3 -1
  38. package/legacy/locales/itIT.js +2 -0
  39. package/legacy/locales/jaJP.js +2 -0
  40. package/legacy/locales/koKR.js +2 -0
  41. package/legacy/locales/nlNL.js +2 -0
  42. package/legacy/locales/plPL.js +3 -1
  43. package/legacy/locales/ptBR.js +3 -1
  44. package/legacy/locales/ruRU.js +2 -0
  45. package/legacy/locales/skSK.js +2 -0
  46. package/legacy/locales/trTR.js +3 -1
  47. package/legacy/locales/ukUA.js +2 -0
  48. package/legacy/locales/viVN.js +2 -0
  49. package/legacy/locales/zhCN.js +2 -0
  50. package/legacy/models/events/gridEvents.js +6 -0
  51. package/locales/arSD.js +3 -1
  52. package/locales/bgBG.js +3 -1
  53. package/locales/csCZ.js +2 -0
  54. package/locales/daDK.js +3 -1
  55. package/locales/deDE.js +3 -1
  56. package/locales/elGR.js +2 -0
  57. package/locales/esES.js +2 -0
  58. package/locales/faIR.js +3 -1
  59. package/locales/fiFI.js +2 -0
  60. package/locales/frFR.js +2 -0
  61. package/locales/heIL.js +3 -1
  62. package/locales/huHU.js +3 -1
  63. package/locales/itIT.js +2 -0
  64. package/locales/jaJP.js +2 -0
  65. package/locales/koKR.js +2 -0
  66. package/locales/nlNL.js +2 -0
  67. package/locales/plPL.js +3 -1
  68. package/locales/ptBR.js +3 -1
  69. package/locales/ruRU.js +2 -0
  70. package/locales/skSK.js +2 -0
  71. package/locales/trTR.js +3 -1
  72. package/locales/ukUA.js +2 -0
  73. package/locales/viVN.js +2 -0
  74. package/locales/zhCN.js +2 -0
  75. package/models/api/gridLocaleTextApi.d.ts +1 -0
  76. package/models/api/gridRowApi.d.ts +6 -0
  77. package/models/events/gridEventLookup.d.ts +20 -0
  78. package/models/events/gridEvents.d.ts +32 -0
  79. package/models/events/gridEvents.js +6 -0
  80. package/models/gridIconSlotsComponent.d.ts +5 -0
  81. package/modern/components/GridRow.js +5 -0
  82. package/modern/components/containers/GridRootStyles.js +36 -1
  83. package/modern/components/menu/GridMenu.js +1 -0
  84. package/modern/constants/defaultGridSlotsComponents.js +3 -2
  85. package/modern/constants/gridClasses.js +1 -1
  86. package/modern/constants/localeTextConstants.js +3 -1
  87. package/modern/hooks/features/columnMenu/useGridColumnMenu.js +2 -1
  88. package/modern/hooks/features/rows/useGridRows.js +19 -0
  89. package/modern/hooks/features/virtualization/useGridVirtualScroller.js +10 -0
  90. package/modern/index.js +1 -1
  91. package/modern/locales/arSD.js +3 -1
  92. package/modern/locales/bgBG.js +3 -1
  93. package/modern/locales/csCZ.js +2 -0
  94. package/modern/locales/daDK.js +3 -1
  95. package/modern/locales/deDE.js +3 -1
  96. package/modern/locales/elGR.js +2 -0
  97. package/modern/locales/esES.js +2 -0
  98. package/modern/locales/faIR.js +3 -1
  99. package/modern/locales/fiFI.js +2 -0
  100. package/modern/locales/frFR.js +2 -0
  101. package/modern/locales/heIL.js +3 -1
  102. package/modern/locales/huHU.js +3 -1
  103. package/modern/locales/itIT.js +2 -0
  104. package/modern/locales/jaJP.js +2 -0
  105. package/modern/locales/koKR.js +2 -0
  106. package/modern/locales/nlNL.js +2 -0
  107. package/modern/locales/plPL.js +3 -1
  108. package/modern/locales/ptBR.js +3 -1
  109. package/modern/locales/ruRU.js +2 -0
  110. package/modern/locales/skSK.js +2 -0
  111. package/modern/locales/trTR.js +3 -1
  112. package/modern/locales/ukUA.js +2 -0
  113. package/modern/locales/viVN.js +2 -0
  114. package/modern/locales/zhCN.js +2 -0
  115. package/modern/models/events/gridEvents.js +6 -0
  116. package/node/components/GridRow.js +5 -0
  117. package/node/components/containers/GridRootStyles.js +36 -1
  118. package/node/components/menu/GridMenu.js +1 -0
  119. package/node/constants/defaultGridSlotsComponents.js +2 -1
  120. package/node/constants/gridClasses.js +1 -1
  121. package/node/constants/localeTextConstants.js +3 -1
  122. package/node/hooks/features/columnMenu/useGridColumnMenu.js +2 -1
  123. package/node/hooks/features/rows/useGridRows.js +19 -0
  124. package/node/hooks/features/virtualization/useGridVirtualScroller.js +10 -0
  125. package/node/index.js +1 -1
  126. package/node/locales/arSD.js +3 -1
  127. package/node/locales/bgBG.js +3 -1
  128. package/node/locales/csCZ.js +2 -0
  129. package/node/locales/daDK.js +3 -1
  130. package/node/locales/deDE.js +3 -1
  131. package/node/locales/elGR.js +2 -0
  132. package/node/locales/esES.js +2 -0
  133. package/node/locales/faIR.js +3 -1
  134. package/node/locales/fiFI.js +2 -0
  135. package/node/locales/frFR.js +2 -0
  136. package/node/locales/heIL.js +3 -1
  137. package/node/locales/huHU.js +3 -1
  138. package/node/locales/itIT.js +2 -0
  139. package/node/locales/jaJP.js +2 -0
  140. package/node/locales/koKR.js +2 -0
  141. package/node/locales/nlNL.js +2 -0
  142. package/node/locales/plPL.js +3 -1
  143. package/node/locales/ptBR.js +3 -1
  144. package/node/locales/ruRU.js +2 -0
  145. package/node/locales/skSK.js +2 -0
  146. package/node/locales/trTR.js +3 -1
  147. package/node/locales/ukUA.js +2 -0
  148. package/node/locales/viVN.js +2 -0
  149. package/node/locales/zhCN.js +2 -0
  150. package/node/models/events/gridEvents.js +6 -0
  151. package/package.json +2 -2
package/CHANGELOG.md CHANGED
@@ -3,6 +3,42 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## v5.10.0
7
+
8
+ _Apr 25, 2022_
9
+
10
+ We'd like to offer a big thanks to the 6 contributors who made this release possible. Here are some highlights ✨:
11
+
12
+ - 🎁 Introduce [Row reorder](https://mui.com/x/react-data-grid/rows/#row-reorder) (#4034) @DanailH
13
+
14
+ <img src="https://user-images.githubusercontent.com/5858539/165091263-23472fbb-a989-44b8-849a-d2185adfe13b.gif" width="800">
15
+
16
+ - 🐞 Bug fixes
17
+
18
+ ### `@mui/x-data-grid@v5.10.0` / `@mui/x-data-grid-pro@v5.10.0`
19
+
20
+ - [DataGrid] Don't close column menu when updating rows (#4498) @m4theushw
21
+ - [DataGridPro] Introduce row reorder (#4034) @DanailH
22
+
23
+ ### `@mui/x-date-pickers@5.0.0-alpha.2` / `@mui/x-date-pickers-pro@5.0.0-alpha.2`
24
+
25
+ - [pickers] Pass `PaperProps` to `DesktopWrapper` component (#4584) @alexfauquette
26
+ - [TimePicker] Fix bug when time picker clear value (#4582) @alexfauquette
27
+ - [DateRangePicker] Fix missing `clearable` and `clearText` props (#4511) @zigang93
28
+
29
+ ### Docs
30
+
31
+ - [docs] Add plan in the nav bar for pro-only and premium-only pages (#4591) @flaviendelangle
32
+ - [docs] Clarify where to install the license (#4452) @oliviertassinari
33
+ - [docs] Fix CodeSandbox links for demo with pickers (#4570) @alexfauquette
34
+ - [docs] Include date-fns dependency when opening demos in CodeSandbox (#4508) @m4theushw
35
+ - [docs] Split the 'Group & Pivot' page (#4441) @flaviendelangle
36
+
37
+ ### Core
38
+
39
+ - [core] Fix the README of the X packages (#4590) @flaviendelangle
40
+ - [test] Fix test to not depend on screen resolution (#4587) @m4theushw
41
+
6
42
  ## v5.9.0
7
43
 
8
44
  _Apr 14, 2022_
package/README.md CHANGED
@@ -15,12 +15,14 @@ npm install @mui/x-data-grid
15
15
  yarn add @mui/x-data-grid
16
16
  ```
17
17
 
18
- This component has three peer dependencies that you will need to install as well.
18
+ This component has the following peer dependencies that you will need to install as well.
19
19
 
20
20
  ```json
21
21
  "peerDependencies": {
22
- "@mui/material": "^5.0.0",
23
- "react": "^17.0.0"
22
+ "@mui/material": "^5.2.8",
23
+ "@mui/system": "^5.2.8",
24
+ "react": "^17.0.2 || ^18.0.0",
25
+ "react-dom": "^17.0.2 || ^18.0.0"
24
26
  },
25
27
  ```
26
28
 
@@ -136,6 +136,11 @@ function GridRow(props) {
136
136
 
137
137
  if (field === GRID_DETAIL_PANEL_TOGGLE_FIELD) {
138
138
  return;
139
+ } // User reorders a row
140
+
141
+
142
+ if (field === '__reorder__') {
143
+ return;
139
144
  } // User is editing a cell
140
145
 
141
146
 
@@ -73,8 +73,16 @@ export const GridRootStyles = styled('div', {
73
73
  [`& .${gridClasses['row--editable']}`]: styles['row--editable']
74
74
  }, {
75
75
  [`& .${gridClasses['row--editing']}`]: styles['row--editing']
76
+ }, {
77
+ [`& .${gridClasses['row--dragging']}`]: styles['row--dragging']
76
78
  }, {
77
79
  [`& .${gridClasses.row}`]: styles.row
80
+ }, {
81
+ [`& .${gridClasses.rowReorderCellPlaceholder}`]: styles.rowReorderCellPlaceholder
82
+ }, {
83
+ [`& .${gridClasses.rowReorderCell}`]: styles.rowReorderCell
84
+ }, {
85
+ [`& .${gridClasses['rowReorderCell--draggable']}`]: styles['rowReorderCell--draggable']
78
86
  }, {
79
87
  [`& .${gridClasses.sortIcon}`]: styles.sortIcon
80
88
  }, {
@@ -309,6 +317,21 @@ export const GridRootStyles = styled('div', {
309
317
  alignItems: 'center',
310
318
  gridGap: theme.spacing(1)
311
319
  },
320
+ [`& .${gridClasses.rowReorderCell}`]: {
321
+ display: 'inline-flex',
322
+ flex: 1,
323
+ alignItems: 'center',
324
+ justifyContent: 'center',
325
+ opacity: theme.palette.action.disabledOpacity
326
+ },
327
+ [`& .${gridClasses['rowReorderCell--draggable']}`]: {
328
+ cursor: 'move',
329
+ opacity: 1
330
+ },
331
+ [`& .${gridClasses.rowReorderCellContainer}`]: {
332
+ padding: 0,
333
+ alignItems: 'stretch'
334
+ },
312
335
  [`& .${gridClasses.withBorder}`]: {
313
336
  borderRight: `1px solid ${borderColor}`
314
337
  },
@@ -325,12 +348,24 @@ export const GridRootStyles = styled('div', {
325
348
  display: 'flex',
326
349
  width: '100%'
327
350
  },
328
- [`& .${gridClasses['columnHeader--dragging']}`]: {
351
+ [`& .${gridClasses.rowReorderCellPlaceholder}`]: {
352
+ display: 'none'
353
+ },
354
+ [`& .${gridClasses['columnHeader--dragging']}, & .${gridClasses['row--dragging']}`]: {
329
355
  background: theme.palette.background.paper,
330
356
  padding: '0 12px',
331
357
  borderRadius: theme.shape.borderRadius,
332
358
  opacity: theme.palette.action.disabledOpacity
333
359
  },
360
+ [`& .${gridClasses['row--dragging']}`]: {
361
+ background: theme.palette.background.paper,
362
+ padding: '0 12px',
363
+ borderRadius: theme.shape.borderRadius,
364
+ opacity: theme.palette.action.disabledOpacity,
365
+ [`& .${gridClasses.rowReorderCellPlaceholder}`]: {
366
+ display: 'flex'
367
+ }
368
+ },
334
369
  [`& .${gridClasses.treeDataGroupingCell}`]: {
335
370
  display: 'flex',
336
371
  alignItems: 'center',
@@ -95,6 +95,7 @@ const GridMenu = props => {
95
95
  placement
96
96
  }) => /*#__PURE__*/_jsx(ClickAwayListener, {
97
97
  onClickAway: onClickAway,
98
+ mouseEvent: "onMouseDown",
98
99
  children: /*#__PURE__*/_jsx(Grow, _extends({}, TransitionProps, {
99
100
  style: {
100
101
  transformOrigin: transformOrigin[placement]
@@ -7,7 +7,7 @@ import MUISwitch from '@mui/material/Switch';
7
7
  import MUIButton from '@mui/material/Button';
8
8
  import MUITooltip from '@mui/material/Tooltip';
9
9
  import MUIPopper from '@mui/material/Popper';
10
- import { GridArrowDownwardIcon, GridArrowUpwardIcon, GridCell, GridCheckIcon, GridCloseIcon, GridColumnIcon, GridColumnMenu, GridColumnsPanel, GridFilterAltIcon, GridFilterListIcon, GridFilterPanel, GridFooter, GridHeader, GridLoadingOverlay, GridNoRowsOverlay, GridPagination, GridPanel, GridPreferencesPanel, GridRow, GridSaveAltIcon, GridSeparatorIcon, GridTableRowsIcon, GridTripleDotsVerticalIcon, GridViewHeadlineIcon, GridViewStreamIcon, GridMoreVertIcon, GridExpandMoreIcon, GridKeyboardArrowRight, GridAddIcon, GridRemoveIcon, GridColumnHeaderFilterIconButton } from '../components';
10
+ import { GridArrowDownwardIcon, GridArrowUpwardIcon, GridCell, GridCheckIcon, GridCloseIcon, GridColumnIcon, GridColumnMenu, GridColumnsPanel, GridFilterAltIcon, GridFilterListIcon, GridFilterPanel, GridFooter, GridHeader, GridLoadingOverlay, GridNoRowsOverlay, GridPagination, GridPanel, GridPreferencesPanel, GridRow, GridSaveAltIcon, GridSeparatorIcon, GridTableRowsIcon, GridTripleDotsVerticalIcon, GridViewHeadlineIcon, GridViewStreamIcon, GridMoreVertIcon, GridExpandMoreIcon, GridKeyboardArrowRight, GridAddIcon, GridRemoveIcon, GridDragIcon, GridColumnHeaderFilterIconButton } from '../components';
11
11
  import { GridColumnUnsortedIcon } from '../components/columnHeaders/GridColumnUnsortedIcon';
12
12
  import { ErrorOverlay } from '../components/ErrorOverlay';
13
13
  import { GridNoResultsOverlay } from '../components/GridNoResultsOverlay';
@@ -33,7 +33,8 @@ const DEFAULT_GRID_ICON_SLOTS_COMPONENTS = {
33
33
  GroupingCriteriaCollapseIcon: GridExpandMoreIcon,
34
34
  GroupingCriteriaExpandIcon: GridKeyboardArrowRight,
35
35
  DetailPanelExpandIcon: GridAddIcon,
36
- DetailPanelCollapseIcon: GridRemoveIcon
36
+ DetailPanelCollapseIcon: GridRemoveIcon,
37
+ RowReorderIcon: GridDragIcon
37
38
  };
38
39
  /**
39
40
  * TODO: Differentiate community and pro value and interface
@@ -99,6 +99,10 @@ export interface GridClasses {
99
99
  * Styles applied to the column header's draggable container element.
100
100
  */
101
101
  columnHeaderDraggableContainer: string;
102
+ /**
103
+ * Styles applied to the row's draggable placeholder element inside the special row reorder cell.
104
+ */
105
+ rowReorderCellPlaceholder: string;
102
106
  /**
103
107
  * Styles applied to the column headers wrapper if a column is being dragged.
104
108
  */
@@ -323,6 +327,10 @@ export interface GridClasses {
323
327
  * Styles applied to the row element if the row is in edit mode.
324
328
  */
325
329
  'row--editing': string;
330
+ /**
331
+ * Styles applied to the floating special row reorder cell element when it is dragged.
332
+ */
333
+ 'row--dragging': string;
326
334
  /**
327
335
  * Styles applied to the last visible row element on every page of the grid.
328
336
  */
@@ -336,6 +344,18 @@ export interface GridClasses {
336
344
  * Only works when pagination is disabled.
337
345
  */
338
346
  rowCount: string;
347
+ /**
348
+ * Styles applied to the row reorder cell container element.
349
+ */
350
+ rowReorderCellContainer: string;
351
+ /**
352
+ * Styles applied to the root element of the row reorder cell
353
+ */
354
+ rowReorderCell: string;
355
+ /**
356
+ * Styles applied to the root element of the row reorder cell when dragging is allowed
357
+ */
358
+ 'rowReorderCell--draggable': string;
339
359
  /**
340
360
  * Styles applied to both scroll area elements.
341
361
  */
@@ -2,4 +2,4 @@ import { generateUtilityClasses, generateUtilityClass } from '@mui/material';
2
2
  export function getDataGridUtilityClass(slot) {
3
3
  return generateUtilityClass('MuiDataGrid', slot);
4
4
  }
5
- export const gridClasses = generateUtilityClasses('MuiDataGrid', ['actionsCell', 'autoHeight', 'booleanCell', 'cell--editable', 'cell--editing', 'cell--textCenter', 'cell--textLeft', 'cell--textRight', 'cell--withRenderer', 'cell', 'cellContent', 'cellCheckbox', 'checkboxInput', 'columnHeader--alignCenter', 'columnHeader--alignLeft', 'columnHeader--alignRight', 'columnHeader--dragging', 'columnHeader--moving', 'columnHeader--numeric', 'columnHeader--sortable', 'columnHeader--sorted', 'columnHeader--filtered', 'columnHeader', 'columnHeaderCheckbox', 'columnHeaderDraggableContainer', 'columnHeaderDropZone', 'columnHeaderTitle', 'columnHeaderTitleContainer', 'columnHeaderTitleContainerContent', 'columnHeaders', 'columnHeadersInner', 'columnHeadersInner--scrollable', 'columnSeparator--resizable', 'columnSeparator--resizing', 'columnSeparator--sideLeft', 'columnSeparator--sideRight', 'columnSeparator', 'columnsPanel', 'columnsPanelRow', 'detailPanel', 'detailPanels', 'detailPanelToggleCell', 'detailPanelToggleCell--expanded', 'panel', 'panelHeader', 'panelWrapper', 'panelContent', 'panelFooter', 'paper', 'editBooleanCell', 'editInputCell', 'filterForm', 'filterFormDeleteIcon', 'filterFormLinkOperatorInput', 'filterFormColumnInput', 'filterFormOperatorInput', 'filterFormValueInput', 'filterIcon', 'footerContainer', 'iconButtonContainer', 'iconSeparator', 'main', 'menu', 'menuIcon', 'menuIconButton', 'menuOpen', 'menuList', 'overlay', 'root', 'row--editable', 'row--editing', 'row', 'row--lastVisible', 'rowCount', 'scrollArea--left', 'scrollArea--right', 'scrollArea', 'selectedRowCount', 'sortIcon', 'toolbarContainer', 'toolbarFilterList', 'virtualScroller', 'virtualScrollerContent', 'virtualScrollerContent--overflowed', 'virtualScrollerRenderZone', 'pinnedColumns', 'pinnedColumns--left', 'pinnedColumns--right', 'pinnedColumnHeaders', 'pinnedColumnHeaders--left', 'pinnedColumnHeaders--right', 'withBorder', 'treeDataGroupingCell', 'treeDataGroupingCellToggle', 'groupingCriteriaCell', 'groupingCriteriaCellToggle']);
5
+ export const gridClasses = generateUtilityClasses('MuiDataGrid', ['actionsCell', 'autoHeight', 'booleanCell', 'cell--editable', 'cell--editing', 'cell--textCenter', 'cell--textLeft', 'cell--textRight', 'cell--withRenderer', 'cell', 'cellContent', 'cellCheckbox', 'checkboxInput', 'columnHeader--alignCenter', 'columnHeader--alignLeft', 'columnHeader--alignRight', 'columnHeader--dragging', 'columnHeader--moving', 'columnHeader--numeric', 'columnHeader--sortable', 'columnHeader--sorted', 'columnHeader--filtered', 'columnHeader', 'columnHeaderCheckbox', 'columnHeaderDraggableContainer', 'columnHeaderDropZone', 'columnHeaderTitle', 'columnHeaderTitleContainer', 'columnHeaderTitleContainerContent', 'columnHeaders', 'columnHeadersInner', 'columnHeadersInner--scrollable', 'columnSeparator--resizable', 'columnSeparator--resizing', 'columnSeparator--sideLeft', 'columnSeparator--sideRight', 'columnSeparator', 'columnsPanel', 'columnsPanelRow', 'detailPanel', 'detailPanels', 'detailPanelToggleCell', 'detailPanelToggleCell--expanded', 'panel', 'panelHeader', 'panelWrapper', 'panelContent', 'panelFooter', 'paper', 'editBooleanCell', 'editInputCell', 'filterForm', 'filterFormDeleteIcon', 'filterFormLinkOperatorInput', 'filterFormColumnInput', 'filterFormOperatorInput', 'filterFormValueInput', 'filterIcon', 'footerContainer', 'iconButtonContainer', 'iconSeparator', 'main', 'menu', 'menuIcon', 'menuIconButton', 'menuOpen', 'menuList', 'overlay', 'root', 'row', 'row--editable', 'row--editing', 'row--lastVisible', 'row--dragging', 'rowReorderCellPlaceholder', 'rowCount', 'rowReorderCellContainer', 'rowReorderCell', 'rowReorderCell--draggable', 'scrollArea--left', 'scrollArea--right', 'scrollArea', 'selectedRowCount', 'sortIcon', 'toolbarContainer', 'toolbarFilterList', 'virtualScroller', 'virtualScrollerContent', 'virtualScrollerContent--overflowed', 'virtualScrollerRenderZone', 'pinnedColumns', 'pinnedColumns--left', 'pinnedColumns--right', 'pinnedColumnHeaders', 'pinnedColumnHeaders--left', 'pinnedColumnHeaders--right', 'withBorder', 'treeDataGroupingCell', 'treeDataGroupingCellToggle', 'groupingCriteriaCell', 'groupingCriteriaCellToggle']);
@@ -103,5 +103,7 @@ export const GRID_DEFAULT_LOCALE_TEXT = {
103
103
  expandDetailPanel: 'Expand',
104
104
  collapseDetailPanel: 'Collapse',
105
105
  // Used core components translation keys
106
- MuiTablePagination: {}
106
+ MuiTablePagination: {},
107
+ // Row reordering text
108
+ rowReorderingHeaderName: 'Row reordering'
107
109
  };
@@ -79,5 +79,6 @@ export const useGridColumnMenu = apiRef => {
79
79
  */
80
80
 
81
81
  useGridApiEventHandler(apiRef, GridEvents.columnResizeStart, hideColumnMenu);
82
- useGridApiEventHandler(apiRef, GridEvents.rowsScroll, hideColumnMenu);
82
+ useGridApiEventHandler(apiRef, GridEvents.virtualScrollerWheel, apiRef.current.hideColumnMenu);
83
+ useGridApiEventHandler(apiRef, GridEvents.virtualScrollerTouchMove, apiRef.current.hideColumnMenu);
83
84
  };
@@ -8,4 +8,4 @@ export declare const columnsStateInitializer: GridStateInitializer<Pick<DataGrid
8
8
  * @requires useGridDimensions (method, event) - can be after
9
9
  * TODO: Impossible priority - useGridParamsApi also needs to be after useGridColumns
10
10
  */
11
- export declare function useGridColumns(apiRef: React.MutableRefObject<GridApiCommunity>, props: Pick<DataGridProcessedProps, 'initialState' | 'columns' | 'onColumnVisibilityChange' | 'columnVisibilityModel' | 'onColumnVisibilityModelChange' | 'columnTypes' | 'checkboxSelection' | 'classes' | 'components' | 'componentsProps'>): void;
11
+ export declare function useGridColumns(apiRef: React.MutableRefObject<GridApiCommunity>, props: Pick<DataGridProcessedProps, 'initialState' | 'columns' | 'onColumnVisibilityChange' | 'columnVisibilityModel' | 'onColumnVisibilityModelChange' | 'columnTypes' | 'classes' | 'components' | 'componentsProps'>): void;
@@ -233,12 +233,31 @@ export const useGridRows = (apiRef, props) => {
233
233
 
234
234
  return (_gridRowTreeSelector$ = gridRowTreeSelector(apiRef)[id]) != null ? _gridRowTreeSelector$ : null;
235
235
  }, [apiRef]);
236
+ const setRowIndex = React.useCallback((rowId, targetIndex) => {
237
+ const allRows = gridRowIdsSelector(apiRef);
238
+ const oldIndex = allRows.findIndex(row => row === rowId);
239
+
240
+ if (oldIndex === targetIndex) {
241
+ return;
242
+ }
243
+
244
+ logger.debug(`Moving row ${rowId} to index ${targetIndex}`);
245
+ const updatedRows = [...allRows];
246
+ updatedRows.splice(targetIndex, 0, updatedRows.splice(oldIndex, 1)[0]);
247
+ apiRef.current.setState(state => _extends({}, state, {
248
+ rows: _extends({}, state.rows, {
249
+ ids: updatedRows
250
+ })
251
+ }));
252
+ apiRef.current.applySorting();
253
+ }, [apiRef, logger]);
236
254
  const rowApi = {
237
255
  getRow,
238
256
  getRowModels,
239
257
  getRowsCount,
240
258
  getAllRowIds,
241
259
  setRows,
260
+ setRowIndex,
242
261
  updateRows,
243
262
  setRowChildrenExpansion,
244
263
  getRowNode,
@@ -34,6 +34,8 @@ export declare const useGridVirtualScroller: (props: UseGridVirtualScrollerProps
34
34
  }) => {
35
35
  ref: React.Ref<HTMLDivElement>;
36
36
  onScroll: (event: React.UIEvent) => void;
37
+ onWheel: (event: React.WheelEvent) => void;
38
+ onTouchMove: (event: React.TouchEvent) => void;
37
39
  style: {
38
40
  accentColor?: import("csstype").Property.AccentColor | undefined;
39
41
  alignContent?: import("csstype").Property.AlignContent | undefined;
@@ -214,6 +214,14 @@ export const useGridVirtualScroller = props => {
214
214
  }
215
215
  };
216
216
 
217
+ const handleWheel = event => {
218
+ apiRef.current.publishEvent(GridEvents.virtualScrollerWheel, {}, event);
219
+ };
220
+
221
+ const handleTouchMove = event => {
222
+ apiRef.current.publishEvent(GridEvents.virtualScrollerTouchMove, {}, event);
223
+ };
224
+
217
225
  const getRows = (params = {
218
226
  renderContext
219
227
  }) => {
@@ -364,6 +372,8 @@ export const useGridVirtualScroller = props => {
364
372
  return _extends({
365
373
  ref: handleRef,
366
374
  onScroll: handleScroll,
375
+ onWheel: handleWheel,
376
+ onTouchMove: handleTouchMove,
367
377
  style: _extends({}, style, rootStyle)
368
378
  }, other);
369
379
  },
package/index.js CHANGED
@@ -1,4 +1,4 @@
1
- /** @license MUI v5.9.0
1
+ /** @license MUI v5.10.0
2
2
  *
3
3
  * This source code is licensed under the MIT license found in the
4
4
  * LICENSE file in the root directory of this source tree.
@@ -137,6 +137,11 @@ function GridRow(props) {
137
137
 
138
138
  if (field === GRID_DETAIL_PANEL_TOGGLE_FIELD) {
139
139
  return;
140
+ } // User reorders a row
141
+
142
+
143
+ if (field === '__reorder__') {
144
+ return;
140
145
  } // User is editing a cell
141
146
 
142
147
 
@@ -7,12 +7,12 @@ export var GridRootStyles = styled('div', {
7
7
  slot: 'Root',
8
8
  overridesResolver: function overridesResolver(props, styles) {
9
9
  return [_defineProperty({}, "&.".concat(gridClasses.autoHeight), styles.autoHeight), _defineProperty({}, "& .".concat(gridClasses.editBooleanCell), styles.editBooleanCell), _defineProperty({}, "& .".concat(gridClasses['cell--editing']), styles['cell--editing']), _defineProperty({}, "& .".concat(gridClasses['cell--textCenter']), styles['cell--textCenter']), _defineProperty({}, "& .".concat(gridClasses['cell--textLeft']), styles['cell--textLeft']), _defineProperty({}, "& .".concat(gridClasses['cell--textRight']), styles['cell--textRight']), // TODO v6: Remove
10
- _defineProperty({}, "& .".concat(gridClasses['cell--withRenderer']), styles['cell--withRenderer']), _defineProperty({}, "& .".concat(gridClasses.cell), styles.cell), _defineProperty({}, "& .".concat(gridClasses.cellContent), styles.cellContent), _defineProperty({}, "& .".concat(gridClasses.cellCheckbox), styles.cellCheckbox), _defineProperty({}, "& .".concat(gridClasses.checkboxInput), styles.checkboxInput), _defineProperty({}, "& .".concat(gridClasses['columnHeader--alignCenter']), styles['columnHeader--alignCenter']), _defineProperty({}, "& .".concat(gridClasses['columnHeader--alignLeft']), styles['columnHeader--alignLeft']), _defineProperty({}, "& .".concat(gridClasses['columnHeader--alignRight']), styles['columnHeader--alignRight']), _defineProperty({}, "& .".concat(gridClasses['columnHeader--dragging']), styles['columnHeader--dragging']), _defineProperty({}, "& .".concat(gridClasses['columnHeader--moving']), styles['columnHeader--moving']), _defineProperty({}, "& .".concat(gridClasses['columnHeader--numeric']), styles['columnHeader--numeric']), _defineProperty({}, "& .".concat(gridClasses['columnHeader--sortable']), styles['columnHeader--sortable']), _defineProperty({}, "& .".concat(gridClasses['columnHeader--sorted']), styles['columnHeader--sorted']), _defineProperty({}, "& .".concat(gridClasses.columnHeader), styles.columnHeader), _defineProperty({}, "& .".concat(gridClasses.columnHeaderCheckbox), styles.columnHeaderCheckbox), _defineProperty({}, "& .".concat(gridClasses.columnHeaderDraggableContainer), styles.columnHeaderDraggableContainer), _defineProperty({}, "& .".concat(gridClasses.columnHeaderTitleContainer), styles.columnHeaderTitleContainer), _defineProperty({}, "& .".concat(gridClasses['columnSeparator--resizable']), styles['columnSeparator--resizable']), _defineProperty({}, "& .".concat(gridClasses['columnSeparator--resizing']), styles['columnSeparator--resizing']), _defineProperty({}, "& .".concat(gridClasses.columnSeparator), styles.columnSeparator), _defineProperty({}, "& .".concat(gridClasses.filterIcon), styles.filterIcon), _defineProperty({}, "& .".concat(gridClasses.iconSeparator), styles.iconSeparator), _defineProperty({}, "& .".concat(gridClasses.menuIcon), styles.menuIcon), _defineProperty({}, "& .".concat(gridClasses.menuIconButton), styles.menuIconButton), _defineProperty({}, "& .".concat(gridClasses.menuOpen), styles.menuOpen), _defineProperty({}, "& .".concat(gridClasses.menuList), styles.menuList), _defineProperty({}, "& .".concat(gridClasses['row--editable']), styles['row--editable']), _defineProperty({}, "& .".concat(gridClasses['row--editing']), styles['row--editing']), _defineProperty({}, "& .".concat(gridClasses.row), styles.row), _defineProperty({}, "& .".concat(gridClasses.sortIcon), styles.sortIcon), _defineProperty({}, "& .".concat(gridClasses.withBorder), styles.withBorder), _defineProperty({}, "& .".concat(gridClasses.treeDataGroupingCell), styles.treeDataGroupingCell), _defineProperty({}, "& .".concat(gridClasses.treeDataGroupingCellToggle), styles.treeDataGroupingCellToggle), _defineProperty({}, "& .".concat(gridClasses.detailPanelToggleCell), styles.detailPanelToggleCell), _defineProperty({}, "& .".concat(gridClasses['detailPanelToggleCell--expanded']), styles['detailPanelToggleCell--expanded']), styles.root];
10
+ _defineProperty({}, "& .".concat(gridClasses['cell--withRenderer']), styles['cell--withRenderer']), _defineProperty({}, "& .".concat(gridClasses.cell), styles.cell), _defineProperty({}, "& .".concat(gridClasses.cellContent), styles.cellContent), _defineProperty({}, "& .".concat(gridClasses.cellCheckbox), styles.cellCheckbox), _defineProperty({}, "& .".concat(gridClasses.checkboxInput), styles.checkboxInput), _defineProperty({}, "& .".concat(gridClasses['columnHeader--alignCenter']), styles['columnHeader--alignCenter']), _defineProperty({}, "& .".concat(gridClasses['columnHeader--alignLeft']), styles['columnHeader--alignLeft']), _defineProperty({}, "& .".concat(gridClasses['columnHeader--alignRight']), styles['columnHeader--alignRight']), _defineProperty({}, "& .".concat(gridClasses['columnHeader--dragging']), styles['columnHeader--dragging']), _defineProperty({}, "& .".concat(gridClasses['columnHeader--moving']), styles['columnHeader--moving']), _defineProperty({}, "& .".concat(gridClasses['columnHeader--numeric']), styles['columnHeader--numeric']), _defineProperty({}, "& .".concat(gridClasses['columnHeader--sortable']), styles['columnHeader--sortable']), _defineProperty({}, "& .".concat(gridClasses['columnHeader--sorted']), styles['columnHeader--sorted']), _defineProperty({}, "& .".concat(gridClasses.columnHeader), styles.columnHeader), _defineProperty({}, "& .".concat(gridClasses.columnHeaderCheckbox), styles.columnHeaderCheckbox), _defineProperty({}, "& .".concat(gridClasses.columnHeaderDraggableContainer), styles.columnHeaderDraggableContainer), _defineProperty({}, "& .".concat(gridClasses.columnHeaderTitleContainer), styles.columnHeaderTitleContainer), _defineProperty({}, "& .".concat(gridClasses['columnSeparator--resizable']), styles['columnSeparator--resizable']), _defineProperty({}, "& .".concat(gridClasses['columnSeparator--resizing']), styles['columnSeparator--resizing']), _defineProperty({}, "& .".concat(gridClasses.columnSeparator), styles.columnSeparator), _defineProperty({}, "& .".concat(gridClasses.filterIcon), styles.filterIcon), _defineProperty({}, "& .".concat(gridClasses.iconSeparator), styles.iconSeparator), _defineProperty({}, "& .".concat(gridClasses.menuIcon), styles.menuIcon), _defineProperty({}, "& .".concat(gridClasses.menuIconButton), styles.menuIconButton), _defineProperty({}, "& .".concat(gridClasses.menuOpen), styles.menuOpen), _defineProperty({}, "& .".concat(gridClasses.menuList), styles.menuList), _defineProperty({}, "& .".concat(gridClasses['row--editable']), styles['row--editable']), _defineProperty({}, "& .".concat(gridClasses['row--editing']), styles['row--editing']), _defineProperty({}, "& .".concat(gridClasses['row--dragging']), styles['row--dragging']), _defineProperty({}, "& .".concat(gridClasses.row), styles.row), _defineProperty({}, "& .".concat(gridClasses.rowReorderCellPlaceholder), styles.rowReorderCellPlaceholder), _defineProperty({}, "& .".concat(gridClasses.rowReorderCell), styles.rowReorderCell), _defineProperty({}, "& .".concat(gridClasses['rowReorderCell--draggable']), styles['rowReorderCell--draggable']), _defineProperty({}, "& .".concat(gridClasses.sortIcon), styles.sortIcon), _defineProperty({}, "& .".concat(gridClasses.withBorder), styles.withBorder), _defineProperty({}, "& .".concat(gridClasses.treeDataGroupingCell), styles.treeDataGroupingCell), _defineProperty({}, "& .".concat(gridClasses.treeDataGroupingCellToggle), styles.treeDataGroupingCellToggle), _defineProperty({}, "& .".concat(gridClasses.detailPanelToggleCell), styles.detailPanelToggleCell), _defineProperty({}, "& .".concat(gridClasses['detailPanelToggleCell--expanded']), styles['detailPanelToggleCell--expanded']), styles.root];
11
11
  }
12
- })(function (_ref42) {
12
+ })(function (_ref46) {
13
13
  var _$concat3, _extends2;
14
14
 
15
- var theme = _ref42.theme;
15
+ var theme = _ref46.theme;
16
16
  var borderColor = theme.palette.mode === 'light' ? lighten(alpha(theme.palette.divider, 1), 0.88) : darken(alpha(theme.palette.divider, 1), 0.68);
17
17
 
18
18
  var gridStyle = _extends({
@@ -189,6 +189,18 @@ export var GridRootStyles = styled('div', {
189
189
  display: 'inline-flex',
190
190
  alignItems: 'center',
191
191
  gridGap: theme.spacing(1)
192
+ }), _defineProperty(_extends2, "& .".concat(gridClasses.rowReorderCell), {
193
+ display: 'inline-flex',
194
+ flex: 1,
195
+ alignItems: 'center',
196
+ justifyContent: 'center',
197
+ opacity: theme.palette.action.disabledOpacity
198
+ }), _defineProperty(_extends2, "& .".concat(gridClasses['rowReorderCell--draggable']), {
199
+ cursor: 'move',
200
+ opacity: 1
201
+ }), _defineProperty(_extends2, "& .".concat(gridClasses.rowReorderCellContainer), {
202
+ padding: 0,
203
+ alignItems: 'stretch'
192
204
  }), _defineProperty(_extends2, "& .".concat(gridClasses.withBorder), {
193
205
  borderRight: "1px solid ".concat(borderColor)
194
206
  }), _defineProperty(_extends2, "& .".concat(gridClasses['cell--textLeft']), {
@@ -200,12 +212,21 @@ export var GridRootStyles = styled('div', {
200
212
  }), _defineProperty(_extends2, "& .".concat(gridClasses.columnHeaderDraggableContainer), {
201
213
  display: 'flex',
202
214
  width: '100%'
203
- }), _defineProperty(_extends2, "& .".concat(gridClasses['columnHeader--dragging']), {
215
+ }), _defineProperty(_extends2, "& .".concat(gridClasses.rowReorderCellPlaceholder), {
216
+ display: 'none'
217
+ }), _defineProperty(_extends2, "& .".concat(gridClasses['columnHeader--dragging'], ", & .").concat(gridClasses['row--dragging']), {
218
+ background: theme.palette.background.paper,
219
+ padding: '0 12px',
220
+ borderRadius: theme.shape.borderRadius,
221
+ opacity: theme.palette.action.disabledOpacity
222
+ }), _defineProperty(_extends2, "& .".concat(gridClasses['row--dragging']), _defineProperty({
204
223
  background: theme.palette.background.paper,
205
224
  padding: '0 12px',
206
225
  borderRadius: theme.shape.borderRadius,
207
226
  opacity: theme.palette.action.disabledOpacity
208
- }), _defineProperty(_extends2, "& .".concat(gridClasses.treeDataGroupingCell), {
227
+ }, "& .".concat(gridClasses.rowReorderCellPlaceholder), {
228
+ display: 'flex'
229
+ })), _defineProperty(_extends2, "& .".concat(gridClasses.treeDataGroupingCell), {
209
230
  display: 'flex',
210
231
  alignItems: 'center',
211
232
  width: '100%'
@@ -96,6 +96,7 @@ var GridMenu = function GridMenu(props) {
96
96
  placement = _ref3.placement;
97
97
  return /*#__PURE__*/_jsx(ClickAwayListener, {
98
98
  onClickAway: onClickAway,
99
+ mouseEvent: "onMouseDown",
99
100
  children: /*#__PURE__*/_jsx(Grow, _extends({}, TransitionProps, {
100
101
  style: {
101
102
  transformOrigin: transformOrigin[placement]
@@ -7,7 +7,7 @@ import MUISwitch from '@mui/material/Switch';
7
7
  import MUIButton from '@mui/material/Button';
8
8
  import MUITooltip from '@mui/material/Tooltip';
9
9
  import MUIPopper from '@mui/material/Popper';
10
- import { GridArrowDownwardIcon, GridArrowUpwardIcon, GridCell, GridCheckIcon, GridCloseIcon, GridColumnIcon, GridColumnMenu, GridColumnsPanel, GridFilterAltIcon, GridFilterListIcon, GridFilterPanel, GridFooter, GridHeader, GridLoadingOverlay, GridNoRowsOverlay, GridPagination, GridPanel, GridPreferencesPanel, GridRow, GridSaveAltIcon, GridSeparatorIcon, GridTableRowsIcon, GridTripleDotsVerticalIcon, GridViewHeadlineIcon, GridViewStreamIcon, GridMoreVertIcon, GridExpandMoreIcon, GridKeyboardArrowRight, GridAddIcon, GridRemoveIcon, GridColumnHeaderFilterIconButton } from '../components';
10
+ import { GridArrowDownwardIcon, GridArrowUpwardIcon, GridCell, GridCheckIcon, GridCloseIcon, GridColumnIcon, GridColumnMenu, GridColumnsPanel, GridFilterAltIcon, GridFilterListIcon, GridFilterPanel, GridFooter, GridHeader, GridLoadingOverlay, GridNoRowsOverlay, GridPagination, GridPanel, GridPreferencesPanel, GridRow, GridSaveAltIcon, GridSeparatorIcon, GridTableRowsIcon, GridTripleDotsVerticalIcon, GridViewHeadlineIcon, GridViewStreamIcon, GridMoreVertIcon, GridExpandMoreIcon, GridKeyboardArrowRight, GridAddIcon, GridRemoveIcon, GridDragIcon, GridColumnHeaderFilterIconButton } from '../components';
11
11
  import { GridColumnUnsortedIcon } from '../components/columnHeaders/GridColumnUnsortedIcon';
12
12
  import { ErrorOverlay } from '../components/ErrorOverlay';
13
13
  import { GridNoResultsOverlay } from '../components/GridNoResultsOverlay';
@@ -33,7 +33,8 @@ var DEFAULT_GRID_ICON_SLOTS_COMPONENTS = {
33
33
  GroupingCriteriaCollapseIcon: GridExpandMoreIcon,
34
34
  GroupingCriteriaExpandIcon: GridKeyboardArrowRight,
35
35
  DetailPanelExpandIcon: GridAddIcon,
36
- DetailPanelCollapseIcon: GridRemoveIcon
36
+ DetailPanelCollapseIcon: GridRemoveIcon,
37
+ RowReorderIcon: GridDragIcon
37
38
  };
38
39
  /**
39
40
  * TODO: Differentiate community and pro value and interface
@@ -2,4 +2,4 @@ import { generateUtilityClasses, generateUtilityClass } from '@mui/material';
2
2
  export function getDataGridUtilityClass(slot) {
3
3
  return generateUtilityClass('MuiDataGrid', slot);
4
4
  }
5
- export var gridClasses = generateUtilityClasses('MuiDataGrid', ['actionsCell', 'autoHeight', 'booleanCell', 'cell--editable', 'cell--editing', 'cell--textCenter', 'cell--textLeft', 'cell--textRight', 'cell--withRenderer', 'cell', 'cellContent', 'cellCheckbox', 'checkboxInput', 'columnHeader--alignCenter', 'columnHeader--alignLeft', 'columnHeader--alignRight', 'columnHeader--dragging', 'columnHeader--moving', 'columnHeader--numeric', 'columnHeader--sortable', 'columnHeader--sorted', 'columnHeader--filtered', 'columnHeader', 'columnHeaderCheckbox', 'columnHeaderDraggableContainer', 'columnHeaderDropZone', 'columnHeaderTitle', 'columnHeaderTitleContainer', 'columnHeaderTitleContainerContent', 'columnHeaders', 'columnHeadersInner', 'columnHeadersInner--scrollable', 'columnSeparator--resizable', 'columnSeparator--resizing', 'columnSeparator--sideLeft', 'columnSeparator--sideRight', 'columnSeparator', 'columnsPanel', 'columnsPanelRow', 'detailPanel', 'detailPanels', 'detailPanelToggleCell', 'detailPanelToggleCell--expanded', 'panel', 'panelHeader', 'panelWrapper', 'panelContent', 'panelFooter', 'paper', 'editBooleanCell', 'editInputCell', 'filterForm', 'filterFormDeleteIcon', 'filterFormLinkOperatorInput', 'filterFormColumnInput', 'filterFormOperatorInput', 'filterFormValueInput', 'filterIcon', 'footerContainer', 'iconButtonContainer', 'iconSeparator', 'main', 'menu', 'menuIcon', 'menuIconButton', 'menuOpen', 'menuList', 'overlay', 'root', 'row--editable', 'row--editing', 'row', 'row--lastVisible', 'rowCount', 'scrollArea--left', 'scrollArea--right', 'scrollArea', 'selectedRowCount', 'sortIcon', 'toolbarContainer', 'toolbarFilterList', 'virtualScroller', 'virtualScrollerContent', 'virtualScrollerContent--overflowed', 'virtualScrollerRenderZone', 'pinnedColumns', 'pinnedColumns--left', 'pinnedColumns--right', 'pinnedColumnHeaders', 'pinnedColumnHeaders--left', 'pinnedColumnHeaders--right', 'withBorder', 'treeDataGroupingCell', 'treeDataGroupingCellToggle', 'groupingCriteriaCell', 'groupingCriteriaCellToggle']);
5
+ export var gridClasses = generateUtilityClasses('MuiDataGrid', ['actionsCell', 'autoHeight', 'booleanCell', 'cell--editable', 'cell--editing', 'cell--textCenter', 'cell--textLeft', 'cell--textRight', 'cell--withRenderer', 'cell', 'cellContent', 'cellCheckbox', 'checkboxInput', 'columnHeader--alignCenter', 'columnHeader--alignLeft', 'columnHeader--alignRight', 'columnHeader--dragging', 'columnHeader--moving', 'columnHeader--numeric', 'columnHeader--sortable', 'columnHeader--sorted', 'columnHeader--filtered', 'columnHeader', 'columnHeaderCheckbox', 'columnHeaderDraggableContainer', 'columnHeaderDropZone', 'columnHeaderTitle', 'columnHeaderTitleContainer', 'columnHeaderTitleContainerContent', 'columnHeaders', 'columnHeadersInner', 'columnHeadersInner--scrollable', 'columnSeparator--resizable', 'columnSeparator--resizing', 'columnSeparator--sideLeft', 'columnSeparator--sideRight', 'columnSeparator', 'columnsPanel', 'columnsPanelRow', 'detailPanel', 'detailPanels', 'detailPanelToggleCell', 'detailPanelToggleCell--expanded', 'panel', 'panelHeader', 'panelWrapper', 'panelContent', 'panelFooter', 'paper', 'editBooleanCell', 'editInputCell', 'filterForm', 'filterFormDeleteIcon', 'filterFormLinkOperatorInput', 'filterFormColumnInput', 'filterFormOperatorInput', 'filterFormValueInput', 'filterIcon', 'footerContainer', 'iconButtonContainer', 'iconSeparator', 'main', 'menu', 'menuIcon', 'menuIconButton', 'menuOpen', 'menuList', 'overlay', 'root', 'row', 'row--editable', 'row--editing', 'row--lastVisible', 'row--dragging', 'rowReorderCellPlaceholder', 'rowCount', 'rowReorderCellContainer', 'rowReorderCell', 'rowReorderCell--draggable', 'scrollArea--left', 'scrollArea--right', 'scrollArea', 'selectedRowCount', 'sortIcon', 'toolbarContainer', 'toolbarFilterList', 'virtualScroller', 'virtualScrollerContent', 'virtualScrollerContent--overflowed', 'virtualScrollerRenderZone', 'pinnedColumns', 'pinnedColumns--left', 'pinnedColumns--right', 'pinnedColumnHeaders', 'pinnedColumnHeaders--left', 'pinnedColumnHeaders--right', 'withBorder', 'treeDataGroupingCell', 'treeDataGroupingCellToggle', 'groupingCriteriaCell', 'groupingCriteriaCellToggle']);
@@ -115,5 +115,7 @@ export var GRID_DEFAULT_LOCALE_TEXT = {
115
115
  expandDetailPanel: 'Expand',
116
116
  collapseDetailPanel: 'Collapse',
117
117
  // Used core components translation keys
118
- MuiTablePagination: {}
118
+ MuiTablePagination: {},
119
+ // Row reordering text
120
+ rowReorderingHeaderName: 'Row reordering'
119
121
  };
@@ -81,5 +81,6 @@ export var useGridColumnMenu = function useGridColumnMenu(apiRef) {
81
81
  */
82
82
 
83
83
  useGridApiEventHandler(apiRef, GridEvents.columnResizeStart, hideColumnMenu);
84
- useGridApiEventHandler(apiRef, GridEvents.rowsScroll, hideColumnMenu);
84
+ useGridApiEventHandler(apiRef, GridEvents.virtualScrollerWheel, apiRef.current.hideColumnMenu);
85
+ useGridApiEventHandler(apiRef, GridEvents.virtualScrollerTouchMove, apiRef.current.hideColumnMenu);
85
86
  };
@@ -245,12 +245,37 @@ export var useGridRows = function useGridRows(apiRef, props) {
245
245
 
246
246
  return (_gridRowTreeSelector$ = gridRowTreeSelector(apiRef)[id]) != null ? _gridRowTreeSelector$ : null;
247
247
  }, [apiRef]);
248
+ var setRowIndex = React.useCallback(function (rowId, targetIndex) {
249
+ var allRows = gridRowIdsSelector(apiRef);
250
+ var oldIndex = allRows.findIndex(function (row) {
251
+ return row === rowId;
252
+ });
253
+
254
+ if (oldIndex === targetIndex) {
255
+ return;
256
+ }
257
+
258
+ logger.debug("Moving row ".concat(rowId, " to index ").concat(targetIndex));
259
+
260
+ var updatedRows = _toConsumableArray(allRows);
261
+
262
+ updatedRows.splice(targetIndex, 0, updatedRows.splice(oldIndex, 1)[0]);
263
+ apiRef.current.setState(function (state) {
264
+ return _extends({}, state, {
265
+ rows: _extends({}, state.rows, {
266
+ ids: updatedRows
267
+ })
268
+ });
269
+ });
270
+ apiRef.current.applySorting();
271
+ }, [apiRef, logger]);
248
272
  var rowApi = {
249
273
  getRow: getRow,
250
274
  getRowModels: getRowModels,
251
275
  getRowsCount: getRowsCount,
252
276
  getAllRowIds: getAllRowIds,
253
277
  setRows: setRows,
278
+ setRowIndex: setRowIndex,
254
279
  updateRows: updateRows,
255
280
  setRowChildrenExpansion: setRowChildrenExpansion,
256
281
  getRowNode: getRowNode,
@@ -231,6 +231,14 @@ export var useGridVirtualScroller = function useGridVirtualScroller(props) {
231
231
  }
232
232
  };
233
233
 
234
+ var handleWheel = function handleWheel(event) {
235
+ apiRef.current.publishEvent(GridEvents.virtualScrollerWheel, {}, event);
236
+ };
237
+
238
+ var handleTouchMove = function handleTouchMove(event) {
239
+ apiRef.current.publishEvent(GridEvents.virtualScrollerTouchMove, {}, event);
240
+ };
241
+
234
242
  var getRows = function getRows() {
235
243
  var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
236
244
  renderContext: renderContext
@@ -392,6 +400,8 @@ export var useGridVirtualScroller = function useGridVirtualScroller(props) {
392
400
  return _extends({
393
401
  ref: handleRef,
394
402
  onScroll: handleScroll,
403
+ onWheel: handleWheel,
404
+ onTouchMove: handleTouchMove,
395
405
  style: _extends({}, style, rootStyle)
396
406
  }, other);
397
407
  },
package/legacy/index.js CHANGED
@@ -1,4 +1,4 @@
1
- /** @license MUI v5.9.0
1
+ /** @license MUI v5.10.0
2
2
  *
3
3
  * This source code is licensed under the MIT license found in the
4
4
  * LICENSE file in the root directory of this source tree.
@@ -115,6 +115,8 @@ var arSDGrid = {
115
115
  },
116
116
  // Master/detail
117
117
  expandDetailPanel: 'توسيع',
118
- collapseDetailPanel: 'طوي'
118
+ collapseDetailPanel: 'طوي' // Row reordering text
119
+ // rowReorderingHeaderName: 'Row reordering',
120
+
119
121
  };
120
122
  export var arSD = getGridLocalization(arSDGrid, arSDCore);
@@ -115,6 +115,8 @@ var bgBGGrid = {
115
115
  },
116
116
  // Master/detail
117
117
  expandDetailPanel: 'Разгъване',
118
- collapseDetailPanel: 'Свиване'
118
+ collapseDetailPanel: 'Свиване' // Row reordering text
119
+ // rowReorderingHeaderName: 'Row reordering',
120
+
119
121
  };
120
122
  export var bgBG = getGridLocalization(bgBGGrid, bgBGCore);
@@ -142,6 +142,8 @@ var csCZGrid = {
142
142
  } // Master/detail
143
143
  // expandDetailPanel: 'Expand',
144
144
  // collapseDetailPanel: 'Collapse',
145
+ // Row reordering text
146
+ // rowReorderingHeaderName: 'Row reordering',
145
147
 
146
148
  };
147
149
  export var csCZ = getGridLocalization(csCZGrid, csCZCore);
@@ -115,6 +115,8 @@ var daDKGrid = {
115
115
  },
116
116
  // Master/detail
117
117
  expandDetailPanel: 'Udvid',
118
- collapseDetailPanel: 'Kollaps'
118
+ collapseDetailPanel: 'Kollaps' // Row reordering text
119
+ // rowReorderingHeaderName: 'Row reordering',
120
+
119
121
  };
120
122
  export var daDK = getGridLocalization(daDKGrid, daDKCore);
@@ -115,6 +115,8 @@ var deDEGrid = {
115
115
  },
116
116
  // Master/detail
117
117
  expandDetailPanel: 'Aufklappen',
118
- collapseDetailPanel: 'Zuklappen'
118
+ collapseDetailPanel: 'Zuklappen' // Row reordering text
119
+ // rowReorderingHeaderName: 'Row reordering',
120
+
119
121
  };
120
122
  export var deDE = getGridLocalization(deDEGrid, deDECore);
@@ -110,6 +110,8 @@ var elGRGrid = {
110
110
  // Master/detail
111
111
  // expandDetailPanel: 'Expand',
112
112
  // collapseDetailPanel: 'Collapse',
113
+ // Row reordering text
114
+ // rowReorderingHeaderName: 'Row reordering',
113
115
 
114
116
  };
115
117
  export var elGR = getGridLocalization(elGRGrid);
@@ -111,6 +111,8 @@ var esESGrid = {
111
111
  // Master/detail
112
112
  // expandDetailPanel: 'Expand',
113
113
  // collapseDetailPanel: 'Collapse',
114
+ // Row reordering text
115
+ // rowReorderingHeaderName: 'Row reordering',
114
116
 
115
117
  };
116
118
  export var esES = getGridLocalization(esESGrid, esESCore);