@mui/x-data-grid-pro 8.0.0-beta.3 → 8.1.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 (269) hide show
  1. package/CHANGELOG.md +388 -96
  2. package/DataGridPro/DataGridPro.js +8 -7
  3. package/DataGridPro/useDataGridProComponent.d.ts +2 -2
  4. package/DataGridPro/useDataGridProComponent.js +2 -3
  5. package/components/GridDetailPanel.js +1 -2
  6. package/components/headerFiltering/GridHeaderFilterMenu.js +2 -2
  7. package/esm/DataGridPro/DataGridPro.js +9 -8
  8. package/esm/DataGridPro/useDataGridProComponent.d.ts +2 -2
  9. package/esm/DataGridPro/useDataGridProComponent.js +2 -3
  10. package/esm/components/GridDetailPanel.js +1 -2
  11. package/esm/components/headerFiltering/GridHeaderFilterMenu.js +2 -2
  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/utils.d.ts +3 -2
  15. package/esm/hooks/features/dataSource/utils.js +13 -1
  16. package/esm/hooks/features/detailPanel/useGridDetailPanel.js +4 -3
  17. package/esm/hooks/features/lazyLoader/useGridLazyLoader.d.ts +1 -1
  18. package/esm/hooks/features/lazyLoader/useGridLazyLoaderPreProcessors.d.ts +1 -1
  19. package/esm/hooks/features/rowPinning/useGridRowPinning.d.ts +1 -1
  20. package/esm/hooks/features/serverSideLazyLoader/useGridDataSourceLazyLoader.js +38 -1
  21. package/esm/index.js +1 -1
  22. package/esm/internals/index.d.ts +1 -0
  23. package/esm/internals/index.js +1 -0
  24. package/esm/material/icons.d.ts +3 -6
  25. package/esm/material/icons.js +1 -1
  26. package/esm/material/index.d.ts +2 -2
  27. package/esm/models/dataGridProProps.d.ts +3 -3
  28. package/esm/models/gridProIconSlotsComponent.d.ts +6 -3
  29. package/esm/package.json +1 -1
  30. package/hooks/features/dataSource/useGridDataSourceBasePro.d.ts +3 -6
  31. package/hooks/features/dataSource/useGridDataSourceBasePro.js +34 -6
  32. package/hooks/features/dataSource/utils.d.ts +3 -2
  33. package/hooks/features/dataSource/utils.js +15 -2
  34. package/hooks/features/detailPanel/useGridDetailPanel.js +4 -3
  35. package/hooks/features/lazyLoader/useGridLazyLoader.d.ts +1 -1
  36. package/hooks/features/lazyLoader/useGridLazyLoaderPreProcessors.d.ts +1 -1
  37. package/hooks/features/rowPinning/useGridRowPinning.d.ts +1 -1
  38. package/hooks/features/serverSideLazyLoader/useGridDataSourceLazyLoader.js +37 -0
  39. package/index.js +1 -1
  40. package/internals/index.d.ts +1 -0
  41. package/internals/index.js +15 -7
  42. package/material/icons.d.ts +3 -6
  43. package/material/icons.js +3 -3
  44. package/material/index.d.ts +2 -2
  45. package/models/dataGridProProps.d.ts +3 -3
  46. package/models/gridProIconSlotsComponent.d.ts +6 -3
  47. package/package.json +8 -14
  48. package/esm/utils/releaseInfo.d.ts +0 -1
  49. package/esm/utils/releaseInfo.js +0 -13
  50. package/modern/DataGridPro/DataGrid.d.ts +0 -8
  51. package/modern/DataGridPro/DataGrid.js +0 -19
  52. package/modern/DataGridPro/DataGridPro.d.ts +0 -16
  53. package/modern/DataGridPro/DataGridPro.js +0 -1020
  54. package/modern/DataGridPro/index.d.ts +0 -3
  55. package/modern/DataGridPro/index.js +0 -3
  56. package/modern/DataGridPro/useDataGridProComponent.d.ts +0 -4
  57. package/modern/DataGridPro/useDataGridProComponent.js +0 -105
  58. package/modern/DataGridPro/useDataGridProProps.d.ts +0 -7
  59. package/modern/DataGridPro/useDataGridProProps.js +0 -54
  60. package/modern/components/GridColumnHeaders.d.ts +0 -5
  61. package/modern/components/GridColumnHeaders.js +0 -92
  62. package/modern/components/GridColumnMenuPinningItem.d.ts +0 -7
  63. package/modern/components/GridColumnMenuPinningItem.js +0 -77
  64. package/modern/components/GridDataSourceTreeDataGroupingCell.d.ts +0 -12
  65. package/modern/components/GridDataSourceTreeDataGroupingCell.js +0 -107
  66. package/modern/components/GridDetailPanel.d.ts +0 -14
  67. package/modern/components/GridDetailPanel.js +0 -53
  68. package/modern/components/GridDetailPanelToggleCell.d.ts +0 -7
  69. package/modern/components/GridDetailPanelToggleCell.js +0 -121
  70. package/modern/components/GridDetailPanels.d.ts +0 -3
  71. package/modern/components/GridDetailPanels.js +0 -67
  72. package/modern/components/GridPinnedRows.d.ts +0 -6
  73. package/modern/components/GridPinnedRows.js +0 -40
  74. package/modern/components/GridProColumnMenu.d.ts +0 -24
  75. package/modern/components/GridProColumnMenu.js +0 -21
  76. package/modern/components/GridRowReorderCell.d.ts +0 -8
  77. package/modern/components/GridRowReorderCell.js +0 -140
  78. package/modern/components/GridTreeDataGroupingCell.d.ts +0 -15
  79. package/modern/components/GridTreeDataGroupingCell.js +0 -133
  80. package/modern/components/headerFiltering/GridHeaderFilterCell.d.ts +0 -26
  81. package/modern/components/headerFiltering/GridHeaderFilterCell.js +0 -362
  82. package/modern/components/headerFiltering/GridHeaderFilterClearButton.d.ts +0 -6
  83. package/modern/components/headerFiltering/GridHeaderFilterClearButton.js +0 -17
  84. package/modern/components/headerFiltering/GridHeaderFilterMenu.d.ts +0 -30
  85. package/modern/components/headerFiltering/GridHeaderFilterMenu.js +0 -137
  86. package/modern/components/headerFiltering/GridHeaderFilterMenuContainer.d.ts +0 -17
  87. package/modern/components/headerFiltering/GridHeaderFilterMenuContainer.js +0 -138
  88. package/modern/components/headerFiltering/index.d.ts +0 -3
  89. package/modern/components/headerFiltering/index.js +0 -3
  90. package/modern/components/index.d.ts +0 -6
  91. package/modern/components/index.js +0 -7
  92. package/modern/components/reexports.d.ts +0 -1
  93. package/modern/components/reexports.js +0 -1
  94. package/modern/constants/dataGridProDefaultSlotsComponents.d.ts +0 -2
  95. package/modern/constants/dataGridProDefaultSlotsComponents.js +0 -17
  96. package/modern/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +0 -12
  97. package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +0 -143
  98. package/modern/hooks/features/columnPinning/gridColumnPinningInterface.d.ts +0 -40
  99. package/modern/hooks/features/columnPinning/gridColumnPinningInterface.js +0 -1
  100. package/modern/hooks/features/columnPinning/index.d.ts +0 -1
  101. package/modern/hooks/features/columnPinning/index.js +0 -1
  102. package/modern/hooks/features/columnPinning/useGridColumnPinning.d.ts +0 -6
  103. package/modern/hooks/features/columnPinning/useGridColumnPinning.js +0 -228
  104. package/modern/hooks/features/columnPinning/useGridColumnPinningPreProcessors.d.ts +0 -4
  105. package/modern/hooks/features/columnPinning/useGridColumnPinningPreProcessors.js +0 -105
  106. package/modern/hooks/features/columnReorder/columnReorderInterfaces.d.ts +0 -6
  107. package/modern/hooks/features/columnReorder/columnReorderInterfaces.js +0 -1
  108. package/modern/hooks/features/columnReorder/columnReorderSelector.d.ts +0 -3
  109. package/modern/hooks/features/columnReorder/columnReorderSelector.js +0 -3
  110. package/modern/hooks/features/columnReorder/index.d.ts +0 -2
  111. package/modern/hooks/features/columnReorder/index.js +0 -2
  112. package/modern/hooks/features/columnReorder/useGridColumnReorder.d.ts +0 -9
  113. package/modern/hooks/features/columnReorder/useGridColumnReorder.js +0 -242
  114. package/modern/hooks/features/dataSource/gridDataSourceSelector.d.ts +0 -7
  115. package/modern/hooks/features/dataSource/gridDataSourceSelector.js +0 -6
  116. package/modern/hooks/features/dataSource/models.d.ts +0 -75
  117. package/modern/hooks/features/dataSource/models.js +0 -1
  118. package/modern/hooks/features/dataSource/useGridDataSourceBasePro.d.ts +0 -33
  119. package/modern/hooks/features/dataSource/useGridDataSourceBasePro.js +0 -179
  120. package/modern/hooks/features/dataSource/useGridDataSourcePro.d.ts +0 -6
  121. package/modern/hooks/features/dataSource/useGridDataSourcePro.js +0 -35
  122. package/modern/hooks/features/dataSource/utils.d.ts +0 -29
  123. package/modern/hooks/features/dataSource/utils.js +0 -82
  124. package/modern/hooks/features/detailPanel/gridDetailPanelInterface.d.ts +0 -41
  125. package/modern/hooks/features/detailPanel/gridDetailPanelInterface.js +0 -1
  126. package/modern/hooks/features/detailPanel/gridDetailPanelSelector.d.ts +0 -14
  127. package/modern/hooks/features/detailPanel/gridDetailPanelSelector.js +0 -5
  128. package/modern/hooks/features/detailPanel/gridDetailPanelToggleColDef.d.ts +0 -4
  129. package/modern/hooks/features/detailPanel/gridDetailPanelToggleColDef.js +0 -34
  130. package/modern/hooks/features/detailPanel/index.d.ts +0 -3
  131. package/modern/hooks/features/detailPanel/index.js +0 -3
  132. package/modern/hooks/features/detailPanel/useGridDetailPanel.d.ts +0 -6
  133. package/modern/hooks/features/detailPanel/useGridDetailPanel.js +0 -191
  134. package/modern/hooks/features/detailPanel/useGridDetailPanelPreProcessors.d.ts +0 -4
  135. package/modern/hooks/features/detailPanel/useGridDetailPanelPreProcessors.js +0 -43
  136. package/modern/hooks/features/index.d.ts +0 -7
  137. package/modern/hooks/features/index.js +0 -8
  138. package/modern/hooks/features/infiniteLoader/useGridInfiniteLoader.d.ts +0 -9
  139. package/modern/hooks/features/infiniteLoader/useGridInfiniteLoader.js +0 -104
  140. package/modern/hooks/features/lazyLoader/useGridLazyLoader.d.ts +0 -10
  141. package/modern/hooks/features/lazyLoader/useGridLazyLoader.js +0 -90
  142. package/modern/hooks/features/lazyLoader/useGridLazyLoaderPreProcessors.d.ts +0 -5
  143. package/modern/hooks/features/lazyLoader/useGridLazyLoaderPreProcessors.js +0 -34
  144. package/modern/hooks/features/lazyLoader/utils.d.ts +0 -18
  145. package/modern/hooks/features/lazyLoader/utils.js +0 -34
  146. package/modern/hooks/features/rowPinning/gridRowPinningInterface.d.ts +0 -17
  147. package/modern/hooks/features/rowPinning/gridRowPinningInterface.js +0 -1
  148. package/modern/hooks/features/rowPinning/gridRowPinningSelector.d.ts +0 -1
  149. package/modern/hooks/features/rowPinning/gridRowPinningSelector.js +0 -1
  150. package/modern/hooks/features/rowPinning/index.d.ts +0 -1
  151. package/modern/hooks/features/rowPinning/index.js +0 -1
  152. package/modern/hooks/features/rowPinning/useGridRowPinning.d.ts +0 -6
  153. package/modern/hooks/features/rowPinning/useGridRowPinning.js +0 -52
  154. package/modern/hooks/features/rowPinning/useGridRowPinningPreProcessors.d.ts +0 -38
  155. package/modern/hooks/features/rowPinning/useGridRowPinningPreProcessors.js +0 -119
  156. package/modern/hooks/features/rowReorder/gridRowReorderColDef.d.ts +0 -2
  157. package/modern/hooks/features/rowReorder/gridRowReorderColDef.js +0 -20
  158. package/modern/hooks/features/rowReorder/index.d.ts +0 -1
  159. package/modern/hooks/features/rowReorder/index.js +0 -1
  160. package/modern/hooks/features/rowReorder/useGridRowReorder.d.ts +0 -8
  161. package/modern/hooks/features/rowReorder/useGridRowReorder.js +0 -141
  162. package/modern/hooks/features/rowReorder/useGridRowReorderPreProcessors.d.ts +0 -4
  163. package/modern/hooks/features/rowReorder/useGridRowReorderPreProcessors.js +0 -46
  164. package/modern/hooks/features/rows/index.d.ts +0 -1
  165. package/modern/hooks/features/rows/index.js +0 -1
  166. package/modern/hooks/features/rows/useGridRowAriaAttributes.d.ts +0 -3
  167. package/modern/hooks/features/rows/useGridRowAriaAttributes.js +0 -37
  168. package/modern/hooks/features/serverSideLazyLoader/useGridDataSourceLazyLoader.d.ts +0 -10
  169. package/modern/hooks/features/serverSideLazyLoader/useGridDataSourceLazyLoader.js +0 -325
  170. package/modern/hooks/features/serverSideTreeData/useGridDataSourceTreeDataPreProcessors.d.ts +0 -4
  171. package/modern/hooks/features/serverSideTreeData/useGridDataSourceTreeDataPreProcessors.js +0 -148
  172. package/modern/hooks/features/serverSideTreeData/utils.d.ts +0 -7
  173. package/modern/hooks/features/serverSideTreeData/utils.js +0 -18
  174. package/modern/hooks/features/treeData/gridTreeDataGroupColDef.d.ts +0 -8
  175. package/modern/hooks/features/treeData/gridTreeDataGroupColDef.js +0 -27
  176. package/modern/hooks/features/treeData/gridTreeDataUtils.d.ts +0 -22
  177. package/modern/hooks/features/treeData/gridTreeDataUtils.js +0 -95
  178. package/modern/hooks/features/treeData/index.d.ts +0 -1
  179. package/modern/hooks/features/treeData/index.js +0 -1
  180. package/modern/hooks/features/treeData/useGridTreeData.d.ts +0 -4
  181. package/modern/hooks/features/treeData/useGridTreeData.js +0 -22
  182. package/modern/hooks/features/treeData/useGridTreeDataPreProcessors.d.ts +0 -4
  183. package/modern/hooks/features/treeData/useGridTreeDataPreProcessors.js +0 -148
  184. package/modern/hooks/index.d.ts +0 -1
  185. package/modern/hooks/index.js +0 -1
  186. package/modern/hooks/utils/useGridApiContext.d.ts +0 -4
  187. package/modern/hooks/utils/useGridApiContext.js +0 -2
  188. package/modern/hooks/utils/useGridApiRef.d.ts +0 -4
  189. package/modern/hooks/utils/useGridApiRef.js +0 -2
  190. package/modern/hooks/utils/useGridAriaAttributes.d.ts +0 -2
  191. package/modern/hooks/utils/useGridAriaAttributes.js +0 -11
  192. package/modern/hooks/utils/useGridPrivateApiContext.d.ts +0 -2
  193. package/modern/hooks/utils/useGridPrivateApiContext.js +0 -2
  194. package/modern/hooks/utils/useGridRootProps.d.ts +0 -2
  195. package/modern/hooks/utils/useGridRootProps.js +0 -2
  196. package/modern/index.d.ts +0 -22
  197. package/modern/index.js +0 -25
  198. package/modern/internals/index.d.ts +0 -33
  199. package/modern/internals/index.js +0 -38
  200. package/modern/internals/propValidation.d.ts +0 -3
  201. package/modern/internals/propValidation.js +0 -2
  202. package/modern/locales.d.ts +0 -1
  203. package/modern/locales.js +0 -1
  204. package/modern/material/icons.d.ts +0 -6
  205. package/modern/material/icons.js +0 -17
  206. package/modern/material/index.d.ts +0 -5
  207. package/modern/material/index.js +0 -8
  208. package/modern/models/dataGridProProps.d.ts +0 -222
  209. package/modern/models/dataGridProProps.js +0 -1
  210. package/modern/models/gridApiPro.d.ts +0 -11
  211. package/modern/models/gridApiPro.js +0 -1
  212. package/modern/models/gridFetchRowsParams.d.ts +0 -22
  213. package/modern/models/gridFetchRowsParams.js +0 -1
  214. package/modern/models/gridGroupingColDefOverride.d.ts +0 -30
  215. package/modern/models/gridGroupingColDefOverride.js +0 -1
  216. package/modern/models/gridProIconSlotsComponent.d.ts +0 -13
  217. package/modern/models/gridProIconSlotsComponent.js +0 -1
  218. package/modern/models/gridProSlotProps.d.ts +0 -8
  219. package/modern/models/gridProSlotProps.js +0 -1
  220. package/modern/models/gridProSlotsComponent.d.ts +0 -18
  221. package/modern/models/gridProSlotsComponent.js +0 -1
  222. package/modern/models/gridRowOrderChangeParams.d.ts +0 -18
  223. package/modern/models/gridRowOrderChangeParams.js +0 -1
  224. package/modern/models/gridRowScrollEndParams.d.ts +0 -18
  225. package/modern/models/gridRowScrollEndParams.js +0 -1
  226. package/modern/models/gridStatePro.d.ts +0 -19
  227. package/modern/models/gridStatePro.js +0 -1
  228. package/modern/models/index.d.ts +0 -7
  229. package/modern/models/index.js +0 -7
  230. package/modern/package.json +0 -1
  231. package/modern/themeAugmentation/index.d.ts +0 -2
  232. package/modern/themeAugmentation/index.js +0 -4
  233. package/modern/themeAugmentation/overrides.d.ts +0 -7
  234. package/modern/themeAugmentation/overrides.js +0 -1
  235. package/modern/themeAugmentation/props.d.ts +0 -15
  236. package/modern/themeAugmentation/props.js +0 -1
  237. package/modern/typeOverloads/index.d.ts +0 -1
  238. package/modern/typeOverloads/index.js +0 -1
  239. package/modern/typeOverloads/modules.d.ts +0 -70
  240. package/modern/typeOverloads/modules.js +0 -1
  241. package/modern/typeOverloads/reexports.d.ts +0 -17
  242. package/modern/typeOverloads/reexports.js +0 -15
  243. package/modern/utils/index.d.ts +0 -1
  244. package/modern/utils/index.js +0 -1
  245. package/modern/utils/releaseInfo.d.ts +0 -1
  246. package/modern/utils/releaseInfo.js +0 -13
  247. package/modern/utils/tree/createRowTree.d.ts +0 -17
  248. package/modern/utils/tree/createRowTree.js +0 -37
  249. package/modern/utils/tree/index.d.ts +0 -1
  250. package/modern/utils/tree/index.js +0 -1
  251. package/modern/utils/tree/insertDataRowInTree.d.ts +0 -69
  252. package/modern/utils/tree/insertDataRowInTree.js +0 -141
  253. package/modern/utils/tree/models.d.ts +0 -14
  254. package/modern/utils/tree/models.js +0 -1
  255. package/modern/utils/tree/removeDataRowFromTree.d.ts +0 -45
  256. package/modern/utils/tree/removeDataRowFromTree.js +0 -94
  257. package/modern/utils/tree/sortRowTree.d.ts +0 -15
  258. package/modern/utils/tree/sortRowTree.js +0 -114
  259. package/modern/utils/tree/updateRowTree.d.ts +0 -20
  260. package/modern/utils/tree/updateRowTree.js +0 -88
  261. package/modern/utils/tree/utils.d.ts +0 -54
  262. package/modern/utils/tree/utils.js +0 -197
  263. package/tsconfig.build.tsbuildinfo +0 -1
  264. package/utils/releaseInfo.d.ts +0 -1
  265. package/utils/releaseInfo.js +0 -20
  266. /package/esm/{locales.d.ts → locales/index.d.ts} +0 -0
  267. /package/esm/{locales.js → locales/index.js} +0 -0
  268. /package/{locales.d.ts → locales/index.d.ts} +0 -0
  269. /package/{locales.js → locales/index.js} +0 -0
@@ -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
- };