@mui/x-data-grid-premium 8.0.0-alpha.8 → 8.0.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (419) hide show
  1. package/CHANGELOG.md +2566 -687
  2. package/DataGridPremium/DataGrid.d.ts +1 -1
  3. package/DataGridPremium/DataGridPremium.d.ts +6 -6
  4. package/DataGridPremium/DataGridPremium.js +61 -35
  5. package/DataGridPremium/index.d.ts +3 -3
  6. package/DataGridPremium/useDataGridPremiumComponent.d.ts +4 -4
  7. package/DataGridPremium/useDataGridPremiumComponent.js +5 -4
  8. package/DataGridPremium/useDataGridPremiumProps.d.ts +2 -2
  9. package/DataGridPremium/useDataGridPremiumProps.js +2 -2
  10. package/README.md +1 -1
  11. package/components/GridAggregationHeader.d.ts +3 -3
  12. package/components/GridAggregationHeader.js +13 -12
  13. package/components/GridAggregationRowOverlay.d.ts +3 -0
  14. package/components/GridAggregationRowOverlay.js +44 -0
  15. package/components/GridBottomContainer.d.ts +3 -0
  16. package/components/GridBottomContainer.js +51 -0
  17. package/components/GridColumnMenuAggregationItem.d.ts +2 -2
  18. package/components/GridColumnMenuAggregationItem.js +36 -46
  19. package/components/GridColumnMenuRowGroupItem.d.ts +1 -1
  20. package/components/GridColumnMenuRowUngroupItem.d.ts +1 -1
  21. package/components/GridDataSourceGroupingCriteriaCell.d.ts +2 -2
  22. package/components/GridDataSourceGroupingCriteriaCell.js +8 -12
  23. package/components/GridExcelExportMenuItem.d.ts +3 -3
  24. package/components/GridFooterCell.d.ts +2 -2
  25. package/components/GridFooterCell.js +5 -6
  26. package/components/GridGroupingColumnFooterCell.d.ts +1 -1
  27. package/components/GridGroupingColumnFooterCell.js +2 -1
  28. package/components/GridGroupingColumnLeafCell.d.ts +1 -1
  29. package/components/GridGroupingColumnLeafCell.js +3 -9
  30. package/components/GridGroupingCriteriaCell.d.ts +2 -2
  31. package/components/GridGroupingCriteriaCell.js +3 -8
  32. package/components/GridPremiumColumnMenu.d.ts +26 -26
  33. package/components/GridPremiumToolbar.d.ts +3 -0
  34. package/components/GridPremiumToolbar.js +31 -0
  35. package/components/export/ExportExcel.d.ts +29 -0
  36. package/components/export/ExportExcel.js +216 -0
  37. package/components/export/index.d.ts +1 -0
  38. package/components/export/index.js +16 -0
  39. package/components/index.d.ts +6 -5
  40. package/components/index.js +13 -1
  41. package/components/promptControl/GridToolbarPromptControl.d.ts +22 -22
  42. package/components/promptControl/GridToolbarPromptControl.js +33 -20
  43. package/components/promptControl/RecordButton.d.ts +9 -9
  44. package/components/promptControl/index.d.ts +1 -1
  45. package/components/reexports.d.ts +1 -1
  46. package/constants/dataGridPremiumDefaultSlotsComponents.d.ts +1 -1
  47. package/constants/dataGridPremiumDefaultSlotsComponents.js +5 -1
  48. package/esm/DataGridPremium/DataGrid.d.ts +8 -0
  49. package/esm/DataGridPremium/DataGridPremium.d.ts +16 -0
  50. package/esm/DataGridPremium/DataGridPremium.js +61 -35
  51. package/esm/DataGridPremium/index.d.ts +3 -0
  52. package/esm/DataGridPremium/useDataGridPremiumComponent.d.ts +4 -0
  53. package/esm/DataGridPremium/useDataGridPremiumComponent.js +6 -5
  54. package/esm/DataGridPremium/useDataGridPremiumProps.d.ts +6 -0
  55. package/esm/DataGridPremium/useDataGridPremiumProps.js +2 -2
  56. package/esm/components/GridAggregationHeader.d.ts +7 -0
  57. package/esm/components/GridAggregationHeader.js +13 -12
  58. package/esm/components/GridAggregationRowOverlay.d.ts +3 -0
  59. package/esm/components/GridAggregationRowOverlay.js +37 -0
  60. package/esm/components/GridBottomContainer.d.ts +3 -0
  61. package/esm/components/GridBottomContainer.js +43 -0
  62. package/esm/components/GridColumnMenuAggregationItem.d.ts +7 -0
  63. package/esm/components/GridColumnMenuAggregationItem.js +36 -46
  64. package/esm/components/GridColumnMenuRowGroupItem.d.ts +3 -0
  65. package/esm/components/GridColumnMenuRowUngroupItem.d.ts +3 -0
  66. package/esm/components/GridDataSourceGroupingCriteriaCell.d.ts +7 -0
  67. package/esm/components/GridDataSourceGroupingCriteriaCell.js +9 -13
  68. package/esm/components/GridExcelExportMenuItem.d.ts +9 -0
  69. package/esm/components/GridFooterCell.d.ts +9 -0
  70. package/esm/components/GridFooterCell.js +5 -6
  71. package/esm/components/GridGroupingColumnFooterCell.d.ts +4 -0
  72. package/esm/components/GridGroupingColumnFooterCell.js +2 -1
  73. package/esm/components/GridGroupingColumnLeafCell.d.ts +4 -0
  74. package/esm/components/GridGroupingColumnLeafCell.js +3 -8
  75. package/esm/components/GridGroupingCriteriaCell.d.ts +7 -0
  76. package/esm/components/GridGroupingCriteriaCell.js +3 -8
  77. package/esm/components/GridPremiumColumnMenu.d.ts +33 -0
  78. package/esm/components/GridPremiumToolbar.d.ts +3 -0
  79. package/esm/components/GridPremiumToolbar.js +23 -0
  80. package/esm/components/export/ExportExcel.d.ts +29 -0
  81. package/esm/components/export/ExportExcel.js +209 -0
  82. package/esm/components/export/index.d.ts +1 -0
  83. package/esm/components/export/index.js +1 -0
  84. package/esm/components/index.d.ts +6 -0
  85. package/esm/components/index.js +2 -1
  86. package/esm/components/promptControl/GridToolbarPromptControl.d.ts +26 -0
  87. package/esm/components/promptControl/GridToolbarPromptControl.js +33 -20
  88. package/esm/components/promptControl/RecordButton.d.ts +16 -0
  89. package/esm/components/promptControl/index.d.ts +1 -0
  90. package/esm/components/reexports.d.ts +1 -0
  91. package/esm/constants/dataGridPremiumDefaultSlotsComponents.d.ts +2 -0
  92. package/esm/constants/dataGridPremiumDefaultSlotsComponents.js +5 -1
  93. package/esm/hooks/features/aggregation/createAggregationLookup.d.ts +17 -0
  94. package/esm/hooks/features/aggregation/createAggregationLookup.js +3 -3
  95. package/esm/hooks/features/aggregation/gridAggregationFunctions.d.ts +8 -0
  96. package/esm/hooks/features/aggregation/gridAggregationInterfaces.d.ts +129 -0
  97. package/esm/hooks/features/aggregation/gridAggregationSelectors.d.ts +13 -0
  98. package/esm/hooks/features/aggregation/gridAggregationSelectors.js +2 -2
  99. package/esm/hooks/features/aggregation/gridAggregationUtils.d.ts +62 -0
  100. package/esm/hooks/features/aggregation/gridAggregationUtils.js +1 -1
  101. package/esm/hooks/features/aggregation/index.d.ts +4 -0
  102. package/esm/hooks/features/aggregation/useGridAggregation.d.ts +6 -0
  103. package/esm/hooks/features/aggregation/useGridAggregation.js +6 -8
  104. package/esm/hooks/features/aggregation/useGridAggregationPreProcessors.d.ts +4 -0
  105. package/esm/hooks/features/aggregation/useGridAggregationPreProcessors.js +7 -6
  106. package/esm/hooks/features/aggregation/wrapColumnWithAggregation.d.ts +81 -0
  107. package/esm/hooks/features/aggregation/wrapColumnWithAggregation.js +6 -5
  108. package/esm/hooks/features/cellSelection/gridCellSelectionInterfaces.d.ts +40 -0
  109. package/esm/hooks/features/cellSelection/gridCellSelectionSelector.d.ts +2 -0
  110. package/esm/hooks/features/cellSelection/gridCellSelectionSelector.js +2 -1
  111. package/esm/hooks/features/cellSelection/index.d.ts +1 -0
  112. package/esm/hooks/features/cellSelection/useGridCellSelection.d.ts +6 -0
  113. package/esm/hooks/features/cellSelection/useGridCellSelection.js +15 -13
  114. package/esm/hooks/features/clipboard/useGridClipboardImport.d.ts +4 -0
  115. package/esm/hooks/features/clipboard/useGridClipboardImport.js +5 -5
  116. package/esm/hooks/features/dataSource/models.d.ts +54 -0
  117. package/esm/hooks/features/dataSource/useGridDataSourcePremium.d.ts +4 -0
  118. package/esm/hooks/features/dataSource/useGridDataSourcePremium.js +13 -7
  119. package/esm/hooks/features/export/gridExcelExportInterface.d.ts +71 -0
  120. package/esm/hooks/features/export/index.d.ts +2 -0
  121. package/esm/hooks/features/export/index.js +1 -1
  122. package/esm/hooks/features/export/serializer/excelSerializer.d.ts +40 -0
  123. package/esm/hooks/features/export/serializer/excelSerializer.js +69 -180
  124. package/esm/hooks/features/export/serializer/setupExcelExportWebWorker.d.ts +2 -0
  125. package/esm/hooks/features/export/serializer/setupExcelExportWebWorker.js +53 -0
  126. package/esm/hooks/features/export/serializer/utils.d.ts +36 -0
  127. package/esm/hooks/features/export/serializer/utils.js +93 -0
  128. package/esm/hooks/features/export/useGridExcelExport.d.ts +11 -0
  129. package/esm/hooks/features/export/useGridExcelExport.js +11 -5
  130. package/esm/hooks/features/index.d.ts +5 -0
  131. package/esm/hooks/features/promptControl/api.d.ts +2 -0
  132. package/esm/hooks/features/promptControl/index.d.ts +2 -0
  133. package/esm/hooks/features/promptControl/types.d.ts +25 -0
  134. package/esm/hooks/features/rowGrouping/createGroupingColDef.d.ts +57 -0
  135. package/esm/hooks/features/rowGrouping/createGroupingColDef.js +5 -5
  136. package/esm/hooks/features/rowGrouping/gridRowGroupingInterfaces.d.ts +44 -0
  137. package/esm/hooks/features/rowGrouping/gridRowGroupingSelector.d.ts +3 -0
  138. package/esm/hooks/features/rowGrouping/gridRowGroupingSelector.js +2 -2
  139. package/esm/hooks/features/rowGrouping/gridRowGroupingUtils.d.ts +54 -0
  140. package/esm/hooks/features/rowGrouping/gridRowGroupingUtils.js +5 -3
  141. package/esm/hooks/features/rowGrouping/index.d.ts +3 -0
  142. package/esm/hooks/features/rowGrouping/useGridDataSourceRowGroupingPreProcessors.d.ts +4 -0
  143. package/esm/hooks/features/rowGrouping/useGridDataSourceRowGroupingPreProcessors.js +3 -3
  144. package/esm/hooks/features/rowGrouping/useGridRowGrouping.d.ts +11 -0
  145. package/esm/hooks/features/rowGrouping/useGridRowGrouping.js +4 -5
  146. package/esm/hooks/features/rowGrouping/useGridRowGroupingPreProcessors.d.ts +4 -0
  147. package/esm/hooks/features/rowGrouping/useGridRowGroupingPreProcessors.js +5 -5
  148. package/esm/hooks/features/rows/index.d.ts +1 -0
  149. package/esm/hooks/features/rows/useGridRowAriaAttributes.d.ts +1 -0
  150. package/esm/hooks/index.d.ts +2 -0
  151. package/esm/hooks/utils/index.d.ts +1 -0
  152. package/esm/hooks/utils/useGridApiContext.d.ts +4 -0
  153. package/esm/hooks/utils/useGridApiRef.d.ts +4 -0
  154. package/esm/hooks/utils/useGridAriaAttributes.d.ts +2 -0
  155. package/esm/hooks/utils/useGridPrivateApiContext.d.ts +2 -0
  156. package/esm/hooks/utils/useGridRootProps.d.ts +2 -0
  157. package/esm/hooks/utils/useKeepGroupedColumnsHidden.d.ts +12 -0
  158. package/esm/hooks/utils/useKeepGroupedColumnsHidden.js +2 -2
  159. package/esm/index.d.ts +23 -0
  160. package/esm/index.js +6 -5
  161. package/esm/locales.d.ts +1 -0
  162. package/esm/material/icons.d.ts +15 -0
  163. package/esm/material/index.d.ts +8 -0
  164. package/esm/models/dataGridPremiumProps.d.ts +162 -0
  165. package/esm/models/gridApiPremium.d.ts +14 -0
  166. package/esm/models/gridGroupingValueGetter.d.ts +4 -0
  167. package/esm/models/gridPastedValueParser.d.ts +4 -0
  168. package/esm/models/gridPremiumIconSlotsComponent.d.ts +28 -0
  169. package/esm/models/gridPremiumSlotsComponent.d.ts +7 -0
  170. package/esm/models/gridStatePremium.d.ts +18 -0
  171. package/esm/models/index.d.ts +4 -0
  172. package/esm/package.json +1 -0
  173. package/esm/setupExcelExportWebWorker.d.ts +1 -0
  174. package/esm/setupExcelExportWebWorker.js +1 -0
  175. package/esm/themeAugmentation/index.d.ts +2 -0
  176. package/esm/themeAugmentation/overrides.d.ts +7 -0
  177. package/esm/themeAugmentation/props.d.ts +15 -0
  178. package/esm/typeOverloads/index.d.ts +2 -0
  179. package/esm/typeOverloads/modules.d.ts +97 -0
  180. package/esm/typeOverloads/reexports.d.ts +17 -0
  181. package/esm/utils/releaseInfo.d.ts +1 -0
  182. package/esm/utils/releaseInfo.js +1 -1
  183. package/hooks/features/aggregation/createAggregationLookup.d.ts +17 -11
  184. package/hooks/features/aggregation/createAggregationLookup.js +2 -2
  185. package/hooks/features/aggregation/gridAggregationFunctions.d.ts +7 -7
  186. package/hooks/features/aggregation/gridAggregationInterfaces.d.ts +81 -82
  187. package/hooks/features/aggregation/gridAggregationSelectors.d.ts +3 -3
  188. package/hooks/features/aggregation/gridAggregationSelectors.js +1 -2
  189. package/hooks/features/aggregation/gridAggregationUtils.d.ts +43 -26
  190. package/hooks/features/aggregation/gridAggregationUtils.js +1 -1
  191. package/hooks/features/aggregation/index.d.ts +4 -4
  192. package/hooks/features/aggregation/useGridAggregation.d.ts +4 -4
  193. package/hooks/features/aggregation/useGridAggregation.js +6 -8
  194. package/hooks/features/aggregation/useGridAggregationPreProcessors.d.ts +4 -4
  195. package/hooks/features/aggregation/useGridAggregationPreProcessors.js +7 -6
  196. package/hooks/features/aggregation/wrapColumnWithAggregation.d.ts +68 -62
  197. package/hooks/features/aggregation/wrapColumnWithAggregation.js +6 -5
  198. package/hooks/features/cellSelection/gridCellSelectionInterfaces.d.ts +34 -34
  199. package/hooks/features/cellSelection/gridCellSelectionSelector.d.ts +2 -2
  200. package/hooks/features/cellSelection/gridCellSelectionSelector.js +2 -2
  201. package/hooks/features/cellSelection/index.d.ts +1 -1
  202. package/hooks/features/cellSelection/useGridCellSelection.d.ts +4 -4
  203. package/hooks/features/cellSelection/useGridCellSelection.js +13 -11
  204. package/hooks/features/clipboard/useGridClipboardImport.d.ts +3 -3
  205. package/hooks/features/clipboard/useGridClipboardImport.js +4 -4
  206. package/hooks/features/dataSource/models.d.ts +41 -34
  207. package/hooks/features/dataSource/useGridDataSourcePremium.d.ts +4 -4
  208. package/hooks/features/dataSource/useGridDataSourcePremium.js +13 -7
  209. package/hooks/features/export/gridExcelExportInterface.d.ts +52 -52
  210. package/hooks/features/export/index.d.ts +2 -2
  211. package/hooks/features/export/index.js +2 -2
  212. package/hooks/features/export/serializer/excelSerializer.d.ts +25 -52
  213. package/hooks/features/export/serializer/excelSerializer.js +74 -187
  214. package/hooks/features/export/serializer/setupExcelExportWebWorker.d.ts +2 -0
  215. package/hooks/features/export/serializer/setupExcelExportWebWorker.js +59 -0
  216. package/hooks/features/export/serializer/utils.d.ts +36 -0
  217. package/hooks/features/export/serializer/utils.js +106 -0
  218. package/hooks/features/export/useGridExcelExport.d.ts +4 -4
  219. package/hooks/features/export/useGridExcelExport.js +10 -3
  220. package/hooks/features/index.d.ts +5 -5
  221. package/hooks/features/promptControl/api.d.ts +2 -2
  222. package/hooks/features/promptControl/index.d.ts +2 -2
  223. package/hooks/features/promptControl/types.d.ts +15 -15
  224. package/hooks/features/rowGrouping/createGroupingColDef.d.ts +45 -33
  225. package/hooks/features/rowGrouping/createGroupingColDef.js +4 -4
  226. package/hooks/features/rowGrouping/gridRowGroupingInterfaces.d.ts +32 -32
  227. package/hooks/features/rowGrouping/gridRowGroupingSelector.d.ts +2 -2
  228. package/hooks/features/rowGrouping/gridRowGroupingSelector.js +2 -2
  229. package/hooks/features/rowGrouping/gridRowGroupingUtils.d.ts +32 -24
  230. package/hooks/features/rowGrouping/gridRowGroupingUtils.js +4 -2
  231. package/hooks/features/rowGrouping/index.d.ts +3 -3
  232. package/hooks/features/rowGrouping/useGridDataSourceRowGroupingPreProcessors.d.ts +4 -4
  233. package/hooks/features/rowGrouping/useGridDataSourceRowGroupingPreProcessors.js +3 -3
  234. package/hooks/features/rowGrouping/useGridRowGrouping.d.ts +4 -4
  235. package/hooks/features/rowGrouping/useGridRowGrouping.js +4 -5
  236. package/hooks/features/rowGrouping/useGridRowGroupingPreProcessors.d.ts +4 -4
  237. package/hooks/features/rowGrouping/useGridRowGroupingPreProcessors.js +5 -5
  238. package/hooks/features/rows/index.d.ts +1 -1
  239. package/hooks/features/rows/useGridRowAriaAttributes.d.ts +1 -1
  240. package/hooks/index.d.ts +2 -2
  241. package/hooks/utils/index.d.ts +1 -1
  242. package/hooks/utils/useGridApiContext.d.ts +4 -2
  243. package/hooks/utils/useGridApiRef.d.ts +4 -2
  244. package/hooks/utils/useGridAriaAttributes.d.ts +1 -1
  245. package/hooks/utils/useGridPrivateApiContext.d.ts +2 -2
  246. package/hooks/utils/useGridRootProps.d.ts +2 -2
  247. package/hooks/utils/useKeepGroupedColumnsHidden.d.ts +5 -5
  248. package/hooks/utils/useKeepGroupedColumnsHidden.js +2 -2
  249. package/index.d.ts +9 -17
  250. package/index.js +2 -11
  251. package/locales.d.ts +1 -1
  252. package/material/icons.d.ts +6 -6
  253. package/material/index.d.ts +6 -6
  254. package/models/dataGridPremiumProps.d.ts +141 -136
  255. package/models/gridApiPremium.d.ts +4 -6
  256. package/models/gridGroupingValueGetter.d.ts +3 -2
  257. package/models/gridPastedValueParser.d.ts +3 -2
  258. package/models/gridPremiumIconSlotsComponent.d.ts +26 -26
  259. package/models/gridPremiumSlotsComponent.d.ts +2 -3
  260. package/models/gridStatePremium.d.ts +7 -7
  261. package/models/index.d.ts +4 -4
  262. package/modern/DataGridPremium/DataGrid.d.ts +8 -0
  263. package/modern/DataGridPremium/DataGridPremium.d.ts +16 -0
  264. package/modern/DataGridPremium/DataGridPremium.js +61 -35
  265. package/modern/DataGridPremium/index.d.ts +3 -0
  266. package/modern/DataGridPremium/useDataGridPremiumComponent.d.ts +4 -0
  267. package/modern/DataGridPremium/useDataGridPremiumComponent.js +6 -5
  268. package/modern/DataGridPremium/useDataGridPremiumProps.d.ts +6 -0
  269. package/modern/DataGridPremium/useDataGridPremiumProps.js +2 -2
  270. package/modern/components/GridAggregationHeader.d.ts +7 -0
  271. package/modern/components/GridAggregationHeader.js +13 -12
  272. package/modern/components/GridAggregationRowOverlay.d.ts +3 -0
  273. package/modern/components/GridAggregationRowOverlay.js +37 -0
  274. package/modern/components/GridBottomContainer.d.ts +3 -0
  275. package/modern/components/GridBottomContainer.js +43 -0
  276. package/modern/components/GridColumnMenuAggregationItem.d.ts +7 -0
  277. package/modern/components/GridColumnMenuAggregationItem.js +36 -46
  278. package/modern/components/GridColumnMenuRowGroupItem.d.ts +3 -0
  279. package/modern/components/GridColumnMenuRowUngroupItem.d.ts +3 -0
  280. package/modern/components/GridDataSourceGroupingCriteriaCell.d.ts +7 -0
  281. package/modern/components/GridDataSourceGroupingCriteriaCell.js +9 -13
  282. package/modern/components/GridExcelExportMenuItem.d.ts +9 -0
  283. package/modern/components/GridFooterCell.d.ts +9 -0
  284. package/modern/components/GridFooterCell.js +5 -6
  285. package/modern/components/GridGroupingColumnFooterCell.d.ts +4 -0
  286. package/modern/components/GridGroupingColumnFooterCell.js +2 -1
  287. package/modern/components/GridGroupingColumnLeafCell.d.ts +4 -0
  288. package/modern/components/GridGroupingColumnLeafCell.js +3 -8
  289. package/modern/components/GridGroupingCriteriaCell.d.ts +7 -0
  290. package/modern/components/GridGroupingCriteriaCell.js +3 -8
  291. package/modern/components/GridPremiumColumnMenu.d.ts +33 -0
  292. package/modern/components/GridPremiumToolbar.d.ts +3 -0
  293. package/modern/components/GridPremiumToolbar.js +23 -0
  294. package/modern/components/export/ExportExcel.d.ts +29 -0
  295. package/modern/components/export/ExportExcel.js +209 -0
  296. package/modern/components/export/index.d.ts +1 -0
  297. package/modern/components/export/index.js +1 -0
  298. package/modern/components/index.d.ts +6 -0
  299. package/modern/components/index.js +2 -1
  300. package/modern/components/promptControl/GridToolbarPromptControl.d.ts +26 -0
  301. package/modern/components/promptControl/GridToolbarPromptControl.js +33 -20
  302. package/modern/components/promptControl/RecordButton.d.ts +16 -0
  303. package/modern/components/promptControl/index.d.ts +1 -0
  304. package/modern/components/reexports.d.ts +1 -0
  305. package/modern/constants/dataGridPremiumDefaultSlotsComponents.d.ts +2 -0
  306. package/modern/constants/dataGridPremiumDefaultSlotsComponents.js +5 -1
  307. package/modern/hooks/features/aggregation/createAggregationLookup.d.ts +17 -0
  308. package/modern/hooks/features/aggregation/createAggregationLookup.js +3 -3
  309. package/modern/hooks/features/aggregation/gridAggregationFunctions.d.ts +8 -0
  310. package/modern/hooks/features/aggregation/gridAggregationInterfaces.d.ts +129 -0
  311. package/modern/hooks/features/aggregation/gridAggregationSelectors.d.ts +13 -0
  312. package/modern/hooks/features/aggregation/gridAggregationSelectors.js +2 -2
  313. package/modern/hooks/features/aggregation/gridAggregationUtils.d.ts +62 -0
  314. package/modern/hooks/features/aggregation/gridAggregationUtils.js +1 -1
  315. package/modern/hooks/features/aggregation/index.d.ts +4 -0
  316. package/modern/hooks/features/aggregation/useGridAggregation.d.ts +6 -0
  317. package/modern/hooks/features/aggregation/useGridAggregation.js +6 -8
  318. package/modern/hooks/features/aggregation/useGridAggregationPreProcessors.d.ts +4 -0
  319. package/modern/hooks/features/aggregation/useGridAggregationPreProcessors.js +7 -6
  320. package/modern/hooks/features/aggregation/wrapColumnWithAggregation.d.ts +81 -0
  321. package/modern/hooks/features/aggregation/wrapColumnWithAggregation.js +6 -5
  322. package/modern/hooks/features/cellSelection/gridCellSelectionInterfaces.d.ts +40 -0
  323. package/modern/hooks/features/cellSelection/gridCellSelectionSelector.d.ts +2 -0
  324. package/modern/hooks/features/cellSelection/gridCellSelectionSelector.js +2 -1
  325. package/modern/hooks/features/cellSelection/index.d.ts +1 -0
  326. package/modern/hooks/features/cellSelection/useGridCellSelection.d.ts +6 -0
  327. package/modern/hooks/features/cellSelection/useGridCellSelection.js +15 -13
  328. package/modern/hooks/features/clipboard/useGridClipboardImport.d.ts +4 -0
  329. package/modern/hooks/features/clipboard/useGridClipboardImport.js +5 -5
  330. package/modern/hooks/features/dataSource/models.d.ts +54 -0
  331. package/modern/hooks/features/dataSource/useGridDataSourcePremium.d.ts +4 -0
  332. package/modern/hooks/features/dataSource/useGridDataSourcePremium.js +13 -7
  333. package/modern/hooks/features/export/gridExcelExportInterface.d.ts +71 -0
  334. package/modern/hooks/features/export/index.d.ts +2 -0
  335. package/modern/hooks/features/export/index.js +1 -1
  336. package/modern/hooks/features/export/serializer/excelSerializer.d.ts +40 -0
  337. package/modern/hooks/features/export/serializer/excelSerializer.js +69 -180
  338. package/modern/hooks/features/export/serializer/setupExcelExportWebWorker.d.ts +2 -0
  339. package/modern/hooks/features/export/serializer/setupExcelExportWebWorker.js +53 -0
  340. package/modern/hooks/features/export/serializer/utils.d.ts +36 -0
  341. package/modern/hooks/features/export/serializer/utils.js +93 -0
  342. package/modern/hooks/features/export/useGridExcelExport.d.ts +11 -0
  343. package/modern/hooks/features/export/useGridExcelExport.js +11 -5
  344. package/modern/hooks/features/index.d.ts +5 -0
  345. package/modern/hooks/features/promptControl/api.d.ts +2 -0
  346. package/modern/hooks/features/promptControl/index.d.ts +2 -0
  347. package/modern/hooks/features/promptControl/types.d.ts +25 -0
  348. package/modern/hooks/features/rowGrouping/createGroupingColDef.d.ts +57 -0
  349. package/modern/hooks/features/rowGrouping/createGroupingColDef.js +5 -5
  350. package/modern/hooks/features/rowGrouping/gridRowGroupingInterfaces.d.ts +44 -0
  351. package/modern/hooks/features/rowGrouping/gridRowGroupingSelector.d.ts +3 -0
  352. package/modern/hooks/features/rowGrouping/gridRowGroupingSelector.js +2 -2
  353. package/modern/hooks/features/rowGrouping/gridRowGroupingUtils.d.ts +54 -0
  354. package/modern/hooks/features/rowGrouping/gridRowGroupingUtils.js +5 -3
  355. package/modern/hooks/features/rowGrouping/index.d.ts +3 -0
  356. package/modern/hooks/features/rowGrouping/useGridDataSourceRowGroupingPreProcessors.d.ts +4 -0
  357. package/modern/hooks/features/rowGrouping/useGridDataSourceRowGroupingPreProcessors.js +3 -3
  358. package/modern/hooks/features/rowGrouping/useGridRowGrouping.d.ts +11 -0
  359. package/modern/hooks/features/rowGrouping/useGridRowGrouping.js +4 -5
  360. package/modern/hooks/features/rowGrouping/useGridRowGroupingPreProcessors.d.ts +4 -0
  361. package/modern/hooks/features/rowGrouping/useGridRowGroupingPreProcessors.js +5 -5
  362. package/modern/hooks/features/rows/index.d.ts +1 -0
  363. package/modern/hooks/features/rows/useGridRowAriaAttributes.d.ts +1 -0
  364. package/modern/hooks/index.d.ts +2 -0
  365. package/modern/hooks/utils/index.d.ts +1 -0
  366. package/modern/hooks/utils/useGridApiContext.d.ts +4 -0
  367. package/modern/hooks/utils/useGridApiRef.d.ts +4 -0
  368. package/modern/hooks/utils/useGridAriaAttributes.d.ts +2 -0
  369. package/modern/hooks/utils/useGridPrivateApiContext.d.ts +2 -0
  370. package/modern/hooks/utils/useGridRootProps.d.ts +2 -0
  371. package/modern/hooks/utils/useKeepGroupedColumnsHidden.d.ts +12 -0
  372. package/modern/hooks/utils/useKeepGroupedColumnsHidden.js +2 -2
  373. package/modern/index.d.ts +23 -0
  374. package/modern/index.js +1 -7
  375. package/modern/locales.d.ts +1 -0
  376. package/modern/material/icons.d.ts +15 -0
  377. package/modern/material/index.d.ts +8 -0
  378. package/modern/models/dataGridPremiumProps.d.ts +162 -0
  379. package/modern/models/gridApiPremium.d.ts +14 -0
  380. package/modern/models/gridGroupingValueGetter.d.ts +4 -0
  381. package/modern/models/gridPastedValueParser.d.ts +4 -0
  382. package/modern/models/gridPremiumIconSlotsComponent.d.ts +28 -0
  383. package/modern/models/gridPremiumSlotsComponent.d.ts +7 -0
  384. package/modern/models/gridStatePremium.d.ts +18 -0
  385. package/modern/models/index.d.ts +4 -0
  386. package/modern/package.json +1 -0
  387. package/modern/setupExcelExportWebWorker.d.ts +1 -0
  388. package/modern/setupExcelExportWebWorker.js +1 -0
  389. package/modern/themeAugmentation/index.d.ts +2 -0
  390. package/modern/themeAugmentation/overrides.d.ts +7 -0
  391. package/modern/themeAugmentation/props.d.ts +15 -0
  392. package/modern/typeOverloads/index.d.ts +2 -0
  393. package/modern/typeOverloads/modules.d.ts +97 -0
  394. package/modern/typeOverloads/reexports.d.ts +17 -0
  395. package/modern/utils/releaseInfo.d.ts +1 -0
  396. package/modern/utils/releaseInfo.js +1 -1
  397. package/package.json +42 -9
  398. package/setupExcelExportWebWorker.d.ts +1 -0
  399. package/setupExcelExportWebWorker.js +12 -0
  400. package/themeAugmentation/index.d.ts +2 -2
  401. package/themeAugmentation/overrides.d.ts +3 -4
  402. package/themeAugmentation/props.d.ts +9 -11
  403. package/tsconfig.build.tsbuildinfo +1 -0
  404. package/typeOverloads/index.d.ts +1 -1
  405. package/typeOverloads/modules.d.ts +75 -82
  406. package/typeOverloads/reexports.d.ts +5 -5
  407. package/utils/releaseInfo.d.ts +1 -1
  408. package/utils/releaseInfo.js +1 -1
  409. package/DataGridPremium/package.json +0 -6
  410. package/components/package.json +0 -6
  411. package/esm/hooks/features/dataSource/cache.js +0 -3
  412. package/hooks/features/dataSource/cache.d.ts +0 -2
  413. package/hooks/features/dataSource/cache.js +0 -9
  414. package/hooks/package.json +0 -6
  415. package/material/package.json +0 -6
  416. package/models/package.json +0 -6
  417. package/modern/hooks/features/dataSource/cache.js +0 -3
  418. package/themeAugmentation/package.json +0 -6
  419. package/typeOverloads/package.json +0 -6
