@mui/x-data-grid 6.0.0-alpha.2 → 6.0.0-alpha.4

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 (293) hide show
  1. package/CHANGELOG.md +493 -141
  2. package/DataGrid/DataGrid.js +14 -34
  3. package/DataGrid/useDataGridComponent.js +8 -14
  4. package/DataGrid/useDataGridProps.js +3 -3
  5. package/colDef/gridCheckboxSelectionColDef.js +1 -1
  6. package/colDef/gridNumericOperators.d.ts +1 -1
  7. package/colDef/gridSingleSelectOperators.d.ts +1 -1
  8. package/colDef/gridStringOperators.d.ts +1 -1
  9. package/components/GridFooter.js +1 -1
  10. package/components/GridRow.js +2 -2
  11. package/components/base/GridBody.js +2 -2
  12. package/components/cell/GridEditInputCell.js +3 -8
  13. package/components/cell/GridEditSingleSelectCell.js +6 -38
  14. package/components/columnHeaders/GridColumnGroupHeader.d.ts +2 -0
  15. package/components/columnHeaders/GridColumnGroupHeader.js +32 -5
  16. package/components/columnSelection/GridHeaderCheckbox.js +3 -3
  17. package/components/containers/GridRoot.js +4 -3
  18. package/components/panel/GridColumnsPanel.d.ts +2 -0
  19. package/components/panel/GridColumnsPanel.js +10 -4
  20. package/components/panel/filterPanel/GridFilterForm.d.ts +12 -0
  21. package/components/panel/filterPanel/GridFilterForm.js +29 -7
  22. package/components/panel/filterPanel/GridFilterPanel.d.ts +12 -0
  23. package/components/panel/filterPanel/GridFilterPanel.js +64 -19
  24. package/hooks/core/pipeProcessing/useGridRegisterPipeApplier.d.ts +1 -1
  25. package/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.d.ts +1 -1
  26. package/hooks/core/strategyProcessing/useGridRegisterStrategyProcessor.d.ts +1 -1
  27. package/hooks/core/useGridInitialization.d.ts +1 -1
  28. package/hooks/core/useGridStateInitialization.d.ts +1 -1
  29. package/hooks/features/columnGrouping/gridColumnGroupsInterfaces.d.ts +10 -1
  30. package/hooks/features/columnGrouping/gridColumnGroupsSelector.d.ts +6 -0
  31. package/hooks/features/columnGrouping/gridColumnGroupsSelector.js +34 -1
  32. package/hooks/features/columnGrouping/gridColumnGroupsUtils.d.ts +15 -0
  33. package/hooks/features/columnGrouping/gridColumnGroupsUtils.js +89 -0
  34. package/hooks/features/columnGrouping/useGridColumnGrouping.d.ts +1 -15
  35. package/hooks/features/columnGrouping/useGridColumnGrouping.js +66 -66
  36. package/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +1 -1
  37. package/hooks/features/columnHeaders/useGridColumnHeaders.js +60 -116
  38. package/hooks/features/density/densitySelector.d.ts +0 -2
  39. package/hooks/features/density/densitySelector.js +1 -3
  40. package/hooks/features/density/densityState.d.ts +0 -1
  41. package/hooks/features/density/useGridDensity.d.ts +1 -1
  42. package/hooks/features/density/useGridDensity.js +9 -45
  43. package/hooks/features/dimensions/useGridDimensions.js +3 -2
  44. package/hooks/features/{editRows/gridEditRowsSelector.d.ts → editing/gridEditingSelectors.d.ts} +0 -0
  45. package/hooks/features/{editRows/gridEditRowsSelector.js → editing/gridEditingSelectors.js} +0 -0
  46. package/hooks/features/editing/index.d.ts +1 -0
  47. package/hooks/features/editing/index.js +1 -0
  48. package/hooks/features/{editRows/useGridCellEditing.new.d.ts → editing/useGridCellEditing.d.ts} +0 -0
  49. package/hooks/features/{editRows/useGridCellEditing.new.js → editing/useGridCellEditing.js} +21 -6
  50. package/hooks/features/{editRows/useGridEditing.new.d.ts → editing/useGridEditing.d.ts} +0 -0
  51. package/hooks/features/{editRows/useGridEditing.new.js → editing/useGridEditing.js} +3 -3
  52. package/hooks/features/{editRows/useGridRowEditing.new.d.ts → editing/useGridRowEditing.d.ts} +0 -0
  53. package/hooks/features/{editRows/useGridRowEditing.new.js → editing/useGridRowEditing.js} +20 -6
  54. package/hooks/features/export/useGridPrintExport.js +2 -2
  55. package/hooks/features/focus/gridFocusState.d.ts +6 -0
  56. package/hooks/features/focus/gridFocusStateSelector.d.ts +2 -0
  57. package/hooks/features/focus/gridFocusStateSelector.js +6 -2
  58. package/hooks/features/focus/useGridFocus.js +69 -11
  59. package/hooks/features/index.d.ts +2 -2
  60. package/hooks/features/index.js +2 -2
  61. package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +135 -1
  62. package/hooks/features/{selection/gridSelectionSelector.d.ts → rowSelection/gridRowSelectionSelector.d.ts} +1 -1
  63. package/hooks/features/rowSelection/gridRowSelectionSelector.js +9 -0
  64. package/hooks/features/rowSelection/index.d.ts +1 -0
  65. package/hooks/features/rowSelection/index.js +1 -0
  66. package/hooks/features/rowSelection/useGridRowSelection.d.ts +12 -0
  67. package/hooks/features/{selection/useGridSelection.js → rowSelection/useGridRowSelection.js} +37 -37
  68. package/hooks/features/{selection/useGridSelectionPreProcessors.d.ts → rowSelection/useGridRowSelectionPreProcessors.d.ts} +1 -1
  69. package/hooks/features/{selection/useGridSelectionPreProcessors.js → rowSelection/useGridRowSelectionPreProcessors.js} +1 -1
  70. package/hooks/features/rows/gridRowsInterfaces.d.ts +4 -0
  71. package/hooks/features/rows/gridRowsUtils.d.ts +1 -1
  72. package/hooks/features/rows/gridRowsUtils.js +5 -2
  73. package/hooks/features/rows/useGridRows.js +23 -7
  74. package/hooks/features/virtualization/useGridVirtualScroller.d.ts +1 -1
  75. package/hooks/features/virtualization/useGridVirtualScroller.js +2 -2
  76. package/hooks/utils/useGridApi.d.ts +1 -1
  77. package/hooks/utils/useGridApiEventHandler.d.ts +2 -2
  78. package/hooks/utils/useGridApiRef.d.ts +1 -1
  79. package/hooks/utils/useGridInitializeState.d.ts +1 -1
  80. package/hooks/utils/useGridNativeEventListener.d.ts +1 -1
  81. package/hooks/utils/useGridSelector.d.ts +1 -1
  82. package/hooks/utils/useGridState.d.ts +1 -1
  83. package/hooks/utils/useGridVisibleRows.d.ts +2 -2
  84. package/index.js +1 -1
  85. package/internals/index.d.ts +3 -5
  86. package/internals/index.js +3 -5
  87. package/legacy/DataGrid/DataGrid.js +14 -34
  88. package/legacy/DataGrid/useDataGridComponent.js +8 -14
  89. package/legacy/DataGrid/useDataGridProps.js +3 -3
  90. package/legacy/colDef/gridCheckboxSelectionColDef.js +1 -1
  91. package/legacy/components/GridFooter.js +1 -1
  92. package/legacy/components/GridRow.js +2 -2
  93. package/legacy/components/base/GridBody.js +2 -2
  94. package/legacy/components/cell/GridEditInputCell.js +3 -8
  95. package/legacy/components/cell/GridEditSingleSelectCell.js +6 -52
  96. package/legacy/components/columnHeaders/GridColumnGroupHeader.js +46 -13
  97. package/legacy/components/columnSelection/GridHeaderCheckbox.js +3 -3
  98. package/legacy/components/containers/GridRoot.js +4 -3
  99. package/legacy/components/panel/GridColumnsPanel.js +10 -3
  100. package/legacy/components/panel/filterPanel/GridFilterForm.js +31 -7
  101. package/legacy/components/panel/filterPanel/GridFilterPanel.js +67 -18
  102. package/legacy/hooks/features/columnGrouping/gridColumnGroupsSelector.js +33 -1
  103. package/legacy/hooks/features/columnGrouping/gridColumnGroupsUtils.js +96 -0
  104. package/legacy/hooks/features/columnGrouping/useGridColumnGrouping.js +64 -64
  105. package/legacy/hooks/features/columnHeaders/useGridColumnHeaders.js +70 -122
  106. package/legacy/hooks/features/density/densitySelector.js +0 -6
  107. package/legacy/hooks/features/density/useGridDensity.js +6 -44
  108. package/legacy/hooks/features/dimensions/useGridDimensions.js +3 -2
  109. package/legacy/hooks/features/{editRows/gridEditRowsSelector.js → editing/gridEditingSelectors.js} +0 -0
  110. package/legacy/hooks/features/editing/index.js +1 -0
  111. package/legacy/hooks/features/{editRows/useGridCellEditing.new.js → editing/useGridCellEditing.js} +21 -6
  112. package/legacy/hooks/features/{editRows/useGridEditing.new.js → editing/useGridEditing.js} +3 -3
  113. package/legacy/hooks/features/{editRows/useGridRowEditing.new.js → editing/useGridRowEditing.js} +20 -6
  114. package/legacy/hooks/features/export/useGridPrintExport.js +2 -2
  115. package/legacy/hooks/features/focus/gridFocusStateSelector.js +8 -0
  116. package/legacy/hooks/features/focus/useGridFocus.js +72 -11
  117. package/legacy/hooks/features/index.js +2 -2
  118. package/legacy/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +129 -1
  119. package/legacy/hooks/features/rowSelection/gridRowSelectionSelector.js +19 -0
  120. package/legacy/hooks/features/rowSelection/index.js +1 -0
  121. package/legacy/hooks/features/{selection/useGridSelection.js → rowSelection/useGridRowSelection.js} +37 -37
  122. package/legacy/hooks/features/{selection/useGridSelectionPreProcessors.js → rowSelection/useGridRowSelectionPreProcessors.js} +1 -1
  123. package/legacy/hooks/features/rows/gridRowsUtils.js +5 -2
  124. package/legacy/hooks/features/rows/useGridRows.js +25 -7
  125. package/legacy/hooks/features/virtualization/useGridVirtualScroller.js +2 -2
  126. package/legacy/index.js +1 -1
  127. package/legacy/internals/index.js +3 -5
  128. package/legacy/locales/trTR.js +17 -17
  129. package/legacy/models/api/{gridSelectionApi.js → gridRowSelectionApi.js} +0 -0
  130. package/legacy/models/api/index.js +1 -1
  131. package/legacy/models/{gridSelectionModel.js → gridRowSelectionModel.js} +0 -0
  132. package/legacy/models/index.js +1 -1
  133. package/{models/api/gridSelectionApi.js → legacy/models/params/gridColumnGroupHeaderParams.js} +0 -0
  134. package/legacy/models/params/gridEditCellParams.js +0 -4
  135. package/legacy/models/params/index.js +1 -0
  136. package/locales/trTR.js +17 -17
  137. package/models/api/gridApiCommon.d.ts +3 -6
  138. package/models/api/gridApiCommunity.d.ts +1 -7
  139. package/models/api/gridEditingApi.d.ts +36 -121
  140. package/models/api/gridFocusApi.d.ts +13 -0
  141. package/models/api/{gridSelectionApi.d.ts → gridRowSelectionApi.d.ts} +2 -2
  142. package/models/{gridSelectionModel.js → api/gridRowSelectionApi.js} +0 -0
  143. package/models/api/index.d.ts +2 -2
  144. package/models/api/index.js +1 -1
  145. package/models/colDef/gridColDef.d.ts +0 -8
  146. package/models/events/gridEventLookup.d.ts +30 -19
  147. package/models/gridColumnGrouping.d.ts +1 -26
  148. package/models/gridRowSelectionModel.d.ts +3 -0
  149. package/{modern/models/api/gridSelectionApi.js → models/gridRowSelectionModel.js} +0 -0
  150. package/models/gridStateCommunity.d.ts +2 -2
  151. package/models/index.d.ts +1 -1
  152. package/models/index.js +1 -1
  153. package/models/params/gridColumnGroupHeaderParams.d.ts +30 -0
  154. package/{modern/models/gridSelectionModel.js → models/params/gridColumnGroupHeaderParams.js} +0 -0
  155. package/models/params/gridEditCellParams.d.ts +4 -17
  156. package/models/params/gridEditCellParams.js +0 -4
  157. package/models/params/gridRowParams.d.ts +4 -4
  158. package/models/params/index.d.ts +1 -0
  159. package/models/params/index.js +1 -0
  160. package/models/props/DataGridProps.d.ts +8 -32
  161. package/modern/DataGrid/DataGrid.js +14 -34
  162. package/modern/DataGrid/useDataGridComponent.js +8 -12
  163. package/modern/DataGrid/useDataGridProps.js +3 -3
  164. package/modern/colDef/gridCheckboxSelectionColDef.js +1 -1
  165. package/modern/components/GridFooter.js +1 -1
  166. package/modern/components/GridRow.js +2 -2
  167. package/modern/components/base/GridBody.js +2 -2
  168. package/modern/components/cell/GridEditInputCell.js +3 -4
  169. package/modern/components/cell/GridEditSingleSelectCell.js +6 -34
  170. package/modern/components/columnHeaders/GridColumnGroupHeader.js +32 -5
  171. package/modern/components/columnSelection/GridHeaderCheckbox.js +3 -3
  172. package/modern/components/containers/GridRoot.js +4 -3
  173. package/modern/components/panel/GridColumnsPanel.js +10 -4
  174. package/modern/components/panel/filterPanel/GridFilterForm.js +29 -7
  175. package/modern/components/panel/filterPanel/GridFilterPanel.js +62 -17
  176. package/modern/hooks/features/columnGrouping/gridColumnGroupsSelector.js +14 -1
  177. package/modern/hooks/features/columnGrouping/gridColumnGroupsUtils.js +83 -0
  178. package/modern/hooks/features/columnGrouping/useGridColumnGrouping.js +50 -62
  179. package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +58 -98
  180. package/modern/hooks/features/density/densitySelector.js +1 -3
  181. package/modern/hooks/features/density/useGridDensity.js +9 -37
  182. package/modern/hooks/features/dimensions/useGridDimensions.js +3 -2
  183. package/modern/hooks/features/{editRows/gridEditRowsSelector.js → editing/gridEditingSelectors.js} +0 -0
  184. package/modern/hooks/features/editing/index.js +1 -0
  185. package/modern/hooks/features/{editRows/useGridCellEditing.new.js → editing/useGridCellEditing.js} +21 -6
  186. package/modern/hooks/features/{editRows/useGridEditing.new.js → editing/useGridEditing.js} +3 -3
  187. package/modern/hooks/features/{editRows/useGridRowEditing.new.js → editing/useGridRowEditing.js} +20 -6
  188. package/modern/hooks/features/export/useGridPrintExport.js +2 -2
  189. package/modern/hooks/features/focus/gridFocusStateSelector.js +6 -2
  190. package/modern/hooks/features/focus/useGridFocus.js +69 -11
  191. package/modern/hooks/features/index.js +2 -2
  192. package/modern/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +135 -1
  193. package/modern/hooks/features/rowSelection/gridRowSelectionSelector.js +9 -0
  194. package/modern/hooks/features/rowSelection/index.js +1 -0
  195. package/modern/hooks/features/{selection/useGridSelection.js → rowSelection/useGridRowSelection.js} +37 -37
  196. package/modern/hooks/features/{selection/useGridSelectionPreProcessors.js → rowSelection/useGridRowSelectionPreProcessors.js} +1 -1
  197. package/modern/hooks/features/rows/gridRowsUtils.js +5 -2
  198. package/modern/hooks/features/rows/useGridRows.js +23 -7
  199. package/modern/hooks/features/virtualization/useGridVirtualScroller.js +2 -2
  200. package/modern/index.js +1 -1
  201. package/modern/internals/index.js +3 -5
  202. package/modern/locales/trTR.js +17 -17
  203. package/modern/models/api/gridRowSelectionApi.js +1 -0
  204. package/modern/models/api/index.js +1 -1
  205. package/modern/models/gridRowSelectionModel.js +1 -0
  206. package/modern/models/index.js +1 -1
  207. package/modern/models/params/gridColumnGroupHeaderParams.js +1 -0
  208. package/modern/models/params/gridEditCellParams.js +0 -4
  209. package/modern/models/params/index.js +1 -0
  210. package/node/DataGrid/DataGrid.js +14 -34
  211. package/node/DataGrid/useDataGridComponent.js +9 -17
  212. package/node/DataGrid/useDataGridProps.js +3 -3
  213. package/node/colDef/gridCheckboxSelectionColDef.js +2 -2
  214. package/node/components/GridFooter.js +2 -2
  215. package/node/components/GridRow.js +2 -2
  216. package/node/components/base/GridBody.js +2 -2
  217. package/node/components/cell/GridEditInputCell.js +3 -9
  218. package/node/components/cell/GridEditSingleSelectCell.js +6 -38
  219. package/node/components/columnHeaders/GridColumnGroupHeader.js +32 -5
  220. package/node/components/columnSelection/GridHeaderCheckbox.js +3 -3
  221. package/node/components/containers/GridRoot.js +4 -2
  222. package/node/components/panel/GridColumnsPanel.js +10 -4
  223. package/node/components/panel/filterPanel/GridFilterForm.js +30 -7
  224. package/node/components/panel/filterPanel/GridFilterPanel.js +63 -19
  225. package/node/hooks/features/columnGrouping/gridColumnGroupsSelector.js +40 -3
  226. package/node/hooks/features/columnGrouping/gridColumnGroupsUtils.js +102 -0
  227. package/node/hooks/features/columnGrouping/useGridColumnGrouping.js +68 -71
  228. package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +57 -113
  229. package/node/hooks/features/density/densitySelector.js +2 -6
  230. package/node/hooks/features/density/useGridDensity.js +9 -48
  231. package/node/hooks/features/dimensions/useGridDimensions.js +3 -1
  232. package/node/hooks/features/{editRows/gridEditRowsSelector.js → editing/gridEditingSelectors.js} +0 -0
  233. package/node/hooks/features/{editRows → editing}/index.js +4 -4
  234. package/node/hooks/features/{editRows/useGridCellEditing.new.js → editing/useGridCellEditing.js} +28 -13
  235. package/node/hooks/features/{editRows/useGridEditing.new.js → editing/useGridEditing.js} +4 -4
  236. package/node/hooks/features/{editRows/useGridRowEditing.new.js → editing/useGridRowEditing.js} +28 -14
  237. package/node/hooks/features/export/useGridPrintExport.js +2 -2
  238. package/node/hooks/features/focus/gridFocusStateSelector.js +10 -4
  239. package/node/hooks/features/focus/useGridFocus.js +68 -10
  240. package/node/hooks/features/index.js +8 -8
  241. package/node/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +138 -1
  242. package/node/hooks/features/{selection/gridSelectionSelector.js → rowSelection/gridRowSelectionSelector.js} +6 -6
  243. package/node/hooks/features/rowSelection/index.js +18 -0
  244. package/node/hooks/features/{selection/useGridSelection.js → rowSelection/useGridRowSelection.js} +43 -43
  245. package/node/hooks/features/{selection/useGridSelectionPreProcessors.js → rowSelection/useGridRowSelectionPreProcessors.js} +3 -3
  246. package/node/hooks/features/rows/gridRowsUtils.js +5 -2
  247. package/node/hooks/features/rows/useGridRows.js +23 -7
  248. package/node/hooks/features/virtualization/useGridVirtualScroller.js +4 -4
  249. package/node/index.js +1 -1
  250. package/node/internals/index.js +23 -45
  251. package/node/locales/trTR.js +17 -17
  252. package/node/models/api/{gridSelectionApi.js → gridRowSelectionApi.js} +0 -0
  253. package/node/models/api/index.js +4 -4
  254. package/node/models/{gridSelectionModel.js → gridRowSelectionModel.js} +0 -0
  255. package/node/models/index.js +4 -4
  256. package/node/models/params/gridColumnGroupHeaderParams.js +5 -0
  257. package/node/models/params/gridEditCellParams.js +0 -3
  258. package/node/models/params/index.js +13 -0
  259. package/package.json +2 -2
  260. package/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.d.ts +0 -4
  261. package/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.js +0 -35
  262. package/hooks/features/editRows/index.d.ts +0 -1
  263. package/hooks/features/editRows/index.js +0 -1
  264. package/hooks/features/editRows/useGridCellEditing.old.d.ts +0 -4
  265. package/hooks/features/editRows/useGridCellEditing.old.js +0 -359
  266. package/hooks/features/editRows/useGridEditing.old.d.ts +0 -11
  267. package/hooks/features/editRows/useGridEditing.old.js +0 -167
  268. package/hooks/features/editRows/useGridRowEditing.old.d.ts +0 -4
  269. package/hooks/features/editRows/useGridRowEditing.old.js +0 -334
  270. package/hooks/features/selection/gridSelectionSelector.js +0 -9
  271. package/hooks/features/selection/index.d.ts +0 -1
  272. package/hooks/features/selection/index.js +0 -1
  273. package/hooks/features/selection/useGridSelection.d.ts +0 -12
  274. package/legacy/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.js +0 -35
  275. package/legacy/hooks/features/editRows/index.js +0 -1
  276. package/legacy/hooks/features/editRows/useGridCellEditing.old.js +0 -411
  277. package/legacy/hooks/features/editRows/useGridEditing.old.js +0 -184
  278. package/legacy/hooks/features/editRows/useGridRowEditing.old.js +0 -505
  279. package/legacy/hooks/features/selection/gridSelectionSelector.js +0 -19
  280. package/legacy/hooks/features/selection/index.js +0 -1
  281. package/models/gridSelectionModel.d.ts +0 -3
  282. package/modern/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.js +0 -29
  283. package/modern/hooks/features/editRows/index.js +0 -1
  284. package/modern/hooks/features/editRows/useGridCellEditing.old.js +0 -355
  285. package/modern/hooks/features/editRows/useGridEditing.old.js +0 -163
  286. package/modern/hooks/features/editRows/useGridRowEditing.old.js +0 -326
  287. package/modern/hooks/features/selection/gridSelectionSelector.js +0 -9
  288. package/modern/hooks/features/selection/index.js +0 -1
  289. package/node/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.js +0 -55
  290. package/node/hooks/features/editRows/useGridCellEditing.old.js +0 -380
  291. package/node/hooks/features/editRows/useGridEditing.old.js +0 -193
  292. package/node/hooks/features/editRows/useGridRowEditing.old.js +0 -358
  293. package/node/hooks/features/selection/index.js +0 -18
