@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,4 +1,7 @@
|
|
|
1
1
|
import { createSelector, createSelectorMemoized } from '../../../utils/createSelector';
|
|
2
|
+
import { EMPTY_PINNED_COLUMN_FIELDS } from './gridColumnsInterfaces';
|
|
3
|
+
import { gridThemeSelector } from '../../core/gridCoreSelector';
|
|
4
|
+
|
|
2
5
|
/**
|
|
3
6
|
* Get the columns state
|
|
4
7
|
* @category Columns
|
|
@@ -42,6 +45,55 @@ export const gridVisibleColumnDefinitionsSelector = createSelectorMemoized(gridC
|
|
|
42
45
|
*/
|
|
43
46
|
export const gridVisibleColumnFieldsSelector = createSelectorMemoized(gridVisibleColumnDefinitionsSelector, visibleColumns => visibleColumns.map(column => column.field));
|
|
44
47
|
|
|
48
|
+
/**
|
|
49
|
+
* Get the visible pinned columns model.
|
|
50
|
+
* @category Visible Columns
|
|
51
|
+
*/
|
|
52
|
+
export const gridPinnedColumnsSelector = state => state.pinnedColumns;
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Get the visible pinned columns.
|
|
56
|
+
* @category Visible Columns
|
|
57
|
+
*/
|
|
58
|
+
export const gridVisiblePinnedColumnDefinitionsSelector = createSelectorMemoized(gridColumnsStateSelector, gridPinnedColumnsSelector, gridVisibleColumnFieldsSelector, gridThemeSelector, (columnsState, model, visibleColumnFields, theme) => {
|
|
59
|
+
const visiblePinnedFields = filterVisibleColumns(model, visibleColumnFields, theme.direction === 'rtl');
|
|
60
|
+
const visiblePinnedColumns = {
|
|
61
|
+
left: visiblePinnedFields.left.map(field => columnsState.lookup[field]),
|
|
62
|
+
right: visiblePinnedFields.right.map(field => columnsState.lookup[field])
|
|
63
|
+
};
|
|
64
|
+
return visiblePinnedColumns;
|
|
65
|
+
});
|
|
66
|
+
function filterVisibleColumns(pinnedColumns, columns, invert) {
|
|
67
|
+
var _pinnedColumns$left, _pinnedColumns$right;
|
|
68
|
+
if (!Array.isArray(pinnedColumns.left) && !Array.isArray(pinnedColumns.right)) {
|
|
69
|
+
return EMPTY_PINNED_COLUMN_FIELDS;
|
|
70
|
+
}
|
|
71
|
+
if (((_pinnedColumns$left = pinnedColumns.left) == null ? void 0 : _pinnedColumns$left.length) === 0 && ((_pinnedColumns$right = pinnedColumns.right) == null ? void 0 : _pinnedColumns$right.length) === 0) {
|
|
72
|
+
return EMPTY_PINNED_COLUMN_FIELDS;
|
|
73
|
+
}
|
|
74
|
+
const filter = (newPinnedColumns, remainingColumns) => {
|
|
75
|
+
if (!Array.isArray(newPinnedColumns)) {
|
|
76
|
+
return [];
|
|
77
|
+
}
|
|
78
|
+
return newPinnedColumns.filter(field => remainingColumns.includes(field));
|
|
79
|
+
};
|
|
80
|
+
const leftPinnedColumns = filter(pinnedColumns.left, columns);
|
|
81
|
+
const columnsWithoutLeftPinnedColumns = columns.filter(
|
|
82
|
+
// Filter out from the remaining columns those columns already pinned to the left
|
|
83
|
+
field => !leftPinnedColumns.includes(field));
|
|
84
|
+
const rightPinnedColumns = filter(pinnedColumns.right, columnsWithoutLeftPinnedColumns);
|
|
85
|
+
if (invert) {
|
|
86
|
+
return {
|
|
87
|
+
left: rightPinnedColumns,
|
|
88
|
+
right: leftPinnedColumns
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
return {
|
|
92
|
+
left: leftPinnedColumns,
|
|
93
|
+
right: rightPinnedColumns
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
|
|
45
97
|
/**
|
|
46
98
|
* Get the left position in pixel of each visible columns relative to the left of the first column.
|
|
47
99
|
* @category Visible Columns
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { GridColumnsState, GridColumnsRawState, GridColumnVisibilityModel, GridColumnsInitialState } from './gridColumnsInterfaces';
|
|
3
|
-
import { GridColumnTypesRecord } from '../../../models';
|
|
4
|
-
import { GridStateCommunity } from '../../../models/gridStateCommunity';
|
|
5
3
|
import { GridApiCommunity } from '../../../models/api/gridApiCommunity';
|
|
6
4
|
import { GridColDef } from '../../../models/colDef/gridColDef';
|
|
7
5
|
import { GridApiCommon } from '../../../models/api/gridApiCommon';
|
|
@@ -39,15 +37,13 @@ export declare const hydrateColumnsWidth: (rawState: GridColumnsRawState, viewpo
|
|
|
39
37
|
* The columns not registered in `orderedFields` will be placed after the imported columns.
|
|
40
38
|
*/
|
|
41
39
|
export declare const applyInitialState: (columnsState: GridColumnsRawState, initialState: GridColumnsInitialState | undefined) => GridColumnsRawState;
|
|
42
|
-
export declare const createColumnsState: ({ apiRef, columnsToUpsert, initialState,
|
|
40
|
+
export declare const createColumnsState: ({ apiRef, columnsToUpsert, initialState, columnVisibilityModel, keepOnlyColumnsToUpsert, }: {
|
|
43
41
|
columnsToUpsert: readonly GridColDef[];
|
|
44
42
|
initialState: GridColumnsInitialState | undefined;
|
|
45
|
-
columnTypes: GridColumnTypesRecord;
|
|
46
43
|
columnVisibilityModel?: GridColumnVisibilityModel | undefined;
|
|
47
44
|
keepOnlyColumnsToUpsert: boolean;
|
|
48
45
|
apiRef: React.MutableRefObject<GridApiCommunity>;
|
|
49
46
|
}) => GridColumnsState;
|
|
50
|
-
export declare const mergeColumnsState: (columnsState: GridColumnsState) => (state: GridStateCommunity) => GridStateCommunity;
|
|
51
47
|
export declare function getFirstNonSpannedColumnToRender({ firstColumnToRender, apiRef, firstRowToRender, lastRowToRender, visibleRows, }: {
|
|
52
48
|
firstColumnToRender: number;
|
|
53
49
|
apiRef: React.MutableRefObject<GridApiCommon>;
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
-
import { DEFAULT_GRID_COL_TYPE_KEY, GRID_STRING_COL_DEF } from '../../../colDef';
|
|
2
|
+
import { DEFAULT_GRID_COL_TYPE_KEY, GRID_STRING_COL_DEF, getGridDefaultColumnTypes } from '../../../colDef';
|
|
3
3
|
import { gridColumnsStateSelector, gridColumnVisibilityModelSelector } from './gridColumnsSelector';
|
|
4
4
|
import { clamp } from '../../../utils/utils';
|
|
5
5
|
import { gridDensityFactorSelector } from '../density/densitySelector';
|
|
6
6
|
import { gridColumnGroupsHeaderMaxDepthSelector } from '../columnGrouping/gridColumnGroupsSelector';
|
|
7
7
|
export const COLUMNS_DIMENSION_PROPERTIES = ['maxWidth', 'minWidth', 'width', 'flex'];
|
|
8
|
+
const COLUMN_TYPES = getGridDefaultColumnTypes();
|
|
9
|
+
|
|
8
10
|
/**
|
|
9
11
|
* Computes width for flex columns.
|
|
10
12
|
* Based on CSS Flexbox specification:
|
|
@@ -196,10 +198,10 @@ export const applyInitialState = (columnsState, initialState) => {
|
|
|
196
198
|
});
|
|
197
199
|
return newColumnsState;
|
|
198
200
|
};
|
|
199
|
-
function getDefaultColTypeDef(
|
|
200
|
-
let colDef =
|
|
201
|
-
if (type &&
|
|
202
|
-
colDef =
|
|
201
|
+
function getDefaultColTypeDef(type) {
|
|
202
|
+
let colDef = COLUMN_TYPES[DEFAULT_GRID_COL_TYPE_KEY];
|
|
203
|
+
if (type && COLUMN_TYPES[type]) {
|
|
204
|
+
colDef = COLUMN_TYPES[type];
|
|
203
205
|
}
|
|
204
206
|
return colDef;
|
|
205
207
|
}
|
|
@@ -207,7 +209,6 @@ export const createColumnsState = ({
|
|
|
207
209
|
apiRef,
|
|
208
210
|
columnsToUpsert,
|
|
209
211
|
initialState,
|
|
210
|
-
columnTypes,
|
|
211
212
|
columnVisibilityModel = gridColumnVisibilityModelSelector(apiRef),
|
|
212
213
|
keepOnlyColumnsToUpsert = false
|
|
213
214
|
}) => {
|
|
@@ -244,7 +245,7 @@ export const createColumnsState = ({
|
|
|
244
245
|
columnsToKeep[field] = true;
|
|
245
246
|
let existingState = columnsState.lookup[field];
|
|
246
247
|
if (existingState == null) {
|
|
247
|
-
existingState = _extends({}, getDefaultColTypeDef(
|
|
248
|
+
existingState = _extends({}, getDefaultColTypeDef(newColumn.type), {
|
|
248
249
|
field,
|
|
249
250
|
hasBeenResized: false
|
|
250
251
|
});
|
|
@@ -255,7 +256,7 @@ export const createColumnsState = ({
|
|
|
255
256
|
|
|
256
257
|
// If the column type has changed - merge the existing state with the default column type definition
|
|
257
258
|
if (existingState && existingState.type !== newColumn.type) {
|
|
258
|
-
existingState = _extends({}, getDefaultColTypeDef(
|
|
259
|
+
existingState = _extends({}, getDefaultColTypeDef(newColumn.type), {
|
|
259
260
|
field
|
|
260
261
|
});
|
|
261
262
|
}
|
|
@@ -281,11 +282,8 @@ export const createColumnsState = ({
|
|
|
281
282
|
}
|
|
282
283
|
const columnsStateWithPreProcessing = apiRef.current.unstable_applyPipeProcessors('hydrateColumns', columnsState);
|
|
283
284
|
const columnsStateWithPortableColumns = applyInitialState(columnsStateWithPreProcessing, initialState);
|
|
284
|
-
return hydrateColumnsWidth(columnsStateWithPortableColumns, (_apiRef$current$getRo = (_apiRef$current$getRo2 = (_apiRef$current = apiRef.current).getRootDimensions) == null
|
|
285
|
+
return hydrateColumnsWidth(columnsStateWithPortableColumns, (_apiRef$current$getRo = (_apiRef$current$getRo2 = (_apiRef$current = apiRef.current).getRootDimensions) == null ? void 0 : _apiRef$current$getRo2.call(_apiRef$current).viewportInnerSize.width) != null ? _apiRef$current$getRo : 0);
|
|
285
286
|
};
|
|
286
|
-
export const mergeColumnsState = columnsState => state => _extends({}, state, {
|
|
287
|
-
columns: columnsState
|
|
288
|
-
});
|
|
289
287
|
export function getFirstNonSpannedColumnToRender({
|
|
290
288
|
firstColumnToRender,
|
|
291
289
|
apiRef,
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
1
|
+
export * from './gridColumnsSelector';
|
|
2
|
+
export * from './gridColumnsInterfaces';
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
export
|
|
1
|
+
export * from './gridColumnsSelector';
|
|
2
|
+
export * from './gridColumnsInterfaces';
|
|
@@ -7,67 +7,10 @@ import { useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
|
|
|
7
7
|
*/
|
|
8
8
|
export const useGridColumnSpanning = apiRef => {
|
|
9
9
|
const lookup = React.useRef({});
|
|
10
|
-
const
|
|
11
|
-
const sizes = lookup.current;
|
|
12
|
-
if (!sizes[rowId]) {
|
|
13
|
-
sizes[rowId] = {};
|
|
14
|
-
}
|
|
15
|
-
sizes[rowId][columnIndex] = cellColSpanInfo;
|
|
16
|
-
}, []);
|
|
17
|
-
const getCellColSpanInfo = React.useCallback((rowId, columnIndex) => {
|
|
10
|
+
const getCellColSpanInfo = (rowId, columnIndex) => {
|
|
18
11
|
var _lookup$current$rowId;
|
|
19
12
|
return (_lookup$current$rowId = lookup.current[rowId]) == null ? void 0 : _lookup$current$rowId[columnIndex];
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
// Calculate `colSpan` for the cell.
|
|
23
|
-
const calculateCellColSpan = React.useCallback(params => {
|
|
24
|
-
const {
|
|
25
|
-
columnIndex,
|
|
26
|
-
rowId,
|
|
27
|
-
minFirstColumnIndex,
|
|
28
|
-
maxLastColumnIndex,
|
|
29
|
-
columns
|
|
30
|
-
} = params;
|
|
31
|
-
const columnsLength = columns.length;
|
|
32
|
-
const column = columns[columnIndex];
|
|
33
|
-
const colSpan = typeof column.colSpan === 'function' ? column.colSpan(apiRef.current.getCellParams(rowId, column.field)) : column.colSpan;
|
|
34
|
-
if (!colSpan || colSpan === 1) {
|
|
35
|
-
setCellColSpanInfo(rowId, columnIndex, {
|
|
36
|
-
spannedByColSpan: false,
|
|
37
|
-
cellProps: {
|
|
38
|
-
colSpan: 1,
|
|
39
|
-
width: column.computedWidth
|
|
40
|
-
}
|
|
41
|
-
});
|
|
42
|
-
return {
|
|
43
|
-
colSpan: 1
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
let width = column.computedWidth;
|
|
47
|
-
for (let j = 1; j < colSpan; j += 1) {
|
|
48
|
-
const nextColumnIndex = columnIndex + j;
|
|
49
|
-
// Cells should be spanned only within their column section (left-pinned, right-pinned and unpinned).
|
|
50
|
-
if (nextColumnIndex >= minFirstColumnIndex && nextColumnIndex < maxLastColumnIndex) {
|
|
51
|
-
const nextColumn = columns[nextColumnIndex];
|
|
52
|
-
width += nextColumn.computedWidth;
|
|
53
|
-
setCellColSpanInfo(rowId, columnIndex + j, {
|
|
54
|
-
spannedByColSpan: true,
|
|
55
|
-
rightVisibleCellIndex: Math.min(columnIndex + colSpan, columnsLength - 1),
|
|
56
|
-
leftVisibleCellIndex: columnIndex
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
setCellColSpanInfo(rowId, columnIndex, {
|
|
60
|
-
spannedByColSpan: false,
|
|
61
|
-
cellProps: {
|
|
62
|
-
colSpan,
|
|
63
|
-
width
|
|
64
|
-
}
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
return {
|
|
68
|
-
colSpan
|
|
69
|
-
};
|
|
70
|
-
}, [apiRef, setCellColSpanInfo]);
|
|
13
|
+
};
|
|
71
14
|
|
|
72
15
|
// Calculate `colSpan` for each cell in the row
|
|
73
16
|
const calculateColSpan = React.useCallback(({
|
|
@@ -78,6 +21,8 @@ export const useGridColumnSpanning = apiRef => {
|
|
|
78
21
|
}) => {
|
|
79
22
|
for (let i = minFirstColumn; i < maxLastColumn; i += 1) {
|
|
80
23
|
const cellProps = calculateCellColSpan({
|
|
24
|
+
apiRef,
|
|
25
|
+
lookup: lookup.current,
|
|
81
26
|
columnIndex: i,
|
|
82
27
|
rowId,
|
|
83
28
|
minFirstColumnIndex: minFirstColumn,
|
|
@@ -88,7 +33,7 @@ export const useGridColumnSpanning = apiRef => {
|
|
|
88
33
|
i += cellProps.colSpan - 1;
|
|
89
34
|
}
|
|
90
35
|
}
|
|
91
|
-
}, [
|
|
36
|
+
}, [apiRef]);
|
|
92
37
|
const columnSpanningPublicApi = {
|
|
93
38
|
unstable_getCellColSpanInfo: getCellColSpanInfo
|
|
94
39
|
};
|
|
@@ -102,4 +47,60 @@ export const useGridColumnSpanning = apiRef => {
|
|
|
102
47
|
lookup.current = {};
|
|
103
48
|
}, []);
|
|
104
49
|
useGridApiEventHandler(apiRef, 'columnOrderChange', handleColumnReorderChange);
|
|
105
|
-
};
|
|
50
|
+
};
|
|
51
|
+
function calculateCellColSpan(params) {
|
|
52
|
+
const {
|
|
53
|
+
apiRef,
|
|
54
|
+
lookup,
|
|
55
|
+
columnIndex,
|
|
56
|
+
rowId,
|
|
57
|
+
minFirstColumnIndex,
|
|
58
|
+
maxLastColumnIndex,
|
|
59
|
+
columns
|
|
60
|
+
} = params;
|
|
61
|
+
const columnsLength = columns.length;
|
|
62
|
+
const column = columns[columnIndex];
|
|
63
|
+
const colSpan = typeof column.colSpan === 'function' ? column.colSpan(apiRef.current.getCellParams(rowId, column.field)) : column.colSpan;
|
|
64
|
+
if (!colSpan || colSpan === 1) {
|
|
65
|
+
setCellColSpanInfo(lookup, rowId, columnIndex, {
|
|
66
|
+
spannedByColSpan: false,
|
|
67
|
+
cellProps: {
|
|
68
|
+
colSpan: 1,
|
|
69
|
+
width: column.computedWidth
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
return {
|
|
73
|
+
colSpan: 1
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
let width = column.computedWidth;
|
|
77
|
+
for (let j = 1; j < colSpan; j += 1) {
|
|
78
|
+
const nextColumnIndex = columnIndex + j;
|
|
79
|
+
// Cells should be spanned only within their column section (left-pinned, right-pinned and unpinned).
|
|
80
|
+
if (nextColumnIndex >= minFirstColumnIndex && nextColumnIndex < maxLastColumnIndex) {
|
|
81
|
+
const nextColumn = columns[nextColumnIndex];
|
|
82
|
+
width += nextColumn.computedWidth;
|
|
83
|
+
setCellColSpanInfo(lookup, rowId, columnIndex + j, {
|
|
84
|
+
spannedByColSpan: true,
|
|
85
|
+
rightVisibleCellIndex: Math.min(columnIndex + colSpan, columnsLength - 1),
|
|
86
|
+
leftVisibleCellIndex: columnIndex
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
setCellColSpanInfo(lookup, rowId, columnIndex, {
|
|
90
|
+
spannedByColSpan: false,
|
|
91
|
+
cellProps: {
|
|
92
|
+
colSpan,
|
|
93
|
+
width
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
return {
|
|
98
|
+
colSpan
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
function setCellColSpanInfo(lookup, rowId, columnIndex, cellColSpanInfo) {
|
|
102
|
+
if (!lookup[rowId]) {
|
|
103
|
+
lookup[rowId] = {};
|
|
104
|
+
}
|
|
105
|
+
lookup[rowId][columnIndex] = cellColSpanInfo;
|
|
106
|
+
}
|
|
@@ -5,23 +5,24 @@ import { useGridLogger } from '../../utils/useGridLogger';
|
|
|
5
5
|
import { gridColumnFieldsSelector, gridColumnDefinitionsSelector, gridColumnLookupSelector, gridColumnsStateSelector, gridColumnVisibilityModelSelector, gridVisibleColumnDefinitionsSelector, gridColumnPositionsSelector } from './gridColumnsSelector';
|
|
6
6
|
import { GridSignature, useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
|
|
7
7
|
import { useGridRegisterPipeProcessor, useGridRegisterPipeApplier } from '../../core/pipeProcessing';
|
|
8
|
-
import {
|
|
8
|
+
import { EMPTY_PINNED_COLUMN_FIELDS } from './gridColumnsInterfaces';
|
|
9
|
+
import { hydrateColumnsWidth, createColumnsState, COLUMNS_DIMENSION_PROPERTIES } from './gridColumnsUtils';
|
|
9
10
|
import { GridPreferencePanelsValue } from '../preferencesPanel';
|
|
10
|
-
import { getGridDefaultColumnTypes } from '../../../colDef';
|
|
11
11
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
12
|
-
const defaultColumnTypes = getGridDefaultColumnTypes();
|
|
13
12
|
export const columnsStateInitializer = (state, props, apiRef) => {
|
|
14
|
-
var _props$initialState, _ref, _props$columnVisibili, _props$initialState2;
|
|
13
|
+
var _props$initialState, _ref, _props$columnVisibili, _props$initialState2, _state$pinnedColumns;
|
|
15
14
|
const columnsState = createColumnsState({
|
|
16
15
|
apiRef,
|
|
17
|
-
columnTypes: defaultColumnTypes,
|
|
18
16
|
columnsToUpsert: props.columns,
|
|
19
17
|
initialState: (_props$initialState = props.initialState) == null ? void 0 : _props$initialState.columns,
|
|
20
18
|
columnVisibilityModel: (_ref = (_props$columnVisibili = props.columnVisibilityModel) != null ? _props$columnVisibili : (_props$initialState2 = props.initialState) == null || (_props$initialState2 = _props$initialState2.columns) == null ? void 0 : _props$initialState2.columnVisibilityModel) != null ? _ref : {},
|
|
21
19
|
keepOnlyColumnsToUpsert: true
|
|
22
20
|
});
|
|
23
21
|
return _extends({}, state, {
|
|
24
|
-
columns: columnsState
|
|
22
|
+
columns: columnsState,
|
|
23
|
+
// In pro/premium, this part of the state is defined. We give it an empty but defined value
|
|
24
|
+
// for the community version.
|
|
25
|
+
pinnedColumns: (_state$pinnedColumns = state.pinnedColumns) != null ? _state$pinnedColumns : EMPTY_PINNED_COLUMN_FIELDS
|
|
25
26
|
});
|
|
26
27
|
};
|
|
27
28
|
|
|
@@ -33,9 +34,7 @@ export const columnsStateInitializer = (state, props, apiRef) => {
|
|
|
33
34
|
export function useGridColumns(apiRef, props) {
|
|
34
35
|
var _props$initialState4, _props$slotProps2;
|
|
35
36
|
const logger = useGridLogger(apiRef, 'useGridColumns');
|
|
36
|
-
const columnTypes = defaultColumnTypes;
|
|
37
37
|
const previousColumnsProp = React.useRef(props.columns);
|
|
38
|
-
const previousColumnTypesProp = React.useRef(columnTypes);
|
|
39
38
|
apiRef.current.registerControlState({
|
|
40
39
|
stateId: 'visibleColumns',
|
|
41
40
|
propModel: props.columnVisibilityModel,
|
|
@@ -46,8 +45,8 @@ export function useGridColumns(apiRef, props) {
|
|
|
46
45
|
const setGridColumnsState = React.useCallback(columnsState => {
|
|
47
46
|
logger.debug('Updating columns state.');
|
|
48
47
|
apiRef.current.setState(mergeColumnsState(columnsState));
|
|
49
|
-
apiRef.current.forceUpdate();
|
|
50
48
|
apiRef.current.publishEvent('columnsChange', columnsState.orderedFields);
|
|
49
|
+
apiRef.current.forceUpdate();
|
|
51
50
|
}, [logger, apiRef]);
|
|
52
51
|
|
|
53
52
|
/**
|
|
@@ -70,7 +69,6 @@ export function useGridColumns(apiRef, props) {
|
|
|
70
69
|
apiRef.current.setState(state => _extends({}, state, {
|
|
71
70
|
columns: createColumnsState({
|
|
72
71
|
apiRef,
|
|
73
|
-
columnTypes,
|
|
74
72
|
columnsToUpsert: [],
|
|
75
73
|
initialState: undefined,
|
|
76
74
|
columnVisibilityModel: model,
|
|
@@ -79,17 +77,16 @@ export function useGridColumns(apiRef, props) {
|
|
|
79
77
|
}));
|
|
80
78
|
apiRef.current.forceUpdate();
|
|
81
79
|
}
|
|
82
|
-
}, [apiRef
|
|
80
|
+
}, [apiRef]);
|
|
83
81
|
const updateColumns = React.useCallback(columns => {
|
|
84
82
|
const columnsState = createColumnsState({
|
|
85
83
|
apiRef,
|
|
86
|
-
columnTypes,
|
|
87
84
|
columnsToUpsert: columns,
|
|
88
85
|
initialState: undefined,
|
|
89
86
|
keepOnlyColumnsToUpsert: false
|
|
90
87
|
});
|
|
91
88
|
setGridColumnsState(columnsState);
|
|
92
|
-
}, [apiRef, setGridColumnsState
|
|
89
|
+
}, [apiRef, setGridColumnsState]);
|
|
93
90
|
const setColumnVisibility = React.useCallback((field, isVisible) => {
|
|
94
91
|
var _columnVisibilityMode;
|
|
95
92
|
const columnVisibilityModel = gridColumnVisibilityModelSelector(apiRef);
|
|
@@ -126,7 +123,6 @@ export function useGridColumns(apiRef, props) {
|
|
|
126
123
|
apiRef.current.publishEvent('columnIndexChange', params);
|
|
127
124
|
}, [apiRef, logger, setGridColumnsState, getColumnIndexRelativeToVisibleColumns]);
|
|
128
125
|
const setColumnWidth = React.useCallback((field, width) => {
|
|
129
|
-
var _apiRef$current$getRo, _apiRef$current$getRo2;
|
|
130
126
|
logger.debug(`Updating column ${field} width to ${width}`);
|
|
131
127
|
const columnsState = gridColumnsStateSelector(apiRef.current.state);
|
|
132
128
|
const column = columnsState.lookup[field];
|
|
@@ -138,7 +134,7 @@ export function useGridColumns(apiRef, props) {
|
|
|
138
134
|
lookup: _extends({}, columnsState.lookup, {
|
|
139
135
|
[field]: newColumn
|
|
140
136
|
})
|
|
141
|
-
}),
|
|
137
|
+
}), apiRef.current.getRootDimensions().viewportInnerSize.width));
|
|
142
138
|
apiRef.current.publishEvent('columnWidthChange', {
|
|
143
139
|
element: apiRef.current.getColumnHeaderElement(field),
|
|
144
140
|
colDef: newColumn,
|
|
@@ -215,7 +211,6 @@ export function useGridColumns(apiRef, props) {
|
|
|
215
211
|
}
|
|
216
212
|
const columnsState = createColumnsState({
|
|
217
213
|
apiRef,
|
|
218
|
-
columnTypes,
|
|
219
214
|
columnsToUpsert: [],
|
|
220
215
|
initialState,
|
|
221
216
|
columnVisibilityModel: columnVisibilityModelToImport,
|
|
@@ -226,7 +221,7 @@ export function useGridColumns(apiRef, props) {
|
|
|
226
221
|
apiRef.current.publishEvent('columnsChange', columnsState.orderedFields);
|
|
227
222
|
}
|
|
228
223
|
return params;
|
|
229
|
-
}, [apiRef
|
|
224
|
+
}, [apiRef]);
|
|
230
225
|
const preferencePanelPreProcessing = React.useCallback((initialValue, value) => {
|
|
231
226
|
if (value === GridPreferencePanelsValue.columns) {
|
|
232
227
|
var _props$slotProps;
|
|
@@ -265,13 +260,12 @@ export function useGridColumns(apiRef, props) {
|
|
|
265
260
|
logger.info(`Columns pipe processing have changed, regenerating the columns`);
|
|
266
261
|
const columnsState = createColumnsState({
|
|
267
262
|
apiRef,
|
|
268
|
-
columnTypes,
|
|
269
263
|
columnsToUpsert: [],
|
|
270
264
|
initialState: undefined,
|
|
271
265
|
keepOnlyColumnsToUpsert: false
|
|
272
266
|
});
|
|
273
267
|
setGridColumnsState(columnsState);
|
|
274
|
-
}, [apiRef, logger, setGridColumnsState
|
|
268
|
+
}, [apiRef, logger, setGridColumnsState]);
|
|
275
269
|
useGridRegisterPipeApplier(apiRef, 'hydrateColumns', hydrateColumns);
|
|
276
270
|
|
|
277
271
|
/**
|
|
@@ -286,24 +280,27 @@ export function useGridColumns(apiRef, props) {
|
|
|
286
280
|
return;
|
|
287
281
|
}
|
|
288
282
|
logger.info(`GridColumns have changed, new length ${props.columns.length}`);
|
|
289
|
-
if (previousColumnsProp.current === props.columns
|
|
283
|
+
if (previousColumnsProp.current === props.columns) {
|
|
290
284
|
return;
|
|
291
285
|
}
|
|
292
286
|
const columnsState = createColumnsState({
|
|
293
287
|
apiRef,
|
|
294
|
-
columnTypes,
|
|
295
288
|
initialState: undefined,
|
|
296
289
|
// If the user provides a model, we don't want to set it in the state here because it has it's dedicated `useEffect` which calls `setColumnVisibilityModel`
|
|
297
290
|
columnsToUpsert: props.columns,
|
|
298
291
|
keepOnlyColumnsToUpsert: true
|
|
299
292
|
});
|
|
300
293
|
previousColumnsProp.current = props.columns;
|
|
301
|
-
previousColumnTypesProp.current = columnTypes;
|
|
302
294
|
setGridColumnsState(columnsState);
|
|
303
|
-
}, [logger, apiRef, setGridColumnsState, props.columns
|
|
295
|
+
}, [logger, apiRef, setGridColumnsState, props.columns]);
|
|
304
296
|
React.useEffect(() => {
|
|
305
297
|
if (props.columnVisibilityModel !== undefined) {
|
|
306
298
|
apiRef.current.setColumnVisibilityModel(props.columnVisibilityModel);
|
|
307
299
|
}
|
|
308
300
|
}, [apiRef, logger, props.columnVisibilityModel]);
|
|
301
|
+
}
|
|
302
|
+
function mergeColumnsState(columnsState) {
|
|
303
|
+
return state => _extends({}, state, {
|
|
304
|
+
columns: columnsState
|
|
305
|
+
});
|
|
309
306
|
}
|
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
import type { ElementSize } from '../../../models/elementSize';
|
|
2
2
|
export interface GridDimensions {
|
|
3
|
+
/**
|
|
4
|
+
* Indicates that the dimensions have been initialized.
|
|
5
|
+
*/
|
|
6
|
+
isReady: boolean;
|
|
7
|
+
/**
|
|
8
|
+
* The root container size.
|
|
9
|
+
*/
|
|
10
|
+
root: ElementSize;
|
|
3
11
|
/**
|
|
4
12
|
* The viewport size including scrollbars.
|
|
5
13
|
*/
|
|
@@ -8,6 +16,14 @@ export interface GridDimensions {
|
|
|
8
16
|
* The viewport size not including scrollbars.
|
|
9
17
|
*/
|
|
10
18
|
viewportInnerSize: ElementSize;
|
|
19
|
+
/**
|
|
20
|
+
* The size of the main content (unpinned rows & columns).
|
|
21
|
+
*/
|
|
22
|
+
contentSize: ElementSize;
|
|
23
|
+
/**
|
|
24
|
+
* The minimum size to display the grid, including all pinned sections and headers.
|
|
25
|
+
*/
|
|
26
|
+
minimumSize: ElementSize;
|
|
11
27
|
/**
|
|
12
28
|
* Indicates if a scroll is currently needed to go from the beginning of the first column to the end of the last column.
|
|
13
29
|
*/
|
|
@@ -20,7 +36,43 @@ export interface GridDimensions {
|
|
|
20
36
|
* Size of the scrollbar used to scroll the rows in pixel.
|
|
21
37
|
* It is defined even when the scrollbar is currently not needed.
|
|
22
38
|
*/
|
|
23
|
-
|
|
39
|
+
scrollbarSize: number;
|
|
40
|
+
/**
|
|
41
|
+
* Width of a row.
|
|
42
|
+
*/
|
|
43
|
+
rowWidth: number;
|
|
44
|
+
/**
|
|
45
|
+
* Height of a row.
|
|
46
|
+
*/
|
|
47
|
+
rowHeight: number;
|
|
48
|
+
/**
|
|
49
|
+
* Size of all the visible columns.
|
|
50
|
+
*/
|
|
51
|
+
columnsTotalWidth: number;
|
|
52
|
+
/**
|
|
53
|
+
* Size of left pinned columns.
|
|
54
|
+
*/
|
|
55
|
+
leftPinnedWidth: number;
|
|
56
|
+
/**
|
|
57
|
+
* Size of right pinned columns.
|
|
58
|
+
*/
|
|
59
|
+
rightPinnedWidth: number;
|
|
60
|
+
/**
|
|
61
|
+
* Height of one headers.
|
|
62
|
+
*/
|
|
63
|
+
headerHeight: number;
|
|
64
|
+
/**
|
|
65
|
+
* Height of all the column headers.
|
|
66
|
+
*/
|
|
67
|
+
headersTotalHeight: number;
|
|
68
|
+
/**
|
|
69
|
+
* Size of the top container.
|
|
70
|
+
*/
|
|
71
|
+
topContainerHeight: number;
|
|
72
|
+
/**
|
|
73
|
+
* Size of the bottom container.
|
|
74
|
+
*/
|
|
75
|
+
bottomContainerHeight: number;
|
|
24
76
|
}
|
|
25
77
|
export interface GridDimensionsApi {
|
|
26
78
|
/**
|
|
@@ -29,22 +81,19 @@ export interface GridDimensionsApi {
|
|
|
29
81
|
resize: () => void;
|
|
30
82
|
/**
|
|
31
83
|
* Returns the dimensions of the grid
|
|
32
|
-
* @returns {GridDimensions
|
|
84
|
+
* @returns {GridDimensions} The dimension information of the grid. If `null`, the grid is not ready yet.
|
|
33
85
|
*/
|
|
34
|
-
getRootDimensions: () => GridDimensions
|
|
86
|
+
getRootDimensions: () => GridDimensions;
|
|
35
87
|
}
|
|
36
88
|
export interface GridDimensionsPrivateApi {
|
|
89
|
+
/**
|
|
90
|
+
* Recalculates the grid layout. This should be called when an operation has changed the size
|
|
91
|
+
* of the content of the grid.
|
|
92
|
+
*/
|
|
93
|
+
updateDimensions: () => void;
|
|
37
94
|
/**
|
|
38
95
|
* Returns the amount of rows that are currently visible in the viewport
|
|
39
96
|
* @returns {number} The amount of rows visible in the viewport
|
|
40
97
|
*/
|
|
41
98
|
getViewportPageSize: () => number;
|
|
42
|
-
/**
|
|
43
|
-
* Forces a recalculation of all dimensions.
|
|
44
|
-
*/
|
|
45
|
-
updateGridDimensionsRef: () => void;
|
|
46
|
-
/**
|
|
47
|
-
* Computes the size and publishes a `resize` event with the new value.
|
|
48
|
-
*/
|
|
49
|
-
computeSizeAndPublishResizeEvent: () => void;
|
|
50
99
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const gridDimensionsSelector = state => state.dimensions;
|
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { GridPrivateApiCommunity } from '../../../models/api/gridApiCommunity';
|
|
3
3
|
import { DataGridProcessedProps } from '../../../models/props/DataGridProps';
|
|
4
|
-
|
|
4
|
+
import { GridDimensions } from './gridDimensionsApi';
|
|
5
|
+
import { GridStateInitializer } from '../../utils/useGridInitializeState';
|
|
6
|
+
type RootProps = Pick<DataGridProcessedProps, 'onResize' | 'scrollbarSize' | 'pagination' | 'paginationMode' | 'autoHeight' | 'getRowHeight' | 'rowHeight' | 'columnHeaderHeight'>;
|
|
7
|
+
export type GridDimensionsState = GridDimensions;
|
|
8
|
+
export declare const dimensionsStateInitializer: GridStateInitializer<RootProps>;
|
|
9
|
+
export declare function useGridDimensions(apiRef: React.MutableRefObject<GridPrivateApiCommunity>, props: RootProps): void;
|
|
10
|
+
export {};
|