@mui/x-data-grid-premium 8.0.0-alpha.10 → 8.0.0-alpha.12

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 (364) hide show
  1. package/CHANGELOG.md +267 -2
  2. package/DataGridPremium/DataGrid.d.ts +1 -1
  3. package/DataGridPremium/DataGridPremium.d.ts +6 -6
  4. package/DataGridPremium/DataGridPremium.js +20 -6
  5. package/DataGridPremium/index.d.ts +3 -3
  6. package/DataGridPremium/useDataGridPremiumComponent.d.ts +3 -3
  7. package/DataGridPremium/useDataGridPremiumComponent.js +5 -4
  8. package/DataGridPremium/useDataGridPremiumProps.d.ts +2 -2
  9. package/components/GridAggregationHeader.d.ts +2 -2
  10. package/components/GridAggregationRowOverlay.d.ts +3 -0
  11. package/components/GridAggregationRowOverlay.js +44 -0
  12. package/components/GridBottomContainer.d.ts +3 -0
  13. package/components/GridBottomContainer.js +51 -0
  14. package/components/GridColumnMenuAggregationItem.d.ts +2 -2
  15. package/components/GridColumnMenuAggregationItem.js +32 -42
  16. package/components/GridColumnMenuRowGroupItem.d.ts +1 -1
  17. package/components/GridColumnMenuRowUngroupItem.d.ts +1 -1
  18. package/components/GridDataSourceGroupingCriteriaCell.d.ts +2 -2
  19. package/components/GridDataSourceGroupingCriteriaCell.js +3 -6
  20. package/components/GridExcelExportMenuItem.d.ts +3 -3
  21. package/components/GridFooterCell.d.ts +2 -2
  22. package/components/GridGroupingColumnFooterCell.d.ts +1 -1
  23. package/components/GridGroupingColumnLeafCell.d.ts +1 -1
  24. package/components/GridGroupingCriteriaCell.d.ts +2 -2
  25. package/components/GridPremiumColumnMenu.d.ts +26 -26
  26. package/components/index.d.ts +5 -5
  27. package/components/promptControl/GridToolbarPromptControl.d.ts +22 -22
  28. package/components/promptControl/RecordButton.d.ts +9 -9
  29. package/components/promptControl/index.d.ts +1 -1
  30. package/components/reexports.d.ts +1 -1
  31. package/constants/dataGridPremiumDefaultSlotsComponents.d.ts +1 -1
  32. package/constants/dataGridPremiumDefaultSlotsComponents.js +3 -1
  33. package/esm/DataGridPremium/DataGrid.d.ts +8 -0
  34. package/esm/DataGridPremium/DataGridPremium.d.ts +16 -0
  35. package/esm/DataGridPremium/DataGridPremium.js +20 -6
  36. package/esm/DataGridPremium/index.d.ts +3 -0
  37. package/esm/DataGridPremium/useDataGridPremiumComponent.d.ts +4 -0
  38. package/esm/DataGridPremium/useDataGridPremiumComponent.js +6 -5
  39. package/esm/DataGridPremium/useDataGridPremiumProps.d.ts +6 -0
  40. package/esm/components/GridAggregationHeader.d.ts +7 -0
  41. package/esm/components/GridAggregationRowOverlay.d.ts +3 -0
  42. package/esm/components/GridAggregationRowOverlay.js +37 -0
  43. package/esm/components/GridBottomContainer.d.ts +3 -0
  44. package/esm/components/GridBottomContainer.js +43 -0
  45. package/esm/components/GridColumnMenuAggregationItem.d.ts +7 -0
  46. package/esm/components/GridColumnMenuAggregationItem.js +32 -42
  47. package/esm/components/GridColumnMenuRowGroupItem.d.ts +3 -0
  48. package/esm/components/GridColumnMenuRowUngroupItem.d.ts +3 -0
  49. package/esm/components/GridDataSourceGroupingCriteriaCell.d.ts +7 -0
  50. package/esm/components/GridDataSourceGroupingCriteriaCell.js +4 -7
  51. package/esm/components/GridExcelExportMenuItem.d.ts +9 -0
  52. package/esm/components/GridFooterCell.d.ts +9 -0
  53. package/esm/components/GridGroupingColumnFooterCell.d.ts +4 -0
  54. package/esm/components/GridGroupingColumnLeafCell.d.ts +4 -0
  55. package/esm/components/GridGroupingCriteriaCell.d.ts +7 -0
  56. package/esm/components/GridPremiumColumnMenu.d.ts +33 -0
  57. package/esm/components/index.d.ts +5 -0
  58. package/esm/components/promptControl/GridToolbarPromptControl.d.ts +26 -0
  59. package/esm/components/promptControl/RecordButton.d.ts +16 -0
  60. package/esm/components/promptControl/index.d.ts +1 -0
  61. package/esm/components/reexports.d.ts +1 -0
  62. package/esm/constants/dataGridPremiumDefaultSlotsComponents.d.ts +2 -0
  63. package/esm/constants/dataGridPremiumDefaultSlotsComponents.js +3 -1
  64. package/esm/hooks/features/aggregation/createAggregationLookup.d.ts +17 -0
  65. package/esm/hooks/features/aggregation/createAggregationLookup.js +3 -3
  66. package/esm/hooks/features/aggregation/gridAggregationFunctions.d.ts +8 -0
  67. package/esm/hooks/features/aggregation/gridAggregationInterfaces.d.ts +129 -0
  68. package/esm/hooks/features/aggregation/gridAggregationSelectors.d.ts +13 -0
  69. package/esm/hooks/features/aggregation/gridAggregationSelectors.js +2 -2
  70. package/esm/hooks/features/aggregation/gridAggregationUtils.d.ts +62 -0
  71. package/esm/hooks/features/aggregation/gridAggregationUtils.js +1 -1
  72. package/esm/hooks/features/aggregation/index.d.ts +4 -0
  73. package/esm/hooks/features/aggregation/useGridAggregation.d.ts +6 -0
  74. package/esm/hooks/features/aggregation/useGridAggregation.js +0 -2
  75. package/esm/hooks/features/aggregation/useGridAggregationPreProcessors.d.ts +4 -0
  76. package/esm/hooks/features/aggregation/wrapColumnWithAggregation.d.ts +81 -0
  77. package/esm/hooks/features/aggregation/wrapColumnWithAggregation.js +6 -5
  78. package/esm/hooks/features/cellSelection/gridCellSelectionInterfaces.d.ts +40 -0
  79. package/esm/hooks/features/cellSelection/gridCellSelectionSelector.d.ts +2 -0
  80. package/esm/hooks/features/cellSelection/gridCellSelectionSelector.js +2 -1
  81. package/esm/hooks/features/cellSelection/index.d.ts +1 -0
  82. package/esm/hooks/features/cellSelection/useGridCellSelection.d.ts +6 -0
  83. package/esm/hooks/features/cellSelection/useGridCellSelection.js +15 -13
  84. package/esm/hooks/features/clipboard/useGridClipboardImport.d.ts +4 -0
  85. package/esm/hooks/features/clipboard/useGridClipboardImport.js +2 -2
  86. package/esm/hooks/features/dataSource/models.d.ts +54 -0
  87. package/esm/hooks/features/dataSource/useGridDataSourcePremium.d.ts +4 -0
  88. package/esm/hooks/features/dataSource/useGridDataSourcePremium.js +10 -4
  89. package/esm/hooks/features/export/gridExcelExportInterface.d.ts +71 -0
  90. package/esm/hooks/features/export/index.d.ts +2 -0
  91. package/esm/hooks/features/export/index.js +1 -1
  92. package/esm/hooks/features/export/serializer/excelSerializer.d.ts +40 -0
  93. package/esm/hooks/features/export/serializer/excelSerializer.js +69 -180
  94. package/esm/hooks/features/export/serializer/setupExcelExportWebWorker.d.ts +2 -0
  95. package/esm/hooks/features/export/serializer/setupExcelExportWebWorker.js +53 -0
  96. package/esm/hooks/features/export/serializer/utils.d.ts +36 -0
  97. package/esm/hooks/features/export/serializer/utils.js +93 -0
  98. package/esm/hooks/features/export/useGridExcelExport.d.ts +11 -0
  99. package/esm/hooks/features/export/useGridExcelExport.js +11 -5
  100. package/esm/hooks/features/index.d.ts +5 -0
  101. package/esm/hooks/features/promptControl/api.d.ts +2 -0
  102. package/esm/hooks/features/promptControl/index.d.ts +2 -0
  103. package/esm/hooks/features/promptControl/types.d.ts +25 -0
  104. package/esm/hooks/features/rowGrouping/createGroupingColDef.d.ts +57 -0
  105. package/esm/hooks/features/rowGrouping/createGroupingColDef.js +5 -5
  106. package/esm/hooks/features/rowGrouping/gridRowGroupingInterfaces.d.ts +44 -0
  107. package/esm/hooks/features/rowGrouping/gridRowGroupingSelector.d.ts +3 -0
  108. package/esm/hooks/features/rowGrouping/gridRowGroupingSelector.js +2 -2
  109. package/esm/hooks/features/rowGrouping/gridRowGroupingUtils.d.ts +54 -0
  110. package/esm/hooks/features/rowGrouping/gridRowGroupingUtils.js +3 -1
  111. package/esm/hooks/features/rowGrouping/index.d.ts +3 -0
  112. package/esm/hooks/features/rowGrouping/useGridDataSourceRowGroupingPreProcessors.d.ts +4 -0
  113. package/esm/hooks/features/rowGrouping/useGridRowGrouping.d.ts +11 -0
  114. package/esm/hooks/features/rowGrouping/useGridRowGrouping.js +0 -1
  115. package/esm/hooks/features/rowGrouping/useGridRowGroupingPreProcessors.d.ts +4 -0
  116. package/esm/hooks/features/rows/index.d.ts +1 -0
  117. package/esm/hooks/features/rows/useGridRowAriaAttributes.d.ts +1 -0
  118. package/esm/hooks/index.d.ts +2 -0
  119. package/esm/hooks/utils/index.d.ts +1 -0
  120. package/esm/hooks/utils/useGridApiContext.d.ts +4 -0
  121. package/esm/hooks/utils/useGridApiRef.d.ts +4 -0
  122. package/esm/hooks/utils/useGridAriaAttributes.d.ts +2 -0
  123. package/esm/hooks/utils/useGridPrivateApiContext.d.ts +2 -0
  124. package/esm/hooks/utils/useGridRootProps.d.ts +2 -0
  125. package/esm/hooks/utils/useKeepGroupedColumnsHidden.d.ts +12 -0
  126. package/esm/index.d.ts +29 -0
  127. package/esm/index.js +7 -0
  128. package/esm/locales.d.ts +1 -0
  129. package/esm/material/icons.d.ts +15 -0
  130. package/esm/material/index.d.ts +8 -0
  131. package/esm/models/dataGridPremiumProps.d.ts +163 -0
  132. package/esm/models/gridApiPremium.d.ts +14 -0
  133. package/esm/models/gridGroupingValueGetter.d.ts +4 -0
  134. package/esm/models/gridPastedValueParser.d.ts +4 -0
  135. package/esm/models/gridPremiumIconSlotsComponent.d.ts +28 -0
  136. package/esm/models/gridPremiumSlotsComponent.d.ts +7 -0
  137. package/esm/models/gridStatePremium.d.ts +18 -0
  138. package/esm/models/index.d.ts +4 -0
  139. package/esm/package.json +1 -0
  140. package/esm/setupExcelExportWebWorker.d.ts +1 -0
  141. package/esm/setupExcelExportWebWorker.js +1 -0
  142. package/esm/themeAugmentation/index.d.ts +2 -0
  143. package/esm/themeAugmentation/overrides.d.ts +7 -0
  144. package/esm/themeAugmentation/props.d.ts +15 -0
  145. package/esm/typeOverloads/index.d.ts +2 -0
  146. package/esm/typeOverloads/modules.d.ts +97 -0
  147. package/esm/typeOverloads/reexports.d.ts +17 -0
  148. package/esm/utils/releaseInfo.d.ts +1 -0
  149. package/esm/utils/releaseInfo.js +1 -1
  150. package/hooks/features/aggregation/createAggregationLookup.d.ts +16 -10
  151. package/hooks/features/aggregation/createAggregationLookup.js +2 -2
  152. package/hooks/features/aggregation/gridAggregationFunctions.d.ts +7 -7
  153. package/hooks/features/aggregation/gridAggregationInterfaces.d.ts +81 -82
  154. package/hooks/features/aggregation/gridAggregationSelectors.d.ts +3 -3
  155. package/hooks/features/aggregation/gridAggregationSelectors.js +1 -2
  156. package/hooks/features/aggregation/gridAggregationUtils.d.ts +42 -25
  157. package/hooks/features/aggregation/gridAggregationUtils.js +1 -1
  158. package/hooks/features/aggregation/index.d.ts +4 -4
  159. package/hooks/features/aggregation/useGridAggregation.d.ts +3 -3
  160. package/hooks/features/aggregation/useGridAggregation.js +0 -2
  161. package/hooks/features/aggregation/useGridAggregationPreProcessors.d.ts +3 -3
  162. package/hooks/features/aggregation/wrapColumnWithAggregation.d.ts +67 -62
  163. package/hooks/features/aggregation/wrapColumnWithAggregation.js +6 -5
  164. package/hooks/features/cellSelection/gridCellSelectionInterfaces.d.ts +34 -34
  165. package/hooks/features/cellSelection/gridCellSelectionSelector.d.ts +2 -2
  166. package/hooks/features/cellSelection/gridCellSelectionSelector.js +2 -2
  167. package/hooks/features/cellSelection/index.d.ts +1 -1
  168. package/hooks/features/cellSelection/useGridCellSelection.d.ts +3 -3
  169. package/hooks/features/cellSelection/useGridCellSelection.js +13 -11
  170. package/hooks/features/clipboard/useGridClipboardImport.d.ts +2 -2
  171. package/hooks/features/clipboard/useGridClipboardImport.js +2 -2
  172. package/hooks/features/dataSource/models.d.ts +41 -34
  173. package/hooks/features/dataSource/useGridDataSourcePremium.d.ts +3 -3
  174. package/hooks/features/dataSource/useGridDataSourcePremium.js +10 -4
  175. package/hooks/features/export/gridExcelExportInterface.d.ts +52 -52
  176. package/hooks/features/export/index.d.ts +2 -2
  177. package/hooks/features/export/index.js +2 -2
  178. package/hooks/features/export/serializer/excelSerializer.d.ts +23 -51
  179. package/hooks/features/export/serializer/excelSerializer.js +74 -187
  180. package/hooks/features/export/serializer/setupExcelExportWebWorker.d.ts +2 -0
  181. package/hooks/features/export/serializer/setupExcelExportWebWorker.js +59 -0
  182. package/hooks/features/export/serializer/utils.d.ts +36 -0
  183. package/hooks/features/export/serializer/utils.js +106 -0
  184. package/hooks/features/export/useGridExcelExport.d.ts +3 -3
  185. package/hooks/features/export/useGridExcelExport.js +10 -3
  186. package/hooks/features/index.d.ts +5 -5
  187. package/hooks/features/promptControl/api.d.ts +2 -2
  188. package/hooks/features/promptControl/index.d.ts +2 -2
  189. package/hooks/features/promptControl/types.d.ts +15 -15
  190. package/hooks/features/rowGrouping/createGroupingColDef.d.ts +44 -32
  191. package/hooks/features/rowGrouping/createGroupingColDef.js +4 -4
  192. package/hooks/features/rowGrouping/gridRowGroupingInterfaces.d.ts +32 -32
  193. package/hooks/features/rowGrouping/gridRowGroupingSelector.d.ts +2 -2
  194. package/hooks/features/rowGrouping/gridRowGroupingSelector.js +2 -2
  195. package/hooks/features/rowGrouping/gridRowGroupingUtils.d.ts +30 -22
  196. package/hooks/features/rowGrouping/gridRowGroupingUtils.js +3 -1
  197. package/hooks/features/rowGrouping/index.d.ts +3 -3
  198. package/hooks/features/rowGrouping/useGridDataSourceRowGroupingPreProcessors.d.ts +3 -3
  199. package/hooks/features/rowGrouping/useGridRowGrouping.d.ts +3 -3
  200. package/hooks/features/rowGrouping/useGridRowGrouping.js +0 -1
  201. package/hooks/features/rowGrouping/useGridRowGroupingPreProcessors.d.ts +3 -3
  202. package/hooks/features/rows/index.d.ts +1 -1
  203. package/hooks/features/rows/useGridRowAriaAttributes.d.ts +1 -1
  204. package/hooks/index.d.ts +2 -2
  205. package/hooks/utils/index.d.ts +1 -1
  206. package/hooks/utils/useGridApiContext.d.ts +4 -2
  207. package/hooks/utils/useGridApiRef.d.ts +2 -2
  208. package/hooks/utils/useGridAriaAttributes.d.ts +1 -1
  209. package/hooks/utils/useGridPrivateApiContext.d.ts +2 -2
  210. package/hooks/utils/useGridRootProps.d.ts +2 -2
  211. package/hooks/utils/useKeepGroupedColumnsHidden.d.ts +4 -4
  212. package/index.d.ts +10 -12
  213. package/index.js +1 -1
  214. package/locales.d.ts +1 -1
  215. package/material/icons.d.ts +6 -6
  216. package/material/index.d.ts +6 -6
  217. package/models/dataGridPremiumProps.d.ts +140 -134
  218. package/models/gridApiPremium.d.ts +4 -6
  219. package/models/gridGroupingValueGetter.d.ts +2 -2
  220. package/models/gridPastedValueParser.d.ts +2 -2
  221. package/models/gridPremiumIconSlotsComponent.d.ts +26 -26
  222. package/models/gridPremiumSlotsComponent.d.ts +2 -3
  223. package/models/gridStatePremium.d.ts +7 -7
  224. package/models/index.d.ts +4 -4
  225. package/modern/DataGridPremium/DataGrid.d.ts +8 -0
  226. package/modern/DataGridPremium/DataGridPremium.d.ts +16 -0
  227. package/modern/DataGridPremium/DataGridPremium.js +20 -6
  228. package/modern/DataGridPremium/index.d.ts +3 -0
  229. package/modern/DataGridPremium/useDataGridPremiumComponent.d.ts +4 -0
  230. package/modern/DataGridPremium/useDataGridPremiumComponent.js +6 -5
  231. package/modern/DataGridPremium/useDataGridPremiumProps.d.ts +6 -0
  232. package/modern/components/GridAggregationHeader.d.ts +7 -0
  233. package/modern/components/GridAggregationRowOverlay.d.ts +3 -0
  234. package/modern/components/GridAggregationRowOverlay.js +37 -0
  235. package/modern/components/GridBottomContainer.d.ts +3 -0
  236. package/modern/components/GridBottomContainer.js +43 -0
  237. package/modern/components/GridColumnMenuAggregationItem.d.ts +7 -0
  238. package/modern/components/GridColumnMenuAggregationItem.js +32 -42
  239. package/modern/components/GridColumnMenuRowGroupItem.d.ts +3 -0
  240. package/modern/components/GridColumnMenuRowUngroupItem.d.ts +3 -0
  241. package/modern/components/GridDataSourceGroupingCriteriaCell.d.ts +7 -0
  242. package/modern/components/GridDataSourceGroupingCriteriaCell.js +4 -7
  243. package/modern/components/GridExcelExportMenuItem.d.ts +9 -0
  244. package/modern/components/GridFooterCell.d.ts +9 -0
  245. package/modern/components/GridGroupingColumnFooterCell.d.ts +4 -0
  246. package/modern/components/GridGroupingColumnLeafCell.d.ts +4 -0
  247. package/modern/components/GridGroupingCriteriaCell.d.ts +7 -0
  248. package/modern/components/GridPremiumColumnMenu.d.ts +33 -0
  249. package/modern/components/index.d.ts +5 -0
  250. package/modern/components/promptControl/GridToolbarPromptControl.d.ts +26 -0
  251. package/modern/components/promptControl/RecordButton.d.ts +16 -0
  252. package/modern/components/promptControl/index.d.ts +1 -0
  253. package/modern/components/reexports.d.ts +1 -0
  254. package/modern/constants/dataGridPremiumDefaultSlotsComponents.d.ts +2 -0
  255. package/modern/constants/dataGridPremiumDefaultSlotsComponents.js +3 -1
  256. package/modern/hooks/features/aggregation/createAggregationLookup.d.ts +17 -0
  257. package/modern/hooks/features/aggregation/createAggregationLookup.js +3 -3
  258. package/modern/hooks/features/aggregation/gridAggregationFunctions.d.ts +8 -0
  259. package/modern/hooks/features/aggregation/gridAggregationInterfaces.d.ts +129 -0
  260. package/modern/hooks/features/aggregation/gridAggregationSelectors.d.ts +13 -0
  261. package/modern/hooks/features/aggregation/gridAggregationSelectors.js +2 -2
  262. package/modern/hooks/features/aggregation/gridAggregationUtils.d.ts +62 -0
  263. package/modern/hooks/features/aggregation/gridAggregationUtils.js +1 -1
  264. package/modern/hooks/features/aggregation/index.d.ts +4 -0
  265. package/modern/hooks/features/aggregation/useGridAggregation.d.ts +6 -0
  266. package/modern/hooks/features/aggregation/useGridAggregation.js +0 -2
  267. package/modern/hooks/features/aggregation/useGridAggregationPreProcessors.d.ts +4 -0
  268. package/modern/hooks/features/aggregation/wrapColumnWithAggregation.d.ts +81 -0
  269. package/modern/hooks/features/aggregation/wrapColumnWithAggregation.js +6 -5
  270. package/modern/hooks/features/cellSelection/gridCellSelectionInterfaces.d.ts +40 -0
  271. package/modern/hooks/features/cellSelection/gridCellSelectionSelector.d.ts +2 -0
  272. package/modern/hooks/features/cellSelection/gridCellSelectionSelector.js +2 -1
  273. package/modern/hooks/features/cellSelection/index.d.ts +1 -0
  274. package/modern/hooks/features/cellSelection/useGridCellSelection.d.ts +6 -0
  275. package/modern/hooks/features/cellSelection/useGridCellSelection.js +15 -13
  276. package/modern/hooks/features/clipboard/useGridClipboardImport.d.ts +4 -0
  277. package/modern/hooks/features/clipboard/useGridClipboardImport.js +2 -2
  278. package/modern/hooks/features/dataSource/models.d.ts +54 -0
  279. package/modern/hooks/features/dataSource/useGridDataSourcePremium.d.ts +4 -0
  280. package/modern/hooks/features/dataSource/useGridDataSourcePremium.js +10 -4
  281. package/modern/hooks/features/export/gridExcelExportInterface.d.ts +71 -0
  282. package/modern/hooks/features/export/index.d.ts +2 -0
  283. package/modern/hooks/features/export/index.js +1 -1
  284. package/modern/hooks/features/export/serializer/excelSerializer.d.ts +40 -0
  285. package/modern/hooks/features/export/serializer/excelSerializer.js +69 -180
  286. package/modern/hooks/features/export/serializer/setupExcelExportWebWorker.d.ts +2 -0
  287. package/modern/hooks/features/export/serializer/setupExcelExportWebWorker.js +53 -0
  288. package/modern/hooks/features/export/serializer/utils.d.ts +36 -0
  289. package/modern/hooks/features/export/serializer/utils.js +93 -0
  290. package/modern/hooks/features/export/useGridExcelExport.d.ts +11 -0
  291. package/modern/hooks/features/export/useGridExcelExport.js +11 -5
  292. package/modern/hooks/features/index.d.ts +5 -0
  293. package/modern/hooks/features/promptControl/api.d.ts +2 -0
  294. package/modern/hooks/features/promptControl/index.d.ts +2 -0
  295. package/modern/hooks/features/promptControl/types.d.ts +25 -0
  296. package/modern/hooks/features/rowGrouping/createGroupingColDef.d.ts +57 -0
  297. package/modern/hooks/features/rowGrouping/createGroupingColDef.js +5 -5
  298. package/modern/hooks/features/rowGrouping/gridRowGroupingInterfaces.d.ts +44 -0
  299. package/modern/hooks/features/rowGrouping/gridRowGroupingSelector.d.ts +3 -0
  300. package/modern/hooks/features/rowGrouping/gridRowGroupingSelector.js +2 -2
  301. package/modern/hooks/features/rowGrouping/gridRowGroupingUtils.d.ts +54 -0
  302. package/modern/hooks/features/rowGrouping/gridRowGroupingUtils.js +3 -1
  303. package/modern/hooks/features/rowGrouping/index.d.ts +3 -0
  304. package/modern/hooks/features/rowGrouping/useGridDataSourceRowGroupingPreProcessors.d.ts +4 -0
  305. package/modern/hooks/features/rowGrouping/useGridRowGrouping.d.ts +11 -0
  306. package/modern/hooks/features/rowGrouping/useGridRowGrouping.js +0 -1
  307. package/modern/hooks/features/rowGrouping/useGridRowGroupingPreProcessors.d.ts +4 -0
  308. package/modern/hooks/features/rows/index.d.ts +1 -0
  309. package/modern/hooks/features/rows/useGridRowAriaAttributes.d.ts +1 -0
  310. package/modern/hooks/index.d.ts +2 -0
  311. package/modern/hooks/utils/index.d.ts +1 -0
  312. package/modern/hooks/utils/useGridApiContext.d.ts +4 -0
  313. package/modern/hooks/utils/useGridApiRef.d.ts +4 -0
  314. package/modern/hooks/utils/useGridAriaAttributes.d.ts +2 -0
  315. package/modern/hooks/utils/useGridPrivateApiContext.d.ts +2 -0
  316. package/modern/hooks/utils/useGridRootProps.d.ts +2 -0
  317. package/modern/hooks/utils/useKeepGroupedColumnsHidden.d.ts +12 -0
  318. package/modern/index.d.ts +29 -0
  319. package/modern/index.js +1 -1
  320. package/modern/locales.d.ts +1 -0
  321. package/modern/material/icons.d.ts +15 -0
  322. package/modern/material/index.d.ts +8 -0
  323. package/modern/models/dataGridPremiumProps.d.ts +163 -0
  324. package/modern/models/gridApiPremium.d.ts +14 -0
  325. package/modern/models/gridGroupingValueGetter.d.ts +4 -0
  326. package/modern/models/gridPastedValueParser.d.ts +4 -0
  327. package/modern/models/gridPremiumIconSlotsComponent.d.ts +28 -0
  328. package/modern/models/gridPremiumSlotsComponent.d.ts +7 -0
  329. package/modern/models/gridStatePremium.d.ts +18 -0
  330. package/modern/models/index.d.ts +4 -0
  331. package/modern/package.json +1 -0
  332. package/modern/setupExcelExportWebWorker.d.ts +1 -0
  333. package/modern/setupExcelExportWebWorker.js +1 -0
  334. package/modern/themeAugmentation/index.d.ts +2 -0
  335. package/modern/themeAugmentation/overrides.d.ts +7 -0
  336. package/modern/themeAugmentation/props.d.ts +15 -0
  337. package/modern/typeOverloads/index.d.ts +2 -0
  338. package/modern/typeOverloads/modules.d.ts +97 -0
  339. package/modern/typeOverloads/reexports.d.ts +17 -0
  340. package/modern/utils/releaseInfo.d.ts +1 -0
  341. package/modern/utils/releaseInfo.js +1 -1
  342. package/package.json +39 -9
  343. package/setupExcelExportWebWorker.d.ts +1 -0
  344. package/setupExcelExportWebWorker.js +12 -0
  345. package/themeAugmentation/index.d.ts +2 -2
  346. package/themeAugmentation/overrides.d.ts +3 -4
  347. package/themeAugmentation/props.d.ts +9 -11
  348. package/tsconfig.build.tsbuildinfo +1 -0
  349. package/typeOverloads/index.d.ts +1 -1
  350. package/typeOverloads/modules.d.ts +75 -82
  351. package/typeOverloads/reexports.d.ts +5 -5
  352. package/utils/releaseInfo.d.ts +1 -1
  353. package/utils/releaseInfo.js +1 -1
  354. package/DataGridPremium/package.json +0 -6
  355. package/components/package.json +0 -6
  356. package/esm/hooks/features/dataSource/cache.js +0 -3
  357. package/hooks/features/dataSource/cache.d.ts +0 -2
  358. package/hooks/features/dataSource/cache.js +0 -9
  359. package/hooks/package.json +0 -6
  360. package/material/package.json +0 -6
  361. package/models/package.json +0 -6
  362. package/modern/hooks/features/dataSource/cache.js +0 -3
  363. package/themeAugmentation/package.json +0 -6
  364. package/typeOverloads/package.json +0 -6
