@mui/x-data-grid 5.15.2 → 5.17.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 (286) hide show
  1. package/CHANGELOG.md +177 -2
  2. package/DataGrid/DataGrid.js +3 -1
  3. package/DataGrid/useDataGridComponent.js +5 -0
  4. package/README.md +2 -1
  5. package/components/DataGridColumnHeaders.js +4 -3
  6. package/components/ErrorBoundary.d.ts +1 -0
  7. package/components/GridAutoSizer.js +7 -0
  8. package/components/GridRow.d.ts +2 -1
  9. package/components/GridRow.js +136 -85
  10. package/components/base/GridBody.js +8 -5
  11. package/components/base/GridOverlays.js +4 -7
  12. package/components/cell/GridActionsCellItem.d.ts +2 -2
  13. package/components/cell/GridBooleanCell.js +2 -1
  14. package/components/cell/GridEditBooleanCell.js +2 -1
  15. package/components/cell/GridEditDateCell.js +3 -2
  16. package/components/cell/GridEditInputCell.js +2 -1
  17. package/components/cell/GridEditSingleSelectCell.js +11 -2
  18. package/components/cell/GridSkeletonCell.d.ts +12 -0
  19. package/components/cell/GridSkeletonCell.js +60 -0
  20. package/components/cell/index.d.ts +1 -0
  21. package/components/cell/index.js +2 -1
  22. package/components/columnHeaders/GridColumnGroupHeader.d.ts +14 -0
  23. package/components/columnHeaders/GridColumnGroupHeader.js +122 -0
  24. package/components/columnHeaders/GridColumnHeaderItem.js +55 -71
  25. package/components/columnHeaders/GridColumnHeadersInner.js +2 -1
  26. package/components/columnHeaders/GridGenericColumnHeaderItem.d.ts +32 -0
  27. package/components/columnHeaders/GridGenericColumnHeaderItem.js +104 -0
  28. package/components/columnSelection/GridCellCheckboxRenderer.js +2 -1
  29. package/components/containers/GridOverlay.js +7 -1
  30. package/components/containers/GridRoot.js +3 -3
  31. package/components/containers/GridRootStyles.js +16 -2
  32. package/components/menu/GridMenu.d.ts +3 -2
  33. package/components/menu/GridMenu.js +1 -0
  34. package/components/menu/columnMenu/GridColumnHeaderMenu.d.ts +1 -1
  35. package/components/panel/GridColumnsPanel.d.ts +6 -1
  36. package/components/panel/GridColumnsPanel.js +38 -6
  37. package/components/panel/GridPanel.d.ts +1 -1
  38. package/components/panel/GridPanel.js +1 -0
  39. package/components/panel/filterPanel/GridFilterForm.d.ts +4 -0
  40. package/components/panel/filterPanel/GridFilterForm.js +5 -0
  41. package/components/panel/filterPanel/GridFilterInputMultipleValue.d.ts +1 -1
  42. package/components/panel/filterPanel/GridFilterPanel.d.ts +4 -0
  43. package/components/panel/filterPanel/GridFilterPanel.js +5 -0
  44. package/components/toolbar/GridToolbarColumnsButton.d.ts +1 -1
  45. package/components/toolbar/GridToolbarDensitySelector.d.ts +1 -1
  46. package/components/toolbar/GridToolbarExportContainer.d.ts +1 -1
  47. package/constants/defaultGridSlotsComponents.js +2 -1
  48. package/constants/gridClasses.d.ts +24 -0
  49. package/constants/gridClasses.js +1 -1
  50. package/hooks/core/pipeProcessing/gridPipeProcessingApi.d.ts +5 -1
  51. package/hooks/features/columnGrouping/gridColumnGroupsInterfaces.d.ts +7 -0
  52. package/hooks/features/columnGrouping/gridColumnGroupsInterfaces.js +1 -0
  53. package/hooks/features/columnGrouping/gridColumnGroupsSelector.d.ts +7 -0
  54. package/hooks/features/columnGrouping/gridColumnGroupsSelector.js +8 -0
  55. package/hooks/features/columnGrouping/index.d.ts +2 -0
  56. package/hooks/features/columnGrouping/index.js +2 -0
  57. package/hooks/features/columnGrouping/useGridColumnGrouping.d.ts +24 -0
  58. package/hooks/features/columnGrouping/useGridColumnGrouping.js +153 -0
  59. package/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.d.ts +4 -0
  60. package/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.js +35 -0
  61. package/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +7 -6
  62. package/hooks/features/columnHeaders/useGridColumnHeaders.js +204 -9
  63. package/hooks/features/density/densitySelector.d.ts +2 -0
  64. package/hooks/features/density/densitySelector.js +3 -1
  65. package/hooks/features/density/densityState.d.ts +1 -0
  66. package/hooks/features/density/useGridDensity.d.ts +1 -1
  67. package/hooks/features/density/useGridDensity.js +45 -9
  68. package/hooks/features/dimensions/useGridDimensions.js +4 -4
  69. package/hooks/features/export/useGridPrintExport.js +3 -3
  70. package/hooks/features/filter/gridFilterSelector.d.ts +3 -3
  71. package/hooks/features/filter/gridFilterUtils.d.ts +1 -1
  72. package/hooks/features/filter/gridFilterUtils.js +55 -54
  73. package/hooks/features/filter/useGridFilter.js +1 -1
  74. package/hooks/features/index.d.ts +1 -0
  75. package/hooks/features/index.js +1 -0
  76. package/hooks/features/pagination/gridPaginationSelector.d.ts +1 -1
  77. package/hooks/features/rows/gridRowsSelector.d.ts +1 -1
  78. package/hooks/features/rows/useGridParamsApi.js +1 -1
  79. package/hooks/features/rows/useGridRows.js +65 -8
  80. package/hooks/features/rows/useGridRowsMeta.js +36 -16
  81. package/hooks/features/selection/gridSelectionSelector.d.ts +1 -1
  82. package/hooks/features/sorting/gridSortingSelector.d.ts +1 -1
  83. package/hooks/features/virtualization/useGridVirtualScroller.d.ts +2 -2
  84. package/hooks/features/virtualization/useGridVirtualScroller.js +17 -5
  85. package/hooks/utils/useGridNativeEventListener.d.ts +1 -1
  86. package/hooks/utils/useGridNativeEventListener.js +2 -2
  87. package/hooks/utils/useGridVisibleRows.d.ts +2 -2
  88. package/index.js +1 -1
  89. package/internals/index.d.ts +2 -0
  90. package/internals/index.js +2 -0
  91. package/legacy/DataGrid/DataGrid.js +3 -1
  92. package/legacy/DataGrid/useDataGridComponent.js +5 -0
  93. package/legacy/components/DataGridColumnHeaders.js +4 -3
  94. package/legacy/components/GridAutoSizer.js +7 -0
  95. package/legacy/components/GridRow.js +138 -85
  96. package/legacy/components/base/GridBody.js +8 -5
  97. package/legacy/components/base/GridOverlays.js +4 -7
  98. package/legacy/components/cell/GridBooleanCell.js +2 -1
  99. package/legacy/components/cell/GridEditBooleanCell.js +2 -1
  100. package/legacy/components/cell/GridEditDateCell.js +3 -2
  101. package/legacy/components/cell/GridEditInputCell.js +2 -1
  102. package/legacy/components/cell/GridEditSingleSelectCell.js +11 -2
  103. package/legacy/components/cell/GridSkeletonCell.js +57 -0
  104. package/legacy/components/cell/index.js +2 -1
  105. package/legacy/components/columnHeaders/GridColumnGroupHeader.js +120 -0
  106. package/legacy/components/columnHeaders/GridColumnHeaderItem.js +78 -88
  107. package/legacy/components/columnHeaders/GridColumnHeadersInner.js +2 -1
  108. package/legacy/components/columnHeaders/GridGenericColumnHeaderItem.js +112 -0
  109. package/legacy/components/columnSelection/GridCellCheckboxRenderer.js +2 -1
  110. package/legacy/components/containers/GridOverlay.js +7 -1
  111. package/legacy/components/containers/GridRoot.js +3 -3
  112. package/legacy/components/containers/GridRootStyles.js +14 -5
  113. package/legacy/components/menu/GridMenu.js +1 -0
  114. package/legacy/components/panel/GridColumnsPanel.js +41 -6
  115. package/legacy/components/panel/GridPanel.js +1 -0
  116. package/legacy/components/panel/filterPanel/GridFilterForm.js +5 -0
  117. package/legacy/components/panel/filterPanel/GridFilterPanel.js +5 -0
  118. package/legacy/constants/defaultGridSlotsComponents.js +2 -1
  119. package/legacy/constants/gridClasses.js +1 -1
  120. package/legacy/hooks/features/columnGrouping/gridColumnGroupsInterfaces.js +1 -0
  121. package/legacy/hooks/features/columnGrouping/gridColumnGroupsSelector.js +12 -0
  122. package/legacy/hooks/features/columnGrouping/index.js +2 -0
  123. package/legacy/hooks/features/columnGrouping/useGridColumnGrouping.js +151 -0
  124. package/legacy/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.js +35 -0
  125. package/legacy/hooks/features/columnHeaders/useGridColumnHeaders.js +213 -12
  126. package/legacy/hooks/features/density/densitySelector.js +6 -0
  127. package/legacy/hooks/features/density/useGridDensity.js +44 -6
  128. package/legacy/hooks/features/dimensions/useGridDimensions.js +4 -4
  129. package/legacy/hooks/features/export/useGridPrintExport.js +3 -3
  130. package/legacy/hooks/features/filter/gridFilterUtils.js +61 -56
  131. package/legacy/hooks/features/filter/useGridFilter.js +1 -1
  132. package/legacy/hooks/features/index.js +1 -0
  133. package/legacy/hooks/features/rows/useGridParamsApi.js +1 -1
  134. package/legacy/hooks/features/rows/useGridRows.js +73 -8
  135. package/legacy/hooks/features/rows/useGridRowsMeta.js +45 -18
  136. package/legacy/hooks/features/virtualization/useGridVirtualScroller.js +31 -13
  137. package/legacy/hooks/utils/useGridNativeEventListener.js +2 -2
  138. package/legacy/index.js +1 -1
  139. package/legacy/internals/index.js +2 -0
  140. package/legacy/models/api/gridColumnGroupingApi.js +1 -0
  141. package/legacy/models/events/gridEvents.js +2 -0
  142. package/legacy/models/gridColumnGrouping.js +6 -0
  143. package/legacy/models/index.js +2 -1
  144. package/legacy/models/params/gridRenderedRowsIntervalChangeParams.js +1 -0
  145. package/legacy/models/params/index.js +2 -1
  146. package/legacy/utils/utils.js +18 -0
  147. package/models/api/gridApiCommon.d.ts +2 -1
  148. package/models/api/gridColumnGroupingApi.d.ts +19 -0
  149. package/models/api/gridColumnGroupingApi.js +1 -0
  150. package/models/api/gridDensityApi.d.ts +2 -1
  151. package/models/api/gridParamsApi.d.ts +1 -1
  152. package/models/api/gridRowApi.d.ts +6 -0
  153. package/models/api/gridRowsMetaApi.d.ts +6 -1
  154. package/models/colDef/gridColDef.d.ts +15 -1
  155. package/models/events/gridEventLookup.d.ts +7 -1
  156. package/models/events/gridEvents.d.ts +3 -1
  157. package/models/events/gridEvents.js +2 -0
  158. package/models/gridColumnGrouping.d.ts +67 -0
  159. package/models/gridColumnGrouping.js +6 -0
  160. package/models/gridRows.d.ts +5 -5
  161. package/models/gridSlotsComponent.d.ts +5 -0
  162. package/models/gridStateCommunity.d.ts +2 -1
  163. package/models/index.d.ts +1 -0
  164. package/models/index.js +2 -1
  165. package/models/params/gridCellParams.d.ts +7 -2
  166. package/models/params/gridMenuParams.d.ts +1 -2
  167. package/models/params/gridRenderedRowsIntervalChangeParams.d.ts +10 -0
  168. package/models/params/gridRenderedRowsIntervalChangeParams.js +1 -0
  169. package/models/params/index.d.ts +1 -0
  170. package/models/params/index.js +2 -1
  171. package/models/props/DataGridProps.d.ts +7 -1
  172. package/modern/DataGrid/DataGrid.js +3 -1
  173. package/modern/DataGrid/useDataGridComponent.js +5 -0
  174. package/modern/components/DataGridColumnHeaders.js +4 -3
  175. package/modern/components/GridAutoSizer.js +7 -0
  176. package/modern/components/GridRow.js +133 -84
  177. package/modern/components/base/GridBody.js +8 -5
  178. package/modern/components/base/GridOverlays.js +4 -7
  179. package/modern/components/cell/GridBooleanCell.js +2 -1
  180. package/modern/components/cell/GridEditBooleanCell.js +2 -1
  181. package/modern/components/cell/GridEditDateCell.js +3 -2
  182. package/modern/components/cell/GridEditInputCell.js +2 -1
  183. package/modern/components/cell/GridEditSingleSelectCell.js +11 -2
  184. package/modern/components/cell/GridSkeletonCell.js +60 -0
  185. package/modern/components/cell/index.js +2 -1
  186. package/modern/components/columnHeaders/GridColumnGroupHeader.js +120 -0
  187. package/modern/components/columnHeaders/GridColumnHeaderItem.js +53 -69
  188. package/modern/components/columnHeaders/GridColumnHeadersInner.js +2 -1
  189. package/modern/components/columnHeaders/GridGenericColumnHeaderItem.js +104 -0
  190. package/modern/components/columnSelection/GridCellCheckboxRenderer.js +2 -1
  191. package/modern/components/containers/GridOverlay.js +7 -1
  192. package/modern/components/containers/GridRoot.js +3 -3
  193. package/modern/components/containers/GridRootStyles.js +16 -2
  194. package/modern/components/menu/GridMenu.js +1 -0
  195. package/modern/components/panel/GridColumnsPanel.js +38 -6
  196. package/modern/components/panel/GridPanel.js +1 -0
  197. package/modern/components/panel/filterPanel/GridFilterForm.js +5 -0
  198. package/modern/components/panel/filterPanel/GridFilterPanel.js +5 -0
  199. package/modern/constants/defaultGridSlotsComponents.js +2 -1
  200. package/modern/constants/gridClasses.js +1 -1
  201. package/modern/hooks/features/columnGrouping/gridColumnGroupsInterfaces.js +1 -0
  202. package/modern/hooks/features/columnGrouping/gridColumnGroupsSelector.js +8 -0
  203. package/modern/hooks/features/columnGrouping/index.js +2 -0
  204. package/modern/hooks/features/columnGrouping/useGridColumnGrouping.js +145 -0
  205. package/modern/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.js +29 -0
  206. package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +186 -9
  207. package/modern/hooks/features/density/densitySelector.js +3 -1
  208. package/modern/hooks/features/density/useGridDensity.js +37 -9
  209. package/modern/hooks/features/dimensions/useGridDimensions.js +4 -4
  210. package/modern/hooks/features/export/useGridPrintExport.js +3 -3
  211. package/modern/hooks/features/filter/gridFilterUtils.js +54 -53
  212. package/modern/hooks/features/filter/useGridFilter.js +1 -1
  213. package/modern/hooks/features/index.js +1 -0
  214. package/modern/hooks/features/rows/useGridParamsApi.js +1 -1
  215. package/modern/hooks/features/rows/useGridRows.js +65 -8
  216. package/modern/hooks/features/rows/useGridRowsMeta.js +36 -16
  217. package/modern/hooks/features/virtualization/useGridVirtualScroller.js +17 -5
  218. package/modern/hooks/utils/useGridNativeEventListener.js +2 -2
  219. package/modern/index.js +1 -1
  220. package/modern/internals/index.js +2 -0
  221. package/modern/models/api/gridColumnGroupingApi.js +1 -0
  222. package/modern/models/events/gridEvents.js +2 -0
  223. package/modern/models/gridColumnGrouping.js +6 -0
  224. package/modern/models/index.js +2 -1
  225. package/modern/models/params/gridRenderedRowsIntervalChangeParams.js +1 -0
  226. package/modern/models/params/index.js +2 -1
  227. package/modern/utils/utils.js +16 -0
  228. package/node/DataGrid/DataGrid.js +3 -1
  229. package/node/DataGrid/useDataGridComponent.js +7 -0
  230. package/node/components/DataGridColumnHeaders.js +4 -3
  231. package/node/components/GridAutoSizer.js +7 -0
  232. package/node/components/GridRow.js +136 -77
  233. package/node/components/base/GridBody.js +7 -4
  234. package/node/components/base/GridOverlays.js +3 -6
  235. package/node/components/cell/GridBooleanCell.js +2 -1
  236. package/node/components/cell/GridEditBooleanCell.js +2 -1
  237. package/node/components/cell/GridEditDateCell.js +3 -2
  238. package/node/components/cell/GridEditInputCell.js +2 -1
  239. package/node/components/cell/GridEditSingleSelectCell.js +11 -2
  240. package/node/components/cell/GridSkeletonCell.js +81 -0
  241. package/node/components/cell/index.js +13 -0
  242. package/node/components/columnHeaders/GridColumnGroupHeader.js +141 -0
  243. package/node/components/columnHeaders/GridColumnHeaderItem.js +53 -72
  244. package/node/components/columnHeaders/GridColumnHeadersInner.js +2 -1
  245. package/node/components/columnHeaders/GridGenericColumnHeaderItem.js +126 -0
  246. package/node/components/columnSelection/GridCellCheckboxRenderer.js +2 -1
  247. package/node/components/containers/GridOverlay.js +7 -1
  248. package/node/components/containers/GridRoot.js +4 -4
  249. package/node/components/containers/GridRootStyles.js +16 -2
  250. package/node/components/menu/GridMenu.js +1 -0
  251. package/node/components/panel/GridColumnsPanel.js +36 -5
  252. package/node/components/panel/GridPanel.js +1 -0
  253. package/node/components/panel/filterPanel/GridFilterForm.js +5 -0
  254. package/node/components/panel/filterPanel/GridFilterPanel.js +5 -0
  255. package/node/constants/defaultGridSlotsComponents.js +1 -0
  256. package/node/constants/gridClasses.js +1 -1
  257. package/node/hooks/features/columnGrouping/gridColumnGroupsInterfaces.js +5 -0
  258. package/node/hooks/features/columnGrouping/gridColumnGroupsSelector.js +18 -0
  259. package/node/hooks/features/columnGrouping/index.js +18 -0
  260. package/node/hooks/features/columnGrouping/useGridColumnGrouping.js +182 -0
  261. package/node/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.js +55 -0
  262. package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +207 -8
  263. package/node/hooks/features/density/densitySelector.js +6 -2
  264. package/node/hooks/features/density/useGridDensity.js +48 -9
  265. package/node/hooks/features/dimensions/useGridDimensions.js +3 -3
  266. package/node/hooks/features/export/useGridPrintExport.js +2 -2
  267. package/node/hooks/features/filter/gridFilterUtils.js +55 -55
  268. package/node/hooks/features/filter/useGridFilter.js +1 -1
  269. package/node/hooks/features/index.js +13 -0
  270. package/node/hooks/features/rows/useGridParamsApi.js +1 -1
  271. package/node/hooks/features/rows/useGridRows.js +60 -7
  272. package/node/hooks/features/rows/useGridRowsMeta.js +35 -15
  273. package/node/hooks/features/virtualization/useGridVirtualScroller.js +17 -5
  274. package/node/hooks/utils/useGridNativeEventListener.js +2 -2
  275. package/node/index.js +1 -1
  276. package/node/internals/index.js +22 -0
  277. package/node/models/api/gridColumnGroupingApi.js +5 -0
  278. package/node/models/events/gridEvents.js +2 -0
  279. package/node/models/gridColumnGrouping.js +13 -0
  280. package/node/models/index.js +13 -0
  281. package/node/models/params/gridRenderedRowsIntervalChangeParams.js +5 -0
  282. package/node/models/params/index.js +13 -0
  283. package/node/utils/utils.js +18 -0
  284. package/package.json +3 -3
  285. package/utils/utils.d.ts +1 -0
  286. package/utils/utils.js +16 -0
