@mui/x-data-grid 5.15.3 → 5.17.1

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 (257) hide show
  1. package/CHANGELOG.md +150 -1
  2. package/DataGrid/DataGrid.js +2 -0
  3. package/DataGrid/useDataGridComponent.js +5 -0
  4. package/components/DataGridColumnHeaders.js +4 -3
  5. package/components/GridRow.d.ts +2 -1
  6. package/components/GridRow.js +136 -85
  7. package/components/base/GridBody.js +8 -5
  8. package/components/base/GridOverlays.js +3 -3
  9. package/components/cell/GridBooleanCell.js +2 -1
  10. package/components/cell/GridCell.js +9 -1
  11. package/components/cell/GridEditBooleanCell.js +2 -1
  12. package/components/cell/GridEditDateCell.js +2 -1
  13. package/components/cell/GridEditInputCell.js +2 -1
  14. package/components/cell/GridEditSingleSelectCell.js +2 -1
  15. package/components/cell/GridSkeletonCell.d.ts +12 -0
  16. package/components/cell/GridSkeletonCell.js +60 -0
  17. package/components/cell/index.d.ts +1 -0
  18. package/components/cell/index.js +2 -1
  19. package/components/columnHeaders/GridColumnGroupHeader.d.ts +14 -0
  20. package/components/columnHeaders/GridColumnGroupHeader.js +122 -0
  21. package/components/columnHeaders/GridColumnHeaderItem.js +55 -71
  22. package/components/columnHeaders/GridColumnHeadersInner.js +2 -1
  23. package/components/columnHeaders/GridGenericColumnHeaderItem.d.ts +32 -0
  24. package/components/columnHeaders/GridGenericColumnHeaderItem.js +104 -0
  25. package/components/columnSelection/GridCellCheckboxRenderer.js +2 -1
  26. package/components/containers/GridRoot.js +3 -3
  27. package/components/containers/GridRootStyles.js +16 -2
  28. package/components/panel/GridColumnsPanel.d.ts +6 -1
  29. package/components/panel/GridColumnsPanel.js +38 -6
  30. package/components/panel/GridPanel.d.ts +1 -1
  31. package/constants/defaultGridSlotsComponents.js +2 -1
  32. package/constants/gridClasses.d.ts +24 -0
  33. package/constants/gridClasses.js +1 -1
  34. package/hooks/core/pipeProcessing/gridPipeProcessingApi.d.ts +5 -1
  35. package/hooks/features/columnGrouping/gridColumnGroupsInterfaces.d.ts +7 -0
  36. package/hooks/features/columnGrouping/gridColumnGroupsInterfaces.js +1 -0
  37. package/hooks/features/columnGrouping/gridColumnGroupsSelector.d.ts +7 -0
  38. package/hooks/features/columnGrouping/gridColumnGroupsSelector.js +8 -0
  39. package/hooks/features/columnGrouping/index.d.ts +2 -0
  40. package/hooks/features/columnGrouping/index.js +2 -0
  41. package/hooks/features/columnGrouping/useGridColumnGrouping.d.ts +24 -0
  42. package/hooks/features/columnGrouping/useGridColumnGrouping.js +153 -0
  43. package/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.d.ts +4 -0
  44. package/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.js +35 -0
  45. package/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +7 -6
  46. package/hooks/features/columnHeaders/useGridColumnHeaders.js +204 -9
  47. package/hooks/features/density/densitySelector.d.ts +2 -0
  48. package/hooks/features/density/densitySelector.js +3 -1
  49. package/hooks/features/density/densityState.d.ts +1 -0
  50. package/hooks/features/density/useGridDensity.d.ts +1 -1
  51. package/hooks/features/density/useGridDensity.js +45 -9
  52. package/hooks/features/dimensions/useGridDimensions.js +4 -4
  53. package/hooks/features/export/useGridPrintExport.js +3 -3
  54. package/hooks/features/filter/gridFilterSelector.d.ts +3 -3
  55. package/hooks/features/filter/gridFilterUtils.d.ts +1 -1
  56. package/hooks/features/filter/gridFilterUtils.js +55 -54
  57. package/hooks/features/filter/useGridFilter.js +1 -1
  58. package/hooks/features/focus/useGridFocus.js +13 -3
  59. package/hooks/features/index.d.ts +1 -0
  60. package/hooks/features/index.js +1 -0
  61. package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +2 -0
  62. package/hooks/features/pagination/gridPaginationSelector.d.ts +1 -1
  63. package/hooks/features/rows/gridRowsSelector.d.ts +1 -1
  64. package/hooks/features/rows/useGridParamsApi.js +1 -1
  65. package/hooks/features/rows/useGridRows.js +65 -8
  66. package/hooks/features/rows/useGridRowsMeta.js +36 -16
  67. package/hooks/features/selection/gridSelectionSelector.d.ts +1 -1
  68. package/hooks/features/sorting/gridSortingSelector.d.ts +1 -1
  69. package/hooks/features/virtualization/useGridVirtualScroller.d.ts +2 -2
  70. package/hooks/features/virtualization/useGridVirtualScroller.js +17 -5
  71. package/hooks/utils/useGridVisibleRows.d.ts +2 -2
  72. package/index.js +1 -1
  73. package/internals/index.d.ts +3 -1
  74. package/internals/index.js +3 -1
  75. package/legacy/DataGrid/DataGrid.js +2 -0
  76. package/legacy/DataGrid/useDataGridComponent.js +5 -0
  77. package/legacy/components/DataGridColumnHeaders.js +4 -3
  78. package/legacy/components/GridRow.js +138 -85
  79. package/legacy/components/base/GridBody.js +8 -5
  80. package/legacy/components/base/GridOverlays.js +3 -3
  81. package/legacy/components/cell/GridBooleanCell.js +2 -1
  82. package/legacy/components/cell/GridCell.js +11 -1
  83. package/legacy/components/cell/GridEditBooleanCell.js +2 -1
  84. package/legacy/components/cell/GridEditDateCell.js +2 -1
  85. package/legacy/components/cell/GridEditInputCell.js +2 -1
  86. package/legacy/components/cell/GridEditSingleSelectCell.js +2 -1
  87. package/legacy/components/cell/GridSkeletonCell.js +57 -0
  88. package/legacy/components/cell/index.js +2 -1
  89. package/legacy/components/columnHeaders/GridColumnGroupHeader.js +120 -0
  90. package/legacy/components/columnHeaders/GridColumnHeaderItem.js +78 -88
  91. package/legacy/components/columnHeaders/GridColumnHeadersInner.js +2 -1
  92. package/legacy/components/columnHeaders/GridGenericColumnHeaderItem.js +112 -0
  93. package/legacy/components/columnSelection/GridCellCheckboxRenderer.js +2 -1
  94. package/legacy/components/containers/GridRoot.js +3 -3
  95. package/legacy/components/containers/GridRootStyles.js +14 -5
  96. package/legacy/components/panel/GridColumnsPanel.js +41 -6
  97. package/legacy/constants/defaultGridSlotsComponents.js +2 -1
  98. package/legacy/constants/gridClasses.js +1 -1
  99. package/legacy/hooks/features/columnGrouping/gridColumnGroupsInterfaces.js +1 -0
  100. package/legacy/hooks/features/columnGrouping/gridColumnGroupsSelector.js +12 -0
  101. package/legacy/hooks/features/columnGrouping/index.js +2 -0
  102. package/legacy/hooks/features/columnGrouping/useGridColumnGrouping.js +151 -0
  103. package/legacy/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.js +35 -0
  104. package/legacy/hooks/features/columnHeaders/useGridColumnHeaders.js +213 -12
  105. package/legacy/hooks/features/density/densitySelector.js +6 -0
  106. package/legacy/hooks/features/density/useGridDensity.js +44 -6
  107. package/legacy/hooks/features/dimensions/useGridDimensions.js +4 -4
  108. package/legacy/hooks/features/export/useGridPrintExport.js +3 -3
  109. package/legacy/hooks/features/filter/gridFilterUtils.js +61 -56
  110. package/legacy/hooks/features/filter/useGridFilter.js +1 -1
  111. package/legacy/hooks/features/focus/useGridFocus.js +13 -3
  112. package/legacy/hooks/features/index.js +1 -0
  113. package/legacy/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +2 -0
  114. package/legacy/hooks/features/rows/useGridParamsApi.js +1 -1
  115. package/legacy/hooks/features/rows/useGridRows.js +73 -8
  116. package/legacy/hooks/features/rows/useGridRowsMeta.js +45 -18
  117. package/legacy/hooks/features/virtualization/useGridVirtualScroller.js +31 -13
  118. package/legacy/index.js +1 -1
  119. package/legacy/internals/index.js +3 -1
  120. package/legacy/models/api/gridColumnGroupingApi.js +1 -0
  121. package/legacy/models/events/gridEvents.js +2 -0
  122. package/legacy/models/gridColumnGrouping.js +6 -0
  123. package/legacy/models/index.js +2 -1
  124. package/legacy/models/params/gridRenderedRowsIntervalChangeParams.js +1 -0
  125. package/legacy/models/params/index.js +2 -1
  126. package/legacy/utils/utils.js +18 -0
  127. package/models/api/gridApiCommon.d.ts +2 -1
  128. package/models/api/gridColumnGroupingApi.d.ts +19 -0
  129. package/models/api/gridColumnGroupingApi.js +1 -0
  130. package/models/api/gridDensityApi.d.ts +2 -1
  131. package/models/api/gridParamsApi.d.ts +1 -1
  132. package/models/api/gridRowApi.d.ts +6 -0
  133. package/models/api/gridRowsMetaApi.d.ts +6 -1
  134. package/models/colDef/gridColDef.d.ts +15 -1
  135. package/models/events/gridEventLookup.d.ts +7 -1
  136. package/models/events/gridEvents.d.ts +3 -1
  137. package/models/events/gridEvents.js +2 -0
  138. package/models/gridColumnGrouping.d.ts +67 -0
  139. package/models/gridColumnGrouping.js +6 -0
  140. package/models/gridRows.d.ts +5 -5
  141. package/models/gridSlotsComponent.d.ts +5 -0
  142. package/models/gridStateCommunity.d.ts +2 -1
  143. package/models/index.d.ts +1 -0
  144. package/models/index.js +2 -1
  145. package/models/params/gridCellParams.d.ts +7 -2
  146. package/models/params/gridRenderedRowsIntervalChangeParams.d.ts +10 -0
  147. package/models/params/gridRenderedRowsIntervalChangeParams.js +1 -0
  148. package/models/params/index.d.ts +1 -0
  149. package/models/params/index.js +2 -1
  150. package/models/props/DataGridProps.d.ts +6 -0
  151. package/modern/DataGrid/DataGrid.js +2 -0
  152. package/modern/DataGrid/useDataGridComponent.js +5 -0
  153. package/modern/components/DataGridColumnHeaders.js +4 -3
  154. package/modern/components/GridRow.js +133 -84
  155. package/modern/components/base/GridBody.js +8 -5
  156. package/modern/components/base/GridOverlays.js +3 -3
  157. package/modern/components/cell/GridBooleanCell.js +2 -1
  158. package/modern/components/cell/GridCell.js +9 -1
  159. package/modern/components/cell/GridEditBooleanCell.js +2 -1
  160. package/modern/components/cell/GridEditDateCell.js +2 -1
  161. package/modern/components/cell/GridEditInputCell.js +2 -1
  162. package/modern/components/cell/GridEditSingleSelectCell.js +2 -1
  163. package/modern/components/cell/GridSkeletonCell.js +60 -0
  164. package/modern/components/cell/index.js +2 -1
  165. package/modern/components/columnHeaders/GridColumnGroupHeader.js +120 -0
  166. package/modern/components/columnHeaders/GridColumnHeaderItem.js +53 -69
  167. package/modern/components/columnHeaders/GridColumnHeadersInner.js +2 -1
  168. package/modern/components/columnHeaders/GridGenericColumnHeaderItem.js +104 -0
  169. package/modern/components/columnSelection/GridCellCheckboxRenderer.js +2 -1
  170. package/modern/components/containers/GridRoot.js +3 -3
  171. package/modern/components/containers/GridRootStyles.js +16 -2
  172. package/modern/components/panel/GridColumnsPanel.js +38 -6
  173. package/modern/constants/defaultGridSlotsComponents.js +2 -1
  174. package/modern/constants/gridClasses.js +1 -1
  175. package/modern/hooks/features/columnGrouping/gridColumnGroupsInterfaces.js +1 -0
  176. package/modern/hooks/features/columnGrouping/gridColumnGroupsSelector.js +8 -0
  177. package/modern/hooks/features/columnGrouping/index.js +2 -0
  178. package/modern/hooks/features/columnGrouping/useGridColumnGrouping.js +145 -0
  179. package/modern/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.js +29 -0
  180. package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +186 -9
  181. package/modern/hooks/features/density/densitySelector.js +3 -1
  182. package/modern/hooks/features/density/useGridDensity.js +37 -9
  183. package/modern/hooks/features/dimensions/useGridDimensions.js +4 -4
  184. package/modern/hooks/features/export/useGridPrintExport.js +3 -3
  185. package/modern/hooks/features/filter/gridFilterUtils.js +54 -53
  186. package/modern/hooks/features/filter/useGridFilter.js +1 -1
  187. package/modern/hooks/features/focus/useGridFocus.js +13 -3
  188. package/modern/hooks/features/index.js +1 -0
  189. package/modern/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +2 -0
  190. package/modern/hooks/features/rows/useGridParamsApi.js +1 -1
  191. package/modern/hooks/features/rows/useGridRows.js +65 -8
  192. package/modern/hooks/features/rows/useGridRowsMeta.js +36 -16
  193. package/modern/hooks/features/virtualization/useGridVirtualScroller.js +17 -5
  194. package/modern/index.js +1 -1
  195. package/modern/internals/index.js +3 -1
  196. package/modern/models/api/gridColumnGroupingApi.js +1 -0
  197. package/modern/models/events/gridEvents.js +2 -0
  198. package/modern/models/gridColumnGrouping.js +6 -0
  199. package/modern/models/index.js +2 -1
  200. package/modern/models/params/gridRenderedRowsIntervalChangeParams.js +1 -0
  201. package/modern/models/params/index.js +2 -1
  202. package/modern/utils/utils.js +16 -0
  203. package/node/DataGrid/DataGrid.js +2 -0
  204. package/node/DataGrid/useDataGridComponent.js +7 -0
  205. package/node/components/DataGridColumnHeaders.js +4 -3
  206. package/node/components/GridRow.js +136 -77
  207. package/node/components/base/GridBody.js +7 -4
  208. package/node/components/base/GridOverlays.js +2 -2
  209. package/node/components/cell/GridBooleanCell.js +2 -1
  210. package/node/components/cell/GridCell.js +9 -1
  211. package/node/components/cell/GridEditBooleanCell.js +2 -1
  212. package/node/components/cell/GridEditDateCell.js +2 -1
  213. package/node/components/cell/GridEditInputCell.js +2 -1
  214. package/node/components/cell/GridEditSingleSelectCell.js +2 -1
  215. package/node/components/cell/GridSkeletonCell.js +81 -0
  216. package/node/components/cell/index.js +13 -0
  217. package/node/components/columnHeaders/GridColumnGroupHeader.js +141 -0
  218. package/node/components/columnHeaders/GridColumnHeaderItem.js +53 -72
  219. package/node/components/columnHeaders/GridColumnHeadersInner.js +2 -1
  220. package/node/components/columnHeaders/GridGenericColumnHeaderItem.js +126 -0
  221. package/node/components/columnSelection/GridCellCheckboxRenderer.js +2 -1
  222. package/node/components/containers/GridRoot.js +4 -4
  223. package/node/components/containers/GridRootStyles.js +16 -2
  224. package/node/components/panel/GridColumnsPanel.js +36 -5
  225. package/node/constants/defaultGridSlotsComponents.js +1 -0
  226. package/node/constants/gridClasses.js +1 -1
  227. package/node/hooks/features/columnGrouping/gridColumnGroupsInterfaces.js +5 -0
  228. package/node/hooks/features/columnGrouping/gridColumnGroupsSelector.js +18 -0
  229. package/node/hooks/features/columnGrouping/index.js +18 -0
  230. package/node/hooks/features/columnGrouping/useGridColumnGrouping.js +182 -0
  231. package/node/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.js +55 -0
  232. package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +207 -8
  233. package/node/hooks/features/density/densitySelector.js +6 -2
  234. package/node/hooks/features/density/useGridDensity.js +48 -9
  235. package/node/hooks/features/dimensions/useGridDimensions.js +3 -3
  236. package/node/hooks/features/export/useGridPrintExport.js +2 -2
  237. package/node/hooks/features/filter/gridFilterUtils.js +55 -55
  238. package/node/hooks/features/filter/useGridFilter.js +1 -1
  239. package/node/hooks/features/focus/useGridFocus.js +13 -3
  240. package/node/hooks/features/index.js +13 -0
  241. package/node/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +2 -0
  242. package/node/hooks/features/rows/useGridParamsApi.js +1 -1
  243. package/node/hooks/features/rows/useGridRows.js +60 -7
  244. package/node/hooks/features/rows/useGridRowsMeta.js +35 -15
  245. package/node/hooks/features/virtualization/useGridVirtualScroller.js +17 -5
  246. package/node/index.js +1 -1
  247. package/node/internals/index.js +28 -0
  248. package/node/models/api/gridColumnGroupingApi.js +5 -0
  249. package/node/models/events/gridEvents.js +2 -0
  250. package/node/models/gridColumnGrouping.js +13 -0
  251. package/node/models/index.js +13 -0
  252. package/node/models/params/gridRenderedRowsIntervalChangeParams.js +5 -0
  253. package/node/models/params/index.js +13 -0
  254. package/node/utils/utils.js +18 -0
  255. package/package.json +3 -3
  256. package/utils/utils.d.ts +1 -0
  257. package/utils/utils.js +16 -0
