@mui/x-data-grid 5.7.0 → 5.10.0
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 +241 -53
- package/DataGrid/DataGrid.d.ts +8 -3
- package/DataGrid/DataGrid.js +28 -5
- package/DataGrid/useDataGridComponent.js +5 -5
- package/DataGrid/useDataGridProps.d.ts +2 -1
- package/LICENSE +21 -0
- package/README.md +6 -4
- package/colDef/gridBooleanColDef.d.ts +1 -1
- package/colDef/gridBooleanOperators.d.ts +1 -1
- package/colDef/gridDateColDef.d.ts +5 -9
- package/colDef/gridDateColDef.js +2 -2
- package/colDef/gridDateOperators.d.ts +1 -1
- package/{models/colDef → colDef}/gridDefaultColumnTypes.d.ts +1 -1
- package/{models/colDef → colDef}/gridDefaultColumnTypes.js +6 -6
- package/colDef/gridNumericColDef.d.ts +1 -1
- package/colDef/gridNumericOperators.d.ts +2 -2
- package/colDef/gridStringColDef.d.ts +1 -1
- package/colDef/gridStringOperators.d.ts +1 -1
- package/colDef/index.d.ts +1 -0
- package/colDef/index.js +2 -1
- package/components/GridRow.d.ts +4 -0
- package/components/GridRow.js +55 -24
- package/components/base/GridOverlays.js +4 -3
- package/components/cell/GridActionsCell.d.ts +5 -1
- package/components/cell/GridActionsCell.js +170 -21
- package/components/cell/GridActionsCellItem.d.ts +66 -4
- package/components/cell/GridActionsCellItem.js +7 -5
- package/components/cell/GridCell.d.ts +5 -4
- package/components/cell/GridCell.js +30 -9
- package/components/cell/GridEditInputCell.js +3 -3
- package/components/cell/GridEditSingleSelectCell.js +24 -15
- package/components/columnHeaders/GridColumnHeaderFilterIconButton.d.ts +12 -0
- package/components/columnHeaders/{ColumnHeaderFilterIcon.js → GridColumnHeaderFilterIconButton.js} +22 -4
- package/components/columnHeaders/GridColumnHeaderItem.js +9 -12
- package/components/columnHeaders/GridColumnHeaders.d.ts +0 -1
- package/components/columnHeaders/GridColumnHeaders.js +1 -1
- package/components/columnHeaders/index.d.ts +1 -0
- package/components/columnHeaders/index.js +1 -0
- package/components/columnSelection/GridCellCheckboxRenderer.d.ts +3 -3
- package/components/columnSelection/GridCellCheckboxRenderer.js +22 -5
- package/components/columnSelection/GridHeaderCheckbox.d.ts +1 -1
- package/components/containers/GridRoot.js +29 -17
- package/components/containers/GridRootStyles.js +36 -1
- package/components/menu/GridMenu.js +1 -0
- package/components/menu/columnMenu/GridColumnMenu.js +1 -1
- package/components/panel/GridPanel.d.ts +2 -2
- package/components/panel/GridPanel.js +1 -0
- package/components/panel/GridPreferencesPanel.js +1 -1
- package/components/panel/filterPanel/GridFilterForm.js +14 -10
- package/components/panel/filterPanel/GridFilterInputBoolean.js +13 -8
- package/components/panel/filterPanel/GridFilterInputSingleSelect.js +22 -15
- package/components/panel/filterPanel/GridFilterInputValue.js +22 -15
- package/components/toolbar/GridToolbarDensitySelector.js +1 -1
- package/components/toolbar/GridToolbarFilterButton.d.ts +1 -1
- package/components/virtualization/GridVirtualScroller.js +2 -0
- package/components/virtualization/GridVirtualScrollerContent.js +1 -3
- package/constants/defaultGridSlotsComponents.js +4 -2
- package/constants/gridClasses.d.ts +35 -3
- package/constants/gridClasses.js +1 -1
- package/constants/gridDetailPanelToggleField.d.ts +1 -0
- package/constants/gridDetailPanelToggleField.js +2 -0
- package/constants/localeTextConstants.js +3 -1
- package/hooks/core/index.d.ts +1 -1
- package/hooks/core/pipeProcessing/gridPipeProcessingApi.d.ts +85 -0
- package/hooks/core/{preProcessing/gridPreProcessingApi.js → pipeProcessing/gridPipeProcessingApi.js} +0 -0
- package/hooks/core/pipeProcessing/index.d.ts +4 -0
- package/hooks/core/pipeProcessing/index.js +4 -0
- package/hooks/core/pipeProcessing/useGridPipeProcessing.d.ts +32 -0
- package/hooks/core/pipeProcessing/useGridPipeProcessing.js +108 -0
- package/hooks/core/pipeProcessing/useGridRegisterPipeApplier.d.ts +3 -0
- package/{modern/hooks/core/preProcessing/useGridRegisterPreProcessor.js → hooks/core/pipeProcessing/useGridRegisterPipeApplier.js} +2 -6
- package/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.d.ts +4 -0
- package/hooks/core/{preProcessing/useGridRegisterPreProcessor.js → pipeProcessing/useGridRegisterPipeProcessor.js} +2 -6
- package/hooks/core/strategyProcessing/useGridStrategyProcessing.d.ts +27 -16
- package/hooks/core/strategyProcessing/useGridStrategyProcessing.js +26 -15
- package/hooks/core/useGridInitialization.js +2 -2
- package/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +0 -1
- package/hooks/features/columnHeaders/useGridColumnHeaders.js +77 -11
- package/hooks/features/columnMenu/useGridColumnMenu.js +2 -1
- package/hooks/features/columns/gridColumnsInterfaces.d.ts +3 -1
- package/hooks/features/columns/gridColumnsSelector.d.ts +6 -6
- package/hooks/features/columns/gridColumnsUtils.d.ts +22 -4
- package/hooks/features/columns/gridColumnsUtils.js +105 -20
- package/hooks/features/columns/useGridColumnSpanning.d.ts +7 -0
- package/hooks/features/columns/useGridColumnSpanning.js +109 -0
- package/hooks/features/columns/useGridColumns.d.ts +1 -1
- package/hooks/features/columns/useGridColumns.js +55 -40
- package/hooks/features/dimensions/gridDimensionsApi.d.ts +5 -0
- package/hooks/features/dimensions/useGridDimensions.js +5 -4
- package/hooks/features/editRows/useGridCellEditing.new.d.ts +1 -1
- package/hooks/features/editRows/useGridCellEditing.new.js +40 -17
- package/hooks/features/editRows/useGridEditing.new.js +7 -3
- package/hooks/features/editRows/useGridRowEditing.new.d.ts +1 -1
- package/hooks/features/editRows/useGridRowEditing.new.js +44 -21
- package/hooks/features/events/useGridEvents.d.ts +1 -1
- package/hooks/features/events/useGridEvents.js +2 -0
- package/hooks/features/filter/gridFilterSelector.d.ts +3 -9
- package/hooks/features/filter/useGridFilter.js +18 -13
- package/hooks/features/focus/useGridFocus.js +19 -9
- package/hooks/features/{keyboard → keyboardNavigation}/useGridKeyboardNavigation.d.ts +3 -5
- package/hooks/features/{keyboard → keyboardNavigation}/useGridKeyboardNavigation.js +66 -13
- package/hooks/features/pagination/gridPaginationSelector.d.ts +1 -3
- package/hooks/features/pagination/useGridPage.js +9 -4
- package/hooks/features/pagination/useGridPageSize.js +3 -3
- package/hooks/features/preferencesPanel/useGridPreferencesPanel.js +18 -5
- package/hooks/features/rows/gridRowsSelector.d.ts +2 -1
- package/hooks/features/rows/gridRowsSelector.js +1 -0
- package/hooks/features/rows/gridRowsState.d.ts +4 -0
- package/hooks/features/rows/gridRowsUtils.d.ts +8 -0
- package/hooks/features/rows/gridRowsUtils.js +11 -0
- package/hooks/features/rows/index.d.ts +1 -0
- package/hooks/features/rows/index.js +1 -1
- package/hooks/features/rows/useGridRows.d.ts +2 -2
- package/hooks/features/rows/useGridRows.js +27 -7
- package/hooks/features/rows/useGridRowsMeta.js +7 -14
- package/hooks/features/scroll/useGridScroll.d.ts +2 -0
- package/hooks/features/scroll/useGridScroll.js +27 -14
- package/hooks/features/selection/gridSelectionSelector.d.ts +1 -3
- package/hooks/features/selection/useGridSelection.d.ts +4 -2
- package/hooks/features/selection/useGridSelection.js +75 -27
- package/hooks/features/selection/useGridSelectionPreProcessors.js +2 -2
- package/hooks/features/sorting/gridSortingSelector.d.ts +1 -3
- package/hooks/features/sorting/gridSortingUtils.d.ts +1 -2
- package/hooks/features/sorting/useGridSorting.js +13 -13
- package/hooks/features/statePersistence/useGridStatePersistence.js +2 -2
- package/hooks/features/virtualization/useGridVirtualScroller.d.ts +9 -0
- package/hooks/features/virtualization/useGridVirtualScroller.js +64 -27
- package/hooks/utils/useGridRootProps.d.ts +1 -1
- package/hooks/utils/useGridVisibleRows.d.ts +2 -2
- package/index.js +1 -1
- package/internals/index.d.ts +4 -6
- package/internals/index.js +3 -3
- package/legacy/DataGrid/DataGrid.js +28 -5
- package/legacy/DataGrid/useDataGridComponent.js +5 -5
- package/legacy/colDef/gridDateColDef.js +2 -2
- package/legacy/{models/colDef → colDef}/gridDefaultColumnTypes.js +6 -6
- package/legacy/colDef/index.js +2 -1
- package/legacy/components/GridRow.js +53 -24
- package/legacy/components/base/GridOverlays.js +4 -3
- package/legacy/components/cell/GridActionsCell.js +188 -27
- package/legacy/components/cell/GridActionsCellItem.js +7 -5
- package/legacy/components/cell/GridCell.js +31 -9
- package/legacy/components/cell/GridEditInputCell.js +3 -3
- package/legacy/components/cell/GridEditSingleSelectCell.js +35 -26
- package/legacy/components/columnHeaders/{ColumnHeaderFilterIcon.js → GridColumnHeaderFilterIconButton.js} +22 -4
- package/legacy/components/columnHeaders/GridColumnHeaderItem.js +9 -12
- package/legacy/components/columnHeaders/GridColumnHeaders.js +2 -3
- package/legacy/components/columnHeaders/index.js +1 -0
- package/legacy/components/columnSelection/GridCellCheckboxRenderer.js +23 -5
- package/legacy/components/containers/GridRoot.js +34 -17
- package/legacy/components/containers/GridRootStyles.js +26 -5
- package/legacy/components/menu/GridMenu.js +1 -0
- package/legacy/components/menu/columnMenu/GridColumnMenu.js +1 -1
- package/legacy/components/panel/GridPanel.js +1 -0
- package/legacy/components/panel/GridPreferencesPanel.js +1 -1
- package/legacy/components/panel/filterPanel/GridFilterForm.js +14 -10
- package/legacy/components/panel/filterPanel/GridFilterInputBoolean.js +13 -8
- package/legacy/components/panel/filterPanel/GridFilterInputSingleSelect.js +22 -17
- package/legacy/components/panel/filterPanel/GridFilterInputValue.js +22 -17
- package/legacy/components/toolbar/GridToolbarDensitySelector.js +1 -1
- package/legacy/components/virtualization/GridVirtualScroller.js +2 -0
- package/legacy/components/virtualization/GridVirtualScrollerContent.js +1 -3
- package/legacy/constants/defaultGridSlotsComponents.js +4 -2
- package/legacy/constants/gridClasses.js +1 -1
- package/legacy/constants/gridDetailPanelToggleField.js +2 -0
- package/legacy/constants/localeTextConstants.js +3 -1
- package/legacy/hooks/core/{preProcessing/gridPreProcessingApi.js → pipeProcessing/gridPipeProcessingApi.js} +0 -0
- package/legacy/hooks/core/pipeProcessing/index.js +4 -0
- package/legacy/hooks/core/pipeProcessing/useGridPipeProcessing.js +119 -0
- package/legacy/hooks/core/{preProcessing/useGridRegisterPreProcessor.js → pipeProcessing/useGridRegisterPipeApplier.js} +2 -6
- package/legacy/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.js +27 -0
- package/legacy/hooks/core/strategyProcessing/useGridStrategyProcessing.js +26 -15
- package/legacy/hooks/core/useGridInitialization.js +2 -2
- package/legacy/hooks/features/columnHeaders/useGridColumnHeaders.js +90 -11
- package/legacy/hooks/features/columnMenu/useGridColumnMenu.js +2 -1
- package/legacy/hooks/features/columns/gridColumnsUtils.js +120 -32
- package/legacy/hooks/features/columns/useGridColumnSpanning.js +107 -0
- package/legacy/hooks/features/columns/useGridColumns.js +55 -40
- package/legacy/hooks/features/dimensions/useGridDimensions.js +5 -4
- package/legacy/hooks/features/editRows/useGridCellEditing.new.js +36 -15
- package/legacy/hooks/features/editRows/useGridEditing.new.js +7 -3
- package/legacy/hooks/features/editRows/useGridRowEditing.new.js +53 -30
- package/legacy/hooks/features/events/useGridEvents.js +2 -0
- package/legacy/hooks/features/filter/useGridFilter.js +18 -13
- package/legacy/hooks/features/focus/useGridFocus.js +19 -9
- package/legacy/hooks/features/{keyboard → keyboardNavigation}/useGridKeyboardNavigation.js +66 -12
- package/legacy/hooks/features/pagination/useGridPage.js +11 -4
- package/legacy/hooks/features/pagination/useGridPageSize.js +3 -3
- package/legacy/hooks/features/preferencesPanel/useGridPreferencesPanel.js +18 -5
- package/legacy/hooks/features/rows/gridRowsSelector.js +3 -0
- package/legacy/hooks/features/rows/gridRowsUtils.js +13 -0
- package/legacy/hooks/features/rows/index.js +1 -1
- package/legacy/hooks/features/rows/useGridRows.js +35 -9
- package/legacy/hooks/features/rows/useGridRowsMeta.js +7 -14
- package/legacy/hooks/features/scroll/useGridScroll.js +27 -14
- package/legacy/hooks/features/selection/useGridSelection.js +77 -27
- package/legacy/hooks/features/selection/useGridSelectionPreProcessors.js +2 -2
- package/legacy/hooks/features/sorting/useGridSorting.js +8 -10
- package/legacy/hooks/features/statePersistence/useGridStatePersistence.js +2 -2
- package/legacy/hooks/features/virtualization/useGridVirtualScroller.js +75 -37
- package/legacy/index.js +1 -1
- package/legacy/internals/index.js +3 -3
- package/legacy/locales/arSD.js +3 -1
- package/legacy/locales/bgBG.js +3 -1
- package/legacy/locales/csCZ.js +2 -0
- package/legacy/locales/daDK.js +37 -31
- package/legacy/locales/deDE.js +3 -1
- package/legacy/locales/elGR.js +2 -0
- package/legacy/locales/esES.js +2 -0
- package/legacy/locales/faIR.js +3 -1
- package/legacy/locales/fiFI.js +2 -0
- package/legacy/locales/frFR.js +2 -0
- package/legacy/locales/heIL.js +3 -1
- package/legacy/locales/huHU.js +122 -0
- package/legacy/locales/index.js +1 -0
- package/legacy/locales/itIT.js +2 -0
- package/legacy/locales/jaJP.js +2 -0
- package/legacy/locales/koKR.js +2 -0
- package/legacy/locales/nlNL.js +2 -0
- package/legacy/locales/plPL.js +3 -1
- package/legacy/locales/ptBR.js +3 -1
- package/legacy/locales/ruRU.js +2 -0
- package/legacy/locales/skSK.js +2 -0
- package/legacy/locales/trTR.js +3 -1
- package/legacy/locales/ukUA.js +2 -0
- package/legacy/locales/viVN.js +2 -0
- package/legacy/locales/zhCN.js +2 -0
- package/{modern/hooks/core/preProcessing/gridPreProcessingApi.js → legacy/models/api/gridColumnSpanning.js} +0 -0
- package/legacy/models/colDef/index.js +1 -2
- package/legacy/models/events/gridEvents.js +10 -3
- package/legacy/models/gridColumnSpanning.js +1 -0
- package/legacy/models/gridRows.js +1 -33
- package/legacy/models/index.js +2 -2
- package/legacy/models/params/gridPreferencePanelParams.js +1 -0
- package/legacy/models/params/index.js +2 -1
- package/locales/arSD.js +3 -1
- package/locales/bgBG.js +3 -1
- package/locales/csCZ.js +2 -0
- package/locales/daDK.js +33 -31
- package/locales/deDE.js +3 -1
- package/locales/elGR.js +2 -0
- package/locales/esES.js +2 -0
- package/locales/faIR.js +3 -1
- package/locales/fiFI.js +2 -0
- package/locales/frFR.js +2 -0
- package/locales/heIL.js +3 -1
- package/locales/huHU.d.ts +2 -0
- package/locales/huHU.js +110 -0
- package/locales/index.d.ts +1 -0
- package/locales/index.js +1 -0
- package/locales/itIT.js +2 -0
- package/locales/jaJP.js +2 -0
- package/locales/koKR.js +2 -0
- package/locales/nlNL.js +2 -0
- package/locales/plPL.js +3 -1
- package/locales/ptBR.js +3 -1
- package/locales/ruRU.js +2 -0
- package/locales/skSK.js +2 -0
- package/locales/trTR.js +3 -1
- package/locales/ukUA.js +2 -0
- package/locales/viVN.js +2 -0
- package/locales/zhCN.js +2 -0
- package/models/api/gridApiCommon.d.ts +3 -2
- package/models/api/gridColumnSpanning.d.ts +28 -0
- package/models/api/gridColumnSpanning.js +1 -0
- package/models/api/gridEditingApi.d.ts +51 -5
- package/models/api/gridLocaleTextApi.d.ts +1 -0
- package/models/api/gridParamsApi.d.ts +5 -5
- package/models/api/gridRowApi.d.ts +8 -2
- package/models/colDef/gridColDef.d.ts +38 -28
- package/models/colDef/index.d.ts +0 -1
- package/models/colDef/index.js +1 -2
- package/models/events/gridEventLookup.d.ts +30 -9
- package/models/events/gridEvents.d.ts +50 -17
- package/models/events/gridEvents.js +10 -3
- package/models/gridCell.d.ts +1 -0
- package/models/gridColumnSpanning.d.ts +12 -0
- package/models/gridColumnSpanning.js +1 -0
- package/models/gridEditRowModel.d.ts +1 -1
- package/models/gridFilterOperator.d.ts +3 -2
- package/models/gridIconSlotsComponent.d.ts +5 -0
- package/models/gridRows.d.ts +10 -18
- package/models/gridRows.js +1 -31
- package/models/gridSlotsComponent.d.ts +5 -0
- package/models/gridSlotsComponentsProps.d.ts +1 -0
- package/models/gridSortModel.d.ts +3 -4
- package/models/index.d.ts +1 -1
- package/models/index.js +2 -2
- package/models/params/gridCellParams.d.ts +25 -15
- package/models/params/gridColumnHeaderParams.d.ts +3 -2
- package/models/params/gridEditCellParams.d.ts +2 -3
- package/models/params/gridPreferencePanelParams.d.ts +3 -0
- package/models/params/gridPreferencePanelParams.js +1 -0
- package/models/params/gridRowParams.d.ts +12 -8
- package/models/params/gridValueOptionsParams.d.ts +3 -3
- package/models/params/index.d.ts +1 -0
- package/models/params/index.js +2 -1
- package/models/props/DataGridProps.d.ts +37 -17
- package/modern/DataGrid/DataGrid.js +28 -5
- package/modern/DataGrid/useDataGridComponent.js +5 -5
- package/modern/colDef/gridDateColDef.js +2 -2
- package/modern/{models/colDef → colDef}/gridDefaultColumnTypes.js +6 -6
- package/modern/colDef/index.js +2 -1
- package/modern/components/GridRow.js +53 -22
- package/modern/components/base/GridOverlays.js +4 -3
- package/modern/components/cell/GridActionsCell.js +168 -21
- package/modern/components/cell/GridActionsCellItem.js +7 -5
- package/modern/components/cell/GridCell.js +30 -9
- package/modern/components/cell/GridEditInputCell.js +3 -3
- package/modern/components/cell/GridEditSingleSelectCell.js +22 -13
- package/modern/components/columnHeaders/{ColumnHeaderFilterIcon.js → GridColumnHeaderFilterIconButton.js} +22 -4
- package/modern/components/columnHeaders/GridColumnHeaderItem.js +7 -10
- package/modern/components/columnHeaders/GridColumnHeaders.js +1 -1
- package/modern/components/columnHeaders/index.js +1 -0
- package/modern/components/columnSelection/GridCellCheckboxRenderer.js +22 -5
- package/modern/components/containers/GridRoot.js +29 -17
- package/modern/components/containers/GridRootStyles.js +36 -1
- package/modern/components/menu/GridMenu.js +1 -0
- package/modern/components/menu/columnMenu/GridColumnMenu.js +1 -1
- package/modern/components/panel/GridPanel.js +1 -0
- package/modern/components/panel/GridPreferencesPanel.js +1 -1
- package/modern/components/panel/filterPanel/GridFilterForm.js +10 -6
- package/modern/components/panel/filterPanel/GridFilterInputBoolean.js +11 -6
- package/modern/components/panel/filterPanel/GridFilterInputSingleSelect.js +20 -13
- package/modern/components/panel/filterPanel/GridFilterInputValue.js +20 -13
- package/modern/components/toolbar/GridToolbarDensitySelector.js +1 -1
- package/modern/components/virtualization/GridVirtualScroller.js +2 -0
- package/modern/components/virtualization/GridVirtualScrollerContent.js +1 -3
- package/modern/constants/defaultGridSlotsComponents.js +4 -2
- package/modern/constants/gridClasses.js +1 -1
- package/modern/constants/gridDetailPanelToggleField.js +2 -0
- package/modern/constants/localeTextConstants.js +3 -1
- package/modern/hooks/core/pipeProcessing/gridPipeProcessingApi.js +1 -0
- package/modern/hooks/core/pipeProcessing/index.js +4 -0
- package/modern/hooks/core/pipeProcessing/useGridPipeProcessing.js +108 -0
- package/modern/hooks/core/pipeProcessing/useGridRegisterPipeApplier.js +27 -0
- package/modern/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.js +27 -0
- package/modern/hooks/core/strategyProcessing/useGridStrategyProcessing.js +26 -15
- package/modern/hooks/core/useGridInitialization.js +2 -2
- package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +77 -11
- package/modern/hooks/features/columnMenu/useGridColumnMenu.js +2 -1
- package/modern/hooks/features/columns/gridColumnsUtils.js +105 -20
- package/modern/hooks/features/columns/useGridColumnSpanning.js +107 -0
- package/modern/hooks/features/columns/useGridColumns.js +55 -40
- package/modern/hooks/features/dimensions/useGridDimensions.js +5 -4
- package/modern/hooks/features/editRows/useGridCellEditing.new.js +40 -17
- package/modern/hooks/features/editRows/useGridEditing.new.js +7 -3
- package/modern/hooks/features/editRows/useGridRowEditing.new.js +44 -21
- package/modern/hooks/features/events/useGridEvents.js +2 -0
- package/modern/hooks/features/filter/useGridFilter.js +18 -13
- package/modern/hooks/features/focus/useGridFocus.js +19 -9
- package/modern/hooks/features/{keyboard → keyboardNavigation}/useGridKeyboardNavigation.js +64 -13
- package/modern/hooks/features/pagination/useGridPage.js +9 -4
- package/modern/hooks/features/pagination/useGridPageSize.js +3 -3
- package/modern/hooks/features/preferencesPanel/useGridPreferencesPanel.js +18 -5
- package/modern/hooks/features/rows/gridRowsSelector.js +1 -0
- package/modern/hooks/features/rows/gridRowsUtils.js +11 -0
- package/modern/hooks/features/rows/index.js +1 -1
- package/modern/hooks/features/rows/useGridRows.js +25 -5
- package/modern/hooks/features/rows/useGridRowsMeta.js +7 -14
- package/modern/hooks/features/scroll/useGridScroll.js +25 -10
- package/modern/hooks/features/selection/useGridSelection.js +75 -27
- package/modern/hooks/features/selection/useGridSelectionPreProcessors.js +2 -2
- package/modern/hooks/features/sorting/useGridSorting.js +13 -13
- package/modern/hooks/features/statePersistence/useGridStatePersistence.js +2 -2
- package/modern/hooks/features/virtualization/useGridVirtualScroller.js +64 -23
- package/modern/index.js +1 -1
- package/modern/internals/index.js +3 -3
- package/modern/locales/arSD.js +3 -1
- package/modern/locales/bgBG.js +3 -1
- package/modern/locales/csCZ.js +2 -0
- package/modern/locales/daDK.js +33 -31
- package/modern/locales/deDE.js +3 -1
- package/modern/locales/elGR.js +2 -0
- package/modern/locales/esES.js +2 -0
- package/modern/locales/faIR.js +3 -1
- package/modern/locales/fiFI.js +2 -0
- package/modern/locales/frFR.js +2 -0
- package/modern/locales/heIL.js +3 -1
- package/modern/locales/huHU.js +110 -0
- package/modern/locales/index.js +1 -0
- package/modern/locales/itIT.js +2 -0
- package/modern/locales/jaJP.js +2 -0
- package/modern/locales/koKR.js +2 -0
- package/modern/locales/nlNL.js +2 -0
- package/modern/locales/plPL.js +3 -1
- package/modern/locales/ptBR.js +3 -1
- package/modern/locales/ruRU.js +2 -0
- package/modern/locales/skSK.js +2 -0
- package/modern/locales/trTR.js +3 -1
- package/modern/locales/ukUA.js +2 -0
- package/modern/locales/viVN.js +2 -0
- package/modern/locales/zhCN.js +2 -0
- package/modern/models/api/gridColumnSpanning.js +1 -0
- package/modern/models/colDef/index.js +1 -2
- package/modern/models/events/gridEvents.js +10 -3
- package/modern/models/gridColumnSpanning.js +1 -0
- package/modern/models/gridRows.js +1 -31
- package/modern/models/index.js +2 -2
- package/modern/models/params/gridPreferencePanelParams.js +1 -0
- package/modern/models/params/index.js +2 -1
- package/node/DataGrid/DataGrid.js +28 -5
- package/node/DataGrid/useDataGridComponent.js +6 -6
- package/node/colDef/gridDateColDef.js +2 -2
- package/node/{models/colDef → colDef}/gridDefaultColumnTypes.js +6 -6
- package/node/colDef/index.js +13 -0
- package/node/components/GridRow.js +56 -24
- package/node/components/base/GridOverlays.js +3 -2
- package/node/components/cell/GridActionsCell.js +172 -21
- package/node/components/cell/GridActionsCellItem.js +7 -4
- package/node/components/cell/GridCell.js +30 -9
- package/node/components/cell/GridEditInputCell.js +3 -3
- package/node/components/cell/GridEditSingleSelectCell.js +25 -15
- package/node/components/columnHeaders/{ColumnHeaderFilterIcon.js → GridColumnHeaderFilterIconButton.js} +23 -5
- package/node/components/columnHeaders/GridColumnHeaderItem.js +9 -13
- package/node/components/columnHeaders/GridColumnHeaders.js +1 -1
- package/node/components/columnHeaders/index.js +13 -0
- package/node/components/columnSelection/GridCellCheckboxRenderer.js +22 -5
- package/node/components/containers/GridRoot.js +28 -17
- package/node/components/containers/GridRootStyles.js +36 -1
- package/node/components/menu/GridMenu.js +1 -0
- package/node/components/menu/columnMenu/GridColumnMenu.js +1 -1
- package/node/components/panel/GridPanel.js +1 -0
- package/node/components/panel/GridPreferencesPanel.js +1 -1
- package/node/components/panel/filterPanel/GridFilterForm.js +15 -10
- package/node/components/panel/filterPanel/GridFilterInputBoolean.js +14 -8
- package/node/components/panel/filterPanel/GridFilterInputSingleSelect.js +23 -15
- package/node/components/panel/filterPanel/GridFilterInputValue.js +23 -15
- package/node/components/toolbar/GridToolbarDensitySelector.js +1 -1
- package/node/components/virtualization/GridVirtualScroller.js +2 -0
- package/node/components/virtualization/GridVirtualScrollerContent.js +1 -3
- package/node/constants/defaultGridSlotsComponents.js +3 -1
- package/node/constants/gridClasses.js +1 -1
- package/node/constants/gridDetailPanelToggleField.js +9 -0
- package/node/constants/localeTextConstants.js +3 -1
- package/node/hooks/core/{preProcessing/gridPreProcessingApi.js → pipeProcessing/gridPipeProcessingApi.js} +0 -0
- package/node/hooks/core/pipeProcessing/index.js +57 -0
- package/node/hooks/core/pipeProcessing/useGridPipeProcessing.js +124 -0
- package/node/hooks/core/{preProcessing/useGridRegisterPreProcessor.js → pipeProcessing/useGridRegisterPipeApplier.js} +4 -7
- package/node/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.js +42 -0
- package/node/hooks/core/strategyProcessing/useGridStrategyProcessing.js +26 -15
- package/node/hooks/core/useGridInitialization.js +2 -2
- package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +81 -11
- package/node/hooks/features/columnMenu/useGridColumnMenu.js +2 -1
- package/node/hooks/features/columns/gridColumnsUtils.js +114 -25
- package/node/hooks/features/columns/useGridColumnSpanning.js +130 -0
- package/node/hooks/features/columns/useGridColumns.js +55 -40
- package/node/hooks/features/dimensions/useGridDimensions.js +5 -4
- package/node/hooks/features/editRows/useGridCellEditing.new.js +42 -17
- package/node/hooks/features/editRows/useGridEditing.new.js +6 -2
- package/node/hooks/features/editRows/useGridRowEditing.new.js +45 -21
- package/node/hooks/features/events/useGridEvents.js +2 -0
- package/node/hooks/features/filter/useGridFilter.js +18 -13
- package/node/hooks/features/focus/useGridFocus.js +19 -9
- package/node/hooks/features/{keyboard → keyboardNavigation}/useGridKeyboardNavigation.js +69 -13
- package/node/hooks/features/pagination/useGridPage.js +8 -3
- package/node/hooks/features/pagination/useGridPageSize.js +3 -3
- package/node/hooks/features/preferencesPanel/useGridPreferencesPanel.js +20 -5
- package/node/hooks/features/rows/gridRowsSelector.js +3 -1
- package/node/hooks/features/rows/gridRowsUtils.js +18 -0
- package/node/hooks/features/rows/index.js +15 -1
- package/node/hooks/features/rows/useGridRows.js +29 -9
- package/node/hooks/features/rows/useGridRowsMeta.js +7 -15
- package/node/hooks/features/scroll/useGridScroll.js +28 -14
- package/node/hooks/features/selection/useGridSelection.js +75 -26
- package/node/hooks/features/selection/useGridSelectionPreProcessors.js +2 -2
- package/node/hooks/features/sorting/useGridSorting.js +13 -13
- package/node/hooks/features/statePersistence/useGridStatePersistence.js +2 -2
- package/node/hooks/features/virtualization/useGridVirtualScroller.js +69 -27
- package/node/index.js +1 -1
- package/node/internals/index.js +12 -12
- package/node/locales/arSD.js +3 -1
- package/node/locales/bgBG.js +3 -1
- package/node/locales/csCZ.js +2 -0
- package/node/locales/daDK.js +33 -31
- package/node/locales/deDE.js +3 -1
- package/node/locales/elGR.js +2 -0
- package/node/locales/esES.js +2 -0
- package/node/locales/faIR.js +3 -1
- package/node/locales/fiFI.js +2 -0
- package/node/locales/frFR.js +2 -0
- package/node/locales/heIL.js +3 -1
- package/node/locales/huHU.js +120 -0
- package/node/locales/index.js +13 -0
- package/node/locales/itIT.js +2 -0
- package/node/locales/jaJP.js +2 -0
- package/node/locales/koKR.js +2 -0
- package/node/locales/nlNL.js +2 -0
- package/node/locales/plPL.js +3 -1
- package/node/locales/ptBR.js +3 -1
- package/node/locales/ruRU.js +2 -0
- package/node/locales/skSK.js +2 -0
- package/node/locales/trTR.js +3 -1
- package/node/locales/ukUA.js +2 -0
- package/node/locales/viVN.js +2 -0
- package/node/locales/zhCN.js +2 -0
- package/node/models/api/gridColumnSpanning.js +5 -0
- package/node/models/colDef/index.js +0 -13
- package/node/models/events/gridEvents.js +10 -3
- package/node/models/gridColumnSpanning.js +5 -0
- package/node/models/gridRows.js +1 -34
- package/node/models/index.js +13 -13
- package/node/models/params/gridPreferencePanelParams.js +5 -0
- package/node/models/params/index.js +13 -0
- package/package.json +4 -4
- package/utils/domUtils.d.ts +2 -2
- package/components/columnHeaders/ColumnHeaderFilterIcon.d.ts +0 -5
- package/hooks/core/preProcessing/gridPreProcessingApi.d.ts +0 -67
- package/hooks/core/preProcessing/index.d.ts +0 -3
- package/hooks/core/preProcessing/index.js +0 -3
- package/hooks/core/preProcessing/useGridPreProcessing.d.ts +0 -6
- package/hooks/core/preProcessing/useGridPreProcessing.js +0 -53
- package/hooks/core/preProcessing/useGridRegisterPreProcessor.d.ts +0 -7
- package/hooks/features/keyboard/useGridKeyboard.d.ts +0 -10
- package/hooks/features/keyboard/useGridKeyboard.js +0 -70
- package/legacy/hooks/core/preProcessing/index.js +0 -3
- package/legacy/hooks/core/preProcessing/useGridPreProcessing.js +0 -62
- package/legacy/hooks/features/keyboard/useGridKeyboard.js +0 -70
- package/modern/hooks/core/preProcessing/index.js +0 -3
- package/modern/hooks/core/preProcessing/useGridPreProcessing.js +0 -53
- package/modern/hooks/features/keyboard/useGridKeyboard.js +0 -70
- package/node/hooks/core/preProcessing/index.js +0 -44
- package/node/hooks/core/preProcessing/useGridPreProcessing.js +0 -72
- package/node/hooks/features/keyboard/useGridKeyboard.js +0 -91
|
@@ -2,4 +2,4 @@ import { generateUtilityClasses, generateUtilityClass } from '@mui/material';
|
|
|
2
2
|
export function getDataGridUtilityClass(slot) {
|
|
3
3
|
return generateUtilityClass('MuiDataGrid', slot);
|
|
4
4
|
}
|
|
5
|
-
export const gridClasses = generateUtilityClasses('MuiDataGrid', ['actionsCell', 'autoHeight', 'booleanCell', 'cell--editable', 'cell--editing', 'cell--textCenter', 'cell--textLeft', 'cell--textRight', 'cell--withRenderer', 'cell', 'cellContent', 'cellCheckbox', 'checkboxInput', 'columnHeader--alignCenter', 'columnHeader--alignLeft', 'columnHeader--alignRight', 'columnHeader--dragging', 'columnHeader--moving', 'columnHeader--numeric', 'columnHeader--sortable', 'columnHeader--sorted', 'columnHeader--filtered', 'columnHeader', 'columnHeaderCheckbox', 'columnHeaderDraggableContainer', 'columnHeaderDropZone', 'columnHeaderTitle', 'columnHeaderTitleContainer', 'columnHeaderTitleContainerContent', 'columnHeaders', 'columnHeadersInner', 'columnHeadersInner--scrollable', 'columnSeparator--resizable', 'columnSeparator--resizing', 'columnSeparator--sideLeft', 'columnSeparator--sideRight', 'columnSeparator', 'columnsPanel', 'columnsPanelRow', 'detailPanel', 'detailPanels', 'detailPanelToggleCell', 'detailPanelToggleCell--expanded', 'panel', 'panelHeader', 'panelWrapper', 'panelContent', 'panelFooter', 'paper', 'editBooleanCell', 'editInputCell', 'filterForm', 'filterFormDeleteIcon', 'filterFormLinkOperatorInput', 'filterFormColumnInput', 'filterFormOperatorInput', 'filterFormValueInput', 'filterIcon', 'footerContainer', 'iconButtonContainer', 'iconSeparator', 'main', 'menu', 'menuIcon', 'menuIconButton', 'menuOpen', 'menuList', 'overlay', 'root', 'row--editable', 'row--editing', 'row', 'row--
|
|
5
|
+
export const gridClasses = generateUtilityClasses('MuiDataGrid', ['actionsCell', 'autoHeight', 'booleanCell', 'cell--editable', 'cell--editing', 'cell--textCenter', 'cell--textLeft', 'cell--textRight', 'cell--withRenderer', 'cell', 'cellContent', 'cellCheckbox', 'checkboxInput', 'columnHeader--alignCenter', 'columnHeader--alignLeft', 'columnHeader--alignRight', 'columnHeader--dragging', 'columnHeader--moving', 'columnHeader--numeric', 'columnHeader--sortable', 'columnHeader--sorted', 'columnHeader--filtered', 'columnHeader', 'columnHeaderCheckbox', 'columnHeaderDraggableContainer', 'columnHeaderDropZone', 'columnHeaderTitle', 'columnHeaderTitleContainer', 'columnHeaderTitleContainerContent', 'columnHeaders', 'columnHeadersInner', 'columnHeadersInner--scrollable', 'columnSeparator--resizable', 'columnSeparator--resizing', 'columnSeparator--sideLeft', 'columnSeparator--sideRight', 'columnSeparator', 'columnsPanel', 'columnsPanelRow', 'detailPanel', 'detailPanels', 'detailPanelToggleCell', 'detailPanelToggleCell--expanded', 'panel', 'panelHeader', 'panelWrapper', 'panelContent', 'panelFooter', 'paper', 'editBooleanCell', 'editInputCell', 'filterForm', 'filterFormDeleteIcon', 'filterFormLinkOperatorInput', 'filterFormColumnInput', 'filterFormOperatorInput', 'filterFormValueInput', 'filterIcon', 'footerContainer', 'iconButtonContainer', 'iconSeparator', 'main', 'menu', 'menuIcon', 'menuIconButton', 'menuOpen', 'menuList', 'overlay', 'root', 'row', 'row--editable', 'row--editing', 'row--lastVisible', 'row--dragging', 'rowReorderCellPlaceholder', 'rowCount', 'rowReorderCellContainer', 'rowReorderCell', 'rowReorderCell--draggable', 'scrollArea--left', 'scrollArea--right', 'scrollArea', 'selectedRowCount', 'sortIcon', 'toolbarContainer', 'toolbarFilterList', 'virtualScroller', 'virtualScrollerContent', 'virtualScrollerContent--overflowed', 'virtualScrollerRenderZone', 'pinnedColumns', 'pinnedColumns--left', 'pinnedColumns--right', 'pinnedColumnHeaders', 'pinnedColumnHeaders--left', 'pinnedColumnHeaders--right', 'withBorder', 'treeDataGroupingCell', 'treeDataGroupingCellToggle', 'groupingCriteriaCell', 'groupingCriteriaCellToggle']);
|
|
@@ -103,5 +103,7 @@ export const GRID_DEFAULT_LOCALE_TEXT = {
|
|
|
103
103
|
expandDetailPanel: 'Expand',
|
|
104
104
|
collapseDetailPanel: 'Collapse',
|
|
105
105
|
// Used core components translation keys
|
|
106
|
-
MuiTablePagination: {}
|
|
106
|
+
MuiTablePagination: {},
|
|
107
|
+
// Row reordering text
|
|
108
|
+
rowReorderingHeaderName: 'Row reordering'
|
|
107
109
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
2
|
+
import _toPropertyKey from "@babel/runtime/helpers/esm/toPropertyKey";
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import { useGridApiMethod } from '../../utils/useGridApiMethod';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Implement the Pipeline Pattern
|
|
8
|
+
*
|
|
9
|
+
* More information and detailed example in (TODO add link to technical doc when ready)
|
|
10
|
+
*
|
|
11
|
+
* Some plugins contains custom logic to enrich data provided by other plugins or components.
|
|
12
|
+
* For instance, the row grouping plugin needs to add / remove the grouping columns when the grid columns are updated.
|
|
13
|
+
*
|
|
14
|
+
* =====================================================================================================================
|
|
15
|
+
*
|
|
16
|
+
* The plugin containing the custom logic must use:
|
|
17
|
+
*
|
|
18
|
+
* - `useGridRegisterPipeProcessor` to register their processor.
|
|
19
|
+
*
|
|
20
|
+
* - `apiRef.current.unstable_requestPipeProcessorsApplication` to imperatively re-apply a group.
|
|
21
|
+
* This method should be used in last resort.
|
|
22
|
+
* Most of the time, the application should be triggered by an update on the deps of the processor.
|
|
23
|
+
*
|
|
24
|
+
* =====================================================================================================================
|
|
25
|
+
*
|
|
26
|
+
* The plugin or component that needs to enrich its data must use:
|
|
27
|
+
*
|
|
28
|
+
* - `apiRef.current.unstable_applyPipeProcessors` to run in chain all the processors of a given group.
|
|
29
|
+
*
|
|
30
|
+
* - `useGridRegisterPipeApplier` to re-apply the whole pipe when requested.
|
|
31
|
+
* The applier will be called when:
|
|
32
|
+
* * a processor is registered.
|
|
33
|
+
* * `apiRef.current.unstable_requestPipeProcessorsApplication` is called for the given group.
|
|
34
|
+
*/
|
|
35
|
+
export const useGridPipeProcessing = apiRef => {
|
|
36
|
+
const processorsCache = React.useRef({});
|
|
37
|
+
const runAppliers = React.useCallback(groupCache => {
|
|
38
|
+
if (!groupCache) {
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
Object.values(groupCache.appliers).forEach(callback => {
|
|
43
|
+
callback();
|
|
44
|
+
});
|
|
45
|
+
}, []);
|
|
46
|
+
const registerPipeProcessor = React.useCallback((group, id, processor) => {
|
|
47
|
+
if (!processorsCache.current[group]) {
|
|
48
|
+
processorsCache.current[group] = {
|
|
49
|
+
processors: {},
|
|
50
|
+
appliers: {}
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
const groupCache = processorsCache.current[group];
|
|
55
|
+
const oldProcessor = groupCache.processors[id];
|
|
56
|
+
|
|
57
|
+
if (oldProcessor !== processor) {
|
|
58
|
+
groupCache.processors[id] = processor;
|
|
59
|
+
runAppliers(groupCache);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
return () => {
|
|
63
|
+
const _processors = processorsCache.current[group].processors,
|
|
64
|
+
otherProcessors = _objectWithoutPropertiesLoose(_processors, [id].map(_toPropertyKey));
|
|
65
|
+
|
|
66
|
+
processorsCache.current[group].processors = otherProcessors;
|
|
67
|
+
};
|
|
68
|
+
}, [runAppliers]);
|
|
69
|
+
const registerPipeApplier = React.useCallback((group, id, applier) => {
|
|
70
|
+
if (!processorsCache.current[group]) {
|
|
71
|
+
processorsCache.current[group] = {
|
|
72
|
+
processors: {},
|
|
73
|
+
appliers: {}
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
processorsCache.current[group].appliers[id] = applier;
|
|
78
|
+
return () => {
|
|
79
|
+
const _appliers = processorsCache.current[group].appliers,
|
|
80
|
+
otherAppliers = _objectWithoutPropertiesLoose(_appliers, [id].map(_toPropertyKey));
|
|
81
|
+
|
|
82
|
+
processorsCache.current[group].appliers = otherAppliers;
|
|
83
|
+
};
|
|
84
|
+
}, []);
|
|
85
|
+
const requestPipeProcessorsApplication = React.useCallback(group => {
|
|
86
|
+
const groupCache = processorsCache.current[group];
|
|
87
|
+
runAppliers(groupCache);
|
|
88
|
+
}, [runAppliers]);
|
|
89
|
+
const applyPipeProcessors = React.useCallback((...args) => {
|
|
90
|
+
const [group, value, context] = args;
|
|
91
|
+
|
|
92
|
+
if (!processorsCache.current[group]) {
|
|
93
|
+
return value;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
const preProcessors = Object.values(processorsCache.current[group].processors);
|
|
97
|
+
return preProcessors.reduce((acc, preProcessor) => {
|
|
98
|
+
return preProcessor(acc, context);
|
|
99
|
+
}, value);
|
|
100
|
+
}, []);
|
|
101
|
+
const preProcessingApi = {
|
|
102
|
+
unstable_registerPipeProcessor: registerPipeProcessor,
|
|
103
|
+
unstable_registerPipeApplier: registerPipeApplier,
|
|
104
|
+
unstable_requestPipeProcessorsApplication: requestPipeProcessorsApplication,
|
|
105
|
+
unstable_applyPipeProcessors: applyPipeProcessors
|
|
106
|
+
};
|
|
107
|
+
useGridApiMethod(apiRef, preProcessingApi, 'GridPipeProcessingApi');
|
|
108
|
+
};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { useFirstRender } from '../../utils/useFirstRender';
|
|
3
|
+
export const useGridRegisterPipeApplier = (apiRef, group, callback) => {
|
|
4
|
+
const cleanup = React.useRef();
|
|
5
|
+
const id = React.useRef(`mui-${Math.round(Math.random() * 1e9)}`);
|
|
6
|
+
const registerPreProcessor = React.useCallback(() => {
|
|
7
|
+
cleanup.current = apiRef.current.unstable_registerPipeApplier(group, id.current, callback);
|
|
8
|
+
}, [apiRef, callback, group]);
|
|
9
|
+
useFirstRender(() => {
|
|
10
|
+
registerPreProcessor();
|
|
11
|
+
});
|
|
12
|
+
const isFirstRender = React.useRef(true);
|
|
13
|
+
React.useEffect(() => {
|
|
14
|
+
if (isFirstRender.current) {
|
|
15
|
+
isFirstRender.current = false;
|
|
16
|
+
} else {
|
|
17
|
+
registerPreProcessor();
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
return () => {
|
|
21
|
+
if (cleanup.current) {
|
|
22
|
+
cleanup.current();
|
|
23
|
+
cleanup.current = null;
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
}, [registerPreProcessor]);
|
|
27
|
+
};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { useFirstRender } from '../../utils/useFirstRender';
|
|
3
|
+
export const useGridRegisterPipeProcessor = (apiRef, group, callback) => {
|
|
4
|
+
const cleanup = React.useRef();
|
|
5
|
+
const id = React.useRef(`mui-${Math.round(Math.random() * 1e9)}`);
|
|
6
|
+
const registerPreProcessor = React.useCallback(() => {
|
|
7
|
+
cleanup.current = apiRef.current.unstable_registerPipeProcessor(group, id.current, callback);
|
|
8
|
+
}, [apiRef, callback, group]);
|
|
9
|
+
useFirstRender(() => {
|
|
10
|
+
registerPreProcessor();
|
|
11
|
+
});
|
|
12
|
+
const isFirstRender = React.useRef(true);
|
|
13
|
+
React.useEffect(() => {
|
|
14
|
+
if (isFirstRender.current) {
|
|
15
|
+
isFirstRender.current = false;
|
|
16
|
+
} else {
|
|
17
|
+
registerPreProcessor();
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
return () => {
|
|
21
|
+
if (cleanup.current) {
|
|
22
|
+
cleanup.current();
|
|
23
|
+
cleanup.current = null;
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
}, [registerPreProcessor]);
|
|
27
|
+
};
|
|
@@ -13,31 +13,42 @@ export const GRID_STRATEGIES_PROCESSORS = {
|
|
|
13
13
|
/**
|
|
14
14
|
* Implements a variant of the Strategy Pattern (see https://en.wikipedia.org/wiki/Strategy_pattern)
|
|
15
15
|
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
16
|
+
* More information and detailed example in (TODO add link to technical doc when ready)
|
|
17
|
+
*
|
|
18
|
+
* Some plugins contains custom logic that must only be applied if the right strategy is active.
|
|
19
|
+
* For instance, the row grouping plugin has a custom filtering algorithm.
|
|
20
|
+
* This algorithm must be applied by the filtering plugin if the row grouping is the current way of grouping rows,
|
|
21
|
+
* but not if the tree data is the current way of grouping rows.
|
|
22
|
+
*
|
|
23
|
+
* =====================================================================================================================
|
|
24
|
+
*
|
|
25
|
+
* The plugin containing the custom logic must use:
|
|
26
|
+
*
|
|
27
|
+
* - `useGridRegisterStrategyProcessor` to register their processor.
|
|
28
|
+
* When the processor of the active strategy changes, it will fire `GridEvents.activeStrategyProcessorChange` to re-apply the processor.
|
|
21
29
|
*
|
|
22
|
-
* These plugins must use:
|
|
23
|
-
* - `apiRef.current.unstable_registerStrategyProcessor` to register their processors.
|
|
24
30
|
* - `apiRef.current.unstable_setStrategyAvailability` to tell if their strategy can be used.
|
|
25
31
|
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
* -
|
|
32
|
+
* =====================================================================================================================
|
|
33
|
+
*
|
|
34
|
+
* The plugin or component that needs to apply the custom logic of the current strategy must use:
|
|
35
|
+
*
|
|
36
|
+
* - `apiRef.current.unstable_applyStrategyProcessor` to run the processor of the active strategy for a given processor name.
|
|
31
37
|
*
|
|
32
|
-
* These hooks must use:
|
|
33
|
-
* - `apiRef.current.unstable_applyStrategyProcessor` to run a processor.
|
|
34
38
|
* - `GridEvents.strategyAvailabilityChange` to update something when the active strategy changes.
|
|
35
39
|
* Warning: Be careful not to apply the processor several times.
|
|
36
40
|
* For instance `GridEvents.rowsSet` is fired by `useGridRows` whenever the active strategy changes.
|
|
37
41
|
* So listening to both would most likely run your logic twice.
|
|
38
|
-
*
|
|
42
|
+
*
|
|
43
|
+
* - `GridEvents.activeStrategyProcessorChange` to update something when the processor of the active strategy changes.
|
|
44
|
+
*
|
|
45
|
+
* =====================================================================================================================
|
|
39
46
|
*
|
|
40
47
|
* Each processor name is part of a strategy group which can only have one active strategy at the time.
|
|
48
|
+
* For now, there is only one strategy group named `rowTree` which customize
|
|
49
|
+
* - row tree creation algorithm.
|
|
50
|
+
* - sorting algorithm.
|
|
51
|
+
* - filtering algorithm.
|
|
41
52
|
*/
|
|
42
53
|
export const useGridStrategyProcessing = apiRef => {
|
|
43
54
|
const availableStrategies = React.useRef(new Map());
|
|
@@ -2,7 +2,7 @@ import { useGridLoggerFactory } from './useGridLoggerFactory';
|
|
|
2
2
|
import { useGridApiInitialization } from './useGridApiInitialization';
|
|
3
3
|
import { useGridErrorHandler } from './useGridErrorHandler';
|
|
4
4
|
import { useGridLocaleText } from './useGridLocaleText';
|
|
5
|
-
import {
|
|
5
|
+
import { useGridPipeProcessing } from './pipeProcessing';
|
|
6
6
|
import { useGridStrategyProcessing } from './strategyProcessing';
|
|
7
7
|
import { useGridStateInitialization } from './useGridStateInitialization';
|
|
8
8
|
/**
|
|
@@ -14,7 +14,7 @@ export const useGridInitialization = (inputApiRef, props) => {
|
|
|
14
14
|
useGridLoggerFactory(apiRef, props);
|
|
15
15
|
useGridErrorHandler(apiRef, props);
|
|
16
16
|
useGridStateInitialization(apiRef, props);
|
|
17
|
-
|
|
17
|
+
useGridPipeProcessing(apiRef);
|
|
18
18
|
useGridStrategyProcessing(apiRef);
|
|
19
19
|
useGridLocaleText(apiRef, props);
|
|
20
20
|
return apiRef;
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import * as React from 'react';
|
|
3
|
+
import * as ReactDOM from 'react-dom';
|
|
3
4
|
import { useForkRef } from '@mui/material/utils';
|
|
5
|
+
import { defaultMemoize } from 'reselect';
|
|
4
6
|
import { useGridApiContext } from '../../utils/useGridApiContext';
|
|
5
7
|
import { useGridSelector } from '../../utils/useGridSelector';
|
|
6
8
|
import { gridVisibleColumnDefinitionsSelector, gridColumnPositionsSelector } from '../columns/gridColumnsSelector';
|
|
@@ -13,7 +15,15 @@ import { useGridRootProps } from '../../utils/useGridRootProps';
|
|
|
13
15
|
import { useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
|
|
14
16
|
import { GridEvents } from '../../../models/events';
|
|
15
17
|
import { GridColumnHeaderItem } from '../../../components/columnHeaders/GridColumnHeaderItem';
|
|
18
|
+
import { getFirstColumnIndexToRender } from '../columns/gridColumnsUtils';
|
|
19
|
+
import { useGridVisibleRows } from '../../utils/useGridVisibleRows';
|
|
20
|
+
import { getRenderableIndexes } from '../virtualization/useGridVirtualScroller';
|
|
16
21
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
22
|
+
|
|
23
|
+
function isUIEvent(event) {
|
|
24
|
+
return !!event.target;
|
|
25
|
+
}
|
|
26
|
+
|
|
17
27
|
export const useGridColumnHeaders = props => {
|
|
18
28
|
const {
|
|
19
29
|
innerRef: innerRefProp,
|
|
@@ -37,18 +47,43 @@ export const useGridColumnHeaders = props => {
|
|
|
37
47
|
const [renderContext, setRenderContext] = React.useState(null);
|
|
38
48
|
const prevRenderContext = React.useRef(renderContext);
|
|
39
49
|
const prevScrollLeft = React.useRef(0);
|
|
50
|
+
const currentPage = useGridVisibleRows(apiRef, rootProps);
|
|
40
51
|
React.useEffect(() => {
|
|
41
52
|
apiRef.current.columnHeadersContainerElementRef.current.scrollLeft = 0;
|
|
42
|
-
}, [apiRef]);
|
|
53
|
+
}, [apiRef]); // memoize `getFirstColumnIndexToRender`, since it's called on scroll
|
|
54
|
+
|
|
55
|
+
const getFirstColumnIndexToRenderRef = React.useRef(defaultMemoize(getFirstColumnIndexToRender, {
|
|
56
|
+
equalityCheck: (a, b) => ['firstColumnIndex', 'minColumnIndex', 'columnBuffer'].every(key => a[key] === b[key])
|
|
57
|
+
}));
|
|
43
58
|
const updateInnerPosition = React.useCallback(nextRenderContext => {
|
|
44
|
-
const
|
|
59
|
+
const [firstRowToRender, lastRowToRender] = getRenderableIndexes({
|
|
60
|
+
firstIndex: nextRenderContext.firstRowIndex,
|
|
61
|
+
lastIndex: nextRenderContext.lastRowIndex,
|
|
62
|
+
minFirstIndex: 0,
|
|
63
|
+
maxLastIndex: currentPage.rows.length,
|
|
64
|
+
buffer: rootProps.rowBuffer
|
|
65
|
+
});
|
|
66
|
+
const firstColumnToRender = getFirstColumnIndexToRenderRef.current({
|
|
67
|
+
firstColumnIndex: nextRenderContext.firstColumnIndex,
|
|
68
|
+
minColumnIndex,
|
|
69
|
+
columnBuffer: rootProps.columnBuffer,
|
|
70
|
+
firstRowToRender,
|
|
71
|
+
lastRowToRender,
|
|
72
|
+
apiRef,
|
|
73
|
+
visibleRows: currentPage.rows
|
|
74
|
+
});
|
|
45
75
|
const offset = firstColumnToRender > 0 ? prevScrollLeft.current - columnPositions[firstColumnToRender] : prevScrollLeft.current;
|
|
46
76
|
innerRef.current.style.transform = `translate3d(${-offset}px, 0px, 0px)`;
|
|
47
|
-
}, [columnPositions, minColumnIndex, rootProps.columnBuffer]);
|
|
77
|
+
}, [columnPositions, minColumnIndex, rootProps.columnBuffer, apiRef, currentPage.rows, rootProps.rowBuffer]);
|
|
78
|
+
React.useLayoutEffect(() => {
|
|
79
|
+
if (renderContext) {
|
|
80
|
+
updateInnerPosition(renderContext);
|
|
81
|
+
}
|
|
82
|
+
}, [renderContext, updateInnerPosition]);
|
|
48
83
|
const handleScroll = React.useCallback(({
|
|
49
84
|
left,
|
|
50
85
|
renderContext: nextRenderContext = null
|
|
51
|
-
}) => {
|
|
86
|
+
}, event) => {
|
|
52
87
|
if (!innerRef.current) {
|
|
53
88
|
return;
|
|
54
89
|
} // Ignore vertical scroll.
|
|
@@ -59,15 +94,32 @@ export const useGridColumnHeaders = props => {
|
|
|
59
94
|
return;
|
|
60
95
|
}
|
|
61
96
|
|
|
62
|
-
prevScrollLeft.current = left;
|
|
97
|
+
prevScrollLeft.current = left; // We can only update the position when we guarantee that the render context has been
|
|
98
|
+
// rendered. This is achieved using ReactDOM.flushSync or when the context doesn't change.
|
|
99
|
+
|
|
100
|
+
let canUpdateInnerPosition = false;
|
|
63
101
|
|
|
64
102
|
if (nextRenderContext !== prevRenderContext.current || !prevRenderContext.current) {
|
|
65
|
-
|
|
103
|
+
// ReactDOM.flushSync cannot be called on `scroll` events fired inside effects
|
|
104
|
+
if (isUIEvent(event)) {
|
|
105
|
+
// To prevent flickering, the inner position can only be updated after the new context has
|
|
106
|
+
// been rendered. ReactDOM.flushSync ensures that the state changes will happen before
|
|
107
|
+
// updating the position.
|
|
108
|
+
ReactDOM.flushSync(() => {
|
|
109
|
+
setRenderContext(nextRenderContext);
|
|
110
|
+
});
|
|
111
|
+
canUpdateInnerPosition = true;
|
|
112
|
+
} else {
|
|
113
|
+
setRenderContext(nextRenderContext);
|
|
114
|
+
}
|
|
115
|
+
|
|
66
116
|
prevRenderContext.current = nextRenderContext;
|
|
117
|
+
} else {
|
|
118
|
+
canUpdateInnerPosition = true;
|
|
67
119
|
} // Pass directly the render context to avoid waiting for the next render
|
|
68
120
|
|
|
69
121
|
|
|
70
|
-
if (nextRenderContext) {
|
|
122
|
+
if (nextRenderContext && canUpdateInnerPosition) {
|
|
71
123
|
updateInnerPosition(nextRenderContext);
|
|
72
124
|
}
|
|
73
125
|
}, [updateInnerPosition]);
|
|
@@ -93,7 +145,22 @@ export const useGridColumnHeaders = props => {
|
|
|
93
145
|
}
|
|
94
146
|
|
|
95
147
|
const columns = [];
|
|
96
|
-
const
|
|
148
|
+
const [firstRowToRender, lastRowToRender] = getRenderableIndexes({
|
|
149
|
+
firstIndex: nextRenderContext.firstRowIndex,
|
|
150
|
+
lastIndex: nextRenderContext.lastRowIndex,
|
|
151
|
+
minFirstIndex: 0,
|
|
152
|
+
maxLastIndex: currentPage.rows.length,
|
|
153
|
+
buffer: rootProps.rowBuffer
|
|
154
|
+
});
|
|
155
|
+
const firstColumnToRender = getFirstColumnIndexToRenderRef.current({
|
|
156
|
+
firstColumnIndex: nextRenderContext.firstColumnIndex,
|
|
157
|
+
minColumnIndex: minFirstColumn,
|
|
158
|
+
columnBuffer: rootProps.columnBuffer,
|
|
159
|
+
apiRef,
|
|
160
|
+
firstRowToRender,
|
|
161
|
+
lastRowToRender,
|
|
162
|
+
visibleRows: currentPage.rows
|
|
163
|
+
});
|
|
97
164
|
const lastColumnToRender = Math.min(nextRenderContext.lastColumnIndex + rootProps.columnBuffer, maxLastColumn);
|
|
98
165
|
const renderedColumns = visibleColumns.slice(firstColumnToRender, lastColumnToRender);
|
|
99
166
|
|
|
@@ -113,11 +180,11 @@ export const useGridColumnHeaders = props => {
|
|
|
113
180
|
column: column,
|
|
114
181
|
colIndex: columnIndex,
|
|
115
182
|
isResizing: resizeCol === column.field,
|
|
116
|
-
isLastColumn: columnIndex ===
|
|
183
|
+
isLastColumn: columnIndex === visibleColumns.length - 1,
|
|
117
184
|
extendRowFullWidth: !rootProps.disableExtendRowFullWidth,
|
|
118
185
|
hasFocus: hasFocus,
|
|
119
186
|
tabIndex: tabIndex
|
|
120
|
-
}, other),
|
|
187
|
+
}, other), column.field));
|
|
121
188
|
}
|
|
122
189
|
|
|
123
190
|
return columns;
|
|
@@ -132,7 +199,6 @@ export const useGridColumnHeaders = props => {
|
|
|
132
199
|
renderContext,
|
|
133
200
|
getColumns,
|
|
134
201
|
isDragging: !!dragCol,
|
|
135
|
-
updateInnerPosition,
|
|
136
202
|
getRootProps: (other = {}) => _extends({
|
|
137
203
|
style: rootStyle
|
|
138
204
|
}, other),
|
|
@@ -79,5 +79,6 @@ export const useGridColumnMenu = apiRef => {
|
|
|
79
79
|
*/
|
|
80
80
|
|
|
81
81
|
useGridApiEventHandler(apiRef, GridEvents.columnResizeStart, hideColumnMenu);
|
|
82
|
-
useGridApiEventHandler(apiRef, GridEvents.
|
|
82
|
+
useGridApiEventHandler(apiRef, GridEvents.virtualScrollerWheel, apiRef.current.hideColumnMenu);
|
|
83
|
+
useGridApiEventHandler(apiRef, GridEvents.virtualScrollerTouchMove, apiRef.current.hideColumnMenu);
|
|
83
84
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
-
import { DEFAULT_GRID_COL_TYPE_KEY, getGridDefaultColumnTypes } from '../../../
|
|
2
|
+
import { DEFAULT_GRID_COL_TYPE_KEY, getGridDefaultColumnTypes } from '../../../colDef';
|
|
3
3
|
import { gridColumnsSelector, gridColumnVisibilityModelSelector } from './gridColumnsSelector';
|
|
4
4
|
import { clamp } from '../../../utils/utils';
|
|
5
5
|
export const COLUMNS_DIMENSION_PROPERTIES = ['maxWidth', 'minWidth', 'width', 'flex'];
|
|
@@ -206,9 +206,15 @@ export const applyInitialState = (columnsState, initialState) => {
|
|
|
206
206
|
|
|
207
207
|
for (let i = 0; i < columnsWithUpdatedDimensions.length; i += 1) {
|
|
208
208
|
const field = columnsWithUpdatedDimensions[i];
|
|
209
|
-
|
|
209
|
+
|
|
210
|
+
const newColDef = _extends({}, newColumnLookup[field], {
|
|
210
211
|
hasBeenResized: true
|
|
211
212
|
});
|
|
213
|
+
|
|
214
|
+
Object.entries(dimensions[field]).forEach(([key, value]) => {
|
|
215
|
+
newColDef[key] = value === -1 ? Infinity : value;
|
|
216
|
+
});
|
|
217
|
+
newColumnLookup[field] = newColDef;
|
|
212
218
|
}
|
|
213
219
|
|
|
214
220
|
const newColumnsState = {
|
|
@@ -243,7 +249,7 @@ export const createColumnsState = ({
|
|
|
243
249
|
apiRef,
|
|
244
250
|
columnsToUpsert,
|
|
245
251
|
initialState,
|
|
246
|
-
|
|
252
|
+
columnTypes,
|
|
247
253
|
currentColumnVisibilityModel = gridColumnVisibilityModelSelector(apiRef),
|
|
248
254
|
shouldRegenColumnVisibilityModelFromColumns,
|
|
249
255
|
keepOnlyColumnsToUpsert = false
|
|
@@ -251,7 +257,7 @@ export const createColumnsState = ({
|
|
|
251
257
|
const isInsideStateInitializer = !apiRef.current.state.columns;
|
|
252
258
|
let columnsStateWithoutColumnVisibilityModel;
|
|
253
259
|
|
|
254
|
-
if (isInsideStateInitializer
|
|
260
|
+
if (isInsideStateInitializer) {
|
|
255
261
|
columnsStateWithoutColumnVisibilityModel = {
|
|
256
262
|
all: [],
|
|
257
263
|
lookup: {}
|
|
@@ -259,33 +265,69 @@ export const createColumnsState = ({
|
|
|
259
265
|
} else {
|
|
260
266
|
const currentState = gridColumnsSelector(apiRef.current.state);
|
|
261
267
|
columnsStateWithoutColumnVisibilityModel = {
|
|
262
|
-
all: [...currentState.all],
|
|
263
|
-
lookup: _extends({}, currentState.lookup)
|
|
268
|
+
all: keepOnlyColumnsToUpsert ? [] : [...currentState.all],
|
|
269
|
+
lookup: _extends({}, currentState.lookup) // Will be cleaned later if keepOnlyColumnsToUpsert=true
|
|
270
|
+
|
|
264
271
|
};
|
|
265
272
|
}
|
|
266
273
|
|
|
274
|
+
let columnsToKeep = {};
|
|
275
|
+
|
|
276
|
+
if (keepOnlyColumnsToUpsert && !isInsideStateInitializer) {
|
|
277
|
+
columnsToKeep = Object.keys(columnsStateWithoutColumnVisibilityModel.lookup).reduce((acc, key) => _extends({}, acc, {
|
|
278
|
+
[key]: false
|
|
279
|
+
}), {});
|
|
280
|
+
}
|
|
281
|
+
|
|
267
282
|
const columnsToUpsertLookup = {};
|
|
268
283
|
columnsToUpsert.forEach(newColumn => {
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
284
|
+
const {
|
|
285
|
+
field
|
|
286
|
+
} = newColumn;
|
|
287
|
+
columnsToUpsertLookup[field] = true;
|
|
288
|
+
columnsToKeep[field] = true;
|
|
289
|
+
let existingState = columnsStateWithoutColumnVisibilityModel.lookup[field];
|
|
290
|
+
|
|
291
|
+
if (existingState == null) {
|
|
272
292
|
// New Column
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
293
|
+
existingState = _extends({}, getGridColDef(columnTypes, newColumn.type), {
|
|
294
|
+
// TODO v6: Inline `getGridColDef`
|
|
295
|
+
field,
|
|
296
|
+
hasBeenResized: false
|
|
297
|
+
});
|
|
298
|
+
columnsStateWithoutColumnVisibilityModel.all.push(field);
|
|
299
|
+
} else if (keepOnlyColumnsToUpsert) {
|
|
300
|
+
columnsStateWithoutColumnVisibilityModel.all.push(field);
|
|
301
|
+
}
|
|
277
302
|
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
303
|
+
let hasBeenResized = existingState.hasBeenResized;
|
|
304
|
+
COLUMNS_DIMENSION_PROPERTIES.forEach(key => {
|
|
305
|
+
if (newColumn[key] !== undefined) {
|
|
306
|
+
hasBeenResized = true;
|
|
281
307
|
|
|
282
|
-
|
|
283
|
-
|
|
308
|
+
if (newColumn[key] === -1) {
|
|
309
|
+
newColumn[key] = Infinity;
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
});
|
|
313
|
+
columnsStateWithoutColumnVisibilityModel.lookup[field] = _extends({}, existingState, {
|
|
314
|
+
hide: newColumn.hide == null ? false : newColumn.hide
|
|
315
|
+
}, newColumn, {
|
|
316
|
+
hasBeenResized
|
|
317
|
+
});
|
|
284
318
|
});
|
|
285
319
|
|
|
320
|
+
if (keepOnlyColumnsToUpsert && !isInsideStateInitializer) {
|
|
321
|
+
Object.keys(columnsStateWithoutColumnVisibilityModel.lookup).forEach(field => {
|
|
322
|
+
if (!columnsToKeep[field]) {
|
|
323
|
+
delete columnsStateWithoutColumnVisibilityModel.lookup[field];
|
|
324
|
+
}
|
|
325
|
+
});
|
|
326
|
+
}
|
|
327
|
+
|
|
286
328
|
const columnsLookupBeforePreProcessing = _extends({}, columnsStateWithoutColumnVisibilityModel.lookup);
|
|
287
329
|
|
|
288
|
-
const columnsStateWithPreProcessing = apiRef.current.
|
|
330
|
+
const columnsStateWithPreProcessing = apiRef.current.unstable_applyPipeProcessors('hydrateColumns', columnsStateWithoutColumnVisibilityModel); // TODO v6: remove the sync between the columns `hide` option and the model.
|
|
289
331
|
|
|
290
332
|
let columnVisibilityModel = {};
|
|
291
333
|
|
|
@@ -360,4 +402,47 @@ export const createColumnsState = ({
|
|
|
360
402
|
};
|
|
361
403
|
export const mergeColumnsState = columnsState => state => _extends({}, state, {
|
|
362
404
|
columns: columnsState
|
|
363
|
-
});
|
|
405
|
+
});
|
|
406
|
+
export function getFirstNonSpannedColumnToRender({
|
|
407
|
+
firstColumnToRender,
|
|
408
|
+
apiRef,
|
|
409
|
+
firstRowToRender,
|
|
410
|
+
lastRowToRender,
|
|
411
|
+
visibleRows
|
|
412
|
+
}) {
|
|
413
|
+
let firstNonSpannedColumnToRender = firstColumnToRender;
|
|
414
|
+
|
|
415
|
+
for (let i = firstRowToRender; i < lastRowToRender; i += 1) {
|
|
416
|
+
const row = visibleRows[i];
|
|
417
|
+
|
|
418
|
+
if (row) {
|
|
419
|
+
const rowId = visibleRows[i].id;
|
|
420
|
+
const cellColSpanInfo = apiRef.current.unstable_getCellColSpanInfo(rowId, firstColumnToRender);
|
|
421
|
+
|
|
422
|
+
if (cellColSpanInfo && cellColSpanInfo.spannedByColSpan) {
|
|
423
|
+
firstNonSpannedColumnToRender = cellColSpanInfo.leftVisibleCellIndex;
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
return firstNonSpannedColumnToRender;
|
|
429
|
+
}
|
|
430
|
+
export function getFirstColumnIndexToRender({
|
|
431
|
+
firstColumnIndex,
|
|
432
|
+
minColumnIndex,
|
|
433
|
+
columnBuffer,
|
|
434
|
+
firstRowToRender,
|
|
435
|
+
lastRowToRender,
|
|
436
|
+
apiRef,
|
|
437
|
+
visibleRows
|
|
438
|
+
}) {
|
|
439
|
+
const initialFirstColumnToRender = Math.max(firstColumnIndex - columnBuffer, minColumnIndex);
|
|
440
|
+
const firstColumnToRender = getFirstNonSpannedColumnToRender({
|
|
441
|
+
firstColumnToRender: initialFirstColumnToRender,
|
|
442
|
+
apiRef,
|
|
443
|
+
firstRowToRender,
|
|
444
|
+
lastRowToRender,
|
|
445
|
+
visibleRows
|
|
446
|
+
});
|
|
447
|
+
return firstColumnToRender;
|
|
448
|
+
}
|