@mui/x-data-grid-premium 8.0.0-beta.3 → 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 (486) hide show
  1. package/CHANGELOG.md +282 -96
  2. package/DataGridPremium/DataGridPremium.js +165 -9
  3. package/DataGridPremium/useDataGridPremiumComponent.d.ts +2 -2
  4. package/DataGridPremium/useDataGridPremiumComponent.js +22 -3
  5. package/DataGridPremium/useDataGridPremiumProps.js +5 -1
  6. package/components/GridColumnMenuPivotItem.d.ts +3 -0
  7. package/components/GridColumnMenuPivotItem.js +33 -0
  8. package/components/GridEmptyPivotOverlay.d.ts +6 -0
  9. package/components/GridEmptyPivotOverlay.js +29 -0
  10. package/components/GridGroupingCriteriaCell.js +8 -3
  11. package/components/GridPremiumColumnMenu.d.ts +5 -0
  12. package/components/GridPremiumColumnMenu.js +6 -1
  13. package/components/GridPremiumToolbar.d.ts +1 -1
  14. package/components/GridPremiumToolbar.js +29 -1
  15. package/components/aiAssistantPanel/AiAssistantPanelTrigger.d.ts +33 -0
  16. package/components/aiAssistantPanel/AiAssistantPanelTrigger.js +107 -0
  17. package/components/aiAssistantPanel/GridAiAssistantPanel.d.ts +3 -0
  18. package/components/aiAssistantPanel/GridAiAssistantPanel.js +195 -0
  19. package/components/aiAssistantPanel/GridAiAssistantPanelConversation.d.ts +7 -0
  20. package/components/aiAssistantPanel/GridAiAssistantPanelConversation.js +71 -0
  21. package/components/aiAssistantPanel/GridAiAssistantPanelConversationsMenu.d.ts +3 -0
  22. package/components/aiAssistantPanel/GridAiAssistantPanelConversationsMenu.js +92 -0
  23. package/components/aiAssistantPanel/GridAiAssistantPanelSuggestions.d.ts +7 -0
  24. package/components/aiAssistantPanel/GridAiAssistantPanelSuggestions.js +86 -0
  25. package/components/aiAssistantPanel/index.d.ts +2 -0
  26. package/components/aiAssistantPanel/index.js +27 -0
  27. package/components/collapsible/Collapsible.d.ts +4 -0
  28. package/components/collapsible/Collapsible.js +70 -0
  29. package/components/collapsible/CollapsibleContext.d.ts +8 -0
  30. package/components/collapsible/CollapsibleContext.js +17 -0
  31. package/components/collapsible/CollapsiblePanel.d.ts +4 -0
  32. package/components/collapsible/CollapsiblePanel.js +64 -0
  33. package/components/collapsible/CollapsibleTrigger.d.ts +4 -0
  34. package/components/collapsible/CollapsibleTrigger.js +106 -0
  35. package/components/collapsible/index.d.ts +4 -0
  36. package/components/collapsible/index.js +49 -0
  37. package/components/index.d.ts +5 -2
  38. package/components/index.js +40 -4
  39. package/components/pivotPanel/GridPivotPanel.d.ts +3 -0
  40. package/components/pivotPanel/GridPivotPanel.js +22 -0
  41. package/components/pivotPanel/GridPivotPanelBody.d.ts +11 -0
  42. package/components/pivotPanel/GridPivotPanelBody.js +368 -0
  43. package/components/pivotPanel/GridPivotPanelField.d.ts +22 -0
  44. package/components/pivotPanel/GridPivotPanelField.js +338 -0
  45. package/components/pivotPanel/GridPivotPanelFieldMenu.d.ts +8 -0
  46. package/components/pivotPanel/GridPivotPanelFieldMenu.js +177 -0
  47. package/components/pivotPanel/GridPivotPanelHeader.d.ts +7 -0
  48. package/components/pivotPanel/GridPivotPanelHeader.js +101 -0
  49. package/components/pivotPanel/GridPivotPanelSearch.d.ts +7 -0
  50. package/components/pivotPanel/GridPivotPanelSearch.js +77 -0
  51. package/components/pivotPanel/PivotPanelTrigger.d.ts +37 -0
  52. package/components/pivotPanel/PivotPanelTrigger.js +93 -0
  53. package/components/pivotPanel/index.d.ts +2 -0
  54. package/components/pivotPanel/index.js +27 -0
  55. package/components/prompt/GridPrompt.d.ts +7 -0
  56. package/components/prompt/GridPrompt.js +364 -0
  57. package/components/prompt/index.d.ts +1 -0
  58. package/components/prompt/index.js +12 -0
  59. package/components/promptField/GridPromptField.d.ts +4 -0
  60. package/components/promptField/GridPromptField.js +86 -0
  61. package/components/promptField/PromptField.d.ts +66 -0
  62. package/components/promptField/PromptField.js +95 -0
  63. package/components/promptField/PromptFieldContext.d.ts +16 -0
  64. package/components/promptField/PromptFieldContext.js +17 -0
  65. package/components/promptField/PromptFieldControl.d.ts +27 -0
  66. package/components/promptField/PromptFieldControl.js +102 -0
  67. package/components/promptField/PromptFieldRecord.d.ts +27 -0
  68. package/components/promptField/PromptFieldRecord.js +158 -0
  69. package/components/promptField/PromptFieldSend.d.ts +27 -0
  70. package/components/promptField/PromptFieldSend.js +83 -0
  71. package/components/promptField/index.d.ts +4 -0
  72. package/components/promptField/index.js +49 -0
  73. package/components/resizablePanel/ResizablePanel.d.ts +10 -0
  74. package/components/resizablePanel/ResizablePanel.js +59 -0
  75. package/components/resizablePanel/ResizablePanelContext.d.ts +7 -0
  76. package/components/resizablePanel/ResizablePanelContext.js +17 -0
  77. package/components/resizablePanel/ResizablePanelHandle.d.ts +4 -0
  78. package/components/resizablePanel/ResizablePanelHandle.js +115 -0
  79. package/components/resizablePanel/index.d.ts +3 -0
  80. package/components/resizablePanel/index.js +38 -0
  81. package/components/sidebar/Sidebar.d.ts +4 -0
  82. package/components/sidebar/Sidebar.js +54 -0
  83. package/components/sidebar/SidebarHeader.d.ts +4 -0
  84. package/components/sidebar/SidebarHeader.js +51 -0
  85. package/components/sidebar/index.d.ts +2 -0
  86. package/components/sidebar/index.js +27 -0
  87. package/constants/dataGridPremiumDefaultSlotsComponents.js +3 -0
  88. package/esm/DataGridPremium/DataGridPremium.js +167 -11
  89. package/esm/DataGridPremium/useDataGridPremiumComponent.d.ts +2 -2
  90. package/esm/DataGridPremium/useDataGridPremiumComponent.js +20 -3
  91. package/esm/DataGridPremium/useDataGridPremiumProps.js +5 -1
  92. package/esm/components/GridColumnMenuPivotItem.d.ts +3 -0
  93. package/esm/components/GridColumnMenuPivotItem.js +26 -0
  94. package/esm/components/GridEmptyPivotOverlay.d.ts +6 -0
  95. package/esm/components/GridEmptyPivotOverlay.js +22 -0
  96. package/esm/components/GridGroupingCriteriaCell.js +9 -4
  97. package/esm/components/GridPremiumColumnMenu.d.ts +5 -0
  98. package/esm/components/GridPremiumColumnMenu.js +6 -1
  99. package/esm/components/GridPremiumToolbar.d.ts +1 -1
  100. package/esm/components/GridPremiumToolbar.js +30 -2
  101. package/esm/components/aiAssistantPanel/AiAssistantPanelTrigger.d.ts +33 -0
  102. package/esm/components/aiAssistantPanel/AiAssistantPanelTrigger.js +100 -0
  103. package/esm/components/aiAssistantPanel/GridAiAssistantPanel.d.ts +3 -0
  104. package/esm/components/aiAssistantPanel/GridAiAssistantPanel.js +188 -0
  105. package/esm/components/aiAssistantPanel/GridAiAssistantPanelConversation.d.ts +7 -0
  106. package/esm/components/aiAssistantPanel/GridAiAssistantPanelConversation.js +64 -0
  107. package/esm/components/aiAssistantPanel/GridAiAssistantPanelConversationsMenu.d.ts +3 -0
  108. package/esm/components/aiAssistantPanel/GridAiAssistantPanelConversationsMenu.js +85 -0
  109. package/esm/components/aiAssistantPanel/GridAiAssistantPanelSuggestions.d.ts +7 -0
  110. package/esm/components/aiAssistantPanel/GridAiAssistantPanelSuggestions.js +80 -0
  111. package/esm/components/aiAssistantPanel/index.d.ts +2 -0
  112. package/esm/components/aiAssistantPanel/index.js +2 -0
  113. package/esm/components/collapsible/Collapsible.d.ts +4 -0
  114. package/esm/components/collapsible/Collapsible.js +63 -0
  115. package/esm/components/collapsible/CollapsibleContext.d.ts +8 -0
  116. package/esm/components/collapsible/CollapsibleContext.js +9 -0
  117. package/esm/components/collapsible/CollapsiblePanel.d.ts +4 -0
  118. package/esm/components/collapsible/CollapsiblePanel.js +57 -0
  119. package/esm/components/collapsible/CollapsibleTrigger.d.ts +4 -0
  120. package/esm/components/collapsible/CollapsibleTrigger.js +99 -0
  121. package/esm/components/collapsible/index.d.ts +4 -0
  122. package/esm/components/collapsible/index.js +4 -0
  123. package/esm/components/index.d.ts +5 -2
  124. package/esm/components/index.js +5 -2
  125. package/esm/components/pivotPanel/GridPivotPanel.d.ts +3 -0
  126. package/esm/components/pivotPanel/GridPivotPanel.js +16 -0
  127. package/esm/components/pivotPanel/GridPivotPanelBody.d.ts +11 -0
  128. package/esm/components/pivotPanel/GridPivotPanelBody.js +361 -0
  129. package/esm/components/pivotPanel/GridPivotPanelField.d.ts +22 -0
  130. package/esm/components/pivotPanel/GridPivotPanelField.js +331 -0
  131. package/esm/components/pivotPanel/GridPivotPanelFieldMenu.d.ts +8 -0
  132. package/esm/components/pivotPanel/GridPivotPanelFieldMenu.js +170 -0
  133. package/esm/components/pivotPanel/GridPivotPanelHeader.d.ts +7 -0
  134. package/esm/components/pivotPanel/GridPivotPanelHeader.js +94 -0
  135. package/esm/components/pivotPanel/GridPivotPanelSearch.d.ts +7 -0
  136. package/esm/components/pivotPanel/GridPivotPanelSearch.js +70 -0
  137. package/esm/components/pivotPanel/PivotPanelTrigger.d.ts +37 -0
  138. package/esm/components/pivotPanel/PivotPanelTrigger.js +86 -0
  139. package/esm/components/pivotPanel/index.d.ts +2 -0
  140. package/esm/components/pivotPanel/index.js +2 -0
  141. package/esm/components/prompt/GridPrompt.d.ts +7 -0
  142. package/esm/components/prompt/GridPrompt.js +357 -0
  143. package/esm/components/prompt/index.d.ts +1 -0
  144. package/esm/components/prompt/index.js +1 -0
  145. package/esm/components/promptField/GridPromptField.d.ts +4 -0
  146. package/esm/components/promptField/GridPromptField.js +79 -0
  147. package/esm/components/promptField/PromptField.d.ts +66 -0
  148. package/esm/components/promptField/PromptField.js +88 -0
  149. package/esm/components/promptField/PromptFieldContext.d.ts +16 -0
  150. package/esm/components/promptField/PromptFieldContext.js +9 -0
  151. package/esm/components/promptField/PromptFieldControl.d.ts +27 -0
  152. package/esm/components/promptField/PromptFieldControl.js +95 -0
  153. package/esm/components/promptField/PromptFieldRecord.d.ts +27 -0
  154. package/esm/components/promptField/PromptFieldRecord.js +151 -0
  155. package/esm/components/promptField/PromptFieldSend.d.ts +27 -0
  156. package/{modern/components/export/ExportExcel.js → esm/components/promptField/PromptFieldSend.js} +30 -38
  157. package/esm/components/promptField/index.d.ts +4 -0
  158. package/esm/components/promptField/index.js +4 -0
  159. package/esm/components/resizablePanel/ResizablePanel.d.ts +10 -0
  160. package/esm/components/resizablePanel/ResizablePanel.js +52 -0
  161. package/esm/components/resizablePanel/ResizablePanelContext.d.ts +7 -0
  162. package/esm/components/resizablePanel/ResizablePanelContext.js +9 -0
  163. package/esm/components/resizablePanel/ResizablePanelHandle.d.ts +4 -0
  164. package/esm/components/resizablePanel/ResizablePanelHandle.js +108 -0
  165. package/esm/components/resizablePanel/index.d.ts +3 -0
  166. package/esm/components/resizablePanel/index.js +3 -0
  167. package/esm/components/sidebar/Sidebar.d.ts +4 -0
  168. package/esm/components/sidebar/Sidebar.js +47 -0
  169. package/esm/components/sidebar/SidebarHeader.d.ts +4 -0
  170. package/esm/components/sidebar/SidebarHeader.js +44 -0
  171. package/esm/components/sidebar/index.d.ts +2 -0
  172. package/esm/components/sidebar/index.js +2 -0
  173. package/esm/constants/dataGridPremiumDefaultSlotsComponents.js +3 -0
  174. package/esm/hooks/features/aggregation/gridAggregationFunctions.js +13 -0
  175. package/esm/hooks/features/aggregation/gridAggregationSelectors.d.ts +10 -1
  176. package/esm/hooks/features/aggregation/gridAggregationSelectors.js +28 -1
  177. package/esm/hooks/features/aggregation/gridAggregationUtils.d.ts +1 -1
  178. package/esm/hooks/features/aggregation/index.d.ts +1 -1
  179. package/esm/hooks/features/aggregation/index.js +1 -1
  180. package/esm/hooks/features/aggregation/useGridAggregation.js +3 -7
  181. package/esm/hooks/features/aggregation/useGridAggregationPreProcessors.js +2 -8
  182. package/esm/hooks/features/aggregation/wrapColumnWithAggregation.d.ts +5 -25
  183. package/esm/hooks/features/aggregation/wrapColumnWithAggregation.js +23 -10
  184. package/esm/hooks/features/aiAssistant/api.d.ts +12 -0
  185. package/esm/hooks/features/aiAssistant/api.js +31 -0
  186. package/esm/hooks/features/aiAssistant/gridAiAssistantInterfaces.d.ts +82 -0
  187. package/esm/hooks/features/aiAssistant/gridAiAssistantSelectors.d.ts +5 -0
  188. package/esm/hooks/features/aiAssistant/gridAiAssistantSelectors.js +5 -0
  189. package/esm/hooks/features/aiAssistant/index.d.ts +2 -0
  190. package/esm/hooks/features/aiAssistant/useGridAiAssistant.d.ts +6 -0
  191. package/esm/hooks/features/aiAssistant/useGridAiAssistant.js +293 -0
  192. package/esm/hooks/features/dataSource/useGridDataSourcePremium.js +4 -1
  193. package/esm/hooks/features/index.d.ts +1 -1
  194. package/esm/hooks/features/index.js +1 -1
  195. package/esm/hooks/features/pivoting/gridPivotingInterfaces.d.ts +69 -0
  196. package/esm/hooks/features/pivoting/gridPivotingSelectors.d.ts +4 -0
  197. package/esm/hooks/features/pivoting/gridPivotingSelectors.js +5 -0
  198. package/esm/hooks/features/pivoting/useGridPivoting.d.ts +7 -0
  199. package/esm/hooks/features/pivoting/useGridPivoting.js +339 -0
  200. package/esm/hooks/features/pivoting/utils.d.ts +21 -0
  201. package/esm/hooks/features/pivoting/utils.js +259 -0
  202. package/esm/hooks/features/rowGrouping/useGridDataSourceRowGroupingPreProcessors.js +1 -4
  203. package/esm/hooks/features/rowGrouping/useGridRowGrouping.js +0 -1
  204. package/esm/hooks/utils/useResize.d.ts +9 -0
  205. package/esm/hooks/utils/useResize.js +52 -0
  206. package/esm/index.d.ts +4 -1
  207. package/esm/index.js +4 -2
  208. package/esm/material/icons.d.ts +15 -15
  209. package/esm/material/icons.js +32 -5
  210. package/esm/material/index.d.ts +31 -5
  211. package/esm/material/index.js +31 -3
  212. package/esm/models/dataGridPremiumProps.d.ts +96 -2
  213. package/esm/models/gridApiPremium.d.ts +4 -2
  214. package/esm/models/gridPremiumIconSlotsComponent.d.ts +141 -8
  215. package/esm/models/gridPremiumSlotsComponent.d.ts +13 -1
  216. package/esm/models/gridStatePremium.d.ts +6 -0
  217. package/esm/package.json +1 -1
  218. package/esm/setupExcelExportWebWorker/index.d.ts +1 -0
  219. package/esm/setupExcelExportWebWorker/index.js +1 -0
  220. package/esm/typeOverloads/modules.d.ts +32 -1
  221. package/esm/utils/speechRecognition.d.ts +2 -0
  222. package/esm/utils/speechRecognition.js +2 -0
  223. package/hooks/features/aggregation/gridAggregationFunctions.js +13 -0
  224. package/hooks/features/aggregation/gridAggregationSelectors.d.ts +10 -1
  225. package/hooks/features/aggregation/gridAggregationSelectors.js +29 -2
  226. package/hooks/features/aggregation/gridAggregationUtils.d.ts +1 -1
  227. package/hooks/features/aggregation/index.d.ts +1 -1
  228. package/hooks/features/aggregation/index.js +21 -11
  229. package/hooks/features/aggregation/useGridAggregation.js +3 -7
  230. package/hooks/features/aggregation/useGridAggregationPreProcessors.js +2 -8
  231. package/hooks/features/aggregation/wrapColumnWithAggregation.d.ts +5 -25
  232. package/hooks/features/aggregation/wrapColumnWithAggregation.js +24 -11
  233. package/hooks/features/aiAssistant/api.d.ts +12 -0
  234. package/hooks/features/aiAssistant/api.js +37 -0
  235. package/hooks/features/aiAssistant/gridAiAssistantInterfaces.d.ts +82 -0
  236. package/hooks/features/aiAssistant/gridAiAssistantSelectors.d.ts +5 -0
  237. package/hooks/features/aiAssistant/gridAiAssistantSelectors.js +11 -0
  238. package/hooks/features/aiAssistant/index.d.ts +2 -0
  239. package/hooks/features/aiAssistant/useGridAiAssistant.d.ts +6 -0
  240. package/hooks/features/aiAssistant/useGridAiAssistant.js +303 -0
  241. package/hooks/features/dataSource/useGridDataSourcePremium.js +3 -0
  242. package/hooks/features/index.d.ts +1 -1
  243. package/hooks/features/index.js +4 -4
  244. package/hooks/features/pivoting/gridPivotingInterfaces.d.ts +69 -0
  245. package/hooks/features/pivoting/gridPivotingInterfaces.js +5 -0
  246. package/hooks/features/pivoting/gridPivotingSelectors.d.ts +4 -0
  247. package/hooks/features/pivoting/gridPivotingSelectors.js +30 -0
  248. package/hooks/features/pivoting/useGridPivoting.d.ts +7 -0
  249. package/hooks/features/pivoting/useGridPivoting.js +349 -0
  250. package/hooks/features/pivoting/utils.d.ts +21 -0
  251. package/hooks/features/pivoting/utils.js +270 -0
  252. package/hooks/features/rowGrouping/useGridDataSourceRowGroupingPreProcessors.js +1 -4
  253. package/hooks/features/rowGrouping/useGridRowGrouping.js +0 -1
  254. package/hooks/utils/useResize.d.ts +9 -0
  255. package/hooks/utils/useResize.js +60 -0
  256. package/index.d.ts +4 -1
  257. package/index.js +19 -3
  258. package/material/icons.d.ts +15 -15
  259. package/material/icons.js +36 -9
  260. package/material/index.d.ts +31 -5
  261. package/material/index.js +30 -2
  262. package/models/dataGridPremiumProps.d.ts +96 -2
  263. package/models/gridApiPremium.d.ts +4 -2
  264. package/models/gridPremiumIconSlotsComponent.d.ts +141 -8
  265. package/models/gridPremiumSlotsComponent.d.ts +13 -1
  266. package/models/gridStatePremium.d.ts +6 -0
  267. package/package.json +9 -15
  268. package/setupExcelExportWebWorker/index.d.ts +1 -0
  269. package/{setupExcelExportWebWorker.js → setupExcelExportWebWorker/index.js} +1 -1
  270. package/typeOverloads/modules.d.ts +32 -1
  271. package/utils/speechRecognition.d.ts +2 -0
  272. package/utils/speechRecognition.js +8 -0
  273. package/components/promptControl/GridToolbarPromptControl.d.ts +0 -26
  274. package/components/promptControl/GridToolbarPromptControl.js +0 -222
  275. package/components/promptControl/RecordButton.d.ts +0 -16
  276. package/components/promptControl/RecordButton.js +0 -119
  277. package/components/promptControl/index.d.ts +0 -1
  278. package/components/promptControl/index.js +0 -12
  279. package/esm/components/promptControl/GridToolbarPromptControl.d.ts +0 -26
  280. package/esm/components/promptControl/GridToolbarPromptControl.js +0 -215
  281. package/esm/components/promptControl/RecordButton.d.ts +0 -16
  282. package/esm/components/promptControl/RecordButton.js +0 -111
  283. package/esm/components/promptControl/index.d.ts +0 -1
  284. package/esm/components/promptControl/index.js +0 -1
  285. package/esm/hooks/features/promptControl/api.d.ts +0 -2
  286. package/esm/hooks/features/promptControl/api.js +0 -22
  287. package/esm/hooks/features/promptControl/index.d.ts +0 -2
  288. package/esm/hooks/features/promptControl/types.d.ts +0 -25
  289. package/esm/setupExcelExportWebWorker.d.ts +0 -1
  290. package/esm/setupExcelExportWebWorker.js +0 -1
  291. package/esm/utils/releaseInfo.d.ts +0 -1
  292. package/esm/utils/releaseInfo.js +0 -13
  293. package/hooks/features/promptControl/api.d.ts +0 -2
  294. package/hooks/features/promptControl/api.js +0 -28
  295. package/hooks/features/promptControl/index.d.ts +0 -2
  296. package/hooks/features/promptControl/types.d.ts +0 -25
  297. package/modern/DataGridPremium/DataGrid.d.ts +0 -8
  298. package/modern/DataGridPremium/DataGrid.js +0 -19
  299. package/modern/DataGridPremium/DataGridPremium.d.ts +0 -16
  300. package/modern/DataGridPremium/DataGridPremium.js +0 -1127
  301. package/modern/DataGridPremium/index.d.ts +0 -3
  302. package/modern/DataGridPremium/index.js +0 -3
  303. package/modern/DataGridPremium/useDataGridPremiumComponent.d.ts +0 -4
  304. package/modern/DataGridPremium/useDataGridPremiumComponent.js +0 -108
  305. package/modern/DataGridPremium/useDataGridPremiumProps.d.ts +0 -6
  306. package/modern/DataGridPremium/useDataGridPremiumProps.js +0 -54
  307. package/modern/components/GridAggregationHeader.d.ts +0 -7
  308. package/modern/components/GridAggregationHeader.js +0 -89
  309. package/modern/components/GridAggregationRowOverlay.d.ts +0 -3
  310. package/modern/components/GridAggregationRowOverlay.js +0 -37
  311. package/modern/components/GridBottomContainer.d.ts +0 -3
  312. package/modern/components/GridBottomContainer.js +0 -43
  313. package/modern/components/GridColumnMenuAggregationItem.d.ts +0 -7
  314. package/modern/components/GridColumnMenuAggregationItem.js +0 -124
  315. package/modern/components/GridColumnMenuRowGroupItem.d.ts +0 -3
  316. package/modern/components/GridColumnMenuRowGroupItem.js +0 -42
  317. package/modern/components/GridColumnMenuRowUngroupItem.d.ts +0 -3
  318. package/modern/components/GridColumnMenuRowUngroupItem.js +0 -44
  319. package/modern/components/GridDataSourceGroupingCriteriaCell.d.ts +0 -7
  320. package/modern/components/GridDataSourceGroupingCriteriaCell.js +0 -121
  321. package/modern/components/GridExcelExportMenuItem.d.ts +0 -9
  322. package/modern/components/GridExcelExportMenuItem.js +0 -48
  323. package/modern/components/GridFooterCell.d.ts +0 -9
  324. package/modern/components/GridFooterCell.js +0 -43
  325. package/modern/components/GridGroupingColumnFooterCell.d.ts +0 -4
  326. package/modern/components/GridGroupingColumnFooterCell.js +0 -23
  327. package/modern/components/GridGroupingColumnLeafCell.d.ts +0 -4
  328. package/modern/components/GridGroupingColumnLeafCell.js +0 -17
  329. package/modern/components/GridGroupingCriteriaCell.d.ts +0 -7
  330. package/modern/components/GridGroupingCriteriaCell.js +0 -87
  331. package/modern/components/GridPremiumColumnMenu.d.ts +0 -33
  332. package/modern/components/GridPremiumColumnMenu.js +0 -37
  333. package/modern/components/GridPremiumToolbar.d.ts +0 -3
  334. package/modern/components/GridPremiumToolbar.js +0 -23
  335. package/modern/components/export/ExportExcel.d.ts +0 -29
  336. package/modern/components/export/index.d.ts +0 -1
  337. package/modern/components/export/index.js +0 -1
  338. package/modern/components/index.d.ts +0 -6
  339. package/modern/components/index.js +0 -6
  340. package/modern/components/promptControl/GridToolbarPromptControl.d.ts +0 -26
  341. package/modern/components/promptControl/GridToolbarPromptControl.js +0 -215
  342. package/modern/components/promptControl/RecordButton.d.ts +0 -16
  343. package/modern/components/promptControl/RecordButton.js +0 -111
  344. package/modern/components/promptControl/index.d.ts +0 -1
  345. package/modern/components/promptControl/index.js +0 -1
  346. package/modern/components/reexports.d.ts +0 -1
  347. package/modern/components/reexports.js +0 -1
  348. package/modern/constants/dataGridPremiumDefaultSlotsComponents.d.ts +0 -2
  349. package/modern/constants/dataGridPremiumDefaultSlotsComponents.js +0 -11
  350. package/modern/hooks/features/aggregation/createAggregationLookup.d.ts +0 -17
  351. package/modern/hooks/features/aggregation/createAggregationLookup.js +0 -111
  352. package/modern/hooks/features/aggregation/gridAggregationFunctions.d.ts +0 -8
  353. package/modern/hooks/features/aggregation/gridAggregationFunctions.js +0 -93
  354. package/modern/hooks/features/aggregation/gridAggregationInterfaces.d.ts +0 -129
  355. package/modern/hooks/features/aggregation/gridAggregationSelectors.d.ts +0 -13
  356. package/modern/hooks/features/aggregation/gridAggregationSelectors.js +0 -15
  357. package/modern/hooks/features/aggregation/gridAggregationUtils.d.ts +0 -62
  358. package/modern/hooks/features/aggregation/gridAggregationUtils.js +0 -180
  359. package/modern/hooks/features/aggregation/index.d.ts +0 -4
  360. package/modern/hooks/features/aggregation/index.js +0 -3
  361. package/modern/hooks/features/aggregation/useGridAggregation.d.ts +0 -6
  362. package/modern/hooks/features/aggregation/useGridAggregation.js +0 -103
  363. package/modern/hooks/features/aggregation/useGridAggregationPreProcessors.d.ts +0 -4
  364. package/modern/hooks/features/aggregation/useGridAggregationPreProcessors.js +0 -96
  365. package/modern/hooks/features/aggregation/wrapColumnWithAggregation.d.ts +0 -81
  366. package/modern/hooks/features/aggregation/wrapColumnWithAggregation.js +0 -215
  367. package/modern/hooks/features/cellSelection/gridCellSelectionInterfaces.d.ts +0 -40
  368. package/modern/hooks/features/cellSelection/gridCellSelectionInterfaces.js +0 -1
  369. package/modern/hooks/features/cellSelection/gridCellSelectionSelector.d.ts +0 -2
  370. package/modern/hooks/features/cellSelection/gridCellSelectionSelector.js +0 -2
  371. package/modern/hooks/features/cellSelection/index.d.ts +0 -1
  372. package/modern/hooks/features/cellSelection/index.js +0 -1
  373. package/modern/hooks/features/cellSelection/useGridCellSelection.d.ts +0 -6
  374. package/modern/hooks/features/cellSelection/useGridCellSelection.js +0 -486
  375. package/modern/hooks/features/clipboard/useGridClipboardImport.d.ts +0 -4
  376. package/modern/hooks/features/clipboard/useGridClipboardImport.js +0 -335
  377. package/modern/hooks/features/dataSource/models.d.ts +0 -54
  378. package/modern/hooks/features/dataSource/models.js +0 -1
  379. package/modern/hooks/features/dataSource/useGridDataSourcePremium.d.ts +0 -4
  380. package/modern/hooks/features/dataSource/useGridDataSourcePremium.js +0 -59
  381. package/modern/hooks/features/export/gridExcelExportInterface.d.ts +0 -71
  382. package/modern/hooks/features/export/gridExcelExportInterface.js +0 -1
  383. package/modern/hooks/features/export/index.d.ts +0 -2
  384. package/modern/hooks/features/export/index.js +0 -2
  385. package/modern/hooks/features/export/serializer/excelSerializer.d.ts +0 -40
  386. package/modern/hooks/features/export/serializer/excelSerializer.js +0 -269
  387. package/modern/hooks/features/export/serializer/setupExcelExportWebWorker.d.ts +0 -2
  388. package/modern/hooks/features/export/serializer/setupExcelExportWebWorker.js +0 -53
  389. package/modern/hooks/features/export/serializer/utils.d.ts +0 -36
  390. package/modern/hooks/features/export/serializer/utils.js +0 -93
  391. package/modern/hooks/features/export/useGridExcelExport.d.ts +0 -11
  392. package/modern/hooks/features/export/useGridExcelExport.js +0 -139
  393. package/modern/hooks/features/index.d.ts +0 -5
  394. package/modern/hooks/features/index.js +0 -6
  395. package/modern/hooks/features/promptControl/api.d.ts +0 -2
  396. package/modern/hooks/features/promptControl/api.js +0 -22
  397. package/modern/hooks/features/promptControl/index.d.ts +0 -2
  398. package/modern/hooks/features/promptControl/index.js +0 -1
  399. package/modern/hooks/features/promptControl/types.d.ts +0 -25
  400. package/modern/hooks/features/promptControl/types.js +0 -1
  401. package/modern/hooks/features/rowGrouping/createGroupingColDef.d.ts +0 -57
  402. package/modern/hooks/features/rowGrouping/createGroupingColDef.js +0 -272
  403. package/modern/hooks/features/rowGrouping/gridRowGroupingInterfaces.d.ts +0 -44
  404. package/modern/hooks/features/rowGrouping/gridRowGroupingInterfaces.js +0 -1
  405. package/modern/hooks/features/rowGrouping/gridRowGroupingSelector.d.ts +0 -3
  406. package/modern/hooks/features/rowGrouping/gridRowGroupingSelector.js +0 -5
  407. package/modern/hooks/features/rowGrouping/gridRowGroupingUtils.d.ts +0 -54
  408. package/modern/hooks/features/rowGrouping/gridRowGroupingUtils.js +0 -173
  409. package/modern/hooks/features/rowGrouping/index.d.ts +0 -3
  410. package/modern/hooks/features/rowGrouping/index.js +0 -3
  411. package/modern/hooks/features/rowGrouping/useGridDataSourceRowGroupingPreProcessors.d.ts +0 -4
  412. package/modern/hooks/features/rowGrouping/useGridDataSourceRowGroupingPreProcessors.js +0 -73
  413. package/modern/hooks/features/rowGrouping/useGridRowGrouping.d.ts +0 -11
  414. package/modern/hooks/features/rowGrouping/useGridRowGrouping.js +0 -182
  415. package/modern/hooks/features/rowGrouping/useGridRowGroupingPreProcessors.d.ts +0 -4
  416. package/modern/hooks/features/rowGrouping/useGridRowGroupingPreProcessors.js +0 -157
  417. package/modern/hooks/features/rows/index.d.ts +0 -1
  418. package/modern/hooks/features/rows/index.js +0 -1
  419. package/modern/hooks/features/rows/useGridRowAriaAttributes.d.ts +0 -1
  420. package/modern/hooks/features/rows/useGridRowAriaAttributes.js +0 -8
  421. package/modern/hooks/index.d.ts +0 -2
  422. package/modern/hooks/index.js +0 -3
  423. package/modern/hooks/utils/index.d.ts +0 -1
  424. package/modern/hooks/utils/index.js +0 -1
  425. package/modern/hooks/utils/useGridApiContext.d.ts +0 -4
  426. package/modern/hooks/utils/useGridApiContext.js +0 -2
  427. package/modern/hooks/utils/useGridApiRef.d.ts +0 -4
  428. package/modern/hooks/utils/useGridApiRef.js +0 -2
  429. package/modern/hooks/utils/useGridAriaAttributes.d.ts +0 -2
  430. package/modern/hooks/utils/useGridAriaAttributes.js +0 -13
  431. package/modern/hooks/utils/useGridPrivateApiContext.d.ts +0 -2
  432. package/modern/hooks/utils/useGridPrivateApiContext.js +0 -2
  433. package/modern/hooks/utils/useGridRootProps.d.ts +0 -2
  434. package/modern/hooks/utils/useGridRootProps.js +0 -2
  435. package/modern/hooks/utils/useKeepGroupedColumnsHidden.d.ts +0 -12
  436. package/modern/hooks/utils/useKeepGroupedColumnsHidden.js +0 -43
  437. package/modern/index.d.ts +0 -23
  438. package/modern/index.js +0 -26
  439. package/modern/locales.d.ts +0 -1
  440. package/modern/locales.js +0 -1
  441. package/modern/material/icons.d.ts +0 -15
  442. package/modern/material/icons.js +0 -20
  443. package/modern/material/index.d.ts +0 -8
  444. package/modern/material/index.js +0 -11
  445. package/modern/models/dataGridPremiumProps.d.ts +0 -162
  446. package/modern/models/dataGridPremiumProps.js +0 -1
  447. package/modern/models/gridApiPremium.d.ts +0 -14
  448. package/modern/models/gridApiPremium.js +0 -1
  449. package/modern/models/gridGroupingValueGetter.d.ts +0 -4
  450. package/modern/models/gridGroupingValueGetter.js +0 -1
  451. package/modern/models/gridPastedValueParser.d.ts +0 -4
  452. package/modern/models/gridPastedValueParser.js +0 -1
  453. package/modern/models/gridPremiumIconSlotsComponent.d.ts +0 -28
  454. package/modern/models/gridPremiumIconSlotsComponent.js +0 -1
  455. package/modern/models/gridPremiumSlotsComponent.d.ts +0 -7
  456. package/modern/models/gridPremiumSlotsComponent.js +0 -1
  457. package/modern/models/gridStatePremium.d.ts +0 -18
  458. package/modern/models/gridStatePremium.js +0 -1
  459. package/modern/models/index.d.ts +0 -4
  460. package/modern/models/index.js +0 -4
  461. package/modern/package.json +0 -1
  462. package/modern/setupExcelExportWebWorker.d.ts +0 -1
  463. package/modern/setupExcelExportWebWorker.js +0 -1
  464. package/modern/themeAugmentation/index.d.ts +0 -2
  465. package/modern/themeAugmentation/index.js +0 -4
  466. package/modern/themeAugmentation/overrides.d.ts +0 -7
  467. package/modern/themeAugmentation/overrides.js +0 -1
  468. package/modern/themeAugmentation/props.d.ts +0 -15
  469. package/modern/themeAugmentation/props.js +0 -1
  470. package/modern/typeOverloads/index.d.ts +0 -2
  471. package/modern/typeOverloads/index.js +0 -2
  472. package/modern/typeOverloads/modules.d.ts +0 -97
  473. package/modern/typeOverloads/modules.js +0 -1
  474. package/modern/typeOverloads/reexports.d.ts +0 -17
  475. package/modern/typeOverloads/reexports.js +0 -15
  476. package/modern/utils/releaseInfo.d.ts +0 -1
  477. package/modern/utils/releaseInfo.js +0 -13
  478. package/setupExcelExportWebWorker.d.ts +0 -1
  479. package/tsconfig.build.tsbuildinfo +0 -1
  480. package/utils/releaseInfo.d.ts +0 -1
  481. package/utils/releaseInfo.js +0 -20
  482. /package/esm/hooks/features/{promptControl/types.js → aiAssistant/gridAiAssistantInterfaces.js} +0 -0
  483. /package/esm/hooks/features/{promptControl → aiAssistant}/index.js +0 -0
  484. /package/{modern/hooks/features/aggregation/gridAggregationInterfaces.js → esm/hooks/features/pivoting/gridPivotingInterfaces.js} +0 -0
  485. /package/hooks/features/{promptControl/types.js → aiAssistant/gridAiAssistantInterfaces.js} +0 -0
  486. /package/hooks/features/{promptControl → aiAssistant}/index.js +0 -0