@@ -3,11 +3,11 @@ import { GridFileExportOptions, GridExportFormat as GridExportFormatCommunity, G
3
3
  export type GridExportFormat = GridExportFormatCommunity | 'excel';
4
4
  export type GridExportExtension = GridExportExtensionCommunity | 'xlsx';
5
5
  export interface GridExceljsProcessInput {
6
- workbook: Excel.Workbook;
7
- worksheet: Excel.Worksheet;
6
+ workbook: Excel.Workbook;
7
+ worksheet: Excel.Worksheet;
8
8
  }
9
9
  export interface ColumnsStylesInterface {
10
- [field: string]: Partial<Excel.Style>;
10
+ [field: string]: Partial<Excel.Style>;
11
11
  }
12
12
  /**
13
13
  * The options to apply on the Excel export.
@@ -15,57 +15,57 @@ export interface ColumnsStylesInterface {
15
15
  * - [Excel export](/x/react-data-grid/export/#excel-export)
16
16
  */
17
17
  export interface GridExcelExportOptions extends GridFileExportOptions {
18
- /**
19
- * Function to return the Worker instance to be called.
20
- * @returns {() => Worker} A Worker instance.
21
- */
22
- worker?: () => Worker;
23
- /**
24
- * Name given to the worksheet containing the columns valueOptions.
25
- * valueOptions are added to this worksheet if they are provided as an array.
26
- */
27
- valueOptionsSheetName?: string;
28
- /**
29
- * Method called before adding the rows to the workbook.
30
- * Not supported when `worker` is set.
31
- * To use with web workers, use the option in `setupExcelExportWebWorker`.
32
- * @param {GridExceljsProcessInput} processInput object containing the workbook and the worksheet.
33
- * @returns {Promise<void>} A promise which resolves after processing the input.
34
- * */
35
- exceljsPreProcess?: (processInput: GridExceljsProcessInput) => Promise<void>;
36
- /**
37
- * Method called after adding the rows to the workbook.
38
- * Not supported when `worker` is set.
39
- * To use with web workers, use the option in `setupExcelExportWebWorker`.
40
- * @param {GridExceljsProcessInput} processInput object containing the workbook and the worksheet.
41
- * @returns {Promise<void>} A promise which resolves after processing the input.
42
- * */
43
- exceljsPostProcess?: (processInput: GridExceljsProcessInput) => Promise<void>;
44
- /**
45
- * Object mapping column field to Exceljs style
46
- * */
47
- columnsStyles?: ColumnsStylesInterface;
48
- /**
49
- * If `true`, the headers of the column groups will be added into the file.
50
- * @default true
51
- */
52
- includeColumnGroupsHeaders?: boolean;
18
+ /**
19
+ * Function to return the Worker instance to be called.
20
+ * @returns {() => Worker} A Worker instance.
21
+ */
22
+ worker?: () => Worker;
23
+ /**
24
+ * Name given to the worksheet containing the columns valueOptions.
25
+ * valueOptions are added to this worksheet if they are provided as an array.
26
+ */
27
+ valueOptionsSheetName?: string;
28
+ /**
29
+ * Method called before adding the rows to the workbook.
30
+ * Not supported when `worker` is set.
31
+ * To use with web workers, use the option in `setupExcelExportWebWorker`.
32
+ * @param {GridExceljsProcessInput} processInput object containing the workbook and the worksheet.
33
+ * @returns {Promise<void>} A promise which resolves after processing the input.
34
+ * */
35
+ exceljsPreProcess?: (processInput: GridExceljsProcessInput) => Promise<void>;
36
+ /**
37
+ * Method called after adding the rows to the workbook.
38
+ * Not supported when `worker` is set.
39
+ * To use with web workers, use the option in `setupExcelExportWebWorker`.
40
+ * @param {GridExceljsProcessInput} processInput object containing the workbook and the worksheet.
41
+ * @returns {Promise<void>} A promise which resolves after processing the input.
42
+ * */
43
+ exceljsPostProcess?: (processInput: GridExceljsProcessInput) => Promise<void>;
44
+ /**
45
+ * Object mapping column field to Exceljs style
46
+ * */
47
+ columnsStyles?: ColumnsStylesInterface;
48
+ /**
49
+ * If `true`, the headers of the column groups will be added into the file.
50
+ * @default true
51
+ */
52
+ includeColumnGroupsHeaders?: boolean;
53
53
  }
54
54
  /**
55
55
  * The excel export API interface that is available in the grid [[apiRef]].
56
56
  */
57
57
  export interface GridExcelExportApi {
58
- /**
59
- * Returns the grid data as an exceljs workbook.
60
- * This method is used internally by `exportDataAsExcel`.
61
- * @param {GridExcelExportOptions} options The options to apply on the export.
62
- * @returns {Promise<Excel.Workbook>} The data in a exceljs workbook object.
63
- */
64
- getDataAsExcel: (options?: GridExcelExportOptions) => Promise<Excel.Workbook> | null;
65
- /**
66
- * Downloads and exports an Excel file of the grid's data.
67
- * @param {GridExcelExportOptions} options The options to apply on the export.
68
- * @returns {Promise<void>} A promise which resolves after exporting to Excel.
69
- */
70
- exportDataAsExcel: (options?: GridExcelExportOptions) => Promise<void>;
71
- }
58
+ /**
59
+ * Returns the grid data as an exceljs workbook.
60
+ * This method is used internally by `exportDataAsExcel`.
61
+ * @param {GridExcelExportOptions} options The options to apply on the export.
62
+ * @returns {Promise<Excel.Workbook>} The data in a exceljs workbook object.
63
+ */
64
+ getDataAsExcel: (options?: GridExcelExportOptions) => Promise<Excel.Workbook> | null;
65
+ /**
66
+ * Downloads and exports an Excel file of the grid's data.
67
+ * @param {GridExcelExportOptions} options The options to apply on the export.
68
+ * @returns {Promise<void>} A promise which resolves after exporting to Excel.
69
+ */
70
+ exportDataAsExcel: (options?: GridExcelExportOptions) => Promise<void>;
71
+ }
@@ -1,2 +1,2 @@
1
- export * from './gridExcelExportInterface';
2
- export { setupExcelExportWebWorker } from './serializer/excelSerializer';
1
+ export * from "./gridExcelExportInterface.js";
2
+ export { setupExcelExportWebWorker } from "./serializer/setupExcelExportWebWorker.js";
@@ -9,7 +9,7 @@ var _exportNames = {
9
9
  Object.defineProperty(exports, "setupExcelExportWebWorker", {
10
10
  enumerable: true,
11
11
  get: function () {
12
- return _excelSerializer.setupExcelExportWebWorker;
12
+ return _setupExcelExportWebWorker.setupExcelExportWebWorker;
13
13
  }
14
14
  });
15
15
  var _gridExcelExportInterface = require("./gridExcelExportInterface");
@@ -24,4 +24,4 @@ Object.keys(_gridExcelExportInterface).forEach(function (key) {
24
24
  }
25
25
  });
