@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
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { useGridApiMethod } from '../../utils/useGridApiMethod';
|
|
3
|
+
import { useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
|
|
4
|
+
import { GridEvents } from '../../../models/events/gridEvents';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* @requires useGridColumns (method, event)
|
|
8
|
+
* @requires useGridParamsApi (method)
|
|
9
|
+
*/
|
|
10
|
+
export const useGridColumnSpanning = apiRef => {
|
|
11
|
+
const lookup = React.useRef({});
|
|
12
|
+
const setCellColSpanInfo = React.useCallback((rowId, columnIndex, cellColSpanInfo) => {
|
|
13
|
+
const sizes = lookup.current;
|
|
14
|
+
|
|
15
|
+
if (!sizes[rowId]) {
|
|
16
|
+
sizes[rowId] = {};
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
sizes[rowId][columnIndex] = cellColSpanInfo;
|
|
20
|
+
}, []);
|
|
21
|
+
const getCellColSpanInfo = React.useCallback((rowId, columnIndex) => {
|
|
22
|
+
return lookup.current[rowId]?.[columnIndex];
|
|
23
|
+
}, []); // Calculate `colSpan` for the cell.
|
|
24
|
+
|
|
25
|
+
const calculateCellColSpan = React.useCallback(params => {
|
|
26
|
+
const {
|
|
27
|
+
columnIndex,
|
|
28
|
+
rowId,
|
|
29
|
+
minFirstColumnIndex,
|
|
30
|
+
maxLastColumnIndex
|
|
31
|
+
} = params;
|
|
32
|
+
const visibleColumns = apiRef.current.getVisibleColumns();
|
|
33
|
+
const columnsLength = visibleColumns.length;
|
|
34
|
+
const column = visibleColumns[columnIndex];
|
|
35
|
+
const colSpan = typeof column.colSpan === 'function' ? column.colSpan(apiRef.current.getCellParams(rowId, column.field)) : column.colSpan;
|
|
36
|
+
|
|
37
|
+
if (!colSpan || colSpan === 1) {
|
|
38
|
+
setCellColSpanInfo(rowId, columnIndex, {
|
|
39
|
+
spannedByColSpan: false,
|
|
40
|
+
cellProps: {
|
|
41
|
+
colSpan: 1,
|
|
42
|
+
width: column.computedWidth
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
return {
|
|
46
|
+
colSpan: 1
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
let width = column.computedWidth;
|
|
51
|
+
|
|
52
|
+
for (let j = 1; j < colSpan; j += 1) {
|
|
53
|
+
const nextColumnIndex = columnIndex + j; // Cells should be spanned only within their column section (left-pinned, right-pinned and unpinned).
|
|
54
|
+
|
|
55
|
+
if (nextColumnIndex >= minFirstColumnIndex && nextColumnIndex < maxLastColumnIndex) {
|
|
56
|
+
const nextColumn = visibleColumns[nextColumnIndex];
|
|
57
|
+
width += nextColumn.computedWidth;
|
|
58
|
+
setCellColSpanInfo(rowId, columnIndex + j, {
|
|
59
|
+
spannedByColSpan: true,
|
|
60
|
+
rightVisibleCellIndex: Math.min(columnIndex + colSpan, columnsLength - 1),
|
|
61
|
+
leftVisibleCellIndex: columnIndex
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
setCellColSpanInfo(rowId, columnIndex, {
|
|
66
|
+
spannedByColSpan: false,
|
|
67
|
+
cellProps: {
|
|
68
|
+
colSpan,
|
|
69
|
+
width
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
return {
|
|
75
|
+
colSpan
|
|
76
|
+
};
|
|
77
|
+
}, [apiRef, setCellColSpanInfo]); // Calculate `colSpan` for each cell in the row
|
|
78
|
+
|
|
79
|
+
const calculateColSpan = React.useCallback(({
|
|
80
|
+
rowId,
|
|
81
|
+
minFirstColumn,
|
|
82
|
+
maxLastColumn
|
|
83
|
+
}) => {
|
|
84
|
+
for (let i = minFirstColumn; i < maxLastColumn; i += 1) {
|
|
85
|
+
const cellProps = calculateCellColSpan({
|
|
86
|
+
columnIndex: i,
|
|
87
|
+
rowId,
|
|
88
|
+
minFirstColumnIndex: minFirstColumn,
|
|
89
|
+
maxLastColumnIndex: maxLastColumn
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
if (cellProps.colSpan > 1) {
|
|
93
|
+
i += cellProps.colSpan - 1;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}, [calculateCellColSpan]);
|
|
97
|
+
const columnSpanningApi = {
|
|
98
|
+
unstable_getCellColSpanInfo: getCellColSpanInfo,
|
|
99
|
+
unstable_calculateColSpan: calculateColSpan
|
|
100
|
+
};
|
|
101
|
+
useGridApiMethod(apiRef, columnSpanningApi, 'GridColumnSpanningAPI');
|
|
102
|
+
const handleColumnReorderChange = React.useCallback(() => {
|
|
103
|
+
// `colSpan` needs to be recalculated after column reordering
|
|
104
|
+
lookup.current = {};
|
|
105
|
+
}, []);
|
|
106
|
+
useGridApiEventHandler(apiRef, GridEvents.columnOrderChange, handleColumnReorderChange);
|
|
107
|
+
};
|
|
@@ -5,7 +5,7 @@ import { useGridApiMethod } from '../../utils/useGridApiMethod';
|
|
|
5
5
|
import { useGridLogger } from '../../utils/useGridLogger';
|
|
6
6
|
import { gridColumnFieldsSelector, gridColumnDefinitionsSelector, gridColumnLookupSelector, gridColumnsMetaSelector, gridColumnsSelector, gridColumnVisibilityModelSelector, gridVisibleColumnDefinitionsSelector, gridColumnPositionsSelector } from './gridColumnsSelector';
|
|
7
7
|
import { useGridApiEventHandler, useGridApiOptionHandler } from '../../utils/useGridApiEventHandler';
|
|
8
|
-
import {
|
|
8
|
+
import { useGridRegisterPipeProcessor, useGridRegisterPipeApplier } from '../../core/pipeProcessing';
|
|
9
9
|
import { hydrateColumnsWidth, computeColumnTypes, createColumnsState, mergeColumnsState, COLUMNS_DIMENSION_PROPERTIES } from './gridColumnsUtils';
|
|
10
10
|
import { GridPreferencePanelsValue } from '../preferencesPanel';
|
|
11
11
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
@@ -14,7 +14,7 @@ export const columnsStateInitializer = (state, props, apiRef) => {
|
|
|
14
14
|
const columnsTypes = computeColumnTypes(props.columnTypes);
|
|
15
15
|
const columnsState = createColumnsState({
|
|
16
16
|
apiRef,
|
|
17
|
-
columnsTypes,
|
|
17
|
+
columnTypes: columnsTypes,
|
|
18
18
|
columnsToUpsert: props.columns,
|
|
19
19
|
initialState: props.initialState?.columns,
|
|
20
20
|
shouldRegenColumnVisibilityModelFromColumns: !isUsingColumnVisibilityModel,
|
|
@@ -33,13 +33,15 @@ export const columnsStateInitializer = (state, props, apiRef) => {
|
|
|
33
33
|
|
|
34
34
|
export function useGridColumns(apiRef, props) {
|
|
35
35
|
const logger = useGridLogger(apiRef, 'useGridColumns');
|
|
36
|
-
const
|
|
36
|
+
const columnTypes = React.useMemo(() => computeColumnTypes(props.columnTypes), [props.columnTypes]);
|
|
37
|
+
const previousColumnsProp = React.useRef(props.columns);
|
|
38
|
+
const previousColumnTypesProp = React.useRef(columnTypes);
|
|
37
39
|
/**
|
|
38
40
|
* If `initialState.columns.columnVisibilityModel` or `columnVisibilityModel` was defined during the 1st render, we are directly updating the model
|
|
39
41
|
* If not, we keep the old behavior and update the `GridColDef.hide` option (which will update the state model through the `GridColDef.hide` => `columnVisibilityModel` sync in `createColumnsState`
|
|
40
42
|
*/
|
|
41
43
|
|
|
42
|
-
const isUsingColumnVisibilityModel = React.useRef(!!props.columnVisibilityModel || !!props.initialState?.columns?.columnVisibilityModel)
|
|
44
|
+
const isUsingColumnVisibilityModel = React.useRef(!!props.columnVisibilityModel || !!props.initialState?.columns?.columnVisibilityModel);
|
|
43
45
|
apiRef.current.unstable_updateControlState({
|
|
44
46
|
stateId: 'visibleColumns',
|
|
45
47
|
propModel: props.columnVisibilityModel,
|
|
@@ -76,7 +78,7 @@ export function useGridColumns(apiRef, props) {
|
|
|
76
78
|
apiRef.current.setState(state => _extends({}, state, {
|
|
77
79
|
columns: createColumnsState({
|
|
78
80
|
apiRef,
|
|
79
|
-
|
|
81
|
+
columnTypes,
|
|
80
82
|
columnsToUpsert: [],
|
|
81
83
|
initialState: undefined,
|
|
82
84
|
shouldRegenColumnVisibilityModelFromColumns: false,
|
|
@@ -86,24 +88,24 @@ export function useGridColumns(apiRef, props) {
|
|
|
86
88
|
}));
|
|
87
89
|
apiRef.current.forceUpdate();
|
|
88
90
|
}
|
|
89
|
-
}, [apiRef,
|
|
91
|
+
}, [apiRef, columnTypes]);
|
|
90
92
|
const updateColumns = React.useCallback(columns => {
|
|
91
93
|
const columnsState = createColumnsState({
|
|
92
94
|
apiRef,
|
|
93
|
-
|
|
95
|
+
columnTypes,
|
|
94
96
|
columnsToUpsert: columns,
|
|
95
97
|
initialState: undefined,
|
|
96
98
|
shouldRegenColumnVisibilityModelFromColumns: true,
|
|
97
99
|
keepOnlyColumnsToUpsert: false
|
|
98
100
|
});
|
|
99
101
|
setGridColumnsState(columnsState);
|
|
100
|
-
}, [apiRef, setGridColumnsState,
|
|
102
|
+
}, [apiRef, setGridColumnsState, columnTypes]);
|
|
101
103
|
const updateColumn = React.useCallback(column => apiRef.current.updateColumns([column]), [apiRef]);
|
|
102
104
|
const setColumnVisibility = React.useCallback((field, isVisible) => {
|
|
103
105
|
// We keep updating the `hide` option of `GridColDef` when not controlling the model to avoid any breaking change.
|
|
104
106
|
// `updateColumns` take care of updating the model itself if needs be.
|
|
105
107
|
// TODO v6: stop using the `hide` field even when the model is not defined
|
|
106
|
-
if (isUsingColumnVisibilityModel) {
|
|
108
|
+
if (isUsingColumnVisibilityModel.current) {
|
|
107
109
|
const columnVisibilityModel = gridColumnVisibilityModelSelector(apiRef);
|
|
108
110
|
const isCurrentlyVisible = columnVisibilityModel[field] ?? true;
|
|
109
111
|
|
|
@@ -129,7 +131,7 @@ export function useGridColumns(apiRef, props) {
|
|
|
129
131
|
};
|
|
130
132
|
apiRef.current.publishEvent(GridEvents.columnVisibilityChange, params);
|
|
131
133
|
}
|
|
132
|
-
}, [apiRef
|
|
134
|
+
}, [apiRef]);
|
|
133
135
|
const setColumnIndex = React.useCallback((field, targetIndexPosition) => {
|
|
134
136
|
const allColumns = gridColumnFieldsSelector(apiRef);
|
|
135
137
|
const oldIndexPosition = allColumns.findIndex(col => col === field);
|
|
@@ -190,7 +192,7 @@ export function useGridColumns(apiRef, props) {
|
|
|
190
192
|
const stateExportPreProcessing = React.useCallback(prevState => {
|
|
191
193
|
const columnsStateToExport = {};
|
|
192
194
|
|
|
193
|
-
if (isUsingColumnVisibilityModel) {
|
|
195
|
+
if (isUsingColumnVisibilityModel.current) {
|
|
194
196
|
const columnVisibilityModelToExport = gridColumnVisibilityModelSelector(apiRef);
|
|
195
197
|
const hasHiddenColumns = Object.values(columnVisibilityModelToExport).some(value => value === false);
|
|
196
198
|
|
|
@@ -206,7 +208,13 @@ export function useGridColumns(apiRef, props) {
|
|
|
206
208
|
if (colDef.hasBeenResized) {
|
|
207
209
|
const colDefDimensions = {};
|
|
208
210
|
COLUMNS_DIMENSION_PROPERTIES.forEach(propertyName => {
|
|
209
|
-
|
|
211
|
+
let propertyValue = colDef[propertyName];
|
|
212
|
+
|
|
213
|
+
if (propertyValue === Infinity) {
|
|
214
|
+
propertyValue = -1;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
colDefDimensions[propertyName] = propertyValue;
|
|
210
218
|
});
|
|
211
219
|
dimensions[colDef.field] = colDefDimensions;
|
|
212
220
|
}
|
|
@@ -219,9 +227,9 @@ export function useGridColumns(apiRef, props) {
|
|
|
219
227
|
return _extends({}, prevState, {
|
|
220
228
|
columns: columnsStateToExport
|
|
221
229
|
});
|
|
222
|
-
}, [apiRef
|
|
230
|
+
}, [apiRef]);
|
|
223
231
|
const stateRestorePreProcessing = React.useCallback((params, context) => {
|
|
224
|
-
const columnVisibilityModelToImport = isUsingColumnVisibilityModel ? context.stateToRestore.columns?.columnVisibilityModel : undefined;
|
|
232
|
+
const columnVisibilityModelToImport = isUsingColumnVisibilityModel.current ? context.stateToRestore.columns?.columnVisibilityModel : undefined;
|
|
225
233
|
const initialState = context.stateToRestore.columns;
|
|
226
234
|
|
|
227
235
|
if (columnVisibilityModelToImport == null && initialState == null) {
|
|
@@ -230,10 +238,10 @@ export function useGridColumns(apiRef, props) {
|
|
|
230
238
|
|
|
231
239
|
const columnsState = createColumnsState({
|
|
232
240
|
apiRef,
|
|
233
|
-
|
|
241
|
+
columnTypes,
|
|
234
242
|
columnsToUpsert: [],
|
|
235
243
|
initialState,
|
|
236
|
-
shouldRegenColumnVisibilityModelFromColumns: !isUsingColumnVisibilityModel,
|
|
244
|
+
shouldRegenColumnVisibilityModelFromColumns: !isUsingColumnVisibilityModel.current,
|
|
237
245
|
currentColumnVisibilityModel: columnVisibilityModelToImport,
|
|
238
246
|
keepOnlyColumnsToUpsert: false
|
|
239
247
|
});
|
|
@@ -244,7 +252,7 @@ export function useGridColumns(apiRef, props) {
|
|
|
244
252
|
}
|
|
245
253
|
|
|
246
254
|
return params;
|
|
247
|
-
}, [apiRef,
|
|
255
|
+
}, [apiRef, columnTypes]);
|
|
248
256
|
const preferencePanelPreProcessing = React.useCallback((initialValue, value) => {
|
|
249
257
|
if (value === GridPreferencePanelsValue.columns) {
|
|
250
258
|
const ColumnsPanel = props.components.ColumnsPanel;
|
|
@@ -253,29 +261,13 @@ export function useGridColumns(apiRef, props) {
|
|
|
253
261
|
|
|
254
262
|
return initialValue;
|
|
255
263
|
}, [props.components.ColumnsPanel, props.componentsProps?.columnsPanel]);
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
264
|
+
useGridRegisterPipeProcessor(apiRef, 'exportState', stateExportPreProcessing);
|
|
265
|
+
useGridRegisterPipeProcessor(apiRef, 'restoreState', stateRestorePreProcessing);
|
|
266
|
+
useGridRegisterPipeProcessor(apiRef, 'preferencePanel', preferencePanelPreProcessing);
|
|
259
267
|
/**
|
|
260
268
|
* EVENTS
|
|
261
269
|
*/
|
|
262
270
|
|
|
263
|
-
const handlePreProcessorRegister = React.useCallback(name => {
|
|
264
|
-
if (name !== 'hydrateColumns') {
|
|
265
|
-
return;
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
logger.info(`Columns pre-processing have changed, regenerating the columns`);
|
|
269
|
-
const columnsState = createColumnsState({
|
|
270
|
-
apiRef,
|
|
271
|
-
columnsTypes,
|
|
272
|
-
columnsToUpsert: [],
|
|
273
|
-
initialState: undefined,
|
|
274
|
-
shouldRegenColumnVisibilityModelFromColumns: !isUsingColumnVisibilityModel,
|
|
275
|
-
keepOnlyColumnsToUpsert: false
|
|
276
|
-
});
|
|
277
|
-
setGridColumnsState(columnsState);
|
|
278
|
-
}, [apiRef, logger, setGridColumnsState, columnsTypes, isUsingColumnVisibilityModel]);
|
|
279
271
|
const prevInnerWidth = React.useRef(null);
|
|
280
272
|
|
|
281
273
|
const handleGridSizeChange = viewportInnerSize => {
|
|
@@ -285,9 +277,25 @@ export function useGridColumns(apiRef, props) {
|
|
|
285
277
|
}
|
|
286
278
|
};
|
|
287
279
|
|
|
288
|
-
useGridApiEventHandler(apiRef, GridEvents.preProcessorRegister, handlePreProcessorRegister);
|
|
289
280
|
useGridApiEventHandler(apiRef, GridEvents.viewportInnerSizeChange, handleGridSizeChange);
|
|
290
281
|
useGridApiOptionHandler(apiRef, GridEvents.columnVisibilityChange, props.onColumnVisibilityChange);
|
|
282
|
+
/**
|
|
283
|
+
* APPLIERS
|
|
284
|
+
*/
|
|
285
|
+
|
|
286
|
+
const hydrateColumns = React.useCallback(() => {
|
|
287
|
+
logger.info(`Columns pipe processing have changed, regenerating the columns`);
|
|
288
|
+
const columnsState = createColumnsState({
|
|
289
|
+
apiRef,
|
|
290
|
+
columnTypes,
|
|
291
|
+
columnsToUpsert: [],
|
|
292
|
+
initialState: undefined,
|
|
293
|
+
shouldRegenColumnVisibilityModelFromColumns: !isUsingColumnVisibilityModel.current,
|
|
294
|
+
keepOnlyColumnsToUpsert: false
|
|
295
|
+
});
|
|
296
|
+
setGridColumnsState(columnsState);
|
|
297
|
+
}, [apiRef, logger, setGridColumnsState, columnTypes]);
|
|
298
|
+
useGridRegisterPipeApplier(apiRef, 'hydrateColumns', hydrateColumns);
|
|
291
299
|
/**
|
|
292
300
|
* EFFECTS
|
|
293
301
|
*/
|
|
@@ -302,17 +310,24 @@ export function useGridColumns(apiRef, props) {
|
|
|
302
310
|
}
|
|
303
311
|
|
|
304
312
|
logger.info(`GridColumns have changed, new length ${props.columns.length}`);
|
|
313
|
+
|
|
314
|
+
if (previousColumnsProp.current === props.columns && previousColumnTypesProp.current === columnTypes) {
|
|
315
|
+
return;
|
|
316
|
+
}
|
|
317
|
+
|
|
305
318
|
const columnsState = createColumnsState({
|
|
306
319
|
apiRef,
|
|
307
|
-
|
|
320
|
+
columnTypes,
|
|
308
321
|
initialState: undefined,
|
|
309
322
|
// If the user provides a model, we don't want to set it in the state here because it has it's dedicated `useEffect` which calls `setColumnVisibilityModel`
|
|
310
|
-
shouldRegenColumnVisibilityModelFromColumns: !isUsingColumnVisibilityModel,
|
|
323
|
+
shouldRegenColumnVisibilityModelFromColumns: !isUsingColumnVisibilityModel.current,
|
|
311
324
|
columnsToUpsert: props.columns,
|
|
312
325
|
keepOnlyColumnsToUpsert: true
|
|
313
326
|
});
|
|
327
|
+
previousColumnsProp.current = props.columns;
|
|
328
|
+
previousColumnTypesProp.current = columnTypes;
|
|
314
329
|
setGridColumnsState(columnsState);
|
|
315
|
-
}, [logger, apiRef, setGridColumnsState, props.columns,
|
|
330
|
+
}, [logger, apiRef, setGridColumnsState, props.columns, columnTypes]);
|
|
316
331
|
React.useEffect(() => {
|
|
317
332
|
if (props.columnVisibilityModel !== undefined) {
|
|
318
333
|
apiRef.current.setColumnVisibilityModel(props.columnVisibilityModel);
|
|
@@ -132,7 +132,8 @@ export function useGridDimensions(apiRef, props) {
|
|
|
132
132
|
const dimensionsApi = {
|
|
133
133
|
resize,
|
|
134
134
|
getRootDimensions,
|
|
135
|
-
unstable_getViewportPageSize: getViewportPageSize
|
|
135
|
+
unstable_getViewportPageSize: getViewportPageSize,
|
|
136
|
+
unstable_updateGridDimensionsRef: updateGridDimensionsRef
|
|
136
137
|
};
|
|
137
138
|
useGridApiMethod(apiRef, dimensionsApi, 'GridDimensionsApi');
|
|
138
139
|
const debounceResize = React.useMemo(() => debounce(resize, 60), [resize]);
|
|
@@ -143,12 +144,12 @@ export function useGridDimensions(apiRef, props) {
|
|
|
143
144
|
const isJSDOM = /jsdom/.test(window.navigator.userAgent);
|
|
144
145
|
|
|
145
146
|
if (size.height === 0 && !warningShown.current && !props.autoHeight && !isJSDOM) {
|
|
146
|
-
logger.warn(['The parent of the grid has an empty height.', 'You need to make sure the container has an intrinsic height.', 'The grid displays with a height of 0px.', '', 'You can find a solution in the docs:', 'https://mui.com/
|
|
147
|
+
logger.warn(['The parent of the grid has an empty height.', 'You need to make sure the container has an intrinsic height.', 'The grid displays with a height of 0px.', '', 'You can find a solution in the docs:', 'https://mui.com/x/react-data-grid/layout/'].join('\n'));
|
|
147
148
|
warningShown.current = true;
|
|
148
149
|
}
|
|
149
150
|
|
|
150
151
|
if (size.width === 0 && !warningShown.current && !isJSDOM) {
|
|
151
|
-
logger.warn(['The parent of the grid has an empty width.', 'You need to make sure the container has an intrinsic width.', 'The grid displays with a width of 0px.', '', 'You can find a solution in the docs:', 'https://mui.com/
|
|
152
|
+
logger.warn(['The parent of the grid has an empty width.', 'You need to make sure the container has an intrinsic width.', 'The grid displays with a width of 0px.', '', 'You can find a solution in the docs:', 'https://mui.com/x/react-data-grid/layout/'].join('\n'));
|
|
152
153
|
warningShown.current = true;
|
|
153
154
|
}
|
|
154
155
|
|
|
@@ -169,7 +170,7 @@ export function useGridDimensions(apiRef, props) {
|
|
|
169
170
|
debounceResize();
|
|
170
171
|
}, [props.autoHeight, debounceResize, logger, resize]);
|
|
171
172
|
useEnhancedEffect(() => updateGridDimensionsRef(), [updateGridDimensionsRef]);
|
|
172
|
-
useGridApiOptionHandler(apiRef, GridEvents.
|
|
173
|
+
useGridApiOptionHandler(apiRef, GridEvents.sortedRowsSet, updateGridDimensionsRef);
|
|
173
174
|
useGridApiOptionHandler(apiRef, GridEvents.pageChange, updateGridDimensionsRef);
|
|
174
175
|
useGridApiOptionHandler(apiRef, GridEvents.pageSizeChange, updateGridDimensionsRef);
|
|
175
176
|
useGridApiOptionHandler(apiRef, GridEvents.columnsChange, updateGridDimensionsRef);
|
|
@@ -6,10 +6,13 @@ import { GridEditModes, GridCellModes } from '../../../models/gridEditRowModel';
|
|
|
6
6
|
import { useGridApiMethod } from '../../utils/useGridApiMethod';
|
|
7
7
|
import { gridEditRowsStateSelector } from './gridEditRowsSelector';
|
|
8
8
|
import { isPrintableKey } from '../../../utils/keyboardUtils';
|
|
9
|
+
import { buildWarning } from '../../../utils/warning';
|
|
9
10
|
import { GridCellEditStartReasons, GridCellEditStopReasons } from '../../../models/params/gridEditCellParams';
|
|
11
|
+
const missingOnProcessRowUpdateErrorWarning = buildWarning(['MUI: A call to `processRowUpdate` threw an error which was not handled because `onProcessRowUpdateError` is missing.', 'To handle the error pass a callback to the `onProcessRowUpdateError` prop, e.g. `<DataGrid onProcessRowUpdateError={(error) => ...} />`.', 'For more detail, see http://mui.com/components/data-grid/editing/#persistence.'], 'error');
|
|
10
12
|
export const useGridCellEditing = (apiRef, props) => {
|
|
11
13
|
const {
|
|
12
|
-
processRowUpdate
|
|
14
|
+
processRowUpdate,
|
|
15
|
+
onProcessRowUpdateError
|
|
13
16
|
} = props;
|
|
14
17
|
|
|
15
18
|
const runIfEditModeIsCell = callback => (...args) => {
|
|
@@ -220,10 +223,7 @@ export const useGridCellEditing = (apiRef, props) => {
|
|
|
220
223
|
}
|
|
221
224
|
|
|
222
225
|
const editingState = gridEditRowsStateSelector(apiRef.current.state);
|
|
223
|
-
const row = apiRef.current.getRow(id);
|
|
224
|
-
const column = apiRef.current.getColumn(field);
|
|
225
226
|
const {
|
|
226
|
-
value,
|
|
227
227
|
error,
|
|
228
228
|
isProcessingProps
|
|
229
229
|
} = editingState[id][field];
|
|
@@ -232,25 +232,33 @@ export const useGridCellEditing = (apiRef, props) => {
|
|
|
232
232
|
return;
|
|
233
233
|
}
|
|
234
234
|
|
|
235
|
-
const rowUpdate =
|
|
236
|
-
value,
|
|
237
|
-
row
|
|
238
|
-
}) : _extends({}, row, {
|
|
239
|
-
[field]: value
|
|
240
|
-
});
|
|
235
|
+
const rowUpdate = apiRef.current.unstable_getRowWithUpdatedValuesFromCellEditing(id, field);
|
|
241
236
|
|
|
242
237
|
if (processRowUpdate) {
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
238
|
+
const handleError = errorThrown => {
|
|
239
|
+
if (onProcessRowUpdateError) {
|
|
240
|
+
onProcessRowUpdateError(errorThrown);
|
|
241
|
+
} else {
|
|
242
|
+
missingOnProcessRowUpdateErrorWarning();
|
|
243
|
+
}
|
|
244
|
+
};
|
|
245
|
+
|
|
246
|
+
try {
|
|
247
|
+
const row = apiRef.current.getRow(id);
|
|
248
|
+
Promise.resolve(processRowUpdate(rowUpdate, row)).then(finalRowUpdate => {
|
|
249
|
+
apiRef.current.updateRows([finalRowUpdate]);
|
|
250
|
+
updateFocusedCellIfNeeded();
|
|
251
|
+
updateOrDeleteFieldState(id, field, null);
|
|
252
|
+
}).catch(handleError);
|
|
253
|
+
} catch (errorThrown) {
|
|
254
|
+
handleError(errorThrown);
|
|
255
|
+
}
|
|
248
256
|
} else {
|
|
249
257
|
apiRef.current.updateRows([rowUpdate]);
|
|
250
258
|
updateFocusedCellIfNeeded();
|
|
251
259
|
updateOrDeleteFieldState(id, field, null);
|
|
252
260
|
}
|
|
253
|
-
}, [apiRef, processRowUpdate, throwIfNotInMode, updateOrDeleteFieldState]);
|
|
261
|
+
}, [apiRef, onProcessRowUpdateError, processRowUpdate, throwIfNotInMode, updateOrDeleteFieldState]);
|
|
254
262
|
const setCellEditingEditCellValue = React.useCallback(async params => {
|
|
255
263
|
const {
|
|
256
264
|
id,
|
|
@@ -305,11 +313,26 @@ export const useGridCellEditing = (apiRef, props) => {
|
|
|
305
313
|
editingState = gridEditRowsStateSelector(apiRef.current.state);
|
|
306
314
|
return !editingState[id][field].error;
|
|
307
315
|
}, [apiRef, throwIfNotEditable, throwIfNotInMode, updateOrDeleteFieldState]);
|
|
316
|
+
const getRowWithUpdatedValuesFromCellEditing = React.useCallback((id, field) => {
|
|
317
|
+
const column = apiRef.current.getColumn(field);
|
|
318
|
+
const editingState = gridEditRowsStateSelector(apiRef.current.state);
|
|
319
|
+
const {
|
|
320
|
+
value
|
|
321
|
+
} = editingState[id][field];
|
|
322
|
+
const row = apiRef.current.getRow(id);
|
|
323
|
+
return column.valueSetter ? column.valueSetter({
|
|
324
|
+
value,
|
|
325
|
+
row
|
|
326
|
+
}) : _extends({}, row, {
|
|
327
|
+
[field]: value
|
|
328
|
+
});
|
|
329
|
+
}, [apiRef]);
|
|
308
330
|
const editingApi = {
|
|
309
331
|
getCellMode,
|
|
310
332
|
startCellEditMode,
|
|
311
333
|
stopCellEditMode,
|
|
312
|
-
unstable_setCellEditingEditCellValue: setCellEditingEditCellValue
|
|
334
|
+
unstable_setCellEditingEditCellValue: setCellEditingEditCellValue,
|
|
335
|
+
unstable_getRowWithUpdatedValuesFromCellEditing: getRowWithUpdatedValuesFromCellEditing
|
|
313
336
|
};
|
|
314
337
|
useGridApiMethod(apiRef, editingApi, 'EditingApi');
|
|
315
338
|
};
|
|
@@ -2,7 +2,7 @@ import _extends from "@babel/runtime/helpers/esm/extends";
|
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import { useGridApiMethod } from '../../utils/useGridApiMethod';
|
|
4
4
|
import { useGridCellEditing } from './useGridCellEditing.new';
|
|
5
|
-
import { GridCellModes } from '../../../models/gridEditRowModel';
|
|
5
|
+
import { GridCellModes, GridEditModes } from '../../../models/gridEditRowModel';
|
|
6
6
|
import { useGridRowEditing } from './useGridRowEditing.new';
|
|
7
7
|
export const editingStateInitializer = state => _extends({}, state, {
|
|
8
8
|
editRows: {}
|
|
@@ -99,7 +99,7 @@ export const useGridEditing = (apiRef, props) => {
|
|
|
99
99
|
} = params;
|
|
100
100
|
return new Promise(resolve => {
|
|
101
101
|
maybeDebounce(id, field, debounceMs, async () => {
|
|
102
|
-
const setEditCellValueToCall = props.editMode ===
|
|
102
|
+
const setEditCellValueToCall = props.editMode === GridEditModes.Row ? apiRef.current.unstable_setRowEditingEditCellValue : apiRef.current.unstable_setCellEditingEditCellValue; // Check if the cell is in edit mode
|
|
103
103
|
// By the time this callback runs the user may have cancelled the editing
|
|
104
104
|
|
|
105
105
|
if (apiRef.current.getCellMode(id, field) === GridCellModes.Edit) {
|
|
@@ -109,10 +109,14 @@ export const useGridEditing = (apiRef, props) => {
|
|
|
109
109
|
});
|
|
110
110
|
});
|
|
111
111
|
}, [apiRef, props.editMode]);
|
|
112
|
+
const getRowWithUpdatedValues = React.useCallback((id, field) => {
|
|
113
|
+
return props.editMode === GridEditModes.Cell ? apiRef.current.unstable_getRowWithUpdatedValuesFromCellEditing(id, field) : apiRef.current.unstable_getRowWithUpdatedValuesFromRowEditing(id);
|
|
114
|
+
}, [apiRef, props.editMode]);
|
|
112
115
|
const editingSharedApi = {
|
|
113
116
|
isCellEditable,
|
|
114
117
|
setEditCellValue,
|
|
115
|
-
unstable_runPendingEditCellValueMutation: runPendingEditCellValueMutation
|
|
118
|
+
unstable_runPendingEditCellValueMutation: runPendingEditCellValueMutation,
|
|
119
|
+
unstable_getRowWithUpdatedValues: getRowWithUpdatedValues
|
|
116
120
|
};
|
|
117
121
|
useGridApiMethod(apiRef, editingSharedApi, 'EditingApi');
|
|
118
122
|
};
|
|
@@ -9,12 +9,15 @@ import { useGridApiMethod } from '../../utils/useGridApiMethod';
|
|
|
9
9
|
import { gridEditRowsStateSelector } from './gridEditRowsSelector';
|
|
10
10
|
import { isPrintableKey } from '../../../utils/keyboardUtils';
|
|
11
11
|
import { gridColumnFieldsSelector } from '../columns/gridColumnsSelector';
|
|
12
|
+
import { buildWarning } from '../../../utils/warning';
|
|
12
13
|
import { GridRowEditStopReasons, GridRowEditStartReasons } from '../../../models/params/gridRowParams';
|
|
14
|
+
const missingOnProcessRowUpdateErrorWarning = buildWarning(['MUI: A call to `processRowUpdate` threw an error which was not handled because `onProcessRowUpdateError` is missing.', 'To handle the error pass a callback to the `onProcessRowUpdateError` prop, e.g. `<DataGrid onProcessRowUpdateError={(error) => ...} />`.', 'For more detail, see http://mui.com/components/data-grid/editing/#persistence.'], 'error');
|
|
13
15
|
export const useGridRowEditing = (apiRef, props) => {
|
|
14
16
|
const focusTimeout = React.useRef(null);
|
|
15
17
|
const nextFocusedCell = React.useRef(null);
|
|
16
18
|
const {
|
|
17
|
-
processRowUpdate
|
|
19
|
+
processRowUpdate,
|
|
20
|
+
onProcessRowUpdateError
|
|
18
21
|
} = props;
|
|
19
22
|
|
|
20
23
|
const runIfEditModeIsRow = callback => (...args) => {
|
|
@@ -331,33 +334,32 @@ export const useGridRowEditing = (apiRef, props) => {
|
|
|
331
334
|
return;
|
|
332
335
|
}
|
|
333
336
|
|
|
334
|
-
|
|
337
|
+
const rowUpdate = apiRef.current.unstable_getRowWithUpdatedValuesFromRowEditing(id);
|
|
335
338
|
|
|
336
|
-
|
|
337
|
-
const
|
|
339
|
+
if (processRowUpdate) {
|
|
340
|
+
const handleError = errorThrown => {
|
|
341
|
+
if (onProcessRowUpdateError) {
|
|
342
|
+
onProcessRowUpdateError(errorThrown);
|
|
343
|
+
} else {
|
|
344
|
+
missingOnProcessRowUpdateErrorWarning();
|
|
345
|
+
}
|
|
346
|
+
};
|
|
338
347
|
|
|
339
|
-
|
|
340
|
-
rowUpdate
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
348
|
+
try {
|
|
349
|
+
Promise.resolve(processRowUpdate(rowUpdate, row)).then(finalRowUpdate => {
|
|
350
|
+
apiRef.current.updateRows([finalRowUpdate]);
|
|
351
|
+
updateFocusedCellIfNeeded();
|
|
352
|
+
updateOrDeleteRowState(id, null);
|
|
353
|
+
}).catch(handleError);
|
|
354
|
+
} catch (errorThrown) {
|
|
355
|
+
handleError(errorThrown);
|
|
346
356
|
}
|
|
347
|
-
});
|
|
348
|
-
|
|
349
|
-
if (processRowUpdate) {
|
|
350
|
-
Promise.resolve(processRowUpdate(rowUpdate, row)).then(finalRowUpdate => {
|
|
351
|
-
apiRef.current.updateRows([finalRowUpdate]);
|
|
352
|
-
updateFocusedCellIfNeeded();
|
|
353
|
-
updateOrDeleteRowState(id, null);
|
|
354
|
-
});
|
|
355
357
|
} else {
|
|
356
358
|
apiRef.current.updateRows([rowUpdate]);
|
|
357
359
|
updateFocusedCellIfNeeded();
|
|
358
360
|
updateOrDeleteRowState(id, null);
|
|
359
361
|
}
|
|
360
|
-
}, [apiRef, processRowUpdate, throwIfNotInMode, updateOrDeleteRowState]);
|
|
362
|
+
}, [apiRef, onProcessRowUpdateError, processRowUpdate, throwIfNotInMode, updateOrDeleteRowState]);
|
|
361
363
|
const setRowEditingEditCellValue = React.useCallback(params => {
|
|
362
364
|
const {
|
|
363
365
|
id,
|
|
@@ -474,11 +476,32 @@ export const useGridRowEditing = (apiRef, props) => {
|
|
|
474
476
|
});
|
|
475
477
|
});
|
|
476
478
|
}, [apiRef, throwIfNotEditable, updateOrDeleteFieldState]);
|
|
479
|
+
const getRowWithUpdatedValuesFromRowEditing = React.useCallback(id => {
|
|
480
|
+
const editingState = gridEditRowsStateSelector(apiRef.current.state);
|
|
481
|
+
const row = apiRef.current.getRow(id);
|
|
482
|
+
|
|
483
|
+
let rowUpdate = _extends({}, row);
|
|
484
|
+
|
|
485
|
+
Object.entries(editingState[id]).forEach(([field, fieldProps]) => {
|
|
486
|
+
const column = apiRef.current.getColumn(field);
|
|
487
|
+
|
|
488
|
+
if (column.valueSetter) {
|
|
489
|
+
rowUpdate = column.valueSetter({
|
|
490
|
+
value: fieldProps.value,
|
|
491
|
+
row: rowUpdate
|
|
492
|
+
});
|
|
493
|
+
} else {
|
|
494
|
+
rowUpdate[field] = fieldProps.value;
|
|
495
|
+
}
|
|
496
|
+
});
|
|
497
|
+
return rowUpdate;
|
|
498
|
+
}, [apiRef]);
|
|
477
499
|
const editingApi = {
|
|
478
500
|
getRowMode,
|
|
479
501
|
startRowEditMode,
|
|
480
502
|
stopRowEditMode,
|
|
481
|
-
unstable_setRowEditingEditCellValue: setRowEditingEditCellValue
|
|
503
|
+
unstable_setRowEditingEditCellValue: setRowEditingEditCellValue,
|
|
504
|
+
unstable_getRowWithUpdatedValuesFromRowEditing: getRowWithUpdatedValuesFromRowEditing
|
|
482
505
|
};
|
|
483
506
|
useGridApiMethod(apiRef, editingApi, 'EditingApi');
|
|
484
507
|
};
|
|
@@ -17,6 +17,8 @@ export function useGridEvents(apiRef, props) {
|
|
|
17
17
|
useGridApiOptionHandler(apiRef, GridEvents.cellDoubleClick, props.onCellDoubleClick);
|
|
18
18
|
useGridApiOptionHandler(apiRef, GridEvents.cellKeyDown, props.onCellKeyDown);
|
|
19
19
|
useGridApiOptionHandler(apiRef, GridEvents.cellFocusOut, props.onCellFocusOut);
|
|
20
|
+
useGridApiOptionHandler(apiRef, GridEvents.preferencePanelClose, props.onPreferencePanelClose);
|
|
21
|
+
useGridApiOptionHandler(apiRef, GridEvents.preferencePanelOpen, props.onPreferencePanelOpen);
|
|
20
22
|
useGridApiOptionHandler(apiRef, GridEvents.rowDoubleClick, props.onRowDoubleClick);
|
|
21
23
|
useGridApiOptionHandler(apiRef, GridEvents.rowClick, props.onRowClick);
|
|
22
24
|
useGridApiOptionHandler(apiRef, GridEvents.componentError, props.onError);
|