@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,119 +1,68 @@
|
|
|
1
1
|
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
2
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
3
|
import * as React from 'react';
|
|
3
|
-
import { unstable_debounce as debounce, unstable_ownerDocument as ownerDocument, unstable_useEnhancedEffect as useEnhancedEffect, unstable_ownerWindow as ownerWindow } from '@mui/utils';
|
|
4
|
+
import { unstable_debounce as debounce, unstable_ownerDocument as ownerDocument, unstable_useEnhancedEffect as useEnhancedEffect, unstable_useEventCallback as useEventCallback, unstable_ownerWindow as ownerWindow } from '@mui/utils';
|
|
4
5
|
import { useGridApiEventHandler, useGridApiOptionHandler } from '../../utils/useGridApiEventHandler';
|
|
5
6
|
import { useGridApiMethod } from '../../utils/useGridApiMethod';
|
|
6
7
|
import { useGridLogger } from '../../utils/useGridLogger';
|
|
7
|
-
import { gridColumnsTotalWidthSelector } from '../columns';
|
|
8
|
+
import { gridColumnsTotalWidthSelector, gridVisiblePinnedColumnDefinitionsSelector } from '../columns';
|
|
9
|
+
import { gridDimensionsSelector } from './gridDimensionsSelectors';
|
|
8
10
|
import { gridDensityFactorSelector } from '../density';
|
|
11
|
+
import { gridRenderContextSelector } from '../virtualization';
|
|
9
12
|
import { useGridSelector } from '../../utils';
|
|
10
13
|
import { getVisibleRows } from '../../utils/useGridVisibleRows';
|
|
11
14
|
import { gridRowsMetaSelector } from '../rows/gridRowsMetaSelector';
|
|
12
15
|
import { calculatePinnedRowsHeight } from '../rows/gridRowsUtils';
|
|
13
16
|
import { getTotalHeaderHeight } from '../columns/gridColumnsUtils';
|
|
14
|
-
var
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
17
|
+
var EMPTY_SIZE = {
|
|
18
|
+
width: 0,
|
|
19
|
+
height: 0
|
|
20
|
+
};
|
|
21
|
+
var EMPTY_DIMENSIONS = {
|
|
22
|
+
isReady: false,
|
|
23
|
+
root: EMPTY_SIZE,
|
|
24
|
+
viewportOuterSize: EMPTY_SIZE,
|
|
25
|
+
viewportInnerSize: EMPTY_SIZE,
|
|
26
|
+
contentSize: EMPTY_SIZE,
|
|
27
|
+
minimumSize: EMPTY_SIZE,
|
|
28
|
+
hasScrollX: false,
|
|
29
|
+
hasScrollY: false,
|
|
30
|
+
scrollbarSize: 0,
|
|
31
|
+
headerHeight: 0,
|
|
32
|
+
rowWidth: 0,
|
|
33
|
+
rowHeight: 0,
|
|
34
|
+
columnsTotalWidth: 0,
|
|
35
|
+
leftPinnedWidth: 0,
|
|
36
|
+
rightPinnedWidth: 0,
|
|
37
|
+
headersTotalHeight: 0,
|
|
38
|
+
topContainerHeight: 0,
|
|
39
|
+
bottomContainerHeight: 0
|
|
40
|
+
};
|
|
41
|
+
export var dimensionsStateInitializer = function dimensionsStateInitializer(state) {
|
|
42
|
+
var dimensions = EMPTY_DIMENSIONS;
|
|
43
|
+
return _extends({}, state, {
|
|
44
|
+
dimensions: dimensions
|
|
45
|
+
});
|
|
36
46
|
};
|
|
37
47
|
export function useGridDimensions(apiRef, props) {
|
|
38
48
|
var logger = useGridLogger(apiRef, 'useResizeContainer');
|
|
39
49
|
var errorShown = React.useRef(false);
|
|
40
|
-
var rootDimensionsRef = React.useRef(
|
|
41
|
-
var fullDimensionsRef = React.useRef(null);
|
|
50
|
+
var rootDimensionsRef = React.useRef(EMPTY_SIZE);
|
|
42
51
|
var rowsMeta = useGridSelector(apiRef, gridRowsMetaSelector);
|
|
52
|
+
var pinnedColumns = useGridSelector(apiRef, gridVisiblePinnedColumnDefinitionsSelector);
|
|
43
53
|
var densityFactor = useGridSelector(apiRef, gridDensityFactorSelector);
|
|
44
54
|
var rowHeight = Math.floor(props.rowHeight * densityFactor);
|
|
45
|
-
var
|
|
46
|
-
var
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
scrollBarSize = props.scrollbarSize;
|
|
57
|
-
} else if (!columnsTotalWidth || !rootElement) {
|
|
58
|
-
scrollBarSize = 0;
|
|
59
|
-
} else {
|
|
60
|
-
var doc = ownerDocument(rootElement);
|
|
61
|
-
var 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
|
-
var viewportOuterSize;
|
|
72
|
-
var hasScrollX;
|
|
73
|
-
var 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
|
-
var 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: scrollBarSize
|
|
96
|
-
});
|
|
97
|
-
hasScrollY = scrollInformation.hasScrollY;
|
|
98
|
-
hasScrollX = scrollInformation.hasScrollX;
|
|
99
|
-
}
|
|
100
|
-
var viewportInnerSize = {
|
|
101
|
-
width: viewportOuterSize.width - (hasScrollY ? scrollBarSize : 0),
|
|
102
|
-
height: viewportOuterSize.height - (hasScrollX ? scrollBarSize : 0)
|
|
103
|
-
};
|
|
104
|
-
var newFullDimensions = {
|
|
105
|
-
viewportOuterSize: viewportOuterSize,
|
|
106
|
-
viewportInnerSize: viewportInnerSize,
|
|
107
|
-
hasScrollX: hasScrollX,
|
|
108
|
-
hasScrollY: hasScrollY,
|
|
109
|
-
scrollBarSize: scrollBarSize
|
|
110
|
-
};
|
|
111
|
-
var 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]);
|
|
55
|
+
var headerHeight = Math.floor(props.columnHeaderHeight * densityFactor);
|
|
56
|
+
var columnsTotalWidth = roundToDecimalPlaces(gridColumnsTotalWidthSelector(apiRef), 6);
|
|
57
|
+
// XXX: The `props as any` below is not resilient to change.
|
|
58
|
+
var hasHeaderFilters = Boolean(props.headerFilters);
|
|
59
|
+
var headersTotalHeight = getTotalHeaderHeight(apiRef, props.columnHeaderHeight) + Number(hasHeaderFilters) * headerHeight;
|
|
60
|
+
var leftPinnedWidth = pinnedColumns.left.reduce(function (w, col) {
|
|
61
|
+
return w + col.computedWidth;
|
|
62
|
+
}, 0);
|
|
63
|
+
var rightPinnedWidth = pinnedColumns.right.reduce(function (w, col) {
|
|
64
|
+
return w + col.computedWidth;
|
|
65
|
+
}, 0);
|
|
117
66
|
var _React$useState = React.useState(),
|
|
118
67
|
_React$useState2 = _slicedToArray(_React$useState, 2),
|
|
119
68
|
savedSize = _React$useState2[0],
|
|
@@ -122,23 +71,39 @@ export function useGridDimensions(apiRef, props) {
|
|
|
122
71
|
return debounce(setSavedSize, 60);
|
|
123
72
|
}, []);
|
|
124
73
|
var previousSize = React.useRef();
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
74
|
+
var getRootDimensions = function getRootDimensions() {
|
|
75
|
+
return apiRef.current.state.dimensions;
|
|
76
|
+
};
|
|
77
|
+
var setDimensions = useEventCallback(function (dimensions) {
|
|
78
|
+
apiRef.current.setState(function (state) {
|
|
79
|
+
return _extends({}, state, {
|
|
80
|
+
dimensions: dimensions
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
});
|
|
133
84
|
var resize = React.useCallback(function () {
|
|
134
|
-
|
|
85
|
+
var _previousSize$current, _previousSize$current2;
|
|
86
|
+
var element = apiRef.current.mainElementRef.current;
|
|
87
|
+
if (!element) {
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
var computedStyle = ownerWindow(element).getComputedStyle(element);
|
|
91
|
+
var height = parseFloat(computedStyle.height) || 0;
|
|
92
|
+
var width = parseFloat(computedStyle.width) || 0;
|
|
93
|
+
var hasHeightChanged = height !== ((_previousSize$current = previousSize.current) == null ? void 0 : _previousSize$current.height);
|
|
94
|
+
var hasWidthChanged = width !== ((_previousSize$current2 = previousSize.current) == null ? void 0 : _previousSize$current2.width);
|
|
95
|
+
if (!previousSize.current || hasHeightChanged || hasWidthChanged) {
|
|
96
|
+
var size = {
|
|
97
|
+
width: width,
|
|
98
|
+
height: height
|
|
99
|
+
};
|
|
100
|
+
apiRef.current.publishEvent('resize', size);
|
|
101
|
+
previousSize.current = size;
|
|
102
|
+
}
|
|
135
103
|
}, [apiRef]);
|
|
136
|
-
var getRootDimensions = React.useCallback(function () {
|
|
137
|
-
return fullDimensionsRef.current;
|
|
138
|
-
}, []);
|
|
139
104
|
var getViewportPageSize = React.useCallback(function () {
|
|
140
|
-
var dimensions = apiRef.current.
|
|
141
|
-
if (!dimensions) {
|
|
105
|
+
var dimensions = gridDimensionsSelector(apiRef.current.state);
|
|
106
|
+
if (!dimensions.isReady) {
|
|
142
107
|
return 0;
|
|
143
108
|
}
|
|
144
109
|
var currentPage = getVisibleRows(apiRef, {
|
|
@@ -149,45 +114,138 @@ export function useGridDimensions(apiRef, props) {
|
|
|
149
114
|
// TODO: Use a combination of scrollTop, dimensions.viewportInnerSize.height and rowsMeta.possitions
|
|
150
115
|
// to find out the maximum number of rows that can fit in the visible part of the grid
|
|
151
116
|
if (props.getRowHeight) {
|
|
152
|
-
var renderContext = apiRef
|
|
117
|
+
var renderContext = gridRenderContextSelector(apiRef);
|
|
153
118
|
var viewportPageSize = renderContext.lastRowIndex - renderContext.firstRowIndex;
|
|
154
119
|
return Math.min(viewportPageSize - 1, currentPage.rows.length);
|
|
155
120
|
}
|
|
156
121
|
var maximumPageSizeWithoutScrollBar = Math.floor(dimensions.viewportInnerSize.height / rowHeight);
|
|
157
122
|
return Math.min(maximumPageSizeWithoutScrollBar, currentPage.rows.length);
|
|
158
123
|
}, [apiRef, props.pagination, props.paginationMode, props.getRowHeight, rowHeight]);
|
|
159
|
-
var
|
|
160
|
-
var _apiRef$current$
|
|
161
|
-
var
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
var
|
|
166
|
-
var
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
var
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
124
|
+
var updateDimensions = React.useCallback(function () {
|
|
125
|
+
var _apiRef$current$updat, _apiRef$current;
|
|
126
|
+
var rootElement = apiRef.current.rootElementRef.current;
|
|
127
|
+
var pinnedRowsHeight = calculatePinnedRowsHeight(apiRef);
|
|
128
|
+
var scrollbarSize = measureScrollbarSize(rootElement, columnsTotalWidth, props.scrollbarSize);
|
|
129
|
+
var topContainerHeight = headersTotalHeight + pinnedRowsHeight.top;
|
|
130
|
+
var bottomContainerHeight = pinnedRowsHeight.bottom;
|
|
131
|
+
var contentSize = {
|
|
132
|
+
width: columnsTotalWidth,
|
|
133
|
+
height: rowsMeta.currentPageTotalHeight
|
|
134
|
+
};
|
|
135
|
+
var viewportOuterSize;
|
|
136
|
+
var viewportInnerSize;
|
|
137
|
+
var hasScrollX = false;
|
|
138
|
+
var hasScrollY = false;
|
|
139
|
+
if (props.autoHeight) {
|
|
140
|
+
hasScrollY = false;
|
|
141
|
+
hasScrollX = Math.round(columnsTotalWidth) > Math.round(rootDimensionsRef.current.width);
|
|
142
|
+
viewportOuterSize = {
|
|
143
|
+
width: rootDimensionsRef.current.width,
|
|
144
|
+
height: topContainerHeight + bottomContainerHeight + contentSize.height
|
|
175
145
|
};
|
|
176
|
-
|
|
177
|
-
|
|
146
|
+
viewportInnerSize = {
|
|
147
|
+
width: Math.max(0, viewportOuterSize.width - (hasScrollY ? scrollbarSize : 0)),
|
|
148
|
+
height: Math.max(0, viewportOuterSize.height - (hasScrollX ? scrollbarSize : 0))
|
|
149
|
+
};
|
|
150
|
+
} else {
|
|
151
|
+
viewportOuterSize = {
|
|
152
|
+
width: rootDimensionsRef.current.width,
|
|
153
|
+
height: rootDimensionsRef.current.height
|
|
154
|
+
};
|
|
155
|
+
viewportInnerSize = {
|
|
156
|
+
width: Math.max(0, viewportOuterSize.width - leftPinnedWidth - rightPinnedWidth),
|
|
157
|
+
height: Math.max(0, viewportOuterSize.height - topContainerHeight - bottomContainerHeight)
|
|
158
|
+
};
|
|
159
|
+
var content = contentSize;
|
|
160
|
+
var container = viewportInnerSize;
|
|
161
|
+
var hasScrollXIfNoYScrollBar = content.width > container.width;
|
|
162
|
+
var hasScrollYIfNoXScrollBar = content.height > container.height;
|
|
163
|
+
if (hasScrollXIfNoYScrollBar || hasScrollYIfNoXScrollBar) {
|
|
164
|
+
hasScrollY = hasScrollYIfNoXScrollBar;
|
|
165
|
+
hasScrollX = content.width + (hasScrollY ? scrollbarSize : 0) > container.width;
|
|
166
|
+
|
|
167
|
+
// We recalculate the scroll y to consider the size of the x scrollbar.
|
|
168
|
+
if (hasScrollX) {
|
|
169
|
+
hasScrollY = content.height + scrollbarSize > container.height;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
if (hasScrollY) {
|
|
173
|
+
viewportInnerSize.width -= scrollbarSize;
|
|
174
|
+
}
|
|
175
|
+
if (hasScrollX) {
|
|
176
|
+
viewportInnerSize.height -= scrollbarSize;
|
|
177
|
+
}
|
|
178
178
|
}
|
|
179
|
-
|
|
180
|
-
|
|
179
|
+
var rowWidth = Math.max(viewportOuterSize.width, columnsTotalWidth + (hasScrollY ? scrollbarSize : 0));
|
|
180
|
+
var minimumSize = {
|
|
181
|
+
width: contentSize.width,
|
|
182
|
+
height: topContainerHeight + contentSize.height + bottomContainerHeight
|
|
183
|
+
};
|
|
184
|
+
var newDimensions = {
|
|
185
|
+
isReady: true,
|
|
186
|
+
root: rootDimensionsRef.current,
|
|
187
|
+
viewportOuterSize: viewportOuterSize,
|
|
188
|
+
viewportInnerSize: viewportInnerSize,
|
|
189
|
+
contentSize: contentSize,
|
|
190
|
+
minimumSize: minimumSize,
|
|
191
|
+
hasScrollX: hasScrollX,
|
|
192
|
+
hasScrollY: hasScrollY,
|
|
193
|
+
scrollbarSize: scrollbarSize,
|
|
194
|
+
headerHeight: headerHeight,
|
|
195
|
+
rowWidth: rowWidth,
|
|
196
|
+
rowHeight: rowHeight,
|
|
197
|
+
columnsTotalWidth: columnsTotalWidth,
|
|
198
|
+
leftPinnedWidth: leftPinnedWidth,
|
|
199
|
+
rightPinnedWidth: rightPinnedWidth,
|
|
200
|
+
headersTotalHeight: headersTotalHeight,
|
|
201
|
+
topContainerHeight: topContainerHeight,
|
|
202
|
+
bottomContainerHeight: bottomContainerHeight
|
|
203
|
+
};
|
|
204
|
+
var prevDimensions = apiRef.current.state.dimensions;
|
|
205
|
+
setDimensions(newDimensions);
|
|
206
|
+
if (newDimensions.viewportInnerSize.width !== prevDimensions.viewportInnerSize.width || newDimensions.viewportInnerSize.height !== prevDimensions.viewportInnerSize.height) {
|
|
207
|
+
apiRef.current.publishEvent('viewportInnerSizeChange', newDimensions.viewportInnerSize);
|
|
208
|
+
}
|
|
209
|
+
(_apiRef$current$updat = (_apiRef$current = apiRef.current).updateRenderContext) == null || _apiRef$current$updat.call(_apiRef$current);
|
|
210
|
+
}, [apiRef, setDimensions, props.scrollbarSize, props.autoHeight, rowsMeta.currentPageTotalHeight, rowHeight, headerHeight, columnsTotalWidth, headersTotalHeight, leftPinnedWidth, rightPinnedWidth]);
|
|
211
|
+
var apiPublic = {
|
|
181
212
|
resize: resize,
|
|
182
213
|
getRootDimensions: getRootDimensions
|
|
183
214
|
};
|
|
184
|
-
var
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
computeSizeAndPublishResizeEvent: computeSizeAndPublishResizeEvent
|
|
215
|
+
var apiPrivate = {
|
|
216
|
+
updateDimensions: updateDimensions,
|
|
217
|
+
getViewportPageSize: getViewportPageSize
|
|
188
218
|
};
|
|
189
|
-
useGridApiMethod(apiRef,
|
|
190
|
-
useGridApiMethod(apiRef,
|
|
219
|
+
useGridApiMethod(apiRef, apiPublic, 'public');
|
|
220
|
+
useGridApiMethod(apiRef, apiPrivate, 'private');
|
|
221
|
+
useEnhancedEffect(function () {
|
|
222
|
+
if (savedSize) {
|
|
223
|
+
updateDimensions();
|
|
224
|
+
apiRef.current.publishEvent('debouncedResize', rootDimensionsRef.current);
|
|
225
|
+
}
|
|
226
|
+
}, [apiRef, savedSize, updateDimensions]);
|
|
227
|
+
var root = apiRef.current.rootElementRef.current;
|
|
228
|
+
var dimensions = apiRef.current.state.dimensions;
|
|
229
|
+
useEnhancedEffect(function () {
|
|
230
|
+
if (!root) {
|
|
231
|
+
return;
|
|
232
|
+
}
|
|
233
|
+
var set = function set(k, v) {
|
|
234
|
+
return root.style.setProperty(k, v);
|
|
235
|
+
};
|
|
236
|
+
set('--DataGrid-width', "".concat(dimensions.viewportOuterSize.width, "px"));
|
|
237
|
+
set('--DataGrid-hasScrollX', "".concat(Number(dimensions.hasScrollX)));
|
|
238
|
+
set('--DataGrid-hasScrollY', "".concat(Number(dimensions.hasScrollY)));
|
|
239
|
+
set('--DataGrid-scrollbarSize', "".concat(dimensions.scrollbarSize, "px"));
|
|
240
|
+
set('--DataGrid-rowWidth', "".concat(dimensions.rowWidth, "px"));
|
|
241
|
+
set('--DataGrid-columnsTotalWidth', "".concat(dimensions.columnsTotalWidth, "px"));
|
|
242
|
+
set('--DataGrid-leftPinnedWidth', "".concat(dimensions.leftPinnedWidth, "px"));
|
|
243
|
+
set('--DataGrid-rightPinnedWidth', "".concat(dimensions.rightPinnedWidth, "px"));
|
|
244
|
+
set('--DataGrid-headerHeight', "".concat(dimensions.headerHeight, "px"));
|
|
245
|
+
set('--DataGrid-headersTotalHeight', "".concat(dimensions.headersTotalHeight, "px"));
|
|
246
|
+
set('--DataGrid-topContainerHeight', "".concat(dimensions.topContainerHeight, "px"));
|
|
247
|
+
set('--DataGrid-bottomContainerHeight', "".concat(dimensions.bottomContainerHeight, "px"));
|
|
248
|
+
}, [root, dimensions]);
|
|
191
249
|
var isFirstSizing = React.useRef(true);
|
|
192
250
|
var handleResize = React.useCallback(function (size) {
|
|
193
251
|
rootDimensionsRef.current = size;
|
|
@@ -202,12 +260,6 @@ export function useGridDimensions(apiRef, props) {
|
|
|
202
260
|
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'));
|
|
203
261
|
errorShown.current = true;
|
|
204
262
|
}
|
|
205
|
-
if (isTestEnvironment) {
|
|
206
|
-
// We don't need to debounce the resize for tests.
|
|
207
|
-
setSavedSize(size);
|
|
208
|
-
isFirstSizing.current = false;
|
|
209
|
-
return;
|
|
210
|
-
}
|
|
211
263
|
if (isFirstSizing.current) {
|
|
212
264
|
// We want to initialize the grid dimensions as soon as possible to avoid flickering
|
|
213
265
|
setSavedSize(size);
|
|
@@ -216,12 +268,35 @@ export function useGridDimensions(apiRef, props) {
|
|
|
216
268
|
}
|
|
217
269
|
debouncedSetSavedSize(size);
|
|
218
270
|
}, [props.autoHeight, debouncedSetSavedSize, logger]);
|
|
219
|
-
useEnhancedEffect(
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
useGridApiOptionHandler(apiRef, '
|
|
223
|
-
useGridApiOptionHandler(apiRef, 'paginationModelChange', updateGridDimensionsRef);
|
|
224
|
-
useGridApiOptionHandler(apiRef, 'columnsChange', updateGridDimensionsRef);
|
|
271
|
+
useEnhancedEffect(updateDimensions, [updateDimensions]);
|
|
272
|
+
useGridApiOptionHandler(apiRef, 'sortedRowsSet', updateDimensions);
|
|
273
|
+
useGridApiOptionHandler(apiRef, 'paginationModelChange', updateDimensions);
|
|
274
|
+
useGridApiOptionHandler(apiRef, 'columnsChange', updateDimensions);
|
|
225
275
|
useGridApiEventHandler(apiRef, 'resize', handleResize);
|
|
226
276
|
useGridApiOptionHandler(apiRef, 'debouncedResize', props.onResize);
|
|
277
|
+
}
|
|
278
|
+
function measureScrollbarSize(rootElement, columnsTotalWidth, scrollbarSize) {
|
|
279
|
+
if (scrollbarSize !== undefined) {
|
|
280
|
+
return scrollbarSize;
|
|
281
|
+
}
|
|
282
|
+
if (rootElement === null || columnsTotalWidth === 0) {
|
|
283
|
+
return 0;
|
|
284
|
+
}
|
|
285
|
+
var doc = ownerDocument(rootElement);
|
|
286
|
+
var scrollDiv = doc.createElement('div');
|
|
287
|
+
scrollDiv.style.width = '99px';
|
|
288
|
+
scrollDiv.style.height = '99px';
|
|
289
|
+
scrollDiv.style.position = 'absolute';
|
|
290
|
+
scrollDiv.style.overflow = 'scroll';
|
|
291
|
+
scrollDiv.className = 'scrollDiv';
|
|
292
|
+
rootElement.appendChild(scrollDiv);
|
|
293
|
+
var size = scrollDiv.offsetWidth - scrollDiv.clientWidth;
|
|
294
|
+
rootElement.removeChild(scrollDiv);
|
|
295
|
+
return size;
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
// Get rid of floating point imprecision errors
|
|
299
|
+
// https://github.com/mui/mui-x/issues/9550#issuecomment-1619020477
|
|
300
|
+
function roundToDecimalPlaces(value, decimals) {
|
|
301
|
+
return Math.round(value * Math.pow(10, decimals)) / Math.pow(10, decimals);
|
|
227
302
|
}
|
|
@@ -116,10 +116,10 @@ export function buildCSV(options) {
|
|
|
116
116
|
});
|
|
117
117
|
var headerRows = [];
|
|
118
118
|
if (includeColumnGroupsHeaders) {
|
|
119
|
-
var columnGroupLookup = apiRef.current.
|
|
119
|
+
var columnGroupLookup = apiRef.current.getAllGroupDetails();
|
|
120
120
|
var maxColumnGroupsDepth = 0;
|
|
121
121
|
var columnGroupPathsLookup = filteredColumns.reduce(function (acc, column) {
|
|
122
|
-
var columnGroupPath = apiRef.current.
|
|
122
|
+
var columnGroupPath = apiRef.current.getColumnGroupPath(column.field);
|
|
123
123
|
acc[column.field] = columnGroupPath;
|
|
124
124
|
maxColumnGroupsDepth = Math.max(maxColumnGroupsDepth, columnGroupPath.length);
|
|
125
125
|
return acc;
|
|
@@ -7,7 +7,7 @@ import { useLazyRef } from '../../utils/useLazyRef';
|
|
|
7
7
|
import { useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
|
|
8
8
|
import { useGridApiMethod } from '../../utils/useGridApiMethod';
|
|
9
9
|
import { useGridLogger } from '../../utils/useGridLogger';
|
|
10
|
-
import {
|
|
10
|
+
import { gridColumnLookupSelector } from '../columns/gridColumnsSelector';
|
|
11
11
|
import { GridPreferencePanelsValue } from '../preferencesPanel/gridPreferencePanelsValue';
|
|
12
12
|
import { getDefaultGridFilterModel } from './gridFilterState';
|
|
13
13
|
import { gridFilterModelSelector } from './gridFilterSelector';
|
|
@@ -322,9 +322,9 @@ export var useGridFilter = function useGridFilter(apiRef, props) {
|
|
|
322
322
|
var handleColumnsChange = React.useCallback(function () {
|
|
323
323
|
logger.debug('onColUpdated - GridColumns changed, applying filters');
|
|
324
324
|
var filterModel = gridFilterModelSelector(apiRef);
|
|
325
|
-
var
|
|
325
|
+
var columnsLookup = gridColumnLookupSelector(apiRef);
|
|
326
326
|
var newFilterItems = filterModel.items.filter(function (item) {
|
|
327
|
-
return item.field &&
|
|
327
|
+
return item.field && columnsLookup[item.field];
|
|
328
328
|
});
|
|
329
329
|
if (newFilterItems.length < filterModel.items.length) {
|
|
330
330
|
apiRef.current.setFilterModel(_extends({}, filterModel, {
|
|
@@ -11,9 +11,7 @@ export var gridFocusColumnHeaderSelector = createSelector(gridFocusStateSelector
|
|
|
11
11
|
export var gridFocusColumnHeaderFilterSelector = createSelector(gridFocusStateSelector, function (focusState) {
|
|
12
12
|
return focusState.columnHeaderFilter;
|
|
13
13
|
});
|
|
14
|
-
|
|
15
|
-
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
16
|
-
export var unstable_gridFocusColumnGroupHeaderSelector = createSelector(gridFocusStateSelector, function (focusState) {
|
|
14
|
+
export var gridFocusColumnGroupHeaderSelector = createSelector(gridFocusStateSelector, function (focusState) {
|
|
17
15
|
return focusState.columnGroupHeader;
|
|
18
16
|
});
|
|
19
17
|
export var gridTabIndexStateSelector = function gridTabIndexStateSelector(state) {
|
|
@@ -28,8 +26,6 @@ export var gridTabIndexColumnHeaderSelector = createSelector(gridTabIndexStateSe
|
|
|
28
26
|
export var gridTabIndexColumnHeaderFilterSelector = createSelector(gridTabIndexStateSelector, function (state) {
|
|
29
27
|
return state.columnHeaderFilter;
|
|
30
28
|
});
|
|
31
|
-
|
|
32
|
-
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
33
|
-
export var unstable_gridTabIndexColumnGroupHeaderSelector = createSelector(gridTabIndexStateSelector, function (state) {
|
|
29
|
+
export var gridTabIndexColumnGroupHeaderSelector = createSelector(gridTabIndexStateSelector, function (state) {
|
|
34
30
|
return state.columnGroupHeader;
|
|
35
31
|
});
|
|
@@ -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';
|
|
@@ -170,7 +170,7 @@ export var useGridFocus = function useGridFocus(apiRef, props) {
|
|
|
170
170
|
apiRef.current.forceUpdate();
|
|
171
171
|
}, [apiRef]);
|
|
172
172
|
var getColumnGroupHeaderFocus = React.useCallback(function () {
|
|
173
|
-
return
|
|
173
|
+
return gridFocusColumnGroupHeaderSelector(apiRef);
|
|
174
174
|
}, [apiRef]);
|
|
175
175
|
var moveFocusToRelativeCell = React.useCallback(function (id, field, direction) {
|
|
176
176
|
var columnIndexToFocus = apiRef.current.getColumnIndex(field);
|
|
@@ -250,7 +250,7 @@ export var useGridFocus = function useGridFocus(apiRef, props) {
|
|
|
250
250
|
if (event.target !== event.currentTarget) {
|
|
251
251
|
return;
|
|
252
252
|
}
|
|
253
|
-
var focusedColumnGroup =
|
|
253
|
+
var focusedColumnGroup = gridFocusColumnGroupHeaderSelector(apiRef);
|
|
254
254
|
if (focusedColumnGroup !== null && focusedColumnGroup.depth === depth && fields.includes(focusedColumnGroup.field)) {
|
|
255
255
|
// This group cell has already been focused
|
|
256
256
|
return;
|
|
@@ -12,7 +12,7 @@ import { GridCellModes } from '../../../models/gridEditRowModel';
|
|
|
12
12
|
import { isNavigationKey } from '../../../utils/keyboardUtils';
|
|
13
13
|
import { GRID_DETAIL_PANEL_TOGGLE_FIELD } from '../../../constants/gridDetailPanelToggleField';
|
|
14
14
|
import { gridPinnedRowsSelector } from '../rows/gridRowsSelector';
|
|
15
|
-
import {
|
|
15
|
+
import { gridFocusColumnGroupHeaderSelector } from '../focus';
|
|
16
16
|
import { gridColumnGroupsHeaderMaxDepthSelector } from '../columnGrouping/gridColumnGroupsSelector';
|
|
17
17
|
import { gridHeaderFilteringEditFieldSelector, gridHeaderFilteringMenuSelector } from '../headerFiltering/gridHeaderFilteringSelectors';
|
|
18
18
|
import { useGridRegisterPipeProcessor } from '../../core/pipeProcessing';
|
|
@@ -140,10 +140,6 @@ export var useGridKeyboardNavigation = function useGridKeyboardNavigation(apiRef
|
|
|
140
140
|
// There is one exception for the checkBoxHeader
|
|
141
141
|
return;
|
|
142
142
|
}
|
|
143
|
-
var dimensions = apiRef.current.getRootDimensions();
|
|
144
|
-
if (!dimensions) {
|
|
145
|
-
return;
|
|
146
|
-
}
|
|
147
143
|
var viewportPageSize = apiRef.current.getViewportPageSize();
|
|
148
144
|
var colIndexBefore = params.field ? apiRef.current.getColumnIndex(params.field) : 0;
|
|
149
145
|
var firstRowIndexInPage = currentPageRows.length > 0 ? 0 : null;
|
|
@@ -236,10 +232,6 @@ export var useGridKeyboardNavigation = function useGridKeyboardNavigation(apiRef
|
|
|
236
232
|
}
|
|
237
233
|
}, [apiRef, currentPageRows.length, headerFilteringEnabled, goToHeaderFilter, goToCell, getRowIdFromIndex, theme.direction, goToHeader, goToGroupHeader]);
|
|
238
234
|
var handleHeaderFilterKeyDown = React.useCallback(function (params, event) {
|
|
239
|
-
var dimensions = apiRef.current.getRootDimensions();
|
|
240
|
-
if (!dimensions) {
|
|
241
|
-
return;
|
|
242
|
-
}
|
|
243
235
|
var isEditing = gridHeaderFilteringEditFieldSelector(apiRef) === params.field;
|
|
244
236
|
var isHeaderMenuOpen = gridHeaderFilteringMenuSelector(apiRef) === params.field;
|
|
245
237
|
if (isEditing || isHeaderMenuOpen || !isNavigationKey(event.key)) {
|
|
@@ -326,11 +318,7 @@ export var useGridKeyboardNavigation = function useGridKeyboardNavigation(apiRef
|
|
|
326
318
|
}
|
|
327
319
|
}, [apiRef, currentPageRows.length, goToHeaderFilter, theme.direction, goToHeader, goToCell, getRowIdFromIndex]);
|
|
328
320
|
var handleColumnGroupHeaderKeyDown = React.useCallback(function (params, event) {
|
|
329
|
-
var
|
|
330
|
-
if (!dimensions) {
|
|
331
|
-
return;
|
|
332
|
-
}
|
|
333
|
-
var focusedColumnGroup = unstable_gridFocusColumnGroupHeaderSelector(apiRef);
|
|
321
|
+
var focusedColumnGroup = gridFocusColumnGroupHeaderSelector(apiRef);
|
|
334
322
|
if (focusedColumnGroup === null) {
|
|
335
323
|
return;
|
|
336
324
|
}
|
|
@@ -429,8 +417,7 @@ export var useGridKeyboardNavigation = function useGridKeyboardNavigation(apiRef
|
|
|
429
417
|
if (!canUpdateFocus) {
|
|
430
418
|
return;
|
|
431
419
|
}
|
|
432
|
-
|
|
433
|
-
if (currentPageRows.length === 0 || !dimensions) {
|
|
420
|
+
if (currentPageRows.length === 0) {
|
|
434
421
|
return;
|
|
435
422
|
}
|
|
436
423
|
var 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 var paginationStateInitializer = function paginationStateInitializer(state, props) {
|
|
11
10
|
var _props$paginationMode, _props$initialState;
|
|
@@ -146,12 +145,11 @@ export var useGridPagination = function useGridPagination(apiRef, props) {
|
|
|
146
145
|
apiRef.current.forceUpdate();
|
|
147
146
|
};
|
|
148
147
|
var handleUpdateAutoPageSize = React.useCallback(function () {
|
|
149
|
-
|
|
150
|
-
if (!props.autoPageSize || !dimensions) {
|
|
148
|
+
if (!props.autoPageSize) {
|
|
151
149
|
return;
|
|
152
150
|
}
|
|
153
|
-
var
|
|
154
|
-
var maximumPageSizeWithoutScrollBar = Math.floor(
|
|
151
|
+
var dimensions = apiRef.current.getRootDimensions();
|
|
152
|
+
var maximumPageSizeWithoutScrollBar = Math.floor(dimensions.viewportInnerSize.height / rowHeight);
|
|
155
153
|
apiRef.current.setPageSize(maximumPageSizeWithoutScrollBar);
|
|
156
154
|
}, [apiRef, props.autoPageSize, rowHeight]);
|
|
157
155
|
useGridApiEventHandler(apiRef, 'viewportInnerSizeChange', handleUpdateAutoPageSize);
|
|
@@ -61,23 +61,23 @@ export var gridAdditionalRowGroupsSelector = createSelector(gridRowsStateSelecto
|
|
|
61
61
|
* @ignore - do not document.
|
|
62
62
|
*/
|
|
63
63
|
export var gridPinnedRowsSelector = createSelectorMemoized(gridAdditionalRowGroupsSelector, function (additionalRowGroups) {
|
|
64
|
-
var _rawPinnedRows$bottom, _rawPinnedRows$top;
|
|
64
|
+
var _rawPinnedRows$bottom, _rawPinnedRows$bottom2, _rawPinnedRows$top$ma, _rawPinnedRows$top;
|
|
65
65
|
var rawPinnedRows = additionalRowGroups == null ? void 0 : additionalRowGroups.pinnedRows;
|
|
66
66
|
return {
|
|
67
|
-
bottom: rawPinnedRows == null || (_rawPinnedRows$
|
|
67
|
+
bottom: (_rawPinnedRows$bottom = rawPinnedRows == null || (_rawPinnedRows$bottom2 = rawPinnedRows.bottom) == null ? void 0 : _rawPinnedRows$bottom2.map(function (rowEntry) {
|
|
68
68
|
var _rowEntry$model;
|
|
69
69
|
return {
|
|
70
70
|
id: rowEntry.id,
|
|
71
71
|
model: (_rowEntry$model = rowEntry.model) != null ? _rowEntry$model : {}
|
|
72
72
|
};
|
|
73
|
-
}),
|
|
74
|
-
top: rawPinnedRows == null || (_rawPinnedRows$top = rawPinnedRows.top) == null ? void 0 : _rawPinnedRows$top.map(function (rowEntry) {
|
|
73
|
+
})) != null ? _rawPinnedRows$bottom : [],
|
|
74
|
+
top: (_rawPinnedRows$top$ma = rawPinnedRows == null || (_rawPinnedRows$top = rawPinnedRows.top) == null ? void 0 : _rawPinnedRows$top.map(function (rowEntry) {
|
|
75
75
|
var _rowEntry$model2;
|
|
76
76
|
return {
|
|
77
77
|
id: rowEntry.id,
|
|
78
78
|
model: (_rowEntry$model2 = rowEntry.model) != null ? _rowEntry$model2 : {}
|
|
79
79
|
};
|
|
80
|
-
})
|
|
80
|
+
})) != null ? _rawPinnedRows$top$ma : []
|
|
81
81
|
};
|
|
82
82
|
});
|
|
83
83
|
|