@mui/x-data-grid-pro 8.0.0-beta.2 → 8.0.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 (277) hide show
  1. package/CHANGELOG.md +423 -96
  2. package/DataGridPro/DataGridPro.js +31 -24
  3. package/DataGridPro/useDataGridProComponent.d.ts +2 -2
  4. package/DataGridPro/useDataGridProComponent.js +2 -3
  5. package/DataGridPro/useDataGridProProps.js +1 -1
  6. package/esm/DataGridPro/DataGridPro.js +32 -25
  7. package/esm/DataGridPro/useDataGridProComponent.d.ts +2 -2
  8. package/esm/DataGridPro/useDataGridProComponent.js +2 -3
  9. package/esm/DataGridPro/useDataGridProProps.js +1 -1
  10. package/esm/hooks/features/columnPinning/useGridColumnPinning.js +2 -2
  11. package/esm/hooks/features/columnReorder/useGridColumnReorder.js +8 -8
  12. package/esm/hooks/features/dataSource/useGridDataSourceBasePro.d.ts +3 -6
  13. package/esm/hooks/features/dataSource/useGridDataSourceBasePro.js +36 -8
  14. package/esm/hooks/features/dataSource/useGridDataSourcePro.js +1 -1
  15. package/esm/hooks/features/dataSource/utils.d.ts +3 -2
  16. package/esm/hooks/features/dataSource/utils.js +13 -1
  17. package/esm/hooks/features/detailPanel/useGridDetailPanel.js +4 -4
  18. package/esm/hooks/features/infiniteLoader/useGridInfiniteLoader.js +2 -2
  19. package/esm/hooks/features/lazyLoader/useGridLazyLoader.d.ts +1 -1
  20. package/esm/hooks/features/lazyLoader/useGridLazyLoader.js +5 -5
  21. package/esm/hooks/features/lazyLoader/useGridLazyLoaderPreProcessors.d.ts +1 -1
  22. package/esm/hooks/features/rowPinning/useGridRowPinning.d.ts +1 -1
  23. package/esm/hooks/features/rowReorder/useGridRowReorder.js +6 -6
  24. package/esm/hooks/features/serverSideLazyLoader/useGridDataSourceLazyLoader.js +90 -18
  25. package/esm/hooks/features/treeData/useGridTreeData.js +2 -2
  26. package/esm/index.js +1 -1
  27. package/esm/internals/index.d.ts +1 -0
  28. package/esm/internals/index.js +1 -0
  29. package/esm/material/icons.d.ts +3 -6
  30. package/esm/material/icons.js +1 -1
  31. package/esm/material/index.d.ts +2 -2
  32. package/esm/models/dataGridProProps.d.ts +8 -8
  33. package/esm/models/gridProIconSlotsComponent.d.ts +6 -3
  34. package/esm/package.json +1 -1
  35. package/hooks/features/columnPinning/useGridColumnPinning.js +1 -1
  36. package/hooks/features/columnReorder/useGridColumnReorder.js +7 -7
  37. package/hooks/features/dataSource/useGridDataSourceBasePro.d.ts +3 -6
  38. package/hooks/features/dataSource/useGridDataSourceBasePro.js +34 -6
  39. package/hooks/features/dataSource/useGridDataSourcePro.js +1 -1
  40. package/hooks/features/dataSource/utils.d.ts +3 -2
  41. package/hooks/features/dataSource/utils.js +15 -2
  42. package/hooks/features/detailPanel/useGridDetailPanel.js +3 -3
  43. package/hooks/features/infiniteLoader/useGridInfiniteLoader.js +1 -1
  44. package/hooks/features/lazyLoader/useGridLazyLoader.d.ts +1 -1
  45. package/hooks/features/lazyLoader/useGridLazyLoader.js +4 -4
  46. package/hooks/features/lazyLoader/useGridLazyLoaderPreProcessors.d.ts +1 -1
  47. package/hooks/features/rowPinning/useGridRowPinning.d.ts +1 -1
  48. package/hooks/features/rowReorder/useGridRowReorder.js +5 -5
  49. package/hooks/features/serverSideLazyLoader/useGridDataSourceLazyLoader.js +89 -17
  50. package/hooks/features/treeData/useGridTreeData.js +1 -1
  51. package/index.js +1 -1
  52. package/internals/index.d.ts +1 -0
  53. package/internals/index.js +15 -7
  54. package/material/icons.d.ts +3 -6
  55. package/material/icons.js +3 -3
  56. package/material/index.d.ts +2 -2
  57. package/models/dataGridProProps.d.ts +8 -8
  58. package/models/gridProIconSlotsComponent.d.ts +6 -3
  59. package/package.json +11 -17
  60. package/esm/utils/releaseInfo.d.ts +0 -1
  61. package/esm/utils/releaseInfo.js +0 -13
  62. package/modern/DataGridPro/DataGrid.d.ts +0 -8
  63. package/modern/DataGridPro/DataGrid.js +0 -19
  64. package/modern/DataGridPro/DataGridPro.d.ts +0 -16
  65. package/modern/DataGridPro/DataGridPro.js +0 -1014
  66. package/modern/DataGridPro/index.d.ts +0 -3
  67. package/modern/DataGridPro/index.js +0 -3
  68. package/modern/DataGridPro/useDataGridProComponent.d.ts +0 -4
  69. package/modern/DataGridPro/useDataGridProComponent.js +0 -105
  70. package/modern/DataGridPro/useDataGridProProps.d.ts +0 -7
  71. package/modern/DataGridPro/useDataGridProProps.js +0 -54
  72. package/modern/components/GridColumnHeaders.d.ts +0 -5
  73. package/modern/components/GridColumnHeaders.js +0 -92
  74. package/modern/components/GridColumnMenuPinningItem.d.ts +0 -7
  75. package/modern/components/GridColumnMenuPinningItem.js +0 -77
  76. package/modern/components/GridDataSourceTreeDataGroupingCell.d.ts +0 -12
  77. package/modern/components/GridDataSourceTreeDataGroupingCell.js +0 -107
  78. package/modern/components/GridDetailPanel.d.ts +0 -14
  79. package/modern/components/GridDetailPanel.js +0 -53
  80. package/modern/components/GridDetailPanelToggleCell.d.ts +0 -7
  81. package/modern/components/GridDetailPanelToggleCell.js +0 -121
  82. package/modern/components/GridDetailPanels.d.ts +0 -3
  83. package/modern/components/GridDetailPanels.js +0 -67
  84. package/modern/components/GridPinnedRows.d.ts +0 -6
  85. package/modern/components/GridPinnedRows.js +0 -40
  86. package/modern/components/GridProColumnMenu.d.ts +0 -24
  87. package/modern/components/GridProColumnMenu.js +0 -21
  88. package/modern/components/GridRowReorderCell.d.ts +0 -8
  89. package/modern/components/GridRowReorderCell.js +0 -140
  90. package/modern/components/GridTreeDataGroupingCell.d.ts +0 -15
  91. package/modern/components/GridTreeDataGroupingCell.js +0 -133
  92. package/modern/components/headerFiltering/GridHeaderFilterCell.d.ts +0 -26
  93. package/modern/components/headerFiltering/GridHeaderFilterCell.js +0 -362
  94. package/modern/components/headerFiltering/GridHeaderFilterClearButton.d.ts +0 -6
  95. package/modern/components/headerFiltering/GridHeaderFilterClearButton.js +0 -17
  96. package/modern/components/headerFiltering/GridHeaderFilterMenu.d.ts +0 -30
  97. package/modern/components/headerFiltering/GridHeaderFilterMenu.js +0 -137
  98. package/modern/components/headerFiltering/GridHeaderFilterMenuContainer.d.ts +0 -17
  99. package/modern/components/headerFiltering/GridHeaderFilterMenuContainer.js +0 -138
  100. package/modern/components/headerFiltering/index.d.ts +0 -3
  101. package/modern/components/headerFiltering/index.js +0 -3
  102. package/modern/components/index.d.ts +0 -6
  103. package/modern/components/index.js +0 -7
  104. package/modern/components/reexports.d.ts +0 -1
  105. package/modern/components/reexports.js +0 -1
  106. package/modern/constants/dataGridProDefaultSlotsComponents.d.ts +0 -2
  107. package/modern/constants/dataGridProDefaultSlotsComponents.js +0 -17
  108. package/modern/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +0 -12
  109. package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +0 -143
  110. package/modern/hooks/features/columnPinning/gridColumnPinningInterface.d.ts +0 -40
  111. package/modern/hooks/features/columnPinning/gridColumnPinningInterface.js +0 -1
  112. package/modern/hooks/features/columnPinning/index.d.ts +0 -1
  113. package/modern/hooks/features/columnPinning/index.js +0 -1
  114. package/modern/hooks/features/columnPinning/useGridColumnPinning.d.ts +0 -6
  115. package/modern/hooks/features/columnPinning/useGridColumnPinning.js +0 -228
  116. package/modern/hooks/features/columnPinning/useGridColumnPinningPreProcessors.d.ts +0 -4
  117. package/modern/hooks/features/columnPinning/useGridColumnPinningPreProcessors.js +0 -105
  118. package/modern/hooks/features/columnReorder/columnReorderInterfaces.d.ts +0 -6
  119. package/modern/hooks/features/columnReorder/columnReorderInterfaces.js +0 -1
  120. package/modern/hooks/features/columnReorder/columnReorderSelector.d.ts +0 -3
  121. package/modern/hooks/features/columnReorder/columnReorderSelector.js +0 -3
  122. package/modern/hooks/features/columnReorder/index.d.ts +0 -2
  123. package/modern/hooks/features/columnReorder/index.js +0 -2
  124. package/modern/hooks/features/columnReorder/useGridColumnReorder.d.ts +0 -9
  125. package/modern/hooks/features/columnReorder/useGridColumnReorder.js +0 -242
  126. package/modern/hooks/features/dataSource/gridDataSourceSelector.d.ts +0 -7
  127. package/modern/hooks/features/dataSource/gridDataSourceSelector.js +0 -6
  128. package/modern/hooks/features/dataSource/models.d.ts +0 -75
  129. package/modern/hooks/features/dataSource/models.js +0 -1
  130. package/modern/hooks/features/dataSource/useGridDataSourceBasePro.d.ts +0 -33
  131. package/modern/hooks/features/dataSource/useGridDataSourceBasePro.js +0 -179
  132. package/modern/hooks/features/dataSource/useGridDataSourcePro.d.ts +0 -6
  133. package/modern/hooks/features/dataSource/useGridDataSourcePro.js +0 -35
  134. package/modern/hooks/features/dataSource/utils.d.ts +0 -29
  135. package/modern/hooks/features/dataSource/utils.js +0 -82
  136. package/modern/hooks/features/detailPanel/gridDetailPanelInterface.d.ts +0 -41
  137. package/modern/hooks/features/detailPanel/gridDetailPanelInterface.js +0 -1
  138. package/modern/hooks/features/detailPanel/gridDetailPanelSelector.d.ts +0 -14
  139. package/modern/hooks/features/detailPanel/gridDetailPanelSelector.js +0 -5
  140. package/modern/hooks/features/detailPanel/gridDetailPanelToggleColDef.d.ts +0 -4
  141. package/modern/hooks/features/detailPanel/gridDetailPanelToggleColDef.js +0 -34
  142. package/modern/hooks/features/detailPanel/index.d.ts +0 -3
  143. package/modern/hooks/features/detailPanel/index.js +0 -3
  144. package/modern/hooks/features/detailPanel/useGridDetailPanel.d.ts +0 -6
  145. package/modern/hooks/features/detailPanel/useGridDetailPanel.js +0 -191
  146. package/modern/hooks/features/detailPanel/useGridDetailPanelPreProcessors.d.ts +0 -4
  147. package/modern/hooks/features/detailPanel/useGridDetailPanelPreProcessors.js +0 -43
  148. package/modern/hooks/features/index.d.ts +0 -7
  149. package/modern/hooks/features/index.js +0 -8
  150. package/modern/hooks/features/infiniteLoader/useGridInfiniteLoader.d.ts +0 -9
  151. package/modern/hooks/features/infiniteLoader/useGridInfiniteLoader.js +0 -104
  152. package/modern/hooks/features/lazyLoader/useGridLazyLoader.d.ts +0 -10
  153. package/modern/hooks/features/lazyLoader/useGridLazyLoader.js +0 -90
  154. package/modern/hooks/features/lazyLoader/useGridLazyLoaderPreProcessors.d.ts +0 -5
  155. package/modern/hooks/features/lazyLoader/useGridLazyLoaderPreProcessors.js +0 -34
  156. package/modern/hooks/features/lazyLoader/utils.d.ts +0 -18
  157. package/modern/hooks/features/lazyLoader/utils.js +0 -34
  158. package/modern/hooks/features/rowPinning/gridRowPinningInterface.d.ts +0 -17
  159. package/modern/hooks/features/rowPinning/gridRowPinningInterface.js +0 -1
  160. package/modern/hooks/features/rowPinning/gridRowPinningSelector.d.ts +0 -1
  161. package/modern/hooks/features/rowPinning/gridRowPinningSelector.js +0 -1
  162. package/modern/hooks/features/rowPinning/index.d.ts +0 -1
  163. package/modern/hooks/features/rowPinning/index.js +0 -1
  164. package/modern/hooks/features/rowPinning/useGridRowPinning.d.ts +0 -6
  165. package/modern/hooks/features/rowPinning/useGridRowPinning.js +0 -52
  166. package/modern/hooks/features/rowPinning/useGridRowPinningPreProcessors.d.ts +0 -38
  167. package/modern/hooks/features/rowPinning/useGridRowPinningPreProcessors.js +0 -119
  168. package/modern/hooks/features/rowReorder/gridRowReorderColDef.d.ts +0 -2
  169. package/modern/hooks/features/rowReorder/gridRowReorderColDef.js +0 -20
  170. package/modern/hooks/features/rowReorder/index.d.ts +0 -1
  171. package/modern/hooks/features/rowReorder/index.js +0 -1
  172. package/modern/hooks/features/rowReorder/useGridRowReorder.d.ts +0 -8
  173. package/modern/hooks/features/rowReorder/useGridRowReorder.js +0 -141
  174. package/modern/hooks/features/rowReorder/useGridRowReorderPreProcessors.d.ts +0 -4
  175. package/modern/hooks/features/rowReorder/useGridRowReorderPreProcessors.js +0 -46
  176. package/modern/hooks/features/rows/index.d.ts +0 -1
  177. package/modern/hooks/features/rows/index.js +0 -1
  178. package/modern/hooks/features/rows/useGridRowAriaAttributes.d.ts +0 -3
  179. package/modern/hooks/features/rows/useGridRowAriaAttributes.js +0 -37
  180. package/modern/hooks/features/serverSideLazyLoader/useGridDataSourceLazyLoader.d.ts +0 -10
  181. package/modern/hooks/features/serverSideLazyLoader/useGridDataSourceLazyLoader.js +0 -290
  182. package/modern/hooks/features/serverSideTreeData/useGridDataSourceTreeDataPreProcessors.d.ts +0 -4
  183. package/modern/hooks/features/serverSideTreeData/useGridDataSourceTreeDataPreProcessors.js +0 -148
  184. package/modern/hooks/features/serverSideTreeData/utils.d.ts +0 -7
  185. package/modern/hooks/features/serverSideTreeData/utils.js +0 -18
  186. package/modern/hooks/features/treeData/gridTreeDataGroupColDef.d.ts +0 -8
  187. package/modern/hooks/features/treeData/gridTreeDataGroupColDef.js +0 -27
  188. package/modern/hooks/features/treeData/gridTreeDataUtils.d.ts +0 -22
  189. package/modern/hooks/features/treeData/gridTreeDataUtils.js +0 -95
  190. package/modern/hooks/features/treeData/index.d.ts +0 -1
  191. package/modern/hooks/features/treeData/index.js +0 -1
  192. package/modern/hooks/features/treeData/useGridTreeData.d.ts +0 -4
  193. package/modern/hooks/features/treeData/useGridTreeData.js +0 -22
  194. package/modern/hooks/features/treeData/useGridTreeDataPreProcessors.d.ts +0 -4
  195. package/modern/hooks/features/treeData/useGridTreeDataPreProcessors.js +0 -148
  196. package/modern/hooks/index.d.ts +0 -1
  197. package/modern/hooks/index.js +0 -1
  198. package/modern/hooks/utils/useGridApiContext.d.ts +0 -4
  199. package/modern/hooks/utils/useGridApiContext.js +0 -2
  200. package/modern/hooks/utils/useGridApiRef.d.ts +0 -4
  201. package/modern/hooks/utils/useGridApiRef.js +0 -2
  202. package/modern/hooks/utils/useGridAriaAttributes.d.ts +0 -2
  203. package/modern/hooks/utils/useGridAriaAttributes.js +0 -11
  204. package/modern/hooks/utils/useGridPrivateApiContext.d.ts +0 -2
  205. package/modern/hooks/utils/useGridPrivateApiContext.js +0 -2
  206. package/modern/hooks/utils/useGridRootProps.d.ts +0 -2
  207. package/modern/hooks/utils/useGridRootProps.js +0 -2
  208. package/modern/index.d.ts +0 -22
  209. package/modern/index.js +0 -25
  210. package/modern/internals/index.d.ts +0 -33
  211. package/modern/internals/index.js +0 -38
  212. package/modern/internals/propValidation.d.ts +0 -3
  213. package/modern/internals/propValidation.js +0 -2
  214. package/modern/locales.d.ts +0 -1
  215. package/modern/locales.js +0 -1
  216. package/modern/material/icons.d.ts +0 -6
  217. package/modern/material/icons.js +0 -17
  218. package/modern/material/index.d.ts +0 -5
  219. package/modern/material/index.js +0 -8
  220. package/modern/models/dataGridProProps.d.ts +0 -222
  221. package/modern/models/dataGridProProps.js +0 -1
  222. package/modern/models/gridApiPro.d.ts +0 -11
  223. package/modern/models/gridApiPro.js +0 -1
  224. package/modern/models/gridFetchRowsParams.d.ts +0 -22
  225. package/modern/models/gridFetchRowsParams.js +0 -1
  226. package/modern/models/gridGroupingColDefOverride.d.ts +0 -30
  227. package/modern/models/gridGroupingColDefOverride.js +0 -1
  228. package/modern/models/gridProIconSlotsComponent.d.ts +0 -13
  229. package/modern/models/gridProIconSlotsComponent.js +0 -1
  230. package/modern/models/gridProSlotProps.d.ts +0 -8
  231. package/modern/models/gridProSlotProps.js +0 -1
  232. package/modern/models/gridProSlotsComponent.d.ts +0 -18
  233. package/modern/models/gridProSlotsComponent.js +0 -1
  234. package/modern/models/gridRowOrderChangeParams.d.ts +0 -18
  235. package/modern/models/gridRowOrderChangeParams.js +0 -1
  236. package/modern/models/gridRowScrollEndParams.d.ts +0 -18
  237. package/modern/models/gridRowScrollEndParams.js +0 -1
  238. package/modern/models/gridStatePro.d.ts +0 -19
  239. package/modern/models/gridStatePro.js +0 -1
  240. package/modern/models/index.d.ts +0 -7
  241. package/modern/models/index.js +0 -7
  242. package/modern/package.json +0 -1
  243. package/modern/themeAugmentation/index.d.ts +0 -2
  244. package/modern/themeAugmentation/index.js +0 -4
  245. package/modern/themeAugmentation/overrides.d.ts +0 -7
  246. package/modern/themeAugmentation/overrides.js +0 -1
  247. package/modern/themeAugmentation/props.d.ts +0 -15
  248. package/modern/themeAugmentation/props.js +0 -1
  249. package/modern/typeOverloads/index.d.ts +0 -1
  250. package/modern/typeOverloads/index.js +0 -1
  251. package/modern/typeOverloads/modules.d.ts +0 -70
  252. package/modern/typeOverloads/modules.js +0 -1
  253. package/modern/typeOverloads/reexports.d.ts +0 -17
  254. package/modern/typeOverloads/reexports.js +0 -15
  255. package/modern/utils/index.d.ts +0 -1
  256. package/modern/utils/index.js +0 -1
  257. package/modern/utils/releaseInfo.d.ts +0 -1
  258. package/modern/utils/releaseInfo.js +0 -13
  259. package/modern/utils/tree/createRowTree.d.ts +0 -17
  260. package/modern/utils/tree/createRowTree.js +0 -37
  261. package/modern/utils/tree/index.d.ts +0 -1
  262. package/modern/utils/tree/index.js +0 -1
  263. package/modern/utils/tree/insertDataRowInTree.d.ts +0 -69
  264. package/modern/utils/tree/insertDataRowInTree.js +0 -141
  265. package/modern/utils/tree/models.d.ts +0 -14
  266. package/modern/utils/tree/models.js +0 -1
  267. package/modern/utils/tree/removeDataRowFromTree.d.ts +0 -45
  268. package/modern/utils/tree/removeDataRowFromTree.js +0 -94
  269. package/modern/utils/tree/sortRowTree.d.ts +0 -15
  270. package/modern/utils/tree/sortRowTree.js +0 -114
  271. package/modern/utils/tree/updateRowTree.d.ts +0 -20
  272. package/modern/utils/tree/updateRowTree.js +0 -88
  273. package/modern/utils/tree/utils.d.ts +0 -54
  274. package/modern/utils/tree/utils.js +0 -197
  275. package/tsconfig.build.tsbuildinfo +0 -1
  276. package/utils/releaseInfo.d.ts +0 -1
  277. package/utils/releaseInfo.js +0 -20
