@mui/x-data-grid 7.0.0-alpha.7 → 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 +554 -51
- package/DataGrid/DataGrid.js +15 -27
- package/DataGrid/useDataGridComponent.js +2 -1
- package/DataGrid/useDataGridProps.js +1 -0
- package/README.md +1 -1
- package/colDef/gridDateColDef.js +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/GridPagination.d.ts +4 -4
- package/components/GridPagination.js +1 -1
- 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/GridActionsCell.js +1 -1
- package/components/cell/GridActionsCellItem.d.ts +6 -6
- package/components/cell/GridCell.d.ts +15 -21
- package/components/cell/GridCell.js +68 -373
- 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.d.ts +3 -3
- package/components/panel/GridPanel.js +3 -4
- package/components/panel/filterPanel/GridFilterForm.d.ts +6 -4
- package/components/panel/filterPanel/GridFilterForm.js +32 -15
- 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/toolbar/GridToolbarQuickFilter.d.ts +4 -0
- package/components/toolbar/GridToolbarQuickFilter.js +4 -0
- 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/useGridLoggerFactory.js +2 -2
- 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/gridColumnGroupsUtils.js +1 -1
- package/hooks/features/columnGrouping/useGridColumnGrouping.d.ts +1 -1
- package/hooks/features/columnGrouping/useGridColumnGrouping.js +13 -18
- 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/editing/useGridCellEditing.js +4 -4
- package/hooks/features/editing/useGridRowEditing.js +4 -4
- package/hooks/features/export/serializers/csvSerializer.js +3 -3
- package/hooks/features/export/useGridPrintExport.js +1 -1
- package/hooks/features/filter/gridFilterUtils.js +5 -5
- 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/gridPaginationUtils.js +2 -2
- package/hooks/features/pagination/useGridPagination.js +3 -5
- package/hooks/features/rowSelection/useGridRowSelection.js +1 -1
- 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 +6 -6
- package/hooks/features/rows/useGridRows.js +7 -7
- package/hooks/features/rows/useGridRowsMeta.js +9 -6
- package/hooks/features/scroll/useGridScroll.js +8 -10
- package/hooks/features/sorting/gridSortingUtils.js +5 -3
- 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/useGridApiContext.js +1 -1
- package/hooks/utils/useGridAriaAttributes.js +1 -2
- package/hooks/utils/useGridNativeEventListener.js +4 -9
- package/hooks/utils/useGridPrivateApiContext.js +1 -1
- package/hooks/utils/useGridRootProps.js +1 -1
- package/hooks/utils/useGridSelector.js +1 -1
- 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.d.ts +0 -1
- package/index.js +1 -2
- package/internals/index.d.ts +13 -9
- package/internals/index.js +9 -7
- package/internals/utils/index.d.ts +1 -0
- package/internals/utils/index.js +2 -1
- package/internals/utils/propValidation.d.ts +4 -0
- package/internals/utils/propValidation.js +19 -0
- package/legacy/DataGrid/DataGrid.js +20 -29
- package/legacy/DataGrid/useDataGridComponent.js +2 -1
- package/legacy/DataGrid/useDataGridProps.js +1 -0
- package/legacy/colDef/gridDateColDef.js +1 -1
- package/legacy/components/GridColumnHeaders.js +3 -11
- package/legacy/components/GridDetailPanels.js +4 -0
- package/legacy/components/GridHeaders.js +53 -0
- package/legacy/components/GridPagination.js +1 -1
- 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/GridActionsCell.js +1 -1
- package/legacy/components/cell/GridCell.js +70 -378
- 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 +31 -14
- 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/toolbar/GridToolbarQuickFilter.js +4 -0
- 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/useGridLoggerFactory.js +2 -2
- package/legacy/hooks/core/useGridRefs.js +13 -0
- package/legacy/hooks/core/useGridTheme.js +21 -0
- package/legacy/hooks/features/columnGrouping/gridColumnGroupsUtils.js +1 -1
- package/legacy/hooks/features/columnGrouping/useGridColumnGrouping.js +13 -18
- 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/editing/useGridCellEditing.js +4 -4
- package/legacy/hooks/features/editing/useGridRowEditing.js +4 -4
- package/legacy/hooks/features/export/serializers/csvSerializer.js +3 -3
- package/legacy/hooks/features/export/useGridPrintExport.js +1 -1
- package/legacy/hooks/features/filter/gridFilterUtils.js +5 -5
- 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/gridPaginationUtils.js +2 -2
- package/legacy/hooks/features/pagination/useGridPagination.js +3 -5
- package/legacy/hooks/features/rowSelection/useGridRowSelection.js +1 -1
- package/legacy/hooks/features/rows/gridRowsSelector.js +5 -5
- package/legacy/hooks/features/rows/gridRowsUtils.js +6 -6
- package/legacy/hooks/features/rows/useGridParamsApi.js +4 -5
- package/legacy/hooks/features/rows/useGridRows.js +7 -7
- package/legacy/hooks/features/rows/useGridRowsMeta.js +9 -6
- package/legacy/hooks/features/scroll/useGridScroll.js +8 -10
- package/legacy/hooks/features/sorting/gridSortingUtils.js +5 -3
- 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/useGridApiContext.js +1 -1
- package/legacy/hooks/utils/useGridAriaAttributes.js +1 -2
- package/legacy/hooks/utils/useGridNativeEventListener.js +4 -9
- package/legacy/hooks/utils/useGridPrivateApiContext.js +1 -1
- package/legacy/hooks/utils/useGridRootProps.js +1 -1
- package/legacy/hooks/utils/useGridSelector.js +1 -1
- package/legacy/hooks/utils/useResizeObserver.js +36 -0
- package/legacy/hooks/utils/useRunOnce.js +18 -0
- package/legacy/index.js +1 -2
- package/legacy/internals/index.js +9 -7
- package/legacy/internals/utils/index.js +2 -1
- package/legacy/internals/utils/propValidation.js +21 -0
- 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/createSelector.js +1 -1
- package/legacy/utils/exportAs.js +1 -1
- 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 +7 -12
- package/modern/DataGrid/DataGrid.js +15 -27
- package/modern/DataGrid/useDataGridComponent.js +2 -1
- package/modern/DataGrid/useDataGridProps.js +1 -0
- package/modern/colDef/gridDateColDef.js +1 -1
- package/modern/components/GridColumnHeaders.js +3 -11
- package/modern/components/GridDetailPanels.js +4 -0
- package/modern/components/GridHeaders.js +53 -0
- package/modern/components/GridPagination.js +1 -1
- 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/GridActionsCell.js +1 -1
- package/modern/components/cell/GridCell.js +66 -370
- 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 +31 -14
- 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/toolbar/GridToolbarQuickFilter.js +4 -0
- 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/useGridLoggerFactory.js +2 -2
- package/modern/hooks/core/useGridRefs.js +13 -0
- package/modern/hooks/core/useGridTheme.js +19 -0
- package/modern/hooks/features/columnGrouping/gridColumnGroupsUtils.js +1 -1
- package/modern/hooks/features/columnGrouping/useGridColumnGrouping.js +11 -16
- 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/editing/useGridCellEditing.js +4 -4
- package/modern/hooks/features/editing/useGridRowEditing.js +4 -4
- package/modern/hooks/features/export/serializers/csvSerializer.js +3 -3
- package/modern/hooks/features/export/useGridPrintExport.js +1 -1
- package/modern/hooks/features/filter/gridFilterUtils.js +5 -5
- 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/gridPaginationUtils.js +2 -2
- package/modern/hooks/features/pagination/useGridPagination.js +3 -5
- package/modern/hooks/features/rowSelection/useGridRowSelection.js +1 -1
- package/modern/hooks/features/rows/gridRowsSelector.js +2 -2
- package/modern/hooks/features/rows/gridRowsUtils.js +6 -6
- package/modern/hooks/features/rows/useGridRows.js +7 -7
- package/modern/hooks/features/rows/useGridRowsMeta.js +9 -6
- package/modern/hooks/features/scroll/useGridScroll.js +8 -9
- package/modern/hooks/features/sorting/gridSortingUtils.js +5 -3
- 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/useGridApiContext.js +1 -1
- package/modern/hooks/utils/useGridAriaAttributes.js +1 -1
- package/modern/hooks/utils/useGridNativeEventListener.js +3 -9
- package/modern/hooks/utils/useGridPrivateApiContext.js +1 -1
- package/modern/hooks/utils/useGridRootProps.js +1 -1
- package/modern/hooks/utils/useGridSelector.js +1 -1
- package/modern/hooks/utils/useResizeObserver.js +36 -0
- package/modern/hooks/utils/useRunOnce.js +18 -0
- package/modern/index.js +1 -2
- package/modern/internals/index.js +9 -7
- package/modern/internals/utils/index.js +2 -1
- package/modern/internals/utils/propValidation.js +19 -0
- 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/createSelector.js +1 -1
- package/modern/utils/exportAs.js +1 -1
- package/modern/utils/utils.js +10 -1
- package/node/DataGrid/DataGrid.js +15 -27
- package/node/DataGrid/useDataGridComponent.js +1 -0
- package/node/DataGrid/useDataGridProps.js +1 -0
- package/node/colDef/gridDateColDef.js +1 -1
- package/node/components/GridColumnHeaders.js +3 -11
- package/node/components/GridDetailPanels.js +10 -0
- package/node/components/GridHeaders.js +60 -0
- package/node/components/GridPagination.js +1 -1
- 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/GridActionsCell.js +1 -1
- package/node/components/cell/GridCell.js +67 -370
- 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 +30 -13
- 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/toolbar/GridToolbarQuickFilter.js +4 -0
- 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/useGridLoggerFactory.js +2 -2
- package/node/hooks/core/useGridRefs.js +22 -0
- package/node/hooks/core/useGridTheme.js +29 -0
- package/node/hooks/features/columnGrouping/gridColumnGroupsUtils.js +1 -1
- package/node/hooks/features/columnGrouping/useGridColumnGrouping.js +11 -16
- 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/editing/useGridCellEditing.js +4 -4
- package/node/hooks/features/editing/useGridRowEditing.js +4 -4
- package/node/hooks/features/export/serializers/csvSerializer.js +3 -3
- package/node/hooks/features/export/useGridPrintExport.js +1 -1
- package/node/hooks/features/filter/gridFilterUtils.js +5 -5
- 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/gridPaginationUtils.js +2 -2
- package/node/hooks/features/pagination/useGridPagination.js +3 -5
- package/node/hooks/features/rowSelection/useGridRowSelection.js +1 -1
- package/node/hooks/features/rows/gridRowsSelector.js +2 -2
- package/node/hooks/features/rows/gridRowsUtils.js +6 -6
- package/node/hooks/features/rows/useGridRows.js +7 -7
- package/node/hooks/features/rows/useGridRowsMeta.js +7 -5
- package/node/hooks/features/scroll/useGridScroll.js +8 -9
- package/node/hooks/features/sorting/gridSortingUtils.js +5 -3
- 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/useGridApiContext.js +1 -1
- package/node/hooks/utils/useGridAriaAttributes.js +1 -1
- package/node/hooks/utils/useGridNativeEventListener.js +3 -9
- package/node/hooks/utils/useGridPrivateApiContext.js +1 -1
- package/node/hooks/utils/useGridRootProps.js +1 -1
- package/node/hooks/utils/useGridSelector.js +1 -1
- package/node/hooks/utils/useResizeObserver.js +44 -0
- package/node/hooks/utils/useRunOnce.js +27 -0
- package/node/index.js +1 -13
- package/node/internals/index.js +86 -71
- package/node/internals/utils/index.js +11 -0
- package/node/internals/utils/propValidation.js +26 -0
- 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/createSelector.js +1 -1
- package/node/utils/exportAs.js +1 -1
- package/node/utils/utils.js +11 -1
- package/package.json +6 -6
- package/utils/createSelector.js +1 -1
- package/utils/exportAs.js +1 -1
- 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
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import clsx from 'clsx';
|
|
4
|
+
import { styled } from '@mui/system';
|
|
5
|
+
import { unstable_composeClasses as composeClasses } from '@mui/utils';
|
|
6
|
+
import { gridClasses, getDataGridUtilityClass } from '../../constants/gridClasses';
|
|
7
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
8
|
+
const useUtilityClasses = () => {
|
|
9
|
+
const slots = {
|
|
10
|
+
root: ['bottomContainer']
|
|
11
|
+
};
|
|
12
|
+
return composeClasses(slots, getDataGridUtilityClass, {});
|
|
13
|
+
};
|
|
14
|
+
const Element = styled('div')({
|
|
15
|
+
position: 'sticky',
|
|
16
|
+
zIndex: 2,
|
|
17
|
+
bottom: 'calc(var(--DataGrid-hasScrollX) * var(--DataGrid-scrollbarSize))'
|
|
18
|
+
});
|
|
19
|
+
export function GridBottomContainer(props) {
|
|
20
|
+
const classes = useUtilityClasses();
|
|
21
|
+
return /*#__PURE__*/_jsx(Element, _extends({}, props, {
|
|
22
|
+
className: clsx(classes.root, props.className, gridClasses['container--bottom']),
|
|
23
|
+
role: "presentation"
|
|
24
|
+
}));
|
|
25
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { styled } from '@mui/system';
|
|
4
|
+
import { useGridAriaAttributes } from '../../hooks/utils/useGridAriaAttributes';
|
|
5
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
6
|
+
const Element = styled('div')({
|
|
7
|
+
flexGrow: 1,
|
|
8
|
+
position: 'relative',
|
|
9
|
+
overflow: 'hidden'
|
|
10
|
+
});
|
|
11
|
+
export const GridMainContainer = /*#__PURE__*/React.forwardRef((props, ref) => {
|
|
12
|
+
const ariaAttributes = useGridAriaAttributes();
|
|
13
|
+
return /*#__PURE__*/_jsx(Element, _extends({
|
|
14
|
+
ref: ref,
|
|
15
|
+
className: props.className,
|
|
16
|
+
tabIndex: -1
|
|
17
|
+
}, ariaAttributes, {
|
|
18
|
+
children: props.children
|
|
19
|
+
}));
|
|
20
|
+
});
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import clsx from 'clsx';
|
|
4
|
+
import { styled } from '@mui/system';
|
|
5
|
+
import { unstable_composeClasses as composeClasses } from '@mui/utils';
|
|
6
|
+
import { gridClasses, getDataGridUtilityClass } from '../../constants/gridClasses';
|
|
7
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
8
|
+
const useUtilityClasses = () => {
|
|
9
|
+
const slots = {
|
|
10
|
+
root: ['topContainer']
|
|
11
|
+
};
|
|
12
|
+
return composeClasses(slots, getDataGridUtilityClass, {});
|
|
13
|
+
};
|
|
14
|
+
const Element = styled('div')({
|
|
15
|
+
position: 'sticky',
|
|
16
|
+
zIndex: 2,
|
|
17
|
+
top: 0,
|
|
18
|
+
'&::after': {
|
|
19
|
+
content: '" "',
|
|
20
|
+
position: 'absolute',
|
|
21
|
+
zIndex: 5,
|
|
22
|
+
bottom: 0,
|
|
23
|
+
left: 0,
|
|
24
|
+
height: 1,
|
|
25
|
+
width: 'var(--DataGrid-rowWidth)',
|
|
26
|
+
backgroundColor: 'var(--DataGrid-rowBorderColor)'
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
export function GridTopContainer(props) {
|
|
30
|
+
const classes = useUtilityClasses();
|
|
31
|
+
return /*#__PURE__*/_jsx(Element, _extends({}, props, {
|
|
32
|
+
className: clsx(classes.root, props.className, gridClasses['container--top']),
|
|
33
|
+
role: "presentation"
|
|
34
|
+
}));
|
|
35
|
+
}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { styled } from '@mui/system';
|
|
3
|
+
import { unstable_composeClasses as composeClasses, unstable_useForkRef as useForkRef, unstable_useEventCallback as useEventCallback } from '@mui/utils';
|
|
4
|
+
import { useOnMount } from '../../hooks/utils/useOnMount';
|
|
5
|
+
import { useGridPrivateApiContext } from '../../hooks/utils/useGridPrivateApiContext';
|
|
6
|
+
import { gridDimensionsSelector, useGridSelector } from '../../hooks';
|
|
7
|
+
import { useGridRootProps } from '../../hooks/utils/useGridRootProps';
|
|
8
|
+
import { getDataGridUtilityClass } from '../../constants/gridClasses';
|
|
9
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
10
|
+
const useUtilityClasses = (ownerState, position) => {
|
|
11
|
+
const {
|
|
12
|
+
classes
|
|
13
|
+
} = ownerState;
|
|
14
|
+
const slots = {
|
|
15
|
+
root: ['scrollbar', `scrollbar--${position}`],
|
|
16
|
+
content: ['scrollbarContent']
|
|
17
|
+
};
|
|
18
|
+
return composeClasses(slots, getDataGridUtilityClass, classes);
|
|
19
|
+
};
|
|
20
|
+
const Scrollbar = styled('div')({
|
|
21
|
+
position: 'absolute',
|
|
22
|
+
display: 'inline-block',
|
|
23
|
+
zIndex: 6,
|
|
24
|
+
'& > div': {
|
|
25
|
+
display: 'inline-block'
|
|
26
|
+
},
|
|
27
|
+
// In macOS Safari and Gnome Web, scrollbars are overlaid and don't affect the layout. So we consider
|
|
28
|
+
// their size to be 0px throughout all the calculations, but the floating scrollbar container does need
|
|
29
|
+
// to appear and have a real size. We set it to 14px because it seems like an acceptable value and we
|
|
30
|
+
// don't have a method to find the required size for scrollbars on those platforms.
|
|
31
|
+
'--size': 'calc(max(var(--DataGrid-scrollbarSize), 14px))'
|
|
32
|
+
});
|
|
33
|
+
const ScrollbarVertical = styled(Scrollbar)({
|
|
34
|
+
width: 'var(--size)',
|
|
35
|
+
height: 'calc(var(--DataGrid-hasScrollY) * (100% - var(--DataGrid-topContainerHeight) - var(--DataGrid-bottomContainerHeight) - var(--DataGrid-hasScrollX) * var(--DataGrid-scrollbarSize)))',
|
|
36
|
+
overflowY: 'auto',
|
|
37
|
+
overflowX: 'hidden',
|
|
38
|
+
'& > div': {
|
|
39
|
+
width: 'var(--size)'
|
|
40
|
+
},
|
|
41
|
+
top: 'var(--DataGrid-topContainerHeight)',
|
|
42
|
+
right: '0px'
|
|
43
|
+
});
|
|
44
|
+
const ScrollbarHorizontal = styled(Scrollbar)({
|
|
45
|
+
width: '100%',
|
|
46
|
+
height: 'var(--size)',
|
|
47
|
+
overflowY: 'hidden',
|
|
48
|
+
overflowX: 'auto',
|
|
49
|
+
'& > div': {
|
|
50
|
+
height: 'var(--size)'
|
|
51
|
+
},
|
|
52
|
+
bottom: '0px'
|
|
53
|
+
});
|
|
54
|
+
const Content = styled('div')({
|
|
55
|
+
display: 'inline-block'
|
|
56
|
+
});
|
|
57
|
+
const GridVirtualScrollbar = /*#__PURE__*/React.forwardRef(function GridVirtualScrollbar(props, ref) {
|
|
58
|
+
const apiRef = useGridPrivateApiContext();
|
|
59
|
+
const rootProps = useGridRootProps();
|
|
60
|
+
const isLocked = React.useRef(false);
|
|
61
|
+
const lastPosition = React.useRef(0);
|
|
62
|
+
const scrollbarRef = React.useRef(null);
|
|
63
|
+
const contentRef = React.useRef(null);
|
|
64
|
+
const classes = useUtilityClasses(rootProps, props.position);
|
|
65
|
+
const dimensions = useGridSelector(apiRef, gridDimensionsSelector);
|
|
66
|
+
const propertyDimension = props.position === 'vertical' ? 'height' : 'width';
|
|
67
|
+
const propertyScroll = props.position === 'vertical' ? 'scrollTop' : 'scrollLeft';
|
|
68
|
+
const hasScroll = props.position === 'vertical' ? dimensions.hasScrollX : dimensions.hasScrollY;
|
|
69
|
+
const contentSize = dimensions.minimumSize[propertyDimension] + (hasScroll ? dimensions.scrollbarSize : 0);
|
|
70
|
+
const scrollbarSize = props.position === 'vertical' ? dimensions.viewportInnerSize.height : dimensions.viewportOuterSize.width;
|
|
71
|
+
const scrollbarInnerSize = scrollbarSize * (contentSize / dimensions.viewportOuterSize[propertyDimension]);
|
|
72
|
+
const onScrollerScroll = useEventCallback(() => {
|
|
73
|
+
const scroller = apiRef.current.virtualScrollerRef.current;
|
|
74
|
+
const scrollbar = scrollbarRef.current;
|
|
75
|
+
if (scroller[propertyScroll] === lastPosition.current) {
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
if (isLocked.current) {
|
|
79
|
+
isLocked.current = false;
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
isLocked.current = true;
|
|
83
|
+
const value = scroller[propertyScroll] / contentSize;
|
|
84
|
+
scrollbar[propertyScroll] = value * scrollbarInnerSize;
|
|
85
|
+
lastPosition.current = scroller[propertyScroll];
|
|
86
|
+
});
|
|
87
|
+
const onScrollbarScroll = useEventCallback(() => {
|
|
88
|
+
const scroller = apiRef.current.virtualScrollerRef.current;
|
|
89
|
+
const scrollbar = scrollbarRef.current;
|
|
90
|
+
if (isLocked.current) {
|
|
91
|
+
isLocked.current = false;
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
isLocked.current = true;
|
|
95
|
+
const value = scrollbar[propertyScroll] / scrollbarInnerSize;
|
|
96
|
+
scroller[propertyScroll] = value * contentSize;
|
|
97
|
+
});
|
|
98
|
+
useOnMount(() => {
|
|
99
|
+
const scroller = apiRef.current.virtualScrollerRef.current;
|
|
100
|
+
const scrollbar = scrollbarRef.current;
|
|
101
|
+
scroller.addEventListener('scroll', onScrollerScroll, {
|
|
102
|
+
capture: true
|
|
103
|
+
});
|
|
104
|
+
scrollbar.addEventListener('scroll', onScrollbarScroll, {
|
|
105
|
+
capture: true
|
|
106
|
+
});
|
|
107
|
+
return () => {
|
|
108
|
+
scroller.removeEventListener('scroll', onScrollerScroll, {
|
|
109
|
+
capture: true
|
|
110
|
+
});
|
|
111
|
+
scrollbar.removeEventListener('scroll', onScrollbarScroll, {
|
|
112
|
+
capture: true
|
|
113
|
+
});
|
|
114
|
+
};
|
|
115
|
+
});
|
|
116
|
+
React.useEffect(() => {
|
|
117
|
+
const content = contentRef.current;
|
|
118
|
+
content.style.setProperty(propertyDimension, `${scrollbarInnerSize}px`);
|
|
119
|
+
}, [scrollbarInnerSize, propertyDimension]);
|
|
120
|
+
const Container = props.position === 'vertical' ? ScrollbarVertical : ScrollbarHorizontal;
|
|
121
|
+
return /*#__PURE__*/_jsx(Container, {
|
|
122
|
+
ref: useForkRef(ref, scrollbarRef),
|
|
123
|
+
className: classes.root,
|
|
124
|
+
tabIndex: -1,
|
|
125
|
+
children: /*#__PURE__*/_jsx(Content, {
|
|
126
|
+
ref: contentRef,
|
|
127
|
+
className: classes.content
|
|
128
|
+
})
|
|
129
|
+
});
|
|
130
|
+
});
|
|
131
|
+
export { GridVirtualScrollbar };
|
|
@@ -1,42 +1,95 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import clsx from 'clsx';
|
|
4
3
|
import { styled } from '@mui/system';
|
|
5
4
|
import { unstable_composeClasses as composeClasses } from '@mui/utils';
|
|
6
5
|
import { useGridRootProps } from '../../hooks/utils/useGridRootProps';
|
|
6
|
+
import { useGridApiContext } from '../../hooks/utils/useGridApiContext';
|
|
7
|
+
import { useGridSelector } from '../../hooks/utils/useGridSelector';
|
|
7
8
|
import { getDataGridUtilityClass } from '../../constants/gridClasses';
|
|
9
|
+
import { gridDimensionsSelector } from '../../hooks/features/dimensions';
|
|
10
|
+
import { useGridVirtualScroller } from '../../hooks/features/virtualization/useGridVirtualScroller';
|
|
11
|
+
import { GridOverlays } from '../base/GridOverlays';
|
|
12
|
+
import { GridHeaders } from '../GridHeaders';
|
|
13
|
+
import { GridMainContainer as Container } from './GridMainContainer';
|
|
14
|
+
import { GridTopContainer as TopContainer } from './GridTopContainer';
|
|
15
|
+
import { GridBottomContainer as BottomContainer } from './GridBottomContainer';
|
|
16
|
+
import { GridVirtualScrollerContent as Content } from './GridVirtualScrollerContent';
|
|
17
|
+
import { GridVirtualScrollerFiller as SpaceFiller } from './GridVirtualScrollerFiller';
|
|
18
|
+
import { GridVirtualScrollerRenderZone as RenderZone } from './GridVirtualScrollerRenderZone';
|
|
19
|
+
import { GridVirtualScrollbar as Scrollbar } from './GridVirtualScrollbar';
|
|
8
20
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
9
|
-
|
|
21
|
+
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
22
|
+
const useUtilityClasses = (ownerState, dimensions) => {
|
|
10
23
|
const {
|
|
11
24
|
classes
|
|
12
25
|
} = ownerState;
|
|
13
26
|
const slots = {
|
|
14
|
-
root: ['
|
|
27
|
+
root: ['main', dimensions.rightPinnedWidth > 0 && 'main--hasPinnedRight'],
|
|
28
|
+
scroller: ['virtualScroller']
|
|
15
29
|
};
|
|
16
30
|
return composeClasses(slots, getDataGridUtilityClass, classes);
|
|
17
31
|
};
|
|
18
|
-
const
|
|
32
|
+
const Scroller = styled('div', {
|
|
19
33
|
name: 'MuiDataGrid',
|
|
20
34
|
slot: 'VirtualScroller',
|
|
21
35
|
overridesResolver: (props, styles) => styles.virtualScroller
|
|
22
36
|
})({
|
|
23
|
-
overflow: 'auto',
|
|
24
|
-
height: '100%',
|
|
25
|
-
// See https://github.com/mui/mui-x/issues/4360
|
|
26
37
|
position: 'relative',
|
|
38
|
+
height: '100%',
|
|
39
|
+
overflow: 'scroll',
|
|
40
|
+
scrollbarWidth: 'none' /* Firefox */,
|
|
41
|
+
'&::-webkit-scrollbar': {
|
|
42
|
+
display: 'none' /* Safari and Chrome */
|
|
43
|
+
},
|
|
27
44
|
'@media print': {
|
|
28
45
|
overflow: 'hidden'
|
|
29
46
|
},
|
|
30
|
-
|
|
47
|
+
// See https://github.com/mui/mui-x/issues/10547
|
|
48
|
+
zIndex: 0
|
|
31
49
|
});
|
|
32
|
-
|
|
50
|
+
function GridVirtualScroller(props) {
|
|
51
|
+
const apiRef = useGridApiContext();
|
|
33
52
|
const rootProps = useGridRootProps();
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
53
|
+
const dimensions = useGridSelector(apiRef, gridDimensionsSelector);
|
|
54
|
+
const classes = useUtilityClasses(rootProps, dimensions);
|
|
55
|
+
const virtualScroller = useGridVirtualScroller();
|
|
56
|
+
const {
|
|
57
|
+
getContainerProps,
|
|
58
|
+
getScrollerProps,
|
|
59
|
+
getContentProps,
|
|
60
|
+
getRenderZoneProps,
|
|
61
|
+
getScrollbarVerticalProps,
|
|
62
|
+
getScrollbarHorizontalProps
|
|
63
|
+
} = virtualScroller;
|
|
64
|
+
return /*#__PURE__*/_jsxs(Container, _extends({
|
|
65
|
+
className: classes.root
|
|
66
|
+
}, getContainerProps(), {
|
|
67
|
+
children: [/*#__PURE__*/_jsxs(Scroller, _extends({
|
|
68
|
+
className: classes.scroller
|
|
69
|
+
}, getScrollerProps(), {
|
|
70
|
+
ownerState: rootProps,
|
|
71
|
+
children: [/*#__PURE__*/_jsxs(TopContainer, {
|
|
72
|
+
children: [/*#__PURE__*/_jsx(GridHeaders, {}), /*#__PURE__*/_jsx(rootProps.slots.pinnedRows, {
|
|
73
|
+
position: "top",
|
|
74
|
+
virtualScroller: virtualScroller
|
|
75
|
+
})]
|
|
76
|
+
}), /*#__PURE__*/_jsx(GridOverlays, {}), /*#__PURE__*/_jsx(Content, _extends({}, getContentProps(), {
|
|
77
|
+
children: /*#__PURE__*/_jsxs(RenderZone, _extends({}, getRenderZoneProps(), {
|
|
78
|
+
children: [virtualScroller.getRows(), /*#__PURE__*/_jsx(rootProps.slots.detailPanels, {
|
|
79
|
+
virtualScroller: virtualScroller
|
|
80
|
+
})]
|
|
81
|
+
}))
|
|
82
|
+
})), /*#__PURE__*/_jsx(SpaceFiller, {}), /*#__PURE__*/_jsx(BottomContainer, {
|
|
83
|
+
children: /*#__PURE__*/_jsx(rootProps.slots.pinnedRows, {
|
|
84
|
+
position: "bottom",
|
|
85
|
+
virtualScroller: virtualScroller
|
|
86
|
+
})
|
|
87
|
+
})]
|
|
88
|
+
})), /*#__PURE__*/_jsx(Scrollbar, _extends({
|
|
89
|
+
position: "vertical"
|
|
90
|
+
}, getScrollbarVerticalProps())), /*#__PURE__*/_jsx(Scrollbar, _extends({
|
|
91
|
+
position: "horizontal"
|
|
92
|
+
}, getScrollbarHorizontalProps())), props.children]
|
|
40
93
|
}));
|
|
41
|
-
}
|
|
94
|
+
}
|
|
42
95
|
export { GridVirtualScroller };
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { styled } from '@mui/system';
|
|
3
|
+
import { fastMemo } from '../../utils/fastMemo';
|
|
4
|
+
import { useGridSelector } from '../../hooks/utils/useGridSelector';
|
|
5
|
+
import { useGridApiContext } from '../../hooks/utils/useGridApiContext';
|
|
6
|
+
import { gridDimensionsSelector } from '../../hooks/features/dimensions';
|
|
7
|
+
import { gridClasses } from '../../constants';
|
|
8
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
9
|
+
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
10
|
+
const Filler = styled('div')({
|
|
11
|
+
display: 'flex',
|
|
12
|
+
flexDirection: 'row',
|
|
13
|
+
width: 'var(--DataGrid-rowWidth)',
|
|
14
|
+
boxSizing: 'border-box'
|
|
15
|
+
});
|
|
16
|
+
const Pinned = styled('div')({
|
|
17
|
+
position: 'sticky',
|
|
18
|
+
height: '100%',
|
|
19
|
+
boxSizing: 'border-box',
|
|
20
|
+
borderTop: '1px solid var(--DataGrid-rowBorderColor)',
|
|
21
|
+
backgroundColor: 'var(--DataGrid-pinnedBackground)'
|
|
22
|
+
});
|
|
23
|
+
const PinnedLeft = styled(Pinned)({
|
|
24
|
+
left: 0,
|
|
25
|
+
borderRight: '1px solid var(--DataGrid-rowBorderColor)'
|
|
26
|
+
});
|
|
27
|
+
const PinnedRight = styled(Pinned)({
|
|
28
|
+
right: 0,
|
|
29
|
+
borderLeft: '1px solid var(--DataGrid-rowBorderColor)'
|
|
30
|
+
});
|
|
31
|
+
const Main = styled('div')({
|
|
32
|
+
flexGrow: 1,
|
|
33
|
+
borderTop: '1px solid var(--DataGrid-rowBorderColor)'
|
|
34
|
+
});
|
|
35
|
+
function GridVirtualScrollerFiller() {
|
|
36
|
+
const apiRef = useGridApiContext();
|
|
37
|
+
const {
|
|
38
|
+
viewportOuterSize,
|
|
39
|
+
minimumSize,
|
|
40
|
+
hasScrollX,
|
|
41
|
+
scrollbarSize,
|
|
42
|
+
leftPinnedWidth,
|
|
43
|
+
rightPinnedWidth
|
|
44
|
+
} = useGridSelector(apiRef, gridDimensionsSelector);
|
|
45
|
+
const scrollbarHeight = hasScrollX ? scrollbarSize : 0;
|
|
46
|
+
const expandedHeight = viewportOuterSize.height - minimumSize.height - scrollbarHeight;
|
|
47
|
+
const height = Math.max(scrollbarHeight, expandedHeight);
|
|
48
|
+
if (height === 0) {
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
return /*#__PURE__*/_jsxs(Filler, {
|
|
52
|
+
className: gridClasses.filler,
|
|
53
|
+
role: "presentation",
|
|
54
|
+
style: {
|
|
55
|
+
height
|
|
56
|
+
},
|
|
57
|
+
children: [leftPinnedWidth > 0 && /*#__PURE__*/_jsx(PinnedLeft, {
|
|
58
|
+
className: gridClasses['filler--pinnedLeft'],
|
|
59
|
+
style: {
|
|
60
|
+
width: leftPinnedWidth
|
|
61
|
+
}
|
|
62
|
+
}), /*#__PURE__*/_jsx(Main, {}), rightPinnedWidth > 0 && /*#__PURE__*/_jsx(PinnedRight, {
|
|
63
|
+
className: gridClasses['filler--pinnedRight'],
|
|
64
|
+
style: {
|
|
65
|
+
width: rightPinnedWidth
|
|
66
|
+
}
|
|
67
|
+
})]
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
const Memoized = fastMemo(GridVirtualScrollerFiller);
|
|
71
|
+
export { Memoized as GridVirtualScrollerFiller };
|
|
@@ -25,7 +25,8 @@ const VirtualScrollerRenderZoneRoot = styled('div', {
|
|
|
25
25
|
position: 'absolute',
|
|
26
26
|
display: 'flex',
|
|
27
27
|
// Prevents margin collapsing when using `getRowSpacing`
|
|
28
|
-
flexDirection: 'column'
|
|
28
|
+
flexDirection: 'column',
|
|
29
|
+
transform: 'translate3d(0, var(--DataGrid-offsetTop), 0)'
|
|
29
30
|
});
|
|
30
31
|
const GridVirtualScrollerRenderZone = /*#__PURE__*/React.forwardRef(function GridVirtualScrollerRenderZone(props, ref) {
|
|
31
32
|
const {
|
|
@@ -1,22 +1,26 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import { GridSkeletonCell, GridColumnsPanel, GridFilterPanel, GridFooter, GridLoadingOverlay, GridNoRowsOverlay, GridPagination, GridPanel, GridRow, GridColumnHeaderFilterIconButton, GridRowCount } from '../components';
|
|
3
|
-
import {
|
|
3
|
+
import { GridCell } from '../components/cell/GridCell';
|
|
4
4
|
import { GridColumnHeaders } from '../components/GridColumnHeaders';
|
|
5
5
|
import { GridColumnMenu } from '../components/menu/columnMenu/GridColumnMenu';
|
|
6
|
+
import { GridDetailPanels } from '../components/GridDetailPanels';
|
|
7
|
+
import { GridPinnedRows } from '../components/GridPinnedRows';
|
|
6
8
|
import { GridNoResultsOverlay } from '../components/GridNoResultsOverlay';
|
|
7
9
|
import materialSlots from '../material';
|
|
8
10
|
|
|
9
11
|
// TODO: camelCase these key. It's a private helper now.
|
|
10
12
|
// Remove then need to call `uncapitalizeObjectKeys`.
|
|
11
13
|
export const DATA_GRID_DEFAULT_SLOTS_COMPONENTS = _extends({}, materialSlots, {
|
|
12
|
-
cell:
|
|
14
|
+
cell: GridCell,
|
|
13
15
|
skeletonCell: GridSkeletonCell,
|
|
14
16
|
columnHeaderFilterIconButton: GridColumnHeaderFilterIconButton,
|
|
15
17
|
columnMenu: GridColumnMenu,
|
|
16
18
|
columnHeaders: GridColumnHeaders,
|
|
19
|
+
detailPanels: GridDetailPanels,
|
|
17
20
|
footer: GridFooter,
|
|
18
21
|
footerRowCount: GridRowCount,
|
|
19
22
|
toolbar: null,
|
|
23
|
+
pinnedRows: GridPinnedRows,
|
|
20
24
|
loadingOverlay: GridLoadingOverlay,
|
|
21
25
|
noResultsOverlay: GridNoResultsOverlay,
|
|
22
26
|
noRowsOverlay: GridNoRowsOverlay,
|
|
@@ -2,4 +2,4 @@ import { unstable_generateUtilityClasses as generateUtilityClasses, unstable_gen
|
|
|
2
2
|
export function getDataGridUtilityClass(slot) {
|
|
3
3
|
return generateUtilityClass('MuiDataGrid', slot);
|
|
4
4
|
}
|
|
5
|
-
export const gridClasses = generateUtilityClasses('MuiDataGrid', ['actionsCell', 'aggregationColumnHeader', 'aggregationColumnHeader--alignLeft', 'aggregationColumnHeader--alignCenter', 'aggregationColumnHeader--alignRight', 'aggregationColumnHeaderLabel', 'autoHeight', 'autosizing', 'booleanCell', 'cell--editable', 'cell--editing', 'cell--textCenter', 'cell--textLeft', 'cell--textRight', 'cell--withRenderer', 'cell--rangeTop', 'cell--rangeBottom', 'cell--rangeLeft', 'cell--rangeRight', 'cell--selectionMode', 'cell', 'cellContent', 'cellCheckbox', 'cellSkeleton', 'checkboxInput', 'columnHeader--alignCenter', 'columnHeader--alignLeft', 'columnHeader--alignRight', 'columnHeader--dragging', 'columnHeader--moving', 'columnHeader--numeric', 'columnHeader--sortable', 'columnHeader--sorted', 'columnHeader--filtered', 'columnHeader', 'columnHeaderCheckbox', 'columnHeaderDraggableContainer', 'columnHeaderDropZone', 'columnHeaderTitle', 'columnHeaderTitleContainer', 'columnHeaderTitleContainerContent', 'columnGroupHeader', 'columnHeader--filledGroup', 'columnHeader--emptyGroup', 'columnHeader--showColumnBorder', 'columnHeaders', 'columnHeadersInner', 'columnHeadersInner--scrollable', 'columnSeparator--resizable', 'columnSeparator--resizing', 'columnSeparator--sideLeft', 'columnSeparator--sideRight', 'columnSeparator', 'columnsPanel', 'columnsPanelRow', 'detailPanel', 'detailPanels', 'detailPanelToggleCell', 'detailPanelToggleCell--expanded', 'footerCell', 'panel', 'panelHeader', 'panelWrapper', 'panelContent', 'panelFooter', 'paper', 'editBooleanCell', 'editInputCell', 'filterForm', 'filterFormDeleteIcon', 'filterFormLogicOperatorInput', 'filterFormColumnInput', 'filterFormOperatorInput', 'filterFormValueInput', 'filterIcon', 'footerContainer', 'headerFilterRow', 'iconButtonContainer', 'iconSeparator', 'main', 'menu', 'menuIcon', 'menuIconButton', 'menuOpen', 'menuList', 'overlay', 'overlayWrapper', 'overlayWrapperInner', 'root', 'root--densityStandard', 'root--densityComfortable', 'root--densityCompact', 'root--disableUserSelection', 'row', 'row--editable', 'row--editing', 'row--lastVisible', 'row--dragging', 'row--dynamicHeight', 'row--detailPanelExpanded', 'rowReorderCellPlaceholder', 'rowCount', 'rowReorderCellContainer', 'rowReorderCell', 'rowReorderCell--draggable', 'scrollArea--left', 'scrollArea--right', 'scrollArea', 'selectedRowCount', 'sortIcon', 'toolbarContainer', 'toolbarFilterList', 'virtualScroller', 'virtualScrollerContent', 'virtualScrollerContent--overflowed', 'virtualScrollerRenderZone', 'pinnedColumns', '
|
|
5
|
+
export const gridClasses = generateUtilityClasses('MuiDataGrid', ['actionsCell', 'aggregationColumnHeader', 'aggregationColumnHeader--alignLeft', 'aggregationColumnHeader--alignCenter', 'aggregationColumnHeader--alignRight', 'aggregationColumnHeaderLabel', 'autoHeight', 'autosizing', 'booleanCell', 'cell--editable', 'cell--editing', 'cell--textCenter', 'cell--textLeft', 'cell--textRight', 'cell--withRenderer', 'cell--rangeTop', 'cell--rangeBottom', 'cell--rangeLeft', 'cell--rangeRight', 'cell--pinnedLeft', 'cell--pinnedRight', 'cell--selectionMode', 'cell', 'cellContent', 'cellCheckbox', 'cellEmpty', 'cellSkeleton', 'checkboxInput', 'columnHeader--alignCenter', 'columnHeader--alignLeft', 'columnHeader--alignRight', 'columnHeader--dragging', 'columnHeader--moving', 'columnHeader--numeric', 'columnHeader--sortable', 'columnHeader--sorted', 'columnHeader--filtered', 'columnHeader', 'columnHeaderCheckbox', 'columnHeaderDraggableContainer', 'columnHeaderDropZone', 'columnHeaderTitle', 'columnHeaderTitleContainer', 'columnHeaderTitleContainerContent', 'columnGroupHeader', 'columnHeader--filledGroup', 'columnHeader--emptyGroup', 'columnHeader--showColumnBorder', 'columnHeaders', 'columnHeadersInner', 'columnHeadersInner--scrollable', 'columnSeparator--resizable', 'columnSeparator--resizing', 'columnSeparator--sideLeft', 'columnSeparator--sideRight', 'columnSeparator', 'columnsPanel', 'columnsPanelRow', 'container--top', 'container--bottom', 'detailPanel', 'detailPanels', 'detailPanelToggleCell', 'detailPanelToggleCell--expanded', 'footerCell', 'panel', 'panelHeader', 'panelWrapper', 'panelContent', 'panelFooter', 'paper', 'editBooleanCell', 'editInputCell', 'filler', 'filler--pinnedLeft', 'filler--pinnedRight', 'filterForm', 'filterFormDeleteIcon', 'filterFormLogicOperatorInput', 'filterFormColumnInput', 'filterFormOperatorInput', 'filterFormValueInput', 'filterIcon', 'footerContainer', 'headerFilterRow', 'iconButtonContainer', 'iconSeparator', 'main', 'main--hasPinnedRight', 'menu', 'menuIcon', 'menuIconButton', 'menuOpen', 'menuList', 'overlay', 'overlayWrapper', 'overlayWrapperInner', 'root', 'root--densityStandard', 'root--densityComfortable', 'root--densityCompact', 'root--disableUserSelection', 'row', 'row--editable', 'row--editing', 'row--firstVisible', 'row--lastVisible', 'row--dragging', 'row--dynamicHeight', 'row--detailPanelExpanded', 'rowReorderCellPlaceholder', 'rowCount', 'rowReorderCellContainer', 'rowReorderCell', 'rowReorderCell--draggable', 'scrollArea--left', 'scrollArea--right', 'scrollArea', 'scrollbar', 'scrollbar--vertical', 'scrollbar--horizontal', 'selectedRowCount', 'sortIcon', 'toolbarContainer', 'toolbarFilterList', 'virtualScroller', 'virtualScrollerContent', 'virtualScrollerContent--overflowed', 'virtualScrollerRenderZone', 'pinnedColumns', 'pinnedColumnHeaders', 'pinnedColumnHeaders--left', 'pinnedColumnHeaders--right', 'withVerticalBorder', 'withBorderColor', 'cell--withRightBorder', 'cell--withLeftBorder', 'columnHeader--withRightBorder', 'treeDataGroupingCell', 'treeDataGroupingCellToggle', 'groupingCriteriaCell', 'groupingCriteriaCellToggle', 'pinnedRows', 'pinnedRows--top', 'pinnedRows--bottom', 'pinnedRowsRenderZone']);
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { useGridRefs } from './useGridRefs';
|
|
2
|
+
import { useGridTheme } from './useGridTheme';
|
|
1
3
|
import { useGridLoggerFactory } from './useGridLoggerFactory';
|
|
2
4
|
import { useGridApiInitialization } from './useGridApiInitialization';
|
|
3
5
|
import { useGridLocaleText } from './useGridLocaleText';
|
|
@@ -10,6 +12,8 @@ import { useGridStateInitialization } from './useGridStateInitialization';
|
|
|
10
12
|
*/
|
|
11
13
|
export const useGridInitialization = (inputApiRef, props) => {
|
|
12
14
|
const privateApiRef = useGridApiInitialization(inputApiRef, props);
|
|
15
|
+
useGridRefs(privateApiRef);
|
|
16
|
+
useGridTheme(privateApiRef);
|
|
13
17
|
useGridLoggerFactory(privateApiRef, props);
|
|
14
18
|
useGridStateInitialization(privateApiRef, props);
|
|
15
19
|
useGridPipeProcessing(privateApiRef);
|
|
@@ -13,13 +13,13 @@ const LOG_LEVELS = ['debug', 'info', 'warn', 'error'];
|
|
|
13
13
|
function getAppender(name, logLevel, appender = console) {
|
|
14
14
|
const minLogLevelIdx = LOG_LEVELS.indexOf(logLevel);
|
|
15
15
|
if (minLogLevelIdx === -1) {
|
|
16
|
-
throw new Error(`MUI: Log level ${logLevel} not recognized.`);
|
|
16
|
+
throw new Error(`MUI X: Log level ${logLevel} not recognized.`);
|
|
17
17
|
}
|
|
18
18
|
const logger = LOG_LEVELS.reduce((loggerObj, method, idx) => {
|
|
19
19
|
if (idx >= minLogLevelIdx) {
|
|
20
20
|
loggerObj[method] = (...args) => {
|
|
21
21
|
const [message, ...other] = args;
|
|
22
|
-
appender[method](`MUI: ${name} - ${message}`, ...other);
|
|
22
|
+
appender[method](`MUI X: ${name} - ${message}`, ...other);
|
|
23
23
|
};
|
|
24
24
|
} else {
|
|
25
25
|
loggerObj[method] = noop;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
export const useGridRefs = apiRef => {
|
|
3
|
+
const rootElementRef = React.useRef(null);
|
|
4
|
+
const mainElementRef = React.useRef(null);
|
|
5
|
+
const virtualScrollerRef = React.useRef(null);
|
|
6
|
+
apiRef.current.register('public', {
|
|
7
|
+
rootElementRef
|
|
8
|
+
});
|
|
9
|
+
apiRef.current.register('private', {
|
|
10
|
+
mainElementRef,
|
|
11
|
+
virtualScrollerRef
|
|
12
|
+
});
|
|
13
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { useTheme } from '@mui/material/styles';
|
|
4
|
+
export const useGridTheme = apiRef => {
|
|
5
|
+
const theme = useTheme();
|
|
6
|
+
if (!apiRef.current.state.theme) {
|
|
7
|
+
apiRef.current.state.theme = theme;
|
|
8
|
+
}
|
|
9
|
+
const isFirstEffect = React.useRef(true);
|
|
10
|
+
React.useEffect(() => {
|
|
11
|
+
if (isFirstEffect.current) {
|
|
12
|
+
isFirstEffect.current = false;
|
|
13
|
+
} else {
|
|
14
|
+
apiRef.current.setState(state => _extends({}, state, {
|
|
15
|
+
theme
|
|
16
|
+
}));
|
|
17
|
+
}
|
|
18
|
+
}, [apiRef, theme]);
|
|
19
|
+
};
|
|
@@ -4,7 +4,7 @@ import { isDeepEqual } from '../../../utils/utils';
|
|
|
4
4
|
const recurrentUnwrapGroupingColumnModel = (columnGroupNode, parents, unwrappedGroupingModelToComplete) => {
|
|
5
5
|
if (isLeaf(columnGroupNode)) {
|
|
6
6
|
if (unwrappedGroupingModelToComplete[columnGroupNode.field] !== undefined) {
|
|
7
|
-
throw new Error([`MUI: columnGroupingModel contains duplicated field`, `column field ${columnGroupNode.field} occurs two times in the grouping model:`, `- ${unwrappedGroupingModelToComplete[columnGroupNode.field].join(' > ')}`, `- ${parents.join(' > ')}`].join('\n'));
|
|
7
|
+
throw new Error([`MUI X: columnGroupingModel contains duplicated field`, `column field ${columnGroupNode.field} occurs two times in the grouping model:`, `- ${unwrappedGroupingModelToComplete[columnGroupNode.field].join(' > ')}`, `- ${parents.join(' > ')}`].join('\n'));
|
|
8
8
|
}
|
|
9
9
|
unwrappedGroupingModelToComplete[columnGroupNode.field] = parents;
|
|
10
10
|
return;
|
|
@@ -20,17 +20,19 @@ const createGroupLookup = columnGroupingModel => {
|
|
|
20
20
|
} = node,
|
|
21
21
|
other = _objectWithoutPropertiesLoose(node, _excluded);
|
|
22
22
|
if (!groupId) {
|
|
23
|
-
throw new Error('MUI: An element of the columnGroupingModel does not have either `field` or `groupId`.');
|
|
23
|
+
throw new Error('MUI X: An element of the columnGroupingModel does not have either `field` or `groupId`.');
|
|
24
24
|
}
|
|
25
|
-
if (
|
|
26
|
-
|
|
25
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
26
|
+
if (!children) {
|
|
27
|
+
console.warn(`MUI X: group groupId=${groupId} has no children.`);
|
|
28
|
+
}
|
|
27
29
|
}
|
|
28
30
|
const groupParam = _extends({}, other, {
|
|
29
31
|
groupId
|
|
30
32
|
});
|
|
31
33
|
const subTreeLookup = createGroupLookup(children);
|
|
32
34
|
if (subTreeLookup[groupId] !== undefined || groupLookup[groupId] !== undefined) {
|
|
33
|
-
throw new Error(`MUI: The groupId ${groupId} is used multiple times in the columnGroupingModel.`);
|
|
35
|
+
throw new Error(`MUI X: The groupId ${groupId} is used multiple times in the columnGroupingModel.`);
|
|
34
36
|
}
|
|
35
37
|
groupLookup = _extends({}, groupLookup, subTreeLookup, {
|
|
36
38
|
[groupId]: groupParam
|
|
@@ -39,16 +41,14 @@ const createGroupLookup = columnGroupingModel => {
|
|
|
39
41
|
return _extends({}, groupLookup);
|
|
40
42
|
};
|
|
41
43
|
export const columnGroupsStateInitializer = (state, props, apiRef) => {
|
|
42
|
-
if (!props.
|
|
44
|
+
if (!props.columnGroupingModel) {
|
|
43
45
|
return state;
|
|
44
46
|
}
|
|
45
47
|
const columnFields = gridColumnFieldsSelector(apiRef);
|
|
46
48
|
const visibleColumnFields = gridVisibleColumnFieldsSelector(apiRef);
|
|
47
49
|
const groupLookup = createGroupLookup(props.columnGroupingModel ?? []);
|
|
48
50
|
const unwrappedGroupingModel = unwrapGroupingColumnModel(props.columnGroupingModel ?? []);
|
|
49
|
-
const columnGroupsHeaderStructure = getColumnGroupsHeaderStructure(columnFields, unwrappedGroupingModel,
|
|
50
|
-
// @ts-expect-error Move this part to `Pro` package
|
|
51
|
-
apiRef.current.state.pinnedColumns ?? {});
|
|
51
|
+
const columnGroupsHeaderStructure = getColumnGroupsHeaderStructure(columnFields, unwrappedGroupingModel, apiRef.current.state.pinnedColumns ?? {});
|
|
52
52
|
const maxDepth = visibleColumnFields.length === 0 ? 0 : Math.max(...visibleColumnFields.map(field => unwrappedGroupingModel[field]?.length ?? 0));
|
|
53
53
|
return _extends({}, state, {
|
|
54
54
|
columnGrouping: {
|
|
@@ -77,16 +77,14 @@ export const useGridColumnGrouping = (apiRef, props) => {
|
|
|
77
77
|
return columnGroupLookup;
|
|
78
78
|
}, [apiRef]);
|
|
79
79
|
const columnGroupingApi = {
|
|
80
|
-
|
|
81
|
-
|
|
80
|
+
getColumnGroupPath,
|
|
81
|
+
getAllGroupDetails
|
|
82
82
|
};
|
|
83
83
|
useGridApiMethod(apiRef, columnGroupingApi, 'public');
|
|
84
84
|
const handleColumnIndexChange = React.useCallback(() => {
|
|
85
85
|
const unwrappedGroupingModel = unwrapGroupingColumnModel(props.columnGroupingModel ?? []);
|
|
86
86
|
apiRef.current.setState(state => {
|
|
87
87
|
const orderedFields = state.columns?.orderedFields ?? [];
|
|
88
|
-
|
|
89
|
-
// @ts-expect-error Move this logic to `Pro` package
|
|
90
88
|
const pinnedColumns = state.pinnedColumns ?? {};
|
|
91
89
|
const columnGroupsHeaderStructure = getColumnGroupsHeaderStructure(orderedFields, unwrappedGroupingModel, pinnedColumns);
|
|
92
90
|
return _extends({}, state, {
|
|
@@ -97,9 +95,6 @@ export const useGridColumnGrouping = (apiRef, props) => {
|
|
|
97
95
|
});
|
|
98
96
|
}, [apiRef, props.columnGroupingModel]);
|
|
99
97
|
const updateColumnGroupingState = React.useCallback(columnGroupingModel => {
|
|
100
|
-
if (!props.experimentalFeatures?.columnGrouping) {
|
|
101
|
-
return;
|
|
102
|
-
}
|
|
103
98
|
// @ts-expect-error Move this logic to `Pro` package
|
|
104
99
|
const pinnedColumns = apiRef.current.getPinnedColumns?.() ?? {};
|
|
105
100
|
const columnFields = gridColumnFieldsSelector(apiRef);
|
|
@@ -118,7 +113,7 @@ export const useGridColumnGrouping = (apiRef, props) => {
|
|
|
118
113
|
}
|
|
119
114
|
});
|
|
120
115
|
});
|
|
121
|
-
}, [apiRef
|
|
116
|
+
}, [apiRef]);
|
|
122
117
|
useGridApiEventHandler(apiRef, 'columnIndexChange', handleColumnIndexChange);
|
|
123
118
|
useGridApiEventHandler(apiRef, 'columnsChange', () => {
|
|
124
119
|
updateColumnGroupingState(props.columnGroupingModel);
|