@mui/x-data-grid-pro 5.4.0 → 5.6.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 (356) hide show
  1. package/CHANGELOG.md +321 -113
  2. package/DataGridPro/DataGridPro.d.ts +3 -0
  3. package/DataGridPro/DataGridPro.js +896 -0
  4. package/DataGridPro/index.d.ts +2 -0
  5. package/DataGridPro/index.js +2 -0
  6. package/DataGridPro/package.json +6 -0
  7. package/DataGridPro/useDataGridProComponent.d.ts +4 -0
  8. package/DataGridPro/useDataGridProComponent.js +72 -0
  9. package/DataGridPro/useDataGridProProps.d.ts +6 -0
  10. package/DataGridPro/useDataGridProProps.js +49 -0
  11. package/components/DataGridProColumnHeaders.d.ts +6 -0
  12. package/components/DataGridProColumnHeaders.js +165 -0
  13. package/components/DataGridProVirtualScroller.d.ts +8 -0
  14. package/components/DataGridProVirtualScroller.js +281 -0
  15. package/components/GridColumnPinningMenuItems.d.ts +11 -0
  16. package/components/GridColumnPinningMenuItems.js +71 -0
  17. package/components/GridDetailPanelToggleCell.d.ts +7 -0
  18. package/components/GridDetailPanelToggleCell.js +124 -0
  19. package/components/GridGroupingColumnLeafCell.d.ts +4 -0
  20. package/components/GridGroupingColumnLeafCell.js +22 -0
  21. package/components/GridGroupingCriteriaCell.d.ts +10 -0
  22. package/components/GridGroupingCriteriaCell.js +150 -0
  23. package/components/GridRowGroupableColumnMenuItems.d.ts +11 -0
  24. package/components/GridRowGroupableColumnMenuItems.js +63 -0
  25. package/components/GridRowGroupingColumnMenuItems.d.ts +11 -0
  26. package/components/GridRowGroupingColumnMenuItems.js +58 -0
  27. package/components/GridTreeDataGroupingCell.d.ts +10 -0
  28. package/components/GridTreeDataGroupingCell.js +159 -0
  29. package/components/Watermark.d.ts +2 -0
  30. package/components/Watermark.js +43 -0
  31. package/components/index.d.ts +2 -0
  32. package/components/index.js +3 -0
  33. package/components/package.json +6 -0
  34. package/hooks/features/columnPinning/gridColumnPinningInterface.d.ts +42 -0
  35. package/hooks/features/columnPinning/gridColumnPinningInterface.js +11 -0
  36. package/hooks/features/columnPinning/gridColumnPinningSelector.d.ts +2 -0
  37. package/hooks/features/columnPinning/gridColumnPinningSelector.js +1 -0
  38. package/hooks/features/columnPinning/index.d.ts +2 -0
  39. package/hooks/features/columnPinning/index.js +2 -0
  40. package/hooks/features/columnPinning/useGridColumnPinning.d.ts +6 -0
  41. package/hooks/features/columnPinning/useGridColumnPinning.js +274 -0
  42. package/hooks/features/columnPinning/useGridColumnPinningPreProcessors.d.ts +4 -0
  43. package/hooks/features/columnPinning/useGridColumnPinningPreProcessors.js +45 -0
  44. package/hooks/features/columnReorder/columnReorderInterfaces.d.ts +6 -0
  45. package/hooks/features/columnReorder/columnReorderInterfaces.js +1 -0
  46. package/hooks/features/columnReorder/columnReorderSelector.d.ts +3 -0
  47. package/hooks/features/columnReorder/columnReorderSelector.js +3 -0
  48. package/hooks/features/columnReorder/index.d.ts +2 -0
  49. package/hooks/features/columnReorder/index.js +2 -0
  50. package/hooks/features/columnReorder/useGridColumnReorder.d.ts +8 -0
  51. package/hooks/features/columnReorder/useGridColumnReorder.js +166 -0
  52. package/hooks/features/columnResize/columnResizeSelector.d.ts +3 -0
  53. package/hooks/features/columnResize/columnResizeSelector.js +3 -0
  54. package/hooks/features/columnResize/columnResizeState.d.ts +3 -0
  55. package/hooks/features/columnResize/columnResizeState.js +1 -0
  56. package/hooks/features/columnResize/index.d.ts +2 -0
  57. package/hooks/features/columnResize/index.js +2 -0
  58. package/hooks/features/columnResize/useGridColumnResize.d.ts +9 -0
  59. package/hooks/features/columnResize/useGridColumnResize.js +305 -0
  60. package/hooks/features/detailPanel/gridDetailPanelInterface.d.ts +28 -0
  61. package/hooks/features/detailPanel/gridDetailPanelInterface.js +1 -0
  62. package/hooks/features/detailPanel/gridDetailPanelSelector.d.ts +5 -0
  63. package/hooks/features/detailPanel/gridDetailPanelSelector.js +3 -0
  64. package/hooks/features/detailPanel/gridDetailPanelToggleColDef.d.ts +3 -0
  65. package/hooks/features/detailPanel/gridDetailPanelToggleColDef.js +26 -0
  66. package/hooks/features/detailPanel/index.d.ts +3 -0
  67. package/hooks/features/detailPanel/index.js +3 -0
  68. package/hooks/features/detailPanel/useGridDetailPanel.d.ts +4 -0
  69. package/hooks/features/detailPanel/useGridDetailPanel.js +109 -0
  70. package/hooks/features/detailPanel/useGridDetailPanelCache.d.ts +4 -0
  71. package/hooks/features/detailPanel/useGridDetailPanelCache.js +57 -0
  72. package/hooks/features/detailPanel/useGridDetailPanelPreProcessors.d.ts +4 -0
  73. package/hooks/features/detailPanel/useGridDetailPanelPreProcessors.js +28 -0
  74. package/hooks/features/index.d.ts +6 -0
  75. package/hooks/features/index.js +7 -0
  76. package/hooks/features/infiniteLoader/useGridInfiniteLoader.d.ts +10 -0
  77. package/hooks/features/infiniteLoader/useGridInfiniteLoader.js +52 -0
  78. package/hooks/features/rowGrouping/createGroupingColDef.d.ts +43 -0
  79. package/hooks/features/rowGrouping/createGroupingColDef.js +318 -0
  80. package/hooks/features/rowGrouping/gridRowGroupingInterfaces.d.ts +31 -0
  81. package/hooks/features/rowGrouping/gridRowGroupingInterfaces.js +1 -0
  82. package/hooks/features/rowGrouping/gridRowGroupingSelector.d.ts +4 -0
  83. package/hooks/features/rowGrouping/gridRowGroupingSelector.js +5 -0
  84. package/hooks/features/rowGrouping/gridRowGroupingUtils.d.ts +24 -0
  85. package/hooks/features/rowGrouping/gridRowGroupingUtils.js +124 -0
  86. package/hooks/features/rowGrouping/index.d.ts +3 -0
  87. package/hooks/features/rowGrouping/index.js +3 -0
  88. package/hooks/features/rowGrouping/useGridRowGrouping.d.ts +13 -0
  89. package/hooks/features/rowGrouping/useGridRowGrouping.js +325 -0
  90. package/hooks/features/rowGrouping/useGridRowGroupingPreProcessors.d.ts +4 -0
  91. package/hooks/features/rowGrouping/useGridRowGroupingPreProcessors.js +76 -0
  92. package/hooks/features/treeData/gridTreeDataGroupColDef.d.ts +7 -0
  93. package/hooks/features/treeData/gridTreeDataGroupColDef.js +22 -0
  94. package/hooks/features/treeData/gridTreeDataUtils.d.ts +14 -0
  95. package/hooks/features/treeData/gridTreeDataUtils.js +86 -0
  96. package/hooks/features/treeData/index.d.ts +1 -0
  97. package/hooks/features/treeData/index.js +1 -0
  98. package/hooks/features/treeData/useGridTreeData.d.ts +10 -0
  99. package/hooks/features/treeData/useGridTreeData.js +108 -0
  100. package/hooks/features/treeData/useGridTreeDataPreProcessors.d.ts +4 -0
  101. package/hooks/features/treeData/useGridTreeDataPreProcessors.js +69 -0
  102. package/hooks/index.d.ts +1 -0
  103. package/hooks/index.js +1 -0
  104. package/hooks/package.json +6 -0
  105. package/hooks/utils/useGridApiContext.d.ts +4 -0
  106. package/hooks/utils/useGridApiContext.js +2 -0
  107. package/hooks/utils/useGridApiRef.d.ts +4 -0
  108. package/hooks/utils/useGridApiRef.js +2 -0
  109. package/hooks/utils/useGridRootProps.d.ts +2 -0
  110. package/hooks/utils/useGridRootProps.js +2 -0
  111. package/index.d.ts +15 -0
  112. package/index.js +19 -0
  113. package/legacy/DataGridPro/DataGridPro.js +896 -0
  114. package/legacy/DataGridPro/index.js +2 -0
  115. package/legacy/DataGridPro/useDataGridProComponent.js +72 -0
  116. package/legacy/DataGridPro/useDataGridProProps.js +53 -0
  117. package/legacy/components/DataGridProColumnHeaders.js +173 -0
  118. package/legacy/components/DataGridProVirtualScroller.js +297 -0
  119. package/legacy/components/GridColumnPinningMenuItems.js +71 -0
  120. package/legacy/components/GridDetailPanelToggleCell.js +120 -0
  121. package/legacy/components/GridGroupingColumnLeafCell.js +20 -0
  122. package/legacy/components/GridGroupingCriteriaCell.js +146 -0
  123. package/legacy/components/GridRowGroupableColumnMenuItems.js +61 -0
  124. package/legacy/components/GridRowGroupingColumnMenuItems.js +56 -0
  125. package/legacy/components/GridTreeDataGroupingCell.js +155 -0
  126. package/legacy/components/Watermark.js +43 -0
  127. package/legacy/components/index.js +3 -0
  128. package/legacy/hooks/features/columnPinning/gridColumnPinningInterface.js +11 -0
  129. package/legacy/hooks/features/columnPinning/gridColumnPinningSelector.js +3 -0
  130. package/legacy/hooks/features/columnPinning/index.js +2 -0
  131. package/legacy/hooks/features/columnPinning/useGridColumnPinning.js +298 -0
  132. package/legacy/hooks/features/columnPinning/useGridColumnPinningPreProcessors.js +48 -0
  133. package/legacy/hooks/features/columnReorder/columnReorderInterfaces.js +1 -0
  134. package/legacy/hooks/features/columnReorder/columnReorderSelector.js +7 -0
  135. package/legacy/hooks/features/columnReorder/index.js +2 -0
  136. package/legacy/hooks/features/columnReorder/useGridColumnReorder.js +172 -0
  137. package/legacy/hooks/features/columnResize/columnResizeSelector.js +7 -0
  138. package/legacy/hooks/features/columnResize/columnResizeState.js +1 -0
  139. package/legacy/hooks/features/columnResize/index.js +2 -0
  140. package/legacy/hooks/features/columnResize/useGridColumnResize.js +310 -0
  141. package/legacy/hooks/features/detailPanel/gridDetailPanelInterface.js +1 -0
  142. package/legacy/hooks/features/detailPanel/gridDetailPanelSelector.js +9 -0
  143. package/legacy/hooks/features/detailPanel/gridDetailPanelToggleColDef.js +28 -0
  144. package/legacy/hooks/features/detailPanel/index.js +3 -0
  145. package/legacy/hooks/features/detailPanel/useGridDetailPanel.js +114 -0
  146. package/legacy/hooks/features/detailPanel/useGridDetailPanelCache.js +57 -0
  147. package/legacy/hooks/features/detailPanel/useGridDetailPanelPreProcessors.js +31 -0
  148. package/legacy/hooks/features/index.js +7 -0
  149. package/legacy/hooks/features/infiniteLoader/useGridInfiniteLoader.js +51 -0
  150. package/legacy/hooks/features/rowGrouping/createGroupingColDef.js +319 -0
  151. package/legacy/hooks/features/rowGrouping/gridRowGroupingInterfaces.js +1 -0
  152. package/legacy/hooks/features/rowGrouping/gridRowGroupingSelector.js +13 -0
  153. package/legacy/hooks/features/rowGrouping/gridRowGroupingUtils.js +130 -0
  154. package/legacy/hooks/features/rowGrouping/index.js +3 -0
  155. package/legacy/hooks/features/rowGrouping/useGridRowGrouping.js +334 -0
  156. package/legacy/hooks/features/rowGrouping/useGridRowGroupingPreProcessors.js +83 -0
  157. package/legacy/hooks/features/treeData/gridTreeDataGroupColDef.js +24 -0
  158. package/legacy/hooks/features/treeData/gridTreeDataUtils.js +84 -0
  159. package/legacy/hooks/features/treeData/index.js +1 -0
  160. package/legacy/hooks/features/treeData/useGridTreeData.js +116 -0
  161. package/legacy/hooks/features/treeData/useGridTreeDataPreProcessors.js +72 -0
  162. package/legacy/hooks/index.js +1 -0
  163. package/legacy/hooks/utils/useGridApiContext.js +2 -0
  164. package/legacy/hooks/utils/useGridApiRef.js +2 -0
  165. package/legacy/hooks/utils/useGridRootProps.js +2 -0
  166. package/legacy/index.js +19 -0
  167. package/legacy/models/dataGridProProps.js +1 -0
  168. package/legacy/models/gridApiPro.js +1 -0
  169. package/legacy/models/gridGroupingColDefOverride.js +1 -0
  170. package/legacy/models/gridGroupingValueGetterParams.js +1 -0
  171. package/legacy/models/gridRowScrollEndParams.js +1 -0
  172. package/legacy/models/gridStatePro.js +1 -0
  173. package/legacy/models/index.js +4 -0
  174. package/legacy/themeAugmentation/index.js +3 -0
  175. package/legacy/themeAugmentation/overrides.js +1 -0
  176. package/legacy/themeAugmentation/props.js +1 -0
  177. package/legacy/typeOverloads/modules.js +1 -0
  178. package/legacy/typeOverloads/reexports.js +6 -0
  179. package/legacy/utils/domUtils.js +19 -0
  180. package/legacy/utils/tree/buildRowTree.js +188 -0
  181. package/legacy/utils/tree/sortRowTree.js +63 -0
  182. package/models/dataGridProProps.d.ts +174 -0
  183. package/models/dataGridProProps.js +1 -0
  184. package/models/gridApiPro.d.ts +12 -0
  185. package/models/gridApiPro.js +1 -0
  186. package/models/gridGroupingColDefOverride.d.ts +30 -0
  187. package/models/gridGroupingColDefOverride.js +1 -0
  188. package/models/gridGroupingValueGetterParams.d.ts +31 -0
  189. package/models/gridGroupingValueGetterParams.js +1 -0
  190. package/models/gridRowScrollEndParams.d.ts +18 -0
  191. package/models/gridRowScrollEndParams.js +1 -0
  192. package/models/gridStatePro.d.ts +20 -0
  193. package/models/gridStatePro.js +1 -0
  194. package/models/index.d.ts +4 -0
  195. package/models/index.js +4 -0
  196. package/models/package.json +6 -0
  197. package/modern/DataGridPro/DataGridPro.js +896 -0
  198. package/modern/DataGridPro/index.js +2 -0
  199. package/modern/DataGridPro/useDataGridProComponent.js +72 -0
  200. package/modern/DataGridPro/useDataGridProProps.js +45 -0
  201. package/modern/components/DataGridProColumnHeaders.js +163 -0
  202. package/modern/components/DataGridProVirtualScroller.js +279 -0
  203. package/modern/components/GridColumnPinningMenuItems.js +71 -0
  204. package/modern/components/GridDetailPanelToggleCell.js +124 -0
  205. package/modern/components/GridGroupingColumnLeafCell.js +20 -0
  206. package/modern/components/GridGroupingCriteriaCell.js +148 -0
  207. package/modern/components/GridRowGroupableColumnMenuItems.js +61 -0
  208. package/modern/components/GridRowGroupingColumnMenuItems.js +56 -0
  209. package/modern/components/GridTreeDataGroupingCell.js +157 -0
  210. package/modern/components/Watermark.js +43 -0
  211. package/modern/components/index.js +3 -0
  212. package/modern/hooks/features/columnPinning/gridColumnPinningInterface.js +11 -0
  213. package/modern/hooks/features/columnPinning/gridColumnPinningSelector.js +1 -0
  214. package/modern/hooks/features/columnPinning/index.js +2 -0
  215. package/modern/hooks/features/columnPinning/useGridColumnPinning.js +268 -0
  216. package/modern/hooks/features/columnPinning/useGridColumnPinningPreProcessors.js +45 -0
  217. package/modern/hooks/features/columnReorder/columnReorderInterfaces.js +1 -0
  218. package/modern/hooks/features/columnReorder/columnReorderSelector.js +3 -0
  219. package/modern/hooks/features/columnReorder/index.js +2 -0
  220. package/modern/hooks/features/columnReorder/useGridColumnReorder.js +166 -0
  221. package/modern/hooks/features/columnResize/columnResizeSelector.js +3 -0
  222. package/modern/hooks/features/columnResize/columnResizeState.js +1 -0
  223. package/modern/hooks/features/columnResize/index.js +2 -0
  224. package/modern/hooks/features/columnResize/useGridColumnResize.js +295 -0
  225. package/modern/hooks/features/detailPanel/gridDetailPanelInterface.js +1 -0
  226. package/modern/hooks/features/detailPanel/gridDetailPanelSelector.js +3 -0
  227. package/modern/hooks/features/detailPanel/gridDetailPanelToggleColDef.js +26 -0
  228. package/modern/hooks/features/detailPanel/index.js +3 -0
  229. package/modern/hooks/features/detailPanel/useGridDetailPanel.js +105 -0
  230. package/modern/hooks/features/detailPanel/useGridDetailPanelCache.js +57 -0
  231. package/modern/hooks/features/detailPanel/useGridDetailPanelPreProcessors.js +28 -0
  232. package/modern/hooks/features/index.js +7 -0
  233. package/modern/hooks/features/infiniteLoader/useGridInfiniteLoader.js +52 -0
  234. package/modern/hooks/features/rowGrouping/createGroupingColDef.js +302 -0
  235. package/modern/hooks/features/rowGrouping/gridRowGroupingInterfaces.js +1 -0
  236. package/modern/hooks/features/rowGrouping/gridRowGroupingSelector.js +5 -0
  237. package/modern/hooks/features/rowGrouping/gridRowGroupingUtils.js +122 -0
  238. package/modern/hooks/features/rowGrouping/index.js +3 -0
  239. package/modern/hooks/features/rowGrouping/useGridRowGrouping.js +317 -0
  240. package/modern/hooks/features/rowGrouping/useGridRowGroupingPreProcessors.js +76 -0
  241. package/modern/hooks/features/treeData/gridTreeDataGroupColDef.js +22 -0
  242. package/modern/hooks/features/treeData/gridTreeDataUtils.js +82 -0
  243. package/modern/hooks/features/treeData/index.js +1 -0
  244. package/modern/hooks/features/treeData/useGridTreeData.js +106 -0
  245. package/modern/hooks/features/treeData/useGridTreeDataPreProcessors.js +67 -0
  246. package/modern/hooks/index.js +1 -0
  247. package/modern/hooks/utils/useGridApiContext.js +2 -0
  248. package/modern/hooks/utils/useGridApiRef.js +2 -0
  249. package/modern/hooks/utils/useGridRootProps.js +2 -0
  250. package/modern/index.js +19 -0
  251. package/modern/models/dataGridProProps.js +1 -0
  252. package/modern/models/gridApiPro.js +1 -0
  253. package/modern/models/gridGroupingColDefOverride.js +1 -0
  254. package/modern/models/gridGroupingValueGetterParams.js +1 -0
  255. package/modern/models/gridRowScrollEndParams.js +1 -0
  256. package/modern/models/gridStatePro.js +1 -0
  257. package/modern/models/index.js +4 -0
  258. package/modern/themeAugmentation/index.js +3 -0
  259. package/modern/themeAugmentation/overrides.js +1 -0
  260. package/modern/themeAugmentation/props.js +1 -0
  261. package/modern/typeOverloads/modules.js +1 -0
  262. package/modern/typeOverloads/reexports.js +6 -0
  263. package/modern/utils/domUtils.js +19 -0
  264. package/modern/utils/tree/buildRowTree.js +167 -0
  265. package/modern/utils/tree/sortRowTree.js +60 -0
  266. package/node/DataGridPro/DataGridPro.js +921 -0
  267. package/node/DataGridPro/index.js +30 -0
  268. package/node/DataGridPro/useDataGridProComponent.js +94 -0
  269. package/node/DataGridPro/useDataGridProProps.js +69 -0
  270. package/node/components/DataGridProColumnHeaders.js +189 -0
  271. package/node/components/DataGridProVirtualScroller.js +308 -0
  272. package/node/components/GridColumnPinningMenuItems.js +88 -0
  273. package/node/components/GridDetailPanelToggleCell.js +145 -0
  274. package/node/components/GridGroupingColumnLeafCell.js +38 -0
  275. package/node/components/GridGroupingCriteriaCell.js +170 -0
  276. package/node/components/GridRowGroupableColumnMenuItems.js +82 -0
  277. package/node/components/GridRowGroupingColumnMenuItems.js +78 -0
  278. package/node/components/GridTreeDataGroupingCell.js +180 -0
  279. package/node/components/Watermark.js +56 -0
  280. package/node/components/index.js +31 -0
  281. package/node/hooks/features/columnPinning/gridColumnPinningInterface.js +17 -0
  282. package/node/hooks/features/columnPinning/gridColumnPinningSelector.js +10 -0
  283. package/node/hooks/features/columnPinning/index.js +31 -0
  284. package/node/hooks/features/columnPinning/useGridColumnPinning.js +297 -0
  285. package/node/hooks/features/columnPinning/useGridColumnPinningPreProcessors.js +66 -0
  286. package/node/hooks/features/columnReorder/columnReorderInterfaces.js +5 -0
  287. package/node/hooks/features/columnReorder/columnReorderSelector.js +14 -0
  288. package/node/hooks/features/columnReorder/index.js +18 -0
  289. package/node/hooks/features/columnReorder/useGridColumnReorder.js +187 -0
  290. package/node/hooks/features/columnResize/columnResizeSelector.js +14 -0
  291. package/node/hooks/features/columnResize/columnResizeState.js +5 -0
  292. package/node/hooks/features/columnResize/index.js +31 -0
  293. package/node/hooks/features/columnResize/useGridColumnResize.js +326 -0
  294. package/node/hooks/features/detailPanel/gridDetailPanelInterface.js +5 -0
  295. package/node/hooks/features/detailPanel/gridDetailPanelSelector.js +18 -0
  296. package/node/hooks/features/detailPanel/gridDetailPanelToggleColDef.js +47 -0
  297. package/node/hooks/features/detailPanel/index.js +44 -0
  298. package/node/hooks/features/detailPanel/useGridDetailPanel.js +130 -0
  299. package/node/hooks/features/detailPanel/useGridDetailPanelCache.js +74 -0
  300. package/node/hooks/features/detailPanel/useGridDetailPanelPreProcessors.js +44 -0
  301. package/node/hooks/features/index.js +83 -0
  302. package/node/hooks/features/infiniteLoader/useGridInfiniteLoader.js +67 -0
  303. package/node/hooks/features/rowGrouping/createGroupingColDef.js +341 -0
  304. package/node/hooks/features/rowGrouping/gridRowGroupingInterfaces.js +5 -0
  305. package/node/hooks/features/rowGrouping/gridRowGroupingSelector.js +18 -0
  306. package/node/hooks/features/rowGrouping/gridRowGroupingUtils.js +153 -0
  307. package/node/hooks/features/rowGrouping/index.js +51 -0
  308. package/node/hooks/features/rowGrouping/useGridRowGrouping.js +355 -0
  309. package/node/hooks/features/rowGrouping/useGridRowGroupingPreProcessors.js +94 -0
  310. package/node/hooks/features/treeData/gridTreeDataGroupColDef.js +35 -0
  311. package/node/hooks/features/treeData/gridTreeDataUtils.js +95 -0
  312. package/node/hooks/features/treeData/index.js +13 -0
  313. package/node/hooks/features/treeData/useGridTreeData.js +132 -0
  314. package/node/hooks/features/treeData/useGridTreeDataPreProcessors.js +92 -0
  315. package/node/hooks/index.js +18 -0
  316. package/node/hooks/utils/useGridApiContext.js +11 -0
  317. package/node/hooks/utils/useGridApiRef.js +11 -0
  318. package/node/hooks/utils/useGridRootProps.js +11 -0
  319. package/node/index.js +200 -0
  320. package/node/models/dataGridProProps.js +5 -0
  321. package/node/models/gridApiPro.js +5 -0
  322. package/node/models/gridGroupingColDefOverride.js +5 -0
  323. package/node/models/gridGroupingValueGetterParams.js +5 -0
  324. package/node/models/gridRowScrollEndParams.js +5 -0
  325. package/node/models/gridStatePro.js +5 -0
  326. package/node/models/index.js +44 -0
  327. package/node/themeAugmentation/index.js +31 -0
  328. package/node/themeAugmentation/overrides.js +5 -0
  329. package/node/themeAugmentation/props.js +5 -0
  330. package/node/typeOverloads/modules.js +5 -0
  331. package/node/typeOverloads/reexports.js +29 -0
  332. package/node/utils/domUtils.js +32 -0
  333. package/node/utils/tree/buildRowTree.js +185 -0
  334. package/node/utils/tree/sortRowTree.js +69 -0
  335. package/package.json +12 -14
  336. package/themeAugmentation/index.d.ts +2 -2
  337. package/themeAugmentation/index.js +3 -0
  338. package/themeAugmentation/overrides.d.ts +8 -8
  339. package/themeAugmentation/overrides.js +1 -0
  340. package/themeAugmentation/package.json +6 -0
  341. package/themeAugmentation/props.d.ts +19 -19
  342. package/themeAugmentation/props.js +1 -0
  343. package/typeOverloads/modules.d.ts +41 -0
  344. package/typeOverloads/modules.js +1 -0
  345. package/typeOverloads/reexports.d.ts +22 -0
  346. package/typeOverloads/reexports.js +6 -0
  347. package/utils/domUtils.d.ts +3 -0
  348. package/utils/domUtils.js +19 -0
  349. package/utils/tree/buildRowTree.d.ts +47 -0
  350. package/utils/tree/buildRowTree.js +179 -0
  351. package/utils/tree/sortRowTree.d.ts +10 -0
  352. package/utils/tree/sortRowTree.js +60 -0
  353. package/LICENSE +0 -12
  354. package/index-cjs.js +0 -15
  355. package/index-esm.js +0 -15
  356. package/x-data-grid-pro.d.ts +0 -5251