@@ -1,114 +0,0 @@
1
- import { GRID_ROOT_GROUP_ID } from '@mui/x-data-grid';
2
- // Single-linked list node
3
- class Node {
4
- constructor(data, next) {
5
- this.next = void 0;
6
- this.data = void 0;
7
- this.next = next;
8
- this.data = data;
9
- }
10
- insertAfter(list) {
11
- if (!list.first || !list.last) {
12
- return;
13
- }
14
- const next = this.next;
15
- this.next = list.first;
16
- list.last.next = next;
17
- }
18
- }
19
-
20
- // Single-linked list container
21
- class List {
22
- constructor(first, last) {
23
- this.first = void 0;
24
- this.last = void 0;
25
- this.first = first;
26
- this.last = last;
27
- }
28
- data() {
29
- const array = [];
30
- this.forEach(node => {
31
- array.push(node.data);
32
- });
33
- return array;
34
- }
35
- forEach(fn) {
36
- let current = this.first;
37
- while (current !== null) {
38
- fn(current);
39
- current = current.next;
40
- }
41
- }
42
- static from(array) {
43
- if (array.length === 0) {
44
- return new List(null, null);
45
- }
46
- let index = 0;
47
- const first = new Node(array[index], null);
48
- let current = first;
49
- while (index + 1 < array.length) {
50
- index += 1;
51
- const node = new Node(array[index], null);
52
- current.next = node;
53
- current = node;
54
- }
55
- return new List(first, current);
56
- }
57
- }
58
- export const sortRowTree = params => {
59
- const {
60
- rowTree,
61
- disableChildrenSorting,
62
- sortRowList,
63
- shouldRenderGroupBelowLeaves
64
- } = params;
65
- const sortedGroupedByParentRows = new Map();
66
- const sortGroup = node => {
67
- const shouldSortGroup = !!sortRowList && (!disableChildrenSorting || node.depth === -1);
68
- let sortedRowIds;
69
- if (shouldSortGroup) {
70
- for (let i = 0; i < node.children.length; i += 1) {
71
- const childNode = rowTree[node.children[i]];
72
- if (childNode.type === 'group') {
73
- sortGroup(childNode);
74
- }
75
- }
76
- sortedRowIds = sortRowList(node.children.map(childId => rowTree[childId]));
77
- } else if (shouldRenderGroupBelowLeaves) {
78
- const childrenLeaves = [];
79
- const childrenGroups = [];
80
- for (let i = 0; i < node.children.length; i += 1) {
81
- const childId = node.children[i];
82
- const childNode = rowTree[childId];
83
- if (childNode.type === 'group') {
84
- sortGroup(childNode);
85
- childrenGroups.push(childId);
86
- } else if (childNode.type === 'leaf') {
87
- childrenLeaves.push(childId);
88
- }
89
- }
90
- sortedRowIds = [...childrenLeaves, ...childrenGroups];
91
- } else {
92
- for (let i = 0; i < node.children.length; i += 1) {
93
- const childNode = rowTree[node.children[i]];
94
- if (childNode.type === 'group') {
95
- sortGroup(childNode);
96
- }
97
- }
98
- sortedRowIds = [...node.children];
99
- }
100
- if (node.footerId != null) {
101
- sortedRowIds.push(node.footerId);
102
- }
103
- sortedGroupedByParentRows.set(node.id, sortedRowIds);
104
- };
105
- sortGroup(rowTree[GRID_ROOT_GROUP_ID]);
106
- const rootList = List.from(sortedGroupedByParentRows.get(GRID_ROOT_GROUP_ID));
107
- rootList.forEach(node => {
108
- const children = sortedGroupedByParentRows.get(node.data);
109
- if (children?.length) {
110
- node.insertAfter(List.from(children));
111
- }
112
- });
113
- return rootList.data();
114
- };
@@ -1,20 +0,0 @@
1
- import { GridGroupNode, GridRowId, GridRowTreeConfig } from '@mui/x-data-grid';
2
- import { GridRowTreeCreationValue, GridTreeDepths } from '@mui/x-data-grid/internals';
3
- import { GridTreePathDuplicateHandler, RowTreeBuilderNode } from "./models.js";
4
- export interface UpdateRowTreeNodes {
5
- inserted: RowTreeBuilderNode[];
6
- modified: RowTreeBuilderNode[];
7
- removed: GridRowId[];
8
- }
9
- interface UpdateRowTreeParams {
10
- previousTree: GridRowTreeConfig;
11
- previousTreeDepth: GridTreeDepths;
12
- nodes: UpdateRowTreeNodes;
13
- defaultGroupingExpansionDepth: number;
14
- isGroupExpandedByDefault?: (node: GridGroupNode) => boolean;
15
- groupingName: string;
16
- onDuplicatePath?: GridTreePathDuplicateHandler;
17
- previousGroupsToFetch?: GridRowId[];
18
- }
19
- export declare const updateRowTree: (params: UpdateRowTreeParams) => GridRowTreeCreationValue;
20
- export {};
@@ -1,88 +0,0 @@
1
- import _extends from "@babel/runtime/helpers/esm/extends";
2
- import { GRID_ROOT_GROUP_ID } from '@mui/x-data-grid';
3
- import { getTreeNodeDescendants } from '@mui/x-data-grid/internals';
4
- import { isDeepEqual } from '@mui/x-internals/isDeepEqual';
5
- import { insertDataRowInTree } from "./insertDataRowInTree.js";
6
- import { removeDataRowFromTree } from "./removeDataRowFromTree.js";
7
- import { createUpdatedGroupsManager, getNodePathInTree } from "./utils.js";
8
- export const updateRowTree = params => {
9
- const tree = _extends({}, params.previousTree);
10
- const treeDepths = _extends({}, params.previousTreeDepth);
11
- const updatedGroupsManager = createUpdatedGroupsManager();
12
- const groupsToFetch = params.previousGroupsToFetch ? new Set([...params.previousGroupsToFetch]) : new Set([]);
13
- for (let i = 0; i < params.nodes.inserted.length; i += 1) {
14
- const {
15
- id,
16
- path,
17
- serverChildrenCount
18
- } = params.nodes.inserted[i];
19
- insertDataRowInTree({
20
- previousTree: params.previousTree,
21
- tree,
22
- treeDepths,
23
- updatedGroupsManager,
24
- id,
25
- path,
26
- serverChildrenCount,
27
- onDuplicatePath: params.onDuplicatePath,
28
- isGroupExpandedByDefault: params.isGroupExpandedByDefault,
29
- defaultGroupingExpansionDepth: params.defaultGroupingExpansionDepth,
30
- groupsToFetch
31
- });
32
- }
33
- for (let i = 0; i < params.nodes.removed.length; i += 1) {
34
- const nodeId = params.nodes.removed[i];
35
- removeDataRowFromTree({
36
- tree,
37
- treeDepths,
38
- updatedGroupsManager,
39
- id: nodeId
40
- });
41
- }
42
- for (let i = 0; i < params.nodes.modified.length; i += 1) {
43
- const {
44
- id,
45
- path,
46
- serverChildrenCount
47
- } = params.nodes.modified[i];
48
- const pathInPreviousTree = getNodePathInTree({
49
- tree,
50
- id
51
- });
52
- const isInSameGroup = isDeepEqual(pathInPreviousTree, path);
53
- if (!isInSameGroup) {
54
- removeDataRowFromTree({
55
- tree,
56
- treeDepths,
57
- updatedGroupsManager,
58
- id
59
- });
60
- insertDataRowInTree({
61
- previousTree: params.previousTree,
62
- tree,
63
- treeDepths,
64
- updatedGroupsManager,
65
- id,
66
- path,
67
- serverChildrenCount,
68
- onDuplicatePath: params.onDuplicatePath,
69
- isGroupExpandedByDefault: params.isGroupExpandedByDefault,
70
- defaultGroupingExpansionDepth: params.defaultGroupingExpansionDepth,
71
- groupsToFetch
72
- });
73
- } else {
74
- updatedGroupsManager?.addAction(tree[id].parent, 'modifyChildren');
75
- }
76
- }
77
-
78
- // TODO rows v6: Avoid walking the whole tree, we should be able to generate the new list only using slices.
79
- const dataRowIds = getTreeNodeDescendants(tree, GRID_ROOT_GROUP_ID, true);
80
- return {
81
- tree,
82
- treeDepths,
83
- groupingName: params.groupingName,
84
- dataRowIds,
85
- updatedGroupsManager,
86
- groupsToFetch: Array.from(groupsToFetch)
87
- };
88
- };
@@ -1,54 +0,0 @@
1
- import { GridFilterState, GridGroupNode, GridRowId, GridRowTreeConfig, GridRowsState, GridTreeNode } from '@mui/x-data-grid';
2
- import { GridTreeDepths, GridRowTreeUpdatedGroupsManager } from '@mui/x-data-grid/internals';
3
- import { RowTreeBuilderGroupingCriterion } from "./models.js";
4
- import { DataGridProProps } from "../../models/dataGridProProps.js";
5
- export declare const getGroupRowIdFromPath: (path: RowTreeBuilderGroupingCriterion[]) => string;
6
- export declare const getNodePathInTree: ({
7
- id,
8
- tree
9
- }: {
10
- id: GridRowId;
11
- tree: GridRowTreeConfig;
12
- }) => RowTreeBuilderGroupingCriterion[];
13
- export declare const checkGroupChildrenExpansion: (node: GridGroupNode, defaultGroupingExpansionDepth: number, isGroupExpandedByDefault?: DataGridProProps["isGroupExpandedByDefault"]) => boolean;
14
- export declare const updateGroupDefaultExpansion: (node: GridGroupNode, defaultGroupingExpansionDepth: number, isGroupExpandedByDefault?: DataGridProProps["isGroupExpandedByDefault"]) => GridGroupNode;
15
- /**
16
- * Insert a node in the tree
17
- */
18
- export declare const insertNodeInTree: (node: GridTreeNode, tree: GridRowTreeConfig, treeDepths: GridTreeDepths, previousTree: GridRowTreeConfig | null) => void;
19
- /**
20
- * Removes a node from the tree
21
- */
22
- export declare const removeNodeFromTree: ({
23
- node,
24
- tree,
25
- treeDepths
26
- }: {
27
- node: GridTreeNode;
28
- tree: GridRowTreeConfig;
29
- treeDepths: GridTreeDepths;
30
- }) => void;
31
- /**
32
- * Updates the `id` and `isAutoGenerated` properties of a group node.
33
- */
34
- export declare const updateGroupNodeIdAndAutoGenerated: ({
35
- node,
36
- updatedNode,
37
- previousTree,
38
- tree,
39
- treeDepths
40
- }: {
41
- previousTree: GridRowTreeConfig | null;
42
- node: GridGroupNode;
43
- updatedNode: Pick<GridGroupNode, "id" | "isAutoGenerated">;
44
- tree: GridRowTreeConfig;
45
- treeDepths: GridTreeDepths;
46
- }) => void;
47
- export declare const createUpdatedGroupsManager: () => GridRowTreeUpdatedGroupsManager;
48
- export declare const getVisibleRowsLookup: ({
49
- tree,
50
- filteredRowsLookup
51
- }: {
52
- tree: GridRowsState["tree"];
53
- filteredRowsLookup: GridFilterState["filteredRowsLookup"];
54
- }) => import("@mui/x-data-grid/hooks/features/filter/gridFilterState").GridVisibleRowsLookupState;
@@ -1,197 +0,0 @@
1
- import _extends from "@babel/runtime/helpers/esm/extends";
2
- import { GRID_ROOT_GROUP_ID } from '@mui/x-data-grid';
3
- export const getGroupRowIdFromPath = path => {
4
- const pathStr = path.map(groupingCriteria => `${groupingCriteria.field}/${groupingCriteria.key}`).join('-');
5
- return `auto-generated-row-${pathStr}`;
6
- };
7
- export const getNodePathInTree = ({
8
- id,
9
- tree
10
- }) => {
11
- const path = [];
12
- let node = tree[id];
13
- while (node.id !== GRID_ROOT_GROUP_ID) {
14
- path.push({
15
- field: node.type === 'leaf' ? null : node.groupingField,
16
- key: node.groupingKey
17
- });
18
- node = tree[node.parent];
19
- }
20
- path.reverse();
21
- return path;
22
- };
23
- export const checkGroupChildrenExpansion = (node, defaultGroupingExpansionDepth, isGroupExpandedByDefault) => {
24
- let childrenExpanded;
25
- if (node.id === GRID_ROOT_GROUP_ID) {
26
- childrenExpanded = true;
27
- } else if (isGroupExpandedByDefault) {
28
- childrenExpanded = isGroupExpandedByDefault(node);
29
- } else {
30
- childrenExpanded = defaultGroupingExpansionDepth === -1 || defaultGroupingExpansionDepth > node.depth;
31
- }
32
- return childrenExpanded;
33
- };
34
- export const updateGroupDefaultExpansion = (node, defaultGroupingExpansionDepth, isGroupExpandedByDefault) => {
35
- const childrenExpanded = checkGroupChildrenExpansion(node, defaultGroupingExpansionDepth, isGroupExpandedByDefault);
36
- node.childrenExpanded = childrenExpanded;
37
- return node;
38
- };
39
-
40
- /**
41
- * Insert a node in the tree
42
- */
43
- export const insertNodeInTree = (node, tree, treeDepths, previousTree) => {
44
- // 1. Insert node in the tree.
45
- tree[node.id] = node;
46
-
47
- // 2. Increment the `treeDepths` object for the node's depth.
48
- treeDepths[node.depth] = (treeDepths[node.depth] ?? 0) + 1;
49
-
50
- // 3. Register the new node in its parent.
51
- const parentNode = tree[node.parent];
52
- if (node.type === 'group' || node.type === 'leaf') {
53
- // For groups and leaves,
54
- // Register the node from its parents `children` and `childrenFromPath` properties.
55
- const groupingFieldName = node.groupingField ?? '__no_field__';
56
- const groupingKeyName = node.groupingKey ?? '__no_key__';
57
- const groupingField = parentNode.childrenFromPath?.[groupingFieldName];
58
- if (previousTree !== null && previousTree[parentNode.id] === tree[parentNode.id]) {
59
- parentNode.children = [...parentNode.children, node.id];
60
- } else {
61
- parentNode.children.push(node.id);
62
- }
63
- if (groupingField == null) {
64
- parentNode.childrenFromPath[groupingFieldName] = {
65
- [groupingKeyName.toString()]: node.id
66
- };
67
- } else {
68
- groupingField[groupingKeyName.toString()] = node.id;
69
- }
70
- } else if (node.type === 'footer') {
71
- // For footers,
72
- // Register the node from its parent `footerId` property.
73
- parentNode.footerId = node.id;
74
- }
75
- };
76
-
77
- /**
78
- * Removes a node from the tree
79
- */
80
- export const removeNodeFromTree = ({
81
- node,
82
- tree,
83
- treeDepths
84
- }) => {
85
- // 1. Remove node from the tree.
86
- delete tree[node.id];
87
-
88
- // 2. Decrement the `treeDepths` object for the node's depth.
89
- const nodeDepth = node.depth;
90
- const currentNodeCount = treeDepths[nodeDepth];
91
- if (currentNodeCount === 1) {
92
- delete treeDepths[nodeDepth];
93
- } else {
94
- treeDepths[nodeDepth] = currentNodeCount - 1;
95
- }
96
-
97
- // 3. Unregister the new node in its parent.
98
- const parentNode = tree[node.parent];
99
- // For footers,
100
- // Unregister the node from its parent `footerId` property.
101
- if (node.type === 'footer') {
102
- tree[parentNode.id] = _extends({}, parentNode, {
103
- footerId: null
104
- });
105
- }
106
- // For groups and leaves,
107
- // Unregister the node from its parents `children` and `childrenFromPath` properties.
108
- else {
109
- const groupingField = node.groupingField ?? '__no_field__';
110
- const groupingKey = node.groupingKey ?? '__no_key__';
111
-
112
- // TODO rows v6: Can we avoid this linear complexity ?
113
- const children = parentNode.children.filter(childId => childId !== node.id);
114
- const childrenFromPath = parentNode.childrenFromPath;
115
- delete childrenFromPath[groupingField][groupingKey.toString()];
116
- tree[parentNode.id] = _extends({}, parentNode, {
117
- children,
118
- childrenFromPath
119
- });
120
- }
121
- };
122
-
123
- /**
124
- * Updates the `id` and `isAutoGenerated` properties of a group node.
125
- */
126
- export const updateGroupNodeIdAndAutoGenerated = ({
127
- node,
128
- updatedNode,
129
- previousTree,
130
- tree,
131
- treeDepths
132
- }) => {
133
- // 1. Set the new parent for all children from the old group
134
- node.children.forEach(childId => {
135
- tree[childId] = _extends({}, tree[childId], {
136
- parent: updatedNode.id
137
- });
138
- });
139
-
140
- // 2. Remove the old group from the tree
141
- removeNodeFromTree({
142
- node,
143
- tree,
144
- treeDepths
145
- });
146
-
147
- // 3. Add the new group in the tree
148
- const groupNode = _extends({}, node, updatedNode);
149
- insertNodeInTree(groupNode, tree, treeDepths, previousTree);
150
- };
151
- export const createUpdatedGroupsManager = () => ({
152
- value: {},
153
- addAction(groupId, action) {
154
- if (!this.value[groupId]) {
155
- this.value[groupId] = {};
156
- }
157
- this.value[groupId][action] = true;
158
- }
159
- });
160
- export const getVisibleRowsLookup = ({
161
- tree,
162
- filteredRowsLookup
163
- }) => {
164
- if (!filteredRowsLookup) {
165
- return {};
166
- }
167
- const visibleRowsLookup = {};
168
- const handleTreeNode = (node, areAncestorsExpanded) => {
169
- const isPassingFiltering = filteredRowsLookup[node.id] !== false;
170
- if (node.type === 'group') {
171
- node.children.forEach(childId => {
172
- const childNode = tree[childId];
173
- handleTreeNode(childNode, areAncestorsExpanded && !!node.childrenExpanded);
174
- });
175
- }
176
- const isVisible = isPassingFiltering && areAncestorsExpanded;
177
- if (!isVisible) {
178
- visibleRowsLookup[node.id] = isVisible;
179
- }
180
-
181
- // TODO rows v6: Should we keep storing the visibility status of footer independently or rely on the group visibility in the selector ?
182
- if (node.type === 'group' && node.footerId != null) {
183
- const isFooterVisible = isPassingFiltering && areAncestorsExpanded && !!node.childrenExpanded;
184
- if (!isFooterVisible) {
185
- visibleRowsLookup[node.footerId] = isFooterVisible;
186
- }
187
- }
188
- };
189
- const nodes = Object.values(tree);
190
- for (let i = 0; i < nodes.length; i += 1) {
191
- const node = nodes[i];
192
- if (node.depth === 0) {
193
- handleTreeNode(node, true);
194
- }
195
- }
196
- return visibleRowsLookup;
197
- };