@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
|
@@ -11,7 +11,7 @@ import { GridCellModes } from '../../../models/gridEditRowModel';
|
|
|
11
11
|
import { isNavigationKey } from '../../../utils/keyboardUtils';
|
|
12
12
|
import { GRID_DETAIL_PANEL_TOGGLE_FIELD } from '../../../constants/gridDetailPanelToggleField';
|
|
13
13
|
import { gridPinnedRowsSelector } from '../rows/gridRowsSelector';
|
|
14
|
-
import {
|
|
14
|
+
import { gridFocusColumnGroupHeaderSelector } from '../focus';
|
|
15
15
|
import { gridColumnGroupsHeaderMaxDepthSelector } from '../columnGrouping/gridColumnGroupsSelector';
|
|
16
16
|
import { gridHeaderFilteringEditFieldSelector, gridHeaderFilteringMenuSelector } from '../headerFiltering/gridHeaderFilteringSelectors';
|
|
17
17
|
import { useGridRegisterPipeProcessor } from '../../core/pipeProcessing';
|
|
@@ -137,10 +137,6 @@ export const useGridKeyboardNavigation = (apiRef, props) => {
|
|
|
137
137
|
// There is one exception for the checkBoxHeader
|
|
138
138
|
return;
|
|
139
139
|
}
|
|
140
|
-
const dimensions = apiRef.current.getRootDimensions();
|
|
141
|
-
if (!dimensions) {
|
|
142
|
-
return;
|
|
143
|
-
}
|
|
144
140
|
const viewportPageSize = apiRef.current.getViewportPageSize();
|
|
145
141
|
const colIndexBefore = params.field ? apiRef.current.getColumnIndex(params.field) : 0;
|
|
146
142
|
const firstRowIndexInPage = currentPageRows.length > 0 ? 0 : null;
|
|
@@ -233,10 +229,6 @@ export const useGridKeyboardNavigation = (apiRef, props) => {
|
|
|
233
229
|
}
|
|
234
230
|
}, [apiRef, currentPageRows.length, headerFilteringEnabled, goToHeaderFilter, goToCell, getRowIdFromIndex, theme.direction, goToHeader, goToGroupHeader]);
|
|
235
231
|
const handleHeaderFilterKeyDown = React.useCallback((params, event) => {
|
|
236
|
-
const dimensions = apiRef.current.getRootDimensions();
|
|
237
|
-
if (!dimensions) {
|
|
238
|
-
return;
|
|
239
|
-
}
|
|
240
232
|
const isEditing = gridHeaderFilteringEditFieldSelector(apiRef) === params.field;
|
|
241
233
|
const isHeaderMenuOpen = gridHeaderFilteringMenuSelector(apiRef) === params.field;
|
|
242
234
|
if (isEditing || isHeaderMenuOpen || !isNavigationKey(event.key)) {
|
|
@@ -323,11 +315,7 @@ export const useGridKeyboardNavigation = (apiRef, props) => {
|
|
|
323
315
|
}
|
|
324
316
|
}, [apiRef, currentPageRows.length, goToHeaderFilter, theme.direction, goToHeader, goToCell, getRowIdFromIndex]);
|
|
325
317
|
const handleColumnGroupHeaderKeyDown = React.useCallback((params, event) => {
|
|
326
|
-
const
|
|
327
|
-
if (!dimensions) {
|
|
328
|
-
return;
|
|
329
|
-
}
|
|
330
|
-
const focusedColumnGroup = unstable_gridFocusColumnGroupHeaderSelector(apiRef);
|
|
318
|
+
const focusedColumnGroup = gridFocusColumnGroupHeaderSelector(apiRef);
|
|
331
319
|
if (focusedColumnGroup === null) {
|
|
332
320
|
return;
|
|
333
321
|
}
|
|
@@ -430,8 +418,7 @@ export const useGridKeyboardNavigation = (apiRef, props) => {
|
|
|
430
418
|
if (!canUpdateFocus) {
|
|
431
419
|
return;
|
|
432
420
|
}
|
|
433
|
-
|
|
434
|
-
if (currentPageRows.length === 0 || !dimensions) {
|
|
421
|
+
if (currentPageRows.length === 0) {
|
|
435
422
|
return;
|
|
436
423
|
}
|
|
437
424
|
const direction = theme.direction;
|
|
@@ -8,7 +8,7 @@ export const getPageCount = (rowCount, pageSize) => {
|
|
|
8
8
|
}
|
|
9
9
|
return 0;
|
|
10
10
|
};
|
|
11
|
-
export const noRowCountInServerMode = buildWarning(["MUI: the 'rowCount' prop is undefined while using paginationMode='server'", 'For more detail, see http://mui.com/components/data-grid/pagination/#basic-implementation'], 'error');
|
|
11
|
+
export const noRowCountInServerMode = buildWarning(["MUI X: the 'rowCount' prop is undefined while using paginationMode='server'", 'For more detail, see http://mui.com/components/data-grid/pagination/#basic-implementation'], 'error');
|
|
12
12
|
export const getDefaultGridPaginationModel = autoPageSize => ({
|
|
13
13
|
page: 0,
|
|
14
14
|
pageSize: autoPageSize ? 0 : 100
|
|
@@ -21,6 +21,6 @@ export const getValidPage = (page, pageCount = 0) => {
|
|
|
21
21
|
};
|
|
22
22
|
export const throwIfPageSizeExceedsTheLimit = (pageSize, signatureProp) => {
|
|
23
23
|
if (signatureProp === GridSignature.DataGrid && pageSize > MAX_PAGE_SIZE) {
|
|
24
|
-
throw new Error(['MUI: `pageSize` cannot exceed 100 in the MIT version of the DataGrid.', 'You need to upgrade to DataGridPro or DataGridPremium component to unlock this feature.'].join('\n'));
|
|
24
|
+
throw new Error(['MUI X: `pageSize` cannot exceed 100 in the MIT version of the DataGrid.', 'You need to upgrade to DataGridPro or DataGridPremium component to unlock this feature.'].join('\n'));
|
|
25
25
|
}
|
|
26
26
|
};
|
|
@@ -5,7 +5,6 @@ import { gridDensityFactorSelector } from '../density';
|
|
|
5
5
|
import { useGridLogger, useGridSelector, useGridApiMethod, useGridApiEventHandler } from '../../utils';
|
|
6
6
|
import { useGridRegisterPipeProcessor } from '../../core/pipeProcessing';
|
|
7
7
|
import { gridPaginationModelSelector } from './gridPaginationSelector';
|
|
8
|
-
import { calculatePinnedRowsHeight } from '../rows/gridRowsUtils';
|
|
9
8
|
import { getPageCount, noRowCountInServerMode, defaultPageSize, throwIfPageSizeExceedsTheLimit, getDefaultGridPaginationModel, getValidPage } from './gridPaginationUtils';
|
|
10
9
|
export const paginationStateInitializer = (state, props) => {
|
|
11
10
|
const paginationModel = _extends({}, getDefaultGridPaginationModel(props.autoPageSize), props.paginationModel ?? props.initialState?.pagination?.paginationModel);
|
|
@@ -137,12 +136,11 @@ export const useGridPagination = (apiRef, props) => {
|
|
|
137
136
|
apiRef.current.forceUpdate();
|
|
138
137
|
};
|
|
139
138
|
const handleUpdateAutoPageSize = React.useCallback(() => {
|
|
140
|
-
|
|
141
|
-
if (!props.autoPageSize || !dimensions) {
|
|
139
|
+
if (!props.autoPageSize) {
|
|
142
140
|
return;
|
|
143
141
|
}
|
|
144
|
-
const
|
|
145
|
-
const maximumPageSizeWithoutScrollBar = Math.floor(
|
|
142
|
+
const dimensions = apiRef.current.getRootDimensions();
|
|
143
|
+
const maximumPageSizeWithoutScrollBar = Math.floor(dimensions.viewportInnerSize.height / rowHeight);
|
|
146
144
|
apiRef.current.setPageSize(maximumPageSizeWithoutScrollBar);
|
|
147
145
|
}, [apiRef, props.autoPageSize, rowHeight]);
|
|
148
146
|
useGridApiEventHandler(apiRef, 'viewportInnerSizeChange', handleUpdateAutoPageSize);
|
|
@@ -92,7 +92,7 @@ export const useGridRowSelection = (apiRef, props) => {
|
|
|
92
92
|
*/
|
|
93
93
|
const setRowSelectionModel = React.useCallback(model => {
|
|
94
94
|
if (props.signature === GridSignature.DataGrid && !canHaveMultipleSelection && Array.isArray(model) && model.length > 1) {
|
|
95
|
-
throw new Error(['MUI: `rowSelectionModel` can only contain 1 item in DataGrid.', 'You need to upgrade to DataGridPro or DataGridPremium component to unlock multiple selection.'].join('\n'));
|
|
95
|
+
throw new Error(['MUI X: `rowSelectionModel` can only contain 1 item in DataGrid.', 'You need to upgrade to DataGridPro or DataGridPremium component to unlock multiple selection.'].join('\n'));
|
|
96
96
|
}
|
|
97
97
|
const currentModel = gridRowSelectionStateSelector(apiRef.current.state);
|
|
98
98
|
if (currentModel !== model) {
|
|
@@ -33,11 +33,11 @@ export const gridPinnedRowsSelector = createSelectorMemoized(gridAdditionalRowGr
|
|
|
33
33
|
bottom: rawPinnedRows?.bottom?.map(rowEntry => ({
|
|
34
34
|
id: rowEntry.id,
|
|
35
35
|
model: rowEntry.model ?? {}
|
|
36
|
-
})),
|
|
36
|
+
})) ?? [],
|
|
37
37
|
top: rawPinnedRows?.top?.map(rowEntry => ({
|
|
38
38
|
id: rowEntry.id,
|
|
39
39
|
model: rowEntry.model ?? {}
|
|
40
|
-
}))
|
|
40
|
+
})) ?? []
|
|
41
41
|
};
|
|
42
42
|
});
|
|
43
43
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import { gridPinnedRowsSelector } from './gridRowsSelector';
|
|
3
|
-
import {
|
|
3
|
+
import { gridDimensionsSelector } from '../dimensions';
|
|
4
4
|
export const GRID_ROOT_GROUP_ID = `auto-generated-group-node-root`;
|
|
5
5
|
export const GRID_ID_AUTOGENERATED = Symbol('mui.id_autogenerated');
|
|
6
6
|
export const buildRootGroup = () => ({
|
|
@@ -24,7 +24,7 @@ export const buildRootGroup = () => ({
|
|
|
24
24
|
*/
|
|
25
25
|
export function checkGridRowIdIsValid(id, row, detailErrorMessage = 'A row was provided without id in the rows prop:') {
|
|
26
26
|
if (id == null) {
|
|
27
|
-
throw new Error(['MUI: The data grid component requires all rows to have a unique `id` property.', 'Alternatively, you can use the `getRowId` prop to specify a custom id for each row.', detailErrorMessage, JSON.stringify(row)].join('\n'));
|
|
27
|
+
throw new Error(['MUI X: The data grid component requires all rows to have a unique `id` property.', 'Alternatively, you can use the `getRowId` prop to specify a custom id for each row.', detailErrorMessage, JSON.stringify(row)].join('\n'));
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
30
|
export const getRowIdFromRowModel = (rowModel, getRowId, detailErrorMessage) => {
|
|
@@ -144,7 +144,7 @@ export const updateCacheWithNewRows = ({
|
|
|
144
144
|
updates
|
|
145
145
|
}) => {
|
|
146
146
|
if (previousCache.updates.type === 'full') {
|
|
147
|
-
throw new Error('MUI: Unable to prepare a partial update if a full update is not applied yet');
|
|
147
|
+
throw new Error('MUI X: Unable to prepare a partial update if a full update is not applied yet.');
|
|
148
148
|
}
|
|
149
149
|
|
|
150
150
|
// Remove duplicate updates.
|
|
@@ -275,7 +275,7 @@ export function calculatePinnedRowsHeight(apiRef) {
|
|
|
275
275
|
bottom: bottomPinnedRowsHeight
|
|
276
276
|
};
|
|
277
277
|
}
|
|
278
|
-
export function getMinimalContentHeight(apiRef
|
|
279
|
-
const
|
|
280
|
-
return `var(--DataGrid-overlayHeight, ${2 *
|
|
278
|
+
export function getMinimalContentHeight(apiRef) {
|
|
279
|
+
const dimensions = gridDimensionsSelector(apiRef.current.state);
|
|
280
|
+
return `var(--DataGrid-overlayHeight, ${2 * dimensions.rowHeight}px)`;
|
|
281
281
|
}
|
|
@@ -121,7 +121,7 @@ export const useGridRows = (apiRef, props) => {
|
|
|
121
121
|
}, [logger, props.getRowId, props.loading, props.rowCount, throttledRowsChange, apiRef]);
|
|
122
122
|
const updateRows = React.useCallback(updates => {
|
|
123
123
|
if (props.signature === GridSignature.DataGrid && updates.length > 1) {
|
|
124
|
-
throw new Error(["MUI: You can't update several rows at once in `apiRef.current.updateRows` on the DataGrid.", 'You need to upgrade to DataGridPro or DataGridPremium component to unlock this feature.'].join('\n'));
|
|
124
|
+
throw new Error(["MUI X: You can't update several rows at once in `apiRef.current.updateRows` on the DataGrid.", 'You need to upgrade to DataGridPro or DataGridPremium component to unlock this feature.'].join('\n'));
|
|
125
125
|
}
|
|
126
126
|
const nonPinnedRowsUpdates = [];
|
|
127
127
|
updates.forEach(update => {
|
|
@@ -159,10 +159,10 @@ export const useGridRows = (apiRef, props) => {
|
|
|
159
159
|
const setRowChildrenExpansion = React.useCallback((id, isExpanded) => {
|
|
160
160
|
const currentNode = apiRef.current.getRowNode(id);
|
|
161
161
|
if (!currentNode) {
|
|
162
|
-
throw new Error(`MUI: No row with id #${id} found
|
|
162
|
+
throw new Error(`MUI X: No row with id #${id} found.`);
|
|
163
163
|
}
|
|
164
164
|
if (currentNode.type !== 'group') {
|
|
165
|
-
throw new Error('MUI: Only group nodes can be expanded or collapsed');
|
|
165
|
+
throw new Error('MUI X: Only group nodes can be expanded or collapsed.');
|
|
166
166
|
}
|
|
167
167
|
const newNode = _extends({}, currentNode, {
|
|
168
168
|
childrenExpanded: isExpanded
|
|
@@ -214,13 +214,13 @@ export const useGridRows = (apiRef, props) => {
|
|
|
214
214
|
const setRowIndex = React.useCallback((rowId, targetIndex) => {
|
|
215
215
|
const node = apiRef.current.getRowNode(rowId);
|
|
216
216
|
if (!node) {
|
|
217
|
-
throw new Error(`MUI: No row with id #${rowId} found
|
|
217
|
+
throw new Error(`MUI X: No row with id #${rowId} found.`);
|
|
218
218
|
}
|
|
219
219
|
if (node.parent !== GRID_ROOT_GROUP_ID) {
|
|
220
|
-
throw new Error(`MUI: The row reordering do not support reordering of grouped rows yet
|
|
220
|
+
throw new Error(`MUI X: The row reordering do not support reordering of grouped rows yet.`);
|
|
221
221
|
}
|
|
222
222
|
if (node.type !== 'leaf') {
|
|
223
|
-
throw new Error(`MUI: The row reordering do not support reordering of footer or grouping rows
|
|
223
|
+
throw new Error(`MUI X: The row reordering do not support reordering of footer or grouping rows.`);
|
|
224
224
|
}
|
|
225
225
|
apiRef.current.setState(state => {
|
|
226
226
|
const group = gridRowTreeSelector(state, apiRef.current.instanceId)[GRID_ROOT_GROUP_ID];
|
|
@@ -246,7 +246,7 @@ export const useGridRows = (apiRef, props) => {
|
|
|
246
246
|
}, [apiRef, logger]);
|
|
247
247
|
const replaceRows = React.useCallback((firstRowToRender, newRows) => {
|
|
248
248
|
if (props.signature === GridSignature.DataGrid && newRows.length > 1) {
|
|
249
|
-
throw new Error(["MUI: You can't replace rows using `apiRef.current.unstable_replaceRows` on the DataGrid.", 'You need to upgrade to DataGridPro or DataGridPremium component to unlock this feature.'].join('\n'));
|
|
249
|
+
throw new Error(["MUI X: You can't replace rows using `apiRef.current.unstable_replaceRows` on the DataGrid.", 'You need to upgrade to DataGridPro or DataGridPremium component to unlock this feature.'].join('\n'));
|
|
250
250
|
}
|
|
251
251
|
if (newRows.length === 0) {
|
|
252
252
|
return;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import { unstable_debounce as debounce
|
|
3
|
+
import { unstable_debounce as debounce } from '@mui/utils';
|
|
4
4
|
import { useGridVisibleRows } from '../../utils/useGridVisibleRows';
|
|
5
5
|
import { useGridApiMethod } from '../../utils/useGridApiMethod';
|
|
6
6
|
import { useGridSelector } from '../../utils/useGridSelector';
|
|
@@ -11,6 +11,9 @@ import { gridSortModelSelector } from '../sorting/gridSortingSelector';
|
|
|
11
11
|
import { useGridRegisterPipeApplier } from '../../core/pipeProcessing';
|
|
12
12
|
import { gridPinnedRowsSelector } from './gridRowsSelector';
|
|
13
13
|
import { DATA_GRID_PROPS_DEFAULT_VALUES } from '../../../DataGrid/useDataGridProps';
|
|
14
|
+
|
|
15
|
+
// TODO: I think the row heights can now be encoded as a single `size` instead of `sizes.baseXxxx`
|
|
16
|
+
|
|
14
17
|
export const rowsMetaStateInitializer = state => _extends({}, state, {
|
|
15
18
|
rowsMeta: {
|
|
16
19
|
currentPageTotalHeight: 0,
|
|
@@ -28,8 +31,8 @@ const getValidRowHeight = (rowHeightProp, defaultRowHeight, warningMessage) => {
|
|
|
28
31
|
}
|
|
29
32
|
return defaultRowHeight;
|
|
30
33
|
};
|
|
31
|
-
const rowHeightWarning = [`MUI: The \`rowHeight\` prop should be a number greater than 0.`, `The default value will be used instead.`].join('\n');
|
|
32
|
-
const getRowHeightWarning = [`MUI: The \`getRowHeight\` prop should return a number greater than 0 or 'auto'.`, `The default value will be used instead.`].join('\n');
|
|
34
|
+
const rowHeightWarning = [`MUI X: The \`rowHeight\` prop should be a number greater than 0.`, `The default value will be used instead.`].join('\n');
|
|
35
|
+
const getRowHeightWarning = [`MUI X: The \`getRowHeight\` prop should return a number greater than 0 or 'auto'.`, `The default value will be used instead.`].join('\n');
|
|
33
36
|
|
|
34
37
|
/**
|
|
35
38
|
* @requires useGridPageSize (method)
|
|
@@ -174,15 +177,15 @@ export const useGridRowsMeta = (apiRef, props) => {
|
|
|
174
177
|
hydrateRowsMeta();
|
|
175
178
|
}, [hydrateRowsMeta]);
|
|
176
179
|
const debouncedHydrateRowsMeta = React.useMemo(() => debounce(hydrateRowsMeta, props.rowPositionsDebounceMs), [hydrateRowsMeta, props.rowPositionsDebounceMs]);
|
|
177
|
-
const storeMeasuredRowHeight = React.useCallback((id, height
|
|
180
|
+
const storeMeasuredRowHeight = React.useCallback((id, height) => {
|
|
178
181
|
if (!rowsHeightLookup.current[id] || !rowsHeightLookup.current[id].autoHeight) {
|
|
179
182
|
return;
|
|
180
183
|
}
|
|
181
184
|
|
|
182
185
|
// Only trigger hydration if the value is different, otherwise we trigger a loop
|
|
183
|
-
const needsHydration = rowsHeightLookup.current[id].sizes
|
|
186
|
+
const needsHydration = rowsHeightLookup.current[id].sizes.baseCenter !== height;
|
|
184
187
|
rowsHeightLookup.current[id].needsFirstMeasurement = false;
|
|
185
|
-
rowsHeightLookup.current[id].sizes
|
|
188
|
+
rowsHeightLookup.current[id].sizes.baseCenter = height;
|
|
186
189
|
if (needsHydration) {
|
|
187
190
|
debouncedHydrateRowsMeta();
|
|
188
191
|
}
|
|
@@ -8,7 +8,7 @@ import { gridRowCountSelector } from '../rows/gridRowsSelector';
|
|
|
8
8
|
import { gridRowsMetaSelector } from '../rows/gridRowsMetaSelector';
|
|
9
9
|
import { useGridApiMethod } from '../../utils/useGridApiMethod';
|
|
10
10
|
import { gridExpandedSortedRowEntriesSelector } from '../filter/gridFilterSelector';
|
|
11
|
-
import {
|
|
11
|
+
import { gridDimensionsSelector } from '../dimensions';
|
|
12
12
|
|
|
13
13
|
// Logic copied from https://www.w3.org/TR/wai-aria-practices/examples/listbox/js/listbox.js
|
|
14
14
|
// Similar to https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollIntoView
|
|
@@ -49,6 +49,7 @@ export const useGridScroll = (apiRef, props) => {
|
|
|
49
49
|
const virtualScrollerRef = apiRef.current.virtualScrollerRef;
|
|
50
50
|
const visibleSortedRows = useGridSelector(apiRef, gridExpandedSortedRowEntriesSelector);
|
|
51
51
|
const scrollToIndexes = React.useCallback(params => {
|
|
52
|
+
const dimensions = gridDimensionsSelector(apiRef.current.state);
|
|
52
53
|
const totalRowCount = gridRowCountSelector(apiRef);
|
|
53
54
|
const visibleColumns = gridVisibleColumnDefinitionsSelector(apiRef);
|
|
54
55
|
const scrollToHeader = params.rowIndex == null;
|
|
@@ -57,7 +58,7 @@ export const useGridScroll = (apiRef, props) => {
|
|
|
57
58
|
}
|
|
58
59
|
logger.debug(`Scrolling to cell at row ${params.rowIndex}, col: ${params.colIndex} `);
|
|
59
60
|
let scrollCoordinates = {};
|
|
60
|
-
if (params.colIndex
|
|
61
|
+
if (params.colIndex !== undefined) {
|
|
61
62
|
const columnPositions = gridColumnPositionsSelector(apiRef);
|
|
62
63
|
let cellWidth;
|
|
63
64
|
if (typeof params.rowIndex !== 'undefined') {
|
|
@@ -72,22 +73,20 @@ export const useGridScroll = (apiRef, props) => {
|
|
|
72
73
|
}
|
|
73
74
|
// When using RTL, `scrollLeft` becomes negative, so we must ensure that we only compare values.
|
|
74
75
|
scrollCoordinates.left = scrollIntoView({
|
|
75
|
-
clientHeight:
|
|
76
|
+
clientHeight: dimensions.viewportInnerSize.width,
|
|
76
77
|
scrollTop: Math.abs(virtualScrollerRef.current.scrollLeft),
|
|
77
78
|
offsetHeight: cellWidth,
|
|
78
79
|
offsetTop: columnPositions[params.colIndex]
|
|
79
80
|
});
|
|
80
81
|
}
|
|
81
|
-
if (params.rowIndex
|
|
82
|
+
if (params.rowIndex !== undefined) {
|
|
82
83
|
const rowsMeta = gridRowsMetaSelector(apiRef.current.state);
|
|
83
84
|
const page = gridPageSelector(apiRef);
|
|
84
85
|
const pageSize = gridPageSizeSelector(apiRef);
|
|
85
86
|
const elementIndex = !props.pagination ? params.rowIndex : params.rowIndex - page * pageSize;
|
|
86
87
|
const targetOffsetHeight = rowsMeta.positions[elementIndex + 1] ? rowsMeta.positions[elementIndex + 1] - rowsMeta.positions[elementIndex] : rowsMeta.currentPageTotalHeight - rowsMeta.positions[elementIndex];
|
|
87
|
-
const topPinnedRowsHeight = virtualScrollerRef.current.querySelector(`.${gridClasses['pinnedRows--top']}`)?.clientHeight || 0;
|
|
88
|
-
const bottomPinnedRowsHeight = virtualScrollerRef.current.querySelector(`.${gridClasses['pinnedRows--bottom']}`)?.clientHeight || 0;
|
|
89
88
|
scrollCoordinates.top = scrollIntoView({
|
|
90
|
-
clientHeight:
|
|
89
|
+
clientHeight: dimensions.viewportInnerSize.height,
|
|
91
90
|
scrollTop: virtualScrollerRef.current.scrollTop,
|
|
92
91
|
offsetHeight: targetOffsetHeight,
|
|
93
92
|
offsetTop: rowsMeta.positions[elementIndex]
|
|
@@ -101,13 +100,13 @@ export const useGridScroll = (apiRef, props) => {
|
|
|
101
100
|
return false;
|
|
102
101
|
}, [logger, apiRef, virtualScrollerRef, props.pagination, visibleSortedRows]);
|
|
103
102
|
const scroll = React.useCallback(params => {
|
|
104
|
-
if (virtualScrollerRef.current && params.left
|
|
103
|
+
if (virtualScrollerRef.current && params.left !== undefined && colRef.current) {
|
|
105
104
|
const direction = theme.direction === 'rtl' ? -1 : 1;
|
|
106
105
|
colRef.current.scrollLeft = params.left;
|
|
107
106
|
virtualScrollerRef.current.scrollLeft = direction * params.left;
|
|
108
107
|
logger.debug(`Scrolling left: ${params.left}`);
|
|
109
108
|
}
|
|
110
|
-
if (virtualScrollerRef.current && params.top
|
|
109
|
+
if (virtualScrollerRef.current && params.top !== undefined) {
|
|
111
110
|
virtualScrollerRef.current.scrollTop = params.top;
|
|
112
111
|
logger.debug(`Scrolling top: ${params.top}`);
|
|
113
112
|
}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import { buildWarning } from '../../../utils/warning';
|
|
3
|
-
const sortModelDisableMultiColumnsSortingWarning = buildWarning(['MUI: The `sortModel` can only contain a single item when the `disableMultipleColumnsSorting` prop is set to `true`.', 'If you are using the community version of the `DataGrid`, this prop is always `true`.'], 'error');
|
|
3
|
+
const sortModelDisableMultiColumnsSortingWarning = buildWarning(['MUI X: The `sortModel` can only contain a single item when the `disableMultipleColumnsSorting` prop is set to `true`.', 'If you are using the community version of the `DataGrid`, this prop is always `true`.'], 'error');
|
|
4
4
|
export const sanitizeSortModel = (model, disableMultipleColumnsSorting) => {
|
|
5
5
|
if (disableMultipleColumnsSorting && model.length > 1) {
|
|
6
|
-
|
|
6
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
7
|
+
sortModelDisableMultiColumnsSortingWarning();
|
|
8
|
+
}
|
|
7
9
|
return [model[0]];
|
|
8
10
|
}
|
|
9
11
|
return model;
|
|
@@ -23,7 +25,7 @@ const isDesc = direction => direction === 'desc';
|
|
|
23
25
|
*/
|
|
24
26
|
const parseSortItem = (sortItem, apiRef) => {
|
|
25
27
|
const column = apiRef.current.getColumn(sortItem.field);
|
|
26
|
-
if (!column) {
|
|
28
|
+
if (!column || sortItem.sort === null) {
|
|
27
29
|
return null;
|
|
28
30
|
}
|
|
29
31
|
const comparator = isDesc(sortItem.sort) ? (...args) => -1 * column.sortComparator(...args) : column.sortComparator;
|
|
@@ -56,7 +56,7 @@ export const useGridSorting = (apiRef, props) => {
|
|
|
56
56
|
const existing = sortModel.find(c => c.field === col.field);
|
|
57
57
|
if (existing) {
|
|
58
58
|
const nextSort = directionOverride === undefined ? getNextGridSortDirection(col.sortingOrder ?? props.sortingOrder, existing.sort) : directionOverride;
|
|
59
|
-
return nextSort
|
|
59
|
+
return nextSort === undefined ? undefined : _extends({}, existing, {
|
|
60
60
|
sort: nextSort
|
|
61
61
|
});
|
|
62
62
|
}
|
|
@@ -66,7 +66,7 @@ export const useGridSorting = (apiRef, props) => {
|
|
|
66
66
|
};
|
|
67
67
|
}, [apiRef, props.sortingOrder]);
|
|
68
68
|
const addColumnMenuItem = React.useCallback((columnMenuItems, colDef) => {
|
|
69
|
-
if (colDef == null || colDef.sortable === false) {
|
|
69
|
+
if (colDef == null || colDef.sortable === false || props.disableColumnSorting) {
|
|
70
70
|
return columnMenuItems;
|
|
71
71
|
}
|
|
72
72
|
const sortingOrder = colDef.sortingOrder || props.sortingOrder;
|
|
@@ -74,7 +74,7 @@ export const useGridSorting = (apiRef, props) => {
|
|
|
74
74
|
return [...columnMenuItems, 'columnMenuSortItem'];
|
|
75
75
|
}
|
|
76
76
|
return columnMenuItems;
|
|
77
|
-
}, [props.sortingOrder]);
|
|
77
|
+
}, [props.sortingOrder, props.disableColumnSorting]);
|
|
78
78
|
|
|
79
79
|
/**
|
|
80
80
|
* API METHODS
|
|
@@ -114,9 +114,6 @@ export const useGridSorting = (apiRef, props) => {
|
|
|
114
114
|
}, [apiRef, logger, props.disableMultipleColumnsSorting]);
|
|
115
115
|
const sortColumn = React.useCallback((field, direction, allowMultipleSorting) => {
|
|
116
116
|
const column = apiRef.current.getColumn(field);
|
|
117
|
-
if (!column.sortable) {
|
|
118
|
-
return;
|
|
119
|
-
}
|
|
120
117
|
const sortItem = createSortItem(column, direction);
|
|
121
118
|
let sortModel;
|
|
122
119
|
if (!allowMultipleSorting || props.disableMultipleColumnsSorting) {
|
|
@@ -194,19 +191,27 @@ export const useGridSorting = (apiRef, props) => {
|
|
|
194
191
|
* EVENTS
|
|
195
192
|
*/
|
|
196
193
|
const handleColumnHeaderClick = React.useCallback(({
|
|
197
|
-
field
|
|
194
|
+
field,
|
|
195
|
+
colDef
|
|
198
196
|
}, event) => {
|
|
197
|
+
if (!colDef.sortable || props.disableColumnSorting) {
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
199
200
|
const allowMultipleSorting = event.shiftKey || event.metaKey || event.ctrlKey;
|
|
200
201
|
sortColumn(field, undefined, allowMultipleSorting);
|
|
201
|
-
}, [sortColumn]);
|
|
202
|
+
}, [sortColumn, props.disableColumnSorting]);
|
|
202
203
|
const handleColumnHeaderKeyDown = React.useCallback(({
|
|
203
|
-
field
|
|
204
|
+
field,
|
|
205
|
+
colDef
|
|
204
206
|
}, event) => {
|
|
207
|
+
if (!colDef.sortable || props.disableColumnSorting) {
|
|
208
|
+
return;
|
|
209
|
+
}
|
|
205
210
|
// Ctrl + Enter opens the column menu
|
|
206
211
|
if (isEnterKey(event.key) && !event.ctrlKey && !event.metaKey) {
|
|
207
212
|
sortColumn(field, undefined, event.shiftKey);
|
|
208
213
|
}
|
|
209
|
-
}, [sortColumn]);
|
|
214
|
+
}, [sortColumn, props.disableColumnSorting]);
|
|
210
215
|
const handleColumnsChange = React.useCallback(() => {
|
|
211
216
|
// When the columns change we check that the sorted columns are still part of the dataset
|
|
212
217
|
const sortModel = gridSortModelSelector(apiRef);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createSelector } from '../../../utils/createSelector';
|
|
1
|
+
import { createSelector, createSelectorMemoized } from '../../../utils/createSelector';
|
|
2
2
|
/**
|
|
3
3
|
* Get the columns state
|
|
4
4
|
* @category Virtualization
|
|
@@ -15,4 +15,24 @@ export const gridVirtualizationEnabledSelector = createSelector(gridVirtualizati
|
|
|
15
15
|
* Get the enabled state for virtualization
|
|
16
16
|
* @category Virtualization
|
|
17
17
|
*/
|
|
18
|
-
export const gridVirtualizationColumnEnabledSelector = createSelector(gridVirtualizationSelector, state => state.enabledForColumns);
|
|
18
|
+
export const gridVirtualizationColumnEnabledSelector = createSelector(gridVirtualizationSelector, state => state.enabledForColumns);
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Get the render context
|
|
22
|
+
* @category Virtualization
|
|
23
|
+
* @ignore - do not document.
|
|
24
|
+
*/
|
|
25
|
+
export const gridRenderContextSelector = createSelector(gridVirtualizationSelector, state => state.renderContext);
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Get the render context, with only columns filled in.
|
|
29
|
+
* This is cached, so it can be used to only re-render when the column interval changes.
|
|
30
|
+
* @category Virtualization
|
|
31
|
+
* @ignore - do not document.
|
|
32
|
+
*/
|
|
33
|
+
export const gridRenderContextColumnsSelector = createSelectorMemoized(state => state.virtualization.renderContext.firstColumnIndex, state => state.virtualization.renderContext.lastColumnIndex, (firstColumnIndex, lastColumnIndex) => ({
|
|
34
|
+
firstRowIndex: -1,
|
|
35
|
+
lastRowIndex: -1,
|
|
36
|
+
firstColumnIndex,
|
|
37
|
+
lastColumnIndex
|
|
38
|
+
}));
|