@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
|
@@ -7,7 +7,7 @@ import { useGridApiMethod } from '../../utils/useGridApiMethod';
|
|
|
7
7
|
import { useGridLogger } from '../../utils/useGridLogger';
|
|
8
8
|
import { gridColumnFieldsSelector, gridColumnDefinitionsSelector, gridColumnLookupSelector, gridColumnsMetaSelector, gridColumnsSelector, gridColumnVisibilityModelSelector, gridVisibleColumnDefinitionsSelector, gridColumnPositionsSelector } from './gridColumnsSelector';
|
|
9
9
|
import { useGridApiEventHandler, useGridApiOptionHandler } from '../../utils/useGridApiEventHandler';
|
|
10
|
-
import {
|
|
10
|
+
import { useGridRegisterPipeProcessor, useGridRegisterPipeApplier } from '../../core/pipeProcessing';
|
|
11
11
|
import { hydrateColumnsWidth, computeColumnTypes, createColumnsState, mergeColumnsState, COLUMNS_DIMENSION_PROPERTIES } from './gridColumnsUtils';
|
|
12
12
|
import { GridPreferencePanelsValue } from '../preferencesPanel';
|
|
13
13
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
@@ -18,7 +18,7 @@ export var columnsStateInitializer = function columnsStateInitializer(state, pro
|
|
|
18
18
|
var columnsTypes = computeColumnTypes(props.columnTypes);
|
|
19
19
|
var columnsState = createColumnsState({
|
|
20
20
|
apiRef: apiRef,
|
|
21
|
-
|
|
21
|
+
columnTypes: columnsTypes,
|
|
22
22
|
columnsToUpsert: props.columns,
|
|
23
23
|
initialState: (_props$initialState2 = props.initialState) == null ? void 0 : _props$initialState2.columns,
|
|
24
24
|
shouldRegenColumnVisibilityModelFromColumns: !isUsingColumnVisibilityModel,
|
|
@@ -39,15 +39,17 @@ export function useGridColumns(apiRef, props) {
|
|
|
39
39
|
var _props$initialState4, _props$initialState4$, _props$componentsProp2;
|
|
40
40
|
|
|
41
41
|
var logger = useGridLogger(apiRef, 'useGridColumns');
|
|
42
|
-
var
|
|
42
|
+
var columnTypes = React.useMemo(function () {
|
|
43
43
|
return computeColumnTypes(props.columnTypes);
|
|
44
44
|
}, [props.columnTypes]);
|
|
45
|
+
var previousColumnsProp = React.useRef(props.columns);
|
|
46
|
+
var previousColumnTypesProp = React.useRef(columnTypes);
|
|
45
47
|
/**
|
|
46
48
|
* If `initialState.columns.columnVisibilityModel` or `columnVisibilityModel` was defined during the 1st render, we are directly updating the model
|
|
47
49
|
* 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`
|
|
48
50
|
*/
|
|
49
51
|
|
|
50
|
-
var isUsingColumnVisibilityModel = React.useRef(!!props.columnVisibilityModel || !!((_props$initialState4 = props.initialState) != null && (_props$initialState4$ = _props$initialState4.columns) != null && _props$initialState4$.columnVisibilityModel))
|
|
52
|
+
var isUsingColumnVisibilityModel = React.useRef(!!props.columnVisibilityModel || !!((_props$initialState4 = props.initialState) != null && (_props$initialState4$ = _props$initialState4.columns) != null && _props$initialState4$.columnVisibilityModel));
|
|
51
53
|
apiRef.current.unstable_updateControlState({
|
|
52
54
|
stateId: 'visibleColumns',
|
|
53
55
|
propModel: props.columnVisibilityModel,
|
|
@@ -96,7 +98,7 @@ export function useGridColumns(apiRef, props) {
|
|
|
96
98
|
return _extends({}, state, {
|
|
97
99
|
columns: createColumnsState({
|
|
98
100
|
apiRef: apiRef,
|
|
99
|
-
|
|
101
|
+
columnTypes: columnTypes,
|
|
100
102
|
columnsToUpsert: [],
|
|
101
103
|
initialState: undefined,
|
|
102
104
|
shouldRegenColumnVisibilityModelFromColumns: false,
|
|
@@ -107,18 +109,18 @@ export function useGridColumns(apiRef, props) {
|
|
|
107
109
|
});
|
|
108
110
|
apiRef.current.forceUpdate();
|
|
109
111
|
}
|
|
110
|
-
}, [apiRef,
|
|
112
|
+
}, [apiRef, columnTypes]);
|
|
111
113
|
var updateColumns = React.useCallback(function (columns) {
|
|
112
114
|
var columnsState = createColumnsState({
|
|
113
115
|
apiRef: apiRef,
|
|
114
|
-
|
|
116
|
+
columnTypes: columnTypes,
|
|
115
117
|
columnsToUpsert: columns,
|
|
116
118
|
initialState: undefined,
|
|
117
119
|
shouldRegenColumnVisibilityModelFromColumns: true,
|
|
118
120
|
keepOnlyColumnsToUpsert: false
|
|
119
121
|
});
|
|
120
122
|
setGridColumnsState(columnsState);
|
|
121
|
-
}, [apiRef, setGridColumnsState,
|
|
123
|
+
}, [apiRef, setGridColumnsState, columnTypes]);
|
|
122
124
|
var updateColumn = React.useCallback(function (column) {
|
|
123
125
|
return apiRef.current.updateColumns([column]);
|
|
124
126
|
}, [apiRef]);
|
|
@@ -126,7 +128,7 @@ export function useGridColumns(apiRef, props) {
|
|
|
126
128
|
// We keep updating the `hide` option of `GridColDef` when not controlling the model to avoid any breaking change.
|
|
127
129
|
// `updateColumns` take care of updating the model itself if needs be.
|
|
128
130
|
// TODO v6: stop using the `hide` field even when the model is not defined
|
|
129
|
-
if (isUsingColumnVisibilityModel) {
|
|
131
|
+
if (isUsingColumnVisibilityModel.current) {
|
|
130
132
|
var _columnVisibilityMode;
|
|
131
133
|
|
|
132
134
|
var columnVisibilityModel = gridColumnVisibilityModelSelector(apiRef);
|
|
@@ -152,7 +154,7 @@ export function useGridColumns(apiRef, props) {
|
|
|
152
154
|
};
|
|
153
155
|
apiRef.current.publishEvent(GridEvents.columnVisibilityChange, params);
|
|
154
156
|
}
|
|
155
|
-
}, [apiRef
|
|
157
|
+
}, [apiRef]);
|
|
156
158
|
var setColumnIndex = React.useCallback(function (field, targetIndexPosition) {
|
|
157
159
|
var allColumns = gridColumnFieldsSelector(apiRef);
|
|
158
160
|
var oldIndexPosition = allColumns.findIndex(function (col) {
|
|
@@ -217,7 +219,7 @@ export function useGridColumns(apiRef, props) {
|
|
|
217
219
|
var stateExportPreProcessing = React.useCallback(function (prevState) {
|
|
218
220
|
var columnsStateToExport = {};
|
|
219
221
|
|
|
220
|
-
if (isUsingColumnVisibilityModel) {
|
|
222
|
+
if (isUsingColumnVisibilityModel.current) {
|
|
221
223
|
var columnVisibilityModelToExport = gridColumnVisibilityModelSelector(apiRef);
|
|
222
224
|
var hasHiddenColumns = Object.values(columnVisibilityModelToExport).some(function (value) {
|
|
223
225
|
return value === false;
|
|
@@ -235,7 +237,13 @@ export function useGridColumns(apiRef, props) {
|
|
|
235
237
|
if (colDef.hasBeenResized) {
|
|
236
238
|
var colDefDimensions = {};
|
|
237
239
|
COLUMNS_DIMENSION_PROPERTIES.forEach(function (propertyName) {
|
|
238
|
-
|
|
240
|
+
var propertyValue = colDef[propertyName];
|
|
241
|
+
|
|
242
|
+
if (propertyValue === Infinity) {
|
|
243
|
+
propertyValue = -1;
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
colDefDimensions[propertyName] = propertyValue;
|
|
239
247
|
});
|
|
240
248
|
dimensions[colDef.field] = colDefDimensions;
|
|
241
249
|
}
|
|
@@ -248,11 +256,11 @@ export function useGridColumns(apiRef, props) {
|
|
|
248
256
|
return _extends({}, prevState, {
|
|
249
257
|
columns: columnsStateToExport
|
|
250
258
|
});
|
|
251
|
-
}, [apiRef
|
|
259
|
+
}, [apiRef]);
|
|
252
260
|
var stateRestorePreProcessing = React.useCallback(function (params, context) {
|
|
253
261
|
var _context$stateToResto;
|
|
254
262
|
|
|
255
|
-
var columnVisibilityModelToImport = isUsingColumnVisibilityModel ? (_context$stateToResto = context.stateToRestore.columns) == null ? void 0 : _context$stateToResto.columnVisibilityModel : undefined;
|
|
263
|
+
var columnVisibilityModelToImport = isUsingColumnVisibilityModel.current ? (_context$stateToResto = context.stateToRestore.columns) == null ? void 0 : _context$stateToResto.columnVisibilityModel : undefined;
|
|
256
264
|
var initialState = context.stateToRestore.columns;
|
|
257
265
|
|
|
258
266
|
if (columnVisibilityModelToImport == null && initialState == null) {
|
|
@@ -261,10 +269,10 @@ export function useGridColumns(apiRef, props) {
|
|
|
261
269
|
|
|
262
270
|
var columnsState = createColumnsState({
|
|
263
271
|
apiRef: apiRef,
|
|
264
|
-
|
|
272
|
+
columnTypes: columnTypes,
|
|
265
273
|
columnsToUpsert: [],
|
|
266
274
|
initialState: initialState,
|
|
267
|
-
shouldRegenColumnVisibilityModelFromColumns: !isUsingColumnVisibilityModel,
|
|
275
|
+
shouldRegenColumnVisibilityModelFromColumns: !isUsingColumnVisibilityModel.current,
|
|
268
276
|
currentColumnVisibilityModel: columnVisibilityModelToImport,
|
|
269
277
|
keepOnlyColumnsToUpsert: false
|
|
270
278
|
});
|
|
@@ -275,7 +283,7 @@ export function useGridColumns(apiRef, props) {
|
|
|
275
283
|
}
|
|
276
284
|
|
|
277
285
|
return params;
|
|
278
|
-
}, [apiRef,
|
|
286
|
+
}, [apiRef, columnTypes]);
|
|
279
287
|
var preferencePanelPreProcessing = React.useCallback(function (initialValue, value) {
|
|
280
288
|
if (value === GridPreferencePanelsValue.columns) {
|
|
281
289
|
var _props$componentsProp;
|
|
@@ -286,29 +294,13 @@ export function useGridColumns(apiRef, props) {
|
|
|
286
294
|
|
|
287
295
|
return initialValue;
|
|
288
296
|
}, [props.components.ColumnsPanel, (_props$componentsProp2 = props.componentsProps) == null ? void 0 : _props$componentsProp2.columnsPanel]);
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
297
|
+
useGridRegisterPipeProcessor(apiRef, 'exportState', stateExportPreProcessing);
|
|
298
|
+
useGridRegisterPipeProcessor(apiRef, 'restoreState', stateRestorePreProcessing);
|
|
299
|
+
useGridRegisterPipeProcessor(apiRef, 'preferencePanel', preferencePanelPreProcessing);
|
|
292
300
|
/**
|
|
293
301
|
* EVENTS
|
|
294
302
|
*/
|
|
295
303
|
|
|
296
|
-
var handlePreProcessorRegister = React.useCallback(function (name) {
|
|
297
|
-
if (name !== 'hydrateColumns') {
|
|
298
|
-
return;
|
|
299
|
-
}
|
|
300
|
-
|
|
301
|
-
logger.info("Columns pre-processing have changed, regenerating the columns");
|
|
302
|
-
var columnsState = createColumnsState({
|
|
303
|
-
apiRef: apiRef,
|
|
304
|
-
columnsTypes: columnsTypes,
|
|
305
|
-
columnsToUpsert: [],
|
|
306
|
-
initialState: undefined,
|
|
307
|
-
shouldRegenColumnVisibilityModelFromColumns: !isUsingColumnVisibilityModel,
|
|
308
|
-
keepOnlyColumnsToUpsert: false
|
|
309
|
-
});
|
|
310
|
-
setGridColumnsState(columnsState);
|
|
311
|
-
}, [apiRef, logger, setGridColumnsState, columnsTypes, isUsingColumnVisibilityModel]);
|
|
312
304
|
var prevInnerWidth = React.useRef(null);
|
|
313
305
|
|
|
314
306
|
var handleGridSizeChange = function handleGridSizeChange(viewportInnerSize) {
|
|
@@ -318,9 +310,25 @@ export function useGridColumns(apiRef, props) {
|
|
|
318
310
|
}
|
|
319
311
|
};
|
|
320
312
|
|
|
321
|
-
useGridApiEventHandler(apiRef, GridEvents.preProcessorRegister, handlePreProcessorRegister);
|
|
322
313
|
useGridApiEventHandler(apiRef, GridEvents.viewportInnerSizeChange, handleGridSizeChange);
|
|
323
314
|
useGridApiOptionHandler(apiRef, GridEvents.columnVisibilityChange, props.onColumnVisibilityChange);
|
|
315
|
+
/**
|
|
316
|
+
* APPLIERS
|
|
317
|
+
*/
|
|
318
|
+
|
|
319
|
+
var hydrateColumns = React.useCallback(function () {
|
|
320
|
+
logger.info("Columns pipe processing have changed, regenerating the columns");
|
|
321
|
+
var columnsState = createColumnsState({
|
|
322
|
+
apiRef: apiRef,
|
|
323
|
+
columnTypes: columnTypes,
|
|
324
|
+
columnsToUpsert: [],
|
|
325
|
+
initialState: undefined,
|
|
326
|
+
shouldRegenColumnVisibilityModelFromColumns: !isUsingColumnVisibilityModel.current,
|
|
327
|
+
keepOnlyColumnsToUpsert: false
|
|
328
|
+
});
|
|
329
|
+
setGridColumnsState(columnsState);
|
|
330
|
+
}, [apiRef, logger, setGridColumnsState, columnTypes]);
|
|
331
|
+
useGridRegisterPipeApplier(apiRef, 'hydrateColumns', hydrateColumns);
|
|
324
332
|
/**
|
|
325
333
|
* EFFECTS
|
|
326
334
|
*/
|
|
@@ -335,17 +343,24 @@ export function useGridColumns(apiRef, props) {
|
|
|
335
343
|
}
|
|
336
344
|
|
|
337
345
|
logger.info("GridColumns have changed, new length ".concat(props.columns.length));
|
|
346
|
+
|
|
347
|
+
if (previousColumnsProp.current === props.columns && previousColumnTypesProp.current === columnTypes) {
|
|
348
|
+
return;
|
|
349
|
+
}
|
|
350
|
+
|
|
338
351
|
var columnsState = createColumnsState({
|
|
339
352
|
apiRef: apiRef,
|
|
340
|
-
|
|
353
|
+
columnTypes: columnTypes,
|
|
341
354
|
initialState: undefined,
|
|
342
355
|
// 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`
|
|
343
|
-
shouldRegenColumnVisibilityModelFromColumns: !isUsingColumnVisibilityModel,
|
|
356
|
+
shouldRegenColumnVisibilityModelFromColumns: !isUsingColumnVisibilityModel.current,
|
|
344
357
|
columnsToUpsert: props.columns,
|
|
345
358
|
keepOnlyColumnsToUpsert: true
|
|
346
359
|
});
|
|
360
|
+
previousColumnsProp.current = props.columns;
|
|
361
|
+
previousColumnTypesProp.current = columnTypes;
|
|
347
362
|
setGridColumnsState(columnsState);
|
|
348
|
-
}, [logger, apiRef, setGridColumnsState, props.columns,
|
|
363
|
+
}, [logger, apiRef, setGridColumnsState, props.columns, columnTypes]);
|
|
349
364
|
React.useEffect(function () {
|
|
350
365
|
if (props.columnVisibilityModel !== undefined) {
|
|
351
366
|
apiRef.current.setColumnVisibilityModel(props.columnVisibilityModel);
|
|
@@ -136,7 +136,8 @@ export function useGridDimensions(apiRef, props) {
|
|
|
136
136
|
var dimensionsApi = {
|
|
137
137
|
resize: resize,
|
|
138
138
|
getRootDimensions: getRootDimensions,
|
|
139
|
-
unstable_getViewportPageSize: getViewportPageSize
|
|
139
|
+
unstable_getViewportPageSize: getViewportPageSize,
|
|
140
|
+
unstable_updateGridDimensionsRef: updateGridDimensionsRef
|
|
140
141
|
};
|
|
141
142
|
useGridApiMethod(apiRef, dimensionsApi, 'GridDimensionsApi');
|
|
142
143
|
var debounceResize = React.useMemo(function () {
|
|
@@ -149,12 +150,12 @@ export function useGridDimensions(apiRef, props) {
|
|
|
149
150
|
var isJSDOM = /jsdom/.test(window.navigator.userAgent);
|
|
150
151
|
|
|
151
152
|
if (size.height === 0 && !warningShown.current && !props.autoHeight && !isJSDOM) {
|
|
152
|
-
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/
|
|
153
|
+
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'));
|
|
153
154
|
warningShown.current = true;
|
|
154
155
|
}
|
|
155
156
|
|
|
156
157
|
if (size.width === 0 && !warningShown.current && !isJSDOM) {
|
|
157
|
-
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/
|
|
158
|
+
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'));
|
|
158
159
|
warningShown.current = true;
|
|
159
160
|
}
|
|
160
161
|
|
|
@@ -177,7 +178,7 @@ export function useGridDimensions(apiRef, props) {
|
|
|
177
178
|
useEnhancedEffect(function () {
|
|
178
179
|
return updateGridDimensionsRef();
|
|
179
180
|
}, [updateGridDimensionsRef]);
|
|
180
|
-
useGridApiOptionHandler(apiRef, GridEvents.
|
|
181
|
+
useGridApiOptionHandler(apiRef, GridEvents.sortedRowsSet, updateGridDimensionsRef);
|
|
181
182
|
useGridApiOptionHandler(apiRef, GridEvents.pageChange, updateGridDimensionsRef);
|
|
182
183
|
useGridApiOptionHandler(apiRef, GridEvents.pageSizeChange, updateGridDimensionsRef);
|
|
183
184
|
useGridApiOptionHandler(apiRef, GridEvents.columnsChange, updateGridDimensionsRef);
|
|
@@ -9,9 +9,12 @@ import { GridEditModes, GridCellModes } from '../../../models/gridEditRowModel';
|
|
|
9
9
|
import { useGridApiMethod } from '../../utils/useGridApiMethod';
|
|
10
10
|
import { gridEditRowsStateSelector } from './gridEditRowsSelector';
|
|
11
11
|
import { isPrintableKey } from '../../../utils/keyboardUtils';
|
|
12
|
+
import { buildWarning } from '../../../utils/warning';
|
|
12
13
|
import { GridCellEditStartReasons, GridCellEditStopReasons } from '../../../models/params/gridEditCellParams';
|
|
14
|
+
var 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 var useGridCellEditing = function useGridCellEditing(apiRef, props) {
|
|
14
|
-
var processRowUpdate = props.processRowUpdate
|
|
16
|
+
var processRowUpdate = props.processRowUpdate,
|
|
17
|
+
onProcessRowUpdateError = props.onProcessRowUpdateError;
|
|
15
18
|
|
|
16
19
|
var runIfEditModeIsCell = function runIfEditModeIsCell(callback) {
|
|
17
20
|
return function () {
|
|
@@ -214,10 +217,7 @@ export var useGridCellEditing = function useGridCellEditing(apiRef, props) {
|
|
|
214
217
|
}
|
|
215
218
|
|
|
216
219
|
var editingState = gridEditRowsStateSelector(apiRef.current.state);
|
|
217
|
-
var row = apiRef.current.getRow(id);
|
|
218
|
-
var column = apiRef.current.getColumn(field);
|
|
219
220
|
var _editingState$id$fiel = editingState[id][field],
|
|
220
|
-
value = _editingState$id$fiel.value,
|
|
221
221
|
error = _editingState$id$fiel.error,
|
|
222
222
|
isProcessingProps = _editingState$id$fiel.isProcessingProps;
|
|
223
223
|
|
|
@@ -225,23 +225,33 @@ export var useGridCellEditing = function useGridCellEditing(apiRef, props) {
|
|
|
225
225
|
return;
|
|
226
226
|
}
|
|
227
227
|
|
|
228
|
-
var rowUpdate =
|
|
229
|
-
value: value,
|
|
230
|
-
row: row
|
|
231
|
-
}) : _extends({}, row, _defineProperty({}, field, value));
|
|
228
|
+
var rowUpdate = apiRef.current.unstable_getRowWithUpdatedValuesFromCellEditing(id, field);
|
|
232
229
|
|
|
233
230
|
if (processRowUpdate) {
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
231
|
+
var handleError = function handleError(errorThrown) {
|
|
232
|
+
if (onProcessRowUpdateError) {
|
|
233
|
+
onProcessRowUpdateError(errorThrown);
|
|
234
|
+
} else {
|
|
235
|
+
missingOnProcessRowUpdateErrorWarning();
|
|
236
|
+
}
|
|
237
|
+
};
|
|
238
|
+
|
|
239
|
+
try {
|
|
240
|
+
var row = apiRef.current.getRow(id);
|
|
241
|
+
Promise.resolve(processRowUpdate(rowUpdate, row)).then(function (finalRowUpdate) {
|
|
242
|
+
apiRef.current.updateRows([finalRowUpdate]);
|
|
243
|
+
updateFocusedCellIfNeeded();
|
|
244
|
+
updateOrDeleteFieldState(id, field, null);
|
|
245
|
+
}).catch(handleError);
|
|
246
|
+
} catch (errorThrown) {
|
|
247
|
+
handleError(errorThrown);
|
|
248
|
+
}
|
|
239
249
|
} else {
|
|
240
250
|
apiRef.current.updateRows([rowUpdate]);
|
|
241
251
|
updateFocusedCellIfNeeded();
|
|
242
252
|
updateOrDeleteFieldState(id, field, null);
|
|
243
253
|
}
|
|
244
|
-
}, [apiRef, processRowUpdate, throwIfNotInMode, updateOrDeleteFieldState]);
|
|
254
|
+
}, [apiRef, onProcessRowUpdateError, processRowUpdate, throwIfNotInMode, updateOrDeleteFieldState]);
|
|
245
255
|
var setCellEditingEditCellValue = React.useCallback( /*#__PURE__*/function () {
|
|
246
256
|
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(params) {
|
|
247
257
|
var id, field, value, column, row, parsedValue, editingState, newProps, hasChanged;
|
|
@@ -319,11 +329,22 @@ export var useGridCellEditing = function useGridCellEditing(apiRef, props) {
|
|
|
319
329
|
return _ref.apply(this, arguments);
|
|
320
330
|
};
|
|
321
331
|
}(), [apiRef, throwIfNotEditable, throwIfNotInMode, updateOrDeleteFieldState]);
|
|
332
|
+
var getRowWithUpdatedValuesFromCellEditing = React.useCallback(function (id, field) {
|
|
333
|
+
var column = apiRef.current.getColumn(field);
|
|
334
|
+
var editingState = gridEditRowsStateSelector(apiRef.current.state);
|
|
335
|
+
var value = editingState[id][field].value;
|
|
336
|
+
var row = apiRef.current.getRow(id);
|
|
337
|
+
return column.valueSetter ? column.valueSetter({
|
|
338
|
+
value: value,
|
|
339
|
+
row: row
|
|
340
|
+
}) : _extends({}, row, _defineProperty({}, field, value));
|
|
341
|
+
}, [apiRef]);
|
|
322
342
|
var editingApi = {
|
|
323
343
|
getCellMode: getCellMode,
|
|
324
344
|
startCellEditMode: startCellEditMode,
|
|
325
345
|
stopCellEditMode: stopCellEditMode,
|
|
326
|
-
unstable_setCellEditingEditCellValue: setCellEditingEditCellValue
|
|
346
|
+
unstable_setCellEditingEditCellValue: setCellEditingEditCellValue,
|
|
347
|
+
unstable_getRowWithUpdatedValuesFromCellEditing: getRowWithUpdatedValuesFromCellEditing
|
|
327
348
|
};
|
|
328
349
|
useGridApiMethod(apiRef, editingApi, 'EditingApi');
|
|
329
350
|
};
|
|
@@ -5,7 +5,7 @@ import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
|
5
5
|
import * as React from 'react';
|
|
6
6
|
import { useGridApiMethod } from '../../utils/useGridApiMethod';
|
|
7
7
|
import { useGridCellEditing } from './useGridCellEditing.new';
|
|
8
|
-
import { GridCellModes } from '../../../models/gridEditRowModel';
|
|
8
|
+
import { GridCellModes, GridEditModes } from '../../../models/gridEditRowModel';
|
|
9
9
|
import { useGridRowEditing } from './useGridRowEditing.new';
|
|
10
10
|
export var editingStateInitializer = function editingStateInitializer(state) {
|
|
11
11
|
return _extends({}, state, {
|
|
@@ -119,7 +119,7 @@ export var useGridEditing = function useGridEditing(apiRef, props) {
|
|
|
119
119
|
while (1) {
|
|
120
120
|
switch (_context.prev = _context.next) {
|
|
121
121
|
case 0:
|
|
122
|
-
setEditCellValueToCall = props.editMode ===
|
|
122
|
+
setEditCellValueToCall = props.editMode === GridEditModes.Row ? apiRef.current.unstable_setRowEditingEditCellValue : apiRef.current.unstable_setCellEditingEditCellValue; // Check if the cell is in edit mode
|
|
123
123
|
// By the time this callback runs the user may have cancelled the editing
|
|
124
124
|
|
|
125
125
|
if (!(apiRef.current.getCellMode(id, field) === GridCellModes.Edit)) {
|
|
@@ -143,10 +143,14 @@ export var useGridEditing = function useGridEditing(apiRef, props) {
|
|
|
143
143
|
})));
|
|
144
144
|
});
|
|
145
145
|
}, [apiRef, props.editMode]);
|
|
146
|
+
var getRowWithUpdatedValues = React.useCallback(function (id, field) {
|
|
147
|
+
return props.editMode === GridEditModes.Cell ? apiRef.current.unstable_getRowWithUpdatedValuesFromCellEditing(id, field) : apiRef.current.unstable_getRowWithUpdatedValuesFromRowEditing(id);
|
|
148
|
+
}, [apiRef, props.editMode]);
|
|
146
149
|
var editingSharedApi = {
|
|
147
150
|
isCellEditable: isCellEditable,
|
|
148
151
|
setEditCellValue: setEditCellValue,
|
|
149
|
-
unstable_runPendingEditCellValueMutation: runPendingEditCellValueMutation
|
|
152
|
+
unstable_runPendingEditCellValueMutation: runPendingEditCellValueMutation,
|
|
153
|
+
unstable_getRowWithUpdatedValues: getRowWithUpdatedValues
|
|
150
154
|
};
|
|
151
155
|
useGridApiMethod(apiRef, editingSharedApi, 'EditingApi');
|
|
152
156
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
1
2
|
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
|
|
2
3
|
import _toPropertyKey from "@babel/runtime/helpers/esm/toPropertyKey";
|
|
3
|
-
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
4
4
|
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
5
5
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
6
6
|
import * as React from 'react';
|
|
@@ -11,11 +11,14 @@ import { useGridApiMethod } from '../../utils/useGridApiMethod';
|
|
|
11
11
|
import { gridEditRowsStateSelector } from './gridEditRowsSelector';
|
|
12
12
|
import { isPrintableKey } from '../../../utils/keyboardUtils';
|
|
13
13
|
import { gridColumnFieldsSelector } from '../columns/gridColumnsSelector';
|
|
14
|
+
import { buildWarning } from '../../../utils/warning';
|
|
14
15
|
import { GridRowEditStopReasons, GridRowEditStartReasons } from '../../../models/params/gridRowParams';
|
|
16
|
+
var 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');
|
|
15
17
|
export var useGridRowEditing = function useGridRowEditing(apiRef, props) {
|
|
16
18
|
var focusTimeout = React.useRef(null);
|
|
17
19
|
var nextFocusedCell = React.useRef(null);
|
|
18
|
-
var processRowUpdate = props.processRowUpdate
|
|
20
|
+
var processRowUpdate = props.processRowUpdate,
|
|
21
|
+
onProcessRowUpdateError = props.onProcessRowUpdateError;
|
|
19
22
|
|
|
20
23
|
var runIfEditModeIsRow = function runIfEditModeIsRow(callback) {
|
|
21
24
|
return function () {
|
|
@@ -332,37 +335,32 @@ export var useGridRowEditing = function useGridRowEditing(apiRef, props) {
|
|
|
332
335
|
return;
|
|
333
336
|
}
|
|
334
337
|
|
|
335
|
-
var rowUpdate =
|
|
338
|
+
var rowUpdate = apiRef.current.unstable_getRowWithUpdatedValuesFromRowEditing(id);
|
|
336
339
|
|
|
337
|
-
|
|
338
|
-
var
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
340
|
+
if (processRowUpdate) {
|
|
341
|
+
var handleError = function handleError(errorThrown) {
|
|
342
|
+
if (onProcessRowUpdateError) {
|
|
343
|
+
onProcessRowUpdateError(errorThrown);
|
|
344
|
+
} else {
|
|
345
|
+
missingOnProcessRowUpdateErrorWarning();
|
|
346
|
+
}
|
|
347
|
+
};
|
|
343
348
|
|
|
344
|
-
|
|
345
|
-
rowUpdate
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
349
|
+
try {
|
|
350
|
+
Promise.resolve(processRowUpdate(rowUpdate, row)).then(function (finalRowUpdate) {
|
|
351
|
+
apiRef.current.updateRows([finalRowUpdate]);
|
|
352
|
+
updateFocusedCellIfNeeded();
|
|
353
|
+
updateOrDeleteRowState(id, null);
|
|
354
|
+
}).catch(handleError);
|
|
355
|
+
} catch (errorThrown) {
|
|
356
|
+
handleError(errorThrown);
|
|
351
357
|
}
|
|
352
|
-
});
|
|
353
|
-
|
|
354
|
-
if (processRowUpdate) {
|
|
355
|
-
Promise.resolve(processRowUpdate(rowUpdate, row)).then(function (finalRowUpdate) {
|
|
356
|
-
apiRef.current.updateRows([finalRowUpdate]);
|
|
357
|
-
updateFocusedCellIfNeeded();
|
|
358
|
-
updateOrDeleteRowState(id, null);
|
|
359
|
-
});
|
|
360
358
|
} else {
|
|
361
359
|
apiRef.current.updateRows([rowUpdate]);
|
|
362
360
|
updateFocusedCellIfNeeded();
|
|
363
361
|
updateOrDeleteRowState(id, null);
|
|
364
362
|
}
|
|
365
|
-
}, [apiRef, processRowUpdate, throwIfNotInMode, updateOrDeleteRowState]);
|
|
363
|
+
}, [apiRef, onProcessRowUpdateError, processRowUpdate, throwIfNotInMode, updateOrDeleteRowState]);
|
|
366
364
|
var setRowEditingEditCellValue = React.useCallback(function (params) {
|
|
367
365
|
var id = params.id,
|
|
368
366
|
field = params.field,
|
|
@@ -427,10 +425,10 @@ export var useGridRowEditing = function useGridRowEditing(apiRef, props) {
|
|
|
427
425
|
promises.push(promise);
|
|
428
426
|
}
|
|
429
427
|
|
|
430
|
-
Object.entries(editingState[id]).forEach(function (
|
|
431
|
-
var
|
|
432
|
-
thisField =
|
|
433
|
-
fieldProps =
|
|
428
|
+
Object.entries(editingState[id]).forEach(function (_ref) {
|
|
429
|
+
var _ref2 = _slicedToArray(_ref, 2),
|
|
430
|
+
thisField = _ref2[0],
|
|
431
|
+
fieldProps = _ref2[1];
|
|
434
432
|
|
|
435
433
|
if (thisField === field) {
|
|
436
434
|
return;
|
|
@@ -483,11 +481,36 @@ export var useGridRowEditing = function useGridRowEditing(apiRef, props) {
|
|
|
483
481
|
});
|
|
484
482
|
});
|
|
485
483
|
}, [apiRef, throwIfNotEditable, updateOrDeleteFieldState]);
|
|
484
|
+
var getRowWithUpdatedValuesFromRowEditing = React.useCallback(function (id) {
|
|
485
|
+
var editingState = gridEditRowsStateSelector(apiRef.current.state);
|
|
486
|
+
var row = apiRef.current.getRow(id);
|
|
487
|
+
|
|
488
|
+
var rowUpdate = _extends({}, row);
|
|
489
|
+
|
|
490
|
+
Object.entries(editingState[id]).forEach(function (_ref3) {
|
|
491
|
+
var _ref4 = _slicedToArray(_ref3, 2),
|
|
492
|
+
field = _ref4[0],
|
|
493
|
+
fieldProps = _ref4[1];
|
|
494
|
+
|
|
495
|
+
var column = apiRef.current.getColumn(field);
|
|
496
|
+
|
|
497
|
+
if (column.valueSetter) {
|
|
498
|
+
rowUpdate = column.valueSetter({
|
|
499
|
+
value: fieldProps.value,
|
|
500
|
+
row: rowUpdate
|
|
501
|
+
});
|
|
502
|
+
} else {
|
|
503
|
+
rowUpdate[field] = fieldProps.value;
|
|
504
|
+
}
|
|
505
|
+
});
|
|
506
|
+
return rowUpdate;
|
|
507
|
+
}, [apiRef]);
|
|
486
508
|
var editingApi = {
|
|
487
509
|
getRowMode: getRowMode,
|
|
488
510
|
startRowEditMode: startRowEditMode,
|
|
489
511
|
stopRowEditMode: stopRowEditMode,
|
|
490
|
-
unstable_setRowEditingEditCellValue: setRowEditingEditCellValue
|
|
512
|
+
unstable_setRowEditingEditCellValue: setRowEditingEditCellValue,
|
|
513
|
+
unstable_getRowWithUpdatedValuesFromRowEditing: getRowWithUpdatedValuesFromRowEditing
|
|
491
514
|
};
|
|
492
515
|
useGridApiMethod(apiRef, editingApi, 'EditingApi');
|
|
493
516
|
};
|
|
@@ -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);
|
|
@@ -12,7 +12,7 @@ import { getDefaultGridFilterModel } from './gridFilterState';
|
|
|
12
12
|
import { gridFilterModelSelector, gridVisibleSortedRowEntriesSelector } from './gridFilterSelector';
|
|
13
13
|
import { useFirstRender } from '../../utils/useFirstRender';
|
|
14
14
|
import { gridRowIdsSelector } from '../rows';
|
|
15
|
-
import {
|
|
15
|
+
import { useGridRegisterPipeProcessor } from '../../core/pipeProcessing';
|
|
16
16
|
import { GRID_DEFAULT_STRATEGY, useGridRegisterStrategyProcessor } from '../../core/strategyProcessing';
|
|
17
17
|
import { buildAggregatedFilterApplier, sanitizeFilterModel, mergeStateWithFilterModel } from './gridFilterUtils';
|
|
18
18
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
@@ -45,11 +45,7 @@ export var useGridFilter = function useGridFilter(apiRef, props) {
|
|
|
45
45
|
stateSelector: gridFilterModelSelector,
|
|
46
46
|
changeEvent: GridEvents.filterModelChange
|
|
47
47
|
});
|
|
48
|
-
|
|
49
|
-
* API METHODS
|
|
50
|
-
*/
|
|
51
|
-
|
|
52
|
-
var applyFilters = React.useCallback(function () {
|
|
48
|
+
var updateFilteredRows = React.useCallback(function () {
|
|
53
49
|
apiRef.current.setState(function (state) {
|
|
54
50
|
var filterModel = gridFilterModelSelector(state, apiRef.current.instanceId);
|
|
55
51
|
var isRowMatchingFilters = props.filterMode === GridFeatureModeConstant.client ? buildAggregatedFilterApplier(filterModel, apiRef) : null;
|
|
@@ -60,9 +56,16 @@ export var useGridFilter = function useGridFilter(apiRef, props) {
|
|
|
60
56
|
filter: _extends({}, state.filter, filteringResult)
|
|
61
57
|
});
|
|
62
58
|
});
|
|
63
|
-
apiRef.current.publishEvent(GridEvents.
|
|
59
|
+
apiRef.current.publishEvent(GridEvents.filteredRowsSet);
|
|
60
|
+
}, [props.filterMode, apiRef]);
|
|
61
|
+
/**
|
|
62
|
+
* API METHODS
|
|
63
|
+
*/
|
|
64
|
+
|
|
65
|
+
var applyFilters = React.useCallback(function () {
|
|
66
|
+
updateFilteredRows();
|
|
64
67
|
apiRef.current.forceUpdate();
|
|
65
|
-
}, [apiRef,
|
|
68
|
+
}, [apiRef, updateFilteredRows]);
|
|
66
69
|
var upsertFilterItem = React.useCallback(function (item) {
|
|
67
70
|
var filterModel = gridFilterModelSelector(apiRef);
|
|
68
71
|
|
|
@@ -234,9 +237,9 @@ export var useGridFilter = function useGridFilter(apiRef, props) {
|
|
|
234
237
|
filteredDescendantCountLookup: {}
|
|
235
238
|
};
|
|
236
239
|
}, [apiRef, props.filterMode]);
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
+
useGridRegisterPipeProcessor(apiRef, 'exportState', stateExportPreProcessing);
|
|
241
|
+
useGridRegisterPipeProcessor(apiRef, 'restoreState', stateRestorePreProcessing);
|
|
242
|
+
useGridRegisterPipeProcessor(apiRef, 'preferencePanel', preferencePanelPreProcessing);
|
|
240
243
|
useGridRegisterStrategyProcessor(apiRef, GRID_DEFAULT_STRATEGY, 'filtering', flatFilteringMethod);
|
|
241
244
|
/**
|
|
242
245
|
* EVENTS
|
|
@@ -260,8 +263,10 @@ export var useGridFilter = function useGridFilter(apiRef, props) {
|
|
|
260
263
|
if (methodName === 'filtering') {
|
|
261
264
|
apiRef.current.unstable_applyFilters();
|
|
262
265
|
}
|
|
263
|
-
}, [apiRef]);
|
|
264
|
-
|
|
266
|
+
}, [apiRef]); // Do not call `apiRef.current.forceUpdate` to avoid re-render before updating the sorted rows.
|
|
267
|
+
// Otherwise, the state is not consistent during the render
|
|
268
|
+
|
|
269
|
+
useGridApiEventHandler(apiRef, GridEvents.rowsSet, updateFilteredRows);
|
|
265
270
|
useGridApiEventHandler(apiRef, GridEvents.rowExpansionChange, apiRef.current.unstable_applyFilters);
|
|
266
271
|
useGridApiEventHandler(apiRef, GridEvents.columnsChange, handleColumnsChange);
|
|
267
272
|
useGridApiEventHandler(apiRef, GridEvents.activeStrategyProcessorChange, handleStrategyProcessorChange);
|
|
@@ -105,21 +105,31 @@ export var useGridFocus = function useGridFocus(apiRef, props) {
|
|
|
105
105
|
rowIndexToFocus += 1;
|
|
106
106
|
}
|
|
107
107
|
|
|
108
|
+
var currentPage = getVisibleRows(apiRef, {
|
|
109
|
+
pagination: props.pagination,
|
|
110
|
+
paginationMode: props.paginationMode
|
|
111
|
+
});
|
|
112
|
+
|
|
108
113
|
if (columnIndexToFocus >= visibleColumns.length) {
|
|
109
|
-
// Go to next row if we are
|
|
114
|
+
// Go to next row if we are after the last column
|
|
110
115
|
rowIndexToFocus += 1;
|
|
111
|
-
|
|
116
|
+
|
|
117
|
+
if (rowIndexToFocus < currentPage.rows.length) {
|
|
118
|
+
// Go to first column of the next row if there's one more row
|
|
119
|
+
columnIndexToFocus = 0;
|
|
120
|
+
}
|
|
112
121
|
} else if (columnIndexToFocus < 0) {
|
|
113
|
-
// Go to previous row if we are
|
|
122
|
+
// Go to previous row if we are before the first column
|
|
114
123
|
rowIndexToFocus -= 1;
|
|
115
|
-
|
|
124
|
+
|
|
125
|
+
if (rowIndexToFocus >= 0) {
|
|
126
|
+
// Go to last column of the previous if there's one more row
|
|
127
|
+
columnIndexToFocus = visibleColumns.length - 1;
|
|
128
|
+
}
|
|
116
129
|
}
|
|
117
130
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
paginationMode: props.paginationMode
|
|
121
|
-
});
|
|
122
|
-
rowIndexToFocus = clamp(rowIndexToFocus, currentPage.range.firstRowIndex, currentPage.range.lastRowIndex);
|
|
131
|
+
rowIndexToFocus = clamp(rowIndexToFocus, 0, currentPage.rows.length - 1);
|
|
132
|
+
columnIndexToFocus = clamp(columnIndexToFocus, 0, visibleColumns.length - 1);
|
|
123
133
|
var rowToFocus = currentPage.rows[rowIndexToFocus];
|
|
124
134
|
var columnToFocus = visibleColumns[columnIndexToFocus];
|
|
125
135
|
apiRef.current.setCellFocus(rowToFocus.id, columnToFocus.field);
|