@mui/x-data-grid 5.7.0 → 5.8.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 (298) hide show
  1. package/CHANGELOG.md +74 -0
  2. package/DataGrid/DataGrid.d.ts +8 -3
  3. package/DataGrid/DataGrid.js +27 -4
  4. package/DataGrid/useDataGridComponent.js +2 -4
  5. package/DataGrid/useDataGridProps.d.ts +2 -1
  6. package/colDef/gridBooleanColDef.d.ts +1 -1
  7. package/colDef/gridBooleanOperators.d.ts +1 -1
  8. package/colDef/gridDateColDef.d.ts +5 -9
  9. package/colDef/gridDateColDef.js +2 -2
  10. package/colDef/gridDateOperators.d.ts +1 -1
  11. package/{models/colDef → colDef}/gridDefaultColumnTypes.d.ts +1 -1
  12. package/{models/colDef → colDef}/gridDefaultColumnTypes.js +6 -6
  13. package/colDef/gridNumericColDef.d.ts +1 -1
  14. package/colDef/gridNumericOperators.d.ts +2 -2
  15. package/colDef/gridStringColDef.d.ts +1 -1
  16. package/colDef/gridStringOperators.d.ts +1 -1
  17. package/colDef/index.d.ts +1 -0
  18. package/colDef/index.js +2 -1
  19. package/components/GridRow.js +1 -1
  20. package/components/cell/GridCell.d.ts +4 -4
  21. package/components/cell/GridCell.js +2 -2
  22. package/components/cell/GridEditInputCell.js +2 -2
  23. package/components/cell/GridEditSingleSelectCell.js +2 -2
  24. package/components/columnHeaders/GridColumnHeaderFilterIconButton.d.ts +12 -0
  25. package/components/columnHeaders/{ColumnHeaderFilterIcon.js → GridColumnHeaderFilterIconButton.js} +22 -4
  26. package/components/columnHeaders/GridColumnHeaderItem.js +5 -5
  27. package/components/columnHeaders/index.d.ts +1 -0
  28. package/components/columnHeaders/index.js +1 -0
  29. package/components/columnSelection/GridCellCheckboxRenderer.js +2 -2
  30. package/components/columnSelection/GridHeaderCheckbox.d.ts +1 -1
  31. package/components/containers/GridRoot.js +29 -17
  32. package/components/menu/columnMenu/GridColumnMenu.js +1 -1
  33. package/components/panel/GridPanel.d.ts +2 -2
  34. package/components/panel/GridPreferencesPanel.js +1 -1
  35. package/constants/defaultGridSlotsComponents.js +2 -1
  36. package/constants/gridClasses.d.ts +15 -3
  37. package/hooks/core/index.d.ts +1 -1
  38. package/hooks/core/{preProcessing/gridPreProcessingApi.d.ts → pipeProcessing/gridPipeProcessingApi.d.ts} +19 -18
  39. package/hooks/core/{preProcessing/gridPreProcessingApi.js → pipeProcessing/gridPipeProcessingApi.js} +0 -0
  40. package/hooks/core/pipeProcessing/index.d.ts +3 -0
  41. package/hooks/core/pipeProcessing/index.js +3 -0
  42. package/hooks/core/pipeProcessing/useGridPipeProcessing.d.ts +27 -0
  43. package/hooks/core/pipeProcessing/useGridPipeProcessing.js +74 -0
  44. package/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.d.ts +7 -0
  45. package/hooks/core/{preProcessing/useGridRegisterPreProcessor.js → pipeProcessing/useGridRegisterPipeProcessor.js} +2 -2
  46. package/hooks/core/strategyProcessing/useGridStrategyProcessing.d.ts +27 -16
  47. package/hooks/core/strategyProcessing/useGridStrategyProcessing.js +26 -15
  48. package/hooks/core/useGridInitialization.js +2 -2
  49. package/hooks/features/columnHeaders/useGridColumnHeaders.js +1 -1
  50. package/hooks/features/columns/gridColumnsSelector.d.ts +6 -6
  51. package/hooks/features/columns/gridColumnsUtils.d.ts +3 -3
  52. package/hooks/features/columns/gridColumnsUtils.js +49 -17
  53. package/hooks/features/columns/useGridColumns.js +36 -27
  54. package/hooks/features/dimensions/gridDimensionsApi.d.ts +5 -0
  55. package/hooks/features/dimensions/useGridDimensions.js +2 -1
  56. package/hooks/features/editRows/useGridCellEditing.new.d.ts +1 -1
  57. package/hooks/features/editRows/useGridCellEditing.new.js +22 -7
  58. package/hooks/features/editRows/useGridRowEditing.new.d.ts +1 -1
  59. package/hooks/features/editRows/useGridRowEditing.new.js +22 -7
  60. package/hooks/features/events/useGridEvents.d.ts +1 -1
  61. package/hooks/features/events/useGridEvents.js +2 -0
  62. package/hooks/features/filter/gridFilterSelector.d.ts +3 -9
  63. package/hooks/features/filter/useGridFilter.js +4 -4
  64. package/hooks/features/{keyboard → keyboardNavigation}/useGridKeyboardNavigation.d.ts +2 -5
  65. package/hooks/features/{keyboard → keyboardNavigation}/useGridKeyboardNavigation.js +27 -6
  66. package/hooks/features/pagination/gridPaginationSelector.d.ts +1 -3
  67. package/hooks/features/pagination/useGridPage.js +9 -4
  68. package/hooks/features/pagination/useGridPageSize.js +3 -3
  69. package/hooks/features/preferencesPanel/useGridPreferencesPanel.js +18 -5
  70. package/hooks/features/rows/gridRowsSelector.d.ts +1 -1
  71. package/hooks/features/rows/gridRowsUtils.d.ts +8 -0
  72. package/hooks/features/rows/gridRowsUtils.js +11 -0
  73. package/hooks/features/rows/index.d.ts +1 -0
  74. package/hooks/features/rows/index.js +1 -1
  75. package/hooks/features/rows/useGridRows.js +3 -3
  76. package/hooks/features/rows/useGridRowsMeta.js +3 -3
  77. package/hooks/features/scroll/useGridScroll.js +4 -13
  78. package/hooks/features/selection/gridSelectionSelector.d.ts +1 -3
  79. package/hooks/features/selection/useGridSelection.d.ts +4 -2
  80. package/hooks/features/selection/useGridSelection.js +72 -25
  81. package/hooks/features/selection/useGridSelectionPreProcessors.js +2 -2
  82. package/hooks/features/sorting/gridSortingSelector.d.ts +1 -3
  83. package/hooks/features/sorting/gridSortingUtils.d.ts +1 -2
  84. package/hooks/features/sorting/useGridSorting.js +3 -3
  85. package/hooks/features/statePersistence/useGridStatePersistence.js +2 -2
  86. package/hooks/utils/useGridRootProps.d.ts +1 -1
  87. package/hooks/utils/useGridVisibleRows.d.ts +2 -2
  88. package/index.js +1 -1
  89. package/internals/index.d.ts +3 -6
  90. package/internals/index.js +2 -3
  91. package/legacy/DataGrid/DataGrid.js +27 -4
  92. package/legacy/DataGrid/useDataGridComponent.js +2 -4
  93. package/legacy/colDef/gridDateColDef.js +2 -2
  94. package/legacy/{models/colDef → colDef}/gridDefaultColumnTypes.js +6 -6
  95. package/legacy/colDef/index.js +2 -1
  96. package/legacy/components/GridRow.js +1 -1
  97. package/legacy/components/cell/GridCell.js +2 -2
  98. package/legacy/components/cell/GridEditInputCell.js +2 -2
  99. package/legacy/components/cell/GridEditSingleSelectCell.js +2 -2
  100. package/legacy/components/columnHeaders/{ColumnHeaderFilterIcon.js → GridColumnHeaderFilterIconButton.js} +22 -4
  101. package/legacy/components/columnHeaders/GridColumnHeaderItem.js +5 -5
  102. package/legacy/components/columnHeaders/index.js +1 -0
  103. package/legacy/components/columnSelection/GridCellCheckboxRenderer.js +2 -2
  104. package/legacy/components/containers/GridRoot.js +34 -17
  105. package/legacy/components/menu/columnMenu/GridColumnMenu.js +1 -1
  106. package/legacy/components/panel/GridPreferencesPanel.js +1 -1
  107. package/legacy/constants/defaultGridSlotsComponents.js +2 -1
  108. package/legacy/hooks/core/{preProcessing/gridPreProcessingApi.js → pipeProcessing/gridPipeProcessingApi.js} +0 -0
  109. package/legacy/hooks/core/pipeProcessing/index.js +3 -0
  110. package/legacy/hooks/core/pipeProcessing/useGridPipeProcessing.js +83 -0
  111. package/legacy/hooks/core/{preProcessing/useGridRegisterPreProcessor.js → pipeProcessing/useGridRegisterPipeProcessor.js} +2 -2
  112. package/legacy/hooks/core/strategyProcessing/useGridStrategyProcessing.js +26 -15
  113. package/legacy/hooks/core/useGridInitialization.js +2 -2
  114. package/legacy/hooks/features/columnHeaders/useGridColumnHeaders.js +1 -1
  115. package/legacy/hooks/features/columns/gridColumnsUtils.js +49 -18
  116. package/legacy/hooks/features/columns/useGridColumns.js +36 -27
  117. package/legacy/hooks/features/dimensions/useGridDimensions.js +2 -1
  118. package/legacy/hooks/features/editRows/useGridCellEditing.new.js +22 -7
  119. package/legacy/hooks/features/editRows/useGridRowEditing.new.js +22 -7
  120. package/legacy/hooks/features/events/useGridEvents.js +2 -0
  121. package/legacy/hooks/features/filter/useGridFilter.js +4 -4
  122. package/legacy/hooks/features/{keyboard → keyboardNavigation}/useGridKeyboardNavigation.js +27 -6
  123. package/legacy/hooks/features/pagination/useGridPage.js +11 -4
  124. package/legacy/hooks/features/pagination/useGridPageSize.js +3 -3
  125. package/legacy/hooks/features/preferencesPanel/useGridPreferencesPanel.js +18 -5
  126. package/legacy/hooks/features/rows/gridRowsUtils.js +13 -0
  127. package/legacy/hooks/features/rows/index.js +1 -1
  128. package/legacy/hooks/features/rows/useGridRows.js +5 -5
  129. package/legacy/hooks/features/rows/useGridRowsMeta.js +3 -3
  130. package/legacy/hooks/features/scroll/useGridScroll.js +4 -13
  131. package/legacy/hooks/features/selection/useGridSelection.js +74 -25
  132. package/legacy/hooks/features/selection/useGridSelectionPreProcessors.js +2 -2
  133. package/legacy/hooks/features/sorting/useGridSorting.js +3 -3
  134. package/legacy/hooks/features/statePersistence/useGridStatePersistence.js +2 -2
  135. package/legacy/index.js +1 -1
  136. package/legacy/internals/index.js +2 -3
  137. package/legacy/locales/daDK.js +36 -32
  138. package/legacy/models/colDef/index.js +1 -2
  139. package/legacy/models/events/gridEvents.js +4 -2
  140. package/legacy/models/gridRows.js +1 -33
  141. package/legacy/models/index.js +2 -2
  142. package/{modern/hooks/core/preProcessing/gridPreProcessingApi.js → legacy/models/params/gridPreferencePanelParams.js} +0 -0
  143. package/legacy/models/params/index.js +2 -1
  144. package/locales/daDK.js +32 -32
  145. package/models/api/gridApiCommon.d.ts +2 -2
  146. package/models/api/gridEditingApi.d.ts +2 -2
  147. package/models/api/gridParamsApi.d.ts +5 -5
  148. package/models/api/gridRowApi.d.ts +2 -2
  149. package/models/colDef/gridColDef.d.ts +33 -28
  150. package/models/colDef/index.d.ts +0 -1
  151. package/models/colDef/index.js +1 -2
  152. package/models/events/gridEventLookup.d.ts +12 -6
  153. package/models/events/gridEvents.d.ts +11 -5
  154. package/models/events/gridEvents.js +4 -2
  155. package/models/gridCell.d.ts +1 -0
  156. package/models/gridEditRowModel.d.ts +1 -1
  157. package/models/gridFilterOperator.d.ts +3 -2
  158. package/models/gridRows.d.ts +10 -18
  159. package/models/gridRows.js +1 -31
  160. package/models/gridSlotsComponent.d.ts +5 -0
  161. package/models/gridSlotsComponentsProps.d.ts +1 -0
  162. package/models/gridSortModel.d.ts +3 -4
  163. package/models/index.d.ts +1 -1
  164. package/models/index.js +2 -2
  165. package/models/params/gridCellParams.d.ts +14 -14
  166. package/models/params/gridColumnHeaderParams.d.ts +3 -2
  167. package/models/params/gridEditCellParams.d.ts +2 -3
  168. package/models/params/gridPreferencePanelParams.d.ts +3 -0
  169. package/models/params/gridPreferencePanelParams.js +1 -0
  170. package/models/params/gridRowParams.d.ts +7 -8
  171. package/models/params/gridValueOptionsParams.d.ts +3 -3
  172. package/models/params/index.d.ts +1 -0
  173. package/models/params/index.js +2 -1
  174. package/models/props/DataGridProps.d.ts +36 -16
  175. package/modern/DataGrid/DataGrid.js +27 -4
  176. package/modern/DataGrid/useDataGridComponent.js +2 -4
  177. package/modern/colDef/gridDateColDef.js +2 -2
  178. package/modern/{models/colDef → colDef}/gridDefaultColumnTypes.js +6 -6
  179. package/modern/colDef/index.js +2 -1
  180. package/modern/components/GridRow.js +1 -1
  181. package/modern/components/cell/GridCell.js +2 -2
  182. package/modern/components/cell/GridEditInputCell.js +2 -2
  183. package/modern/components/cell/GridEditSingleSelectCell.js +2 -2
  184. package/modern/components/columnHeaders/{ColumnHeaderFilterIcon.js → GridColumnHeaderFilterIconButton.js} +22 -4
  185. package/modern/components/columnHeaders/GridColumnHeaderItem.js +3 -3
  186. package/modern/components/columnHeaders/index.js +1 -0
  187. package/modern/components/columnSelection/GridCellCheckboxRenderer.js +2 -2
  188. package/modern/components/containers/GridRoot.js +29 -17
  189. package/modern/components/menu/columnMenu/GridColumnMenu.js +1 -1
  190. package/modern/components/panel/GridPreferencesPanel.js +1 -1
  191. package/modern/constants/defaultGridSlotsComponents.js +2 -1
  192. package/modern/hooks/core/pipeProcessing/gridPipeProcessingApi.js +1 -0
  193. package/modern/hooks/core/pipeProcessing/index.js +3 -0
  194. package/modern/hooks/core/pipeProcessing/useGridPipeProcessing.js +74 -0
  195. package/modern/hooks/core/{preProcessing/useGridRegisterPreProcessor.js → pipeProcessing/useGridRegisterPipeProcessor.js} +2 -2
  196. package/modern/hooks/core/strategyProcessing/useGridStrategyProcessing.js +26 -15
  197. package/modern/hooks/core/useGridInitialization.js +2 -2
  198. package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +1 -1
  199. package/modern/hooks/features/columns/gridColumnsUtils.js +49 -17
  200. package/modern/hooks/features/columns/useGridColumns.js +36 -27
  201. package/modern/hooks/features/dimensions/useGridDimensions.js +2 -1
  202. package/modern/hooks/features/editRows/useGridCellEditing.new.js +22 -7
  203. package/modern/hooks/features/editRows/useGridRowEditing.new.js +22 -7
  204. package/modern/hooks/features/events/useGridEvents.js +2 -0
  205. package/modern/hooks/features/filter/useGridFilter.js +4 -4
  206. package/modern/hooks/features/{keyboard → keyboardNavigation}/useGridKeyboardNavigation.js +27 -6
  207. package/modern/hooks/features/pagination/useGridPage.js +9 -4
  208. package/modern/hooks/features/pagination/useGridPageSize.js +3 -3
  209. package/modern/hooks/features/preferencesPanel/useGridPreferencesPanel.js +18 -5
  210. package/modern/hooks/features/rows/gridRowsUtils.js +11 -0
  211. package/modern/hooks/features/rows/index.js +1 -1
  212. package/modern/hooks/features/rows/useGridRows.js +1 -1
  213. package/modern/hooks/features/rows/useGridRowsMeta.js +3 -3
  214. package/modern/hooks/features/scroll/useGridScroll.js +4 -9
  215. package/modern/hooks/features/selection/useGridSelection.js +72 -25
  216. package/modern/hooks/features/selection/useGridSelectionPreProcessors.js +2 -2
  217. package/modern/hooks/features/sorting/useGridSorting.js +3 -3
  218. package/modern/hooks/features/statePersistence/useGridStatePersistence.js +2 -2
  219. package/modern/index.js +1 -1
  220. package/modern/internals/index.js +2 -3
  221. package/modern/locales/daDK.js +32 -32
  222. package/modern/models/colDef/index.js +1 -2
  223. package/modern/models/events/gridEvents.js +4 -2
  224. package/modern/models/gridRows.js +1 -31
  225. package/modern/models/index.js +2 -2
  226. package/modern/models/params/gridPreferencePanelParams.js +1 -0
  227. package/modern/models/params/index.js +2 -1
  228. package/node/DataGrid/DataGrid.js +27 -4
  229. package/node/DataGrid/useDataGridComponent.js +2 -5
  230. package/node/colDef/gridDateColDef.js +2 -2
  231. package/node/{models/colDef → colDef}/gridDefaultColumnTypes.js +6 -6
  232. package/node/colDef/index.js +13 -0
  233. package/node/components/GridRow.js +1 -1
  234. package/node/components/cell/GridCell.js +2 -2
  235. package/node/components/cell/GridEditInputCell.js +2 -2
  236. package/node/components/cell/GridEditSingleSelectCell.js +2 -2
  237. package/node/components/columnHeaders/{ColumnHeaderFilterIcon.js → GridColumnHeaderFilterIconButton.js} +23 -5
  238. package/node/components/columnHeaders/GridColumnHeaderItem.js +5 -6
  239. package/node/components/columnHeaders/index.js +13 -0
  240. package/node/components/columnSelection/GridCellCheckboxRenderer.js +2 -2
  241. package/node/components/containers/GridRoot.js +28 -17
  242. package/node/components/menu/columnMenu/GridColumnMenu.js +1 -1
  243. package/node/components/panel/GridPreferencesPanel.js +1 -1
  244. package/node/constants/defaultGridSlotsComponents.js +1 -0
  245. package/node/hooks/core/{preProcessing/gridPreProcessingApi.js → pipeProcessing/gridPipeProcessingApi.js} +0 -0
  246. package/node/hooks/core/pipeProcessing/index.js +44 -0
  247. package/node/hooks/core/pipeProcessing/useGridPipeProcessing.js +93 -0
  248. package/node/hooks/core/{preProcessing/useGridRegisterPreProcessor.js → pipeProcessing/useGridRegisterPipeProcessor.js} +4 -4
  249. package/node/hooks/core/strategyProcessing/useGridStrategyProcessing.js +26 -15
  250. package/node/hooks/core/useGridInitialization.js +2 -2
  251. package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +1 -1
  252. package/node/hooks/features/columns/gridColumnsUtils.js +54 -21
  253. package/node/hooks/features/columns/useGridColumns.js +36 -27
  254. package/node/hooks/features/dimensions/useGridDimensions.js +2 -1
  255. package/node/hooks/features/editRows/useGridCellEditing.new.js +24 -7
  256. package/node/hooks/features/editRows/useGridRowEditing.new.js +24 -7
  257. package/node/hooks/features/events/useGridEvents.js +2 -0
  258. package/node/hooks/features/filter/useGridFilter.js +4 -4
  259. package/node/hooks/features/{keyboard → keyboardNavigation}/useGridKeyboardNavigation.js +29 -6
  260. package/node/hooks/features/pagination/useGridPage.js +8 -3
  261. package/node/hooks/features/pagination/useGridPageSize.js +3 -3
  262. package/node/hooks/features/preferencesPanel/useGridPreferencesPanel.js +20 -5
  263. package/node/hooks/features/rows/gridRowsUtils.js +18 -0
  264. package/node/hooks/features/rows/index.js +15 -1
  265. package/node/hooks/features/rows/useGridRows.js +5 -5
  266. package/node/hooks/features/rows/useGridRowsMeta.js +3 -3
  267. package/node/hooks/features/scroll/useGridScroll.js +3 -13
  268. package/node/hooks/features/selection/useGridSelection.js +71 -24
  269. package/node/hooks/features/selection/useGridSelectionPreProcessors.js +2 -2
  270. package/node/hooks/features/sorting/useGridSorting.js +3 -3
  271. package/node/hooks/features/statePersistence/useGridStatePersistence.js +2 -2
  272. package/node/index.js +1 -1
  273. package/node/internals/index.js +4 -12
  274. package/node/locales/daDK.js +32 -32
  275. package/node/models/colDef/index.js +0 -13
  276. package/node/models/events/gridEvents.js +4 -2
  277. package/node/models/gridRows.js +1 -34
  278. package/node/models/index.js +13 -13
  279. package/node/models/params/gridPreferencePanelParams.js +5 -0
  280. package/node/models/params/index.js +13 -0
  281. package/package.json +1 -1
  282. package/components/columnHeaders/ColumnHeaderFilterIcon.d.ts +0 -5
  283. package/hooks/core/preProcessing/index.d.ts +0 -3
  284. package/hooks/core/preProcessing/index.js +0 -3
  285. package/hooks/core/preProcessing/useGridPreProcessing.d.ts +0 -6
  286. package/hooks/core/preProcessing/useGridPreProcessing.js +0 -53
  287. package/hooks/core/preProcessing/useGridRegisterPreProcessor.d.ts +0 -7
  288. package/hooks/features/keyboard/useGridKeyboard.d.ts +0 -10
  289. package/hooks/features/keyboard/useGridKeyboard.js +0 -70
  290. package/legacy/hooks/core/preProcessing/index.js +0 -3
  291. package/legacy/hooks/core/preProcessing/useGridPreProcessing.js +0 -62
  292. package/legacy/hooks/features/keyboard/useGridKeyboard.js +0 -70
  293. package/modern/hooks/core/preProcessing/index.js +0 -3
  294. package/modern/hooks/core/preProcessing/useGridPreProcessing.js +0 -53
  295. package/modern/hooks/features/keyboard/useGridKeyboard.js +0 -70
  296. package/node/hooks/core/preProcessing/index.js +0 -44
  297. package/node/hooks/core/preProcessing/useGridPreProcessing.js +0 -72
  298. package/node/hooks/features/keyboard/useGridKeyboard.js +0 -91