@@ -0,0 +1,326 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.useGridColumnResize = void 0;
9
+
10
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
+
12
+ var React = _interopRequireWildcard(require("react"));
13
+
14
+ var _utils = require("@mui/material/utils");
15
+
16
+ var _xDataGrid = require("@mui/x-data-grid");
17
+
18
+ var _internals = require("@mui/x-data-grid/internals");
19
+
20
+ var _domUtils = require("../../../utils/domUtils");
21
+
22
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
23
+
24
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
25
+
26
+ // TODO: remove support for Safari < 13.
27
+ // https://caniuse.com/#search=touch-action
28
+ //
29
+ // Safari, on iOS, supports touch action since v13.
30
+ // Over 80% of the iOS phones are compatible
31
+ // in August 2020.
32
+ // Utilizing the CSS.supports method to check if touch-action is supported.
33
+ // Since CSS.supports is supported on all but Edge@12 and IE and touch-action
34
+ // is supported on both Edge@12 and IE if CSS.supports is not available that means that
35
+ // touch-action will be supported
36
+ let cachedSupportsTouchActionNone = false;
37
+
38
+ function doesSupportTouchActionNone() {
39
+ if (cachedSupportsTouchActionNone === undefined) {
40
+ if (typeof CSS !== 'undefined' && typeof CSS.supports === 'function') {
41
+ cachedSupportsTouchActionNone = CSS.supports('touch-action', 'none');
42
+ } else {
43
+ cachedSupportsTouchActionNone = true;
44
+ }
45
+ }
46
+
47
+ return cachedSupportsTouchActionNone;
48
+ }
49
+
50
+ function trackFinger(event, currentTouchId) {
51
+ if (currentTouchId !== undefined && event.changedTouches) {
52
+ for (let i = 0; i < event.changedTouches.length; i += 1) {
53
+ const touch = event.changedTouches[i];
54
+
55
+ if (touch.identifier === currentTouchId) {
56
+ return {
57
+ x: touch.clientX,
58
+ y: touch.clientY
59
+ };
60
+ }
61
+ }
62
+
63
+ return false;
64
+ }
65
+
66
+ return {
67
+ x: event.clientX,
68
+ y: event.clientY
69
+ };
70
+ }
71
+
72
+ function computeNewWidth(initialOffsetToSeparator, clickX, columnBounds, separatorSide) {
73
+ let newWidth = initialOffsetToSeparator;
74
+
75
+ if (separatorSide === _xDataGrid.GridColumnHeaderSeparatorSides.Right) {
76
+ newWidth += clickX - columnBounds.left;
77
+ } else {
78
+ newWidth += columnBounds.right - clickX;
79
+ }
80
+
81
+ return newWidth;
82
+ }
83
+
84
+ function computeOffsetToSeparator(clickX, columnBounds, separatorSide) {
85
+ if (separatorSide === _xDataGrid.GridColumnHeaderSeparatorSides.Left) {
86
+ return clickX - columnBounds.left;
87
+ }
88
+
89
+ return columnBounds.right - clickX;
90
+ }
91
+
92
+ function getSeparatorSide(element) {
93
+ return element.classList.contains(_xDataGrid.gridClasses['columnSeparator--sideRight']) ? _xDataGrid.GridColumnHeaderSeparatorSides.Right : _xDataGrid.GridColumnHeaderSeparatorSides.Left;
94
+ }
95
+ /**
96
+ * Only available in DataGridPro
97
+ * @requires useGridColumns (method, event)
98
+ * TODO: improve experience for last column
99
+ */
100
+
101
+
102
+ const useGridColumnResize = (apiRef, props) => {
103
+ const logger = (0, _xDataGrid.useGridLogger)(apiRef, 'useGridColumnResize');
104
+ (0, _internals.useGridStateInit)(apiRef, state => (0, _extends2.default)({}, state, {
105
+ columnResize: {
106
+ resizingColumnField: ''
107
+ }
108
+ }));
109
+ const colDefRef = React.useRef();
110
+ const colElementRef = React.useRef();
111
+ const colCellElementsRef = React.useRef(); // To improve accessibility, the separator has padding on both sides.
112
+ // Clicking inside the padding area should be treated as a click in the separator.
113
+ // This ref stores the offset between the click and the separator.
114
+
115
+ const initialOffsetToSeparator = React.useRef();
116
+ const separatorSide = React.useRef();
117
+ const stopResizeEventTimeout = React.useRef();
118
+ const touchId = React.useRef();
119
+
120
+ const updateWidth = newWidth => {
121
+ logger.debug(`Updating width to ${newWidth} for col ${colDefRef.current.field}`);
122
+ colDefRef.current.computedWidth = newWidth;
123
+ colDefRef.current.width = newWidth;
124
+ colDefRef.current.flex = undefined;
125
+ colElementRef.current.style.width = `${newWidth}px`;
126
+ colElementRef.current.style.minWidth = `${newWidth}px`;
127
+ colElementRef.current.style.maxWidth = `${newWidth}px`;
128
+ colCellElementsRef.current.forEach(element => {
129
+ const div = element;
130
+ div.style.width = `${newWidth}px`;
131
+ div.style.minWidth = `${newWidth}px`;
132
+ div.style.maxWidth = `${newWidth}px`;
133
+ });
134
+ };
135
+
136
+ const handleResizeMouseUp = (0, _utils.useEventCallback)(nativeEvent => {
137
+ // eslint-disable-next-line @typescript-eslint/no-use-before-define
138
+ stopListening();
139
+ apiRef.current.updateColumn(colDefRef.current);
140
+ clearTimeout(stopResizeEventTimeout.current);
141
+ stopResizeEventTimeout.current = setTimeout(() => {
142
+ apiRef.current.publishEvent(_xDataGrid.GridEvents.columnResizeStop, null, nativeEvent);
143
+
144
+ if (colDefRef.current) {
145
+ var _colDefRef$current;
146
+
147
+ apiRef.current.publishEvent(_xDataGrid.GridEvents.columnWidthChange, {
148
+ element: colElementRef.current,
149
+ colDef: colDefRef.current,
150
+ width: (_colDefRef$current = colDefRef.current) == null ? void 0 : _colDefRef$current.computedWidth
151
+ }, nativeEvent);
152
+ }
153
+ });
154
+ logger.debug(`Updating col ${colDefRef.current.field} with new width: ${colDefRef.current.width}`);
155
+ });
156
+ const handleResizeMouseMove = (0, _utils.useEventCallback)(nativeEvent => {
157
+ // Cancel move in case some other element consumed a mouseup event and it was not fired.
158
+ if (nativeEvent.buttons === 0) {
159
+ handleResizeMouseUp(nativeEvent);
160
+ return;
161
+ }
162
+
163
+ let newWidth = computeNewWidth(initialOffsetToSeparator.current, nativeEvent.clientX, colElementRef.current.getBoundingClientRect(), separatorSide.current);
164
+ newWidth = (0, _internals.clamp)(newWidth, colDefRef.current.minWidth, colDefRef.current.maxWidth);
165
+ updateWidth(newWidth);
166
+ const params = {
167
+ element: colElementRef.current,
168
+ colDef: colDefRef.current,
169
+ width: newWidth
170
+ };
171
+ apiRef.current.publishEvent(_xDataGrid.GridEvents.columnResize, params, nativeEvent);
172
+ });
173
+ const handleColumnResizeMouseDown = (0, _utils.useEventCallback)(({
174
+ colDef
175
+ }, event) => {
176
+ var _apiRef$current$colum;
177
+
178
+ // Only handle left clicks
179
+ if (event.button !== 0) {
180
+ return;
181
+ } // Skip if the column isn't resizable
182
+
183
+
184
+ if (!event.currentTarget.classList.contains(_xDataGrid.gridClasses['columnSeparator--resizable'])) {
185
+ return;
186
+ } // Avoid text selection
187
+
188
+
189
+ event.preventDefault();
190
+ logger.debug(`Start Resize on col ${colDef.field}`);
191
+ apiRef.current.publishEvent(_xDataGrid.GridEvents.columnResizeStart, {
192
+ field: colDef.field
193
+ }, event);
194
+ colDefRef.current = colDef;
195
+ colElementRef.current = (_apiRef$current$colum = apiRef.current.columnHeadersContainerElementRef) == null ? void 0 : _apiRef$current$colum.current.querySelector(`[data-field="${colDef.field}"]`);
196
+ colCellElementsRef.current = (0, _domUtils.findGridCellElementsFromCol)(colElementRef.current);
197
+ const doc = (0, _utils.ownerDocument)(apiRef.current.rootElementRef.current);
198
+ doc.body.style.cursor = 'col-resize';
199
+ separatorSide.current = getSeparatorSide(event.currentTarget);
200
+ initialOffsetToSeparator.current = computeOffsetToSeparator(event.clientX, colElementRef.current.getBoundingClientRect(), separatorSide.current);
201
+ doc.addEventListener('mousemove', handleResizeMouseMove);
202
+ doc.addEventListener('mouseup', handleResizeMouseUp);
203
+ });
204
+ const handleTouchEnd = (0, _utils.useEventCallback)(nativeEvent => {
205
+ const finger = trackFinger(nativeEvent, touchId.current);
206
+
207
+ if (!finger) {
208
+ return;
209
+ } // eslint-disable-next-line @typescript-eslint/no-use-before-define
210
+
211
+
212
+ stopListening();
213
+ apiRef.current.updateColumn(colDefRef.current);
214
+ clearTimeout(stopResizeEventTimeout.current);
215
+ stopResizeEventTimeout.current = setTimeout(() => {
216
+ apiRef.current.publishEvent(_xDataGrid.GridEvents.columnResizeStop, null, nativeEvent);
217
+ });
218
+ logger.debug(`Updating col ${colDefRef.current.field} with new width: ${colDefRef.current.width}`);
219
+ });
220
+ const handleTouchMove = (0, _utils.useEventCallback)(nativeEvent => {
221
+ const finger = trackFinger(nativeEvent, touchId.current);
222
+
223
+ if (!finger) {
224
+ return;
225
+ } // Cancel move in case some other element consumed a touchmove event and it was not fired.
226
+
227
+
228
+ if (nativeEvent.type === 'mousemove' && nativeEvent.buttons === 0) {
229
+ handleTouchEnd(nativeEvent);
230
+ return;
231
+ }
232
+
233
+ let newWidth = computeNewWidth(initialOffsetToSeparator.current, finger.x, colElementRef.current.getBoundingClientRect(), separatorSide.current);
234
+ newWidth = (0, _internals.clamp)(newWidth, colDefRef.current.minWidth, colDefRef.current.maxWidth);
235
+ updateWidth(newWidth);
236
+ const params = {
237
+ element: colElementRef.current,
238
+ colDef: colDefRef.current,
239
+ width: newWidth
240
+ };
241
+ apiRef.current.publishEvent(_xDataGrid.GridEvents.columnResize, params, nativeEvent);
242
+ });
243
+ const handleTouchStart = (0, _utils.useEventCallback)(event => {
244
+ var _apiRef$current$colum2;
245
+
246
+ const cellSeparator = (0, _internals.findParentElementFromClassName)(event.target, _xDataGrid.gridClasses['columnSeparator--resizable']); // Let the event bubble if the target is not a col separator
247
+
248
+ if (!cellSeparator) {
249
+ return;
250
+ } // If touch-action: none; is not supported we need to prevent the scroll manually.
251
+
252
+
253
+ if (!doesSupportTouchActionNone()) {
254
+ event.preventDefault();
255
+ }
256
+
257
+ const touch = event.changedTouches[0];
258
+
259
+ if (touch != null) {
260
+ // A number that uniquely identifies the current finger in the touch session.
261
+ touchId.current = touch.identifier;
262
+ }
263
+
264
+ colElementRef.current = (0, _internals.findParentElementFromClassName)(event.target, _xDataGrid.gridClasses.columnHeader);
265
+ const field = (0, _domUtils.getFieldFromHeaderElem)(colElementRef.current);
266
+ const colDef = apiRef.current.getColumn(field);
267
+ logger.debug(`Start Resize on col ${colDef.field}`);
268
+ apiRef.current.publishEvent(_xDataGrid.GridEvents.columnResizeStart, {
269
+ field
270
+ }, event);
271
+ colDefRef.current = colDef;
272
+ colElementRef.current = (0, _domUtils.findHeaderElementFromField)((_apiRef$current$colum2 = apiRef.current.columnHeadersElementRef) == null ? void 0 : _apiRef$current$colum2.current, colDef.field);
273
+ colCellElementsRef.current = (0, _domUtils.findGridCellElementsFromCol)(colElementRef.current);
274
+ separatorSide.current = getSeparatorSide(event.target);
275
+ initialOffsetToSeparator.current = computeOffsetToSeparator(touch.clientX, colElementRef.current.getBoundingClientRect(), separatorSide.current);
276
+ const doc = (0, _utils.ownerDocument)(event.currentTarget);
277
+ doc.addEventListener('touchmove', handleTouchMove);
278
+ doc.addEventListener('touchend', handleTouchEnd);
279
+ });
280
+ const stopListening = React.useCallback(() => {
281
+ const doc = (0, _utils.ownerDocument)(apiRef.current.rootElementRef.current);
282
+ doc.body.style.removeProperty('cursor');
283
+ doc.removeEventListener('mousemove', handleResizeMouseMove);
284
+ doc.removeEventListener('mouseup', handleResizeMouseUp);
285
+ doc.removeEventListener('touchmove', handleTouchMove);
286
+ doc.removeEventListener('touchend', handleTouchEnd);
287
+ }, [apiRef, handleResizeMouseMove, handleResizeMouseUp, handleTouchMove, handleTouchEnd]);
288
+ const handleResizeStart = React.useCallback(({
289
+ field
290
+ }) => {
291
+ apiRef.current.setState(state => (0, _extends2.default)({}, state, {
292
+ columnResize: (0, _extends2.default)({}, state.columnResize, {
293
+ resizingColumnField: field
294
+ })
295
+ }));
296
+ apiRef.current.forceUpdate();
297
+ }, [apiRef]);
298
+ const handleResizeStop = React.useCallback(() => {
299
+ apiRef.current.setState(state => (0, _extends2.default)({}, state, {
300
+ columnResize: (0, _extends2.default)({}, state.columnResize, {
301
+ resizingColumnField: ''
302
+ })
303
+ }));
304
+ apiRef.current.forceUpdate();
305
+ }, [apiRef]);
306
+ React.useEffect(() => {
307
+ return () => {
308
+ clearTimeout(stopResizeEventTimeout.current);
309
+ stopListening();
310
+ };
311
+ }, [apiRef, handleTouchStart, stopListening]);
312
+ (0, _xDataGrid.useGridNativeEventListener)(apiRef, () => {
313
+ var _apiRef$current$colum3;
314
+
315
+ return (_apiRef$current$colum3 = apiRef.current.columnHeadersElementRef) == null ? void 0 : _apiRef$current$colum3.current;
316
+ }, 'touchstart', handleTouchStart, {
317
+ passive: doesSupportTouchActionNone()
318
+ });
319
+ (0, _xDataGrid.useGridApiEventHandler)(apiRef, _xDataGrid.GridEvents.columnSeparatorMouseDown, handleColumnResizeMouseDown);
320
+ (0, _xDataGrid.useGridApiEventHandler)(apiRef, _xDataGrid.GridEvents.columnResizeStart, handleResizeStart);
321
+ (0, _xDataGrid.useGridApiEventHandler)(apiRef, _xDataGrid.GridEvents.columnResizeStop, handleResizeStop);
322
+ (0, _xDataGrid.useGridApiOptionHandler)(apiRef, _xDataGrid.GridEvents.columnResize, props.onColumnResize);
323
+ (0, _xDataGrid.useGridApiOptionHandler)(apiRef, _xDataGrid.GridEvents.columnWidthChange, props.onColumnWidthChange);
324
+ };
325
+
326
+ exports.useGridColumnResize = useGridColumnResize;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.gridDetailPanelExpandedRowsHeightCacheSelector = exports.gridDetailPanelExpandedRowsContentCacheSelector = exports.gridDetailPanelExpandedRowIdsSelector = void 0;
7
+
8
+ const gridDetailPanelExpandedRowIdsSelector = state => state.detailPanel.expandedRowIds;
9
+
10
+ exports.gridDetailPanelExpandedRowIdsSelector = gridDetailPanelExpandedRowIdsSelector;
11
+
12
+ const gridDetailPanelExpandedRowsContentCacheSelector = state => state.detailPanel.contentCache;
13
+
14
+ exports.gridDetailPanelExpandedRowsContentCacheSelector = gridDetailPanelExpandedRowsContentCacheSelector;
15
+
16
+ const gridDetailPanelExpandedRowsHeightCacheSelector = state => state.detailPanel.heightCache;
17
+
18
+ exports.gridDetailPanelExpandedRowsHeightCacheSelector = gridDetailPanelExpandedRowsHeightCacheSelector;
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.GRID_DETAIL_PANEL_TOGGLE_FIELD = exports.GRID_DETAIL_PANEL_TOGGLE_COL_DEF = void 0;
9
+
10
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
+
12
+ var React = _interopRequireWildcard(require("react"));
13
+
14
+ var _xDataGrid = require("@mui/x-data-grid");
15
+
16
+ var _GridDetailPanelToggleCell = require("../../../components/GridDetailPanelToggleCell");
17
+
18
+ var _gridDetailPanelSelector = require("./gridDetailPanelSelector");
19
+
20
+ var _jsxRuntime = require("react/jsx-runtime");
21
+
22
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
23
+
24
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
25
+
26
+ const GRID_DETAIL_PANEL_TOGGLE_FIELD = '__detail_panel_toggle__';
27
+ exports.GRID_DETAIL_PANEL_TOGGLE_FIELD = GRID_DETAIL_PANEL_TOGGLE_FIELD;
28
+ const GRID_DETAIL_PANEL_TOGGLE_COL_DEF = (0, _extends2.default)({}, _xDataGrid.GRID_STRING_COL_DEF, {
29
+ field: GRID_DETAIL_PANEL_TOGGLE_FIELD,
30
+ headerName: '',
31
+ type: 'detailPanelToggle',
32
+ editable: false,
33
+ sortable: false,
34
+ filterable: false,
35
+ resizable: false,
36
+ disableColumnMenu: true,
37
+ disableReorder: true,
38
+ disableExport: true,
39
+ align: 'left',
40
+ width: 40,
41
+ valueGetter: params => {
42
+ const expandedRowIds = (0, _gridDetailPanelSelector.gridDetailPanelExpandedRowIdsSelector)(params.api.state);
43
+ return expandedRowIds.includes(params.id);
44
+ },
45
+ renderCell: params => /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridDetailPanelToggleCell.GridDetailPanelToggleCell, (0, _extends2.default)({}, params))
46
+ });
47
+ exports.GRID_DETAIL_PANEL_TOGGLE_COL_DEF = GRID_DETAIL_PANEL_TOGGLE_COL_DEF;
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+
7
+ var _gridDetailPanelToggleColDef = require("./gridDetailPanelToggleColDef");
8
+
9
+ Object.keys(_gridDetailPanelToggleColDef).forEach(function (key) {
10
+ if (key === "default" || key === "__esModule") return;
11
+ if (key in exports && exports[key] === _gridDetailPanelToggleColDef[key]) return;
12
+ Object.defineProperty(exports, key, {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _gridDetailPanelToggleColDef[key];
16
+ }
17
+ });
18
+ });
19
+
20
+ var _gridDetailPanelSelector = require("./gridDetailPanelSelector");
21
+
22
+ Object.keys(_gridDetailPanelSelector).forEach(function (key) {
23
+ if (key === "default" || key === "__esModule") return;
24
+ if (key in exports && exports[key] === _gridDetailPanelSelector[key]) return;
25
+ Object.defineProperty(exports, key, {
26
+ enumerable: true,
27
+ get: function () {
28
+ return _gridDetailPanelSelector[key];
29
+ }
30
+ });
31
+ });
32
+
33
+ var _gridDetailPanelInterface = require("./gridDetailPanelInterface");
34
+
35
+ Object.keys(_gridDetailPanelInterface).forEach(function (key) {
36
+ if (key === "default" || key === "__esModule") return;
37
+ if (key in exports && exports[key] === _gridDetailPanelInterface[key]) return;
38
+ Object.defineProperty(exports, key, {
39
+ enumerable: true,
40
+ get: function () {
41
+ return _gridDetailPanelInterface[key];
42
+ }
43
+ });
44
+ });
@@ -0,0 +1,130 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.useGridDetailPanel = void 0;
9
+
10
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
+
12
+ var React = _interopRequireWildcard(require("react"));
13
+
14
+ var _xDataGrid = require("@mui/x-data-grid");
15
+
16
+ var _internals = require("@mui/x-data-grid/internals");
17
+
18
+ var _gridDetailPanelToggleColDef = require("./gridDetailPanelToggleColDef");
19
+
20
+ var _gridDetailPanelSelector = require("./gridDetailPanelSelector");
21
+
22
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
23
+
24
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
25
+
26
+ const useGridDetailPanel = (apiRef, props) => {
27
+ (0, _internals.useGridStateInit)(apiRef, state => {
28
+ var _ref, _props$detailPanelExp, _props$initialState, _props$initialState$d;
29
+
30
+ return (0, _extends2.default)({}, state, {
31
+ detailPanel: {
32
+ expandedRowIds: (_ref = (_props$detailPanelExp = props.detailPanelExpandedRowIds) != null ? _props$detailPanelExp : (_props$initialState = props.initialState) == null ? void 0 : (_props$initialState$d = _props$initialState.detailPanel) == null ? void 0 : _props$initialState$d.expandedRowIds) != null ? _ref : []
33
+ }
34
+ });
35
+ });
36
+ const expandedRowIds = (0, _xDataGrid.useGridSelector)(apiRef, _gridDetailPanelSelector.gridDetailPanelExpandedRowIdsSelector);
37
+ const contentCache = (0, _xDataGrid.useGridSelector)(apiRef, _gridDetailPanelSelector.gridDetailPanelExpandedRowsContentCacheSelector);
38
+ const handleCellClick = React.useCallback((params, event) => {
39
+ if (params.field !== _gridDetailPanelToggleColDef.GRID_DETAIL_PANEL_TOGGLE_FIELD || props.getDetailPanelContent == null) {
40
+ return;
41
+ }
42
+
43
+ const content = contentCache[params.id];
44
+
45
+ if (! /*#__PURE__*/React.isValidElement(content)) {
46
+ return;
47
+ } // Ignore if the user didn't click specifically in the "i" button
48
+
49
+
50
+ if (event.target === event.currentTarget) {
51
+ return;
52
+ }
53
+
54
+ apiRef.current.toggleDetailPanel(params.id);
55
+ }, [apiRef, contentCache, props.getDetailPanelContent]);
56
+ const handleCellKeyDown = React.useCallback((params, event) => {
57
+ if (!event.ctrlKey || event.key !== 'Enter' || props.getDetailPanelContent == null) {
58
+ return;
59
+ }
60
+
61
+ apiRef.current.toggleDetailPanel(params.id);
62
+ }, [apiRef, props.getDetailPanelContent]);
63
+ (0, _xDataGrid.useGridApiEventHandler)(apiRef, _xDataGrid.GridEvents.cellClick, handleCellClick);
64
+ (0, _xDataGrid.useGridApiEventHandler)(apiRef, _xDataGrid.GridEvents.cellKeyDown, handleCellKeyDown);
65
+ const addDetailHeight = React.useCallback((initialValue, row) => {
66
+ var _heightCache$row$id;
67
+
68
+ if (expandedRowIds.length === 0 || !expandedRowIds.includes(row.id)) {
69
+ return (0, _extends2.default)({}, initialValue, {
70
+ detail: 0
71
+ });
72
+ }
73
+
74
+ const heightCache = (0, _gridDetailPanelSelector.gridDetailPanelExpandedRowsHeightCacheSelector)(apiRef.current.state);
75
+ return (0, _extends2.default)({}, initialValue, {
76
+ detail: (_heightCache$row$id = heightCache[row.id]) != null ? _heightCache$row$id : 0 // Fallback to zero because the cache might not be ready yet (e.g. page was changed)
77
+
78
+ });
79
+ }, [apiRef, expandedRowIds]);
80
+ (0, _internals.useGridRegisterPreProcessor)(apiRef, 'rowHeight', addDetailHeight);
81
+ apiRef.current.unstable_updateControlState({
82
+ stateId: 'detailPanels',
83
+ propModel: props.detailPanelExpandedRowIds,
84
+ propOnChange: props.onDetailPanelExpandedRowIdsChange,
85
+ stateSelector: _gridDetailPanelSelector.gridDetailPanelExpandedRowIdsSelector,
86
+ changeEvent: _xDataGrid.GridEvents.detailPanelsExpandedRowIdsChange
87
+ });
88
+ const toggleDetailPanel = React.useCallback(id => {
89
+ if (props.getDetailPanelContent == null) {
90
+ return;
91
+ }
92
+
93
+ const content = contentCache[id];
94
+
95
+ if (! /*#__PURE__*/React.isValidElement(content)) {
96
+ return;
97
+ }
98
+
99
+ const ids = apiRef.current.getExpandedDetailPanels();
100
+ apiRef.current.setExpandedDetailPanels(ids.includes(id) ? ids.filter(rowId => rowId !== id) : [...ids, id]);
101
+ }, [apiRef, contentCache, props.getDetailPanelContent]);
102
+ const getExpandedDetailPanels = React.useCallback(() => (0, _gridDetailPanelSelector.gridDetailPanelExpandedRowIdsSelector)(apiRef.current.state), [apiRef]);
103
+ const setExpandedDetailPanels = React.useCallback(ids => {
104
+ apiRef.current.setState(state => {
105
+ return (0, _extends2.default)({}, state, {
106
+ detailPanel: (0, _extends2.default)({}, state.detailPanel, {
107
+ expandedRowIds: ids
108
+ })
109
+ });
110
+ });
111
+ apiRef.current.forceUpdate();
112
+ }, [apiRef]);
113
+ const detailPanelApi = {
114
+ toggleDetailPanel,
115
+ getExpandedDetailPanels,
116
+ setExpandedDetailPanels
117
+ };
118
+ (0, _xDataGrid.useGridApiMethod)(apiRef, detailPanelApi, 'detailPanelApi');
119
+ React.useEffect(() => {
120
+ if (props.detailPanelExpandedRowIds) {
121
+ const currentModel = (0, _gridDetailPanelSelector.gridDetailPanelExpandedRowIdsSelector)(apiRef.current.state);
122
+
123
+ if (currentModel !== props.detailPanelExpandedRowIds) {
124
+ apiRef.current.setExpandedDetailPanels(props.detailPanelExpandedRowIds);
125
+ }
126
+ }
127
+ }, [apiRef, props.detailPanelExpandedRowIds]);
128
+ };
129
+
130
+ exports.useGridDetailPanel = useGridDetailPanel;
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.useGridDetailPanelCache = void 0;
9
+
10
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
+
12
+ var React = _interopRequireWildcard(require("react"));
13
+
14
+ var _xDataGrid = require("@mui/x-data-grid");
15
+
16
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
17
+
18
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
19
+
20
+ function cacheContentAndHeight(apiRef, getDetailPanelContent, getDetailPanelHeight) {
21
+ if (typeof getDetailPanelContent !== 'function') {
22
+ return {};
23
+ } // TODO change to lazy approach using a Proxy
24
+ // only call getDetailPanelContent when asked for an id
25
+
26
+
27
+ const rowIds = (0, _xDataGrid.gridRowIdsSelector)(apiRef);
28
+ const contentCache = rowIds.reduce((acc, id) => {
29
+ const params = apiRef.current.getRowParams(id);
30
+ acc[id] = getDetailPanelContent(params);
31
+ return acc;
32
+ }, {});
33
+ const heightCache = rowIds.reduce((acc, id) => {
34
+ if (contentCache[id] == null) {
35
+ return acc;
36
+ }
37
+
38
+ const params = apiRef.current.getRowParams(id);
39
+ acc[id] = getDetailPanelHeight(params);
40
+ return acc;
41
+ }, {});
42
+ return {
43
+ contentCache,
44
+ heightCache
45
+ };
46
+ }
47
+
48
+ const useGridDetailPanelCache = (apiRef, props) => {
49
+ const updateCaches = React.useCallback(() => {
50
+ apiRef.current.setState(state => {
51
+ return (0, _extends2.default)({}, state, {
52
+ detailPanel: (0, _extends2.default)({}, state.detailPanel, cacheContentAndHeight(apiRef, props.getDetailPanelContent, props.getDetailPanelHeight))
53
+ });
54
+ });
55
+ apiRef.current.forceUpdate();
56
+ }, [apiRef, props.getDetailPanelContent, props.getDetailPanelHeight]);
57
+ (0, _xDataGrid.useGridApiEventHandler)(apiRef, _xDataGrid.GridEvents.visibleRowsSet, updateCaches);
58
+ const isFirstRender = React.useRef(true);
59
+
60
+ if (isFirstRender.current) {
61
+ isFirstRender.current = false;
62
+ updateCaches();
63
+ }
64
+
65
+ React.useEffect(() => {
66
+ if (isFirstRender.current) {
67
+ return;
68
+ }
69
+
70
+ updateCaches();
71
+ }, [updateCaches]);
72
+ };
73
+
74
+ exports.useGridDetailPanelCache = useGridDetailPanelCache;