26
26
  });
27
- var _excelSerializer = require("./serializer/excelSerializer");
27
+ var _setupExcelExportWebWorker = require("./serializer/setupExcelExportWebWorker");
@@ -1,18 +1,11 @@
1
1
  import type * as Excel from 'exceljs';
2
2
  import { RefObject } from '@mui/x-internals/types';
3
3
  import { GridRowId, GridColDef } from '@mui/x-data-grid-pro';
4
- import { GridStateColDef, GridColumnGroupLookup } from '@mui/x-data-grid/internals';
5
- import { ColumnsStylesInterface, GridExcelExportOptions } from '../gridExcelExportInterface';
6
- import { GridPrivateApiPremium } from '../../../../models/gridApiPremium';
7
- interface SerializedRow {
8
- row: Record<string, undefined | number | boolean | string | Date>;
9
- dataValidation: Record<string, Excel.DataValidation>;
10
- outlineLevel: number;
11
- mergedCells: {
12
- leftIndex: number;
13
- rightIndex: number;
14
- }[];
15
- }
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';
16
9
  /**
17
10
  * FIXME: This function mutates the colspan info, but colspan info assumes that the columns
18
11
  * passed to it are always consistent. In this case, the exported columns may differ from the
@@ -20,49 +13,28 @@ interface SerializedRow {
20
13
  * The caller of this function MUST call `resetColSpan()` before and after usage.
21
14
  */