@@ -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'
@@ -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" | "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" | "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 };
@@ -7,7 +7,7 @@ import MUISwitch from '@mui/material/Switch';
7
7
  import MUIButton from '@mui/material/Button';
8
8
  import MUITooltip from '@mui/material/Tooltip';
9
9
  import MUIPopper from '@mui/material/Popper';
10
- import { GridArrowDownwardIcon, GridArrowUpwardIcon, GridCell, GridCheckIcon, GridCloseIcon, GridColumnIcon, GridColumnMenu, GridColumnsPanel, GridFilterAltIcon, GridFilterListIcon, GridFilterPanel, GridFooter, GridHeader, GridLoadingOverlay, GridNoRowsOverlay, GridPagination, GridPanel, GridPreferencesPanel, GridRow, GridSaveAltIcon, GridSeparatorIcon, GridTableRowsIcon, GridTripleDotsVerticalIcon, GridViewHeadlineIcon, GridViewStreamIcon, GridMoreVertIcon, GridExpandMoreIcon, GridKeyboardArrowRight, GridAddIcon, GridRemoveIcon, GridDragIcon, GridColumnHeaderFilterIconButton, GridSearchIcon } from '../components';
10
+ import { GridArrowDownwardIcon, GridArrowUpwardIcon, GridCell, GridSkeletonCell, GridCheckIcon, GridCloseIcon, GridColumnIcon, GridColumnMenu, GridColumnsPanel, GridFilterAltIcon, GridFilterListIcon, GridFilterPanel, GridFooter, GridHeader, GridLoadingOverlay, GridNoRowsOverlay, GridPagination, GridPanel, GridPreferencesPanel, GridRow, GridSaveAltIcon, GridSeparatorIcon, GridTableRowsIcon, GridTripleDotsVerticalIcon, GridViewHeadlineIcon, GridViewStreamIcon, GridMoreVertIcon, GridExpandMoreIcon, GridKeyboardArrowRight, GridAddIcon, GridRemoveIcon, GridDragIcon, GridColumnHeaderFilterIconButton, GridSearchIcon } from '../components';
11
11
  import { GridColumnUnsortedIcon } from '../components/columnHeaders/GridColumnUnsortedIcon';