@@ -1,17 +1,15 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import * as React from 'react';
3
3
  import PropTypes from 'prop-types';
4
- import clsx from 'clsx';
5
4
  import { unstable_composeClasses as composeClasses } from '@mui/material';
6
5
  import { unstable_useId as useId } from '@mui/material/utils';
7
6
  import { useGridApiContext } from '../../hooks/utils/useGridApiContext';
8
7
  import { GridColumnHeaderSortIcon } from './GridColumnHeaderSortIcon';
9
- import { GridColumnHeaderTitle } from './GridColumnHeaderTitle';
10
- import { GridColumnHeaderSeparator } from './GridColumnHeaderSeparator';
11
8
  import { ColumnHeaderMenuIcon } from './ColumnHeaderMenuIcon';
12
9
  import { GridColumnHeaderMenu } from '../menu/columnMenu/GridColumnHeaderMenu';
13
10
  import { getDataGridUtilityClass } from '../../constants/gridClasses';
14
11
  import { useGridRootProps } from '../../hooks/utils/useGridRootProps';
12
+ import { GridGenericColumnHeaderItem } from './GridGenericColumnHeaderItem';
15
13
  import { jsx as _jsx } from "react/jsx-runtime";
16
14
  import { jsxs as _jsxs } from "react/jsx-runtime";