22
15
  export declare const serializeRowUnsafe: (id: GridRowId, columns: GridStateColDef[], apiRef: RefObject<GridPrivateApiPremium>, defaultValueOptionsFormulae: {
23
- [field: string]: {
24
- address: string;
25
- };
16
+ [field: string]: {
17
+ address: string;
18
+ };
26
19
  }, options: Pick<BuildExcelOptions, "escapeFormulas">) => SerializedRow;
27
20
  export declare const serializeColumn: (column: GridColDef, columnsStyles: ColumnsStylesInterface) => {
28
- key: string;
29
- headerText: string;
30
- width: number;
31
- style: {
32
- numFmt?: string | undefined;
33
- font?: Partial<Excel.Font> | undefined;
34
- alignment?: Partial<Excel.Alignment> | undefined;
35
- protection?: Partial<Excel.Protection> | undefined;
36
- border?: Partial<Excel.Borders> | undefined;
37
- fill?: Excel.Fill | undefined;
38
- };
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
+ };
39
32
  };
40
- type SerializedColumns = Array<{
41
- key: string;
42
- width: number;
43
- style: Partial<Excel.Style>;
44
- headerText: string;
45
- }>;
46
33
  export declare function serializeColumns(columns: GridStateColDef[], styles: ColumnsStylesInterface): SerializedColumns;