@@ -1,67 +1,40 @@
1
1
  import type * as Excel from 'exceljs';
2
+ import { RefObject } from '@mui/x-internals/types';
2
3
  import { GridRowId, GridColDef } from '@mui/x-data-grid-pro';
3
- import { GridStateColDef, GridColumnGroupLookup } from '@mui/x-data-grid/internals';
4
- import { ColumnsStylesInterface, GridExcelExportOptions } from '../gridExcelExportInterface';
5
- import { GridPrivateApiPremium } from '../../../../models/gridApiPremium';
6
- interface SerializedRow {
7
- row: Record<string, undefined | number | boolean | string | Date>;
8
- dataValidation: Record<string, Excel.DataValidation>;
9
- outlineLevel: number;
10
- mergedCells: {
11
- leftIndex: number;
12
- rightIndex: number;
13
- }[];
14
- }
4
+ import { GridStateColDef } from '@mui/x-data-grid/internals';
5
+ import { ColumnsStylesInterface, GridExcelExportOptions } from "../gridExcelExportInterface.js";
6
+ import { GridPrivateApiPremium } from "../../../../models/gridApiPremium.js";
7
+ import { SerializedColumns, SerializedRow, ValueOptionsData } from "./utils.js";
8
+ export type { ExcelExportInitEvent } from './utils';
15
9
  /**
16
10
  * FIXME: This function mutates the colspan info, but colspan info assumes that the columns
17
11
  * passed to it are always consistent. In this case, the exported columns may differ from the
18
12
  * actual rendered columns.
19
13
  * The caller of this function MUST call `resetColSpan()` before and after usage.
20
14
  */
