@mui/x-data-grid 5.8.0 → 5.11.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 +333 -66
- package/DataGrid/DataGrid.js +36 -2
- package/DataGrid/useDataGridComponent.js +3 -1
- package/DataGrid/useDataGridProps.js +2 -1
- package/LICENSE +21 -0
- package/README.md +7 -5
- package/colDef/gridActionsColDef.js +2 -1
- package/colDef/gridBooleanColDef.js +2 -1
- package/colDef/gridCheckboxSelectionColDef.js +1 -0
- package/colDef/gridDateColDef.js +4 -2
- package/colDef/gridNumericColDef.js +3 -2
- package/colDef/gridNumericOperators.d.ts +2 -0
- package/colDef/gridNumericOperators.js +11 -0
- package/colDef/gridSingleSelectColDef.js +3 -2
- package/colDef/gridSingleSelectOperators.d.ts +3 -0
- package/colDef/gridSingleSelectOperators.js +52 -0
- package/colDef/gridStringColDef.js +3 -2
- package/colDef/gridStringOperators.d.ts +2 -0
- package/colDef/gridStringOperators.js +12 -0
- package/components/GridFooter.d.ts +4 -2
- package/components/GridFooter.js +11 -2
- package/components/GridRow.d.ts +4 -0
- package/components/GridRow.js +58 -28
- package/components/GridRowCount.d.ts +4 -1
- package/components/GridRowCount.js +1 -0
- package/components/GridScrollArea.js +3 -4
- package/components/GridSelectedRowCount.d.ts +4 -1
- package/components/GridSelectedRowCount.js +2 -1
- package/components/base/GridBody.js +1 -2
- package/components/base/GridOverlays.js +5 -5
- package/components/cell/GridActionsCell.d.ts +5 -1
- package/components/cell/GridActionsCell.js +179 -21
- package/components/cell/GridActionsCellItem.d.ts +66 -4
- package/components/cell/GridActionsCellItem.js +7 -5
- package/components/cell/GridCell.d.ts +1 -0
- package/components/cell/GridCell.js +36 -15
- package/components/cell/GridEditBooleanCell.d.ts +15 -3
- package/components/cell/GridEditBooleanCell.js +101 -6
- package/components/cell/GridEditDateCell.d.ts +16 -4
- package/components/cell/GridEditDateCell.js +99 -5
- package/components/cell/GridEditInputCell.d.ts +11 -5
- package/components/cell/GridEditInputCell.js +30 -6
- package/components/cell/GridEditSingleSelectCell.d.ts +12 -4
- package/components/cell/GridEditSingleSelectCell.js +50 -18
- package/components/cell/index.d.ts +2 -0
- package/components/cell/index.js +2 -0
- package/components/columnHeaders/GridColumnHeaderItem.js +19 -23
- package/components/columnHeaders/GridColumnHeaders.d.ts +2 -1
- package/components/columnHeaders/GridColumnHeaders.js +1 -1
- package/components/columnHeaders/GridColumnHeadersInner.d.ts +2 -0
- package/components/columnSelection/GridCellCheckboxRenderer.d.ts +3 -3
- package/components/columnSelection/GridCellCheckboxRenderer.js +22 -6
- package/components/columnSelection/GridHeaderCheckbox.js +4 -5
- package/components/containers/GridFooterContainer.d.ts +8 -2
- package/components/containers/GridFooterContainer.js +11 -2
- package/components/containers/GridRootStyles.js +36 -1
- package/components/containers/GridToolbarContainer.d.ts +8 -2
- package/components/containers/GridToolbarContainer.js +12 -2
- package/components/menu/GridMenu.js +1 -0
- package/components/panel/GridPanel.js +1 -0
- package/components/panel/GridPanelContent.d.ts +8 -1
- package/components/panel/GridPanelContent.js +13 -2
- package/components/panel/GridPanelFooter.d.ts +8 -1
- package/components/panel/GridPanelFooter.js +13 -2
- package/components/panel/GridPanelHeader.d.ts +8 -1
- package/components/panel/GridPanelHeader.js +13 -2
- 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/GridToolbar.d.ts +12 -2
- package/components/toolbar/GridToolbar.js +30 -7
- package/components/toolbar/GridToolbarDensitySelector.js +1 -1
- package/components/toolbar/GridToolbarExport.d.ts +5 -4
- package/components/toolbar/GridToolbarExport.js +15 -20
- package/components/toolbar/GridToolbarFilterButton.d.ts +1 -1
- package/components/toolbar/GridToolbarQuickFilter.d.ts +20 -0
- package/components/toolbar/GridToolbarQuickFilter.js +88 -0
- package/components/toolbar/index.d.ts +3 -1
- package/components/toolbar/index.js +3 -2
- package/components/virtualization/GridVirtualScroller.d.ts +4 -1
- package/components/virtualization/GridVirtualScroller.js +2 -0
- package/components/virtualization/GridVirtualScrollerContent.d.ts +4 -1
- package/components/virtualization/GridVirtualScrollerContent.js +1 -3
- package/components/virtualization/GridVirtualScrollerRenderZone.d.ts +4 -1
- package/constants/defaultGridSlotsComponents.js +3 -2
- package/constants/gridClasses.d.ts +20 -0
- package/constants/gridClasses.js +1 -1
- package/constants/gridDetailPanelToggleField.d.ts +1 -0
- package/constants/gridDetailPanelToggleField.js +2 -0
- package/constants/localeTextConstants.js +8 -1
- package/hooks/core/pipeProcessing/gridPipeProcessingApi.d.ts +39 -15
- package/hooks/core/pipeProcessing/index.d.ts +1 -0
- package/hooks/core/pipeProcessing/index.js +2 -1
- package/hooks/core/pipeProcessing/useGridPipeProcessing.d.ts +8 -3
- package/hooks/core/pipeProcessing/useGridPipeProcessing.js +53 -19
- package/hooks/core/pipeProcessing/useGridRegisterPipeApplier.d.ts +3 -0
- package/hooks/core/pipeProcessing/useGridRegisterPipeApplier.js +27 -0
- package/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.d.ts +0 -3
- package/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.js +0 -4
- package/hooks/core/strategyProcessing/useGridStrategyProcessing.d.ts +4 -4
- package/hooks/core/strategyProcessing/useGridStrategyProcessing.js +6 -7
- package/hooks/core/useGridApiInitialization.js +3 -3
- package/hooks/core/useGridErrorHandler.js +1 -2
- package/hooks/core/useGridStateInitialization.js +1 -2
- package/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +0 -1
- package/hooks/features/columnHeaders/useGridColumnHeaders.js +81 -16
- package/hooks/features/columnMenu/useGridColumnMenu.js +3 -3
- package/hooks/features/columns/gridColumnsInterfaces.d.ts +3 -1
- package/hooks/features/columns/gridColumnsUtils.d.ts +19 -1
- package/hooks/features/columns/gridColumnsUtils.js +61 -8
- package/hooks/features/columns/useGridColumnSpanning.d.ts +7 -0
- package/hooks/features/columns/useGridColumnSpanning.js +108 -0
- package/hooks/features/columns/useGridColumns.d.ts +1 -1
- package/hooks/features/columns/useGridColumns.js +30 -25
- package/hooks/features/dimensions/useGridDimensions.d.ts +1 -1
- package/hooks/features/dimensions/useGridDimensions.js +10 -11
- package/hooks/features/editRows/useGridCellEditing.new.d.ts +1 -1
- package/hooks/features/editRows/useGridCellEditing.new.js +151 -42
- package/hooks/features/editRows/useGridCellEditing.old.js +20 -21
- package/hooks/features/editRows/useGridEditing.new.js +7 -3
- package/hooks/features/editRows/useGridEditing.old.js +4 -5
- package/hooks/features/editRows/useGridRowEditing.new.d.ts +1 -1
- package/hooks/features/editRows/useGridRowEditing.new.js +145 -57
- package/hooks/features/editRows/useGridRowEditing.old.js +21 -22
- package/hooks/features/events/useGridEvents.js +17 -18
- package/hooks/features/export/serializers/csvSerializer.js +5 -5
- package/hooks/features/export/useGridCsvExport.js +23 -16
- package/hooks/features/export/useGridPrintExport.js +22 -0
- package/hooks/features/export/utils.d.ts +3 -1
- package/hooks/features/export/utils.js +13 -0
- package/hooks/features/filter/gridFilterState.d.ts +1 -2
- package/hooks/features/filter/gridFilterState.js +3 -1
- package/hooks/features/filter/gridFilterUtils.d.ts +8 -0
- package/hooks/features/filter/gridFilterUtils.js +84 -2
- package/hooks/features/filter/useGridFilter.js +32 -15
- package/hooks/features/focus/useGridFocus.d.ts +1 -1
- package/hooks/features/focus/useGridFocus.js +48 -42
- package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.d.ts +1 -0
- package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +43 -12
- package/hooks/features/pagination/useGridPage.js +3 -4
- package/hooks/features/pagination/useGridPageSize.js +2 -3
- package/hooks/features/preferencesPanel/useGridPreferencesPanel.js +4 -6
- package/hooks/features/rows/gridRowsSelector.d.ts +2 -0
- package/hooks/features/rows/gridRowsSelector.js +2 -0
- package/hooks/features/rows/gridRowsState.d.ts +7 -7
- package/hooks/features/rows/gridRowsUtils.d.ts +2 -1
- package/hooks/features/rows/gridRowsUtils.js +25 -1
- package/hooks/features/rows/useGridRows.d.ts +2 -2
- package/hooks/features/rows/useGridRows.js +121 -61
- package/hooks/features/rows/useGridRowsMeta.js +6 -13
- package/hooks/features/rows/useGridRowsPreProcessors.js +2 -0
- package/hooks/features/scroll/useGridScroll.d.ts +2 -0
- package/hooks/features/scroll/useGridScroll.js +31 -4
- package/hooks/features/selection/useGridSelection.d.ts +1 -1
- package/hooks/features/selection/useGridSelection.js +15 -11
- package/hooks/features/sorting/useGridSorting.js +17 -18
- package/hooks/features/virtualization/useGridVirtualScroller.d.ts +9 -0
- package/hooks/features/virtualization/useGridVirtualScroller.js +68 -32
- package/hooks/utils/useGridApiEventHandler.d.ts +4 -1
- package/hooks/utils/useGridApiEventHandler.js +22 -9
- package/hooks/utils/useGridNativeEventListener.js +1 -2
- package/hooks/utils/useGridSelector.js +1 -1
- package/index.d.ts +2 -0
- package/index.js +1 -1
- package/internals/index.d.ts +5 -1
- package/internals/index.js +6 -2
- package/legacy/DataGrid/DataGrid.js +36 -2
- package/legacy/DataGrid/useDataGridComponent.js +3 -1
- package/legacy/DataGrid/useDataGridProps.js +2 -1
- package/legacy/colDef/gridActionsColDef.js +2 -1
- package/legacy/colDef/gridBooleanColDef.js +2 -1
- package/legacy/colDef/gridCheckboxSelectionColDef.js +1 -0
- package/legacy/colDef/gridDateColDef.js +4 -2
- package/legacy/colDef/gridNumericColDef.js +3 -2
- package/legacy/colDef/gridNumericOperators.js +28 -18
- package/legacy/colDef/gridSingleSelectColDef.js +3 -2
- package/legacy/colDef/gridSingleSelectOperators.js +55 -6
- package/legacy/colDef/gridStringColDef.js +3 -2
- package/legacy/colDef/gridStringOperators.js +25 -14
- package/legacy/components/GridFooter.js +11 -2
- package/legacy/components/GridRow.js +56 -28
- package/legacy/components/GridRowCount.js +1 -0
- package/legacy/components/GridScrollArea.js +3 -4
- package/legacy/components/GridSelectedRowCount.js +2 -1
- package/legacy/components/base/GridBody.js +1 -2
- package/legacy/components/base/GridOverlays.js +5 -5
- package/legacy/components/cell/GridActionsCell.js +197 -27
- package/legacy/components/cell/GridActionsCellItem.js +7 -5
- package/legacy/components/cell/GridCell.js +37 -15
- package/legacy/components/cell/GridEditBooleanCell.js +132 -11
- package/legacy/components/cell/GridEditDateCell.js +148 -42
- package/legacy/components/cell/GridEditInputCell.js +62 -13
- package/legacy/components/cell/GridEditSingleSelectCell.js +65 -28
- package/legacy/components/cell/index.js +2 -0
- package/legacy/components/columnHeaders/GridColumnHeaderItem.js +19 -23
- package/legacy/components/columnHeaders/GridColumnHeaders.js +2 -3
- package/legacy/components/columnSelection/GridCellCheckboxRenderer.js +23 -6
- package/legacy/components/columnSelection/GridHeaderCheckbox.js +4 -5
- package/legacy/components/containers/GridFooterContainer.js +11 -2
- package/legacy/components/containers/GridRootStyles.js +26 -5
- package/legacy/components/containers/GridToolbarContainer.js +12 -2
- package/legacy/components/menu/GridMenu.js +1 -0
- package/legacy/components/panel/GridPanel.js +1 -0
- package/legacy/components/panel/GridPanelContent.js +13 -2
- package/legacy/components/panel/GridPanelFooter.js +13 -2
- package/legacy/components/panel/GridPanelHeader.js +13 -2
- 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/GridToolbar.js +31 -6
- package/legacy/components/toolbar/GridToolbarDensitySelector.js +1 -1
- package/legacy/components/toolbar/GridToolbarExport.js +18 -19
- package/legacy/components/toolbar/GridToolbarQuickFilter.js +103 -0
- package/legacy/components/toolbar/index.js +3 -2
- package/legacy/components/virtualization/GridVirtualScroller.js +2 -0
- package/legacy/components/virtualization/GridVirtualScrollerContent.js +1 -3
- package/legacy/constants/defaultGridSlotsComponents.js +3 -2
- package/legacy/constants/gridClasses.js +1 -1
- package/legacy/constants/gridDetailPanelToggleField.js +2 -0
- package/legacy/constants/localeTextConstants.js +8 -1
- package/legacy/hooks/core/pipeProcessing/index.js +2 -1
- package/legacy/hooks/core/pipeProcessing/useGridPipeProcessing.js +60 -24
- package/legacy/hooks/core/pipeProcessing/useGridRegisterPipeApplier.js +27 -0
- package/legacy/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.js +0 -4
- package/legacy/hooks/core/strategyProcessing/useGridStrategyProcessing.js +6 -7
- package/legacy/hooks/core/useGridApiInitialization.js +3 -3
- package/legacy/hooks/core/useGridErrorHandler.js +1 -2
- package/legacy/hooks/core/useGridStateInitialization.js +1 -2
- package/legacy/hooks/features/columnHeaders/useGridColumnHeaders.js +94 -16
- package/legacy/hooks/features/columnMenu/useGridColumnMenu.js +3 -3
- package/legacy/hooks/features/columns/gridColumnsUtils.js +79 -22
- package/legacy/hooks/features/columns/useGridColumnSpanning.js +106 -0
- package/legacy/hooks/features/columns/useGridColumns.js +30 -25
- package/legacy/hooks/features/dimensions/useGridDimensions.js +10 -11
- package/legacy/hooks/features/editRows/useGridCellEditing.new.js +225 -89
- package/legacy/hooks/features/editRows/useGridCellEditing.old.js +20 -21
- package/legacy/hooks/features/editRows/useGridEditing.new.js +7 -3
- package/legacy/hooks/features/editRows/useGridEditing.old.js +4 -5
- package/legacy/hooks/features/editRows/useGridRowEditing.new.js +157 -65
- package/legacy/hooks/features/editRows/useGridRowEditing.old.js +20 -21
- package/legacy/hooks/features/events/useGridEvents.js +17 -18
- package/legacy/hooks/features/export/serializers/csvSerializer.js +5 -5
- package/legacy/hooks/features/export/useGridCsvExport.js +24 -17
- package/legacy/hooks/features/export/useGridPrintExport.js +22 -0
- package/legacy/hooks/features/export/utils.js +14 -0
- package/legacy/hooks/features/filter/gridFilterState.js +3 -1
- package/legacy/hooks/features/filter/gridFilterUtils.js +96 -2
- package/legacy/hooks/features/filter/useGridFilter.js +32 -15
- package/legacy/hooks/features/focus/useGridFocus.js +50 -44
- package/legacy/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +43 -11
- package/legacy/hooks/features/pagination/useGridPage.js +3 -4
- package/legacy/hooks/features/pagination/useGridPageSize.js +2 -3
- package/legacy/hooks/features/preferencesPanel/useGridPreferencesPanel.js +4 -6
- package/legacy/hooks/features/rows/gridRowsSelector.js +6 -0
- package/legacy/hooks/features/rows/gridRowsUtils.js +27 -1
- package/legacy/hooks/features/rows/useGridRows.js +131 -61
- package/legacy/hooks/features/rows/useGridRowsMeta.js +6 -13
- package/legacy/hooks/features/rows/useGridRowsPreProcessors.js +2 -0
- package/legacy/hooks/features/scroll/useGridScroll.js +31 -4
- package/legacy/hooks/features/selection/useGridSelection.js +15 -11
- package/legacy/hooks/features/sorting/useGridSorting.js +12 -15
- package/legacy/hooks/features/virtualization/useGridVirtualScroller.js +79 -42
- package/legacy/hooks/utils/useGridApiEventHandler.js +20 -9
- package/legacy/hooks/utils/useGridNativeEventListener.js +1 -2
- package/legacy/hooks/utils/useGridSelector.js +1 -1
- package/legacy/index.js +1 -1
- package/legacy/internals/index.js +6 -2
- package/legacy/locales/arSD.js +8 -1
- package/legacy/locales/bgBG.js +8 -1
- package/legacy/locales/csCZ.js +7 -0
- package/legacy/locales/daDK.js +8 -1
- package/legacy/locales/deDE.js +10 -3
- package/legacy/locales/elGR.js +7 -0
- package/legacy/locales/esES.js +7 -0
- package/legacy/locales/faIR.js +8 -1
- package/legacy/locales/fiFI.js +7 -0
- package/legacy/locales/frFR.js +7 -0
- package/legacy/locales/heIL.js +8 -1
- package/legacy/locales/huHU.js +127 -0
- package/legacy/locales/index.js +1 -0
- package/legacy/locales/itIT.js +7 -0
- package/legacy/locales/jaJP.js +7 -0
- package/legacy/locales/koKR.js +7 -0
- package/legacy/locales/nlNL.js +7 -0
- package/legacy/locales/plPL.js +8 -1
- package/legacy/locales/ptBR.js +8 -1
- package/legacy/locales/ruRU.js +7 -0
- package/legacy/locales/skSK.js +7 -0
- package/legacy/locales/trTR.js +8 -1
- package/legacy/locales/ukUA.js +7 -0
- package/legacy/locales/viVN.js +7 -0
- package/legacy/locales/zhCN.js +7 -0
- package/legacy/models/api/gridColumnSpanning.js +1 -0
- package/legacy/models/events/gridEvents.js +10 -3
- package/legacy/models/gridColumnSpanning.js +1 -0
- package/legacy/models/index.js +4 -3
- package/legacy/utils/createSelector.js +18 -2
- package/legacy/utils/exportAs.js +1 -1
- package/locales/arSD.js +8 -1
- package/locales/bgBG.js +8 -1
- package/locales/csCZ.js +7 -0
- package/locales/daDK.js +8 -1
- package/locales/deDE.js +10 -3
- package/locales/elGR.js +7 -0
- package/locales/esES.js +7 -0
- package/locales/faIR.js +8 -1
- package/locales/fiFI.js +7 -0
- package/locales/frFR.js +7 -0
- package/locales/heIL.js +8 -1
- package/locales/huHU.d.ts +2 -0
- package/locales/huHU.js +115 -0
- package/locales/index.d.ts +1 -0
- package/locales/index.js +1 -0
- package/locales/itIT.js +7 -0
- package/locales/jaJP.js +7 -0
- package/locales/koKR.js +7 -0
- package/locales/nlNL.js +7 -0
- package/locales/plPL.js +8 -1
- package/locales/ptBR.js +8 -1
- package/locales/ruRU.js +7 -0
- package/locales/skSK.js +7 -0
- package/locales/trTR.js +8 -1
- package/locales/ukUA.js +7 -0
- package/locales/viVN.js +7 -0
- package/locales/zhCN.js +7 -0
- package/models/api/gridApiCommon.d.ts +2 -1
- package/models/api/gridColumnSpanning.d.ts +28 -0
- package/models/api/gridColumnSpanning.js +1 -0
- package/models/api/gridCoreApi.d.ts +10 -0
- package/models/api/gridEditingApi.d.ts +72 -7
- package/models/api/gridFilterApi.d.ts +5 -0
- package/models/api/gridFocusApi.d.ts +1 -0
- package/models/api/gridLocaleTextApi.d.ts +5 -0
- package/models/api/gridRowApi.d.ts +34 -0
- package/models/api/index.d.ts +1 -1
- package/models/colDef/gridColDef.d.ts +18 -0
- package/models/events/gridEventLookup.d.ts +296 -11
- package/models/events/gridEvents.d.ts +10 -258
- package/models/events/gridEvents.js +10 -3
- package/models/gridColumnSpanning.d.ts +12 -0
- package/models/gridColumnSpanning.js +1 -0
- package/models/gridEditRowModel.d.ts +1 -1
- package/models/gridExport.d.ts +29 -2
- package/models/gridFilterModel.d.ts +11 -0
- package/models/gridFilterOperator.d.ts +1 -1
- package/models/gridIconSlotsComponent.d.ts +5 -0
- package/models/gridStateCommunity.d.ts +0 -2
- package/models/index.d.ts +1 -1
- package/models/index.js +4 -3
- package/models/params/gridCellParams.d.ts +12 -2
- package/models/params/gridRowParams.d.ts +5 -0
- package/models/props/DataGridProps.d.ts +57 -29
- package/modern/DataGrid/DataGrid.js +36 -2
- package/modern/DataGrid/useDataGridComponent.js +3 -1
- package/modern/DataGrid/useDataGridProps.js +2 -1
- package/modern/colDef/gridActionsColDef.js +2 -1
- package/modern/colDef/gridBooleanColDef.js +2 -1
- package/modern/colDef/gridCheckboxSelectionColDef.js +1 -0
- package/modern/colDef/gridDateColDef.js +4 -2
- package/modern/colDef/gridNumericColDef.js +3 -2
- package/modern/colDef/gridNumericOperators.js +11 -0
- package/modern/colDef/gridSingleSelectColDef.js +3 -2
- package/modern/colDef/gridSingleSelectOperators.js +52 -0
- package/modern/colDef/gridStringColDef.js +3 -2
- package/modern/colDef/gridStringOperators.js +12 -0
- package/modern/components/GridFooter.js +11 -2
- package/modern/components/GridRow.js +56 -26
- package/modern/components/GridRowCount.js +1 -0
- package/modern/components/GridScrollArea.js +3 -4
- package/modern/components/GridSelectedRowCount.js +2 -1
- package/modern/components/base/GridBody.js +1 -2
- package/modern/components/base/GridOverlays.js +5 -5
- package/modern/components/cell/GridActionsCell.js +179 -21
- package/modern/components/cell/GridActionsCellItem.js +7 -5
- package/modern/components/cell/GridCell.js +36 -15
- package/modern/components/cell/GridEditBooleanCell.js +101 -6
- package/modern/components/cell/GridEditDateCell.js +99 -5
- package/modern/components/cell/GridEditInputCell.js +30 -6
- package/modern/components/cell/GridEditSingleSelectCell.js +48 -16
- package/modern/components/cell/index.js +2 -0
- package/modern/components/columnHeaders/GridColumnHeaderItem.js +19 -23
- package/modern/components/columnHeaders/GridColumnHeaders.js +1 -1
- package/modern/components/columnSelection/GridCellCheckboxRenderer.js +22 -6
- package/modern/components/columnSelection/GridHeaderCheckbox.js +4 -5
- package/modern/components/containers/GridFooterContainer.js +11 -2
- package/modern/components/containers/GridRootStyles.js +36 -1
- package/modern/components/containers/GridToolbarContainer.js +12 -2
- package/modern/components/menu/GridMenu.js +1 -0
- package/modern/components/panel/GridPanel.js +1 -0
- package/modern/components/panel/GridPanelContent.js +13 -2
- package/modern/components/panel/GridPanelFooter.js +13 -2
- package/modern/components/panel/GridPanelHeader.js +13 -2
- 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/GridToolbar.js +30 -7
- package/modern/components/toolbar/GridToolbarDensitySelector.js +1 -1
- package/modern/components/toolbar/GridToolbarExport.js +15 -20
- package/modern/components/toolbar/GridToolbarQuickFilter.js +86 -0
- package/modern/components/toolbar/index.js +3 -2
- package/modern/components/virtualization/GridVirtualScroller.js +2 -0
- package/modern/components/virtualization/GridVirtualScrollerContent.js +1 -3
- package/modern/constants/defaultGridSlotsComponents.js +3 -2
- package/modern/constants/gridClasses.js +1 -1
- package/modern/constants/gridDetailPanelToggleField.js +2 -0
- package/modern/constants/localeTextConstants.js +8 -1
- package/modern/hooks/core/pipeProcessing/index.js +2 -1
- package/modern/hooks/core/pipeProcessing/useGridPipeProcessing.js +53 -19
- package/modern/hooks/core/pipeProcessing/useGridRegisterPipeApplier.js +27 -0
- package/modern/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.js +0 -4
- package/modern/hooks/core/strategyProcessing/useGridStrategyProcessing.js +6 -7
- package/modern/hooks/core/useGridApiInitialization.js +3 -3
- package/modern/hooks/core/useGridErrorHandler.js +1 -2
- package/modern/hooks/core/useGridStateInitialization.js +1 -2
- package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +81 -16
- package/modern/hooks/features/columnMenu/useGridColumnMenu.js +3 -3
- package/modern/hooks/features/columns/gridColumnsUtils.js +61 -8
- package/modern/hooks/features/columns/useGridColumnSpanning.js +106 -0
- package/modern/hooks/features/columns/useGridColumns.js +30 -25
- package/modern/hooks/features/dimensions/useGridDimensions.js +10 -11
- package/modern/hooks/features/editRows/useGridCellEditing.new.js +149 -42
- package/modern/hooks/features/editRows/useGridCellEditing.old.js +20 -21
- package/modern/hooks/features/editRows/useGridEditing.new.js +7 -3
- package/modern/hooks/features/editRows/useGridEditing.old.js +4 -5
- package/modern/hooks/features/editRows/useGridRowEditing.new.js +143 -57
- package/modern/hooks/features/editRows/useGridRowEditing.old.js +21 -22
- package/modern/hooks/features/events/useGridEvents.js +17 -18
- package/modern/hooks/features/export/serializers/csvSerializer.js +5 -5
- package/modern/hooks/features/export/useGridCsvExport.js +21 -16
- package/modern/hooks/features/export/useGridPrintExport.js +20 -0
- package/modern/hooks/features/export/utils.js +13 -0
- package/modern/hooks/features/filter/gridFilterState.js +3 -1
- package/modern/hooks/features/filter/gridFilterUtils.js +80 -2
- package/modern/hooks/features/filter/useGridFilter.js +32 -15
- package/modern/hooks/features/focus/useGridFocus.js +48 -42
- package/modern/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +41 -12
- package/modern/hooks/features/pagination/useGridPage.js +3 -4
- package/modern/hooks/features/pagination/useGridPageSize.js +2 -3
- package/modern/hooks/features/preferencesPanel/useGridPreferencesPanel.js +4 -6
- package/modern/hooks/features/rows/gridRowsSelector.js +2 -0
- package/modern/hooks/features/rows/gridRowsUtils.js +23 -1
- package/modern/hooks/features/rows/useGridRows.js +121 -61
- package/modern/hooks/features/rows/useGridRowsMeta.js +6 -13
- package/modern/hooks/features/rows/useGridRowsPreProcessors.js +2 -0
- package/modern/hooks/features/scroll/useGridScroll.js +29 -4
- package/modern/hooks/features/selection/useGridSelection.js +15 -11
- package/modern/hooks/features/sorting/useGridSorting.js +17 -18
- package/modern/hooks/features/virtualization/useGridVirtualScroller.js +68 -28
- package/modern/hooks/utils/useGridApiEventHandler.js +20 -9
- package/modern/hooks/utils/useGridNativeEventListener.js +1 -2
- package/modern/hooks/utils/useGridSelector.js +1 -1
- package/modern/index.js +1 -1
- package/modern/internals/index.js +6 -2
- package/modern/locales/arSD.js +8 -1
- package/modern/locales/bgBG.js +8 -1
- package/modern/locales/csCZ.js +7 -0
- package/modern/locales/daDK.js +8 -1
- package/modern/locales/deDE.js +10 -3
- package/modern/locales/elGR.js +7 -0
- package/modern/locales/esES.js +7 -0
- package/modern/locales/faIR.js +8 -1
- package/modern/locales/fiFI.js +7 -0
- package/modern/locales/frFR.js +7 -0
- package/modern/locales/heIL.js +8 -1
- package/modern/locales/huHU.js +115 -0
- package/modern/locales/index.js +1 -0
- package/modern/locales/itIT.js +7 -0
- package/modern/locales/jaJP.js +7 -0
- package/modern/locales/koKR.js +7 -0
- package/modern/locales/nlNL.js +7 -0
- package/modern/locales/plPL.js +8 -1
- package/modern/locales/ptBR.js +8 -1
- package/modern/locales/ruRU.js +7 -0
- package/modern/locales/skSK.js +7 -0
- package/modern/locales/trTR.js +8 -1
- package/modern/locales/ukUA.js +7 -0
- package/modern/locales/viVN.js +7 -0
- package/modern/locales/zhCN.js +7 -0
- package/modern/models/api/gridColumnSpanning.js +1 -0
- package/modern/models/events/gridEvents.js +10 -3
- package/modern/models/gridColumnSpanning.js +1 -0
- package/modern/models/index.js +4 -3
- package/modern/utils/createSelector.js +20 -2
- package/modern/utils/exportAs.js +1 -1
- package/node/DataGrid/DataGrid.js +36 -2
- package/node/DataGrid/useDataGridComponent.js +4 -1
- package/node/DataGrid/useDataGridProps.js +2 -1
- package/node/colDef/gridActionsColDef.js +2 -1
- package/node/colDef/gridBooleanColDef.js +2 -1
- package/node/colDef/gridCheckboxSelectionColDef.js +1 -0
- package/node/colDef/gridDateColDef.js +4 -2
- package/node/colDef/gridNumericColDef.js +2 -1
- package/node/colDef/gridNumericOperators.js +15 -1
- package/node/colDef/gridSingleSelectColDef.js +2 -1
- package/node/colDef/gridSingleSelectOperators.js +56 -1
- package/node/colDef/gridStringColDef.js +2 -1
- package/node/colDef/gridStringOperators.js +16 -1
- package/node/components/GridFooter.js +10 -1
- package/node/components/GridRow.js +59 -29
- package/node/components/GridRowCount.js +1 -0
- package/node/components/GridScrollArea.js +3 -5
- package/node/components/GridSelectedRowCount.js +2 -1
- package/node/components/base/GridBody.js +1 -3
- package/node/components/base/GridOverlays.js +4 -5
- package/node/components/cell/GridActionsCell.js +181 -21
- package/node/components/cell/GridActionsCellItem.js +7 -4
- package/node/components/cell/GridCell.js +35 -14
- package/node/components/cell/GridEditBooleanCell.js +100 -5
- package/node/components/cell/GridEditDateCell.js +98 -4
- package/node/components/cell/GridEditInputCell.js +30 -6
- package/node/components/cell/GridEditSingleSelectCell.js +50 -18
- package/node/components/cell/index.js +26 -0
- package/node/components/columnHeaders/GridColumnHeaderItem.js +19 -24
- package/node/components/columnHeaders/GridColumnHeaders.js +1 -1
- package/node/components/columnSelection/GridCellCheckboxRenderer.js +22 -7
- package/node/components/columnSelection/GridHeaderCheckbox.js +4 -6
- package/node/components/containers/GridFooterContainer.js +10 -1
- package/node/components/containers/GridRootStyles.js +36 -1
- package/node/components/containers/GridToolbarContainer.js +11 -1
- package/node/components/menu/GridMenu.js +1 -0
- package/node/components/panel/GridPanel.js +1 -0
- package/node/components/panel/GridPanelContent.js +11 -1
- package/node/components/panel/GridPanelFooter.js +11 -1
- package/node/components/panel/GridPanelHeader.js +11 -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/GridToolbar.js +32 -7
- package/node/components/toolbar/GridToolbarDensitySelector.js +1 -1
- package/node/components/toolbar/GridToolbarExport.js +14 -19
- package/node/components/toolbar/GridToolbarQuickFilter.js +111 -0
- package/node/components/toolbar/index.js +42 -11
- package/node/components/virtualization/GridVirtualScroller.js +2 -0
- package/node/components/virtualization/GridVirtualScrollerContent.js +1 -3
- package/node/constants/defaultGridSlotsComponents.js +2 -1
- package/node/constants/gridClasses.js +1 -1
- package/node/constants/gridDetailPanelToggleField.js +9 -0
- package/node/constants/localeTextConstants.js +8 -1
- package/node/hooks/core/pipeProcessing/index.js +13 -0
- package/node/hooks/core/pipeProcessing/useGridPipeProcessing.js +51 -20
- package/node/hooks/core/pipeProcessing/useGridRegisterPipeApplier.js +42 -0
- package/node/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.js +0 -3
- package/node/hooks/core/strategyProcessing/useGridStrategyProcessing.js +6 -8
- package/node/hooks/core/useGridApiInitialization.js +3 -4
- package/node/hooks/core/useGridErrorHandler.js +1 -3
- package/node/hooks/core/useGridStateInitialization.js +1 -3
- package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +85 -17
- package/node/hooks/features/columnMenu/useGridColumnMenu.js +3 -4
- package/node/hooks/features/columns/gridColumnsUtils.js +65 -9
- package/node/hooks/features/columns/useGridColumnSpanning.js +128 -0
- package/node/hooks/features/columns/useGridColumns.js +29 -25
- package/node/hooks/features/dimensions/useGridDimensions.js +10 -12
- package/node/hooks/features/editRows/useGridCellEditing.new.js +151 -42
- package/node/hooks/features/editRows/useGridCellEditing.old.js +20 -22
- package/node/hooks/features/editRows/useGridEditing.new.js +6 -2
- package/node/hooks/features/editRows/useGridEditing.old.js +4 -6
- package/node/hooks/features/editRows/useGridRowEditing.new.js +143 -57
- package/node/hooks/features/editRows/useGridRowEditing.old.js +21 -23
- package/node/hooks/features/events/useGridEvents.js +17 -19
- package/node/hooks/features/export/serializers/csvSerializer.js +5 -5
- package/node/hooks/features/export/useGridCsvExport.js +26 -17
- package/node/hooks/features/export/useGridPrintExport.js +25 -0
- package/node/hooks/features/export/utils.js +19 -2
- package/node/hooks/features/filter/gridFilterState.js +3 -1
- package/node/hooks/features/filter/gridFilterUtils.js +92 -3
- package/node/hooks/features/filter/useGridFilter.js +33 -16
- package/node/hooks/features/focus/useGridFocus.js +48 -43
- package/node/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +44 -13
- package/node/hooks/features/pagination/useGridPage.js +3 -5
- package/node/hooks/features/pagination/useGridPageSize.js +2 -4
- package/node/hooks/features/preferencesPanel/useGridPreferencesPanel.js +4 -8
- package/node/hooks/features/rows/gridRowsSelector.js +5 -1
- package/node/hooks/features/rows/gridRowsUtils.js +29 -1
- package/node/hooks/features/rows/useGridRows.js +122 -61
- package/node/hooks/features/rows/useGridRowsMeta.js +6 -14
- package/node/hooks/features/rows/useGridRowsPreProcessors.js +2 -0
- package/node/hooks/features/scroll/useGridScroll.js +32 -3
- package/node/hooks/features/selection/useGridSelection.js +16 -12
- package/node/hooks/features/sorting/useGridSorting.js +17 -19
- package/node/hooks/features/virtualization/useGridVirtualScroller.js +73 -33
- package/node/hooks/utils/useGridApiEventHandler.js +22 -10
- package/node/hooks/utils/useGridNativeEventListener.js +1 -3
- package/node/hooks/utils/useGridSelector.js +1 -1
- package/node/index.js +1 -1
- package/node/internals/index.js +47 -3
- package/node/locales/arSD.js +8 -1
- package/node/locales/bgBG.js +8 -1
- package/node/locales/csCZ.js +7 -0
- package/node/locales/daDK.js +8 -1
- package/node/locales/deDE.js +10 -3
- package/node/locales/elGR.js +7 -0
- package/node/locales/esES.js +7 -0
- package/node/locales/faIR.js +8 -1
- package/node/locales/fiFI.js +7 -0
- package/node/locales/frFR.js +7 -0
- package/node/locales/heIL.js +8 -1
- package/node/locales/huHU.js +125 -0
- package/node/locales/index.js +13 -0
- package/node/locales/itIT.js +7 -0
- package/node/locales/jaJP.js +7 -0
- package/node/locales/koKR.js +7 -0
- package/node/locales/nlNL.js +7 -0
- package/node/locales/plPL.js +8 -1
- package/node/locales/ptBR.js +8 -1
- package/node/locales/ruRU.js +7 -0
- package/node/locales/skSK.js +7 -0
- package/node/locales/trTR.js +8 -1
- package/node/locales/ukUA.js +7 -0
- package/node/locales/viVN.js +7 -0
- package/node/locales/zhCN.js +7 -0
- package/node/models/api/gridColumnSpanning.js +5 -0
- package/node/models/events/gridEvents.js +10 -3
- package/node/models/gridColumnSpanning.js +5 -0
- package/node/models/index.js +0 -13
- package/node/utils/createSelector.js +25 -4
- package/node/utils/exportAs.js +1 -1
- package/package.json +4 -4
- package/utils/createSelector.d.ts +2 -1
- package/utils/createSelector.js +20 -2
- package/utils/domUtils.d.ts +2 -2
- package/utils/exportAs.d.ts +2 -2
- package/utils/exportAs.js +1 -1
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { GridStateCommunity } from '../../../models/gridStateCommunity';
|
|
2
2
|
export declare const gridRowsStateSelector: (state: GridStateCommunity) => import("./gridRowsState").GridRowsState;
|
|
3
3
|
export declare const gridRowCountSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, number>;
|
|
4
|
+
export declare const gridRowsLoadingSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, boolean | undefined>;
|
|
4
5
|
export declare const gridTopLevelRowCountSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, number>;
|
|
5
6
|
export declare const gridRowsLookupSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, import("../../..").GridRowsLookup<any>>;
|
|
7
|
+
export declare const gridRowsIdToIdLookupSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, Record<string, import("../../..").GridRowId>>;
|
|
6
8
|
export declare const gridRowTreeSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, import("../../..").GridRowTreeConfig>;
|
|
7
9
|
export declare const gridRowGroupingNameSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, string>;
|
|
8
10
|
export declare const gridRowTreeDepthSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, number>;
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { createSelector } from '../../../utils/createSelector';
|
|
2
2
|
export const gridRowsStateSelector = state => state.rows;
|
|
3
3
|
export const gridRowCountSelector = createSelector(gridRowsStateSelector, rows => rows.totalRowCount);
|
|
4
|
+
export const gridRowsLoadingSelector = createSelector(gridRowsStateSelector, rows => rows.loading);
|
|
4
5
|
export const gridTopLevelRowCountSelector = createSelector(gridRowsStateSelector, rows => rows.totalTopLevelRowCount);
|
|
5
6
|
export const gridRowsLookupSelector = createSelector(gridRowsStateSelector, rows => rows.idRowsLookup);
|
|
7
|
+
export const gridRowsIdToIdLookupSelector = createSelector(gridRowsStateSelector, rows => rows.idToIdLookup);
|
|
6
8
|
export const gridRowTreeSelector = createSelector(gridRowsStateSelector, rows => rows.tree);
|
|
7
9
|
export const gridRowGroupingNameSelector = createSelector(gridRowsStateSelector, rows => rows.groupingName);
|
|
8
10
|
export const gridRowTreeDepthSelector = createSelector(gridRowsStateSelector, rows => rows.treeDepth);
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
1
|
import { GridRowId, GridRowsLookup, GridRowsProp, GridRowTreeConfig } from '../../../models/gridRows';
|
|
3
2
|
export interface GridRowTreeCreationParams {
|
|
4
3
|
ids: GridRowId[];
|
|
5
4
|
idRowsLookup: GridRowsLookup;
|
|
5
|
+
idToIdLookup: Record<string, GridRowId>;
|
|
6
6
|
previousTree: GridRowTreeConfig | null;
|
|
7
7
|
}
|
|
8
8
|
export interface GridRowTreeCreationValue {
|
|
@@ -15,9 +15,10 @@ export interface GridRowTreeCreationValue {
|
|
|
15
15
|
treeDepth: number;
|
|
16
16
|
ids: GridRowId[];
|
|
17
17
|
idRowsLookup: GridRowsLookup;
|
|
18
|
+
idToIdLookup: Record<string, GridRowId>;
|
|
18
19
|
}
|
|
19
20
|
export declare type GridRowInternalCacheValue = Omit<GridRowTreeCreationParams, 'previousTree'>;
|
|
20
|
-
export interface
|
|
21
|
+
export interface GridRowsInternalCache {
|
|
21
22
|
value: GridRowInternalCacheValue;
|
|
22
23
|
/**
|
|
23
24
|
* The rows as they were the last time all the rows have been updated at once
|
|
@@ -25,12 +26,11 @@ export interface GridRowsInternalCacheState {
|
|
|
25
26
|
*/
|
|
26
27
|
rowsBeforePartialUpdates: GridRowsProp;
|
|
27
28
|
}
|
|
28
|
-
export interface GridRowsInternalCache {
|
|
29
|
-
state: GridRowsInternalCacheState;
|
|
30
|
-
timeout: NodeJS.Timeout | null;
|
|
31
|
-
lastUpdateMs: number;
|
|
32
|
-
}
|
|
33
29
|
export interface GridRowsState extends GridRowTreeCreationValue {
|
|
30
|
+
/**
|
|
31
|
+
* Matches the value of the `loading` prop.
|
|
32
|
+
*/
|
|
33
|
+
loading?: boolean;
|
|
34
34
|
/**
|
|
35
35
|
* Amount of rows before applying the filtering.
|
|
36
36
|
* It also counts the expanded and collapsed children rows.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { GridRowId, GridRowModel } from '../../../models';
|
|
1
|
+
import { GridRowId, GridRowModel, GridRowTreeConfig } from '../../../models';
|
|
2
2
|
/**
|
|
3
3
|
* A helper function to check if the id provided is valid.
|
|
4
4
|
* @param {GridRowId} id Id as [[GridRowId]].
|
|
@@ -6,3 +6,4 @@ import { GridRowId, GridRowModel } from '../../../models';
|
|
|
6
6
|
* @param {string} detailErrorMessage A custom error message to display for invalid IDs
|
|
7
7
|
*/
|
|
8
8
|
export declare function checkGridRowIdIsValid(id: GridRowId, row: GridRowModel | Partial<GridRowModel>, detailErrorMessage?: string): void;
|
|
9
|
+
export declare const getTreeNodeDescendants: (tree: GridRowTreeConfig, parentId: GridRowId, skipAutoGeneratedRows: boolean) => GridRowId[];
|
|
@@ -8,4 +8,28 @@ export function checkGridRowIdIsValid(id, row, detailErrorMessage = 'A row was p
|
|
|
8
8
|
if (id == null) {
|
|
9
9
|
throw new Error(['MUI: The data grid component requires all rows to have a unique `id` property.', 'Alternatively, you can use the `getRowId` prop to specify a custom id for each row.', detailErrorMessage, JSON.stringify(row)].join('\n'));
|
|
10
10
|
}
|
|
11
|
-
}
|
|
11
|
+
}
|
|
12
|
+
export const getTreeNodeDescendants = (tree, parentId, skipAutoGeneratedRows) => {
|
|
13
|
+
var _tree$parentId;
|
|
14
|
+
|
|
15
|
+
const children = (_tree$parentId = tree[parentId]) == null ? void 0 : _tree$parentId.children;
|
|
16
|
+
|
|
17
|
+
if (children == null) {
|
|
18
|
+
return [];
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
const validDescendants = [];
|
|
22
|
+
|
|
23
|
+
for (let i = 0; i < children.length; i += 1) {
|
|
24
|
+
const child = children[i];
|
|
25
|
+
const childNode = tree[child];
|
|
26
|
+
|
|
27
|
+
if (!skipAutoGeneratedRows || !childNode.isAutoGenerated) {
|
|
28
|
+
validDescendants.push(child);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
validDescendants.push(...getTreeNodeDescendants(tree, childNode.id, skipAutoGeneratedRows));
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
return validDescendants;
|
|
35
|
+
};
|
|
@@ -2,5 +2,5 @@ import * as React from 'react';
|
|
|
2
2
|
import { DataGridProcessedProps } from '../../../models/props/DataGridProps';
|
|
3
3
|
import { GridApiCommunity } from '../../../models/api/gridApiCommunity';
|
|
4
4
|
import { GridStateInitializer } from '../../utils/useGridInitializeState';
|
|
5
|
-
export declare const rowsStateInitializer: GridStateInitializer<Pick<DataGridProcessedProps, 'rows' | 'rowCount' | 'getRowId'>>;
|
|
6
|
-
export declare const useGridRows: (apiRef: React.MutableRefObject<GridApiCommunity>, props: Pick<DataGridProcessedProps, 'rows' | 'getRowId' | 'rowCount' | 'throttleRowsMs' | 'signature' | 'pagination' | 'paginationMode'>) => void;
|
|
5
|
+
export declare const rowsStateInitializer: GridStateInitializer<Pick<DataGridProcessedProps, 'rows' | 'rowCount' | 'getRowId' | 'loading'>>;
|
|
6
|
+
export declare const useGridRows: (apiRef: React.MutableRefObject<GridApiCommunity>, props: Pick<DataGridProcessedProps, 'rows' | 'getRowId' | 'rowCount' | 'throttleRowsMs' | 'signature' | 'pagination' | 'paginationMode' | 'loading'>) => void;
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import { GridEvents } from '../../../models/events';
|
|
4
3
|
import { useGridApiMethod } from '../../utils/useGridApiMethod';
|
|
5
4
|
import { useGridLogger } from '../../utils/useGridLogger';
|
|
6
5
|
import { gridRowCountSelector, gridRowsLookupSelector, gridRowTreeSelector, gridRowIdsSelector, gridRowGroupingNameSelector } from './gridRowsSelector';
|
|
7
6
|
import { GridSignature, useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
|
|
8
7
|
import { useGridVisibleRows } from '../../utils/useGridVisibleRows';
|
|
9
|
-
import {
|
|
8
|
+
import { gridSortedRowIdsSelector } from '../sorting/gridSortingSelector';
|
|
9
|
+
import { gridFilteredRowsLookupSelector } from '../filter/gridFilterSelector';
|
|
10
|
+
import { checkGridRowIdIsValid, getTreeNodeDescendants } from './gridRowsUtils';
|
|
10
11
|
|
|
11
12
|
function getGridRowId(rowModel, getRowId, detailErrorMessage) {
|
|
12
13
|
const id = getRowId ? getRowId(rowModel) : rowModel.id;
|
|
@@ -14,8 +15,8 @@ function getGridRowId(rowModel, getRowId, detailErrorMessage) {
|
|
|
14
15
|
return id;
|
|
15
16
|
}
|
|
16
17
|
|
|
17
|
-
const
|
|
18
|
-
prevState,
|
|
18
|
+
const convertRowsPropToState = ({
|
|
19
|
+
prevCache: prevState,
|
|
19
20
|
rows,
|
|
20
21
|
getRowId
|
|
21
22
|
}) => {
|
|
@@ -24,6 +25,7 @@ const convertGridRowsPropToState = ({
|
|
|
24
25
|
if (rows) {
|
|
25
26
|
value = {
|
|
26
27
|
idRowsLookup: {},
|
|
28
|
+
idToIdLookup: {},
|
|
27
29
|
ids: []
|
|
28
30
|
};
|
|
29
31
|
|
|
@@ -31,6 +33,7 @@ const convertGridRowsPropToState = ({
|
|
|
31
33
|
const row = rows[i];
|
|
32
34
|
const id = getGridRowId(row, getRowId);
|
|
33
35
|
value.idRowsLookup[id] = row;
|
|
36
|
+
value.idToIdLookup[id] = id;
|
|
34
37
|
value.ids.push(id);
|
|
35
38
|
}
|
|
36
39
|
} else {
|
|
@@ -43,41 +46,37 @@ const convertGridRowsPropToState = ({
|
|
|
43
46
|
};
|
|
44
47
|
};
|
|
45
48
|
|
|
46
|
-
const getRowsStateFromCache = (rowsCache, previousTree, apiRef, rowCountProp) => {
|
|
49
|
+
const getRowsStateFromCache = (rowsCache, previousTree, apiRef, rowCountProp, loadingProp) => {
|
|
47
50
|
const {
|
|
48
51
|
value
|
|
49
|
-
} = rowsCache
|
|
52
|
+
} = rowsCache;
|
|
50
53
|
const rowCount = rowCountProp != null ? rowCountProp : 0;
|
|
51
54
|
const groupingResponse = apiRef.current.unstable_applyStrategyProcessor('rowTreeCreation', _extends({}, value, {
|
|
52
55
|
previousTree
|
|
53
56
|
}));
|
|
54
57
|
const dataTopLevelRowCount = groupingResponse.treeDepth === 1 ? groupingResponse.ids.length : Object.values(groupingResponse.tree).filter(node => node.parent == null).length;
|
|
55
58
|
return _extends({}, groupingResponse, {
|
|
59
|
+
loading: loadingProp,
|
|
56
60
|
totalRowCount: Math.max(rowCount, groupingResponse.ids.length),
|
|
57
61
|
totalTopLevelRowCount: Math.max(rowCount, dataTopLevelRowCount)
|
|
58
62
|
});
|
|
59
63
|
};
|
|
60
64
|
|
|
61
65
|
export const rowsStateInitializer = (state, props, apiRef) => {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
timeout: null,
|
|
75
|
-
lastUpdateMs: Date.now()
|
|
76
|
-
};
|
|
66
|
+
apiRef.current.unstable_caches.rows = convertRowsPropToState({
|
|
67
|
+
rows: props.rows,
|
|
68
|
+
getRowId: props.getRowId,
|
|
69
|
+
prevCache: {
|
|
70
|
+
value: {
|
|
71
|
+
idRowsLookup: {},
|
|
72
|
+
idToIdLookup: {},
|
|
73
|
+
ids: []
|
|
74
|
+
},
|
|
75
|
+
rowsBeforePartialUpdates: []
|
|
76
|
+
}
|
|
77
|
+
});
|
|
77
78
|
return _extends({}, state, {
|
|
78
|
-
rows: getRowsStateFromCache(
|
|
79
|
-
rowsCache // TODO remove from state
|
|
80
|
-
|
|
79
|
+
rows: getRowsStateFromCache(apiRef.current.unstable_caches.rows, null, apiRef, props.rowCount, props.loading)
|
|
81
80
|
});
|
|
82
81
|
};
|
|
83
82
|
export const useGridRows = (apiRef, props) => {
|
|
@@ -87,9 +86,9 @@ export const useGridRows = (apiRef, props) => {
|
|
|
87
86
|
}
|
|
88
87
|
|
|
89
88
|
const logger = useGridLogger(apiRef, 'useGridRows');
|
|
90
|
-
const rowsCache = React.useRef(apiRef.current.state.rowsCache); // To avoid listing rowsCache as useEffect dep
|
|
91
|
-
|
|
92
89
|
const currentPage = useGridVisibleRows(apiRef, props);
|
|
90
|
+
const lastUpdateMs = React.useRef(Date.now());
|
|
91
|
+
const timeout = React.useRef(null);
|
|
93
92
|
const getRow = React.useCallback(id => {
|
|
94
93
|
var _ref;
|
|
95
94
|
|
|
@@ -101,50 +100,50 @@ export const useGridRows = (apiRef, props) => {
|
|
|
101
100
|
acc[id] = index;
|
|
102
101
|
return acc;
|
|
103
102
|
}, {}), [currentPage.rows]);
|
|
104
|
-
const throttledRowsChange = React.useCallback((
|
|
103
|
+
const throttledRowsChange = React.useCallback((newCache, throttle) => {
|
|
105
104
|
const run = () => {
|
|
106
|
-
|
|
107
|
-
|
|
105
|
+
timeout.current = null;
|
|
106
|
+
lastUpdateMs.current = Date.now();
|
|
108
107
|
apiRef.current.setState(state => _extends({}, state, {
|
|
109
|
-
rows: getRowsStateFromCache(
|
|
108
|
+
rows: getRowsStateFromCache(apiRef.current.unstable_caches.rows, gridRowTreeSelector(apiRef), apiRef, props.rowCount, props.loading)
|
|
110
109
|
}));
|
|
111
|
-
apiRef.current.publishEvent(
|
|
110
|
+
apiRef.current.publishEvent('rowsSet');
|
|
112
111
|
apiRef.current.forceUpdate();
|
|
113
112
|
};
|
|
114
113
|
|
|
115
|
-
if (
|
|
116
|
-
clearTimeout(
|
|
114
|
+
if (timeout.current) {
|
|
115
|
+
clearTimeout(timeout.current);
|
|
116
|
+
timeout.current = null;
|
|
117
117
|
}
|
|
118
118
|
|
|
119
|
-
|
|
120
|
-
rowsCache.current.timeout = null;
|
|
119
|
+
apiRef.current.unstable_caches.rows = newCache;
|
|
121
120
|
|
|
122
121
|
if (!throttle) {
|
|
123
122
|
run();
|
|
124
123
|
return;
|
|
125
124
|
}
|
|
126
125
|
|
|
127
|
-
const throttleRemainingTimeMs = props.throttleRowsMs - (Date.now() -
|
|
126
|
+
const throttleRemainingTimeMs = props.throttleRowsMs - (Date.now() - lastUpdateMs.current);
|
|
128
127
|
|
|
129
128
|
if (throttleRemainingTimeMs > 0) {
|
|
130
|
-
|
|
129
|
+
timeout.current = setTimeout(run, throttleRemainingTimeMs);
|
|
131
130
|
return;
|
|
132
131
|
}
|
|
133
132
|
|
|
134
133
|
run();
|
|
135
|
-
}, [props.throttleRowsMs, props.rowCount, apiRef]);
|
|
134
|
+
}, [props.throttleRowsMs, props.rowCount, props.loading, apiRef]);
|
|
136
135
|
/**
|
|
137
136
|
* API METHODS
|
|
138
137
|
*/
|
|
139
138
|
|
|
140
139
|
const setRows = React.useCallback(rows => {
|
|
141
140
|
logger.debug(`Updating all rows, new length ${rows.length}`);
|
|
142
|
-
throttledRowsChange(
|
|
141
|
+
throttledRowsChange(convertRowsPropToState({
|
|
143
142
|
rows,
|
|
144
|
-
|
|
143
|
+
prevCache: apiRef.current.unstable_caches.rows,
|
|
145
144
|
getRowId: props.getRowId
|
|
146
145
|
}), true);
|
|
147
|
-
}, [logger, props.getRowId, throttledRowsChange]);
|
|
146
|
+
}, [apiRef, logger, props.getRowId, throttledRowsChange]);
|
|
148
147
|
const updateRows = React.useCallback(updates => {
|
|
149
148
|
if (props.signature === GridSignature.DataGrid && updates.length > 1) {
|
|
150
149
|
// TODO: Add test with direct call to `apiRef.current.updateRows` in DataGrid after enabling the `apiRef` on the free plan.
|
|
@@ -164,13 +163,15 @@ export const useGridRows = (apiRef, props) => {
|
|
|
164
163
|
});
|
|
165
164
|
const deletedRowIds = [];
|
|
166
165
|
const newStateValue = {
|
|
167
|
-
idRowsLookup: _extends({},
|
|
168
|
-
|
|
166
|
+
idRowsLookup: _extends({}, apiRef.current.unstable_caches.rows.value.idRowsLookup),
|
|
167
|
+
idToIdLookup: _extends({}, apiRef.current.unstable_caches.rows.value.idToIdLookup),
|
|
168
|
+
ids: [...apiRef.current.unstable_caches.rows.value.ids]
|
|
169
169
|
};
|
|
170
170
|
uniqUpdates.forEach((partialRow, id) => {
|
|
171
171
|
// eslint-disable-next-line no-underscore-dangle
|
|
172
172
|
if (partialRow._action === 'delete') {
|
|
173
173
|
delete newStateValue.idRowsLookup[id];
|
|
174
|
+
delete newStateValue.idToIdLookup[id];
|
|
174
175
|
deletedRowIds.push(id);
|
|
175
176
|
return;
|
|
176
177
|
}
|
|
@@ -179,6 +180,7 @@ export const useGridRows = (apiRef, props) => {
|
|
|
179
180
|
|
|
180
181
|
if (!oldRow) {
|
|
181
182
|
newStateValue.idRowsLookup[id] = partialRow;
|
|
183
|
+
newStateValue.idToIdLookup[id] = id;
|
|
182
184
|
newStateValue.ids.push(id);
|
|
183
185
|
return;
|
|
184
186
|
}
|
|
@@ -190,12 +192,12 @@ export const useGridRows = (apiRef, props) => {
|
|
|
190
192
|
newStateValue.ids = newStateValue.ids.filter(id => !deletedRowIds.includes(id));
|
|
191
193
|
}
|
|
192
194
|
|
|
193
|
-
const state = _extends({},
|
|
195
|
+
const state = _extends({}, apiRef.current.unstable_caches.rows, {
|
|
194
196
|
value: newStateValue
|
|
195
197
|
});
|
|
196
198
|
|
|
197
199
|
throttledRowsChange(state, true);
|
|
198
|
-
}, [
|
|
200
|
+
}, [props.signature, props.getRowId, throttledRowsChange, apiRef]);
|
|
199
201
|
const getRowModels = React.useCallback(() => {
|
|
200
202
|
const allRows = gridRowIdsSelector(apiRef);
|
|
201
203
|
const idRowsLookup = gridRowsLookupSelector(apiRef);
|
|
@@ -225,23 +227,82 @@ export const useGridRows = (apiRef, props) => {
|
|
|
225
227
|
});
|
|
226
228
|
});
|
|
227
229
|
apiRef.current.forceUpdate();
|
|
228
|
-
apiRef.current.publishEvent(
|
|
230
|
+
apiRef.current.publishEvent('rowExpansionChange', newNode);
|
|
229
231
|
}, [apiRef]);
|
|
230
232
|
const getRowNode = React.useCallback(id => {
|
|
231
233
|
var _gridRowTreeSelector$;
|
|
232
234
|
|
|
233
235
|
return (_gridRowTreeSelector$ = gridRowTreeSelector(apiRef)[id]) != null ? _gridRowTreeSelector$ : null;
|
|
234
236
|
}, [apiRef]);
|
|
237
|
+
const getRowGroupChildren = React.useCallback(({
|
|
238
|
+
skipAutoGeneratedRows = true,
|
|
239
|
+
groupId,
|
|
240
|
+
applySorting,
|
|
241
|
+
applyFiltering
|
|
242
|
+
}) => {
|
|
243
|
+
const tree = gridRowTreeSelector(apiRef);
|
|
244
|
+
let children;
|
|
245
|
+
|
|
246
|
+
if (applySorting) {
|
|
247
|
+
const groupNode = tree[groupId];
|
|
248
|
+
|
|
249
|
+
if (!groupNode) {
|
|
250
|
+
return [];
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
const sortedRowIds = gridSortedRowIdsSelector(apiRef);
|
|
254
|
+
children = [];
|
|
255
|
+
const startIndex = sortedRowIds.findIndex(id => id === groupId) + 1;
|
|
256
|
+
|
|
257
|
+
for (let index = startIndex; index < sortedRowIds.length && tree[sortedRowIds[index]].depth > groupNode.depth; index += 1) {
|
|
258
|
+
const id = sortedRowIds[index];
|
|
259
|
+
const node = tree[id];
|
|
260
|
+
|
|
261
|
+
if (!skipAutoGeneratedRows || !node.isAutoGenerated) {
|
|
262
|
+
children.push(id);
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
} else {
|
|
266
|
+
children = getTreeNodeDescendants(tree, groupId, skipAutoGeneratedRows);
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
if (applyFiltering) {
|
|
270
|
+
const filteredRowsLookup = gridFilteredRowsLookupSelector(apiRef);
|
|
271
|
+
children = children.filter(childId => filteredRowsLookup[childId] !== false);
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
return children;
|
|
275
|
+
}, [apiRef]);
|
|
276
|
+
const setRowIndex = React.useCallback((rowId, targetIndex) => {
|
|
277
|
+
const allRows = gridRowIdsSelector(apiRef);
|
|
278
|
+
const oldIndex = allRows.findIndex(row => row === rowId);
|
|
279
|
+
|
|
280
|
+
if (oldIndex === -1 || oldIndex === targetIndex) {
|
|
281
|
+
return;
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
logger.debug(`Moving row ${rowId} to index ${targetIndex}`);
|
|
285
|
+
const updatedRows = [...allRows];
|
|
286
|
+
updatedRows.splice(targetIndex, 0, updatedRows.splice(oldIndex, 1)[0]);
|
|
287
|
+
apiRef.current.setState(state => _extends({}, state, {
|
|
288
|
+
rows: _extends({}, state.rows, {
|
|
289
|
+
ids: updatedRows
|
|
290
|
+
})
|
|
291
|
+
}));
|
|
292
|
+
apiRef.current.applySorting();
|
|
293
|
+
}, [apiRef, logger]);
|
|
235
294
|
const rowApi = {
|
|
236
295
|
getRow,
|
|
237
296
|
getRowModels,
|
|
238
297
|
getRowsCount,
|
|
239
298
|
getAllRowIds,
|
|
240
299
|
setRows,
|
|
300
|
+
setRowIndex,
|
|
241
301
|
updateRows,
|
|
242
302
|
setRowChildrenExpansion,
|
|
243
303
|
getRowNode,
|
|
244
|
-
getRowIndexRelativeToVisibleRows
|
|
304
|
+
getRowIndexRelativeToVisibleRows,
|
|
305
|
+
getRowGroupChildren
|
|
245
306
|
};
|
|
246
307
|
/**
|
|
247
308
|
* EVENTS
|
|
@@ -251,7 +312,7 @@ export const useGridRows = (apiRef, props) => {
|
|
|
251
312
|
logger.info(`Row grouping pre-processing have changed, regenerating the row tree`);
|
|
252
313
|
let rows;
|
|
253
314
|
|
|
254
|
-
if (
|
|
315
|
+
if (apiRef.current.unstable_caches.rows.rowsBeforePartialUpdates === props.rows) {
|
|
255
316
|
// The `props.rows` has not changed since the last row grouping
|
|
256
317
|
// We can keep the potential updates stored in `inputRowsAfterUpdates` on the new grouping
|
|
257
318
|
rows = undefined;
|
|
@@ -262,12 +323,12 @@ export const useGridRows = (apiRef, props) => {
|
|
|
262
323
|
rows = props.rows;
|
|
263
324
|
}
|
|
264
325
|
|
|
265
|
-
throttledRowsChange(
|
|
326
|
+
throttledRowsChange(convertRowsPropToState({
|
|
266
327
|
rows,
|
|
267
328
|
getRowId: props.getRowId,
|
|
268
|
-
|
|
329
|
+
prevCache: apiRef.current.unstable_caches.rows
|
|
269
330
|
}), false);
|
|
270
|
-
}, [logger,
|
|
331
|
+
}, [logger, apiRef, props.rows, props.getRowId, throttledRowsChange]);
|
|
271
332
|
const handleStrategyProcessorChange = React.useCallback(methodName => {
|
|
272
333
|
if (methodName === 'rowTreeCreation') {
|
|
273
334
|
groupRows();
|
|
@@ -280,8 +341,8 @@ export const useGridRows = (apiRef, props) => {
|
|
|
280
341
|
groupRows();
|
|
281
342
|
}
|
|
282
343
|
}, [apiRef, groupRows]);
|
|
283
|
-
useGridApiEventHandler(apiRef,
|
|
284
|
-
useGridApiEventHandler(apiRef,
|
|
344
|
+
useGridApiEventHandler(apiRef, 'activeStrategyProcessorChange', handleStrategyProcessorChange);
|
|
345
|
+
useGridApiEventHandler(apiRef, 'strategyAvailabilityChange', handleStrategyActivityChange);
|
|
285
346
|
useGridApiMethod(apiRef, rowApi, 'GridRowApi');
|
|
286
347
|
/**
|
|
287
348
|
* EFFECTS
|
|
@@ -289,9 +350,8 @@ export const useGridRows = (apiRef, props) => {
|
|
|
289
350
|
|
|
290
351
|
React.useEffect(() => {
|
|
291
352
|
return () => {
|
|
292
|
-
if (
|
|
293
|
-
|
|
294
|
-
clearTimeout(rowsCache.current.timeout);
|
|
353
|
+
if (timeout.current !== null) {
|
|
354
|
+
clearTimeout(timeout.current);
|
|
295
355
|
}
|
|
296
356
|
};
|
|
297
357
|
}, []); // The effect do not track any value defined synchronously during the 1st render by hooks called after `useGridRows`
|
|
@@ -302,18 +362,18 @@ export const useGridRows = (apiRef, props) => {
|
|
|
302
362
|
if (isFirstRender.current) {
|
|
303
363
|
isFirstRender.current = false;
|
|
304
364
|
return;
|
|
305
|
-
} // The new rows have already been applied (most likely in the `
|
|
365
|
+
} // The new rows have already been applied (most likely in the `'rowGroupsPreProcessingChange'` listener)
|
|
306
366
|
|
|
307
367
|
|
|
308
|
-
if (
|
|
368
|
+
if (apiRef.current.unstable_caches.rows.rowsBeforePartialUpdates === props.rows) {
|
|
309
369
|
return;
|
|
310
370
|
}
|
|
311
371
|
|
|
312
372
|
logger.debug(`Updating all rows, new length ${props.rows.length}`);
|
|
313
|
-
throttledRowsChange(
|
|
373
|
+
throttledRowsChange(convertRowsPropToState({
|
|
314
374
|
rows: props.rows,
|
|
315
375
|
getRowId: props.getRowId,
|
|
316
|
-
|
|
376
|
+
prevCache: apiRef.current.unstable_caches.rows
|
|
317
377
|
}), false);
|
|
318
|
-
}, [props.rows, props.rowCount, props.getRowId, logger, throttledRowsChange]);
|
|
378
|
+
}, [props.rows, props.rowCount, props.getRowId, logger, throttledRowsChange, apiRef]);
|
|
319
379
|
};
|
|
@@ -7,8 +7,7 @@ import { gridDensityRowHeightSelector, gridDensityFactorSelector } from '../dens
|
|
|
7
7
|
import { gridFilterStateSelector } from '../filter/gridFilterSelector';
|
|
8
8
|
import { gridPaginationSelector } from '../pagination/gridPaginationSelector';
|
|
9
9
|
import { gridSortingStateSelector } from '../sorting/gridSortingSelector';
|
|
10
|
-
import {
|
|
11
|
-
import { useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
|
|
10
|
+
import { useGridRegisterPipeApplier } from '../../core/pipeProcessing';
|
|
12
11
|
export const rowsMetaStateInitializer = state => _extends({}, state, {
|
|
13
12
|
rowsMeta: {
|
|
14
13
|
currentPageTotalHeight: 0,
|
|
@@ -65,10 +64,11 @@ export const useGridRowsMeta = (apiRef, props) => {
|
|
|
65
64
|
if (getRowSpacing) {
|
|
66
65
|
var _spacing$top, _spacing$bottom;
|
|
67
66
|
|
|
68
|
-
const
|
|
67
|
+
const indexRelativeToCurrentPage = apiRef.current.getRowIndexRelativeToVisibleRows(row.id);
|
|
69
68
|
const spacing = getRowSpacing(_extends({}, row, {
|
|
70
|
-
isFirstVisible:
|
|
71
|
-
isLastVisible:
|
|
69
|
+
isFirstVisible: indexRelativeToCurrentPage === 0,
|
|
70
|
+
isLastVisible: indexRelativeToCurrentPage === currentPage.rows.length - 1,
|
|
71
|
+
indexRelativeToCurrentPage
|
|
72
72
|
}));
|
|
73
73
|
initialHeights.spacingTop = (_spacing$top = spacing.top) != null ? _spacing$top : 0;
|
|
74
74
|
initialHeights.spacingBottom = (_spacing$bottom = spacing.bottom) != null ? _spacing$bottom : 0;
|
|
@@ -120,14 +120,7 @@ export const useGridRowsMeta = (apiRef, props) => {
|
|
|
120
120
|
React.useEffect(() => {
|
|
121
121
|
hydrateRowsMeta();
|
|
122
122
|
}, [rowHeight, filterState, paginationState, sortingState, hydrateRowsMeta]);
|
|
123
|
-
|
|
124
|
-
if (name !== 'rowHeight') {
|
|
125
|
-
return;
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
hydrateRowsMeta();
|
|
129
|
-
}, [hydrateRowsMeta]);
|
|
130
|
-
useGridApiEventHandler(apiRef, GridEvents.pipeProcessorRegister, handlepipeProcessorRegister);
|
|
123
|
+
useGridRegisterPipeApplier(apiRef, 'rowHeight', hydrateRowsMeta);
|
|
131
124
|
const rowsMetaApi = {
|
|
132
125
|
unstable_getRowHeight: getTargetRowHeight,
|
|
133
126
|
unstable_getRowInternalSizes: getRowInternalSizes,
|
|
@@ -3,6 +3,7 @@ import { GRID_DEFAULT_STRATEGY, useGridRegisterStrategyProcessor } from '../../c
|
|
|
3
3
|
const flatRowTreeCreationMethod = ({
|
|
4
4
|
ids,
|
|
5
5
|
idRowsLookup,
|
|
6
|
+
idToIdLookup,
|
|
6
7
|
previousTree
|
|
7
8
|
}) => {
|
|
8
9
|
const tree = {};
|
|
@@ -28,6 +29,7 @@ const flatRowTreeCreationMethod = ({
|
|
|
28
29
|
tree,
|
|
29
30
|
treeDepth: 1,
|
|
30
31
|
idRowsLookup,
|
|
32
|
+
idToIdLookup,
|
|
31
33
|
ids
|
|
32
34
|
};
|
|
33
35
|
};
|
|
@@ -6,5 +6,7 @@ import { DataGridProcessedProps } from '../../../models/props/DataGridProps';
|
|
|
6
6
|
* @requires useGridColumns (state) - can be after, async only
|
|
7
7
|
* @requires useGridRows (state) - can be after, async only
|
|
8
8
|
* @requires useGridRowsMeta (state) - can be after, async only
|
|
9
|
+
* @requires useGridFilter (state)
|
|
10
|
+
* @requires useGridColumnSpanning (method)
|
|
9
11
|
*/
|
|
10
12
|
export declare const useGridScroll: (apiRef: React.MutableRefObject<GridApiCommunity>, props: Pick<DataGridProcessedProps, 'pagination'>) => void;
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { useGridLogger } from '../../utils/useGridLogger';
|
|
3
3
|
import { gridColumnPositionsSelector, gridVisibleColumnDefinitionsSelector } from '../columns/gridColumnsSelector';
|
|
4
|
+
import { useGridSelector } from '../../utils/useGridSelector';
|
|
4
5
|
import { gridPageSelector, gridPageSizeSelector } from '../pagination/gridPaginationSelector';
|
|
5
6
|
import { gridRowCountSelector } from '../rows/gridRowsSelector';
|
|
6
7
|
import { gridRowsMetaSelector } from '../rows/gridRowsMetaSelector';
|
|
7
|
-
import { useGridApiMethod } from '../../utils/useGridApiMethod';
|
|
8
|
+
import { useGridApiMethod } from '../../utils/useGridApiMethod';
|
|
9
|
+
import { gridVisibleSortedRowEntriesSelector } from '../filter/gridFilterSelector'; // Logic copied from https://www.w3.org/TR/wai-aria-practices/examples/listbox/js/listbox.js
|
|
8
10
|
// Similar to https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollIntoView
|
|
9
11
|
|
|
10
12
|
function scrollIntoView(dimensions) {
|
|
@@ -14,7 +16,12 @@ function scrollIntoView(dimensions) {
|
|
|
14
16
|
offsetHeight,
|
|
15
17
|
offsetTop
|
|
16
18
|
} = dimensions;
|
|
17
|
-
const elementBottom = offsetTop + offsetHeight;
|
|
19
|
+
const elementBottom = offsetTop + offsetHeight; // Always scroll to top when cell is higher than viewport to avoid scroll jump
|
|
20
|
+
// See https://github.com/mui/mui-x/issues/4513 and https://github.com/mui/mui-x/issues/4514
|
|
21
|
+
|
|
22
|
+
if (offsetHeight > clientHeight) {
|
|
23
|
+
return offsetTop;
|
|
24
|
+
}
|
|
18
25
|
|
|
19
26
|
if (elementBottom - clientHeight > scrollTop) {
|
|
20
27
|
return elementBottom - clientHeight;
|
|
@@ -31,6 +38,8 @@ function scrollIntoView(dimensions) {
|
|
|
31
38
|
* @requires useGridColumns (state) - can be after, async only
|
|
32
39
|
* @requires useGridRows (state) - can be after, async only
|
|
33
40
|
* @requires useGridRowsMeta (state) - can be after, async only
|
|
41
|
+
* @requires useGridFilter (state)
|
|
42
|
+
* @requires useGridColumnSpanning (method)
|
|
34
43
|
*/
|
|
35
44
|
|
|
36
45
|
|
|
@@ -38,6 +47,7 @@ export const useGridScroll = (apiRef, props) => {
|
|
|
38
47
|
const logger = useGridLogger(apiRef, 'useGridScroll');
|
|
39
48
|
const colRef = apiRef.current.columnHeadersElementRef;
|
|
40
49
|
const windowRef = apiRef.current.windowRef;
|
|
50
|
+
const visibleSortedRows = useGridSelector(apiRef, gridVisibleSortedRowEntriesSelector);
|
|
41
51
|
const scrollToIndexes = React.useCallback(params => {
|
|
42
52
|
const totalRowCount = gridRowCountSelector(apiRef);
|
|
43
53
|
const visibleColumns = gridVisibleColumnDefinitionsSelector(apiRef);
|
|
@@ -52,10 +62,27 @@ export const useGridScroll = (apiRef, props) => {
|
|
|
52
62
|
|
|
53
63
|
if (params.colIndex != null) {
|
|
54
64
|
const columnPositions = gridColumnPositionsSelector(apiRef);
|
|
65
|
+
let cellWidth;
|
|
66
|
+
|
|
67
|
+
if (typeof params.rowIndex !== 'undefined') {
|
|
68
|
+
var _visibleSortedRows$pa;
|
|
69
|
+
|
|
70
|
+
const rowId = (_visibleSortedRows$pa = visibleSortedRows[params.rowIndex]) == null ? void 0 : _visibleSortedRows$pa.id;
|
|
71
|
+
const cellColSpanInfo = apiRef.current.unstable_getCellColSpanInfo(rowId, params.colIndex);
|
|
72
|
+
|
|
73
|
+
if (cellColSpanInfo && !cellColSpanInfo.spannedByColSpan) {
|
|
74
|
+
cellWidth = cellColSpanInfo.cellProps.width;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
if (typeof cellWidth === 'undefined') {
|
|
79
|
+
cellWidth = visibleColumns[params.colIndex].computedWidth;
|
|
80
|
+
}
|
|
81
|
+
|
|
55
82
|
scrollCoordinates.left = scrollIntoView({
|
|
56
83
|
clientHeight: windowRef.current.clientWidth,
|
|
57
84
|
scrollTop: windowRef.current.scrollLeft,
|
|
58
|
-
offsetHeight:
|
|
85
|
+
offsetHeight: cellWidth,
|
|
59
86
|
offsetTop: columnPositions[params.colIndex]
|
|
60
87
|
});
|
|
61
88
|
}
|
|
@@ -82,7 +109,7 @@ export const useGridScroll = (apiRef, props) => {
|
|
|
82
109
|
}
|
|
83
110
|
|
|
84
111
|
return false;
|
|
85
|
-
}, [logger, apiRef, windowRef, props.pagination]);
|
|
112
|
+
}, [logger, apiRef, windowRef, props.pagination, visibleSortedRows]);
|
|
86
113
|
const scroll = React.useCallback(params => {
|
|
87
114
|
if (windowRef.current && params.left != null && colRef.current) {
|
|
88
115
|
colRef.current.scrollLeft = params.left;
|
|
@@ -9,4 +9,4 @@ export declare const selectionStateInitializer: GridStateInitializer<Pick<DataGr
|
|
|
9
9
|
* @requires useGridFocus (state) - can be after
|
|
10
10
|
* @requires useGridKeyboardNavigation (`cellKeyDown` event must first be consumed by it)
|
|
11
11
|
*/
|
|
12
|
-
export declare const useGridSelection: (apiRef: React.MutableRefObject<GridApiCommunity>, props: Pick<DataGridProcessedProps, 'checkboxSelection' | 'selectionModel' | 'onSelectionModelChange' | 'disableMultipleSelection' | 'disableSelectionOnClick' | 'isRowSelectable' | 'checkboxSelectionVisibleOnly' | 'pagination' | 'paginationMode' | 'classes'>) => void;
|
|
12
|
+
export declare const useGridSelection: (apiRef: React.MutableRefObject<GridApiCommunity>, props: Pick<DataGridProcessedProps, 'checkboxSelection' | 'selectionModel' | 'onSelectionModelChange' | 'disableMultipleSelection' | 'disableSelectionOnClick' | 'isRowSelectable' | 'checkboxSelectionVisibleOnly' | 'pagination' | 'paginationMode' | 'classes' | 'keepNonExistentRowsSelected'>) => void;
|