@mui/x-data-grid 5.15.3 → 5.16.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.
- package/CHANGELOG.md +56 -0
- package/DataGrid/DataGrid.js +2 -0
- package/DataGrid/useDataGridComponent.js +5 -0
- package/components/DataGridColumnHeaders.js +4 -3
- package/components/GridRow.js +5 -3
- package/components/base/GridBody.js +8 -5
- package/components/base/GridOverlays.js +3 -3
- package/components/columnHeaders/GridColumnGroupHeader.d.ts +14 -0
- package/components/columnHeaders/GridColumnGroupHeader.js +122 -0
- package/components/columnHeaders/GridColumnHeaderItem.js +55 -71
- package/components/columnHeaders/GridColumnHeadersInner.js +2 -1
- package/components/columnHeaders/GridGenericColumnHeaderItem.d.ts +32 -0
- package/components/columnHeaders/GridGenericColumnHeaderItem.js +104 -0
- package/components/containers/GridRoot.js +3 -3
- package/components/containers/GridRootStyles.js +14 -2
- package/components/panel/GridPanel.d.ts +1 -1
- package/constants/gridClasses.d.ts +16 -0
- package/constants/gridClasses.js +1 -1
- package/hooks/features/columnGrouping/gridColumnGroupsInterfaces.d.ts +7 -0
- package/hooks/features/columnGrouping/gridColumnGroupsInterfaces.js +1 -0
- package/hooks/features/columnGrouping/gridColumnGroupsSelector.d.ts +7 -0
- package/hooks/features/columnGrouping/gridColumnGroupsSelector.js +8 -0
- package/hooks/features/columnGrouping/index.d.ts +2 -0
- package/hooks/features/columnGrouping/index.js +2 -0
- package/hooks/features/columnGrouping/useGridColumnGrouping.d.ts +24 -0
- package/hooks/features/columnGrouping/useGridColumnGrouping.js +153 -0
- package/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.d.ts +4 -0
- package/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.js +35 -0
- package/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +7 -6
- package/hooks/features/columnHeaders/useGridColumnHeaders.js +204 -9
- package/hooks/features/density/densitySelector.d.ts +2 -0
- package/hooks/features/density/densitySelector.js +3 -1
- package/hooks/features/density/densityState.d.ts +1 -0
- package/hooks/features/density/useGridDensity.d.ts +1 -1
- package/hooks/features/density/useGridDensity.js +45 -9
- package/hooks/features/dimensions/useGridDimensions.js +4 -4
- package/hooks/features/export/useGridPrintExport.js +3 -3
- package/hooks/features/filter/gridFilterSelector.d.ts +3 -3
- package/hooks/features/index.d.ts +1 -0
- package/hooks/features/index.js +1 -0
- package/hooks/features/pagination/gridPaginationSelector.d.ts +1 -1
- package/hooks/features/rows/gridRowsSelector.d.ts +1 -1
- package/hooks/features/selection/gridSelectionSelector.d.ts +1 -1
- package/hooks/features/sorting/gridSortingSelector.d.ts +1 -1
- package/hooks/features/virtualization/useGridVirtualScroller.d.ts +1 -1
- package/hooks/utils/useGridVisibleRows.d.ts +2 -2
- package/index.js +1 -1
- package/internals/index.d.ts +2 -0
- package/internals/index.js +2 -0
- package/legacy/DataGrid/DataGrid.js +2 -0
- package/legacy/DataGrid/useDataGridComponent.js +5 -0
- package/legacy/components/DataGridColumnHeaders.js +4 -3
- package/legacy/components/GridRow.js +4 -3
- package/legacy/components/base/GridBody.js +8 -5
- package/legacy/components/base/GridOverlays.js +3 -3
- package/legacy/components/columnHeaders/GridColumnGroupHeader.js +120 -0
- package/legacy/components/columnHeaders/GridColumnHeaderItem.js +78 -88
- package/legacy/components/columnHeaders/GridColumnHeadersInner.js +2 -1
- package/legacy/components/columnHeaders/GridGenericColumnHeaderItem.js +112 -0
- package/legacy/components/containers/GridRoot.js +3 -3
- package/legacy/components/containers/GridRootStyles.js +11 -2
- package/legacy/constants/gridClasses.js +1 -1
- package/legacy/hooks/features/columnGrouping/gridColumnGroupsInterfaces.js +1 -0
- package/legacy/hooks/features/columnGrouping/gridColumnGroupsSelector.js +12 -0
- package/legacy/hooks/features/columnGrouping/index.js +2 -0
- package/legacy/hooks/features/columnGrouping/useGridColumnGrouping.js +151 -0
- package/legacy/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.js +35 -0
- package/legacy/hooks/features/columnHeaders/useGridColumnHeaders.js +213 -12
- package/legacy/hooks/features/density/densitySelector.js +6 -0
- package/legacy/hooks/features/density/useGridDensity.js +44 -6
- package/legacy/hooks/features/dimensions/useGridDimensions.js +4 -4
- package/legacy/hooks/features/export/useGridPrintExport.js +3 -3
- package/legacy/hooks/features/index.js +1 -0
- package/legacy/index.js +1 -1
- package/legacy/internals/index.js +2 -0
- package/legacy/models/api/gridColumnGroupingApi.js +1 -0
- package/legacy/models/gridColumnGrouping.js +6 -0
- package/legacy/models/index.js +2 -1
- package/models/api/gridApiCommon.d.ts +2 -1
- package/models/api/gridColumnGroupingApi.d.ts +19 -0
- package/models/api/gridColumnGroupingApi.js +1 -0
- package/models/api/gridDensityApi.d.ts +2 -1
- package/models/colDef/gridColDef.d.ts +15 -1
- package/models/gridColumnGrouping.d.ts +67 -0
- package/models/gridColumnGrouping.js +6 -0
- package/models/gridRows.d.ts +5 -5
- package/models/gridStateCommunity.d.ts +2 -1
- package/models/index.d.ts +1 -0
- package/models/index.js +2 -1
- package/models/props/DataGridProps.d.ts +6 -0
- package/modern/DataGrid/DataGrid.js +2 -0
- package/modern/DataGrid/useDataGridComponent.js +5 -0
- package/modern/components/DataGridColumnHeaders.js +4 -3
- package/modern/components/GridRow.js +5 -3
- package/modern/components/base/GridBody.js +8 -5
- package/modern/components/base/GridOverlays.js +3 -3
- package/modern/components/columnHeaders/GridColumnGroupHeader.js +120 -0
- package/modern/components/columnHeaders/GridColumnHeaderItem.js +53 -69
- package/modern/components/columnHeaders/GridColumnHeadersInner.js +2 -1
- package/modern/components/columnHeaders/GridGenericColumnHeaderItem.js +104 -0
- package/modern/components/containers/GridRoot.js +3 -3
- package/modern/components/containers/GridRootStyles.js +14 -2
- package/modern/constants/gridClasses.js +1 -1
- package/modern/hooks/features/columnGrouping/gridColumnGroupsInterfaces.js +1 -0
- package/modern/hooks/features/columnGrouping/gridColumnGroupsSelector.js +8 -0
- package/modern/hooks/features/columnGrouping/index.js +2 -0
- package/modern/hooks/features/columnGrouping/useGridColumnGrouping.js +145 -0
- package/modern/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.js +29 -0
- package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +186 -9
- package/modern/hooks/features/density/densitySelector.js +3 -1
- package/modern/hooks/features/density/useGridDensity.js +37 -9
- package/modern/hooks/features/dimensions/useGridDimensions.js +4 -4
- package/modern/hooks/features/export/useGridPrintExport.js +3 -3
- package/modern/hooks/features/index.js +1 -0
- package/modern/index.js +1 -1
- package/modern/internals/index.js +2 -0
- package/modern/models/api/gridColumnGroupingApi.js +1 -0
- package/modern/models/gridColumnGrouping.js +6 -0
- package/modern/models/index.js +2 -1
- package/node/DataGrid/DataGrid.js +2 -0
- package/node/DataGrid/useDataGridComponent.js +7 -0
- package/node/components/DataGridColumnHeaders.js +4 -3
- package/node/components/GridRow.js +6 -3
- package/node/components/base/GridBody.js +7 -4
- package/node/components/base/GridOverlays.js +2 -2
- package/node/components/columnHeaders/GridColumnGroupHeader.js +141 -0
- package/node/components/columnHeaders/GridColumnHeaderItem.js +53 -72
- package/node/components/columnHeaders/GridColumnHeadersInner.js +2 -1
- package/node/components/columnHeaders/GridGenericColumnHeaderItem.js +126 -0
- package/node/components/containers/GridRoot.js +4 -4
- package/node/components/containers/GridRootStyles.js +14 -2
- package/node/constants/gridClasses.js +1 -1
- package/node/hooks/features/columnGrouping/gridColumnGroupsInterfaces.js +5 -0
- package/node/hooks/features/columnGrouping/gridColumnGroupsSelector.js +18 -0
- package/node/hooks/features/columnGrouping/index.js +18 -0
- package/node/hooks/features/columnGrouping/useGridColumnGrouping.js +182 -0
- package/node/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.js +55 -0
- package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +207 -8
- package/node/hooks/features/density/densitySelector.js +6 -2
- package/node/hooks/features/density/useGridDensity.js +48 -9
- package/node/hooks/features/dimensions/useGridDimensions.js +3 -3
- package/node/hooks/features/export/useGridPrintExport.js +2 -2
- package/node/hooks/features/index.js +13 -0
- package/node/index.js +1 -1
- package/node/internals/index.js +22 -0
- package/node/models/api/gridColumnGroupingApi.js +5 -0
- package/node/models/gridColumnGrouping.js +13 -0
- package/node/models/index.js +13 -0
- package/package.json +3 -3
|
@@ -2,12 +2,13 @@ import _extends from "@babel/runtime/helpers/esm/extends";
|
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import * as ReactDOM from 'react-dom';
|
|
4
4
|
import { useForkRef } from '@mui/material/utils';
|
|
5
|
+
import { styled } from '@mui/material/styles';
|
|
5
6
|
import { defaultMemoize } from 'reselect';
|
|
6
7
|
import { useGridApiContext } from '../../utils/useGridApiContext';
|
|
7
8
|
import { useGridSelector } from '../../utils/useGridSelector';
|
|
8
9
|
import { gridVisibleColumnDefinitionsSelector, gridColumnPositionsSelector } from '../columns/gridColumnsSelector';
|
|
9
10
|
import { gridTabIndexColumnHeaderSelector, gridTabIndexCellSelector, gridFocusColumnHeaderSelector } from '../focus/gridFocusStateSelector';
|
|
10
|
-
import { gridDensityHeaderHeightSelector } from '../density/densitySelector';
|
|
11
|
+
import { gridDensityHeaderHeightSelector, gridDensityHeaderGroupingMaxDepthSelector, gridDensityTotalHeaderHeightSelector } from '../density/densitySelector';
|
|
11
12
|
import { gridFilterActiveItemsLookupSelector } from '../filter/gridFilterSelector';
|
|
12
13
|
import { gridSortColumnLookupSelector } from '../sorting/gridSortingSelector';
|
|
13
14
|
import { gridColumnMenuSelector } from '../columnMenu/columnMenuSelector';
|
|
@@ -17,7 +18,18 @@ import { GridColumnHeaderItem } from '../../../components/columnHeaders/GridColu
|
|
|
17
18
|
import { getFirstColumnIndexToRender } from '../columns/gridColumnsUtils';
|
|
18
19
|
import { useGridVisibleRows } from '../../utils/useGridVisibleRows';
|
|
19
20
|
import { getRenderableIndexes } from '../virtualization/useGridVirtualScroller';
|
|
21
|
+
import { GridColumnGroupHeader } from '../../../components/columnHeaders/GridColumnGroupHeader';
|
|
22
|
+
import { isDeepEqual } from '../../../utils/utils'; // TODO: add the possibility to switch this value if needed for customization
|
|
23
|
+
|
|
20
24
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
25
|
+
const MERGE_EMPTY_CELLS = true;
|
|
26
|
+
const GridColumnHeaderRow = styled('div', {
|
|
27
|
+
name: 'MuiDataGrid',
|
|
28
|
+
slot: 'ColumnHeaderRow',
|
|
29
|
+
overridesResolver: (props, styles) => styles.columnHeaderRow
|
|
30
|
+
})(() => ({
|
|
31
|
+
display: 'flex'
|
|
32
|
+
}));
|
|
21
33
|
|
|
22
34
|
function isUIEvent(event) {
|
|
23
35
|
return !!event.target;
|
|
@@ -37,6 +49,8 @@ export const useGridColumnHeaders = props => {
|
|
|
37
49
|
const cellTabIndexState = useGridSelector(apiRef, gridTabIndexCellSelector);
|
|
38
50
|
const columnHeaderFocus = useGridSelector(apiRef, gridFocusColumnHeaderSelector);
|
|
39
51
|
const headerHeight = useGridSelector(apiRef, gridDensityHeaderHeightSelector);
|
|
52
|
+
const headerGroupingMaxDepth = useGridSelector(apiRef, gridDensityHeaderGroupingMaxDepthSelector);
|
|
53
|
+
const totalHeaderHeight = useGridSelector(apiRef, gridDensityTotalHeaderHeightSelector);
|
|
40
54
|
const filterColumnLookup = useGridSelector(apiRef, gridFilterActiveItemsLookupSelector);
|
|
41
55
|
const sortColumnLookup = useGridSelector(apiRef, gridSortColumnLookupSelector);
|
|
42
56
|
const columnMenuState = useGridSelector(apiRef, gridColumnMenuSelector);
|
|
@@ -132,9 +146,9 @@ export const useGridColumnHeaders = props => {
|
|
|
132
146
|
useGridApiEventHandler(apiRef, 'columnResizeStop', handleColumnResizeStop);
|
|
133
147
|
useGridApiEventHandler(apiRef, 'columnHeaderDragStart', handleColumnReorderStart);
|
|
134
148
|
useGridApiEventHandler(apiRef, 'columnHeaderDragEnd', handleColumnReorderStop);
|
|
135
|
-
useGridApiEventHandler(apiRef, 'rowsScroll', handleScroll);
|
|
149
|
+
useGridApiEventHandler(apiRef, 'rowsScroll', handleScroll); // Helper for computation common between getColumnHeaders and getColumnGroupHeaders
|
|
136
150
|
|
|
137
|
-
const
|
|
151
|
+
const getColumnsToRender = params => {
|
|
138
152
|
const {
|
|
139
153
|
renderContext: nextRenderContext = renderContext,
|
|
140
154
|
minFirstColumn = minColumnIndex,
|
|
@@ -145,7 +159,6 @@ export const useGridColumnHeaders = props => {
|
|
|
145
159
|
return null;
|
|
146
160
|
}
|
|
147
161
|
|
|
148
|
-
const columns = [];
|
|
149
162
|
const [firstRowToRender, lastRowToRender] = getRenderableIndexes({
|
|
150
163
|
firstIndex: nextRenderContext.firstRowIndex,
|
|
151
164
|
lastIndex: nextRenderContext.lastRowIndex,
|
|
@@ -164,6 +177,27 @@ export const useGridColumnHeaders = props => {
|
|
|
164
177
|
});
|
|
165
178
|
const lastColumnToRender = Math.min(nextRenderContext.lastColumnIndex + rootProps.columnBuffer, maxLastColumn);
|
|
166
179
|
const renderedColumns = visibleColumns.slice(firstColumnToRender, lastColumnToRender);
|
|
180
|
+
return {
|
|
181
|
+
renderedColumns,
|
|
182
|
+
firstColumnToRender,
|
|
183
|
+
lastColumnToRender,
|
|
184
|
+
minFirstColumn,
|
|
185
|
+
maxLastColumn
|
|
186
|
+
};
|
|
187
|
+
};
|
|
188
|
+
|
|
189
|
+
const getColumnHeaders = (params, other = {}) => {
|
|
190
|
+
const columnsToRender = getColumnsToRender(params);
|
|
191
|
+
|
|
192
|
+
if (columnsToRender == null) {
|
|
193
|
+
return null;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
const {
|
|
197
|
+
renderedColumns,
|
|
198
|
+
firstColumnToRender
|
|
199
|
+
} = columnsToRender;
|
|
200
|
+
const columns = [];
|
|
167
201
|
|
|
168
202
|
for (let i = 0; i < renderedColumns.length; i += 1) {
|
|
169
203
|
const column = renderedColumns[i];
|
|
@@ -188,25 +222,186 @@ export const useGridColumnHeaders = props => {
|
|
|
188
222
|
}, other), column.field));
|
|
189
223
|
}
|
|
190
224
|
|
|
225
|
+
return /*#__PURE__*/_jsx(GridColumnHeaderRow, {
|
|
226
|
+
role: "row",
|
|
227
|
+
"aria-rowindex": headerGroupingMaxDepth + 1,
|
|
228
|
+
children: columns
|
|
229
|
+
});
|
|
230
|
+
};
|
|
231
|
+
|
|
232
|
+
const getParents = (path = [], depth) => path.slice(0, depth + 1);
|
|
233
|
+
|
|
234
|
+
const getColumnGroupHeaders = params => {
|
|
235
|
+
if (headerGroupingMaxDepth === 0) {
|
|
236
|
+
return null;
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
const columnsToRender = getColumnsToRender(params);
|
|
240
|
+
|
|
241
|
+
if (columnsToRender == null) {
|
|
242
|
+
return null;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
const {
|
|
246
|
+
renderedColumns,
|
|
247
|
+
firstColumnToRender,
|
|
248
|
+
lastColumnToRender,
|
|
249
|
+
maxLastColumn
|
|
250
|
+
} = columnsToRender;
|
|
251
|
+
const columns = [];
|
|
252
|
+
const headerToRender = [];
|
|
253
|
+
|
|
254
|
+
for (let depth = 0; depth < headerGroupingMaxDepth; depth += 1) {
|
|
255
|
+
var _visibleColumns$first, _visibleColumns$first2, _visibleColumns$first3;
|
|
256
|
+
|
|
257
|
+
// Initialize the header line with a grouping item containing all the columns on the left of the virtualization which are in the same group as the first group to render
|
|
258
|
+
const initialHeader = [];
|
|
259
|
+
let leftOverflow = 0;
|
|
260
|
+
let columnIndex = firstColumnToRender - 1;
|
|
261
|
+
const firstColumnToRenderGroup = (_visibleColumns$first = visibleColumns[firstColumnToRender]) == null ? void 0 : (_visibleColumns$first2 = _visibleColumns$first.groupPath) == null ? void 0 : _visibleColumns$first2[depth]; // The array of parent is used to manage empty grouping cell
|
|
262
|
+
// When two empty grouping cell are next to each other, we merge them if the belong to the same group.
|
|
263
|
+
|
|
264
|
+
const firstColumnToRenderGroupParents = getParents((_visibleColumns$first3 = visibleColumns[firstColumnToRender]) == null ? void 0 : _visibleColumns$first3.groupPath, depth);
|
|
265
|
+
|
|
266
|
+
while (firstColumnToRenderGroup !== null && columnIndex >= minColumnIndex && (_visibleColumns$colum = visibleColumns[columnIndex]) != null && _visibleColumns$colum.groupPath && isDeepEqual(getParents((_visibleColumns$colum2 = visibleColumns[columnIndex]) == null ? void 0 : _visibleColumns$colum2.groupPath, depth), firstColumnToRenderGroupParents)) {
|
|
267
|
+
var _visibleColumns$colum, _visibleColumns$colum2, _column$computedWidth;
|
|
268
|
+
|
|
269
|
+
const column = visibleColumns[columnIndex];
|
|
270
|
+
leftOverflow += (_column$computedWidth = column.computedWidth) != null ? _column$computedWidth : 0;
|
|
271
|
+
|
|
272
|
+
if (initialHeader.length === 0) {
|
|
273
|
+
var _column$computedWidth2;
|
|
274
|
+
|
|
275
|
+
initialHeader.push({
|
|
276
|
+
width: (_column$computedWidth2 = column.computedWidth) != null ? _column$computedWidth2 : 0,
|
|
277
|
+
fields: [column.field],
|
|
278
|
+
groupId: firstColumnToRenderGroup,
|
|
279
|
+
groupParents: firstColumnToRenderGroupParents,
|
|
280
|
+
colIndex: columnIndex
|
|
281
|
+
});
|
|
282
|
+
} else {
|
|
283
|
+
var _column$computedWidth3;
|
|
284
|
+
|
|
285
|
+
initialHeader[0].width += (_column$computedWidth3 = column.computedWidth) != null ? _column$computedWidth3 : 0;
|
|
286
|
+
initialHeader[0].fields.push(column.field);
|
|
287
|
+
initialHeader[0].colIndex = columnIndex;
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
columnIndex -= 1;
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
const depthInfo = renderedColumns.reduce((aggregated, column, i) => {
|
|
294
|
+
var _column$computedWidth7;
|
|
295
|
+
|
|
296
|
+
const lastItem = aggregated[aggregated.length - 1];
|
|
297
|
+
|
|
298
|
+
if (column.groupPath && column.groupPath.length > depth) {
|
|
299
|
+
var _column$computedWidth5;
|
|
300
|
+
|
|
301
|
+
if (lastItem && lastItem.groupId === column.groupPath[depth]) {
|
|
302
|
+
var _column$computedWidth4;
|
|
303
|
+
|
|
304
|
+
// Merge with the previous columns
|
|
305
|
+
return [...aggregated.slice(0, aggregated.length - 1), _extends({}, lastItem, {
|
|
306
|
+
width: lastItem.width + ((_column$computedWidth4 = column.computedWidth) != null ? _column$computedWidth4 : 0),
|
|
307
|
+
fields: [...lastItem.fields, column.field]
|
|
308
|
+
})];
|
|
309
|
+
} // Create a new grouping
|
|
310
|
+
|
|
311
|
+
|
|
312
|
+
return [...aggregated, {
|
|
313
|
+
groupId: column.groupPath[depth],
|
|
314
|
+
groupParents: getParents(column.groupPath, depth),
|
|
315
|
+
width: (_column$computedWidth5 = column.computedWidth) != null ? _column$computedWidth5 : 0,
|
|
316
|
+
fields: [column.field],
|
|
317
|
+
colIndex: firstColumnToRender + i
|
|
318
|
+
}];
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
if (MERGE_EMPTY_CELLS && lastItem && lastItem.groupId === null && isDeepEqual(getParents(column.groupPath, depth), lastItem.groupParents)) {
|
|
322
|
+
var _column$computedWidth6;
|
|
323
|
+
|
|
324
|
+
// We merge with previous column
|
|
325
|
+
return [...aggregated.slice(0, aggregated.length - 1), _extends({}, lastItem, {
|
|
326
|
+
width: lastItem.width + ((_column$computedWidth6 = column.computedWidth) != null ? _column$computedWidth6 : 0),
|
|
327
|
+
fields: [...lastItem.fields, column.field]
|
|
328
|
+
})];
|
|
329
|
+
} // We create new empty cell
|
|
330
|
+
|
|
331
|
+
|
|
332
|
+
return [...aggregated, {
|
|
333
|
+
groupId: null,
|
|
334
|
+
groupParents: getParents(column.groupPath, depth),
|
|
335
|
+
width: (_column$computedWidth7 = column.computedWidth) != null ? _column$computedWidth7 : 0,
|
|
336
|
+
fields: [column.field],
|
|
337
|
+
colIndex: firstColumnToRender + i
|
|
338
|
+
}];
|
|
339
|
+
}, initialHeader);
|
|
340
|
+
columnIndex = lastColumnToRender;
|
|
341
|
+
const lastColumnToRenderGroup = depthInfo[depthInfo.length - 1].groupId;
|
|
342
|
+
|
|
343
|
+
while (lastColumnToRenderGroup !== null && columnIndex < maxLastColumn && (_visibleColumns$colum3 = visibleColumns[columnIndex]) != null && _visibleColumns$colum3.groupPath && ((_visibleColumns$colum4 = visibleColumns[columnIndex]) == null ? void 0 : (_visibleColumns$colum5 = _visibleColumns$colum4.groupPath) == null ? void 0 : _visibleColumns$colum5[depth]) === lastColumnToRenderGroup) {
|
|
344
|
+
var _visibleColumns$colum3, _visibleColumns$colum4, _visibleColumns$colum5, _column$computedWidth8;
|
|
345
|
+
|
|
346
|
+
const column = visibleColumns[columnIndex];
|
|
347
|
+
depthInfo[depthInfo.length - 1].width += (_column$computedWidth8 = column.computedWidth) != null ? _column$computedWidth8 : 0;
|
|
348
|
+
depthInfo[depthInfo.length - 1].fields.push(column.field);
|
|
349
|
+
columnIndex += 1;
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
headerToRender.push({
|
|
353
|
+
leftOverflow,
|
|
354
|
+
elements: [...depthInfo]
|
|
355
|
+
});
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
headerToRender.forEach((depthInfo, depthIndex) => {
|
|
359
|
+
columns.push( /*#__PURE__*/_jsx(GridColumnHeaderRow, {
|
|
360
|
+
style: {
|
|
361
|
+
height: `${headerHeight}px`,
|
|
362
|
+
transform: `translateX(-${depthInfo.leftOverflow}px)`
|
|
363
|
+
},
|
|
364
|
+
role: "row",
|
|
365
|
+
"aria-rowindex": depthIndex + 1,
|
|
366
|
+
children: depthInfo.elements.map(({
|
|
367
|
+
groupId,
|
|
368
|
+
width,
|
|
369
|
+
fields,
|
|
370
|
+
colIndex
|
|
371
|
+
}, groupIndex) => {
|
|
372
|
+
return /*#__PURE__*/_jsx(GridColumnGroupHeader, {
|
|
373
|
+
groupId: groupId,
|
|
374
|
+
width: width,
|
|
375
|
+
fields: fields,
|
|
376
|
+
colIndex: colIndex,
|
|
377
|
+
depth: depthIndex,
|
|
378
|
+
isLastColumn: colIndex === visibleColumns.length - fields.length,
|
|
379
|
+
extendRowFullWidth: !rootProps.disableExtendRowFullWidth,
|
|
380
|
+
maxDepth: headerToRender.length,
|
|
381
|
+
height: headerHeight
|
|
382
|
+
}, groupIndex);
|
|
383
|
+
})
|
|
384
|
+
}, depthIndex));
|
|
385
|
+
});
|
|
191
386
|
return columns;
|
|
192
387
|
};
|
|
193
388
|
|
|
194
389
|
const rootStyle = {
|
|
195
|
-
minHeight:
|
|
196
|
-
maxHeight:
|
|
390
|
+
minHeight: totalHeaderHeight,
|
|
391
|
+
maxHeight: totalHeaderHeight,
|
|
197
392
|
lineHeight: `${headerHeight}px`
|
|
198
393
|
};
|
|
199
394
|
return {
|
|
200
395
|
renderContext,
|
|
201
|
-
|
|
396
|
+
getColumnHeaders,
|
|
397
|
+
getColumnGroupHeaders,
|
|
202
398
|
isDragging: !!dragCol,
|
|
203
399
|
getRootProps: (other = {}) => _extends({
|
|
204
400
|
style: rootStyle
|
|
205
401
|
}, other),
|
|
206
402
|
getInnerProps: () => ({
|
|
207
403
|
ref: handleInnerRef,
|
|
208
|
-
'
|
|
209
|
-
role: 'row'
|
|
404
|
+
role: 'rowgroup'
|
|
210
405
|
})
|
|
211
406
|
};
|
|
212
407
|
};
|
|
@@ -3,4 +3,6 @@ export declare const gridDensitySelector: (state: GridStateCommunity) => import(
|
|
|
3
3
|
export declare const gridDensityValueSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, import("../../..").GridDensity>;
|
|
4
4
|
export declare const gridDensityRowHeightSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, number>;
|
|
5
5
|
export declare const gridDensityHeaderHeightSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, number>;
|
|
6
|
+
export declare const gridDensityHeaderGroupingMaxDepthSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, number>;
|
|
6
7
|
export declare const gridDensityFactorSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, number>;
|
|
8
|
+
export declare const gridDensityTotalHeaderHeightSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, number>;
|
|
@@ -3,4 +3,6 @@ export const gridDensitySelector = state => state.density;
|
|
|
3
3
|
export const gridDensityValueSelector = createSelector(gridDensitySelector, density => density.value);
|
|
4
4
|
export const gridDensityRowHeightSelector = createSelector(gridDensitySelector, density => density.rowHeight);
|
|
5
5
|
export const gridDensityHeaderHeightSelector = createSelector(gridDensitySelector, density => density.headerHeight);
|
|
6
|
-
export const
|
|
6
|
+
export const gridDensityHeaderGroupingMaxDepthSelector = createSelector(gridDensitySelector, density => density.headerGroupingMaxDepth);
|
|
7
|
+
export const gridDensityFactorSelector = createSelector(gridDensitySelector, density => density.factor);
|
|
8
|
+
export const gridDensityTotalHeaderHeightSelector = createSelector(gridDensitySelector, density => density.headerHeight * (1 + density.headerGroupingMaxDepth));
|
|
@@ -4,5 +4,5 @@ import { DataGridProcessedProps } from '../../../models/props/DataGridProps';
|
|
|
4
4
|
import { GridStateInitializer } from '../../utils/useGridInitializeState';
|
|
5
5
|
export declare const COMPACT_DENSITY_FACTOR = 0.7;
|
|
6
6
|
export declare const COMFORTABLE_DENSITY_FACTOR = 1.3;
|
|
7
|
-
export declare const densityStateInitializer: GridStateInitializer<Pick<DataGridProcessedProps, 'density' | 'headerHeight' | 'rowHeight'>>;
|
|
7
|
+
export declare const densityStateInitializer: GridStateInitializer<Pick<DataGridProcessedProps, 'density' | 'headerHeight' | 'rowHeight' | 'columnGroupingModel'>>;
|
|
8
8
|
export declare const useGridDensity: (apiRef: React.MutableRefObject<GridApiCommunity>, props: Pick<DataGridProcessedProps, 'headerHeight' | 'rowHeight' | 'density'>) => void;
|
|
@@ -5,16 +5,20 @@ import { useGridLogger } from '../../utils/useGridLogger';
|
|
|
5
5
|
import { useGridApiMethod } from '../../utils/useGridApiMethod';
|
|
6
6
|
import { gridDensitySelector } from './densitySelector';
|
|
7
7
|
import { isDeepEqual } from '../../../utils/utils';
|
|
8
|
+
import { useGridSelector } from '../../utils/useGridSelector';
|
|
9
|
+
import { gridVisibleColumnDefinitionsSelector } from '../columns';
|
|
10
|
+
import { unwrapGroupingColumnModel } from '../columnGrouping/useGridColumnGrouping';
|
|
8
11
|
export const COMPACT_DENSITY_FACTOR = 0.7;
|
|
9
12
|
export const COMFORTABLE_DENSITY_FACTOR = 1.3; // TODO v6: revise keeping headerHeight and rowHeight in state
|
|
10
13
|
|
|
11
|
-
const getUpdatedDensityState = (newDensity, newHeaderHeight, newRowHeight) => {
|
|
14
|
+
const getUpdatedDensityState = (newDensity, newHeaderHeight, newRowHeight, newMaxDepth) => {
|
|
12
15
|
switch (newDensity) {
|
|
13
16
|
case GridDensityTypes.Compact:
|
|
14
17
|
return {
|
|
15
18
|
value: newDensity,
|
|
16
19
|
headerHeight: Math.floor(newHeaderHeight * COMPACT_DENSITY_FACTOR),
|
|
17
20
|
rowHeight: Math.floor(newRowHeight * COMPACT_DENSITY_FACTOR),
|
|
21
|
+
headerGroupingMaxDepth: newMaxDepth,
|
|
18
22
|
factor: COMPACT_DENSITY_FACTOR
|
|
19
23
|
};
|
|
20
24
|
|
|
@@ -23,6 +27,7 @@ const getUpdatedDensityState = (newDensity, newHeaderHeight, newRowHeight) => {
|
|
|
23
27
|
value: newDensity,
|
|
24
28
|
headerHeight: Math.floor(newHeaderHeight * COMFORTABLE_DENSITY_FACTOR),
|
|
25
29
|
rowHeight: Math.floor(newRowHeight * COMFORTABLE_DENSITY_FACTOR),
|
|
30
|
+
headerGroupingMaxDepth: newMaxDepth,
|
|
26
31
|
factor: COMFORTABLE_DENSITY_FACTOR
|
|
27
32
|
};
|
|
28
33
|
|
|
@@ -31,21 +36,52 @@ const getUpdatedDensityState = (newDensity, newHeaderHeight, newRowHeight) => {
|
|
|
31
36
|
value: newDensity,
|
|
32
37
|
headerHeight: newHeaderHeight,
|
|
33
38
|
rowHeight: newRowHeight,
|
|
39
|
+
headerGroupingMaxDepth: newMaxDepth,
|
|
34
40
|
factor: 1
|
|
35
41
|
};
|
|
36
42
|
}
|
|
37
43
|
};
|
|
38
44
|
|
|
39
|
-
export const densityStateInitializer = (state, props) =>
|
|
40
|
-
|
|
41
|
-
|
|
45
|
+
export const densityStateInitializer = (state, props) => {
|
|
46
|
+
// TODO: think about improving this initialization. Could it be done in the useColumn initializer?
|
|
47
|
+
// TODO: manage to remove ts-ignore
|
|
48
|
+
let maxDepth;
|
|
49
|
+
|
|
50
|
+
if (props.columnGroupingModel == null || Object.keys(props.columnGroupingModel).length === 0) {
|
|
51
|
+
maxDepth = 0;
|
|
52
|
+
} else {
|
|
53
|
+
const unwrappedGroupingColumnModel = unwrapGroupingColumnModel(props.columnGroupingModel);
|
|
54
|
+
const columnsState = state.columns;
|
|
55
|
+
const visibleColumns = columnsState.all.filter(field => columnsState.columnVisibilityModel[field] !== false);
|
|
56
|
+
|
|
57
|
+
if (visibleColumns.length === 0) {
|
|
58
|
+
maxDepth = 0;
|
|
59
|
+
} else {
|
|
60
|
+
maxDepth = Math.max(...visibleColumns.map(field => {
|
|
61
|
+
var _unwrappedGroupingCol, _unwrappedGroupingCol2;
|
|
62
|
+
|
|
63
|
+
return (_unwrappedGroupingCol = (_unwrappedGroupingCol2 = unwrappedGroupingColumnModel[field]) == null ? void 0 : _unwrappedGroupingCol2.length) != null ? _unwrappedGroupingCol : 0;
|
|
64
|
+
}));
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
return _extends({}, state, {
|
|
69
|
+
density: getUpdatedDensityState(props.density, props.headerHeight, props.rowHeight, maxDepth)
|
|
70
|
+
});
|
|
71
|
+
};
|
|
42
72
|
export const useGridDensity = (apiRef, props) => {
|
|
73
|
+
const visibleColumns = useGridSelector(apiRef, gridVisibleColumnDefinitionsSelector);
|
|
74
|
+
const maxDepth = visibleColumns.length > 0 ? Math.max(...visibleColumns.map(column => {
|
|
75
|
+
var _column$groupPath$len, _column$groupPath;
|
|
76
|
+
|
|
77
|
+
return (_column$groupPath$len = (_column$groupPath = column.groupPath) == null ? void 0 : _column$groupPath.length) != null ? _column$groupPath$len : 0;
|
|
78
|
+
})) : 0;
|
|
43
79
|
const logger = useGridLogger(apiRef, 'useDensity');
|
|
44
|
-
const setDensity = React.useCallback((newDensity, newHeaderHeight = props.headerHeight, newRowHeight = props.rowHeight) => {
|
|
80
|
+
const setDensity = React.useCallback((newDensity, newHeaderHeight = props.headerHeight, newRowHeight = props.rowHeight, newMaxDepth = maxDepth) => {
|
|
45
81
|
logger.debug(`Set grid density to ${newDensity}`);
|
|
46
82
|
apiRef.current.setState(state => {
|
|
47
83
|
const currentDensityState = gridDensitySelector(state);
|
|
48
|
-
const newDensityState = getUpdatedDensityState(newDensity, newHeaderHeight, newRowHeight);
|
|
84
|
+
const newDensityState = getUpdatedDensityState(newDensity, newHeaderHeight, newRowHeight, newMaxDepth);
|
|
49
85
|
|
|
50
86
|
if (isDeepEqual(currentDensityState, newDensityState)) {
|
|
51
87
|
return state;
|
|
@@ -56,10 +92,10 @@ export const useGridDensity = (apiRef, props) => {
|
|
|
56
92
|
});
|
|
57
93
|
});
|
|
58
94
|
apiRef.current.forceUpdate();
|
|
59
|
-
}, [logger, apiRef, props.headerHeight, props.rowHeight]);
|
|
95
|
+
}, [logger, apiRef, props.headerHeight, props.rowHeight, maxDepth]);
|
|
60
96
|
React.useEffect(() => {
|
|
61
|
-
apiRef.current.setDensity(props.density, props.headerHeight, props.rowHeight);
|
|
62
|
-
}, [apiRef, props.density, props.rowHeight, props.headerHeight]);
|
|
97
|
+
apiRef.current.setDensity(props.density, props.headerHeight, props.rowHeight, maxDepth);
|
|
98
|
+
}, [apiRef, props.density, props.rowHeight, props.headerHeight, maxDepth]);
|
|
63
99
|
const densityApi = {
|
|
64
100
|
setDensity
|
|
65
101
|
};
|
|
@@ -4,7 +4,7 @@ import { useGridApiEventHandler, useGridApiOptionHandler } from '../../utils/use
|
|
|
4
4
|
import { useGridApiMethod } from '../../utils/useGridApiMethod';
|
|
5
5
|
import { useGridLogger } from '../../utils/useGridLogger';
|
|
6
6
|
import { gridColumnsTotalWidthSelector } from '../columns';
|
|
7
|
-
import {
|
|
7
|
+
import { gridDensityTotalHeaderHeightSelector, gridDensityRowHeightSelector } from '../density';
|
|
8
8
|
import { useGridSelector } from '../../utils';
|
|
9
9
|
import { getVisibleRows } from '../../utils/useGridVisibleRows';
|
|
10
10
|
import { gridRowsMetaSelector } from '../rows/gridRowsMetaSelector';
|
|
@@ -42,7 +42,7 @@ export function useGridDimensions(apiRef, props) {
|
|
|
42
42
|
const rootDimensionsRef = React.useRef(null);
|
|
43
43
|
const fullDimensionsRef = React.useRef(null);
|
|
44
44
|
const rowsMeta = useGridSelector(apiRef, gridRowsMetaSelector);
|
|
45
|
-
const
|
|
45
|
+
const totalHeaderHeight = useGridSelector(apiRef, gridDensityTotalHeaderHeightSelector);
|
|
46
46
|
const updateGridDimensionsRef = React.useCallback(() => {
|
|
47
47
|
var _apiRef$current$rootE;
|
|
48
48
|
|
|
@@ -87,7 +87,7 @@ export function useGridDimensions(apiRef, props) {
|
|
|
87
87
|
} else {
|
|
88
88
|
viewportOuterSize = {
|
|
89
89
|
width: rootDimensionsRef.current.width,
|
|
90
|
-
height: rootDimensionsRef.current.height -
|
|
90
|
+
height: rootDimensionsRef.current.height - totalHeaderHeight
|
|
91
91
|
};
|
|
92
92
|
const scrollInformation = hasScroll({
|
|
93
93
|
content: {
|
|
@@ -121,7 +121,7 @@ export function useGridDimensions(apiRef, props) {
|
|
|
121
121
|
if (newFullDimensions.viewportInnerSize.width !== (prevDimensions == null ? void 0 : prevDimensions.viewportInnerSize.width) || newFullDimensions.viewportInnerSize.height !== (prevDimensions == null ? void 0 : prevDimensions.viewportInnerSize.height)) {
|
|
122
122
|
apiRef.current.publishEvent('viewportInnerSizeChange', newFullDimensions.viewportInnerSize);
|
|
123
123
|
}
|
|
124
|
-
}, [apiRef, props.scrollbarSize, props.autoHeight,
|
|
124
|
+
}, [apiRef, props.scrollbarSize, props.autoHeight, totalHeaderHeight, rowsMeta.currentPageTotalHeight]);
|
|
125
125
|
const resize = React.useCallback(() => {
|
|
126
126
|
updateGridDimensionsRef();
|
|
127
127
|
apiRef.current.publishEvent('debouncedResize', rootDimensionsRef.current);
|
|
@@ -4,7 +4,7 @@ import { ownerDocument } from '@mui/material/utils';
|
|
|
4
4
|
import { useGridLogger } from '../../utils/useGridLogger';
|
|
5
5
|
import { gridVisibleRowCountSelector } from '../filter/gridFilterSelector';
|
|
6
6
|
import { gridColumnDefinitionsSelector, gridColumnVisibilityModelSelector } from '../columns/gridColumnsSelector';
|
|
7
|
-
import {
|
|
7
|
+
import { gridDensityTotalHeaderHeightSelector } from '../density/densitySelector';
|
|
8
8
|
import { gridClasses } from '../../../constants/gridClasses';
|
|
9
9
|
import { useGridApiMethod } from '../../utils/useGridApiMethod';
|
|
10
10
|
import { gridRowsMetaSelector } from '../rows/gridRowsMetaSelector';
|
|
@@ -79,7 +79,7 @@ export const useGridPrintExport = (apiRef, props) => {
|
|
|
79
79
|
return;
|
|
80
80
|
}
|
|
81
81
|
|
|
82
|
-
const
|
|
82
|
+
const totalHeaderHeight = gridDensityTotalHeaderHeightSelector(apiRef);
|
|
83
83
|
const rowsMeta = gridRowsMetaSelector(apiRef.current.state);
|
|
84
84
|
const gridRootElement = apiRef.current.rootElementRef.current;
|
|
85
85
|
const gridClone = gridRootElement.cloneNode(true);
|
|
@@ -113,7 +113,7 @@ export const useGridPrintExport = (apiRef, props) => {
|
|
|
113
113
|
} // Expand container height to accommodate all rows
|
|
114
114
|
|
|
115
115
|
|
|
116
|
-
gridClone.style.height = `${rowsMeta.currentPageTotalHeight +
|
|
116
|
+
gridClone.style.height = `${rowsMeta.currentPageTotalHeight + totalHeaderHeight + gridToolbarElementHeight + gridFooterElementHeight}px`; // Remove all loaded elements from the current host
|
|
117
117
|
|
|
118
118
|
printDoc.body.innerHTML = '';
|
|
119
119
|
printDoc.body.appendChild(gridClone);
|
|
@@ -36,7 +36,7 @@ export declare const gridFilteredDescendantCountLookupSelector: import("../../..
|
|
|
36
36
|
*/
|
|
37
37
|
export declare const gridVisibleSortedRowEntriesSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, {
|
|
38
38
|
id: import("../../..").GridRowId;
|
|
39
|
-
model:
|
|
39
|
+
model: import("../../..").GridValidRowModel;
|
|
40
40
|
}[]>;
|
|
41
41
|
/**
|
|
42
42
|
* Get the id of the rows accessible after the filtering process.
|
|
@@ -51,7 +51,7 @@ export declare const gridVisibleSortedRowIdsSelector: import("../../../utils/cre
|
|
|
51
51
|
*/
|
|
52
52
|
export declare const gridFilteredSortedRowEntriesSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, {
|
|
53
53
|
id: import("../../..").GridRowId;
|
|
54
|
-
model:
|
|
54
|
+
model: import("../../..").GridValidRowModel;
|
|
55
55
|
}[]>;
|
|
56
56
|
/**
|
|
57
57
|
* Get the id of the rows accessible after the filtering process.
|
|
@@ -72,7 +72,7 @@ export declare const gridVisibleRowsSelector: import("../../../utils/createSelec
|
|
|
72
72
|
*/
|
|
73
73
|
export declare const gridVisibleSortedTopLevelRowEntriesSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, {
|
|
74
74
|
id: import("../../..").GridRowId;
|
|
75
|
-
model:
|
|
75
|
+
model: import("../../..").GridValidRowModel;
|
|
76
76
|
}[]>;
|
|
77
77
|
/**
|
|
78
78
|
* Get the amount of rows accessible after the filtering process.
|
package/hooks/features/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// Only export the variable and types that should be publicly exposed and re-exported from `@mui/x-data-grid-pro`
|
|
2
2
|
export * from './columnMenu';
|
|
3
3
|
export * from './columns';
|
|
4
|
+
export * from './columnGrouping';
|
|
4
5
|
export * from './density';
|
|
5
6
|
export * from './editRows';
|
|
6
7
|
export * from './filter';
|
|
@@ -33,7 +33,7 @@ export declare const gridPaginationRowRangeSelector: import("../../../utils/crea
|
|
|
33
33
|
*/
|
|
34
34
|
export declare const gridPaginatedVisibleSortedGridRowEntriesSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, {
|
|
35
35
|
id: import("../../..").GridRowId;
|
|
36
|
-
model:
|
|
36
|
+
model: import("../../..").GridValidRowModel;
|
|
37
37
|
}[]>;
|
|
38
38
|
/**
|
|
39
39
|
* Get the id of each row to include in the current page if the pagination is enabled.
|
|
@@ -3,7 +3,7 @@ export declare const gridRowsStateSelector: (state: GridStateCommunity) => impor
|
|
|
3
3
|
export declare const gridRowCountSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, number>;
|
|
4
4
|
export declare const gridRowsLoadingSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, boolean | undefined>;
|
|
5
5
|
export declare const gridTopLevelRowCountSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, number>;
|
|
6
|
-
export declare const gridRowsLookupSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, import("../../..").GridRowsLookup<
|
|
6
|
+
export declare const gridRowsLookupSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, import("../../..").GridRowsLookup<import("../../..").GridValidRowModel>>;
|
|
7
7
|
export declare const gridRowsIdToIdLookupSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, Record<string, import("../../..").GridRowId>>;
|
|
8
8
|
export declare const gridRowTreeSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, import("../../..").GridRowTreeConfig>;
|
|
9
9
|
export declare const gridRowGroupingNameSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, string>;
|
|
@@ -2,5 +2,5 @@ import { GridStateCommunity } from '../../../models/gridStateCommunity';
|
|
|
2
2
|
import { GridRowId } from '../../../models/gridRows';
|
|
3
3
|
export declare const gridSelectionStateSelector: (state: GridStateCommunity) => import("../../..").GridSelectionModel;
|
|
4
4
|
export declare const selectedGridRowsCountSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, number>;
|
|
5
|
-
export declare const selectedGridRowsSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, Map<GridRowId,
|
|
5
|
+
export declare const selectedGridRowsSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, Map<GridRowId, import("../../../models/gridRows").GridValidRowModel>>;
|
|
6
6
|
export declare const selectedIdsLookupSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, Record<GridRowId, GridRowId>>;
|
|
@@ -16,7 +16,7 @@ export declare const gridSortedRowIdsSelector: import("../../../utils/createSele
|
|
|
16
16
|
*/
|
|
17
17
|
export declare const gridSortedRowEntriesSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, {
|
|
18
18
|
id: import("../../..").GridRowId;
|
|
19
|
-
model:
|
|
19
|
+
model: import("../../..").GridValidRowModel;
|
|
20
20
|
}[]>;
|
|
21
21
|
/**
|
|
22
22
|
* Get the current sorting model.
|
|
@@ -29,7 +29,7 @@ export declare const useGridVirtualScroller: (props: UseGridVirtualScrollerProps
|
|
|
29
29
|
maxLastColumn?: number | undefined;
|
|
30
30
|
availableSpace?: number | null | undefined;
|
|
31
31
|
ignoreAutoHeight?: boolean | undefined;
|
|
32
|
-
rows?: GridRowEntry<
|
|
32
|
+
rows?: GridRowEntry<import("../../../models").GridValidRowModel>[] | undefined;
|
|
33
33
|
rowIndexOffset?: number | undefined;
|
|
34
34
|
}) => JSX.Element[] | null;
|
|
35
35
|
getRootProps: ({ style, ...other }?: {
|
|
@@ -2,7 +2,7 @@ import * as React from 'react';
|
|
|
2
2
|
import { DataGridProcessedProps } from '../../models/props/DataGridProps';
|
|
3
3
|
import type { GridApiCommon, GridRowEntry } from '../../models';
|
|
4
4
|
export declare const getVisibleRows: <Api extends GridApiCommon>(apiRef: React.MutableRefObject<Api>, props: Pick<DataGridProcessedProps, 'pagination' | 'paginationMode'>) => {
|
|
5
|
-
rows: GridRowEntry<
|
|
5
|
+
rows: GridRowEntry<import("../../models").GridValidRowModel>[];
|
|
6
6
|
range: {
|
|
7
7
|
firstRowIndex: number;
|
|
8
8
|
lastRowIndex: number;
|
|
@@ -16,7 +16,7 @@ export declare const getVisibleRows: <Api extends GridApiCommon>(apiRef: React.M
|
|
|
16
16
|
* - If the row tree is flat, it only contains up to `state.pageSize` rows.
|
|
17
17
|
*/
|
|
18
18
|
export declare const useGridVisibleRows: <Api extends GridApiCommon>(apiRef: React.MutableRefObject<Api>, props: Pick<DataGridProcessedProps, 'pagination' | 'paginationMode'>) => {
|
|
19
|
-
rows: GridRowEntry<
|
|
19
|
+
rows: GridRowEntry<import("../../models").GridValidRowModel>[];
|
|
20
20
|
range: {
|
|
21
21
|
firstRowIndex: number;
|
|
22
22
|
lastRowIndex: number;
|
package/index.js
CHANGED
package/internals/index.d.ts
CHANGED
|
@@ -13,6 +13,8 @@ export { useGridColumnHeaders } from '../hooks/features/columnHeaders/useGridCol
|
|
|
13
13
|
export { useGridColumnMenu, columnMenuStateInitializer, } from '../hooks/features/columnMenu/useGridColumnMenu';
|
|
14
14
|
export { useGridColumns, columnsStateInitializer } from '../hooks/features/columns/useGridColumns';
|
|
15
15
|
export { useGridColumnSpanning } from '../hooks/features/columns/useGridColumnSpanning';
|
|
16
|
+
export { useGridColumnGrouping, columnGroupsStateInitializer, } from '../hooks/features/columnGrouping/useGridColumnGrouping';
|
|
17
|
+
export { useGridColumnGroupingPreProcessors } from '../hooks/features/columnGrouping/useGridColumnGroupingPreProcessors';
|
|
16
18
|
export type { GridColumnRawLookup, GridColumnsRawState, GridHydrateColumnsValue, } from '../hooks/features/columns/gridColumnsInterfaces';
|
|
17
19
|
export { useGridDensity, densityStateInitializer } from '../hooks/features/density/useGridDensity';
|
|
18
20
|
export { useGridCsvExport } from '../hooks/features/export/useGridCsvExport';
|
package/internals/index.js
CHANGED
|
@@ -11,6 +11,8 @@ export { useGridColumnHeaders } from '../hooks/features/columnHeaders/useGridCol
|
|
|
11
11
|
export { useGridColumnMenu, columnMenuStateInitializer } from '../hooks/features/columnMenu/useGridColumnMenu';
|
|
12
12
|
export { useGridColumns, columnsStateInitializer } from '../hooks/features/columns/useGridColumns';
|
|
13
13
|
export { useGridColumnSpanning } from '../hooks/features/columns/useGridColumnSpanning';
|
|
14
|
+
export { useGridColumnGrouping, columnGroupsStateInitializer } from '../hooks/features/columnGrouping/useGridColumnGrouping';
|
|
15
|
+
export { useGridColumnGroupingPreProcessors } from '../hooks/features/columnGrouping/useGridColumnGroupingPreProcessors';
|
|
14
16
|
export { useGridDensity, densityStateInitializer } from '../hooks/features/density/useGridDensity';
|
|
15
17
|
export { useGridCsvExport } from '../hooks/features/export/useGridCsvExport';
|
|
16
18
|
export { useGridPrintExport } from '../hooks/features/export/useGridPrintExport';
|
|
@@ -79,6 +79,7 @@ DataGridRaw.propTypes = {
|
|
|
79
79
|
* @default 3
|
|
80
80
|
*/
|
|
81
81
|
columnBuffer: PropTypes.number,
|
|
82
|
+
columnGroupingModel: PropTypes.arrayOf(PropTypes.object),
|
|
82
83
|
|
|
83
84
|
/**
|
|
84
85
|
* Set of columns of type [[GridColumns]].
|
|
@@ -196,6 +197,7 @@ DataGridRaw.propTypes = {
|
|
|
196
197
|
* For each feature, if the flag is not explicitly set to `true`, the feature will be fully disabled and any property / method call will not have any effect.
|
|
197
198
|
*/
|
|
198
199
|
experimentalFeatures: PropTypes.shape({
|
|
200
|
+
columnGrouping: PropTypes.bool,
|
|
199
201
|
newEditingApi: PropTypes.bool,
|
|
200
202
|
preventCommitWhileValidating: PropTypes.bool,
|
|
201
203
|
warnIfFocusStateIsNotSynced: PropTypes.bool
|