@mui/x-data-grid 7.0.0-alpha.8 → 7.0.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +508 -30
- package/DataGrid/DataGrid.js +6 -6
- package/DataGrid/useDataGridComponent.js +2 -1
- package/DataGrid/useDataGridProps.js +1 -0
- package/README.md +3 -3
- 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 +161 -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/columnsManagement/GridColumnsManagement.d.ts +36 -0
- package/components/columnsManagement/GridColumnsManagement.js +260 -0
- package/components/columnsManagement/index.d.ts +1 -0
- package/components/columnsManagement/index.js +1 -0
- package/components/columnsManagement/utils.d.ts +4 -0
- package/components/columnsManagement/utils.js +16 -0
- package/components/containers/GridRoot.js +18 -15
- package/components/containers/GridRootStyles.js +307 -204
- package/components/index.d.ts +1 -0
- package/components/index.js +1 -0
- package/components/menu/columnMenu/menuItems/GridColumnMenuSortItem.js +1 -1
- package/components/panel/GridColumnsPanel.d.ts +0 -28
- package/components/panel/GridColumnsPanel.js +5 -213
- 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 +8 -3
- package/constants/gridClasses.d.ts +72 -12
- package/constants/gridClasses.js +1 -1
- package/constants/localeTextConstants.js +4 -6
- package/hooks/core/gridCoreSelector.d.ts +6 -0
- package/hooks/core/gridCoreSelector.js +5 -0
- package/hooks/core/useGridApiInitialization.js +4 -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 +8 -5
- 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 +159 -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/columnsManagement/GridColumnsManagement.js +300 -0
- package/legacy/components/columnsManagement/index.js +1 -0
- package/legacy/components/columnsManagement/utils.js +22 -0
- package/legacy/components/containers/GridRoot.js +18 -15
- package/legacy/components/containers/GridRootStyles.js +215 -137
- package/legacy/components/index.js +1 -0
- package/legacy/components/menu/columnMenu/menuItems/GridColumnMenuSortItem.js +1 -1
- package/legacy/components/panel/GridColumnsPanel.js +5 -233
- 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 +8 -3
- package/legacy/constants/gridClasses.js +1 -1
- package/legacy/constants/localeTextConstants.js +4 -6
- package/legacy/hooks/core/gridCoreSelector.js +7 -0
- package/legacy/hooks/core/useGridApiInitialization.js +4 -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 +8 -5
- 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/arSD.js +5 -6
- package/legacy/locales/beBY.js +5 -6
- package/legacy/locales/bgBG.js +5 -6
- package/legacy/locales/csCZ.js +5 -6
- package/legacy/locales/daDK.js +5 -6
- package/legacy/locales/deDE.js +5 -6
- package/legacy/locales/elGR.js +5 -6
- package/legacy/locales/esES.js +5 -6
- package/legacy/locales/faIR.js +5 -6
- package/legacy/locales/fiFI.js +5 -6
- package/legacy/locales/frFR.js +5 -6
- package/legacy/locales/heIL.js +5 -6
- package/legacy/locales/hrHR.js +160 -0
- package/legacy/locales/huHU.js +5 -6
- package/legacy/locales/index.js +4 -1
- package/legacy/locales/itIT.js +5 -6
- package/legacy/locales/jaJP.js +5 -6
- package/legacy/locales/koKR.js +5 -6
- package/legacy/locales/nbNO.js +5 -6
- package/legacy/locales/nlNL.js +5 -6
- package/legacy/locales/plPL.js +5 -6
- package/legacy/locales/ptBR.js +5 -6
- package/legacy/locales/ptPT.js +160 -0
- package/legacy/locales/roRO.js +5 -6
- package/legacy/locales/ruRU.js +5 -6
- package/legacy/locales/skSK.js +5 -6
- package/legacy/locales/svSE.js +5 -6
- package/legacy/locales/trTR.js +5 -6
- package/legacy/locales/ukUA.js +5 -6
- package/legacy/locales/urPK.js +5 -6
- package/legacy/locales/viVN.js +5 -6
- package/legacy/locales/zhCN.js +5 -6
- package/legacy/locales/zhHK.js +160 -0
- package/legacy/locales/zhTW.js +5 -6
- package/legacy/models/index.js +0 -1
- package/legacy/models/params/index.js +1 -2
- package/legacy/utils/utils.js +10 -1
- package/locales/arSD.js +5 -6
- package/locales/beBY.js +5 -6
- package/locales/bgBG.js +5 -6
- package/locales/csCZ.js +5 -6
- package/locales/daDK.js +5 -6
- package/locales/deDE.js +5 -6
- package/locales/elGR.js +5 -6
- package/locales/esES.js +5 -6
- package/locales/faIR.js +5 -6
- package/locales/fiFI.js +5 -6
- package/locales/frFR.js +5 -6
- package/locales/heIL.js +5 -6
- package/locales/hrHR.d.ts +1 -0
- package/locales/hrHR.js +148 -0
- package/locales/huHU.js +5 -6
- package/locales/index.d.ts +3 -0
- package/locales/index.js +4 -1
- package/locales/itIT.js +5 -6
- package/locales/jaJP.js +5 -6
- package/locales/koKR.js +5 -6
- package/locales/nbNO.js +5 -6
- package/locales/nlNL.js +5 -6
- package/locales/plPL.js +5 -6
- package/locales/ptBR.js +5 -6
- package/locales/ptPT.d.ts +1 -0
- package/locales/ptPT.js +148 -0
- package/locales/roRO.js +5 -6
- package/locales/ruRU.js +5 -6
- package/locales/skSK.js +5 -6
- package/locales/svSE.js +5 -6
- package/locales/trTR.js +5 -6
- package/locales/ukUA.js +5 -6
- package/locales/urPK.js +5 -6
- package/locales/viVN.js +5 -6
- package/locales/zhCN.js +5 -6
- package/locales/zhHK.d.ts +1 -0
- package/locales/zhHK.js +148 -0
- package/locales/zhTW.js +5 -6
- package/models/api/gridColumnGroupingApi.d.ts +2 -2
- package/models/api/gridCoreApi.d.ts +16 -16
- package/models/api/gridLocaleTextApi.d.ts +3 -5
- package/models/api/gridRowsMetaApi.d.ts +1 -1
- package/models/api/gridVirtualizationApi.d.ts +2 -3
- package/models/colDef/gridColType.d.ts +11 -2
- package/models/events/gridEventLookup.d.ts +3 -3
- package/models/gridFilterModel.d.ts +1 -1
- package/models/gridSlotsComponent.d.ts +21 -2
- package/models/gridSlotsComponentsProps.d.ts +4 -0
- 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 +159 -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/columnsManagement/GridColumnsManagement.js +256 -0
- package/modern/components/columnsManagement/index.js +1 -0
- package/modern/components/columnsManagement/utils.js +16 -0
- package/modern/components/containers/GridRoot.js +18 -14
- package/modern/components/containers/GridRootStyles.js +307 -204
- package/modern/components/index.js +1 -0
- package/modern/components/menu/columnMenu/menuItems/GridColumnMenuSortItem.js +1 -1
- package/modern/components/panel/GridColumnsPanel.js +4 -209
- 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 +8 -3
- package/modern/constants/gridClasses.js +1 -1
- package/modern/constants/localeTextConstants.js +4 -6
- package/modern/hooks/core/gridCoreSelector.js +5 -0
- package/modern/hooks/core/useGridApiInitialization.js +3 -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 +8 -5
- 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/arSD.js +5 -6
- package/modern/locales/beBY.js +5 -6
- package/modern/locales/bgBG.js +5 -6
- package/modern/locales/csCZ.js +5 -6
- package/modern/locales/daDK.js +5 -6
- package/modern/locales/deDE.js +5 -6
- package/modern/locales/elGR.js +5 -6
- package/modern/locales/esES.js +5 -6
- package/modern/locales/faIR.js +5 -6
- package/modern/locales/fiFI.js +5 -6
- package/modern/locales/frFR.js +5 -6
- package/modern/locales/heIL.js +5 -6
- package/modern/locales/hrHR.js +148 -0
- package/modern/locales/huHU.js +5 -6
- package/modern/locales/index.js +4 -1
- package/modern/locales/itIT.js +5 -6
- package/modern/locales/jaJP.js +5 -6
- package/modern/locales/koKR.js +5 -6
- package/modern/locales/nbNO.js +5 -6
- package/modern/locales/nlNL.js +5 -6
- package/modern/locales/plPL.js +5 -6
- package/modern/locales/ptBR.js +5 -6
- package/modern/locales/ptPT.js +148 -0
- package/modern/locales/roRO.js +5 -6
- package/modern/locales/ruRU.js +5 -6
- package/modern/locales/skSK.js +5 -6
- package/modern/locales/svSE.js +5 -6
- package/modern/locales/trTR.js +5 -6
- package/modern/locales/ukUA.js +5 -6
- package/modern/locales/urPK.js +5 -6
- package/modern/locales/viVN.js +5 -6
- package/modern/locales/zhCN.js +5 -6
- package/modern/locales/zhHK.js +148 -0
- package/modern/locales/zhTW.js +5 -6
- 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 +157 -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/columnsManagement/GridColumnsManagement.js +264 -0
- package/node/components/columnsManagement/index.js +16 -0
- package/node/components/columnsManagement/utils.js +24 -0
- package/node/components/containers/GridRoot.js +17 -14
- package/node/components/containers/GridRootStyles.js +175 -72
- package/node/components/index.js +11 -0
- package/node/components/menu/columnMenu/menuItems/GridColumnMenuSortItem.js +1 -1
- package/node/components/panel/GridColumnsPanel.js +4 -208
- 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 +6 -1
- package/node/constants/gridClasses.js +1 -1
- package/node/constants/localeTextConstants.js +4 -6
- package/node/hooks/core/gridCoreSelector.js +12 -0
- package/node/hooks/core/useGridApiInitialization.js +3 -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 +8 -5
- 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/arSD.js +5 -6
- package/node/locales/beBY.js +5 -6
- package/node/locales/bgBG.js +5 -6
- package/node/locales/csCZ.js +5 -6
- package/node/locales/daDK.js +5 -6
- package/node/locales/deDE.js +5 -6
- package/node/locales/elGR.js +5 -6
- package/node/locales/esES.js +5 -6
- package/node/locales/faIR.js +5 -6
- package/node/locales/fiFI.js +5 -6
- package/node/locales/frFR.js +5 -6
- package/node/locales/heIL.js +5 -6
- package/node/locales/hrHR.js +154 -0
- package/node/locales/huHU.js +5 -6
- package/node/locales/index.js +33 -0
- package/node/locales/itIT.js +5 -6
- package/node/locales/jaJP.js +5 -6
- package/node/locales/koKR.js +5 -6
- package/node/locales/nbNO.js +5 -6
- package/node/locales/nlNL.js +5 -6
- package/node/locales/plPL.js +5 -6
- package/node/locales/ptBR.js +5 -6
- package/node/locales/ptPT.js +154 -0
- package/node/locales/roRO.js +5 -6
- package/node/locales/ruRU.js +5 -6
- package/node/locales/skSK.js +5 -6
- package/node/locales/svSE.js +5 -6
- package/node/locales/trTR.js +5 -6
- package/node/locales/ukUA.js +5 -6
- package/node/locales/urPK.js +5 -6
- package/node/locales/viVN.js +5 -6
- package/node/locales/zhCN.js +5 -6
- package/node/locales/zhHK.js +154 -0
- package/node/locales/zhTW.js +5 -6
- 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,137 +1,95 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
1
2
|
import * as React from 'react';
|
|
2
|
-
import { unstable_debounce as debounce, unstable_ownerDocument as ownerDocument, unstable_useEnhancedEffect as useEnhancedEffect, unstable_ownerWindow as ownerWindow } from '@mui/utils';
|
|
3
|
+
import { unstable_debounce as debounce, unstable_ownerDocument as ownerDocument, unstable_useEnhancedEffect as useEnhancedEffect, unstable_useEventCallback as useEventCallback, unstable_ownerWindow as ownerWindow } from '@mui/utils';
|
|
3
4
|
import { useGridApiEventHandler, useGridApiOptionHandler } from '../../utils/useGridApiEventHandler';
|
|
4
5
|
import { useGridApiMethod } from '../../utils/useGridApiMethod';
|
|
5
6
|
import { useGridLogger } from '../../utils/useGridLogger';
|
|
6
|
-
import { gridColumnsTotalWidthSelector } from '../columns';
|
|
7
|
+
import { gridColumnsTotalWidthSelector, gridVisiblePinnedColumnDefinitionsSelector } from '../columns';
|
|
8
|
+
import { gridDimensionsSelector } from './gridDimensionsSelectors';
|
|
7
9
|
import { gridDensityFactorSelector } from '../density';
|
|
10
|
+
import { gridRenderContextSelector } from '../virtualization';
|
|
8
11
|
import { useGridSelector } from '../../utils';
|
|
9
12
|
import { getVisibleRows } from '../../utils/useGridVisibleRows';
|
|
10
13
|
import { gridRowsMetaSelector } from '../rows/gridRowsMetaSelector';
|
|
11
14
|
import { calculatePinnedRowsHeight } from '../rows/gridRowsUtils';
|
|
12
15
|
import { getTotalHeaderHeight } from '../columns/gridColumnsUtils';
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
16
|
+
const EMPTY_SIZE = {
|
|
17
|
+
width: 0,
|
|
18
|
+
height: 0
|
|
19
|
+
};
|
|
20
|
+
const EMPTY_DIMENSIONS = {
|
|
21
|
+
isReady: false,
|
|
22
|
+
root: EMPTY_SIZE,
|
|
23
|
+
viewportOuterSize: EMPTY_SIZE,
|
|
24
|
+
viewportInnerSize: EMPTY_SIZE,
|
|
25
|
+
contentSize: EMPTY_SIZE,
|
|
26
|
+
minimumSize: EMPTY_SIZE,
|
|
27
|
+
hasScrollX: false,
|
|
28
|
+
hasScrollY: false,
|
|
29
|
+
scrollbarSize: 0,
|
|
30
|
+
headerHeight: 0,
|
|
31
|
+
rowWidth: 0,
|
|
32
|
+
rowHeight: 0,
|
|
33
|
+
columnsTotalWidth: 0,
|
|
34
|
+
leftPinnedWidth: 0,
|
|
35
|
+
rightPinnedWidth: 0,
|
|
36
|
+
headersTotalHeight: 0,
|
|
37
|
+
topContainerHeight: 0,
|
|
38
|
+
bottomContainerHeight: 0
|
|
39
|
+
};
|
|
40
|
+
export const dimensionsStateInitializer = state => {
|
|
41
|
+
const dimensions = EMPTY_DIMENSIONS;
|
|
42
|
+
return _extends({}, state, {
|
|
43
|
+
dimensions
|
|
44
|
+
});
|
|
36
45
|
};
|
|
37
46
|
export function useGridDimensions(apiRef, props) {
|
|
38
47
|
const logger = useGridLogger(apiRef, 'useResizeContainer');
|
|
39
48
|
const errorShown = React.useRef(false);
|
|
40
|
-
const rootDimensionsRef = React.useRef(
|
|
41
|
-
const fullDimensionsRef = React.useRef(null);
|
|
49
|
+
const rootDimensionsRef = React.useRef(EMPTY_SIZE);
|
|
42
50
|
const rowsMeta = useGridSelector(apiRef, gridRowsMetaSelector);
|
|
51
|
+
const pinnedColumns = useGridSelector(apiRef, gridVisiblePinnedColumnDefinitionsSelector);
|
|
43
52
|
const densityFactor = useGridSelector(apiRef, gridDensityFactorSelector);
|
|
44
53
|
const rowHeight = Math.floor(props.rowHeight * densityFactor);
|
|
45
|
-
const
|
|
46
|
-
const
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
return;
|
|
53
|
-
}
|
|
54
|
-
let scrollBarSize;
|
|
55
|
-
if (props.scrollbarSize != null) {
|
|
56
|
-
scrollBarSize = props.scrollbarSize;
|
|
57
|
-
} else if (!columnsTotalWidth || !rootElement) {
|
|
58
|
-
scrollBarSize = 0;
|
|
59
|
-
} else {
|
|
60
|
-
const doc = ownerDocument(rootElement);
|
|
61
|
-
const scrollDiv = doc.createElement('div');
|
|
62
|
-
scrollDiv.style.width = '99px';
|
|
63
|
-
scrollDiv.style.height = '99px';
|
|
64
|
-
scrollDiv.style.position = 'absolute';
|
|
65
|
-
scrollDiv.style.overflow = 'scroll';
|
|
66
|
-
scrollDiv.className = 'scrollDiv';
|
|
67
|
-
rootElement.appendChild(scrollDiv);
|
|
68
|
-
scrollBarSize = scrollDiv.offsetWidth - scrollDiv.clientWidth;
|
|
69
|
-
rootElement.removeChild(scrollDiv);
|
|
70
|
-
}
|
|
71
|
-
let viewportOuterSize;
|
|
72
|
-
let hasScrollX;
|
|
73
|
-
let hasScrollY;
|
|
74
|
-
if (props.autoHeight) {
|
|
75
|
-
hasScrollY = false;
|
|
76
|
-
hasScrollX = Math.round(columnsTotalWidth) > Math.round(rootDimensionsRef.current.width);
|
|
77
|
-
viewportOuterSize = {
|
|
78
|
-
width: rootDimensionsRef.current.width,
|
|
79
|
-
height: rowsMeta.currentPageTotalHeight + (hasScrollX ? scrollBarSize : 0)
|
|
80
|
-
};
|
|
81
|
-
} else {
|
|
82
|
-
viewportOuterSize = {
|
|
83
|
-
width: rootDimensionsRef.current.width,
|
|
84
|
-
height: Math.max(rootDimensionsRef.current.height - totalHeaderHeight, 0)
|
|
85
|
-
};
|
|
86
|
-
const scrollInformation = hasScroll({
|
|
87
|
-
content: {
|
|
88
|
-
width: Math.round(columnsTotalWidth),
|
|
89
|
-
height: rowsMeta.currentPageTotalHeight
|
|
90
|
-
},
|
|
91
|
-
container: {
|
|
92
|
-
width: Math.round(viewportOuterSize.width),
|
|
93
|
-
height: viewportOuterSize.height - pinnedRowsHeight.top - pinnedRowsHeight.bottom
|
|
94
|
-
},
|
|
95
|
-
scrollBarSize
|
|
96
|
-
});
|
|
97
|
-
hasScrollY = scrollInformation.hasScrollY;
|
|
98
|
-
hasScrollX = scrollInformation.hasScrollX;
|
|
99
|
-
}
|
|
100
|
-
const viewportInnerSize = {
|
|
101
|
-
width: viewportOuterSize.width - (hasScrollY ? scrollBarSize : 0),
|
|
102
|
-
height: viewportOuterSize.height - (hasScrollX ? scrollBarSize : 0)
|
|
103
|
-
};
|
|
104
|
-
const newFullDimensions = {
|
|
105
|
-
viewportOuterSize,
|
|
106
|
-
viewportInnerSize,
|
|
107
|
-
hasScrollX,
|
|
108
|
-
hasScrollY,
|
|
109
|
-
scrollBarSize
|
|
110
|
-
};
|
|
111
|
-
const prevDimensions = fullDimensionsRef.current;
|
|
112
|
-
fullDimensionsRef.current = newFullDimensions;
|
|
113
|
-
if (newFullDimensions.viewportInnerSize.width !== (prevDimensions == null ? void 0 : prevDimensions.viewportInnerSize.width) || newFullDimensions.viewportInnerSize.height !== (prevDimensions == null ? void 0 : prevDimensions.viewportInnerSize.height)) {
|
|
114
|
-
apiRef.current.publishEvent('viewportInnerSizeChange', newFullDimensions.viewportInnerSize);
|
|
115
|
-
}
|
|
116
|
-
}, [apiRef, props.scrollbarSize, props.autoHeight, rowsMeta.currentPageTotalHeight, totalHeaderHeight]);
|
|
54
|
+
const headerHeight = Math.floor(props.columnHeaderHeight * densityFactor);
|
|
55
|
+
const columnsTotalWidth = roundToDecimalPlaces(gridColumnsTotalWidthSelector(apiRef), 6);
|
|
56
|
+
// XXX: The `props as any` below is not resilient to change.
|
|
57
|
+
const hasHeaderFilters = Boolean(props.headerFilters);
|
|
58
|
+
const headersTotalHeight = getTotalHeaderHeight(apiRef, props.columnHeaderHeight) + Number(hasHeaderFilters) * headerHeight;
|
|
59
|
+
const leftPinnedWidth = pinnedColumns.left.reduce((w, col) => w + col.computedWidth, 0);
|
|
60
|
+
const rightPinnedWidth = pinnedColumns.right.reduce((w, col) => w + col.computedWidth, 0);
|
|
117
61
|
const [savedSize, setSavedSize] = React.useState();
|
|
118
62
|
const debouncedSetSavedSize = React.useMemo(() => debounce(setSavedSize, 60), []);
|
|
119
63
|
const previousSize = React.useRef();
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
// This is the function called by apiRef.current.resize()
|
|
64
|
+
const getRootDimensions = () => apiRef.current.state.dimensions;
|
|
65
|
+
const setDimensions = useEventCallback(dimensions => {
|
|
66
|
+
apiRef.current.setState(state => _extends({}, state, {
|
|
67
|
+
dimensions
|
|
68
|
+
}));
|
|
69
|
+
});
|
|
128
70
|
const resize = React.useCallback(() => {
|
|
129
|
-
|
|
71
|
+
var _previousSize$current, _previousSize$current2;
|
|
72
|
+
const element = apiRef.current.mainElementRef.current;
|
|
73
|
+
if (!element) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
const computedStyle = ownerWindow(element).getComputedStyle(element);
|
|
77
|
+
const height = parseFloat(computedStyle.height) || 0;
|
|
78
|
+
const width = parseFloat(computedStyle.width) || 0;
|
|
79
|
+
const hasHeightChanged = height !== ((_previousSize$current = previousSize.current) == null ? void 0 : _previousSize$current.height);
|
|
80
|
+
const hasWidthChanged = width !== ((_previousSize$current2 = previousSize.current) == null ? void 0 : _previousSize$current2.width);
|
|
81
|
+
if (!previousSize.current || hasHeightChanged || hasWidthChanged) {
|
|
82
|
+
const size = {
|
|
83
|
+
width,
|
|
84
|
+
height
|
|
85
|
+
};
|
|
86
|
+
apiRef.current.publishEvent('resize', size);
|
|
87
|
+
previousSize.current = size;
|
|
88
|
+
}
|
|
130
89
|
}, [apiRef]);
|
|
131
|
-
const getRootDimensions = React.useCallback(() => fullDimensionsRef.current, []);
|
|
132
90
|
const getViewportPageSize = React.useCallback(() => {
|
|
133
|
-
const dimensions = apiRef.current.
|
|
134
|
-
if (!dimensions) {
|
|
91
|
+
const dimensions = gridDimensionsSelector(apiRef.current.state);
|
|
92
|
+
if (!dimensions.isReady) {
|
|
135
93
|
return 0;
|
|
136
94
|
}
|
|
137
95
|
const currentPage = getVisibleRows(apiRef, {
|
|
@@ -142,45 +100,136 @@ export function useGridDimensions(apiRef, props) {
|
|
|
142
100
|
// TODO: Use a combination of scrollTop, dimensions.viewportInnerSize.height and rowsMeta.possitions
|
|
143
101
|
// to find out the maximum number of rows that can fit in the visible part of the grid
|
|
144
102
|
if (props.getRowHeight) {
|
|
145
|
-
const renderContext = apiRef
|
|
103
|
+
const renderContext = gridRenderContextSelector(apiRef);
|
|
146
104
|
const viewportPageSize = renderContext.lastRowIndex - renderContext.firstRowIndex;
|
|
147
105
|
return Math.min(viewportPageSize - 1, currentPage.rows.length);
|
|
148
106
|
}
|
|
149
107
|
const maximumPageSizeWithoutScrollBar = Math.floor(dimensions.viewportInnerSize.height / rowHeight);
|
|
150
108
|
return Math.min(maximumPageSizeWithoutScrollBar, currentPage.rows.length);
|
|
151
109
|
}, [apiRef, props.pagination, props.paginationMode, props.getRowHeight, rowHeight]);
|
|
152
|
-
const
|
|
153
|
-
var _apiRef$current$
|
|
154
|
-
const
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
const
|
|
159
|
-
const
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
110
|
+
const updateDimensions = React.useCallback(() => {
|
|
111
|
+
var _apiRef$current$updat, _apiRef$current;
|
|
112
|
+
const rootElement = apiRef.current.rootElementRef.current;
|
|
113
|
+
const pinnedRowsHeight = calculatePinnedRowsHeight(apiRef);
|
|
114
|
+
const scrollbarSize = measureScrollbarSize(rootElement, columnsTotalWidth, props.scrollbarSize);
|
|
115
|
+
const topContainerHeight = headersTotalHeight + pinnedRowsHeight.top;
|
|
116
|
+
const bottomContainerHeight = pinnedRowsHeight.bottom;
|
|
117
|
+
const contentSize = {
|
|
118
|
+
width: columnsTotalWidth,
|
|
119
|
+
height: rowsMeta.currentPageTotalHeight
|
|
120
|
+
};
|
|
121
|
+
let viewportOuterSize;
|
|
122
|
+
let viewportInnerSize;
|
|
123
|
+
let hasScrollX = false;
|
|
124
|
+
let hasScrollY = false;
|
|
125
|
+
if (props.autoHeight) {
|
|
126
|
+
hasScrollY = false;
|
|
127
|
+
hasScrollX = Math.round(columnsTotalWidth) > Math.round(rootDimensionsRef.current.width);
|
|
128
|
+
viewportOuterSize = {
|
|
129
|
+
width: rootDimensionsRef.current.width,
|
|
130
|
+
height: topContainerHeight + bottomContainerHeight + contentSize.height
|
|
168
131
|
};
|
|
169
|
-
|
|
170
|
-
|
|
132
|
+
viewportInnerSize = {
|
|
133
|
+
width: Math.max(0, viewportOuterSize.width - (hasScrollY ? scrollbarSize : 0)),
|
|
134
|
+
height: Math.max(0, viewportOuterSize.height - (hasScrollX ? scrollbarSize : 0))
|
|
135
|
+
};
|
|
136
|
+
} else {
|
|
137
|
+
viewportOuterSize = {
|
|
138
|
+
width: rootDimensionsRef.current.width,
|
|
139
|
+
height: rootDimensionsRef.current.height
|
|
140
|
+
};
|
|
141
|
+
viewportInnerSize = {
|
|
142
|
+
width: Math.max(0, viewportOuterSize.width - leftPinnedWidth - rightPinnedWidth),
|
|
143
|
+
height: Math.max(0, viewportOuterSize.height - topContainerHeight - bottomContainerHeight)
|
|
144
|
+
};
|
|
145
|
+
const content = contentSize;
|
|
146
|
+
const container = viewportInnerSize;
|
|
147
|
+
const hasScrollXIfNoYScrollBar = content.width > container.width;
|
|
148
|
+
const hasScrollYIfNoXScrollBar = content.height > container.height;
|
|
149
|
+
if (hasScrollXIfNoYScrollBar || hasScrollYIfNoXScrollBar) {
|
|
150
|
+
hasScrollY = hasScrollYIfNoXScrollBar;
|
|
151
|
+
hasScrollX = content.width + (hasScrollY ? scrollbarSize : 0) > container.width;
|
|
152
|
+
|
|
153
|
+
// We recalculate the scroll y to consider the size of the x scrollbar.
|
|
154
|
+
if (hasScrollX) {
|
|
155
|
+
hasScrollY = content.height + scrollbarSize > container.height;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
if (hasScrollY) {
|
|
159
|
+
viewportInnerSize.width -= scrollbarSize;
|
|
160
|
+
}
|
|
161
|
+
if (hasScrollX) {
|
|
162
|
+
viewportInnerSize.height -= scrollbarSize;
|
|
163
|
+
}
|
|
171
164
|
}
|
|
172
|
-
|
|
173
|
-
|
|
165
|
+
const rowWidth = Math.max(viewportOuterSize.width, columnsTotalWidth + (hasScrollY ? scrollbarSize : 0));
|
|
166
|
+
const minimumSize = {
|
|
167
|
+
width: contentSize.width,
|
|
168
|
+
height: topContainerHeight + contentSize.height + bottomContainerHeight
|
|
169
|
+
};
|
|
170
|
+
const newDimensions = {
|
|
171
|
+
isReady: true,
|
|
172
|
+
root: rootDimensionsRef.current,
|
|
173
|
+
viewportOuterSize,
|
|
174
|
+
viewportInnerSize,
|
|
175
|
+
contentSize,
|
|
176
|
+
minimumSize,
|
|
177
|
+
hasScrollX,
|
|
178
|
+
hasScrollY,
|
|
179
|
+
scrollbarSize,
|
|
180
|
+
headerHeight,
|
|
181
|
+
rowWidth,
|
|
182
|
+
rowHeight,
|
|
183
|
+
columnsTotalWidth,
|
|
184
|
+
leftPinnedWidth,
|
|
185
|
+
rightPinnedWidth,
|
|
186
|
+
headersTotalHeight,
|
|
187
|
+
topContainerHeight,
|
|
188
|
+
bottomContainerHeight
|
|
189
|
+
};
|
|
190
|
+
const prevDimensions = apiRef.current.state.dimensions;
|
|
191
|
+
setDimensions(newDimensions);
|
|
192
|
+
if (newDimensions.viewportInnerSize.width !== prevDimensions.viewportInnerSize.width || newDimensions.viewportInnerSize.height !== prevDimensions.viewportInnerSize.height) {
|
|
193
|
+
apiRef.current.publishEvent('viewportInnerSizeChange', newDimensions.viewportInnerSize);
|
|
194
|
+
}
|
|
195
|
+
(_apiRef$current$updat = (_apiRef$current = apiRef.current).updateRenderContext) == null || _apiRef$current$updat.call(_apiRef$current);
|
|
196
|
+
}, [apiRef, setDimensions, props.scrollbarSize, props.autoHeight, rowsMeta.currentPageTotalHeight, rowHeight, headerHeight, columnsTotalWidth, headersTotalHeight, leftPinnedWidth, rightPinnedWidth]);
|
|
197
|
+
const apiPublic = {
|
|
174
198
|
resize,
|
|
175
199
|
getRootDimensions
|
|
176
200
|
};
|
|
177
|
-
const
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
computeSizeAndPublishResizeEvent
|
|
201
|
+
const apiPrivate = {
|
|
202
|
+
updateDimensions,
|
|
203
|
+
getViewportPageSize
|
|
181
204
|
};
|
|
182
|
-
useGridApiMethod(apiRef,
|
|
183
|
-
useGridApiMethod(apiRef,
|
|
205
|
+
useGridApiMethod(apiRef, apiPublic, 'public');
|
|
206
|
+
useGridApiMethod(apiRef, apiPrivate, 'private');
|
|
207
|
+
useEnhancedEffect(() => {
|
|
208
|
+
if (savedSize) {
|
|
209
|
+
updateDimensions();
|
|
210
|
+
apiRef.current.publishEvent('debouncedResize', rootDimensionsRef.current);
|
|
211
|
+
}
|
|
212
|
+
}, [apiRef, savedSize, updateDimensions]);
|
|
213
|
+
const root = apiRef.current.rootElementRef.current;
|
|
214
|
+
const dimensions = apiRef.current.state.dimensions;
|
|
215
|
+
useEnhancedEffect(() => {
|
|
216
|
+
if (!root) {
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
219
|
+
const set = (k, v) => root.style.setProperty(k, v);
|
|
220
|
+
set('--DataGrid-width', `${dimensions.viewportOuterSize.width}px`);
|
|
221
|
+
set('--DataGrid-hasScrollX', `${Number(dimensions.hasScrollX)}`);
|
|
222
|
+
set('--DataGrid-hasScrollY', `${Number(dimensions.hasScrollY)}`);
|
|
223
|
+
set('--DataGrid-scrollbarSize', `${dimensions.scrollbarSize}px`);
|
|
224
|
+
set('--DataGrid-rowWidth', `${dimensions.rowWidth}px`);
|
|
225
|
+
set('--DataGrid-columnsTotalWidth', `${dimensions.columnsTotalWidth}px`);
|
|
226
|
+
set('--DataGrid-leftPinnedWidth', `${dimensions.leftPinnedWidth}px`);
|
|
227
|
+
set('--DataGrid-rightPinnedWidth', `${dimensions.rightPinnedWidth}px`);
|
|
228
|
+
set('--DataGrid-headerHeight', `${dimensions.headerHeight}px`);
|
|
229
|
+
set('--DataGrid-headersTotalHeight', `${dimensions.headersTotalHeight}px`);
|
|
230
|
+
set('--DataGrid-topContainerHeight', `${dimensions.topContainerHeight}px`);
|
|
231
|
+
set('--DataGrid-bottomContainerHeight', `${dimensions.bottomContainerHeight}px`);
|
|
232
|
+
}, [root, dimensions]);
|
|
184
233
|
const isFirstSizing = React.useRef(true);
|
|
185
234
|
const handleResize = React.useCallback(size => {
|
|
186
235
|
rootDimensionsRef.current = size;
|
|
@@ -195,12 +244,6 @@ export function useGridDimensions(apiRef, props) {
|
|
|
195
244
|
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'));
|
|
196
245
|
errorShown.current = true;
|
|
197
246
|
}
|
|
198
|
-
if (isTestEnvironment) {
|
|
199
|
-
// We don't need to debounce the resize for tests.
|
|
200
|
-
setSavedSize(size);
|
|
201
|
-
isFirstSizing.current = false;
|
|
202
|
-
return;
|
|
203
|
-
}
|
|
204
247
|
if (isFirstSizing.current) {
|
|
205
248
|
// We want to initialize the grid dimensions as soon as possible to avoid flickering
|
|
206
249
|
setSavedSize(size);
|
|
@@ -209,10 +252,35 @@ export function useGridDimensions(apiRef, props) {
|
|
|
209
252
|
}
|
|
210
253
|
debouncedSetSavedSize(size);
|
|
211
254
|
}, [props.autoHeight, debouncedSetSavedSize, logger]);
|
|
212
|
-
useEnhancedEffect(
|
|
213
|
-
useGridApiOptionHandler(apiRef, 'sortedRowsSet',
|
|
214
|
-
useGridApiOptionHandler(apiRef, 'paginationModelChange',
|
|
215
|
-
useGridApiOptionHandler(apiRef, 'columnsChange',
|
|
255
|
+
useEnhancedEffect(updateDimensions, [updateDimensions]);
|
|
256
|
+
useGridApiOptionHandler(apiRef, 'sortedRowsSet', updateDimensions);
|
|
257
|
+
useGridApiOptionHandler(apiRef, 'paginationModelChange', updateDimensions);
|
|
258
|
+
useGridApiOptionHandler(apiRef, 'columnsChange', updateDimensions);
|
|
216
259
|
useGridApiEventHandler(apiRef, 'resize', handleResize);
|
|
217
260
|
useGridApiOptionHandler(apiRef, 'debouncedResize', props.onResize);
|
|
261
|
+
}
|
|
262
|
+
function measureScrollbarSize(rootElement, columnsTotalWidth, scrollbarSize) {
|
|
263
|
+
if (scrollbarSize !== undefined) {
|
|
264
|
+
return scrollbarSize;
|
|
265
|
+
}
|
|
266
|
+
if (rootElement === null || columnsTotalWidth === 0) {
|
|
267
|
+
return 0;
|
|
268
|
+
}
|
|
269
|
+
const doc = ownerDocument(rootElement);
|
|
270
|
+
const scrollDiv = doc.createElement('div');
|
|
271
|
+
scrollDiv.style.width = '99px';
|
|
272
|
+
scrollDiv.style.height = '99px';
|
|
273
|
+
scrollDiv.style.position = 'absolute';
|
|
274
|
+
scrollDiv.style.overflow = 'scroll';
|
|
275
|
+
scrollDiv.className = 'scrollDiv';
|
|
276
|
+
rootElement.appendChild(scrollDiv);
|
|
277
|
+
const size = scrollDiv.offsetWidth - scrollDiv.clientWidth;
|
|
278
|
+
rootElement.removeChild(scrollDiv);
|
|
279
|
+
return size;
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
// Get rid of floating point imprecision errors
|
|
283
|
+
// https://github.com/mui/mui-x/issues/9550#issuecomment-1619020477
|
|
284
|
+
function roundToDecimalPlaces(value, decimals) {
|
|
285
|
+
return Math.round(value * 10 ** decimals) / 10 ** decimals;
|
|
218
286
|
}
|
|
@@ -106,10 +106,10 @@ export function buildCSV(options) {
|
|
|
106
106
|
const filteredColumns = columns.filter(column => column.field !== GRID_CHECKBOX_SELECTION_COL_DEF.field);
|
|
107
107
|
const headerRows = [];
|
|
108
108
|
if (includeColumnGroupsHeaders) {
|
|
109
|
-
const columnGroupLookup = apiRef.current.
|
|
109
|
+
const columnGroupLookup = apiRef.current.getAllGroupDetails();
|
|
110
110
|
let maxColumnGroupsDepth = 0;
|
|
111
111
|
const columnGroupPathsLookup = filteredColumns.reduce((acc, column) => {
|
|
112
|
-
const columnGroupPath = apiRef.current.
|
|
112
|
+
const columnGroupPath = apiRef.current.getColumnGroupPath(column.field);
|
|
113
113
|
acc[column.field] = columnGroupPath;
|
|
114
114
|
maxColumnGroupsDepth = Math.max(maxColumnGroupsDepth, columnGroupPath.length);
|
|
115
115
|
return acc;
|
|
@@ -6,7 +6,7 @@ import { useLazyRef } from '../../utils/useLazyRef';
|
|
|
6
6
|
import { useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
|
|
7
7
|
import { useGridApiMethod } from '../../utils/useGridApiMethod';
|
|
8
8
|
import { useGridLogger } from '../../utils/useGridLogger';
|
|
9
|
-
import {
|
|
9
|
+
import { gridColumnLookupSelector } from '../columns/gridColumnsSelector';
|
|
10
10
|
import { GridPreferencePanelsValue } from '../preferencesPanel/gridPreferencePanelsValue';
|
|
11
11
|
import { getDefaultGridFilterModel } from './gridFilterState';
|
|
12
12
|
import { gridFilterModelSelector } from './gridFilterSelector';
|
|
@@ -315,8 +315,8 @@ export const useGridFilter = (apiRef, props) => {
|
|
|
315
315
|
const handleColumnsChange = React.useCallback(() => {
|
|
316
316
|
logger.debug('onColUpdated - GridColumns changed, applying filters');
|
|
317
317
|
const filterModel = gridFilterModelSelector(apiRef);
|
|
318
|
-
const
|
|
319
|
-
const newFilterItems = filterModel.items.filter(item => item.field &&
|
|
318
|
+
const columnsLookup = gridColumnLookupSelector(apiRef);
|
|
319
|
+
const newFilterItems = filterModel.items.filter(item => item.field && columnsLookup[item.field]);
|
|
320
320
|
if (newFilterItems.length < filterModel.items.length) {
|
|
321
321
|
apiRef.current.setFilterModel(_extends({}, filterModel, {
|
|
322
322
|
items: newFilterItems
|
|
@@ -4,9 +4,9 @@ export declare const gridFocusStateSelector: (state: GridStateCommunity) => Grid
|
|
|
4
4
|
export declare const gridFocusCellSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, import("../../..").GridCellCoordinates | null>;
|
|
5
5
|
export declare const gridFocusColumnHeaderSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, import("./gridFocusState").GridColumnIdentifier | null>;
|
|
6
6
|
export declare const gridFocusColumnHeaderFilterSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, import("./gridFocusState").GridColumnIdentifier | null>;
|
|
7
|
-
export declare const
|
|
7
|
+
export declare const gridFocusColumnGroupHeaderSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, import("./gridFocusState").GridColumnGroupIdentifier | null>;
|
|
8
8
|
export declare const gridTabIndexStateSelector: (state: GridStateCommunity) => GridTabIndexState;
|
|
9
9
|
export declare const gridTabIndexCellSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, import("../../..").GridCellCoordinates | null>;
|
|
10
10
|
export declare const gridTabIndexColumnHeaderSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, import("./gridFocusState").GridColumnIdentifier | null>;
|
|
11
11
|
export declare const gridTabIndexColumnHeaderFilterSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, import("./gridFocusState").GridColumnIdentifier | null>;
|
|
12
|
-
export declare const
|
|
12
|
+
export declare const gridTabIndexColumnGroupHeaderSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, import("./gridFocusState").GridColumnGroupIdentifier | null>;
|
|
@@ -3,13 +3,9 @@ export const gridFocusStateSelector = state => state.focus;
|
|
|
3
3
|
export const gridFocusCellSelector = createSelector(gridFocusStateSelector, focusState => focusState.cell);
|
|
4
4
|
export const gridFocusColumnHeaderSelector = createSelector(gridFocusStateSelector, focusState => focusState.columnHeader);
|
|
5
5
|
export const gridFocusColumnHeaderFilterSelector = createSelector(gridFocusStateSelector, focusState => focusState.columnHeaderFilter);
|
|
6
|
-
|
|
7
|
-
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
8
|
-
export const unstable_gridFocusColumnGroupHeaderSelector = createSelector(gridFocusStateSelector, focusState => focusState.columnGroupHeader);
|
|
6
|
+
export const gridFocusColumnGroupHeaderSelector = createSelector(gridFocusStateSelector, focusState => focusState.columnGroupHeader);
|
|
9
7
|
export const gridTabIndexStateSelector = state => state.tabIndex;
|
|
10
8
|
export const gridTabIndexCellSelector = createSelector(gridTabIndexStateSelector, state => state.cell);
|
|
11
9
|
export const gridTabIndexColumnHeaderSelector = createSelector(gridTabIndexStateSelector, state => state.columnHeader);
|
|
12
10
|
export const gridTabIndexColumnHeaderFilterSelector = createSelector(gridTabIndexStateSelector, state => state.columnHeaderFilter);
|
|
13
|
-
|
|
14
|
-
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
15
|
-
export const unstable_gridTabIndexColumnGroupHeaderSelector = createSelector(gridTabIndexStateSelector, state => state.columnGroupHeader);
|
|
11
|
+
export const gridTabIndexColumnGroupHeaderSelector = createSelector(gridTabIndexStateSelector, state => state.columnGroupHeader);
|
|
@@ -6,7 +6,7 @@ import { useGridApiMethod } from '../../utils/useGridApiMethod';
|
|
|
6
6
|
import { useGridLogger } from '../../utils/useGridLogger';
|
|
7
7
|
import { useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
|
|
8
8
|
import { isNavigationKey } from '../../../utils/keyboardUtils';
|
|
9
|
-
import { gridFocusCellSelector,
|
|
9
|
+
import { gridFocusCellSelector, gridFocusColumnGroupHeaderSelector } from './gridFocusStateSelector';
|
|
10
10
|
import { gridVisibleColumnDefinitionsSelector } from '../columns/gridColumnsSelector';
|
|
11
11
|
import { getVisibleRows } from '../../utils/useGridVisibleRows';
|
|
12
12
|
import { clamp } from '../../../utils/utils';
|
|
@@ -164,7 +164,7 @@ export const useGridFocus = (apiRef, props) => {
|
|
|
164
164
|
});
|
|
165
165
|
apiRef.current.forceUpdate();
|
|
166
166
|
}, [apiRef]);
|
|
167
|
-
const getColumnGroupHeaderFocus = React.useCallback(() =>
|
|
167
|
+
const getColumnGroupHeaderFocus = React.useCallback(() => gridFocusColumnGroupHeaderSelector(apiRef), [apiRef]);
|
|
168
168
|
const moveFocusToRelativeCell = React.useCallback((id, field, direction) => {
|
|
169
169
|
let columnIndexToFocus = apiRef.current.getColumnIndex(field);
|
|
170
170
|
const visibleColumns = gridVisibleColumnDefinitionsSelector(apiRef);
|
|
@@ -244,7 +244,7 @@ export const useGridFocus = (apiRef, props) => {
|
|
|
244
244
|
if (event.target !== event.currentTarget) {
|
|
245
245
|
return;
|
|
246
246
|
}
|
|
247
|
-
const focusedColumnGroup =
|
|
247
|
+
const focusedColumnGroup = gridFocusColumnGroupHeaderSelector(apiRef);
|
|
248
248
|
if (focusedColumnGroup !== null && focusedColumnGroup.depth === depth && fields.includes(focusedColumnGroup.field)) {
|
|
249
249
|
// This group cell has already been focused
|
|
250
250
|
return;
|
|
@@ -11,7 +11,7 @@ import { GridCellModes } from '../../../models/gridEditRowModel';
|
|
|
11
11
|
import { isNavigationKey } from '../../../utils/keyboardUtils';
|
|
12
12
|
import { GRID_DETAIL_PANEL_TOGGLE_FIELD } from '../../../constants/gridDetailPanelToggleField';
|
|
13
13
|
import { gridPinnedRowsSelector } from '../rows/gridRowsSelector';
|
|
14
|
-
import {
|
|
14
|
+
import { gridFocusColumnGroupHeaderSelector } from '../focus';
|
|
15
15
|
import { gridColumnGroupsHeaderMaxDepthSelector } from '../columnGrouping/gridColumnGroupsSelector';
|
|
16
16
|
import { gridHeaderFilteringEditFieldSelector, gridHeaderFilteringMenuSelector } from '../headerFiltering/gridHeaderFilteringSelectors';
|
|
17
17
|
import { useGridRegisterPipeProcessor } from '../../core/pipeProcessing';
|
|
@@ -138,10 +138,6 @@ export const useGridKeyboardNavigation = (apiRef, props) => {
|
|
|
138
138
|
// There is one exception for the checkBoxHeader
|
|
139
139
|
return;
|
|
140
140
|
}
|
|
141
|
-
const dimensions = apiRef.current.getRootDimensions();
|
|
142
|
-
if (!dimensions) {
|
|
143
|
-
return;
|
|
144
|
-
}
|
|
145
141
|
const viewportPageSize = apiRef.current.getViewportPageSize();
|
|
146
142
|
const colIndexBefore = params.field ? apiRef.current.getColumnIndex(params.field) : 0;
|
|
147
143
|
const firstRowIndexInPage = currentPageRows.length > 0 ? 0 : null;
|
|
@@ -234,10 +230,6 @@ export const useGridKeyboardNavigation = (apiRef, props) => {
|
|
|
234
230
|
}
|
|
235
231
|
}, [apiRef, currentPageRows.length, headerFilteringEnabled, goToHeaderFilter, goToCell, getRowIdFromIndex, theme.direction, goToHeader, goToGroupHeader]);
|
|
236
232
|
const handleHeaderFilterKeyDown = React.useCallback((params, event) => {
|
|
237
|
-
const dimensions = apiRef.current.getRootDimensions();
|
|
238
|
-
if (!dimensions) {
|
|
239
|
-
return;
|
|
240
|
-
}
|
|
241
233
|
const isEditing = gridHeaderFilteringEditFieldSelector(apiRef) === params.field;
|
|
242
234
|
const isHeaderMenuOpen = gridHeaderFilteringMenuSelector(apiRef) === params.field;
|
|
243
235
|
if (isEditing || isHeaderMenuOpen || !isNavigationKey(event.key)) {
|
|
@@ -324,11 +316,7 @@ export const useGridKeyboardNavigation = (apiRef, props) => {
|
|
|
324
316
|
}
|
|
325
317
|
}, [apiRef, currentPageRows.length, goToHeaderFilter, theme.direction, goToHeader, goToCell, getRowIdFromIndex]);
|
|
326
318
|
const handleColumnGroupHeaderKeyDown = React.useCallback((params, event) => {
|
|
327
|
-
const
|
|
328
|
-
if (!dimensions) {
|
|
329
|
-
return;
|
|
330
|
-
}
|
|
331
|
-
const focusedColumnGroup = unstable_gridFocusColumnGroupHeaderSelector(apiRef);
|
|
319
|
+
const focusedColumnGroup = gridFocusColumnGroupHeaderSelector(apiRef);
|
|
332
320
|
if (focusedColumnGroup === null) {
|
|
333
321
|
return;
|
|
334
322
|
}
|
|
@@ -431,8 +419,7 @@ export const useGridKeyboardNavigation = (apiRef, props) => {
|
|
|
431
419
|
if (!canUpdateFocus) {
|
|
432
420
|
return;
|
|
433
421
|
}
|
|
434
|
-
|
|
435
|
-
if (currentPageRows.length === 0 || !dimensions) {
|
|
422
|
+
if (currentPageRows.length === 0) {
|
|
436
423
|
return;
|
|
437
424
|
}
|
|
438
425
|
const direction = theme.direction;
|
|
@@ -5,7 +5,6 @@ import { gridDensityFactorSelector } from '../density';
|
|
|
5
5
|
import { useGridLogger, useGridSelector, useGridApiMethod, useGridApiEventHandler } from '../../utils';
|
|
6
6
|
import { useGridRegisterPipeProcessor } from '../../core/pipeProcessing';
|
|
7
7
|
import { gridPaginationModelSelector } from './gridPaginationSelector';
|
|
8
|
-
import { calculatePinnedRowsHeight } from '../rows/gridRowsUtils';
|
|
9
8
|
import { getPageCount, noRowCountInServerMode, defaultPageSize, throwIfPageSizeExceedsTheLimit, getDefaultGridPaginationModel, getValidPage } from './gridPaginationUtils';
|
|
10
9
|
export const paginationStateInitializer = (state, props) => {
|
|
11
10
|
var _props$paginationMode, _props$initialState;
|
|
@@ -144,12 +143,11 @@ export const useGridPagination = (apiRef, props) => {
|
|
|
144
143
|
apiRef.current.forceUpdate();
|
|
145
144
|
};
|
|
146
145
|
const handleUpdateAutoPageSize = React.useCallback(() => {
|
|
147
|
-
|
|
148
|
-
if (!props.autoPageSize || !dimensions) {
|
|
146
|
+
if (!props.autoPageSize) {
|
|
149
147
|
return;
|
|
150
148
|
}
|
|
151
|
-
const
|
|
152
|
-
const maximumPageSizeWithoutScrollBar = Math.floor(
|
|
149
|
+
const dimensions = apiRef.current.getRootDimensions();
|
|
150
|
+
const maximumPageSizeWithoutScrollBar = Math.floor(dimensions.viewportInnerSize.height / rowHeight);
|
|
153
151
|
apiRef.current.setPageSize(maximumPageSizeWithoutScrollBar);
|
|
154
152
|
}, [apiRef, props.autoPageSize, rowHeight]);
|
|
155
153
|
useGridApiEventHandler(apiRef, 'viewportInnerSizeChange', handleUpdateAutoPageSize);
|
|
@@ -22,11 +22,11 @@ export declare const gridPinnedRowsSelector: import("../../../utils/createSelect
|
|
|
22
22
|
bottom: {
|
|
23
23
|
id: import("../../..").GridRowId;
|
|
24
24
|
model: import("../../..").GridValidRowModel;
|
|
25
|
-
}[]
|
|
25
|
+
}[];
|
|
26
26
|
top: {
|
|
27
27
|
id: import("../../..").GridRowId;
|
|
28
28
|
model: import("../../..").GridValidRowModel;
|
|
29
|
-
}[]
|
|
29
|
+
}[];
|
|
30
30
|
}>;
|
|
31
31
|
/**
|
|
32
32
|
* @ignore - do not document.
|
|
@@ -28,23 +28,23 @@ export const gridAdditionalRowGroupsSelector = createSelector(gridRowsStateSelec
|
|
|
28
28
|
* @ignore - do not document.
|
|
29
29
|
*/
|
|
30
30
|
export const gridPinnedRowsSelector = createSelectorMemoized(gridAdditionalRowGroupsSelector, additionalRowGroups => {
|
|
31
|
-
var _rawPinnedRows$bottom, _rawPinnedRows$top;
|
|
31
|
+
var _rawPinnedRows$bottom, _rawPinnedRows$bottom2, _rawPinnedRows$top$ma, _rawPinnedRows$top;
|
|
32
32
|
const rawPinnedRows = additionalRowGroups == null ? void 0 : additionalRowGroups.pinnedRows;
|
|
33
33
|
return {
|
|
34
|
-
bottom: rawPinnedRows == null || (_rawPinnedRows$
|
|
34
|
+
bottom: (_rawPinnedRows$bottom = rawPinnedRows == null || (_rawPinnedRows$bottom2 = rawPinnedRows.bottom) == null ? void 0 : _rawPinnedRows$bottom2.map(rowEntry => {
|
|
35
35
|
var _rowEntry$model;
|
|
36
36
|
return {
|
|
37
37
|
id: rowEntry.id,
|
|
38
38
|
model: (_rowEntry$model = rowEntry.model) != null ? _rowEntry$model : {}
|
|
39
39
|
};
|
|
40
|
-
}),
|
|
41
|
-
top: rawPinnedRows == null || (_rawPinnedRows$top = rawPinnedRows.top) == null ? void 0 : _rawPinnedRows$top.map(rowEntry => {
|
|
40
|
+
})) != null ? _rawPinnedRows$bottom : [],
|
|
41
|
+
top: (_rawPinnedRows$top$ma = rawPinnedRows == null || (_rawPinnedRows$top = rawPinnedRows.top) == null ? void 0 : _rawPinnedRows$top.map(rowEntry => {
|
|
42
42
|
var _rowEntry$model2;
|
|
43
43
|
return {
|
|
44
44
|
id: rowEntry.id,
|
|
45
45
|
model: (_rowEntry$model2 = rowEntry.model) != null ? _rowEntry$model2 : {}
|
|
46
46
|
};
|
|
47
|
-
})
|
|
47
|
+
})) != null ? _rawPinnedRows$top$ma : []
|
|
48
48
|
};
|
|
49
49
|
});
|
|
50
50
|
|