@mui/x-data-grid-pro 5.5.1 → 5.7.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 +229 -0
  2. package/DataGridPro/DataGridPro.d.ts +3 -0
  3. package/DataGridPro/DataGridPro.js +915 -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 +84 -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 +270 -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 +125 -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 +160 -0
  29. package/components/index.d.ts +3 -0
  30. package/components/index.js +4 -0
  31. package/components/package.json +6 -0
  32. package/hooks/features/columnPinning/gridColumnPinningInterface.d.ts +42 -0
  33. package/hooks/features/columnPinning/gridColumnPinningInterface.js +11 -0
  34. package/hooks/features/columnPinning/gridColumnPinningSelector.d.ts +2 -0
  35. package/hooks/features/columnPinning/gridColumnPinningSelector.js +1 -0
  36. package/hooks/features/columnPinning/index.d.ts +2 -0
  37. package/hooks/features/columnPinning/index.js +2 -0
  38. package/hooks/features/columnPinning/useGridColumnPinning.d.ts +6 -0
  39. package/hooks/features/columnPinning/useGridColumnPinning.js +274 -0
  40. package/hooks/features/columnPinning/useGridColumnPinningPreProcessors.d.ts +4 -0
  41. package/hooks/features/columnPinning/useGridColumnPinningPreProcessors.js +45 -0
  42. package/hooks/features/columnReorder/columnReorderInterfaces.d.ts +6 -0
  43. package/hooks/features/columnReorder/columnReorderInterfaces.js +1 -0
  44. package/hooks/features/columnReorder/columnReorderSelector.d.ts +3 -0
  45. package/hooks/features/columnReorder/columnReorderSelector.js +3 -0
  46. package/hooks/features/columnReorder/index.d.ts +2 -0
  47. package/hooks/features/columnReorder/index.js +2 -0
  48. package/hooks/features/columnReorder/useGridColumnReorder.d.ts +10 -0
  49. package/hooks/features/columnReorder/useGridColumnReorder.js +165 -0
  50. package/hooks/features/columnResize/columnResizeSelector.d.ts +3 -0
  51. package/hooks/features/columnResize/columnResizeSelector.js +3 -0
  52. package/hooks/features/columnResize/columnResizeState.d.ts +3 -0
  53. package/hooks/features/columnResize/columnResizeState.js +1 -0
  54. package/hooks/features/columnResize/index.d.ts +2 -0
  55. package/hooks/features/columnResize/index.js +2 -0
  56. package/hooks/features/columnResize/useGridColumnResize.d.ts +11 -0
  57. package/hooks/features/columnResize/useGridColumnResize.js +305 -0
  58. package/hooks/features/detailPanel/gridDetailPanelInterface.d.ts +28 -0
  59. package/hooks/features/detailPanel/gridDetailPanelInterface.js +1 -0
  60. package/hooks/features/detailPanel/gridDetailPanelSelector.d.ts +5 -0
  61. package/hooks/features/detailPanel/gridDetailPanelSelector.js +3 -0
  62. package/hooks/features/detailPanel/gridDetailPanelToggleColDef.d.ts +3 -0
  63. package/hooks/features/detailPanel/gridDetailPanelToggleColDef.js +26 -0
  64. package/hooks/features/detailPanel/index.d.ts +3 -0
  65. package/hooks/features/detailPanel/index.js +3 -0
  66. package/hooks/features/detailPanel/useGridDetailPanel.d.ts +6 -0
  67. package/hooks/features/detailPanel/useGridDetailPanel.js +109 -0
  68. package/hooks/features/detailPanel/useGridDetailPanelCache.d.ts +4 -0
  69. package/hooks/features/detailPanel/useGridDetailPanelCache.js +57 -0
  70. package/hooks/features/detailPanel/useGridDetailPanelPreProcessors.d.ts +4 -0
  71. package/hooks/features/detailPanel/useGridDetailPanelPreProcessors.js +28 -0
  72. package/hooks/features/index.d.ts +6 -0
  73. package/hooks/features/index.js +7 -0
  74. package/hooks/features/infiniteLoader/useGridInfiniteLoader.d.ts +10 -0
  75. package/hooks/features/infiniteLoader/useGridInfiniteLoader.js +52 -0
  76. package/hooks/features/rowGrouping/createGroupingColDef.d.ts +43 -0
  77. package/hooks/features/rowGrouping/createGroupingColDef.js +318 -0
  78. package/hooks/features/rowGrouping/gridRowGroupingInterfaces.d.ts +37 -0
  79. package/hooks/features/rowGrouping/gridRowGroupingInterfaces.js +1 -0
  80. package/hooks/features/rowGrouping/gridRowGroupingSelector.d.ts +4 -0
  81. package/hooks/features/rowGrouping/gridRowGroupingSelector.js +5 -0
  82. package/hooks/features/rowGrouping/gridRowGroupingUtils.d.ts +27 -0
  83. package/hooks/features/rowGrouping/gridRowGroupingUtils.js +139 -0
  84. package/hooks/features/rowGrouping/index.d.ts +3 -0
  85. package/hooks/features/rowGrouping/index.js +3 -0
  86. package/hooks/features/rowGrouping/useGridRowGrouping.d.ts +13 -0
  87. package/hooks/features/rowGrouping/useGridRowGrouping.js +204 -0
  88. package/hooks/features/rowGrouping/useGridRowGroupingPreProcessors.d.ts +4 -0
  89. package/hooks/features/rowGrouping/useGridRowGroupingPreProcessors.js +203 -0
  90. package/hooks/features/treeData/gridTreeDataGroupColDef.d.ts +7 -0
  91. package/hooks/features/treeData/gridTreeDataGroupColDef.js +22 -0
  92. package/hooks/features/treeData/gridTreeDataUtils.d.ts +15 -0
  93. package/hooks/features/treeData/gridTreeDataUtils.js +88 -0
  94. package/hooks/features/treeData/index.d.ts +1 -0
  95. package/hooks/features/treeData/index.js +1 -0
  96. package/hooks/features/treeData/useGridTreeData.d.ts +6 -0
  97. package/hooks/features/treeData/useGridTreeData.js +29 -0
  98. package/hooks/features/treeData/useGridTreeDataPreProcessors.d.ts +4 -0
  99. package/hooks/features/treeData/useGridTreeDataPreProcessors.js +138 -0
  100. package/hooks/index.d.ts +1 -0
  101. package/hooks/index.js +1 -0
  102. package/hooks/package.json +6 -0
  103. package/hooks/utils/useGridApiContext.d.ts +4 -0
  104. package/hooks/utils/useGridApiContext.js +2 -0
  105. package/hooks/utils/useGridApiRef.d.ts +4 -0
  106. package/hooks/utils/useGridApiRef.js +2 -0
  107. package/hooks/utils/useGridRootProps.d.ts +2 -0
  108. package/hooks/utils/useGridRootProps.js +2 -0
  109. package/index.d.ts +16 -0
  110. package/index.js +20 -0
  111. package/legacy/DataGridPro/DataGridPro.js +915 -0
  112. package/legacy/DataGridPro/index.js +2 -0
  113. package/legacy/DataGridPro/useDataGridProComponent.js +84 -0
  114. package/legacy/DataGridPro/useDataGridProProps.js +58 -0
  115. package/legacy/components/DataGridProColumnHeaders.js +173 -0
  116. package/legacy/components/DataGridProVirtualScroller.js +287 -0
  117. package/legacy/components/GridColumnPinningMenuItems.js +71 -0
  118. package/legacy/components/GridDetailPanelToggleCell.js +121 -0
  119. package/legacy/components/GridGroupingColumnLeafCell.js +20 -0
  120. package/legacy/components/GridGroupingCriteriaCell.js +146 -0
  121. package/legacy/components/GridRowGroupableColumnMenuItems.js +61 -0
  122. package/legacy/components/GridRowGroupingColumnMenuItems.js +56 -0
  123. package/legacy/components/GridTreeDataGroupingCell.js +156 -0
  124. package/legacy/components/index.js +4 -0
  125. package/legacy/hooks/features/columnPinning/gridColumnPinningInterface.js +11 -0
  126. package/legacy/hooks/features/columnPinning/gridColumnPinningSelector.js +3 -0
  127. package/legacy/hooks/features/columnPinning/index.js +2 -0
  128. package/legacy/hooks/features/columnPinning/useGridColumnPinning.js +298 -0
  129. package/legacy/hooks/features/columnPinning/useGridColumnPinningPreProcessors.js +48 -0
  130. package/legacy/hooks/features/columnReorder/columnReorderInterfaces.js +1 -0
  131. package/legacy/hooks/features/columnReorder/columnReorderSelector.js +7 -0
  132. package/legacy/hooks/features/columnReorder/index.js +2 -0
  133. package/legacy/hooks/features/columnReorder/useGridColumnReorder.js +171 -0
  134. package/legacy/hooks/features/columnResize/columnResizeSelector.js +7 -0
  135. package/legacy/hooks/features/columnResize/columnResizeState.js +1 -0
  136. package/legacy/hooks/features/columnResize/index.js +2 -0
  137. package/legacy/hooks/features/columnResize/useGridColumnResize.js +310 -0
  138. package/legacy/hooks/features/detailPanel/gridDetailPanelInterface.js +1 -0
  139. package/legacy/hooks/features/detailPanel/gridDetailPanelSelector.js +9 -0
  140. package/legacy/hooks/features/detailPanel/gridDetailPanelToggleColDef.js +28 -0
  141. package/legacy/hooks/features/detailPanel/index.js +3 -0
  142. package/legacy/hooks/features/detailPanel/useGridDetailPanel.js +114 -0
  143. package/legacy/hooks/features/detailPanel/useGridDetailPanelCache.js +57 -0
  144. package/legacy/hooks/features/detailPanel/useGridDetailPanelPreProcessors.js +31 -0
  145. package/legacy/hooks/features/index.js +7 -0
  146. package/legacy/hooks/features/infiniteLoader/useGridInfiniteLoader.js +51 -0
  147. package/legacy/hooks/features/rowGrouping/createGroupingColDef.js +319 -0
  148. package/legacy/hooks/features/rowGrouping/gridRowGroupingInterfaces.js +1 -0
  149. package/legacy/hooks/features/rowGrouping/gridRowGroupingSelector.js +13 -0
  150. package/legacy/hooks/features/rowGrouping/gridRowGroupingUtils.js +147 -0
  151. package/legacy/hooks/features/rowGrouping/index.js +3 -0
  152. package/legacy/hooks/features/rowGrouping/useGridRowGrouping.js +210 -0
  153. package/legacy/hooks/features/rowGrouping/useGridRowGroupingPreProcessors.js +217 -0
  154. package/legacy/hooks/features/treeData/gridTreeDataGroupColDef.js +24 -0
  155. package/legacy/hooks/features/treeData/gridTreeDataUtils.js +86 -0
  156. package/legacy/hooks/features/treeData/index.js +1 -0
  157. package/legacy/hooks/features/treeData/useGridTreeData.js +29 -0
  158. package/legacy/hooks/features/treeData/useGridTreeDataPreProcessors.js +153 -0
  159. package/legacy/hooks/index.js +1 -0
  160. package/legacy/hooks/utils/useGridApiContext.js +2 -0
  161. package/legacy/hooks/utils/useGridApiRef.js +2 -0
  162. package/legacy/hooks/utils/useGridRootProps.js +2 -0
  163. package/legacy/index.js +20 -0
  164. package/legacy/models/dataGridProProps.js +1 -0
  165. package/legacy/models/gridApiPro.js +1 -0
  166. package/legacy/models/gridGroupingColDefOverride.js +1 -0
  167. package/legacy/models/gridGroupingValueGetterParams.js +1 -0
  168. package/legacy/models/gridRowScrollEndParams.js +1 -0
  169. package/legacy/models/gridStatePro.js +1 -0
  170. package/legacy/models/index.js +4 -0
  171. package/legacy/themeAugmentation/index.js +3 -0
  172. package/legacy/themeAugmentation/overrides.js +1 -0
  173. package/legacy/themeAugmentation/props.js +1 -0
  174. package/legacy/typeOverloads/modules.js +1 -0
  175. package/legacy/typeOverloads/reexports.js +6 -0
  176. package/legacy/utils/domUtils.js +19 -0
  177. package/legacy/utils/releaseInfo.js +15 -0
  178. package/legacy/utils/tree/buildRowTree.js +188 -0
  179. package/legacy/utils/tree/sortRowTree.js +63 -0
  180. package/models/dataGridProProps.d.ts +174 -0
  181. package/models/dataGridProProps.js +1 -0
  182. package/models/gridApiPro.d.ts +12 -0
  183. package/models/gridApiPro.js +1 -0
  184. package/models/gridGroupingColDefOverride.d.ts +30 -0
  185. package/models/gridGroupingColDefOverride.js +1 -0
  186. package/models/gridGroupingValueGetterParams.d.ts +31 -0
  187. package/models/gridGroupingValueGetterParams.js +1 -0
  188. package/models/gridRowScrollEndParams.d.ts +18 -0
  189. package/models/gridRowScrollEndParams.js +1 -0
  190. package/models/gridStatePro.d.ts +20 -0
  191. package/models/gridStatePro.js +1 -0
  192. package/models/index.d.ts +4 -0
  193. package/models/index.js +4 -0
  194. package/models/package.json +6 -0
  195. package/modern/DataGridPro/DataGridPro.js +915 -0
  196. package/modern/DataGridPro/index.js +2 -0
  197. package/modern/DataGridPro/useDataGridProComponent.js +82 -0
  198. package/modern/DataGridPro/useDataGridProProps.js +45 -0
  199. package/modern/components/DataGridProColumnHeaders.js +163 -0
  200. package/modern/components/DataGridProVirtualScroller.js +268 -0
  201. package/modern/components/GridColumnPinningMenuItems.js +71 -0
  202. package/modern/components/GridDetailPanelToggleCell.js +125 -0
  203. package/modern/components/GridGroupingColumnLeafCell.js +20 -0
  204. package/modern/components/GridGroupingCriteriaCell.js +148 -0
  205. package/modern/components/GridRowGroupableColumnMenuItems.js +61 -0
  206. package/modern/components/GridRowGroupingColumnMenuItems.js +56 -0
  207. package/modern/components/GridTreeDataGroupingCell.js +158 -0
  208. package/modern/components/index.js +4 -0
  209. package/modern/hooks/features/columnPinning/gridColumnPinningInterface.js +11 -0
  210. package/modern/hooks/features/columnPinning/gridColumnPinningSelector.js +1 -0
  211. package/modern/hooks/features/columnPinning/index.js +2 -0
  212. package/modern/hooks/features/columnPinning/useGridColumnPinning.js +268 -0
  213. package/modern/hooks/features/columnPinning/useGridColumnPinningPreProcessors.js +45 -0
  214. package/modern/hooks/features/columnReorder/columnReorderInterfaces.js +1 -0
  215. package/modern/hooks/features/columnReorder/columnReorderSelector.js +3 -0
  216. package/modern/hooks/features/columnReorder/index.js +2 -0
  217. package/modern/hooks/features/columnReorder/useGridColumnReorder.js +165 -0
  218. package/modern/hooks/features/columnResize/columnResizeSelector.js +3 -0
  219. package/modern/hooks/features/columnResize/columnResizeState.js +1 -0
  220. package/modern/hooks/features/columnResize/index.js +2 -0
  221. package/modern/hooks/features/columnResize/useGridColumnResize.js +295 -0
  222. package/modern/hooks/features/detailPanel/gridDetailPanelInterface.js +1 -0
  223. package/modern/hooks/features/detailPanel/gridDetailPanelSelector.js +3 -0
  224. package/modern/hooks/features/detailPanel/gridDetailPanelToggleColDef.js +26 -0
  225. package/modern/hooks/features/detailPanel/index.js +3 -0
  226. package/modern/hooks/features/detailPanel/useGridDetailPanel.js +105 -0
  227. package/modern/hooks/features/detailPanel/useGridDetailPanelCache.js +57 -0
  228. package/modern/hooks/features/detailPanel/useGridDetailPanelPreProcessors.js +28 -0
  229. package/modern/hooks/features/index.js +7 -0
  230. package/modern/hooks/features/infiniteLoader/useGridInfiniteLoader.js +52 -0
  231. package/modern/hooks/features/rowGrouping/createGroupingColDef.js +302 -0
  232. package/modern/hooks/features/rowGrouping/gridRowGroupingInterfaces.js +1 -0
  233. package/modern/hooks/features/rowGrouping/gridRowGroupingSelector.js +5 -0
  234. package/modern/hooks/features/rowGrouping/gridRowGroupingUtils.js +137 -0
  235. package/modern/hooks/features/rowGrouping/index.js +3 -0
  236. package/modern/hooks/features/rowGrouping/useGridRowGrouping.js +196 -0
  237. package/modern/hooks/features/rowGrouping/useGridRowGroupingPreProcessors.js +203 -0
  238. package/modern/hooks/features/treeData/gridTreeDataGroupColDef.js +22 -0
  239. package/modern/hooks/features/treeData/gridTreeDataUtils.js +84 -0
  240. package/modern/hooks/features/treeData/index.js +1 -0
  241. package/modern/hooks/features/treeData/useGridTreeData.js +27 -0
  242. package/modern/hooks/features/treeData/useGridTreeDataPreProcessors.js +136 -0
  243. package/modern/hooks/index.js +1 -0
  244. package/modern/hooks/utils/useGridApiContext.js +2 -0
  245. package/modern/hooks/utils/useGridApiRef.js +2 -0
  246. package/modern/hooks/utils/useGridRootProps.js +2 -0
  247. package/modern/index.js +20 -0
  248. package/modern/models/dataGridProProps.js +1 -0
  249. package/modern/models/gridApiPro.js +1 -0
  250. package/modern/models/gridGroupingColDefOverride.js +1 -0
  251. package/modern/models/gridGroupingValueGetterParams.js +1 -0
  252. package/modern/models/gridRowScrollEndParams.js +1 -0
  253. package/modern/models/gridStatePro.js +1 -0
  254. package/modern/models/index.js +4 -0
  255. package/modern/themeAugmentation/index.js +3 -0
  256. package/modern/themeAugmentation/overrides.js +1 -0
  257. package/modern/themeAugmentation/props.js +1 -0
  258. package/modern/typeOverloads/modules.js +1 -0
  259. package/modern/typeOverloads/reexports.js +6 -0
  260. package/modern/utils/domUtils.js +19 -0
  261. package/modern/utils/releaseInfo.js +15 -0
  262. package/modern/utils/tree/buildRowTree.js +167 -0
  263. package/modern/utils/tree/sortRowTree.js +60 -0
  264. package/node/DataGridPro/DataGridPro.js +939 -0
  265. package/node/DataGridPro/index.js +30 -0
  266. package/node/DataGridPro/useDataGridProComponent.js +106 -0
  267. package/node/DataGridPro/useDataGridProProps.js +69 -0
  268. package/node/components/DataGridProColumnHeaders.js +189 -0
  269. package/node/components/DataGridProVirtualScroller.js +297 -0
  270. package/node/components/GridColumnPinningMenuItems.js +88 -0
  271. package/node/components/GridDetailPanelToggleCell.js +146 -0
  272. package/node/components/GridGroupingColumnLeafCell.js +38 -0
  273. package/node/components/GridGroupingCriteriaCell.js +170 -0
  274. package/node/components/GridRowGroupableColumnMenuItems.js +82 -0
  275. package/node/components/GridRowGroupingColumnMenuItems.js +78 -0
  276. package/node/components/GridTreeDataGroupingCell.js +181 -0
  277. package/node/components/index.js +44 -0
  278. package/node/hooks/features/columnPinning/gridColumnPinningInterface.js +17 -0
  279. package/node/hooks/features/columnPinning/gridColumnPinningSelector.js +10 -0
  280. package/node/hooks/features/columnPinning/index.js +31 -0
  281. package/node/hooks/features/columnPinning/useGridColumnPinning.js +297 -0
  282. package/node/hooks/features/columnPinning/useGridColumnPinningPreProcessors.js +66 -0
  283. package/node/hooks/features/columnReorder/columnReorderInterfaces.js +5 -0
  284. package/node/hooks/features/columnReorder/columnReorderSelector.js +14 -0
  285. package/node/hooks/features/columnReorder/index.js +18 -0
  286. package/node/hooks/features/columnReorder/useGridColumnReorder.js +188 -0
  287. package/node/hooks/features/columnResize/columnResizeSelector.js +14 -0
  288. package/node/hooks/features/columnResize/columnResizeState.js +5 -0
  289. package/node/hooks/features/columnResize/index.js +31 -0
  290. package/node/hooks/features/columnResize/useGridColumnResize.js +329 -0
  291. package/node/hooks/features/detailPanel/gridDetailPanelInterface.js +5 -0
  292. package/node/hooks/features/detailPanel/gridDetailPanelSelector.js +18 -0
  293. package/node/hooks/features/detailPanel/gridDetailPanelToggleColDef.js +47 -0
  294. package/node/hooks/features/detailPanel/index.js +44 -0
  295. package/node/hooks/features/detailPanel/useGridDetailPanel.js +133 -0
  296. package/node/hooks/features/detailPanel/useGridDetailPanelCache.js +74 -0
  297. package/node/hooks/features/detailPanel/useGridDetailPanelPreProcessors.js +44 -0
  298. package/node/hooks/features/index.js +83 -0
  299. package/node/hooks/features/infiniteLoader/useGridInfiniteLoader.js +67 -0
  300. package/node/hooks/features/rowGrouping/createGroupingColDef.js +341 -0
  301. package/node/hooks/features/rowGrouping/gridRowGroupingInterfaces.js +5 -0
  302. package/node/hooks/features/rowGrouping/gridRowGroupingSelector.js +18 -0
  303. package/node/hooks/features/rowGrouping/gridRowGroupingUtils.js +172 -0
  304. package/node/hooks/features/rowGrouping/index.js +51 -0
  305. package/node/hooks/features/rowGrouping/useGridRowGrouping.js +232 -0
  306. package/node/hooks/features/rowGrouping/useGridRowGroupingPreProcessors.js +227 -0
  307. package/node/hooks/features/treeData/gridTreeDataGroupColDef.js +35 -0
  308. package/node/hooks/features/treeData/gridTreeDataUtils.js +98 -0
  309. package/node/hooks/features/treeData/index.js +13 -0
  310. package/node/hooks/features/treeData/useGridTreeData.js +43 -0
  311. package/node/hooks/features/treeData/useGridTreeDataPreProcessors.js +164 -0
  312. package/node/hooks/index.js +18 -0
  313. package/node/hooks/utils/useGridApiContext.js +11 -0
  314. package/node/hooks/utils/useGridApiRef.js +11 -0
  315. package/node/hooks/utils/useGridRootProps.js +11 -0
  316. package/node/index.js +214 -0
  317. package/node/models/dataGridProProps.js +5 -0
  318. package/node/models/gridApiPro.js +5 -0
  319. package/node/models/gridGroupingColDefOverride.js +5 -0
  320. package/node/models/gridGroupingValueGetterParams.js +5 -0
  321. package/node/models/gridRowScrollEndParams.js +5 -0
  322. package/node/models/gridStatePro.js +5 -0
  323. package/node/models/index.js +44 -0
  324. package/node/themeAugmentation/index.js +31 -0
  325. package/node/themeAugmentation/overrides.js +5 -0
  326. package/node/themeAugmentation/props.js +5 -0
  327. package/node/typeOverloads/modules.js +5 -0
  328. package/node/typeOverloads/reexports.js +29 -0
  329. package/node/utils/domUtils.js +32 -0
  330. package/node/utils/releaseInfo.js +25 -0
  331. package/node/utils/tree/buildRowTree.js +185 -0
  332. package/node/utils/tree/sortRowTree.js +69 -0
  333. package/package.json +11 -12
  334. package/themeAugmentation/index.d.ts +2 -2
  335. package/themeAugmentation/index.js +3 -0
  336. package/themeAugmentation/overrides.d.ts +8 -8
  337. package/themeAugmentation/overrides.js +1 -0
  338. package/themeAugmentation/package.json +6 -0
  339. package/themeAugmentation/props.d.ts +19 -19
  340. package/themeAugmentation/props.js +1 -0
  341. package/typeOverloads/modules.d.ts +41 -0
  342. package/typeOverloads/modules.js +1 -0
  343. package/typeOverloads/reexports.d.ts +22 -0
  344. package/typeOverloads/reexports.js +6 -0
  345. package/utils/domUtils.d.ts +3 -0
  346. package/utils/domUtils.js +19 -0
  347. package/utils/releaseInfo.d.ts +1 -0
  348. package/utils/releaseInfo.js +15 -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 -5495
