@mui/x-data-grid-generator 6.0.0-alpha.1 → 6.0.0-alpha.10

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 (117) hide show
  1. package/CHANGELOG.md +1306 -149
  2. package/columns/commodities.columns.js +0 -1
  3. package/columns/employees.columns.js +0 -1
  4. package/hooks/useDemoData.js +9 -31
  5. package/hooks/useMovieData.d.ts +1 -0
  6. package/hooks/useMovieData.js +35 -1
  7. package/hooks/useQuery.js +11 -43
  8. package/index.js +1 -1
  9. package/legacy/columns/commodities.columns.js +0 -1
  10. package/legacy/columns/employees.columns.js +0 -2
  11. package/legacy/hooks/useBasicDemoData.js +6 -7
  12. package/legacy/hooks/useDemoData.js +28 -70
  13. package/legacy/hooks/useMovieData.js +35 -2
  14. package/legacy/hooks/useQuery.js +38 -77
  15. package/legacy/index.js +1 -1
  16. package/legacy/renderer/renderAvatar.js +0 -1
  17. package/legacy/renderer/renderCountry.js +3 -4
  18. package/legacy/renderer/renderEditCountry.js +32 -20
  19. package/legacy/renderer/renderEditCurrency.js +32 -20
  20. package/legacy/renderer/renderEditIncoterm.js +36 -26
  21. package/legacy/renderer/renderEditProgress.js +10 -20
  22. package/legacy/renderer/renderEditRating.js +32 -23
  23. package/legacy/renderer/renderEditStatus.js +2 -15
  24. package/legacy/renderer/renderEmail.js +0 -1
  25. package/legacy/renderer/renderIncoterm.js +0 -2
  26. package/legacy/renderer/renderLink.js +0 -2
  27. package/legacy/renderer/renderPnl.js +0 -3
  28. package/legacy/renderer/renderProgress.js +4 -5
  29. package/legacy/renderer/renderRating.js +3 -4
  30. package/legacy/renderer/renderStatus.js +8 -13
  31. package/legacy/renderer/renderTotalPrice.js +5 -6
  32. package/legacy/services/asyncWorker.js +4 -7
  33. package/legacy/services/basic-data-service.js +0 -5
  34. package/legacy/services/random-generator.js +6 -20
  35. package/legacy/services/real-data-service.js +0 -9
  36. package/legacy/services/tree-data-generator.js +6 -22
  37. package/modern/columns/commodities.columns.js +0 -1
  38. package/modern/columns/employees.columns.js +0 -1
  39. package/modern/hooks/useDemoData.js +9 -27
  40. package/modern/hooks/useMovieData.js +35 -1
  41. package/modern/hooks/useQuery.js +11 -41
  42. package/modern/index.js +1 -1
  43. package/modern/renderer/renderAvatar.js +0 -1
  44. package/modern/renderer/renderCountry.js +3 -4
  45. package/modern/renderer/renderEditCountry.js +6 -13
  46. package/modern/renderer/renderEditCurrency.js +6 -13
  47. package/modern/renderer/renderEditIncoterm.js +7 -16
  48. package/modern/renderer/renderEditProgress.js +3 -10
  49. package/modern/renderer/renderEditRating.js +7 -17
  50. package/modern/renderer/renderEditStatus.js +0 -10
  51. package/modern/renderer/renderIncoterm.js +0 -2
  52. package/modern/renderer/renderLink.js +0 -2
  53. package/modern/renderer/renderPnl.js +0 -3
  54. package/modern/renderer/renderProgress.js +4 -5
  55. package/modern/renderer/renderRating.js +3 -4
  56. package/modern/renderer/renderStatus.js +8 -13
  57. package/modern/renderer/renderTotalPrice.js +5 -6
  58. package/modern/services/asyncWorker.js +2 -4
  59. package/modern/services/basic-data-service.js +0 -5
  60. package/modern/services/random-generator.js +6 -19
  61. package/modern/services/real-data-service.js +0 -9
  62. package/modern/services/tree-data-generator.js +0 -14
  63. package/node/columns/commodities.columns.js +1 -8
  64. package/node/columns/employees.columns.js +1 -8
  65. package/node/columns/index.js +0 -4
  66. package/node/hooks/index.js +0 -8
  67. package/node/hooks/useBasicDemoData.js +0 -6
  68. package/node/hooks/useDemoData.js +17 -62
  69. package/node/hooks/useMovieData.js +35 -3
  70. package/node/hooks/useQuery.js +13 -57
  71. package/node/index.js +1 -9
  72. package/node/renderer/index.js +0 -32
  73. package/node/renderer/renderAvatar.js +0 -8
  74. package/node/renderer/renderCountry.js +3 -12
  75. package/node/renderer/renderEditCountry.js +6 -26
  76. package/node/renderer/renderEditCurrency.js +6 -26
  77. package/node/renderer/renderEditIncoterm.js +7 -28
  78. package/node/renderer/renderEditProgress.js +4 -24
  79. package/node/renderer/renderEditRating.js +7 -26
  80. package/node/renderer/renderEditStatus.js +0 -26
  81. package/node/renderer/renderEmail.js +1 -9
  82. package/node/renderer/renderIncoterm.js +0 -12
  83. package/node/renderer/renderLink.js +0 -9
  84. package/node/renderer/renderPnl.js +0 -12
  85. package/node/renderer/renderProgress.js +4 -14
  86. package/node/renderer/renderRating.js +3 -13
  87. package/node/renderer/renderStatus.js +8 -26
  88. package/node/renderer/renderTotalPrice.js +5 -15
  89. package/node/services/asyncWorker.js +2 -5
  90. package/node/services/basic-data-service.js +0 -7
  91. package/node/services/index.js +0 -8
  92. package/node/services/random-generator.js +7 -105
  93. package/node/services/real-data-service.js +0 -12
  94. package/node/services/static-data.js +0 -2
  95. package/node/services/tree-data-generator.js +1 -22
  96. package/package.json +7 -7
  97. package/renderer/renderAvatar.js +0 -1
  98. package/renderer/renderCountry.js +3 -4
  99. package/renderer/renderEditCountry.js +6 -13
  100. package/renderer/renderEditCurrency.js +6 -13
  101. package/renderer/renderEditIncoterm.js +7 -16
  102. package/renderer/renderEditProgress.js +3 -10
  103. package/renderer/renderEditRating.js +7 -17
  104. package/renderer/renderEditStatus.js +0 -10
  105. package/renderer/renderEmail.js +0 -1
  106. package/renderer/renderIncoterm.js +0 -2
  107. package/renderer/renderLink.js +0 -2
  108. package/renderer/renderPnl.js +0 -3
  109. package/renderer/renderProgress.js +4 -5
  110. package/renderer/renderRating.js +3 -4
  111. package/renderer/renderStatus.js +8 -13
  112. package/renderer/renderTotalPrice.js +5 -6
  113. package/services/asyncWorker.js +2 -4
  114. package/services/basic-data-service.js +0 -5
  115. package/services/random-generator.js +6 -20
  116. package/services/real-data-service.js +0 -9
  117. package/services/tree-data-generator.js +0 -15
