@mui/x-data-grid-generator 6.0.0-alpha.8 → 6.0.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (134) hide show
  1. package/CHANGELOG.md +1163 -15
  2. package/columns/commodities.columns.js +0 -1
  3. package/columns/employees.columns.js +0 -1
  4. package/hooks/useDemoData.d.ts +2 -2
  5. package/hooks/useDemoData.js +9 -31
  6. package/hooks/useMovieData.d.ts +3 -3
  7. package/hooks/useMovieData.js +0 -1
  8. package/hooks/useQuery.d.ts +13 -13
  9. package/hooks/useQuery.js +13 -45
  10. package/index.js +4 -2
  11. package/legacy/columns/commodities.columns.js +0 -1
  12. package/legacy/columns/employees.columns.js +0 -2
  13. package/legacy/hooks/useBasicDemoData.js +6 -7
  14. package/legacy/hooks/useDemoData.js +28 -70
  15. package/legacy/hooks/useMovieData.js +0 -2
  16. package/legacy/hooks/useQuery.js +40 -79
  17. package/legacy/index.js +4 -2
  18. package/legacy/renderer/renderAvatar.js +0 -1
  19. package/legacy/renderer/renderCountry.js +3 -4
  20. package/legacy/renderer/renderEditCountry.js +2 -8
  21. package/legacy/renderer/renderEditCurrency.js +2 -8
  22. package/legacy/renderer/renderEditIncoterm.js +2 -10
  23. package/legacy/renderer/renderEditProgress.js +7 -17
  24. package/legacy/renderer/renderEditRating.js +2 -10
  25. package/legacy/renderer/renderEditStatus.js +2 -15
  26. package/legacy/renderer/renderEmail.js +0 -1
  27. package/legacy/renderer/renderIncoterm.js +0 -2
  28. package/legacy/renderer/renderLink.js +0 -2
  29. package/legacy/renderer/renderPnl.js +0 -3
  30. package/legacy/renderer/renderProgress.js +4 -5
  31. package/legacy/renderer/renderRating.js +3 -4
  32. package/legacy/renderer/renderStatus.js +8 -13
  33. package/legacy/renderer/renderTotalPrice.js +5 -6
  34. package/legacy/services/asyncWorker.js +4 -7
  35. package/legacy/services/basic-data-service.js +0 -5
  36. package/legacy/services/random-generator.js +6 -20
  37. package/legacy/services/real-data-service.js +0 -9
  38. package/legacy/services/tree-data-generator.js +6 -22
  39. package/modern/columns/commodities.columns.js +0 -1
  40. package/modern/columns/employees.columns.js +0 -1
  41. package/modern/hooks/useDemoData.js +9 -27
  42. package/modern/hooks/useMovieData.js +0 -1
  43. package/modern/hooks/useQuery.js +13 -43
  44. package/modern/index.js +4 -2
  45. package/modern/renderer/renderAvatar.js +0 -1
  46. package/modern/renderer/renderCountry.js +3 -4
  47. package/modern/renderer/renderEditCountry.js +0 -3
  48. package/modern/renderer/renderEditCurrency.js +0 -3
  49. package/modern/renderer/renderEditIncoterm.js +0 -5
  50. package/modern/renderer/renderEditProgress.js +0 -7
  51. package/modern/renderer/renderEditRating.js +0 -5
  52. package/modern/renderer/renderEditStatus.js +0 -10
  53. package/modern/renderer/renderIncoterm.js +0 -2
  54. package/modern/renderer/renderLink.js +0 -2
  55. package/modern/renderer/renderPnl.js +0 -3
  56. package/modern/renderer/renderProgress.js +4 -5
  57. package/modern/renderer/renderRating.js +3 -4
  58. package/modern/renderer/renderStatus.js +8 -13
  59. package/modern/renderer/renderTotalPrice.js +5 -6
  60. package/modern/services/asyncWorker.js +2 -4
  61. package/modern/services/basic-data-service.js +0 -5
  62. package/modern/services/random-generator.js +6 -19
  63. package/modern/services/real-data-service.js +0 -9
  64. package/modern/services/tree-data-generator.js +0 -14
  65. package/node/columns/commodities.columns.js +1 -8
  66. package/node/columns/employees.columns.js +1 -8
  67. package/node/columns/index.js +0 -4
  68. package/node/hooks/index.js +0 -8
  69. package/node/hooks/useBasicDemoData.js +0 -6
  70. package/node/hooks/useDemoData.js +17 -62
  71. package/node/hooks/useMovieData.js +0 -3
  72. package/node/hooks/useQuery.js +14 -58
  73. package/node/index.js +4 -10
  74. package/node/renderer/index.js +0 -32
  75. package/node/renderer/renderAvatar.js +0 -8
  76. package/node/renderer/renderCountry.js +3 -12
  77. package/node/renderer/renderEditCountry.js +0 -16
  78. package/node/renderer/renderEditCurrency.js +0 -16
  79. package/node/renderer/renderEditIncoterm.js +0 -17
  80. package/node/renderer/renderEditProgress.js +0 -20
  81. package/node/renderer/renderEditRating.js +0 -14
  82. package/node/renderer/renderEditStatus.js +0 -26
  83. package/node/renderer/renderEmail.js +1 -9
  84. package/node/renderer/renderIncoterm.js +0 -12
  85. package/node/renderer/renderLink.js +0 -9
  86. package/node/renderer/renderPnl.js +0 -12
  87. package/node/renderer/renderProgress.js +4 -14
  88. package/node/renderer/renderRating.js +3 -13
  89. package/node/renderer/renderStatus.js +8 -26
  90. package/node/renderer/renderTotalPrice.js +5 -15
  91. package/node/services/asyncWorker.js +2 -5
  92. package/node/services/basic-data-service.js +0 -7
  93. package/node/services/index.js +0 -8
  94. package/node/services/random-generator.js +7 -105
  95. package/node/services/real-data-service.js +0 -12
  96. package/node/services/static-data.js +0 -2
  97. package/node/services/tree-data-generator.js +1 -22
  98. package/package.json +5 -5
  99. package/renderer/renderAvatar.js +0 -1
  100. package/renderer/renderCountry.js +3 -4
  101. package/renderer/renderEditCountry.js +0 -3
  102. package/renderer/renderEditCurrency.d.ts +1 -1
  103. package/renderer/renderEditCurrency.js +0 -3
  104. package/renderer/renderEditIncoterm.d.ts +1 -1
  105. package/renderer/renderEditIncoterm.js +0 -5
  106. package/renderer/renderEditProgress.d.ts +1 -1
  107. package/renderer/renderEditProgress.js +0 -7
  108. package/renderer/renderEditRating.d.ts +1 -1
  109. package/renderer/renderEditRating.js +0 -5
  110. package/renderer/renderEditStatus.d.ts +1 -1
  111. package/renderer/renderEditStatus.js +0 -10
  112. package/renderer/renderEmail.d.ts +1 -1
  113. package/renderer/renderEmail.js +0 -1
  114. package/renderer/renderIncoterm.d.ts +1 -1
  115. package/renderer/renderIncoterm.js +0 -2
  116. package/renderer/renderLink.d.ts +1 -1
  117. package/renderer/renderLink.js +0 -2
  118. package/renderer/renderPnl.d.ts +1 -1
  119. package/renderer/renderPnl.js +0 -3
  120. package/renderer/renderProgress.d.ts +1 -1
  121. package/renderer/renderProgress.js +4 -5
  122. package/renderer/renderRating.d.ts +2 -4
  123. package/renderer/renderRating.js +3 -4
  124. package/renderer/renderStatus.d.ts +1 -1
  125. package/renderer/renderStatus.js +8 -13
  126. package/renderer/renderTotalPrice.d.ts +1 -1
  127. package/renderer/renderTotalPrice.js +5 -6
  128. package/services/asyncWorker.js +2 -4
  129. package/services/basic-data-service.js +0 -5
  130. package/services/gridColDefGenerator.d.ts +2 -2
  131. package/services/random-generator.d.ts +1 -1
  132. package/services/random-generator.js +6 -20
  133. package/services/real-data-service.js +0 -9
  134. package/services/tree-data-generator.js +0 -15
