@mui/x-data-grid 5.11.1 → 5.12.2
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 +199 -20
- package/DataGrid/DataGrid.js +26 -1
- package/README.md +2 -2
- package/colDef/gridCheckboxSelectionColDef.d.ts +1 -0
- package/colDef/gridCheckboxSelectionColDef.js +2 -1
- package/colDef/gridDateOperators.d.ts +1 -1
- package/colDef/gridNumericColDef.js +1 -1
- package/components/GridRow.d.ts +1 -1
- package/components/GridRow.js +51 -12
- package/components/cell/GridActionsCellItem.d.ts +1 -1
- package/components/cell/GridCell.d.ts +2 -1
- package/components/cell/GridCell.js +12 -7
- package/components/columnHeaders/GridColumnHeaderItem.js +9 -6
- package/components/columnSelection/GridCellCheckboxRenderer.js +0 -1
- package/components/columnSelection/GridHeaderCheckbox.js +0 -1
- package/components/containers/GridRootStyles.js +8 -3
- package/components/menu/GridMenu.js +9 -2
- package/components/panel/GridColumnsPanel.js +12 -7
- package/components/panel/GridPanelWrapper.d.ts +1 -1
- package/components/panel/GridPanelWrapper.js +3 -3
- package/components/panel/filterPanel/GridFilterForm.d.ts +61 -4
- package/components/panel/filterPanel/GridFilterForm.js +88 -8
- package/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +0 -1
- package/components/panel/filterPanel/GridFilterPanel.d.ts +8 -5
- package/components/panel/filterPanel/GridFilterPanel.js +26 -11
- package/components/toolbar/GridToolbarColumnsButton.js +0 -1
- package/components/toolbar/GridToolbarDensitySelector.js +0 -1
- package/components/toolbar/GridToolbarExportContainer.js +0 -1
- package/components/toolbar/GridToolbarFilterButton.d.ts +1 -1
- package/components/toolbar/GridToolbarFilterButton.js +0 -1
- package/components/toolbar/GridToolbarQuickFilter.d.ts +7 -0
- package/components/toolbar/GridToolbarQuickFilter.js +57 -4
- package/constants/defaultGridSlotsComponents.js +2 -1
- package/constants/gridClasses.d.ts +4 -0
- package/constants/gridClasses.js +1 -1
- package/constants/localeTextConstants.js +1 -0
- package/hooks/core/useGridStateInitialization.js +19 -6
- package/hooks/features/columnMenu/useGridColumnMenu.js +22 -0
- package/hooks/features/columns/gridColumnsInterfaces.d.ts +3 -0
- package/hooks/features/columns/useGridColumnSpanning.d.ts +1 -1
- package/hooks/features/columns/useGridColumnSpanning.js +1 -1
- package/hooks/features/columns/useGridColumns.d.ts +1 -1
- package/hooks/features/columns/useGridColumns.js +13 -15
- package/hooks/features/dimensions/gridDimensionsApi.d.ts +5 -0
- package/hooks/features/dimensions/useGridDimensions.js +9 -8
- package/hooks/features/editRows/useGridCellEditing.new.js +11 -4
- package/hooks/features/editRows/useGridEditing.old.js +1 -1
- package/hooks/features/editRows/useGridRowEditing.new.js +10 -4
- package/hooks/features/events/useGridEvents.d.ts +1 -1
- package/hooks/features/events/useGridEvents.js +2 -0
- package/hooks/features/filter/gridFilterSelector.d.ts +5 -0
- package/hooks/features/filter/gridFilterSelector.js +6 -0
- package/hooks/features/filter/gridFilterState.d.ts +1 -1
- package/hooks/features/filter/gridFilterUtils.d.ts +10 -2
- package/hooks/features/filter/gridFilterUtils.js +3 -6
- package/hooks/features/filter/useGridFilter.d.ts +1 -1
- package/hooks/features/filter/useGridFilter.js +29 -12
- package/hooks/features/pagination/useGridPage.js +1 -1
- package/hooks/features/pagination/useGridPageSize.js +1 -1
- package/hooks/features/rows/useGridRowsMeta.d.ts +1 -1
- package/hooks/features/rows/useGridRowsMeta.js +133 -67
- package/hooks/features/selection/useGridSelection.js +1 -1
- package/hooks/features/selection/useGridSelectionPreProcessors.js +8 -6
- package/hooks/features/sorting/useGridSorting.d.ts +1 -1
- package/hooks/features/sorting/useGridSorting.js +1 -1
- package/hooks/features/virtualization/useGridVirtualScroller.d.ts +2 -1
- package/hooks/features/virtualization/useGridVirtualScroller.js +65 -11
- package/index.js +1 -1
- package/internals/index.d.ts +1 -0
- package/legacy/DataGrid/DataGrid.js +26 -1
- package/legacy/colDef/gridCheckboxSelectionColDef.js +2 -1
- package/legacy/colDef/gridNumericColDef.js +1 -1
- package/legacy/components/GridRow.js +56 -12
- package/legacy/components/cell/GridCell.js +12 -7
- package/legacy/components/columnHeaders/GridColumnHeaderItem.js +11 -6
- package/legacy/components/columnSelection/GridCellCheckboxRenderer.js +0 -1
- package/legacy/components/columnSelection/GridHeaderCheckbox.js +0 -1
- package/legacy/components/containers/GridRootStyles.js +10 -7
- package/legacy/components/menu/GridMenu.js +9 -2
- package/legacy/components/panel/GridColumnsPanel.js +14 -7
- package/legacy/components/panel/GridPanelWrapper.js +3 -3
- package/legacy/components/panel/filterPanel/GridFilterForm.js +89 -8
- package/legacy/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +0 -1
- package/legacy/components/panel/filterPanel/GridFilterPanel.js +28 -12
- package/legacy/components/toolbar/GridToolbarColumnsButton.js +0 -1
- package/legacy/components/toolbar/GridToolbarDensitySelector.js +0 -1
- package/legacy/components/toolbar/GridToolbarExportContainer.js +0 -1
- package/legacy/components/toolbar/GridToolbarFilterButton.js +0 -1
- package/legacy/components/toolbar/GridToolbarQuickFilter.js +67 -6
- package/legacy/constants/defaultGridSlotsComponents.js +2 -1
- package/legacy/constants/gridClasses.js +1 -1
- package/legacy/constants/localeTextConstants.js +1 -0
- package/legacy/hooks/core/useGridStateInitialization.js +18 -6
- package/legacy/hooks/features/columnMenu/useGridColumnMenu.js +22 -0
- package/legacy/hooks/features/columns/useGridColumnSpanning.js +1 -1
- package/legacy/hooks/features/columns/useGridColumns.js +13 -15
- package/legacy/hooks/features/dimensions/useGridDimensions.js +9 -8
- package/legacy/hooks/features/editRows/useGridCellEditing.new.js +14 -7
- package/legacy/hooks/features/editRows/useGridEditing.old.js +1 -1
- package/legacy/hooks/features/editRows/useGridRowEditing.new.js +10 -4
- package/legacy/hooks/features/events/useGridEvents.js +2 -0
- package/legacy/hooks/features/filter/gridFilterSelector.js +8 -0
- package/legacy/hooks/features/filter/gridFilterUtils.js +4 -7
- package/legacy/hooks/features/filter/useGridFilter.js +33 -12
- package/legacy/hooks/features/pagination/useGridPage.js +1 -1
- package/legacy/hooks/features/pagination/useGridPageSize.js +1 -1
- package/legacy/hooks/features/rows/useGridRowsMeta.js +133 -66
- package/legacy/hooks/features/selection/useGridSelection.js +1 -1
- package/legacy/hooks/features/selection/useGridSelectionPreProcessors.js +8 -6
- package/legacy/hooks/features/sorting/useGridSorting.js +1 -1
- package/legacy/hooks/features/virtualization/useGridVirtualScroller.js +84 -26
- package/legacy/index.js +1 -1
- package/legacy/locales/arSD.js +1 -0
- package/legacy/locales/bgBG.js +1 -0
- package/legacy/locales/csCZ.js +1 -0
- package/legacy/locales/daDK.js +1 -0
- package/legacy/locales/deDE.js +1 -0
- package/legacy/locales/elGR.js +1 -0
- package/legacy/locales/esES.js +1 -0
- package/legacy/locales/faIR.js +1 -0
- package/legacy/locales/fiFI.js +1 -0
- package/legacy/locales/frFR.js +1 -0
- package/legacy/locales/heIL.js +10 -9
- package/legacy/locales/huHU.js +1 -0
- package/legacy/locales/itIT.js +1 -0
- package/legacy/locales/jaJP.js +29 -24
- package/legacy/locales/koKR.js +1 -0
- package/legacy/locales/nbNO.js +128 -0
- package/legacy/locales/nlNL.js +1 -0
- package/legacy/locales/plPL.js +1 -0
- package/legacy/locales/ptBR.js +1 -0
- package/legacy/locales/ruRU.js +7 -6
- package/legacy/locales/skSK.js +1 -0
- package/legacy/locales/trTR.js +8 -7
- package/legacy/locales/ukUA.js +1 -0
- package/legacy/locales/viVN.js +1 -0
- package/legacy/locales/zhCN.js +1 -0
- package/legacy/models/events/gridEvents.js +2 -0
- package/legacy/models/gridApiCaches.js +1 -0
- package/legacy/models/params/gridMenuParams.js +1 -0
- package/legacy/models/params/index.js +2 -1
- package/locales/arSD.js +1 -0
- package/locales/bgBG.js +1 -0
- package/locales/csCZ.js +1 -0
- package/locales/daDK.js +1 -0
- package/locales/deDE.js +1 -0
- package/locales/elGR.js +1 -0
- package/locales/esES.js +1 -0
- package/locales/faIR.js +1 -0
- package/locales/fiFI.js +1 -0
- package/locales/frFR.js +1 -0
- package/locales/heIL.js +10 -9
- package/locales/huHU.js +1 -0
- package/locales/itIT.js +1 -0
- package/locales/jaJP.js +25 -24
- package/locales/koKR.js +1 -0
- package/locales/nbNO.d.ts +2 -0
- package/locales/nbNO.js +116 -0
- package/locales/nlNL.js +1 -0
- package/locales/plPL.js +1 -0
- package/locales/ptBR.js +1 -0
- package/locales/ruRU.js +7 -6
- package/locales/skSK.js +1 -0
- package/locales/trTR.js +8 -7
- package/locales/ukUA.js +1 -0
- package/locales/viVN.js +1 -0
- package/locales/zhCN.js +1 -0
- package/models/api/gridCallbackDetails.d.ts +6 -1
- package/models/api/gridCoreApi.d.ts +2 -6
- package/models/api/gridFilterApi.d.ts +8 -1
- package/models/api/gridLocaleTextApi.d.ts +1 -0
- package/models/api/gridRowsMetaApi.d.ts +24 -0
- package/models/api/gridStateApi.d.ts +14 -3
- package/models/colDef/gridColDef.d.ts +4 -4
- package/models/events/gridEventLookup.d.ts +16 -1
- package/models/events/gridEvents.d.ts +3 -1
- package/models/events/gridEvents.js +2 -0
- package/models/gridApiCaches.d.ts +6 -0
- package/models/gridApiCaches.js +1 -0
- package/models/gridIconSlotsComponent.d.ts +5 -0
- package/models/params/gridMenuParams.d.ts +7 -0
- package/models/params/gridMenuParams.js +1 -0
- package/models/params/gridRowParams.d.ts +1 -1
- package/models/params/index.d.ts +1 -0
- package/models/params/index.js +2 -1
- package/models/props/DataGridProps.d.ts +24 -2
- package/modern/DataGrid/DataGrid.js +26 -1
- package/modern/colDef/gridCheckboxSelectionColDef.js +2 -1
- package/modern/colDef/gridNumericColDef.js +1 -1
- package/modern/components/GridRow.js +51 -12
- package/modern/components/cell/GridCell.js +12 -7
- package/modern/components/columnHeaders/GridColumnHeaderItem.js +9 -6
- package/modern/components/columnSelection/GridCellCheckboxRenderer.js +0 -1
- package/modern/components/columnSelection/GridHeaderCheckbox.js +0 -1
- package/modern/components/containers/GridRootStyles.js +8 -3
- package/modern/components/menu/GridMenu.js +9 -2
- package/modern/components/panel/GridColumnsPanel.js +12 -7
- package/modern/components/panel/GridPanelWrapper.js +3 -3
- package/modern/components/panel/filterPanel/GridFilterForm.js +88 -8
- package/modern/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +0 -1
- package/modern/components/panel/filterPanel/GridFilterPanel.js +26 -11
- package/modern/components/toolbar/GridToolbarColumnsButton.js +0 -1
- package/modern/components/toolbar/GridToolbarDensitySelector.js +0 -1
- package/modern/components/toolbar/GridToolbarExportContainer.js +0 -1
- package/modern/components/toolbar/GridToolbarFilterButton.js +0 -1
- package/modern/components/toolbar/GridToolbarQuickFilter.js +57 -4
- package/modern/constants/defaultGridSlotsComponents.js +2 -1
- package/modern/constants/gridClasses.js +1 -1
- package/modern/constants/localeTextConstants.js +1 -0
- package/modern/hooks/core/useGridStateInitialization.js +19 -6
- package/modern/hooks/features/columnMenu/useGridColumnMenu.js +22 -0
- package/modern/hooks/features/columns/useGridColumnSpanning.js +1 -1
- package/modern/hooks/features/columns/useGridColumns.js +12 -14
- package/modern/hooks/features/dimensions/useGridDimensions.js +9 -8
- package/modern/hooks/features/editRows/useGridCellEditing.new.js +10 -3
- package/modern/hooks/features/editRows/useGridEditing.old.js +1 -1
- package/modern/hooks/features/editRows/useGridRowEditing.new.js +9 -3
- package/modern/hooks/features/events/useGridEvents.js +2 -0
- package/modern/hooks/features/filter/gridFilterSelector.js +6 -0
- package/modern/hooks/features/filter/gridFilterUtils.js +3 -6
- package/modern/hooks/features/filter/useGridFilter.js +29 -12
- package/modern/hooks/features/pagination/useGridPage.js +1 -1
- package/modern/hooks/features/pagination/useGridPageSize.js +1 -1
- package/modern/hooks/features/rows/useGridRowsMeta.js +129 -59
- package/modern/hooks/features/selection/useGridSelection.js +1 -1
- package/modern/hooks/features/selection/useGridSelectionPreProcessors.js +8 -6
- package/modern/hooks/features/sorting/useGridSorting.js +1 -1
- package/modern/hooks/features/virtualization/useGridVirtualScroller.js +65 -11
- package/modern/index.js +1 -1
- package/modern/locales/arSD.js +1 -0
- package/modern/locales/bgBG.js +1 -0
- package/modern/locales/csCZ.js +1 -0
- package/modern/locales/daDK.js +1 -0
- package/modern/locales/deDE.js +1 -0
- package/modern/locales/elGR.js +1 -0
- package/modern/locales/esES.js +1 -0
- package/modern/locales/faIR.js +1 -0
- package/modern/locales/fiFI.js +1 -0
- package/modern/locales/frFR.js +1 -0
- package/modern/locales/heIL.js +10 -9
- package/modern/locales/huHU.js +1 -0
- package/modern/locales/itIT.js +1 -0
- package/modern/locales/jaJP.js +25 -24
- package/modern/locales/koKR.js +1 -0
- package/modern/locales/nbNO.js +116 -0
- package/modern/locales/nlNL.js +1 -0
- package/modern/locales/plPL.js +1 -0
- package/modern/locales/ptBR.js +1 -0
- package/modern/locales/ruRU.js +7 -6
- package/modern/locales/skSK.js +1 -0
- package/modern/locales/trTR.js +8 -7
- package/modern/locales/ukUA.js +1 -0
- package/modern/locales/viVN.js +1 -0
- package/modern/locales/zhCN.js +1 -0
- package/modern/models/events/gridEvents.js +2 -0
- package/modern/models/gridApiCaches.js +1 -0
- package/modern/models/params/gridMenuParams.js +1 -0
- package/modern/models/params/index.js +2 -1
- package/node/DataGrid/DataGrid.js +26 -1
- package/node/colDef/gridCheckboxSelectionColDef.js +4 -2
- package/node/colDef/gridNumericColDef.js +1 -1
- package/node/components/GridRow.js +53 -12
- package/node/components/cell/GridCell.js +12 -7
- package/node/components/columnHeaders/GridColumnHeaderItem.js +9 -6
- package/node/components/columnSelection/GridCellCheckboxRenderer.js +0 -1
- package/node/components/columnSelection/GridHeaderCheckbox.js +0 -1
- package/node/components/containers/GridRootStyles.js +8 -3
- package/node/components/menu/GridMenu.js +10 -2
- package/node/components/panel/GridColumnsPanel.js +12 -7
- package/node/components/panel/GridPanelWrapper.js +5 -3
- package/node/components/panel/filterPanel/GridFilterForm.js +91 -9
- package/node/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +0 -1
- package/node/components/panel/filterPanel/GridFilterPanel.js +28 -11
- package/node/components/toolbar/GridToolbarColumnsButton.js +0 -1
- package/node/components/toolbar/GridToolbarDensitySelector.js +0 -1
- package/node/components/toolbar/GridToolbarExportContainer.js +0 -1
- package/node/components/toolbar/GridToolbarFilterButton.js +0 -1
- package/node/components/toolbar/GridToolbarQuickFilter.js +61 -4
- package/node/constants/defaultGridSlotsComponents.js +2 -1
- package/node/constants/gridClasses.js +1 -1
- package/node/constants/localeTextConstants.js +1 -0
- package/node/hooks/core/useGridStateInitialization.js +19 -6
- package/node/hooks/features/columnMenu/useGridColumnMenu.js +23 -0
- package/node/hooks/features/columns/useGridColumnSpanning.js +11 -16
- package/node/hooks/features/columns/useGridColumns.js +13 -15
- package/node/hooks/features/dimensions/useGridDimensions.js +9 -8
- package/node/hooks/features/editRows/useGridCellEditing.new.js +11 -4
- package/node/hooks/features/editRows/useGridEditing.old.js +1 -1
- package/node/hooks/features/editRows/useGridRowEditing.new.js +10 -4
- package/node/hooks/features/events/useGridEvents.js +2 -0
- package/node/hooks/features/filter/gridFilterSelector.js +9 -2
- package/node/hooks/features/filter/gridFilterUtils.js +4 -5
- package/node/hooks/features/filter/useGridFilter.js +28 -11
- package/node/hooks/features/pagination/useGridPage.js +1 -1
- package/node/hooks/features/pagination/useGridPageSize.js +1 -1
- package/node/hooks/features/rows/useGridRowsMeta.js +136 -69
- package/node/hooks/features/selection/useGridSelection.js +1 -1
- package/node/hooks/features/selection/useGridSelectionPreProcessors.js +7 -5
- package/node/hooks/features/sorting/useGridSorting.js +1 -1
- package/node/hooks/features/virtualization/useGridVirtualScroller.js +65 -12
- package/node/index.js +1 -1
- package/node/locales/arSD.js +1 -0
- package/node/locales/bgBG.js +1 -0
- package/node/locales/csCZ.js +1 -0
- package/node/locales/daDK.js +1 -0
- package/node/locales/deDE.js +1 -0
- package/node/locales/elGR.js +1 -0
- package/node/locales/esES.js +1 -0
- package/node/locales/faIR.js +1 -0
- package/node/locales/fiFI.js +1 -0
- package/node/locales/frFR.js +1 -0
- package/node/locales/heIL.js +10 -9
- package/node/locales/huHU.js +1 -0
- package/node/locales/itIT.js +1 -0
- package/node/locales/jaJP.js +25 -24
- package/node/locales/koKR.js +1 -0
- package/node/locales/nbNO.js +126 -0
- package/node/locales/nlNL.js +1 -0
- package/node/locales/plPL.js +1 -0
- package/node/locales/ptBR.js +1 -0
- package/node/locales/ruRU.js +7 -6
- package/node/locales/skSK.js +1 -0
- package/node/locales/trTR.js +8 -7
- package/node/locales/ukUA.js +1 -0
- package/node/locales/viVN.js +1 -0
- package/node/locales/zhCN.js +1 -0
- package/node/models/events/gridEvents.js +2 -0
- package/node/models/gridApiCaches.js +5 -0
- package/node/models/params/gridMenuParams.js +5 -0
- package/node/models/params/index.js +13 -0
- package/package.json +6 -5
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import * as React from 'react';
|
|
3
|
+
import { debounce } from '@mui/material/utils';
|
|
3
4
|
import { useGridVisibleRows } from '../../utils/useGridVisibleRows';
|
|
4
5
|
import { useGridApiMethod } from '../../utils/useGridApiMethod';
|
|
5
6
|
import { useGridSelector } from '../../utils/useGridSelector';
|
|
@@ -22,69 +23,101 @@ export var rowsMetaStateInitializer = function rowsMetaStateInitializer(state) {
|
|
|
22
23
|
*/
|
|
23
24
|
|
|
24
25
|
export var useGridRowsMeta = function useGridRowsMeta(apiRef, props) {
|
|
25
|
-
var
|
|
26
|
-
getRowSpacing = props.getRowSpacing
|
|
27
|
-
|
|
28
|
-
var
|
|
26
|
+
var getRowHeightProp = props.getRowHeight,
|
|
27
|
+
getRowSpacing = props.getRowSpacing,
|
|
28
|
+
getEstimatedRowHeight = props.getEstimatedRowHeight;
|
|
29
|
+
var rowsHeightLookup = React.useRef({}); // Inspired by https://github.com/bvaughn/react-virtualized/blob/master/source/Grid/utils/CellSizeAndPositionManager.js
|
|
30
|
+
|
|
31
|
+
var lastMeasuredRowIndex = React.useRef(-1);
|
|
32
|
+
var hasRowWithAutoHeight = React.useRef(false);
|
|
33
|
+
var rowHeightFromDensity = useGridSelector(apiRef, gridDensityRowHeightSelector);
|
|
29
34
|
var filterState = useGridSelector(apiRef, gridFilterStateSelector);
|
|
30
35
|
var paginationState = useGridSelector(apiRef, gridPaginationSelector);
|
|
31
36
|
var sortingState = useGridSelector(apiRef, gridSortingStateSelector);
|
|
32
37
|
var currentPage = useGridVisibleRows(apiRef, props);
|
|
33
38
|
var hydrateRowsMeta = React.useCallback(function () {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
39
|
+
hasRowWithAutoHeight.current = false;
|
|
40
|
+
var densityFactor = gridDensityFactorSelector(apiRef.current.state, apiRef.current.instanceId);
|
|
41
|
+
var positions = [];
|
|
42
|
+
var currentPageTotalHeight = currentPage.rows.reduce(function (acc, row) {
|
|
43
|
+
positions.push(acc);
|
|
44
|
+
|
|
45
|
+
if (!rowsHeightLookup.current[row.id]) {
|
|
46
|
+
rowsHeightLookup.current[row.id] = {
|
|
47
|
+
sizes: {
|
|
48
|
+
base: rowHeightFromDensity
|
|
49
|
+
},
|
|
50
|
+
isResized: false,
|
|
51
|
+
autoHeight: false,
|
|
52
|
+
needsFirstMeasurement: true // Assume all rows will need to be measured by default
|
|
53
|
+
|
|
54
|
+
};
|
|
55
|
+
}
|
|
48
56
|
|
|
49
|
-
|
|
50
|
-
|
|
57
|
+
var _rowsHeightLookup$cur = rowsHeightLookup.current[row.id],
|
|
58
|
+
isResized = _rowsHeightLookup$cur.isResized,
|
|
59
|
+
needsFirstMeasurement = _rowsHeightLookup$cur.needsFirstMeasurement,
|
|
60
|
+
sizes = _rowsHeightLookup$cur.sizes;
|
|
61
|
+
var baseRowHeight = rowHeightFromDensity;
|
|
62
|
+
var existingBaseRowHeight = sizes.base;
|
|
51
63
|
|
|
52
|
-
|
|
53
|
-
|
|
64
|
+
if (isResized) {
|
|
65
|
+
// Do not recalculate resized row height and use the value from the lookup
|
|
66
|
+
baseRowHeight = existingBaseRowHeight;
|
|
67
|
+
} else if (getRowHeightProp) {
|
|
68
|
+
var rowHeightFromUser = getRowHeightProp(_extends({}, row, {
|
|
69
|
+
densityFactor: densityFactor
|
|
70
|
+
}));
|
|
71
|
+
|
|
72
|
+
if (rowHeightFromUser === 'auto') {
|
|
73
|
+
if (needsFirstMeasurement) {
|
|
74
|
+
var estimatedRowHeight = getEstimatedRowHeight ? getEstimatedRowHeight(_extends({}, row, {
|
|
54
75
|
densityFactor: densityFactor
|
|
55
|
-
}))
|
|
76
|
+
})) : rowHeightFromDensity; // If the row was not measured yet use the estimated row height
|
|
77
|
+
|
|
78
|
+
baseRowHeight = estimatedRowHeight != null ? estimatedRowHeight : rowHeightFromDensity;
|
|
79
|
+
} else {
|
|
80
|
+
baseRowHeight = existingBaseRowHeight;
|
|
56
81
|
}
|
|
57
|
-
} // We use an object to make simple to check if a height is already added or not
|
|
58
82
|
|
|
83
|
+
hasRowWithAutoHeight.current = true;
|
|
84
|
+
rowsHeightLookup.current[row.id].autoHeight = true;
|
|
85
|
+
} else {
|
|
86
|
+
// Default back to base rowHeight if getRowHeight returns null or undefined.
|
|
87
|
+
baseRowHeight = rowHeightFromUser != null ? rowHeightFromUser : rowHeightFromDensity;
|
|
88
|
+
rowsHeightLookup.current[row.id].needsFirstMeasurement = false;
|
|
89
|
+
rowsHeightLookup.current[row.id].autoHeight = false;
|
|
90
|
+
}
|
|
91
|
+
} else {
|
|
92
|
+
rowsHeightLookup.current[row.id].needsFirstMeasurement = false;
|
|
93
|
+
} // We use an object to make simple to check if a height is already added or not
|
|
59
94
|
|
|
60
|
-
var initialHeights = {
|
|
61
|
-
base: baseRowHeight
|
|
62
|
-
};
|
|
63
95
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
var indexRelativeToCurrentPage = apiRef.current.getRowIndexRelativeToVisibleRows(row.id);
|
|
68
|
-
var spacing = getRowSpacing(_extends({}, row, {
|
|
69
|
-
isFirstVisible: indexRelativeToCurrentPage === 0,
|
|
70
|
-
isLastVisible: indexRelativeToCurrentPage === currentPage.rows.length - 1,
|
|
71
|
-
indexRelativeToCurrentPage: indexRelativeToCurrentPage
|
|
72
|
-
}));
|
|
73
|
-
initialHeights.spacingTop = (_spacing$top = spacing.top) != null ? _spacing$top : 0;
|
|
74
|
-
initialHeights.spacingBottom = (_spacing$bottom = spacing.bottom) != null ? _spacing$bottom : 0;
|
|
75
|
-
}
|
|
96
|
+
var initialHeights = {
|
|
97
|
+
base: baseRowHeight
|
|
98
|
+
};
|
|
76
99
|
|
|
77
|
-
|
|
78
|
-
var
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
};
|
|
86
|
-
|
|
100
|
+
if (getRowSpacing) {
|
|
101
|
+
var _spacing$top, _spacing$bottom;
|
|
102
|
+
|
|
103
|
+
var indexRelativeToCurrentPage = apiRef.current.getRowIndexRelativeToVisibleRows(row.id);
|
|
104
|
+
var spacing = getRowSpacing(_extends({}, row, {
|
|
105
|
+
isFirstVisible: indexRelativeToCurrentPage === 0,
|
|
106
|
+
isLastVisible: indexRelativeToCurrentPage === currentPage.rows.length - 1,
|
|
107
|
+
indexRelativeToCurrentPage: indexRelativeToCurrentPage
|
|
108
|
+
}));
|
|
109
|
+
initialHeights.spacingTop = (_spacing$top = spacing.top) != null ? _spacing$top : 0;
|
|
110
|
+
initialHeights.spacingBottom = (_spacing$bottom = spacing.bottom) != null ? _spacing$bottom : 0;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
var processedSizes = apiRef.current.unstable_applyPipeProcessors('rowHeight', initialHeights, row);
|
|
114
|
+
rowsHeightLookup.current[row.id].sizes = processedSizes;
|
|
115
|
+
var finalRowHeight = Object.values(processedSizes).reduce(function (acc2, value) {
|
|
116
|
+
return acc2 + value;
|
|
87
117
|
}, 0);
|
|
118
|
+
return acc + finalRowHeight;
|
|
119
|
+
}, 0);
|
|
120
|
+
apiRef.current.setState(function (state) {
|
|
88
121
|
return _extends({}, state, {
|
|
89
122
|
rowsMeta: {
|
|
90
123
|
currentPageTotalHeight: currentPageTotalHeight,
|
|
@@ -92,14 +125,18 @@ export var useGridRowsMeta = function useGridRowsMeta(apiRef, props) {
|
|
|
92
125
|
}
|
|
93
126
|
});
|
|
94
127
|
});
|
|
95
|
-
apiRef.current.forceUpdate();
|
|
96
|
-
}, [apiRef, currentPage.rows, getRowSpacing, getRowHeight]);
|
|
97
128
|
|
|
98
|
-
|
|
99
|
-
|
|
129
|
+
if (!hasRowWithAutoHeight.current) {
|
|
130
|
+
// No row has height=auto, so all rows are already measured
|
|
131
|
+
lastMeasuredRowIndex.current = Infinity;
|
|
132
|
+
}
|
|
100
133
|
|
|
101
|
-
|
|
102
|
-
};
|
|
134
|
+
apiRef.current.forceUpdate();
|
|
135
|
+
}, [apiRef, currentPage.rows, rowHeightFromDensity, getRowHeightProp, getRowSpacing, getEstimatedRowHeight]);
|
|
136
|
+
var getRowHeight = React.useCallback(function (rowId) {
|
|
137
|
+
var height = rowsHeightLookup.current[rowId];
|
|
138
|
+
return height ? height.sizes.base : rowHeightFromDensity;
|
|
139
|
+
}, [rowHeightFromDensity]);
|
|
103
140
|
|
|
104
141
|
var getRowInternalSizes = function getRowInternalSizes(rowId) {
|
|
105
142
|
var _rowsHeightLookup$cur2;
|
|
@@ -108,25 +145,55 @@ export var useGridRowsMeta = function useGridRowsMeta(apiRef, props) {
|
|
|
108
145
|
};
|
|
109
146
|
|
|
110
147
|
var setRowHeight = React.useCallback(function (id, height) {
|
|
111
|
-
rowsHeightLookup.current[id] =
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
sizes: _extends({}, rowsHeightLookup.current[id].sizes, {
|
|
115
|
-
base: height
|
|
116
|
-
})
|
|
117
|
-
};
|
|
148
|
+
rowsHeightLookup.current[id].sizes.base = height;
|
|
149
|
+
rowsHeightLookup.current[id].isResized = true;
|
|
150
|
+
rowsHeightLookup.current[id].needsFirstMeasurement = false;
|
|
118
151
|
hydrateRowsMeta();
|
|
119
|
-
}, [hydrateRowsMeta]);
|
|
152
|
+
}, [hydrateRowsMeta]);
|
|
153
|
+
var debouncedHydrateRowsMeta = React.useMemo(function () {
|
|
154
|
+
return debounce(hydrateRowsMeta);
|
|
155
|
+
}, [hydrateRowsMeta]);
|
|
156
|
+
var storeMeasuredRowHeight = React.useCallback(function (id, height) {
|
|
157
|
+
if (!rowsHeightLookup.current[id] || !rowsHeightLookup.current[id].autoHeight) {
|
|
158
|
+
return;
|
|
159
|
+
} // Only trigger hydration if the value is different, otherwise we trigger a loop
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
var needsHydration = rowsHeightLookup.current[id].sizes.base !== height;
|
|
163
|
+
rowsHeightLookup.current[id].needsFirstMeasurement = false;
|
|
164
|
+
rowsHeightLookup.current[id].sizes.base = height;
|
|
165
|
+
|
|
166
|
+
if (needsHydration) {
|
|
167
|
+
debouncedHydrateRowsMeta();
|
|
168
|
+
}
|
|
169
|
+
}, [debouncedHydrateRowsMeta]);
|
|
170
|
+
var rowHasAutoHeight = React.useCallback(function (id) {
|
|
171
|
+
var _rowsHeightLookup$cur3;
|
|
172
|
+
|
|
173
|
+
return ((_rowsHeightLookup$cur3 = rowsHeightLookup.current[id]) == null ? void 0 : _rowsHeightLookup$cur3.autoHeight) || false;
|
|
174
|
+
}, []);
|
|
175
|
+
var getLastMeasuredRowIndex = React.useCallback(function () {
|
|
176
|
+
return lastMeasuredRowIndex.current;
|
|
177
|
+
}, []);
|
|
178
|
+
var setLastMeasuredRowIndex = React.useCallback(function (index) {
|
|
179
|
+
if (hasRowWithAutoHeight.current && index > lastMeasuredRowIndex.current) {
|
|
180
|
+
lastMeasuredRowIndex.current = index;
|
|
181
|
+
}
|
|
182
|
+
}, []); // The effect is used to build the rows meta data - currentPageTotalHeight and positions.
|
|
120
183
|
// Because of variable row height this is needed for the virtualization
|
|
121
184
|
|
|
122
185
|
React.useEffect(function () {
|
|
123
186
|
hydrateRowsMeta();
|
|
124
|
-
}, [
|
|
187
|
+
}, [rowHeightFromDensity, filterState, paginationState, sortingState, hydrateRowsMeta]);
|
|
125
188
|
useGridRegisterPipeApplier(apiRef, 'rowHeight', hydrateRowsMeta);
|
|
126
189
|
var rowsMetaApi = {
|
|
127
|
-
|
|
190
|
+
unstable_getLastMeasuredRowIndex: getLastMeasuredRowIndex,
|
|
191
|
+
unstable_setLastMeasuredRowIndex: setLastMeasuredRowIndex,
|
|
192
|
+
unstable_rowHasAutoHeight: rowHasAutoHeight,
|
|
193
|
+
unstable_getRowHeight: getRowHeight,
|
|
128
194
|
unstable_getRowInternalSizes: getRowInternalSizes,
|
|
129
|
-
unstable_setRowHeight: setRowHeight
|
|
195
|
+
unstable_setRowHeight: setRowHeight,
|
|
196
|
+
unstable_storeRowHeightMeasurement: storeMeasuredRowHeight
|
|
130
197
|
};
|
|
131
198
|
useGridApiMethod(apiRef, rowsMetaApi, 'GridRowsMetaApi');
|
|
132
199
|
};
|
|
@@ -51,7 +51,7 @@ export var useGridSelection = function useGridSelection(apiRef, props) {
|
|
|
51
51
|
return getSelectionModelPropValue(props.selectionModel, gridSelectionStateSelector(apiRef.current.state));
|
|
52
52
|
}, [apiRef, props.selectionModel]);
|
|
53
53
|
var lastRowToggled = React.useRef(null);
|
|
54
|
-
apiRef.current.
|
|
54
|
+
apiRef.current.unstable_registerControlState({
|
|
55
55
|
stateId: 'selection',
|
|
56
56
|
propModel: propSelectionModel,
|
|
57
57
|
propOnChange: props.onSelectionModelChange,
|
|
@@ -4,7 +4,7 @@ import * as React from 'react';
|
|
|
4
4
|
import { unstable_composeClasses as composeClasses } from '@mui/material';
|
|
5
5
|
import { useGridRegisterPipeProcessor } from '../../core/pipeProcessing';
|
|
6
6
|
import { getDataGridUtilityClass } from '../../../constants';
|
|
7
|
-
import { GRID_CHECKBOX_SELECTION_COL_DEF } from '../../../colDef';
|
|
7
|
+
import { GRID_CHECKBOX_SELECTION_COL_DEF, GRID_CHECKBOX_SELECTION_FIELD } from '../../../colDef';
|
|
8
8
|
|
|
9
9
|
var useUtilityClasses = function useUtilityClasses(ownerState) {
|
|
10
10
|
var classes = ownerState.classes;
|
|
@@ -30,16 +30,18 @@ export var useGridSelectionPreProcessors = function useGridSelectionPreProcessor
|
|
|
30
30
|
});
|
|
31
31
|
|
|
32
32
|
var shouldHaveSelectionColumn = props.checkboxSelection;
|
|
33
|
-
var haveSelectionColumn = columnsState.lookup[
|
|
33
|
+
var haveSelectionColumn = columnsState.lookup[GRID_CHECKBOX_SELECTION_FIELD] != null;
|
|
34
34
|
|
|
35
35
|
if (shouldHaveSelectionColumn && !haveSelectionColumn) {
|
|
36
|
-
columnsState.lookup[
|
|
37
|
-
columnsState.all = [
|
|
36
|
+
columnsState.lookup[GRID_CHECKBOX_SELECTION_FIELD] = selectionColumn;
|
|
37
|
+
columnsState.all = [GRID_CHECKBOX_SELECTION_FIELD].concat(_toConsumableArray(columnsState.all));
|
|
38
38
|
} else if (!shouldHaveSelectionColumn && haveSelectionColumn) {
|
|
39
|
-
delete columnsState.lookup[
|
|
39
|
+
delete columnsState.lookup[GRID_CHECKBOX_SELECTION_FIELD];
|
|
40
40
|
columnsState.all = columnsState.all.filter(function (field) {
|
|
41
|
-
return field !==
|
|
41
|
+
return field !== GRID_CHECKBOX_SELECTION_FIELD;
|
|
42
42
|
});
|
|
43
|
+
} else if (shouldHaveSelectionColumn && haveSelectionColumn) {
|
|
44
|
+
columnsState.lookup[GRID_CHECKBOX_SELECTION_FIELD] = _extends({}, selectionColumn, columnsState.lookup[GRID_CHECKBOX_SELECTION_FIELD]);
|
|
43
45
|
}
|
|
44
46
|
|
|
45
47
|
return columnsState;
|
|
@@ -31,7 +31,7 @@ export var sortingStateInitializer = function sortingStateInitializer(state, pro
|
|
|
31
31
|
|
|
32
32
|
export var useGridSorting = function useGridSorting(apiRef, props) {
|
|
33
33
|
var logger = useGridLogger(apiRef, 'useGridSorting');
|
|
34
|
-
apiRef.current.
|
|
34
|
+
apiRef.current.unstable_registerControlState({
|
|
35
35
|
stateId: 'sortModel',
|
|
36
36
|
propModel: props.sortModel,
|
|
37
37
|
propOnChange: props.onSortModelChange,
|
|
@@ -20,7 +20,7 @@ import { gridRowsMetaSelector } from '../rows/gridRowsMetaSelector';
|
|
|
20
20
|
import { getFirstNonSpannedColumnToRender } from '../columns/gridColumnsUtils'; // Uses binary search to avoid looping through all possible positions
|
|
21
21
|
|
|
22
22
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
23
|
-
export function
|
|
23
|
+
export function binarySearch(offset, positions) {
|
|
24
24
|
var sliceStart = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
|
|
25
25
|
var sliceEnd = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : positions.length;
|
|
26
26
|
|
|
@@ -34,8 +34,20 @@ export function getIndexFromScroll(offset, positions) {
|
|
|
34
34
|
|
|
35
35
|
var pivot = sliceStart + Math.floor((sliceEnd - sliceStart) / 2);
|
|
36
36
|
var itemOffset = positions[pivot];
|
|
37
|
-
return offset <= itemOffset ?
|
|
37
|
+
return offset <= itemOffset ? binarySearch(offset, positions, sliceStart, pivot) : binarySearch(offset, positions, pivot + 1, sliceEnd);
|
|
38
38
|
}
|
|
39
|
+
|
|
40
|
+
function exponentialSearch(offset, positions, index) {
|
|
41
|
+
var interval = 1;
|
|
42
|
+
|
|
43
|
+
while (index < positions.length && positions[index] < offset) {
|
|
44
|
+
index += interval;
|
|
45
|
+
interval *= 2;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
return binarySearch(offset, positions, Math.floor(index / 2), Math.min(index, positions.length));
|
|
49
|
+
}
|
|
50
|
+
|
|
39
51
|
export var getRenderableIndexes = function getRenderableIndexes(_ref) {
|
|
40
52
|
var firstIndex = _ref.firstIndex,
|
|
41
53
|
lastIndex = _ref.lastIndex,
|
|
@@ -86,6 +98,22 @@ export var useGridVirtualScroller = function useGridVirtualScroller(props) {
|
|
|
86
98
|
setContainerWidth = _React$useState4[1];
|
|
87
99
|
|
|
88
100
|
var prevTotalWidth = React.useRef(columnsTotalWidth);
|
|
101
|
+
var getNearestIndexToRender = React.useCallback(function (offset) {
|
|
102
|
+
var lastMeasuredIndex = Math.max(0, apiRef.current.unstable_getLastMeasuredRowIndex());
|
|
103
|
+
var allRowsMeasured = lastMeasuredIndex === Infinity;
|
|
104
|
+
|
|
105
|
+
if (allRowsMeasured || rowsMeta.positions[lastMeasuredIndex] >= offset) {
|
|
106
|
+
// If all rows were measured (when no row has "auto" as height) or all rows before the offset
|
|
107
|
+
// were measured, then use a binary search because it's faster.
|
|
108
|
+
return binarySearch(offset, rowsMeta.positions);
|
|
109
|
+
} // Otherwise, use an exponential search.
|
|
110
|
+
// If rows have "auto" as height, their positions will be based on estimated heights.
|
|
111
|
+
// In this case, we can skip several steps until we find a position higher than the offset.
|
|
112
|
+
// Inspired by https://github.com/bvaughn/react-virtualized/blob/master/source/Grid/utils/CellSizeAndPositionManager.js
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
return exponentialSearch(offset, rowsMeta.positions, lastMeasuredIndex);
|
|
116
|
+
}, [apiRef, rowsMeta.positions]);
|
|
89
117
|
var computeRenderContext = React.useCallback(function () {
|
|
90
118
|
if (disableVirtualization) {
|
|
91
119
|
return {
|
|
@@ -98,18 +126,43 @@ export var useGridVirtualScroller = function useGridVirtualScroller(props) {
|
|
|
98
126
|
|
|
99
127
|
var _ref2 = scrollPosition.current,
|
|
100
128
|
top = _ref2.top,
|
|
101
|
-
left = _ref2.left;
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
var
|
|
105
|
-
var
|
|
129
|
+
left = _ref2.left; // Clamp the value because the search may return an index out of bounds.
|
|
130
|
+
// In the last index, this is not needed because Array.slice doesn't include it.
|
|
131
|
+
|
|
132
|
+
var firstRowIndex = Math.min(getNearestIndexToRender(top), rowsMeta.positions.length - 1);
|
|
133
|
+
var lastRowIndex = rootProps.autoHeight ? firstRowIndex + currentPage.rows.length : getNearestIndexToRender(top + rootRef.current.clientHeight);
|
|
134
|
+
var hasRowWithAutoHeight = false;
|
|
135
|
+
var firstColumnIndex = 0;
|
|
136
|
+
var lastColumnIndex = columnPositions.length;
|
|
137
|
+
|
|
138
|
+
var _getRenderableIndexes = getRenderableIndexes({
|
|
139
|
+
firstIndex: firstRowIndex,
|
|
140
|
+
lastIndex: lastRowIndex,
|
|
141
|
+
minFirstIndex: 0,
|
|
142
|
+
maxLastIndex: currentPage.rows.length,
|
|
143
|
+
buffer: rootProps.rowBuffer
|
|
144
|
+
}),
|
|
145
|
+
_getRenderableIndexes2 = _slicedToArray(_getRenderableIndexes, 2),
|
|
146
|
+
firstRowToRender = _getRenderableIndexes2[0],
|
|
147
|
+
lastRowToRender = _getRenderableIndexes2[1];
|
|
148
|
+
|
|
149
|
+
for (var i = firstRowToRender; i < lastRowToRender && !hasRowWithAutoHeight; i += 1) {
|
|
150
|
+
var row = currentPage.rows[i];
|
|
151
|
+
hasRowWithAutoHeight = apiRef.current.unstable_rowHasAutoHeight(row.id);
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
if (!hasRowWithAutoHeight) {
|
|
155
|
+
firstColumnIndex = binarySearch(left, columnPositions);
|
|
156
|
+
lastColumnIndex = binarySearch(left + containerWidth, columnPositions);
|
|
157
|
+
}
|
|
158
|
+
|
|
106
159
|
return {
|
|
107
160
|
firstRowIndex: firstRowIndex,
|
|
108
161
|
lastRowIndex: lastRowIndex,
|
|
109
162
|
firstColumnIndex: firstColumnIndex,
|
|
110
163
|
lastColumnIndex: lastColumnIndex
|
|
111
164
|
};
|
|
112
|
-
}, [disableVirtualization, rowsMeta.positions, rootProps.autoHeight, currentPage.rows
|
|
165
|
+
}, [disableVirtualization, getNearestIndexToRender, rowsMeta.positions.length, rootProps.autoHeight, rootProps.rowBuffer, currentPage.rows, columnPositions, visibleColumns.length, apiRef, containerWidth]);
|
|
113
166
|
React.useEffect(function () {
|
|
114
167
|
if (disableVirtualization) {
|
|
115
168
|
renderZoneRef.current.style.transform = "translate3d(0px, 0px, 0px)";
|
|
@@ -129,26 +182,26 @@ export var useGridVirtualScroller = function useGridVirtualScroller(props) {
|
|
|
129
182
|
}, []);
|
|
130
183
|
useGridApiEventHandler(apiRef, 'resize', handleResize);
|
|
131
184
|
var updateRenderZonePosition = React.useCallback(function (nextRenderContext) {
|
|
132
|
-
var
|
|
185
|
+
var _getRenderableIndexes3 = getRenderableIndexes({
|
|
133
186
|
firstIndex: nextRenderContext.firstRowIndex,
|
|
134
187
|
lastIndex: nextRenderContext.lastRowIndex,
|
|
135
188
|
minFirstIndex: 0,
|
|
136
189
|
maxLastIndex: currentPage.rows.length,
|
|
137
190
|
buffer: rootProps.rowBuffer
|
|
138
191
|
}),
|
|
139
|
-
|
|
140
|
-
firstRowToRender =
|
|
141
|
-
lastRowToRender =
|
|
192
|
+
_getRenderableIndexes4 = _slicedToArray(_getRenderableIndexes3, 2),
|
|
193
|
+
firstRowToRender = _getRenderableIndexes4[0],
|
|
194
|
+
lastRowToRender = _getRenderableIndexes4[1];
|
|
142
195
|
|
|
143
|
-
var
|
|
196
|
+
var _getRenderableIndexes5 = getRenderableIndexes({
|
|
144
197
|
firstIndex: nextRenderContext.firstColumnIndex,
|
|
145
198
|
lastIndex: nextRenderContext.lastColumnIndex,
|
|
146
199
|
minFirstIndex: renderZoneMinColumnIndex,
|
|
147
200
|
maxLastIndex: renderZoneMaxColumnIndex,
|
|
148
201
|
buffer: rootProps.columnBuffer
|
|
149
202
|
}),
|
|
150
|
-
|
|
151
|
-
initialFirstColumnToRender =
|
|
203
|
+
_getRenderableIndexes6 = _slicedToArray(_getRenderableIndexes5, 1),
|
|
204
|
+
initialFirstColumnToRender = _getRenderableIndexes6[0];
|
|
152
205
|
|
|
153
206
|
var firstColumnToRender = getFirstNonSpannedColumnToRender({
|
|
154
207
|
firstColumnToRender: initialFirstColumnToRender,
|
|
@@ -248,7 +301,8 @@ export var useGridVirtualScroller = function useGridVirtualScroller(props) {
|
|
|
248
301
|
_params$maxLastColumn = params.maxLastColumn,
|
|
249
302
|
maxLastColumn = _params$maxLastColumn === void 0 ? renderZoneMaxColumnIndex : _params$maxLastColumn,
|
|
250
303
|
_params$availableSpac = params.availableSpace,
|
|
251
|
-
availableSpace = _params$availableSpac === void 0 ? containerWidth : _params$availableSpac
|
|
304
|
+
availableSpace = _params$availableSpac === void 0 ? containerWidth : _params$availableSpac,
|
|
305
|
+
ignoreAutoHeight = params.ignoreAutoHeight;
|
|
252
306
|
|
|
253
307
|
if (!currentPage.range || !nextRenderContext || availableSpace == null) {
|
|
254
308
|
return null;
|
|
@@ -257,16 +311,16 @@ export var useGridVirtualScroller = function useGridVirtualScroller(props) {
|
|
|
257
311
|
var rowBuffer = !disableVirtualization ? rootProps.rowBuffer : 0;
|
|
258
312
|
var columnBuffer = !disableVirtualization ? rootProps.columnBuffer : 0;
|
|
259
313
|
|
|
260
|
-
var
|
|
314
|
+
var _getRenderableIndexes7 = getRenderableIndexes({
|
|
261
315
|
firstIndex: nextRenderContext.firstRowIndex,
|
|
262
316
|
lastIndex: nextRenderContext.lastRowIndex,
|
|
263
317
|
minFirstIndex: 0,
|
|
264
318
|
maxLastIndex: currentPage.rows.length,
|
|
265
319
|
buffer: rowBuffer
|
|
266
320
|
}),
|
|
267
|
-
|
|
268
|
-
firstRowToRender =
|
|
269
|
-
lastRowToRender =
|
|
321
|
+
_getRenderableIndexes8 = _slicedToArray(_getRenderableIndexes7, 2),
|
|
322
|
+
firstRowToRender = _getRenderableIndexes8[0],
|
|
323
|
+
lastRowToRender = _getRenderableIndexes8[1];
|
|
270
324
|
|
|
271
325
|
var renderedRows = [];
|
|
272
326
|
|
|
@@ -280,16 +334,16 @@ export var useGridVirtualScroller = function useGridVirtualScroller(props) {
|
|
|
280
334
|
});
|
|
281
335
|
}
|
|
282
336
|
|
|
283
|
-
var
|
|
337
|
+
var _getRenderableIndexes9 = getRenderableIndexes({
|
|
284
338
|
firstIndex: nextRenderContext.firstColumnIndex,
|
|
285
339
|
lastIndex: nextRenderContext.lastColumnIndex,
|
|
286
340
|
minFirstIndex: minFirstColumn,
|
|
287
341
|
maxLastIndex: maxLastColumn,
|
|
288
342
|
buffer: columnBuffer
|
|
289
343
|
}),
|
|
290
|
-
|
|
291
|
-
initialFirstColumnToRender =
|
|
292
|
-
lastColumnToRender =
|
|
344
|
+
_getRenderableIndexes10 = _slicedToArray(_getRenderableIndexes9, 2),
|
|
345
|
+
initialFirstColumnToRender = _getRenderableIndexes10[0],
|
|
346
|
+
lastColumnToRender = _getRenderableIndexes10[1];
|
|
293
347
|
|
|
294
348
|
var firstColumnToRender = getFirstNonSpannedColumnToRender({
|
|
295
349
|
firstColumnToRender: initialFirstColumnToRender,
|
|
@@ -308,7 +362,7 @@ export var useGridVirtualScroller = function useGridVirtualScroller(props) {
|
|
|
308
362
|
_id = _renderedRows$_i.id,
|
|
309
363
|
_model = _renderedRows$_i.model;
|
|
310
364
|
var lastVisibleRowIndex = firstRowToRender + _i === currentPage.rows.length - 1;
|
|
311
|
-
var
|
|
365
|
+
var baseRowHeight = !apiRef.current.unstable_rowHasAutoHeight(_id) || ignoreAutoHeight ? apiRef.current.unstable_getRowHeight(_id) : 'auto';
|
|
312
366
|
var isSelected = void 0;
|
|
313
367
|
|
|
314
368
|
if (selectedRowsLookup[_id] == null) {
|
|
@@ -322,7 +376,7 @@ export var useGridVirtualScroller = function useGridVirtualScroller(props) {
|
|
|
322
376
|
rows.push( /*#__PURE__*/_jsx(rootProps.components.Row, _extends({
|
|
323
377
|
row: _model,
|
|
324
378
|
rowId: _id,
|
|
325
|
-
rowHeight:
|
|
379
|
+
rowHeight: baseRowHeight,
|
|
326
380
|
cellFocus: cellFocus // TODO move to inside the row
|
|
327
381
|
,
|
|
328
382
|
cellTabIndex: cellTabIndex // TODO move to inside the row
|
|
@@ -381,6 +435,10 @@ export var useGridVirtualScroller = function useGridVirtualScroller(props) {
|
|
|
381
435
|
rootStyle.overflowX = 'hidden';
|
|
382
436
|
}
|
|
383
437
|
|
|
438
|
+
if (rootProps.autoHeight) {
|
|
439
|
+
rootStyle.overflowY = 'hidden';
|
|
440
|
+
}
|
|
441
|
+
|
|
384
442
|
var getRenderContext = React.useCallback(function () {
|
|
385
443
|
return prevRenderContext.current;
|
|
386
444
|
}, []);
|
package/legacy/index.js
CHANGED
package/legacy/locales/arSD.js
CHANGED
|
@@ -119,6 +119,7 @@ var arSDGrid = {
|
|
|
119
119
|
return "\u0625\u064A\u0642\u0627\u0641 \u0627\u0644\u062A\u062C\u0645\u064A\u0639 \u062D\u0633\u0628 ".concat(name);
|
|
120
120
|
},
|
|
121
121
|
// Master/detail
|
|
122
|
+
// detailPanelToggle: 'Detail panel toggle',
|
|
122
123
|
expandDetailPanel: 'توسيع',
|
|
123
124
|
collapseDetailPanel: 'طوي' // Row reordering text
|
|
124
125
|
// rowReorderingHeaderName: 'Row reordering',
|
package/legacy/locales/bgBG.js
CHANGED
|
@@ -119,6 +119,7 @@ var bgBGGrid = {
|
|
|
119
119
|
return "\u0421\u043F\u0440\u0438 \u0433\u0440\u0443\u043F\u0438\u0440\u0430\u043D\u0435 \u043F\u043E ".concat(name);
|
|
120
120
|
},
|
|
121
121
|
// Master/detail
|
|
122
|
+
// detailPanelToggle: 'Detail panel toggle',
|
|
122
123
|
expandDetailPanel: 'Разгъване',
|
|
123
124
|
collapseDetailPanel: 'Свиване' // Row reordering text
|
|
124
125
|
// rowReorderingHeaderName: 'Row reordering',
|
package/legacy/locales/csCZ.js
CHANGED
|
@@ -145,6 +145,7 @@ var csCZGrid = {
|
|
|
145
145
|
unGroupColumn: function unGroupColumn(name) {
|
|
146
146
|
return "P\u0159estat zoskupovat podle ".concat(name);
|
|
147
147
|
} // Master/detail
|
|
148
|
+
// detailPanelToggle: 'Detail panel toggle',
|
|
148
149
|
// expandDetailPanel: 'Expand',
|
|
149
150
|
// collapseDetailPanel: 'Collapse',
|
|
150
151
|
// Row reordering text
|
package/legacy/locales/daDK.js
CHANGED
|
@@ -119,6 +119,7 @@ var daDKGrid = {
|
|
|
119
119
|
return "Fjern grupp\xE9ring efter ".concat(name);
|
|
120
120
|
},
|
|
121
121
|
// Master/detail
|
|
122
|
+
// detailPanelToggle: 'Detail panel toggle',
|
|
122
123
|
expandDetailPanel: 'Udvid',
|
|
123
124
|
collapseDetailPanel: 'Kollaps' // Row reordering text
|
|
124
125
|
// rowReorderingHeaderName: 'Row reordering',
|
package/legacy/locales/deDE.js
CHANGED
package/legacy/locales/elGR.js
CHANGED
|
@@ -113,6 +113,7 @@ var elGRGrid = {
|
|
|
113
113
|
// groupColumn: name => `Group by ${name}`,
|
|
114
114
|
// unGroupColumn: name => `Stop grouping by ${name}`,
|
|
115
115
|
// Master/detail
|
|
116
|
+
// detailPanelToggle: 'Detail panel toggle',
|
|
116
117
|
// expandDetailPanel: 'Expand',
|
|
117
118
|
// collapseDetailPanel: 'Collapse',
|
|
118
119
|
// Row reordering text
|
package/legacy/locales/esES.js
CHANGED
|
@@ -114,6 +114,7 @@ var esESGrid = {
|
|
|
114
114
|
// groupColumn: name => `Group by ${name}`,
|
|
115
115
|
// unGroupColumn: name => `Stop grouping by ${name}`,
|
|
116
116
|
// Master/detail
|
|
117
|
+
// detailPanelToggle: 'Detail panel toggle',
|
|
117
118
|
// expandDetailPanel: 'Expand',
|
|
118
119
|
// collapseDetailPanel: 'Collapse',
|
|
119
120
|
// Row reordering text
|
package/legacy/locales/faIR.js
CHANGED
|
@@ -119,6 +119,7 @@ var faIRGrid = {
|
|
|
119
119
|
return "\u0644\u063A\u0648 \u06AF\u0631\u0648\u0647\u200C\u0628\u0646\u062F\u06CC \u0628\u0631\u0627\u0633\u0627\u0633 ".concat(name);
|
|
120
120
|
},
|
|
121
121
|
// Master/detail
|
|
122
|
+
// detailPanelToggle: 'Detail panel toggle',
|
|
122
123
|
expandDetailPanel: 'بازکردن پنل جزئیات',
|
|
123
124
|
collapseDetailPanel: 'بستن پنل جزئیات' // Row reordering text
|
|
124
125
|
// rowReorderingHeaderName: 'Row reordering',
|
package/legacy/locales/fiFI.js
CHANGED
|
@@ -114,6 +114,7 @@ var fiFIGrid = {
|
|
|
114
114
|
// groupColumn: name => `Group by ${name}`,
|
|
115
115
|
// unGroupColumn: name => `Stop grouping by ${name}`,
|
|
116
116
|
// Master/detail
|
|
117
|
+
// detailPanelToggle: 'Detail panel toggle',
|
|
117
118
|
// expandDetailPanel: 'Expand',
|
|
118
119
|
// collapseDetailPanel: 'Collapse',
|
|
119
120
|
// Row reordering text
|
package/legacy/locales/frFR.js
CHANGED
|
@@ -118,6 +118,7 @@ var frFRGrid = {
|
|
|
118
118
|
unGroupColumn: function unGroupColumn(name) {
|
|
119
119
|
return "Arr\xEAter de grouper par ".concat(name);
|
|
120
120
|
} // Master/detail
|
|
121
|
+
// detailPanelToggle: 'Detail panel toggle',
|
|
121
122
|
// expandDetailPanel: 'Expand',
|
|
122
123
|
// collapseDetailPanel: 'Collapse',
|
|
123
124
|
// Row reordering text
|