@@ -1,334 +0,0 @@
1
- import _extends from "@babel/runtime/helpers/esm/extends";
2
- import * as React from 'react';
3
- import { useEventCallback } from '@mui/material/utils';
4
- import { useGridApiMethod } from '../../utils/useGridApiMethod';
5
- import { GridRowModes, GridEditModes, GridCellModes } from '../../../models/gridEditRowModel';
6
- import { useGridSelector } from '../../utils/useGridSelector';
7
- import { gridColumnDefinitionsSelector } from '../columns/gridColumnsSelector';
8
- import { gridEditRowsStateSelector } from './gridEditRowsSelector';
9
- import { gridFocusCellSelector } from '../focus/gridFocusStateSelector';
10
- import { useGridApiOptionHandler, useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
11
- export const useGridRowEditing = (apiRef, props) => {
12
- var _props$experimentalFe2, _props$experimentalFe4;
13
-
14
- const focusTimeout = React.useRef(null);
15
- const nextFocusedCell = React.useRef(null);
16
- const columns = useGridSelector(apiRef, gridColumnDefinitionsSelector);
17
-
18
- const buildCallback = callback => (...args) => {
19
- if (props.editMode === GridEditModes.Row) {
20
- callback(...args);
21
- }
22
- };
23
-
24
- const setRowMode = React.useCallback((id, mode) => {
25
- if (mode === apiRef.current.getRowMode(id)) {
26
- return;
27
- }
28
-
29
- apiRef.current.setState(state => {
30
- const newEditRowsState = _extends({}, state.editRows);
31
-
32
- if (mode === GridRowModes.Edit) {
33
- newEditRowsState[id] = {};
34
- columns.forEach(column => {
35
- const cellParams = apiRef.current.getCellParams(id, column.field);
36
-
37
- if (cellParams.isEditable) {
38
- newEditRowsState[id][column.field] = {
39
- value: cellParams.value
40
- };
41
- }
42
- });
43
- } else {
44
- delete newEditRowsState[id];
45
- }
46
-
47
- return _extends({}, state, {
48
- editRows: newEditRowsState
49
- });
50
- });
51
- apiRef.current.forceUpdate();
52
- }, [apiRef, columns]);
53
- const getRowMode = React.useCallback(id => {
54
- if (props.editMode === GridEditModes.Cell) {
55
- return GridRowModes.View;
56
- }
57
-
58
- const editRowsState = gridEditRowsStateSelector(apiRef.current.state);
59
- return editRowsState[id] ? GridRowModes.Edit : GridRowModes.View;
60
- }, [apiRef, props.editMode]);
61
- const commitRowChange = React.useCallback((id, event = {}) => {
62
- var _props$experimentalFe;
63
-
64
- if (props.editMode === GridEditModes.Cell) {
65
- throw new Error(`MUI: You can't commit changes when the edit mode is 'cell'.`);
66
- }
67
-
68
- apiRef.current.unstable_runPendingEditCellValueMutation(id);
69
- const model = apiRef.current.getEditRowsModel();
70
- const editRowProps = model[id];
71
-
72
- if (!editRowProps) {
73
- throw new Error(`MUI: Row at id: ${id} is not being edited.`);
74
- }
75
-
76
- if ((_props$experimentalFe = props.experimentalFeatures) != null && _props$experimentalFe.preventCommitWhileValidating) {
77
- const isValid = Object.keys(editRowProps).reduce((acc, field) => {
78
- return acc && !editRowProps[field].isValidating && !editRowProps[field].error;
79
- }, true);
80
-
81
- if (!isValid) {
82
- return false;
83
- }
84
- }
85
-
86
- const hasFieldWithError = Object.values(editRowProps).some(value => !!value.error);
87
-
88
- if (hasFieldWithError) {
89
- return false;
90
- }
91
-
92
- const fieldsWithValidator = Object.keys(editRowProps).filter(field => {
93
- const column = apiRef.current.getColumn(field);
94
- return typeof column.preProcessEditCellProps === 'function';
95
- });
96
-
97
- if (fieldsWithValidator.length > 0) {
98
- const row = apiRef.current.getRow(id);
99
- const validatorErrors = fieldsWithValidator.map(async field => {
100
- const column = apiRef.current.getColumn(field);
101
- const newEditCellProps = await Promise.resolve(column.preProcessEditCellProps({
102
- id,
103
- row,
104
- props: editRowProps[field]
105
- }));
106
- apiRef.current.unstable_setEditCellProps({
107
- id,
108
- field,
109
- props: newEditCellProps
110
- });
111
- return newEditCellProps.error;
112
- });
113
- return Promise.all(validatorErrors).then(errors => {
114
- if (errors.some(error => !!error)) {
115
- return false;
116
- }
117
-
118
- apiRef.current.publishEvent('rowEditCommit', id, event);
119
- return true;
120
- });
121
- }
122
-
123
- apiRef.current.publishEvent('rowEditCommit', id, event);
124
- return true;
125
- }, [apiRef, props.editMode, (_props$experimentalFe2 = props.experimentalFeatures) == null ? void 0 : _props$experimentalFe2.preventCommitWhileValidating]);
126
- const setRowEditingEditCellValue = React.useCallback(params => {
127
- const model = apiRef.current.getEditRowsModel();
128
- const editRow = model[params.id];
129
- const row = apiRef.current.getRow(params.id);
130
- let isValid = true;
131
- return new Promise(resolve => {
132
- Object.keys(editRow).forEach(async field => {
133
- const column = apiRef.current.getColumn(field);
134
- let editCellProps = field === params.field ? {
135
- value: params.value
136
- } : editRow[field]; // setEditCellProps runs the value parser and returns the updated props
137
-
138
- editCellProps = apiRef.current.unstable_setEditCellProps({
139
- id: params.id,
140
- field,
141
- props: _extends({}, editCellProps, {
142
- isValidating: true
143
- })
144
- });
145
-
146
- if (column.preProcessEditCellProps) {
147
- editCellProps = await Promise.resolve(column.preProcessEditCellProps({
148
- id: params.id,
149
- row,
150
- props: _extends({}, editCellProps, {
151
- value: field === params.field ? apiRef.current.unstable_parseValue(params.id, field, params.value) : editCellProps.value
152
- })
153
- }));
154
- }
155
-
156
- if (editCellProps.error) {
157
- isValid = false;
158
- }
159
-
160
- apiRef.current.unstable_setEditCellProps({
161
- id: params.id,
162
- field,
163
- props: _extends({}, editCellProps, {
164
- isValidating: false
165
- })
166
- });
167
- });
168
- resolve(isValid);
169
- });
170
- }, [apiRef]);
171
- const rowEditingApi = {
172
- setRowMode,
173
- getRowMode,
174
- commitRowChange,
175
- unstable_setRowEditingEditCellValue: setRowEditingEditCellValue
176
- };
177
- useGridApiMethod(apiRef, rowEditingApi, 'EditRowApi');
178
- const handleCellKeyDown = React.useCallback(async (params, event) => {
179
- // Wait until IME is settled for Asian languages like Japanese and Chinese
180
- // TODO: `event.which` is depricated but this is a temporary workaround
181
- if (event.which === 229) {
182
- return;
183
- }
184
-
185
- const {
186
- cellMode,
187
- isEditable
188
- } = params;
189
-
190
- if (!isEditable) {
191
- return;
192
- }
193
-
194
- const isEditMode = cellMode === GridCellModes.Edit;
195
- const rowParams = apiRef.current.getRowParams(params.id);
196
-
197
- if (isEditMode) {
198
- if (event.key === 'Enter') {
199
- var _props$experimentalFe3;
200
-
201
- // TODO: check the return before firing 'rowEditStop'
202
- // On cell editing, it won't exits the edit mode with error
203
- const isValid = await apiRef.current.commitRowChange(params.id);
204
-
205
- if (!isValid && (_props$experimentalFe3 = props.experimentalFeatures) != null && _props$experimentalFe3.preventCommitWhileValidating) {
206
- return;
207
- }
208
-
209
- apiRef.current.publishEvent('rowEditStop', rowParams, event);
210
- } else if (event.key === 'Escape') {
211
- apiRef.current.publishEvent('rowEditStop', rowParams, event);
212
- }
213
- } else if (event.key === 'Enter') {
214
- apiRef.current.publishEvent('rowEditStart', rowParams, event);
215
- }
216
- }, [apiRef, (_props$experimentalFe4 = props.experimentalFeatures) == null ? void 0 : _props$experimentalFe4.preventCommitWhileValidating]);
217
- const handleCellDoubleClick = React.useCallback((params, event) => {
218
- if (!params.isEditable) {
219
- return;
220
- }
221
-
222
- const rowParams = apiRef.current.getRowParams(params.id);
223
- apiRef.current.publishEvent('rowEditStart', rowParams, event);
224
- }, [apiRef]);
225
- const handleEditCellPropsChange = React.useCallback(params => {
226
- const row = apiRef.current.getRow(params.id);
227
- const model = apiRef.current.getEditRowsModel();
228
- const editRow = model[params.id];
229
- Object.keys(editRow).forEach(async field => {
230
- const column = apiRef.current.getColumn(field);
231
-
232
- if (column.preProcessEditCellProps) {
233
- const editCellProps = field === params.field ? params.props : editRow[field];
234
- const newEditCellProps = await Promise.resolve(column.preProcessEditCellProps({
235
- id: params.id,
236
- row,
237
- props: editCellProps
238
- }));
239
- apiRef.current.unstable_setEditCellProps({
240
- id: params.id,
241
- field,
242
- props: newEditCellProps
243
- });
244
- } else if (field === params.field) {
245
- apiRef.current.unstable_setEditCellProps(params);
246
- }
247
- });
248
- }, [apiRef]);
249
- const handleRowEditStart = React.useCallback(params => {
250
- apiRef.current.setRowMode(params.id, GridRowModes.Edit);
251
- }, [apiRef]);
252
- const handleRowEditStop = React.useCallback((params, event) => {
253
- apiRef.current.setRowMode(params.id, GridRowModes.View);
254
-
255
- if (event.key === 'Enter') {
256
- apiRef.current.publishEvent('cellNavigationKeyDown', params, event);
257
- }
258
- }, [apiRef]);
259
- const handleRowEditCommit = React.useCallback(id => {
260
- const model = apiRef.current.getEditRowsModel();
261
- const editRow = model[id];
262
-
263
- if (!editRow) {
264
- throw new Error(`MUI: Row at id: ${id} is not being edited.`);
265
- }
266
-
267
- const row = apiRef.current.getRow(id);
268
-
269
- if (row) {
270
- let rowUpdate = _extends({}, row);
271
-
272
- Object.keys(editRow).forEach(field => {
273
- const column = apiRef.current.getColumn(field);
274
- const value = editRow[field].value;
275
-
276
- if (column.valueSetter) {
277
- rowUpdate = column.valueSetter({
278
- row: rowUpdate,
279
- value
280
- });
281
- } else {
282
- rowUpdate[field] = value;
283
- }
284
- });
285
- apiRef.current.updateRows([rowUpdate]);
286
- }
287
- }, [apiRef]);
288
- const handleCellFocusIn = React.useCallback(params => {
289
- nextFocusedCell.current = params;
290
- }, []);
291
-
292
- const commitPropsAndExit = async (params, event) => {
293
- if (params.cellMode === GridCellModes.View) {
294
- return;
295
- }
296
-
297
- nextFocusedCell.current = null;
298
- focusTimeout.current = setTimeout(async () => {
299
- var _nextFocusedCell$curr;
300
-
301
- if (((_nextFocusedCell$curr = nextFocusedCell.current) == null ? void 0 : _nextFocusedCell$curr.id) !== params.id) {
302
- await apiRef.current.commitRowChange(params.id, event);
303
- const rowParams = apiRef.current.getRowParams(params.id);
304
- apiRef.current.publishEvent('rowEditStop', rowParams, event);
305
- }
306
- });
307
- };
308
-
309
- const handleCellFocusOut = useEventCallback((params, event) => {
310
- commitPropsAndExit(params, event);
311
- });
312
- const handleColumnHeaderDragStart = useEventCallback(() => {
313
- const cell = gridFocusCellSelector(apiRef);
314
-
315
- if (!cell) {
316
- return;
317
- }
318
-
319
- const params = apiRef.current.getCellParams(cell.id, cell.field);
320
- commitPropsAndExit(params, {});
321
- });
322
- useGridApiEventHandler(apiRef, 'cellKeyDown', buildCallback(handleCellKeyDown));
323
- useGridApiEventHandler(apiRef, 'cellDoubleClick', buildCallback(handleCellDoubleClick));
324
- useGridApiEventHandler(apiRef, 'editCellPropsChange', buildCallback(handleEditCellPropsChange));
325
- useGridApiEventHandler(apiRef, 'rowEditStart', buildCallback(handleRowEditStart));
326
- useGridApiEventHandler(apiRef, 'rowEditStop', buildCallback(handleRowEditStop));
327
- useGridApiEventHandler(apiRef, 'rowEditCommit', buildCallback(handleRowEditCommit));
328
- useGridApiEventHandler(apiRef, 'cellFocusIn', buildCallback(handleCellFocusIn));
329
- useGridApiEventHandler(apiRef, 'cellFocusOut', buildCallback(handleCellFocusOut));
330
- useGridApiEventHandler(apiRef, 'columnHeaderDragStart', buildCallback(handleColumnHeaderDragStart));
331
- useGridApiOptionHandler(apiRef, 'rowEditCommit', props.onRowEditCommit);
332
- useGridApiOptionHandler(apiRef, 'rowEditStart', props.onRowEditStart);
333
- useGridApiOptionHandler(apiRef, 'rowEditStop', props.onRowEditStop);
334
- };
@@ -1,9 +0,0 @@
1
- import { createSelector } from '../../../utils/createSelector';
2
- import { gridRowsLookupSelector } from '../rows/gridRowsSelector';
3
- export const gridSelectionStateSelector = state => state.selection;
4
- export const selectedGridRowsCountSelector = createSelector(gridSelectionStateSelector, selection => selection.length);
5
- export const selectedGridRowsSelector = createSelector(gridSelectionStateSelector, gridRowsLookupSelector, (selectedRows, rowsLookup) => new Map(selectedRows.map(id => [id, rowsLookup[id]])));
6
- export const selectedIdsLookupSelector = createSelector(gridSelectionStateSelector, selection => selection.reduce((lookup, rowId) => {
7
- lookup[rowId] = rowId;
8
- return lookup;
9
- }, {}));
@@ -1 +0,0 @@
1
- export * from './gridSelectionSelector';
@@ -1 +0,0 @@
1
- export * from './gridSelectionSelector';
@@ -1,12 +0,0 @@
1
- import * as React from 'react';
2
- import { DataGridProcessedProps } from '../../../models/props/DataGridProps';
3
- import { GridApiCommunity } from '../../../models/api/gridApiCommunity';
4
- import { GridStateInitializer } from '../../utils/useGridInitializeState';
5
- export declare const selectionStateInitializer: GridStateInitializer<Pick<DataGridProcessedProps, 'selectionModel'>>;
6
- /**
7
- * @requires useGridRows (state, method) - can be after
8
- * @requires useGridParamsApi (method) - can be after
9
- * @requires useGridFocus (state) - can be after
10
- * @requires useGridKeyboardNavigation (`cellKeyDown` event must first be consumed by it)
11
- */
12
- export declare const useGridSelection: (apiRef: React.MutableRefObject<GridApiCommunity>, props: Pick<DataGridProcessedProps, 'checkboxSelection' | 'selectionModel' | 'onSelectionModelChange' | 'disableMultipleSelection' | 'disableSelectionOnClick' | 'isRowSelectable' | 'checkboxSelectionVisibleOnly' | 'pagination' | 'paginationMode' | 'classes' | 'keepNonExistentRowsSelected'>) => void;
@@ -1,35 +0,0 @@
1
- import _extends from "@babel/runtime/helpers/esm/extends";
2
- import * as React from 'react';
3
- import { useGridRegisterPipeProcessor } from '../../core/pipeProcessing';
4
- import { isDeepEqual } from '../../../utils/utils';
5
- import { unwrapGroupingColumnModel, hasGroupPath } from './useGridColumnGrouping';
6
- export var useGridColumnGroupingPreProcessors = function useGridColumnGroupingPreProcessors(apiRef, props) {
7
- var _props$experimentalFe2;
8
-
9
- var addHeaderGroups = React.useCallback(function (columnsState) {
10
- var _props$experimentalFe;
11
-
12
- if (!((_props$experimentalFe = props.experimentalFeatures) != null && _props$experimentalFe.columnGrouping)) {
13
- return columnsState;
14
- }
15
-
16
- var unwrappedGroupingModel = unwrapGroupingColumnModel(props.columnGroupingModel);
17
- columnsState.all.forEach(function (field) {
18
- var _unwrappedGroupingMod, _unwrappedGroupingMod2;
19
-
20
- var newGroupPath = (_unwrappedGroupingMod = unwrappedGroupingModel[field]) != null ? _unwrappedGroupingMod : [];
21
- var lookupElement = columnsState.lookup[field];
22
-
23
- if (hasGroupPath(lookupElement) && isDeepEqual(newGroupPath, lookupElement == null ? void 0 : lookupElement.groupPath)) {
24
- // Avoid modifying the pointer to allow shadow comparison in https://github.com/mui/mui-x/blob/f90afbf10a1264ee8b453d7549dd7cdd6110a4ed/packages/grid/x-data-grid/src/hooks/features/columns/gridColumnsUtils.ts#L446:L453
25
- return;
26
- }
27
-
28
- columnsState.lookup[field] = _extends({}, columnsState.lookup[field], {
29
- groupPath: (_unwrappedGroupingMod2 = unwrappedGroupingModel[field]) != null ? _unwrappedGroupingMod2 : []
30
- });
31
- });
32
- return columnsState;
33
- }, [props.columnGroupingModel, (_props$experimentalFe2 = props.experimentalFeatures) == null ? void 0 : _props$experimentalFe2.columnGrouping]);
34
- useGridRegisterPipeProcessor(apiRef, 'hydrateColumns', addHeaderGroups);
35
- };
@@ -1 +0,0 @@
1
- export * from './gridEditRowsSelector';