47
- type ValueOptionsData = Record<string, {
48
- values: (string | number)[];
49
- address: string;
50
- }>;
51
34
  export declare function getDataForValueOptionsSheet(columns: GridStateColDef[], valueOptionsSheetName: string, api: GridPrivateApiPremium): Promise<ValueOptionsData>;
52
35
  interface BuildExcelOptions extends Pick<GridExcelExportOptions, 'exceljsPreProcess' | 'exceljsPostProcess'>, Pick<Required<GridExcelExportOptions>, 'valueOptionsSheetName' | 'includeHeaders' | 'includeColumnGroupsHeaders' | 'escapeFormulas'> {
53
- columns: GridStateColDef[];
54
- rowIds: GridRowId[];
55
- columnsStyles?: ColumnsStylesInterface;
56
- }
57
- export declare function buildExcel(options: BuildExcelOptions, apiRef: RefObject<GridPrivateApiPremium>): Promise<Excel.Workbook>;
58
- export interface ExcelExportInitEvent {
59
- serializedColumns: SerializedColumns;
60
- serializedRows: SerializedRow[];
61
- valueOptionsSheetName: string;
62
- columnGroupPaths: Record<string, string[]>;
63
- columnGroupDetails: GridColumnGroupLookup;
64
- valueOptionsData: ValueOptionsData;
65
- options: Omit<GridExcelExportOptions, 'exceljsPreProcess' | 'exceljsPostProcess' | 'columnsStyles' | 'valueOptionsSheetName'>;
36
+ columns: GridStateColDef[];
37
+ rowIds: GridRowId[];
38
+ columnsStyles?: ColumnsStylesInterface;
66
39
  }
67
- export declare function setupExcelExportWebWorker(workerOptions?: Pick<GridExcelExportOptions, 'exceljsPostProcess' | 'exceljsPreProcess'>): void;
68
- 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;