@@ -171,7 +171,6 @@ export const getCommodityColumns = (editable = false) => [{
171
171
  if (typeof value === 'string') {
172
172
  return COUNTRY_ISO_OPTIONS_SORTED.find(country => country.value === value);
173
173
  }
174
-
175
174
  return value;
176
175
  },
177
176
  valueFormatter: ({
@@ -130,7 +130,6 @@ export const getEmployeeColumns = () => [{
130
130
  if (!value || typeof value !== 'number') {
131
131
  return value;
132
132
  }
133
-
134
133
  return `${value.toLocaleString()}$`;
135
134
  }
136
135
  }];
@@ -1,13 +1,13 @@
1
1
  import { GridColumnVisibilityModel } from '@mui/x-data-grid-premium';
2
2
  import { GridColDefGenerator } from '../services/gridColDefGenerator';
3
3
  import { AddPathToDemoDataOptions, DemoTreeDataValue } from '../services/tree-data-generator';
4
- export declare type DemoDataReturnType = {
4
+ export type DemoDataReturnType = {
5
5
  data: DemoTreeDataValue;
6
6
  loading: boolean;
7
7
  setRowLength: (count: number) => void;
8
8
  loadNewData: () => void;
9
9
  };
10
- declare type DataSet = 'Commodity' | 'Employee';
10
+ type DataSet = 'Commodity' | 'Employee';
11
11
  export interface UseDemoDataOptions {
12
12
  dataSet: DataSet;
13
13
  rowLength: number;
@@ -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,45 +43,38 @@ 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);
57
49
 
50
+ // Freeze properties before freezing self
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 => {
74
65
  var _options$visibleField;
75
-
76
66
  return (_options$visibleField = options.visibleFields) != null && _options$visibleField.includes(col.field) ? col : _extends({}, col, {
77
67
  hide: true
78
68
  });
79
69
  });
80
70
  }
81
-
82
71
  if (options.maxColumns) {
83
72
  columns = columns.slice(0, options.maxColumns);
84
73
  }
85
-
86
74
  return columns;
87
75
  };