@@ -11,7 +11,7 @@ exports.mergeColumnsState = exports.hydrateColumnsWidth = exports.getGridColDef
11
11
 
12
12
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
13
 
14
- var _models = require("../../../models");
14
+ var _colDef = require("../../../colDef");
15
15
 
16
16
  var _gridColumnsSelector = require("./gridColumnsSelector");
17
17
 
@@ -21,12 +21,12 @@ const COLUMNS_DIMENSION_PROPERTIES = ['maxWidth', 'minWidth', 'width', 'flex'];
21
21
  exports.COLUMNS_DIMENSION_PROPERTIES = COLUMNS_DIMENSION_PROPERTIES;
22
22
 
23
23
  const computeColumnTypes = (customColumnTypes = {}) => {
24
- const mergedColumnTypes = (0, _extends2.default)({}, (0, _models.getGridDefaultColumnTypes)());
24
+ const mergedColumnTypes = (0, _extends2.default)({}, (0, _colDef.getGridDefaultColumnTypes)());
25
25
  Object.entries(customColumnTypes).forEach(([colType, colTypeDef]) => {
26
26
  if (mergedColumnTypes[colType]) {
27
27
  mergedColumnTypes[colType] = (0, _extends2.default)({}, mergedColumnTypes[colType], colTypeDef);
28
28
  } else {
29
- mergedColumnTypes[colType] = (0, _extends2.default)({}, mergedColumnTypes[colTypeDef.extendType || _models.DEFAULT_GRID_COL_TYPE_KEY], colTypeDef);
29
+ mergedColumnTypes[colType] = (0, _extends2.default)({}, mergedColumnTypes[colTypeDef.extendType || _colDef.DEFAULT_GRID_COL_TYPE_KEY], colTypeDef);
30
30
  }
31
31
  });
32
32
  return mergedColumnTypes;
@@ -247,7 +247,7 @@ exports.applyInitialState = applyInitialState;
247
247
 
248
248
  const getGridColDef = (columnTypes, type) => {
249
249
  if (!type) {
250
- return columnTypes[_models.DEFAULT_GRID_COL_TYPE_KEY];
250
+ return columnTypes[_colDef.DEFAULT_GRID_COL_TYPE_KEY];
251
251
  }
252
252
 
253
253
  if (process.env.NODE_ENV !== 'production') {
@@ -258,7 +258,7 @@ const getGridColDef = (columnTypes, type) => {
258
258
  }
259
259
 
260
260
  if (!columnTypes[type]) {
261
- return columnTypes[_models.DEFAULT_GRID_COL_TYPE_KEY];
261
+ return columnTypes[_colDef.DEFAULT_GRID_COL_TYPE_KEY];
262
262
  }
263
263
 
264
264
  return columnTypes[type];
@@ -270,7 +270,7 @@ const createColumnsState = ({
270
270
  apiRef,
271
271
  columnsToUpsert,
272
272
  initialState,
273
- columnsTypes,
273
+ columnTypes,
274
274
  currentColumnVisibilityModel = (0, _gridColumnsSelector.gridColumnVisibilityModelSelector)(apiRef),
275
275
  shouldRegenColumnVisibilityModelFromColumns,
276
276
  keepOnlyColumnsToUpsert = false
@@ -280,7 +280,7 @@ const createColumnsState = ({
280
280
  const isInsideStateInitializer = !apiRef.current.state.columns;
281
281
  let columnsStateWithoutColumnVisibilityModel;
282
282
 
283
- if (isInsideStateInitializer || keepOnlyColumnsToUpsert) {
283
+ if (isInsideStateInitializer) {
284
284
  columnsStateWithoutColumnVisibilityModel = {
285
285
  all: [],
286
286
  lookup: {}
@@ -288,31 +288,64 @@ const createColumnsState = ({
288
288
  } else {
289
289
  const currentState = (0, _gridColumnsSelector.gridColumnsSelector)(apiRef.current.state);
290
290
  columnsStateWithoutColumnVisibilityModel = {
291
- all: [...currentState.all],
292
- lookup: (0, _extends2.default)({}, currentState.lookup)
291
+ all: keepOnlyColumnsToUpsert ? [] : [...currentState.all],
292
+ lookup: (0, _extends2.default)({}, currentState.lookup) // Will be cleaned later if keepOnlyColumnsToUpsert=true
293
+
293
294
  };
294
295
  }
295
296
 
297
+ let columnsToKeep = {};
298
+
299
+ if (keepOnlyColumnsToUpsert && !isInsideStateInitializer) {
300
+ columnsToKeep = Object.keys(columnsStateWithoutColumnVisibilityModel.lookup).reduce((acc, key) => (0, _extends2.default)({}, acc, {
301
+ [key]: false
302
+ }), {});
303
+ }
304
+
296
305
  const columnsToUpsertLookup = {};
297
306
  columnsToUpsert.forEach(newColumn => {
298
- columnsToUpsertLookup[newColumn.field] = true;
299
-
300
- if (columnsStateWithoutColumnVisibilityModel.lookup[newColumn.field] == null) {
307
+ const {
308
+ field
309
+ } = newColumn;
310
+ columnsToUpsertLookup[field] = true;
311
+ columnsToKeep[field] = true;
312
+ let existingState = columnsStateWithoutColumnVisibilityModel.lookup[field];
313
+
314
+ if (existingState == null) {
301
315
  // New Column
302
- columnsStateWithoutColumnVisibilityModel.lookup[newColumn.field] = (0, _extends2.default)({}, getGridColDef(columnsTypes, newColumn.type), newColumn);
303
- columnsStateWithoutColumnVisibilityModel.all.push(newColumn.field);
304
- } else {
305
- const mergedColumn = (0, _extends2.default)({}, columnsStateWithoutColumnVisibilityModel.lookup[newColumn.field], newColumn);
316
+ existingState = (0, _extends2.default)({}, getGridColDef(columnTypes, newColumn.type), {
317
+ // TODO v6: Inline `getGridColDef`
318
+ field,
319
+ hasBeenResized: false
320
+ });
321
+ columnsStateWithoutColumnVisibilityModel.all.push(field);
322
+ } else if (keepOnlyColumnsToUpsert) {
323
+ columnsStateWithoutColumnVisibilityModel.all.push(field);
324
+ }
306
325
 
307
- if (!mergedColumn.hasBeenResized && COLUMNS_DIMENSION_PROPERTIES.some(propertyName => newColumn[propertyName] !== undefined)) {
308
- mergedColumn.hasBeenResized = true;
309
- }
326
+ let hasValidDimension = false;
310
327
 
311
- columnsStateWithoutColumnVisibilityModel.lookup[newColumn.field] = mergedColumn;
328
+ if (!existingState.hasBeenResized) {
329
+ hasValidDimension = COLUMNS_DIMENSION_PROPERTIES.some(key => newColumn[key] !== undefined);
312
330
  }
331
+
332
+ columnsStateWithoutColumnVisibilityModel.lookup[field] = (0, _extends2.default)({}, existingState, {
333
+ hide: newColumn.hide == null ? false : newColumn.hide
334
+ }, newColumn, {
335
+ hasBeenResized: existingState.hasBeenResized || hasValidDimension
336
+ });
313
337
  });
338
+
339
+ if (keepOnlyColumnsToUpsert && !isInsideStateInitializer) {
340
+ Object.keys(columnsStateWithoutColumnVisibilityModel.lookup).forEach(field => {
341
+ if (!columnsToKeep[field]) {
342
+ delete columnsStateWithoutColumnVisibilityModel.lookup[field];
343
+ }
344
+ });
345
+ }
346
+
314
347
  const columnsLookupBeforePreProcessing = (0, _extends2.default)({}, columnsStateWithoutColumnVisibilityModel.lookup);
315
- const columnsStateWithPreProcessing = apiRef.current.unstable_applyPreProcessors('hydrateColumns', columnsStateWithoutColumnVisibilityModel); // TODO v6: remove the sync between the columns `hide` option and the model.
348
+ const columnsStateWithPreProcessing = apiRef.current.unstable_applyPipeProcessors('hydrateColumns', columnsStateWithoutColumnVisibilityModel); // TODO v6: remove the sync between the columns `hide` option and the model.
316
349
 
317
350
  let columnVisibilityModel = {};
318
351
 
@@ -22,7 +22,7 @@ var _gridColumnsSelector = require("./gridColumnsSelector");
22
22
 
23
23
  var _useGridApiEventHandler = require("../../utils/useGridApiEventHandler");
24
24
 
25
- var _preProcessing = require("../../core/preProcessing");
25
+ var _pipeProcessing = require("../../core/pipeProcessing");
26
26
 
27
27
  var _gridColumnsUtils = require("./gridColumnsUtils");
28
28
 
@@ -41,7 +41,7 @@ const columnsStateInitializer = (state, props, apiRef) => {
41
41
  const columnsTypes = (0, _gridColumnsUtils.computeColumnTypes)(props.columnTypes);
42
42
  const columnsState = (0, _gridColumnsUtils.createColumnsState)({
43
43
  apiRef,
44
- columnsTypes,
44
+ columnTypes: columnsTypes,
45
45
  columnsToUpsert: props.columns,
46
46
  initialState: (_props$initialState2 = props.initialState) == null ? void 0 : _props$initialState2.columns,
47
47
  shouldRegenColumnVisibilityModelFromColumns: !isUsingColumnVisibilityModel,
@@ -65,13 +65,15 @@ function useGridColumns(apiRef, props) {
65
65
  var _props$initialState4, _props$initialState4$, _props$componentsProp2;
66
66
 
67
67
  const logger = (0, _useGridLogger.useGridLogger)(apiRef, 'useGridColumns');
68
- const columnsTypes = React.useMemo(() => (0, _gridColumnsUtils.computeColumnTypes)(props.columnTypes), [props.columnTypes]);
68
+ const columnTypes = React.useMemo(() => (0, _gridColumnsUtils.computeColumnTypes)(props.columnTypes), [props.columnTypes]);
69
+ const previousColumnsProp = React.useRef(props.columns);
70
+ const previousColumnTypesProp = React.useRef(columnTypes);
69
71
  /**
70
72
  * If `initialState.columns.columnVisibilityModel` or `columnVisibilityModel` was defined during the 1st render, we are directly updating the model
71
73
  * If not, we keep the old behavior and update the `GridColDef.hide` option (which will update the state model through the `GridColDef.hide` => `columnVisibilityModel` sync in `createColumnsState`
72
74
  */
73
75
 
74
- const isUsingColumnVisibilityModel = React.useRef(!!props.columnVisibilityModel || !!((_props$initialState4 = props.initialState) != null && (_props$initialState4$ = _props$initialState4.columns) != null && _props$initialState4$.columnVisibilityModel)).current;
76
+ const isUsingColumnVisibilityModel = React.useRef(!!props.columnVisibilityModel || !!((_props$initialState4 = props.initialState) != null && (_props$initialState4$ = _props$initialState4.columns) != null && _props$initialState4$.columnVisibilityModel));
75
77
  apiRef.current.unstable_updateControlState({
76
78
  stateId: 'visibleColumns',
77
79
  propModel: props.columnVisibilityModel,
@@ -108,7 +110,7 @@ function useGridColumns(apiRef, props) {
108
110
  apiRef.current.setState(state => (0, _extends2.default)({}, state, {
109
111
  columns: (0, _gridColumnsUtils.createColumnsState)({
110
112
  apiRef,
111
- columnsTypes,
113
+ columnTypes,
112
114
  columnsToUpsert: [],
113
115
  initialState: undefined,
114
116
  shouldRegenColumnVisibilityModelFromColumns: false,
@@ -118,24 +120,24 @@ function useGridColumns(apiRef, props) {
118
120
  }));
119
121
  apiRef.current.forceUpdate();
120
122
  }
121
- }, [apiRef, columnsTypes]);
123
+ }, [apiRef, columnTypes]);
122
124
  const updateColumns = React.useCallback(columns => {
123
125
  const columnsState = (0, _gridColumnsUtils.createColumnsState)({
124
126
  apiRef,
125
- columnsTypes,
127
+ columnTypes,
126
128
  columnsToUpsert: columns,
127
129
  initialState: undefined,
128
130
  shouldRegenColumnVisibilityModelFromColumns: true,
129
131
  keepOnlyColumnsToUpsert: false
130
132
  });
131
133
  setGridColumnsState(columnsState);
132
- }, [apiRef, setGridColumnsState, columnsTypes]);
134
+ }, [apiRef, setGridColumnsState, columnTypes]);
133
135
  const updateColumn = React.useCallback(column => apiRef.current.updateColumns([column]), [apiRef]);
134
136
  const setColumnVisibility = React.useCallback((field, isVisible) => {
135
137
  // We keep updating the `hide` option of `GridColDef` when not controlling the model to avoid any breaking change.
136
138
  // `updateColumns` take care of updating the model itself if needs be.
137
139
  // TODO v6: stop using the `hide` field even when the model is not defined
138
- if (isUsingColumnVisibilityModel) {
140
+ if (isUsingColumnVisibilityModel.current) {
139
141
  var _columnVisibilityMode;
140
142
 
141
143
  const columnVisibilityModel = (0, _gridColumnsSelector.gridColumnVisibilityModelSelector)(apiRef);
@@ -160,7 +162,7 @@ function useGridColumns(apiRef, props) {
160
162
  };
161
163
  apiRef.current.publishEvent(_events.GridEvents.columnVisibilityChange, params);
162
164
  }
163
- }, [apiRef, isUsingColumnVisibilityModel]);
165
+ }, [apiRef]);
164
166
  const setColumnIndex = React.useCallback((field, targetIndexPosition) => {
165
167
  const allColumns = (0, _gridColumnsSelector.gridColumnFieldsSelector)(apiRef);
166
168
  const oldIndexPosition = allColumns.findIndex(col => col === field);
@@ -219,7 +221,7 @@ function useGridColumns(apiRef, props) {
219
221
  const stateExportPreProcessing = React.useCallback(prevState => {
220
222
  const columnsStateToExport = {};
221
223
 
222
- if (isUsingColumnVisibilityModel) {
224
+ if (isUsingColumnVisibilityModel.current) {
223
225
  const columnVisibilityModelToExport = (0, _gridColumnsSelector.gridColumnVisibilityModelSelector)(apiRef);
224
226
  const hasHiddenColumns = Object.values(columnVisibilityModelToExport).some(value => value === false);
225
227
 
@@ -250,11 +252,11 @@ function useGridColumns(apiRef, props) {
250
252
  return (0, _extends2.default)({}, prevState, {
251
253
  columns: columnsStateToExport
252
254
  });
253
- }, [apiRef, isUsingColumnVisibilityModel]);
255
+ }, [apiRef]);
254
256
  const stateRestorePreProcessing = React.useCallback((params, context) => {
255
257
  var _context$stateToResto;
256
258
 
257
- const columnVisibilityModelToImport = isUsingColumnVisibilityModel ? (_context$stateToResto = context.stateToRestore.columns) == null ? void 0 : _context$stateToResto.columnVisibilityModel : undefined;
259
+ const columnVisibilityModelToImport = isUsingColumnVisibilityModel.current ? (_context$stateToResto = context.stateToRestore.columns) == null ? void 0 : _context$stateToResto.columnVisibilityModel : undefined;
258
260
  const initialState = context.stateToRestore.columns;
259
261
 
260
262
  if (columnVisibilityModelToImport == null && initialState == null) {
@@ -263,10 +265,10 @@ function useGridColumns(apiRef, props) {
263
265
 
264
266
  const columnsState = (0, _gridColumnsUtils.createColumnsState)({
265
267
  apiRef,
266
- columnsTypes,
268
+ columnTypes,
267
269
  columnsToUpsert: [],
268
270
  initialState,
269
- shouldRegenColumnVisibilityModelFromColumns: !isUsingColumnVisibilityModel,
271
+ shouldRegenColumnVisibilityModelFromColumns: !isUsingColumnVisibilityModel.current,
270
272
  currentColumnVisibilityModel: columnVisibilityModelToImport,
271
273
  keepOnlyColumnsToUpsert: false
272
274
  });
@@ -277,7 +279,7 @@ function useGridColumns(apiRef, props) {
277
279
  }
278
280
 
279
281
  return params;
280
- }, [apiRef, isUsingColumnVisibilityModel, columnsTypes]);
282
+ }, [apiRef, columnTypes]);
281
283
  const preferencePanelPreProcessing = React.useCallback((initialValue, value) => {
282
284
  if (value === _preferencesPanel.GridPreferencePanelsValue.columns) {
283
285
  var _props$componentsProp;
@@ -288,14 +290,14 @@ function useGridColumns(apiRef, props) {
288
290
 
289
291
  return initialValue;
290
292
  }, [props.components.ColumnsPanel, (_props$componentsProp2 = props.componentsProps) == null ? void 0 : _props$componentsProp2.columnsPanel]);
291
- (0, _preProcessing.useGridRegisterPreProcessor)(apiRef, 'exportState', stateExportPreProcessing);
292
- (0, _preProcessing.useGridRegisterPreProcessor)(apiRef, 'restoreState', stateRestorePreProcessing);
293
- (0, _preProcessing.useGridRegisterPreProcessor)(apiRef, 'preferencePanel', preferencePanelPreProcessing);
293
+ (0, _pipeProcessing.useGridRegisterPipeProcessor)(apiRef, 'exportState', stateExportPreProcessing);
294
+ (0, _pipeProcessing.useGridRegisterPipeProcessor)(apiRef, 'restoreState', stateRestorePreProcessing);
295
+ (0, _pipeProcessing.useGridRegisterPipeProcessor)(apiRef, 'preferencePanel', preferencePanelPreProcessing);
294
296
  /**
295
297
  * EVENTS
296
298
  */
297
299
 
298
- const handlePreProcessorRegister = React.useCallback(name => {
300
+ const handlepipeProcessorRegister = React.useCallback(name => {
299
301
  if (name !== 'hydrateColumns') {
300
302
  return;
301
303
  }
@@ -303,14 +305,14 @@ function useGridColumns(apiRef, props) {
303
305
  logger.info(`Columns pre-processing have changed, regenerating the columns`);
304
306
  const columnsState = (0, _gridColumnsUtils.createColumnsState)({
305
307
  apiRef,
306
- columnsTypes,
308
+ columnTypes,
307
309
  columnsToUpsert: [],
308
310
  initialState: undefined,
309
- shouldRegenColumnVisibilityModelFromColumns: !isUsingColumnVisibilityModel,
311
+ shouldRegenColumnVisibilityModelFromColumns: !isUsingColumnVisibilityModel.current,
310
312
  keepOnlyColumnsToUpsert: false
311
313
  });
312
314
  setGridColumnsState(columnsState);
313
- }, [apiRef, logger, setGridColumnsState, columnsTypes, isUsingColumnVisibilityModel]);
315
+ }, [apiRef, logger, setGridColumnsState, columnTypes]);
314
316
  const prevInnerWidth = React.useRef(null);
315
317
 
316
318
  const handleGridSizeChange = viewportInnerSize => {
@@ -320,7 +322,7 @@ function useGridColumns(apiRef, props) {
320
322
  }
321
323
  };
322
324
 
323
- (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, _events.GridEvents.preProcessorRegister, handlePreProcessorRegister);
325
+ (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, _events.GridEvents.pipeProcessorRegister, handlepipeProcessorRegister);
324
326
  (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, _events.GridEvents.viewportInnerSizeChange, handleGridSizeChange);
325
327
  (0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, _events.GridEvents.columnVisibilityChange, props.onColumnVisibilityChange);
326
328
  /**
@@ -337,17 +339,24 @@ function useGridColumns(apiRef, props) {
337
339
  }
338
340
 
339
341
  logger.info(`GridColumns have changed, new length ${props.columns.length}`);
342
+
343
+ if (previousColumnsProp.current === props.columns && previousColumnTypesProp.current === columnTypes) {
344
+ return;
345
+ }
346
+
340
347
  const columnsState = (0, _gridColumnsUtils.createColumnsState)({
341
348
  apiRef,
342
- columnsTypes,
349
+ columnTypes,
343
350
  initialState: undefined,
344
351
  // If the user provides a model, we don't want to set it in the state here because it has it's dedicated `useEffect` which calls `setColumnVisibilityModel`
345
- shouldRegenColumnVisibilityModelFromColumns: !isUsingColumnVisibilityModel,
352
+ shouldRegenColumnVisibilityModelFromColumns: !isUsingColumnVisibilityModel.current,
346
353
  columnsToUpsert: props.columns,
347
354
  keepOnlyColumnsToUpsert: true
348
355
  });
356
+ previousColumnsProp.current = props.columns;
357
+ previousColumnTypesProp.current = columnTypes;
349
358
  setGridColumnsState(columnsState);
350
- }, [logger, apiRef, setGridColumnsState, props.columns, columnsTypes, isUsingColumnVisibilityModel]);
359
+ }, [logger, apiRef, setGridColumnsState, props.columns, columnTypes]);
351
360
  React.useEffect(() => {
352
361
  if (props.columnVisibilityModel !== undefined) {
353
362
  apiRef.current.setColumnVisibilityModel(props.columnVisibilityModel);
@@ -156,7 +156,8 @@ function useGridDimensions(apiRef, props) {
156
156
  const dimensionsApi = {
157
157
  resize,
158
158
  getRootDimensions,
159
- unstable_getViewportPageSize: getViewportPageSize
159
+ unstable_getViewportPageSize: getViewportPageSize,
160
+ unstable_updateGridDimensionsRef: updateGridDimensionsRef
160
161
  };
161
162
  (0, _useGridApiMethod.useGridApiMethod)(apiRef, dimensionsApi, 'GridDimensionsApi');
162
163
  const debounceResize = React.useMemo(() => (0, _utils.debounce)(resize, 60), [resize]);
@@ -23,15 +23,20 @@ var _gridEditRowsSelector = require("./gridEditRowsSelector");
23
23
 
24
24
  var _keyboardUtils = require("../../../utils/keyboardUtils");
25
25
 
26
+ var _warning = require("../../../utils/warning");
27
+
26
28
  var _gridEditCellParams = require("../../../models/params/gridEditCellParams");
27
29
 
28
30
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
29
31
 
30
32
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
31
33
 
34
+ const missingOnProcessRowUpdateErrorWarning = (0, _warning.buildWarning)(['MUI: A call to `processRowUpdate` threw an error which was not handled because `onProcessRowUpdateError` is missing.', 'To handle the error pass a callback to the `onProcessRowUpdateError` prop, e.g. `<DataGrid onProcessRowUpdateError={(error) => ...} />`.', 'For more detail, see http://mui.com/components/data-grid/editing/#persistence.'], 'error');
35
+
32
36
  const useGridCellEditing = (apiRef, props) => {
33
37
  const {
34
- processRowUpdate
38
+ processRowUpdate,
39
+ onProcessRowUpdateError
35
40
  } = props;
36
41
 
37
42
  const runIfEditModeIsCell = callback => (...args) => {
@@ -258,17 +263,29 @@ const useGridCellEditing = (apiRef, props) => {
258
263
  });
259
264
 
260
265
  if (processRowUpdate) {
261
- Promise.resolve(processRowUpdate(rowUpdate, row)).then(finalRowUpdate => {
262
- apiRef.current.updateRows([finalRowUpdate]);
263
- updateFocusedCellIfNeeded();
264
- updateOrDeleteFieldState(id, field, null);
265
- });
266
+ const handleError = errorThrown => {
267
+ if (onProcessRowUpdateError) {
268
+ onProcessRowUpdateError(errorThrown);
269
+ } else {
270
+ missingOnProcessRowUpdateErrorWarning();
271
+ }
272
+ };
273
+
274
+ try {
275
+ Promise.resolve(processRowUpdate(rowUpdate, row)).then(finalRowUpdate => {
276
+ apiRef.current.updateRows([finalRowUpdate]);
277
+ updateFocusedCellIfNeeded();
278
+ updateOrDeleteFieldState(id, field, null);
279
+ }).catch(handleError);
280
+ } catch (errorThrown) {
281
+ handleError(errorThrown);
282
+ }
266
283
  } else {
267
284
  apiRef.current.updateRows([rowUpdate]);
268
285
  updateFocusedCellIfNeeded();
269
286
  updateOrDeleteFieldState(id, field, null);
270
287
  }
271
- }, [apiRef, processRowUpdate, throwIfNotInMode, updateOrDeleteFieldState]);
288
+ }, [apiRef, onProcessRowUpdateError, processRowUpdate, throwIfNotInMode, updateOrDeleteFieldState]);
272
289
  const setCellEditingEditCellValue = React.useCallback(async params => {
273
290
  const {
274
291
  id,
@@ -29,17 +29,22 @@ var _keyboardUtils = require("../../../utils/keyboardUtils");
29
29
 
30
30
  var _gridColumnsSelector = require("../columns/gridColumnsSelector");
31
31
 
32
+ var _warning = require("../../../utils/warning");
33
+
32
34
  var _gridRowParams = require("../../../models/params/gridRowParams");
33
35
 
34
36
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
35
37
 
36
38
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
37
39
 
40
+ const missingOnProcessRowUpdateErrorWarning = (0, _warning.buildWarning)(['MUI: A call to `processRowUpdate` threw an error which was not handled because `onProcessRowUpdateError` is missing.', 'To handle the error pass a callback to the `onProcessRowUpdateError` prop, e.g. `<DataGrid onProcessRowUpdateError={(error) => ...} />`.', 'For more detail, see http://mui.com/components/data-grid/editing/#persistence.'], 'error');
41
+
38
42
  const useGridRowEditing = (apiRef, props) => {
39
43
  const focusTimeout = React.useRef(null);
40
44
  const nextFocusedCell = React.useRef(null);
41
45
  const {
42
- processRowUpdate
46
+ processRowUpdate,
47
+ onProcessRowUpdateError
43
48
  } = props;
44
49
 
45
50
  const runIfEditModeIsRow = callback => (...args) => {
@@ -365,17 +370,29 @@ const useGridRowEditing = (apiRef, props) => {
365
370
  });
366
371
 
367
372
  if (processRowUpdate) {
368
- Promise.resolve(processRowUpdate(rowUpdate, row)).then(finalRowUpdate => {
369
- apiRef.current.updateRows([finalRowUpdate]);
370
- updateFocusedCellIfNeeded();
371
- updateOrDeleteRowState(id, null);
372
- });
373
+ const handleError = errorThrown => {
374
+ if (onProcessRowUpdateError) {
375
+ onProcessRowUpdateError(errorThrown);
376
+ } else {
377
+ missingOnProcessRowUpdateErrorWarning();
378
+ }
379
+ };
380
+
381
+ try {
382
+ Promise.resolve(processRowUpdate(rowUpdate, row)).then(finalRowUpdate => {
383
+ apiRef.current.updateRows([finalRowUpdate]);
384
+ updateFocusedCellIfNeeded();
385
+ updateOrDeleteRowState(id, null);
386
+ }).catch(handleError);
387
+ } catch (errorThrown) {
388
+ handleError(errorThrown);
389
+ }
373
390
  } else {
374
391
  apiRef.current.updateRows([rowUpdate]);
375
392
  updateFocusedCellIfNeeded();
376
393
  updateOrDeleteRowState(id, null);
377
394
  }
378
- }, [apiRef, processRowUpdate, throwIfNotInMode, updateOrDeleteRowState]);
395
+ }, [apiRef, onProcessRowUpdateError, processRowUpdate, throwIfNotInMode, updateOrDeleteRowState]);
379
396
  const setRowEditingEditCellValue = React.useCallback(params => {
380
397
  const {
381
398
  id,
@@ -25,6 +25,8 @@ function useGridEvents(apiRef, props) {
25
25
  (0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, _events.GridEvents.cellDoubleClick, props.onCellDoubleClick);
26
26
  (0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, _events.GridEvents.cellKeyDown, props.onCellKeyDown);
27
27
  (0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, _events.GridEvents.cellFocusOut, props.onCellFocusOut);
28
+ (0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, _events.GridEvents.preferencePanelClose, props.onPreferencePanelClose);
29
+ (0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, _events.GridEvents.preferencePanelOpen, props.onPreferencePanelOpen);
28
30
  (0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, _events.GridEvents.rowDoubleClick, props.onRowDoubleClick);
29
31
  (0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, _events.GridEvents.rowClick, props.onRowClick);
30
32
  (0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, _events.GridEvents.componentError, props.onError);
@@ -33,7 +33,7 @@ var _useFirstRender = require("../../utils/useFirstRender");
33
33
 
34
34
  var _rows = require("../rows");
35
35
 
36
- var _preProcessing = require("../../core/preProcessing");
36
+ var _pipeProcessing = require("../../core/pipeProcessing");
37
37
 
38
38
  var _strategyProcessing = require("../../core/strategyProcessing");
39
39
 
@@ -254,9 +254,9 @@ const useGridFilter = (apiRef, props) => {
254
254
  filteredDescendantCountLookup: {}
255
255
  };
256
256
  }, [apiRef, props.filterMode]);
257
- (0, _preProcessing.useGridRegisterPreProcessor)(apiRef, 'exportState', stateExportPreProcessing);
258
- (0, _preProcessing.useGridRegisterPreProcessor)(apiRef, 'restoreState', stateRestorePreProcessing);
259
- (0, _preProcessing.useGridRegisterPreProcessor)(apiRef, 'preferencePanel', preferencePanelPreProcessing);
257
+ (0, _pipeProcessing.useGridRegisterPipeProcessor)(apiRef, 'exportState', stateExportPreProcessing);
258
+ (0, _pipeProcessing.useGridRegisterPipeProcessor)(apiRef, 'restoreState', stateRestorePreProcessing);
259
+ (0, _pipeProcessing.useGridRegisterPipeProcessor)(apiRef, 'preferencePanel', preferencePanelPreProcessing);
260
260
  (0, _strategyProcessing.useGridRegisterStrategyProcessor)(apiRef, _strategyProcessing.GRID_DEFAULT_STRATEGY, 'filtering', flatFilteringMethod);
261
261
  /**
262
262
  * EVENTS
@@ -23,17 +23,18 @@ var _gridCheckboxSelectionColDef = require("../../../colDef/gridCheckboxSelectio
23
23
 
24
24
  var _gridClasses = require("../../../constants/gridClasses");
25
25
 
26
+ var _gridEditRowModel = require("../../../models/gridEditRowModel");
27
+
28
+ var _keyboardUtils = require("../../../utils/keyboardUtils");
29
+
26
30
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
27
31
 
28
32
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
29
33
 
30
34
  /**
31
- * @requires useGridPage (state)
32
- * @requires useGridPageSize (state)
33
- * @requires useGridFilter (state)
34
- * @requires useGridColumns (state, method)
35
- * @requires useGridRows (state, method)
36
35
  * @requires useGridSorting (method) - can be after
36
+ * @requires useGridFilter (state) - can be after
37
+ * @requires useGridColumns (state, method) - can be after
37
38
  * @requires useGridDimensions (method) - can be after
38
39
  * @requires useGridFocus (method) - can be after
39
40
  * @requires useGridScroll (method) - can be after
@@ -130,8 +131,16 @@ const useGridKeyboardNavigation = (apiRef, props) => {
130
131
  break;
131
132
  }
132
133
 
133
- case 'PageDown':
134
134
  case ' ':
135
+ {
136
+ if (!event.shiftKey && rowIndexBefore < lastRowIndexInPage) {
137
+ goToCell(colIndexBefore, Math.min(rowIndexBefore + viewportPageSize, lastRowIndexInPage));
138
+ }
139
+
140
+ break;
141
+ }
142
+
143
+ case 'PageDown':
135
144
  {
136
145
  if (rowIndexBefore < lastRowIndexInPage) {
137
146
  goToCell(colIndexBefore, Math.min(rowIndexBefore + viewportPageSize, lastRowIndexInPage));
@@ -286,8 +295,22 @@ const useGridKeyboardNavigation = (apiRef, props) => {
286
295
  event.preventDefault();
287
296
  }
288
297
  }, [apiRef, currentPage, goToCell, goToHeader]);
298
+ const handleCellKeyDown = React.useCallback((params, event) => {
299
+ // Ignore portal
300
+ if (!event.currentTarget.contains(event.target)) {
301
+ return;
302
+ } // Get the most recent params because the cell mode may have changed by another listener
303
+
304
+
305
+ const cellParams = apiRef.current.getCellParams(params.id, params.field);
306
+
307
+ if (cellParams.cellMode !== _gridEditRowModel.GridCellModes.Edit && (0, _keyboardUtils.isNavigationKey)(event.key)) {
308
+ apiRef.current.publishEvent(_events.GridEvents.cellNavigationKeyDown, cellParams, event);
309
+ }
310
+ }, [apiRef]);
289
311
  (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, _events.GridEvents.cellNavigationKeyDown, handleCellNavigationKeyDown);
290
312
  (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, _events.GridEvents.columnHeaderKeyDown, handleColumnHeaderKeyDown);
313
+ (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, _events.GridEvents.cellKeyDown, handleCellKeyDown);
291
314
  };
292
315
 
293
316
  exports.useGridKeyboardNavigation = useGridKeyboardNavigation;
@@ -19,7 +19,7 @@ var _filter = require("../filter");
19
19
 
20
20
  var _gridPaginationSelector = require("./gridPaginationSelector");
21
21
 
22
- var _preProcessing = require("../../core/preProcessing");
22
+ var _pipeProcessing = require("../../core/pipeProcessing");
23
23
 
24
24
  var _warning = require("../../../utils/warning");
25
25
 
@@ -114,8 +114,8 @@ const useGridPage = (apiRef, props) => {
114
114
  apiRef.current.setState(mergeStateWithPage(page));
115
115
  return params;
116
116
  }, [apiRef]);
117
- (0, _preProcessing.useGridRegisterPreProcessor)(apiRef, 'exportState', stateExportPreProcessing);
118
- (0, _preProcessing.useGridRegisterPreProcessor)(apiRef, 'restoreState', stateRestorePreProcessing);
117
+ (0, _pipeProcessing.useGridRegisterPipeProcessor)(apiRef, 'exportState', stateExportPreProcessing);
118
+ (0, _pipeProcessing.useGridRegisterPipeProcessor)(apiRef, 'restoreState', stateRestorePreProcessing);
119
119
  /**
120
120
  * EVENTS
121
121
  */
@@ -133,7 +133,12 @@ const useGridPage = (apiRef, props) => {
133
133
  apiRef.current.forceUpdate();
134
134
  };
135
135
 
136
+ const handlePageChange = () => apiRef.current.scrollToIndexes({
137
+ rowIndex: (0, _gridPaginationSelector.gridPageSelector)(apiRef) * (0, _gridPaginationSelector.gridPageSizeSelector)(apiRef)
138
+ });
139
+
136
140
  (0, _utils.useGridApiEventHandler)(apiRef, _events.GridEvents.pageSizeChange, handlePageSizeChange);
141
+ (0, _utils.useGridApiEventHandler)(apiRef, _events.GridEvents.pageChange, handlePageChange);
137
142
  /**
138
143
  * EFFECTS
139
144
  */
@@ -19,7 +19,7 @@ var _gridPaginationSelector = require("./gridPaginationSelector");
19
19
 
20
20
  var _density = require("../density");
21
21
 
22
- var _preProcessing = require("../../core/preProcessing");
22
+ var _pipeProcessing = require("../../core/pipeProcessing");
23
23
 
24
24
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
25
25
 
@@ -106,8 +106,8 @@ const useGridPageSize = (apiRef, props) => {
106
106
 
107
107
  return params;
108
108
  }, [apiRef]);
109
- (0, _preProcessing.useGridRegisterPreProcessor)(apiRef, 'exportState', stateExportPreProcessing);
110
- (0, _preProcessing.useGridRegisterPreProcessor)(apiRef, 'restoreState', stateRestorePreProcessing);
109
+ (0, _pipeProcessing.useGridRegisterPipeProcessor)(apiRef, 'exportState', stateExportPreProcessing);
110
+ (0, _pipeProcessing.useGridRegisterPipeProcessor)(apiRef, 'restoreState', stateRestorePreProcessing);
111
111
  /**
112
112
  * EVENTS
113
113
  */