@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
|
@@ -1,137 +1,95 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
1
2
|
import * as React from 'react';
|
|
2
|
-
import { unstable_debounce as debounce, unstable_ownerDocument as ownerDocument, unstable_useEnhancedEffect as useEnhancedEffect, unstable_ownerWindow as ownerWindow } from '@mui/utils';
|
|
3
|
+
import { unstable_debounce as debounce, unstable_ownerDocument as ownerDocument, unstable_useEnhancedEffect as useEnhancedEffect, unstable_useEventCallback as useEventCallback, unstable_ownerWindow as ownerWindow } from '@mui/utils';
|
|
3
4
|
import { useGridApiEventHandler, useGridApiOptionHandler } from '../../utils/useGridApiEventHandler';
|
|
4
5
|
import { useGridApiMethod } from '../../utils/useGridApiMethod';
|
|
5
6
|
import { useGridLogger } from '../../utils/useGridLogger';
|
|
6
|
-
import { gridColumnsTotalWidthSelector } from '../columns';
|
|
7
|
+
import { gridColumnsTotalWidthSelector, gridVisiblePinnedColumnDefinitionsSelector } from '../columns';
|
|
8
|
+
import { gridDimensionsSelector } from './gridDimensionsSelectors';
|
|
7
9
|
import { gridDensityFactorSelector } from '../density';
|
|
10
|
+
import { gridRenderContextSelector } from '../virtualization';
|
|
8
11
|
import { useGridSelector } from '../../utils';
|
|
9
12
|
import { getVisibleRows } from '../../utils/useGridVisibleRows';
|
|
10
13
|
import { gridRowsMetaSelector } from '../rows/gridRowsMetaSelector';
|
|
11
14
|
import { calculatePinnedRowsHeight } from '../rows/gridRowsUtils';
|
|
12
15
|
import { getTotalHeaderHeight } from '../columns/gridColumnsUtils';
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
16
|
+
const EMPTY_SIZE = {
|
|
17
|
+
width: 0,
|
|
18
|
+
height: 0
|
|
19
|
+
};
|
|
20
|
+
const EMPTY_DIMENSIONS = {
|
|
21
|
+
isReady: false,
|
|
22
|
+
root: EMPTY_SIZE,
|
|
23
|
+
viewportOuterSize: EMPTY_SIZE,
|
|
24
|
+
viewportInnerSize: EMPTY_SIZE,
|
|
25
|
+
contentSize: EMPTY_SIZE,
|
|
26
|
+
minimumSize: EMPTY_SIZE,
|
|
27
|
+
hasScrollX: false,
|
|
28
|
+
hasScrollY: false,
|
|
29
|
+
scrollbarSize: 0,
|
|
30
|
+
headerHeight: 0,
|
|
31
|
+
rowWidth: 0,
|
|
32
|
+
rowHeight: 0,
|
|
33
|
+
columnsTotalWidth: 0,
|
|
34
|
+
leftPinnedWidth: 0,
|
|
35
|
+
rightPinnedWidth: 0,
|
|
36
|
+
headersTotalHeight: 0,
|
|
37
|
+
topContainerHeight: 0,
|
|
38
|
+
bottomContainerHeight: 0
|
|
39
|
+
};
|
|
40
|
+
export const dimensionsStateInitializer = state => {
|
|
41
|
+
const dimensions = EMPTY_DIMENSIONS;
|
|
42
|
+
return _extends({}, state, {
|
|
43
|
+
dimensions
|
|
44
|
+
});
|
|
36
45
|
};
|
|
37
46
|
export function useGridDimensions(apiRef, props) {
|
|
38
47
|
const logger = useGridLogger(apiRef, 'useResizeContainer');
|
|
39
48
|
const errorShown = React.useRef(false);
|
|
40
|
-
const rootDimensionsRef = React.useRef(
|
|
41
|
-
const fullDimensionsRef = React.useRef(null);
|
|
49
|
+
const rootDimensionsRef = React.useRef(EMPTY_SIZE);
|
|
42
50
|
const rowsMeta = useGridSelector(apiRef, gridRowsMetaSelector);
|
|
51
|
+
const pinnedColumns = useGridSelector(apiRef, gridVisiblePinnedColumnDefinitionsSelector);
|
|
43
52
|
const densityFactor = useGridSelector(apiRef, gridDensityFactorSelector);
|
|
44
53
|
const rowHeight = Math.floor(props.rowHeight * densityFactor);
|
|
45
|
-
const
|
|
46
|
-
const
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
return;
|
|
53
|
-
}
|
|
54
|
-
let scrollBarSize;
|
|
55
|
-
if (props.scrollbarSize != null) {
|
|
56
|
-
scrollBarSize = props.scrollbarSize;
|
|
57
|
-
} else if (!columnsTotalWidth || !rootElement) {
|
|
58
|
-
scrollBarSize = 0;
|
|
59
|
-
} else {
|
|
60
|
-
const doc = ownerDocument(rootElement);
|
|
61
|
-
const scrollDiv = doc.createElement('div');
|
|
62
|
-
scrollDiv.style.width = '99px';
|
|
63
|
-
scrollDiv.style.height = '99px';
|
|
64
|
-
scrollDiv.style.position = 'absolute';
|
|
65
|
-
scrollDiv.style.overflow = 'scroll';
|
|
66
|
-
scrollDiv.className = 'scrollDiv';
|
|
67
|
-
rootElement.appendChild(scrollDiv);
|
|
68
|
-
scrollBarSize = scrollDiv.offsetWidth - scrollDiv.clientWidth;
|
|
69
|
-
rootElement.removeChild(scrollDiv);
|
|
70
|
-
}
|
|
71
|
-
let viewportOuterSize;
|
|
72
|
-
let hasScrollX;
|
|
73
|
-
let hasScrollY;
|
|
74
|
-
if (props.autoHeight) {
|
|
75
|
-
hasScrollY = false;
|
|
76
|
-
hasScrollX = Math.round(columnsTotalWidth) > Math.round(rootDimensionsRef.current.width);
|
|
77
|
-
viewportOuterSize = {
|
|
78
|
-
width: rootDimensionsRef.current.width,
|
|
79
|
-
height: rowsMeta.currentPageTotalHeight + (hasScrollX ? scrollBarSize : 0)
|
|
80
|
-
};
|
|
81
|
-
} else {
|
|
82
|
-
viewportOuterSize = {
|
|
83
|
-
width: rootDimensionsRef.current.width,
|
|
84
|
-
height: Math.max(rootDimensionsRef.current.height - totalHeaderHeight, 0)
|
|
85
|
-
};
|
|
86
|
-
const scrollInformation = hasScroll({
|
|
87
|
-
content: {
|
|
88
|
-
width: Math.round(columnsTotalWidth),
|
|
89
|
-
height: rowsMeta.currentPageTotalHeight
|
|
90
|
-
},
|
|
91
|
-
container: {
|
|
92
|
-
width: Math.round(viewportOuterSize.width),
|
|
93
|
-
height: viewportOuterSize.height - pinnedRowsHeight.top - pinnedRowsHeight.bottom
|
|
94
|
-
},
|
|
95
|
-
scrollBarSize
|
|
96
|
-
});
|
|
97
|
-
hasScrollY = scrollInformation.hasScrollY;
|
|
98
|
-
hasScrollX = scrollInformation.hasScrollX;
|
|
99
|
-
}
|
|
100
|
-
const viewportInnerSize = {
|
|
101
|
-
width: viewportOuterSize.width - (hasScrollY ? scrollBarSize : 0),
|
|
102
|
-
height: viewportOuterSize.height - (hasScrollX ? scrollBarSize : 0)
|
|
103
|
-
};
|
|
104
|
-
const newFullDimensions = {
|
|
105
|
-
viewportOuterSize,
|
|
106
|
-
viewportInnerSize,
|
|
107
|
-
hasScrollX,
|
|
108
|
-
hasScrollY,
|
|
109
|
-
scrollBarSize
|
|
110
|
-
};
|
|
111
|
-
const prevDimensions = fullDimensionsRef.current;
|
|
112
|
-
fullDimensionsRef.current = newFullDimensions;
|
|
113
|
-
if (newFullDimensions.viewportInnerSize.width !== (prevDimensions == null ? void 0 : prevDimensions.viewportInnerSize.width) || newFullDimensions.viewportInnerSize.height !== (prevDimensions == null ? void 0 : prevDimensions.viewportInnerSize.height)) {
|
|
114
|
-
apiRef.current.publishEvent('viewportInnerSizeChange', newFullDimensions.viewportInnerSize);
|
|
115
|
-
}
|
|
116
|
-
}, [apiRef, props.scrollbarSize, props.autoHeight, rowsMeta.currentPageTotalHeight, totalHeaderHeight]);
|
|
54
|
+
const headerHeight = Math.floor(props.columnHeaderHeight * densityFactor);
|
|
55
|
+
const columnsTotalWidth = roundToDecimalPlaces(gridColumnsTotalWidthSelector(apiRef), 6);
|
|
56
|
+
// XXX: The `props as any` below is not resilient to change.
|
|
57
|
+
const hasHeaderFilters = Boolean(props.headerFilters);
|
|
58
|
+
const headersTotalHeight = getTotalHeaderHeight(apiRef, props.columnHeaderHeight) + Number(hasHeaderFilters) * headerHeight;
|
|
59
|
+
const leftPinnedWidth = pinnedColumns.left.reduce((w, col) => w + col.computedWidth, 0);
|
|
60
|
+
const rightPinnedWidth = pinnedColumns.right.reduce((w, col) => w + col.computedWidth, 0);
|
|
117
61
|
const [savedSize, setSavedSize] = React.useState();
|
|
118
62
|
const debouncedSetSavedSize = React.useMemo(() => debounce(setSavedSize, 60), []);
|
|
119
63
|
const previousSize = React.useRef();
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
// This is the function called by apiRef.current.resize()
|
|
64
|
+
const getRootDimensions = () => apiRef.current.state.dimensions;
|
|
65
|
+
const setDimensions = useEventCallback(dimensions => {
|
|
66
|
+
apiRef.current.setState(state => _extends({}, state, {
|
|
67
|
+
dimensions
|
|
68
|
+
}));
|
|
69
|
+
});
|
|
128
70
|
const resize = React.useCallback(() => {
|
|
129
|
-
|
|
71
|
+
var _previousSize$current, _previousSize$current2;
|
|
72
|
+
const element = apiRef.current.mainElementRef.current;
|
|
73
|
+
if (!element) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
const computedStyle = ownerWindow(element).getComputedStyle(element);
|
|
77
|
+
const height = parseFloat(computedStyle.height) || 0;
|
|
78
|
+
const width = parseFloat(computedStyle.width) || 0;
|
|
79
|
+
const hasHeightChanged = height !== ((_previousSize$current = previousSize.current) == null ? void 0 : _previousSize$current.height);
|
|
80
|
+
const hasWidthChanged = width !== ((_previousSize$current2 = previousSize.current) == null ? void 0 : _previousSize$current2.width);
|
|
81
|
+
if (!previousSize.current || hasHeightChanged || hasWidthChanged) {
|
|
82
|
+
const size = {
|
|
83
|
+
width,
|
|
84
|
+
height
|
|
85
|
+
};
|
|
86
|
+
apiRef.current.publishEvent('resize', size);
|
|
87
|
+
previousSize.current = size;
|
|
88
|
+
}
|
|
130
89
|
}, [apiRef]);
|
|
131
|
-
const getRootDimensions = React.useCallback(() => fullDimensionsRef.current, []);
|
|
132
90
|
const getViewportPageSize = React.useCallback(() => {
|
|
133
|
-
const dimensions = apiRef.current.
|
|
134
|
-
if (!dimensions) {
|
|
91
|
+
const dimensions = gridDimensionsSelector(apiRef.current.state);
|
|
92
|
+
if (!dimensions.isReady) {
|
|
135
93
|
return 0;
|
|
136
94
|
}
|
|
137
95
|
const currentPage = getVisibleRows(apiRef, {
|
|
@@ -142,45 +100,136 @@ export function useGridDimensions(apiRef, props) {
|
|
|
142
100
|
// TODO: Use a combination of scrollTop, dimensions.viewportInnerSize.height and rowsMeta.possitions
|
|
143
101
|
// to find out the maximum number of rows that can fit in the visible part of the grid
|
|
144
102
|
if (props.getRowHeight) {
|
|
145
|
-
const renderContext = apiRef
|
|
103
|
+
const renderContext = gridRenderContextSelector(apiRef);
|
|
146
104
|
const viewportPageSize = renderContext.lastRowIndex - renderContext.firstRowIndex;
|
|
147
105
|
return Math.min(viewportPageSize - 1, currentPage.rows.length);
|
|
148
106
|
}
|
|
149
107
|
const maximumPageSizeWithoutScrollBar = Math.floor(dimensions.viewportInnerSize.height / rowHeight);
|
|
150
108
|
return Math.min(maximumPageSizeWithoutScrollBar, currentPage.rows.length);
|
|
151
109
|
}, [apiRef, props.pagination, props.paginationMode, props.getRowHeight, rowHeight]);
|
|
152
|
-
const
|
|
153
|
-
var _apiRef$current$
|
|
154
|
-
const
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
const
|
|
159
|
-
const
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
110
|
+
const updateDimensions = React.useCallback(() => {
|
|
111
|
+
var _apiRef$current$updat, _apiRef$current;
|
|
112
|
+
const rootElement = apiRef.current.rootElementRef.current;
|
|
113
|
+
const pinnedRowsHeight = calculatePinnedRowsHeight(apiRef);
|
|
114
|
+
const scrollbarSize = measureScrollbarSize(rootElement, columnsTotalWidth, props.scrollbarSize);
|
|
115
|
+
const topContainerHeight = headersTotalHeight + pinnedRowsHeight.top;
|
|
116
|
+
const bottomContainerHeight = pinnedRowsHeight.bottom;
|
|
117
|
+
const contentSize = {
|
|
118
|
+
width: columnsTotalWidth,
|
|
119
|
+
height: rowsMeta.currentPageTotalHeight
|
|
120
|
+
};
|
|
121
|
+
let viewportOuterSize;
|
|
122
|
+
let viewportInnerSize;
|
|
123
|
+
let hasScrollX = false;
|
|
124
|
+
let hasScrollY = false;
|
|
125
|
+
if (props.autoHeight) {
|
|
126
|
+
hasScrollY = false;
|
|
127
|
+
hasScrollX = Math.round(columnsTotalWidth) > Math.round(rootDimensionsRef.current.width);
|
|
128
|
+
viewportOuterSize = {
|
|
129
|
+
width: rootDimensionsRef.current.width,
|
|
130
|
+
height: topContainerHeight + bottomContainerHeight + contentSize.height
|
|
168
131
|
};
|
|
169
|
-
|
|
170
|
-
|
|
132
|
+
viewportInnerSize = {
|
|
133
|
+
width: Math.max(0, viewportOuterSize.width - (hasScrollY ? scrollbarSize : 0)),
|
|
134
|
+
height: Math.max(0, viewportOuterSize.height - (hasScrollX ? scrollbarSize : 0))
|
|
135
|
+
};
|
|
136
|
+
} else {
|
|
137
|
+
viewportOuterSize = {
|
|
138
|
+
width: rootDimensionsRef.current.width,
|
|
139
|
+
height: rootDimensionsRef.current.height
|
|
140
|
+
};
|
|
141
|
+
viewportInnerSize = {
|
|
142
|
+
width: Math.max(0, viewportOuterSize.width - leftPinnedWidth - rightPinnedWidth),
|
|
143
|
+
height: Math.max(0, viewportOuterSize.height - topContainerHeight - bottomContainerHeight)
|
|
144
|
+
};
|
|
145
|
+
const content = contentSize;
|
|
146
|
+
const container = viewportInnerSize;
|
|
147
|
+
const hasScrollXIfNoYScrollBar = content.width > container.width;
|
|
148
|
+
const hasScrollYIfNoXScrollBar = content.height > container.height;
|
|
149
|
+
if (hasScrollXIfNoYScrollBar || hasScrollYIfNoXScrollBar) {
|
|
150
|
+
hasScrollY = hasScrollYIfNoXScrollBar;
|
|
151
|
+
hasScrollX = content.width + (hasScrollY ? scrollbarSize : 0) > container.width;
|
|
152
|
+
|
|
153
|
+
// We recalculate the scroll y to consider the size of the x scrollbar.
|
|
154
|
+
if (hasScrollX) {
|
|
155
|
+
hasScrollY = content.height + scrollbarSize > container.height;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
if (hasScrollY) {
|
|
159
|
+
viewportInnerSize.width -= scrollbarSize;
|
|
160
|
+
}
|
|
161
|
+
if (hasScrollX) {
|
|
162
|
+
viewportInnerSize.height -= scrollbarSize;
|
|
163
|
+
}
|
|
171
164
|
}
|
|
172
|
-
|
|
173
|
-
|
|
165
|
+
const rowWidth = Math.max(viewportOuterSize.width, columnsTotalWidth + (hasScrollY ? scrollbarSize : 0));
|
|
166
|
+
const minimumSize = {
|
|
167
|
+
width: contentSize.width,
|
|
168
|
+
height: topContainerHeight + contentSize.height + bottomContainerHeight
|
|
169
|
+
};
|
|
170
|
+
const newDimensions = {
|
|
171
|
+
isReady: true,
|
|
172
|
+
root: rootDimensionsRef.current,
|
|
173
|
+
viewportOuterSize,
|
|
174
|
+
viewportInnerSize,
|
|
175
|
+
contentSize,
|
|
176
|
+
minimumSize,
|
|
177
|
+
hasScrollX,
|
|
178
|
+
hasScrollY,
|
|
179
|
+
scrollbarSize,
|
|
180
|
+
headerHeight,
|
|
181
|
+
rowWidth,
|
|
182
|
+
rowHeight,
|
|
183
|
+
columnsTotalWidth,
|
|
184
|
+
leftPinnedWidth,
|
|
185
|
+
rightPinnedWidth,
|
|
186
|
+
headersTotalHeight,
|
|
187
|
+
topContainerHeight,
|
|
188
|
+
bottomContainerHeight
|
|
189
|
+
};
|
|
190
|
+
const prevDimensions = apiRef.current.state.dimensions;
|
|
191
|
+
setDimensions(newDimensions);
|
|
192
|
+
if (newDimensions.viewportInnerSize.width !== prevDimensions.viewportInnerSize.width || newDimensions.viewportInnerSize.height !== prevDimensions.viewportInnerSize.height) {
|
|
193
|
+
apiRef.current.publishEvent('viewportInnerSizeChange', newDimensions.viewportInnerSize);
|
|
194
|
+
}
|
|
195
|
+
(_apiRef$current$updat = (_apiRef$current = apiRef.current).updateRenderContext) == null || _apiRef$current$updat.call(_apiRef$current);
|
|
196
|
+
}, [apiRef, setDimensions, props.scrollbarSize, props.autoHeight, rowsMeta.currentPageTotalHeight, rowHeight, headerHeight, columnsTotalWidth, headersTotalHeight, leftPinnedWidth, rightPinnedWidth]);
|
|
197
|
+
const apiPublic = {
|
|
174
198
|
resize,
|
|
175
199
|
getRootDimensions
|
|
176
200
|
};
|
|
177
|
-
const
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
computeSizeAndPublishResizeEvent
|
|
201
|
+
const apiPrivate = {
|
|
202
|
+
updateDimensions,
|
|
203
|
+
getViewportPageSize
|
|
181
204
|
};
|
|
182
|
-
useGridApiMethod(apiRef,
|
|
183
|
-
useGridApiMethod(apiRef,
|
|
205
|
+
useGridApiMethod(apiRef, apiPublic, 'public');
|
|
206
|
+
useGridApiMethod(apiRef, apiPrivate, 'private');
|
|
207
|
+
useEnhancedEffect(() => {
|
|
208
|
+
if (savedSize) {
|
|
209
|
+
updateDimensions();
|
|
210
|
+
apiRef.current.publishEvent('debouncedResize', rootDimensionsRef.current);
|
|
211
|
+
}
|
|
212
|
+
}, [apiRef, savedSize, updateDimensions]);
|
|
213
|
+
const root = apiRef.current.rootElementRef.current;
|
|
214
|
+
const dimensions = apiRef.current.state.dimensions;
|
|
215
|
+
useEnhancedEffect(() => {
|
|
216
|
+
if (!root) {
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
219
|
+
const set = (k, v) => root.style.setProperty(k, v);
|
|
220
|
+
set('--DataGrid-width', `${dimensions.viewportOuterSize.width}px`);
|
|
221
|
+
set('--DataGrid-hasScrollX', `${Number(dimensions.hasScrollX)}`);
|
|
222
|
+
set('--DataGrid-hasScrollY', `${Number(dimensions.hasScrollY)}`);
|
|
223
|
+
set('--DataGrid-scrollbarSize', `${dimensions.scrollbarSize}px`);
|
|
224
|
+
set('--DataGrid-rowWidth', `${dimensions.rowWidth}px`);
|
|
225
|
+
set('--DataGrid-columnsTotalWidth', `${dimensions.columnsTotalWidth}px`);
|
|
226
|
+
set('--DataGrid-leftPinnedWidth', `${dimensions.leftPinnedWidth}px`);
|
|
227
|
+
set('--DataGrid-rightPinnedWidth', `${dimensions.rightPinnedWidth}px`);
|
|
228
|
+
set('--DataGrid-headerHeight', `${dimensions.headerHeight}px`);
|
|
229
|
+
set('--DataGrid-headersTotalHeight', `${dimensions.headersTotalHeight}px`);
|
|
230
|
+
set('--DataGrid-topContainerHeight', `${dimensions.topContainerHeight}px`);
|
|
231
|
+
set('--DataGrid-bottomContainerHeight', `${dimensions.bottomContainerHeight}px`);
|
|
232
|
+
}, [root, dimensions]);
|
|
184
233
|
const isFirstSizing = React.useRef(true);
|
|
185
234
|
const handleResize = React.useCallback(size => {
|
|
186
235
|
rootDimensionsRef.current = size;
|
|
@@ -195,12 +244,6 @@ export function useGridDimensions(apiRef, props) {
|
|
|
195
244
|
logger.error(['The parent DOM element of the data grid has an empty width.', 'Please make sure that this element has an intrinsic width.', 'The grid displays with a width of 0px.', '', 'More details: https://mui.com/r/x-data-grid-no-dimensions.'].join('\n'));
|
|
196
245
|
errorShown.current = true;
|
|
197
246
|
}
|
|
198
|
-
if (isTestEnvironment) {
|
|
199
|
-
// We don't need to debounce the resize for tests.
|
|
200
|
-
setSavedSize(size);
|
|
201
|
-
isFirstSizing.current = false;
|
|
202
|
-
return;
|
|
203
|
-
}
|
|
204
247
|
if (isFirstSizing.current) {
|
|
205
248
|
// We want to initialize the grid dimensions as soon as possible to avoid flickering
|
|
206
249
|
setSavedSize(size);
|
|
@@ -209,10 +252,35 @@ export function useGridDimensions(apiRef, props) {
|
|
|
209
252
|
}
|
|
210
253
|
debouncedSetSavedSize(size);
|
|
211
254
|
}, [props.autoHeight, debouncedSetSavedSize, logger]);
|
|
212
|
-
useEnhancedEffect(
|
|
213
|
-
useGridApiOptionHandler(apiRef, 'sortedRowsSet',
|
|
214
|
-
useGridApiOptionHandler(apiRef, 'paginationModelChange',
|
|
215
|
-
useGridApiOptionHandler(apiRef, 'columnsChange',
|
|
255
|
+
useEnhancedEffect(updateDimensions, [updateDimensions]);
|
|
256
|
+
useGridApiOptionHandler(apiRef, 'sortedRowsSet', updateDimensions);
|
|
257
|
+
useGridApiOptionHandler(apiRef, 'paginationModelChange', updateDimensions);
|
|
258
|
+
useGridApiOptionHandler(apiRef, 'columnsChange', updateDimensions);
|
|
216
259
|
useGridApiEventHandler(apiRef, 'resize', handleResize);
|
|
217
260
|
useGridApiOptionHandler(apiRef, 'debouncedResize', props.onResize);
|
|
261
|
+
}
|
|
262
|
+
function measureScrollbarSize(rootElement, columnsTotalWidth, scrollbarSize) {
|
|
263
|
+
if (scrollbarSize !== undefined) {
|
|
264
|
+
return scrollbarSize;
|
|
265
|
+
}
|
|
266
|
+
if (rootElement === null || columnsTotalWidth === 0) {
|
|
267
|
+
return 0;
|
|
268
|
+
}
|
|
269
|
+
const doc = ownerDocument(rootElement);
|
|
270
|
+
const scrollDiv = doc.createElement('div');
|
|
271
|
+
scrollDiv.style.width = '99px';
|
|
272
|
+
scrollDiv.style.height = '99px';
|
|
273
|
+
scrollDiv.style.position = 'absolute';
|
|
274
|
+
scrollDiv.style.overflow = 'scroll';
|
|
275
|
+
scrollDiv.className = 'scrollDiv';
|
|
276
|
+
rootElement.appendChild(scrollDiv);
|
|
277
|
+
const size = scrollDiv.offsetWidth - scrollDiv.clientWidth;
|
|
278
|
+
rootElement.removeChild(scrollDiv);
|
|
279
|
+
return size;
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
// Get rid of floating point imprecision errors
|
|
283
|
+
// https://github.com/mui/mui-x/issues/9550#issuecomment-1619020477
|
|
284
|
+
function roundToDecimalPlaces(value, decimals) {
|
|
285
|
+
return Math.round(value * 10 ** decimals) / 10 ** decimals;
|
|
218
286
|
}
|
|
@@ -14,7 +14,7 @@ import { buildWarning } from '../../../utils/warning';
|
|
|
14
14
|
import { gridRowsDataRowIdToIdLookupSelector } from '../rows/gridRowsSelector';
|
|
15
15
|
import { deepClone } from '../../../utils/utils';
|
|
16
16
|
import { GridCellEditStartReasons, GridCellEditStopReasons } from '../../../models/params/gridEditCellParams';
|
|
17
|
-
const missingOnProcessRowUpdateErrorWarning = buildWarning(['MUI: A call to `processRowUpdate` threw an error which was not handled because `onProcessRowUpdateError` is missing.', 'To handle the error pass a callback to the `onProcessRowUpdateError` prop, e.g. `<DataGrid onProcessRowUpdateError={(error) => ...} />`.', 'For more detail, see
|
|
17
|
+
const missingOnProcessRowUpdateErrorWarning = buildWarning(['MUI X: A call to `processRowUpdate` threw an error which was not handled because `onProcessRowUpdateError` is missing.', 'To handle the error pass a callback to the `onProcessRowUpdateError` prop, e.g. `<DataGrid onProcessRowUpdateError={(error) => ...} />`.', 'For more detail, see https://mui.com/x/react-data-grid/editing/#server-side-persistence.'], 'error');
|
|
18
18
|
export const useGridCellEditing = (apiRef, props) => {
|
|
19
19
|
const [cellModesModel, setCellModesModel] = React.useState({});
|
|
20
20
|
const cellModesModelRef = React.useRef(cellModesModel);
|
|
@@ -33,12 +33,12 @@ export const useGridCellEditing = (apiRef, props) => {
|
|
|
33
33
|
const throwIfNotEditable = React.useCallback((id, field) => {
|
|
34
34
|
const params = apiRef.current.getCellParams(id, field);
|
|
35
35
|
if (!apiRef.current.isCellEditable(params)) {
|
|
36
|
-
throw new Error(`MUI: The cell with id=${id} and field=${field} is not editable.`);
|
|
36
|
+
throw new Error(`MUI X: The cell with id=${id} and field=${field} is not editable.`);
|
|
37
37
|
}
|
|
38
38
|
}, [apiRef]);
|
|
39
39
|
const throwIfNotInMode = React.useCallback((id, field, mode) => {
|
|
40
40
|
if (apiRef.current.getCellMode(id, field) !== mode) {
|
|
41
|
-
throw new Error(`MUI: The cell with id=${id} and field=${field} is not in ${mode} mode.`);
|
|
41
|
+
throw new Error(`MUI X: The cell with id=${id} and field=${field} is not in ${mode} mode.`);
|
|
42
42
|
}
|
|
43
43
|
}, [apiRef]);
|
|
44
44
|
const handleCellDoubleClick = React.useCallback((params, event) => {
|
|
@@ -302,7 +302,7 @@ export const useGridCellEditing = (apiRef, props) => {
|
|
|
302
302
|
});
|
|
303
303
|
if (onProcessRowUpdateError) {
|
|
304
304
|
onProcessRowUpdateError(errorThrown);
|
|
305
|
-
} else {
|
|
305
|
+
} else if (process.env.NODE_ENV !== 'production') {
|
|
306
306
|
missingOnProcessRowUpdateErrorWarning();
|
|
307
307
|
}
|
|
308
308
|
};
|
|
@@ -16,7 +16,7 @@ import { gridRowsDataRowIdToIdLookupSelector } from '../rows/gridRowsSelector';
|
|
|
16
16
|
import { deepClone } from '../../../utils/utils';
|
|
17
17
|
import { GridRowEditStopReasons, GridRowEditStartReasons } from '../../../models/params/gridRowParams';
|
|
18
18
|
import { GRID_ACTIONS_COLUMN_TYPE } from '../../../colDef';
|
|
19
|
-
const missingOnProcessRowUpdateErrorWarning = buildWarning(['MUI: A call to `processRowUpdate` threw an error which was not handled because `onProcessRowUpdateError` is missing.', 'To handle the error pass a callback to the `onProcessRowUpdateError` prop, e.g. `<DataGrid onProcessRowUpdateError={(error) => ...} />`.', 'For more detail, see
|
|
19
|
+
const missingOnProcessRowUpdateErrorWarning = buildWarning(['MUI X: A call to `processRowUpdate` threw an error which was not handled because `onProcessRowUpdateError` is missing.', 'To handle the error pass a callback to the `onProcessRowUpdateError` prop, e.g. `<DataGrid onProcessRowUpdateError={(error) => ...} />`.', 'For more detail, see https://mui.com/x/react-data-grid/editing/#server-side-persistence.'], 'error');
|
|
20
20
|
export const useGridRowEditing = (apiRef, props) => {
|
|
21
21
|
const [rowModesModel, setRowModesModel] = React.useState({});
|
|
22
22
|
const rowModesModelRef = React.useRef(rowModesModel);
|
|
@@ -37,12 +37,12 @@ export const useGridRowEditing = (apiRef, props) => {
|
|
|
37
37
|
const throwIfNotEditable = React.useCallback((id, field) => {
|
|
38
38
|
const params = apiRef.current.getCellParams(id, field);
|
|
39
39
|
if (!apiRef.current.isCellEditable(params)) {
|
|
40
|
-
throw new Error(`MUI: The cell with id=${id} and field=${field} is not editable.`);
|
|
40
|
+
throw new Error(`MUI X: The cell with id=${id} and field=${field} is not editable.`);
|
|
41
41
|
}
|
|
42
42
|
}, [apiRef]);
|
|
43
43
|
const throwIfNotInMode = React.useCallback((id, mode) => {
|
|
44
44
|
if (apiRef.current.getRowMode(id) !== mode) {
|
|
45
|
-
throw new Error(`MUI: The row with id=${id} is not in ${mode} mode.`);
|
|
45
|
+
throw new Error(`MUI X: The row with id=${id} is not in ${mode} mode.`);
|
|
46
46
|
}
|
|
47
47
|
}, [apiRef]);
|
|
48
48
|
const handleCellDoubleClick = React.useCallback((params, event) => {
|
|
@@ -380,7 +380,7 @@ export const useGridRowEditing = (apiRef, props) => {
|
|
|
380
380
|
});
|
|
381
381
|
if (onProcessRowUpdateError) {
|
|
382
382
|
onProcessRowUpdateError(errorThrown);
|
|
383
|
-
} else {
|
|
383
|
+
} else if (process.env.NODE_ENV !== 'production') {
|
|
384
384
|
missingOnProcessRowUpdateErrorWarning();
|
|
385
385
|
}
|
|
386
386
|
};
|
|
@@ -34,7 +34,7 @@ export const serializeCellValue = (cellParams, options) => {
|
|
|
34
34
|
}
|
|
35
35
|
return sanitizeCellValue(value, delimiterCharacter);
|
|
36
36
|
};
|
|
37
|
-
const objectFormattedValueWarning = buildWarning(['MUI: When the value of a field is an object or a `renderCell` is provided, the CSV export might not display the value correctly.', 'You can provide a `valueFormatter` with a string representation to be used.']);
|
|
37
|
+
const objectFormattedValueWarning = buildWarning(['MUI X: When the value of a field is an object or a `renderCell` is provided, the CSV export might not display the value correctly.', 'You can provide a `valueFormatter` with a string representation to be used.']);
|
|
38
38
|
class CSVRow {
|
|
39
39
|
constructor(options) {
|
|
40
40
|
this.options = void 0;
|
|
@@ -106,10 +106,10 @@ export function buildCSV(options) {
|
|
|
106
106
|
const filteredColumns = columns.filter(column => column.field !== GRID_CHECKBOX_SELECTION_COL_DEF.field);
|
|
107
107
|
const headerRows = [];
|
|
108
108
|
if (includeColumnGroupsHeaders) {
|
|
109
|
-
const columnGroupLookup = apiRef.current.
|
|
109
|
+
const columnGroupLookup = apiRef.current.getAllGroupDetails();
|
|
110
110
|
let maxColumnGroupsDepth = 0;
|
|
111
111
|
const columnGroupPathsLookup = filteredColumns.reduce((acc, column) => {
|
|
112
|
-
const columnGroupPath = apiRef.current.
|
|
112
|
+
const columnGroupPath = apiRef.current.getColumnGroupPath(column.field);
|
|
113
113
|
acc[column.field] = columnGroupPath;
|
|
114
114
|
maxColumnGroupsDepth = Math.max(maxColumnGroupsDepth, columnGroupPath.length);
|
|
115
115
|
return acc;
|
|
@@ -211,7 +211,7 @@ export const useGridPrintExport = (apiRef, props) => {
|
|
|
211
211
|
var _options$getRowsToExp;
|
|
212
212
|
logger.debug(`Export data as Print`);
|
|
213
213
|
if (!apiRef.current.rootElementRef.current) {
|
|
214
|
-
throw new Error('MUI: No grid root element available.');
|
|
214
|
+
throw new Error('MUI X: No grid root element available.');
|
|
215
215
|
}
|
|
216
216
|
previousGridState.current = apiRef.current.exportState();
|
|
217
217
|
// It appends that the visibility model is not exported, especially if columnVisibility is not controlled
|
|
@@ -36,9 +36,9 @@ export const cleanFilterItem = (item, apiRef) => {
|
|
|
36
36
|
}
|
|
37
37
|
return cleanItem;
|
|
38
38
|
};
|
|
39
|
-
const filterModelDisableMultiColumnsFilteringWarning = buildWarning(['MUI: The `filterModel` can only contain a single item when the `disableMultipleColumnsFiltering` prop is set to `true`.', 'If you are using the community version of the `DataGrid`, this prop is always `true`.'], 'error');
|
|
40
|
-
const filterModelMissingItemIdWarning = buildWarning('MUI: The `id` field is required on `filterModel.items` when you use multiple filters.', 'error');
|
|
41
|
-
const filterModelMissingItemOperatorWarning = buildWarning('MUI: The `operator` field is required on `filterModel.items`, one or more of your filtering item has no `operator` provided.', 'error');
|
|
39
|
+
const filterModelDisableMultiColumnsFilteringWarning = buildWarning(['MUI X: The `filterModel` can only contain a single item when the `disableMultipleColumnsFiltering` prop is set to `true`.', 'If you are using the community version of the `DataGrid`, this prop is always `true`.'], 'error');
|
|
40
|
+
const filterModelMissingItemIdWarning = buildWarning('MUI X: The `id` field is required on `filterModel.items` when you use multiple filters.', 'error');
|
|
41
|
+
const filterModelMissingItemOperatorWarning = buildWarning('MUI X: The `operator` field is required on `filterModel.items`, one or more of your filtering item has no `operator` provided.', 'error');
|
|
42
42
|
export const sanitizeFilterModel = (model, disableMultipleColumnsFiltering, apiRef) => {
|
|
43
43
|
const hasSeveralItems = model.items.length > 1;
|
|
44
44
|
let items;
|
|
@@ -104,11 +104,11 @@ const getFilterCallbackFromItem = (filterItem, apiRef) => {
|
|
|
104
104
|
});
|
|
105
105
|
const filterOperators = column.filterOperators;
|
|
106
106
|
if (!(filterOperators != null && filterOperators.length)) {
|
|
107
|
-
throw new Error(`MUI: No filter operators found for column '${column.field}'.`);
|
|
107
|
+
throw new Error(`MUI X: No filter operators found for column '${column.field}'.`);
|
|
108
108
|
}
|
|
109
109
|
const filterOperator = filterOperators.find(operator => operator.value === newFilterItem.operator);
|
|
110
110
|
if (!filterOperator) {
|
|
111
|
-
throw new Error(`MUI: No filter operator found for column '${column.field}' and operator value '${newFilterItem.operator}'.`);
|
|
111
|
+
throw new Error(`MUI X: No filter operator found for column '${column.field}' and operator value '${newFilterItem.operator}'.`);
|
|
112
112
|
}
|
|
113
113
|
const publicApiRef = getPublicApiRef(apiRef);
|
|
114
114
|
const applyFilterOnRow = filterOperator.getApplyFilterFn(newFilterItem, column);
|
|
@@ -6,7 +6,7 @@ import { useLazyRef } from '../../utils/useLazyRef';
|
|
|
6
6
|
import { useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
|
|
7
7
|
import { useGridApiMethod } from '../../utils/useGridApiMethod';
|
|
8
8
|
import { useGridLogger } from '../../utils/useGridLogger';
|
|
9
|
-
import {
|
|
9
|
+
import { gridColumnLookupSelector } from '../columns/gridColumnsSelector';
|
|
10
10
|
import { GridPreferencePanelsValue } from '../preferencesPanel/gridPreferencePanelsValue';
|
|
11
11
|
import { getDefaultGridFilterModel } from './gridFilterState';
|
|
12
12
|
import { gridFilterModelSelector } from './gridFilterSelector';
|
|
@@ -315,8 +315,8 @@ export const useGridFilter = (apiRef, props) => {
|
|
|
315
315
|
const handleColumnsChange = React.useCallback(() => {
|
|
316
316
|
logger.debug('onColUpdated - GridColumns changed, applying filters');
|
|
317
317
|
const filterModel = gridFilterModelSelector(apiRef);
|
|
318
|
-
const
|
|
319
|
-
const newFilterItems = filterModel.items.filter(item => item.field &&
|
|
318
|
+
const columnsLookup = gridColumnLookupSelector(apiRef);
|
|
319
|
+
const newFilterItems = filterModel.items.filter(item => item.field && columnsLookup[item.field]);
|
|
320
320
|
if (newFilterItems.length < filterModel.items.length) {
|
|
321
321
|
apiRef.current.setFilterModel(_extends({}, filterModel, {
|
|
322
322
|
items: newFilterItems
|
|
@@ -4,9 +4,9 @@ export declare const gridFocusStateSelector: (state: GridStateCommunity) => Grid
|
|
|
4
4
|
export declare const gridFocusCellSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, import("../../..").GridCellCoordinates | null>;
|
|
5
5
|
export declare const gridFocusColumnHeaderSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, import("./gridFocusState").GridColumnIdentifier | null>;
|
|
6
6
|
export declare const gridFocusColumnHeaderFilterSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, import("./gridFocusState").GridColumnIdentifier | null>;
|
|
7
|
-
export declare const
|
|
7
|
+
export declare const gridFocusColumnGroupHeaderSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, import("./gridFocusState").GridColumnGroupIdentifier | null>;
|
|
8
8
|
export declare const gridTabIndexStateSelector: (state: GridStateCommunity) => GridTabIndexState;
|
|
9
9
|
export declare const gridTabIndexCellSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, import("../../..").GridCellCoordinates | null>;
|
|
10
10
|
export declare const gridTabIndexColumnHeaderSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, import("./gridFocusState").GridColumnIdentifier | null>;
|
|
11
11
|
export declare const gridTabIndexColumnHeaderFilterSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, import("./gridFocusState").GridColumnIdentifier | null>;
|
|
12
|
-
export declare const
|
|
12
|
+
export declare const gridTabIndexColumnGroupHeaderSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, import("./gridFocusState").GridColumnGroupIdentifier | null>;
|
|
@@ -3,13 +3,9 @@ export const gridFocusStateSelector = state => state.focus;
|
|
|
3
3
|
export const gridFocusCellSelector = createSelector(gridFocusStateSelector, focusState => focusState.cell);
|
|
4
4
|
export const gridFocusColumnHeaderSelector = createSelector(gridFocusStateSelector, focusState => focusState.columnHeader);
|
|
5
5
|
export const gridFocusColumnHeaderFilterSelector = createSelector(gridFocusStateSelector, focusState => focusState.columnHeaderFilter);
|
|
6
|
-
|
|
7
|
-
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
8
|
-
export const unstable_gridFocusColumnGroupHeaderSelector = createSelector(gridFocusStateSelector, focusState => focusState.columnGroupHeader);
|
|
6
|
+
export const gridFocusColumnGroupHeaderSelector = createSelector(gridFocusStateSelector, focusState => focusState.columnGroupHeader);
|
|
9
7
|
export const gridTabIndexStateSelector = state => state.tabIndex;
|
|
10
8
|
export const gridTabIndexCellSelector = createSelector(gridTabIndexStateSelector, state => state.cell);
|
|
11
9
|
export const gridTabIndexColumnHeaderSelector = createSelector(gridTabIndexStateSelector, state => state.columnHeader);
|
|
12
10
|
export const gridTabIndexColumnHeaderFilterSelector = createSelector(gridTabIndexStateSelector, state => state.columnHeaderFilter);
|
|
13
|
-
|
|
14
|
-
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
15
|
-
export const unstable_gridTabIndexColumnGroupHeaderSelector = createSelector(gridTabIndexStateSelector, state => state.columnGroupHeader);
|
|
11
|
+
export const gridTabIndexColumnGroupHeaderSelector = createSelector(gridTabIndexStateSelector, state => state.columnGroupHeader);
|
|
@@ -6,7 +6,7 @@ import { useGridApiMethod } from '../../utils/useGridApiMethod';
|
|
|
6
6
|
import { useGridLogger } from '../../utils/useGridLogger';
|
|
7
7
|
import { useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
|
|
8
8
|
import { isNavigationKey } from '../../../utils/keyboardUtils';
|
|
9
|
-
import { gridFocusCellSelector,
|
|
9
|
+
import { gridFocusCellSelector, gridFocusColumnGroupHeaderSelector } from './gridFocusStateSelector';
|
|
10
10
|
import { gridVisibleColumnDefinitionsSelector } from '../columns/gridColumnsSelector';
|
|
11
11
|
import { getVisibleRows } from '../../utils/useGridVisibleRows';
|
|
12
12
|
import { clamp } from '../../../utils/utils';
|
|
@@ -164,7 +164,7 @@ export const useGridFocus = (apiRef, props) => {
|
|
|
164
164
|
});
|
|
165
165
|
apiRef.current.forceUpdate();
|
|
166
166
|
}, [apiRef]);
|
|
167
|
-
const getColumnGroupHeaderFocus = React.useCallback(() =>
|
|
167
|
+
const getColumnGroupHeaderFocus = React.useCallback(() => gridFocusColumnGroupHeaderSelector(apiRef), [apiRef]);
|
|
168
168
|
const moveFocusToRelativeCell = React.useCallback((id, field, direction) => {
|
|
169
169
|
let columnIndexToFocus = apiRef.current.getColumnIndex(field);
|
|
170
170
|
const visibleColumns = gridVisibleColumnDefinitionsSelector(apiRef);
|
|
@@ -244,7 +244,7 @@ export const useGridFocus = (apiRef, props) => {
|
|
|
244
244
|
if (event.target !== event.currentTarget) {
|
|
245
245
|
return;
|
|
246
246
|
}
|
|
247
|
-
const focusedColumnGroup =
|
|
247
|
+
const focusedColumnGroup = gridFocusColumnGroupHeaderSelector(apiRef);
|
|
248
248
|
if (focusedColumnGroup !== null && focusedColumnGroup.depth === depth && fields.includes(focusedColumnGroup.field)) {
|
|
249
249
|
// This group cell has already been focused
|
|
250
250
|
return;
|