@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,16 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
3
4
|
Object.defineProperty(exports, "__esModule", {
|
|
4
5
|
value: true
|
|
5
6
|
});
|
|
7
|
+
exports.dimensionsStateInitializer = void 0;
|
|
6
8
|
exports.useGridDimensions = useGridDimensions;
|
|
9
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
7
10
|
var React = _interopRequireWildcard(require("react"));
|
|
8
11
|
var _utils = require("@mui/utils");
|
|
9
12
|
var _useGridApiEventHandler = require("../../utils/useGridApiEventHandler");
|
|
10
13
|
var _useGridApiMethod = require("../../utils/useGridApiMethod");
|
|
11
14
|
var _useGridLogger = require("../../utils/useGridLogger");
|
|
12
15
|
var _columns = require("../columns");
|
|
16
|
+
var _gridDimensionsSelectors = require("./gridDimensionsSelectors");
|
|
13
17
|
var _density = require("../density");
|
|
18
|
+
var _virtualization = require("../virtualization");
|
|
14
19
|
var _utils2 = require("../../utils");
|
|
15
20
|
var _useGridVisibleRows = require("../../utils/useGridVisibleRows");
|
|
16
21
|
var _gridRowsMetaSelector = require("../rows/gridRowsMetaSelector");
|
|
@@ -18,127 +23,83 @@ var _gridRowsUtils = require("../rows/gridRowsUtils");
|
|
|
18
23
|
var _gridColumnsUtils = require("../columns/gridColumnsUtils");
|
|
19
24
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
20
25
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
container,
|
|
25
|
-
scrollBarSize
|
|
26
|
-
}) => {
|
|
27
|
-
const hasScrollXIfNoYScrollBar = content.width > container.width;
|
|
28
|
-
const hasScrollYIfNoXScrollBar = content.height > container.height;
|
|
29
|
-
let hasScrollX = false;
|
|
30
|
-
let hasScrollY = false;
|
|
31
|
-
if (hasScrollXIfNoYScrollBar || hasScrollYIfNoXScrollBar) {
|
|
32
|
-
hasScrollX = hasScrollXIfNoYScrollBar;
|
|
33
|
-
hasScrollY = content.height + (hasScrollX ? scrollBarSize : 0) > container.height;
|
|
34
|
-
|
|
35
|
-
// We recalculate the scroll x to consider the size of the y scrollbar.
|
|
36
|
-
if (hasScrollY) {
|
|
37
|
-
hasScrollX = content.width + scrollBarSize > container.width;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
return {
|
|
41
|
-
hasScrollX,
|
|
42
|
-
hasScrollY
|
|
43
|
-
};
|
|
26
|
+
const EMPTY_SIZE = {
|
|
27
|
+
width: 0,
|
|
28
|
+
height: 0
|
|
44
29
|
};
|
|
30
|
+
const EMPTY_DIMENSIONS = {
|
|
31
|
+
isReady: false,
|
|
32
|
+
root: EMPTY_SIZE,
|
|
33
|
+
viewportOuterSize: EMPTY_SIZE,
|
|
34
|
+
viewportInnerSize: EMPTY_SIZE,
|
|
35
|
+
contentSize: EMPTY_SIZE,
|
|
36
|
+
minimumSize: EMPTY_SIZE,
|
|
37
|
+
hasScrollX: false,
|
|
38
|
+
hasScrollY: false,
|
|
39
|
+
scrollbarSize: 0,
|
|
40
|
+
headerHeight: 0,
|
|
41
|
+
rowWidth: 0,
|
|
42
|
+
rowHeight: 0,
|
|
43
|
+
columnsTotalWidth: 0,
|
|
44
|
+
leftPinnedWidth: 0,
|
|
45
|
+
rightPinnedWidth: 0,
|
|
46
|
+
headersTotalHeight: 0,
|
|
47
|
+
topContainerHeight: 0,
|
|
48
|
+
bottomContainerHeight: 0
|
|
49
|
+
};
|
|
50
|
+
const dimensionsStateInitializer = state => {
|
|
51
|
+
const dimensions = EMPTY_DIMENSIONS;
|
|
52
|
+
return (0, _extends2.default)({}, state, {
|
|
53
|
+
dimensions
|
|
54
|
+
});
|
|
55
|
+
};
|
|
56
|
+
exports.dimensionsStateInitializer = dimensionsStateInitializer;
|
|
45
57
|
function useGridDimensions(apiRef, props) {
|
|
46
58
|
const logger = (0, _useGridLogger.useGridLogger)(apiRef, 'useResizeContainer');
|
|
47
59
|
const errorShown = React.useRef(false);
|
|
48
|
-
const rootDimensionsRef = React.useRef(
|
|
49
|
-
const fullDimensionsRef = React.useRef(null);
|
|
60
|
+
const rootDimensionsRef = React.useRef(EMPTY_SIZE);
|
|
50
61
|
const rowsMeta = (0, _utils2.useGridSelector)(apiRef, _gridRowsMetaSelector.gridRowsMetaSelector);
|
|
62
|
+
const pinnedColumns = (0, _utils2.useGridSelector)(apiRef, _columns.gridVisiblePinnedColumnDefinitionsSelector);
|
|
51
63
|
const densityFactor = (0, _utils2.useGridSelector)(apiRef, _density.gridDensityFactorSelector);
|
|
52
64
|
const rowHeight = Math.floor(props.rowHeight * densityFactor);
|
|
53
|
-
const
|
|
54
|
-
const
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
}
|
|
61
|
-
let scrollBarSize;
|
|
62
|
-
if (props.scrollbarSize != null) {
|
|
63
|
-
scrollBarSize = props.scrollbarSize;
|
|
64
|
-
} else if (!columnsTotalWidth || !rootElement) {
|
|
65
|
-
scrollBarSize = 0;
|
|
66
|
-
} else {
|
|
67
|
-
const doc = (0, _utils.unstable_ownerDocument)(rootElement);
|
|
68
|
-
const scrollDiv = doc.createElement('div');
|
|
69
|
-
scrollDiv.style.width = '99px';
|
|
70
|
-
scrollDiv.style.height = '99px';
|
|
71
|
-
scrollDiv.style.position = 'absolute';
|
|
72
|
-
scrollDiv.style.overflow = 'scroll';
|
|
73
|
-
scrollDiv.className = 'scrollDiv';
|
|
74
|
-
rootElement.appendChild(scrollDiv);
|
|
75
|
-
scrollBarSize = scrollDiv.offsetWidth - scrollDiv.clientWidth;
|
|
76
|
-
rootElement.removeChild(scrollDiv);
|
|
77
|
-
}
|
|
78
|
-
let viewportOuterSize;
|
|
79
|
-
let hasScrollX;
|
|
80
|
-
let hasScrollY;
|
|
81
|
-
if (props.autoHeight) {
|
|
82
|
-
hasScrollY = false;
|
|
83
|
-
hasScrollX = Math.round(columnsTotalWidth) > Math.round(rootDimensionsRef.current.width);
|
|
84
|
-
viewportOuterSize = {
|
|
85
|
-
width: rootDimensionsRef.current.width,
|
|
86
|
-
height: rowsMeta.currentPageTotalHeight + (hasScrollX ? scrollBarSize : 0)
|
|
87
|
-
};
|
|
88
|
-
} else {
|
|
89
|
-
viewportOuterSize = {
|
|
90
|
-
width: rootDimensionsRef.current.width,
|
|
91
|
-
height: Math.max(rootDimensionsRef.current.height - totalHeaderHeight, 0)
|
|
92
|
-
};
|
|
93
|
-
const scrollInformation = hasScroll({
|
|
94
|
-
content: {
|
|
95
|
-
width: Math.round(columnsTotalWidth),
|
|
96
|
-
height: rowsMeta.currentPageTotalHeight
|
|
97
|
-
},
|
|
98
|
-
container: {
|
|
99
|
-
width: Math.round(viewportOuterSize.width),
|
|
100
|
-
height: viewportOuterSize.height - pinnedRowsHeight.top - pinnedRowsHeight.bottom
|
|
101
|
-
},
|
|
102
|
-
scrollBarSize
|
|
103
|
-
});
|
|
104
|
-
hasScrollY = scrollInformation.hasScrollY;
|
|
105
|
-
hasScrollX = scrollInformation.hasScrollX;
|
|
106
|
-
}
|
|
107
|
-
const viewportInnerSize = {
|
|
108
|
-
width: viewportOuterSize.width - (hasScrollY ? scrollBarSize : 0),
|
|
109
|
-
height: viewportOuterSize.height - (hasScrollX ? scrollBarSize : 0)
|
|
110
|
-
};
|
|
111
|
-
const newFullDimensions = {
|
|
112
|
-
viewportOuterSize,
|
|
113
|
-
viewportInnerSize,
|
|
114
|
-
hasScrollX,
|
|
115
|
-
hasScrollY,
|
|
116
|
-
scrollBarSize
|
|
117
|
-
};
|
|
118
|
-
const prevDimensions = fullDimensionsRef.current;
|
|
119
|
-
fullDimensionsRef.current = newFullDimensions;
|
|
120
|
-
if (newFullDimensions.viewportInnerSize.width !== prevDimensions?.viewportInnerSize.width || newFullDimensions.viewportInnerSize.height !== prevDimensions?.viewportInnerSize.height) {
|
|
121
|
-
apiRef.current.publishEvent('viewportInnerSizeChange', newFullDimensions.viewportInnerSize);
|
|
122
|
-
}
|
|
123
|
-
}, [apiRef, props.scrollbarSize, props.autoHeight, rowsMeta.currentPageTotalHeight, totalHeaderHeight]);
|
|
65
|
+
const headerHeight = Math.floor(props.columnHeaderHeight * densityFactor);
|
|
66
|
+
const columnsTotalWidth = roundToDecimalPlaces((0, _columns.gridColumnsTotalWidthSelector)(apiRef), 6);
|
|
67
|
+
// XXX: The `props as any` below is not resilient to change.
|
|
68
|
+
const hasHeaderFilters = Boolean(props.headerFilters);
|
|
69
|
+
const headersTotalHeight = (0, _gridColumnsUtils.getTotalHeaderHeight)(apiRef, props.columnHeaderHeight) + Number(hasHeaderFilters) * headerHeight;
|
|
70
|
+
const leftPinnedWidth = pinnedColumns.left.reduce((w, col) => w + col.computedWidth, 0);
|
|
71
|
+
const rightPinnedWidth = pinnedColumns.right.reduce((w, col) => w + col.computedWidth, 0);
|
|
124
72
|
const [savedSize, setSavedSize] = React.useState();
|
|
125
73
|
const debouncedSetSavedSize = React.useMemo(() => (0, _utils.unstable_debounce)(setSavedSize, 60), []);
|
|
126
74
|
const previousSize = React.useRef();
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
// This is the function called by apiRef.current.resize()
|
|
75
|
+
const getRootDimensions = () => apiRef.current.state.dimensions;
|
|
76
|
+
const setDimensions = (0, _utils.unstable_useEventCallback)(dimensions => {
|
|
77
|
+
apiRef.current.setState(state => (0, _extends2.default)({}, state, {
|
|
78
|
+
dimensions
|
|
79
|
+
}));
|
|
80
|
+
});
|
|
135
81
|
const resize = React.useCallback(() => {
|
|
136
|
-
apiRef.current.
|
|
82
|
+
const element = apiRef.current.mainElementRef.current;
|
|
83
|
+
if (!element) {
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
const computedStyle = (0, _utils.unstable_ownerWindow)(element).getComputedStyle(element);
|
|
87
|
+
const height = parseFloat(computedStyle.height) || 0;
|
|
88
|
+
const width = parseFloat(computedStyle.width) || 0;
|
|
89
|
+
const hasHeightChanged = height !== previousSize.current?.height;
|
|
90
|
+
const hasWidthChanged = width !== previousSize.current?.width;
|
|
91
|
+
if (!previousSize.current || hasHeightChanged || hasWidthChanged) {
|
|
92
|
+
const size = {
|
|
93
|
+
width,
|
|
94
|
+
height
|
|
95
|
+
};
|
|
96
|
+
apiRef.current.publishEvent('resize', size);
|
|
97
|
+
previousSize.current = size;
|
|
98
|
+
}
|
|
137
99
|
}, [apiRef]);
|
|
138
|
-
const getRootDimensions = React.useCallback(() => fullDimensionsRef.current, []);
|
|
139
100
|
const getViewportPageSize = React.useCallback(() => {
|
|
140
|
-
const dimensions = apiRef.current.
|
|
141
|
-
if (!dimensions) {
|
|
101
|
+
const dimensions = (0, _gridDimensionsSelectors.gridDimensionsSelector)(apiRef.current.state);
|
|
102
|
+
if (!dimensions.isReady) {
|
|
142
103
|
return 0;
|
|
143
104
|
}
|
|
144
105
|
const currentPage = (0, _useGridVisibleRows.getVisibleRows)(apiRef, {
|
|
@@ -149,44 +110,135 @@ function useGridDimensions(apiRef, props) {
|
|
|
149
110
|
// TODO: Use a combination of scrollTop, dimensions.viewportInnerSize.height and rowsMeta.possitions
|
|
150
111
|
// to find out the maximum number of rows that can fit in the visible part of the grid
|
|
151
112
|
if (props.getRowHeight) {
|
|
152
|
-
const renderContext =
|
|
113
|
+
const renderContext = (0, _virtualization.gridRenderContextSelector)(apiRef);
|
|
153
114
|
const viewportPageSize = renderContext.lastRowIndex - renderContext.firstRowIndex;
|
|
154
115
|
return Math.min(viewportPageSize - 1, currentPage.rows.length);
|
|
155
116
|
}
|
|
156
117
|
const maximumPageSizeWithoutScrollBar = Math.floor(dimensions.viewportInnerSize.height / rowHeight);
|
|
157
118
|
return Math.min(maximumPageSizeWithoutScrollBar, currentPage.rows.length);
|
|
158
119
|
}, [apiRef, props.pagination, props.paginationMode, props.getRowHeight, rowHeight]);
|
|
159
|
-
const
|
|
160
|
-
const
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
const
|
|
165
|
-
const
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
120
|
+
const updateDimensions = React.useCallback(() => {
|
|
121
|
+
const rootElement = apiRef.current.rootElementRef.current;
|
|
122
|
+
const pinnedRowsHeight = (0, _gridRowsUtils.calculatePinnedRowsHeight)(apiRef);
|
|
123
|
+
const scrollbarSize = measureScrollbarSize(rootElement, columnsTotalWidth, props.scrollbarSize);
|
|
124
|
+
const topContainerHeight = headersTotalHeight + pinnedRowsHeight.top;
|
|
125
|
+
const bottomContainerHeight = pinnedRowsHeight.bottom;
|
|
126
|
+
const contentSize = {
|
|
127
|
+
width: columnsTotalWidth,
|
|
128
|
+
height: rowsMeta.currentPageTotalHeight
|
|
129
|
+
};
|
|
130
|
+
let viewportOuterSize;
|
|
131
|
+
let viewportInnerSize;
|
|
132
|
+
let hasScrollX = false;
|
|
133
|
+
let hasScrollY = false;
|
|
134
|
+
if (props.autoHeight) {
|
|
135
|
+
hasScrollY = false;
|
|
136
|
+
hasScrollX = Math.round(columnsTotalWidth) > Math.round(rootDimensionsRef.current.width);
|
|
137
|
+
viewportOuterSize = {
|
|
138
|
+
width: rootDimensionsRef.current.width,
|
|
139
|
+
height: topContainerHeight + bottomContainerHeight + contentSize.height
|
|
174
140
|
};
|
|
175
|
-
|
|
176
|
-
|
|
141
|
+
viewportInnerSize = {
|
|
142
|
+
width: Math.max(0, viewportOuterSize.width - (hasScrollY ? scrollbarSize : 0)),
|
|
143
|
+
height: Math.max(0, viewportOuterSize.height - (hasScrollX ? scrollbarSize : 0))
|
|
144
|
+
};
|
|
145
|
+
} else {
|
|
146
|
+
viewportOuterSize = {
|
|
147
|
+
width: rootDimensionsRef.current.width,
|
|
148
|
+
height: rootDimensionsRef.current.height
|
|
149
|
+
};
|
|
150
|
+
viewportInnerSize = {
|
|
151
|
+
width: Math.max(0, viewportOuterSize.width - leftPinnedWidth - rightPinnedWidth),
|
|
152
|
+
height: Math.max(0, viewportOuterSize.height - topContainerHeight - bottomContainerHeight)
|
|
153
|
+
};
|
|
154
|
+
const content = contentSize;
|
|
155
|
+
const container = viewportInnerSize;
|
|
156
|
+
const hasScrollXIfNoYScrollBar = content.width > container.width;
|
|
157
|
+
const hasScrollYIfNoXScrollBar = content.height > container.height;
|
|
158
|
+
if (hasScrollXIfNoYScrollBar || hasScrollYIfNoXScrollBar) {
|
|
159
|
+
hasScrollY = hasScrollYIfNoXScrollBar;
|
|
160
|
+
hasScrollX = content.width + (hasScrollY ? scrollbarSize : 0) > container.width;
|
|
161
|
+
|
|
162
|
+
// We recalculate the scroll y to consider the size of the x scrollbar.
|
|
163
|
+
if (hasScrollX) {
|
|
164
|
+
hasScrollY = content.height + scrollbarSize > container.height;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
if (hasScrollY) {
|
|
168
|
+
viewportInnerSize.width -= scrollbarSize;
|
|
169
|
+
}
|
|
170
|
+
if (hasScrollX) {
|
|
171
|
+
viewportInnerSize.height -= scrollbarSize;
|
|
172
|
+
}
|
|
177
173
|
}
|
|
178
|
-
|
|
179
|
-
|
|
174
|
+
const rowWidth = Math.max(viewportOuterSize.width, columnsTotalWidth + (hasScrollY ? scrollbarSize : 0));
|
|
175
|
+
const minimumSize = {
|
|
176
|
+
width: contentSize.width,
|
|
177
|
+
height: topContainerHeight + contentSize.height + bottomContainerHeight
|
|
178
|
+
};
|
|
179
|
+
const newDimensions = {
|
|
180
|
+
isReady: true,
|
|
181
|
+
root: rootDimensionsRef.current,
|
|
182
|
+
viewportOuterSize,
|
|
183
|
+
viewportInnerSize,
|
|
184
|
+
contentSize,
|
|
185
|
+
minimumSize,
|
|
186
|
+
hasScrollX,
|
|
187
|
+
hasScrollY,
|
|
188
|
+
scrollbarSize,
|
|
189
|
+
headerHeight,
|
|
190
|
+
rowWidth,
|
|
191
|
+
rowHeight,
|
|
192
|
+
columnsTotalWidth,
|
|
193
|
+
leftPinnedWidth,
|
|
194
|
+
rightPinnedWidth,
|
|
195
|
+
headersTotalHeight,
|
|
196
|
+
topContainerHeight,
|
|
197
|
+
bottomContainerHeight
|
|
198
|
+
};
|
|
199
|
+
const prevDimensions = apiRef.current.state.dimensions;
|
|
200
|
+
setDimensions(newDimensions);
|
|
201
|
+
if (newDimensions.viewportInnerSize.width !== prevDimensions.viewportInnerSize.width || newDimensions.viewportInnerSize.height !== prevDimensions.viewportInnerSize.height) {
|
|
202
|
+
apiRef.current.publishEvent('viewportInnerSizeChange', newDimensions.viewportInnerSize);
|
|
203
|
+
}
|
|
204
|
+
apiRef.current.updateRenderContext?.();
|
|
205
|
+
}, [apiRef, setDimensions, props.scrollbarSize, props.autoHeight, rowsMeta.currentPageTotalHeight, rowHeight, headerHeight, columnsTotalWidth, headersTotalHeight, leftPinnedWidth, rightPinnedWidth]);
|
|
206
|
+
const apiPublic = {
|
|
180
207
|
resize,
|
|
181
208
|
getRootDimensions
|
|
182
209
|
};
|
|
183
|
-
const
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
computeSizeAndPublishResizeEvent
|
|
210
|
+
const apiPrivate = {
|
|
211
|
+
updateDimensions,
|
|
212
|
+
getViewportPageSize
|
|
187
213
|
};
|
|
188
|
-
(0, _useGridApiMethod.useGridApiMethod)(apiRef,
|
|
189
|
-
(0, _useGridApiMethod.useGridApiMethod)(apiRef,
|
|
214
|
+
(0, _useGridApiMethod.useGridApiMethod)(apiRef, apiPublic, 'public');
|
|
215
|
+
(0, _useGridApiMethod.useGridApiMethod)(apiRef, apiPrivate, 'private');
|
|
216
|
+
(0, _utils.unstable_useEnhancedEffect)(() => {
|
|
217
|
+
if (savedSize) {
|
|
218
|
+
updateDimensions();
|
|
219
|
+
apiRef.current.publishEvent('debouncedResize', rootDimensionsRef.current);
|
|
220
|
+
}
|
|
221
|
+
}, [apiRef, savedSize, updateDimensions]);
|
|
222
|
+
const root = apiRef.current.rootElementRef.current;
|
|
223
|
+
const dimensions = apiRef.current.state.dimensions;
|
|
224
|
+
(0, _utils.unstable_useEnhancedEffect)(() => {
|
|
225
|
+
if (!root) {
|
|
226
|
+
return;
|
|
227
|
+
}
|
|
228
|
+
const set = (k, v) => root.style.setProperty(k, v);
|
|
229
|
+
set('--DataGrid-width', `${dimensions.viewportOuterSize.width}px`);
|
|
230
|
+
set('--DataGrid-hasScrollX', `${Number(dimensions.hasScrollX)}`);
|
|
231
|
+
set('--DataGrid-hasScrollY', `${Number(dimensions.hasScrollY)}`);
|
|
232
|
+
set('--DataGrid-scrollbarSize', `${dimensions.scrollbarSize}px`);
|
|
233
|
+
set('--DataGrid-rowWidth', `${dimensions.rowWidth}px`);
|
|
234
|
+
set('--DataGrid-columnsTotalWidth', `${dimensions.columnsTotalWidth}px`);
|
|
235
|
+
set('--DataGrid-leftPinnedWidth', `${dimensions.leftPinnedWidth}px`);
|
|
236
|
+
set('--DataGrid-rightPinnedWidth', `${dimensions.rightPinnedWidth}px`);
|
|
237
|
+
set('--DataGrid-headerHeight', `${dimensions.headerHeight}px`);
|
|
238
|
+
set('--DataGrid-headersTotalHeight', `${dimensions.headersTotalHeight}px`);
|
|
239
|
+
set('--DataGrid-topContainerHeight', `${dimensions.topContainerHeight}px`);
|
|
240
|
+
set('--DataGrid-bottomContainerHeight', `${dimensions.bottomContainerHeight}px`);
|
|
241
|
+
}, [root, dimensions]);
|
|
190
242
|
const isFirstSizing = React.useRef(true);
|
|
191
243
|
const handleResize = React.useCallback(size => {
|
|
192
244
|
rootDimensionsRef.current = size;
|
|
@@ -201,12 +253,6 @@ function useGridDimensions(apiRef, props) {
|
|
|
201
253
|
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'));
|
|
202
254
|
errorShown.current = true;
|
|
203
255
|
}
|
|
204
|
-
if (isTestEnvironment) {
|
|
205
|
-
// We don't need to debounce the resize for tests.
|
|
206
|
-
setSavedSize(size);
|
|
207
|
-
isFirstSizing.current = false;
|
|
208
|
-
return;
|
|
209
|
-
}
|
|
210
256
|
if (isFirstSizing.current) {
|
|
211
257
|
// We want to initialize the grid dimensions as soon as possible to avoid flickering
|
|
212
258
|
setSavedSize(size);
|
|
@@ -215,10 +261,35 @@ function useGridDimensions(apiRef, props) {
|
|
|
215
261
|
}
|
|
216
262
|
debouncedSetSavedSize(size);
|
|
217
263
|
}, [props.autoHeight, debouncedSetSavedSize, logger]);
|
|
218
|
-
(0, _utils.unstable_useEnhancedEffect)(
|
|
219
|
-
(0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, 'sortedRowsSet',
|
|
220
|
-
(0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, 'paginationModelChange',
|
|
221
|
-
(0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, 'columnsChange',
|
|
264
|
+
(0, _utils.unstable_useEnhancedEffect)(updateDimensions, [updateDimensions]);
|
|
265
|
+
(0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, 'sortedRowsSet', updateDimensions);
|
|
266
|
+
(0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, 'paginationModelChange', updateDimensions);
|
|
267
|
+
(0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, 'columnsChange', updateDimensions);
|
|
222
268
|
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'resize', handleResize);
|
|
223
269
|
(0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, 'debouncedResize', props.onResize);
|
|
270
|
+
}
|
|
271
|
+
function measureScrollbarSize(rootElement, columnsTotalWidth, scrollbarSize) {
|
|
272
|
+
if (scrollbarSize !== undefined) {
|
|
273
|
+
return scrollbarSize;
|
|
274
|
+
}
|
|
275
|
+
if (rootElement === null || columnsTotalWidth === 0) {
|
|
276
|
+
return 0;
|
|
277
|
+
}
|
|
278
|
+
const doc = (0, _utils.unstable_ownerDocument)(rootElement);
|
|
279
|
+
const scrollDiv = doc.createElement('div');
|
|
280
|
+
scrollDiv.style.width = '99px';
|
|
281
|
+
scrollDiv.style.height = '99px';
|
|
282
|
+
scrollDiv.style.position = 'absolute';
|
|
283
|
+
scrollDiv.style.overflow = 'scroll';
|
|
284
|
+
scrollDiv.className = 'scrollDiv';
|
|
285
|
+
rootElement.appendChild(scrollDiv);
|
|
286
|
+
const size = scrollDiv.offsetWidth - scrollDiv.clientWidth;
|
|
287
|
+
rootElement.removeChild(scrollDiv);
|
|
288
|
+
return size;
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
// Get rid of floating point imprecision errors
|
|
292
|
+
// https://github.com/mui/mui-x/issues/9550#issuecomment-1619020477
|
|
293
|
+
function roundToDecimalPlaces(value, decimals) {
|
|
294
|
+
return Math.round(value * 10 ** decimals) / 10 ** decimals;
|
|
224
295
|
}
|
|
@@ -23,7 +23,7 @@ const _excluded = ["id", "field"],
|
|
|
23
23
|
_excluded2 = ["id", "field"];
|
|
24
24
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
25
25
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
26
|
-
const missingOnProcessRowUpdateErrorWarning = (0, _warning.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
|
|
26
|
+
const missingOnProcessRowUpdateErrorWarning = (0, _warning.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');
|
|
27
27
|
const useGridCellEditing = (apiRef, props) => {
|
|
28
28
|
const [cellModesModel, setCellModesModel] = React.useState({});
|
|
29
29
|
const cellModesModelRef = React.useRef(cellModesModel);
|
|
@@ -42,12 +42,12 @@ const useGridCellEditing = (apiRef, props) => {
|
|
|
42
42
|
const throwIfNotEditable = React.useCallback((id, field) => {
|
|
43
43
|
const params = apiRef.current.getCellParams(id, field);
|
|
44
44
|
if (!apiRef.current.isCellEditable(params)) {
|
|
45
|
-
throw new Error(`MUI: The cell with id=${id} and field=${field} is not editable.`);
|
|
45
|
+
throw new Error(`MUI X: The cell with id=${id} and field=${field} is not editable.`);
|
|
46
46
|
}
|
|
47
47
|
}, [apiRef]);
|
|
48
48
|
const throwIfNotInMode = React.useCallback((id, field, mode) => {
|
|
49
49
|
if (apiRef.current.getCellMode(id, field) !== mode) {
|
|
50
|
-
throw new Error(`MUI: The cell with id=${id} and field=${field} is not in ${mode} mode.`);
|
|
50
|
+
throw new Error(`MUI X: The cell with id=${id} and field=${field} is not in ${mode} mode.`);
|
|
51
51
|
}
|
|
52
52
|
}, [apiRef]);
|
|
53
53
|
const handleCellDoubleClick = React.useCallback((params, event) => {
|
|
@@ -311,7 +311,7 @@ const useGridCellEditing = (apiRef, props) => {
|
|
|
311
311
|
});
|
|
312
312
|
if (onProcessRowUpdateError) {
|
|
313
313
|
onProcessRowUpdateError(errorThrown);
|
|
314
|
-
} else {
|
|
314
|
+
} else if (process.env.NODE_ENV !== 'production') {
|
|
315
315
|
missingOnProcessRowUpdateErrorWarning();
|
|
316
316
|
}
|
|
317
317
|
};
|
|
@@ -25,7 +25,7 @@ const _excluded = ["id"],
|
|
|
25
25
|
_excluded2 = ["id"];
|
|
26
26
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
27
27
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
28
|
-
const missingOnProcessRowUpdateErrorWarning = (0, _warning.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
|
|
28
|
+
const missingOnProcessRowUpdateErrorWarning = (0, _warning.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');
|
|
29
29
|
const useGridRowEditing = (apiRef, props) => {
|
|
30
30
|
const [rowModesModel, setRowModesModel] = React.useState({});
|
|
31
31
|
const rowModesModelRef = React.useRef(rowModesModel);
|
|
@@ -46,12 +46,12 @@ const useGridRowEditing = (apiRef, props) => {
|
|
|
46
46
|
const throwIfNotEditable = React.useCallback((id, field) => {
|
|
47
47
|
const params = apiRef.current.getCellParams(id, field);
|
|
48
48
|
if (!apiRef.current.isCellEditable(params)) {
|
|
49
|
-
throw new Error(`MUI: The cell with id=${id} and field=${field} is not editable.`);
|
|
49
|
+
throw new Error(`MUI X: The cell with id=${id} and field=${field} is not editable.`);
|
|
50
50
|
}
|
|
51
51
|
}, [apiRef]);
|
|
52
52
|
const throwIfNotInMode = React.useCallback((id, mode) => {
|
|
53
53
|
if (apiRef.current.getRowMode(id) !== mode) {
|
|
54
|
-
throw new Error(`MUI: The row with id=${id} is not in ${mode} mode.`);
|
|
54
|
+
throw new Error(`MUI X: The row with id=${id} is not in ${mode} mode.`);
|
|
55
55
|
}
|
|
56
56
|
}, [apiRef]);
|
|
57
57
|
const handleCellDoubleClick = React.useCallback((params, event) => {
|
|
@@ -388,7 +388,7 @@ const useGridRowEditing = (apiRef, props) => {
|
|
|
388
388
|
});
|
|
389
389
|
if (onProcessRowUpdateError) {
|
|
390
390
|
onProcessRowUpdateError(errorThrown);
|
|
391
|
-
} else {
|
|
391
|
+
} else if (process.env.NODE_ENV !== 'production') {
|
|
392
392
|
missingOnProcessRowUpdateErrorWarning();
|
|
393
393
|
}
|
|
394
394
|
};
|
|
@@ -40,7 +40,7 @@ const serializeCellValue = (cellParams, options) => {
|
|
|
40
40
|
return sanitizeCellValue(value, delimiterCharacter);
|
|
41
41
|
};
|
|
42
42
|
exports.serializeCellValue = serializeCellValue;
|
|
43
|
-
const objectFormattedValueWarning = (0, _warning.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.']);
|
|
43
|
+
const objectFormattedValueWarning = (0, _warning.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.']);
|
|
44
44
|
class CSVRow {
|
|
45
45
|
constructor(options) {
|
|
46
46
|
this.options = void 0;
|
|
@@ -112,10 +112,10 @@ function buildCSV(options) {
|
|
|
112
112
|
const filteredColumns = columns.filter(column => column.field !== _colDef.GRID_CHECKBOX_SELECTION_COL_DEF.field);
|
|
113
113
|
const headerRows = [];
|
|
114
114
|
if (includeColumnGroupsHeaders) {
|
|
115
|
-
const columnGroupLookup = apiRef.current.
|
|
115
|
+
const columnGroupLookup = apiRef.current.getAllGroupDetails();
|
|
116
116
|
let maxColumnGroupsDepth = 0;
|
|
117
117
|
const columnGroupPathsLookup = filteredColumns.reduce((acc, column) => {
|
|
118
|
-
const columnGroupPath = apiRef.current.
|
|
118
|
+
const columnGroupPath = apiRef.current.getColumnGroupPath(column.field);
|
|
119
119
|
acc[column.field] = columnGroupPath;
|
|
120
120
|
maxColumnGroupsDepth = Math.max(maxColumnGroupsDepth, columnGroupPath.length);
|
|
121
121
|
return acc;
|
|
@@ -215,7 +215,7 @@ const useGridPrintExport = (apiRef, props) => {
|
|
|
215
215
|
const exportDataAsPrint = React.useCallback(async options => {
|
|
216
216
|
logger.debug(`Export data as Print`);
|
|
217
217
|
if (!apiRef.current.rootElementRef.current) {
|
|
218
|
-
throw new Error('MUI: No grid root element available.');
|
|
218
|
+
throw new Error('MUI X: No grid root element available.');
|
|
219
219
|
}
|
|
220
220
|
previousGridState.current = apiRef.current.exportState();
|
|
221
221
|
// It appends that the visibility model is not exported, especially if columnVisibility is not controlled
|
|
@@ -44,9 +44,9 @@ const cleanFilterItem = (item, apiRef) => {
|
|
|
44
44
|
return cleanItem;
|
|
45
45
|
};
|
|
46
46
|
exports.cleanFilterItem = cleanFilterItem;
|
|
47
|
-
const filterModelDisableMultiColumnsFilteringWarning = (0, _warning.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');
|
|
48
|
-
const filterModelMissingItemIdWarning = (0, _warning.buildWarning)('MUI: The `id` field is required on `filterModel.items` when you use multiple filters.', 'error');
|
|
49
|
-
const filterModelMissingItemOperatorWarning = (0, _warning.buildWarning)('MUI: The `operator` field is required on `filterModel.items`, one or more of your filtering item has no `operator` provided.', 'error');
|
|
47
|
+
const filterModelDisableMultiColumnsFilteringWarning = (0, _warning.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');
|
|
48
|
+
const filterModelMissingItemIdWarning = (0, _warning.buildWarning)('MUI X: The `id` field is required on `filterModel.items` when you use multiple filters.', 'error');
|
|
49
|
+
const filterModelMissingItemOperatorWarning = (0, _warning.buildWarning)('MUI X: The `operator` field is required on `filterModel.items`, one or more of your filtering item has no `operator` provided.', 'error');
|
|
50
50
|
const sanitizeFilterModel = (model, disableMultipleColumnsFiltering, apiRef) => {
|
|
51
51
|
const hasSeveralItems = model.items.length > 1;
|
|
52
52
|
let items;
|
|
@@ -114,11 +114,11 @@ const getFilterCallbackFromItem = (filterItem, apiRef) => {
|
|
|
114
114
|
});
|
|
115
115
|
const filterOperators = column.filterOperators;
|
|
116
116
|
if (!filterOperators?.length) {
|
|
117
|
-
throw new Error(`MUI: No filter operators found for column '${column.field}'.`);
|
|
117
|
+
throw new Error(`MUI X: No filter operators found for column '${column.field}'.`);
|
|
118
118
|
}
|
|
119
119
|
const filterOperator = filterOperators.find(operator => operator.value === newFilterItem.operator);
|
|
120
120
|
if (!filterOperator) {
|
|
121
|
-
throw new Error(`MUI: No filter operator found for column '${column.field}' and operator value '${newFilterItem.operator}'.`);
|
|
121
|
+
throw new Error(`MUI X: No filter operator found for column '${column.field}' and operator value '${newFilterItem.operator}'.`);
|
|
122
122
|
}
|
|
123
123
|
const publicApiRef = (0, _getPublicApiRef.getPublicApiRef)(apiRef);
|
|
124
124
|
const applyFilterOnRow = filterOperator.getApplyFilterFn(newFilterItem, column);
|
|
@@ -319,8 +319,8 @@ const useGridFilter = (apiRef, props) => {
|
|
|
319
319
|
const handleColumnsChange = React.useCallback(() => {
|
|
320
320
|
logger.debug('onColUpdated - GridColumns changed, applying filters');
|
|
321
321
|
const filterModel = (0, _gridFilterSelector.gridFilterModelSelector)(apiRef);
|
|
322
|
-
const
|
|
323
|
-
const newFilterItems = filterModel.items.filter(item => item.field &&
|
|
322
|
+
const columnsLookup = (0, _gridColumnsSelector.gridColumnLookupSelector)(apiRef);
|
|
323
|
+
const newFilterItems = filterModel.items.filter(item => item.field && columnsLookup[item.field]);
|
|
324
324
|
if (newFilterItems.length < filterModel.items.length) {
|
|
325
325
|
apiRef.current.setFilterModel((0, _extends2.default)({}, filterModel, {
|
|
326
326
|
items: newFilterItems
|
|
@@ -3,21 +3,17 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
exports.gridTabIndexStateSelector = exports.gridTabIndexColumnHeaderSelector = exports.gridTabIndexColumnHeaderFilterSelector = exports.gridTabIndexColumnGroupHeaderSelector = exports.gridTabIndexCellSelector = exports.gridFocusStateSelector = exports.gridFocusColumnHeaderSelector = exports.gridFocusColumnHeaderFilterSelector = exports.gridFocusColumnGroupHeaderSelector = exports.gridFocusCellSelector = void 0;
|
|
7
7
|
var _createSelector = require("../../../utils/createSelector");
|
|
8
8
|
const gridFocusStateSelector = state => state.focus;
|
|
9
9
|
exports.gridFocusStateSelector = gridFocusStateSelector;
|
|
10
10
|
const gridFocusCellSelector = exports.gridFocusCellSelector = (0, _createSelector.createSelector)(gridFocusStateSelector, focusState => focusState.cell);
|
|
11
11
|
const gridFocusColumnHeaderSelector = exports.gridFocusColumnHeaderSelector = (0, _createSelector.createSelector)(gridFocusStateSelector, focusState => focusState.columnHeader);
|
|
12
12
|
const gridFocusColumnHeaderFilterSelector = exports.gridFocusColumnHeaderFilterSelector = (0, _createSelector.createSelector)(gridFocusStateSelector, focusState => focusState.columnHeaderFilter);
|
|
13
|
-
|
|
14
|
-
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
15
|
-
const unstable_gridFocusColumnGroupHeaderSelector = exports.unstable_gridFocusColumnGroupHeaderSelector = (0, _createSelector.createSelector)(gridFocusStateSelector, focusState => focusState.columnGroupHeader);
|
|
13
|
+
const gridFocusColumnGroupHeaderSelector = exports.gridFocusColumnGroupHeaderSelector = (0, _createSelector.createSelector)(gridFocusStateSelector, focusState => focusState.columnGroupHeader);
|
|
16
14
|
const gridTabIndexStateSelector = state => state.tabIndex;
|
|
17
15
|
exports.gridTabIndexStateSelector = gridTabIndexStateSelector;
|
|
18
16
|
const gridTabIndexCellSelector = exports.gridTabIndexCellSelector = (0, _createSelector.createSelector)(gridTabIndexStateSelector, state => state.cell);
|
|
19
17
|
const gridTabIndexColumnHeaderSelector = exports.gridTabIndexColumnHeaderSelector = (0, _createSelector.createSelector)(gridTabIndexStateSelector, state => state.columnHeader);
|
|
20
18
|
const gridTabIndexColumnHeaderFilterSelector = exports.gridTabIndexColumnHeaderFilterSelector = (0, _createSelector.createSelector)(gridTabIndexStateSelector, state => state.columnHeaderFilter);
|
|
21
|
-
|
|
22
|
-
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
23
|
-
const unstable_gridTabIndexColumnGroupHeaderSelector = exports.unstable_gridTabIndexColumnGroupHeaderSelector = (0, _createSelector.createSelector)(gridTabIndexStateSelector, state => state.columnGroupHeader);
|
|
19
|
+
const gridTabIndexColumnGroupHeaderSelector = exports.gridTabIndexColumnGroupHeaderSelector = (0, _createSelector.createSelector)(gridTabIndexStateSelector, state => state.columnGroupHeader);
|
|
@@ -174,7 +174,7 @@ const useGridFocus = (apiRef, props) => {
|
|
|
174
174
|
});
|
|
175
175
|
apiRef.current.forceUpdate();
|
|
176
176
|
}, [apiRef]);
|
|
177
|
-
const getColumnGroupHeaderFocus = React.useCallback(() => (0, _gridFocusStateSelector.
|
|
177
|
+
const getColumnGroupHeaderFocus = React.useCallback(() => (0, _gridFocusStateSelector.gridFocusColumnGroupHeaderSelector)(apiRef), [apiRef]);
|
|
178
178
|
const moveFocusToRelativeCell = React.useCallback((id, field, direction) => {
|
|
179
179
|
let columnIndexToFocus = apiRef.current.getColumnIndex(field);
|
|
180
180
|
const visibleColumns = (0, _gridColumnsSelector.gridVisibleColumnDefinitionsSelector)(apiRef);
|
|
@@ -254,7 +254,7 @@ const useGridFocus = (apiRef, props) => {
|
|
|
254
254
|
if (event.target !== event.currentTarget) {
|
|
255
255
|
return;
|
|
256
256
|
}
|
|
257
|
-
const focusedColumnGroup = (0, _gridFocusStateSelector.
|
|
257
|
+
const focusedColumnGroup = (0, _gridFocusStateSelector.gridFocusColumnGroupHeaderSelector)(apiRef);
|
|
258
258
|
if (focusedColumnGroup !== null && focusedColumnGroup.depth === depth && fields.includes(focusedColumnGroup.field)) {
|
|
259
259
|
// This group cell has already been focused
|
|
260
260
|
return;
|