88
76
  export const getInitialState = (options, columns) => {
89
77
  var _options$treeData;
90
-
91
78
  const columnVisibilityModel = {};
92
79
  columns.forEach(col => {
93
80
  if (col.hide) {
@@ -95,11 +82,9 @@ export const getInitialState = (options, columns) => {
95
82
  }
96
83
  });
97
84
  const groupingField = (_options$treeData = options.treeData) == null ? void 0 : _options$treeData.groupingField;
98
-
99
85
  if (groupingField) {
100
86
  columnVisibilityModel[groupingField] = false;
101
87
  }
102
-
103
88
  return {
104
89
  columns: {
105
90
  columnVisibilityModel
@@ -108,7 +93,6 @@ export const getInitialState = (options, columns) => {
108
93
  };
109
94
  export const useDemoData = options => {
110
95
  var _options$treeData5, _options$treeData6, _options$treeData7;
111
-
112
96
  const [rowLength, setRowLength] = React.useState(options.rowLength);
113
97
  const [index, setIndex] = React.useState(0);
114
98
  const [loading, setLoading] = React.useState(true);
@@ -128,50 +112,44 @@ export const useDemoData = options => {
128
112
  }, options.treeData);
129
113
  });
130
114
  React.useEffect(() => {
131
- const cacheKey = `${options.dataSet}-${rowLength}-${index}-${options.maxColumns}`; // Cache to allow fast switch between the JavaScript and TypeScript version
132
- // of the demos.
115
+ const cacheKey = `${options.dataSet}-${rowLength}-${index}-${options.maxColumns}`;
133
116
 
117
+ // Cache to allow fast switch between the JavaScript and TypeScript version
118
+ // of the demos.
134
119
  if (dataCache.has(cacheKey)) {
135
120
  const newData = dataCache.get(cacheKey);
136
121
  setData(newData);
137
122
  setLoading(false);
138
123
  return undefined;
139
124
  }
140
-
141
125
  let active = true;
142
-
143
126
  (async () => {
144
127
  var _options$treeData2, _options$treeData3, _options$treeData4;
145
-
146
128
  setLoading(true);
147
129
  let newData;
148
-
149
130
  if (rowLength > 1000) {
150
131
  newData = await getRealGridData(1000, columns);
151
132
  newData = await extrapolateSeed(rowLength, newData);
152
133
  } else {
153
134
  newData = await getRealGridData(rowLength, columns);
154
135
  }
155
-
156
136
  if (!active) {
157
137
  return;
158
138
  }
159
-
160
139
  newData = addTreeDataOptionsToDemoData(newData, {
161
140
  maxDepth: (_options$treeData2 = options.treeData) == null ? void 0 : _options$treeData2.maxDepth,
162
141
  groupingField: (_options$treeData3 = options.treeData) == null ? void 0 : _options$treeData3.groupingField,
163
142
  averageChildren: (_options$treeData4 = options.treeData) == null ? void 0 : _options$treeData4.averageChildren
164
- }); // It's quite slow. No need for it in production.
143
+ });
165
144
 
145
+ // It's quite slow. No need for it in production.
166
146
  if (process.env.NODE_ENV !== 'production') {
167
147
  deepFreeze(newData);
168
148
  }
169
-
170
149
  dataCache.set(cacheKey, newData);
171
150
  setData(newData);
172
151
  setLoading(false);
173
152
  })();
174
-
175
153
  return () => {
176
154
  active = false;
177
155
  };
@@ -1,5 +1,5 @@
1
- import { GridColumns } from '@mui/x-data-grid-premium';
2
- export declare type Movie = {
1
+ import { GridColDef } from '@mui/x-data-grid-premium';
2
+ export type Movie = {
3
3
  id: number;
4
4
  title: string;
5
5
  gross: number;
@@ -15,5 +15,5 @@ export declare type Movie = {
15
15
  };
16
16
  export declare const useMovieData: () => {
17
17
  rows: Movie[];
18
- columns: GridColumns<any>;
18
+ columns: GridColDef<any, any, any>[];
19
19
  };
@@ -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
  }, {
@@ -20,7 +20,7 @@ interface DefaultServerOptions {
20
20
  maxDelay: number;
21
21
  useCursorPagination?: boolean;
22
22
  }
23
- declare type ServerOptions = Partial<DefaultServerOptions>;
23
+ type ServerOptions = Partial<DefaultServerOptions>;
24
24
  export interface QueryOptions {
25
25
  cursor?: GridRowId;
26
26
  page?: number;
@@ -52,30 +52,30 @@ export declare const createFakeServer: (dataSetOptions?: Partial<UseDemoDataOpti
52
52
  pinnable?: boolean | undefined;
53
53
  sortComparator?: import("@mui/x-data-grid-pro").GridComparatorFn<any> | undefined;
54
54
  type?: string | undefined;
55
- valueOptions?: import("@mui/x-data-grid-pro").ValueOptions[] | ((params: import("@mui/x-data-grid-pro").GridValueOptionsParams<any>) => import("@mui/x-data-grid-pro").ValueOptions[]) | undefined;
55
+ valueOptions?: import("@mui/x-data-grid-pro").ValueOptions[] | ((params: import("@mui/x-data-grid-pro").GridValueOptionsParams<import("@mui/x-data-grid-pro").GridValidRowModel>) => import("@mui/x-data-grid-pro").ValueOptions[]) | undefined;
56
56
  align?: import("@mui/x-data-grid-pro").GridAlignment | undefined;
57
- valueGetter?: ((params: import("@mui/x-data-grid-pro").GridValueGetterParams<any, any, import("@mui/x-data-grid-pro").GridTreeNodeWithRender>) => any) | undefined;
58
- valueSetter?: ((params: import("@mui/x-data-grid-pro").GridValueSetterParams<any, any>) => any) | undefined;
57
+ valueGetter?: ((params: import("@mui/x-data-grid-pro").GridValueGetterParams<import("@mui/x-data-grid-pro").GridValidRowModel, any, import("@mui/x-data-grid-pro").GridTreeNodeWithRender>) => any) | undefined;
58
+ valueSetter?: ((params: import("@mui/x-data-grid-pro").GridValueSetterParams<any, any>) => any) | ((params: import("@mui/x-data-grid-pro").GridValueSetterParams<import("@mui/x-data-grid-pro").GridValidRowModel, any>) => import("@mui/x-data-grid-pro").GridValidRowModel) | undefined;
59
59
  valueFormatter?: ((params: import("@mui/x-data-grid-pro").GridValueFormatterParams<any>) => any) | undefined;
60
- valueParser?: ((value: any, params?: import("@mui/x-data-grid-pro").GridCellParams<any, any, any, import("@mui/x-data-grid-pro").GridTreeNode> | undefined) => any) | undefined;
61
- cellClassName?: import("@mui/x-data-grid-pro").GridCellClassNamePropType | undefined;
62
- renderCell?: ((params: import("@mui/x-data-grid-pro").GridRenderCellParams<any, any, any, import("@mui/x-data-grid-pro").GridTreeNodeWithRender>) => React.ReactNode) | undefined;
63
- renderEditCell?: ((params: import("@mui/x-data-grid-pro").GridRenderEditCellParams<any, any, any, import("@mui/x-data-grid-pro").GridTreeNodeWithRender>) => React.ReactNode) | undefined;
60
+ valueParser?: ((value: any, params?: import("@mui/x-data-grid-pro").GridCellParams<import("@mui/x-data-grid-pro").GridValidRowModel, any, any, import("@mui/x-data-grid-pro").GridTreeNode> | undefined) => any) | undefined;
61
+ cellClassName?: string | import("@mui/x-data-grid-pro").GridCellClassFn<import("@mui/x-data-grid-pro").GridValidRowModel, any> | undefined;
62
+ renderCell?: ((params: import("@mui/x-data-grid-pro").GridRenderCellParams<import("@mui/x-data-grid-pro").GridValidRowModel, any, any, import("@mui/x-data-grid-pro").GridTreeNodeWithRender>) => React.ReactNode) | undefined;
63
+ renderEditCell?: ((params: import("@mui/x-data-grid-pro").GridRenderEditCellParams<import("@mui/x-data-grid-pro").GridValidRowModel, any, any, import("@mui/x-data-grid-pro").GridTreeNodeWithRender>) => React.ReactNode) | undefined;
64
64
  preProcessEditCellProps?: ((params: import("@mui/x-data-grid-pro").GridPreProcessEditCellProps<any, any>) => import("@mui/x-data-grid-pro").GridEditCellProps<any> | Promise<import("@mui/x-data-grid-pro").GridEditCellProps<any>>) | undefined;
65
65
  headerClassName?: import("@mui/x-data-grid-pro").GridColumnHeaderClassNamePropType | undefined;
66
- renderHeader?: ((params: import("@mui/x-data-grid-pro").GridColumnHeaderParams<any, any, any>) => React.ReactNode) | undefined;
66
+ renderHeader?: ((params: import("@mui/x-data-grid-pro").GridColumnHeaderParams<any, any, any>) => React.ReactNode) | ((params: import("@mui/x-data-grid-pro").GridColumnHeaderParams<import("@mui/x-data-grid-pro").GridValidRowModel, any, any>) => React.ReactNode) | undefined;
67
67
  headerAlign?: import("@mui/x-data-grid-pro").GridAlignment | undefined;
68
68
  hideSortIcons?: boolean | undefined;
69
69
  disableColumnMenu?: boolean | undefined;
70
70
  filterable?: boolean | undefined;
71
- filterOperators?: GridFilterOperator<any, any, any>[] | undefined;
72
- getApplyQuickFilterFn?: ((value: any, colDef: import("@mui/x-data-grid-pro").GridStateColDef<any, any, any>, apiRef: React.MutableRefObject<import("@mui/x-data-grid/internals").GridApiCommunity>) => ((params: import("@mui/x-data-grid-pro").GridCellParams<any, any, any, import("@mui/x-data-grid-pro").GridTreeNode>) => boolean) | null) | undefined;
71
+ filterOperators?: GridFilterOperator<any, any, any>[] | GridFilterOperator<import("@mui/x-data-grid-pro").GridValidRowModel, any, any>[] | undefined;
72
+ getApplyQuickFilterFn?: ((value: any, colDef: import("@mui/x-data-grid/internals").GridStateColDef<any, any, any>, apiRef: React.MutableRefObject<import("@mui/x-data-grid/internals").GridApiCommunity>) => ((params: import("@mui/x-data-grid-pro").GridCellParams<import("@mui/x-data-grid-pro").GridValidRowModel, any, any, import("@mui/x-data-grid-pro").GridTreeNode>) => boolean) | null) | undefined;
73
73
  disableReorder?: boolean | undefined;
74
74
  disableExport?: boolean | undefined;
75
- colSpan?: number | ((params: import("@mui/x-data-grid-pro").GridCellParams<any, any, any, import("@mui/x-data-grid-pro").GridTreeNode>) => number | undefined) | undefined;
75
+ colSpan?: number | ((params: import("@mui/x-data-grid-pro").GridCellParams<import("@mui/x-data-grid-pro").GridValidRowModel, any, any, import("@mui/x-data-grid-pro").GridTreeNode>) => number | undefined) | undefined;
76
76
  aggregable?: boolean | undefined;
77
77
  availableAggregationFunctions?: string[] | undefined;
78
- groupingValueGetter?: ((params: import("@mui/x-data-grid-premium").GridGroupingValueGetterParams<any, any>) => import("@mui/x-data-grid-pro").GridKeyValue | null | undefined) | undefined;
78
+ groupingValueGetter?: ((params: import("@mui/x-data-grid-premium").GridGroupingValueGetterParams<any, any>) => import("@mui/x-data-grid-pro").GridKeyValue | null | undefined) | ((params: import("@mui/x-data-grid-premium").GridGroupingValueGetterParams<import("@mui/x-data-grid-pro").GridValidRowModel, any>) => import("@mui/x-data-grid-pro").GridKeyValue | null | undefined) | undefined;
79
79
  extendType?: import("@mui/x-data-grid-pro").GridNativeColTypes | undefined;
80
80
  }[];
81
81
  initialState: {
package/hooks/useQuery.js CHANGED
@@ -1,29 +1,24 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import * as React from 'react';
3
- import { getGridDefaultColumnTypes, GridLinkOperator } from '@mui/x-data-grid-pro';
3
+ import { getGridDefaultColumnTypes, GridLogicOperator } 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
  var _colDef$valueGetter;
9
-
10
8
  const params = {
11
9
  id: row.id,
12
10
  row,
13
11
  field,
14
12
  rowNode: {}
15
- }; // @ts-ignore
16
-
13
+ };
14
+ // @ts-ignore
17
15
  return ((_colDef$valueGetter = colDef.valueGetter) == null ? void 0 : _colDef$valueGetter.call(colDef, params)) || row[field];
18
16
  };
19
-
20
17
  const getRowComparator = (sortModel, columnsWithDefaultColDef) => {
21
18
  if (!sortModel) {
22
19
  const comparator = () => 0;
23
-
24
20
  return comparator;
25
21
  }
26
-
27
22
  const sortOperators = sortModel.map(sortItem => {
28
23
  const columnField = sortItem.field;
29
24
  const colDef = columnsWithDefaultColDef.find(({
@@ -34,7 +29,6 @@ const getRowComparator = (sortModel, columnsWithDefaultColDef) => {
34
29
  sortComparator: colDef.sortComparator
35
30
  });
36
31
  });
37
-
38
32
  const comparator = (row1, row2) => sortOperators.reduce((acc, {
39
33
  valueGetter,
40
34
  sort,
@@ -43,52 +37,40 @@ const getRowComparator = (sortModel, columnsWithDefaultColDef) => {
43
37
  if (acc !== 0) {
44
38
  return acc;
45
39
  }
46
-
47
40
  const v1 = valueGetter(row1);
48
41
  const v2 = valueGetter(row2);
49
42
  return sort === 'desc' ? -1 * sortComparator(v1, v2) : sortComparator(v1, v2);
50
43
  }, 0);
51
-
52
44
  return comparator;
53
45
  };
54
-
55
46
  const getFilteredRows = (rows, filterModel, columnsWithDefaultColDef) => {
56
47
  if (filterModel === undefined || filterModel.items.length === 0) {
57
48
  return rows;
58
49
  }
59
-
60
50
  const valueGetters = filterModel.items.map(({
61
- columnField
62
- }) => simplifiedValueGetter(columnField, columnsWithDefaultColDef.find(({
63
51
  field
64
- }) => field === columnField)));
52
+ }) => simplifiedValueGetter(field, columnsWithDefaultColDef.find(column => column.field === field)));
65
53
  const filterFunctions = filterModel.items.map(filterItem => {
66
54
  const {
67
- columnField,
68
- operatorValue
55
+ field,
56
+ operator
69
57
  } = filterItem;
70
- const colDef = columnsWithDefaultColDef.find(({
71
- field
72
- }) => field === columnField);
58
+ const colDef = columnsWithDefaultColDef.find(column => column.field === field);
73
59
  const filterOperator = colDef.filterOperators.find(({
74
60
  value
75
- }) => operatorValue === value);
61
+ }) => operator === value);
76
62
  let parsedValue = filterItem.value;
77
-
78
63
  if (colDef.valueParser) {
79
64
  var _filterItem$value;
80
-
81
65
  const parser = colDef.valueParser;
82
66
  parsedValue = Array.isArray(filterItem.value) ? (_filterItem$value = filterItem.value) == null ? void 0 : _filterItem$value.map(x => parser(x)) : parser(filterItem.value);
83
67
  }
84
-
85
68
  return filterOperator == null ? void 0 : filterOperator.getApplyFilterFn({
86
69
  filterItem,
87
70
  value: parsedValue
88
71
  }, colDef);
89
72
  });
90
-
91
- if (filterModel.linkOperator === GridLinkOperator.Or) {
73
+ if (filterModel.logicOperator === GridLogicOperator.Or) {
92
74
  return rows.filter(row => filterModel.items.some((_, index) => {
93
75
  const value = valueGetters[index](row);
94
76
  return filterFunctions[index] === null ? true : filterFunctions[index]({
@@ -96,7 +78,6 @@ const getFilteredRows = (rows, filterModel, columnsWithDefaultColDef) => {
96
78
  });
97
79
  }));
98
80
  }
99
-
100
81
  return rows.filter(row => filterModel.items.every((_, index) => {
101
82
  const value = valueGetters[index](row);
102
83
  return filterFunctions[index] === null ? true : filterFunctions[index]({
@@ -104,22 +85,19 @@ const getFilteredRows = (rows, filterModel, columnsWithDefaultColDef) => {
104
85
  });
105
86
  }));
106
87
  };
88
+
107
89
  /**
108
90
  * Simulates server data loading
109
91
  */
110
-
111
-
112
92
  export const loadServerRows = (rows, queryOptions, serverOptions, columnsWithDefaultColDef) => {
113
93
  const {
114
94
  minDelay = 100,
115
95
  maxDelay = 300,
116
96
  useCursorPagination
117
97
  } = serverOptions;
118
-
119
98
  if (maxDelay < minDelay) {
120
99
  throw new Error('serverOptions.minDelay is larger than serverOptions.maxDelay ');
121
100
  }
122
-
123
101
  const delay = Math.random() * (maxDelay - minDelay) + minDelay;
124
102
  const {
125
103
  cursor,
@@ -133,7 +111,6 @@ export const loadServerRows = (rows, queryOptions, serverOptions, columnsWithDef
133
111
  const rowComparator = getRowComparator(queryOptions.sortModel, columnsWithDefaultColDef);
134
112
  filteredRows = [...filteredRows].sort(rowComparator);
135
113
  const totalRowCount = filteredRows.length;
136
-
137
114
  if (!pageSize) {
138
115
  firstRowIndex = 0;
139
116
  lastRowIndex = filteredRows.length;
@@ -142,14 +119,12 @@ export const loadServerRows = (rows, queryOptions, serverOptions, columnsWithDef
142
119
  id
143
120
  }) => id === cursor) : 0;
144
121
  firstRowIndex = Math.max(firstRowIndex, 0); // if cursor not found return 0
145
-
146
122
  lastRowIndex = firstRowIndex + pageSize;
147
123
  nextCursor = lastRowIndex >= filteredRows.length ? undefined : filteredRows[lastRowIndex].id;
148
124
  } else {
149
125
  firstRowIndex = page * pageSize;
150
126
  lastRowIndex = (page + 1) * pageSize;
151
127
  }
152
-
153
128
  const response = {
154
129
  returnedRows: filteredRows.slice(firstRowIndex, lastRowIndex),
155
130
  nextCursor,
@@ -161,6 +136,7 @@ export const loadServerRows = (rows, queryOptions, serverOptions, columnsWithDef
161
136
  }, delay); // simulate network latency
162
137
  });
163
138
  };
139
+
164
140
  const DEFAULT_DATASET_OPTIONS = {
165
141
  dataSet: 'Commodity',
166
142
  rowLength: 100,
@@ -174,14 +150,11 @@ const DEFAULT_SERVER_OPTIONS = {
174
150
  };
175
151
  export const createFakeServer = (dataSetOptions, serverOptions) => {
176
152
  const dataSetOptionsWithDefault = _extends({}, DEFAULT_DATASET_OPTIONS, dataSetOptions);
177
-
178
153
  const serverOptionsWithDefault = _extends({}, DEFAULT_SERVER_OPTIONS, serverOptions);
179
-
180
154
  const columns = getColumnsFromOptions(dataSetOptionsWithDefault);
181
155
  const initialState = getInitialState(dataSetOptionsWithDefault, columns);
182
156
  const defaultColDef = getGridDefaultColumnTypes();
183
157
  const columnsWithDefaultColDef = columns.map(column => _extends({}, defaultColDef[column.type || 'string'], column));
184
-
185
158
  const useQuery = queryOptions => {
186
159
  const {
187
160
  data: {
@@ -200,25 +173,21 @@ export const createFakeServer = (dataSetOptions, serverOptions) => {
200
173
  // dataset is not ready
201
174
  return () => {};
202
175
  }
203
-
204
176
  queryOptionsRef.current = queryOptions;
205
177
  let active = true;
206
178
  setIsLoading(true);
207
179
  setResponse(prev => Object.keys(prev.pageInfo).length === 0 ? prev : _extends({}, prev, {
208
180
  pageInfo: {}
209
181
  }));
210
-
211
182
  (async function fetchData() {
212
183
  const {
213
184
  returnedRows,
214
185
  nextCursor,
215
186
  totalRowCount
216
187
  } = await loadServerRows(rows, queryOptions, serverOptionsWithDefault, columnsWithDefaultColDef);
217
-
218
188
  if (!active) {
219
189
  return;
220
190
  }
221
-
222
191
  const newRep = {
223
192
  rows: returnedRows,
224
193
  pageInfo: {
@@ -230,18 +199,17 @@ export const createFakeServer = (dataSetOptions, serverOptions) => {
230
199
  setResponse(prev => isDeepEqual(prev, newRep) ? prev : newRep);
231
200
  setIsLoading(false);
232
201
  })();
233
-
234
202
  return () => {
235
203
  active = false;
236
204
  };
237
- }, [dataGenerationIsLoading, queryOptions, rows]); // We use queryOptions pointer to be sure that isLoading===true as soon as the options change
205
+ }, [dataGenerationIsLoading, queryOptions, rows]);
238
206
 
207
+ // We use queryOptions pointer to be sure that isLoading===true as soon as the options change
239
208
  const effectShouldStart = queryOptionsRef.current !== queryOptions;
240
209
  return _extends({
241
210
  isLoading: isLoading || effectShouldStart
242
211
  }, response);
243
212
  };
244
-
245
213
  return {
246
214
  columns,
247
215
  columnsWithDefaultColDef,
package/index.js CHANGED
@@ -1,6 +1,8 @@
1
- /** @license MUI v6.0.0-alpha.8
1
+ /**
2
+ * @mui/x-data-grid-generator v6.0.0-beta.0
2
3
  *
3
- * This source code is licensed under the MIT license found in the
4
+ * @license MUI X Commercial
5
+ * This source code is licensed under the commercial license found in the
4
6
  * LICENSE file in the root directory of this source tree.
5
7
  */
6
8
  export * from './renderer';
@@ -184,7 +184,6 @@ export var getCommodityColumns = function getCommodityColumns() {
184
184
  return country.value === value;
185
185
  });
186
186
  }
187
-
188
187
  return value;
189
188
  },
190
189
  valueFormatter: function valueFormatter(_ref4) {
@@ -134,11 +134,9 @@ export var getEmployeeColumns = function getEmployeeColumns() {
134
134
  type: 'number',
135
135
  valueFormatter: function valueFormatter(_ref2) {
136
136
  var value = _ref2.value;
137
-
138
137
  if (!value || typeof value !== 'number') {
139
138
  return value;
140
139
  }
141
-
142
140
  return "".concat(value.toLocaleString(), "$");
143
141
  }
144
142
  }];
@@ -3,13 +3,12 @@ import * as React from 'react';
3
3
  import { getBasicGridData } from '../services';
4
4
  export var useBasicDemoData = function useBasicDemoData(nbRows, nbCols) {
5
5
  var _React$useState = React.useState({
6
- rows: [],
7
- columns: []
8
- }),
9
- _React$useState2 = _slicedToArray(_React$useState, 2),
10
- data = _React$useState2[0],
11
- setData = _React$useState2[1];
12
-
6
+ rows: [],
7
+ columns: []
8
+ }),
9
+ _React$useState2 = _slicedToArray(_React$useState, 2),
10
+ data = _React$useState2[0],
11
+ setData = _React$useState2[1];
13
12
  React.useEffect(function () {
14
13
  var newData = getBasicGridData(nbRows, nbCols);
15
14
  setData(newData);