@@ -9,7 +9,6 @@ import { addTreeDataOptionsToDemoData } from '../services/tree-data-generator';
9
9
  const dataCache = new LRUCache({
10
10
  max: 10,
11
11
  ttl: 60 * 5 * 1e3 // 5 minutes
12
-
13
12
  });
14
13
 
15
14
  // Generate fake data from a seed.
@@ -21,25 +20,20 @@ async function extrapolateSeed(rowLength, data) {
21
20
  const tasks = {
22
21
  current: rowLength - seed.length
23
22
  };
24
-
25
23
  function work() {
26
24
  const row = {};
27
-
28
25
  for (let j = 0; j < data.columns.length; j += 1) {
29
26
  const column = data.columns[j];
30
27
  const index = Math.round(Math.random() * (seed.length - 1));
31
-
32
28
  if (column.field === 'id') {
33
29
  row.id = `id-${tasks.current + seed.length}`;
34
30
  } else {
35
31
  row[column.field] = seed[index][column.field];
36
32
  }
37
33
  }
38
-
39
34
  rows.push(row);
40
35
  tasks.current -= 1;
41
36
  }
42
-
43
37
  asyncWorker({
44
38
  work,
45
39
  done: () => resolve(_extends({}, data, {
@@ -49,36 +43,31 @@ async function extrapolateSeed(rowLength, data) {
49
43
  });
50
44
  });
51
45
  }
52
-
53
46
  const deepFreeze = object => {
54
47
  // Retrieve the property names defined on object
55
- const propNames = Object.getOwnPropertyNames(object); // Freeze properties before freezing self
56
- // eslint-disable-next-line no-restricted-syntax
48
+ const propNames = Object.getOwnPropertyNames(object);
49
+
50
+ // Freeze properties before freezing self
57
51
 
52
+ // eslint-disable-next-line no-restricted-syntax
58
53
  for (const name of propNames) {
59
54
  const value = object[name];
60
-
61
55
  if (value && typeof value === 'object') {
62
56
  deepFreeze(value);
63
57
  }
64
58
  }
65
-
66
59
  return Object.freeze(object);
67
60
  };
68
-
69
61
  export const getColumnsFromOptions = options => {
70
62
  let columns = options.dataSet === 'Commodity' ? getCommodityColumns(options.editable) : getEmployeeColumns();
71
-
72
63
  if (options.visibleFields) {
73
64
  columns = columns.map(col => options.visibleFields?.includes(col.field) ? col : _extends({}, col, {
74
65
  hide: true
75
66
  }));
76
67
  }
77
-
78
68
  if (options.maxColumns) {
79
69
  columns = columns.slice(0, options.maxColumns);
80
70
  }
81
-
82
71
  return columns;
83
72
  };
84
73
  export const getInitialState = (options, columns) => {
@@ -89,11 +78,9 @@ export const getInitialState = (options, columns) => {
89
78
  }
90
79
  });
91
80
  const groupingField = options.treeData?.groupingField;
92
-
93
81
  if (groupingField) {
94
82
  columnVisibilityModel[groupingField] = false;
95
83
  }
96
-
97
84
  return {
98
85
  columns: {
99
86
  columnVisibilityModel
@@ -120,48 +107,43 @@ export const useDemoData = options => {
120
107
  }, options.treeData);
121
108
  });