21
- export declare const serializeRowUnsafe: (id: GridRowId, columns: GridStateColDef[], apiRef: React.RefObject<GridPrivateApiPremium>, defaultValueOptionsFormulae: {
22
- [field: string]: {
23
- address: string;
24
- };
15
+ export declare const serializeRowUnsafe: (id: GridRowId, columns: GridStateColDef[], apiRef: RefObject<GridPrivateApiPremium>, defaultValueOptionsFormulae: {
16
+ [field: string]: {
17
+ address: string;
18
+ };
25
19
  }, options: Pick<BuildExcelOptions, "escapeFormulas">) => SerializedRow;
26
20
  export declare const serializeColumn: (column: GridColDef, columnsStyles: ColumnsStylesInterface) => {
27
- key: string;
28
- headerText: string;
29
- width: number;
30
- style: {
31
- numFmt?: string | undefined;
32
- font?: Partial<Excel.Font> | undefined;
33
- alignment?: Partial<Excel.Alignment> | undefined;
34
- protection?: Partial<Excel.Protection> | undefined;
35
- border?: Partial<Excel.Borders> | undefined;
36
- fill?: Excel.Fill | undefined;
37
- };
21
+ key: string;
22
+ headerText: string;
23
+ width: number;
24
+ style: {
25
+ numFmt?: string | undefined;
26
+ font?: Partial<Excel.Font> | undefined;
27
+ alignment?: Partial<Excel.Alignment> | undefined;
28
+ protection?: Partial<Excel.Protection> | undefined;
29
+ border?: Partial<Excel.Borders> | undefined;
30
+ fill?: Excel.Fill | undefined;
31
+ };
38
32
  };
39
- type SerializedColumns = Array<{
40
- key: string;
41
- width: number;
42
- style: Partial<Excel.Style>;
43
- headerText: string;
44
- }>;
45
33
  export declare function serializeColumns(columns: GridStateColDef[], styles: ColumnsStylesInterface): SerializedColumns;
46
- type ValueOptionsData = Record<string, {
47
- values: (string | number)[];
48
- address: string;
49
- }>;
50
34
  export declare function getDataForValueOptionsSheet(columns: GridStateColDef[], valueOptionsSheetName: string, api: GridPrivateApiPremium): Promise<ValueOptionsData>;
51
35
  interface BuildExcelOptions extends Pick<GridExcelExportOptions, 'exceljsPreProcess' | 'exceljsPostProcess'>, Pick<Required<GridExcelExportOptions>, 'valueOptionsSheetName' | 'includeHeaders' | 'includeColumnGroupsHeaders' | 'escapeFormulas'> {
52
- columns: GridStateColDef[];
53
- rowIds: GridRowId[];
54
- columnsStyles?: ColumnsStylesInterface;
55
- }
56
- export declare function buildExcel(options: BuildExcelOptions, apiRef: React.RefObject<GridPrivateApiPremium>): Promise<Excel.Workbook>;
57
- export interface ExcelExportInitEvent {
58
- serializedColumns: SerializedColumns;
59
- serializedRows: SerializedRow[];
60
- valueOptionsSheetName: string;
61
- columnGroupPaths: Record<string, string[]>;
62
- columnGroupDetails: GridColumnGroupLookup;
63
- valueOptionsData: ValueOptionsData;
64
- options: Omit<GridExcelExportOptions, 'exceljsPreProcess' | 'exceljsPostProcess' | 'columnsStyles' | 'valueOptionsSheetName'>;
36
+ columns: GridStateColDef[];
37
+ rowIds: GridRowId[];
38
+ columnsStyles?: ColumnsStylesInterface;
65
39
  }
66
- export declare function setupExcelExportWebWorker(workerOptions?: Pick<GridExcelExportOptions, 'exceljsPostProcess' | 'exceljsPreProcess'>): void;
67
- export {};
40
+ export declare function buildExcel(options: BuildExcelOptions, apiRef: RefObject<GridPrivateApiPremium>): Promise<Excel.Workbook>;
@@ -9,33 +9,36 @@ exports.getDataForValueOptionsSheet = getDataForValueOptionsSheet;
9
9
  exports.serializeColumn = void 0;
10
10
  exports.serializeColumns = serializeColumns;
11
11
  exports.serializeRowUnsafe = void 0;
12
- exports.setupExcelExportWebWorker = setupExcelExportWebWorker;
13
12
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
14
- var _interopRequireWildcard2 = _interopRequireDefault(require("@babel/runtime/helpers/interopRequireWildcard"));
15
13
  var _xDataGridPro = require("@mui/x-data-grid-pro");
16
14
  var _internals = require("@mui/x-data-grid/internals");
17
15
  var _warning = require("@mui/x-internals/warning");
18
- const getExcelJs = async () => {
19
- const excelJsModule = await Promise.resolve().then(() => (0, _interopRequireWildcard2.default)(require('exceljs')));
20
- return excelJsModule.default ?? excelJsModule;
21
- };
22
- const getFormattedValueOptions = (colDef, row, valueOptions, api) => {
16
+ var _utils = require("./utils");
17
+ const getFormattedValueOptions = (colDef, row, valueOptions, api, callback) => {
23
18
  if (!colDef.valueOptions) {
24
- return [];
19
+ return;
25
20
  }
26
- let valueOptionsFormatted = valueOptions;
27
- if (colDef.valueFormatter) {
28
- valueOptionsFormatted = valueOptionsFormatted.map(option => {
21
+ const valueFormatter = colDef.valueFormatter;
22
+ for (let i = 0; i < valueOptions.length; i += 1) {
23
+ const option = valueOptions[i];
24
+ let value;
25
+ if (valueFormatter) {
29
26
  if (typeof option === 'object') {
30
- return option;
27
+ value = option.label;
28
+ } else {
29
+ value = String(colDef.valueFormatter(option, row, colDef, {
30
+ current: api
31
+ }));
31
32
  }
32
- return String(colDef.valueFormatter(option, row, colDef, {
33
- current: api
34
- }));
35
- });
33
+ } else {
34
+ value = typeof option === 'object' ? option.label : option;
35
+ }
36
+ callback(value, i);
36
37
  }
37
- return valueOptionsFormatted.map(option => typeof option === 'object' ? option.label : option);
38
38
  };
39
+ const commaRegex = /,/g;
40
+ const commaReplacement = 'CHAR(44)';
41
+
39
42
  /**
40
43
  * FIXME: This function mutates the colspan info, but colspan info assumes that the columns
41
44
  * passed to it are always consistent. In this case, the exported columns may differ from the
@@ -43,11 +46,15 @@ const getFormattedValueOptions = (colDef, row, valueOptions, api) => {
43
46
  * The caller of this function MUST call `resetColSpan()` before and after usage.
44
47
  */
45
48
  const serializeRowUnsafe = (id, columns, apiRef, defaultValueOptionsFormulae, options) => {
46
- const row = {};
49
+ const serializedRow = {};
47
50
  const dataValidation = {};
48
51
  const mergedCells = [];
49
- const firstCellParams = apiRef.current.getCellParams(id, columns[0].field);
50
- const outlineLevel = firstCellParams.rowNode.depth;
52
+ const row = apiRef.current.getRow(id);
53
+ const rowNode = apiRef.current.getRowNode(id);
54
+ if (!row || !rowNode) {
55
+ throw new Error(`No row with id #${id} found`);
56
+ }
57
+ const outlineLevel = rowNode.depth;
51
58
  const hasColSpan = (0, _internals.gridHasColSpanSelector)(apiRef);
52
59
  if (hasColSpan) {
53
60
  // `colSpan` is only calculated for rendered rows, so we need to calculate it during export for every row
@@ -69,25 +76,32 @@ const serializeRowUnsafe = (id, columns, apiRef, defaultValueOptionsFormulae, op
69
76
  rightIndex: colIndex + colSpanInfo.cellProps.colSpan
70
77
  });
71
78
  }
72
- const cellParams = apiRef.current.getCellParams(id, column.field);
73
79
  let cellValue;
74
- switch (cellParams.colDef.type) {
80
+ switch (column.type) {
75
81
  case 'singleSelect':
76
82
  {
77
- const castColumn = cellParams.colDef;
83
+ const castColumn = column;
78
84
  if (typeof castColumn.valueOptions === 'function') {
79
85
  // If value option depends on the row, set specific options to the cell
80
86
  // This dataValidation is buggy with LibreOffice and does not allow to have coma
81
87
  const valueOptions = castColumn.valueOptions({
82
88
  id,
83
89
  row,
84
- field: cellParams.field
90
+ field: column.field
91
+ });
92
+ let formulae = '"';
93
+ getFormattedValueOptions(castColumn, row, valueOptions, apiRef.current, (value, index) => {
94
+ const formatted = value.toString().replace(commaRegex, commaReplacement);
95
+ formulae += formatted;
96
+ if (index < valueOptions.length - 1) {
97
+ formulae += ',';
98
+ }
85
99
  });
86
- const formattedValueOptions = getFormattedValueOptions(castColumn, row, valueOptions, apiRef.current);
100
+ formulae += '"';
87
101
  dataValidation[castColumn.field] = {
88
102
  type: 'list',
89
103
  allowBlank: true,
90
- formulae: [`"${formattedValueOptions.map(x => x.toString().replaceAll(',', 'CHAR(44)')).join(',')}"`]
104
+ formulae: [formulae]
91
105
  };
92
106
  } else {
93
107
  const address = defaultValueOptionsFormulae[column.field].address;
@@ -99,22 +113,22 @@ const serializeRowUnsafe = (id, columns, apiRef, defaultValueOptionsFormulae, op
99
113
  formulae: [address]
100
114
  };
101
115
  }
102
- const formattedValue = apiRef.current.getCellParams(id, castColumn.field).formattedValue;
116
+ const formattedValue = apiRef.current.getRowFormattedValue(row, castColumn);
103
117
  if (process.env.NODE_ENV !== 'production') {
104
- if (String(cellParams.formattedValue) === '[object Object]') {
118
+ if (String(formattedValue) === '[object Object]') {
105
119
  (0, _warning.warnOnce)(['MUI X: When the value of a field is an object or a `renderCell` is provided, the Excel export might not display the value correctly.', 'You can provide a `valueFormatter` with a string representation to be used.']);
106
120
  }
107
121
  }
108
122
  if ((0, _internals.isObject)(formattedValue)) {
109
- row[castColumn.field] = formattedValue?.label;
123
+ serializedRow[castColumn.field] = formattedValue?.label;
110
124
  } else {
111
- row[castColumn.field] = formattedValue;
125
+ serializedRow[castColumn.field] = formattedValue;
112
126
  }
113
127
  break;
114
128
  }
115
129
  case 'boolean':
116
130
  case 'number':
117
- cellValue = apiRef.current.getCellParams(id, column.field).value;
131
+ cellValue = apiRef.current.getRowValue(row, column);
118
132
  break;
119
133
  case 'date':
120
134
  case 'dateTime':
@@ -122,21 +136,21 @@ const serializeRowUnsafe = (id, columns, apiRef, defaultValueOptionsFormulae, op
122
136
  // Excel does not do any timezone conversion, so we create a date using UTC instead of local timezone
123
137
  // Solution from: https://github.com/exceljs/exceljs/issues/486#issuecomment-432557582
124
138
  // About Date.UTC(): https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/UTC#exemples
125
- const value = apiRef.current.getCellParams(id, column.field).value;
139
+ const value = apiRef.current.getRowValue(row, column);
126
140
  // value may be `undefined` in auto-generated grouping rows
127
141
  if (!value) {
128
142
  break;
129
143
  }
130
144
  const utcDate = new Date(Date.UTC(value.getFullYear(), value.getMonth(), value.getDate(), value.getHours(), value.getMinutes(), value.getSeconds()));
131
- row[column.field] = utcDate;
145
+ serializedRow[column.field] = utcDate;
132
146
  break;
133
147
  }
134
148
  case 'actions':
135
149
  break;
136
150
  default:
137
- cellValue = apiRef.current.getCellParams(id, column.field).formattedValue;
151
+ cellValue = apiRef.current.getRowFormattedValue(row, column);
138
152
  if (process.env.NODE_ENV !== 'production') {
139
- if (String(cellParams.formattedValue) === '[object Object]') {
153
+ if (String(cellValue) === '[object Object]') {
140
154
  (0, _warning.warnOnce)(['MUI X: When the value of a field is an object or a `renderCell` is provided, the Excel export might not display the value correctly.', 'You can provide a `valueFormatter` with a string representation to be used.']);
141
155
  }
142
156
  }
@@ -149,11 +163,11 @@ const serializeRowUnsafe = (id, columns, apiRef, defaultValueOptionsFormulae, op
149
163
  }
150
164
  }
151
165
  if (typeof cellValue !== 'undefined') {
152
- row[column.field] = cellValue;
166
+ serializedRow[column.field] = cellValue;
153
167
  }
154
168
  });
155
169
  return {
156
- row,
170
+ row: serializedRow,
157
171
  dataValidation,
158
172
  outlineLevel,
159
173
  mergedCells
@@ -184,120 +198,39 @@ const serializeColumn = (column, columnsStyles) => {
184
198
  };
185
199
  };
186
200
  exports.serializeColumn = serializeColumn;
187
- const addColumnGroupingHeaders = (worksheet, columns, columnGroupPaths, columnGroupDetails) => {
188
- const maxDepth = Math.max(...columns.map(({
189
- key
190
- }) => columnGroupPaths[key]?.length ?? 0));
191
- if (maxDepth === 0) {
192
- return;
193
- }
194
- for (let rowIndex = 0; rowIndex < maxDepth; rowIndex += 1) {
195
- const row = columns.map(({
196
- key
197
- }) => {
198
- const groupingPath = columnGroupPaths[key];
199
- if (groupingPath.length <= rowIndex) {
200
- return {
201
- groupId: null,
202
- parents: groupingPath
203
- };
204
- }
205
- return (0, _extends2.default)({}, columnGroupDetails[groupingPath[rowIndex]], {
206
- parents: groupingPath.slice(0, rowIndex)
207
- });
208
- });
209
- const newRow = worksheet.addRow(row.map(group => group.groupId === null ? null : group?.headerName ?? group.groupId));
210
-
211
- // use `rowCount`, since worksheet can have additional rows added in `exceljsPreProcess`
212
- const lastRowIndex = newRow.worksheet.rowCount;
213
- let leftIndex = 0;
214
- let rightIndex = 1;
215
- while (rightIndex < columns.length) {
216
- const {
217
- groupId: leftGroupId,
218
- parents: leftParents
219
- } = row[leftIndex];
220
- const {
221
- groupId: rightGroupId,
222
- parents: rightParents
223
- } = row[rightIndex];
224
- const areInSameGroup = leftGroupId === rightGroupId && leftParents.length === rightParents.length && leftParents.every((leftParent, index) => rightParents[index] === leftParent);
225
- if (areInSameGroup) {
226
- rightIndex += 1;
227
- } else {
228
- if (rightIndex - leftIndex > 1) {
229
- worksheet.mergeCells(lastRowIndex, leftIndex + 1, lastRowIndex, rightIndex);
230
- }
231
- leftIndex = rightIndex;
232
- rightIndex += 1;
233
- }
234
- }
235
- if (rightIndex - leftIndex > 1) {
236
- worksheet.mergeCells(lastRowIndex, leftIndex + 1, lastRowIndex, rightIndex);
237
- }
238
- }
239
- };
240
201
  function serializeColumns(columns, styles) {
241
202
  return columns.map(column => serializeColumn(column, styles));
242
203
  }
243
204
  async function getDataForValueOptionsSheet(columns, valueOptionsSheetName, api) {
244
- const candidateColumns = columns.filter(column => (0, _internals.isSingleSelectColDef)(column) && Array.isArray(column.valueOptions));
245
-
246
205
  // Creates a temp worksheet to obtain the column letters
247
- const excelJS = await getExcelJs();
206
+ const excelJS = await (0, _utils.getExcelJs)();
248
207
  const workbook = new excelJS.Workbook();
249
208
  const worksheet = workbook.addWorksheet('Sheet1');
250
- worksheet.columns = candidateColumns.map(column => ({
251
- key: column.field
252
- }));
253
- return candidateColumns.reduce((acc, column) => {
254
- const singleSelectColumn = column;
255
- const formattedValueOptions = getFormattedValueOptions(singleSelectColumn, {}, singleSelectColumn.valueOptions, api);
209
+ const record = {};
210
+ const worksheetColumns = [];
211
+ for (let i = 0; i < columns.length; i += 1) {
212
+ const column = columns[i];
213
+ const isCandidateColumn = (0, _internals.isSingleSelectColDef)(column) && Array.isArray(column.valueOptions);
214
+ if (!isCandidateColumn) {
215
+ continue;
216
+ }
217
+ worksheetColumns.push({
218
+ key: column.field
219
+ });
220
+ worksheet.columns = worksheetColumns;
256
221
  const header = column.headerName ?? column.field;
257
- const values = [header, ...formattedValueOptions];
222
+ const values = [header];
223
+ getFormattedValueOptions(column, {}, column.valueOptions, api, value => {
224
+ values.push(value);
225
+ });
258
226
  const letter = worksheet.getColumn(column.field).letter;
259
227
  const address = `${valueOptionsSheetName}!$${letter}$2:$${letter}$${values.length}`;
260
- acc[column.field] = {
228
+ record[column.field] = {
261
229
  values,
262
230
  address
263
231
  };
264
- return acc;
265
- }, {});
266
- }
267
- function addSerializedRowToWorksheet(serializedRow, worksheet) {
268
- const {
269
- row,
270
- dataValidation,
271
- outlineLevel,
272
- mergedCells
273
- } = serializedRow;
274
- const newRow = worksheet.addRow(row);
275
- Object.keys(dataValidation).forEach(field => {
276
- newRow.getCell(field).dataValidation = (0, _extends2.default)({}, dataValidation[field]);
277
- });
278
- if (outlineLevel) {
279
- newRow.outlineLevel = outlineLevel;
280
232
  }
281
-
282
- // use `rowCount`, since worksheet can have additional rows added in `exceljsPreProcess`
283
- const lastRowIndex = newRow.worksheet.rowCount;
284
- mergedCells.forEach(mergedCell => {
285
- worksheet.mergeCells(lastRowIndex, mergedCell.leftIndex, lastRowIndex, mergedCell.rightIndex);
286
- });
287
- }
288
- async function createValueOptionsSheetIfNeeded(valueOptionsData, sheetName, workbook) {
289
- if (Object.keys(valueOptionsData).length === 0) {
290
- return;
291
- }
292
- const valueOptionsWorksheet = workbook.addWorksheet(sheetName);
293
- valueOptionsWorksheet.columns = Object.keys(valueOptionsData).map(key => ({
294
- key
295
- }));
296
- Object.entries(valueOptionsData).forEach(([field, {
297
- values
298
- }]) => {
299
- valueOptionsWorksheet.getColumn(field).values = values;
300
- });
233
+ return record;
301
234
  }
302
235
  async function buildExcel(options, apiRef) {
303
236
  const {
@@ -310,7 +243,7 @@ async function buildExcel(options, apiRef) {
310
243
  exceljsPostProcess,
311
244
  columnsStyles = {}
312
245
  } = options;
313
- const excelJS = await getExcelJs();
246
+ const excelJS = await (0, _utils.getExcelJs)();
314
247
  const workbook = new excelJS.Workbook();
315
248
  const worksheet = workbook.addWorksheet('Sheet1');
316
249
  const serializedColumns = serializeColumns(columns, columnsStyles);
@@ -326,17 +259,17 @@ async function buildExcel(options, apiRef) {
326
259
  acc[column.field] = apiRef.current.getColumnGroupPath(column.field);
327
260
  return acc;
328
261
  }, {});
329
- addColumnGroupingHeaders(worksheet, serializedColumns, columnGroupPaths, apiRef.current.getAllGroupDetails());
262
+ (0, _utils.addColumnGroupingHeaders)(worksheet, serializedColumns, columnGroupPaths, apiRef.current.getAllGroupDetails());
330
263
  }
331
264
  if (includeHeaders) {
332
265
  worksheet.addRow(columns.map(column => column.headerName ?? column.field));
333
266
  }
334
267
  const valueOptionsData = await getDataForValueOptionsSheet(columns, valueOptionsSheetName, apiRef.current);
335
- createValueOptionsSheetIfNeeded(valueOptionsData, valueOptionsSheetName, workbook);
268
+ (0, _utils.createValueOptionsSheetIfNeeded)(valueOptionsData, valueOptionsSheetName, workbook);
336
269
  apiRef.current.resetColSpan();
337
270
  rowIds.forEach(id => {
338
271
  const serializedRow = serializeRowUnsafe(id, columns, apiRef, valueOptionsData, options);
339
- addSerializedRowToWorksheet(serializedRow, worksheet);
272
+ (0, _utils.addSerializedRowToWorksheet)(serializedRow, worksheet);
340
273
  });
341
274
  apiRef.current.resetColSpan();
342
275
  if (exceljsPostProcess) {
@@ -346,50 +279,4 @@ async function buildExcel(options, apiRef) {
346
279
  });
347
280
  }
348
281
  return workbook;
349
- }
350
- function setupExcelExportWebWorker(workerOptions = {}) {
351
- // eslint-disable-next-line no-restricted-globals
352
- addEventListener('message', async event => {
353
- const {
354
- serializedColumns,
355
- serializedRows,
356
- options,
357
- valueOptionsSheetName,
358
- valueOptionsData,
359
- columnGroupDetails,
360
- columnGroupPaths
361
- } = event.data;
362
- const {
363
- exceljsPostProcess,
364
- exceljsPreProcess
365
- } = workerOptions;
366
- const excelJS = await getExcelJs();
367
- const workbook = new excelJS.Workbook();
368
- const worksheet = workbook.addWorksheet('Sheet1');
369
- worksheet.columns = serializedColumns;
370
- if (exceljsPreProcess) {
371
- await exceljsPreProcess({
372
- workbook,
373
- worksheet
374
- });
375
- }
376
- if (options.includeColumnGroupsHeaders) {
377
- addColumnGroupingHeaders(worksheet, serializedColumns, columnGroupPaths, columnGroupDetails);
378
- }
379
- const includeHeaders = options.includeHeaders ?? true;
380
- if (includeHeaders) {
381
- worksheet.addRow(serializedColumns.map(column => column.headerText));
382
- }
383
- createValueOptionsSheetIfNeeded(valueOptionsData, valueOptionsSheetName, workbook);
384
- serializedRows.forEach(serializedRow => {
385
- addSerializedRowToWorksheet(serializedRow, worksheet);
386
- });
387
- if (exceljsPostProcess) {
388
- await exceljsPostProcess({
389
- workbook,
390
- worksheet
391
- });
392
- }
393
- postMessage(await workbook.xlsx.writeBuffer());
394
- });
395
282
  }
@@ -0,0 +1,2 @@
1
+ import type { GridExcelExportOptions } from '../gridExcelExportInterface';
2
+ export declare function setupExcelExportWebWorker(workerOptions?: Pick<GridExcelExportOptions, 'exceljsPostProcess' | 'exceljsPreProcess'>): void;
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.setupExcelExportWebWorker = setupExcelExportWebWorker;
7
+ var _utils = require("./utils");
8
+ function setupExcelExportWebWorker(workerOptions = {}) {
9
+ // eslint-disable-next-line no-restricted-globals
10
+ addEventListener('message', async event => {
11
+ const {
12
+ namespace,
13
+ serializedColumns,
14
+ serializedRows,
15
+ options,
16
+ valueOptionsSheetName,
17
+ valueOptionsData,
18
+ columnGroupDetails,
19
+ columnGroupPaths
20
+ } = event.data;
21
+
22
+ // workers share the pub-sub channel namespace. Use this property to filter out messages.
23
+ if (namespace !== 'mui-x-data-grid-export') {
24
+ return;
25
+ }
26
+ const {
27
+ exceljsPostProcess,
28
+ exceljsPreProcess
29
+ } = workerOptions;
30
+ const excelJS = await (0, _utils.getExcelJs)();
31
+ const workbook = new excelJS.Workbook();
32
+ const worksheet = workbook.addWorksheet('Sheet1');
33
+ worksheet.columns = serializedColumns;
34
+ if (exceljsPreProcess) {
35
+ await exceljsPreProcess({
36
+ workbook,
37
+ worksheet
38
+ });
39
+ }
40
+ if (options.includeColumnGroupsHeaders) {
41
+ (0, _utils.addColumnGroupingHeaders)(worksheet, serializedColumns, columnGroupPaths, columnGroupDetails);
42
+ }
43
+ const includeHeaders = options.includeHeaders ?? true;
44
+ if (includeHeaders) {
45
+ worksheet.addRow(serializedColumns.map(column => column.headerText));
46
+ }
47
+ (0, _utils.createValueOptionsSheetIfNeeded)(valueOptionsData, valueOptionsSheetName, workbook);
48
+ serializedRows.forEach(serializedRow => {
49
+ (0, _utils.addSerializedRowToWorksheet)(serializedRow, worksheet);
50
+ });
51
+ if (exceljsPostProcess) {
52
+ await exceljsPostProcess({
53
+ workbook,
54
+ worksheet
55
+ });
56
+ }
57
+ postMessage(await workbook.xlsx.writeBuffer());
58
+ });
59
+ }
@@ -0,0 +1,36 @@
1
+ import type * as Excel from 'exceljs';
2
+ import type { GridColumnGroupLookup } from '@mui/x-data-grid/internals';
3
+ import type { GridExcelExportOptions } from '../gridExcelExportInterface';
4
+ export declare const getExcelJs: () => Promise<typeof Excel>;
5
+ export interface SerializedRow {
6
+ row: Record<string, undefined | number | boolean | string | Date>;
7
+ dataValidation: Record<string, Excel.DataValidation>;
8
+ outlineLevel: number;
9
+ mergedCells: {
10
+ leftIndex: number;
11
+ rightIndex: number;
12
+ }[];
13
+ }
14
+ export declare const addColumnGroupingHeaders: (worksheet: Excel.Worksheet, columns: SerializedColumns, columnGroupPaths: Record<string, string[]>, columnGroupDetails: GridColumnGroupLookup) => void;
15
+ export type SerializedColumns = Array<{
16
+ key: string;
17
+ width: number;
18
+ style: Partial<Excel.Style>;
19
+ headerText: string;
20
+ }>;
21
+ export type ValueOptionsData = Record<string, {
22
+ values: (string | number)[];
23
+ address: string;
24
+ }>;
25
+ export declare function addSerializedRowToWorksheet(serializedRow: SerializedRow, worksheet: Excel.Worksheet): void;
26
+ export declare function createValueOptionsSheetIfNeeded(valueOptionsData: ValueOptionsData, sheetName: string, workbook: Excel.Workbook): Promise<void>;
27
+ export interface ExcelExportInitEvent {
28
+ namespace?: string;
29
+ serializedColumns: SerializedColumns;
30
+ serializedRows: SerializedRow[];
31
+ valueOptionsSheetName: string;
32
+ columnGroupPaths: Record<string, string[]>;
33
+ columnGroupDetails: GridColumnGroupLookup;
34
+ valueOptionsData: ValueOptionsData;
35
+ options: Omit<GridExcelExportOptions, 'exceljsPreProcess' | 'exceljsPostProcess' | 'columnsStyles' | 'valueOptionsSheetName'>;
36
+ }