@mui/x-data-grid 5.10.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 +163 -10
- package/DataGrid/DataGrid.js +35 -1
- package/DataGrid/useDataGridProps.js +2 -1
- package/README.md +1 -1
- 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 +4 -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 +1 -2
- 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/GridToolbarContainer.d.ts +8 -2
- package/components/containers/GridToolbarContainer.js +12 -2
- 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/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/GridVirtualScrollerContent.d.ts +4 -1
- package/components/virtualization/GridVirtualScrollerRenderZone.d.ts +4 -1
- package/constants/localeTextConstants.js +5 -0
- package/hooks/core/pipeProcessing/gridPipeProcessingApi.d.ts +7 -0
- 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 -4
- package/hooks/features/columns/useGridColumnSpanning.js +1 -2
- 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 +3 -7
- package/hooks/features/rows/gridRowsUtils.d.ts +2 -1
- package/hooks/features/rows/gridRowsUtils.js +25 -1
- package/hooks/features/rows/useGridRows.js +100 -60
- 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.js +6 -7
- 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 +4 -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 +1 -2
- 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/GridToolbarContainer.js +12 -2
- 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 +103 -0
- package/legacy/components/toolbar/index.js +3 -2
- package/legacy/constants/localeTextConstants.js +5 -0
- 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 -4
- 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 +27 -1
- package/legacy/hooks/features/rows/useGridRows.js +104 -60
- 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 +6 -7
- 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 +5 -0
- package/legacy/locales/bgBG.js +5 -0
- package/legacy/locales/csCZ.js +5 -0
- package/legacy/locales/daDK.js +5 -0
- package/legacy/locales/deDE.js +10 -5
- package/legacy/locales/elGR.js +5 -0
- package/legacy/locales/esES.js +5 -0
- package/legacy/locales/faIR.js +5 -0
- package/legacy/locales/fiFI.js +5 -0
- package/legacy/locales/frFR.js +5 -0
- package/legacy/locales/heIL.js +5 -0
- package/legacy/locales/huHU.js +5 -0
- package/legacy/locales/itIT.js +5 -0
- package/legacy/locales/jaJP.js +5 -0
- package/legacy/locales/koKR.js +5 -0
- package/legacy/locales/nlNL.js +5 -0
- package/legacy/locales/plPL.js +5 -0
- package/legacy/locales/ptBR.js +5 -0
- package/legacy/locales/ruRU.js +5 -0
- package/legacy/locales/skSK.js +5 -0
- package/legacy/locales/trTR.js +5 -0
- package/legacy/locales/ukUA.js +5 -0
- package/legacy/locales/viVN.js +5 -0
- package/legacy/locales/zhCN.js +5 -0
- package/legacy/models/events/gridEvents.js +2 -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 +5 -0
- package/locales/bgBG.js +5 -0
- package/locales/csCZ.js +5 -0
- package/locales/daDK.js +5 -0
- package/locales/deDE.js +10 -5
- package/locales/elGR.js +5 -0
- package/locales/esES.js +5 -0
- package/locales/faIR.js +5 -0
- package/locales/fiFI.js +5 -0
- package/locales/frFR.js +5 -0
- package/locales/heIL.js +5 -0
- package/locales/huHU.js +5 -0
- package/locales/itIT.js +5 -0
- package/locales/jaJP.js +5 -0
- package/locales/koKR.js +5 -0
- package/locales/nlNL.js +5 -0
- package/locales/plPL.js +5 -0
- package/locales/ptBR.js +5 -0
- package/locales/ruRU.js +5 -0
- package/locales/skSK.js +5 -0
- package/locales/trTR.js +5 -0
- package/locales/ukUA.js +5 -0
- package/locales/viVN.js +5 -0
- package/locales/zhCN.js +5 -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 +4 -0
- package/models/api/gridRowApi.d.ts +28 -0
- package/models/api/index.d.ts +1 -1
- package/models/colDef/gridColDef.d.ts +13 -0
- package/models/events/gridEventLookup.d.ts +273 -3
- package/models/events/gridEvents.d.ts +2 -277
- package/models/events/gridEvents.js +2 -0
- package/models/gridExport.d.ts +29 -2
- package/models/gridFilterModel.d.ts +11 -0
- package/models/gridFilterOperator.d.ts +1 -1
- 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 +4 -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 +1 -2
- 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/GridToolbarContainer.js +12 -2
- 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 +86 -0
- package/modern/components/toolbar/index.js +3 -2
- package/modern/constants/localeTextConstants.js +5 -0
- 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 -4
- 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 +23 -1
- package/modern/hooks/features/rows/useGridRows.js +100 -60
- 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 +6 -7
- 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 +5 -0
- package/modern/locales/bgBG.js +5 -0
- package/modern/locales/csCZ.js +5 -0
- package/modern/locales/daDK.js +5 -0
- package/modern/locales/deDE.js +10 -5
- package/modern/locales/elGR.js +5 -0
- package/modern/locales/esES.js +5 -0
- package/modern/locales/faIR.js +5 -0
- package/modern/locales/fiFI.js +5 -0
- package/modern/locales/frFR.js +5 -0
- package/modern/locales/heIL.js +5 -0
- package/modern/locales/huHU.js +5 -0
- package/modern/locales/itIT.js +5 -0
- package/modern/locales/jaJP.js +5 -0
- package/modern/locales/koKR.js +5 -0
- package/modern/locales/nlNL.js +5 -0
- package/modern/locales/plPL.js +5 -0
- package/modern/locales/ptBR.js +5 -0
- package/modern/locales/ruRU.js +5 -0
- package/modern/locales/skSK.js +5 -0
- package/modern/locales/trTR.js +5 -0
- package/modern/locales/ukUA.js +5 -0
- package/modern/locales/viVN.js +5 -0
- package/modern/locales/zhCN.js +5 -0
- package/modern/models/events/gridEvents.js +2 -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 +4 -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 +1 -3
- 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/GridToolbarContainer.js +11 -1
- 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 +111 -0
- package/node/components/toolbar/index.js +42 -11
- package/node/constants/localeTextConstants.js +5 -0
- 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 -5
- 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 +29 -1
- package/node/hooks/features/rows/useGridRows.js +101 -60
- 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 +6 -8
- 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 +5 -0
- package/node/locales/bgBG.js +5 -0
- package/node/locales/csCZ.js +5 -0
- package/node/locales/daDK.js +5 -0
- package/node/locales/deDE.js +10 -5
- package/node/locales/elGR.js +5 -0
- package/node/locales/esES.js +5 -0
- package/node/locales/faIR.js +5 -0
- package/node/locales/fiFI.js +5 -0
- package/node/locales/frFR.js +5 -0
- package/node/locales/heIL.js +5 -0
- package/node/locales/huHU.js +5 -0
- package/node/locales/itIT.js +5 -0
- package/node/locales/jaJP.js +5 -0
- package/node/locales/koKR.js +5 -0
- package/node/locales/nlNL.js +5 -0
- package/node/locales/plPL.js +5 -0
- package/node/locales/ptBR.js +5 -0
- package/node/locales/ruRU.js +5 -0
- package/node/locales/skSK.js +5 -0
- package/node/locales/trTR.js +5 -0
- package/node/locales/ukUA.js +5 -0
- package/node/locales/viVN.js +5 -0
- package/node/locales/zhCN.js +5 -0
- package/node/models/events/gridEvents.js +2 -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 +1 -1
- 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
|
@@ -2,13 +2,14 @@ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
|
2
2
|
import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
|
|
3
3
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
4
4
|
import * as React from 'react';
|
|
5
|
-
import { GridEvents } from '../../../models/events';
|
|
6
5
|
import { useGridApiMethod } from '../../utils/useGridApiMethod';
|
|
7
6
|
import { useGridLogger } from '../../utils/useGridLogger';
|
|
8
7
|
import { gridRowCountSelector, gridRowsLookupSelector, gridRowTreeSelector, gridRowIdsSelector, gridRowGroupingNameSelector } from './gridRowsSelector';
|
|
9
8
|
import { GridSignature, useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
|
|
10
9
|
import { useGridVisibleRows } from '../../utils/useGridVisibleRows';
|
|
11
|
-
import {
|
|
10
|
+
import { gridSortedRowIdsSelector } from '../sorting/gridSortingSelector';
|
|
11
|
+
import { gridFilteredRowsLookupSelector } from '../filter/gridFilterSelector';
|
|
12
|
+
import { checkGridRowIdIsValid, getTreeNodeDescendants } from './gridRowsUtils';
|
|
12
13
|
|
|
13
14
|
function getGridRowId(rowModel, getRowId, detailErrorMessage) {
|
|
14
15
|
var id = getRowId ? getRowId(rowModel) : rowModel.id;
|
|
@@ -16,8 +17,8 @@ function getGridRowId(rowModel, getRowId, detailErrorMessage) {
|
|
|
16
17
|
return id;
|
|
17
18
|
}
|
|
18
19
|
|
|
19
|
-
var
|
|
20
|
-
var prevState = _ref.
|
|
20
|
+
var convertRowsPropToState = function convertRowsPropToState(_ref) {
|
|
21
|
+
var prevState = _ref.prevCache,
|
|
21
22
|
rows = _ref.rows,
|
|
22
23
|
getRowId = _ref.getRowId;
|
|
23
24
|
var value;
|
|
@@ -25,6 +26,7 @@ var convertGridRowsPropToState = function convertGridRowsPropToState(_ref) {
|
|
|
25
26
|
if (rows) {
|
|
26
27
|
value = {
|
|
27
28
|
idRowsLookup: {},
|
|
29
|
+
idToIdLookup: {},
|
|
28
30
|
ids: []
|
|
29
31
|
};
|
|
30
32
|
|
|
@@ -32,6 +34,7 @@ var convertGridRowsPropToState = function convertGridRowsPropToState(_ref) {
|
|
|
32
34
|
var row = rows[i];
|
|
33
35
|
var id = getGridRowId(row, getRowId);
|
|
34
36
|
value.idRowsLookup[id] = row;
|
|
37
|
+
value.idToIdLookup[id] = id;
|
|
35
38
|
value.ids.push(id);
|
|
36
39
|
}
|
|
37
40
|
} else {
|
|
@@ -45,7 +48,7 @@ var convertGridRowsPropToState = function convertGridRowsPropToState(_ref) {
|
|
|
45
48
|
};
|
|
46
49
|
|
|
47
50
|
var getRowsStateFromCache = function getRowsStateFromCache(rowsCache, previousTree, apiRef, rowCountProp, loadingProp) {
|
|
48
|
-
var value = rowsCache.
|
|
51
|
+
var value = rowsCache.value;
|
|
49
52
|
var rowCount = rowCountProp != null ? rowCountProp : 0;
|
|
50
53
|
var groupingResponse = apiRef.current.unstable_applyStrategyProcessor('rowTreeCreation', _extends({}, value, {
|
|
51
54
|
previousTree: previousTree
|
|
@@ -61,25 +64,20 @@ var getRowsStateFromCache = function getRowsStateFromCache(rowsCache, previousTr
|
|
|
61
64
|
};
|
|
62
65
|
|
|
63
66
|
export var rowsStateInitializer = function rowsStateInitializer(state, props, apiRef) {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
timeout: null,
|
|
77
|
-
lastUpdateMs: Date.now()
|
|
78
|
-
};
|
|
67
|
+
apiRef.current.unstable_caches.rows = convertRowsPropToState({
|
|
68
|
+
rows: props.rows,
|
|
69
|
+
getRowId: props.getRowId,
|
|
70
|
+
prevCache: {
|
|
71
|
+
value: {
|
|
72
|
+
idRowsLookup: {},
|
|
73
|
+
idToIdLookup: {},
|
|
74
|
+
ids: []
|
|
75
|
+
},
|
|
76
|
+
rowsBeforePartialUpdates: []
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
79
|
return _extends({}, state, {
|
|
80
|
-
rows: getRowsStateFromCache(
|
|
81
|
-
rowsCache: rowsCache // TODO remove from state
|
|
82
|
-
|
|
80
|
+
rows: getRowsStateFromCache(apiRef.current.unstable_caches.rows, null, apiRef, props.rowCount, props.loading)
|
|
83
81
|
});
|
|
84
82
|
};
|
|
85
83
|
export var useGridRows = function useGridRows(apiRef, props) {
|
|
@@ -89,9 +87,9 @@ export var useGridRows = function useGridRows(apiRef, props) {
|
|
|
89
87
|
}
|
|
90
88
|
|
|
91
89
|
var logger = useGridLogger(apiRef, 'useGridRows');
|
|
92
|
-
var rowsCache = React.useRef(apiRef.current.state.rowsCache); // To avoid listing rowsCache as useEffect dep
|
|
93
|
-
|
|
94
90
|
var currentPage = useGridVisibleRows(apiRef, props);
|
|
91
|
+
var lastUpdateMs = React.useRef(Date.now());
|
|
92
|
+
var timeout = React.useRef(null);
|
|
95
93
|
var getRow = React.useCallback(function (id) {
|
|
96
94
|
var _ref2;
|
|
97
95
|
|
|
@@ -104,35 +102,35 @@ export var useGridRows = function useGridRows(apiRef, props) {
|
|
|
104
102
|
return acc;
|
|
105
103
|
}, {});
|
|
106
104
|
}, [currentPage.rows]);
|
|
107
|
-
var throttledRowsChange = React.useCallback(function (
|
|
105
|
+
var throttledRowsChange = React.useCallback(function (newCache, throttle) {
|
|
108
106
|
var run = function run() {
|
|
109
|
-
|
|
110
|
-
|
|
107
|
+
timeout.current = null;
|
|
108
|
+
lastUpdateMs.current = Date.now();
|
|
111
109
|
apiRef.current.setState(function (state) {
|
|
112
110
|
return _extends({}, state, {
|
|
113
|
-
rows: getRowsStateFromCache(
|
|
111
|
+
rows: getRowsStateFromCache(apiRef.current.unstable_caches.rows, gridRowTreeSelector(apiRef), apiRef, props.rowCount, props.loading)
|
|
114
112
|
});
|
|
115
113
|
});
|
|
116
|
-
apiRef.current.publishEvent(
|
|
114
|
+
apiRef.current.publishEvent('rowsSet');
|
|
117
115
|
apiRef.current.forceUpdate();
|
|
118
116
|
};
|
|
119
117
|
|
|
120
|
-
if (
|
|
121
|
-
clearTimeout(
|
|
118
|
+
if (timeout.current) {
|
|
119
|
+
clearTimeout(timeout.current);
|
|
120
|
+
timeout.current = null;
|
|
122
121
|
}
|
|
123
122
|
|
|
124
|
-
|
|
125
|
-
rowsCache.current.timeout = null;
|
|
123
|
+
apiRef.current.unstable_caches.rows = newCache;
|
|
126
124
|
|
|
127
125
|
if (!throttle) {
|
|
128
126
|
run();
|
|
129
127
|
return;
|
|
130
128
|
}
|
|
131
129
|
|
|
132
|
-
var throttleRemainingTimeMs = props.throttleRowsMs - (Date.now() -
|
|
130
|
+
var throttleRemainingTimeMs = props.throttleRowsMs - (Date.now() - lastUpdateMs.current);
|
|
133
131
|
|
|
134
132
|
if (throttleRemainingTimeMs > 0) {
|
|
135
|
-
|
|
133
|
+
timeout.current = setTimeout(run, throttleRemainingTimeMs);
|
|
136
134
|
return;
|
|
137
135
|
}
|
|
138
136
|
|
|
@@ -144,12 +142,12 @@ export var useGridRows = function useGridRows(apiRef, props) {
|
|
|
144
142
|
|
|
145
143
|
var setRows = React.useCallback(function (rows) {
|
|
146
144
|
logger.debug("Updating all rows, new length ".concat(rows.length));
|
|
147
|
-
throttledRowsChange(
|
|
145
|
+
throttledRowsChange(convertRowsPropToState({
|
|
148
146
|
rows: rows,
|
|
149
|
-
|
|
147
|
+
prevCache: apiRef.current.unstable_caches.rows,
|
|
150
148
|
getRowId: props.getRowId
|
|
151
149
|
}), true);
|
|
152
|
-
}, [logger, props.getRowId, throttledRowsChange]);
|
|
150
|
+
}, [apiRef, logger, props.getRowId, throttledRowsChange]);
|
|
153
151
|
var updateRows = React.useCallback(function (updates) {
|
|
154
152
|
if (props.signature === GridSignature.DataGrid && updates.length > 1) {
|
|
155
153
|
// TODO: Add test with direct call to `apiRef.current.updateRows` in DataGrid after enabling the `apiRef` on the free plan.
|
|
@@ -169,13 +167,15 @@ export var useGridRows = function useGridRows(apiRef, props) {
|
|
|
169
167
|
});
|
|
170
168
|
var deletedRowIds = [];
|
|
171
169
|
var newStateValue = {
|
|
172
|
-
idRowsLookup: _extends({},
|
|
173
|
-
|
|
170
|
+
idRowsLookup: _extends({}, apiRef.current.unstable_caches.rows.value.idRowsLookup),
|
|
171
|
+
idToIdLookup: _extends({}, apiRef.current.unstable_caches.rows.value.idToIdLookup),
|
|
172
|
+
ids: _toConsumableArray(apiRef.current.unstable_caches.rows.value.ids)
|
|
174
173
|
};
|
|
175
174
|
uniqUpdates.forEach(function (partialRow, id) {
|
|
176
175
|
// eslint-disable-next-line no-underscore-dangle
|
|
177
176
|
if (partialRow._action === 'delete') {
|
|
178
177
|
delete newStateValue.idRowsLookup[id];
|
|
178
|
+
delete newStateValue.idToIdLookup[id];
|
|
179
179
|
deletedRowIds.push(id);
|
|
180
180
|
return;
|
|
181
181
|
}
|
|
@@ -184,6 +184,7 @@ export var useGridRows = function useGridRows(apiRef, props) {
|
|
|
184
184
|
|
|
185
185
|
if (!oldRow) {
|
|
186
186
|
newStateValue.idRowsLookup[id] = partialRow;
|
|
187
|
+
newStateValue.idToIdLookup[id] = id;
|
|
187
188
|
newStateValue.ids.push(id);
|
|
188
189
|
return;
|
|
189
190
|
}
|
|
@@ -197,12 +198,12 @@ export var useGridRows = function useGridRows(apiRef, props) {
|
|
|
197
198
|
});
|
|
198
199
|
}
|
|
199
200
|
|
|
200
|
-
var state = _extends({},
|
|
201
|
+
var state = _extends({}, apiRef.current.unstable_caches.rows, {
|
|
201
202
|
value: newStateValue
|
|
202
203
|
});
|
|
203
204
|
|
|
204
205
|
throttledRowsChange(state, true);
|
|
205
|
-
}, [
|
|
206
|
+
}, [props.signature, props.getRowId, throttledRowsChange, apiRef]);
|
|
206
207
|
var getRowModels = React.useCallback(function () {
|
|
207
208
|
var allRows = gridRowIdsSelector(apiRef);
|
|
208
209
|
var idRowsLookup = gridRowsLookupSelector(apiRef);
|
|
@@ -238,20 +239,63 @@ export var useGridRows = function useGridRows(apiRef, props) {
|
|
|
238
239
|
});
|
|
239
240
|
});
|
|
240
241
|
apiRef.current.forceUpdate();
|
|
241
|
-
apiRef.current.publishEvent(
|
|
242
|
+
apiRef.current.publishEvent('rowExpansionChange', newNode);
|
|
242
243
|
}, [apiRef]);
|
|
243
244
|
var getRowNode = React.useCallback(function (id) {
|
|
244
245
|
var _gridRowTreeSelector$;
|
|
245
246
|
|
|
246
247
|
return (_gridRowTreeSelector$ = gridRowTreeSelector(apiRef)[id]) != null ? _gridRowTreeSelector$ : null;
|
|
247
248
|
}, [apiRef]);
|
|
249
|
+
var getRowGroupChildren = React.useCallback(function (_ref4) {
|
|
250
|
+
var _ref4$skipAutoGenerat = _ref4.skipAutoGeneratedRows,
|
|
251
|
+
skipAutoGeneratedRows = _ref4$skipAutoGenerat === void 0 ? true : _ref4$skipAutoGenerat,
|
|
252
|
+
groupId = _ref4.groupId,
|
|
253
|
+
applySorting = _ref4.applySorting,
|
|
254
|
+
applyFiltering = _ref4.applyFiltering;
|
|
255
|
+
var tree = gridRowTreeSelector(apiRef);
|
|
256
|
+
var children;
|
|
257
|
+
|
|
258
|
+
if (applySorting) {
|
|
259
|
+
var groupNode = tree[groupId];
|
|
260
|
+
|
|
261
|
+
if (!groupNode) {
|
|
262
|
+
return [];
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
var sortedRowIds = gridSortedRowIdsSelector(apiRef);
|
|
266
|
+
children = [];
|
|
267
|
+
var startIndex = sortedRowIds.findIndex(function (id) {
|
|
268
|
+
return id === groupId;
|
|
269
|
+
}) + 1;
|
|
270
|
+
|
|
271
|
+
for (var index = startIndex; index < sortedRowIds.length && tree[sortedRowIds[index]].depth > groupNode.depth; index += 1) {
|
|
272
|
+
var id = sortedRowIds[index];
|
|
273
|
+
var node = tree[id];
|
|
274
|
+
|
|
275
|
+
if (!skipAutoGeneratedRows || !node.isAutoGenerated) {
|
|
276
|
+
children.push(id);
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
} else {
|
|
280
|
+
children = getTreeNodeDescendants(tree, groupId, skipAutoGeneratedRows);
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
if (applyFiltering) {
|
|
284
|
+
var filteredRowsLookup = gridFilteredRowsLookupSelector(apiRef);
|
|
285
|
+
children = children.filter(function (childId) {
|
|
286
|
+
return filteredRowsLookup[childId] !== false;
|
|
287
|
+
});
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
return children;
|
|
291
|
+
}, [apiRef]);
|
|
248
292
|
var setRowIndex = React.useCallback(function (rowId, targetIndex) {
|
|
249
293
|
var allRows = gridRowIdsSelector(apiRef);
|
|
250
294
|
var oldIndex = allRows.findIndex(function (row) {
|
|
251
295
|
return row === rowId;
|
|
252
296
|
});
|
|
253
297
|
|
|
254
|
-
if (oldIndex === targetIndex) {
|
|
298
|
+
if (oldIndex === -1 || oldIndex === targetIndex) {
|
|
255
299
|
return;
|
|
256
300
|
}
|
|
257
301
|
|
|
@@ -279,7 +323,8 @@ export var useGridRows = function useGridRows(apiRef, props) {
|
|
|
279
323
|
updateRows: updateRows,
|
|
280
324
|
setRowChildrenExpansion: setRowChildrenExpansion,
|
|
281
325
|
getRowNode: getRowNode,
|
|
282
|
-
getRowIndexRelativeToVisibleRows: getRowIndexRelativeToVisibleRows
|
|
326
|
+
getRowIndexRelativeToVisibleRows: getRowIndexRelativeToVisibleRows,
|
|
327
|
+
getRowGroupChildren: getRowGroupChildren
|
|
283
328
|
};
|
|
284
329
|
/**
|
|
285
330
|
* EVENTS
|
|
@@ -289,7 +334,7 @@ export var useGridRows = function useGridRows(apiRef, props) {
|
|
|
289
334
|
logger.info("Row grouping pre-processing have changed, regenerating the row tree");
|
|
290
335
|
var rows;
|
|
291
336
|
|
|
292
|
-
if (
|
|
337
|
+
if (apiRef.current.unstable_caches.rows.rowsBeforePartialUpdates === props.rows) {
|
|
293
338
|
// The `props.rows` has not changed since the last row grouping
|
|
294
339
|
// We can keep the potential updates stored in `inputRowsAfterUpdates` on the new grouping
|
|
295
340
|
rows = undefined;
|
|
@@ -300,12 +345,12 @@ export var useGridRows = function useGridRows(apiRef, props) {
|
|
|
300
345
|
rows = props.rows;
|
|
301
346
|
}
|
|
302
347
|
|
|
303
|
-
throttledRowsChange(
|
|
348
|
+
throttledRowsChange(convertRowsPropToState({
|
|
304
349
|
rows: rows,
|
|
305
350
|
getRowId: props.getRowId,
|
|
306
|
-
|
|
351
|
+
prevCache: apiRef.current.unstable_caches.rows
|
|
307
352
|
}), false);
|
|
308
|
-
}, [logger,
|
|
353
|
+
}, [logger, apiRef, props.rows, props.getRowId, throttledRowsChange]);
|
|
309
354
|
var handleStrategyProcessorChange = React.useCallback(function (methodName) {
|
|
310
355
|
if (methodName === 'rowTreeCreation') {
|
|
311
356
|
groupRows();
|
|
@@ -318,8 +363,8 @@ export var useGridRows = function useGridRows(apiRef, props) {
|
|
|
318
363
|
groupRows();
|
|
319
364
|
}
|
|
320
365
|
}, [apiRef, groupRows]);
|
|
321
|
-
useGridApiEventHandler(apiRef,
|
|
322
|
-
useGridApiEventHandler(apiRef,
|
|
366
|
+
useGridApiEventHandler(apiRef, 'activeStrategyProcessorChange', handleStrategyProcessorChange);
|
|
367
|
+
useGridApiEventHandler(apiRef, 'strategyAvailabilityChange', handleStrategyActivityChange);
|
|
323
368
|
useGridApiMethod(apiRef, rowApi, 'GridRowApi');
|
|
324
369
|
/**
|
|
325
370
|
* EFFECTS
|
|
@@ -327,9 +372,8 @@ export var useGridRows = function useGridRows(apiRef, props) {
|
|
|
327
372
|
|
|
328
373
|
React.useEffect(function () {
|
|
329
374
|
return function () {
|
|
330
|
-
if (
|
|
331
|
-
|
|
332
|
-
clearTimeout(rowsCache.current.timeout);
|
|
375
|
+
if (timeout.current !== null) {
|
|
376
|
+
clearTimeout(timeout.current);
|
|
333
377
|
}
|
|
334
378
|
};
|
|
335
379
|
}, []); // The effect do not track any value defined synchronously during the 1st render by hooks called after `useGridRows`
|
|
@@ -340,18 +384,18 @@ export var useGridRows = function useGridRows(apiRef, props) {
|
|
|
340
384
|
if (isFirstRender.current) {
|
|
341
385
|
isFirstRender.current = false;
|
|
342
386
|
return;
|
|
343
|
-
} // The new rows have already been applied (most likely in the `
|
|
387
|
+
} // The new rows have already been applied (most likely in the `'rowGroupsPreProcessingChange'` listener)
|
|
344
388
|
|
|
345
389
|
|
|
346
|
-
if (
|
|
390
|
+
if (apiRef.current.unstable_caches.rows.rowsBeforePartialUpdates === props.rows) {
|
|
347
391
|
return;
|
|
348
392
|
}
|
|
349
393
|
|
|
350
394
|
logger.debug("Updating all rows, new length ".concat(props.rows.length));
|
|
351
|
-
throttledRowsChange(
|
|
395
|
+
throttledRowsChange(convertRowsPropToState({
|
|
352
396
|
rows: props.rows,
|
|
353
397
|
getRowId: props.getRowId,
|
|
354
|
-
|
|
398
|
+
prevCache: apiRef.current.unstable_caches.rows
|
|
355
399
|
}), false);
|
|
356
|
-
}, [props.rows, props.rowCount, props.getRowId, logger, throttledRowsChange]);
|
|
400
|
+
}, [props.rows, props.rowCount, props.getRowId, logger, throttledRowsChange, apiRef]);
|
|
357
401
|
};
|
|
@@ -3,6 +3,7 @@ import { GRID_DEFAULT_STRATEGY, useGridRegisterStrategyProcessor } from '../../c
|
|
|
3
3
|
var flatRowTreeCreationMethod = function flatRowTreeCreationMethod(_ref) {
|
|
4
4
|
var ids = _ref.ids,
|
|
5
5
|
idRowsLookup = _ref.idRowsLookup,
|
|
6
|
+
idToIdLookup = _ref.idToIdLookup,
|
|
6
7
|
previousTree = _ref.previousTree;
|
|
7
8
|
var tree = {};
|
|
8
9
|
|
|
@@ -27,6 +28,7 @@ var flatRowTreeCreationMethod = function flatRowTreeCreationMethod(_ref) {
|
|
|
27
28
|
tree: tree,
|
|
28
29
|
treeDepth: 1,
|
|
29
30
|
idRowsLookup: idRowsLookup,
|
|
31
|
+
idToIdLookup: idToIdLookup,
|
|
30
32
|
ids: ids
|
|
31
33
|
};
|
|
32
34
|
};
|
|
@@ -15,7 +15,12 @@ function scrollIntoView(dimensions) {
|
|
|
15
15
|
scrollTop = dimensions.scrollTop,
|
|
16
16
|
offsetHeight = dimensions.offsetHeight,
|
|
17
17
|
offsetTop = dimensions.offsetTop;
|
|
18
|
-
var elementBottom = offsetTop + offsetHeight;
|
|
18
|
+
var elementBottom = offsetTop + offsetHeight; // Always scroll to top when cell is higher than viewport to avoid scroll jump
|
|
19
|
+
// See https://github.com/mui/mui-x/issues/4513 and https://github.com/mui/mui-x/issues/4514
|
|
20
|
+
|
|
21
|
+
if (offsetHeight > clientHeight) {
|
|
22
|
+
return offsetTop;
|
|
23
|
+
}
|
|
19
24
|
|
|
20
25
|
if (elementBottom - clientHeight > scrollTop) {
|
|
21
26
|
return elementBottom - clientHeight;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
2
2
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
3
3
|
import * as React from 'react';
|
|
4
|
-
import { GridEvents } from '../../../models/events';
|
|
5
4
|
import { useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
|
|
6
5
|
import { useGridApiMethod } from '../../utils/useGridApiMethod';
|
|
7
6
|
import { useGridLogger } from '../../utils/useGridLogger';
|
|
@@ -57,7 +56,7 @@ export var useGridSelection = function useGridSelection(apiRef, props) {
|
|
|
57
56
|
propModel: propSelectionModel,
|
|
58
57
|
propOnChange: props.onSelectionModelChange,
|
|
59
58
|
stateSelector: gridSelectionStateSelector,
|
|
60
|
-
changeEvent:
|
|
59
|
+
changeEvent: 'selectionChange'
|
|
61
60
|
});
|
|
62
61
|
var checkboxSelection = props.checkboxSelection,
|
|
63
62
|
disableMultipleSelection = props.disableMultipleSelection,
|
|
@@ -223,6 +222,10 @@ export var useGridSelection = function useGridSelection(apiRef, props) {
|
|
|
223
222
|
*/
|
|
224
223
|
|
|
225
224
|
var removeOutdatedSelection = React.useCallback(function () {
|
|
225
|
+
if (props.keepNonExistentRowsSelected) {
|
|
226
|
+
return;
|
|
227
|
+
}
|
|
228
|
+
|
|
226
229
|
var currentSelection = gridSelectionStateSelector(apiRef.current.state);
|
|
227
230
|
var rowsLookup = gridRowsLookupSelector(apiRef); // We clone the existing object to avoid mutating the same object returned by the selector to others part of the project
|
|
228
231
|
|
|
@@ -239,12 +242,12 @@ export var useGridSelection = function useGridSelection(apiRef, props) {
|
|
|
239
242
|
if (hasChanged) {
|
|
240
243
|
apiRef.current.setSelectionModel(Object.values(selectionLookup));
|
|
241
244
|
}
|
|
242
|
-
}, [apiRef]);
|
|
245
|
+
}, [apiRef, props.keepNonExistentRowsSelected]);
|
|
243
246
|
var handleSingleRowSelection = React.useCallback(function (id, event) {
|
|
244
247
|
var hasCtrlKey = event.metaKey || event.ctrlKey; // multiple selection is only allowed if:
|
|
245
248
|
// - it is a checkboxSelection
|
|
246
249
|
// - it is a keyboard selection
|
|
247
|
-
// -
|
|
250
|
+
// - Ctrl is pressed
|
|
248
251
|
|
|
249
252
|
var isMultipleSelectionDisabled = !checkboxSelection && !hasCtrlKey && !isKeyboardEvent(event);
|
|
250
253
|
var resetSelection = !canHaveMultipleSelection || isMultipleSelectionDisabled;
|
|
@@ -376,12 +379,12 @@ export var useGridSelection = function useGridSelection(apiRef, props) {
|
|
|
376
379
|
selectRows(apiRef.current.getAllRowIds(), true);
|
|
377
380
|
}
|
|
378
381
|
}, [apiRef, handleSingleRowSelection, selectRows, visibleRows.rows, canHaveMultipleSelection]);
|
|
379
|
-
useGridApiEventHandler(apiRef,
|
|
380
|
-
useGridApiEventHandler(apiRef,
|
|
381
|
-
useGridApiEventHandler(apiRef,
|
|
382
|
-
useGridApiEventHandler(apiRef,
|
|
383
|
-
useGridApiEventHandler(apiRef,
|
|
384
|
-
useGridApiEventHandler(apiRef,
|
|
382
|
+
useGridApiEventHandler(apiRef, 'sortedRowsSet', removeOutdatedSelection);
|
|
383
|
+
useGridApiEventHandler(apiRef, 'cellClick', handleCellClick);
|
|
384
|
+
useGridApiEventHandler(apiRef, 'rowSelectionCheckboxChange', handleRowSelectionCheckboxChange);
|
|
385
|
+
useGridApiEventHandler(apiRef, 'headerSelectionCheckboxChange', handleHeaderSelectionCheckboxChange);
|
|
386
|
+
useGridApiEventHandler(apiRef, 'cellMouseDown', preventSelectionOnShift);
|
|
387
|
+
useGridApiEventHandler(apiRef, 'cellKeyDown', handleCellKeyDown);
|
|
385
388
|
/**
|
|
386
389
|
* EFFECTS
|
|
387
390
|
*/
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
|
|
2
2
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
3
3
|
import * as React from 'react';
|
|
4
|
-
import { GridEvents } from '../../../models/events';
|
|
5
4
|
import { GridFeatureModeConstant } from '../../../models/gridFeatureMode';
|
|
6
5
|
import { isEnterKey } from '../../../utils/keyboardUtils';
|
|
7
6
|
import { useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
|
|
@@ -37,7 +36,7 @@ export var useGridSorting = function useGridSorting(apiRef, props) {
|
|
|
37
36
|
propModel: props.sortModel,
|
|
38
37
|
propOnChange: props.onSortModelChange,
|
|
39
38
|
stateSelector: gridSortModelSelector,
|
|
40
|
-
changeEvent:
|
|
39
|
+
changeEvent: 'sortModelChange'
|
|
41
40
|
});
|
|
42
41
|
var upsertSortModel = React.useCallback(function (field, sortItem) {
|
|
43
42
|
var sortModel = gridSortModelSelector(apiRef);
|
|
@@ -107,7 +106,7 @@ export var useGridSorting = function useGridSorting(apiRef, props) {
|
|
|
107
106
|
})
|
|
108
107
|
});
|
|
109
108
|
});
|
|
110
|
-
apiRef.current.publishEvent(
|
|
109
|
+
apiRef.current.publishEvent('sortedRowsSet');
|
|
111
110
|
apiRef.current.forceUpdate();
|
|
112
111
|
}, [apiRef, logger, props.sortingMode]);
|
|
113
112
|
var setSortModel = React.useCallback(function (model) {
|
|
@@ -219,7 +218,7 @@ export var useGridSorting = function useGridSorting(apiRef, props) {
|
|
|
219
218
|
var handleColumnHeaderKeyDown = React.useCallback(function (_ref3, event) {
|
|
220
219
|
var colDef = _ref3.colDef;
|
|
221
220
|
|
|
222
|
-
//
|
|
221
|
+
// Ctrl + Enter opens the column menu
|
|
223
222
|
if (isEnterKey(event.key) && !event.ctrlKey && !event.metaKey) {
|
|
224
223
|
sortColumn(colDef, undefined, event.shiftKey);
|
|
225
224
|
}
|
|
@@ -244,11 +243,11 @@ export var useGridSorting = function useGridSorting(apiRef, props) {
|
|
|
244
243
|
apiRef.current.applySorting();
|
|
245
244
|
}
|
|
246
245
|
}, [apiRef]);
|
|
247
|
-
useGridApiEventHandler(apiRef,
|
|
248
|
-
useGridApiEventHandler(apiRef,
|
|
249
|
-
useGridApiEventHandler(apiRef,
|
|
250
|
-
useGridApiEventHandler(apiRef,
|
|
251
|
-
useGridApiEventHandler(apiRef,
|
|
246
|
+
useGridApiEventHandler(apiRef, 'columnHeaderClick', handleColumnHeaderClick);
|
|
247
|
+
useGridApiEventHandler(apiRef, 'columnHeaderKeyDown', handleColumnHeaderKeyDown);
|
|
248
|
+
useGridApiEventHandler(apiRef, 'rowsSet', apiRef.current.applySorting);
|
|
249
|
+
useGridApiEventHandler(apiRef, 'columnsChange', handleColumnsChange);
|
|
250
|
+
useGridApiEventHandler(apiRef, 'activeStrategyProcessorChange', handleStrategyProcessorChange);
|
|
252
251
|
/**
|
|
253
252
|
* 1ST RENDER
|
|
254
253
|
*/
|
|
@@ -13,7 +13,6 @@ import { gridDensityRowHeightSelector } from '../density/densitySelector';
|
|
|
13
13
|
import { gridFocusCellSelector, gridTabIndexCellSelector } from '../focus/gridFocusStateSelector';
|
|
14
14
|
import { gridEditRowsStateSelector } from '../editRows/gridEditRowsSelector';
|
|
15
15
|
import { useGridVisibleRows } from '../../utils/useGridVisibleRows';
|
|
16
|
-
import { GridEvents } from '../../../models/events';
|
|
17
16
|
import { useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
|
|
18
17
|
import { clamp } from '../../../utils/utils';
|
|
19
18
|
import { selectedIdsLookupSelector } from '../selection/gridSelectionSelector';
|
|
@@ -128,7 +127,7 @@ export var useGridVirtualScroller = function useGridVirtualScroller(props) {
|
|
|
128
127
|
setContainerWidth(rootRef.current.clientWidth);
|
|
129
128
|
}
|
|
130
129
|
}, []);
|
|
131
|
-
useGridApiEventHandler(apiRef,
|
|
130
|
+
useGridApiEventHandler(apiRef, 'resize', handleResize);
|
|
132
131
|
var updateRenderZonePosition = React.useCallback(function (nextRenderContext) {
|
|
133
132
|
var _getRenderableIndexes = getRenderableIndexes({
|
|
134
133
|
firstIndex: nextRenderContext.firstRowIndex,
|
|
@@ -194,7 +193,7 @@ export var useGridVirtualScroller = function useGridVirtualScroller(props) {
|
|
|
194
193
|
left: left,
|
|
195
194
|
renderContext: initialRenderContext
|
|
196
195
|
};
|
|
197
|
-
apiRef.current.publishEvent(
|
|
196
|
+
apiRef.current.publishEvent('rowsScroll', params);
|
|
198
197
|
}, [apiRef, computeRenderContext, containerWidth, updateRenderContext]);
|
|
199
198
|
|
|
200
199
|
var handleScroll = function handleScroll(event) {
|
|
@@ -216,7 +215,7 @@ export var useGridVirtualScroller = function useGridVirtualScroller(props) {
|
|
|
216
215
|
var bottomColumnsScrolledSincePreviousRender = Math.abs(nextRenderContext.lastColumnIndex - prevRenderContext.current.lastColumnIndex);
|
|
217
216
|
var 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
|
|
218
217
|
|
|
219
|
-
apiRef.current.publishEvent(
|
|
218
|
+
apiRef.current.publishEvent('rowsScroll', {
|
|
220
219
|
top: scrollTop,
|
|
221
220
|
left: scrollLeft,
|
|
222
221
|
renderContext: shouldSetState ? nextRenderContext : prevRenderContext.current
|
|
@@ -232,11 +231,11 @@ export var useGridVirtualScroller = function useGridVirtualScroller(props) {
|
|
|
232
231
|
};
|
|
233
232
|
|
|
234
233
|
var handleWheel = function handleWheel(event) {
|
|
235
|
-
apiRef.current.publishEvent(
|
|
234
|
+
apiRef.current.publishEvent('virtualScrollerWheel', {}, event);
|
|
236
235
|
};
|
|
237
236
|
|
|
238
237
|
var handleTouchMove = function handleTouchMove(event) {
|
|
239
|
-
apiRef.current.publishEvent(
|
|
238
|
+
apiRef.current.publishEvent('virtualScrollerTouchMove', {}, event);
|
|
240
239
|
};
|
|
241
240
|
|
|
242
241
|
var getRows = function getRows() {
|
|
@@ -369,7 +368,7 @@ export var useGridVirtualScroller = function useGridVirtualScroller(props) {
|
|
|
369
368
|
return size;
|
|
370
369
|
}, [rootRef, columnsTotalWidth, rowsMeta.currentPageTotalHeight, currentPage.rows.length, needsHorizontalScrollbar, rootProps.autoHeight, rowHeight]);
|
|
371
370
|
React.useEffect(function () {
|
|
372
|
-
apiRef.current.publishEvent(
|
|
371
|
+
apiRef.current.publishEvent('virtualScrollerContentSizeChange');
|
|
373
372
|
}, [apiRef, contentSize]);
|
|
374
373
|
|
|
375
374
|
if (rootProps.autoHeight && currentPage.rows.length === 0) {
|
|
@@ -9,22 +9,27 @@ import { FinalizationRegistryBasedCleanupTracking } from '../../utils/cleanupTra
|
|
|
9
9
|
* Signal to the underlying logic what version of the public component API
|
|
10
10
|
* of the data grid is exposed.
|
|
11
11
|
*/
|
|
12
|
-
var GridSignature;
|
|
12
|
+
var GridSignature;
|
|
13
13
|
|
|
14
14
|
(function (GridSignature) {
|
|
15
15
|
GridSignature["DataGrid"] = "DataGrid";
|
|
16
16
|
GridSignature["DataGridPro"] = "DataGridPro";
|
|
17
17
|
})(GridSignature || (GridSignature = {}));
|
|
18
18
|
|
|
19
|
+
// We use class to make it easier to detect in heap snapshots by name
|
|
19
20
|
var ObjectToBeRetainedByReact = /*#__PURE__*/_createClass(function ObjectToBeRetainedByReact() {
|
|
20
21
|
_classCallCheck(this, ObjectToBeRetainedByReact);
|
|
21
22
|
}); // Based on https://github.com/Bnaya/use-dispose-uncommitted/blob/main/src/finalization-registry-based-impl.ts
|
|
22
23
|
// Check https://github.com/facebook/react/issues/15317 to get more information
|
|
23
24
|
|
|
24
25
|
|
|
25
|
-
export function createUseGridApiEventHandler(
|
|
26
|
+
export function createUseGridApiEventHandler(registryContainer) {
|
|
26
27
|
var cleanupTokensCounter = 0;
|
|
27
28
|
return function useGridApiEventHandler(apiRef, eventName, handler, options) {
|
|
29
|
+
if (registryContainer.registry === null) {
|
|
30
|
+
registryContainer.registry = typeof FinalizationRegistry !== 'undefined' ? new FinalizationRegistryBasedCleanupTracking() : new TimerBasedCleanupTracking();
|
|
31
|
+
}
|
|
32
|
+
|
|
28
33
|
var _React$useState = React.useState(new ObjectToBeRetainedByReact()),
|
|
29
34
|
_React$useState2 = _slicedToArray(_React$useState, 1),
|
|
30
35
|
objectRetainedByReact = _React$useState2[0];
|
|
@@ -48,7 +53,7 @@ export function createUseGridApiEventHandler(registry) {
|
|
|
48
53
|
cleanupTokenRef.current = {
|
|
49
54
|
cleanupToken: cleanupTokensCounter
|
|
50
55
|
};
|
|
51
|
-
registry.register(objectRetainedByReact, // The callback below will be called once this reference stops being retained
|
|
56
|
+
registryContainer.registry.register(objectRetainedByReact, // The callback below will be called once this reference stops being retained
|
|
52
57
|
function () {
|
|
53
58
|
var _subscription$current;
|
|
54
59
|
|
|
@@ -61,7 +66,7 @@ export function createUseGridApiEventHandler(registry) {
|
|
|
61
66
|
subscription.current = null;
|
|
62
67
|
|
|
63
68
|
if (cleanupTokenRef.current) {
|
|
64
|
-
registry.unregister(cleanupTokenRef.current);
|
|
69
|
+
registryContainer.registry.unregister(cleanupTokenRef.current);
|
|
65
70
|
cleanupTokenRef.current = null;
|
|
66
71
|
}
|
|
67
72
|
}
|
|
@@ -79,10 +84,10 @@ export function createUseGridApiEventHandler(registry) {
|
|
|
79
84
|
subscription.current = apiRef.current.subscribeEvent(eventName, _enhancedHandler, options);
|
|
80
85
|
}
|
|
81
86
|
|
|
82
|
-
if (cleanupTokenRef.current && registry) {
|
|
87
|
+
if (cleanupTokenRef.current && registryContainer.registry) {
|
|
83
88
|
// If the effect was called, it means that this render was committed
|
|
84
89
|
// so we can trust the cleanup function to remove the listener.
|
|
85
|
-
registry.unregister(cleanupTokenRef.current);
|
|
90
|
+
registryContainer.registry.unregister(cleanupTokenRef.current);
|
|
86
91
|
cleanupTokenRef.current = null;
|
|
87
92
|
}
|
|
88
93
|
|
|
@@ -95,12 +100,18 @@ export function createUseGridApiEventHandler(registry) {
|
|
|
95
100
|
}, [apiRef, eventName, options]);
|
|
96
101
|
};
|
|
97
102
|
}
|
|
98
|
-
var
|
|
103
|
+
var registryContainer = {
|
|
104
|
+
registry: null
|
|
105
|
+
}; // TODO: move to @mui/x-data-grid/internals
|
|
106
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
99
107
|
|
|
100
108
|
export var unstable_resetCleanupTracking = function unstable_resetCleanupTracking() {
|
|
101
|
-
|
|
109
|
+
var _registryContainer$re;
|
|
110
|
+
|
|
111
|
+
(_registryContainer$re = registryContainer.registry) == null ? void 0 : _registryContainer$re.reset();
|
|
112
|
+
registryContainer.registry = null;
|
|
102
113
|
};
|
|
103
|
-
export var useGridApiEventHandler = createUseGridApiEventHandler(
|
|
114
|
+
export var useGridApiEventHandler = createUseGridApiEventHandler(registryContainer);
|
|
104
115
|
var optionsSubscriberOptions = {
|
|
105
116
|
isFirst: true
|
|
106
117
|
};
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import { GridEvents } from '../../models/events';
|
|
4
3
|
import { isFunction } from '../../utils/utils';
|
|
5
4
|
import { useGridLogger } from './useGridLogger';
|
|
6
5
|
export var useGridNativeEventListener = function useGridNativeEventListener(apiRef, ref, eventName, handler, options) {
|
|
@@ -38,7 +37,7 @@ export var useGridNativeEventListener = function useGridNativeEventListener(apiR
|
|
|
38
37
|
boundElem.removeEventListener(eventName, wrapHandler, options);
|
|
39
38
|
};
|
|
40
39
|
|
|
41
|
-
apiRef.current.subscribeEvent(
|
|
40
|
+
apiRef.current.subscribeEvent('unmount', unsubscribe);
|
|
42
41
|
}
|
|
43
42
|
}, [ref, wrapHandler, eventName, added, logger, options, apiRef]);
|
|
44
43
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { buildWarning } from '../../utils/warning';
|
|
2
2
|
|
|
3
3
|
function isOutputSelector(selector) {
|
|
4
|
-
return selector.
|
|
4
|
+
return selector.acceptsApiRef;
|
|
5
5
|
}
|
|
6
6
|
|
|
7
7
|
var stateNotInitializedWarning = buildWarning(['MUI: `useGridSelector` has been called before the initialization of the state.', 'This hook can only be used inside the context of the grid.']);
|