@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,144 +1,70 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import * as ReactDOM from 'react-dom';
|
|
4
3
|
import { unstable_useForkRef as useForkRef } from '@mui/utils';
|
|
5
|
-
import { styled
|
|
6
|
-
import { defaultMemoize } from 'reselect';
|
|
4
|
+
import { styled } from '@mui/material/styles';
|
|
7
5
|
import { useGridSelector } from '../../utils';
|
|
8
6
|
import { useGridPrivateApiContext } from '../../utils/useGridPrivateApiContext';
|
|
9
|
-
import { useGridRootProps } from '../../utils/useGridRootProps';
|
|
10
7
|
import { useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
|
|
11
8
|
import { GridColumnHeaderItem } from '../../../components/columnHeaders/GridColumnHeaderItem';
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import { areRenderContextsEqual, getRenderableIndexes } from '../virtualization/useGridVirtualScroller';
|
|
15
|
-
import { gridVirtualizationColumnEnabledSelector } from '../virtualization';
|
|
9
|
+
import { gridDimensionsSelector } from '../dimensions';
|
|
10
|
+
import { gridRenderContextColumnsSelector, gridVirtualizationColumnEnabledSelector } from '../virtualization';
|
|
16
11
|
import { GridColumnGroupHeader } from '../../../components/columnHeaders/GridColumnGroupHeader';
|
|
12
|
+
import { GridPinnedColumnPosition, gridVisiblePinnedColumnDefinitionsSelector } from '../columns';
|
|
13
|
+
import { GridScrollbarFillerCell as ScrollbarFiller } from '../../../components/GridScrollbarFillerCell';
|
|
14
|
+
import { gridClasses } from '../../../constants/gridClasses';
|
|
17
15
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
18
|
-
|
|
16
|
+
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
17
|
+
const SpaceFiller = styled('div')({
|
|
18
|
+
/* GridRootStyles conflict */
|
|
19
|
+
'&&': {
|
|
20
|
+
padding: 0,
|
|
21
|
+
width: 'calc(var(--DataGrid-width) - var(--DataGrid-columnsTotalWidth))'
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
export const GridColumnHeaderRow = styled('div', {
|
|
19
25
|
name: 'MuiDataGrid',
|
|
20
26
|
slot: 'ColumnHeaderRow',
|
|
21
27
|
overridesResolver: (props, styles) => styles.columnHeaderRow
|
|
22
|
-
})((
|
|
23
|
-
|
|
28
|
+
})(({
|
|
29
|
+
ownerState: {
|
|
30
|
+
params: {
|
|
31
|
+
position
|
|
32
|
+
} = {},
|
|
33
|
+
leftOverflow = 0
|
|
34
|
+
}
|
|
35
|
+
}) => ({
|
|
36
|
+
display: 'flex',
|
|
37
|
+
height: 'var(--DataGrid-headerHeight)',
|
|
38
|
+
transform: position === undefined ? `translate3d(${leftOverflow !== 0 ? `calc(var(--DataGrid-offsetLeft) - ${leftOverflow}px)` : 'var(--DataGrid-offsetLeft)'}, 0, 0)` : undefined
|
|
24
39
|
}));
|
|
25
|
-
function isUIEvent(event) {
|
|
26
|
-
return !!event.target;
|
|
27
|
-
}
|
|
28
40
|
export const useGridColumnHeaders = props => {
|
|
29
41
|
const {
|
|
30
42
|
innerRef: innerRefProp,
|
|
31
|
-
minColumnIndex = 0,
|
|
32
43
|
visibleColumns,
|
|
33
44
|
sortColumnLookup,
|
|
34
45
|
filterColumnLookup,
|
|
35
|
-
columnPositions,
|
|
36
46
|
columnHeaderTabIndexState,
|
|
37
47
|
columnGroupHeaderTabIndexState,
|
|
38
48
|
columnHeaderFocus,
|
|
39
49
|
columnGroupHeaderFocus,
|
|
40
|
-
densityFactor,
|
|
41
50
|
headerGroupingMaxDepth,
|
|
42
51
|
columnMenuState,
|
|
43
52
|
columnVisibility,
|
|
44
53
|
columnGroupsHeaderStructure,
|
|
45
54
|
hasOtherElementInTabSequence
|
|
46
55
|
} = props;
|
|
47
|
-
const theme = useTheme();
|
|
48
56
|
const [dragCol, setDragCol] = React.useState('');
|
|
49
57
|
const [resizeCol, setResizeCol] = React.useState('');
|
|
50
58
|
const apiRef = useGridPrivateApiContext();
|
|
51
59
|
const hasVirtualization = useGridSelector(apiRef, gridVirtualizationColumnEnabledSelector);
|
|
52
|
-
const rootProps = useGridRootProps();
|
|
53
60
|
const innerRef = React.useRef(null);
|
|
54
61
|
const handleInnerRef = useForkRef(innerRefProp, innerRef);
|
|
55
|
-
const
|
|
56
|
-
const
|
|
57
|
-
const
|
|
58
|
-
const currentPage = useGridVisibleRows(apiRef, rootProps);
|
|
59
|
-
const totalHeaderHeight = getTotalHeaderHeight(apiRef, rootProps.columnHeaderHeight);
|
|
60
|
-
const headerHeight = Math.floor(rootProps.columnHeaderHeight * densityFactor);
|
|
61
|
-
const setRenderContext = React.useCallback(nextRenderContext => {
|
|
62
|
-
if (renderContext && nextRenderContext && areRenderContextsEqual(renderContext, nextRenderContext)) {
|
|
63
|
-
return;
|
|
64
|
-
}
|
|
65
|
-
setRenderContextRaw(nextRenderContext);
|
|
66
|
-
}, [renderContext]);
|
|
62
|
+
const dimensions = useGridSelector(apiRef, gridDimensionsSelector);
|
|
63
|
+
const renderContext = useGridSelector(apiRef, gridRenderContextColumnsSelector);
|
|
64
|
+
const visiblePinnedColumns = useGridSelector(apiRef, gridVisiblePinnedColumnDefinitionsSelector);
|
|
67
65
|
React.useEffect(() => {
|
|
68
66
|
apiRef.current.columnHeadersContainerElementRef.current.scrollLeft = 0;
|
|
69
67
|
}, [apiRef]);
|
|
70
|
-
|
|
71
|
-
// memoize `getFirstColumnIndexToRender`, since it's called on scroll
|
|
72
|
-
const getFirstColumnIndexToRenderRef = React.useRef(defaultMemoize(getFirstColumnIndexToRender, {
|
|
73
|
-
equalityCheck: (a, b) => ['firstColumnIndex', 'minColumnIndex', 'columnBuffer'].every(key => a[key] === b[key])
|
|
74
|
-
}));
|
|
75
|
-
const updateInnerPosition = React.useCallback(nextRenderContext => {
|
|
76
|
-
const [firstRowToRender, lastRowToRender] = getRenderableIndexes({
|
|
77
|
-
firstIndex: nextRenderContext.firstRowIndex,
|
|
78
|
-
lastIndex: nextRenderContext.lastRowIndex,
|
|
79
|
-
minFirstIndex: 0,
|
|
80
|
-
maxLastIndex: currentPage.rows.length,
|
|
81
|
-
buffer: rootProps.rowBuffer
|
|
82
|
-
});
|
|
83
|
-
const firstColumnToRender = getFirstColumnIndexToRenderRef.current({
|
|
84
|
-
firstColumnIndex: nextRenderContext.firstColumnIndex,
|
|
85
|
-
minColumnIndex,
|
|
86
|
-
columnBuffer: rootProps.columnBuffer,
|
|
87
|
-
firstRowToRender,
|
|
88
|
-
lastRowToRender,
|
|
89
|
-
apiRef,
|
|
90
|
-
visibleRows: currentPage.rows
|
|
91
|
-
});
|
|
92
|
-
const direction = theme.direction === 'ltr' ? 1 : -1;
|
|
93
|
-
const offset = firstColumnToRender > 0 ? prevScrollLeft.current - direction * columnPositions[firstColumnToRender] : prevScrollLeft.current;
|
|
94
|
-
innerRef.current.style.transform = `translate3d(${-offset}px, 0px, 0px)`;
|
|
95
|
-
}, [columnPositions, minColumnIndex, rootProps.columnBuffer, apiRef, currentPage.rows, rootProps.rowBuffer, theme.direction]);
|
|
96
|
-
React.useLayoutEffect(() => {
|
|
97
|
-
if (renderContext) {
|
|
98
|
-
updateInnerPosition(renderContext);
|
|
99
|
-
}
|
|
100
|
-
}, [renderContext, updateInnerPosition]);
|
|
101
|
-
const handleScroll = React.useCallback(({
|
|
102
|
-
left,
|
|
103
|
-
renderContext: nextRenderContext = null
|
|
104
|
-
}, event) => {
|
|
105
|
-
if (!innerRef.current) {
|
|
106
|
-
return;
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
// Ignore vertical scroll.
|
|
110
|
-
// Excepts the first event which sets the previous render context.
|
|
111
|
-
if (prevScrollLeft.current === left && prevRenderContext.current?.firstColumnIndex === nextRenderContext?.firstColumnIndex && prevRenderContext.current?.lastColumnIndex === nextRenderContext?.lastColumnIndex) {
|
|
112
|
-
return;
|
|
113
|
-
}
|
|
114
|
-
prevScrollLeft.current = left;
|
|
115
|
-
|
|
116
|
-
// We can only update the position when we guarantee that the render context has been
|
|
117
|
-
// rendered. This is achieved using ReactDOM.flushSync or when the context doesn't change.
|
|
118
|
-
let canUpdateInnerPosition = false;
|
|
119
|
-
if (nextRenderContext !== prevRenderContext.current || !prevRenderContext.current) {
|
|
120
|
-
// ReactDOM.flushSync cannot be called on `scroll` events fired inside effects
|
|
121
|
-
if (isUIEvent(event)) {
|
|
122
|
-
// To prevent flickering, the inner position can only be updated after the new context has
|
|
123
|
-
// been rendered. ReactDOM.flushSync ensures that the state changes will happen before
|
|
124
|
-
// updating the position.
|
|
125
|
-
ReactDOM.flushSync(() => {
|
|
126
|
-
setRenderContext(nextRenderContext);
|
|
127
|
-
});
|
|
128
|
-
canUpdateInnerPosition = true;
|
|
129
|
-
} else {
|
|
130
|
-
setRenderContext(nextRenderContext);
|
|
131
|
-
}
|
|
132
|
-
prevRenderContext.current = nextRenderContext;
|
|
133
|
-
} else {
|
|
134
|
-
canUpdateInnerPosition = true;
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
// Pass directly the render context to avoid waiting for the next render
|
|
138
|
-
if (nextRenderContext && canUpdateInnerPosition) {
|
|
139
|
-
updateInnerPosition(nextRenderContext);
|
|
140
|
-
}
|
|
141
|
-
}, [updateInnerPosition, setRenderContext]);
|
|
142
68
|
const handleColumnResizeStart = React.useCallback(params => setResizeCol(params.field), []);
|
|
143
69
|
const handleColumnResizeStop = React.useCallback(() => setResizeCol(''), []);
|
|
144
70
|
const handleColumnReorderStart = React.useCallback(params => setDragCol(params.field), []);
|
|
@@ -147,53 +73,41 @@ export const useGridColumnHeaders = props => {
|
|
|
147
73
|
useGridApiEventHandler(apiRef, 'columnResizeStop', handleColumnResizeStop);
|
|
148
74
|
useGridApiEventHandler(apiRef, 'columnHeaderDragStart', handleColumnReorderStart);
|
|
149
75
|
useGridApiEventHandler(apiRef, 'columnHeaderDragEnd', handleColumnReorderStop);
|
|
150
|
-
useGridApiEventHandler(apiRef, 'scrollPositionChange', handleScroll);
|
|
151
76
|
|
|
152
77
|
// Helper for computation common between getColumnHeaders and getColumnGroupHeaders
|
|
153
78
|
const getColumnsToRender = params => {
|
|
154
79
|
const {
|
|
155
|
-
renderContext:
|
|
156
|
-
minFirstColumn
|
|
80
|
+
renderContext: currentContext = renderContext,
|
|
81
|
+
// TODO: `minFirstColumn` is not used anymore, could be refactored out.
|
|
157
82
|
maxLastColumn = visibleColumns.length
|
|
158
83
|
} = params || {};
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
}
|
|
162
|
-
const [firstRowToRender, lastRowToRender] = getRenderableIndexes({
|
|
163
|
-
firstIndex: nextRenderContext.firstRowIndex,
|
|
164
|
-
lastIndex: nextRenderContext.lastRowIndex,
|
|
165
|
-
minFirstIndex: 0,
|
|
166
|
-
maxLastIndex: currentPage.rows.length,
|
|
167
|
-
buffer: rootProps.rowBuffer
|
|
168
|
-
});
|
|
169
|
-
const firstColumnToRender = !hasVirtualization ? 0 : getFirstColumnIndexToRenderRef.current({
|
|
170
|
-
firstColumnIndex: nextRenderContext.firstColumnIndex,
|
|
171
|
-
minColumnIndex: minFirstColumn,
|
|
172
|
-
columnBuffer: rootProps.columnBuffer,
|
|
173
|
-
apiRef,
|
|
174
|
-
firstRowToRender,
|
|
175
|
-
lastRowToRender,
|
|
176
|
-
visibleRows: currentPage.rows
|
|
177
|
-
});
|
|
178
|
-
const lastColumnToRender = !hasVirtualization ? maxLastColumn : Math.min(nextRenderContext.lastColumnIndex + rootProps.columnBuffer, maxLastColumn);
|
|
84
|
+
const firstColumnToRender = !hasVirtualization ? 0 : currentContext.firstColumnIndex;
|
|
85
|
+
const lastColumnToRender = !hasVirtualization ? maxLastColumn : currentContext.lastColumnIndex;
|
|
179
86
|
const renderedColumns = visibleColumns.slice(firstColumnToRender, lastColumnToRender);
|
|
180
87
|
return {
|
|
181
88
|
renderedColumns,
|
|
182
89
|
firstColumnToRender,
|
|
183
|
-
lastColumnToRender
|
|
184
|
-
minFirstColumn,
|
|
185
|
-
maxLastColumn
|
|
90
|
+
lastColumnToRender
|
|
186
91
|
};
|
|
187
92
|
};
|
|
93
|
+
const getFiller = (params, borderTop = false) => {
|
|
94
|
+
const isPinnedRight = params?.position === GridPinnedColumnPosition.RIGHT;
|
|
95
|
+
const hasScrollbarFiller = visiblePinnedColumns.right.length > 0 && isPinnedRight || visiblePinnedColumns.right.length === 0 && params?.position === undefined;
|
|
96
|
+
return /*#__PURE__*/_jsxs(React.Fragment, {
|
|
97
|
+
children: [params?.position === undefined && /*#__PURE__*/_jsx(SpaceFiller, {
|
|
98
|
+
className: gridClasses.columnHeader
|
|
99
|
+
}), hasScrollbarFiller && /*#__PURE__*/_jsx(ScrollbarFiller, {
|
|
100
|
+
header: true,
|
|
101
|
+
borderTop: borderTop,
|
|
102
|
+
pinnedRight: isPinnedRight
|
|
103
|
+
})]
|
|
104
|
+
});
|
|
105
|
+
};
|
|
188
106
|
const getColumnHeaders = (params, other = {}) => {
|
|
189
|
-
const columnsToRender = getColumnsToRender(params);
|
|
190
|
-
if (columnsToRender == null) {
|
|
191
|
-
return null;
|
|
192
|
-
}
|
|
193
107
|
const {
|
|
194
108
|
renderedColumns,
|
|
195
109
|
firstColumnToRender
|
|
196
|
-
} =
|
|
110
|
+
} = getColumnsToRender(params);
|
|
197
111
|
const columns = [];
|
|
198
112
|
for (let i = 0; i < renderedColumns.length; i += 1) {
|
|
199
113
|
const colDef = renderedColumns[i];
|
|
@@ -205,7 +119,7 @@ export const useGridColumnHeaders = props => {
|
|
|
205
119
|
columns.push( /*#__PURE__*/_jsx(GridColumnHeaderItem, _extends({}, sortColumnLookup[colDef.field], {
|
|
206
120
|
columnMenuOpen: open,
|
|
207
121
|
filterItemsCounter: filterColumnLookup[colDef.field] && filterColumnLookup[colDef.field].length,
|
|
208
|
-
headerHeight: headerHeight,
|
|
122
|
+
headerHeight: dimensions.headerHeight,
|
|
209
123
|
isDragging: colDef.field === dragCol,
|
|
210
124
|
colDef: colDef,
|
|
211
125
|
colIndex: columnIndex,
|
|
@@ -214,11 +128,13 @@ export const useGridColumnHeaders = props => {
|
|
|
214
128
|
tabIndex: tabIndex
|
|
215
129
|
}, other), colDef.field));
|
|
216
130
|
}
|
|
217
|
-
return /*#__PURE__*/
|
|
131
|
+
return /*#__PURE__*/_jsxs(GridColumnHeaderRow, {
|
|
218
132
|
role: "row",
|
|
219
133
|
"aria-rowindex": headerGroupingMaxDepth + 1,
|
|
220
|
-
ownerState:
|
|
221
|
-
|
|
134
|
+
ownerState: {
|
|
135
|
+
params
|
|
136
|
+
},
|
|
137
|
+
children: [columns, getFiller(params)]
|
|
222
138
|
});
|
|
223
139
|
};
|
|
224
140
|
const getColumnGroupHeaders = params => {
|
|
@@ -226,7 +142,7 @@ export const useGridColumnHeaders = props => {
|
|
|
226
142
|
return null;
|
|
227
143
|
}
|
|
228
144
|
const columnsToRender = getColumnsToRender(params);
|
|
229
|
-
if (columnsToRender
|
|
145
|
+
if (columnsToRender.renderedColumns.length === 0) {
|
|
230
146
|
return null;
|
|
231
147
|
}
|
|
232
148
|
const {
|
|
@@ -238,13 +154,13 @@ export const useGridColumnHeaders = props => {
|
|
|
238
154
|
for (let depth = 0; depth < headerGroupingMaxDepth; depth += 1) {
|
|
239
155
|
const rowStructure = columnGroupsHeaderStructure[depth];
|
|
240
156
|
const firstColumnFieldToRender = visibleColumns[firstColumnToRender].field;
|
|
241
|
-
const firstGroupToRender = apiRef.current.
|
|
157
|
+
const firstGroupToRender = apiRef.current.getColumnGroupPath(firstColumnFieldToRender)[depth] ?? null;
|
|
242
158
|
const firstGroupIndex = rowStructure.findIndex(({
|
|
243
159
|
groupId,
|
|
244
160
|
columnFields
|
|
245
161
|
}) => groupId === firstGroupToRender && columnFields.includes(firstColumnFieldToRender));
|
|
246
162
|
const lastColumnFieldToRender = visibleColumns[lastColumnToRender - 1].field;
|
|
247
|
-
const lastGroupToRender = apiRef.current.
|
|
163
|
+
const lastGroupToRender = apiRef.current.getColumnGroupPath(lastColumnFieldToRender)[depth] ?? null;
|
|
248
164
|
const lastGroupIndex = rowStructure.findIndex(({
|
|
249
165
|
groupId,
|
|
250
166
|
columnFields
|
|
@@ -284,15 +200,14 @@ export const useGridColumnHeaders = props => {
|
|
|
284
200
|
});
|
|
285
201
|
}
|
|
286
202
|
headerToRender.forEach((depthInfo, depthIndex) => {
|
|
287
|
-
columns.push( /*#__PURE__*/
|
|
288
|
-
style: {
|
|
289
|
-
height: `${headerHeight}px`,
|
|
290
|
-
transform: `translateX(-${depthInfo.leftOverflow}px)`
|
|
291
|
-
},
|
|
203
|
+
columns.push( /*#__PURE__*/_jsxs(GridColumnHeaderRow, {
|
|
292
204
|
role: "row",
|
|
293
205
|
"aria-rowindex": depthIndex + 1,
|
|
294
|
-
ownerState:
|
|
295
|
-
|
|
206
|
+
ownerState: {
|
|
207
|
+
params,
|
|
208
|
+
leftOverflow: depthInfo.leftOverflow
|
|
209
|
+
},
|
|
210
|
+
children: [depthInfo.elements.map(({
|
|
296
211
|
groupId,
|
|
297
212
|
width,
|
|
298
213
|
fields,
|
|
@@ -308,33 +223,25 @@ export const useGridColumnHeaders = props => {
|
|
|
308
223
|
depth: depthIndex,
|
|
309
224
|
isLastColumn: colIndex === visibleColumns.length - fields.length,
|
|
310
225
|
maxDepth: headerToRender.length,
|
|
311
|
-
height: headerHeight,
|
|
226
|
+
height: dimensions.headerHeight,
|
|
312
227
|
hasFocus: hasFocus,
|
|
313
228
|
tabIndex: tabIndex
|
|
314
229
|
}, groupIndex);
|
|
315
|
-
})
|
|
230
|
+
}), getFiller(params)]
|
|
316
231
|
}, depthIndex));
|
|
317
232
|
});
|
|
318
233
|
return columns;
|
|
319
234
|
};
|
|
320
|
-
const rootStyle = {
|
|
321
|
-
minHeight: totalHeaderHeight,
|
|
322
|
-
maxHeight: totalHeaderHeight,
|
|
323
|
-
lineHeight: `${headerHeight}px`
|
|
324
|
-
};
|
|
325
235
|
return {
|
|
326
236
|
renderContext,
|
|
237
|
+
getFiller,
|
|
327
238
|
getColumnHeaders,
|
|
328
239
|
getColumnsToRender,
|
|
329
240
|
getColumnGroupHeaders,
|
|
330
241
|
isDragging: !!dragCol,
|
|
331
|
-
getRootProps: (other = {}) => _extends({
|
|
332
|
-
style: rootStyle
|
|
333
|
-
}, other),
|
|
334
242
|
getInnerProps: () => ({
|
|
335
243
|
ref: handleInnerRef,
|
|
336
244
|
role: 'rowgroup'
|
|
337
|
-
})
|
|
338
|
-
headerHeight
|
|
245
|
+
})
|
|
339
246
|
};
|
|
340
247
|
};
|
|
@@ -20,19 +20,25 @@ export const useGridColumnMenu = apiRef => {
|
|
|
20
20
|
* API METHODS
|
|
21
21
|
*/
|
|
22
22
|
const showColumnMenu = React.useCallback(field => {
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
23
|
+
const columnMenuState = gridColumnMenuSelector(apiRef.current.state);
|
|
24
|
+
const newState = {
|
|
25
|
+
open: true,
|
|
26
|
+
field
|
|
27
|
+
};
|
|
28
|
+
const shouldUpdate = newState.open !== columnMenuState.open || newState.field !== columnMenuState.field;
|
|
29
|
+
if (shouldUpdate) {
|
|
30
|
+
apiRef.current.setState(state => {
|
|
31
|
+
if (state.columnMenu.open && state.columnMenu.field === field) {
|
|
32
|
+
return state;
|
|
32
33
|
}
|
|
34
|
+
logger.debug('Opening Column Menu');
|
|
35
|
+
return _extends({}, state, {
|
|
36
|
+
columnMenu: {
|
|
37
|
+
open: true,
|
|
38
|
+
field
|
|
39
|
+
}
|
|
40
|
+
});
|
|
33
41
|
});
|
|
34
|
-
});
|
|
35
|
-
if (shouldUpdate) {
|
|
36
42
|
apiRef.current.hidePreferences();
|
|
37
43
|
apiRef.current.forceUpdate();
|
|
38
44
|
}
|
|
@@ -64,19 +70,18 @@ export const useGridColumnMenu = apiRef => {
|
|
|
64
70
|
}
|
|
65
71
|
apiRef.current.setColumnHeaderFocus(fieldToFocus);
|
|
66
72
|
}
|
|
67
|
-
const
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
return _extends({}, state, {
|
|
73
|
-
columnMenu: _extends({}, state.columnMenu, {
|
|
74
|
-
open: false,
|
|
75
|
-
field: undefined
|
|
76
|
-
})
|
|
77
|
-
});
|
|
78
|
-
});
|
|
73
|
+
const newState = {
|
|
74
|
+
open: false,
|
|
75
|
+
field: undefined
|
|
76
|
+
};
|
|
77
|
+
const shouldUpdate = newState.open !== columnMenuState.open || newState.field !== columnMenuState.field;
|
|
79
78
|
if (shouldUpdate) {
|
|
79
|
+
apiRef.current.setState(state => {
|
|
80
|
+
logger.debug('Hiding Column Menu');
|
|
81
|
+
return _extends({}, state, {
|
|
82
|
+
columnMenu: newState
|
|
83
|
+
});
|
|
84
|
+
});
|
|
80
85
|
apiRef.current.forceUpdate();
|
|
81
86
|
}
|
|
82
87
|
}, [apiRef, logger]);
|
|
@@ -1 +1,9 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export let GridPinnedColumnPosition = /*#__PURE__*/function (GridPinnedColumnPosition) {
|
|
2
|
+
GridPinnedColumnPosition["LEFT"] = "left";
|
|
3
|
+
GridPinnedColumnPosition["RIGHT"] = "right";
|
|
4
|
+
return GridPinnedColumnPosition;
|
|
5
|
+
}({});
|
|
6
|
+
export const EMPTY_PINNED_COLUMN_FIELDS = {
|
|
7
|
+
left: [],
|
|
8
|
+
right: []
|
|
9
|
+
};
|
|
@@ -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,54 @@ 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
|
+
if (!Array.isArray(pinnedColumns.left) && !Array.isArray(pinnedColumns.right)) {
|
|
68
|
+
return EMPTY_PINNED_COLUMN_FIELDS;
|
|
69
|
+
}
|
|
70
|
+
if (pinnedColumns.left?.length === 0 && pinnedColumns.right?.length === 0) {
|
|
71
|
+
return EMPTY_PINNED_COLUMN_FIELDS;
|
|
72
|
+
}
|
|
73
|
+
const filter = (newPinnedColumns, remainingColumns) => {
|
|
74
|
+
if (!Array.isArray(newPinnedColumns)) {
|
|
75
|
+
return [];
|
|
76
|
+
}
|
|
77
|
+
return newPinnedColumns.filter(field => remainingColumns.includes(field));
|
|
78
|
+
};
|
|
79
|
+
const leftPinnedColumns = filter(pinnedColumns.left, columns);
|
|
80
|
+
const columnsWithoutLeftPinnedColumns = columns.filter(
|
|
81
|
+
// Filter out from the remaining columns those columns already pinned to the left
|
|
82
|
+
field => !leftPinnedColumns.includes(field));
|
|
83
|
+
const rightPinnedColumns = filter(pinnedColumns.right, columnsWithoutLeftPinnedColumns);
|
|
84
|
+
if (invert) {
|
|
85
|
+
return {
|
|
86
|
+
left: rightPinnedColumns,
|
|
87
|
+
right: leftPinnedColumns
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
return {
|
|
91
|
+
left: leftPinnedColumns,
|
|
92
|
+
right: rightPinnedColumns
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
|
|
45
96
|
/**
|
|
46
97
|
* Get the left position in pixel of each visible columns relative to the left of the first column.
|
|
47
98
|
* @category Visible Columns
|
|
@@ -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
|
}) => {
|
|
@@ -243,7 +244,7 @@ export const createColumnsState = ({
|
|
|
243
244
|
columnsToKeep[field] = true;
|
|
244
245
|
let existingState = columnsState.lookup[field];
|
|
245
246
|
if (existingState == null) {
|
|
246
|
-
existingState = _extends({}, getDefaultColTypeDef(
|
|
247
|
+
existingState = _extends({}, getDefaultColTypeDef(newColumn.type), {
|
|
247
248
|
field,
|
|
248
249
|
hasBeenResized: false
|
|
249
250
|
});
|
|
@@ -254,7 +255,7 @@ export const createColumnsState = ({
|
|
|
254
255
|
|
|
255
256
|
// If the column type has changed - merge the existing state with the default column type definition
|
|
256
257
|
if (existingState && existingState.type !== newColumn.type) {
|
|
257
|
-
existingState = _extends({}, getDefaultColTypeDef(
|
|
258
|
+
existingState = _extends({}, getDefaultColTypeDef(newColumn.type), {
|
|
258
259
|
field
|
|
259
260
|
});
|
|
260
261
|
}
|
|
@@ -280,11 +281,8 @@ export const createColumnsState = ({
|
|
|
280
281
|
}
|
|
281
282
|
const columnsStateWithPreProcessing = apiRef.current.unstable_applyPipeProcessors('hydrateColumns', columnsState);
|
|
282
283
|
const columnsStateWithPortableColumns = applyInitialState(columnsStateWithPreProcessing, initialState);
|
|
283
|
-
return hydrateColumnsWidth(columnsStateWithPortableColumns, apiRef.current.getRootDimensions?.()
|
|
284
|
+
return hydrateColumnsWidth(columnsStateWithPortableColumns, apiRef.current.getRootDimensions?.().viewportInnerSize.width ?? 0);
|
|
284
285
|
};
|
|
285
|
-
export const mergeColumnsState = columnsState => state => _extends({}, state, {
|
|
286
|
-
columns: columnsState
|
|
287
|
-
});
|
|
288
286
|
export function getFirstNonSpannedColumnToRender({
|
|
289
287
|
firstColumnToRender,
|
|
290
288
|
apiRef,
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
export
|
|
1
|
+
export * from './gridColumnsSelector';
|
|
2
|
+
export * from './gridColumnsInterfaces';
|