@mui/x-data-grid 5.9.0 → 5.11.1
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 +284 -10
- package/DataGrid/DataGrid.js +35 -1
- package/DataGrid/useDataGridProps.js +2 -1
- package/README.md +5 -4
- 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.js +9 -5
- 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 +2 -3
- package/components/cell/GridActionsCell.js +13 -4
- package/components/cell/GridCell.js +8 -8
- 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 +29 -5
- package/components/cell/GridEditSingleSelectCell.d.ts +12 -4
- package/components/cell/GridEditSingleSelectCell.js +28 -5
- package/components/cell/index.d.ts +2 -0
- package/components/cell/index.js +2 -0
- package/components/columnHeaders/GridColumnHeaderItem.js +15 -16
- package/components/columnHeaders/GridColumnHeaders.d.ts +2 -0
- package/components/columnHeaders/GridColumnHeadersInner.d.ts +2 -0
- package/components/columnSelection/GridCellCheckboxRenderer.js +2 -3
- 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/GridRoot.js +25 -5
- 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/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/toolbar/GridToolbar.d.ts +12 -2
- package/components/toolbar/GridToolbar.js +30 -7
- 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 +87 -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/GridVirtualScrollerContent.d.ts +4 -1
- package/components/virtualization/GridVirtualScrollerRenderZone.d.ts +4 -1
- package/constants/defaultGridSlotsComponents.js +4 -2
- package/constants/gridClasses.d.ts +32 -0
- package/constants/gridClasses.js +1 -1
- package/constants/localeTextConstants.js +8 -1
- package/hooks/core/pipeProcessing/gridPipeProcessingApi.d.ts +11 -0
- package/hooks/core/pipeProcessing/useGridPipeProcessing.js +10 -9
- 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.js +5 -6
- package/hooks/features/columnMenu/useGridColumnMenu.js +3 -3
- package/hooks/features/columns/useGridColumnSpanning.js +1 -2
- package/hooks/features/columns/useGridColumns.d.ts +1 -1
- package/hooks/features/columns/useGridColumns.js +8 -9
- package/hooks/features/dimensions/useGridDimensions.d.ts +1 -1
- package/hooks/features/dimensions/useGridDimensions.js +8 -9
- package/hooks/features/editRows/useGridCellEditing.new.d.ts +1 -1
- package/hooks/features/editRows/useGridCellEditing.new.js +133 -32
- package/hooks/features/editRows/useGridCellEditing.old.js +20 -21
- 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 +122 -42
- 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 +20 -8
- package/hooks/features/focus/useGridFocus.d.ts +1 -1
- package/hooks/features/focus/useGridFocus.js +29 -33
- package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +4 -5
- 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 +1 -0
- package/hooks/features/rows/gridRowsSelector.js +1 -0
- package/hooks/features/rows/gridRowsState.d.ts +16 -11
- package/hooks/features/rows/gridRowsUtils.d.ts +14 -1
- package/hooks/features/rows/gridRowsUtils.js +79 -1
- package/hooks/features/rows/useGridRows.js +148 -128
- package/hooks/features/rows/useGridRowsPreProcessors.js +2 -0
- package/hooks/features/scroll/useGridScroll.js +6 -1
- package/hooks/features/selection/useGridSelection.d.ts +1 -1
- package/hooks/features/selection/useGridSelection.js +13 -10
- package/hooks/features/sorting/useGridSorting.js +8 -9
- package/hooks/features/virtualization/useGridVirtualScroller.d.ts +2 -0
- package/hooks/features/virtualization/useGridVirtualScroller.js +14 -5
- 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 +4 -1
- package/internals/index.js +5 -2
- package/legacy/DataGrid/DataGrid.js +35 -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 +9 -5
- 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 +2 -3
- package/legacy/components/cell/GridActionsCell.js +13 -4
- package/legacy/components/cell/GridCell.js +8 -8
- package/legacy/components/cell/GridEditBooleanCell.js +132 -11
- package/legacy/components/cell/GridEditDateCell.js +148 -42
- package/legacy/components/cell/GridEditInputCell.js +61 -12
- package/legacy/components/cell/GridEditSingleSelectCell.js +41 -13
- package/legacy/components/cell/index.js +2 -0
- package/legacy/components/columnHeaders/GridColumnHeaderItem.js +15 -16
- package/legacy/components/columnSelection/GridCellCheckboxRenderer.js +2 -3
- package/legacy/components/columnSelection/GridHeaderCheckbox.js +4 -5
- package/legacy/components/containers/GridFooterContainer.js +11 -2
- package/legacy/components/containers/GridRoot.js +23 -5
- 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/GridPanelContent.js +13 -2
- package/legacy/components/panel/GridPanelFooter.js +13 -2
- package/legacy/components/panel/GridPanelHeader.js +13 -2
- package/legacy/components/toolbar/GridToolbar.js +31 -6
- package/legacy/components/toolbar/GridToolbarExport.js +18 -19
- package/legacy/components/toolbar/GridToolbarQuickFilter.js +102 -0
- package/legacy/components/toolbar/index.js +3 -2
- package/legacy/constants/defaultGridSlotsComponents.js +4 -2
- package/legacy/constants/gridClasses.js +1 -1
- package/legacy/constants/localeTextConstants.js +8 -1
- package/legacy/hooks/core/pipeProcessing/useGridPipeProcessing.js +10 -10
- 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 +5 -6
- package/legacy/hooks/features/columnMenu/useGridColumnMenu.js +3 -3
- package/legacy/hooks/features/columns/useGridColumnSpanning.js +1 -2
- package/legacy/hooks/features/columns/useGridColumns.js +8 -9
- package/legacy/hooks/features/dimensions/useGridDimensions.js +8 -9
- package/legacy/hooks/features/editRows/useGridCellEditing.new.js +213 -83
- package/legacy/hooks/features/editRows/useGridCellEditing.old.js +20 -21
- package/legacy/hooks/features/editRows/useGridEditing.old.js +4 -5
- package/legacy/hooks/features/editRows/useGridRowEditing.new.js +126 -42
- 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 +20 -8
- package/legacy/hooks/features/focus/useGridFocus.js +31 -35
- package/legacy/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +4 -5
- 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 +3 -0
- package/legacy/hooks/features/rows/gridRowsUtils.js +82 -1
- package/legacy/hooks/features/rows/useGridRows.js +164 -131
- package/legacy/hooks/features/rows/useGridRowsPreProcessors.js +2 -0
- package/legacy/hooks/features/scroll/useGridScroll.js +6 -1
- package/legacy/hooks/features/selection/useGridSelection.js +13 -10
- package/legacy/hooks/features/sorting/useGridSorting.js +8 -9
- package/legacy/hooks/features/virtualization/useGridVirtualScroller.js +14 -5
- 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 +5 -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 +8 -1
- 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/events/gridEvents.js +8 -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.js +8 -1
- 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/gridCoreApi.d.ts +10 -0
- package/models/api/gridEditingApi.d.ts +23 -4
- 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 +13 -0
- package/models/events/gridEventLookup.d.ts +293 -3
- package/models/events/gridEvents.d.ts +8 -251
- package/models/events/gridEvents.js +8 -0
- 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 +10 -0
- package/models/gridStateCommunity.d.ts +0 -2
- package/models/index.d.ts +1 -1
- package/models/index.js +4 -3
- package/models/props/DataGridProps.d.ts +56 -28
- package/modern/DataGrid/DataGrid.js +35 -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 +9 -5
- 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 +2 -3
- package/modern/components/cell/GridActionsCell.js +14 -3
- package/modern/components/cell/GridCell.js +8 -8
- package/modern/components/cell/GridEditBooleanCell.js +101 -6
- package/modern/components/cell/GridEditDateCell.js +99 -5
- package/modern/components/cell/GridEditInputCell.js +29 -5
- package/modern/components/cell/GridEditSingleSelectCell.js +28 -5
- package/modern/components/cell/index.js +2 -0
- package/modern/components/columnHeaders/GridColumnHeaderItem.js +15 -16
- package/modern/components/columnSelection/GridCellCheckboxRenderer.js +2 -3
- package/modern/components/columnSelection/GridHeaderCheckbox.js +4 -5
- package/modern/components/containers/GridFooterContainer.js +11 -2
- package/modern/components/containers/GridRoot.js +25 -3
- 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/GridPanelContent.js +13 -2
- package/modern/components/panel/GridPanelFooter.js +13 -2
- package/modern/components/panel/GridPanelHeader.js +13 -2
- package/modern/components/toolbar/GridToolbar.js +30 -7
- package/modern/components/toolbar/GridToolbarExport.js +15 -20
- package/modern/components/toolbar/GridToolbarQuickFilter.js +85 -0
- package/modern/components/toolbar/index.js +3 -2
- package/modern/constants/defaultGridSlotsComponents.js +4 -2
- package/modern/constants/gridClasses.js +1 -1
- package/modern/constants/localeTextConstants.js +8 -1
- package/modern/hooks/core/pipeProcessing/useGridPipeProcessing.js +10 -9
- 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 +5 -6
- package/modern/hooks/features/columnMenu/useGridColumnMenu.js +3 -3
- package/modern/hooks/features/columns/useGridColumnSpanning.js +1 -2
- package/modern/hooks/features/columns/useGridColumns.js +8 -9
- package/modern/hooks/features/dimensions/useGridDimensions.js +8 -9
- package/modern/hooks/features/editRows/useGridCellEditing.new.js +131 -32
- package/modern/hooks/features/editRows/useGridCellEditing.old.js +20 -21
- package/modern/hooks/features/editRows/useGridEditing.old.js +4 -5
- package/modern/hooks/features/editRows/useGridRowEditing.new.js +120 -42
- 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 +20 -8
- package/modern/hooks/features/focus/useGridFocus.js +29 -33
- package/modern/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +4 -5
- 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 +1 -0
- package/modern/hooks/features/rows/gridRowsUtils.js +77 -1
- package/modern/hooks/features/rows/useGridRows.js +148 -128
- package/modern/hooks/features/rows/useGridRowsPreProcessors.js +2 -0
- package/modern/hooks/features/scroll/useGridScroll.js +6 -1
- package/modern/hooks/features/selection/useGridSelection.js +13 -10
- package/modern/hooks/features/sorting/useGridSorting.js +8 -9
- package/modern/hooks/features/virtualization/useGridVirtualScroller.js +14 -5
- 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 +5 -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 +8 -1
- 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/events/gridEvents.js +8 -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 +35 -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 +9 -6
- 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 +2 -4
- package/node/components/cell/GridActionsCell.js +13 -4
- package/node/components/cell/GridCell.js +7 -7
- package/node/components/cell/GridEditBooleanCell.js +100 -5
- package/node/components/cell/GridEditDateCell.js +98 -4
- package/node/components/cell/GridEditInputCell.js +29 -5
- package/node/components/cell/GridEditSingleSelectCell.js +28 -6
- package/node/components/cell/index.js +26 -0
- package/node/components/columnHeaders/GridColumnHeaderItem.js +15 -17
- package/node/components/columnSelection/GridCellCheckboxRenderer.js +2 -4
- package/node/components/columnSelection/GridHeaderCheckbox.js +4 -6
- package/node/components/containers/GridFooterContainer.js +10 -1
- package/node/components/containers/GridRoot.js +24 -3
- 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/GridPanelContent.js +11 -1
- package/node/components/panel/GridPanelFooter.js +11 -1
- package/node/components/panel/GridPanelHeader.js +11 -1
- package/node/components/toolbar/GridToolbar.js +32 -7
- package/node/components/toolbar/GridToolbarExport.js +14 -19
- package/node/components/toolbar/GridToolbarQuickFilter.js +109 -0
- package/node/components/toolbar/index.js +42 -11
- package/node/constants/defaultGridSlotsComponents.js +3 -1
- package/node/constants/gridClasses.js +1 -1
- package/node/constants/localeTextConstants.js +8 -1
- package/node/hooks/core/pipeProcessing/useGridPipeProcessing.js +10 -8
- 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 +5 -7
- package/node/hooks/features/columnMenu/useGridColumnMenu.js +3 -4
- package/node/hooks/features/columns/useGridColumnSpanning.js +1 -3
- package/node/hooks/features/columns/useGridColumns.js +8 -10
- package/node/hooks/features/dimensions/useGridDimensions.js +8 -10
- package/node/hooks/features/editRows/useGridCellEditing.new.js +133 -32
- package/node/hooks/features/editRows/useGridCellEditing.old.js +20 -22
- package/node/hooks/features/editRows/useGridEditing.old.js +4 -6
- package/node/hooks/features/editRows/useGridRowEditing.new.js +122 -43
- 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 +21 -9
- package/node/hooks/features/focus/useGridFocus.js +29 -34
- package/node/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +4 -6
- 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 +3 -1
- package/node/hooks/features/rows/gridRowsUtils.js +95 -1
- package/node/hooks/features/rows/useGridRows.js +150 -126
- package/node/hooks/features/rows/useGridRowsPreProcessors.js +2 -0
- package/node/hooks/features/scroll/useGridScroll.js +6 -1
- package/node/hooks/features/selection/useGridSelection.js +13 -11
- package/node/hooks/features/sorting/useGridSorting.js +8 -10
- package/node/hooks/features/virtualization/useGridVirtualScroller.js +14 -6
- 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 +39 -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 +8 -1
- 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/events/gridEvents.js +8 -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 +3 -2
- package/utils/createSelector.d.ts +2 -1
- package/utils/createSelector.js +20 -2
- package/utils/exportAs.d.ts +2 -2
- package/utils/exportAs.js +1 -1
|
@@ -11,8 +11,6 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
|
|
|
11
11
|
|
|
12
12
|
var React = _interopRequireWildcard(require("react"));
|
|
13
13
|
|
|
14
|
-
var _events = require("../../../models/events");
|
|
15
|
-
|
|
16
14
|
var _useGridApiMethod = require("../../utils/useGridApiMethod");
|
|
17
15
|
|
|
18
16
|
var _useGridLogger = require("../../utils/useGridLogger");
|
|
@@ -23,83 +21,31 @@ var _useGridApiEventHandler = require("../../utils/useGridApiEventHandler");
|
|
|
23
21
|
|
|
24
22
|
var _useGridVisibleRows = require("../../utils/useGridVisibleRows");
|
|
25
23
|
|
|
26
|
-
var
|
|
24
|
+
var _gridSortingSelector = require("../sorting/gridSortingSelector");
|
|
27
25
|
|
|
28
|
-
|
|
26
|
+
var _gridFilterSelector = require("../filter/gridFilterSelector");
|
|
29
27
|
|
|
30
|
-
|
|
28
|
+
var _gridRowsUtils = require("./gridRowsUtils");
|
|
31
29
|
|
|
32
|
-
|
|
33
|
-
const id = getRowId ? getRowId(rowModel) : rowModel.id;
|
|
34
|
-
(0, _gridRowsUtils.checkGridRowIdIsValid)(id, rowModel, detailErrorMessage);
|
|
35
|
-
return id;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
const convertGridRowsPropToState = ({
|
|
39
|
-
prevState,
|
|
40
|
-
rows,
|
|
41
|
-
getRowId
|
|
42
|
-
}) => {
|
|
43
|
-
let value;
|
|
44
|
-
|
|
45
|
-
if (rows) {
|
|
46
|
-
value = {
|
|
47
|
-
idRowsLookup: {},
|
|
48
|
-
ids: []
|
|
49
|
-
};
|
|
30
|
+
var _pipeProcessing = require("../../core/pipeProcessing");
|
|
50
31
|
|
|
51
|
-
|
|
52
|
-
const row = rows[i];
|
|
53
|
-
const id = getGridRowId(row, getRowId);
|
|
54
|
-
value.idRowsLookup[id] = row;
|
|
55
|
-
value.ids.push(id);
|
|
56
|
-
}
|
|
57
|
-
} else {
|
|
58
|
-
value = prevState.value;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
return {
|
|
62
|
-
value,
|
|
63
|
-
rowsBeforePartialUpdates: rows != null ? rows : prevState.rowsBeforePartialUpdates
|
|
64
|
-
};
|
|
65
|
-
};
|
|
32
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
66
33
|
|
|
67
|
-
|
|
68
|
-
const {
|
|
69
|
-
value
|
|
70
|
-
} = rowsCache.state;
|
|
71
|
-
const rowCount = rowCountProp != null ? rowCountProp : 0;
|
|
72
|
-
const groupingResponse = apiRef.current.unstable_applyStrategyProcessor('rowTreeCreation', (0, _extends2.default)({}, value, {
|
|
73
|
-
previousTree
|
|
74
|
-
}));
|
|
75
|
-
const dataTopLevelRowCount = groupingResponse.treeDepth === 1 ? groupingResponse.ids.length : Object.values(groupingResponse.tree).filter(node => node.parent == null).length;
|
|
76
|
-
return (0, _extends2.default)({}, groupingResponse, {
|
|
77
|
-
loading: loadingProp,
|
|
78
|
-
totalRowCount: Math.max(rowCount, groupingResponse.ids.length),
|
|
79
|
-
totalTopLevelRowCount: Math.max(rowCount, dataTopLevelRowCount)
|
|
80
|
-
});
|
|
81
|
-
};
|
|
34
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
82
35
|
|
|
83
36
|
const rowsStateInitializer = (state, props, apiRef) => {
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
value: {
|
|
90
|
-
idRowsLookup: {},
|
|
91
|
-
ids: []
|
|
92
|
-
},
|
|
93
|
-
rowsBeforePartialUpdates: []
|
|
94
|
-
}
|
|
95
|
-
}),
|
|
96
|
-
timeout: null,
|
|
97
|
-
lastUpdateMs: Date.now()
|
|
98
|
-
};
|
|
37
|
+
apiRef.current.unstable_caches.rows = (0, _gridRowsUtils.createRowsInternalCache)({
|
|
38
|
+
rows: props.rows,
|
|
39
|
+
getRowId: props.getRowId,
|
|
40
|
+
loading: props.loading
|
|
41
|
+
});
|
|
99
42
|
return (0, _extends2.default)({}, state, {
|
|
100
|
-
rows:
|
|
101
|
-
|
|
102
|
-
|
|
43
|
+
rows: (0, _gridRowsUtils.getRowsStateFromCache)({
|
|
44
|
+
apiRef,
|
|
45
|
+
previousTree: null,
|
|
46
|
+
rowCountProp: props.rowCount,
|
|
47
|
+
loadingProp: props.loading
|
|
48
|
+
})
|
|
103
49
|
});
|
|
104
50
|
};
|
|
105
51
|
|
|
@@ -112,9 +58,9 @@ const useGridRows = (apiRef, props) => {
|
|
|
112
58
|
}
|
|
113
59
|
|
|
114
60
|
const logger = (0, _useGridLogger.useGridLogger)(apiRef, 'useGridRows');
|
|
115
|
-
const rowsCache = React.useRef(apiRef.current.state.rowsCache); // To avoid listing rowsCache as useEffect dep
|
|
116
|
-
|
|
117
61
|
const currentPage = (0, _useGridVisibleRows.useGridVisibleRows)(apiRef, props);
|
|
62
|
+
const lastUpdateMs = React.useRef(Date.now());
|
|
63
|
+
const timeout = React.useRef(null);
|
|
118
64
|
const getRow = React.useCallback(id => {
|
|
119
65
|
var _ref;
|
|
120
66
|
|
|
@@ -126,33 +72,38 @@ const useGridRows = (apiRef, props) => {
|
|
|
126
72
|
acc[id] = index;
|
|
127
73
|
return acc;
|
|
128
74
|
}, {}), [currentPage.rows]);
|
|
129
|
-
const throttledRowsChange = React.useCallback((
|
|
75
|
+
const throttledRowsChange = React.useCallback((newCache, throttle) => {
|
|
130
76
|
const run = () => {
|
|
131
|
-
|
|
132
|
-
|
|
77
|
+
timeout.current = null;
|
|
78
|
+
lastUpdateMs.current = Date.now();
|
|
133
79
|
apiRef.current.setState(state => (0, _extends2.default)({}, state, {
|
|
134
|
-
rows:
|
|
80
|
+
rows: (0, _gridRowsUtils.getRowsStateFromCache)({
|
|
81
|
+
apiRef,
|
|
82
|
+
previousTree: (0, _gridRowsSelector.gridRowTreeSelector)(apiRef),
|
|
83
|
+
rowCountProp: props.rowCount,
|
|
84
|
+
loadingProp: props.loading
|
|
85
|
+
})
|
|
135
86
|
}));
|
|
136
|
-
apiRef.current.publishEvent(
|
|
87
|
+
apiRef.current.publishEvent('rowsSet');
|
|
137
88
|
apiRef.current.forceUpdate();
|
|
138
89
|
};
|
|
139
90
|
|
|
140
|
-
if (
|
|
141
|
-
clearTimeout(
|
|
91
|
+
if (timeout.current) {
|
|
92
|
+
clearTimeout(timeout.current);
|
|
93
|
+
timeout.current = null;
|
|
142
94
|
}
|
|
143
95
|
|
|
144
|
-
|
|
145
|
-
rowsCache.current.timeout = null;
|
|
96
|
+
apiRef.current.unstable_caches.rows = newCache;
|
|
146
97
|
|
|
147
98
|
if (!throttle) {
|
|
148
99
|
run();
|
|
149
100
|
return;
|
|
150
101
|
}
|
|
151
102
|
|
|
152
|
-
const throttleRemainingTimeMs = props.throttleRowsMs - (Date.now() -
|
|
103
|
+
const throttleRemainingTimeMs = props.throttleRowsMs - (Date.now() - lastUpdateMs.current);
|
|
153
104
|
|
|
154
105
|
if (throttleRemainingTimeMs > 0) {
|
|
155
|
-
|
|
106
|
+
timeout.current = setTimeout(run, throttleRemainingTimeMs);
|
|
156
107
|
return;
|
|
157
108
|
}
|
|
158
109
|
|
|
@@ -164,12 +115,12 @@ const useGridRows = (apiRef, props) => {
|
|
|
164
115
|
|
|
165
116
|
const setRows = React.useCallback(rows => {
|
|
166
117
|
logger.debug(`Updating all rows, new length ${rows.length}`);
|
|
167
|
-
throttledRowsChange(
|
|
118
|
+
throttledRowsChange((0, _gridRowsUtils.createRowsInternalCache)({
|
|
168
119
|
rows,
|
|
169
|
-
|
|
170
|
-
|
|
120
|
+
getRowId: props.getRowId,
|
|
121
|
+
loading: props.loading
|
|
171
122
|
}), true);
|
|
172
|
-
}, [logger, props.getRowId, throttledRowsChange]);
|
|
123
|
+
}, [logger, props.getRowId, props.loading, throttledRowsChange]);
|
|
173
124
|
const updateRows = React.useCallback(updates => {
|
|
174
125
|
if (props.signature === _useGridApiEventHandler.GridSignature.DataGrid && updates.length > 1) {
|
|
175
126
|
// TODO: Add test with direct call to `apiRef.current.updateRows` in DataGrid after enabling the `apiRef` on the free plan.
|
|
@@ -179,7 +130,7 @@ const useGridRows = (apiRef, props) => {
|
|
|
179
130
|
|
|
180
131
|
const uniqUpdates = new Map();
|
|
181
132
|
updates.forEach(update => {
|
|
182
|
-
const id =
|
|
133
|
+
const id = (0, _gridRowsUtils.getRowIdFromRowModel)(update, props.getRowId, 'A row was provided without id when calling updateRows():');
|
|
183
134
|
|
|
184
135
|
if (uniqUpdates.has(id)) {
|
|
185
136
|
uniqUpdates.set(id, (0, _extends2.default)({}, uniqUpdates.get(id), update));
|
|
@@ -188,14 +139,19 @@ const useGridRows = (apiRef, props) => {
|
|
|
188
139
|
}
|
|
189
140
|
});
|
|
190
141
|
const deletedRowIds = [];
|
|
191
|
-
const
|
|
192
|
-
|
|
193
|
-
|
|
142
|
+
const prevCache = apiRef.current.unstable_caches.rows;
|
|
143
|
+
const newCache = {
|
|
144
|
+
rowsBeforePartialUpdates: prevCache.rowsBeforePartialUpdates,
|
|
145
|
+
loadingPropBeforePartialUpdates: prevCache.loadingPropBeforePartialUpdates,
|
|
146
|
+
idRowsLookup: (0, _extends2.default)({}, prevCache.idRowsLookup),
|
|
147
|
+
idToIdLookup: (0, _extends2.default)({}, prevCache.idToIdLookup),
|
|
148
|
+
ids: [...prevCache.ids]
|
|
194
149
|
};
|
|
195
150
|
uniqUpdates.forEach((partialRow, id) => {
|
|
196
151
|
// eslint-disable-next-line no-underscore-dangle
|
|
197
152
|
if (partialRow._action === 'delete') {
|
|
198
|
-
delete
|
|
153
|
+
delete newCache.idRowsLookup[id];
|
|
154
|
+
delete newCache.idToIdLookup[id];
|
|
199
155
|
deletedRowIds.push(id);
|
|
200
156
|
return;
|
|
201
157
|
}
|
|
@@ -203,23 +159,21 @@ const useGridRows = (apiRef, props) => {
|
|
|
203
159
|
const oldRow = apiRef.current.getRow(id);
|
|
204
160
|
|
|
205
161
|
if (!oldRow) {
|
|
206
|
-
|
|
207
|
-
|
|
162
|
+
newCache.idRowsLookup[id] = partialRow;
|
|
163
|
+
newCache.idToIdLookup[id] = id;
|
|
164
|
+
newCache.ids.push(id);
|
|
208
165
|
return;
|
|
209
166
|
}
|
|
210
167
|
|
|
211
|
-
|
|
168
|
+
newCache.idRowsLookup[id] = (0, _extends2.default)({}, apiRef.current.getRow(id), partialRow);
|
|
212
169
|
});
|
|
213
170
|
|
|
214
171
|
if (deletedRowIds.length > 0) {
|
|
215
|
-
|
|
172
|
+
newCache.ids = newCache.ids.filter(id => !deletedRowIds.includes(id));
|
|
216
173
|
}
|
|
217
174
|
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
});
|
|
221
|
-
throttledRowsChange(state, true);
|
|
222
|
-
}, [apiRef, props.getRowId, throttledRowsChange, props.signature]);
|
|
175
|
+
throttledRowsChange(newCache, true);
|
|
176
|
+
}, [props.signature, props.getRowId, throttledRowsChange, apiRef]);
|
|
223
177
|
const getRowModels = React.useCallback(() => {
|
|
224
178
|
const allRows = (0, _gridRowsSelector.gridRowIdsSelector)(apiRef);
|
|
225
179
|
const idRowsLookup = (0, _gridRowsSelector.gridRowsLookupSelector)(apiRef);
|
|
@@ -248,23 +202,82 @@ const useGridRows = (apiRef, props) => {
|
|
|
248
202
|
});
|
|
249
203
|
});
|
|
250
204
|
apiRef.current.forceUpdate();
|
|
251
|
-
apiRef.current.publishEvent(
|
|
205
|
+
apiRef.current.publishEvent('rowExpansionChange', newNode);
|
|
252
206
|
}, [apiRef]);
|
|
253
207
|
const getRowNode = React.useCallback(id => {
|
|
254
208
|
var _gridRowTreeSelector$;
|
|
255
209
|
|
|
256
210
|
return (_gridRowTreeSelector$ = (0, _gridRowsSelector.gridRowTreeSelector)(apiRef)[id]) != null ? _gridRowTreeSelector$ : null;
|
|
257
211
|
}, [apiRef]);
|
|
212
|
+
const getRowGroupChildren = React.useCallback(({
|
|
213
|
+
skipAutoGeneratedRows = true,
|
|
214
|
+
groupId,
|
|
215
|
+
applySorting,
|
|
216
|
+
applyFiltering
|
|
217
|
+
}) => {
|
|
218
|
+
const tree = (0, _gridRowsSelector.gridRowTreeSelector)(apiRef);
|
|
219
|
+
let children;
|
|
220
|
+
|
|
221
|
+
if (applySorting) {
|
|
222
|
+
const groupNode = tree[groupId];
|
|
223
|
+
|
|
224
|
+
if (!groupNode) {
|
|
225
|
+
return [];
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
const sortedRowIds = (0, _gridSortingSelector.gridSortedRowIdsSelector)(apiRef);
|
|
229
|
+
children = [];
|
|
230
|
+
const startIndex = sortedRowIds.findIndex(id => id === groupId) + 1;
|
|
231
|
+
|
|
232
|
+
for (let index = startIndex; index < sortedRowIds.length && tree[sortedRowIds[index]].depth > groupNode.depth; index += 1) {
|
|
233
|
+
const id = sortedRowIds[index];
|
|
234
|
+
const node = tree[id];
|
|
235
|
+
|
|
236
|
+
if (!skipAutoGeneratedRows || !node.isAutoGenerated) {
|
|
237
|
+
children.push(id);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
} else {
|
|
241
|
+
children = (0, _gridRowsUtils.getTreeNodeDescendants)(tree, groupId, skipAutoGeneratedRows);
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
if (applyFiltering) {
|
|
245
|
+
const filteredRowsLookup = (0, _gridFilterSelector.gridFilteredRowsLookupSelector)(apiRef);
|
|
246
|
+
children = children.filter(childId => filteredRowsLookup[childId] !== false);
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
return children;
|
|
250
|
+
}, [apiRef]);
|
|
251
|
+
const setRowIndex = React.useCallback((rowId, targetIndex) => {
|
|
252
|
+
const allRows = (0, _gridRowsSelector.gridRowIdsSelector)(apiRef);
|
|
253
|
+
const oldIndex = allRows.findIndex(row => row === rowId);
|
|
254
|
+
|
|
255
|
+
if (oldIndex === -1 || oldIndex === targetIndex) {
|
|
256
|
+
return;
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
logger.debug(`Moving row ${rowId} to index ${targetIndex}`);
|
|
260
|
+
const updatedRows = [...allRows];
|
|
261
|
+
updatedRows.splice(targetIndex, 0, updatedRows.splice(oldIndex, 1)[0]);
|
|
262
|
+
apiRef.current.setState(state => (0, _extends2.default)({}, state, {
|
|
263
|
+
rows: (0, _extends2.default)({}, state.rows, {
|
|
264
|
+
ids: updatedRows
|
|
265
|
+
})
|
|
266
|
+
}));
|
|
267
|
+
apiRef.current.applySorting();
|
|
268
|
+
}, [apiRef, logger]);
|
|
258
269
|
const rowApi = {
|
|
259
270
|
getRow,
|
|
260
271
|
getRowModels,
|
|
261
272
|
getRowsCount,
|
|
262
273
|
getAllRowIds,
|
|
263
274
|
setRows,
|
|
275
|
+
setRowIndex,
|
|
264
276
|
updateRows,
|
|
265
277
|
setRowChildrenExpansion,
|
|
266
278
|
getRowNode,
|
|
267
|
-
getRowIndexRelativeToVisibleRows
|
|
279
|
+
getRowIndexRelativeToVisibleRows,
|
|
280
|
+
getRowGroupChildren
|
|
268
281
|
};
|
|
269
282
|
/**
|
|
270
283
|
* EVENTS
|
|
@@ -272,25 +285,25 @@ const useGridRows = (apiRef, props) => {
|
|
|
272
285
|
|
|
273
286
|
const groupRows = React.useCallback(() => {
|
|
274
287
|
logger.info(`Row grouping pre-processing have changed, regenerating the row tree`);
|
|
275
|
-
let
|
|
288
|
+
let cache;
|
|
276
289
|
|
|
277
|
-
if (
|
|
278
|
-
// The `props.rows`
|
|
279
|
-
// We can
|
|
280
|
-
|
|
290
|
+
if (apiRef.current.unstable_caches.rows.rowsBeforePartialUpdates === props.rows) {
|
|
291
|
+
// The `props.rows` did not change since the last row grouping
|
|
292
|
+
// We can use the current rows cache which contains the partial updates done recently.
|
|
293
|
+
cache = apiRef.current.unstable_caches.rows;
|
|
281
294
|
} else {
|
|
282
295
|
// The `props.rows` has changed since the last row grouping
|
|
283
296
|
// We must use the new `props.rows` on the new grouping
|
|
284
297
|
// This occurs because this event is triggered before the `useEffect` on the rows when both the grouping pre-processing and the rows changes on the same render
|
|
285
|
-
|
|
298
|
+
cache = (0, _gridRowsUtils.createRowsInternalCache)({
|
|
299
|
+
rows: props.rows,
|
|
300
|
+
getRowId: props.getRowId,
|
|
301
|
+
loading: props.loading
|
|
302
|
+
});
|
|
286
303
|
}
|
|
287
304
|
|
|
288
|
-
throttledRowsChange(
|
|
289
|
-
|
|
290
|
-
getRowId: props.getRowId,
|
|
291
|
-
prevState: rowsCache.current.state
|
|
292
|
-
}), false);
|
|
293
|
-
}, [logger, throttledRowsChange, props.getRowId, props.rows]);
|
|
305
|
+
throttledRowsChange(cache, false);
|
|
306
|
+
}, [logger, apiRef, props.rows, props.getRowId, props.loading, throttledRowsChange]);
|
|
294
307
|
const handleStrategyProcessorChange = React.useCallback(methodName => {
|
|
295
308
|
if (methodName === 'rowTreeCreation') {
|
|
296
309
|
groupRows();
|
|
@@ -303,8 +316,20 @@ const useGridRows = (apiRef, props) => {
|
|
|
303
316
|
groupRows();
|
|
304
317
|
}
|
|
305
318
|
}, [apiRef, groupRows]);
|
|
306
|
-
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef,
|
|
307
|
-
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef,
|
|
319
|
+
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'activeStrategyProcessorChange', handleStrategyProcessorChange);
|
|
320
|
+
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'strategyAvailabilityChange', handleStrategyActivityChange);
|
|
321
|
+
/**
|
|
322
|
+
* APPLIERS
|
|
323
|
+
*/
|
|
324
|
+
|
|
325
|
+
const applyHydrateRowsProcessor = React.useCallback(() => {
|
|
326
|
+
apiRef.current.setState(state => (0, _extends2.default)({}, state, {
|
|
327
|
+
rows: (0, _extends2.default)({}, state.rows, apiRef.current.unstable_applyPipeProcessors('hydrateRows', state.rows.groupingResponseBeforeRowHydration))
|
|
328
|
+
}));
|
|
329
|
+
apiRef.current.publishEvent('rowsSet');
|
|
330
|
+
apiRef.current.forceUpdate();
|
|
331
|
+
}, [apiRef]);
|
|
332
|
+
(0, _pipeProcessing.useGridRegisterPipeApplier)(apiRef, 'hydrateRows', applyHydrateRowsProcessor);
|
|
308
333
|
(0, _useGridApiMethod.useGridApiMethod)(apiRef, rowApi, 'GridRowApi');
|
|
309
334
|
/**
|
|
310
335
|
* EFFECTS
|
|
@@ -312,9 +337,8 @@ const useGridRows = (apiRef, props) => {
|
|
|
312
337
|
|
|
313
338
|
React.useEffect(() => {
|
|
314
339
|
return () => {
|
|
315
|
-
if (
|
|
316
|
-
|
|
317
|
-
clearTimeout(rowsCache.current.timeout);
|
|
340
|
+
if (timeout.current !== null) {
|
|
341
|
+
clearTimeout(timeout.current);
|
|
318
342
|
}
|
|
319
343
|
};
|
|
320
344
|
}, []); // The effect do not track any value defined synchronously during the 1st render by hooks called after `useGridRows`
|
|
@@ -325,20 +349,20 @@ const useGridRows = (apiRef, props) => {
|
|
|
325
349
|
if (isFirstRender.current) {
|
|
326
350
|
isFirstRender.current = false;
|
|
327
351
|
return;
|
|
328
|
-
} // The new rows have already been applied (most likely in the `
|
|
352
|
+
} // The new rows have already been applied (most likely in the `'rowGroupsPreProcessingChange'` listener)
|
|
329
353
|
|
|
330
354
|
|
|
331
|
-
if (
|
|
355
|
+
if (apiRef.current.unstable_caches.rows.rowsBeforePartialUpdates === props.rows && apiRef.current.unstable_caches.rows.loadingPropBeforePartialUpdates === props.loading) {
|
|
332
356
|
return;
|
|
333
357
|
}
|
|
334
358
|
|
|
335
359
|
logger.debug(`Updating all rows, new length ${props.rows.length}`);
|
|
336
|
-
throttledRowsChange(
|
|
360
|
+
throttledRowsChange((0, _gridRowsUtils.createRowsInternalCache)({
|
|
337
361
|
rows: props.rows,
|
|
338
362
|
getRowId: props.getRowId,
|
|
339
|
-
|
|
363
|
+
loading: props.loading
|
|
340
364
|
}), false);
|
|
341
|
-
}, [props.rows, props.rowCount, props.getRowId, logger, throttledRowsChange]);
|
|
365
|
+
}, [props.rows, props.rowCount, props.getRowId, props.loading, logger, throttledRowsChange, apiRef]);
|
|
342
366
|
};
|
|
343
367
|
|
|
344
368
|
exports.useGridRows = useGridRows;
|
|
@@ -10,6 +10,7 @@ var _strategyProcessing = require("../../core/strategyProcessing");
|
|
|
10
10
|
const flatRowTreeCreationMethod = ({
|
|
11
11
|
ids,
|
|
12
12
|
idRowsLookup,
|
|
13
|
+
idToIdLookup,
|
|
13
14
|
previousTree
|
|
14
15
|
}) => {
|
|
15
16
|
const tree = {};
|
|
@@ -35,6 +36,7 @@ const flatRowTreeCreationMethod = ({
|
|
|
35
36
|
tree,
|
|
36
37
|
treeDepth: 1,
|
|
37
38
|
idRowsLookup,
|
|
39
|
+
idToIdLookup,
|
|
38
40
|
ids
|
|
39
41
|
};
|
|
40
42
|
};
|
|
@@ -36,7 +36,12 @@ function scrollIntoView(dimensions) {
|
|
|
36
36
|
offsetHeight,
|
|
37
37
|
offsetTop
|
|
38
38
|
} = dimensions;
|
|
39
|
-
const elementBottom = offsetTop + offsetHeight;
|
|
39
|
+
const elementBottom = offsetTop + offsetHeight; // Always scroll to top when cell is higher than viewport to avoid scroll jump
|
|
40
|
+
// See https://github.com/mui/mui-x/issues/4513 and https://github.com/mui/mui-x/issues/4514
|
|
41
|
+
|
|
42
|
+
if (offsetHeight > clientHeight) {
|
|
43
|
+
return offsetTop;
|
|
44
|
+
}
|
|
40
45
|
|
|
41
46
|
if (elementBottom - clientHeight > scrollTop) {
|
|
42
47
|
return elementBottom - clientHeight;
|
|
@@ -11,8 +11,6 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
|
|
|
11
11
|
|
|
12
12
|
var React = _interopRequireWildcard(require("react"));
|
|
13
13
|
|
|
14
|
-
var _events = require("../../../models/events");
|
|
15
|
-
|
|
16
14
|
var _useGridApiEventHandler = require("../../utils/useGridApiEventHandler");
|
|
17
15
|
|
|
18
16
|
var _useGridApiMethod = require("../../utils/useGridApiMethod");
|
|
@@ -87,7 +85,7 @@ const useGridSelection = (apiRef, props) => {
|
|
|
87
85
|
propModel: propSelectionModel,
|
|
88
86
|
propOnChange: props.onSelectionModelChange,
|
|
89
87
|
stateSelector: _gridSelectionSelector.gridSelectionStateSelector,
|
|
90
|
-
changeEvent:
|
|
88
|
+
changeEvent: 'selectionChange'
|
|
91
89
|
});
|
|
92
90
|
const {
|
|
93
91
|
checkboxSelection,
|
|
@@ -228,6 +226,10 @@ const useGridSelection = (apiRef, props) => {
|
|
|
228
226
|
*/
|
|
229
227
|
|
|
230
228
|
const removeOutdatedSelection = React.useCallback(() => {
|
|
229
|
+
if (props.keepNonExistentRowsSelected) {
|
|
230
|
+
return;
|
|
231
|
+
}
|
|
232
|
+
|
|
231
233
|
const currentSelection = (0, _gridSelectionSelector.gridSelectionStateSelector)(apiRef.current.state);
|
|
232
234
|
const rowsLookup = (0, _gridRowsSelector.gridRowsLookupSelector)(apiRef); // We clone the existing object to avoid mutating the same object returned by the selector to others part of the project
|
|
233
235
|
|
|
@@ -243,12 +245,12 @@ const useGridSelection = (apiRef, props) => {
|
|
|
243
245
|
if (hasChanged) {
|
|
244
246
|
apiRef.current.setSelectionModel(Object.values(selectionLookup));
|
|
245
247
|
}
|
|
246
|
-
}, [apiRef]);
|
|
248
|
+
}, [apiRef, props.keepNonExistentRowsSelected]);
|
|
247
249
|
const handleSingleRowSelection = React.useCallback((id, event) => {
|
|
248
250
|
const hasCtrlKey = event.metaKey || event.ctrlKey; // multiple selection is only allowed if:
|
|
249
251
|
// - it is a checkboxSelection
|
|
250
252
|
// - it is a keyboard selection
|
|
251
|
-
// -
|
|
253
|
+
// - Ctrl is pressed
|
|
252
254
|
|
|
253
255
|
const isMultipleSelectionDisabled = !checkboxSelection && !hasCtrlKey && !(0, _keyboardUtils.isKeyboardEvent)(event);
|
|
254
256
|
const resetSelection = !canHaveMultipleSelection || isMultipleSelectionDisabled;
|
|
@@ -378,12 +380,12 @@ const useGridSelection = (apiRef, props) => {
|
|
|
378
380
|
selectRows(apiRef.current.getAllRowIds(), true);
|
|
379
381
|
}
|
|
380
382
|
}, [apiRef, handleSingleRowSelection, selectRows, visibleRows.rows, canHaveMultipleSelection]);
|
|
381
|
-
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef,
|
|
382
|
-
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef,
|
|
383
|
-
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef,
|
|
384
|
-
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef,
|
|
385
|
-
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef,
|
|
386
|
-
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef,
|
|
383
|
+
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'sortedRowsSet', removeOutdatedSelection);
|
|
384
|
+
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'cellClick', handleCellClick);
|
|
385
|
+
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'rowSelectionCheckboxChange', handleRowSelectionCheckboxChange);
|
|
386
|
+
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'headerSelectionCheckboxChange', handleHeaderSelectionCheckboxChange);
|
|
387
|
+
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'cellMouseDown', preventSelectionOnShift);
|
|
388
|
+
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'cellKeyDown', handleCellKeyDown);
|
|
387
389
|
/**
|
|
388
390
|
* EFFECTS
|
|
389
391
|
*/
|
|
@@ -11,8 +11,6 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
|
|
|
11
11
|
|
|
12
12
|
var React = _interopRequireWildcard(require("react"));
|
|
13
13
|
|
|
14
|
-
var _events = require("../../../models/events");
|
|
15
|
-
|
|
16
14
|
var _gridFeatureMode = require("../../../models/gridFeatureMode");
|
|
17
15
|
|
|
18
16
|
var _keyboardUtils = require("../../../utils/keyboardUtils");
|
|
@@ -67,7 +65,7 @@ const useGridSorting = (apiRef, props) => {
|
|
|
67
65
|
propModel: props.sortModel,
|
|
68
66
|
propOnChange: props.onSortModelChange,
|
|
69
67
|
stateSelector: _gridSortingSelector.gridSortModelSelector,
|
|
70
|
-
changeEvent:
|
|
68
|
+
changeEvent: 'sortModelChange'
|
|
71
69
|
});
|
|
72
70
|
const upsertSortModel = React.useCallback((field, sortItem) => {
|
|
73
71
|
const sortModel = (0, _gridSortingSelector.gridSortModelSelector)(apiRef);
|
|
@@ -132,7 +130,7 @@ const useGridSorting = (apiRef, props) => {
|
|
|
132
130
|
})
|
|
133
131
|
});
|
|
134
132
|
});
|
|
135
|
-
apiRef.current.publishEvent(
|
|
133
|
+
apiRef.current.publishEvent('sortedRowsSet');
|
|
136
134
|
apiRef.current.forceUpdate();
|
|
137
135
|
}, [apiRef, logger, props.sortingMode]);
|
|
138
136
|
const setSortModel = React.useCallback(model => {
|
|
@@ -235,7 +233,7 @@ const useGridSorting = (apiRef, props) => {
|
|
|
235
233
|
const handleColumnHeaderKeyDown = React.useCallback(({
|
|
236
234
|
colDef
|
|
237
235
|
}, event) => {
|
|
238
|
-
//
|
|
236
|
+
// Ctrl + Enter opens the column menu
|
|
239
237
|
if ((0, _keyboardUtils.isEnterKey)(event.key) && !event.ctrlKey && !event.metaKey) {
|
|
240
238
|
sortColumn(colDef, undefined, event.shiftKey);
|
|
241
239
|
}
|
|
@@ -258,11 +256,11 @@ const useGridSorting = (apiRef, props) => {
|
|
|
258
256
|
apiRef.current.applySorting();
|
|
259
257
|
}
|
|
260
258
|
}, [apiRef]);
|
|
261
|
-
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef,
|
|
262
|
-
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef,
|
|
263
|
-
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef,
|
|
264
|
-
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef,
|
|
265
|
-
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef,
|
|
259
|
+
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'columnHeaderClick', handleColumnHeaderClick);
|
|
260
|
+
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'columnHeaderKeyDown', handleColumnHeaderKeyDown);
|
|
261
|
+
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'rowsSet', apiRef.current.applySorting);
|
|
262
|
+
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'columnsChange', handleColumnsChange);
|
|
263
|
+
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'activeStrategyProcessorChange', handleStrategyProcessorChange);
|
|
266
264
|
/**
|
|
267
265
|
* 1ST RENDER
|
|
268
266
|
*/
|
|
@@ -34,8 +34,6 @@ var _gridEditRowsSelector = require("../editRows/gridEditRowsSelector");
|
|
|
34
34
|
|
|
35
35
|
var _useGridVisibleRows = require("../../utils/useGridVisibleRows");
|
|
36
36
|
|
|
37
|
-
var _events = require("../../../models/events");
|
|
38
|
-
|
|
39
37
|
var _useGridApiEventHandler = require("../../utils/useGridApiEventHandler");
|
|
40
38
|
|
|
41
39
|
var _utils2 = require("../../../utils/utils");
|
|
@@ -155,7 +153,7 @@ const useGridVirtualScroller = props => {
|
|
|
155
153
|
setContainerWidth(rootRef.current.clientWidth);
|
|
156
154
|
}
|
|
157
155
|
}, []);
|
|
158
|
-
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef,
|
|
156
|
+
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'resize', handleResize);
|
|
159
157
|
const updateRenderZonePosition = React.useCallback(nextRenderContext => {
|
|
160
158
|
const [firstRowToRender, lastRowToRender] = getRenderableIndexes({
|
|
161
159
|
firstIndex: nextRenderContext.firstRowIndex,
|
|
@@ -215,7 +213,7 @@ const useGridVirtualScroller = props => {
|
|
|
215
213
|
left,
|
|
216
214
|
renderContext: initialRenderContext
|
|
217
215
|
};
|
|
218
|
-
apiRef.current.publishEvent(
|
|
216
|
+
apiRef.current.publishEvent('rowsScroll', params);
|
|
219
217
|
}, [apiRef, computeRenderContext, containerWidth, updateRenderContext]);
|
|
220
218
|
|
|
221
219
|
const handleScroll = event => {
|
|
@@ -238,7 +236,7 @@ const useGridVirtualScroller = props => {
|
|
|
238
236
|
const bottomColumnsScrolledSincePreviousRender = Math.abs(nextRenderContext.lastColumnIndex - prevRenderContext.current.lastColumnIndex);
|
|
239
237
|
const shouldSetState = topRowsScrolledSincePreviousRender >= rootProps.rowThreshold || bottomRowsScrolledSincePreviousRender >= rootProps.rowThreshold || topColumnsScrolledSincePreviousRender >= rootProps.columnThreshold || bottomColumnsScrolledSincePreviousRender >= rootProps.columnThreshold || prevTotalWidth.current !== columnsTotalWidth; // TODO v6: rename event to a wider name, it's not only fired for row scrolling
|
|
240
238
|
|
|
241
|
-
apiRef.current.publishEvent(
|
|
239
|
+
apiRef.current.publishEvent('rowsScroll', {
|
|
242
240
|
top: scrollTop,
|
|
243
241
|
left: scrollLeft,
|
|
244
242
|
renderContext: shouldSetState ? nextRenderContext : prevRenderContext.current
|
|
@@ -253,6 +251,14 @@ const useGridVirtualScroller = props => {
|
|
|
253
251
|
}
|
|
254
252
|
};
|
|
255
253
|
|
|
254
|
+
const handleWheel = event => {
|
|
255
|
+
apiRef.current.publishEvent('virtualScrollerWheel', {}, event);
|
|
256
|
+
};
|
|
257
|
+
|
|
258
|
+
const handleTouchMove = event => {
|
|
259
|
+
apiRef.current.publishEvent('virtualScrollerTouchMove', {}, event);
|
|
260
|
+
};
|
|
261
|
+
|
|
256
262
|
const getRows = (params = {
|
|
257
263
|
renderContext
|
|
258
264
|
}) => {
|
|
@@ -373,7 +379,7 @@ const useGridVirtualScroller = props => {
|
|
|
373
379
|
return size;
|
|
374
380
|
}, [rootRef, columnsTotalWidth, rowsMeta.currentPageTotalHeight, currentPage.rows.length, needsHorizontalScrollbar, rootProps.autoHeight, rowHeight]);
|
|
375
381
|
React.useEffect(() => {
|
|
376
|
-
apiRef.current.publishEvent(
|
|
382
|
+
apiRef.current.publishEvent('virtualScrollerContentSizeChange');
|
|
377
383
|
}, [apiRef, contentSize]);
|
|
378
384
|
|
|
379
385
|
if (rootProps.autoHeight && currentPage.rows.length === 0) {
|
|
@@ -402,6 +408,8 @@ const useGridVirtualScroller = props => {
|
|
|
402
408
|
return (0, _extends2.default)({
|
|
403
409
|
ref: handleRef,
|
|
404
410
|
onScroll: handleScroll,
|
|
411
|
+
onWheel: handleWheel,
|
|
412
|
+
onTouchMove: handleTouchMove,
|
|
405
413
|
style: (0, _extends2.default)({}, style, rootStyle)
|
|
406
414
|
}, other);
|
|
407
415
|
},
|