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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (120) hide show
  1. package/CHANGELOG.md +231 -12
  2. package/DataGrid/DataGrid.js +0 -20
  3. package/DataGrid/useDataGridComponent.js +2 -6
  4. package/colDef/gridNumericOperators.d.ts +1 -1
  5. package/colDef/gridSingleSelectOperators.d.ts +1 -1
  6. package/colDef/gridStringOperators.d.ts +1 -1
  7. package/components/cell/GridEditInputCell.js +3 -8
  8. package/components/cell/GridEditSingleSelectCell.js +6 -38
  9. package/components/panel/filterPanel/GridFilterForm.d.ts +12 -0
  10. package/components/panel/filterPanel/GridFilterForm.js +29 -7
  11. package/components/panel/filterPanel/GridFilterPanel.d.ts +12 -0
  12. package/components/panel/filterPanel/GridFilterPanel.js +64 -19
  13. package/hooks/core/pipeProcessing/useGridRegisterPipeApplier.d.ts +1 -1
  14. package/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.d.ts +1 -1
  15. package/hooks/core/strategyProcessing/useGridRegisterStrategyProcessor.d.ts +1 -1
  16. package/hooks/core/useGridInitialization.d.ts +1 -1
  17. package/hooks/core/useGridStateInitialization.d.ts +1 -1
  18. package/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +1 -1
  19. package/hooks/features/{editRows/gridEditRowsSelector.d.ts → editing/gridEditingSelectors.d.ts} +0 -0
  20. package/hooks/features/{editRows/gridEditRowsSelector.js → editing/gridEditingSelectors.js} +0 -0
  21. package/hooks/features/editing/index.d.ts +1 -0
  22. package/hooks/features/editing/index.js +1 -0
  23. package/hooks/features/{editRows/useGridCellEditing.new.d.ts → editing/useGridCellEditing.d.ts} +0 -0
  24. package/hooks/features/{editRows/useGridCellEditing.new.js → editing/useGridCellEditing.js} +21 -6
  25. package/hooks/features/{editRows/useGridEditing.new.d.ts → editing/useGridEditing.d.ts} +0 -0
  26. package/hooks/features/{editRows/useGridEditing.new.js → editing/useGridEditing.js} +3 -3
  27. package/hooks/features/{editRows/useGridRowEditing.new.d.ts → editing/useGridRowEditing.d.ts} +0 -0
  28. package/hooks/features/{editRows/useGridRowEditing.new.js → editing/useGridRowEditing.js} +20 -6
  29. package/hooks/features/index.d.ts +1 -1
  30. package/hooks/features/index.js +1 -1
  31. package/hooks/features/virtualization/useGridVirtualScroller.d.ts +1 -1
  32. package/hooks/features/virtualization/useGridVirtualScroller.js +1 -1
  33. package/hooks/utils/useGridApi.d.ts +1 -1
  34. package/hooks/utils/useGridApiEventHandler.d.ts +2 -2
  35. package/hooks/utils/useGridApiRef.d.ts +1 -1
  36. package/hooks/utils/useGridInitializeState.d.ts +1 -1
  37. package/hooks/utils/useGridNativeEventListener.d.ts +1 -1
  38. package/hooks/utils/useGridSelector.d.ts +1 -1
  39. package/hooks/utils/useGridState.d.ts +1 -1
  40. package/hooks/utils/useGridVisibleRows.d.ts +2 -2
  41. package/index.js +1 -1
  42. package/internals/index.d.ts +1 -2
  43. package/internals/index.js +1 -2
  44. package/legacy/DataGrid/DataGrid.js +0 -20
  45. package/legacy/DataGrid/useDataGridComponent.js +2 -6
  46. package/legacy/components/cell/GridEditInputCell.js +3 -8
  47. package/legacy/components/cell/GridEditSingleSelectCell.js +6 -52
  48. package/legacy/components/panel/filterPanel/GridFilterForm.js +31 -7
  49. package/legacy/components/panel/filterPanel/GridFilterPanel.js +67 -18
  50. package/legacy/hooks/features/{editRows/gridEditRowsSelector.js → editing/gridEditingSelectors.js} +0 -0
  51. package/legacy/hooks/features/editing/index.js +1 -0
  52. package/legacy/hooks/features/{editRows/useGridCellEditing.new.js → editing/useGridCellEditing.js} +21 -6
  53. package/legacy/hooks/features/{editRows/useGridEditing.new.js → editing/useGridEditing.js} +3 -3
  54. package/legacy/hooks/features/{editRows/useGridRowEditing.new.js → editing/useGridRowEditing.js} +20 -6
  55. package/legacy/hooks/features/index.js +1 -1
  56. package/legacy/hooks/features/virtualization/useGridVirtualScroller.js +1 -1
  57. package/legacy/index.js +1 -1
  58. package/legacy/internals/index.js +1 -2
  59. package/legacy/models/params/gridEditCellParams.js +0 -4
  60. package/models/api/gridApiCommon.d.ts +2 -5
  61. package/models/api/gridApiCommunity.d.ts +1 -7
  62. package/models/api/gridEditingApi.d.ts +36 -121
  63. package/models/api/index.d.ts +1 -1
  64. package/models/events/gridEventLookup.d.ts +1 -15
  65. package/models/params/gridEditCellParams.d.ts +4 -17
  66. package/models/params/gridEditCellParams.js +0 -4
  67. package/models/params/gridRowParams.d.ts +4 -4
  68. package/models/props/DataGridProps.d.ts +0 -24
  69. package/modern/DataGrid/DataGrid.js +0 -20
  70. package/modern/DataGrid/useDataGridComponent.js +2 -4
  71. package/modern/components/cell/GridEditInputCell.js +3 -4
  72. package/modern/components/cell/GridEditSingleSelectCell.js +6 -34
  73. package/modern/components/panel/filterPanel/GridFilterForm.js +29 -7
  74. package/modern/components/panel/filterPanel/GridFilterPanel.js +62 -17
  75. package/modern/hooks/features/{editRows/gridEditRowsSelector.js → editing/gridEditingSelectors.js} +0 -0
  76. package/modern/hooks/features/editing/index.js +1 -0
  77. package/modern/hooks/features/{editRows/useGridCellEditing.new.js → editing/useGridCellEditing.js} +21 -6
  78. package/modern/hooks/features/{editRows/useGridEditing.new.js → editing/useGridEditing.js} +3 -3
  79. package/modern/hooks/features/{editRows/useGridRowEditing.new.js → editing/useGridRowEditing.js} +20 -6
  80. package/modern/hooks/features/index.js +1 -1
  81. package/modern/hooks/features/virtualization/useGridVirtualScroller.js +1 -1
  82. package/modern/index.js +1 -1
  83. package/modern/internals/index.js +1 -2
  84. package/modern/models/params/gridEditCellParams.js +0 -4
  85. package/node/DataGrid/DataGrid.js +0 -20
  86. package/node/DataGrid/useDataGridComponent.js +3 -8
  87. package/node/components/cell/GridEditInputCell.js +3 -9
  88. package/node/components/cell/GridEditSingleSelectCell.js +6 -38
  89. package/node/components/panel/filterPanel/GridFilterForm.js +30 -7
  90. package/node/components/panel/filterPanel/GridFilterPanel.js +63 -19
  91. package/node/hooks/features/{editRows/gridEditRowsSelector.js → editing/gridEditingSelectors.js} +0 -0
  92. package/node/hooks/features/{editRows → editing}/index.js +4 -4
  93. package/node/hooks/features/{editRows/useGridCellEditing.new.js → editing/useGridCellEditing.js} +28 -13
  94. package/node/hooks/features/{editRows/useGridEditing.new.js → editing/useGridEditing.js} +4 -4
  95. package/node/hooks/features/{editRows/useGridRowEditing.new.js → editing/useGridRowEditing.js} +28 -14
  96. package/node/hooks/features/index.js +4 -4
  97. package/node/hooks/features/virtualization/useGridVirtualScroller.js +2 -2
  98. package/node/index.js +1 -1
  99. package/node/internals/index.js +3 -17
  100. package/node/models/params/gridEditCellParams.js +0 -3
  101. package/package.json +2 -2
  102. package/hooks/features/editRows/index.d.ts +0 -1
  103. package/hooks/features/editRows/index.js +0 -1
  104. package/hooks/features/editRows/useGridCellEditing.old.d.ts +0 -4
  105. package/hooks/features/editRows/useGridCellEditing.old.js +0 -359
  106. package/hooks/features/editRows/useGridEditing.old.d.ts +0 -11
  107. package/hooks/features/editRows/useGridEditing.old.js +0 -167
  108. package/hooks/features/editRows/useGridRowEditing.old.d.ts +0 -4
  109. package/hooks/features/editRows/useGridRowEditing.old.js +0 -334
  110. package/legacy/hooks/features/editRows/index.js +0 -1
  111. package/legacy/hooks/features/editRows/useGridCellEditing.old.js +0 -411
  112. package/legacy/hooks/features/editRows/useGridEditing.old.js +0 -184
  113. package/legacy/hooks/features/editRows/useGridRowEditing.old.js +0 -505
  114. package/modern/hooks/features/editRows/index.js +0 -1
  115. package/modern/hooks/features/editRows/useGridCellEditing.old.js +0 -355
  116. package/modern/hooks/features/editRows/useGridEditing.old.js +0 -163
  117. package/modern/hooks/features/editRows/useGridRowEditing.old.js +0 -326
  118. package/node/hooks/features/editRows/useGridCellEditing.old.js +0 -380
  119. package/node/hooks/features/editRows/useGridEditing.old.js +0 -193
  120. package/node/hooks/features/editRows/useGridRowEditing.old.js +0 -358
