@mui/x-data-grid 5.15.2 → 5.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +177 -2
- package/DataGrid/DataGrid.js +3 -1
- package/DataGrid/useDataGridComponent.js +5 -0
- package/README.md +2 -1
- package/components/DataGridColumnHeaders.js +4 -3
- package/components/ErrorBoundary.d.ts +1 -0
- package/components/GridAutoSizer.js +7 -0
- package/components/GridRow.d.ts +2 -1
- package/components/GridRow.js +136 -85
- package/components/base/GridBody.js +8 -5
- package/components/base/GridOverlays.js +4 -7
- package/components/cell/GridActionsCellItem.d.ts +2 -2
- package/components/cell/GridBooleanCell.js +2 -1
- package/components/cell/GridEditBooleanCell.js +2 -1
- package/components/cell/GridEditDateCell.js +3 -2
- package/components/cell/GridEditInputCell.js +2 -1
- package/components/cell/GridEditSingleSelectCell.js +11 -2
- package/components/cell/GridSkeletonCell.d.ts +12 -0
- package/components/cell/GridSkeletonCell.js +60 -0
- package/components/cell/index.d.ts +1 -0
- package/components/cell/index.js +2 -1
- 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/columnSelection/GridCellCheckboxRenderer.js +2 -1
- package/components/containers/GridOverlay.js +7 -1
- package/components/containers/GridRoot.js +3 -3
- package/components/containers/GridRootStyles.js +16 -2
- package/components/menu/GridMenu.d.ts +3 -2
- package/components/menu/GridMenu.js +1 -0
- package/components/menu/columnMenu/GridColumnHeaderMenu.d.ts +1 -1
- package/components/panel/GridColumnsPanel.d.ts +6 -1
- package/components/panel/GridColumnsPanel.js +38 -6
- package/components/panel/GridPanel.d.ts +1 -1
- package/components/panel/GridPanel.js +1 -0
- package/components/panel/filterPanel/GridFilterForm.d.ts +4 -0
- package/components/panel/filterPanel/GridFilterForm.js +5 -0
- package/components/panel/filterPanel/GridFilterInputMultipleValue.d.ts +1 -1
- package/components/panel/filterPanel/GridFilterPanel.d.ts +4 -0
- package/components/panel/filterPanel/GridFilterPanel.js +5 -0
- package/components/toolbar/GridToolbarColumnsButton.d.ts +1 -1
- package/components/toolbar/GridToolbarDensitySelector.d.ts +1 -1
- package/components/toolbar/GridToolbarExportContainer.d.ts +1 -1
- package/constants/defaultGridSlotsComponents.js +2 -1
- package/constants/gridClasses.d.ts +24 -0
- package/constants/gridClasses.js +1 -1
- package/hooks/core/pipeProcessing/gridPipeProcessingApi.d.ts +5 -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/filter/gridFilterUtils.d.ts +1 -1
- package/hooks/features/filter/gridFilterUtils.js +55 -54
- package/hooks/features/filter/useGridFilter.js +1 -1
- 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/rows/useGridParamsApi.js +1 -1
- package/hooks/features/rows/useGridRows.js +65 -8
- package/hooks/features/rows/useGridRowsMeta.js +36 -16
- 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 +2 -2
- package/hooks/features/virtualization/useGridVirtualScroller.js +17 -5
- package/hooks/utils/useGridNativeEventListener.d.ts +1 -1
- package/hooks/utils/useGridNativeEventListener.js +2 -2
- 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 +3 -1
- package/legacy/DataGrid/useDataGridComponent.js +5 -0
- package/legacy/components/DataGridColumnHeaders.js +4 -3
- package/legacy/components/GridAutoSizer.js +7 -0
- package/legacy/components/GridRow.js +138 -85
- package/legacy/components/base/GridBody.js +8 -5
- package/legacy/components/base/GridOverlays.js +4 -7
- package/legacy/components/cell/GridBooleanCell.js +2 -1
- package/legacy/components/cell/GridEditBooleanCell.js +2 -1
- package/legacy/components/cell/GridEditDateCell.js +3 -2
- package/legacy/components/cell/GridEditInputCell.js +2 -1
- package/legacy/components/cell/GridEditSingleSelectCell.js +11 -2
- package/legacy/components/cell/GridSkeletonCell.js +57 -0
- package/legacy/components/cell/index.js +2 -1
- 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/columnSelection/GridCellCheckboxRenderer.js +2 -1
- package/legacy/components/containers/GridOverlay.js +7 -1
- package/legacy/components/containers/GridRoot.js +3 -3
- package/legacy/components/containers/GridRootStyles.js +14 -5
- package/legacy/components/menu/GridMenu.js +1 -0
- package/legacy/components/panel/GridColumnsPanel.js +41 -6
- package/legacy/components/panel/GridPanel.js +1 -0
- package/legacy/components/panel/filterPanel/GridFilterForm.js +5 -0
- package/legacy/components/panel/filterPanel/GridFilterPanel.js +5 -0
- package/legacy/constants/defaultGridSlotsComponents.js +2 -1
- 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/filter/gridFilterUtils.js +61 -56
- package/legacy/hooks/features/filter/useGridFilter.js +1 -1
- package/legacy/hooks/features/index.js +1 -0
- package/legacy/hooks/features/rows/useGridParamsApi.js +1 -1
- package/legacy/hooks/features/rows/useGridRows.js +73 -8
- package/legacy/hooks/features/rows/useGridRowsMeta.js +45 -18
- package/legacy/hooks/features/virtualization/useGridVirtualScroller.js +31 -13
- package/legacy/hooks/utils/useGridNativeEventListener.js +2 -2
- package/legacy/index.js +1 -1
- package/legacy/internals/index.js +2 -0
- package/legacy/models/api/gridColumnGroupingApi.js +1 -0
- package/legacy/models/events/gridEvents.js +2 -0
- package/legacy/models/gridColumnGrouping.js +6 -0
- package/legacy/models/index.js +2 -1
- package/legacy/models/params/gridRenderedRowsIntervalChangeParams.js +1 -0
- package/legacy/models/params/index.js +2 -1
- package/legacy/utils/utils.js +18 -0
- 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/api/gridParamsApi.d.ts +1 -1
- package/models/api/gridRowApi.d.ts +6 -0
- package/models/api/gridRowsMetaApi.d.ts +6 -1
- package/models/colDef/gridColDef.d.ts +15 -1
- package/models/events/gridEventLookup.d.ts +7 -1
- package/models/events/gridEvents.d.ts +3 -1
- package/models/events/gridEvents.js +2 -0
- package/models/gridColumnGrouping.d.ts +67 -0
- package/models/gridColumnGrouping.js +6 -0
- package/models/gridRows.d.ts +5 -5
- package/models/gridSlotsComponent.d.ts +5 -0
- package/models/gridStateCommunity.d.ts +2 -1
- package/models/index.d.ts +1 -0
- package/models/index.js +2 -1
- package/models/params/gridCellParams.d.ts +7 -2
- package/models/params/gridMenuParams.d.ts +1 -2
- package/models/params/gridRenderedRowsIntervalChangeParams.d.ts +10 -0
- package/models/params/gridRenderedRowsIntervalChangeParams.js +1 -0
- package/models/params/index.d.ts +1 -0
- package/models/params/index.js +2 -1
- package/models/props/DataGridProps.d.ts +7 -1
- package/modern/DataGrid/DataGrid.js +3 -1
- package/modern/DataGrid/useDataGridComponent.js +5 -0
- package/modern/components/DataGridColumnHeaders.js +4 -3
- package/modern/components/GridAutoSizer.js +7 -0
- package/modern/components/GridRow.js +133 -84
- package/modern/components/base/GridBody.js +8 -5
- package/modern/components/base/GridOverlays.js +4 -7
- package/modern/components/cell/GridBooleanCell.js +2 -1
- package/modern/components/cell/GridEditBooleanCell.js +2 -1
- package/modern/components/cell/GridEditDateCell.js +3 -2
- package/modern/components/cell/GridEditInputCell.js +2 -1
- package/modern/components/cell/GridEditSingleSelectCell.js +11 -2
- package/modern/components/cell/GridSkeletonCell.js +60 -0
- package/modern/components/cell/index.js +2 -1
- 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/columnSelection/GridCellCheckboxRenderer.js +2 -1
- package/modern/components/containers/GridOverlay.js +7 -1
- package/modern/components/containers/GridRoot.js +3 -3
- package/modern/components/containers/GridRootStyles.js +16 -2
- package/modern/components/menu/GridMenu.js +1 -0
- package/modern/components/panel/GridColumnsPanel.js +38 -6
- package/modern/components/panel/GridPanel.js +1 -0
- package/modern/components/panel/filterPanel/GridFilterForm.js +5 -0
- package/modern/components/panel/filterPanel/GridFilterPanel.js +5 -0
- package/modern/constants/defaultGridSlotsComponents.js +2 -1
- 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/filter/gridFilterUtils.js +54 -53
- package/modern/hooks/features/filter/useGridFilter.js +1 -1
- package/modern/hooks/features/index.js +1 -0
- package/modern/hooks/features/rows/useGridParamsApi.js +1 -1
- package/modern/hooks/features/rows/useGridRows.js +65 -8
- package/modern/hooks/features/rows/useGridRowsMeta.js +36 -16
- package/modern/hooks/features/virtualization/useGridVirtualScroller.js +17 -5
- package/modern/hooks/utils/useGridNativeEventListener.js +2 -2
- package/modern/index.js +1 -1
- package/modern/internals/index.js +2 -0
- package/modern/models/api/gridColumnGroupingApi.js +1 -0
- package/modern/models/events/gridEvents.js +2 -0
- package/modern/models/gridColumnGrouping.js +6 -0
- package/modern/models/index.js +2 -1
- package/modern/models/params/gridRenderedRowsIntervalChangeParams.js +1 -0
- package/modern/models/params/index.js +2 -1
- package/modern/utils/utils.js +16 -0
- package/node/DataGrid/DataGrid.js +3 -1
- package/node/DataGrid/useDataGridComponent.js +7 -0
- package/node/components/DataGridColumnHeaders.js +4 -3
- package/node/components/GridAutoSizer.js +7 -0
- package/node/components/GridRow.js +136 -77
- package/node/components/base/GridBody.js +7 -4
- package/node/components/base/GridOverlays.js +3 -6
- package/node/components/cell/GridBooleanCell.js +2 -1
- package/node/components/cell/GridEditBooleanCell.js +2 -1
- package/node/components/cell/GridEditDateCell.js +3 -2
- package/node/components/cell/GridEditInputCell.js +2 -1
- package/node/components/cell/GridEditSingleSelectCell.js +11 -2
- package/node/components/cell/GridSkeletonCell.js +81 -0
- package/node/components/cell/index.js +13 -0
- 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/columnSelection/GridCellCheckboxRenderer.js +2 -1
- package/node/components/containers/GridOverlay.js +7 -1
- package/node/components/containers/GridRoot.js +4 -4
- package/node/components/containers/GridRootStyles.js +16 -2
- package/node/components/menu/GridMenu.js +1 -0
- package/node/components/panel/GridColumnsPanel.js +36 -5
- package/node/components/panel/GridPanel.js +1 -0
- package/node/components/panel/filterPanel/GridFilterForm.js +5 -0
- package/node/components/panel/filterPanel/GridFilterPanel.js +5 -0
- package/node/constants/defaultGridSlotsComponents.js +1 -0
- 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/filter/gridFilterUtils.js +55 -55
- package/node/hooks/features/filter/useGridFilter.js +1 -1
- package/node/hooks/features/index.js +13 -0
- package/node/hooks/features/rows/useGridParamsApi.js +1 -1
- package/node/hooks/features/rows/useGridRows.js +60 -7
- package/node/hooks/features/rows/useGridRowsMeta.js +35 -15
- package/node/hooks/features/virtualization/useGridVirtualScroller.js +17 -5
- package/node/hooks/utils/useGridNativeEventListener.js +2 -2
- package/node/index.js +1 -1
- package/node/internals/index.js +22 -0
- package/node/models/api/gridColumnGroupingApi.js +5 -0
- package/node/models/events/gridEvents.js +2 -0
- package/node/models/gridColumnGrouping.js +13 -0
- package/node/models/index.js +13 -0
- package/node/models/params/gridRenderedRowsIntervalChangeParams.js +5 -0
- package/node/models/params/index.js +13 -0
- package/node/utils/utils.js +18 -0
- package/package.json +3 -3
- package/utils/utils.d.ts +1 -0
- package/utils/utils.js +16 -0
|
@@ -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.
|
|
@@ -29,5 +29,5 @@ export declare const buildAggregatedFilterItemsApplier: (filterModel: GridFilter
|
|
|
29
29
|
*/
|
|
30
30
|
export declare const buildAggregatedQuickFilterApplier: (filterModel: GridFilterModel, apiRef: React.MutableRefObject<GridApiCommunity>) => GridFilterItemApplierNotAggregated | null;
|
|
31
31
|
export declare const buildAggregatedFilterApplier: (filterModel: GridFilterModel, apiRef: React.MutableRefObject<GridApiCommunity>) => GridAggregatedFilterItemApplier;
|
|
32
|
-
export declare const passFilterLogic: (allFilterItemResults: (null | GridFilterItemResult)[], allQuickFilterResults: (null | GridQuickFilterValueResult)[], filterModel: GridFilterModel) => boolean;
|
|
32
|
+
export declare const passFilterLogic: (allFilterItemResults: (null | GridFilterItemResult)[], allQuickFilterResults: (null | GridQuickFilterValueResult)[], filterModel: GridFilterModel, apiRef: React.MutableRefObject<GridApiCommunity>) => boolean;
|
|
33
33
|
export {};
|