122
109
  React.useEffect(() => {
123
- const cacheKey = `${options.dataSet}-${rowLength}-${index}-${options.maxColumns}`; // Cache to allow fast switch between the JavaScript and TypeScript version
124
- // of the demos.
110
+ const cacheKey = `${options.dataSet}-${rowLength}-${index}-${options.maxColumns}`;
125
111
 
112
+ // Cache to allow fast switch between the JavaScript and TypeScript version
113
+ // of the demos.
126
114
  if (dataCache.has(cacheKey)) {
127
115
  const newData = dataCache.get(cacheKey);
128
116
  setData(newData);
129
117
  setLoading(false);
130
118
  return undefined;
131
119
  }
132
-
133
120
  let active = true;
134
-
135
121
  (async () => {
136
122
  setLoading(true);
137
123
  let newData;
138
-
139
124
  if (rowLength > 1000) {
140
125
  newData = await getRealGridData(1000, columns);
141
126
  newData = await extrapolateSeed(rowLength, newData);
142
127
  } else {
143
128
  newData = await getRealGridData(rowLength, columns);
144
129
  }
145
-
146
130
  if (!active) {
147
131
  return;
148
132
  }
149
-
150
133
  newData = addTreeDataOptionsToDemoData(newData, {
151
134
  maxDepth: options.treeData?.maxDepth,
152
135
  groupingField: options.treeData?.groupingField,
153
136
  averageChildren: options.treeData?.averageChildren
154
- }); // It's quite slow. No need for it in production.
137
+ });
155
138
 
139
+ // It's quite slow. No need for it in production.
156
140
  if (process.env.NODE_ENV !== 'production') {
157
141
  deepFreeze(newData);
158
142
  }
159
-
160
143
  dataCache.set(cacheKey, newData);
161
144
  setData(newData);
162
145
  setLoading(false);
163
146
  })();
164
-
165
147
  return () => {
166
148
  active = false;
167
149
  };