17
15
 
@@ -38,7 +36,7 @@ const useUtilityClasses = ownerState => {
38
36
  };
39
37
 
40
38
  function GridColumnHeaderItem(props) {
41
- var _apiRef$current$getRo, _column$sortingOrder, _rootProps$components, _column$headerName, _rootProps$components2;
39
+ var _apiRef$current$getRo, _rootProps$components, _column$sortingOrder, _rootProps$components2, _column$headerName;
42
40
 
43
41
  const {
44
42
  column,
@@ -71,12 +69,21 @@ function GridColumnHeaderItem(props) {
71
69
  hasScrollY: false
72
70
  };
73
71
  const isDraggable = React.useMemo(() => !rootProps.disableColumnReorder && !disableReorder && !column.disableReorder, [rootProps.disableColumnReorder, disableReorder, column.disableReorder]);
74
- let headerComponent = null;
72
+ let headerComponent;
75
73
 
76
74
  if (column.renderHeader) {
77
75
  headerComponent = column.renderHeader(apiRef.current.getColumnHeaderParams(column.field));
78
76
  }
79
77
 
78
+ const removeLastBorderRight = isLastColumn && hasScrollX && !hasScrollY;
79
+ const showRightBorder = !isLastColumn ? rootProps.showColumnRightBorder : !removeLastBorderRight && !extendRowFullWidth;
80
+
81
+ const ownerState = _extends({}, props, {
82
+ classes: rootProps.classes,
83
+ showRightBorder
84
+ });
85
+
86
+ const classes = useUtilityClasses(ownerState);
80
87
  const publish = React.useCallback(eventName => event => {
81
88
  // Ignore portal
82
89
  // See https://github.com/mui/mui-x/issues/1721
@@ -86,7 +93,7 @@ function GridColumnHeaderItem(props) {
86
93
 
87
94
  apiRef.current.publishEvent(eventName, apiRef.current.getColumnHeaderParams(column.field), event);
88
95
  }, [apiRef, column.field]);
89
- const mouseEventsHandlers = {
96
+ const mouseEventsHandlers = React.useMemo(() => ({
90
97
  onClick: publish('columnHeaderClick'),
91
98
  onDoubleClick: publish('columnHeaderDoubleClick'),
92
99
  onMouseOver: publish('columnHeaderOver'),
@@ -100,29 +107,16 @@ function GridColumnHeaderItem(props) {
100
107
  onKeyDown: publish('columnHeaderKeyDown'),
101
108
  onFocus: publish('columnHeaderFocus'),
102
109
  onBlur: publish('columnHeaderBlur')
103
- };
104
- const draggableEventHandlers = isDraggable ? {
110
+ }), [publish]);
111
+ const draggableEventHandlers = React.useMemo(() => isDraggable ? {
105
112
  onDragStart: publish('columnHeaderDragStart'),
106
113
  onDragEnter: publish('columnHeaderDragEnter'),
107
114
  onDragOver: publish('columnHeaderDragOver'),
108
115
  onDragEnd: publish('columnHeaderDragEnd')
109
- } : null;
110
- const removeLastBorderRight = isLastColumn && hasScrollX && !hasScrollY;
111
- const showRightBorder = !isLastColumn ? rootProps.showColumnRightBorder : !removeLastBorderRight && !extendRowFullWidth;
112
-
113
- const ownerState = _extends({}, props, {
114
- classes: rootProps.classes,
115
- showRightBorder
116
- });
117
-
118
- const classes = useUtilityClasses(ownerState);
119
- const width = column.computedWidth;
120
- let ariaSort = 'none';
121
-
122
- if (sortDirection != null) {
123
- ariaSort = sortDirection === 'asc' ? 'ascending' : 'descending';
124
- }
125
-
116
+ } : {}, [isDraggable, publish]);
117
+ const columnHeaderSeparatorProps = React.useMemo(() => ({
118
+ onMouseDown: publish('columnSeparatorMouseDown')
119
+ }), [publish]);
126
120
  React.useEffect(() => {
127
121
  if (!showColumnMenuIcon) {
128
122
  setShowColumnMenuIcon(columnMenuOpen);
@@ -140,13 +134,24 @@ function GridColumnHeaderItem(props) {
140
134
  iconButtonRef: iconButtonRef
141
135
  });
142
136
 
137
+ const columnMenu = /*#__PURE__*/_jsx(GridColumnHeaderMenu, {
138
+ columnMenuId: columnMenuId,
139
+ columnMenuButtonId: columnMenuButtonId,
140
+ field: column.field,
141
+ open: columnMenuOpen,
142
+ target: iconButtonRef.current,
143
+ ContentComponent: rootProps.components.ColumnMenu,
144
+ contentComponentProps: (_rootProps$components = rootProps.componentsProps) == null ? void 0 : _rootProps$components.columnMenu,
145
+ onExited: handleExited
146
+ });
147
+
143
148
  const sortingOrder = (_column$sortingOrder = column.sortingOrder) != null ? _column$sortingOrder : rootProps.sortingOrder;
144
149
 
145
150
  const columnTitleIconButtons = /*#__PURE__*/_jsxs(React.Fragment, {
146
151
  children: [!rootProps.disableColumnFilter && /*#__PURE__*/_jsx(rootProps.components.ColumnHeaderFilterIconButton, _extends({
147
152
  field: column.field,
148
153
  counter: filterItemsCounter
149
- }, (_rootProps$components = rootProps.componentsProps) == null ? void 0 : _rootProps$components.columnHeaderFilterIconButton)), column.sortable && !column.hideSortIcons && /*#__PURE__*/_jsx(GridColumnHeaderSortIcon, {
154
+ }, (_rootProps$components2 = rootProps.componentsProps) == null ? void 0 : _rootProps$components2.columnHeaderFilterIconButton)), column.sortable && !column.hideSortIcons && /*#__PURE__*/_jsx(GridColumnHeaderSortIcon, {
150
155
  direction: sortDirection,
151
156
  index: sortIndex,
152
157
  sortingOrder: sortingOrder
@@ -168,53 +173,32 @@ function GridColumnHeaderItem(props) {
168
173
  colDef: column
169
174
  }) : column.headerClassName;
170
175
  const label = (_column$headerName = column.headerName) != null ? _column$headerName : column.field;
171
- return /*#__PURE__*/_jsxs("div", _extends({
176
+ return /*#__PURE__*/_jsx(GridGenericColumnHeaderItem, _extends({
172
177
  ref: headerCellRef,
173
- className: clsx(classes.root, headerClassName),
174
- "data-field": column.field,
175
- style: {
176
- width,
177
- minWidth: width,
178
- maxWidth: width
179
- },
180
- role: "columnheader",
178
+ classes: classes,
179
+ columnMenuOpen: columnMenuOpen,
180
+ colIndex: colIndex,
181
+ height: headerHeight,
182
+ isResizing: isResizing,
183
+ sortDirection: sortDirection,
184
+ hasFocus: hasFocus,
181
185
  tabIndex: tabIndex,
182
- "aria-colindex": colIndex + 1,
183
- "aria-sort": ariaSort,
184
- "aria-label": column.renderHeader && headerComponent == null ? label : undefined
185
- }, mouseEventsHandlers, {
186
- children: [/*#__PURE__*/_jsxs("div", _extends({
187
- className: classes.draggableContainer,
188
- draggable: isDraggable
189
- }, draggableEventHandlers, {
190
- children: [/*#__PURE__*/_jsxs("div", {
191
- className: classes.titleContainer,
192
- children: [/*#__PURE__*/_jsx("div", {
193
- className: classes.titleContainerContent,
194
- children: column.renderHeader ? headerComponent : /*#__PURE__*/_jsx(GridColumnHeaderTitle, {
195
- label: label,
196
- description: column.description,
197
- columnWidth: width
198
- })
199
- }), columnTitleIconButtons]
200
- }), columnMenuIconButton]
201
- })), /*#__PURE__*/_jsx(GridColumnHeaderSeparator, {
202
- resizable: !rootProps.disableColumnResize && !!column.resizable,
203
- resizing: isResizing,
204
- height: headerHeight,
205
- onMouseDown: publish('columnSeparatorMouseDown'),
206
- side: separatorSide
207
- }), /*#__PURE__*/_jsx(GridColumnHeaderMenu, {
208
- columnMenuId: columnMenuId,
209
- columnMenuButtonId: columnMenuButtonId,
210
- field: column.field,
211
- open: columnMenuOpen,
212
- target: iconButtonRef.current,
213
- ContentComponent: rootProps.components.ColumnMenu,
214
- contentComponentProps: (_rootProps$components2 = rootProps.componentsProps) == null ? void 0 : _rootProps$components2.columnMenu,
215
- onExited: handleExited
216
- })]
217
- }));
186
+ separatorSide: separatorSide,
187
+ isDraggable: isDraggable,
188
+ headerComponent: headerComponent,
189
+ description: column.description,
190
+ elementId: column.field,
191
+ width: column.computedWidth,
192
+ columnMenuIconButton: columnMenuIconButton,
193
+ columnTitleIconButtons: columnTitleIconButtons,
194
+ headerClassName: headerClassName,
195
+ label: label,
196
+ resizable: !rootProps.disableColumnResize && !!column.resizable,
197
+ "data-field": column.field,
198
+ columnMenu: columnMenu,
199
+ draggableContainerProps: draggableEventHandlers,
200
+ columnHeaderSeparatorProps: columnHeaderSeparatorProps
201
+ }, mouseEventsHandlers));
218
202
  }
219
203
 
220
204
  process.env.NODE_ENV !== "production" ? GridColumnHeaderItem.propTypes = {
@@ -30,7 +30,8 @@ const GridColumnHeadersInnerRoot = styled('div', {
30
30
  }, styles.columnHeadersInner]
31
31
  })(() => ({
32
32
  display: 'flex',
33
- alignItems: 'center',
33
+ alignItems: 'flex-start',
34
+ flexDirection: 'column',
34
35
  [`&.${gridClasses.columnHeaderDropZone} .${gridClasses.columnHeaderDraggableContainer}`]: {
35
36
  cursor: 'move'
36
37
  },
@@ -0,0 +1,32 @@
1
+ import * as React from 'react';
2
+ import { GridStateColDef } from '../../models/colDef/gridColDef';
3
+ import { GridSortDirection } from '../../models/gridSortModel';
4
+ import { GridColumnHeaderSeparatorProps } from './GridColumnHeaderSeparator';
5
+ import { GridColumnGroup } from '../../models/gridColumnGrouping';
6
+ interface GridGenericColumnHeaderItemProps extends Pick<GridStateColDef, 'headerClassName' | 'description' | 'resizable'> {
7
+ classes: Record<'root' | 'draggableContainer' | 'titleContainer' | 'titleContainerContent', string>;
8
+ colIndex: number;
9
+ columnMenuOpen: boolean;
10
+ height: number;
11
+ isResizing: boolean;
12
+ sortDirection: GridSortDirection;
13
+ sortIndex?: number;
14
+ filterItemsCounter?: number;
15
+ hasFocus?: boolean;
16
+ tabIndex: 0 | -1;
17
+ disableReorder?: boolean;
18
+ separatorSide?: GridColumnHeaderSeparatorProps['side'];
19
+ headerComponent?: React.ReactNode;
20
+ elementId: GridStateColDef['field'] | GridColumnGroup['groupId'];
21
+ isDraggable: boolean;
22
+ width: number;
23
+ columnMenuIconButton?: React.ReactNode;
24
+ columnMenu?: React.ReactNode;
25
+ columnTitleIconButtons?: React.ReactNode;
26
+ label: string;
27
+ draggableContainerProps?: Partial<React.HTMLProps<HTMLDivElement>>;
28
+ columnHeaderSeparatorProps?: Partial<GridColumnHeaderSeparatorProps>;
29
+ disableHeaderSeparator?: boolean;
30
+ }
31
+ declare const GridGenericColumnHeaderItem: React.ForwardRefExoticComponent<GridGenericColumnHeaderItemProps & React.RefAttributes<unknown>>;
32
+ export { GridGenericColumnHeaderItem };
@@ -0,0 +1,104 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
+ const _excluded = ["classes", "columnMenuOpen", "colIndex", "height", "isResizing", "sortDirection", "hasFocus", "tabIndex", "separatorSide", "isDraggable", "headerComponent", "description", "elementId", "width", "columnMenuIconButton", "columnMenu", "columnTitleIconButtons", "headerClassName", "label", "resizable", "draggableContainerProps", "columnHeaderSeparatorProps", "disableHeaderSeparator"];
4
+ import * as React from 'react';
5
+ import clsx from 'clsx';
6
+ import { useForkRef } from '@mui/material/utils';
7
+ import { useGridApiContext } from '../../hooks/utils/useGridApiContext';
8
+ import { GridColumnHeaderTitle } from './GridColumnHeaderTitle';
9
+ import { GridColumnHeaderSeparator } from './GridColumnHeaderSeparator';
10
+ import { useGridRootProps } from '../../hooks/utils/useGridRootProps';
11
+ import { jsx as _jsx } from "react/jsx-runtime";
12
+ import { jsxs as _jsxs } from "react/jsx-runtime";
13
+ const GridGenericColumnHeaderItem = /*#__PURE__*/React.forwardRef(function GridGenericColumnHeaderItem(props, ref) {
14
+ const {
15
+ classes,
16
+ columnMenuOpen,
17
+ colIndex,
18
+ height,
19
+ isResizing,
20
+ sortDirection,
21
+ hasFocus,
22
+ tabIndex,
23
+ separatorSide,
24
+ isDraggable,
25
+ headerComponent,
26
+ description,
27
+ width,
28
+ columnMenuIconButton = null,
29
+ columnMenu = null,
30
+ columnTitleIconButtons = null,
31
+ headerClassName,
32
+ label,
33
+ resizable,
34
+ draggableContainerProps,
35
+ columnHeaderSeparatorProps,
36
+ disableHeaderSeparator
37
+ } = props,
38
+ other = _objectWithoutPropertiesLoose(props, _excluded);
39
+
40
+ const apiRef = useGridApiContext();
41
+ const rootProps = useGridRootProps();
42
+ const headerCellRef = React.useRef(null);
43
+ const [showColumnMenuIcon, setShowColumnMenuIcon] = React.useState(columnMenuOpen);
44
+ const handleRef = useForkRef(headerCellRef, ref);
45
+ let ariaSort = 'none';
46
+
47
+ if (sortDirection != null) {
48
+ ariaSort = sortDirection === 'asc' ? 'ascending' : 'descending';
49
+ }
50
+
51
+ React.useEffect(() => {
52
+ if (!showColumnMenuIcon) {
53
+ setShowColumnMenuIcon(columnMenuOpen);
54
+ }
55
+ }, [showColumnMenuIcon, columnMenuOpen]);
56
+ React.useLayoutEffect(() => {
57
+ const columnMenuState = apiRef.current.state.columnMenu;
58
+
59
+ if (hasFocus && !columnMenuState.open) {
60
+ const focusableElement = headerCellRef.current.querySelector('[tabindex="0"]');
61
+ const elementToFocus = focusableElement || headerCellRef.current;
62
+ elementToFocus == null ? void 0 : elementToFocus.focus();
63
+ apiRef.current.columnHeadersContainerElementRef.current.scrollLeft = 0;
64
+ }
65
+ }, [apiRef, hasFocus]);
66
+ return /*#__PURE__*/_jsxs("div", _extends({
67
+ ref: handleRef,
68
+ className: clsx(classes.root, headerClassName),
69
+ style: {
70
+ height,
71
+ width,
72
+ minWidth: width,
73
+ maxWidth: width
74
+ },
75
+ role: "columnheader",
76
+ tabIndex: tabIndex,
77
+ "aria-colindex": colIndex + 1,
78
+ "aria-sort": ariaSort,
79
+ "aria-label": headerComponent == null ? label : undefined
80
+ }, other, {
81
+ children: [/*#__PURE__*/_jsxs("div", _extends({
82
+ className: classes.draggableContainer,
83
+ draggable: isDraggable
84
+ }, draggableContainerProps, {
85
+ children: [/*#__PURE__*/_jsxs("div", {
86
+ className: classes.titleContainer,
87
+ children: [/*#__PURE__*/_jsx("div", {
88
+ className: classes.titleContainerContent,
89
+ children: headerComponent !== undefined ? headerComponent : /*#__PURE__*/_jsx(GridColumnHeaderTitle, {
90
+ label: label,
91
+ description: description,
92
+ columnWidth: width
93
+ })
94
+ }), columnTitleIconButtons]
95
+ }), columnMenuIconButton]
96
+ })), !disableHeaderSeparator && /*#__PURE__*/_jsx(GridColumnHeaderSeparator, _extends({
97
+ resizable: !rootProps.disableColumnResize && !!resizable,
98
+ resizing: isResizing,
99
+ height: height,
100
+ side: separatorSide
101
+ }, columnHeaderSeparatorProps)), columnMenu]
102
+ }));
103
+ });
104
+ export { GridGenericColumnHeaderItem };
@@ -187,7 +187,8 @@ process.env.NODE_ENV !== "production" ? GridCellCheckboxForwardRef.propTypes = {
187
187
  tabIndex: PropTypes.oneOf([-1, 0]).isRequired,
188
188
 
189
189
  /**
190
- * The cell value, but if the column has valueGetter, use getValue.
190
+ * The cell value.
191
+ * If the column has `valueGetter`, use `params.row` to directly access the fields.
191
192
  */
192
193
  value: PropTypes.any
193
194
  } : void 0;
@@ -27,8 +27,14 @@ const GridOverlayRoot = styled('div', {
27
27
  })(({
28
28
  theme
29
29
  }) => ({
30
- display: 'flex',
30
+ position: 'absolute',
31
+ top: 0,
32
+ zIndex: 4,
33
+ // should be above pinned columns, pinned rows and detail panel
34
+ width: '100%',
31
35
  height: '100%',
36
+ pointerEvents: 'none',
37
+ display: 'flex',
32
38
  alignSelf: 'center',
33
39
  alignItems: 'center',
34
40
  justifyContent: 'center',
@@ -12,8 +12,8 @@ import { useGridSelector } from '../../hooks/utils/useGridSelector';
12
12
  import { useGridApiContext } from '../../hooks/utils/useGridApiContext';
13
13
  import { useGridRootProps } from '../../hooks/utils/useGridRootProps';
14
14
  import { getDataGridUtilityClass } from '../../constants/gridClasses';
15
+ import { gridDensityHeaderGroupingMaxDepthSelector, gridDensityValueSelector } from '../../hooks/features/density/densitySelector';
15
16
  import { gridPinnedRowsCountSelector, gridRowCountSelector } from '../../hooks/features/rows/gridRowsSelector';
16
- import { gridDensityValueSelector } from '../../hooks/features/density/densitySelector';
17
17
  import { jsx as _jsx } from "react/jsx-runtime";
18
18
 
19
19
  const useUtilityClasses = ownerState => {
@@ -41,6 +41,7 @@ const GridRoot = /*#__PURE__*/React.forwardRef(function GridRoot(props, ref) {
41
41
  const visibleColumns = useGridSelector(apiRef, gridVisibleColumnDefinitionsSelector);
42
42
  const totalRowCount = useGridSelector(apiRef, gridRowCountSelector);
43
43
  const densityValue = useGridSelector(apiRef, gridDensityValueSelector);
44
+ const headerGroupingMaxDepth = useGridSelector(apiRef, gridDensityHeaderGroupingMaxDepthSelector);
44
45
  const rootContainerRef = React.useRef(null);
45
46
  const handleRef = useForkRef(rootContainerRef, ref);
46
47
  const pinnedRowsCount = useGridSelector(apiRef, gridPinnedRowsCountSelector);
@@ -71,8 +72,7 @@ const GridRoot = /*#__PURE__*/React.forwardRef(function GridRoot(props, ref) {
71
72
  className: clsx(className, classes.root),
72
73
  role: "grid",
73
74
  "aria-colcount": visibleColumns.length,
74
- "aria-rowcount": totalRowCount + pinnedRowsCount + 1 // +1 for the header row
75
- ,
75
+ "aria-rowcount": headerGroupingMaxDepth + 1 + pinnedRowsCount + totalRowCount,
76
76
  "aria-multiselectable": !rootProps.disableMultipleSelection,
77
77
  "aria-label": rootProps['aria-label'],
78
78
  "aria-labelledby": rootProps['aria-labelledby']
@@ -35,6 +35,8 @@ export const GridRootStyles = styled('div', {
35
35
  [`& .${gridClasses.cellContent}`]: styles.cellContent
36
36
  }, {
37
37
  [`& .${gridClasses.cellCheckbox}`]: styles.cellCheckbox
38
+ }, {
39
+ [`& .${gridClasses.cellSkeleton}`]: styles.cellSkeleton
38
40
  }, {
39
41
  [`& .${gridClasses.checkboxInput}`]: styles.checkboxInput
40
42
  }, {
@@ -175,13 +177,24 @@ export const GridRootStyles = styled('div', {
175
177
  minWidth: 0,
176
178
  flex: 1,
177
179
  whiteSpace: 'nowrap',
178
- overflowX: 'hidden'
180
+ overflow: 'hidden'
179
181
  },
180
182
  [`& .${gridClasses.columnHeaderTitleContainerContent}`]: {
181
183
  overflow: 'hidden',
182
184
  display: 'flex',
183
185
  alignItems: 'center'
184
186
  },
187
+ [`& .${gridClasses['columnHeader--filledGroup']} .${gridClasses.columnHeaderTitleContainer}`]: {
188
+ borderBottom: `solid ${borderColor} 1px`,
189
+ boxSizing: 'border-box'
190
+ },
191
+ [`& .${gridClasses['columnHeader--filledGroup']}.${gridClasses['columnHeader--showColumnBorder']} .${gridClasses.columnHeaderTitleContainer}`]: {
192
+ borderBottom: `none`
193
+ },
194
+ [`& .${gridClasses['columnHeader--filledGroup']}.${gridClasses['columnHeader--showColumnBorder']}`]: {
195
+ borderBottom: `solid ${borderColor} 1px`,
196
+ boxSizing: 'border-box'
197
+ },
185
198
  [`& .${gridClasses.sortIcon}, & .${gridClasses.filterIcon}`]: {
186
199
  fontSize: 'inherit'
187
200
  },
@@ -361,7 +374,8 @@ export const GridRootStyles = styled('div', {
361
374
  },
362
375
  [`& .${gridClasses.columnHeaderDraggableContainer}`]: {
363
376
  display: 'flex',
364
- width: '100%'
377
+ width: '100%',
378
+ height: '100%'
365
379
  },
366
380
  [`& .${gridClasses.rowReorderCellPlaceholder}`]: {
367
381
  display: 'none'
@@ -3,12 +3,13 @@ import { ClickAwayListenerProps } from '@mui/material/ClickAwayListener';
3
3
  import { GrowProps } from '@mui/material/Grow';
4
4
  import { PopperProps } from '@mui/material/Popper';
5
5
  declare type MenuPosition = 'bottom-end' | 'bottom-start' | 'bottom' | 'left-end' | 'left-start' | 'left' | 'right-end' | 'right-start' | 'right' | 'top-end' | 'top-start' | 'top' | undefined;
6
- export interface GridMenuProps extends Omit<PopperProps, 'onKeyDown'> {
6
+ export interface GridMenuProps extends Omit<PopperProps, 'onKeyDown' | 'children'> {
7
7
  open: boolean;
8
- target: React.ReactNode;
8
+ target: HTMLElement | null;
9
9
  onClickAway: ClickAwayListenerProps['onClickAway'];
10
10
  position?: MenuPosition;
11
11
  onExited?: GrowProps['onExited'];
12
+ children: React.ReactNode;
12
13
  }
13
14
  declare const GridMenu: {
14
15
  (props: GridMenuProps): JSX.Element;
@@ -121,6 +121,7 @@ process.env.NODE_ENV !== "production" ? GridMenu.propTypes = {
121
121
  // | These PropTypes are generated from the TypeScript type definitions |
122
122
  // | To update them edit the TypeScript types and run "yarn proptypes" |
123
123
  // ----------------------------------------------------------------------
124
+ children: PropTypes.node,
124
125
  onClickAway: PropTypes.func.isRequired,
125
126
  onExited: PropTypes.func,
126
127
 
@@ -7,7 +7,7 @@ export interface GridColumnHeaderMenuProps {
7
7
  contentComponentProps?: any;
8
8
  field: string;
9
9
  open: boolean;
10
- target: Element | null;
10
+ target: HTMLElement | null;
11
11
  onExited?: GridMenuProps['onExited'];
12
12
  }
13
13
  declare function GridColumnHeaderMenu({ columnMenuId, columnMenuButtonId, ContentComponent, contentComponentProps, field, open, target, onExited, }: GridColumnHeaderMenuProps): JSX.Element | null;
@@ -1,5 +1,10 @@
1
1
  /// <reference types="react" />
2
2
  import { GridPanelWrapperProps } from './GridPanelWrapper';
3
3
  export interface GridColumnsPanelProps extends GridPanelWrapperProps {
4
+ sort?: 'asc' | 'desc';
4
5
  }
5
- export declare function GridColumnsPanel(props: GridColumnsPanelProps): JSX.Element;
6
+ declare function GridColumnsPanel(props: GridColumnsPanelProps): JSX.Element;
7
+ declare namespace GridColumnsPanel {
8
+ var propTypes: any;
9
+ }
10
+ export { GridColumnsPanel };
@@ -1,5 +1,8 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
+ const _excluded = ["sort"];
2
4
  import * as React from 'react';
5
+ import PropTypes from 'prop-types';
3
6
  import { unstable_composeClasses as composeClasses } from '@mui/material';
4
7
  import IconButton from '@mui/material/IconButton';
5
8
  import { switchClasses } from '@mui/material/Switch';
@@ -54,7 +57,9 @@ const GridColumnsPanelRowRoot = styled('div', {
54
57
  const GridIconButtonRoot = styled(IconButton)({
55
58
  justifyContent: 'flex-end'
56
59
  });
57
- export function GridColumnsPanel(props) {
60
+ const collator = new Intl.Collator();
61
+
62
+ function GridColumnsPanel(props) {
58
63
  var _rootProps$components, _rootProps$components3, _rootProps$components4;
59
64
 
60
65
  const apiRef = useGridApiContext();
@@ -68,6 +73,24 @@ export function GridColumnsPanel(props) {
68
73
  };
69
74
  const classes = useUtilityClasses(ownerState);
70
75
 
76
+ const {
77
+ sort
78
+ } = props,
79
+ other = _objectWithoutPropertiesLoose(props, _excluded);
80
+
81
+ const sortedColumns = React.useMemo(() => {
82
+ switch (sort) {
83
+ case 'asc':
84
+ return [...columns].sort((a, b) => collator.compare(a.headerName || a.field, b.headerName || b.field));
85
+
86
+ case 'desc':
87
+ return [...columns].sort((a, b) => -collator.compare(a.headerName || a.field, b.headerName || b.field));
88
+
89
+ default:
90
+ return columns;
91
+ }
92
+ }, [columns, sort]);
93
+
71
94
  const toggleColumn = event => {
72
95
  const {
73
96
  name: field
@@ -101,16 +124,16 @@ export function GridColumnsPanel(props) {
101
124
  }, []);
102
125
  const currentColumns = React.useMemo(() => {
103
126
  if (!searchValue) {
104
- return columns;
127
+ return sortedColumns;
105
128
  }
106
129
 
107
130
  const searchValueToCheck = searchValue.toLowerCase();
108
- return columns.filter(column => (column.headerName || column.field).toLowerCase().indexOf(searchValueToCheck) > -1);
109
- }, [columns, searchValue]);
131
+ return sortedColumns.filter(column => (column.headerName || column.field).toLowerCase().indexOf(searchValueToCheck) > -1);
132
+ }, [sortedColumns, searchValue]);
110
133
  React.useEffect(() => {
111
134
  searchInputRef.current.focus();
112
135
  }, []);
113
- return /*#__PURE__*/_jsxs(GridPanelWrapper, _extends({}, props, {
136
+ return /*#__PURE__*/_jsxs(GridPanelWrapper, _extends({}, other, {
114
137
  children: [/*#__PURE__*/_jsx(GridPanelHeader, {
115
138
  children: /*#__PURE__*/_jsx(rootProps.components.BaseTextField, _extends({
116
139
  label: apiRef.current.getLocaleText('columnsPanelTextFieldLabel'),
@@ -161,4 +184,13 @@ export function GridColumnsPanel(props) {
161
184
  }))]
162
185
  })]
163
186
  }));
164
- }
187
+ }
188
+
189
+ process.env.NODE_ENV !== "production" ? GridColumnsPanel.propTypes = {
190
+ // ----------------------------- Warning --------------------------------
191
+ // | These PropTypes are generated from the TypeScript type definitions |
192
+ // | To update them edit the TypeScript types and run "yarn proptypes" |
193
+ // ----------------------------------------------------------------------
194
+ sort: PropTypes.oneOf(['asc', 'desc'])
195
+ } : void 0;
196
+ export { GridColumnsPanel };
@@ -18,5 +18,5 @@ export interface GridPanelProps extends StandardProps<MUIStyledCommonProps<Theme
18
18
  open: boolean;
19
19
  }
20
20
  export declare const gridPanelClasses: Record<keyof GridPanelClasses, string>;
21
- declare const GridPanel: React.ForwardRefExoticComponent<Pick<GridPanelProps, "hidden" | "color" | "style" | "open" | "translate" | "transition" | "slot" | "title" | "children" | "as" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "className" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "id" | "lang" | "placeholder" | "spellCheck" | "tabIndex" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "sx" | "theme" | "classes" | "placement" | "anchorEl" | "container" | "disablePortal" | "keepMounted" | "modifiers" | "popperOptions" | "popperRef"> & React.RefAttributes<HTMLDivElement>>;
21
+ declare const GridPanel: React.ForwardRefExoticComponent<Pick<GridPanelProps, "hidden" | "color" | "style" | "open" | "translate" | "transition" | "slot" | "title" | "key" | "as" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "className" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "id" | "lang" | "placeholder" | "spellCheck" | "tabIndex" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "children" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "component" | "sx" | "theme" | "classes" | "components" | "container" | "placement" | "disablePortal" | "modifiers" | "anchorEl" | "componentsProps" | "keepMounted" | "popperOptions" | "popperRef"> & React.RefAttributes<HTMLDivElement>>;
22
22
  export { GridPanel };
@@ -98,6 +98,7 @@ process.env.NODE_ENV !== "production" ? GridPanel.propTypes = {
98
98
  // | These PropTypes are generated from the TypeScript type definitions |
99
99
  // | To update them edit the TypeScript types and run "yarn proptypes" |
100
100
  // ----------------------------------------------------------------------
101
+ children: PropTypes.node,
101
102
 
102
103
  /**
103
104
  * Override or extend the styles applied to the component.
@@ -77,6 +77,10 @@ export interface GridFilterFormProps {
77
77
  * @default {}
78
78
  */
79
79
  valueInputProps?: any;
80
+ /**
81
+ * @ignore - do not document.
82
+ */
83
+ children?: React.ReactNode;
80
84
  }
81
85
  declare const GridFilterForm: React.ForwardRefExoticComponent<GridFilterFormProps & React.RefAttributes<HTMLDivElement>>;
82
86
  export { GridFilterForm };
@@ -351,6 +351,11 @@ process.env.NODE_ENV !== "production" ? GridFilterForm.propTypes = {
351
351
  */
352
352
  applyMultiFilterOperatorChanges: PropTypes.func.isRequired,
353
353
 
354
+ /**
355
+ * @ignore - do not document.
356
+ */
357
+ children: PropTypes.node,
358
+
354
359
  /**
355
360
  * Props passed to the column input component.
356
361
  * @default {}