@@ -0,0 +1,165 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import * as React from 'react';
3
+ import { unstable_composeClasses as composeClasses } from '@mui/material';
4
+ import { useGridApiEventHandler, getDataGridUtilityClass, GridEvents, useGridLogger } from '@mui/x-data-grid';
5
+ import { gridColumnReorderDragColSelector } from './columnReorderSelector';
6
+ const CURSOR_MOVE_DIRECTION_LEFT = 'left';
7
+ const CURSOR_MOVE_DIRECTION_RIGHT = 'right';
8
+
9
+ const getCursorMoveDirectionX = (currentCoordinates, nextCoordinates) => {
10
+ return currentCoordinates.x <= nextCoordinates.x ? CURSOR_MOVE_DIRECTION_RIGHT : CURSOR_MOVE_DIRECTION_LEFT;
11
+ };
12
+
13
+ const hasCursorPositionChanged = (currentCoordinates, nextCoordinates) => currentCoordinates.x !== nextCoordinates.x || currentCoordinates.y !== nextCoordinates.y;
14
+
15
+ const useUtilityClasses = ownerState => {
16
+ const {
17
+ classes
18
+ } = ownerState;
19
+ const slots = {
20
+ columnHeaderDragging: ['columnHeader--dragging']
21
+ };
22
+ return composeClasses(slots, getDataGridUtilityClass, classes);
23
+ };
24
+
25
+ export const columnReorderStateInitializer = state => _extends({}, state, {
26
+ columnReorder: {
27
+ dragCol: ''
28
+ }
29
+ });
30
+ /**
31
+ * Only available in DataGridPro
32
+ * @requires useGridColumns (method)
33
+ */
34
+
35
+ export const useGridColumnReorder = (apiRef, props) => {
36
+ const logger = useGridLogger(apiRef, 'useGridColumnReorder');
37
+ const dragColNode = React.useRef(null);
38
+ const cursorPosition = React.useRef({
39
+ x: 0,
40
+ y: 0
41
+ });
42
+ const originColumnIndex = React.useRef(null);
43
+ const removeDnDStylesTimeout = React.useRef();
44
+ const ownerState = {
45
+ classes: props.classes
46
+ };
47
+ const classes = useUtilityClasses(ownerState);
48
+ React.useEffect(() => {
49
+ return () => {
50
+ clearTimeout(removeDnDStylesTimeout.current);
51
+ };
52
+ }, []);
53
+ const handleColumnHeaderDragStart = React.useCallback((params, event) => {
54
+ if (props.disableColumnReorder || params.colDef.disableReorder) {
55
+ return;
56
+ }
57
+
58
+ logger.debug(`Start dragging col ${params.field}`); // Prevent drag events propagation.
59
+ // For more information check here https://github.com/mui/mui-x/issues/2680.
60
+
61
+ event.stopPropagation();
62
+ dragColNode.current = event.currentTarget;
63
+ dragColNode.current.classList.add(classes.columnHeaderDragging);
64
+ apiRef.current.setState(state => _extends({}, state, {
65
+ columnReorder: _extends({}, state.columnReorder, {
66
+ dragCol: params.field
67
+ })
68
+ }));
69
+ apiRef.current.forceUpdate();
70
+ removeDnDStylesTimeout.current = setTimeout(() => {
71
+ dragColNode.current.classList.remove(classes.columnHeaderDragging);
72
+ });
73
+ originColumnIndex.current = apiRef.current.getColumnIndex(params.field, false);
74
+ }, [props.disableColumnReorder, classes.columnHeaderDragging, logger, apiRef]);
75
+ const handleDragEnter = React.useCallback((params, event) => {
76
+ event.preventDefault(); // Prevent drag events propagation.
77
+ // For more information check here https://github.com/mui/mui-x/issues/2680.
78
+
79
+ event.stopPropagation();
80
+ }, []);
81
+ const handleDragOver = React.useCallback((params, event) => {
82
+ const dragColField = gridColumnReorderDragColSelector(apiRef);
83
+
84
+ if (!dragColField) {
85
+ return;
86
+ }
87
+
88
+ logger.debug(`Dragging over col ${params.field}`);
89
+ event.preventDefault(); // Prevent drag events propagation.
90
+ // For more information check here https://github.com/mui/mui-x/issues/2680.
91
+
92
+ event.stopPropagation();
93
+ const coordinates = {
94
+ x: event.clientX,
95
+ y: event.clientY
96
+ };
97
+
98
+ if (params.field !== dragColField && hasCursorPositionChanged(cursorPosition.current, coordinates)) {
99
+ const targetColIndex = apiRef.current.getColumnIndex(params.field, false);
100
+ const targetColVisibleIndex = apiRef.current.getColumnIndex(params.field, true);
101
+ const targetCol = apiRef.current.getColumn(params.field);
102
+ const dragColIndex = apiRef.current.getColumnIndex(dragColField, false);
103
+ const visibleColumns = apiRef.current.getVisibleColumns();
104
+ const cursorMoveDirectionX = getCursorMoveDirectionX(cursorPosition.current, coordinates);
105
+ const hasMovedLeft = cursorMoveDirectionX === CURSOR_MOVE_DIRECTION_LEFT && targetColIndex < dragColIndex;
106
+ const hasMovedRight = cursorMoveDirectionX === CURSOR_MOVE_DIRECTION_RIGHT && dragColIndex < targetColIndex;
107
+
108
+ if (hasMovedLeft || hasMovedRight) {
109
+ let canBeReordered;
110
+
111
+ if (!targetCol.disableReorder) {
112
+ canBeReordered = true;
113
+ } else if (hasMovedLeft) {
114
+ canBeReordered = targetColIndex > 0 && !visibleColumns[targetColIndex - 1].disableReorder;
115
+ } else {
116
+ canBeReordered = targetColIndex < visibleColumns.length - 1 && !visibleColumns[targetColIndex + 1].disableReorder;
117
+ }
118
+
119
+ const canBeReorderedProcessed = apiRef.current.unstable_applyPreProcessors('canBeReordered', canBeReordered, {
120
+ targetIndex: targetColVisibleIndex
121
+ });
122
+
123
+ if (canBeReorderedProcessed) {
124
+ apiRef.current.setColumnIndex(dragColField, targetColIndex);
125
+ }
126
+ }
127
+
128
+ cursorPosition.current = coordinates;
129
+ }
130
+ }, [apiRef, logger]);
131
+ const handleDragEnd = React.useCallback((params, event) => {
132
+ const dragColField = gridColumnReorderDragColSelector(apiRef);
133
+
134
+ if (props.disableColumnReorder || !dragColField) {
135
+ return;
136
+ }
137
+
138
+ logger.debug('End dragging col');
139
+ event.preventDefault(); // Prevent drag events propagation.
140
+ // For more information check here https://github.com/mui/mui-x/issues/2680.
141
+
142
+ event.stopPropagation();
143
+ clearTimeout(removeDnDStylesTimeout.current);
144
+ dragColNode.current = null; // Check if the column was dropped outside the grid.
145
+
146
+ if (event.dataTransfer.dropEffect === 'none') {
147
+ // Accessing params.field may contain the wrong field as header elements are reused
148
+ apiRef.current.setColumnIndex(dragColField, originColumnIndex.current);
149
+ originColumnIndex.current = null;
150
+ }
151
+
152
+ apiRef.current.setState(state => _extends({}, state, {
153
+ columnReorder: _extends({}, state.columnReorder, {
154
+ dragCol: ''
155
+ })
156
+ }));
157
+ apiRef.current.forceUpdate();
158
+ }, [props.disableColumnReorder, logger, apiRef]);
159
+ useGridApiEventHandler(apiRef, GridEvents.columnHeaderDragStart, handleColumnHeaderDragStart);
160
+ useGridApiEventHandler(apiRef, GridEvents.columnHeaderDragEnter, handleDragEnter);
161
+ useGridApiEventHandler(apiRef, GridEvents.columnHeaderDragOver, handleDragOver);
162
+ useGridApiEventHandler(apiRef, GridEvents.columnHeaderDragEnd, handleDragEnd);
163
+ useGridApiEventHandler(apiRef, GridEvents.cellDragEnter, handleDragEnter);
164
+ useGridApiEventHandler(apiRef, GridEvents.cellDragOver, handleDragOver);
165
+ };
@@ -0,0 +1,3 @@
1
+ import { GridStatePro } from '../../../models/gridStatePro';
2
+ export declare const gridColumnResizeSelector: (state: GridStatePro) => import("./columnResizeState").GridColumnResizeState;
3
+ export declare const gridResizingColumnFieldSelector: import("@mui/x-data-grid").OutputSelector<GridStatePro, string>;
@@ -0,0 +1,3 @@
1
+ import { createSelector } from '@mui/x-data-grid/internals';
2
+ export const gridColumnResizeSelector = state => state.columnResize;
3
+ export const gridResizingColumnFieldSelector = createSelector(gridColumnResizeSelector, columnResize => columnResize.resizingColumnField);
@@ -0,0 +1,3 @@
1
+ export interface GridColumnResizeState {
2
+ resizingColumnField: string;
3
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,2 @@
1
+ export * from './columnResizeSelector';
2
+ export * from './columnResizeState';
@@ -0,0 +1,2 @@
1
+ export * from './columnResizeSelector';
2
+ export * from './columnResizeState';
@@ -0,0 +1,11 @@
1
+ import * as React from 'react';
2
+ import { GridStateInitializer } from '@mui/x-data-grid/internals';
3
+ import { GridApiPro } from '../../../models/gridApiPro';
4
+ import { DataGridProProcessedProps } from '../../../models/dataGridProProps';
5
+ export declare const columnResizeStateInitializer: GridStateInitializer;
6
+ /**
7
+ * Only available in DataGridPro
8
+ * @requires useGridColumns (method, event)
9
+ * TODO: improve experience for last column
10
+ */
11
+ export declare const useGridColumnResize: (apiRef: React.MutableRefObject<GridApiPro>, props: Pick<DataGridProProcessedProps, 'onColumnResize' | 'onColumnWidthChange'>) => void;
@@ -0,0 +1,305 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import * as React from 'react';
3
+ import { ownerDocument, useEventCallback } from '@mui/material/utils';
4
+ import { GridEvents, gridClasses, GridColumnHeaderSeparatorSides, useGridApiEventHandler, useGridApiOptionHandler, useGridNativeEventListener, useGridLogger } from '@mui/x-data-grid';
5
+ import { clamp, findParentElementFromClassName } from '@mui/x-data-grid/internals';
6
+ import { findGridCellElementsFromCol, getFieldFromHeaderElem, findHeaderElementFromField } from '../../../utils/domUtils';
7
+ // TODO: remove support for Safari < 13.
8
+ // https://caniuse.com/#search=touch-action
9
+ //
10
+ // Safari, on iOS, supports touch action since v13.
11
+ // Over 80% of the iOS phones are compatible
12
+ // in August 2020.
13
+ // Utilizing the CSS.supports method to check if touch-action is supported.
14
+ // Since CSS.supports is supported on all but Edge@12 and IE and touch-action
15
+ // is supported on both Edge@12 and IE if CSS.supports is not available that means that
16
+ // touch-action will be supported
17
+ let cachedSupportsTouchActionNone = false;
18
+
19
+ function doesSupportTouchActionNone() {
20
+ if (cachedSupportsTouchActionNone === undefined) {
21
+ if (typeof CSS !== 'undefined' && typeof CSS.supports === 'function') {
22
+ cachedSupportsTouchActionNone = CSS.supports('touch-action', 'none');
23
+ } else {
24
+ cachedSupportsTouchActionNone = true;
25
+ }
26
+ }
27
+
28
+ return cachedSupportsTouchActionNone;
29
+ }
30
+
31
+ function trackFinger(event, currentTouchId) {
32
+ if (currentTouchId !== undefined && event.changedTouches) {
33
+ for (let i = 0; i < event.changedTouches.length; i += 1) {
34
+ const touch = event.changedTouches[i];
35
+
36
+ if (touch.identifier === currentTouchId) {
37
+ return {
38
+ x: touch.clientX,
39
+ y: touch.clientY
40
+ };
41
+ }
42
+ }
43
+
44
+ return false;
45
+ }
46
+
47
+ return {
48
+ x: event.clientX,
49
+ y: event.clientY
50
+ };
51
+ }
52
+
53
+ function computeNewWidth(initialOffsetToSeparator, clickX, columnBounds, separatorSide) {
54
+ let newWidth = initialOffsetToSeparator;
55
+
56
+ if (separatorSide === GridColumnHeaderSeparatorSides.Right) {
57
+ newWidth += clickX - columnBounds.left;
58
+ } else {
59
+ newWidth += columnBounds.right - clickX;
60
+ }
61
+
62
+ return newWidth;
63
+ }
64
+
65
+ function computeOffsetToSeparator(clickX, columnBounds, separatorSide) {
66
+ if (separatorSide === GridColumnHeaderSeparatorSides.Left) {
67
+ return clickX - columnBounds.left;
68
+ }
69
+
70
+ return columnBounds.right - clickX;
71
+ }
72
+
73
+ function getSeparatorSide(element) {
74
+ return element.classList.contains(gridClasses['columnSeparator--sideRight']) ? GridColumnHeaderSeparatorSides.Right : GridColumnHeaderSeparatorSides.Left;
75
+ }
76
+
77
+ export const columnResizeStateInitializer = state => _extends({}, state, {
78
+ columnResize: {
79
+ resizingColumnField: ''
80
+ }
81
+ });
82
+ /**
83
+ * Only available in DataGridPro
84
+ * @requires useGridColumns (method, event)
85
+ * TODO: improve experience for last column
86
+ */
87
+
88
+ export const useGridColumnResize = (apiRef, props) => {
89
+ const logger = useGridLogger(apiRef, 'useGridColumnResize');
90
+ const colDefRef = React.useRef();
91
+ const colElementRef = React.useRef();
92
+ const colCellElementsRef = React.useRef(); // To improve accessibility, the separator has padding on both sides.
93
+ // Clicking inside the padding area should be treated as a click in the separator.
94
+ // This ref stores the offset between the click and the separator.
95
+
96
+ const initialOffsetToSeparator = React.useRef();
97
+ const separatorSide = React.useRef();
98
+ const stopResizeEventTimeout = React.useRef();
99
+ const touchId = React.useRef();
100
+
101
+ const updateWidth = newWidth => {
102
+ logger.debug(`Updating width to ${newWidth} for col ${colDefRef.current.field}`);
103
+ colDefRef.current.computedWidth = newWidth;
104
+ colDefRef.current.width = newWidth;
105
+ colDefRef.current.flex = undefined;
106
+ colElementRef.current.style.width = `${newWidth}px`;
107
+ colElementRef.current.style.minWidth = `${newWidth}px`;
108
+ colElementRef.current.style.maxWidth = `${newWidth}px`;
109
+ colCellElementsRef.current.forEach(element => {
110
+ const div = element;
111
+ div.style.width = `${newWidth}px`;
112
+ div.style.minWidth = `${newWidth}px`;
113
+ div.style.maxWidth = `${newWidth}px`;
114
+ });
115
+ };
116
+
117
+ const handleResizeMouseUp = useEventCallback(nativeEvent => {
118
+ // eslint-disable-next-line @typescript-eslint/no-use-before-define
119
+ stopListening();
120
+ apiRef.current.updateColumn(colDefRef.current);
121
+ clearTimeout(stopResizeEventTimeout.current);
122
+ stopResizeEventTimeout.current = setTimeout(() => {
123
+ apiRef.current.publishEvent(GridEvents.columnResizeStop, null, nativeEvent);
124
+
125
+ if (colDefRef.current) {
126
+ var _colDefRef$current;
127
+
128
+ apiRef.current.publishEvent(GridEvents.columnWidthChange, {
129
+ element: colElementRef.current,
130
+ colDef: colDefRef.current,
131
+ width: (_colDefRef$current = colDefRef.current) == null ? void 0 : _colDefRef$current.computedWidth
132
+ }, nativeEvent);
133
+ }
134
+ });
135
+ logger.debug(`Updating col ${colDefRef.current.field} with new width: ${colDefRef.current.width}`);
136
+ });
137
+ const handleResizeMouseMove = useEventCallback(nativeEvent => {
138
+ // Cancel move in case some other element consumed a mouseup event and it was not fired.
139
+ if (nativeEvent.buttons === 0) {
140
+ handleResizeMouseUp(nativeEvent);
141
+ return;
142
+ }
143
+
144
+ let newWidth = computeNewWidth(initialOffsetToSeparator.current, nativeEvent.clientX, colElementRef.current.getBoundingClientRect(), separatorSide.current);
145
+ newWidth = clamp(newWidth, colDefRef.current.minWidth, colDefRef.current.maxWidth);
146
+ updateWidth(newWidth);
147
+ const params = {
148
+ element: colElementRef.current,
149
+ colDef: colDefRef.current,
150
+ width: newWidth
151
+ };
152
+ apiRef.current.publishEvent(GridEvents.columnResize, params, nativeEvent);
153
+ });
154
+ const handleColumnResizeMouseDown = useEventCallback(({
155
+ colDef
156
+ }, event) => {
157
+ var _apiRef$current$colum;
158
+
159
+ // Only handle left clicks
160
+ if (event.button !== 0) {
161
+ return;
162
+ } // Skip if the column isn't resizable
163
+
164
+
165
+ if (!event.currentTarget.classList.contains(gridClasses['columnSeparator--resizable'])) {
166
+ return;
167
+ } // Avoid text selection
168
+
169
+
170
+ event.preventDefault();
171
+ logger.debug(`Start Resize on col ${colDef.field}`);
172
+ apiRef.current.publishEvent(GridEvents.columnResizeStart, {
173
+ field: colDef.field
174
+ }, event);
175
+ colDefRef.current = colDef;
176
+ colElementRef.current = (_apiRef$current$colum = apiRef.current.columnHeadersContainerElementRef) == null ? void 0 : _apiRef$current$colum.current.querySelector(`[data-field="${colDef.field}"]`);
177
+ colCellElementsRef.current = findGridCellElementsFromCol(colElementRef.current);
178
+ const doc = ownerDocument(apiRef.current.rootElementRef.current);
179
+ doc.body.style.cursor = 'col-resize';
180
+ separatorSide.current = getSeparatorSide(event.currentTarget);
181
+ initialOffsetToSeparator.current = computeOffsetToSeparator(event.clientX, colElementRef.current.getBoundingClientRect(), separatorSide.current);
182
+ doc.addEventListener('mousemove', handleResizeMouseMove);
183
+ doc.addEventListener('mouseup', handleResizeMouseUp);
184
+ });
185
+ const handleTouchEnd = useEventCallback(nativeEvent => {
186
+ const finger = trackFinger(nativeEvent, touchId.current);
187
+
188
+ if (!finger) {
189
+ return;
190
+ } // eslint-disable-next-line @typescript-eslint/no-use-before-define
191
+
192
+
193
+ stopListening();
194
+ apiRef.current.updateColumn(colDefRef.current);
195
+ clearTimeout(stopResizeEventTimeout.current);
196
+ stopResizeEventTimeout.current = setTimeout(() => {
197
+ apiRef.current.publishEvent(GridEvents.columnResizeStop, null, nativeEvent);
198
+ });
199
+ logger.debug(`Updating col ${colDefRef.current.field} with new width: ${colDefRef.current.width}`);
200
+ });
201
+ const handleTouchMove = useEventCallback(nativeEvent => {
202
+ const finger = trackFinger(nativeEvent, touchId.current);
203
+
204
+ if (!finger) {
205
+ return;
206
+ } // Cancel move in case some other element consumed a touchmove event and it was not fired.
207
+
208
+
209
+ if (nativeEvent.type === 'mousemove' && nativeEvent.buttons === 0) {
210
+ handleTouchEnd(nativeEvent);
211
+ return;
212
+ }
213
+
214
+ let newWidth = computeNewWidth(initialOffsetToSeparator.current, finger.x, colElementRef.current.getBoundingClientRect(), separatorSide.current);
215
+ newWidth = clamp(newWidth, colDefRef.current.minWidth, colDefRef.current.maxWidth);
216
+ updateWidth(newWidth);
217
+ const params = {
218
+ element: colElementRef.current,
219
+ colDef: colDefRef.current,
220
+ width: newWidth
221
+ };
222
+ apiRef.current.publishEvent(GridEvents.columnResize, params, nativeEvent);
223
+ });
224
+ const handleTouchStart = useEventCallback(event => {
225
+ var _apiRef$current$colum2;
226
+
227
+ const cellSeparator = findParentElementFromClassName(event.target, gridClasses['columnSeparator--resizable']); // Let the event bubble if the target is not a col separator
228
+
229
+ if (!cellSeparator) {
230
+ return;
231
+ } // If touch-action: none; is not supported we need to prevent the scroll manually.
232
+
233
+
234
+ if (!doesSupportTouchActionNone()) {
235
+ event.preventDefault();
236
+ }
237
+
238
+ const touch = event.changedTouches[0];
239
+
240
+ if (touch != null) {
241
+ // A number that uniquely identifies the current finger in the touch session.
242
+ touchId.current = touch.identifier;
243
+ }
244
+
245
+ colElementRef.current = findParentElementFromClassName(event.target, gridClasses.columnHeader);
246
+ const field = getFieldFromHeaderElem(colElementRef.current);
247
+ const colDef = apiRef.current.getColumn(field);
248
+ logger.debug(`Start Resize on col ${colDef.field}`);
249
+ apiRef.current.publishEvent(GridEvents.columnResizeStart, {
250
+ field
251
+ }, event);
252
+ colDefRef.current = colDef;
253
+ colElementRef.current = findHeaderElementFromField((_apiRef$current$colum2 = apiRef.current.columnHeadersElementRef) == null ? void 0 : _apiRef$current$colum2.current, colDef.field);
254
+ colCellElementsRef.current = findGridCellElementsFromCol(colElementRef.current);
255
+ separatorSide.current = getSeparatorSide(event.target);
256
+ initialOffsetToSeparator.current = computeOffsetToSeparator(touch.clientX, colElementRef.current.getBoundingClientRect(), separatorSide.current);
257
+ const doc = ownerDocument(event.currentTarget);
258
+ doc.addEventListener('touchmove', handleTouchMove);
259
+ doc.addEventListener('touchend', handleTouchEnd);
260
+ });
261
+ const stopListening = React.useCallback(() => {
262
+ const doc = ownerDocument(apiRef.current.rootElementRef.current);
263
+ doc.body.style.removeProperty('cursor');
264
+ doc.removeEventListener('mousemove', handleResizeMouseMove);
265
+ doc.removeEventListener('mouseup', handleResizeMouseUp);
266
+ doc.removeEventListener('touchmove', handleTouchMove);
267
+ doc.removeEventListener('touchend', handleTouchEnd);
268
+ }, [apiRef, handleResizeMouseMove, handleResizeMouseUp, handleTouchMove, handleTouchEnd]);
269
+ const handleResizeStart = React.useCallback(({
270
+ field
271
+ }) => {
272
+ apiRef.current.setState(state => _extends({}, state, {
273
+ columnResize: _extends({}, state.columnResize, {
274
+ resizingColumnField: field
275
+ })
276
+ }));
277
+ apiRef.current.forceUpdate();
278
+ }, [apiRef]);
279
+ const handleResizeStop = React.useCallback(() => {
280
+ apiRef.current.setState(state => _extends({}, state, {
281
+ columnResize: _extends({}, state.columnResize, {
282
+ resizingColumnField: ''
283
+ })
284
+ }));
285
+ apiRef.current.forceUpdate();
286
+ }, [apiRef]);
287
+ React.useEffect(() => {
288
+ return () => {
289
+ clearTimeout(stopResizeEventTimeout.current);
290
+ stopListening();
291
+ };
292
+ }, [apiRef, handleTouchStart, stopListening]);
293
+ useGridNativeEventListener(apiRef, () => {
294
+ var _apiRef$current$colum3;
295
+
296
+ return (_apiRef$current$colum3 = apiRef.current.columnHeadersElementRef) == null ? void 0 : _apiRef$current$colum3.current;
297
+ }, 'touchstart', handleTouchStart, {
298
+ passive: doesSupportTouchActionNone()
299
+ });
300
+ useGridApiEventHandler(apiRef, GridEvents.columnSeparatorMouseDown, handleColumnResizeMouseDown);
301
+ useGridApiEventHandler(apiRef, GridEvents.columnResizeStart, handleResizeStart);
302
+ useGridApiEventHandler(apiRef, GridEvents.columnResizeStop, handleResizeStop);
303
+ useGridApiOptionHandler(apiRef, GridEvents.columnResize, props.onColumnResize);
304
+ useGridApiOptionHandler(apiRef, GridEvents.columnWidthChange, props.onColumnWidthChange);
305
+ };
@@ -0,0 +1,28 @@
1
+ import * as React from 'react';
2
+ import { GridRowId } from '@mui/x-data-grid';
3
+ /**
4
+ * The master/detail API interface that is available in the grid [[apiRef]].
5
+ */
6
+ export interface GridDetailPanelApi {
7
+ /**
8
+ * Expands or collapses the detail panel of a row.
9
+ * @param {string} id The row id to toggle the panel.
10
+ */
11
+ toggleDetailPanel: (id: GridRowId) => void;
12
+ /**
13
+ * Returns the rows whose detail panel is open.
14
+ * @returns {GridRowId[]} An array of row ids.
15
+ */
16
+ getExpandedDetailPanels: () => GridRowId[];
17
+ /**
18
+ * Changes which rows to expand the detail panel.
19
+ * @param {GridRowId[]} ids The ids of the rows to open the detail panel.
20
+ */
21
+ setExpandedDetailPanels: (ids: GridRowId[]) => void;
22
+ }
23
+ export interface GridDetailPanelState {
24
+ expandedRowIds: GridRowId[];
25
+ contentCache: Record<GridRowId, React.ReactNode>;
26
+ heightCache: Record<GridRowId, number>;
27
+ }
28
+ export declare type GridDetailPanelInitialState = Pick<GridDetailPanelState, 'expandedRowIds'>;
@@ -0,0 +1,5 @@
1
+ /// <reference types="react" />
2
+ import { GridStatePro } from '../../../models/gridStatePro';
3
+ export declare const gridDetailPanelExpandedRowIdsSelector: (state: GridStatePro) => import("@mui/x-data-grid").GridRowId[];
4
+ export declare const gridDetailPanelExpandedRowsContentCacheSelector: (state: GridStatePro) => Record<import("@mui/x-data-grid").GridRowId, import("react").ReactNode>;
5
+ export declare const gridDetailPanelExpandedRowsHeightCacheSelector: (state: GridStatePro) => Record<import("@mui/x-data-grid").GridRowId, number>;
@@ -0,0 +1,3 @@
1
+ export const gridDetailPanelExpandedRowIdsSelector = state => state.detailPanel.expandedRowIds;
2
+ export const gridDetailPanelExpandedRowsContentCacheSelector = state => state.detailPanel.contentCache;
3
+ export const gridDetailPanelExpandedRowsHeightCacheSelector = state => state.detailPanel.heightCache;
@@ -0,0 +1,3 @@
1
+ import { GridColDef } from '@mui/x-data-grid';
2
+ export declare const GRID_DETAIL_PANEL_TOGGLE_FIELD = "__detail_panel_toggle__";
3
+ export declare const GRID_DETAIL_PANEL_TOGGLE_COL_DEF: GridColDef;
@@ -0,0 +1,26 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import * as React from 'react';
3
+ import { GRID_STRING_COL_DEF } from '@mui/x-data-grid';
4
+ import { GridDetailPanelToggleCell } from '../../../components/GridDetailPanelToggleCell';
5
+ import { gridDetailPanelExpandedRowIdsSelector } from './gridDetailPanelSelector';
6
+ import { jsx as _jsx } from "react/jsx-runtime";
7
+ export const GRID_DETAIL_PANEL_TOGGLE_FIELD = '__detail_panel_toggle__';
8
+ export const GRID_DETAIL_PANEL_TOGGLE_COL_DEF = _extends({}, GRID_STRING_COL_DEF, {
9
+ field: GRID_DETAIL_PANEL_TOGGLE_FIELD,
10
+ headerName: '',
11
+ type: 'detailPanelToggle',
12
+ editable: false,
13
+ sortable: false,
14
+ filterable: false,
15
+ resizable: false,
16
+ disableColumnMenu: true,
17
+ disableReorder: true,
18
+ disableExport: true,
19
+ align: 'left',
20
+ width: 40,
21
+ valueGetter: params => {
22
+ const expandedRowIds = gridDetailPanelExpandedRowIdsSelector(params.api.state);
23
+ return expandedRowIds.includes(params.id);
24
+ },
25
+ renderCell: params => /*#__PURE__*/_jsx(GridDetailPanelToggleCell, _extends({}, params))
26
+ });
@@ -0,0 +1,3 @@
1
+ export * from './gridDetailPanelToggleColDef';
2
+ export * from './gridDetailPanelSelector';
3
+ export * from './gridDetailPanelInterface';
@@ -0,0 +1,3 @@
1
+ export * from './gridDetailPanelToggleColDef';
2
+ export * from './gridDetailPanelSelector';
3
+ export * from './gridDetailPanelInterface';
@@ -0,0 +1,6 @@
1
+ import * as React from 'react';
2
+ import { GridStateInitializer } from '@mui/x-data-grid/internals';
3
+ import { GridApiPro } from '../../../models/gridApiPro';
4
+ import { DataGridProProcessedProps } from '../../../models/dataGridProProps';
5
+ export declare const detailPanelStateInitializer: GridStateInitializer<Pick<DataGridProProcessedProps, 'initialState' | 'detailPanelExpandedRowIds'>>;
6
+ export declare const useGridDetailPanel: (apiRef: React.MutableRefObject<GridApiPro>, props: Pick<DataGridProProcessedProps, 'initialState' | 'getDetailPanelContent' | 'getDetailPanelHeight' | 'detailPanelExpandedRowIds' | 'onDetailPanelExpandedRowIdsChange' | 'pagination' | 'paginationMode'>) => void;