@@ -21,7 +21,6 @@ const COLUMNS = [{
21
21
  if (!value) {
22
22
  return '';
23
23
  }
24
-
25
24
  return currencyFormatter.format(value);
26
25
  }
27
26
  }, {
@@ -46,6 +45,7 @@ const ROWS = [{
46
45
  id: 0,
47
46
  title: 'Avatar',
48
47
  gross: 2847246203,
48
+ budget: 237000000,
49
49
  director: 'James Cameron',
50
50
  company: '20th Century Fox',
51
51
  year: 2009,
@@ -57,6 +57,7 @@ const ROWS = [{
57
57
  id: 1,
58
58
  title: 'Avengers: Endgame',
59
59
  gross: 2797501328,
60
+ budget: 356000000,
60
61
  director: 'Anthony & Joe Russo',
61
62
  company: 'Disney Studios',
62
63
  year: 2019,
@@ -69,6 +70,7 @@ const ROWS = [{
69
70
  id: 2,
70
71
  title: 'Titanic',
71
72
  gross: 2187425379,
73
+ budget: 200000000,
72
74
  director: 'James Cameron',
73
75
  company: '20th Century Fox',
74
76
  year: 1997,
@@ -80,6 +82,7 @@ const ROWS = [{
80
82
  id: 3,
81
83
  title: 'Star Wars: The Force Awakens',
82
84
  gross: 2068223624,
85
+ budget: 306000000,
83
86
  director: 'J. J. Abrams',
84
87
  company: 'Disney Studios',
85
88
  year: 2015,
@@ -92,6 +95,7 @@ const ROWS = [{
92
95
  id: 4,
93
96
  title: 'Avengers: Infinity War',
94
97
  gross: 2048359754,
98
+ budget: 321000000,
95
99
  director: 'Anthony & Joe Russo',
96
100
  company: 'Disney Studios',
97
101
  year: 2018,
@@ -104,6 +108,7 @@ const ROWS = [{
104
108
  id: 5,
105
109
  title: 'Spider-Man: No Way Home',
106
110
  gross: 1892768346,
111
+ budget: 200000000,
107
112
  director: 'Jon Watts',
108
113
  company: 'Disney Studios',
109
114
  year: 2021,
@@ -116,6 +121,7 @@ const ROWS = [{
116
121
  id: 6,
117
122
  title: 'Jurassic World',
118
123
  gross: 1671713208,
124
+ budget: 150000000,
119
125
  director: 'Colin Trevorrow',
120
126
  company: 'Universal Pictures',
121
127
  year: 2015,
@@ -128,6 +134,7 @@ const ROWS = [{
128
134
  id: 7,
129
135
  title: 'The Lion King',
130
136
  gross: 1656943394,
137
+ budget: 260000000,
131
138
  director: 'Jon Favreau',
132
139
  company: 'Disney Studios',
133
140
  year: 2019,
@@ -139,6 +146,7 @@ const ROWS = [{
139
146
  id: 8,
140
147
  title: 'The Avengers',
141
148
  gross: 1518812988,
149
+ budget: 220000000,
142
150
  director: 'Joss Whedon',
143
151
  company: 'Disney Studios',
144
152
  year: 2012,
@@ -151,6 +159,7 @@ const ROWS = [{
151
159
  id: 9,
152
160
  title: 'Furious 7',
153
161
  gross: 1516045911,
162
+ budget: 190000000,
154
163
  director: 'James Wan',
155
164
  company: 'Universal Pictures',
156
165
  year: 2015,
@@ -163,6 +172,7 @@ const ROWS = [{
163
172
  id: 10,
164
173
  title: 'Frozen II',
165
174
  gross: 1450026933,
175
+ budget: 150000000,
166
176
  director: 'Chris Buck & Jennifer Lee',
167
177
  company: 'Disney Studios',
168
178
  year: 2019,
@@ -175,6 +185,7 @@ const ROWS = [{
175
185
  id: 11,
176
186
  title: 'Avengers: Age of Ultron',
177
187
  gross: 1402804868,
188
+ budget: 280000000,
178
189
  director: 'Joss Whedon',
179
190
  company: 'Disney Studios',
180
191
  year: 2015,
@@ -187,6 +198,7 @@ const ROWS = [{
187
198
  id: 12,
188
199
  title: 'Black Panther',
189
200
  gross: 1347280838,
201
+ budget: 200000000,
190
202
  director: 'Ryan Coogler',
191
203
  company: 'Disney Studios',
192
204
  year: 2018,
@@ -199,6 +211,7 @@ const ROWS = [{
199
211
  id: 13,
200
212
  title: 'Harry Potter and the Deathly Hallows – Part 2',
201
213
  gross: 1342025430,
214
+ budget: 125000000,
202
215
  director: 'David Yates',
203
216
  company: 'Warner Bros. Pictures',
204
217
  year: 2011,
@@ -211,6 +224,7 @@ const ROWS = [{
211
224
  id: 14,
212
225
  title: 'Star Wars: The Last Jedi',
213
226
  gross: 1332539889,
227
+ budget: 317000000,
214
228
  director: 'Rian Johnson',
215
229
  company: 'Disney Studios',
216
230
  year: 2017,
@@ -223,6 +237,7 @@ const ROWS = [{
223
237
  id: 15,
224
238
  title: 'Jurassic World: Fallen Kingdom',
225
239
  gross: 1309484461,
240
+ budget: 170000000,
226
241
  director: 'J. A. Bayona',
227
242
  company: 'Universal Pictures',
228
243
  year: 2018,
@@ -235,6 +250,7 @@ const ROWS = [{
235
250
  id: 16,
236
251
  title: 'Frozen',
237
252
  gross: 1290000000,
253
+ budget: 150000000,
238
254
  director: 'Chris Buck & Jennifer Lee',
239
255
  company: 'Disney Studios',
240
256
  year: 2013,
@@ -247,6 +263,7 @@ const ROWS = [{
247
263
  id: 17,
248
264
  title: 'Beauty and the Beast',
249
265
  gross: 1263521136,
266
+ budget: 160000000,
250
267
  director: 'Bill Condon',
251
268
  company: 'Disney Studios',
252
269
  year: 2017,
@@ -258,6 +275,7 @@ const ROWS = [{
258
275
  id: 18,
259
276
  title: 'Incredibles 2',
260
277
  gross: 1242805359,
278
+ budget: 200000000,
261
279
  director: 'Brad Bird',
262
280
  company: 'Disney Studios',
263
281
  year: 2018,
@@ -269,6 +287,7 @@ const ROWS = [{
269
287
  id: 19,
270
288
  title: 'The Fate of the Furious',
271
289
  gross: 1238764765,
290
+ budget: 250000000,
272
291
  director: 'F. Gary Gray',
273
292
  company: 'Universal Pictures',
274
293
  year: 2017,
@@ -281,6 +300,7 @@ const ROWS = [{
281
300
  id: 20,
282
301
  title: 'Iron Man 3',
283
302
  gross: 1214811252,
303
+ budget: 200000000,
284
304
  director: 'Shane Black',
285
305
  company: 'Disney Studios',
286
306
  year: 2013,
@@ -293,6 +313,7 @@ const ROWS = [{
293
313
  id: 21,
294
314
  title: 'Minions',
295
315
  gross: 1159398397,
316
+ budget: 74000000,
296
317
  director: 'Pierre Coffin & Kyle Balda',
297
318
  company: 'Universal Pictures',
298
319
  year: 2015,
@@ -304,6 +325,7 @@ const ROWS = [{
304
325
  id: 22,
305
326
  title: 'Captain America: Civil War',
306
327
  gross: 1153329473,
328
+ budget: 250000000,
307
329
  director: 'Anthony & Joe Russo',
308
330
  company: 'Disney Studios',
309
331
  year: 2016,
@@ -316,6 +338,7 @@ const ROWS = [{
316
338
  id: 23,
317
339
  title: 'Aquaman',
318
340
  gross: 1148485886,
341
+ budget: 160000000,
319
342
  director: 'James Wan',
320
343
  company: 'Warner Bros. Pictures',
321
344
  year: 2018,
@@ -328,6 +351,7 @@ const ROWS = [{
328
351
  id: 24,
329
352
  title: 'The Lord of the Rings: The Return of the King',
330
353
  gross: 1146030912,
354
+ budget: 94000000,
331
355
  director: 'Peter Jackson',
332
356
  company: 'New Line Cinema',
333
357
  year: 2003,
@@ -340,6 +364,7 @@ const ROWS = [{
340
364
  id: 25,
341
365
  title: 'Spider-Man: Far From Home',
342
366
  gross: 1131927996,
367
+ budget: 160000000,
343
368
  director: 'Jon Watts',
344
369
  company: 'Disney Studios',
345
370
  year: 2019,
@@ -352,6 +377,7 @@ const ROWS = [{
352
377
  id: 26,
353
378
  title: 'Captain Marvel',
354
379
  gross: 1128274794,
380
+ budget: 152000000,
355
381
  director: 'Anna Boden & Ryan Fleck',
356
382
  company: 'Disney Studios',
357
383
  year: 2019,
@@ -364,6 +390,7 @@ const ROWS = [{
364
390
  id: 27,
365
391
  title: 'Transformers: Dark of the Moon',
366
392
  gross: 1123794079,
393
+ budget: 195000000,
367
394
  director: 'Michael Bay',
368
395
  company: 'Paramount Pictures',
369
396
  year: 2011,
@@ -376,6 +403,7 @@ const ROWS = [{
376
403
  id: 28,
377
404
  title: 'Skyfall',
378
405
  gross: 1108561013,
406
+ budget: 200000000,
379
407
  director: 'Sam Mendes',
380
408
  company: '20th Century Fox',
381
409
  year: 2012,
@@ -388,6 +416,7 @@ const ROWS = [{
388
416
  id: 29,
389
417
  title: 'Transformers: Age of Extinction',
390
418
  gross: 1104054072,
419
+ budget: 210000000,
391
420
  director: 'Michael Bay',
392
421
  company: 'Paramount Pictures',
393
422
  year: 2014,
@@ -400,6 +429,7 @@ const ROWS = [{
400
429
  id: 30,
401
430
  title: 'The Dark Knight Rises',
402
431
  gross: 1081142612,
432
+ budget: 250000000,
403
433
  director: 'Christopher Nolan',
404
434
  company: 'Warner Bros. Pictures',
405
435
  year: 2012,
@@ -412,6 +442,7 @@ const ROWS = [{
412
442
  id: 31,
413
443
  title: 'Joker',
414
444
  gross: 1074251311,
445
+ budget: 55000000,
415
446
  director: 'Todd Phillips',
416
447
  company: 'Warner Bros. Pictures',
417
448
  year: 2019,
@@ -424,6 +455,7 @@ const ROWS = [{
424
455
  id: 32,
425
456
  title: 'Star Wars: The Rise of Skywalker',
426
457
  gross: 1074144248,
458
+ budget: 275000000,
427
459
  director: 'J. J. Abrams',
428
460
  company: 'Disney Studios',
429
461
  year: 2019,
@@ -436,6 +468,7 @@ const ROWS = [{
436
468
  id: 33,
437
469
  title: 'Toy Story 4',
438
470
  gross: 1073394593,
471
+ budget: 200000000,
439
472
  director: 'Josh Cooley',
440
473
  company: 'Disney Studios',
441
474
  year: 2019,
@@ -448,6 +481,7 @@ const ROWS = [{
448
481
  id: 34,
449
482
  title: 'Toy Story 3',
450
483
  gross: 1066969703,
484
+ budget: 200000000,
451
485
  director: 'Lee Unkrich',
452
486
  company: 'Disney Studios',
453
487
  year: 2010,
@@ -3,25 +3,21 @@ import * as React from 'react';
3
3
  import { getGridDefaultColumnTypes, GridLinkOperator } from '@mui/x-data-grid-pro';
4
4
  import { isDeepEqual } from '@mui/x-data-grid/internals';
5
5
  import { useDemoData, getColumnsFromOptions, getInitialState } from './useDemoData';
6
-
7
6
  const simplifiedValueGetter = (field, colDef) => row => {
8
7
  const params = {
9
8
  id: row.id,
10
9
  row,
11
10
  field,
12
11
  rowNode: {}
13
- }; // @ts-ignore
14
-
12
+ };
13
+ // @ts-ignore
15
14
  return colDef.valueGetter?.(params) || row[field];
16
15
  };
17
-
18
16
  const getRowComparator = (sortModel, columnsWithDefaultColDef) => {
19
17
  if (!sortModel) {
20
18
  const comparator = () => 0;
21
-
22
19
  return comparator;
23
20
  }
24
-
25
21
  const sortOperators = sortModel.map(sortItem => {
26
22
  const columnField = sortItem.field;
27
23
  const colDef = columnsWithDefaultColDef.find(({
@@ -32,7 +28,6 @@ const getRowComparator = (sortModel, columnsWithDefaultColDef) => {
32
28
  sortComparator: colDef.sortComparator
33
29
  });
34
30
  });
35
-
36
31
  const comparator = (row1, row2) => sortOperators.reduce((acc, {
37
32
  valueGetter,
38
33
  sort,
@@ -41,49 +36,38 @@ const getRowComparator = (sortModel, columnsWithDefaultColDef) => {
41
36
  if (acc !== 0) {
42
37
  return acc;
43
38
  }
44
-
45
39
  const v1 = valueGetter(row1);
46
40
  const v2 = valueGetter(row2);
47
41
  return sort === 'desc' ? -1 * sortComparator(v1, v2) : sortComparator(v1, v2);
48
42
  }, 0);
49
-
50
43
  return comparator;
51
44
  };
52
-
53
45
  const getFilteredRows = (rows, filterModel, columnsWithDefaultColDef) => {
54
46
  if (filterModel === undefined || filterModel.items.length === 0) {
55
47
  return rows;
56
48
  }
57
-
58
49
  const valueGetters = filterModel.items.map(({
59
- columnField
60
- }) => simplifiedValueGetter(columnField, columnsWithDefaultColDef.find(({
61
50
  field
62
- }) => field === columnField)));
51
+ }) => simplifiedValueGetter(field, columnsWithDefaultColDef.find(column => column.field === field)));
63
52
  const filterFunctions = filterModel.items.map(filterItem => {
64
53
  const {
65
- columnField,
66
- operatorValue
54
+ field,
55
+ operator
67
56
  } = filterItem;
68
- const colDef = columnsWithDefaultColDef.find(({
69
- field
70
- }) => field === columnField);
57
+ const colDef = columnsWithDefaultColDef.find(column => column.field === field);
71
58
  const filterOperator = colDef.filterOperators.find(({
72
59
  value
73
- }) => operatorValue === value);
60
+ }) => operator === value);
74
61
  let parsedValue = filterItem.value;
75
-
76
62
  if (colDef.valueParser) {
77
63
  const parser = colDef.valueParser;
78
64
  parsedValue = Array.isArray(filterItem.value) ? filterItem.value?.map(x => parser(x)) : parser(filterItem.value);
79
65
  }
80
-
81
66
  return filterOperator?.getApplyFilterFn({
82
67
  filterItem,
83
68
  value: parsedValue
84
69
  }, colDef);
85
70
  });
86
-
87
71
  if (filterModel.linkOperator === GridLinkOperator.Or) {
88
72
  return rows.filter(row => filterModel.items.some((_, index) => {
89
73
  const value = valueGetters[index](row);
@@ -92,7 +76,6 @@ const getFilteredRows = (rows, filterModel, columnsWithDefaultColDef) => {
92
76
  });
93
77
  }));
94
78
  }
95
-
96
79
  return rows.filter(row => filterModel.items.every((_, index) => {
97
80
  const value = valueGetters[index](row);
98
81
  return filterFunctions[index] === null ? true : filterFunctions[index]({
@@ -100,22 +83,19 @@ const getFilteredRows = (rows, filterModel, columnsWithDefaultColDef) => {
100
83
  });
101
84
  }));
102
85
  };
86
+
103
87
  /**
104
88
  * Simulates server data loading
105
89
  */
106
-
107
-
108
90
  export const loadServerRows = (rows, queryOptions, serverOptions, columnsWithDefaultColDef) => {
109
91
  const {
110
92
  minDelay = 100,
111
93
  maxDelay = 300,
112
94
  useCursorPagination
113
95
  } = serverOptions;
114
-
115
96
  if (maxDelay < minDelay) {
116
97
  throw new Error('serverOptions.minDelay is larger than serverOptions.maxDelay ');
117
98
  }
118
-
119
99
  const delay = Math.random() * (maxDelay - minDelay) + minDelay;
120
100
  const {
121
101
  cursor,
@@ -129,7 +109,6 @@ export const loadServerRows = (rows, queryOptions, serverOptions, columnsWithDef
129
109
  const rowComparator = getRowComparator(queryOptions.sortModel, columnsWithDefaultColDef);
130
110
  filteredRows = [...filteredRows].sort(rowComparator);
131
111
  const totalRowCount = filteredRows.length;
132
-
133
112
  if (!pageSize) {
134
113
  firstRowIndex = 0;
135
114
  lastRowIndex = filteredRows.length;
@@ -138,14 +117,12 @@ export const loadServerRows = (rows, queryOptions, serverOptions, columnsWithDef
138
117
  id
139
118
  }) => id === cursor) : 0;
140
119
  firstRowIndex = Math.max(firstRowIndex, 0); // if cursor not found return 0
141
-
142
120
  lastRowIndex = firstRowIndex + pageSize;
143
121
  nextCursor = lastRowIndex >= filteredRows.length ? undefined : filteredRows[lastRowIndex].id;
144
122
  } else {
145
123
  firstRowIndex = page * pageSize;
146
124
  lastRowIndex = (page + 1) * pageSize;
147
125
  }
148
-
149
126
  const response = {
150
127
  returnedRows: filteredRows.slice(firstRowIndex, lastRowIndex),
151
128
  nextCursor,
@@ -157,6 +134,7 @@ export const loadServerRows = (rows, queryOptions, serverOptions, columnsWithDef
157
134
  }, delay); // simulate network latency
158
135
  });
159
136
  };
137
+
160
138
  const DEFAULT_DATASET_OPTIONS = {
161
139
  dataSet: 'Commodity',
162
140
  rowLength: 100,
@@ -170,14 +148,11 @@ const DEFAULT_SERVER_OPTIONS = {
170
148
  };
171
149
  export const createFakeServer = (dataSetOptions, serverOptions) => {
172
150
  const dataSetOptionsWithDefault = _extends({}, DEFAULT_DATASET_OPTIONS, dataSetOptions);
173
-
174
151
  const serverOptionsWithDefault = _extends({}, DEFAULT_SERVER_OPTIONS, serverOptions);
175
-
176
152
  const columns = getColumnsFromOptions(dataSetOptionsWithDefault);
177
153
  const initialState = getInitialState(dataSetOptionsWithDefault, columns);
178
154
  const defaultColDef = getGridDefaultColumnTypes();
179
155
  const columnsWithDefaultColDef = columns.map(column => _extends({}, defaultColDef[column.type || 'string'], column));
180
-
181
156
  const useQuery = queryOptions => {
182
157
  const {
183
158
  data: {
@@ -196,25 +171,21 @@ export const createFakeServer = (dataSetOptions, serverOptions) => {
196
171
  // dataset is not ready
197
172
  return () => {};
198
173
  }
199
-
200
174
  queryOptionsRef.current = queryOptions;
201
175
  let active = true;
202
176
  setIsLoading(true);
203
177
  setResponse(prev => Object.keys(prev.pageInfo).length === 0 ? prev : _extends({}, prev, {
204
178
  pageInfo: {}
205
179
  }));
206
-
207
180
  (async function fetchData() {
208
181
  const {
209
182
  returnedRows,
210
183
  nextCursor,
211
184
  totalRowCount
212
185
  } = await loadServerRows(rows, queryOptions, serverOptionsWithDefault, columnsWithDefaultColDef);
213
-
214
186
  if (!active) {
215
187
  return;
216
188
  }
217
-
218
189
  const newRep = {
219
190
  rows: returnedRows,
220
191
  pageInfo: {
@@ -226,18 +197,17 @@ export const createFakeServer = (dataSetOptions, serverOptions) => {
226
197
  setResponse(prev => isDeepEqual(prev, newRep) ? prev : newRep);
227
198
  setIsLoading(false);
228
199
  })();
229
-
230
200
  return () => {
231
201
  active = false;
232
202
  };
233
- }, [dataGenerationIsLoading, queryOptions, rows]); // We use queryOptions pointer to be sure that isLoading===true as soon as the options change
203
+ }, [dataGenerationIsLoading, queryOptions, rows]);
234
204
 
205
+ // We use queryOptions pointer to be sure that isLoading===true as soon as the options change
235
206
  const effectShouldStart = queryOptionsRef.current !== queryOptions;
236
207
  return _extends({
237
208
  isLoading: isLoading || effectShouldStart
238
209
  }, response);
239
210
  };
240
-
241
211
  return {
242
212
  columns,
243
213
  columnsWithDefaultColDef,
package/modern/index.js CHANGED
@@ -1,4 +1,4 @@
1
- /** @license MUI v6.0.0-alpha.1
1
+ /** @license MUI v6.0.0-alpha.10
2
2
  *
3
3
  * This source code is licensed under the MIT license found in the
4
4
  * LICENSE file in the root directory of this source tree.
@@ -5,7 +5,6 @@ export function renderAvatar(params) {
5
5
  if (params.value == null) {
6
6
  return '';
7
7
  }
8
-
9
8
  return /*#__PURE__*/_jsx(Avatar, {
10
9
  style: {
11
10
  backgroundColor: params.value.color
@@ -36,14 +36,13 @@ const Country = /*#__PURE__*/React.memo(function Country(props) {
36
36
  export function renderCountry(params) {
37
37
  if (params.value == null) {
38
38
  return '';
39
- } // If the aggregated value does not have the same unit as the other cell
40
- // Then we fall back to the default rendering based on `valueGetter` instead of rendering the total price UI.
41
-
39
+ }
42
40
 
41
+ // If the aggregated value does not have the same unit as the other cell
42
+ // Then we fall back to the default rendering based on `valueGetter` instead of rendering the total price UI.
43
43
  if (params.aggregation && !params.aggregation.hasCellUnit) {
44
44
  return null;
45
45
  }
46
-
47
46
  return /*#__PURE__*/_jsx(Country, {
48
47
  value: params.value
49
48
  });
@@ -21,7 +21,6 @@ const StyledAutocomplete = styled(Autocomplete)(({
21
21
  }
22
22
  })
23
23
  }));
24
-
25
24
  function EditCountry(props) {
26
25
  const {
27
26
  id,
@@ -29,20 +28,16 @@ function EditCountry(props) {
29
28
  field
30
29
  } = props;
31
30
  const apiRef = useGridApiContext();
32
- const handleChange = React.useCallback((event, newValue) => {
33
- apiRef.current.setEditCellValue({
31
+ const handleChange = React.useCallback(async (event, newValue) => {
32
+ await apiRef.current.setEditCellValue({
34
33
  id,
35
34
  field,
36
35
  value: newValue
37
36
  }, event);
38
-
39
- if (!event.key) {
40
- apiRef.current.commitCellChange({
41
- id,
42
- field
43
- });
44
- apiRef.current.setCellMode(id, field, 'view');
45
- }
37
+ apiRef.current.stopCellEditMode({
38
+ id,
39
+ field
40
+ });
46
41
  }, [apiRef, field, id]);
47
42
  return /*#__PURE__*/_jsx(StyledAutocomplete, {
48
43
  value: value,
@@ -76,12 +71,10 @@ function EditCountry(props) {
76
71
  id: params.id,
77
72
  inputProps: _extends({}, params.inputProps, {
78
73
  autoComplete: 'new-password' // disable autocomplete and autofill
79
-
80
74
  })
81
75
  }, params.InputProps))
82
76
  });
83
77
  }
84
-
85
78
  export function renderEditCountry(params) {
86
79
  return /*#__PURE__*/_jsx(EditCountry, _extends({}, params));
87
80
  }