@@ -0,0 +1,339 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import * as React from 'react';
3
+ import { gridDataRowIdsSelector, gridRowIdSelector, gridRowsLoadingSelector, gridRowsLookupSelector } from '@mui/x-data-grid-pro';
4
+ import useEnhancedEffect from '@mui/utils/useEnhancedEffect';
5
+ import useOnMount from '@mui/utils/useOnMount';
6
+ import { useGridApiMethod, useGridRegisterPipeProcessor, useGridSelector, gridPivotInitialColumnsSelector } from '@mui/x-data-grid-pro/internals';
7
+ import { gridPivotModelSelector, gridPivotActiveSelector, gridPivotPanelOpenSelector } from "./gridPivotingSelectors.js";
8
+ import { getInitialColumns, getPivotedData, isPivotingAvailable as isPivotingAvailableFn } from "./utils.js";
9
+ import { getAvailableAggregationFunctions } from "../aggregation/gridAggregationUtils.js";
10
+ const emptyPivotModel = {
11
+ rows: [],
12
+ columns: [],
13
+ values: []
14
+ };
15
+ export const pivotingStateInitializer = (state, props, apiRef) => {
16
+ if (!isPivotingAvailableFn(props)) {
17
+ return _extends({}, state, {
18
+ pivoting: {
19
+ active: false,
20
+ model: emptyPivotModel,
21
+ panelOpen: false
22
+ }
23
+ });
24
+ }
25
+ const initialColumns = getInitialColumns(props.columns ?? [], props.getPivotDerivedColumns, apiRef.current.getLocaleText);
26
+ return _extends({}, state, {
27
+ pivoting: {
28
+ active: props.pivotActive ?? props.initialState?.pivoting?.enabled ?? false,
29
+ model: props.pivotModel ?? props.initialState?.pivoting?.model ?? emptyPivotModel,
30
+ panelOpen: props.pivotPanelOpen ?? props.initialState?.pivoting?.panelOpen ?? false,
31
+ initialColumns
32
+ }
33
+ });
34
+ };
35
+ export const useGridPivoting = (apiRef, props, originalColumnsProp, originalRowsProp) => {
36
+ const isPivotActive = useGridSelector(apiRef, gridPivotActiveSelector);
37
+ const exportedStateRef = React.useRef(null);
38
+ const nonPivotDataRef = React.useRef(undefined);
39
+ const isPivotingAvailable = isPivotingAvailableFn(props);
40
+ apiRef.current.registerControlState({
41
+ stateId: 'pivotModel',
42
+ propModel: props.pivotModel,
43
+ propOnChange: props.onPivotModelChange,
44
+ stateSelector: gridPivotModelSelector,
45
+ changeEvent: 'pivotModelChange'
46
+ });
47
+ apiRef.current.registerControlState({
48
+ stateId: 'pivotMode',
49
+ propModel: props.pivotActive,
50
+ propOnChange: props.onPivotActiveChange,
51
+ stateSelector: gridPivotActiveSelector,
52
+ changeEvent: 'pivotModeChange'
53
+ });
54
+ apiRef.current.registerControlState({
55
+ stateId: 'pivotPanelOpen',
56
+ propModel: props.pivotPanelOpen,
57
+ propOnChange: props.onPivotPanelOpenChange,
58
+ stateSelector: gridPivotPanelOpenSelector,
59
+ changeEvent: 'pivotPanelOpenChange'
60
+ });
61
+ const getInitialData = React.useCallback(() => {
62
+ if (!exportedStateRef.current) {
63
+ exportedStateRef.current = apiRef.current.exportState();
64
+ }
65
+ const rowIds = gridDataRowIdsSelector(apiRef);
66
+ const rowsLookup = gridRowsLookupSelector(apiRef);
67
+ const rows = rowIds.map(id => rowsLookup[id]);
68
+ const initialColumns = getInitialColumns(originalColumnsProp, props.getPivotDerivedColumns, apiRef.current.getLocaleText);
69
+ return {
70
+ rows,
71
+ columns: initialColumns
72
+ };
73
+ }, [apiRef, props.getPivotDerivedColumns, originalColumnsProp]);
74
+ const computePivotingState = React.useCallback(({
75
+ active,
76
+ model: pivotModel
77
+ }) => {
78
+ if (active && pivotModel) {
79
+ const {
80
+ rows,
81
+ columns
82
+ } = nonPivotDataRef.current || {
83
+ rows: [],
84
+ columns: new Map()
85
+ };
86
+ return {
87
+ initialColumns: columns,
88
+ // TODO: fix getPivotedData called twice in controlled mode
89
+ propsOverrides: getPivotedData({
90
+ rows,
91
+ columns,
92
+ pivotModel,
93
+ apiRef: apiRef,
94
+ pivotingColDef: props.pivotingColDef
95
+ })
96
+ };
97
+ }
98
+ return undefined;
99
+ }, [apiRef, props.pivotingColDef]);
100
+ useOnMount(() => {
101
+ if (!isPivotingAvailable || !isPivotActive) {
102
+ return undefined;
103
+ }
104
+ const isLoading = gridRowsLoadingSelector(apiRef) ?? false;
105
+ const runPivoting = () => {
106
+ nonPivotDataRef.current = getInitialData();
107
+ apiRef.current.setState(state => {
108
+ const pivotingState = _extends({}, state.pivoting, computePivotingState(state.pivoting));
109
+ return _extends({}, state, {
110
+ pivoting: pivotingState
111
+ });
112
+ });
113
+ };
114
+ if (!isLoading) {
115
+ runPivoting();
116
+ return undefined;
117
+ }
118
+ const unsubscribe = apiRef.current?.store.subscribe(() => {
119
+ const loading = gridRowsLoadingSelector(apiRef);
120
+ if (loading === false) {
121
+ unsubscribe();
122
+ runPivoting();
123
+ }
124
+ });
125
+ return unsubscribe;
126
+ });
127
+ useEnhancedEffect(() => {
128
+ if (!isPivotingAvailable || !isPivotActive) {
129
+ if (exportedStateRef.current) {
130
+ apiRef.current.restoreState(exportedStateRef.current);
131
+ exportedStateRef.current = null;
132
+ }
133
+ if (nonPivotDataRef.current) {
134
+ apiRef.current.setRows(nonPivotDataRef.current.rows);
135
+ nonPivotDataRef.current = undefined;
136
+ }
137
+ }
138
+ }, [isPivotActive, apiRef, isPivotingAvailable]);
139
+ const setPivotModel = React.useCallback(callback => {
140
+ if (!isPivotingAvailable) {
141
+ return;
142
+ }
143
+ apiRef.current.setState(state => {
144
+ const newPivotModel = typeof callback === 'function' ? callback(state.pivoting?.model) : callback;
145
+ if (state.pivoting?.model === newPivotModel) {
146
+ return state;
147
+ }
148
+ const newPivotingState = _extends({}, state.pivoting, computePivotingState(_extends({}, state.pivoting, {
149
+ model: newPivotModel
150
+ })), {
151
+ model: newPivotModel
152
+ });
153
+ return _extends({}, state, {
154
+ pivoting: newPivotingState
155
+ });
156
+ });
157
+ }, [apiRef, computePivotingState, isPivotingAvailable]);
158
+ const updatePivotModel = React.useCallback(({
159
+ field,
160
+ targetSection,
161
+ originSection,
162
+ targetField,
163
+ targetFieldPosition
164
+ }) => {
165
+ if (field === targetField) {
166
+ return;
167
+ }
168
+ apiRef.current.setPivotModel(prev => {
169
+ const newModel = _extends({}, prev);
170
+ const isSameSection = targetSection === originSection;
171
+ const hidden = originSection === null ? false : prev[originSection].find(item => item.field === field)?.hidden ?? false;
172
+ if (targetSection) {
173
+ const newSectionArray = [...prev[targetSection]];
174
+ let toIndex = newSectionArray.length;
175
+ if (targetField) {
176
+ const fromIndex = newSectionArray.findIndex(item => item.field === field);
177
+ if (fromIndex > -1) {
178
+ newSectionArray.splice(fromIndex, 1);
179
+ }
180
+ toIndex = newSectionArray.findIndex(item => item.field === targetField);
181
+ if (targetFieldPosition === 'bottom') {
182
+ toIndex += 1;
183
+ }
184
+ }
185
+ if (targetSection === 'values') {
186
+ const initialColumns = gridPivotInitialColumnsSelector(apiRef);
187
+ const aggFunc = isSameSection ? prev.values.find(item => item.field === field)?.aggFunc : getAvailableAggregationFunctions({
188
+ aggregationFunctions: props.aggregationFunctions,
189
+ colDef: initialColumns.get(field),
190
+ isDataSource: false
191
+ })[0];
192
+ newSectionArray.splice(toIndex, 0, {
193
+ field,
194
+ aggFunc,
195
+ hidden
196
+ });
197
+ newModel.values = newSectionArray;
198
+ } else if (targetSection === 'columns') {
199
+ const sort = isSameSection ? prev.columns.find(item => item.field === field)?.sort : undefined;
200
+ newSectionArray.splice(toIndex, 0, {
201
+ field,
202
+ sort,
203
+ hidden
204
+ });
205
+ newModel.columns = newSectionArray;
206
+ } else if (targetSection === 'rows') {
207
+ newSectionArray.splice(toIndex, 0, {
208
+ field,
209
+ hidden
210
+ });
211
+ newModel.rows = newSectionArray;
212
+ }
213
+ }
214
+ if (!isSameSection && originSection) {
215
+ newModel[originSection] = prev[originSection].filter(f => f.field !== field);
216
+ }
217
+ return newModel;
218
+ });
219
+ }, [apiRef, props.aggregationFunctions]);
220
+ const setPivotActive = React.useCallback(callback => {
221
+ if (!isPivotingAvailable) {
222
+ return;
223
+ }
224
+ apiRef.current.selectRows([], false, true);
225
+ apiRef.current.setState(state => {
226
+ const newPivotMode = typeof callback === 'function' ? callback(state.pivoting?.active) : callback;
227
+ if (state.pivoting?.active === newPivotMode) {
228
+ return state;
229
+ }
230
+ if (newPivotMode) {
231
+ nonPivotDataRef.current = getInitialData();
232
+ }
233
+ const newPivotingState = _extends({}, state.pivoting, computePivotingState(_extends({}, state.pivoting, {
234
+ active: newPivotMode
235
+ })), {
236
+ active: newPivotMode
237
+ });
238
+ const newState = _extends({}, state, {
239
+ pivoting: newPivotingState
240
+ });
241
+ return newState;
242
+ });
243
+ }, [apiRef, computePivotingState, getInitialData, isPivotingAvailable]);
244
+ const setPivotPanelOpen = React.useCallback(callback => {
245
+ if (!isPivotingAvailable) {
246
+ return;
247
+ }
248
+ apiRef.current.setState(state => _extends({}, state, {
249
+ pivoting: _extends({}, state.pivoting, {
250
+ panelOpen: typeof callback === 'function' ? callback(state.pivoting?.panelOpen) : callback
251
+ })
252
+ }));
253
+ }, [apiRef, isPivotingAvailable]);
254
+ const addColumnMenuButton = React.useCallback(menuItems => {
255
+ if (isPivotingAvailable) {
256
+ return [...menuItems, 'columnMenuPivotItem'];
257
+ }
258
+ return menuItems;
259
+ }, [isPivotingAvailable]);
260
+ useGridRegisterPipeProcessor(apiRef, 'columnMenu', addColumnMenuButton);
261
+ const updateNonPivotColumns = React.useCallback((columns, keepPreviousColumns = true) => {
262
+ if (!nonPivotDataRef.current || !isPivotingAvailable) {
263
+ return;
264
+ }
265
+ if (keepPreviousColumns) {
266
+ getInitialColumns(columns, props.getPivotDerivedColumns, apiRef.current.getLocaleText).forEach(col => {
267
+ nonPivotDataRef.current.columns.set(col.field, col);
268
+ });
269
+ } else {
270
+ nonPivotDataRef.current.columns = getInitialColumns(columns, props.getPivotDerivedColumns, apiRef.current.getLocaleText);
271
+ }
272
+ apiRef.current.setState(state => {
273
+ return _extends({}, state, {
274
+ pivoting: _extends({}, state.pivoting, computePivotingState(state.pivoting), {
275
+ initialColumns: nonPivotDataRef.current?.columns
276
+ })
277
+ });
278
+ });
279
+ }, [isPivotingAvailable, apiRef, props.getPivotDerivedColumns, computePivotingState]);
280
+ const updateNonPivotRows = React.useCallback((rows, keepPreviousRows = true) => {
281
+ if (!nonPivotDataRef.current || !rows || rows.length === 0) {
282
+ return;
283
+ }
284
+ if (keepPreviousRows) {
285
+ const rowsMap = new Map();
286
+ nonPivotDataRef.current.rows.forEach(row => {
287
+ rowsMap.set(gridRowIdSelector(apiRef, row), row);
288
+ });
289
+ rows.forEach(row => {
290
+ const rowId = gridRowIdSelector(apiRef, row);
291
+ // eslint-disable-next-line no-underscore-dangle
292
+ if (row._action === 'delete') {
293
+ rowsMap.delete(rowId);
294
+ } else {
295
+ rowsMap.set(rowId, row);
296
+ }
297
+ });
298
+ nonPivotDataRef.current.rows = Array.from(rowsMap.values());
299
+ } else {
300
+ nonPivotDataRef.current.rows = rows;
301
+ }
302
+ apiRef.current.setState(state => {
303
+ return _extends({}, state, {
304
+ pivoting: _extends({}, state.pivoting, computePivotingState(state.pivoting))
305
+ });
306
+ });
307
+ }, [apiRef, computePivotingState]);
308
+ useGridApiMethod(apiRef, {
309
+ setPivotModel,
310
+ setPivotActive,
311
+ setPivotPanelOpen
312
+ }, 'public');
313
+ useGridApiMethod(apiRef, {
314
+ updatePivotModel,
315
+ updateNonPivotColumns,
316
+ updateNonPivotRows
317
+ }, 'private');
318
+ useEnhancedEffect(() => {
319
+ apiRef.current.updateNonPivotColumns(originalColumnsProp, false);
320
+ }, [originalColumnsProp, apiRef]);
321
+ useEnhancedEffect(() => {
322
+ apiRef.current.updateNonPivotRows(originalRowsProp, false);
323
+ }, [originalRowsProp, apiRef]);
324
+ useEnhancedEffect(() => {
325
+ if (props.pivotModel !== undefined) {
326
+ apiRef.current.setPivotModel(props.pivotModel);
327
+ }
328
+ }, [apiRef, props.pivotModel]);
329
+ useEnhancedEffect(() => {
330
+ if (props.pivotActive !== undefined) {
331
+ apiRef.current.setPivotActive(props.pivotActive);
332
+ }
333
+ }, [apiRef, props.pivotActive]);
334
+ useEnhancedEffect(() => {
335
+ if (props.pivotPanelOpen !== undefined) {
336
+ apiRef.current.setPivotPanelOpen(props.pivotPanelOpen);
337
+ }
338
+ }, [apiRef, props.pivotPanelOpen]);
339
+ };
@@ -0,0 +1,21 @@
1
+ import { GridColDef, GridRowModel, GridLocaleTextApi } from '@mui/x-data-grid-pro';
2
+ import type { RefObject } from '@mui/x-internals/types';
3
+ import type { DataGridPremiumProcessedProps } from '../../../models/dataGridPremiumProps';
4
+ import type { GridApiPremium } from '../../../models/gridApiPremium';
5
+ import type { GridPivotingPropsOverrides, GridPivotModel } from './gridPivotingInterfaces';
6
+ export declare const isPivotingAvailable: (props: Pick<DataGridPremiumProcessedProps, "disablePivoting">) => boolean;
7
+ export declare const defaultGetPivotDerivedColumns: DataGridPremiumProcessedProps['getPivotDerivedColumns'];
8
+ export declare const getInitialColumns: (originalColumns: DataGridPremiumProcessedProps["columns"], getPivotDerivedColumns: DataGridPremiumProcessedProps["getPivotDerivedColumns"], getLocaleText: GridLocaleTextApi["getLocaleText"]) => Map<string, GridColDef>;
9
+ export declare const getPivotedData: ({
10
+ rows,
11
+ columns,
12
+ pivotModel,
13
+ apiRef,
14
+ pivotingColDef
15
+ }: {
16
+ rows: GridRowModel[];
17
+ columns: Map<string, GridColDef>;
18
+ pivotModel: GridPivotModel;
19
+ apiRef: RefObject<GridApiPremium>;
20
+ pivotingColDef: DataGridPremiumProcessedProps["pivotingColDef"];
21
+ }) => GridPivotingPropsOverrides;
@@ -0,0 +1,259 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import { isLeaf, gridStringOrNumberComparator } from '@mui/x-data-grid-pro';
3
+ import { getDefaultColTypeDef } from '@mui/x-data-grid-pro/internals';
4
+ import { isGroupingColumn } from "../rowGrouping/index.js";
5
+ const columnGroupIdSeparator = '>->';
6
+ export const isPivotingAvailable = props => {
7
+ return !props.disablePivoting;
8
+ };
9
+ export const defaultGetPivotDerivedColumns = (column, getLocaleText) => {
10
+ if (column.type === 'date') {
11
+ const field = column.field;
12
+ return [{
13
+ // String column type to avoid formatting the value as 2,025 instead of 2025
14
+ field: `${field}-year`,
15
+ headerName: `${column.headerName} ${getLocaleText('pivotYearColumnHeaderName')}`,
16
+ valueGetter: (value, row) => new Date(row[field]).getFullYear()
17
+ }, {
18
+ field: `${field}-quarter`,
19
+ headerName: `${column.headerName} ${getLocaleText('pivotQuarterColumnHeaderName')}`,
20
+ valueGetter: (value, row) => `Q${Math.floor(new Date(row[field]).getMonth() / 3) + 1}`
21
+ }];
22
+ }
23
+ return undefined;
24
+ };
25
+ export const getInitialColumns = (originalColumns, getPivotDerivedColumns, getLocaleText) => {
26
+ const initialColumns = new Map();
27
+ for (let i = 0; i < originalColumns.length; i += 1) {
28
+ const originalColumn = originalColumns[i];
29
+ const column = _extends({}, getDefaultColTypeDef(originalColumn.type), originalColumn);
30
+ const field = column.field;
31
+ if (!isGroupingColumn(field)) {
32
+ initialColumns.set(field, column);
33
+ const derivedColumns = getPivotDerivedColumns?.(column, getLocaleText);
34
+ if (derivedColumns) {
35
+ derivedColumns.forEach(col => initialColumns.set(col.field, col));
36
+ }
37
+ }
38
+ }
39
+ return initialColumns;
40
+ };
41
+ function sortColumnGroups(columnGroups, pivotModelColumns, depth = 0) {
42
+ if (depth > pivotModelColumns.length - 1) {
43
+ return;
44
+ }
45
+ const sort = pivotModelColumns[depth].sort;
46
+ columnGroups.sort((a, b) => {
47
+ if (isLeaf(a) || isLeaf(b)) {
48
+ return 0;
49
+ }
50
+ if (a.children) {
51
+ sortColumnGroups(a.children, pivotModelColumns, depth + 1);
52
+ }
53
+ if (b.children) {
54
+ sortColumnGroups(b.children, pivotModelColumns, depth + 1);
55
+ }
56
+ if (sort === undefined) {
57
+ return 0;
58
+ }
59
+ return (sort === 'asc' ? 1 : -1) * gridStringOrNumberComparator(a.headerName, b.headerName, {}, {});
60
+ });
61
+ }
62
+ export const getPivotedData = ({
63
+ rows,
64
+ columns,
65
+ pivotModel,
66
+ apiRef,
67
+ pivotingColDef
68
+ }) => {
69
+ const visibleColumns = pivotModel.columns.filter(column => !column.hidden);
70
+ const visibleRows = pivotModel.rows.filter(row => !row.hidden);
71
+ const visibleValues = pivotModel.values.filter(value => !value.hidden);
72
+ let pivotColumns = [];
73
+ const columnVisibilityModel = {};
74
+ const pivotColumnsIncludedInPivotValues = [];
75
+ const initialColumns = new Map();
76
+ for (const column of columns.values()) {
77
+ if (!isGroupingColumn(column.field)) {
78
+ initialColumns.set(column.field, column);
79
+ const pivotValueIndex = visibleValues.findIndex(({
80
+ field
81
+ }) => field === column.field);
82
+ const isVisiblePivotValueField = pivotValueIndex !== -1;
83
+ const columnToAdd = _extends({}, column, {
84
+ aggregable: false,
85
+ groupable: false,
86
+ hideable: false,
87
+ editable: false,
88
+ disableReorder: true
89
+ });
90
+ if (isVisiblePivotValueField) {
91
+ // Store columns that are used as pivot values in a temporary array to keep them in the same order as in pivotModel.values, not in the order of the initial columns.
92
+ // `pivotColumnsIncludedInPivotValues` is concatenated to pivotColumns later.
93
+ pivotColumnsIncludedInPivotValues[pivotValueIndex] = columnToAdd;
94
+ } else {
95
+ pivotColumns.push(columnToAdd);
96
+ }
97
+ columnVisibilityModel[column.field] = false;
98
+ }
99
+ }
100
+ pivotColumns = pivotColumns.concat(pivotColumnsIncludedInPivotValues);
101
+ const getAttributesFromInitialColumn = field => {
102
+ const initialColumn = initialColumns.get(field);
103
+ if (!initialColumn) {
104
+ return undefined;
105
+ }
106
+ const attributes = {
107
+ width: initialColumn.width,
108
+ minWidth: initialColumn.minWidth,
109
+ maxWidth: initialColumn.maxWidth,
110
+ valueFormatter: initialColumn.valueFormatter,
111
+ headerName: initialColumn.headerName,
112
+ renderCell: initialColumn.renderCell,
113
+ display: initialColumn.display
114
+ };
115
+ return attributes;
116
+ };
117
+ const aggregationModel = {};
118
+ const columnGroupingModel = [];
119
+ const columnGroupingModelLookup = new Map();
120
+ let newRows = [];
121
+ if (visibleColumns.length === 0) {
122
+ newRows = rows;
123
+ visibleValues.forEach(pivotValue => {
124
+ aggregationModel[pivotValue.field] = pivotValue.aggFunc;
125
+ delete columnVisibilityModel[pivotValue.field];
126
+ });
127
+ } else {
128
+ for (let i = 0; i < rows.length; i += 1) {
129
+ const row = rows[i];
130
+ const newRow = _extends({}, row);
131
+ const columnGroupPath = [];
132
+ visibleColumns.forEach(({
133
+ field: colGroupField
134
+ }, depth) => {
135
+ const column = initialColumns.get(colGroupField);
136
+ if (!column) {
137
+ return;
138
+ }
139
+ let colValue = apiRef.current.getRowValue(row, column) ?? '(No value)';
140
+ if (column.type === 'singleSelect') {
141
+ const singleSelectColumn = column;
142
+ if (singleSelectColumn.getOptionLabel) {
143
+ colValue = singleSelectColumn.getOptionLabel(colValue);
144
+ }
145
+ }
146
+ columnGroupPath.push(String(colValue));
147
+ const groupId = columnGroupPath.join(columnGroupIdSeparator);
148
+ if (!columnGroupingModelLookup.has(groupId)) {
149
+ const columnGroup = {
150
+ groupId,
151
+ headerName: String(colValue),
152
+ children: []
153
+ };
154
+ columnGroupingModelLookup.set(groupId, columnGroup);
155
+ if (depth === 0) {
156
+ columnGroupingModel.push(columnGroup);
157
+ } else {
158
+ const parentGroupId = columnGroupPath.slice(0, -1).join(columnGroupIdSeparator);
159
+ const parentGroup = columnGroupingModelLookup.get(parentGroupId);
160
+ if (parentGroup) {
161
+ parentGroup.children.push(columnGroup);
162
+ }
163
+ }
164
+ }
165
+ const isLastColumnGroupLevel = depth === visibleColumns.length - 1;
166
+ if (isLastColumnGroupLevel) {
167
+ visibleValues.forEach(pivotValue => {
168
+ const valueField = pivotValue.field;
169
+ const originalColumn = initialColumns.get(valueField);
170
+ if (!originalColumn) {
171
+ return;
172
+ }
173
+ const valueKey = `${columnGroupPath.join(columnGroupIdSeparator)}${columnGroupIdSeparator}${valueField}`;
174
+ newRow[valueKey] = apiRef.current.getRowValue(row, originalColumn);
175
+ });
176
+ }
177
+ });
178
+ newRows.push(newRow);
179
+ }
180
+ sortColumnGroups(columnGroupingModel, visibleColumns);
181
+ }
182
+ function createColumns(columnGroups, depth = 0) {
183
+ for (let i = 0; i < columnGroups.length; i += 1) {
184
+ const columnGroup = columnGroups[i];
185
+ if (isLeaf(columnGroup)) {
186
+ continue;
187
+ }
188
+ const isLastColumnGroupLevel = depth === visibleColumns.length - 1;
189
+ if (isLastColumnGroupLevel) {
190
+ if (visibleValues.length === 0) {
191
+ // If there are no visible values, there are no actual columns added to the data grid, which leads to column groups not being visible.
192
+ // Adding an empty column to each column group ensures that the column groups are visible.
193
+ const emptyColumnField = `${columnGroup.groupId}${columnGroupIdSeparator}empty`;
194
+ const emptyColumn = {
195
+ field: emptyColumnField,
196
+ headerName: '',
197
+ sortable: false,
198
+ filterable: false,
199
+ groupable: false,
200
+ aggregable: false,
201
+ hideable: false,
202
+ disableColumnMenu: true
203
+ };
204
+ pivotColumns.push(emptyColumn);
205
+ if (columnGroup) {
206
+ columnGroup.children.push({
207
+ field: emptyColumnField
208
+ });
209
+ }
210
+ } else {
211
+ visibleValues.forEach(pivotValue => {
212
+ const valueField = pivotValue.field;
213
+ const mapValueKey = `${columnGroup.groupId}${columnGroupIdSeparator}${valueField}`;
214
+ const overrides = typeof pivotingColDef === 'function' ? pivotingColDef(valueField, columnGroup.groupId.split(columnGroupIdSeparator)) : pivotingColDef;
215
+ const column = _extends({
216
+ headerName: String(valueField)
217
+ }, getAttributesFromInitialColumn(pivotValue.field), overrides, {
218
+ field: mapValueKey,
219
+ aggregable: false,
220
+ groupable: false,
221
+ filterable: false,
222
+ hideable: false,
223
+ editable: false,
224
+ disableReorder: true,
225
+ availableAggregationFunctions: [pivotValue.aggFunc]
226
+ });
227
+ pivotColumns.push(column);
228
+ aggregationModel[mapValueKey] = pivotValue.aggFunc;
229
+ if (columnGroup) {
230
+ columnGroup.children.push({
231
+ field: mapValueKey
232
+ });
233
+ }
234
+ });
235
+ }
236
+ } else {
237
+ createColumns(columnGroup.children, depth + 1);
238
+ }
239
+ }
240
+ }
241
+ createColumns(columnGroupingModel);
242
+ return {
243
+ rows: visibleRows.length > 0 ? newRows : [],
244
+ columns: pivotColumns,
245
+ rowGroupingModel: visibleRows.map(row => row.field),
246
+ aggregationModel,
247
+ getAggregationPosition: groupNode => groupNode.depth === -1 ? 'footer' : 'inline',
248
+ columnVisibilityModel,
249
+ columnGroupingModel,
250
+ groupingColDef: {
251
+ filterable: false,
252
+ aggregable: false,
253
+ hideable: false
254
+ },
255
+ headerFilters: false,
256
+ disableAggregation: false,
257
+ disableRowGrouping: false
258
+ };
259
+ };
@@ -22,10 +22,7 @@ export const useGridDataSourceRowGroupingPreProcessors = (apiRef, props) => {
22
22
  apiRef.current.caches.rowGrouping.rulesOnLastRowTreeCreation = groupingRules;
23
23
  const getRowTreeBuilderNode = rowId => {
24
24
  const parentPath = params.updates.groupKeys ?? [];
25
- const row = params.dataRowIdToModelLookup[rowId];
26
- const groupingRule = groupingRules[parentPath.length];
27
- const groupingValueGetter = groupingRule?.groupingValueGetter;
28
- const leafKey = groupingValueGetter?.(row[groupingRule.field], row, columnsLookup[groupingRule.field], apiRef) ?? getGroupKey(params.dataRowIdToModelLookup[rowId]);
25
+ const leafKey = getGroupKey(params.dataRowIdToModelLookup[rowId]);
29
26
  return {
30
27
  id: rowId,
31
28
  path: [...parentPath, leafKey ?? rowId.toString()].map((key, i) => ({
@@ -169,7 +169,6 @@ export const useGridRowGrouping = (apiRef, props) => {
169
169
  useGridEvent(apiRef, 'cellKeyDown', handleCellKeyDown);
170
170
  useGridEvent(apiRef, 'columnsChange', checkGroupingColumnsModelDiff);
171
171
  useGridEvent(apiRef, 'rowGroupingModelChange', checkGroupingColumnsModelDiff);
172
- useGridEvent(apiRef, 'rowGroupingModelChange', () => apiRef.current.dataSource.fetchRows());
173
172
 
174
173
  /*
175
174
  * EFFECTS
@@ -0,0 +1,9 @@
1
+ import * as React from 'react';
2
+ export type ResizeDirection = 'horizontal' | 'vertical';
3
+ export declare const useResize: <TElement extends HTMLDivElement>(options: {
4
+ getInitialSize: (handleElement: TElement) => number;
5
+ onSizeChange: (newSize: number, handleElement: TElement) => void;
6
+ direction?: ResizeDirection;
7
+ }) => {
8
+ ref: React.RefObject<TElement | null>;
9
+ };