@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
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
-
import { DEFAULT_GRID_COL_TYPE_KEY, getGridDefaultColumnTypes } from '../../../
|
|
2
|
+
import { DEFAULT_GRID_COL_TYPE_KEY, getGridDefaultColumnTypes } from '../../../colDef';
|
|
3
3
|
import { gridColumnsSelector, gridColumnVisibilityModelSelector } from './gridColumnsSelector';
|
|
4
4
|
import { clamp } from '../../../utils/utils';
|
|
5
5
|
export const COLUMNS_DIMENSION_PROPERTIES = ['maxWidth', 'minWidth', 'width', 'flex'];
|
|
@@ -206,9 +206,15 @@ export const applyInitialState = (columnsState, initialState) => {
|
|
|
206
206
|
|
|
207
207
|
for (let i = 0; i < columnsWithUpdatedDimensions.length; i += 1) {
|
|
208
208
|
const field = columnsWithUpdatedDimensions[i];
|
|
209
|
-
|
|
209
|
+
|
|
210
|
+
const newColDef = _extends({}, newColumnLookup[field], {
|
|
210
211
|
hasBeenResized: true
|
|
211
212
|
});
|
|
213
|
+
|
|
214
|
+
Object.entries(dimensions[field]).forEach(([key, value]) => {
|
|
215
|
+
newColDef[key] = value === -1 ? Infinity : value;
|
|
216
|
+
});
|
|
217
|
+
newColumnLookup[field] = newColDef;
|
|
212
218
|
}
|
|
213
219
|
|
|
214
220
|
const newColumnsState = {
|
|
@@ -243,7 +249,7 @@ export const createColumnsState = ({
|
|
|
243
249
|
apiRef,
|
|
244
250
|
columnsToUpsert,
|
|
245
251
|
initialState,
|
|
246
|
-
|
|
252
|
+
columnTypes,
|
|
247
253
|
currentColumnVisibilityModel = gridColumnVisibilityModelSelector(apiRef),
|
|
248
254
|
shouldRegenColumnVisibilityModelFromColumns,
|
|
249
255
|
keepOnlyColumnsToUpsert = false
|
|
@@ -253,7 +259,7 @@ export const createColumnsState = ({
|
|
|
253
259
|
const isInsideStateInitializer = !apiRef.current.state.columns;
|
|
254
260
|
let columnsStateWithoutColumnVisibilityModel;
|
|
255
261
|
|
|
256
|
-
if (isInsideStateInitializer
|
|
262
|
+
if (isInsideStateInitializer) {
|
|
257
263
|
columnsStateWithoutColumnVisibilityModel = {
|
|
258
264
|
all: [],
|
|
259
265
|
lookup: {}
|
|
@@ -261,33 +267,69 @@ export const createColumnsState = ({
|
|
|
261
267
|
} else {
|
|
262
268
|
const currentState = gridColumnsSelector(apiRef.current.state);
|
|
263
269
|
columnsStateWithoutColumnVisibilityModel = {
|
|
264
|
-
all: [...currentState.all],
|
|
265
|
-
lookup: _extends({}, currentState.lookup)
|
|
270
|
+
all: keepOnlyColumnsToUpsert ? [] : [...currentState.all],
|
|
271
|
+
lookup: _extends({}, currentState.lookup) // Will be cleaned later if keepOnlyColumnsToUpsert=true
|
|
272
|
+
|
|
266
273
|
};
|
|
267
274
|
}
|
|
268
275
|
|
|
276
|
+
let columnsToKeep = {};
|
|
277
|
+
|
|
278
|
+
if (keepOnlyColumnsToUpsert && !isInsideStateInitializer) {
|
|
279
|
+
columnsToKeep = Object.keys(columnsStateWithoutColumnVisibilityModel.lookup).reduce((acc, key) => _extends({}, acc, {
|
|
280
|
+
[key]: false
|
|
281
|
+
}), {});
|
|
282
|
+
}
|
|
283
|
+
|
|
269
284
|
const columnsToUpsertLookup = {};
|
|
270
285
|
columnsToUpsert.forEach(newColumn => {
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
286
|
+
const {
|
|
287
|
+
field
|
|
288
|
+
} = newColumn;
|
|
289
|
+
columnsToUpsertLookup[field] = true;
|
|
290
|
+
columnsToKeep[field] = true;
|
|
291
|
+
let existingState = columnsStateWithoutColumnVisibilityModel.lookup[field];
|
|
292
|
+
|
|
293
|
+
if (existingState == null) {
|
|
274
294
|
// New Column
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
295
|
+
existingState = _extends({}, getGridColDef(columnTypes, newColumn.type), {
|
|
296
|
+
// TODO v6: Inline `getGridColDef`
|
|
297
|
+
field,
|
|
298
|
+
hasBeenResized: false
|
|
299
|
+
});
|
|
300
|
+
columnsStateWithoutColumnVisibilityModel.all.push(field);
|
|
301
|
+
} else if (keepOnlyColumnsToUpsert) {
|
|
302
|
+
columnsStateWithoutColumnVisibilityModel.all.push(field);
|
|
303
|
+
}
|
|
279
304
|
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
305
|
+
let hasBeenResized = existingState.hasBeenResized;
|
|
306
|
+
COLUMNS_DIMENSION_PROPERTIES.forEach(key => {
|
|
307
|
+
if (newColumn[key] !== undefined) {
|
|
308
|
+
hasBeenResized = true;
|
|
283
309
|
|
|
284
|
-
|
|
285
|
-
|
|
310
|
+
if (newColumn[key] === -1) {
|
|
311
|
+
newColumn[key] = Infinity;
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
});
|
|
315
|
+
columnsStateWithoutColumnVisibilityModel.lookup[field] = _extends({}, existingState, {
|
|
316
|
+
hide: newColumn.hide == null ? false : newColumn.hide
|
|
317
|
+
}, newColumn, {
|
|
318
|
+
hasBeenResized
|
|
319
|
+
});
|
|
286
320
|
});
|
|
287
321
|
|
|
322
|
+
if (keepOnlyColumnsToUpsert && !isInsideStateInitializer) {
|
|
323
|
+
Object.keys(columnsStateWithoutColumnVisibilityModel.lookup).forEach(field => {
|
|
324
|
+
if (!columnsToKeep[field]) {
|
|
325
|
+
delete columnsStateWithoutColumnVisibilityModel.lookup[field];
|
|
326
|
+
}
|
|
327
|
+
});
|
|
328
|
+
}
|
|
329
|
+
|
|
288
330
|
const columnsLookupBeforePreProcessing = _extends({}, columnsStateWithoutColumnVisibilityModel.lookup);
|
|
289
331
|
|
|
290
|
-
const columnsStateWithPreProcessing = apiRef.current.
|
|
332
|
+
const columnsStateWithPreProcessing = apiRef.current.unstable_applyPipeProcessors('hydrateColumns', columnsStateWithoutColumnVisibilityModel); // TODO v6: remove the sync between the columns `hide` option and the model.
|
|
291
333
|
|
|
292
334
|
let columnVisibilityModel = {};
|
|
293
335
|
|
|
@@ -362,4 +404,47 @@ export const createColumnsState = ({
|
|
|
362
404
|
};
|
|
363
405
|
export const mergeColumnsState = columnsState => state => _extends({}, state, {
|
|
364
406
|
columns: columnsState
|
|
365
|
-
});
|
|
407
|
+
});
|
|
408
|
+
export function getFirstNonSpannedColumnToRender({
|
|
409
|
+
firstColumnToRender,
|
|
410
|
+
apiRef,
|
|
411
|
+
firstRowToRender,
|
|
412
|
+
lastRowToRender,
|
|
413
|
+
visibleRows
|
|
414
|
+
}) {
|
|
415
|
+
let firstNonSpannedColumnToRender = firstColumnToRender;
|
|
416
|
+
|
|
417
|
+
for (let i = firstRowToRender; i < lastRowToRender; i += 1) {
|
|
418
|
+
const row = visibleRows[i];
|
|
419
|
+
|
|
420
|
+
if (row) {
|
|
421
|
+
const rowId = visibleRows[i].id;
|
|
422
|
+
const cellColSpanInfo = apiRef.current.unstable_getCellColSpanInfo(rowId, firstColumnToRender);
|
|
423
|
+
|
|
424
|
+
if (cellColSpanInfo && cellColSpanInfo.spannedByColSpan) {
|
|
425
|
+
firstNonSpannedColumnToRender = cellColSpanInfo.leftVisibleCellIndex;
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
return firstNonSpannedColumnToRender;
|
|
431
|
+
}
|
|
432
|
+
export function getFirstColumnIndexToRender({
|
|
433
|
+
firstColumnIndex,
|
|
434
|
+
minColumnIndex,
|
|
435
|
+
columnBuffer,
|
|
436
|
+
firstRowToRender,
|
|
437
|
+
lastRowToRender,
|
|
438
|
+
apiRef,
|
|
439
|
+
visibleRows
|
|
440
|
+
}) {
|
|
441
|
+
const initialFirstColumnToRender = Math.max(firstColumnIndex - columnBuffer, minColumnIndex);
|
|
442
|
+
const firstColumnToRender = getFirstNonSpannedColumnToRender({
|
|
443
|
+
firstColumnToRender: initialFirstColumnToRender,
|
|
444
|
+
apiRef,
|
|
445
|
+
firstRowToRender,
|
|
446
|
+
lastRowToRender,
|
|
447
|
+
visibleRows
|
|
448
|
+
});
|
|
449
|
+
return firstColumnToRender;
|
|
450
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { GridApiCommunity } from '../../../models/api/gridApiCommunity';
|
|
3
|
+
/**
|
|
4
|
+
* @requires useGridColumns (method, event)
|
|
5
|
+
* @requires useGridParamsApi (method)
|
|
6
|
+
*/
|
|
7
|
+
export declare const useGridColumnSpanning: (apiRef: React.MutableRefObject<GridApiCommunity>) => void;
|
|
@@ -0,0 +1,109 @@
|
|
|
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
|
+
var _lookup$current$rowId;
|
|
23
|
+
|
|
24
|
+
return (_lookup$current$rowId = lookup.current[rowId]) == null ? void 0 : _lookup$current$rowId[columnIndex];
|
|
25
|
+
}, []); // Calculate `colSpan` for the cell.
|
|
26
|
+
|
|
27
|
+
const calculateCellColSpan = React.useCallback(params => {
|
|
28
|
+
const {
|
|
29
|
+
columnIndex,
|
|
30
|
+
rowId,
|
|
31
|
+
minFirstColumnIndex,
|
|
32
|
+
maxLastColumnIndex
|
|
33
|
+
} = params;
|
|
34
|
+
const visibleColumns = apiRef.current.getVisibleColumns();
|
|
35
|
+
const columnsLength = visibleColumns.length;
|
|
36
|
+
const column = visibleColumns[columnIndex];
|
|
37
|
+
const colSpan = typeof column.colSpan === 'function' ? column.colSpan(apiRef.current.getCellParams(rowId, column.field)) : column.colSpan;
|
|
38
|
+
|
|
39
|
+
if (!colSpan || colSpan === 1) {
|
|
40
|
+
setCellColSpanInfo(rowId, columnIndex, {
|
|
41
|
+
spannedByColSpan: false,
|
|
42
|
+
cellProps: {
|
|
43
|
+
colSpan: 1,
|
|
44
|
+
width: column.computedWidth
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
return {
|
|
48
|
+
colSpan: 1
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
let width = column.computedWidth;
|
|
53
|
+
|
|
54
|
+
for (let j = 1; j < colSpan; j += 1) {
|
|
55
|
+
const nextColumnIndex = columnIndex + j; // Cells should be spanned only within their column section (left-pinned, right-pinned and unpinned).
|
|
56
|
+
|
|
57
|
+
if (nextColumnIndex >= minFirstColumnIndex && nextColumnIndex < maxLastColumnIndex) {
|
|
58
|
+
const nextColumn = visibleColumns[nextColumnIndex];
|
|
59
|
+
width += nextColumn.computedWidth;
|
|
60
|
+
setCellColSpanInfo(rowId, columnIndex + j, {
|
|
61
|
+
spannedByColSpan: true,
|
|
62
|
+
rightVisibleCellIndex: Math.min(columnIndex + colSpan, columnsLength - 1),
|
|
63
|
+
leftVisibleCellIndex: columnIndex
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
setCellColSpanInfo(rowId, columnIndex, {
|
|
68
|
+
spannedByColSpan: false,
|
|
69
|
+
cellProps: {
|
|
70
|
+
colSpan,
|
|
71
|
+
width
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
return {
|
|
77
|
+
colSpan
|
|
78
|
+
};
|
|
79
|
+
}, [apiRef, setCellColSpanInfo]); // Calculate `colSpan` for each cell in the row
|
|
80
|
+
|
|
81
|
+
const calculateColSpan = React.useCallback(({
|
|
82
|
+
rowId,
|
|
83
|
+
minFirstColumn,
|
|
84
|
+
maxLastColumn
|
|
85
|
+
}) => {
|
|
86
|
+
for (let i = minFirstColumn; i < maxLastColumn; i += 1) {
|
|
87
|
+
const cellProps = calculateCellColSpan({
|
|
88
|
+
columnIndex: i,
|
|
89
|
+
rowId,
|
|
90
|
+
minFirstColumnIndex: minFirstColumn,
|
|
91
|
+
maxLastColumnIndex: maxLastColumn
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
if (cellProps.colSpan > 1) {
|
|
95
|
+
i += cellProps.colSpan - 1;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}, [calculateCellColSpan]);
|
|
99
|
+
const columnSpanningApi = {
|
|
100
|
+
unstable_getCellColSpanInfo: getCellColSpanInfo,
|
|
101
|
+
unstable_calculateColSpan: calculateColSpan
|
|
102
|
+
};
|
|
103
|
+
useGridApiMethod(apiRef, columnSpanningApi, 'GridColumnSpanningAPI');
|
|
104
|
+
const handleColumnReorderChange = React.useCallback(() => {
|
|
105
|
+
// `colSpan` needs to be recalculated after column reordering
|
|
106
|
+
lookup.current = {};
|
|
107
|
+
}, []);
|
|
108
|
+
useGridApiEventHandler(apiRef, GridEvents.columnOrderChange, handleColumnReorderChange);
|
|
109
|
+
};
|
|
@@ -8,4 +8,4 @@ export declare const columnsStateInitializer: GridStateInitializer<Pick<DataGrid
|
|
|
8
8
|
* @requires useGridDimensions (method, event) - can be after
|
|
9
9
|
* TODO: Impossible priority - useGridParamsApi also needs to be after useGridColumns
|
|
10
10
|
*/
|
|
11
|
-
export declare function useGridColumns(apiRef: React.MutableRefObject<GridApiCommunity>, props: Pick<DataGridProcessedProps, 'initialState' | 'columns' | 'onColumnVisibilityChange' | 'columnVisibilityModel' | 'onColumnVisibilityModelChange' | 'columnTypes' | '
|
|
11
|
+
export declare function useGridColumns(apiRef: React.MutableRefObject<GridApiCommunity>, props: Pick<DataGridProcessedProps, 'initialState' | 'columns' | 'onColumnVisibilityChange' | 'columnVisibilityModel' | 'onColumnVisibilityModelChange' | 'columnTypes' | 'classes' | 'components' | 'componentsProps'>): void;
|
|
@@ -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";
|
|
@@ -16,7 +16,7 @@ export const columnsStateInitializer = (state, props, apiRef) => {
|
|
|
16
16
|
const columnsTypes = computeColumnTypes(props.columnTypes);
|
|
17
17
|
const columnsState = createColumnsState({
|
|
18
18
|
apiRef,
|
|
19
|
-
columnsTypes,
|
|
19
|
+
columnTypes: columnsTypes,
|
|
20
20
|
columnsToUpsert: props.columns,
|
|
21
21
|
initialState: (_props$initialState2 = props.initialState) == null ? void 0 : _props$initialState2.columns,
|
|
22
22
|
shouldRegenColumnVisibilityModelFromColumns: !isUsingColumnVisibilityModel,
|
|
@@ -37,13 +37,15 @@ export function useGridColumns(apiRef, props) {
|
|
|
37
37
|
var _props$initialState4, _props$initialState4$, _props$componentsProp2;
|
|
38
38
|
|
|
39
39
|
const logger = useGridLogger(apiRef, 'useGridColumns');
|
|
40
|
-
const
|
|
40
|
+
const columnTypes = React.useMemo(() => computeColumnTypes(props.columnTypes), [props.columnTypes]);
|
|
41
|
+
const previousColumnsProp = React.useRef(props.columns);
|
|
42
|
+
const previousColumnTypesProp = React.useRef(columnTypes);
|
|
41
43
|
/**
|
|
42
44
|
* If `initialState.columns.columnVisibilityModel` or `columnVisibilityModel` was defined during the 1st render, we are directly updating the model
|
|
43
45
|
* 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`
|
|
44
46
|
*/
|
|
45
47
|
|
|
46
|
-
const isUsingColumnVisibilityModel = React.useRef(!!props.columnVisibilityModel || !!((_props$initialState4 = props.initialState) != null && (_props$initialState4$ = _props$initialState4.columns) != null && _props$initialState4$.columnVisibilityModel))
|
|
48
|
+
const isUsingColumnVisibilityModel = React.useRef(!!props.columnVisibilityModel || !!((_props$initialState4 = props.initialState) != null && (_props$initialState4$ = _props$initialState4.columns) != null && _props$initialState4$.columnVisibilityModel));
|
|
47
49
|
apiRef.current.unstable_updateControlState({
|
|
48
50
|
stateId: 'visibleColumns',
|
|
49
51
|
propModel: props.columnVisibilityModel,
|
|
@@ -80,7 +82,7 @@ export function useGridColumns(apiRef, props) {
|
|
|
80
82
|
apiRef.current.setState(state => _extends({}, state, {
|
|
81
83
|
columns: createColumnsState({
|
|
82
84
|
apiRef,
|
|
83
|
-
|
|
85
|
+
columnTypes,
|
|
84
86
|
columnsToUpsert: [],
|
|
85
87
|
initialState: undefined,
|
|
86
88
|
shouldRegenColumnVisibilityModelFromColumns: false,
|
|
@@ -90,24 +92,24 @@ export function useGridColumns(apiRef, props) {
|
|
|
90
92
|
}));
|
|
91
93
|
apiRef.current.forceUpdate();
|
|
92
94
|
}
|
|
93
|
-
}, [apiRef,
|
|
95
|
+
}, [apiRef, columnTypes]);
|
|
94
96
|
const updateColumns = React.useCallback(columns => {
|
|
95
97
|
const columnsState = createColumnsState({
|
|
96
98
|
apiRef,
|
|
97
|
-
|
|
99
|
+
columnTypes,
|
|
98
100
|
columnsToUpsert: columns,
|
|
99
101
|
initialState: undefined,
|
|
100
102
|
shouldRegenColumnVisibilityModelFromColumns: true,
|
|
101
103
|
keepOnlyColumnsToUpsert: false
|
|
102
104
|
});
|
|
103
105
|
setGridColumnsState(columnsState);
|
|
104
|
-
}, [apiRef, setGridColumnsState,
|
|
106
|
+
}, [apiRef, setGridColumnsState, columnTypes]);
|
|
105
107
|
const updateColumn = React.useCallback(column => apiRef.current.updateColumns([column]), [apiRef]);
|
|
106
108
|
const setColumnVisibility = React.useCallback((field, isVisible) => {
|
|
107
109
|
// We keep updating the `hide` option of `GridColDef` when not controlling the model to avoid any breaking change.
|
|
108
110
|
// `updateColumns` take care of updating the model itself if needs be.
|
|
109
111
|
// TODO v6: stop using the `hide` field even when the model is not defined
|
|
110
|
-
if (isUsingColumnVisibilityModel) {
|
|
112
|
+
if (isUsingColumnVisibilityModel.current) {
|
|
111
113
|
var _columnVisibilityMode;
|
|
112
114
|
|
|
113
115
|
const columnVisibilityModel = gridColumnVisibilityModelSelector(apiRef);
|
|
@@ -135,7 +137,7 @@ export function useGridColumns(apiRef, props) {
|
|
|
135
137
|
};
|
|
136
138
|
apiRef.current.publishEvent(GridEvents.columnVisibilityChange, params);
|
|
137
139
|
}
|
|
138
|
-
}, [apiRef
|
|
140
|
+
}, [apiRef]);
|
|
139
141
|
const setColumnIndex = React.useCallback((field, targetIndexPosition) => {
|
|
140
142
|
const allColumns = gridColumnFieldsSelector(apiRef);
|
|
141
143
|
const oldIndexPosition = allColumns.findIndex(col => col === field);
|
|
@@ -196,7 +198,7 @@ export function useGridColumns(apiRef, props) {
|
|
|
196
198
|
const stateExportPreProcessing = React.useCallback(prevState => {
|
|
197
199
|
const columnsStateToExport = {};
|
|
198
200
|
|
|
199
|
-
if (isUsingColumnVisibilityModel) {
|
|
201
|
+
if (isUsingColumnVisibilityModel.current) {
|
|
200
202
|
const columnVisibilityModelToExport = gridColumnVisibilityModelSelector(apiRef);
|
|
201
203
|
const hasHiddenColumns = Object.values(columnVisibilityModelToExport).some(value => value === false);
|
|
202
204
|
|
|
@@ -212,7 +214,13 @@ export function useGridColumns(apiRef, props) {
|
|
|
212
214
|
if (colDef.hasBeenResized) {
|
|
213
215
|
const colDefDimensions = {};
|
|
214
216
|
COLUMNS_DIMENSION_PROPERTIES.forEach(propertyName => {
|
|
215
|
-
|
|
217
|
+
let propertyValue = colDef[propertyName];
|
|
218
|
+
|
|
219
|
+
if (propertyValue === Infinity) {
|
|
220
|
+
propertyValue = -1;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
colDefDimensions[propertyName] = propertyValue;
|
|
216
224
|
});
|
|
217
225
|
dimensions[colDef.field] = colDefDimensions;
|
|
218
226
|
}
|
|
@@ -225,11 +233,11 @@ export function useGridColumns(apiRef, props) {
|
|
|
225
233
|
return _extends({}, prevState, {
|
|
226
234
|
columns: columnsStateToExport
|
|
227
235
|
});
|
|
228
|
-
}, [apiRef
|
|
236
|
+
}, [apiRef]);
|
|
229
237
|
const stateRestorePreProcessing = React.useCallback((params, context) => {
|
|
230
238
|
var _context$stateToResto;
|
|
231
239
|
|
|
232
|
-
const columnVisibilityModelToImport = isUsingColumnVisibilityModel ? (_context$stateToResto = context.stateToRestore.columns) == null ? void 0 : _context$stateToResto.columnVisibilityModel : undefined;
|
|
240
|
+
const columnVisibilityModelToImport = isUsingColumnVisibilityModel.current ? (_context$stateToResto = context.stateToRestore.columns) == null ? void 0 : _context$stateToResto.columnVisibilityModel : undefined;
|
|
233
241
|
const initialState = context.stateToRestore.columns;
|
|
234
242
|
|
|
235
243
|
if (columnVisibilityModelToImport == null && initialState == null) {
|
|
@@ -238,10 +246,10 @@ export function useGridColumns(apiRef, props) {
|
|
|
238
246
|
|
|
239
247
|
const columnsState = createColumnsState({
|
|
240
248
|
apiRef,
|
|
241
|
-
|
|
249
|
+
columnTypes,
|
|
242
250
|
columnsToUpsert: [],
|
|
243
251
|
initialState,
|
|
244
|
-
shouldRegenColumnVisibilityModelFromColumns: !isUsingColumnVisibilityModel,
|
|
252
|
+
shouldRegenColumnVisibilityModelFromColumns: !isUsingColumnVisibilityModel.current,
|
|
245
253
|
currentColumnVisibilityModel: columnVisibilityModelToImport,
|
|
246
254
|
keepOnlyColumnsToUpsert: false
|
|
247
255
|
});
|
|
@@ -252,7 +260,7 @@ export function useGridColumns(apiRef, props) {
|
|
|
252
260
|
}
|
|
253
261
|
|
|
254
262
|
return params;
|
|
255
|
-
}, [apiRef,
|
|
263
|
+
}, [apiRef, columnTypes]);
|
|
256
264
|
const preferencePanelPreProcessing = React.useCallback((initialValue, value) => {
|
|
257
265
|
if (value === GridPreferencePanelsValue.columns) {
|
|
258
266
|
var _props$componentsProp;
|
|
@@ -263,29 +271,13 @@ export function useGridColumns(apiRef, props) {
|
|
|
263
271
|
|
|
264
272
|
return initialValue;
|
|
265
273
|
}, [props.components.ColumnsPanel, (_props$componentsProp2 = props.componentsProps) == null ? void 0 : _props$componentsProp2.columnsPanel]);
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
274
|
+
useGridRegisterPipeProcessor(apiRef, 'exportState', stateExportPreProcessing);
|
|
275
|
+
useGridRegisterPipeProcessor(apiRef, 'restoreState', stateRestorePreProcessing);
|
|
276
|
+
useGridRegisterPipeProcessor(apiRef, 'preferencePanel', preferencePanelPreProcessing);
|
|
269
277
|
/**
|
|
270
278
|
* EVENTS
|
|
271
279
|
*/
|
|
272
280
|
|
|
273
|
-
const handlePreProcessorRegister = React.useCallback(name => {
|
|
274
|
-
if (name !== 'hydrateColumns') {
|
|
275
|
-
return;
|
|
276
|
-
}
|
|
277
|
-
|
|
278
|
-
logger.info(`Columns pre-processing have changed, regenerating the columns`);
|
|
279
|
-
const columnsState = createColumnsState({
|
|
280
|
-
apiRef,
|
|
281
|
-
columnsTypes,
|
|
282
|
-
columnsToUpsert: [],
|
|
283
|
-
initialState: undefined,
|
|
284
|
-
shouldRegenColumnVisibilityModelFromColumns: !isUsingColumnVisibilityModel,
|
|
285
|
-
keepOnlyColumnsToUpsert: false
|
|
286
|
-
});
|
|
287
|
-
setGridColumnsState(columnsState);
|
|
288
|
-
}, [apiRef, logger, setGridColumnsState, columnsTypes, isUsingColumnVisibilityModel]);
|
|
289
281
|
const prevInnerWidth = React.useRef(null);
|
|
290
282
|
|
|
291
283
|
const handleGridSizeChange = viewportInnerSize => {
|
|
@@ -295,9 +287,25 @@ export function useGridColumns(apiRef, props) {
|
|
|
295
287
|
}
|
|
296
288
|
};
|
|
297
289
|
|
|
298
|
-
useGridApiEventHandler(apiRef, GridEvents.preProcessorRegister, handlePreProcessorRegister);
|
|
299
290
|
useGridApiEventHandler(apiRef, GridEvents.viewportInnerSizeChange, handleGridSizeChange);
|
|
300
291
|
useGridApiOptionHandler(apiRef, GridEvents.columnVisibilityChange, props.onColumnVisibilityChange);
|
|
292
|
+
/**
|
|
293
|
+
* APPLIERS
|
|
294
|
+
*/
|
|
295
|
+
|
|
296
|
+
const hydrateColumns = React.useCallback(() => {
|
|
297
|
+
logger.info(`Columns pipe processing have changed, regenerating the columns`);
|
|
298
|
+
const columnsState = createColumnsState({
|
|
299
|
+
apiRef,
|
|
300
|
+
columnTypes,
|
|
301
|
+
columnsToUpsert: [],
|
|
302
|
+
initialState: undefined,
|
|
303
|
+
shouldRegenColumnVisibilityModelFromColumns: !isUsingColumnVisibilityModel.current,
|
|
304
|
+
keepOnlyColumnsToUpsert: false
|
|
305
|
+
});
|
|
306
|
+
setGridColumnsState(columnsState);
|
|
307
|
+
}, [apiRef, logger, setGridColumnsState, columnTypes]);
|
|
308
|
+
useGridRegisterPipeApplier(apiRef, 'hydrateColumns', hydrateColumns);
|
|
301
309
|
/**
|
|
302
310
|
* EFFECTS
|
|
303
311
|
*/
|
|
@@ -312,17 +320,24 @@ export function useGridColumns(apiRef, props) {
|
|
|
312
320
|
}
|
|
313
321
|
|
|
314
322
|
logger.info(`GridColumns have changed, new length ${props.columns.length}`);
|
|
323
|
+
|
|
324
|
+
if (previousColumnsProp.current === props.columns && previousColumnTypesProp.current === columnTypes) {
|
|
325
|
+
return;
|
|
326
|
+
}
|
|
327
|
+
|
|
315
328
|
const columnsState = createColumnsState({
|
|
316
329
|
apiRef,
|
|
317
|
-
|
|
330
|
+
columnTypes,
|
|
318
331
|
initialState: undefined,
|
|
319
332
|
// 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`
|
|
320
|
-
shouldRegenColumnVisibilityModelFromColumns: !isUsingColumnVisibilityModel,
|
|
333
|
+
shouldRegenColumnVisibilityModelFromColumns: !isUsingColumnVisibilityModel.current,
|
|
321
334
|
columnsToUpsert: props.columns,
|
|
322
335
|
keepOnlyColumnsToUpsert: true
|
|
323
336
|
});
|
|
337
|
+
previousColumnsProp.current = props.columns;
|
|
338
|
+
previousColumnTypesProp.current = columnTypes;
|
|
324
339
|
setGridColumnsState(columnsState);
|
|
325
|
-
}, [logger, apiRef, setGridColumnsState, props.columns,
|
|
340
|
+
}, [logger, apiRef, setGridColumnsState, props.columns, columnTypes]);
|
|
326
341
|
React.useEffect(() => {
|
|
327
342
|
if (props.columnVisibilityModel !== undefined) {
|
|
328
343
|
apiRef.current.setColumnVisibilityModel(props.columnVisibilityModel);
|
|
@@ -33,4 +33,9 @@ export interface GridDimensionsApi {
|
|
|
33
33
|
* @ignore - do not document.
|
|
34
34
|
*/
|
|
35
35
|
unstable_getViewportPageSize: () => number;
|
|
36
|
+
/**
|
|
37
|
+
* Forces a recalculation of all dimensions.
|
|
38
|
+
* @ignore - do not document.
|
|
39
|
+
*/
|
|
40
|
+
unstable_updateGridDimensionsRef: () => void;
|
|
36
41
|
}
|
|
@@ -134,7 +134,8 @@ export function useGridDimensions(apiRef, props) {
|
|
|
134
134
|
const dimensionsApi = {
|
|
135
135
|
resize,
|
|
136
136
|
getRootDimensions,
|
|
137
|
-
unstable_getViewportPageSize: getViewportPageSize
|
|
137
|
+
unstable_getViewportPageSize: getViewportPageSize,
|
|
138
|
+
unstable_updateGridDimensionsRef: updateGridDimensionsRef
|
|
138
139
|
};
|
|
139
140
|
useGridApiMethod(apiRef, dimensionsApi, 'GridDimensionsApi');
|
|
140
141
|
const debounceResize = React.useMemo(() => debounce(resize, 60), [resize]);
|
|
@@ -145,12 +146,12 @@ export function useGridDimensions(apiRef, props) {
|
|
|
145
146
|
const isJSDOM = /jsdom/.test(window.navigator.userAgent);
|
|
146
147
|
|
|
147
148
|
if (size.height === 0 && !warningShown.current && !props.autoHeight && !isJSDOM) {
|
|
148
|
-
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/
|
|
149
|
+
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'));
|
|
149
150
|
warningShown.current = true;
|
|
150
151
|
}
|
|
151
152
|
|
|
152
153
|
if (size.width === 0 && !warningShown.current && !isJSDOM) {
|
|
153
|
-
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/
|
|
154
|
+
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'));
|
|
154
155
|
warningShown.current = true;
|
|
155
156
|
}
|
|
156
157
|
|
|
@@ -171,7 +172,7 @@ export function useGridDimensions(apiRef, props) {
|
|
|
171
172
|
debounceResize();
|
|
172
173
|
}, [props.autoHeight, debounceResize, logger, resize]);
|
|
173
174
|
useEnhancedEffect(() => updateGridDimensionsRef(), [updateGridDimensionsRef]);
|
|
174
|
-
useGridApiOptionHandler(apiRef, GridEvents.
|
|
175
|
+
useGridApiOptionHandler(apiRef, GridEvents.sortedRowsSet, updateGridDimensionsRef);
|
|
175
176
|
useGridApiOptionHandler(apiRef, GridEvents.pageChange, updateGridDimensionsRef);
|
|
176
177
|
useGridApiOptionHandler(apiRef, GridEvents.pageSizeChange, updateGridDimensionsRef);
|
|
177
178
|
useGridApiOptionHandler(apiRef, GridEvents.columnsChange, updateGridDimensionsRef);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { GridApiCommunity } from '../../../models/api/gridApiCommunity';
|
|
3
3
|
import { DataGridProcessedProps } from '../../../models/props/DataGridProps';
|
|
4
|
-
export declare const useGridCellEditing: (apiRef: React.MutableRefObject<GridApiCommunity>, props: Pick<DataGridProcessedProps, 'editMode' | 'processRowUpdate' | 'onCellEditStart' | 'onCellEditStop'>) => void;
|
|
4
|
+
export declare const useGridCellEditing: (apiRef: React.MutableRefObject<GridApiCommunity>, props: Pick<DataGridProcessedProps, 'editMode' | 'processRowUpdate' | 'onCellEditStart' | 'onCellEditStop' | 'onProcessRowUpdateError'>) => void;
|