12
12
  import { ErrorOverlay } from '../components/ErrorOverlay';
13
13
  import { GridNoResultsOverlay } from '../components/GridNoResultsOverlay';
@@ -52,6 +52,7 @@ export const DATA_GRID_DEFAULT_SLOTS_COMPONENTS = _extends({}, DEFAULT_GRID_ICON
52
52
  BaseTooltip: MUITooltip,
53
53
  BasePopper: MUIPopper,
54
54
  Cell: GridCell,
55
+ SkeletonCell: GridSkeletonCell,
55
56
  ColumnHeaderFilterIconButton: GridColumnHeaderFilterIconButton,
56
57
  ColumnMenu: GridColumnMenu,
57
58
  ErrorOverlay,
@@ -67,6 +67,10 @@ export interface GridClasses {
67
67
  * Styles applied to the cell checkbox element.
68
68
  */
69
69
  cellCheckbox: string;
70
+ /**
71
+ * Styles applied to the skeleton cell element.
72
+ */
73
+ cellSkeleton: string;
70
74
  /**
71
75
  * Styles applied to the selection checkbox element.
72
76
  */
@@ -111,6 +115,10 @@ export interface GridClasses {
111
115
  * Styles applied to the column header element.
112
116
  */
113
117
  columnHeader: string;
118
+ /**
119
+ * Styles applied to the column group header element.
120
+ */
121
+ columnGroupHeader: string;
114
122
  /**
115
123
  * Styles applied to the header checkbox cell element.
116
124
  */
@@ -139,6 +147,18 @@ export interface GridClasses {
139
147
  * Styles applied to the column header's title excepted buttons.
140
148
  */
141
149
  columnHeaderTitleContainerContent: string;
150
+ /**
151
+ * Styles applied to the column group header cell if not empty.
152
+ */
153
+ 'columnHeader--filledGroup': string;
154
+ /**
155
+ * Styles applied to the empty column group header cell.
156
+ */
157
+ 'columnHeader--emptyGroup': string;
158
+ /**
159
+ * Styles applied to the column group header cell when show column border.
160
+ */
161
+ 'columnHeader--showColumnBorder': string;
142
162
  /**
143
163
  * Styles applied to the column headers.
144
164
  */
@@ -375,6 +395,10 @@ export interface GridClasses {
375
395
  * Styles applied to the row if it has dynamic row height.
376
396
  */
377
397
  'row--dynamicHeight': string;
398
+ /**
399
+ * Styles applied to the row if its detail panel is open.
400
+ */
401
+ 'row--detailPanelExpanded': string;
378
402
  /**
379
403
  * Styles applied to the row element.
380
404
  */
@@ -2,4 +2,4 @@ import { generateUtilityClasses, generateUtilityClass } from '@mui/material';
2
2
  export function getDataGridUtilityClass(slot) {
3
3
  return generateUtilityClass('MuiDataGrid', slot);
4
4
  }
5
- export const gridClasses = generateUtilityClasses('MuiDataGrid', ['actionsCell', 'aggregationColumnHeader', 'aggregationColumnHeader--alignLeft', 'aggregationColumnHeader--alignCenter', 'aggregationColumnHeader--alignRight', 'autoHeight', 'booleanCell', 'cell--editable', 'cell--editing', 'cell--textCenter', 'cell--textLeft', 'cell--textRight', 'cell--withRenderer', 'cell', 'cellContent', 'cellCheckbox', 'checkboxInput', 'columnHeader--alignCenter', 'columnHeader--alignLeft', 'columnHeader--alignRight', 'columnHeader--dragging', 'columnHeader--moving', 'columnHeader--numeric', 'columnHeader--sortable', 'columnHeader--sorted', 'columnHeader--filtered', 'columnHeader', 'columnHeaderCheckbox', 'columnHeaderDraggableContainer', 'columnHeaderDropZone', 'columnHeaderTitle', 'columnHeaderTitleContainer', 'columnHeaderTitleContainerContent', 'columnHeaders', 'columnHeadersInner', 'columnHeadersInner--scrollable', 'columnSeparator--resizable', 'columnSeparator--resizing', 'columnSeparator--sideLeft', 'columnSeparator--sideRight', 'columnSeparator', 'columnsPanel', 'columnsPanelRow', 'detailPanel', 'detailPanels', 'detailPanelToggleCell', 'detailPanelToggleCell--expanded', 'footerCell', 'panel', 'panelHeader', 'panelWrapper', 'panelContent', 'panelFooter', 'paper', 'editBooleanCell', 'editInputCell', 'filterForm', 'filterFormDeleteIcon', 'filterFormLinkOperatorInput', 'filterFormColumnInput', 'filterFormOperatorInput', 'filterFormValueInput', 'filterIcon', 'footerContainer', 'iconButtonContainer', 'iconSeparator', 'main', 'menu', 'menuIcon', 'menuIconButton', 'menuOpen', 'menuList', 'overlay', 'root', 'root--densityStandard', 'root--densityComfortable', 'root--densityCompact', 'row', 'row--editable', 'row--editing', 'row--lastVisible', 'row--dragging', 'row--dynamicHeight', 'rowReorderCellPlaceholder', 'rowCount', 'rowReorderCellContainer', 'rowReorderCell', 'rowReorderCell--draggable', 'scrollArea--left', 'scrollArea--right', 'scrollArea', 'selectedRowCount', 'sortIcon', 'toolbarContainer', 'toolbarFilterList', 'virtualScroller', 'virtualScrollerContent', 'virtualScrollerContent--overflowed', 'virtualScrollerRenderZone', 'pinnedColumns', 'pinnedColumns--left', 'pinnedColumns--right', 'pinnedColumnHeaders', 'pinnedColumnHeaders--left', 'pinnedColumnHeaders--right', 'withBorder', 'treeDataGroupingCell', 'treeDataGroupingCellToggle', 'groupingCriteriaCell', 'groupingCriteriaCellToggle', 'pinnedRows', 'pinnedRows--top', 'pinnedRows--bottom', 'pinnedRowsRenderZone']);
5
+ export const gridClasses = generateUtilityClasses('MuiDataGrid', ['actionsCell', 'aggregationColumnHeader', 'aggregationColumnHeader--alignLeft', 'aggregationColumnHeader--alignCenter', 'aggregationColumnHeader--alignRight', 'autoHeight', 'booleanCell', 'cell--editable', 'cell--editing', 'cell--textCenter', 'cell--textLeft', 'cell--textRight', 'cell--withRenderer', 'cell', 'cellContent', 'cellCheckbox', 'cellSkeleton', 'checkboxInput', 'columnHeader--alignCenter', 'columnHeader--alignLeft', 'columnHeader--alignRight', 'columnHeader--dragging', 'columnHeader--moving', 'columnHeader--numeric', 'columnHeader--sortable', 'columnHeader--sorted', 'columnHeader--filtered', 'columnHeader', 'columnHeaderCheckbox', 'columnHeaderDraggableContainer', 'columnHeaderDropZone', 'columnHeaderTitle', 'columnHeaderTitleContainer', 'columnHeaderTitleContainerContent', 'columnGroupHeader', 'columnHeader--filledGroup', 'columnHeader--emptyGroup', 'columnHeader--showColumnBorder', 'columnHeaders', 'columnHeadersInner', 'columnHeadersInner--scrollable', 'columnSeparator--resizable', 'columnSeparator--resizing', 'columnSeparator--sideLeft', 'columnSeparator--sideRight', 'columnSeparator', 'columnsPanel', 'columnsPanelRow', 'detailPanel', 'detailPanels', 'detailPanelToggleCell', 'detailPanelToggleCell--expanded', 'footerCell', 'panel', 'panelHeader', 'panelWrapper', 'panelContent', 'panelFooter', 'paper', 'editBooleanCell', 'editInputCell', 'filterForm', 'filterFormDeleteIcon', 'filterFormLinkOperatorInput', 'filterFormColumnInput', 'filterFormOperatorInput', 'filterFormValueInput', 'filterIcon', 'footerContainer', 'iconButtonContainer', 'iconSeparator', 'main', 'menu', 'menuIcon', 'menuIconButton', 'menuOpen', 'menuList', 'overlay', 'root', 'root--densityStandard', 'root--densityComfortable', 'root--densityCompact', 'row', 'row--editable', 'row--editing', 'row--lastVisible', 'row--dragging', 'row--dynamicHeight', 'row--detailPanelExpanded', 'rowReorderCellPlaceholder', 'rowCount', 'rowReorderCellContainer', 'rowReorderCell', 'rowReorderCell--draggable', 'scrollArea--left', 'scrollArea--right', 'scrollArea', 'selectedRowCount', 'sortIcon', 'toolbarContainer', 'toolbarFilterList', 'virtualScroller', 'virtualScrollerContent', 'virtualScrollerContent--overflowed', 'virtualScrollerRenderZone', 'pinnedColumns', 'pinnedColumns--left', 'pinnedColumns--right', 'pinnedColumnHeaders', 'pinnedColumnHeaders--left', 'pinnedColumnHeaders--right', 'withBorder', 'treeDataGroupingCell', 'treeDataGroupingCellToggle', 'groupingCriteriaCell', 'groupingCriteriaCellToggle', 'pinnedRows', 'pinnedRows--top', 'pinnedRows--bottom', 'pinnedRowsRenderZone']);
@@ -3,7 +3,7 @@ import { GridCellIndexCoordinates, GridScrollParams, GridColDef } from '../../..
3
3
  import { GridInitialStateCommunity } from '../../../models/gridStateCommunity';
4
4
  import { GridExportStateParams, GridRestoreStatePreProcessingContext, GridRestoreStatePreProcessingValue } from '../../features/statePersistence/gridStatePersistenceInterface';
5
5
  import { GridHydrateColumnsValue } from '../../features/columns/gridColumnsInterfaces';
6
- import { GridRowEntry } from '../../../models/gridRows';
6
+ import { GridRowEntry, GridRowId } from '../../../models/gridRows';
7
7
  import { GridHydrateRowsValue } from '../../features/rows/gridRowsState';
8
8
  import { GridPreferencePanelsValue } from '../../features/preferencesPanel';
9
9
  export declare type GridPipeProcessorGroup = keyof GridPipeProcessingLookup;
@@ -45,6 +45,10 @@ export interface GridPipeProcessingLookup {
45
45
  value: Partial<GridScrollParams>;
46
46
  context: Partial<GridCellIndexCoordinates>;
47
47
  };
48
+ rowClassName: {
49
+ value: string[];
50
+ context: GridRowId;
51
+ };
48
52
  }
49
53
  export declare type GridPipeProcessor<P extends GridPipeProcessorGroup> = (value: GridPipeProcessingLookup[P]['value'], context: GridPipeProcessingLookup[P] extends {
50
54
  context: any;
@@ -0,0 +1,7 @@
1
+ import { GridColumnGroup } from '../../../models/gridColumnGrouping';
2
+ export declare type GridColumnGroupLookup = {
3
+ [field: string]: Omit<GridColumnGroup, 'children'>;
4
+ };
5
+ export interface GridColumnsGroupingState {
6
+ lookup: GridColumnGroupLookup;
7
+ }
@@ -0,0 +1,7 @@
1
+ import { GridStateCommunity } from '../../../models/gridStateCommunity';
2
+ /**
3
+ * @category ColumnGrouping
4
+ * @ignore - do not document.
5
+ */
6
+ export declare const gridColumnGroupingSelector: (state: GridStateCommunity) => import("./gridColumnGroupsInterfaces").GridColumnsGroupingState;
7
+ export declare const gridColumnGroupsLookupSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, import("./gridColumnGroupsInterfaces").GridColumnGroupLookup>;
@@ -0,0 +1,8 @@
1
+ import { createSelector } from '../../../utils/createSelector';
2
+
3
+ /**
4
+ * @category ColumnGrouping
5
+ * @ignore - do not document.
6
+ */
7
+ export const gridColumnGroupingSelector = state => state.columnGrouping;
8
+ export const gridColumnGroupsLookupSelector = createSelector(gridColumnGroupingSelector, columnGrouping => columnGrouping.lookup);
@@ -0,0 +1,2 @@
1
+ export * from './gridColumnGroupsSelector';
2
+ export type { GridColumnsGroupingState } from './gridColumnGroupsInterfaces';
@@ -0,0 +1,2 @@
1
+ export * from './gridColumnGroupsSelector';
2
+ export {};
@@ -0,0 +1,24 @@
1
+ import * as React from 'react';
2
+ import { GridApiCommunity } from '../../../models/api/gridApiCommunity';
3
+ import { DataGridProcessedProps } from '../../../models/props/DataGridProps';
4
+ import { GridStateInitializer } from '../../utils/useGridInitializeState';
5
+ import { GridColumnGroupingModel, GridColumnGroup } from '../../../models/gridColumnGrouping';
6
+ import { GridStateColDef, GridColDef } from '../../../models/colDef';
7
+ export declare function hasGroupPath(lookupElement: GridColDef | GridStateColDef): lookupElement is GridStateColDef;
8
+ declare type UnwrappedGroupingModel = {
9
+ [key: GridColDef['field']]: GridColumnGroup['groupId'][];
10
+ };
11
+ /**
12
+ * This is a function that provide for each column the array of its parents.
13
+ * Parents are ordered from the root to the leaf.
14
+ * @param columnGroupingModel The model such as provided in DataGrid props
15
+ * @returns An object `{[field]: groupIds}` where `groupIds` is the parents of the column `field`
16
+ */
17
+ export declare const unwrapGroupingColumnModel: (columnGroupingModel?: GridColumnGroupingModel) => UnwrappedGroupingModel;
18
+ export declare const columnGroupsStateInitializer: GridStateInitializer<Pick<DataGridProcessedProps, 'columnGroupingModel'>>;
19
+ /**
20
+ * @requires useGridColumns (method, event)
21
+ * @requires useGridParamsApi (method)
22
+ */
23
+ export declare const useGridColumnGrouping: (apiRef: React.MutableRefObject<GridApiCommunity>, props: Pick<DataGridProcessedProps, 'columnGroupingModel' | 'experimentalFeatures'>) => void;
24
+ export {};
@@ -0,0 +1,153 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
+ const _excluded = ["groupId", "children"];
4
+ import * as React from 'react';
5
+ import { isLeaf } from '../../../models/gridColumnGrouping';
6
+ import { gridColumnGroupsLookupSelector } from './gridColumnGroupsSelector';
7
+ import { gridColumnLookupSelector } from '../columns/gridColumnsSelector';
8
+ import { useGridApiMethod } from '../../utils/useGridApiMethod';
9
+ export function hasGroupPath(lookupElement) {
10
+ return lookupElement.groupPath !== undefined;
11
+ }
12
+
13
+ // This is the recurrence function that help writing `unwrapGroupingColumnModel()`
14
+ const recurrentUnwrapGroupingColumnModel = (columnGroupNode, parents, unwrappedGroupingModelToComplet) => {
15
+ if (isLeaf(columnGroupNode)) {
16
+ if (unwrappedGroupingModelToComplet[columnGroupNode.field] !== undefined) {
17
+ throw new Error([`MUI: columnGroupingModel contains duplicated field`, `column field ${columnGroupNode.field} occurrs two times in the grouping model:`, `- ${unwrappedGroupingModelToComplet[columnGroupNode.field].join(' > ')}`, `- ${parents.join(' > ')}`].join('\n'));
18
+ }
19
+
20
+ unwrappedGroupingModelToComplet[columnGroupNode.field] = parents;
21
+ return;
22
+ }
23
+
24
+ const {
25
+ groupId,
26
+ children
27
+ } = columnGroupNode;
28
+ children.forEach(child => {
29
+ recurrentUnwrapGroupingColumnModel(child, [...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 const unwrapGroupingColumnModel = columnGroupingModel => {
41
+ if (!columnGroupingModel) {
42
+ return {};
43
+ }
44
+
45
+ const unwrappedSubTree = {};
46
+ columnGroupingModel.forEach(columnGroupNode => {
47
+ recurrentUnwrapGroupingColumnModel(columnGroupNode, [], unwrappedSubTree);
48
+ });
49
+ return unwrappedSubTree;
50
+ };
51
+
52
+ const createGroupLookup = columnGroupingModel => {
53
+ let groupLookup = {};
54
+ columnGroupingModel.forEach(node => {
55
+ if (isLeaf(node)) {
56
+ return;
57
+ }
58
+
59
+ const {
60
+ groupId,
61
+ children
62
+ } = node,
63
+ other = _objectWithoutPropertiesLoose(node, _excluded);
64
+
65
+ if (!groupId) {
66
+ throw new Error('MUI: An element of the columnGroupingModel does not have either `field` or `groupId`.');
67
+ }
68
+
69
+ if (!children) {
70
+ console.warn(`MUI: group groupId=${groupId} has no children.`);
71
+ }
72
+
73
+ const groupParam = _extends({}, other, {
74
+ groupId
75
+ });
76
+
77
+ const subTreeLookup = createGroupLookup(children);
78
+
79
+ if (subTreeLookup[groupId] !== undefined || groupLookup[groupId] !== undefined) {
80
+ throw new Error(`MUI: The groupId ${groupId} is used multiple times in the columnGroupingModel.`);
81
+ }
82
+
83
+ groupLookup = _extends({}, groupLookup, subTreeLookup, {
84
+ [groupId]: groupParam
85
+ });
86
+ });
87
+ return _extends({}, groupLookup);
88
+ };
89
+
90
+ export const columnGroupsStateInitializer = (state, props) => {
91
+ var _props$columnGrouping;
92
+
93
+ const groupLookup = createGroupLookup((_props$columnGrouping = props.columnGroupingModel) != null ? _props$columnGrouping : []);
94
+ return _extends({}, state, {
95
+ columnGrouping: {
96
+ lookup: groupLookup,
97
+ groupCollapsedModel: {}
98
+ }
99
+ });
100
+ };
101
+ /**
102
+ * @requires useGridColumns (method, event)
103
+ * @requires useGridParamsApi (method)
104
+ */
105
+
106
+ export const useGridColumnGrouping = (apiRef, props) => {
107
+ var _props$experimentalFe2;
108
+
109
+ /**
110
+ * API METHODS
111
+ */
112
+ const getColumnGroupPath = React.useCallback(field => {
113
+ var _columnLookup$field$g, _columnLookup$field;
114
+
115
+ const columnLookup = gridColumnLookupSelector(apiRef);
116
+ return (_columnLookup$field$g = (_columnLookup$field = columnLookup[field]) == null ? void 0 : _columnLookup$field.groupPath) != null ? _columnLookup$field$g : [];
117
+ }, [apiRef]);
118
+ const getAllGroupDetails = React.useCallback(() => {
119
+ const columnGroupLookup = gridColumnGroupsLookupSelector(apiRef);
120
+ return columnGroupLookup;
121
+ }, [apiRef]);
122
+ const columnGroupingApi = {
123
+ unstable_getColumnGroupPath: getColumnGroupPath,
124
+ unstable_getAllGroupDetails: getAllGroupDetails
125
+ };
126
+ useGridApiMethod(apiRef, columnGroupingApi, 'GridColumnGroupingApi');
127
+ /**
128
+ * EFFECTS
129
+ */
130
+ // The effect does not track any value defined synchronously during the 1st render by hooks called after `useGridColumns`
131
+ // As a consequence, the state generated by the 1st run of this useEffect will always be equal to the initialization one
132
+
133
+ const isFirstRender = React.useRef(true);
134
+ React.useEffect(() => {
135
+ var _props$experimentalFe, _props$columnGrouping2;
136
+
137
+ if (isFirstRender.current) {
138
+ isFirstRender.current = false;
139
+ return;
140
+ }
141
+
142
+ if (!((_props$experimentalFe = props.experimentalFeatures) != null && _props$experimentalFe.columnGrouping)) {
143
+ return;
144
+ }
145
+
146
+ const groupLookup = createGroupLookup((_props$columnGrouping2 = props.columnGroupingModel) != null ? _props$columnGrouping2 : []);
147
+ apiRef.current.setState(state => _extends({}, state, {
148
+ columnGrouping: _extends({}, state.columnGrouping, {
149
+ lookup: groupLookup
150
+ })
151
+ }));
152
+ }, [apiRef, props.columnGroupingModel, (_props$experimentalFe2 = props.experimentalFeatures) == null ? void 0 : _props$experimentalFe2.columnGrouping]);
153
+ };
@@ -0,0 +1,4 @@
1
+ import * as React from 'react';
2
+ import { DataGridProcessedProps } from '../../../models/props/DataGridProps';
3
+ import { GridApiCommunity } from '../../../models/api/gridApiCommunity';
4
+ export declare const useGridColumnGroupingPreProcessors: (apiRef: React.MutableRefObject<GridApiCommunity>, props: DataGridProcessedProps) => void;
@@ -0,0 +1,35 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import * as React from 'react';
3
+ import { useGridRegisterPipeProcessor } from '../../core/pipeProcessing';
4
+ import { isDeepEqual } from '../../../utils/utils';
5
+ import { unwrapGroupingColumnModel, hasGroupPath } from './useGridColumnGrouping';
6
+ export const useGridColumnGroupingPreProcessors = (apiRef, props) => {
7
+ var _props$experimentalFe2;
8
+
9
+ const addHeaderGroups = React.useCallback(columnsState => {
10
+ var _props$experimentalFe;
11
+
12
+ if (!((_props$experimentalFe = props.experimentalFeatures) != null && _props$experimentalFe.columnGrouping)) {
13
+ return columnsState;
14
+ }
15
+
16
+ const unwrappedGroupingModel = unwrapGroupingColumnModel(props.columnGroupingModel);
17
+ columnsState.all.forEach(field => {
18
+ var _unwrappedGroupingMod, _unwrappedGroupingMod2;
19
+
20
+ const newGroupPath = (_unwrappedGroupingMod = unwrappedGroupingModel[field]) != null ? _unwrappedGroupingMod : [];
21
+ const lookupElement = columnsState.lookup[field];
22
+
23
+ if (hasGroupPath(lookupElement) && isDeepEqual(newGroupPath, lookupElement == null ? void 0 : lookupElement.groupPath)) {
24
+ // Avoid modifying the pointer to allow shadow comparison in https://github.com/mui/mui-x/blob/f90afbf10a1264ee8b453d7549dd7cdd6110a4ed/packages/grid/x-data-grid/src/hooks/features/columns/gridColumnsUtils.ts#L446:L453
25
+ return;
26
+ }
27
+
28
+ columnsState.lookup[field] = _extends({}, columnsState.lookup[field], {
29
+ groupPath: (_unwrappedGroupingMod2 = unwrappedGroupingModel[field]) != null ? _unwrappedGroupingMod2 : []
30
+ });
31
+ });
32
+ return columnsState;
33
+ }, [props.columnGroupingModel, (_props$experimentalFe2 = props.experimentalFeatures) == null ? void 0 : _props$experimentalFe2.columnGrouping]);
34
+ useGridRegisterPipeProcessor(apiRef, 'hydrateColumns', addHeaderGroups);
35
+ };
@@ -4,13 +4,15 @@ interface UseGridColumnHeadersProps {
4
4
  innerRef?: React.Ref<HTMLDivElement>;
5
5
  minColumnIndex?: number;
6
6
  }
7
+ interface GetHeadersParams {
8
+ renderContext: GridRenderContext | null;
9
+ minFirstColumn?: number;
10
+ maxLastColumn?: number;
11
+ }
7
12
  export declare const useGridColumnHeaders: (props: UseGridColumnHeadersProps) => {
8
13
  renderContext: GridRenderContext | null;
9
- getColumns: (params?: {
10
- renderContext: GridRenderContext | null;
11
- minFirstColumn?: number | undefined;
12
- maxLastColumn?: number | undefined;
13
- } | undefined, other?: {}) => JSX.Element[] | null;
14
+ getColumnHeaders: (params?: GetHeadersParams, other?: {}) => JSX.Element | null;
15
+ getColumnGroupHeaders: (params?: GetHeadersParams) => JSX.Element[] | null;
14
16
  isDragging: boolean;
15
17
  getRootProps: (other?: {}) => {
16
18
  style: {
@@ -21,7 +23,6 @@ export declare const useGridColumnHeaders: (props: UseGridColumnHeadersProps) =>
21
23
  };
22
24
  getInnerProps: () => {
23
25
  ref: React.Ref<HTMLDivElement>;
24
- 'aria-rowindex': number;
25
26
  role: string;
26
27
  };
27
28
  };