@mui/x-data-grid 6.0.0-alpha.2 → 6.0.0-alpha.4

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 (293) hide show
  1. package/CHANGELOG.md +493 -141
  2. package/DataGrid/DataGrid.js +14 -34
  3. package/DataGrid/useDataGridComponent.js +8 -14
  4. package/DataGrid/useDataGridProps.js +3 -3
  5. package/colDef/gridCheckboxSelectionColDef.js +1 -1
  6. package/colDef/gridNumericOperators.d.ts +1 -1
  7. package/colDef/gridSingleSelectOperators.d.ts +1 -1
  8. package/colDef/gridStringOperators.d.ts +1 -1
  9. package/components/GridFooter.js +1 -1
  10. package/components/GridRow.js +2 -2
  11. package/components/base/GridBody.js +2 -2
  12. package/components/cell/GridEditInputCell.js +3 -8
  13. package/components/cell/GridEditSingleSelectCell.js +6 -38
  14. package/components/columnHeaders/GridColumnGroupHeader.d.ts +2 -0
  15. package/components/columnHeaders/GridColumnGroupHeader.js +32 -5
  16. package/components/columnSelection/GridHeaderCheckbox.js +3 -3
  17. package/components/containers/GridRoot.js +4 -3
  18. package/components/panel/GridColumnsPanel.d.ts +2 -0
  19. package/components/panel/GridColumnsPanel.js +10 -4
  20. package/components/panel/filterPanel/GridFilterForm.d.ts +12 -0
  21. package/components/panel/filterPanel/GridFilterForm.js +29 -7
  22. package/components/panel/filterPanel/GridFilterPanel.d.ts +12 -0
  23. package/components/panel/filterPanel/GridFilterPanel.js +64 -19
  24. package/hooks/core/pipeProcessing/useGridRegisterPipeApplier.d.ts +1 -1
  25. package/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.d.ts +1 -1
  26. package/hooks/core/strategyProcessing/useGridRegisterStrategyProcessor.d.ts +1 -1
  27. package/hooks/core/useGridInitialization.d.ts +1 -1
  28. package/hooks/core/useGridStateInitialization.d.ts +1 -1
  29. package/hooks/features/columnGrouping/gridColumnGroupsInterfaces.d.ts +10 -1
  30. package/hooks/features/columnGrouping/gridColumnGroupsSelector.d.ts +6 -0
  31. package/hooks/features/columnGrouping/gridColumnGroupsSelector.js +34 -1
  32. package/hooks/features/columnGrouping/gridColumnGroupsUtils.d.ts +15 -0
  33. package/hooks/features/columnGrouping/gridColumnGroupsUtils.js +89 -0
  34. package/hooks/features/columnGrouping/useGridColumnGrouping.d.ts +1 -15
  35. package/hooks/features/columnGrouping/useGridColumnGrouping.js +66 -66
  36. package/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +1 -1
  37. package/hooks/features/columnHeaders/useGridColumnHeaders.js +60 -116
  38. package/hooks/features/density/densitySelector.d.ts +0 -2
  39. package/hooks/features/density/densitySelector.js +1 -3
  40. package/hooks/features/density/densityState.d.ts +0 -1
  41. package/hooks/features/density/useGridDensity.d.ts +1 -1
  42. package/hooks/features/density/useGridDensity.js +9 -45
  43. package/hooks/features/dimensions/useGridDimensions.js +3 -2
  44. package/hooks/features/{editRows/gridEditRowsSelector.d.ts → editing/gridEditingSelectors.d.ts} +0 -0
  45. package/hooks/features/{editRows/gridEditRowsSelector.js → editing/gridEditingSelectors.js} +0 -0
  46. package/hooks/features/editing/index.d.ts +1 -0
  47. package/hooks/features/editing/index.js +1 -0
  48. package/hooks/features/{editRows/useGridCellEditing.new.d.ts → editing/useGridCellEditing.d.ts} +0 -0
  49. package/hooks/features/{editRows/useGridCellEditing.new.js → editing/useGridCellEditing.js} +21 -6
  50. package/hooks/features/{editRows/useGridEditing.new.d.ts → editing/useGridEditing.d.ts} +0 -0
  51. package/hooks/features/{editRows/useGridEditing.new.js → editing/useGridEditing.js} +3 -3
  52. package/hooks/features/{editRows/useGridRowEditing.new.d.ts → editing/useGridRowEditing.d.ts} +0 -0
  53. package/hooks/features/{editRows/useGridRowEditing.new.js → editing/useGridRowEditing.js} +20 -6
  54. package/hooks/features/export/useGridPrintExport.js +2 -2
  55. package/hooks/features/focus/gridFocusState.d.ts +6 -0
  56. package/hooks/features/focus/gridFocusStateSelector.d.ts +2 -0
  57. package/hooks/features/focus/gridFocusStateSelector.js +6 -2
  58. package/hooks/features/focus/useGridFocus.js +69 -11
  59. package/hooks/features/index.d.ts +2 -2
  60. package/hooks/features/index.js +2 -2
  61. package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +135 -1
  62. package/hooks/features/{selection/gridSelectionSelector.d.ts → rowSelection/gridRowSelectionSelector.d.ts} +1 -1
  63. package/hooks/features/rowSelection/gridRowSelectionSelector.js +9 -0
  64. package/hooks/features/rowSelection/index.d.ts +1 -0
  65. package/hooks/features/rowSelection/index.js +1 -0
  66. package/hooks/features/rowSelection/useGridRowSelection.d.ts +12 -0
  67. package/hooks/features/{selection/useGridSelection.js → rowSelection/useGridRowSelection.js} +37 -37
  68. package/hooks/features/{selection/useGridSelectionPreProcessors.d.ts → rowSelection/useGridRowSelectionPreProcessors.d.ts} +1 -1
  69. package/hooks/features/{selection/useGridSelectionPreProcessors.js → rowSelection/useGridRowSelectionPreProcessors.js} +1 -1
  70. package/hooks/features/rows/gridRowsInterfaces.d.ts +4 -0
  71. package/hooks/features/rows/gridRowsUtils.d.ts +1 -1
  72. package/hooks/features/rows/gridRowsUtils.js +5 -2
  73. package/hooks/features/rows/useGridRows.js +23 -7
  74. package/hooks/features/virtualization/useGridVirtualScroller.d.ts +1 -1
  75. package/hooks/features/virtualization/useGridVirtualScroller.js +2 -2
  76. package/hooks/utils/useGridApi.d.ts +1 -1
  77. package/hooks/utils/useGridApiEventHandler.d.ts +2 -2
  78. package/hooks/utils/useGridApiRef.d.ts +1 -1
  79. package/hooks/utils/useGridInitializeState.d.ts +1 -1
  80. package/hooks/utils/useGridNativeEventListener.d.ts +1 -1
  81. package/hooks/utils/useGridSelector.d.ts +1 -1
  82. package/hooks/utils/useGridState.d.ts +1 -1
  83. package/hooks/utils/useGridVisibleRows.d.ts +2 -2
  84. package/index.js +1 -1
  85. package/internals/index.d.ts +3 -5
  86. package/internals/index.js +3 -5
  87. package/legacy/DataGrid/DataGrid.js +14 -34
  88. package/legacy/DataGrid/useDataGridComponent.js +8 -14
  89. package/legacy/DataGrid/useDataGridProps.js +3 -3
  90. package/legacy/colDef/gridCheckboxSelectionColDef.js +1 -1
  91. package/legacy/components/GridFooter.js +1 -1
  92. package/legacy/components/GridRow.js +2 -2
  93. package/legacy/components/base/GridBody.js +2 -2
  94. package/legacy/components/cell/GridEditInputCell.js +3 -8
  95. package/legacy/components/cell/GridEditSingleSelectCell.js +6 -52
  96. package/legacy/components/columnHeaders/GridColumnGroupHeader.js +46 -13
  97. package/legacy/components/columnSelection/GridHeaderCheckbox.js +3 -3
  98. package/legacy/components/containers/GridRoot.js +4 -3
  99. package/legacy/components/panel/GridColumnsPanel.js +10 -3
  100. package/legacy/components/panel/filterPanel/GridFilterForm.js +31 -7
  101. package/legacy/components/panel/filterPanel/GridFilterPanel.js +67 -18
  102. package/legacy/hooks/features/columnGrouping/gridColumnGroupsSelector.js +33 -1
  103. package/legacy/hooks/features/columnGrouping/gridColumnGroupsUtils.js +96 -0
  104. package/legacy/hooks/features/columnGrouping/useGridColumnGrouping.js +64 -64
  105. package/legacy/hooks/features/columnHeaders/useGridColumnHeaders.js +70 -122
  106. package/legacy/hooks/features/density/densitySelector.js +0 -6
  107. package/legacy/hooks/features/density/useGridDensity.js +6 -44
  108. package/legacy/hooks/features/dimensions/useGridDimensions.js +3 -2
  109. package/legacy/hooks/features/{editRows/gridEditRowsSelector.js → editing/gridEditingSelectors.js} +0 -0
  110. package/legacy/hooks/features/editing/index.js +1 -0
  111. package/legacy/hooks/features/{editRows/useGridCellEditing.new.js → editing/useGridCellEditing.js} +21 -6
  112. package/legacy/hooks/features/{editRows/useGridEditing.new.js → editing/useGridEditing.js} +3 -3
  113. package/legacy/hooks/features/{editRows/useGridRowEditing.new.js → editing/useGridRowEditing.js} +20 -6
  114. package/legacy/hooks/features/export/useGridPrintExport.js +2 -2
  115. package/legacy/hooks/features/focus/gridFocusStateSelector.js +8 -0
  116. package/legacy/hooks/features/focus/useGridFocus.js +72 -11
  117. package/legacy/hooks/features/index.js +2 -2
  118. package/legacy/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +129 -1
  119. package/legacy/hooks/features/rowSelection/gridRowSelectionSelector.js +19 -0
  120. package/legacy/hooks/features/rowSelection/index.js +1 -0
  121. package/legacy/hooks/features/{selection/useGridSelection.js → rowSelection/useGridRowSelection.js} +37 -37
  122. package/legacy/hooks/features/{selection/useGridSelectionPreProcessors.js → rowSelection/useGridRowSelectionPreProcessors.js} +1 -1
  123. package/legacy/hooks/features/rows/gridRowsUtils.js +5 -2
  124. package/legacy/hooks/features/rows/useGridRows.js +25 -7
  125. package/legacy/hooks/features/virtualization/useGridVirtualScroller.js +2 -2
  126. package/legacy/index.js +1 -1
  127. package/legacy/internals/index.js +3 -5
  128. package/legacy/locales/trTR.js +17 -17
  129. package/legacy/models/api/{gridSelectionApi.js → gridRowSelectionApi.js} +0 -0
  130. package/legacy/models/api/index.js +1 -1
  131. package/legacy/models/{gridSelectionModel.js → gridRowSelectionModel.js} +0 -0
  132. package/legacy/models/index.js +1 -1
  133. package/{models/api/gridSelectionApi.js → legacy/models/params/gridColumnGroupHeaderParams.js} +0 -0
  134. package/legacy/models/params/gridEditCellParams.js +0 -4
  135. package/legacy/models/params/index.js +1 -0
  136. package/locales/trTR.js +17 -17
  137. package/models/api/gridApiCommon.d.ts +3 -6
  138. package/models/api/gridApiCommunity.d.ts +1 -7
  139. package/models/api/gridEditingApi.d.ts +36 -121
  140. package/models/api/gridFocusApi.d.ts +13 -0
  141. package/models/api/{gridSelectionApi.d.ts → gridRowSelectionApi.d.ts} +2 -2
  142. package/models/{gridSelectionModel.js → api/gridRowSelectionApi.js} +0 -0
  143. package/models/api/index.d.ts +2 -2
  144. package/models/api/index.js +1 -1
  145. package/models/colDef/gridColDef.d.ts +0 -8
  146. package/models/events/gridEventLookup.d.ts +30 -19
  147. package/models/gridColumnGrouping.d.ts +1 -26
  148. package/models/gridRowSelectionModel.d.ts +3 -0
  149. package/{modern/models/api/gridSelectionApi.js → models/gridRowSelectionModel.js} +0 -0
  150. package/models/gridStateCommunity.d.ts +2 -2
  151. package/models/index.d.ts +1 -1
  152. package/models/index.js +1 -1
  153. package/models/params/gridColumnGroupHeaderParams.d.ts +30 -0
  154. package/{modern/models/gridSelectionModel.js → models/params/gridColumnGroupHeaderParams.js} +0 -0
  155. package/models/params/gridEditCellParams.d.ts +4 -17
  156. package/models/params/gridEditCellParams.js +0 -4
  157. package/models/params/gridRowParams.d.ts +4 -4
  158. package/models/params/index.d.ts +1 -0
  159. package/models/params/index.js +1 -0
  160. package/models/props/DataGridProps.d.ts +8 -32
  161. package/modern/DataGrid/DataGrid.js +14 -34
  162. package/modern/DataGrid/useDataGridComponent.js +8 -12
  163. package/modern/DataGrid/useDataGridProps.js +3 -3
  164. package/modern/colDef/gridCheckboxSelectionColDef.js +1 -1
  165. package/modern/components/GridFooter.js +1 -1
  166. package/modern/components/GridRow.js +2 -2
  167. package/modern/components/base/GridBody.js +2 -2
  168. package/modern/components/cell/GridEditInputCell.js +3 -4
  169. package/modern/components/cell/GridEditSingleSelectCell.js +6 -34
  170. package/modern/components/columnHeaders/GridColumnGroupHeader.js +32 -5
  171. package/modern/components/columnSelection/GridHeaderCheckbox.js +3 -3
  172. package/modern/components/containers/GridRoot.js +4 -3
  173. package/modern/components/panel/GridColumnsPanel.js +10 -4
  174. package/modern/components/panel/filterPanel/GridFilterForm.js +29 -7
  175. package/modern/components/panel/filterPanel/GridFilterPanel.js +62 -17
  176. package/modern/hooks/features/columnGrouping/gridColumnGroupsSelector.js +14 -1
  177. package/modern/hooks/features/columnGrouping/gridColumnGroupsUtils.js +83 -0
  178. package/modern/hooks/features/columnGrouping/useGridColumnGrouping.js +50 -62
  179. package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +58 -98
  180. package/modern/hooks/features/density/densitySelector.js +1 -3
  181. package/modern/hooks/features/density/useGridDensity.js +9 -37
  182. package/modern/hooks/features/dimensions/useGridDimensions.js +3 -2
  183. package/modern/hooks/features/{editRows/gridEditRowsSelector.js → editing/gridEditingSelectors.js} +0 -0
  184. package/modern/hooks/features/editing/index.js +1 -0
  185. package/modern/hooks/features/{editRows/useGridCellEditing.new.js → editing/useGridCellEditing.js} +21 -6
  186. package/modern/hooks/features/{editRows/useGridEditing.new.js → editing/useGridEditing.js} +3 -3
  187. package/modern/hooks/features/{editRows/useGridRowEditing.new.js → editing/useGridRowEditing.js} +20 -6
  188. package/modern/hooks/features/export/useGridPrintExport.js +2 -2
  189. package/modern/hooks/features/focus/gridFocusStateSelector.js +6 -2
  190. package/modern/hooks/features/focus/useGridFocus.js +69 -11
  191. package/modern/hooks/features/index.js +2 -2
  192. package/modern/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +135 -1
  193. package/modern/hooks/features/rowSelection/gridRowSelectionSelector.js +9 -0
  194. package/modern/hooks/features/rowSelection/index.js +1 -0
  195. package/modern/hooks/features/{selection/useGridSelection.js → rowSelection/useGridRowSelection.js} +37 -37
  196. package/modern/hooks/features/{selection/useGridSelectionPreProcessors.js → rowSelection/useGridRowSelectionPreProcessors.js} +1 -1
  197. package/modern/hooks/features/rows/gridRowsUtils.js +5 -2
  198. package/modern/hooks/features/rows/useGridRows.js +23 -7
  199. package/modern/hooks/features/virtualization/useGridVirtualScroller.js +2 -2
  200. package/modern/index.js +1 -1
  201. package/modern/internals/index.js +3 -5
  202. package/modern/locales/trTR.js +17 -17
  203. package/modern/models/api/gridRowSelectionApi.js +1 -0
  204. package/modern/models/api/index.js +1 -1
  205. package/modern/models/gridRowSelectionModel.js +1 -0
  206. package/modern/models/index.js +1 -1
  207. package/modern/models/params/gridColumnGroupHeaderParams.js +1 -0
  208. package/modern/models/params/gridEditCellParams.js +0 -4
  209. package/modern/models/params/index.js +1 -0
  210. package/node/DataGrid/DataGrid.js +14 -34
  211. package/node/DataGrid/useDataGridComponent.js +9 -17
  212. package/node/DataGrid/useDataGridProps.js +3 -3
  213. package/node/colDef/gridCheckboxSelectionColDef.js +2 -2
  214. package/node/components/GridFooter.js +2 -2
  215. package/node/components/GridRow.js +2 -2
  216. package/node/components/base/GridBody.js +2 -2
  217. package/node/components/cell/GridEditInputCell.js +3 -9
  218. package/node/components/cell/GridEditSingleSelectCell.js +6 -38
  219. package/node/components/columnHeaders/GridColumnGroupHeader.js +32 -5
  220. package/node/components/columnSelection/GridHeaderCheckbox.js +3 -3
  221. package/node/components/containers/GridRoot.js +4 -2
  222. package/node/components/panel/GridColumnsPanel.js +10 -4
  223. package/node/components/panel/filterPanel/GridFilterForm.js +30 -7
  224. package/node/components/panel/filterPanel/GridFilterPanel.js +63 -19
  225. package/node/hooks/features/columnGrouping/gridColumnGroupsSelector.js +40 -3
  226. package/node/hooks/features/columnGrouping/gridColumnGroupsUtils.js +102 -0
  227. package/node/hooks/features/columnGrouping/useGridColumnGrouping.js +68 -71
  228. package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +57 -113
  229. package/node/hooks/features/density/densitySelector.js +2 -6
  230. package/node/hooks/features/density/useGridDensity.js +9 -48
  231. package/node/hooks/features/dimensions/useGridDimensions.js +3 -1
  232. package/node/hooks/features/{editRows/gridEditRowsSelector.js → editing/gridEditingSelectors.js} +0 -0
  233. package/node/hooks/features/{editRows → editing}/index.js +4 -4
  234. package/node/hooks/features/{editRows/useGridCellEditing.new.js → editing/useGridCellEditing.js} +28 -13
  235. package/node/hooks/features/{editRows/useGridEditing.new.js → editing/useGridEditing.js} +4 -4
  236. package/node/hooks/features/{editRows/useGridRowEditing.new.js → editing/useGridRowEditing.js} +28 -14
  237. package/node/hooks/features/export/useGridPrintExport.js +2 -2
  238. package/node/hooks/features/focus/gridFocusStateSelector.js +10 -4
  239. package/node/hooks/features/focus/useGridFocus.js +68 -10
  240. package/node/hooks/features/index.js +8 -8
  241. package/node/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +138 -1
  242. package/node/hooks/features/{selection/gridSelectionSelector.js → rowSelection/gridRowSelectionSelector.js} +6 -6
  243. package/node/hooks/features/rowSelection/index.js +18 -0
  244. package/node/hooks/features/{selection/useGridSelection.js → rowSelection/useGridRowSelection.js} +43 -43
  245. package/node/hooks/features/{selection/useGridSelectionPreProcessors.js → rowSelection/useGridRowSelectionPreProcessors.js} +3 -3
  246. package/node/hooks/features/rows/gridRowsUtils.js +5 -2
  247. package/node/hooks/features/rows/useGridRows.js +23 -7
  248. package/node/hooks/features/virtualization/useGridVirtualScroller.js +4 -4
  249. package/node/index.js +1 -1
  250. package/node/internals/index.js +23 -45
  251. package/node/locales/trTR.js +17 -17
  252. package/node/models/api/{gridSelectionApi.js → gridRowSelectionApi.js} +0 -0
  253. package/node/models/api/index.js +4 -4
  254. package/node/models/{gridSelectionModel.js → gridRowSelectionModel.js} +0 -0
  255. package/node/models/index.js +4 -4
  256. package/node/models/params/gridColumnGroupHeaderParams.js +5 -0
  257. package/node/models/params/gridEditCellParams.js +0 -3
  258. package/node/models/params/index.js +13 -0
  259. package/package.json +2 -2
  260. package/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.d.ts +0 -4
  261. package/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.js +0 -35
  262. package/hooks/features/editRows/index.d.ts +0 -1
  263. package/hooks/features/editRows/index.js +0 -1
  264. package/hooks/features/editRows/useGridCellEditing.old.d.ts +0 -4
  265. package/hooks/features/editRows/useGridCellEditing.old.js +0 -359
  266. package/hooks/features/editRows/useGridEditing.old.d.ts +0 -11
  267. package/hooks/features/editRows/useGridEditing.old.js +0 -167
  268. package/hooks/features/editRows/useGridRowEditing.old.d.ts +0 -4
  269. package/hooks/features/editRows/useGridRowEditing.old.js +0 -334
  270. package/hooks/features/selection/gridSelectionSelector.js +0 -9
  271. package/hooks/features/selection/index.d.ts +0 -1
  272. package/hooks/features/selection/index.js +0 -1
  273. package/hooks/features/selection/useGridSelection.d.ts +0 -12
  274. package/legacy/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.js +0 -35
  275. package/legacy/hooks/features/editRows/index.js +0 -1
  276. package/legacy/hooks/features/editRows/useGridCellEditing.old.js +0 -411
  277. package/legacy/hooks/features/editRows/useGridEditing.old.js +0 -184
  278. package/legacy/hooks/features/editRows/useGridRowEditing.old.js +0 -505
  279. package/legacy/hooks/features/selection/gridSelectionSelector.js +0 -19
  280. package/legacy/hooks/features/selection/index.js +0 -1
  281. package/models/gridSelectionModel.d.ts +0 -3
  282. package/modern/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.js +0 -29
  283. package/modern/hooks/features/editRows/index.js +0 -1
  284. package/modern/hooks/features/editRows/useGridCellEditing.old.js +0 -355
  285. package/modern/hooks/features/editRows/useGridEditing.old.js +0 -163
  286. package/modern/hooks/features/editRows/useGridRowEditing.old.js +0 -326
  287. package/modern/hooks/features/selection/gridSelectionSelector.js +0 -9
  288. package/modern/hooks/features/selection/index.js +0 -1
  289. package/node/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.js +0 -55
  290. package/node/hooks/features/editRows/useGridCellEditing.old.js +0 -380
  291. package/node/hooks/features/editRows/useGridEditing.old.js +0 -193
  292. package/node/hooks/features/editRows/useGridRowEditing.old.js +0 -358
  293. package/node/hooks/features/selection/index.js +0 -18
