@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,268 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import * as React from 'react';
3
+ import MuiDivider from '@mui/material/Divider';
4
+ import { useGridSelector, gridVisibleColumnDefinitionsSelector, gridColumnsTotalWidthSelector, gridColumnPositionsSelector, gridVisibleColumnFieldsSelector, gridClasses, GridEvents, useGridApiMethod, useGridApiEventHandler } from '@mui/x-data-grid';
5
+ import { useGridRegisterPreProcessor } from '@mui/x-data-grid/internals';
6
+ import { GridColumnPinningMenuItems } from '../../../components/GridColumnPinningMenuItems';
7
+ import { GridPinnedPosition } from './gridColumnPinningInterface';
8
+ import { gridPinnedColumnsSelector } from './gridColumnPinningSelector';
9
+ import { filterColumns } from '../../../components/DataGridProVirtualScroller';
10
+ import { jsx as _jsx } from "react/jsx-runtime";
11
+
12
+ const Divider = () => /*#__PURE__*/_jsx(MuiDivider, {
13
+ onClick: event => event.stopPropagation()
14
+ });
15
+
16
+ export const columnPinningStateInitializer = (state, props) => {
17
+ let model;
18
+
19
+ if (props.disableColumnPinning) {
20
+ model = {};
21
+ } else if (props.pinnedColumns) {
22
+ model = props.pinnedColumns;
23
+ } else if (props.initialState?.pinnedColumns) {
24
+ model = props.initialState?.pinnedColumns;
25
+ } else {
26
+ model = {};
27
+ }
28
+
29
+ return _extends({}, state, {
30
+ pinnedColumns: model
31
+ });
32
+ };
33
+
34
+ const mergeStateWithPinnedColumns = pinnedColumns => state => _extends({}, state, {
35
+ pinnedColumns
36
+ });
37
+
38
+ export const useGridColumnPinning = (apiRef, props) => {
39
+ const pinnedColumns = useGridSelector(apiRef, gridPinnedColumnsSelector); // Each visible row (not to be confused with a filter result) is composed of a central .MuiDataGrid-row element
40
+ // and up to two additional .MuiDataGrid-row's, one for the columns pinned to the left and another
41
+ // for those on the right side. When hovering any of these elements, the :hover styles are applied only to
42
+ // the row element that was actually hovered, not its additional siblings. To make it look like a contiguous row,
43
+ // this method adds/removes the .Mui-hovered class to all of the row elements inside one visible row.
44
+
45
+ const updateHoveredClassOnSiblingRows = React.useCallback(event => {
46
+ if (props.disableColumnPinning) {
47
+ return;
48
+ }
49
+
50
+ if (!Array.isArray(pinnedColumns.left) && !Array.isArray(pinnedColumns.right)) {
51
+ return;
52
+ }
53
+
54
+ const nbLeftPinnedColumns = pinnedColumns.left?.length ?? 0;
55
+ const nbRightPinnedColumns = pinnedColumns.right?.length ?? 0;
56
+
57
+ if (nbLeftPinnedColumns + nbRightPinnedColumns === 0) {
58
+ return;
59
+ }
60
+
61
+ const index = event.currentTarget.dataset.rowindex;
62
+ const rowElements = apiRef.current.windowRef.current.querySelectorAll(`.${gridClasses.row}[data-rowindex="${index}"]`);
63
+ rowElements.forEach(row => {
64
+ // Ignore rows from other grid inside the hovered row
65
+ if (row.closest(`.${gridClasses.virtualScroller}`) === apiRef.current.windowRef.current) {
66
+ if (event.type === 'mouseenter') {
67
+ row.classList.add('Mui-hovered');
68
+ } else {
69
+ row.classList.remove('Mui-hovered');
70
+ }
71
+ }
72
+ });
73
+ }, [apiRef, pinnedColumns.left, pinnedColumns.right, props.disableColumnPinning]);
74
+ const handleMouseEnter = React.useCallback((params, event) => {
75
+ updateHoveredClassOnSiblingRows(event);
76
+ }, [updateHoveredClassOnSiblingRows]);
77
+ const handleMouseLeave = React.useCallback((params, event) => {
78
+ updateHoveredClassOnSiblingRows(event);
79
+ }, [updateHoveredClassOnSiblingRows]);
80
+ useGridApiEventHandler(apiRef, GridEvents.rowMouseEnter, handleMouseEnter);
81
+ useGridApiEventHandler(apiRef, GridEvents.rowMouseLeave, handleMouseLeave);
82
+ /**
83
+ * PRE-PROCESSING
84
+ */
85
+
86
+ const calculateScrollLeft = React.useCallback((initialValue, params) => {
87
+ if (props.disableColumnPinning) {
88
+ return initialValue;
89
+ }
90
+
91
+ const visibleColumnFields = gridVisibleColumnFieldsSelector(apiRef);
92
+ const [leftPinnedColumns, rightPinnedColumns] = filterColumns(pinnedColumns, visibleColumnFields);
93
+
94
+ if (!params.colIndex || leftPinnedColumns.length === 0 && rightPinnedColumns.length === 0) {
95
+ return initialValue;
96
+ }
97
+
98
+ const visibleColumns = gridVisibleColumnDefinitionsSelector(apiRef);
99
+ const columnsTotalWidth = gridColumnsTotalWidthSelector(apiRef);
100
+ const columnPositions = gridColumnPositionsSelector(apiRef);
101
+ const clientWidth = apiRef.current.windowRef.current.clientWidth;
102
+ const scrollLeft = apiRef.current.windowRef.current.scrollLeft;
103
+ const offsetWidth = visibleColumns[params.colIndex].computedWidth;
104
+ const offsetLeft = columnPositions[params.colIndex];
105
+ const leftPinnedColumnsWidth = columnPositions[leftPinnedColumns.length];
106
+ const rightPinnedColumnsWidth = columnsTotalWidth - columnPositions[columnPositions.length - rightPinnedColumns.length];
107
+ const elementBottom = offsetLeft + offsetWidth;
108
+
109
+ if (elementBottom - (clientWidth - rightPinnedColumnsWidth) > scrollLeft) {
110
+ const left = elementBottom - (clientWidth - rightPinnedColumnsWidth);
111
+ return _extends({}, initialValue, {
112
+ left
113
+ });
114
+ }
115
+
116
+ if (offsetLeft < scrollLeft + leftPinnedColumnsWidth) {
117
+ const left = offsetLeft - leftPinnedColumnsWidth;
118
+ return _extends({}, initialValue, {
119
+ left
120
+ });
121
+ }
122
+
123
+ return initialValue;
124
+ }, [apiRef, pinnedColumns, props.disableColumnPinning]);
125
+ const addColumnMenuButtons = React.useCallback((initialValue, column) => {
126
+ if (props.disableColumnPinning) {
127
+ return initialValue;
128
+ }
129
+
130
+ if (column.pinnable === false) {
131
+ return initialValue;
132
+ }
133
+
134
+ return [...initialValue, /*#__PURE__*/_jsx(Divider, {}), /*#__PURE__*/_jsx(GridColumnPinningMenuItems, {})];
135
+ }, [props.disableColumnPinning]);
136
+ const checkIfCanBeReordered = React.useCallback((initialValue, {
137
+ targetIndex
138
+ }) => {
139
+ const visibleColumnFields = gridVisibleColumnFieldsSelector(apiRef);
140
+ const [leftPinnedColumns, rightPinnedColumns] = filterColumns(pinnedColumns, visibleColumnFields);
141
+
142
+ if (leftPinnedColumns.length === 0 && rightPinnedColumns.length === 0) {
143
+ return initialValue;
144
+ }
145
+
146
+ if (leftPinnedColumns.length > 0 && targetIndex < leftPinnedColumns.length) {
147
+ return false;
148
+ }
149
+
150
+ if (rightPinnedColumns.length > 0) {
151
+ const visibleColumns = gridVisibleColumnDefinitionsSelector(apiRef);
152
+ const firstRightPinnedColumnIndex = visibleColumns.length - rightPinnedColumns.length;
153
+ return targetIndex >= firstRightPinnedColumnIndex ? false : initialValue;
154
+ }
155
+
156
+ return initialValue;
157
+ }, [apiRef, pinnedColumns]);
158
+ const stateExportPreProcessing = React.useCallback(prevState => {
159
+ const pinnedColumnsToExport = gridPinnedColumnsSelector(apiRef.current.state);
160
+
161
+ if ((!pinnedColumnsToExport.left || pinnedColumnsToExport.left.length === 0) && (!pinnedColumnsToExport.right || pinnedColumnsToExport.right.length === 0)) {
162
+ return prevState;
163
+ }
164
+
165
+ return _extends({}, prevState, {
166
+ pinnedColumns: pinnedColumnsToExport
167
+ });
168
+ }, [apiRef]);
169
+ const stateRestorePreProcessing = React.useCallback((params, context) => {
170
+ const newPinnedColumns = context.stateToRestore.pinnedColumns;
171
+
172
+ if (newPinnedColumns != null) {
173
+ apiRef.current.setState(mergeStateWithPinnedColumns(newPinnedColumns));
174
+ }
175
+
176
+ return params;
177
+ }, [apiRef]);
178
+ useGridRegisterPreProcessor(apiRef, 'scrollToIndexes', calculateScrollLeft);
179
+ useGridRegisterPreProcessor(apiRef, 'columnMenu', addColumnMenuButtons);
180
+ useGridRegisterPreProcessor(apiRef, 'canBeReordered', checkIfCanBeReordered);
181
+ useGridRegisterPreProcessor(apiRef, 'exportState', stateExportPreProcessing);
182
+ useGridRegisterPreProcessor(apiRef, 'restoreState', stateRestorePreProcessing);
183
+ apiRef.current.unstable_updateControlState({
184
+ stateId: 'pinnedColumns',
185
+ propModel: props.pinnedColumns,
186
+ propOnChange: props.onPinnedColumnsChange,
187
+ stateSelector: gridPinnedColumnsSelector,
188
+ changeEvent: GridEvents.pinnedColumnsChange
189
+ });
190
+ const checkIfEnabled = React.useCallback(methodName => {
191
+ if (props.disableColumnPinning) {
192
+ throw new Error(`MUI: You cannot call \`apiRef.current.${methodName}\` when \`disableColumnPinning\` is true.`);
193
+ }
194
+ }, [props.disableColumnPinning]);
195
+ const pinColumn = React.useCallback((field, side) => {
196
+ checkIfEnabled('pinColumn');
197
+
198
+ if (apiRef.current.isColumnPinned(field) === side) {
199
+ return;
200
+ }
201
+
202
+ apiRef.current.setState(state => {
203
+ const otherSide = side === GridPinnedPosition.right ? GridPinnedPosition.left : GridPinnedPosition.right;
204
+
205
+ const newPinnedColumns = _extends({}, state.pinnedColumns, {
206
+ [side]: [...(state.pinnedColumns[side] || []), field],
207
+ [otherSide]: (state.pinnedColumns[otherSide] || []).filter(column => column !== field)
208
+ });
209
+
210
+ return _extends({}, state, {
211
+ pinnedColumns: newPinnedColumns
212
+ });
213
+ });
214
+ apiRef.current.forceUpdate();
215
+ }, [apiRef, checkIfEnabled]);
216
+ const unpinColumn = React.useCallback(field => {
217
+ checkIfEnabled('unpinColumn');
218
+ apiRef.current.setState(state => {
219
+ const newPinnedColumns = _extends({}, state.pinnedColumns, {
220
+ left: (state.pinnedColumns.left || []).filter(column => column !== field),
221
+ right: (state.pinnedColumns.right || []).filter(column => column !== field)
222
+ });
223
+
224
+ return _extends({}, state, {
225
+ pinnedColumns: newPinnedColumns
226
+ });
227
+ });
228
+ apiRef.current.forceUpdate();
229
+ }, [apiRef, checkIfEnabled]);
230
+ const getPinnedColumns = React.useCallback(() => {
231
+ checkIfEnabled('getPinnedColumns');
232
+ return gridPinnedColumnsSelector(apiRef.current.state);
233
+ }, [apiRef, checkIfEnabled]);
234
+ const setPinnedColumns = React.useCallback(newPinnedColumns => {
235
+ checkIfEnabled('setPinnedColumns');
236
+ apiRef.current.setState(mergeStateWithPinnedColumns(newPinnedColumns));
237
+ apiRef.current.forceUpdate();
238
+ }, [apiRef, checkIfEnabled]);
239
+ const isColumnPinned = React.useCallback(field => {
240
+ checkIfEnabled('isColumnPinned');
241
+ const leftPinnedColumns = pinnedColumns.left || [];
242
+
243
+ if (leftPinnedColumns.includes(field)) {
244
+ return GridPinnedPosition.left;
245
+ }
246
+
247
+ const rightPinnedColumns = pinnedColumns.right || [];
248
+
249
+ if (rightPinnedColumns.includes(field)) {
250
+ return GridPinnedPosition.right;
251
+ }
252
+
253
+ return false;
254
+ }, [pinnedColumns.left, pinnedColumns.right, checkIfEnabled]);
255
+ const columnPinningApi = {
256
+ pinColumn,
257
+ unpinColumn,
258
+ getPinnedColumns,
259
+ setPinnedColumns,
260
+ isColumnPinned
261
+ };
262
+ useGridApiMethod(apiRef, columnPinningApi, 'columnPinningApi');
263
+ React.useEffect(() => {
264
+ if (props.pinnedColumns) {
265
+ apiRef.current.setPinnedColumns(props.pinnedColumns);
266
+ }
267
+ }, [apiRef, props.pinnedColumns]);
268
+ };
@@ -0,0 +1,45 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import * as React from 'react';
3
+ import { useGridRegisterPreProcessor } from '@mui/x-data-grid/internals';
4
+ import { gridPinnedColumnsSelector } from './gridColumnPinningSelector';
5
+ import { columnPinningStateInitializer } from './useGridColumnPinning';
6
+ import { filterColumns } from '../../../components/DataGridProVirtualScroller';
7
+ export const useGridColumnPinningPreProcessors = (apiRef, props) => {
8
+ const {
9
+ disableColumnPinning,
10
+ pinnedColumns: pinnedColumnsProp,
11
+ initialState
12
+ } = props;
13
+ let pinnedColumns = gridPinnedColumnsSelector(apiRef.current.state);
14
+
15
+ if (pinnedColumns == null) {
16
+ // Since the state is not ready yet lets use the initializer to get which
17
+ // columns should be pinned initially.
18
+ const initializedState = columnPinningStateInitializer(apiRef.current.state, {
19
+ disableColumnPinning,
20
+ pinnedColumns: pinnedColumnsProp,
21
+ initialState
22
+ }, apiRef);
23
+ pinnedColumns = gridPinnedColumnsSelector(initializedState);
24
+ }
25
+
26
+ const reorderPinnedColumns = React.useCallback(columnsState => {
27
+ if (columnsState.all.length === 0 || disableColumnPinning) {
28
+ return columnsState;
29
+ }
30
+
31
+ const [leftPinnedColumns, rightPinnedColumns] = filterColumns(pinnedColumns, columnsState.all);
32
+
33
+ if (leftPinnedColumns.length === 0 && rightPinnedColumns.length === 0) {
34
+ return columnsState;
35
+ }
36
+
37
+ const centerColumns = columnsState.all.filter(field => {
38
+ return !leftPinnedColumns.includes(field) && !rightPinnedColumns.includes(field);
39
+ });
40
+ return _extends({}, columnsState, {
41
+ all: [...leftPinnedColumns, ...centerColumns, ...rightPinnedColumns]
42
+ });
43
+ }, [disableColumnPinning, pinnedColumns]);
44
+ useGridRegisterPreProcessor(apiRef, 'hydrateColumns', reorderPinnedColumns);
45
+ };
@@ -0,0 +1,3 @@
1
+ import { createSelector } from '@mui/x-data-grid/internals';
2
+ export const gridColumnReorderSelector = state => state.columnReorder;
3
+ export const gridColumnReorderDragColSelector = createSelector(gridColumnReorderSelector, columnReorder => columnReorder.dragCol);
@@ -0,0 +1,2 @@
1
+ export * from './columnReorderSelector';
2
+ export {};
@@ -0,0 +1,166 @@
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 { useGridStateInit } from '@mui/x-data-grid/internals';
6
+ import { gridColumnReorderDragColSelector } from './columnReorderSelector';
7
+ const CURSOR_MOVE_DIRECTION_LEFT = 'left';
8
+ const CURSOR_MOVE_DIRECTION_RIGHT = 'right';
9
+
10
+ const getCursorMoveDirectionX = (currentCoordinates, nextCoordinates) => {
11
+ return currentCoordinates.x <= nextCoordinates.x ? CURSOR_MOVE_DIRECTION_RIGHT : CURSOR_MOVE_DIRECTION_LEFT;
12
+ };
13
+
14
+ const hasCursorPositionChanged = (currentCoordinates, nextCoordinates) => currentCoordinates.x !== nextCoordinates.x || currentCoordinates.y !== nextCoordinates.y;
15
+
16
+ const useUtilityClasses = ownerState => {
17
+ const {
18
+ classes
19
+ } = ownerState;
20
+ const slots = {
21
+ columnHeaderDragging: ['columnHeader--dragging']
22
+ };
23
+ return composeClasses(slots, getDataGridUtilityClass, classes);
24
+ };
25
+ /**
26
+ * Only available in DataGridPro
27
+ * @requires useGridColumns (method)
28
+ */
29
+
30
+
31
+ export const useGridColumnReorder = (apiRef, props) => {
32
+ const logger = useGridLogger(apiRef, 'useGridColumnReorder');
33
+ useGridStateInit(apiRef, state => _extends({}, state, {
34
+ columnReorder: {
35
+ dragCol: ''
36
+ }
37
+ }));
38
+ const dragColNode = React.useRef(null);
39
+ const cursorPosition = React.useRef({
40
+ x: 0,
41
+ y: 0
42
+ });
43
+ const originColumnIndex = React.useRef(null);
44
+ const removeDnDStylesTimeout = React.useRef();
45
+ const ownerState = {
46
+ classes: props.classes
47
+ };
48
+ const classes = useUtilityClasses(ownerState);
49
+ React.useEffect(() => {
50
+ return () => {
51
+ clearTimeout(removeDnDStylesTimeout.current);
52
+ };
53
+ }, []);
54
+ const handleColumnHeaderDragStart = React.useCallback((params, event) => {
55
+ if (props.disableColumnReorder || params.colDef.disableReorder) {
56
+ return;
57
+ }
58
+
59
+ logger.debug(`Start dragging col ${params.field}`); // Prevent drag events propagation.
60
+ // For more information check here https://github.com/mui/mui-x/issues/2680.
61
+
62
+ event.stopPropagation();
63
+ dragColNode.current = event.currentTarget;
64
+ dragColNode.current.classList.add(classes.columnHeaderDragging);
65
+ apiRef.current.setState(state => _extends({}, state, {
66
+ columnReorder: _extends({}, state.columnReorder, {
67
+ dragCol: params.field
68
+ })
69
+ }));
70
+ apiRef.current.forceUpdate();
71
+ removeDnDStylesTimeout.current = setTimeout(() => {
72
+ dragColNode.current.classList.remove(classes.columnHeaderDragging);
73
+ });
74
+ originColumnIndex.current = apiRef.current.getColumnIndex(params.field, false);
75
+ }, [props.disableColumnReorder, classes.columnHeaderDragging, logger, apiRef]);
76
+ const handleDragEnter = React.useCallback((params, event) => {
77
+ event.preventDefault(); // Prevent drag events propagation.
78
+ // For more information check here https://github.com/mui/mui-x/issues/2680.
79
+
80
+ event.stopPropagation();
81
+ }, []);
82
+ const handleDragOver = React.useCallback((params, event) => {
83
+ const dragColField = gridColumnReorderDragColSelector(apiRef);
84
+
85
+ if (!dragColField) {
86
+ return;
87
+ }
88
+
89
+ logger.debug(`Dragging over col ${params.field}`);
90
+ event.preventDefault(); // Prevent drag events propagation.
91
+ // For more information check here https://github.com/mui/mui-x/issues/2680.
92
+
93
+ event.stopPropagation();
94
+ const coordinates = {
95
+ x: event.clientX,
96
+ y: event.clientY
97
+ };
98
+
99
+ if (params.field !== dragColField && hasCursorPositionChanged(cursorPosition.current, coordinates)) {
100
+ const targetColIndex = apiRef.current.getColumnIndex(params.field, false);
101
+ const targetColVisibleIndex = apiRef.current.getColumnIndex(params.field, true);
102
+ const targetCol = apiRef.current.getColumn(params.field);
103
+ const dragColIndex = apiRef.current.getColumnIndex(dragColField, false);
104
+ const visibleColumns = apiRef.current.getVisibleColumns();
105
+ const cursorMoveDirectionX = getCursorMoveDirectionX(cursorPosition.current, coordinates);
106
+ const hasMovedLeft = cursorMoveDirectionX === CURSOR_MOVE_DIRECTION_LEFT && targetColIndex < dragColIndex;
107
+ const hasMovedRight = cursorMoveDirectionX === CURSOR_MOVE_DIRECTION_RIGHT && dragColIndex < targetColIndex;
108
+
109
+ if (hasMovedLeft || hasMovedRight) {
110
+ let canBeReordered;
111
+
112
+ if (!targetCol.disableReorder) {
113
+ canBeReordered = true;
114
+ } else if (hasMovedLeft) {
115
+ canBeReordered = targetColIndex > 0 && !visibleColumns[targetColIndex - 1].disableReorder;
116
+ } else {
117
+ canBeReordered = targetColIndex < visibleColumns.length - 1 && !visibleColumns[targetColIndex + 1].disableReorder;
118
+ }
119
+
120
+ const canBeReorderedProcessed = apiRef.current.unstable_applyPreProcessors('canBeReordered', canBeReordered, {
121
+ targetIndex: targetColVisibleIndex
122
+ });
123
+
124
+ if (canBeReorderedProcessed) {
125
+ apiRef.current.setColumnIndex(dragColField, targetColIndex);
126
+ }
127
+ }
128
+
129
+ cursorPosition.current = coordinates;
130
+ }
131
+ }, [apiRef, logger]);
132
+ const handleDragEnd = React.useCallback((params, event) => {
133
+ const dragColField = gridColumnReorderDragColSelector(apiRef);
134
+
135
+ if (props.disableColumnReorder || !dragColField) {
136
+ return;
137
+ }
138
+
139
+ logger.debug('End dragging col');
140
+ event.preventDefault(); // Prevent drag events propagation.
141
+ // For more information check here https://github.com/mui/mui-x/issues/2680.
142
+
143
+ event.stopPropagation();
144
+ clearTimeout(removeDnDStylesTimeout.current);
145
+ dragColNode.current = null; // Check if the column was dropped outside the grid.
146
+
147
+ if (event.dataTransfer.dropEffect === 'none') {
148
+ // Accessing params.field may contain the wrong field as header elements are reused
149
+ apiRef.current.setColumnIndex(dragColField, originColumnIndex.current);
150
+ originColumnIndex.current = null;
151
+ }
152
+
153
+ apiRef.current.setState(state => _extends({}, state, {
154
+ columnReorder: _extends({}, state.columnReorder, {
155
+ dragCol: ''
156
+ })
157
+ }));
158
+ apiRef.current.forceUpdate();
159
+ }, [props.disableColumnReorder, logger, apiRef]);
160
+ useGridApiEventHandler(apiRef, GridEvents.columnHeaderDragStart, handleColumnHeaderDragStart);
161
+ useGridApiEventHandler(apiRef, GridEvents.columnHeaderDragEnter, handleDragEnter);
162
+ useGridApiEventHandler(apiRef, GridEvents.columnHeaderDragOver, handleDragOver);
163
+ useGridApiEventHandler(apiRef, GridEvents.columnHeaderDragEnd, handleDragEnd);
164
+ useGridApiEventHandler(apiRef, GridEvents.cellDragEnter, handleDragEnter);
165
+ useGridApiEventHandler(apiRef, GridEvents.cellDragOver, handleDragOver);
166
+ };
@@ -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,2 @@
1
+ export * from './columnResizeSelector';
2
+ export * from './columnResizeState';