@@ -1,411 +0,0 @@
1
- import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
- import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
3
- import _extends from "@babel/runtime/helpers/esm/extends";
4
- import _regeneratorRuntime from "@babel/runtime/regenerator";
5
- import * as React from 'react';
6
- import { useEventCallback } from '@mui/material/utils';
7
- import { useGridApiOptionHandler, useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
8
- import { GridCellModes, GridEditModes } from '../../../models/gridEditRowModel';
9
- import { isKeyboardEvent, isPrintableKey, isCellEnterEditModeKeys, isCellExitEditModeKeys, isCellEditCommitKeys, isDeleteKeys } from '../../../utils/keyboardUtils';
10
- import { useGridLogger } from '../../utils/useGridLogger';
11
- import { gridFocusCellSelector } from '../focus/gridFocusStateSelector';
12
- import { useGridApiMethod } from '../../utils/useGridApiMethod';
13
- import { gridEditRowsStateSelector } from './gridEditRowsSelector';
14
-
15
- function isPromise(promise) {
16
- return typeof promise.then === 'function';
17
- }
18
-
19
- export var useCellEditing = function useCellEditing(apiRef, props) {
20
- var _props$experimentalFe2;
21
-
22
- var logger = useGridLogger(apiRef, 'useGridEditRows');
23
-
24
- var buildCallback = function buildCallback(callback) {
25
- return function () {
26
- if (props.editMode === GridEditModes.Cell) {
27
- callback.apply(void 0, arguments);
28
- }
29
- };
30
- };
31
-
32
- var setCellMode = React.useCallback(function (id, field, mode) {
33
- if (apiRef.current.getCellMode(id, field) === mode) {
34
- return;
35
- }
36
-
37
- logger.debug("Switching cell id: ".concat(id, " field: ").concat(field, " to mode: ").concat(mode));
38
- apiRef.current.setState(function (state) {
39
- var newEditRowsState = _extends({}, state.editRows);
40
-
41
- newEditRowsState[id] = _extends({}, newEditRowsState[id]);
42
-
43
- if (mode === GridCellModes.Edit) {
44
- newEditRowsState[id][field] = {
45
- value: apiRef.current.getCellValue(id, field)
46
- };
47
- } else {
48
- delete newEditRowsState[id][field];
49
-
50
- if (!Object.keys(newEditRowsState[id]).length) {
51
- delete newEditRowsState[id];
52
- }
53
- }
54
-
55
- return _extends({}, state, {
56
- editRows: newEditRowsState
57
- });
58
- });
59
- apiRef.current.forceUpdate();
60
- apiRef.current.publishEvent('cellModeChange', apiRef.current.getCellParams(id, field));
61
- }, [apiRef, logger]);
62
- var getCellMode = React.useCallback(function (id, field) {
63
- var editRowsState = gridEditRowsStateSelector(apiRef.current.state);
64
- var isEditing = editRowsState[id] && editRowsState[id][field];
65
- return isEditing ? GridCellModes.Edit : GridCellModes.View;
66
- }, [apiRef]); // TODO v6: it should always return a promise
67
-
68
- var commitCellChange = React.useCallback(function (params) {
69
- var _props$experimentalFe;
70
-
71
- var event = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
72
- var id = params.id,
73
- field = params.field;
74
- apiRef.current.unstable_runPendingEditCellValueMutation(id, field);
75
- var model = apiRef.current.getEditRowsModel();
76
-
77
- if (!model[id] || !model[id][field]) {
78
- throw new Error("MUI: Cell at id: ".concat(id, " and field: ").concat(field, " is not in edit mode."));
79
- }
80
-
81
- var editCellProps = model[id][field];
82
- var column = apiRef.current.getColumn(field);
83
- var row = apiRef.current.getRow(id);
84
-
85
- if ((_props$experimentalFe = props.experimentalFeatures) != null && _props$experimentalFe.preventCommitWhileValidating) {
86
- var cellProps = model[id][field];
87
-
88
- if (cellProps.isValidating || cellProps.error) {
89
- return false;
90
- }
91
- }
92
-
93
- var commitParams = _extends({}, params, {
94
- value: editCellProps.value
95
- });
96
-
97
- var hasError = !!editCellProps.error;
98
-
99
- if (!hasError && typeof column.preProcessEditCellProps === 'function') {
100
- var result = column.preProcessEditCellProps({
101
- id: id,
102
- row: row,
103
- props: editCellProps
104
- });
105
-
106
- if (isPromise(result)) {
107
- return result.then(function (newEditCellProps) {
108
- apiRef.current.unstable_setEditCellProps({
109
- id: id,
110
- field: field,
111
- props: newEditCellProps
112
- });
113
-
114
- if (newEditCellProps.error) {
115
- return false;
116
- }
117
-
118
- apiRef.current.publishEvent('cellEditCommit', commitParams, event);
119
- return true;
120
- });
121
- }
122
-
123
- apiRef.current.unstable_setEditCellProps({
124
- id: id,
125
- field: field,
126
- props: result
127
- });
128
- hasError = !!result.error;
129
- }
130
-
131
- if (!hasError) {
132
- apiRef.current.publishEvent('cellEditCommit', commitParams, event);
133
- return true;
134
- }
135
-
136
- return false;
137
- }, [apiRef, (_props$experimentalFe2 = props.experimentalFeatures) == null ? void 0 : _props$experimentalFe2.preventCommitWhileValidating]);
138
- var setCellEditingEditCellValue = React.useCallback(function (params) {
139
- var column = apiRef.current.getColumn(params.field);
140
- var row = apiRef.current.getRow(params.id);
141
- return new Promise(function (resolve) {
142
- var newEditCellProps = {
143
- value: params.value
144
- };
145
- var model = apiRef.current.getEditRowsModel();
146
- var editCellProps = model[params.id][params.field];
147
-
148
- if (typeof column.preProcessEditCellProps !== 'function') {
149
- apiRef.current.unstable_setEditCellProps(_extends({}, params, {
150
- props: newEditCellProps
151
- }));
152
- resolve(true);
153
- return;
154
- } // setEditCellProps runs the value parser and returns the updated props
155
-
156
-
157
- newEditCellProps = apiRef.current.unstable_setEditCellProps(_extends({}, params, {
158
- props: _extends({}, editCellProps, {
159
- isValidating: true
160
- })
161
- }));
162
- Promise.resolve(column.preProcessEditCellProps({
163
- id: params.id,
164
- row: row,
165
- props: _extends({}, newEditCellProps, {
166
- value: apiRef.current.unstable_parseValue(params.id, params.field, params.value)
167
- })
168
- })).then(function (newEditCellPropsProcessed) {
169
- apiRef.current.unstable_setEditCellProps(_extends({}, params, {
170
- props: _extends({}, newEditCellPropsProcessed, {
171
- isValidating: false
172
- })
173
- }));
174
- resolve(!newEditCellPropsProcessed.error);
175
- });
176
- });
177
- }, [apiRef]);
178
- var cellEditingApi = {
179
- setCellMode: setCellMode,
180
- getCellMode: getCellMode,
181
- commitCellChange: commitCellChange,
182
- unstable_setCellEditingEditCellValue: setCellEditingEditCellValue
183
- };
184
- useGridApiMethod(apiRef, cellEditingApi, 'EditRowApi');
185
- var handleCellKeyDown = React.useCallback( /*#__PURE__*/function () {
186
- var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(params, event) {
187
- var id, field, cellMode, isEditable, isEditMode, isModifierKeyPressed, commitParams, isValid;
188
- return _regeneratorRuntime.wrap(function _callee$(_context) {
189
- while (1) {
190
- switch (_context.prev = _context.next) {
191
- case 0:
192
- if (!(event.which === 229)) {
193
- _context.next = 2;
194
- break;
195
- }
196
-
197
- return _context.abrupt("return");
198
-
199
- case 2:
200
- id = params.id, field = params.field, cellMode = params.cellMode, isEditable = params.isEditable;
201
-
202
- if (isEditable) {
203
- _context.next = 5;
204
- break;
205
- }
206
-
207
- return _context.abrupt("return");
208
-
209
- case 5:
210
- isEditMode = cellMode === GridCellModes.Edit;
211
- isModifierKeyPressed = event.ctrlKey || event.metaKey || event.altKey;
212
-
213
- if (!isEditMode && isCellEnterEditModeKeys(event) && !isModifierKeyPressed && !(event.key === ' ' && event.shiftKey)) {
214
- apiRef.current.publishEvent('cellEditStart', params, event);
215
- }
216
-
217
- if (!isEditMode && isDeleteKeys(event.key)) {
218
- apiRef.current.setEditCellValue({
219
- id: id,
220
- field: field,
221
- value: ''
222
- });
223
- apiRef.current.commitCellChange({
224
- id: id,
225
- field: field
226
- }, event);
227
- apiRef.current.publishEvent('cellEditStop', params, event);
228
- }
229
-
230
- if (!(isEditMode && isCellEditCommitKeys(event.key))) {
231
- _context.next = 16;
232
- break;
233
- }
234
-
235
- commitParams = {
236
- id: id,
237
- field: field
238
- };
239
- _context.next = 13;
240
- return apiRef.current.commitCellChange(commitParams, event);
241
-
242
- case 13:
243
- isValid = _context.sent;
244
-
245
- if (isValid) {
246
- _context.next = 16;
247
- break;
248
- }
249
-
250
- return _context.abrupt("return");
251
-
252
- case 16:
253
- if (isEditMode && isCellExitEditModeKeys(event.key)) {
254
- apiRef.current.publishEvent('cellEditStop', params, event);
255
- }
256
-
257
- case 17:
258
- case "end":
259
- return _context.stop();
260
- }
261
- }
262
- }, _callee);
263
- }));
264
-
265
- return function (_x, _x2) {
266
- return _ref.apply(this, arguments);
267
- };
268
- }(), [apiRef]);
269
- var handleCellDoubleClick = React.useCallback(function (params, event) {
270
- if (!params.isEditable) {
271
- return;
272
- }
273
-
274
- apiRef.current.publishEvent('cellEditStart', params, event);
275
- }, [apiRef]);
276
-
277
- var commitPropsAndExit = /*#__PURE__*/function () {
278
- var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(params, event) {
279
- return _regeneratorRuntime.wrap(function _callee2$(_context2) {
280
- while (1) {
281
- switch (_context2.prev = _context2.next) {
282
- case 0:
283
- if (!(params.cellMode === GridCellModes.View)) {
284
- _context2.next = 2;
285
- break;
286
- }
287
-
288
- return _context2.abrupt("return");
289
-
290
- case 2:
291
- _context2.next = 4;
292
- return apiRef.current.commitCellChange(params, event);
293
-
294
- case 4:
295
- apiRef.current.publishEvent('cellEditStop', params, event);
296
-
297
- case 5:
298
- case "end":
299
- return _context2.stop();
300
- }
301
- }
302
- }, _callee2);
303
- }));
304
-
305
- return function commitPropsAndExit(_x3, _x4) {
306
- return _ref2.apply(this, arguments);
307
- };
308
- }();
309
-
310
- var handleCellFocusOut = useEventCallback(function (params, event) {
311
- commitPropsAndExit(params, event);
312
- });
313
- var handleColumnHeaderDragStart = useEventCallback(function () {
314
- var cell = gridFocusCellSelector(apiRef);
315
-
316
- if (!cell) {
317
- return;
318
- }
319
-
320
- var params = apiRef.current.getCellParams(cell.id, cell.field);
321
- commitPropsAndExit(params, {});
322
- });
323
- var handleCellEditStart = React.useCallback(function (params, event) {
324
- if (!params.isEditable) {
325
- return;
326
- }
327
-
328
- apiRef.current.setCellMode(params.id, params.field, GridCellModes.Edit);
329
-
330
- if (isKeyboardEvent(event) && isPrintableKey(event)) {
331
- apiRef.current.unstable_setEditCellProps({
332
- id: params.id,
333
- field: params.field,
334
- props: {
335
- value: ''
336
- }
337
- });
338
- }
339
- }, [apiRef]);
340
- var handleCellEditStop = React.useCallback(function (params, event) {
341
- apiRef.current.setCellMode(params.id, params.field, GridCellModes.View);
342
-
343
- if (!isKeyboardEvent(event)) {
344
- return;
345
- }
346
-
347
- if (isCellEditCommitKeys(event.key)) {
348
- apiRef.current.publishEvent('cellNavigationKeyDown', params, event);
349
- return;
350
- }
351
-
352
- if (event.key === 'Escape' || isDeleteKeys(event.key)) {
353
- apiRef.current.setCellFocus(params.id, params.field);
354
- }
355
- }, [apiRef]);
356
- var handleCellEditCommit = React.useCallback(function (params) {
357
- var id = params.id,
358
- field = params.field;
359
- var model = apiRef.current.getEditRowsModel();
360
- var value = model[id][field].value;
361
- logger.debug("Setting cell id: ".concat(id, " field: ").concat(field, " to value: ").concat(value == null ? void 0 : value.toString()));
362
- var row = apiRef.current.getRow(id);
363
-
364
- if (row) {
365
- var column = apiRef.current.getColumn(params.field);
366
-
367
- var rowUpdate = _extends({}, row, _defineProperty({}, field, value));
368
-
369
- if (column.valueSetter) {
370
- rowUpdate = column.valueSetter({
371
- row: row,
372
- value: value
373
- });
374
- }
375
-
376
- apiRef.current.updateRows([rowUpdate]);
377
- }
378
- }, [apiRef, logger]);
379
- var handleEditCellPropsChange = React.useCallback(function (params) {
380
- var row = apiRef.current.getRow(params.id);
381
- var column = apiRef.current.getColumn(params.field);
382
- var editCellProps = column.preProcessEditCellProps ? column.preProcessEditCellProps({
383
- id: params.id,
384
- row: row,
385
- props: params.props
386
- }) : params.props;
387
-
388
- if (isPromise(editCellProps)) {
389
- editCellProps.then(function (newEditCellProps) {
390
- apiRef.current.unstable_setEditCellProps(_extends({}, params, {
391
- props: newEditCellProps
392
- }));
393
- });
394
- } else {
395
- apiRef.current.unstable_setEditCellProps(_extends({}, params, {
396
- props: editCellProps
397
- }));
398
- }
399
- }, [apiRef]);
400
- useGridApiEventHandler(apiRef, 'cellKeyDown', buildCallback(handleCellKeyDown));
401
- useGridApiEventHandler(apiRef, 'cellDoubleClick', buildCallback(handleCellDoubleClick));
402
- useGridApiEventHandler(apiRef, 'cellFocusOut', buildCallback(handleCellFocusOut));
403
- useGridApiEventHandler(apiRef, 'columnHeaderDragStart', buildCallback(handleColumnHeaderDragStart));
404
- useGridApiEventHandler(apiRef, 'cellEditStart', buildCallback(handleCellEditStart));
405
- useGridApiEventHandler(apiRef, 'cellEditStop', buildCallback(handleCellEditStop));
406
- useGridApiEventHandler(apiRef, 'cellEditCommit', buildCallback(handleCellEditCommit));
407
- useGridApiEventHandler(apiRef, 'editCellPropsChange', buildCallback(handleEditCellPropsChange));
408
- useGridApiOptionHandler(apiRef, 'cellEditCommit', props.onCellEditCommit);
409
- useGridApiOptionHandler(apiRef, 'cellEditStart', props.onCellEditStart);
410
- useGridApiOptionHandler(apiRef, 'cellEditStop', props.onCellEditStop);
411
- };
@@ -1,184 +0,0 @@
1
- import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
- import _extends from "@babel/runtime/helpers/esm/extends";
3
- import * as React from 'react';
4
- import { GridCellModes } from '../../../models/gridEditRowModel';
5
- import { useGridApiEventHandler, useGridApiOptionHandler } from '../../utils/useGridApiEventHandler';
6
- import { useGridApiMethod } from '../../utils/useGridApiMethod';
7
- import { useGridLogger } from '../../utils/useGridLogger';
8
- import { gridEditRowsStateSelector } from './gridEditRowsSelector';
9
- import { useCellEditing } from './useGridCellEditing.old';
10
- import { useGridRowEditing } from './useGridRowEditing.old';
11
- import { isAutoGeneratedRow } from '../rows/gridRowsUtils';
12
- export var editingStateInitializer = function editingStateInitializer(state) {
13
- return _extends({}, state, {
14
- editRows: {}
15
- });
16
- };
17
- /**
18
- * @requires useGridFocus - can be after, async only
19
- * @requires useGridParamsApi (method)
20
- * @requires useGridColumns (state)
21
- */
22
-
23
- export function useGridEditing(apiRef, props) {
24
- var _props$experimentalFe2;
25
-
26
- var logger = useGridLogger(apiRef, 'useGridEditRows');
27
- useCellEditing(apiRef, props);
28
- useGridRowEditing(apiRef, props);
29
- var debounceMap = React.useRef({});
30
- apiRef.current.unstable_registerControlState({
31
- stateId: 'editRows',
32
- propModel: props.editRowsModel,
33
- propOnChange: props.onEditRowsModelChange,
34
- stateSelector: gridEditRowsStateSelector,
35
- changeEvent: 'editRowsModelChange'
36
- });
37
- var isCellEditable = React.useCallback(function (params) {
38
- return !isAutoGeneratedRow(params.rowNode) && params.rowNode.type !== 'pinnedRow' && !!params.colDef.editable && !!params.colDef.renderEditCell && (!props.isCellEditable || props.isCellEditable(params));
39
- }, // eslint-disable-next-line react-hooks/exhaustive-deps
40
- [props.isCellEditable]);
41
-
42
- var maybeDebounce = function maybeDebounce(id, field, debounceMs, callback) {
43
- if (!debounceMs) {
44
- callback();
45
- return;
46
- }
47
-
48
- if (!debounceMap.current[id]) {
49
- debounceMap.current[id] = {};
50
- }
51
-
52
- if (debounceMap.current[id][field]) {
53
- var _debounceMap$current$ = _slicedToArray(debounceMap.current[id][field], 1),
54
- _timeout = _debounceMap$current$[0];
55
-
56
- clearTimeout(_timeout);
57
- }
58
-
59
- var callbackToRunImmediately = function callbackToRunImmediately() {
60
- callback();
61
-
62
- var _debounceMap$current$2 = _slicedToArray(debounceMap.current[id][field], 1),
63
- timeout = _debounceMap$current$2[0];
64
-
65
- clearTimeout(timeout);
66
- delete debounceMap.current[id][field];
67
- };
68
-
69
- var timeout = setTimeout(function () {
70
- callback();
71
- delete debounceMap.current[id][field];
72
- }, debounceMs);
73
- debounceMap.current[id][field] = [timeout, callbackToRunImmediately];
74
- };
75
-
76
- var runPendingEditCellValueMutation = React.useCallback(function (id, field) {
77
- if (!debounceMap.current[id]) {
78
- return;
79
- }
80
-
81
- if (!field) {
82
- Object.keys(debounceMap.current[id]).forEach(function (debouncedField) {
83
- var _debounceMap$current$3 = _slicedToArray(debounceMap.current[id][debouncedField], 2),
84
- callback = _debounceMap$current$3[1];
85
-
86
- callback();
87
- });
88
- } else if (debounceMap.current[id][field]) {
89
- var _debounceMap$current$4 = _slicedToArray(debounceMap.current[id][field], 2),
90
- callback = _debounceMap$current$4[1];
91
-
92
- callback();
93
- }
94
- }, []);
95
- var setEditCellValue = React.useCallback(function (params) {
96
- var event = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
97
- maybeDebounce(params.id, params.field, params.debounceMs, function () {
98
- var _props$experimentalFe;
99
-
100
- if ((_props$experimentalFe = props.experimentalFeatures) != null && _props$experimentalFe.preventCommitWhileValidating) {
101
- if (props.editMode === 'row') {
102
- return apiRef.current.unstable_setRowEditingEditCellValue(params);
103
- }
104
-
105
- return apiRef.current.unstable_setCellEditingEditCellValue(params);
106
- }
107
-
108
- var newParams = {
109
- id: params.id,
110
- field: params.field,
111
- props: {
112
- value: params.value
113
- }
114
- };
115
- return apiRef.current.publishEvent('editCellPropsChange', newParams, event);
116
- });
117
- }, [apiRef, props.editMode, (_props$experimentalFe2 = props.experimentalFeatures) == null ? void 0 : _props$experimentalFe2.preventCommitWhileValidating]);
118
- var parseValue = React.useCallback(function (id, field, value) {
119
- var column = apiRef.current.getColumn(field);
120
- return column.valueParser ? column.valueParser(value, apiRef.current.getCellParams(id, field)) : value;
121
- }, [apiRef]);
122
- var setEditCellProps = React.useCallback(function (params) {
123
- var id = params.id,
124
- field = params.field,
125
- editProps = params.props;
126
- logger.debug("Setting cell props on id: ".concat(id, " field: ").concat(field));
127
- apiRef.current.setState(function (state) {
128
- var editRowsModel = _extends({}, state.editRows);
129
-
130
- editRowsModel[id] = _extends({}, state.editRows[id]);
131
- editRowsModel[id][field] = _extends({}, editProps, {
132
- value: parseValue(id, field, editProps.value)
133
- });
134
- return _extends({}, state, {
135
- editRows: editRowsModel
136
- });
137
- });
138
- apiRef.current.forceUpdate();
139
- var editRowsState = gridEditRowsStateSelector(apiRef.current.state);
140
- return editRowsState[id][field];
141
- }, [apiRef, logger, parseValue]);
142
- var setEditRowsModel = React.useCallback(function (model) {
143
- var currentModel = gridEditRowsStateSelector(apiRef.current.state);
144
-
145
- if (currentModel !== model) {
146
- logger.debug("Setting editRows model");
147
- apiRef.current.setState(function (state) {
148
- return _extends({}, state, {
149
- editRows: model
150
- });
151
- });
152
- apiRef.current.forceUpdate();
153
- }
154
- }, [apiRef, logger]);
155
- var getEditRowsModel = React.useCallback(function () {
156
- return gridEditRowsStateSelector(apiRef.current.state);
157
- }, [apiRef]);
158
- var preventTextSelection = React.useCallback(function (params, event) {
159
- var isMoreThanOneClick = event.detail > 1;
160
-
161
- if (params.isEditable && params.cellMode === GridCellModes.View && isMoreThanOneClick) {
162
- // If we click more than one time, then we prevent the default behavior of selecting the text cell.
163
- event.preventDefault();
164
- }
165
- }, []);
166
- useGridApiEventHandler(apiRef, 'cellMouseDown', preventTextSelection);
167
- useGridApiOptionHandler(apiRef, 'editCellPropsChange', props.onEditCellPropsChange); // TODO v6: remove, use `preProcessEditCellProps` instead
168
-
169
- var editingSharedApi = {
170
- isCellEditable: isCellEditable,
171
- setEditRowsModel: setEditRowsModel,
172
- getEditRowsModel: getEditRowsModel,
173
- setEditCellValue: setEditCellValue,
174
- unstable_setEditCellProps: setEditCellProps,
175
- unstable_parseValue: parseValue,
176
- unstable_runPendingEditCellValueMutation: runPendingEditCellValueMutation
177
- };
178
- useGridApiMethod(apiRef, editingSharedApi, 'EditRowApi');
179
- React.useEffect(function () {
180
- if (props.editRowsModel !== undefined) {
181
- apiRef.current.setEditRowsModel(props.editRowsModel);
182
- }
183
- }, [apiRef, props.editRowsModel]);
184
- }