@@ -1,7 +1,7 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
3
3
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
4
- var _excluded = ["linkOperators", "columnsSort", "filterFormProps", "children"];
4
+ var _excluded = ["linkOperators", "columnsSort", "filterFormProps", "getColumnForNewFilter", "children"];
5
5
  import * as React from 'react';
6
6
  import PropTypes from 'prop-types';
7
7
  import { GridLinkOperator } from '../../../models/gridFilterItem';
@@ -17,6 +17,15 @@ import { gridFilterModelSelector } from '../../../hooks/features/filter/gridFilt
17
17
  import { gridFilterableColumnDefinitionsSelector } from '../../../hooks/features/columns/gridColumnsSelector';
18
18
  import { jsx as _jsx } from "react/jsx-runtime";
19
19
  import { jsxs as _jsxs } from "react/jsx-runtime";
20
+
21
+ var getGridFilter = function getGridFilter(col) {
22
+ return {
23
+ columnField: col.field,
24
+ operatorValue: col.filterOperators[0].value,
25
+ id: Math.round(Math.random() * 1e5)
26
+ };
27
+ };
28
+
20
29
  var GridFilterPanel = /*#__PURE__*/React.forwardRef(function GridFilterPanel(props, ref) {
21
30
  var _rootProps$components;
22
31
 
@@ -30,6 +39,7 @@ var GridFilterPanel = /*#__PURE__*/React.forwardRef(function GridFilterPanel(pro
30
39
  linkOperators = _props$linkOperators === void 0 ? [GridLinkOperator.And, GridLinkOperator.Or] : _props$linkOperators,
31
40
  columnsSort = props.columnsSort,
32
41
  filterFormProps = props.filterFormProps,
42
+ getColumnForNewFilter = props.getColumnForNewFilter,
33
43
  children = props.children,
34
44
  other = _objectWithoutProperties(props, _excluded);
35
45
 
@@ -39,41 +49,73 @@ var GridFilterPanel = /*#__PURE__*/React.forwardRef(function GridFilterPanel(pro
39
49
  var applyFilterLinkOperator = React.useCallback(function (operator) {
40
50
  apiRef.current.setFilterLinkOperator(operator);
41
51
  }, [apiRef]);
42
- var getDefaultItem = React.useCallback(function () {
43
- var firstColumnWithOperator = filterableColumns.find(function (colDef) {
44
- var _colDef$filterOperato;
52
+ var getDefaultFilter = React.useCallback(function () {
53
+ var nextColumnWithOperator;
54
+
55
+ if (getColumnForNewFilter && typeof getColumnForNewFilter === 'function') {
56
+ // To allow override the column for default (first) filter
57
+ var nextColumnFieldName = getColumnForNewFilter({
58
+ currentFilters: (filterModel == null ? void 0 : filterModel.items) || [],
59
+ columns: filterableColumns
60
+ });
61
+ nextColumnWithOperator = filterableColumns.find(function (_ref) {
62
+ var field = _ref.field;
63
+ return field === nextColumnFieldName;
64
+ });
65
+ } else {
66
+ nextColumnWithOperator = filterableColumns.find(function (colDef) {
67
+ var _colDef$filterOperato;
68
+
69
+ return (_colDef$filterOperato = colDef.filterOperators) == null ? void 0 : _colDef$filterOperato.length;
70
+ });
71
+ }
72
+
73
+ if (!nextColumnWithOperator) {
74
+ return null;
75
+ }
45
76
 
46
- return (_colDef$filterOperato = colDef.filterOperators) == null ? void 0 : _colDef$filterOperato.length;
77
+ return getGridFilter(nextColumnWithOperator);
78
+ }, [filterModel == null ? void 0 : filterModel.items, filterableColumns, getColumnForNewFilter]);
79
+ var getNewFilter = React.useCallback(function () {
80
+ if (getColumnForNewFilter === undefined || typeof getColumnForNewFilter !== 'function') {
81
+ return getDefaultFilter();
82
+ }
83
+
84
+ var currentFilters = filterModel.items.length ? filterModel.items : [getDefaultFilter()].filter(Boolean); // If no items are there in filterModel, we have to pass defaultFilter
85
+
86
+ var nextColumnFieldName = getColumnForNewFilter({
87
+ currentFilters: currentFilters,
88
+ columns: filterableColumns
89
+ });
90
+ var nextColumnWithOperator = filterableColumns.find(function (_ref2) {
91
+ var field = _ref2.field;
92
+ return field === nextColumnFieldName;
47
93
  });
48
94
 
49
- if (!firstColumnWithOperator) {
95
+ if (!nextColumnWithOperator) {
50
96
  return null;
51
97
  }
52
98
 
53
- return {
54
- columnField: firstColumnWithOperator.field,
55
- operatorValue: firstColumnWithOperator.filterOperators[0].value,
56
- id: Math.round(Math.random() * 1e5)
57
- };
58
- }, [filterableColumns]);
99
+ return getGridFilter(nextColumnWithOperator);
100
+ }, [filterModel.items, filterableColumns, getColumnForNewFilter, getDefaultFilter]);
59
101
  var items = React.useMemo(function () {
60
102
  if (filterModel.items.length) {
61
103
  return filterModel.items;
62
104
  }
63
105
 
64
- var defaultItem = getDefaultItem();
65
- return defaultItem ? [defaultItem] : [];
66
- }, [filterModel.items, getDefaultItem]);
106
+ var defaultFilter = getDefaultFilter();
107
+ return defaultFilter ? [defaultFilter] : [];
108
+ }, [filterModel.items, getDefaultFilter]);
67
109
  var hasMultipleFilters = items.length > 1;
68
110
 
69
111
  var addNewFilter = function addNewFilter() {
70
- var defaultItem = getDefaultItem();
112
+ var newFilter = getNewFilter();
71
113
 
72
- if (!defaultItem) {
114
+ if (!newFilter) {
73
115
  return;
74
116
  }
75
117
 
76
- apiRef.current.upsertFilterItems([].concat(_toConsumableArray(items), [defaultItem]));
118
+ apiRef.current.upsertFilterItems([].concat(_toConsumableArray(items), [newFilter]));
77
119
  };
78
120
 
79
121
  var deleteFilter = React.useCallback(function (item) {
@@ -152,6 +194,13 @@ process.env.NODE_ENV !== "production" ? GridFilterPanel.propTypes = {
152
194
  valueInputProps: PropTypes.any
153
195
  }),
154
196
 
197
+ /**
198
+ * Function that returns the next filter item to be picked as default filter.
199
+ * @param {GetColumnForNewFilterArgs} args Currently configured filters and columns.
200
+ * @returns {GridColDef['field']} The field to be used for the next filter.
201
+ */
202
+ getColumnForNewFilter: PropTypes.func,
203
+
155
204
  /**
156
205
  * Sets the available logic operators.
157
206
  * @default [GridLinkOperator.And, GridLinkOperator.Or]
@@ -7,6 +7,38 @@ import { createSelector } from '../../../utils/createSelector';
7
7
  export var gridColumnGroupingSelector = function gridColumnGroupingSelector(state) {
8
8
  return state.columnGrouping;
9
9
  };
10
+ export var gridColumnGroupsUnwrappedModelSelector = createSelector(gridColumnGroupingSelector, function (columnGrouping) {
11
+ var _columnGrouping$unwra;
12
+
13
+ return (_columnGrouping$unwra = columnGrouping == null ? void 0 : columnGrouping.unwrappedGroupingModel) != null ? _columnGrouping$unwra : {};
14
+ });
10
15
  export var gridColumnGroupsLookupSelector = createSelector(gridColumnGroupingSelector, function (columnGrouping) {
11
- return columnGrouping.lookup;
16
+ var _columnGrouping$looku;
17
+
18
+ return (_columnGrouping$looku = columnGrouping == null ? void 0 : columnGrouping.lookup) != null ? _columnGrouping$looku : {};
19
+ });
20
+ export var gridColumnGroupsHeaderStructureSelector = createSelector(gridColumnGroupingSelector, function (columnGrouping) {
21
+ var _columnGrouping$heade;
22
+
23
+ return (_columnGrouping$heade = columnGrouping == null ? void 0 : columnGrouping.headerStructure) != null ? _columnGrouping$heade : [];
24
+ });
25
+ export var gridColumnGroupsHeaderMaxDepthSelector = createSelector(gridColumnGroupingSelector, function (columnGrouping) {
26
+ var _columnGrouping$maxDe;
27
+
28
+ return (_columnGrouping$maxDe = columnGrouping == null ? void 0 : columnGrouping.maxDepth) != null ? _columnGrouping$maxDe : 0;
29
+ });
30
+
31
+ var getGroupingHeader = function getGroupingHeader(state) {
32
+ return {
33
+ columnGrouping: state.columnGrouping,
34
+ density: state.density
35
+ };
36
+ };
37
+
38
+ export var gridTotalHeaderHeightSelector = createSelector(getGroupingHeader, function (_ref) {
39
+ var _columnGrouping$maxDe2;
40
+
41
+ var columnGrouping = _ref.columnGrouping,
42
+ density = _ref.density;
43
+ return density.headerHeight * (((_columnGrouping$maxDe2 = columnGrouping == null ? void 0 : columnGrouping.maxDepth) != null ? _columnGrouping$maxDe2 : 0) + 1);
12
44
  });
@@ -0,0 +1,96 @@
1
+ import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
2
+ import { isLeaf } from '../../../models/gridColumnGrouping';
3
+ import { isDeepEqual } from '../../../utils/utils';
4
+
5
+ // This is the recurrence function that help writing `unwrapGroupingColumnModel()`
6
+ var recurrentUnwrapGroupingColumnModel = function recurrentUnwrapGroupingColumnModel(columnGroupNode, parents, unwrappedGroupingModelToComplet) {
7
+ if (isLeaf(columnGroupNode)) {
8
+ if (unwrappedGroupingModelToComplet[columnGroupNode.field] !== undefined) {
9
+ throw new Error(["MUI: columnGroupingModel contains duplicated field", "column field ".concat(columnGroupNode.field, " occurrs two times in the grouping model:"), "- ".concat(unwrappedGroupingModelToComplet[columnGroupNode.field].join(' > ')), "- ".concat(parents.join(' > '))].join('\n'));
10
+ }
11
+
12
+ unwrappedGroupingModelToComplet[columnGroupNode.field] = parents;
13
+ return;
14
+ }
15
+
16
+ var groupId = columnGroupNode.groupId,
17
+ children = columnGroupNode.children;
18
+ children.forEach(function (child) {
19
+ recurrentUnwrapGroupingColumnModel(child, [].concat(_toConsumableArray(parents), [groupId]), unwrappedGroupingModelToComplet);
20
+ });
21
+ };
22
+ /**
23
+ * This is a function that provide for each column the array of its parents.
24
+ * Parents are ordered from the root to the leaf.
25
+ * @param columnGroupingModel The model such as provided in DataGrid props
26
+ * @returns An object `{[field]: groupIds}` where `groupIds` is the parents of the column `field`
27
+ */
28
+
29
+
30
+ export var unwrapGroupingColumnModel = function unwrapGroupingColumnModel(columnGroupingModel) {
31
+ if (!columnGroupingModel) {
32
+ return {};
33
+ }
34
+
35
+ var unwrappedSubTree = {};
36
+ columnGroupingModel.forEach(function (columnGroupNode) {
37
+ recurrentUnwrapGroupingColumnModel(columnGroupNode, [], unwrappedSubTree);
38
+ });
39
+ return unwrappedSubTree;
40
+ };
41
+ export var getColumnGroupsHeaderStructure = function getColumnGroupsHeaderStructure(orderedColumns, unwrappedGroupingModel) {
42
+ var getParents = function getParents(field) {
43
+ var _unwrappedGroupingMod;
44
+
45
+ return (_unwrappedGroupingMod = unwrappedGroupingModel[field]) != null ? _unwrappedGroupingMod : [];
46
+ };
47
+
48
+ var groupingHeaderStructure = [];
49
+ var maxDepth = Math.max.apply(Math, _toConsumableArray(orderedColumns.map(function (field) {
50
+ return getParents(field).length;
51
+ })));
52
+
53
+ var haveSameParents = function haveSameParents(field1, field2, depth) {
54
+ return isDeepEqual(getParents(field1).slice(0, depth + 1), getParents(field2).slice(0, depth + 1));
55
+ };
56
+
57
+ var _loop = function _loop(depth) {
58
+ var depthStructure = orderedColumns.reduce(function (structure, newField) {
59
+ var _getParents$depth;
60
+
61
+ var groupId = (_getParents$depth = getParents(newField)[depth]) != null ? _getParents$depth : null;
62
+
63
+ if (structure.length === 0) {
64
+ return [{
65
+ columnFields: [newField],
66
+ groupId: groupId
67
+ }];
68
+ }
69
+
70
+ var lastGroup = structure[structure.length - 1];
71
+ var prevField = lastGroup.columnFields[lastGroup.columnFields.length - 1];
72
+ var prevGroupId = lastGroup.groupId;
73
+
74
+ if (prevGroupId !== groupId || !haveSameParents(prevField, newField, depth)) {
75
+ // It's a new group
76
+ return [].concat(_toConsumableArray(structure), [{
77
+ columnFields: [newField],
78
+ groupId: groupId
79
+ }]);
80
+ } // It extends the previous group
81
+
82
+
83
+ return [].concat(_toConsumableArray(structure.slice(0, structure.length - 1)), [{
84
+ columnFields: [].concat(_toConsumableArray(lastGroup.columnFields), [newField]),
85
+ groupId: groupId
86
+ }]);
87
+ }, []);
88
+ groupingHeaderStructure.push(depthStructure);
89
+ };
90
+
91
+ for (var depth = 0; depth < maxDepth; depth += 1) {
92
+ _loop(depth);
93
+ }
94
+
95
+ return groupingHeaderStructure;
96
+ };
@@ -1,53 +1,17 @@
1
+ import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
1
2
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
3
  import _extends from "@babel/runtime/helpers/esm/extends";
3
4
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
4
- import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
5
5
  var _excluded = ["groupId", "children"];
6
6
  import * as React from 'react';
7
7
  import { isLeaf } from '../../../models/gridColumnGrouping';
8
- import { gridColumnGroupsLookupSelector } from './gridColumnGroupsSelector';
9
- import { gridColumnLookupSelector } from '../columns/gridColumnsSelector';
8
+ import { gridColumnGroupsLookupSelector, gridColumnGroupsUnwrappedModelSelector } from './gridColumnGroupsSelector';
10
9
  import { useGridApiMethod } from '../../utils/useGridApiMethod';
11
- export function hasGroupPath(lookupElement) {
12
- return lookupElement.groupPath !== undefined;
13
- }
14
-
15
- // This is the recurrence function that help writing `unwrapGroupingColumnModel()`
16
- var recurrentUnwrapGroupingColumnModel = function recurrentUnwrapGroupingColumnModel(columnGroupNode, parents, unwrappedGroupingModelToComplet) {
17
- if (isLeaf(columnGroupNode)) {
18
- if (unwrappedGroupingModelToComplet[columnGroupNode.field] !== undefined) {
19
- throw new Error(["MUI: columnGroupingModel contains duplicated field", "column field ".concat(columnGroupNode.field, " occurrs two times in the grouping model:"), "- ".concat(unwrappedGroupingModelToComplet[columnGroupNode.field].join(' > ')), "- ".concat(parents.join(' > '))].join('\n'));
20
- }
21
-
22
- unwrappedGroupingModelToComplet[columnGroupNode.field] = parents;
23
- return;
24
- }
25
-
26
- var groupId = columnGroupNode.groupId,
27
- children = columnGroupNode.children;
28
- children.forEach(function (child) {
29
- recurrentUnwrapGroupingColumnModel(child, [].concat(_toConsumableArray(parents), [groupId]), unwrappedGroupingModelToComplet);
30
- });
31
- };
32
- /**
33
- * This is a function that provide for each column the array of its parents.
34
- * Parents are ordered from the root to the leaf.
35
- * @param columnGroupingModel The model such as provided in DataGrid props
36
- * @returns An object `{[field]: groupIds}` where `groupIds` is the parents of the column `field`
37
- */
38
-
39
-
40
- export var unwrapGroupingColumnModel = function unwrapGroupingColumnModel(columnGroupingModel) {
41
- if (!columnGroupingModel) {
42
- return {};
43
- }
44
-
45
- var unwrappedSubTree = {};
46
- columnGroupingModel.forEach(function (columnGroupNode) {
47
- recurrentUnwrapGroupingColumnModel(columnGroupNode, [], unwrappedSubTree);
48
- });
49
- return unwrappedSubTree;
50
- };
10
+ import { getColumnGroupsHeaderStructure, unwrapGroupingColumnModel } from './gridColumnGroupsUtils';
11
+ import { useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
12
+ import { gridColumnFieldsSelector, // GridColumnsState,
13
+ gridVisibleColumnFieldsSelector } from '../columns';
14
+ import { useGridSelector } from '../../utils/useGridSelector';
51
15
 
52
16
  var createGroupLookup = function createGroupLookup(columnGroupingModel) {
53
17
  var groupLookup = {};
@@ -83,14 +47,29 @@ var createGroupLookup = function createGroupLookup(columnGroupingModel) {
83
47
  return _extends({}, groupLookup);
84
48
  };
85
49
 
86
- export var columnGroupsStateInitializer = function columnGroupsStateInitializer(state, props) {
87
- var _props$columnGrouping;
50
+ export var columnGroupsStateInitializer = function columnGroupsStateInitializer(state, props, apiRef) {
51
+ var _props$experimentalFe, _props$columnGrouping, _props$columnGrouping2;
88
52
 
53
+ if (!((_props$experimentalFe = props.experimentalFeatures) != null && _props$experimentalFe.columnGrouping)) {
54
+ return state;
55
+ }
56
+
57
+ var columnFields = gridColumnFieldsSelector(apiRef);
58
+ var visibleColumnFields = gridVisibleColumnFieldsSelector(apiRef);
89
59
  var groupLookup = createGroupLookup((_props$columnGrouping = props.columnGroupingModel) != null ? _props$columnGrouping : []);
60
+ var unwrappedGroupingModel = unwrapGroupingColumnModel((_props$columnGrouping2 = props.columnGroupingModel) != null ? _props$columnGrouping2 : []);
61
+ var columnGroupsHeaderStructure = getColumnGroupsHeaderStructure(columnFields, unwrappedGroupingModel);
62
+ var maxDepth = visibleColumnFields.length === 0 ? 0 : Math.max.apply(Math, _toConsumableArray(visibleColumnFields.map(function (field) {
63
+ var _unwrappedGroupingMod, _unwrappedGroupingMod2;
64
+
65
+ return (_unwrappedGroupingMod = (_unwrappedGroupingMod2 = unwrappedGroupingModel[field]) == null ? void 0 : _unwrappedGroupingMod2.length) != null ? _unwrappedGroupingMod : 0;
66
+ })));
90
67
  return _extends({}, state, {
91
68
  columnGrouping: {
92
69
  lookup: groupLookup,
93
- groupCollapsedModel: {}
70
+ unwrappedGroupingModel: unwrappedGroupingModel,
71
+ headerStructure: columnGroupsHeaderStructure,
72
+ maxDepth: maxDepth
94
73
  }
95
74
  });
96
75
  };
@@ -100,16 +79,16 @@ export var columnGroupsStateInitializer = function columnGroupsStateInitializer(
100
79
  */
101
80
 
102
81
  export var useGridColumnGrouping = function useGridColumnGrouping(apiRef, props) {
103
- var _props$experimentalFe2;
82
+ var _props$experimentalFe3;
104
83
 
105
84
  /**
106
85
  * API METHODS
107
86
  */
108
87
  var getColumnGroupPath = React.useCallback(function (field) {
109
- var _columnLookup$field$g, _columnLookup$field;
88
+ var _unwrappedGroupingMod3;
110
89
 
111
- var columnLookup = gridColumnLookupSelector(apiRef);
112
- return (_columnLookup$field$g = (_columnLookup$field = columnLookup[field]) == null ? void 0 : _columnLookup$field.groupPath) != null ? _columnLookup$field$g : [];
90
+ var unwrappedGroupingModel = gridColumnGroupsUnwrappedModelSelector(apiRef);
91
+ return (_unwrappedGroupingMod3 = unwrappedGroupingModel[field]) != null ? _unwrappedGroupingMod3 : [];
113
92
  }, [apiRef]);
114
93
  var getAllGroupDetails = React.useCallback(function () {
115
94
  var columnGroupLookup = gridColumnGroupsLookupSelector(apiRef);
@@ -120,32 +99,53 @@ export var useGridColumnGrouping = function useGridColumnGrouping(apiRef, props)
120
99
  unstable_getAllGroupDetails: getAllGroupDetails
121
100
  };
122
101
  useGridApiMethod(apiRef, columnGroupingApi, 'GridColumnGroupingApi');
102
+ var handleColumnReorderChange = React.useCallback(function () {
103
+ var _props$columnGrouping3;
104
+
105
+ var unwrappedGroupingModel = unwrapGroupingColumnModel((_props$columnGrouping3 = props.columnGroupingModel) != null ? _props$columnGrouping3 : []);
106
+ apiRef.current.setState(function (state) {
107
+ var _state$columns$all, _state$columns;
108
+
109
+ var orderedFields = (_state$columns$all = (_state$columns = state.columns) == null ? void 0 : _state$columns.all) != null ? _state$columns$all : [];
110
+ var columnGroupsHeaderStructure = getColumnGroupsHeaderStructure(orderedFields, unwrappedGroupingModel);
111
+ return _extends({}, state, {
112
+ columnGrouping: _extends({}, state.columnGrouping, {
113
+ headerStructure: columnGroupsHeaderStructure
114
+ })
115
+ });
116
+ });
117
+ }, [apiRef, props.columnGroupingModel]);
118
+ useGridApiEventHandler(apiRef, 'columnOrderChange', handleColumnReorderChange);
119
+ var columnFields = useGridSelector(apiRef, gridColumnFieldsSelector);
120
+ var visibleColumnFields = useGridSelector(apiRef, gridVisibleColumnFieldsSelector);
123
121
  /**
124
122
  * EFFECTS
125
123
  */
126
- // The effect does not track any value defined synchronously during the 1st render by hooks called after `useGridColumns`
127
- // As a consequence, the state generated by the 1st run of this useEffect will always be equal to the initialization one
128
124
 
129
- var isFirstRender = React.useRef(true);
130
125
  React.useEffect(function () {
131
- var _props$experimentalFe, _props$columnGrouping2;
126
+ var _props$experimentalFe2, _props$columnGrouping4, _props$columnGrouping5;
132
127
 
133
- if (isFirstRender.current) {
134
- isFirstRender.current = false;
128
+ if (!((_props$experimentalFe2 = props.experimentalFeatures) != null && _props$experimentalFe2.columnGrouping)) {
135
129
  return;
136
130
  }
137
131
 
138
- if (!((_props$experimentalFe = props.experimentalFeatures) != null && _props$experimentalFe.columnGrouping)) {
139
- return;
140
- }
132
+ var groupLookup = createGroupLookup((_props$columnGrouping4 = props.columnGroupingModel) != null ? _props$columnGrouping4 : []);
133
+ var unwrappedGroupingModel = unwrapGroupingColumnModel((_props$columnGrouping5 = props.columnGroupingModel) != null ? _props$columnGrouping5 : []);
134
+ var columnGroupsHeaderStructure = getColumnGroupsHeaderStructure(columnFields, unwrappedGroupingModel);
135
+ var maxDepth = visibleColumnFields.length === 0 ? 0 : Math.max.apply(Math, _toConsumableArray(visibleColumnFields.map(function (field) {
136
+ var _unwrappedGroupingMod4, _unwrappedGroupingMod5;
141
137
 
142
- var groupLookup = createGroupLookup((_props$columnGrouping2 = props.columnGroupingModel) != null ? _props$columnGrouping2 : []);
138
+ return (_unwrappedGroupingMod4 = (_unwrappedGroupingMod5 = unwrappedGroupingModel[field]) == null ? void 0 : _unwrappedGroupingMod5.length) != null ? _unwrappedGroupingMod4 : 0;
139
+ })));
143
140
  apiRef.current.setState(function (state) {
144
141
  return _extends({}, state, {
145
- columnGrouping: _extends({}, state.columnGrouping, {
146
- lookup: groupLookup
147
- })
142
+ columnGrouping: {
143
+ lookup: groupLookup,
144
+ unwrappedGroupingModel: unwrappedGroupingModel,
145
+ headerStructure: columnGroupsHeaderStructure,
146
+ maxDepth: maxDepth
147
+ }
148
148
  });
149
149
  });
150
- }, [apiRef, props.columnGroupingModel, (_props$experimentalFe2 = props.experimentalFeatures) == null ? void 0 : _props$experimentalFe2.columnGrouping]);
150
+ }, [apiRef, columnFields, visibleColumnFields, props.columnGroupingModel, (_props$experimentalFe3 = props.experimentalFeatures) == null ? void 0 : _props$experimentalFe3.columnGrouping]);
151
151
  };