@mui/x-data-grid 7.0.0-alpha.8 → 7.0.0-alpha.9
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 +379 -2
- package/DataGrid/DataGrid.js +6 -6
- package/DataGrid/useDataGridComponent.js +2 -1
- package/DataGrid/useDataGridProps.js +1 -0
- package/README.md +1 -1
- package/components/GridColumnHeaders.d.ts +3 -2
- package/components/GridColumnHeaders.js +3 -11
- package/components/GridDetailPanels.d.ts +5 -0
- package/components/GridDetailPanels.js +4 -0
- package/components/GridHeaders.d.ts +4 -0
- package/components/GridHeaders.js +53 -0
- package/components/GridPinnedRows.d.ts +7 -0
- package/components/GridPinnedRows.js +4 -0
- package/components/GridRow.d.ts +7 -4
- package/components/GridRow.js +260 -97
- package/components/GridScrollbarFillerCell.d.ts +7 -0
- package/components/GridScrollbarFillerCell.js +39 -0
- package/components/base/GridBody.d.ts +2 -13
- package/components/base/GridBody.js +2 -116
- package/components/base/GridOverlays.js +10 -21
- package/components/cell/GridActionsCellItem.d.ts +2 -2
- package/components/cell/GridCell.d.ts +15 -21
- package/components/cell/GridCell.js +67 -372
- package/components/columnHeaders/GridBaseColumnHeaders.js +1 -6
- package/components/columnHeaders/GridColumnHeaderItem.d.ts +2 -1
- package/components/columnHeaders/GridColumnHeaderItem.js +7 -3
- package/components/columnHeaders/GridColumnHeaderSortIcon.d.ts +1 -0
- package/components/columnHeaders/GridColumnHeaderSortIcon.js +5 -2
- package/components/columnHeaders/GridColumnHeadersInner.js +1 -2
- package/components/containers/GridRoot.js +18 -15
- package/components/containers/GridRootStyles.js +307 -204
- package/components/menu/columnMenu/menuItems/GridColumnMenuSortItem.js +1 -1
- package/components/panel/GridPanel.js +3 -4
- package/components/panel/filterPanel/GridFilterForm.d.ts +6 -4
- package/components/panel/filterPanel/GridFilterForm.js +31 -14
- package/components/panel/filterPanel/GridFilterPanel.js +46 -20
- package/components/toolbar/GridToolbarColumnsButton.d.ts +13 -1
- package/components/toolbar/GridToolbarColumnsButton.js +40 -22
- package/components/toolbar/GridToolbarDensitySelector.d.ts +13 -1
- package/components/toolbar/GridToolbarDensitySelector.js +40 -22
- package/components/toolbar/GridToolbarExport.d.ts +10 -1
- package/components/toolbar/GridToolbarExport.js +6 -1
- package/components/toolbar/GridToolbarExportContainer.d.ts +15 -1
- package/components/toolbar/GridToolbarExportContainer.js +41 -23
- package/components/toolbar/GridToolbarFilterButton.d.ts +5 -4
- package/components/toolbar/GridToolbarFilterButton.js +6 -10
- package/components/virtualization/GridBottomContainer.d.ts +2 -0
- package/components/virtualization/GridBottomContainer.js +25 -0
- package/components/{containers → virtualization}/GridMainContainer.d.ts +2 -0
- package/components/virtualization/GridMainContainer.js +20 -0
- package/components/virtualization/GridTopContainer.d.ts +2 -0
- package/components/virtualization/GridTopContainer.js +35 -0
- package/components/virtualization/GridVirtualScrollbar.d.ts +7 -0
- package/components/virtualization/GridVirtualScrollbar.js +131 -0
- package/components/virtualization/GridVirtualScroller.d.ts +4 -4
- package/components/virtualization/GridVirtualScroller.js +69 -16
- package/components/virtualization/GridVirtualScrollerFiller.d.ts +4 -0
- package/components/virtualization/GridVirtualScrollerFiller.js +71 -0
- package/components/virtualization/GridVirtualScrollerRenderZone.js +2 -1
- package/constants/defaultGridSlotsComponents.js +6 -2
- package/constants/gridClasses.d.ts +60 -8
- package/constants/gridClasses.js +1 -1
- package/hooks/core/gridCoreSelector.d.ts +6 -0
- package/hooks/core/gridCoreSelector.js +5 -0
- package/hooks/core/useGridInitialization.js +4 -0
- package/hooks/core/useGridRefs.d.ts +3 -0
- package/hooks/core/useGridRefs.js +13 -0
- package/hooks/core/useGridTheme.d.ts +3 -0
- package/hooks/core/useGridTheme.js +19 -0
- package/hooks/features/columnGrouping/useGridColumnGrouping.d.ts +1 -1
- package/hooks/features/columnGrouping/useGridColumnGrouping.js +7 -14
- package/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +13 -18
- package/hooks/features/columnHeaders/useGridColumnHeaders.js +68 -162
- package/hooks/features/columnMenu/useGridColumnMenu.js +28 -23
- package/hooks/features/columns/gridColumnsInterfaces.d.ts +17 -0
- package/hooks/features/columns/gridColumnsInterfaces.js +9 -1
- package/hooks/features/columns/gridColumnsSelector.d.ts +14 -1
- package/hooks/features/columns/gridColumnsSelector.js +52 -0
- package/hooks/features/columns/gridColumnsUtils.d.ts +1 -5
- package/hooks/features/columns/gridColumnsUtils.js +10 -12
- package/hooks/features/columns/index.d.ts +2 -2
- package/hooks/features/columns/index.js +2 -1
- package/hooks/features/columns/useGridColumnSpanning.js +62 -61
- package/hooks/features/columns/useGridColumns.js +20 -23
- package/hooks/features/dimensions/gridDimensionsApi.d.ts +60 -11
- package/hooks/features/dimensions/gridDimensionsSelectors.d.ts +2 -0
- package/hooks/features/dimensions/gridDimensionsSelectors.js +1 -0
- package/hooks/features/dimensions/index.d.ts +2 -0
- package/hooks/features/dimensions/index.js +1 -0
- package/hooks/features/dimensions/useGridDimensions.d.ts +7 -1
- package/hooks/features/dimensions/useGridDimensions.js +216 -148
- package/hooks/features/export/serializers/csvSerializer.js +2 -2
- package/hooks/features/filter/useGridFilter.js +3 -3
- package/hooks/features/focus/gridFocusStateSelector.d.ts +2 -2
- package/hooks/features/focus/gridFocusStateSelector.js +2 -6
- package/hooks/features/focus/useGridFocus.js +3 -3
- package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +3 -16
- package/hooks/features/pagination/useGridPagination.js +3 -5
- package/hooks/features/rows/gridRowsInterfaces.d.ts +1 -0
- package/hooks/features/rows/gridRowsSelector.d.ts +2 -2
- package/hooks/features/rows/gridRowsSelector.js +5 -5
- package/hooks/features/rows/gridRowsUtils.d.ts +1 -1
- package/hooks/features/rows/gridRowsUtils.js +4 -4
- package/hooks/features/rows/useGridRowsMeta.js +7 -4
- package/hooks/features/scroll/useGridScroll.js +8 -10
- package/hooks/features/sorting/gridSortingUtils.js +1 -1
- package/hooks/features/sorting/useGridSorting.d.ts +1 -1
- package/hooks/features/sorting/useGridSorting.js +15 -10
- package/hooks/features/virtualization/gridVirtualizationSelectors.d.ts +14 -0
- package/hooks/features/virtualization/gridVirtualizationSelectors.js +22 -2
- package/hooks/features/virtualization/useGridVirtualScroller.d.ts +27 -42
- package/hooks/features/virtualization/useGridVirtualScroller.js +441 -438
- package/hooks/features/virtualization/useGridVirtualization.d.ts +8 -0
- package/hooks/features/virtualization/useGridVirtualization.js +8 -1
- package/hooks/utils/index.d.ts +3 -0
- package/hooks/utils/index.js +4 -1
- package/hooks/utils/useGridAriaAttributes.js +1 -2
- package/hooks/utils/useGridNativeEventListener.js +4 -9
- package/hooks/utils/useResizeObserver.d.ts +2 -0
- package/hooks/utils/useResizeObserver.js +36 -0
- package/hooks/utils/useRunOnce.d.ts +5 -0
- package/hooks/utils/useRunOnce.js +18 -0
- package/index.js +1 -1
- package/internals/index.d.ts +12 -9
- package/internals/index.js +9 -7
- package/legacy/DataGrid/DataGrid.js +6 -6
- package/legacy/DataGrid/useDataGridComponent.js +2 -1
- package/legacy/DataGrid/useDataGridProps.js +1 -0
- package/legacy/components/GridColumnHeaders.js +3 -11
- package/legacy/components/GridDetailPanels.js +4 -0
- package/legacy/components/GridHeaders.js +53 -0
- package/legacy/components/GridPinnedRows.js +4 -0
- package/legacy/components/GridRow.js +258 -98
- package/legacy/components/GridScrollbarFillerCell.js +36 -0
- package/legacy/components/base/GridBody.js +2 -114
- package/legacy/components/base/GridOverlays.js +10 -25
- package/legacy/components/cell/GridCell.js +69 -377
- package/legacy/components/columnHeaders/GridBaseColumnHeaders.js +1 -6
- package/legacy/components/columnHeaders/GridColumnHeaderItem.js +7 -3
- package/legacy/components/columnHeaders/GridColumnHeaderSortIcon.js +5 -2
- package/legacy/components/columnHeaders/GridColumnHeadersInner.js +1 -2
- package/legacy/components/containers/GridRoot.js +18 -15
- package/legacy/components/containers/GridRootStyles.js +215 -137
- package/legacy/components/menu/columnMenu/menuItems/GridColumnMenuSortItem.js +1 -1
- package/legacy/components/panel/GridPanel.js +3 -4
- package/legacy/components/panel/filterPanel/GridFilterForm.js +30 -13
- package/legacy/components/panel/filterPanel/GridFilterPanel.js +49 -20
- package/legacy/components/toolbar/GridToolbarColumnsButton.js +40 -21
- package/legacy/components/toolbar/GridToolbarDensitySelector.js +40 -21
- package/legacy/components/toolbar/GridToolbarExport.js +6 -1
- package/legacy/components/toolbar/GridToolbarExportContainer.js +40 -21
- package/legacy/components/toolbar/GridToolbarFilterButton.js +6 -10
- package/legacy/components/virtualization/GridBottomContainer.js +25 -0
- package/legacy/components/virtualization/GridMainContainer.js +20 -0
- package/legacy/components/virtualization/GridTopContainer.js +35 -0
- package/legacy/components/virtualization/GridVirtualScrollbar.js +129 -0
- package/legacy/components/virtualization/GridVirtualScroller.js +67 -16
- package/legacy/components/virtualization/GridVirtualScrollerFiller.js +70 -0
- package/legacy/components/virtualization/GridVirtualScrollerRenderZone.js +2 -1
- package/legacy/constants/defaultGridSlotsComponents.js +6 -2
- package/legacy/constants/gridClasses.js +1 -1
- package/legacy/hooks/core/gridCoreSelector.js +7 -0
- package/legacy/hooks/core/useGridInitialization.js +4 -0
- package/legacy/hooks/core/useGridRefs.js +13 -0
- package/legacy/hooks/core/useGridTheme.js +21 -0
- package/legacy/hooks/features/columnGrouping/useGridColumnGrouping.js +7 -14
- package/legacy/hooks/features/columnHeaders/useGridColumnHeaders.js +69 -181
- package/legacy/hooks/features/columnMenu/useGridColumnMenu.js +28 -23
- package/legacy/hooks/features/columns/gridColumnsInterfaces.js +9 -1
- package/legacy/hooks/features/columns/gridColumnsSelector.js +62 -0
- package/legacy/hooks/features/columns/gridColumnsUtils.js +10 -16
- package/legacy/hooks/features/columns/index.js +2 -1
- package/legacy/hooks/features/columns/useGridColumnSpanning.js +60 -59
- package/legacy/hooks/features/columns/useGridColumns.js +22 -23
- package/legacy/hooks/features/dimensions/gridDimensionsSelectors.js +3 -0
- package/legacy/hooks/features/dimensions/index.js +1 -0
- package/legacy/hooks/features/dimensions/useGridDimensions.js +226 -151
- package/legacy/hooks/features/export/serializers/csvSerializer.js +2 -2
- package/legacy/hooks/features/filter/useGridFilter.js +3 -3
- package/legacy/hooks/features/focus/gridFocusStateSelector.js +2 -6
- package/legacy/hooks/features/focus/useGridFocus.js +3 -3
- package/legacy/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +3 -16
- package/legacy/hooks/features/pagination/useGridPagination.js +3 -5
- package/legacy/hooks/features/rows/gridRowsSelector.js +5 -5
- package/legacy/hooks/features/rows/gridRowsUtils.js +4 -4
- package/legacy/hooks/features/rows/useGridRowsMeta.js +7 -4
- package/legacy/hooks/features/scroll/useGridScroll.js +8 -10
- package/legacy/hooks/features/sorting/gridSortingUtils.js +1 -1
- package/legacy/hooks/features/sorting/useGridSorting.js +15 -10
- package/legacy/hooks/features/virtualization/gridVirtualizationSelectors.js +29 -1
- package/legacy/hooks/features/virtualization/useGridVirtualScroller.js +490 -483
- package/legacy/hooks/features/virtualization/useGridVirtualization.js +8 -1
- package/legacy/hooks/utils/index.js +4 -1
- package/legacy/hooks/utils/useGridAriaAttributes.js +1 -2
- package/legacy/hooks/utils/useGridNativeEventListener.js +4 -9
- package/legacy/hooks/utils/useResizeObserver.js +36 -0
- package/legacy/hooks/utils/useRunOnce.js +18 -0
- package/legacy/index.js +1 -1
- package/legacy/internals/index.js +9 -7
- package/legacy/locales/hrHR.js +161 -0
- package/legacy/locales/index.js +4 -1
- package/legacy/locales/ptPT.js +161 -0
- package/legacy/locales/zhHK.js +161 -0
- package/legacy/models/index.js +0 -1
- package/legacy/models/params/index.js +1 -2
- package/legacy/utils/utils.js +10 -1
- package/locales/hrHR.d.ts +1 -0
- package/locales/hrHR.js +149 -0
- package/locales/index.d.ts +3 -0
- package/locales/index.js +4 -1
- package/locales/ptPT.d.ts +1 -0
- package/locales/ptPT.js +149 -0
- package/locales/zhHK.d.ts +1 -0
- package/locales/zhHK.js +149 -0
- package/models/api/gridColumnGroupingApi.d.ts +2 -2
- package/models/api/gridCoreApi.d.ts +16 -16
- package/models/api/gridRowsMetaApi.d.ts +1 -1
- package/models/api/gridVirtualizationApi.d.ts +2 -3
- package/models/events/gridEventLookup.d.ts +3 -3
- package/models/gridFilterModel.d.ts +1 -1
- package/models/gridSlotsComponent.d.ts +16 -2
- package/models/gridStateCommunity.d.ts +5 -1
- package/models/index.d.ts +0 -1
- package/models/index.js +0 -1
- package/models/params/index.d.ts +0 -1
- package/models/params/index.js +1 -2
- package/models/props/DataGridProps.d.ts +6 -11
- package/modern/DataGrid/DataGrid.js +6 -6
- package/modern/DataGrid/useDataGridComponent.js +2 -1
- package/modern/DataGrid/useDataGridProps.js +1 -0
- package/modern/components/GridColumnHeaders.js +3 -11
- package/modern/components/GridDetailPanels.js +4 -0
- package/modern/components/GridHeaders.js +53 -0
- package/modern/components/GridPinnedRows.js +4 -0
- package/modern/components/GridRow.js +258 -96
- package/modern/components/GridScrollbarFillerCell.js +39 -0
- package/modern/components/base/GridBody.js +2 -116
- package/modern/components/base/GridOverlays.js +10 -16
- package/modern/components/cell/GridCell.js +65 -369
- package/modern/components/columnHeaders/GridBaseColumnHeaders.js +1 -6
- package/modern/components/columnHeaders/GridColumnHeaderItem.js +7 -3
- package/modern/components/columnHeaders/GridColumnHeaderSortIcon.js +5 -2
- package/modern/components/columnHeaders/GridColumnHeadersInner.js +1 -1
- package/modern/components/containers/GridRoot.js +18 -14
- package/modern/components/containers/GridRootStyles.js +307 -204
- package/modern/components/menu/columnMenu/menuItems/GridColumnMenuSortItem.js +1 -1
- package/modern/components/panel/GridPanel.js +3 -4
- package/modern/components/panel/filterPanel/GridFilterForm.js +30 -13
- package/modern/components/panel/filterPanel/GridFilterPanel.js +46 -20
- package/modern/components/toolbar/GridToolbarColumnsButton.js +38 -21
- package/modern/components/toolbar/GridToolbarDensitySelector.js +38 -21
- package/modern/components/toolbar/GridToolbarExport.js +6 -1
- package/modern/components/toolbar/GridToolbarExportContainer.js +39 -22
- package/modern/components/toolbar/GridToolbarFilterButton.js +6 -10
- package/modern/components/virtualization/GridBottomContainer.js +25 -0
- package/modern/components/virtualization/GridMainContainer.js +20 -0
- package/modern/components/virtualization/GridTopContainer.js +35 -0
- package/modern/components/virtualization/GridVirtualScrollbar.js +131 -0
- package/modern/components/virtualization/GridVirtualScroller.js +69 -16
- package/modern/components/virtualization/GridVirtualScrollerFiller.js +71 -0
- package/modern/components/virtualization/GridVirtualScrollerRenderZone.js +2 -1
- package/modern/constants/defaultGridSlotsComponents.js +6 -2
- package/modern/constants/gridClasses.js +1 -1
- package/modern/hooks/core/gridCoreSelector.js +5 -0
- package/modern/hooks/core/useGridInitialization.js +4 -0
- package/modern/hooks/core/useGridRefs.js +13 -0
- package/modern/hooks/core/useGridTheme.js +19 -0
- package/modern/hooks/features/columnGrouping/useGridColumnGrouping.js +5 -12
- package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +67 -160
- package/modern/hooks/features/columnMenu/useGridColumnMenu.js +28 -23
- package/modern/hooks/features/columns/gridColumnsInterfaces.js +9 -1
- package/modern/hooks/features/columns/gridColumnsSelector.js +51 -0
- package/modern/hooks/features/columns/gridColumnsUtils.js +10 -12
- package/modern/hooks/features/columns/index.js +2 -1
- package/modern/hooks/features/columns/useGridColumnSpanning.js +62 -61
- package/modern/hooks/features/columns/useGridColumns.js +19 -21
- package/modern/hooks/features/dimensions/gridDimensionsSelectors.js +1 -0
- package/modern/hooks/features/dimensions/index.js +1 -0
- package/modern/hooks/features/dimensions/useGridDimensions.js +214 -146
- package/modern/hooks/features/export/serializers/csvSerializer.js +2 -2
- package/modern/hooks/features/filter/useGridFilter.js +3 -3
- package/modern/hooks/features/focus/gridFocusStateSelector.js +2 -6
- package/modern/hooks/features/focus/useGridFocus.js +3 -3
- package/modern/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +3 -16
- package/modern/hooks/features/pagination/useGridPagination.js +3 -5
- package/modern/hooks/features/rows/gridRowsSelector.js +2 -2
- package/modern/hooks/features/rows/gridRowsUtils.js +4 -4
- package/modern/hooks/features/rows/useGridRowsMeta.js +7 -4
- package/modern/hooks/features/scroll/useGridScroll.js +8 -9
- package/modern/hooks/features/sorting/gridSortingUtils.js +1 -1
- package/modern/hooks/features/sorting/useGridSorting.js +15 -10
- package/modern/hooks/features/virtualization/gridVirtualizationSelectors.js +22 -2
- package/modern/hooks/features/virtualization/useGridVirtualScroller.js +435 -432
- package/modern/hooks/features/virtualization/useGridVirtualization.js +8 -1
- package/modern/hooks/utils/index.js +4 -1
- package/modern/hooks/utils/useGridAriaAttributes.js +1 -1
- package/modern/hooks/utils/useGridNativeEventListener.js +3 -9
- package/modern/hooks/utils/useResizeObserver.js +36 -0
- package/modern/hooks/utils/useRunOnce.js +18 -0
- package/modern/index.js +1 -1
- package/modern/internals/index.js +9 -7
- package/modern/locales/hrHR.js +149 -0
- package/modern/locales/index.js +4 -1
- package/modern/locales/ptPT.js +149 -0
- package/modern/locales/zhHK.js +149 -0
- package/modern/models/index.js +0 -1
- package/modern/models/params/index.js +1 -2
- package/modern/utils/utils.js +10 -1
- package/node/DataGrid/DataGrid.js +6 -6
- package/node/DataGrid/useDataGridComponent.js +1 -0
- package/node/DataGrid/useDataGridProps.js +1 -0
- package/node/components/GridColumnHeaders.js +3 -11
- package/node/components/GridDetailPanels.js +10 -0
- package/node/components/GridHeaders.js +60 -0
- package/node/components/GridPinnedRows.js +10 -0
- package/node/components/GridRow.js +256 -94
- package/node/components/GridScrollbarFillerCell.js +47 -0
- package/node/components/base/GridBody.js +7 -118
- package/node/components/base/GridOverlays.js +9 -15
- package/node/components/cell/GridCell.js +66 -369
- package/node/components/columnHeaders/GridBaseColumnHeaders.js +1 -6
- package/node/components/columnHeaders/GridColumnHeaderItem.js +8 -4
- package/node/components/columnHeaders/GridColumnHeaderSortIcon.js +5 -2
- package/node/components/columnHeaders/GridColumnHeadersInner.js +1 -1
- package/node/components/containers/GridRoot.js +17 -14
- package/node/components/containers/GridRootStyles.js +175 -72
- package/node/components/menu/columnMenu/menuItems/GridColumnMenuSortItem.js +1 -1
- package/node/components/panel/GridPanel.js +3 -4
- package/node/components/panel/filterPanel/GridFilterForm.js +29 -12
- package/node/components/panel/filterPanel/GridFilterPanel.js +45 -19
- package/node/components/toolbar/GridToolbarColumnsButton.js +36 -20
- package/node/components/toolbar/GridToolbarDensitySelector.js +36 -20
- package/node/components/toolbar/GridToolbarExport.js +6 -1
- package/node/components/toolbar/GridToolbarExportContainer.js +37 -21
- package/node/components/toolbar/GridToolbarFilterButton.js +6 -10
- package/node/components/virtualization/GridBottomContainer.js +34 -0
- package/node/components/{containers → virtualization}/GridMainContainer.js +7 -29
- package/node/components/virtualization/GridTopContainer.js +44 -0
- package/node/components/virtualization/GridVirtualScrollbar.js +138 -0
- package/node/components/virtualization/GridVirtualScroller.js +69 -17
- package/node/components/virtualization/GridVirtualScrollerFiller.js +77 -0
- package/node/components/virtualization/GridVirtualScrollerRenderZone.js +2 -1
- package/node/constants/defaultGridSlotsComponents.js +5 -1
- package/node/constants/gridClasses.js +1 -1
- package/node/hooks/core/gridCoreSelector.js +12 -0
- package/node/hooks/core/useGridInitialization.js +4 -0
- package/node/hooks/core/useGridRefs.js +22 -0
- package/node/hooks/core/useGridTheme.js +29 -0
- package/node/hooks/features/columnGrouping/useGridColumnGrouping.js +5 -12
- package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +65 -159
- package/node/hooks/features/columnMenu/useGridColumnMenu.js +28 -23
- package/node/hooks/features/columns/gridColumnsInterfaces.js +11 -1
- package/node/hooks/features/columns/gridColumnsSelector.js +52 -1
- package/node/hooks/features/columns/gridColumnsUtils.js +10 -13
- package/node/hooks/features/columns/index.js +22 -61
- package/node/hooks/features/columns/useGridColumnSpanning.js +62 -61
- package/node/hooks/features/columns/useGridColumns.js +20 -22
- package/node/hooks/features/dimensions/gridDimensionsSelectors.js +8 -0
- package/node/hooks/features/dimensions/index.js +11 -0
- package/node/hooks/features/dimensions/useGridDimensions.js +215 -144
- package/node/hooks/features/export/serializers/csvSerializer.js +2 -2
- package/node/hooks/features/filter/useGridFilter.js +2 -2
- package/node/hooks/features/focus/gridFocusStateSelector.js +3 -7
- package/node/hooks/features/focus/useGridFocus.js +2 -2
- package/node/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +2 -15
- package/node/hooks/features/pagination/useGridPagination.js +3 -5
- package/node/hooks/features/rows/gridRowsSelector.js +2 -2
- package/node/hooks/features/rows/gridRowsUtils.js +4 -4
- package/node/hooks/features/rows/useGridRowsMeta.js +5 -3
- package/node/hooks/features/scroll/useGridScroll.js +8 -9
- package/node/hooks/features/sorting/gridSortingUtils.js +1 -1
- package/node/hooks/features/sorting/useGridSorting.js +15 -10
- package/node/hooks/features/virtualization/gridVirtualizationSelectors.js +22 -2
- package/node/hooks/features/virtualization/useGridVirtualScroller.js +434 -431
- package/node/hooks/features/virtualization/useGridVirtualization.js +9 -1
- package/node/hooks/utils/index.js +36 -0
- package/node/hooks/utils/useGridAriaAttributes.js +1 -1
- package/node/hooks/utils/useGridNativeEventListener.js +3 -9
- package/node/hooks/utils/useResizeObserver.js +44 -0
- package/node/hooks/utils/useRunOnce.js +27 -0
- package/node/index.js +1 -1
- package/node/internals/index.js +86 -71
- package/node/locales/hrHR.js +155 -0
- package/node/locales/index.js +33 -0
- package/node/locales/ptPT.js +155 -0
- package/node/locales/zhHK.js +155 -0
- package/node/models/index.js +0 -11
- package/node/models/params/index.js +0 -11
- package/node/utils/utils.js +11 -1
- package/package.json +6 -6
- package/utils/utils.d.ts +6 -0
- package/utils/utils.js +10 -1
- package/components/DataGridVirtualScroller.d.ts +0 -3
- package/components/DataGridVirtualScroller.js +0 -35
- package/components/containers/GridMainContainer.js +0 -43
- package/legacy/components/DataGridVirtualScroller.js +0 -32
- package/legacy/components/containers/GridMainContainer.js +0 -45
- package/legacy/models/gridRootContainerRef.js +0 -1
- package/legacy/models/params/gridRenderedRowsIntervalChangeParams.js +0 -1
- package/models/gridRootContainerRef.d.ts +0 -5
- package/models/gridRootContainerRef.js +0 -1
- package/models/params/gridRenderedRowsIntervalChangeParams.d.ts +0 -10
- package/models/params/gridRenderedRowsIntervalChangeParams.js +0 -1
- package/modern/components/DataGridVirtualScroller.js +0 -35
- package/modern/components/containers/GridMainContainer.js +0 -42
- package/modern/models/gridRootContainerRef.js +0 -1
- package/modern/models/params/gridRenderedRowsIntervalChangeParams.js +0 -1
- package/node/components/DataGridVirtualScroller.js +0 -42
- package/node/models/gridRootContainerRef.js +0 -5
- package/node/models/params/gridRenderedRowsIntervalChangeParams.js +0 -5
|
@@ -1,16 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
3
4
|
Object.defineProperty(exports, "__esModule", {
|
|
4
5
|
value: true
|
|
5
6
|
});
|
|
7
|
+
exports.dimensionsStateInitializer = void 0;
|
|
6
8
|
exports.useGridDimensions = useGridDimensions;
|
|
9
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
7
10
|
var React = _interopRequireWildcard(require("react"));
|
|
8
11
|
var _utils = require("@mui/utils");
|
|
9
12
|
var _useGridApiEventHandler = require("../../utils/useGridApiEventHandler");
|
|
10
13
|
var _useGridApiMethod = require("../../utils/useGridApiMethod");
|
|
11
14
|
var _useGridLogger = require("../../utils/useGridLogger");
|
|
12
15
|
var _columns = require("../columns");
|
|
16
|
+
var _gridDimensionsSelectors = require("./gridDimensionsSelectors");
|
|
13
17
|
var _density = require("../density");
|
|
18
|
+
var _virtualization = require("../virtualization");
|
|
14
19
|
var _utils2 = require("../../utils");
|
|
15
20
|
var _useGridVisibleRows = require("../../utils/useGridVisibleRows");
|
|
16
21
|
var _gridRowsMetaSelector = require("../rows/gridRowsMetaSelector");
|
|
@@ -18,127 +23,83 @@ var _gridRowsUtils = require("../rows/gridRowsUtils");
|
|
|
18
23
|
var _gridColumnsUtils = require("../columns/gridColumnsUtils");
|
|
19
24
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
20
25
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
container,
|
|
25
|
-
scrollBarSize
|
|
26
|
-
}) => {
|
|
27
|
-
const hasScrollXIfNoYScrollBar = content.width > container.width;
|
|
28
|
-
const hasScrollYIfNoXScrollBar = content.height > container.height;
|
|
29
|
-
let hasScrollX = false;
|
|
30
|
-
let hasScrollY = false;
|
|
31
|
-
if (hasScrollXIfNoYScrollBar || hasScrollYIfNoXScrollBar) {
|
|
32
|
-
hasScrollX = hasScrollXIfNoYScrollBar;
|
|
33
|
-
hasScrollY = content.height + (hasScrollX ? scrollBarSize : 0) > container.height;
|
|
34
|
-
|
|
35
|
-
// We recalculate the scroll x to consider the size of the y scrollbar.
|
|
36
|
-
if (hasScrollY) {
|
|
37
|
-
hasScrollX = content.width + scrollBarSize > container.width;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
return {
|
|
41
|
-
hasScrollX,
|
|
42
|
-
hasScrollY
|
|
43
|
-
};
|
|
26
|
+
const EMPTY_SIZE = {
|
|
27
|
+
width: 0,
|
|
28
|
+
height: 0
|
|
44
29
|
};
|
|
30
|
+
const EMPTY_DIMENSIONS = {
|
|
31
|
+
isReady: false,
|
|
32
|
+
root: EMPTY_SIZE,
|
|
33
|
+
viewportOuterSize: EMPTY_SIZE,
|
|
34
|
+
viewportInnerSize: EMPTY_SIZE,
|
|
35
|
+
contentSize: EMPTY_SIZE,
|
|
36
|
+
minimumSize: EMPTY_SIZE,
|
|
37
|
+
hasScrollX: false,
|
|
38
|
+
hasScrollY: false,
|
|
39
|
+
scrollbarSize: 0,
|
|
40
|
+
headerHeight: 0,
|
|
41
|
+
rowWidth: 0,
|
|
42
|
+
rowHeight: 0,
|
|
43
|
+
columnsTotalWidth: 0,
|
|
44
|
+
leftPinnedWidth: 0,
|
|
45
|
+
rightPinnedWidth: 0,
|
|
46
|
+
headersTotalHeight: 0,
|
|
47
|
+
topContainerHeight: 0,
|
|
48
|
+
bottomContainerHeight: 0
|
|
49
|
+
};
|
|
50
|
+
const dimensionsStateInitializer = state => {
|
|
51
|
+
const dimensions = EMPTY_DIMENSIONS;
|
|
52
|
+
return (0, _extends2.default)({}, state, {
|
|
53
|
+
dimensions
|
|
54
|
+
});
|
|
55
|
+
};
|
|
56
|
+
exports.dimensionsStateInitializer = dimensionsStateInitializer;
|
|
45
57
|
function useGridDimensions(apiRef, props) {
|
|
46
58
|
const logger = (0, _useGridLogger.useGridLogger)(apiRef, 'useResizeContainer');
|
|
47
59
|
const errorShown = React.useRef(false);
|
|
48
|
-
const rootDimensionsRef = React.useRef(
|
|
49
|
-
const fullDimensionsRef = React.useRef(null);
|
|
60
|
+
const rootDimensionsRef = React.useRef(EMPTY_SIZE);
|
|
50
61
|
const rowsMeta = (0, _utils2.useGridSelector)(apiRef, _gridRowsMetaSelector.gridRowsMetaSelector);
|
|
62
|
+
const pinnedColumns = (0, _utils2.useGridSelector)(apiRef, _columns.gridVisiblePinnedColumnDefinitionsSelector);
|
|
51
63
|
const densityFactor = (0, _utils2.useGridSelector)(apiRef, _density.gridDensityFactorSelector);
|
|
52
64
|
const rowHeight = Math.floor(props.rowHeight * densityFactor);
|
|
53
|
-
const
|
|
54
|
-
const
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
}
|
|
61
|
-
let scrollBarSize;
|
|
62
|
-
if (props.scrollbarSize != null) {
|
|
63
|
-
scrollBarSize = props.scrollbarSize;
|
|
64
|
-
} else if (!columnsTotalWidth || !rootElement) {
|
|
65
|
-
scrollBarSize = 0;
|
|
66
|
-
} else {
|
|
67
|
-
const doc = (0, _utils.unstable_ownerDocument)(rootElement);
|
|
68
|
-
const scrollDiv = doc.createElement('div');
|
|
69
|
-
scrollDiv.style.width = '99px';
|
|
70
|
-
scrollDiv.style.height = '99px';
|
|
71
|
-
scrollDiv.style.position = 'absolute';
|
|
72
|
-
scrollDiv.style.overflow = 'scroll';
|
|
73
|
-
scrollDiv.className = 'scrollDiv';
|
|
74
|
-
rootElement.appendChild(scrollDiv);
|
|
75
|
-
scrollBarSize = scrollDiv.offsetWidth - scrollDiv.clientWidth;
|
|
76
|
-
rootElement.removeChild(scrollDiv);
|
|
77
|
-
}
|
|
78
|
-
let viewportOuterSize;
|
|
79
|
-
let hasScrollX;
|
|
80
|
-
let hasScrollY;
|
|
81
|
-
if (props.autoHeight) {
|
|
82
|
-
hasScrollY = false;
|
|
83
|
-
hasScrollX = Math.round(columnsTotalWidth) > Math.round(rootDimensionsRef.current.width);
|
|
84
|
-
viewportOuterSize = {
|
|
85
|
-
width: rootDimensionsRef.current.width,
|
|
86
|
-
height: rowsMeta.currentPageTotalHeight + (hasScrollX ? scrollBarSize : 0)
|
|
87
|
-
};
|
|
88
|
-
} else {
|
|
89
|
-
viewportOuterSize = {
|
|
90
|
-
width: rootDimensionsRef.current.width,
|
|
91
|
-
height: Math.max(rootDimensionsRef.current.height - totalHeaderHeight, 0)
|
|
92
|
-
};
|
|
93
|
-
const scrollInformation = hasScroll({
|
|
94
|
-
content: {
|
|
95
|
-
width: Math.round(columnsTotalWidth),
|
|
96
|
-
height: rowsMeta.currentPageTotalHeight
|
|
97
|
-
},
|
|
98
|
-
container: {
|
|
99
|
-
width: Math.round(viewportOuterSize.width),
|
|
100
|
-
height: viewportOuterSize.height - pinnedRowsHeight.top - pinnedRowsHeight.bottom
|
|
101
|
-
},
|
|
102
|
-
scrollBarSize
|
|
103
|
-
});
|
|
104
|
-
hasScrollY = scrollInformation.hasScrollY;
|
|
105
|
-
hasScrollX = scrollInformation.hasScrollX;
|
|
106
|
-
}
|
|
107
|
-
const viewportInnerSize = {
|
|
108
|
-
width: viewportOuterSize.width - (hasScrollY ? scrollBarSize : 0),
|
|
109
|
-
height: viewportOuterSize.height - (hasScrollX ? scrollBarSize : 0)
|
|
110
|
-
};
|
|
111
|
-
const newFullDimensions = {
|
|
112
|
-
viewportOuterSize,
|
|
113
|
-
viewportInnerSize,
|
|
114
|
-
hasScrollX,
|
|
115
|
-
hasScrollY,
|
|
116
|
-
scrollBarSize
|
|
117
|
-
};
|
|
118
|
-
const prevDimensions = fullDimensionsRef.current;
|
|
119
|
-
fullDimensionsRef.current = newFullDimensions;
|
|
120
|
-
if (newFullDimensions.viewportInnerSize.width !== prevDimensions?.viewportInnerSize.width || newFullDimensions.viewportInnerSize.height !== prevDimensions?.viewportInnerSize.height) {
|
|
121
|
-
apiRef.current.publishEvent('viewportInnerSizeChange', newFullDimensions.viewportInnerSize);
|
|
122
|
-
}
|
|
123
|
-
}, [apiRef, props.scrollbarSize, props.autoHeight, rowsMeta.currentPageTotalHeight, totalHeaderHeight]);
|
|
65
|
+
const headerHeight = Math.floor(props.columnHeaderHeight * densityFactor);
|
|
66
|
+
const columnsTotalWidth = roundToDecimalPlaces((0, _columns.gridColumnsTotalWidthSelector)(apiRef), 6);
|
|
67
|
+
// XXX: The `props as any` below is not resilient to change.
|
|
68
|
+
const hasHeaderFilters = Boolean(props.headerFilters);
|
|
69
|
+
const headersTotalHeight = (0, _gridColumnsUtils.getTotalHeaderHeight)(apiRef, props.columnHeaderHeight) + Number(hasHeaderFilters) * headerHeight;
|
|
70
|
+
const leftPinnedWidth = pinnedColumns.left.reduce((w, col) => w + col.computedWidth, 0);
|
|
71
|
+
const rightPinnedWidth = pinnedColumns.right.reduce((w, col) => w + col.computedWidth, 0);
|
|
124
72
|
const [savedSize, setSavedSize] = React.useState();
|
|
125
73
|
const debouncedSetSavedSize = React.useMemo(() => (0, _utils.unstable_debounce)(setSavedSize, 60), []);
|
|
126
74
|
const previousSize = React.useRef();
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
// This is the function called by apiRef.current.resize()
|
|
75
|
+
const getRootDimensions = () => apiRef.current.state.dimensions;
|
|
76
|
+
const setDimensions = (0, _utils.unstable_useEventCallback)(dimensions => {
|
|
77
|
+
apiRef.current.setState(state => (0, _extends2.default)({}, state, {
|
|
78
|
+
dimensions
|
|
79
|
+
}));
|
|
80
|
+
});
|
|
135
81
|
const resize = React.useCallback(() => {
|
|
136
|
-
apiRef.current.
|
|
82
|
+
const element = apiRef.current.mainElementRef.current;
|
|
83
|
+
if (!element) {
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
const computedStyle = (0, _utils.unstable_ownerWindow)(element).getComputedStyle(element);
|
|
87
|
+
const height = parseFloat(computedStyle.height) || 0;
|
|
88
|
+
const width = parseFloat(computedStyle.width) || 0;
|
|
89
|
+
const hasHeightChanged = height !== previousSize.current?.height;
|
|
90
|
+
const hasWidthChanged = width !== previousSize.current?.width;
|
|
91
|
+
if (!previousSize.current || hasHeightChanged || hasWidthChanged) {
|
|
92
|
+
const size = {
|
|
93
|
+
width,
|
|
94
|
+
height
|
|
95
|
+
};
|
|
96
|
+
apiRef.current.publishEvent('resize', size);
|
|
97
|
+
previousSize.current = size;
|
|
98
|
+
}
|
|
137
99
|
}, [apiRef]);
|
|
138
|
-
const getRootDimensions = React.useCallback(() => fullDimensionsRef.current, []);
|
|
139
100
|
const getViewportPageSize = React.useCallback(() => {
|
|
140
|
-
const dimensions = apiRef.current.
|
|
141
|
-
if (!dimensions) {
|
|
101
|
+
const dimensions = (0, _gridDimensionsSelectors.gridDimensionsSelector)(apiRef.current.state);
|
|
102
|
+
if (!dimensions.isReady) {
|
|
142
103
|
return 0;
|
|
143
104
|
}
|
|
144
105
|
const currentPage = (0, _useGridVisibleRows.getVisibleRows)(apiRef, {
|
|
@@ -149,44 +110,135 @@ function useGridDimensions(apiRef, props) {
|
|
|
149
110
|
// TODO: Use a combination of scrollTop, dimensions.viewportInnerSize.height and rowsMeta.possitions
|
|
150
111
|
// to find out the maximum number of rows that can fit in the visible part of the grid
|
|
151
112
|
if (props.getRowHeight) {
|
|
152
|
-
const renderContext =
|
|
113
|
+
const renderContext = (0, _virtualization.gridRenderContextSelector)(apiRef);
|
|
153
114
|
const viewportPageSize = renderContext.lastRowIndex - renderContext.firstRowIndex;
|
|
154
115
|
return Math.min(viewportPageSize - 1, currentPage.rows.length);
|
|
155
116
|
}
|
|
156
117
|
const maximumPageSizeWithoutScrollBar = Math.floor(dimensions.viewportInnerSize.height / rowHeight);
|
|
157
118
|
return Math.min(maximumPageSizeWithoutScrollBar, currentPage.rows.length);
|
|
158
119
|
}, [apiRef, props.pagination, props.paginationMode, props.getRowHeight, rowHeight]);
|
|
159
|
-
const
|
|
160
|
-
const
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
const
|
|
165
|
-
const
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
120
|
+
const updateDimensions = React.useCallback(() => {
|
|
121
|
+
const rootElement = apiRef.current.rootElementRef.current;
|
|
122
|
+
const pinnedRowsHeight = (0, _gridRowsUtils.calculatePinnedRowsHeight)(apiRef);
|
|
123
|
+
const scrollbarSize = measureScrollbarSize(rootElement, columnsTotalWidth, props.scrollbarSize);
|
|
124
|
+
const topContainerHeight = headersTotalHeight + pinnedRowsHeight.top;
|
|
125
|
+
const bottomContainerHeight = pinnedRowsHeight.bottom;
|
|
126
|
+
const contentSize = {
|
|
127
|
+
width: columnsTotalWidth,
|
|
128
|
+
height: rowsMeta.currentPageTotalHeight
|
|
129
|
+
};
|
|
130
|
+
let viewportOuterSize;
|
|
131
|
+
let viewportInnerSize;
|
|
132
|
+
let hasScrollX = false;
|
|
133
|
+
let hasScrollY = false;
|
|
134
|
+
if (props.autoHeight) {
|
|
135
|
+
hasScrollY = false;
|
|
136
|
+
hasScrollX = Math.round(columnsTotalWidth) > Math.round(rootDimensionsRef.current.width);
|
|
137
|
+
viewportOuterSize = {
|
|
138
|
+
width: rootDimensionsRef.current.width,
|
|
139
|
+
height: topContainerHeight + bottomContainerHeight + contentSize.height
|
|
174
140
|
};
|
|
175
|
-
|
|
176
|
-
|
|
141
|
+
viewportInnerSize = {
|
|
142
|
+
width: Math.max(0, viewportOuterSize.width - (hasScrollY ? scrollbarSize : 0)),
|
|
143
|
+
height: Math.max(0, viewportOuterSize.height - (hasScrollX ? scrollbarSize : 0))
|
|
144
|
+
};
|
|
145
|
+
} else {
|
|
146
|
+
viewportOuterSize = {
|
|
147
|
+
width: rootDimensionsRef.current.width,
|
|
148
|
+
height: rootDimensionsRef.current.height
|
|
149
|
+
};
|
|
150
|
+
viewportInnerSize = {
|
|
151
|
+
width: Math.max(0, viewportOuterSize.width - leftPinnedWidth - rightPinnedWidth),
|
|
152
|
+
height: Math.max(0, viewportOuterSize.height - topContainerHeight - bottomContainerHeight)
|
|
153
|
+
};
|
|
154
|
+
const content = contentSize;
|
|
155
|
+
const container = viewportInnerSize;
|
|
156
|
+
const hasScrollXIfNoYScrollBar = content.width > container.width;
|
|
157
|
+
const hasScrollYIfNoXScrollBar = content.height > container.height;
|
|
158
|
+
if (hasScrollXIfNoYScrollBar || hasScrollYIfNoXScrollBar) {
|
|
159
|
+
hasScrollY = hasScrollYIfNoXScrollBar;
|
|
160
|
+
hasScrollX = content.width + (hasScrollY ? scrollbarSize : 0) > container.width;
|
|
161
|
+
|
|
162
|
+
// We recalculate the scroll y to consider the size of the x scrollbar.
|
|
163
|
+
if (hasScrollX) {
|
|
164
|
+
hasScrollY = content.height + scrollbarSize > container.height;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
if (hasScrollY) {
|
|
168
|
+
viewportInnerSize.width -= scrollbarSize;
|
|
169
|
+
}
|
|
170
|
+
if (hasScrollX) {
|
|
171
|
+
viewportInnerSize.height -= scrollbarSize;
|
|
172
|
+
}
|
|
177
173
|
}
|
|
178
|
-
|
|
179
|
-
|
|
174
|
+
const rowWidth = Math.max(viewportOuterSize.width, columnsTotalWidth + (hasScrollY ? scrollbarSize : 0));
|
|
175
|
+
const minimumSize = {
|
|
176
|
+
width: contentSize.width,
|
|
177
|
+
height: topContainerHeight + contentSize.height + bottomContainerHeight
|
|
178
|
+
};
|
|
179
|
+
const newDimensions = {
|
|
180
|
+
isReady: true,
|
|
181
|
+
root: rootDimensionsRef.current,
|
|
182
|
+
viewportOuterSize,
|
|
183
|
+
viewportInnerSize,
|
|
184
|
+
contentSize,
|
|
185
|
+
minimumSize,
|
|
186
|
+
hasScrollX,
|
|
187
|
+
hasScrollY,
|
|
188
|
+
scrollbarSize,
|
|
189
|
+
headerHeight,
|
|
190
|
+
rowWidth,
|
|
191
|
+
rowHeight,
|
|
192
|
+
columnsTotalWidth,
|
|
193
|
+
leftPinnedWidth,
|
|
194
|
+
rightPinnedWidth,
|
|
195
|
+
headersTotalHeight,
|
|
196
|
+
topContainerHeight,
|
|
197
|
+
bottomContainerHeight
|
|
198
|
+
};
|
|
199
|
+
const prevDimensions = apiRef.current.state.dimensions;
|
|
200
|
+
setDimensions(newDimensions);
|
|
201
|
+
if (newDimensions.viewportInnerSize.width !== prevDimensions.viewportInnerSize.width || newDimensions.viewportInnerSize.height !== prevDimensions.viewportInnerSize.height) {
|
|
202
|
+
apiRef.current.publishEvent('viewportInnerSizeChange', newDimensions.viewportInnerSize);
|
|
203
|
+
}
|
|
204
|
+
apiRef.current.updateRenderContext?.();
|
|
205
|
+
}, [apiRef, setDimensions, props.scrollbarSize, props.autoHeight, rowsMeta.currentPageTotalHeight, rowHeight, headerHeight, columnsTotalWidth, headersTotalHeight, leftPinnedWidth, rightPinnedWidth]);
|
|
206
|
+
const apiPublic = {
|
|
180
207
|
resize,
|
|
181
208
|
getRootDimensions
|
|
182
209
|
};
|
|
183
|
-
const
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
computeSizeAndPublishResizeEvent
|
|
210
|
+
const apiPrivate = {
|
|
211
|
+
updateDimensions,
|
|
212
|
+
getViewportPageSize
|
|
187
213
|
};
|
|
188
|
-
(0, _useGridApiMethod.useGridApiMethod)(apiRef,
|
|
189
|
-
(0, _useGridApiMethod.useGridApiMethod)(apiRef,
|
|
214
|
+
(0, _useGridApiMethod.useGridApiMethod)(apiRef, apiPublic, 'public');
|
|
215
|
+
(0, _useGridApiMethod.useGridApiMethod)(apiRef, apiPrivate, 'private');
|
|
216
|
+
(0, _utils.unstable_useEnhancedEffect)(() => {
|
|
217
|
+
if (savedSize) {
|
|
218
|
+
updateDimensions();
|
|
219
|
+
apiRef.current.publishEvent('debouncedResize', rootDimensionsRef.current);
|
|
220
|
+
}
|
|
221
|
+
}, [apiRef, savedSize, updateDimensions]);
|
|
222
|
+
const root = apiRef.current.rootElementRef.current;
|
|
223
|
+
const dimensions = apiRef.current.state.dimensions;
|
|
224
|
+
(0, _utils.unstable_useEnhancedEffect)(() => {
|
|
225
|
+
if (!root) {
|
|
226
|
+
return;
|
|
227
|
+
}
|
|
228
|
+
const set = (k, v) => root.style.setProperty(k, v);
|
|
229
|
+
set('--DataGrid-width', `${dimensions.viewportOuterSize.width}px`);
|
|
230
|
+
set('--DataGrid-hasScrollX', `${Number(dimensions.hasScrollX)}`);
|
|
231
|
+
set('--DataGrid-hasScrollY', `${Number(dimensions.hasScrollY)}`);
|
|
232
|
+
set('--DataGrid-scrollbarSize', `${dimensions.scrollbarSize}px`);
|
|
233
|
+
set('--DataGrid-rowWidth', `${dimensions.rowWidth}px`);
|
|
234
|
+
set('--DataGrid-columnsTotalWidth', `${dimensions.columnsTotalWidth}px`);
|
|
235
|
+
set('--DataGrid-leftPinnedWidth', `${dimensions.leftPinnedWidth}px`);
|
|
236
|
+
set('--DataGrid-rightPinnedWidth', `${dimensions.rightPinnedWidth}px`);
|
|
237
|
+
set('--DataGrid-headerHeight', `${dimensions.headerHeight}px`);
|
|
238
|
+
set('--DataGrid-headersTotalHeight', `${dimensions.headersTotalHeight}px`);
|
|
239
|
+
set('--DataGrid-topContainerHeight', `${dimensions.topContainerHeight}px`);
|
|
240
|
+
set('--DataGrid-bottomContainerHeight', `${dimensions.bottomContainerHeight}px`);
|
|
241
|
+
}, [root, dimensions]);
|
|
190
242
|
const isFirstSizing = React.useRef(true);
|
|
191
243
|
const handleResize = React.useCallback(size => {
|
|
192
244
|
rootDimensionsRef.current = size;
|
|
@@ -201,12 +253,6 @@ function useGridDimensions(apiRef, props) {
|
|
|
201
253
|
logger.error(['The parent DOM element of the data grid has an empty width.', 'Please make sure that this element has an intrinsic width.', 'The grid displays with a width of 0px.', '', 'More details: https://mui.com/r/x-data-grid-no-dimensions.'].join('\n'));
|
|
202
254
|
errorShown.current = true;
|
|
203
255
|
}
|
|
204
|
-
if (isTestEnvironment) {
|
|
205
|
-
// We don't need to debounce the resize for tests.
|
|
206
|
-
setSavedSize(size);
|
|
207
|
-
isFirstSizing.current = false;
|
|
208
|
-
return;
|
|
209
|
-
}
|
|
210
256
|
if (isFirstSizing.current) {
|
|
211
257
|
// We want to initialize the grid dimensions as soon as possible to avoid flickering
|
|
212
258
|
setSavedSize(size);
|
|
@@ -215,10 +261,35 @@ function useGridDimensions(apiRef, props) {
|
|
|
215
261
|
}
|
|
216
262
|
debouncedSetSavedSize(size);
|
|
217
263
|
}, [props.autoHeight, debouncedSetSavedSize, logger]);
|
|
218
|
-
(0, _utils.unstable_useEnhancedEffect)(
|
|
219
|
-
(0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, 'sortedRowsSet',
|
|
220
|
-
(0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, 'paginationModelChange',
|
|
221
|
-
(0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, 'columnsChange',
|
|
264
|
+
(0, _utils.unstable_useEnhancedEffect)(updateDimensions, [updateDimensions]);
|
|
265
|
+
(0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, 'sortedRowsSet', updateDimensions);
|
|
266
|
+
(0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, 'paginationModelChange', updateDimensions);
|
|
267
|
+
(0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, 'columnsChange', updateDimensions);
|
|
222
268
|
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'resize', handleResize);
|
|
223
269
|
(0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, 'debouncedResize', props.onResize);
|
|
270
|
+
}
|
|
271
|
+
function measureScrollbarSize(rootElement, columnsTotalWidth, scrollbarSize) {
|
|
272
|
+
if (scrollbarSize !== undefined) {
|
|
273
|
+
return scrollbarSize;
|
|
274
|
+
}
|
|
275
|
+
if (rootElement === null || columnsTotalWidth === 0) {
|
|
276
|
+
return 0;
|
|
277
|
+
}
|
|
278
|
+
const doc = (0, _utils.unstable_ownerDocument)(rootElement);
|
|
279
|
+
const scrollDiv = doc.createElement('div');
|
|
280
|
+
scrollDiv.style.width = '99px';
|
|
281
|
+
scrollDiv.style.height = '99px';
|
|
282
|
+
scrollDiv.style.position = 'absolute';
|
|
283
|
+
scrollDiv.style.overflow = 'scroll';
|
|
284
|
+
scrollDiv.className = 'scrollDiv';
|
|
285
|
+
rootElement.appendChild(scrollDiv);
|
|
286
|
+
const size = scrollDiv.offsetWidth - scrollDiv.clientWidth;
|
|
287
|
+
rootElement.removeChild(scrollDiv);
|
|
288
|
+
return size;
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
// Get rid of floating point imprecision errors
|
|
292
|
+
// https://github.com/mui/mui-x/issues/9550#issuecomment-1619020477
|
|
293
|
+
function roundToDecimalPlaces(value, decimals) {
|
|
294
|
+
return Math.round(value * 10 ** decimals) / 10 ** decimals;
|
|
224
295
|
}
|
|
@@ -112,10 +112,10 @@ function buildCSV(options) {
|
|
|
112
112
|
const filteredColumns = columns.filter(column => column.field !== _colDef.GRID_CHECKBOX_SELECTION_COL_DEF.field);
|
|
113
113
|
const headerRows = [];
|
|
114
114
|
if (includeColumnGroupsHeaders) {
|
|
115
|
-
const columnGroupLookup = apiRef.current.
|
|
115
|
+
const columnGroupLookup = apiRef.current.getAllGroupDetails();
|
|
116
116
|
let maxColumnGroupsDepth = 0;
|
|
117
117
|
const columnGroupPathsLookup = filteredColumns.reduce((acc, column) => {
|
|
118
|
-
const columnGroupPath = apiRef.current.
|
|
118
|
+
const columnGroupPath = apiRef.current.getColumnGroupPath(column.field);
|
|
119
119
|
acc[column.field] = columnGroupPath;
|
|
120
120
|
maxColumnGroupsDepth = Math.max(maxColumnGroupsDepth, columnGroupPath.length);
|
|
121
121
|
return acc;
|
|
@@ -319,8 +319,8 @@ const useGridFilter = (apiRef, props) => {
|
|
|
319
319
|
const handleColumnsChange = React.useCallback(() => {
|
|
320
320
|
logger.debug('onColUpdated - GridColumns changed, applying filters');
|
|
321
321
|
const filterModel = (0, _gridFilterSelector.gridFilterModelSelector)(apiRef);
|
|
322
|
-
const
|
|
323
|
-
const newFilterItems = filterModel.items.filter(item => item.field &&
|
|
322
|
+
const columnsLookup = (0, _gridColumnsSelector.gridColumnLookupSelector)(apiRef);
|
|
323
|
+
const newFilterItems = filterModel.items.filter(item => item.field && columnsLookup[item.field]);
|
|
324
324
|
if (newFilterItems.length < filterModel.items.length) {
|
|
325
325
|
apiRef.current.setFilterModel((0, _extends2.default)({}, filterModel, {
|
|
326
326
|
items: newFilterItems
|
|
@@ -3,21 +3,17 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
exports.gridTabIndexStateSelector = exports.gridTabIndexColumnHeaderSelector = exports.gridTabIndexColumnHeaderFilterSelector = exports.gridTabIndexColumnGroupHeaderSelector = exports.gridTabIndexCellSelector = exports.gridFocusStateSelector = exports.gridFocusColumnHeaderSelector = exports.gridFocusColumnHeaderFilterSelector = exports.gridFocusColumnGroupHeaderSelector = exports.gridFocusCellSelector = void 0;
|
|
7
7
|
var _createSelector = require("../../../utils/createSelector");
|
|
8
8
|
const gridFocusStateSelector = state => state.focus;
|
|
9
9
|
exports.gridFocusStateSelector = gridFocusStateSelector;
|
|
10
10
|
const gridFocusCellSelector = exports.gridFocusCellSelector = (0, _createSelector.createSelector)(gridFocusStateSelector, focusState => focusState.cell);
|
|
11
11
|
const gridFocusColumnHeaderSelector = exports.gridFocusColumnHeaderSelector = (0, _createSelector.createSelector)(gridFocusStateSelector, focusState => focusState.columnHeader);
|
|
12
12
|
const gridFocusColumnHeaderFilterSelector = exports.gridFocusColumnHeaderFilterSelector = (0, _createSelector.createSelector)(gridFocusStateSelector, focusState => focusState.columnHeaderFilter);
|
|
13
|
-
|
|
14
|
-
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
15
|
-
const unstable_gridFocusColumnGroupHeaderSelector = exports.unstable_gridFocusColumnGroupHeaderSelector = (0, _createSelector.createSelector)(gridFocusStateSelector, focusState => focusState.columnGroupHeader);
|
|
13
|
+
const gridFocusColumnGroupHeaderSelector = exports.gridFocusColumnGroupHeaderSelector = (0, _createSelector.createSelector)(gridFocusStateSelector, focusState => focusState.columnGroupHeader);
|
|
16
14
|
const gridTabIndexStateSelector = state => state.tabIndex;
|
|
17
15
|
exports.gridTabIndexStateSelector = gridTabIndexStateSelector;
|
|
18
16
|
const gridTabIndexCellSelector = exports.gridTabIndexCellSelector = (0, _createSelector.createSelector)(gridTabIndexStateSelector, state => state.cell);
|
|
19
17
|
const gridTabIndexColumnHeaderSelector = exports.gridTabIndexColumnHeaderSelector = (0, _createSelector.createSelector)(gridTabIndexStateSelector, state => state.columnHeader);
|
|
20
18
|
const gridTabIndexColumnHeaderFilterSelector = exports.gridTabIndexColumnHeaderFilterSelector = (0, _createSelector.createSelector)(gridTabIndexStateSelector, state => state.columnHeaderFilter);
|
|
21
|
-
|
|
22
|
-
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
23
|
-
const unstable_gridTabIndexColumnGroupHeaderSelector = exports.unstable_gridTabIndexColumnGroupHeaderSelector = (0, _createSelector.createSelector)(gridTabIndexStateSelector, state => state.columnGroupHeader);
|
|
19
|
+
const gridTabIndexColumnGroupHeaderSelector = exports.gridTabIndexColumnGroupHeaderSelector = (0, _createSelector.createSelector)(gridTabIndexStateSelector, state => state.columnGroupHeader);
|
|
@@ -174,7 +174,7 @@ const useGridFocus = (apiRef, props) => {
|
|
|
174
174
|
});
|
|
175
175
|
apiRef.current.forceUpdate();
|
|
176
176
|
}, [apiRef]);
|
|
177
|
-
const getColumnGroupHeaderFocus = React.useCallback(() => (0, _gridFocusStateSelector.
|
|
177
|
+
const getColumnGroupHeaderFocus = React.useCallback(() => (0, _gridFocusStateSelector.gridFocusColumnGroupHeaderSelector)(apiRef), [apiRef]);
|
|
178
178
|
const moveFocusToRelativeCell = React.useCallback((id, field, direction) => {
|
|
179
179
|
let columnIndexToFocus = apiRef.current.getColumnIndex(field);
|
|
180
180
|
const visibleColumns = (0, _gridColumnsSelector.gridVisibleColumnDefinitionsSelector)(apiRef);
|
|
@@ -254,7 +254,7 @@ const useGridFocus = (apiRef, props) => {
|
|
|
254
254
|
if (event.target !== event.currentTarget) {
|
|
255
255
|
return;
|
|
256
256
|
}
|
|
257
|
-
const focusedColumnGroup = (0, _gridFocusStateSelector.
|
|
257
|
+
const focusedColumnGroup = (0, _gridFocusStateSelector.gridFocusColumnGroupHeaderSelector)(apiRef);
|
|
258
258
|
if (focusedColumnGroup !== null && focusedColumnGroup.depth === depth && fields.includes(focusedColumnGroup.field)) {
|
|
259
259
|
// This group cell has already been focused
|
|
260
260
|
return;
|
|
@@ -145,10 +145,6 @@ const useGridKeyboardNavigation = (apiRef, props) => {
|
|
|
145
145
|
// There is one exception for the checkBoxHeader
|
|
146
146
|
return;
|
|
147
147
|
}
|
|
148
|
-
const dimensions = apiRef.current.getRootDimensions();
|
|
149
|
-
if (!dimensions) {
|
|
150
|
-
return;
|
|
151
|
-
}
|
|
152
148
|
const viewportPageSize = apiRef.current.getViewportPageSize();
|
|
153
149
|
const colIndexBefore = params.field ? apiRef.current.getColumnIndex(params.field) : 0;
|
|
154
150
|
const firstRowIndexInPage = currentPageRows.length > 0 ? 0 : null;
|
|
@@ -241,10 +237,6 @@ const useGridKeyboardNavigation = (apiRef, props) => {
|
|
|
241
237
|
}
|
|
242
238
|
}, [apiRef, currentPageRows.length, headerFilteringEnabled, goToHeaderFilter, goToCell, getRowIdFromIndex, theme.direction, goToHeader, goToGroupHeader]);
|
|
243
239
|
const handleHeaderFilterKeyDown = React.useCallback((params, event) => {
|
|
244
|
-
const dimensions = apiRef.current.getRootDimensions();
|
|
245
|
-
if (!dimensions) {
|
|
246
|
-
return;
|
|
247
|
-
}
|
|
248
240
|
const isEditing = (0, _gridHeaderFilteringSelectors.gridHeaderFilteringEditFieldSelector)(apiRef) === params.field;
|
|
249
241
|
const isHeaderMenuOpen = (0, _gridHeaderFilteringSelectors.gridHeaderFilteringMenuSelector)(apiRef) === params.field;
|
|
250
242
|
if (isEditing || isHeaderMenuOpen || !(0, _keyboardUtils.isNavigationKey)(event.key)) {
|
|
@@ -331,11 +323,7 @@ const useGridKeyboardNavigation = (apiRef, props) => {
|
|
|
331
323
|
}
|
|
332
324
|
}, [apiRef, currentPageRows.length, goToHeaderFilter, theme.direction, goToHeader, goToCell, getRowIdFromIndex]);
|
|
333
325
|
const handleColumnGroupHeaderKeyDown = React.useCallback((params, event) => {
|
|
334
|
-
const
|
|
335
|
-
if (!dimensions) {
|
|
336
|
-
return;
|
|
337
|
-
}
|
|
338
|
-
const focusedColumnGroup = (0, _focus.unstable_gridFocusColumnGroupHeaderSelector)(apiRef);
|
|
326
|
+
const focusedColumnGroup = (0, _focus.gridFocusColumnGroupHeaderSelector)(apiRef);
|
|
339
327
|
if (focusedColumnGroup === null) {
|
|
340
328
|
return;
|
|
341
329
|
}
|
|
@@ -438,8 +426,7 @@ const useGridKeyboardNavigation = (apiRef, props) => {
|
|
|
438
426
|
if (!canUpdateFocus) {
|
|
439
427
|
return;
|
|
440
428
|
}
|
|
441
|
-
|
|
442
|
-
if (currentPageRows.length === 0 || !dimensions) {
|
|
429
|
+
if (currentPageRows.length === 0) {
|
|
443
430
|
return;
|
|
444
431
|
}
|
|
445
432
|
const direction = theme.direction;
|
|
@@ -12,7 +12,6 @@ var _density = require("../density");
|
|
|
12
12
|
var _utils = require("../../utils");
|
|
13
13
|
var _pipeProcessing = require("../../core/pipeProcessing");
|
|
14
14
|
var _gridPaginationSelector = require("./gridPaginationSelector");
|
|
15
|
-
var _gridRowsUtils = require("../rows/gridRowsUtils");
|
|
16
15
|
var _gridPaginationUtils = require("./gridPaginationUtils");
|
|
17
16
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
18
17
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
@@ -148,12 +147,11 @@ const useGridPagination = (apiRef, props) => {
|
|
|
148
147
|
apiRef.current.forceUpdate();
|
|
149
148
|
};
|
|
150
149
|
const handleUpdateAutoPageSize = React.useCallback(() => {
|
|
151
|
-
|
|
152
|
-
if (!props.autoPageSize || !dimensions) {
|
|
150
|
+
if (!props.autoPageSize) {
|
|
153
151
|
return;
|
|
154
152
|
}
|
|
155
|
-
const
|
|
156
|
-
const maximumPageSizeWithoutScrollBar = Math.floor(
|
|
153
|
+
const dimensions = apiRef.current.getRootDimensions();
|
|
154
|
+
const maximumPageSizeWithoutScrollBar = Math.floor(dimensions.viewportInnerSize.height / rowHeight);
|
|
157
155
|
apiRef.current.setPageSize(maximumPageSizeWithoutScrollBar);
|
|
158
156
|
}, [apiRef, props.autoPageSize, rowHeight]);
|
|
159
157
|
(0, _utils.useGridApiEventHandler)(apiRef, 'viewportInnerSizeChange', handleUpdateAutoPageSize);
|
|
@@ -39,11 +39,11 @@ const gridPinnedRowsSelector = exports.gridPinnedRowsSelector = (0, _createSelec
|
|
|
39
39
|
bottom: rawPinnedRows?.bottom?.map(rowEntry => ({
|
|
40
40
|
id: rowEntry.id,
|
|
41
41
|
model: rowEntry.model ?? {}
|
|
42
|
-
})),
|
|
42
|
+
})) ?? [],
|
|
43
43
|
top: rawPinnedRows?.top?.map(rowEntry => ({
|
|
44
44
|
id: rowEntry.id,
|
|
45
45
|
model: rowEntry.model ?? {}
|
|
46
|
-
}))
|
|
46
|
+
})) ?? []
|
|
47
47
|
};
|
|
48
48
|
});
|
|
49
49
|
|
|
@@ -12,7 +12,7 @@ exports.getMinimalContentHeight = getMinimalContentHeight;
|
|
|
12
12
|
exports.updateCacheWithNewRows = exports.isAutoGeneratedRow = exports.getTreeNodeDescendants = exports.getTopLevelRowCount = exports.getRowsStateFromCache = exports.getRowIdFromRowModel = void 0;
|
|
13
13
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
14
14
|
var _gridRowsSelector = require("./gridRowsSelector");
|
|
15
|
-
var
|
|
15
|
+
var _dimensions = require("../dimensions");
|
|
16
16
|
const GRID_ROOT_GROUP_ID = exports.GRID_ROOT_GROUP_ID = `auto-generated-group-node-root`;
|
|
17
17
|
const GRID_ID_AUTOGENERATED = exports.GRID_ID_AUTOGENERATED = Symbol('mui.id_autogenerated');
|
|
18
18
|
const buildRootGroup = () => ({
|
|
@@ -295,7 +295,7 @@ function calculatePinnedRowsHeight(apiRef) {
|
|
|
295
295
|
bottom: bottomPinnedRowsHeight
|
|
296
296
|
};
|
|
297
297
|
}
|
|
298
|
-
function getMinimalContentHeight(apiRef
|
|
299
|
-
const
|
|
300
|
-
return `var(--DataGrid-overlayHeight, ${2 *
|
|
298
|
+
function getMinimalContentHeight(apiRef) {
|
|
299
|
+
const dimensions = (0, _dimensions.gridDimensionsSelector)(apiRef.current.state);
|
|
300
|
+
return `var(--DataGrid-overlayHeight, ${2 * dimensions.rowHeight}px)`;
|
|
301
301
|
}
|
|
@@ -20,6 +20,8 @@ var _gridRowsSelector = require("./gridRowsSelector");
|
|
|
20
20
|
var _useDataGridProps = require("../../../DataGrid/useDataGridProps");
|
|
21
21
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
22
22
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
23
|
+
// TODO: I think the row heights can now be encoded as a single `size` instead of `sizes.baseXxxx`
|
|
24
|
+
|
|
23
25
|
const rowsMetaStateInitializer = state => (0, _extends2.default)({}, state, {
|
|
24
26
|
rowsMeta: {
|
|
25
27
|
currentPageTotalHeight: 0,
|
|
@@ -184,15 +186,15 @@ const useGridRowsMeta = (apiRef, props) => {
|
|
|
184
186
|
hydrateRowsMeta();
|
|
185
187
|
}, [hydrateRowsMeta]);
|
|
186
188
|
const debouncedHydrateRowsMeta = React.useMemo(() => (0, _utils.unstable_debounce)(hydrateRowsMeta, props.rowPositionsDebounceMs), [hydrateRowsMeta, props.rowPositionsDebounceMs]);
|
|
187
|
-
const storeMeasuredRowHeight = React.useCallback((id, height
|
|
189
|
+
const storeMeasuredRowHeight = React.useCallback((id, height) => {
|
|
188
190
|
if (!rowsHeightLookup.current[id] || !rowsHeightLookup.current[id].autoHeight) {
|
|
189
191
|
return;
|
|
190
192
|
}
|
|
191
193
|
|
|
192
194
|
// Only trigger hydration if the value is different, otherwise we trigger a loop
|
|
193
|
-
const needsHydration = rowsHeightLookup.current[id].sizes
|
|
195
|
+
const needsHydration = rowsHeightLookup.current[id].sizes.baseCenter !== height;
|
|
194
196
|
rowsHeightLookup.current[id].needsFirstMeasurement = false;
|
|
195
|
-
rowsHeightLookup.current[id].sizes
|
|
197
|
+
rowsHeightLookup.current[id].sizes.baseCenter = height;
|
|
196
198
|
if (needsHydration) {
|
|
197
199
|
debouncedHydrateRowsMeta();
|
|
198
200
|
}
|