@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
|
@@ -15,6 +15,8 @@ var ReactDOM = _interopRequireWildcard(require("react-dom"));
|
|
|
15
15
|
|
|
16
16
|
var _utils = require("@mui/material/utils");
|
|
17
17
|
|
|
18
|
+
var _styles = require("@mui/material/styles");
|
|
19
|
+
|
|
18
20
|
var _reselect = require("reselect");
|
|
19
21
|
|
|
20
22
|
var _useGridApiContext = require("../../utils/useGridApiContext");
|
|
@@ -45,12 +47,26 @@ var _useGridVisibleRows = require("../../utils/useGridVisibleRows");
|
|
|
45
47
|
|
|
46
48
|
var _useGridVirtualScroller = require("../virtualization/useGridVirtualScroller");
|
|
47
49
|
|
|
50
|
+
var _GridColumnGroupHeader = require("../../../components/columnHeaders/GridColumnGroupHeader");
|
|
51
|
+
|
|
52
|
+
var _utils2 = require("../../../utils/utils");
|
|
53
|
+
|
|
48
54
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
49
55
|
|
|
50
56
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
51
57
|
|
|
52
58
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
53
59
|
|
|
60
|
+
// TODO: add the possibility to switch this value if needed for customization
|
|
61
|
+
const MERGE_EMPTY_CELLS = true;
|
|
62
|
+
const GridColumnHeaderRow = (0, _styles.styled)('div', {
|
|
63
|
+
name: 'MuiDataGrid',
|
|
64
|
+
slot: 'ColumnHeaderRow',
|
|
65
|
+
overridesResolver: (props, styles) => styles.columnHeaderRow
|
|
66
|
+
})(() => ({
|
|
67
|
+
display: 'flex'
|
|
68
|
+
}));
|
|
69
|
+
|
|
54
70
|
function isUIEvent(event) {
|
|
55
71
|
return !!event.target;
|
|
56
72
|
}
|
|
@@ -69,6 +85,8 @@ const useGridColumnHeaders = props => {
|
|
|
69
85
|
const cellTabIndexState = (0, _useGridSelector.useGridSelector)(apiRef, _gridFocusStateSelector.gridTabIndexCellSelector);
|
|
70
86
|
const columnHeaderFocus = (0, _useGridSelector.useGridSelector)(apiRef, _gridFocusStateSelector.gridFocusColumnHeaderSelector);
|
|
71
87
|
const headerHeight = (0, _useGridSelector.useGridSelector)(apiRef, _densitySelector.gridDensityHeaderHeightSelector);
|
|
88
|
+
const headerGroupingMaxDepth = (0, _useGridSelector.useGridSelector)(apiRef, _densitySelector.gridDensityHeaderGroupingMaxDepthSelector);
|
|
89
|
+
const totalHeaderHeight = (0, _useGridSelector.useGridSelector)(apiRef, _densitySelector.gridDensityTotalHeaderHeightSelector);
|
|
72
90
|
const filterColumnLookup = (0, _useGridSelector.useGridSelector)(apiRef, _gridFilterSelector.gridFilterActiveItemsLookupSelector);
|
|
73
91
|
const sortColumnLookup = (0, _useGridSelector.useGridSelector)(apiRef, _gridSortingSelector.gridSortColumnLookupSelector);
|
|
74
92
|
const columnMenuState = (0, _useGridSelector.useGridSelector)(apiRef, _columnMenuSelector.gridColumnMenuSelector);
|
|
@@ -164,9 +182,9 @@ const useGridColumnHeaders = props => {
|
|
|
164
182
|
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'columnResizeStop', handleColumnResizeStop);
|
|
165
183
|
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'columnHeaderDragStart', handleColumnReorderStart);
|
|
166
184
|
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'columnHeaderDragEnd', handleColumnReorderStop);
|
|
167
|
-
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'rowsScroll', handleScroll);
|
|
185
|
+
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'rowsScroll', handleScroll); // Helper for computation common between getColumnHeaders and getColumnGroupHeaders
|
|
168
186
|
|
|
169
|
-
const
|
|
187
|
+
const getColumnsToRender = params => {
|
|
170
188
|
const {
|
|
171
189
|
renderContext: nextRenderContext = renderContext,
|
|
172
190
|
minFirstColumn = minColumnIndex,
|
|
@@ -177,7 +195,6 @@ const useGridColumnHeaders = props => {
|
|
|
177
195
|
return null;
|
|
178
196
|
}
|
|
179
197
|
|
|
180
|
-
const columns = [];
|
|
181
198
|
const [firstRowToRender, lastRowToRender] = (0, _useGridVirtualScroller.getRenderableIndexes)({
|
|
182
199
|
firstIndex: nextRenderContext.firstRowIndex,
|
|
183
200
|
lastIndex: nextRenderContext.lastRowIndex,
|
|
@@ -196,6 +213,27 @@ const useGridColumnHeaders = props => {
|
|
|
196
213
|
});
|
|
197
214
|
const lastColumnToRender = Math.min(nextRenderContext.lastColumnIndex + rootProps.columnBuffer, maxLastColumn);
|
|
198
215
|
const renderedColumns = visibleColumns.slice(firstColumnToRender, lastColumnToRender);
|
|
216
|
+
return {
|
|
217
|
+
renderedColumns,
|
|
218
|
+
firstColumnToRender,
|
|
219
|
+
lastColumnToRender,
|
|
220
|
+
minFirstColumn,
|
|
221
|
+
maxLastColumn
|
|
222
|
+
};
|
|
223
|
+
};
|
|
224
|
+
|
|
225
|
+
const getColumnHeaders = (params, other = {}) => {
|
|
226
|
+
const columnsToRender = getColumnsToRender(params);
|
|
227
|
+
|
|
228
|
+
if (columnsToRender == null) {
|
|
229
|
+
return null;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
const {
|
|
233
|
+
renderedColumns,
|
|
234
|
+
firstColumnToRender
|
|
235
|
+
} = columnsToRender;
|
|
236
|
+
const columns = [];
|
|
199
237
|
|
|
200
238
|
for (let i = 0; i < renderedColumns.length; i += 1) {
|
|
201
239
|
const column = renderedColumns[i];
|
|
@@ -220,25 +258,186 @@ const useGridColumnHeaders = props => {
|
|
|
220
258
|
}, other), column.field));
|
|
221
259
|
}
|
|
222
260
|
|
|
261
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(GridColumnHeaderRow, {
|
|
262
|
+
role: "row",
|
|
263
|
+
"aria-rowindex": headerGroupingMaxDepth + 1,
|
|
264
|
+
children: columns
|
|
265
|
+
});
|
|
266
|
+
};
|
|
267
|
+
|
|
268
|
+
const getParents = (path = [], depth) => path.slice(0, depth + 1);
|
|
269
|
+
|
|
270
|
+
const getColumnGroupHeaders = params => {
|
|
271
|
+
if (headerGroupingMaxDepth === 0) {
|
|
272
|
+
return null;
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
const columnsToRender = getColumnsToRender(params);
|
|
276
|
+
|
|
277
|
+
if (columnsToRender == null) {
|
|
278
|
+
return null;
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
const {
|
|
282
|
+
renderedColumns,
|
|
283
|
+
firstColumnToRender,
|
|
284
|
+
lastColumnToRender,
|
|
285
|
+
maxLastColumn
|
|
286
|
+
} = columnsToRender;
|
|
287
|
+
const columns = [];
|
|
288
|
+
const headerToRender = [];
|
|
289
|
+
|
|
290
|
+
for (let depth = 0; depth < headerGroupingMaxDepth; depth += 1) {
|
|
291
|
+
var _visibleColumns$first, _visibleColumns$first2, _visibleColumns$first3;
|
|
292
|
+
|
|
293
|
+
// 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
|
|
294
|
+
const initialHeader = [];
|
|
295
|
+
let leftOverflow = 0;
|
|
296
|
+
let columnIndex = firstColumnToRender - 1;
|
|
297
|
+
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
|
|
298
|
+
// When two empty grouping cell are next to each other, we merge them if the belong to the same group.
|
|
299
|
+
|
|
300
|
+
const firstColumnToRenderGroupParents = getParents((_visibleColumns$first3 = visibleColumns[firstColumnToRender]) == null ? void 0 : _visibleColumns$first3.groupPath, depth);
|
|
301
|
+
|
|
302
|
+
while (firstColumnToRenderGroup !== null && columnIndex >= minColumnIndex && (_visibleColumns$colum = visibleColumns[columnIndex]) != null && _visibleColumns$colum.groupPath && (0, _utils2.isDeepEqual)(getParents((_visibleColumns$colum2 = visibleColumns[columnIndex]) == null ? void 0 : _visibleColumns$colum2.groupPath, depth), firstColumnToRenderGroupParents)) {
|
|
303
|
+
var _visibleColumns$colum, _visibleColumns$colum2, _column$computedWidth;
|
|
304
|
+
|
|
305
|
+
const column = visibleColumns[columnIndex];
|
|
306
|
+
leftOverflow += (_column$computedWidth = column.computedWidth) != null ? _column$computedWidth : 0;
|
|
307
|
+
|
|
308
|
+
if (initialHeader.length === 0) {
|
|
309
|
+
var _column$computedWidth2;
|
|
310
|
+
|
|
311
|
+
initialHeader.push({
|
|
312
|
+
width: (_column$computedWidth2 = column.computedWidth) != null ? _column$computedWidth2 : 0,
|
|
313
|
+
fields: [column.field],
|
|
314
|
+
groupId: firstColumnToRenderGroup,
|
|
315
|
+
groupParents: firstColumnToRenderGroupParents,
|
|
316
|
+
colIndex: columnIndex
|
|
317
|
+
});
|
|
318
|
+
} else {
|
|
319
|
+
var _column$computedWidth3;
|
|
320
|
+
|
|
321
|
+
initialHeader[0].width += (_column$computedWidth3 = column.computedWidth) != null ? _column$computedWidth3 : 0;
|
|
322
|
+
initialHeader[0].fields.push(column.field);
|
|
323
|
+
initialHeader[0].colIndex = columnIndex;
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
columnIndex -= 1;
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
const depthInfo = renderedColumns.reduce((aggregated, column, i) => {
|
|
330
|
+
var _column$computedWidth7;
|
|
331
|
+
|
|
332
|
+
const lastItem = aggregated[aggregated.length - 1];
|
|
333
|
+
|
|
334
|
+
if (column.groupPath && column.groupPath.length > depth) {
|
|
335
|
+
var _column$computedWidth5;
|
|
336
|
+
|
|
337
|
+
if (lastItem && lastItem.groupId === column.groupPath[depth]) {
|
|
338
|
+
var _column$computedWidth4;
|
|
339
|
+
|
|
340
|
+
// Merge with the previous columns
|
|
341
|
+
return [...aggregated.slice(0, aggregated.length - 1), (0, _extends2.default)({}, lastItem, {
|
|
342
|
+
width: lastItem.width + ((_column$computedWidth4 = column.computedWidth) != null ? _column$computedWidth4 : 0),
|
|
343
|
+
fields: [...lastItem.fields, column.field]
|
|
344
|
+
})];
|
|
345
|
+
} // Create a new grouping
|
|
346
|
+
|
|
347
|
+
|
|
348
|
+
return [...aggregated, {
|
|
349
|
+
groupId: column.groupPath[depth],
|
|
350
|
+
groupParents: getParents(column.groupPath, depth),
|
|
351
|
+
width: (_column$computedWidth5 = column.computedWidth) != null ? _column$computedWidth5 : 0,
|
|
352
|
+
fields: [column.field],
|
|
353
|
+
colIndex: firstColumnToRender + i
|
|
354
|
+
}];
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
if (MERGE_EMPTY_CELLS && lastItem && lastItem.groupId === null && (0, _utils2.isDeepEqual)(getParents(column.groupPath, depth), lastItem.groupParents)) {
|
|
358
|
+
var _column$computedWidth6;
|
|
359
|
+
|
|
360
|
+
// We merge with previous column
|
|
361
|
+
return [...aggregated.slice(0, aggregated.length - 1), (0, _extends2.default)({}, lastItem, {
|
|
362
|
+
width: lastItem.width + ((_column$computedWidth6 = column.computedWidth) != null ? _column$computedWidth6 : 0),
|
|
363
|
+
fields: [...lastItem.fields, column.field]
|
|
364
|
+
})];
|
|
365
|
+
} // We create new empty cell
|
|
366
|
+
|
|
367
|
+
|
|
368
|
+
return [...aggregated, {
|
|
369
|
+
groupId: null,
|
|
370
|
+
groupParents: getParents(column.groupPath, depth),
|
|
371
|
+
width: (_column$computedWidth7 = column.computedWidth) != null ? _column$computedWidth7 : 0,
|
|
372
|
+
fields: [column.field],
|
|
373
|
+
colIndex: firstColumnToRender + i
|
|
374
|
+
}];
|
|
375
|
+
}, initialHeader);
|
|
376
|
+
columnIndex = lastColumnToRender;
|
|
377
|
+
const lastColumnToRenderGroup = depthInfo[depthInfo.length - 1].groupId;
|
|
378
|
+
|
|
379
|
+
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) {
|
|
380
|
+
var _visibleColumns$colum3, _visibleColumns$colum4, _visibleColumns$colum5, _column$computedWidth8;
|
|
381
|
+
|
|
382
|
+
const column = visibleColumns[columnIndex];
|
|
383
|
+
depthInfo[depthInfo.length - 1].width += (_column$computedWidth8 = column.computedWidth) != null ? _column$computedWidth8 : 0;
|
|
384
|
+
depthInfo[depthInfo.length - 1].fields.push(column.field);
|
|
385
|
+
columnIndex += 1;
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
headerToRender.push({
|
|
389
|
+
leftOverflow,
|
|
390
|
+
elements: [...depthInfo]
|
|
391
|
+
});
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
headerToRender.forEach((depthInfo, depthIndex) => {
|
|
395
|
+
columns.push( /*#__PURE__*/(0, _jsxRuntime.jsx)(GridColumnHeaderRow, {
|
|
396
|
+
style: {
|
|
397
|
+
height: `${headerHeight}px`,
|
|
398
|
+
transform: `translateX(-${depthInfo.leftOverflow}px)`
|
|
399
|
+
},
|
|
400
|
+
role: "row",
|
|
401
|
+
"aria-rowindex": depthIndex + 1,
|
|
402
|
+
children: depthInfo.elements.map(({
|
|
403
|
+
groupId,
|
|
404
|
+
width,
|
|
405
|
+
fields,
|
|
406
|
+
colIndex
|
|
407
|
+
}, groupIndex) => {
|
|
408
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridColumnGroupHeader.GridColumnGroupHeader, {
|
|
409
|
+
groupId: groupId,
|
|
410
|
+
width: width,
|
|
411
|
+
fields: fields,
|
|
412
|
+
colIndex: colIndex,
|
|
413
|
+
depth: depthIndex,
|
|
414
|
+
isLastColumn: colIndex === visibleColumns.length - fields.length,
|
|
415
|
+
extendRowFullWidth: !rootProps.disableExtendRowFullWidth,
|
|
416
|
+
maxDepth: headerToRender.length,
|
|
417
|
+
height: headerHeight
|
|
418
|
+
}, groupIndex);
|
|
419
|
+
})
|
|
420
|
+
}, depthIndex));
|
|
421
|
+
});
|
|
223
422
|
return columns;
|
|
224
423
|
};
|
|
225
424
|
|
|
226
425
|
const rootStyle = {
|
|
227
|
-
minHeight:
|
|
228
|
-
maxHeight:
|
|
426
|
+
minHeight: totalHeaderHeight,
|
|
427
|
+
maxHeight: totalHeaderHeight,
|
|
229
428
|
lineHeight: `${headerHeight}px`
|
|
230
429
|
};
|
|
231
430
|
return {
|
|
232
431
|
renderContext,
|
|
233
|
-
|
|
432
|
+
getColumnHeaders,
|
|
433
|
+
getColumnGroupHeaders,
|
|
234
434
|
isDragging: !!dragCol,
|
|
235
435
|
getRootProps: (other = {}) => (0, _extends2.default)({
|
|
236
436
|
style: rootStyle
|
|
237
437
|
}, other),
|
|
238
438
|
getInnerProps: () => ({
|
|
239
439
|
ref: handleInnerRef,
|
|
240
|
-
'
|
|
241
|
-
role: 'row'
|
|
440
|
+
role: 'rowgroup'
|
|
242
441
|
})
|
|
243
442
|
};
|
|
244
443
|
};
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.gridDensityValueSelector = exports.gridDensitySelector = exports.gridDensityRowHeightSelector = exports.gridDensityHeaderHeightSelector = exports.gridDensityFactorSelector = void 0;
|
|
6
|
+
exports.gridDensityValueSelector = exports.gridDensityTotalHeaderHeightSelector = exports.gridDensitySelector = exports.gridDensityRowHeightSelector = exports.gridDensityHeaderHeightSelector = exports.gridDensityHeaderGroupingMaxDepthSelector = exports.gridDensityFactorSelector = void 0;
|
|
7
7
|
|
|
8
8
|
var _createSelector = require("../../../utils/createSelector");
|
|
9
9
|
|
|
@@ -16,5 +16,9 @@ const gridDensityRowHeightSelector = (0, _createSelector.createSelector)(gridDen
|
|
|
16
16
|
exports.gridDensityRowHeightSelector = gridDensityRowHeightSelector;
|
|
17
17
|
const gridDensityHeaderHeightSelector = (0, _createSelector.createSelector)(gridDensitySelector, density => density.headerHeight);
|
|
18
18
|
exports.gridDensityHeaderHeightSelector = gridDensityHeaderHeightSelector;
|
|
19
|
+
const gridDensityHeaderGroupingMaxDepthSelector = (0, _createSelector.createSelector)(gridDensitySelector, density => density.headerGroupingMaxDepth);
|
|
20
|
+
exports.gridDensityHeaderGroupingMaxDepthSelector = gridDensityHeaderGroupingMaxDepthSelector;
|
|
19
21
|
const gridDensityFactorSelector = (0, _createSelector.createSelector)(gridDensitySelector, density => density.factor);
|
|
20
|
-
exports.gridDensityFactorSelector = gridDensityFactorSelector;
|
|
22
|
+
exports.gridDensityFactorSelector = gridDensityFactorSelector;
|
|
23
|
+
const gridDensityTotalHeaderHeightSelector = (0, _createSelector.createSelector)(gridDensitySelector, density => density.headerHeight * (1 + density.headerGroupingMaxDepth));
|
|
24
|
+
exports.gridDensityTotalHeaderHeightSelector = gridDensityTotalHeaderHeightSelector;
|
|
@@ -21,6 +21,12 @@ var _densitySelector = require("./densitySelector");
|
|
|
21
21
|
|
|
22
22
|
var _utils = require("../../../utils/utils");
|
|
23
23
|
|
|
24
|
+
var _useGridSelector = require("../../utils/useGridSelector");
|
|
25
|
+
|
|
26
|
+
var _columns = require("../columns");
|
|
27
|
+
|
|
28
|
+
var _useGridColumnGrouping = require("../columnGrouping/useGridColumnGrouping");
|
|
29
|
+
|
|
24
30
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
25
31
|
|
|
26
32
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
@@ -31,13 +37,14 @@ const COMFORTABLE_DENSITY_FACTOR = 1.3; // TODO v6: revise keeping headerHeight
|
|
|
31
37
|
|
|
32
38
|
exports.COMFORTABLE_DENSITY_FACTOR = COMFORTABLE_DENSITY_FACTOR;
|
|
33
39
|
|
|
34
|
-
const getUpdatedDensityState = (newDensity, newHeaderHeight, newRowHeight) => {
|
|
40
|
+
const getUpdatedDensityState = (newDensity, newHeaderHeight, newRowHeight, newMaxDepth) => {
|
|
35
41
|
switch (newDensity) {
|
|
36
42
|
case _gridDensity.GridDensityTypes.Compact:
|
|
37
43
|
return {
|
|
38
44
|
value: newDensity,
|
|
39
45
|
headerHeight: Math.floor(newHeaderHeight * COMPACT_DENSITY_FACTOR),
|
|
40
46
|
rowHeight: Math.floor(newRowHeight * COMPACT_DENSITY_FACTOR),
|
|
47
|
+
headerGroupingMaxDepth: newMaxDepth,
|
|
41
48
|
factor: COMPACT_DENSITY_FACTOR
|
|
42
49
|
};
|
|
43
50
|
|
|
@@ -46,6 +53,7 @@ const getUpdatedDensityState = (newDensity, newHeaderHeight, newRowHeight) => {
|
|
|
46
53
|
value: newDensity,
|
|
47
54
|
headerHeight: Math.floor(newHeaderHeight * COMFORTABLE_DENSITY_FACTOR),
|
|
48
55
|
rowHeight: Math.floor(newRowHeight * COMFORTABLE_DENSITY_FACTOR),
|
|
56
|
+
headerGroupingMaxDepth: newMaxDepth,
|
|
49
57
|
factor: COMFORTABLE_DENSITY_FACTOR
|
|
50
58
|
};
|
|
51
59
|
|
|
@@ -54,24 +62,55 @@ const getUpdatedDensityState = (newDensity, newHeaderHeight, newRowHeight) => {
|
|
|
54
62
|
value: newDensity,
|
|
55
63
|
headerHeight: newHeaderHeight,
|
|
56
64
|
rowHeight: newRowHeight,
|
|
65
|
+
headerGroupingMaxDepth: newMaxDepth,
|
|
57
66
|
factor: 1
|
|
58
67
|
};
|
|
59
68
|
}
|
|
60
69
|
};
|
|
61
70
|
|
|
62
|
-
const densityStateInitializer = (state, props) =>
|
|
63
|
-
|
|
64
|
-
|
|
71
|
+
const densityStateInitializer = (state, props) => {
|
|
72
|
+
// TODO: think about improving this initialization. Could it be done in the useColumn initializer?
|
|
73
|
+
// TODO: manage to remove ts-ignore
|
|
74
|
+
let maxDepth;
|
|
75
|
+
|
|
76
|
+
if (props.columnGroupingModel == null || Object.keys(props.columnGroupingModel).length === 0) {
|
|
77
|
+
maxDepth = 0;
|
|
78
|
+
} else {
|
|
79
|
+
const unwrappedGroupingColumnModel = (0, _useGridColumnGrouping.unwrapGroupingColumnModel)(props.columnGroupingModel);
|
|
80
|
+
const columnsState = state.columns;
|
|
81
|
+
const visibleColumns = columnsState.all.filter(field => columnsState.columnVisibilityModel[field] !== false);
|
|
82
|
+
|
|
83
|
+
if (visibleColumns.length === 0) {
|
|
84
|
+
maxDepth = 0;
|
|
85
|
+
} else {
|
|
86
|
+
maxDepth = Math.max(...visibleColumns.map(field => {
|
|
87
|
+
var _unwrappedGroupingCol, _unwrappedGroupingCol2;
|
|
88
|
+
|
|
89
|
+
return (_unwrappedGroupingCol = (_unwrappedGroupingCol2 = unwrappedGroupingColumnModel[field]) == null ? void 0 : _unwrappedGroupingCol2.length) != null ? _unwrappedGroupingCol : 0;
|
|
90
|
+
}));
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
return (0, _extends2.default)({}, state, {
|
|
95
|
+
density: getUpdatedDensityState(props.density, props.headerHeight, props.rowHeight, maxDepth)
|
|
96
|
+
});
|
|
97
|
+
};
|
|
65
98
|
|
|
66
99
|
exports.densityStateInitializer = densityStateInitializer;
|
|
67
100
|
|
|
68
101
|
const useGridDensity = (apiRef, props) => {
|
|
102
|
+
const visibleColumns = (0, _useGridSelector.useGridSelector)(apiRef, _columns.gridVisibleColumnDefinitionsSelector);
|
|
103
|
+
const maxDepth = visibleColumns.length > 0 ? Math.max(...visibleColumns.map(column => {
|
|
104
|
+
var _column$groupPath$len, _column$groupPath;
|
|
105
|
+
|
|
106
|
+
return (_column$groupPath$len = (_column$groupPath = column.groupPath) == null ? void 0 : _column$groupPath.length) != null ? _column$groupPath$len : 0;
|
|
107
|
+
})) : 0;
|
|
69
108
|
const logger = (0, _useGridLogger.useGridLogger)(apiRef, 'useDensity');
|
|
70
|
-
const setDensity = React.useCallback((newDensity, newHeaderHeight = props.headerHeight, newRowHeight = props.rowHeight) => {
|
|
109
|
+
const setDensity = React.useCallback((newDensity, newHeaderHeight = props.headerHeight, newRowHeight = props.rowHeight, newMaxDepth = maxDepth) => {
|
|
71
110
|
logger.debug(`Set grid density to ${newDensity}`);
|
|
72
111
|
apiRef.current.setState(state => {
|
|
73
112
|
const currentDensityState = (0, _densitySelector.gridDensitySelector)(state);
|
|
74
|
-
const newDensityState = getUpdatedDensityState(newDensity, newHeaderHeight, newRowHeight);
|
|
113
|
+
const newDensityState = getUpdatedDensityState(newDensity, newHeaderHeight, newRowHeight, newMaxDepth);
|
|
75
114
|
|
|
76
115
|
if ((0, _utils.isDeepEqual)(currentDensityState, newDensityState)) {
|
|
77
116
|
return state;
|
|
@@ -82,10 +121,10 @@ const useGridDensity = (apiRef, props) => {
|
|
|
82
121
|
});
|
|
83
122
|
});
|
|
84
123
|
apiRef.current.forceUpdate();
|
|
85
|
-
}, [logger, apiRef, props.headerHeight, props.rowHeight]);
|
|
124
|
+
}, [logger, apiRef, props.headerHeight, props.rowHeight, maxDepth]);
|
|
86
125
|
React.useEffect(() => {
|
|
87
|
-
apiRef.current.setDensity(props.density, props.headerHeight, props.rowHeight);
|
|
88
|
-
}, [apiRef, props.density, props.rowHeight, props.headerHeight]);
|
|
126
|
+
apiRef.current.setDensity(props.density, props.headerHeight, props.rowHeight, maxDepth);
|
|
127
|
+
}, [apiRef, props.density, props.rowHeight, props.headerHeight, maxDepth]);
|
|
89
128
|
const densityApi = {
|
|
90
129
|
setDensity
|
|
91
130
|
};
|
|
@@ -64,7 +64,7 @@ function useGridDimensions(apiRef, props) {
|
|
|
64
64
|
const rootDimensionsRef = React.useRef(null);
|
|
65
65
|
const fullDimensionsRef = React.useRef(null);
|
|
66
66
|
const rowsMeta = (0, _utils2.useGridSelector)(apiRef, _gridRowsMetaSelector.gridRowsMetaSelector);
|
|
67
|
-
const
|
|
67
|
+
const totalHeaderHeight = (0, _utils2.useGridSelector)(apiRef, _density.gridDensityTotalHeaderHeightSelector);
|
|
68
68
|
const updateGridDimensionsRef = React.useCallback(() => {
|
|
69
69
|
var _apiRef$current$rootE;
|
|
70
70
|
|
|
@@ -109,7 +109,7 @@ function useGridDimensions(apiRef, props) {
|
|
|
109
109
|
} else {
|
|
110
110
|
viewportOuterSize = {
|
|
111
111
|
width: rootDimensionsRef.current.width,
|
|
112
|
-
height: rootDimensionsRef.current.height -
|
|
112
|
+
height: rootDimensionsRef.current.height - totalHeaderHeight
|
|
113
113
|
};
|
|
114
114
|
const scrollInformation = hasScroll({
|
|
115
115
|
content: {
|
|
@@ -143,7 +143,7 @@ function useGridDimensions(apiRef, props) {
|
|
|
143
143
|
if (newFullDimensions.viewportInnerSize.width !== (prevDimensions == null ? void 0 : prevDimensions.viewportInnerSize.width) || newFullDimensions.viewportInnerSize.height !== (prevDimensions == null ? void 0 : prevDimensions.viewportInnerSize.height)) {
|
|
144
144
|
apiRef.current.publishEvent('viewportInnerSizeChange', newFullDimensions.viewportInnerSize);
|
|
145
145
|
}
|
|
146
|
-
}, [apiRef, props.scrollbarSize, props.autoHeight,
|
|
146
|
+
}, [apiRef, props.scrollbarSize, props.autoHeight, totalHeaderHeight, rowsMeta.currentPageTotalHeight]);
|
|
147
147
|
const resize = React.useCallback(() => {
|
|
148
148
|
updateGridDimensionsRef();
|
|
149
149
|
apiRef.current.publishEvent('debouncedResize', rootDimensionsRef.current);
|
|
@@ -104,7 +104,7 @@ const useGridPrintExport = (apiRef, props) => {
|
|
|
104
104
|
return;
|
|
105
105
|
}
|
|
106
106
|
|
|
107
|
-
const
|
|
107
|
+
const totalHeaderHeight = (0, _densitySelector.gridDensityTotalHeaderHeightSelector)(apiRef);
|
|
108
108
|
const rowsMeta = (0, _gridRowsMetaSelector.gridRowsMetaSelector)(apiRef.current.state);
|
|
109
109
|
const gridRootElement = apiRef.current.rootElementRef.current;
|
|
110
110
|
const gridClone = gridRootElement.cloneNode(true);
|
|
@@ -138,7 +138,7 @@ const useGridPrintExport = (apiRef, props) => {
|
|
|
138
138
|
} // Expand container height to accommodate all rows
|
|
139
139
|
|
|
140
140
|
|
|
141
|
-
gridClone.style.height = `${rowsMeta.currentPageTotalHeight +
|
|
141
|
+
gridClone.style.height = `${rowsMeta.currentPageTotalHeight + totalHeaderHeight + gridToolbarElementHeight + gridFooterElementHeight}px`; // Remove all loaded elements from the current host
|
|
142
142
|
|
|
143
143
|
printDoc.body.innerHTML = '';
|
|
144
144
|
printDoc.body.appendChild(gridClone);
|
|
@@ -88,76 +88,75 @@ exports.sanitizeFilterModel = sanitizeFilterModel;
|
|
|
88
88
|
const mergeStateWithFilterModel = (filterModel, disableMultipleColumnsFiltering, apiRef) => filteringState => (0, _extends2.default)({}, filteringState, {
|
|
89
89
|
filterModel: sanitizeFilterModel(filterModel, disableMultipleColumnsFiltering, apiRef)
|
|
90
90
|
});
|
|
91
|
-
/**
|
|
92
|
-
* Generates a method to easily check if a row is matching the current filter model.
|
|
93
|
-
* @param {GridFilterModel} filterModel The model with which we want to filter the rows.
|
|
94
|
-
* @param {React.MutableRefObject<GridApiCommunity>} apiRef The API of the grid.
|
|
95
|
-
* @returns {GridAggregatedFilterItemApplier | null} A method that checks if a row is matching the current filter model. If `null`, we consider that all the rows are matching the filters.
|
|
96
|
-
*/
|
|
97
|
-
|
|
98
91
|
|
|
99
92
|
exports.mergeStateWithFilterModel = mergeStateWithFilterModel;
|
|
100
93
|
|
|
101
|
-
const
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
const getFilterCallbackFromItem = filterItem => {
|
|
107
|
-
if (!filterItem.columnField || !filterItem.operatorValue) {
|
|
108
|
-
return null;
|
|
109
|
-
}
|
|
94
|
+
const getFilterCallbackFromItem = (filterItem, apiRef) => {
|
|
95
|
+
if (!filterItem.columnField || !filterItem.operatorValue) {
|
|
96
|
+
return null;
|
|
97
|
+
}
|
|
110
98
|
|
|
111
|
-
|
|
99
|
+
const column = apiRef.current.getColumn(filterItem.columnField);
|
|
112
100
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
101
|
+
if (!column) {
|
|
102
|
+
return null;
|
|
103
|
+
}
|
|
116
104
|
|
|
117
|
-
|
|
105
|
+
let parsedValue;
|
|
118
106
|
|
|
119
|
-
|
|
120
|
-
|
|
107
|
+
if (column.valueParser) {
|
|
108
|
+
var _filterItem$value;
|
|
121
109
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
110
|
+
const parser = column.valueParser;
|
|
111
|
+
parsedValue = Array.isArray(filterItem.value) ? (_filterItem$value = filterItem.value) == null ? void 0 : _filterItem$value.map(x => parser(x)) : parser(filterItem.value);
|
|
112
|
+
} else {
|
|
113
|
+
parsedValue = filterItem.value;
|
|
114
|
+
}
|
|
127
115
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
116
|
+
const newFilterItem = (0, _extends2.default)({}, filterItem, {
|
|
117
|
+
value: parsedValue
|
|
118
|
+
});
|
|
119
|
+
const filterOperators = column.filterOperators;
|
|
132
120
|
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
121
|
+
if (!(filterOperators != null && filterOperators.length)) {
|
|
122
|
+
throw new Error(`MUI: No filter operators found for column '${column.field}'.`);
|
|
123
|
+
}
|
|
136
124
|
|
|
137
|
-
|
|
125
|
+
const filterOperator = filterOperators.find(operator => operator.value === newFilterItem.operatorValue);
|
|
138
126
|
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
127
|
+
if (!filterOperator) {
|
|
128
|
+
throw new Error(`MUI: No filter operator found for column '${column.field}' and operator value '${newFilterItem.operatorValue}'.`);
|
|
129
|
+
}
|
|
142
130
|
|
|
143
|
-
|
|
131
|
+
const applyFilterOnRow = filterOperator.getApplyFilterFn(newFilterItem, column);
|
|
144
132
|
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
133
|
+
if (typeof applyFilterOnRow !== 'function') {
|
|
134
|
+
return null;
|
|
135
|
+
}
|
|
148
136
|
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
137
|
+
const fn = rowId => {
|
|
138
|
+
const cellParams = apiRef.current.getCellParams(rowId, newFilterItem.columnField);
|
|
139
|
+
return applyFilterOnRow(cellParams);
|
|
140
|
+
};
|
|
153
141
|
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
};
|
|
142
|
+
return {
|
|
143
|
+
fn,
|
|
144
|
+
item: newFilterItem
|
|
158
145
|
};
|
|
146
|
+
};
|
|
147
|
+
/**
|
|
148
|
+
* Generates a method to easily check if a row is matching the current filter model.
|
|
149
|
+
* @param {GridFilterModel} filterModel The model with which we want to filter the rows.
|
|
150
|
+
* @param {React.MutableRefObject<GridApiCommunity>} apiRef The API of the grid.
|
|
151
|
+
* @returns {GridAggregatedFilterItemApplier | null} A method that checks if a row is matching the current filter model. If `null`, we consider that all the rows are matching the filters.
|
|
152
|
+
*/
|
|
159
153
|
|
|
160
|
-
|
|
154
|
+
|
|
155
|
+
const buildAggregatedFilterItemsApplier = (filterModel, apiRef) => {
|
|
156
|
+
const {
|
|
157
|
+
items
|
|
158
|
+
} = filterModel;
|
|
159
|
+
const appliers = items.map(item => getFilterCallbackFromItem(item, apiRef)).filter(callback => !!callback);
|
|
161
160
|
|
|
162
161
|
if (appliers.length === 0) {
|
|
163
162
|
return null;
|
|
@@ -249,9 +248,10 @@ const buildAggregatedFilterApplier = (filterModel, apiRef) => {
|
|
|
249
248
|
|
|
250
249
|
exports.buildAggregatedFilterApplier = buildAggregatedFilterApplier;
|
|
251
250
|
|
|
252
|
-
const passFilterLogic = (allFilterItemResults, allQuickFilterResults, filterModel) => {
|
|
251
|
+
const passFilterLogic = (allFilterItemResults, allQuickFilterResults, filterModel, apiRef) => {
|
|
253
252
|
var _filterModel$quickFil, _filterModel$linkOper;
|
|
254
253
|
|
|
254
|
+
const cleanedFilterItems = filterModel.items.filter(item => getFilterCallbackFromItem(item, apiRef) !== null);
|
|
255
255
|
const cleanedAllFilterItemResults = allFilterItemResults.filter(result => result != null);
|
|
256
256
|
const cleanedAllQuickFilterResults = allQuickFilterResults.filter(result => result != null); // Defaultize operators
|
|
257
257
|
|
|
@@ -265,13 +265,13 @@ const passFilterLogic = (allFilterItemResults, allQuickFilterResults, filterMode
|
|
|
265
265
|
};
|
|
266
266
|
|
|
267
267
|
if (linkOperator === _models.GridLinkOperator.And) {
|
|
268
|
-
const passesAllFilters =
|
|
268
|
+
const passesAllFilters = cleanedFilterItems.every(filterItemPredicate);
|
|
269
269
|
|
|
270
270
|
if (!passesAllFilters) {
|
|
271
271
|
return false;
|
|
272
272
|
}
|
|
273
273
|
} else {
|
|
274
|
-
const passesSomeFilters =
|
|
274
|
+
const passesSomeFilters = cleanedFilterItems.some(filterItemPredicate);
|
|
275
275
|
|
|
276
276
|
if (!passesSomeFilters) {
|
|
277
277
|
return false;
|
|
@@ -304,7 +304,7 @@ const useGridFilter = (apiRef, props) => {
|
|
|
304
304
|
passingFilterItems,
|
|
305
305
|
passingQuickFilterValues
|
|
306
306
|
} = params.isRowMatchingFilters(rowId);
|
|
307
|
-
isRowPassing = (0, _gridFilterUtils.passFilterLogic)([passingFilterItems], [passingQuickFilterValues], params.filterModel);
|
|
307
|
+
isRowPassing = (0, _gridFilterUtils.passFilterLogic)([passingFilterItems], [passingQuickFilterValues], params.filterModel, apiRef);
|
|
308
308
|
}
|
|
309
309
|
|
|
310
310
|
filteredRowsLookup[rowId] = isRowPassing;
|
|
@@ -30,6 +30,19 @@ Object.keys(_columns).forEach(function (key) {
|
|
|
30
30
|
});
|
|
31
31
|
});
|
|
32
32
|
|
|
33
|
+
var _columnGrouping = require("./columnGrouping");
|
|
34
|
+
|
|
35
|
+
Object.keys(_columnGrouping).forEach(function (key) {
|
|
36
|
+
if (key === "default" || key === "__esModule") return;
|
|
37
|
+
if (key in exports && exports[key] === _columnGrouping[key]) return;
|
|
38
|
+
Object.defineProperty(exports, key, {
|
|
39
|
+
enumerable: true,
|
|
40
|
+
get: function () {
|
|
41
|
+
return _columnGrouping[key];
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
|
|
33
46
|
var _density = require("./density");
|
|
34
47
|
|
|
35
48
|
Object.keys(_density).forEach(function (key) {
|