@sapui5/sap.fe.core 1.134.0 → 1.136.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/package.json +1 -1
- package/src/sap/fe/core/.library +1 -1
- package/src/sap/fe/core/ActionRuntime.js +6 -62
- package/src/sap/fe/core/ActionRuntime.ts +14 -65
- package/src/sap/fe/core/AppComponent.js +10 -2
- package/src/sap/fe/core/AppComponent.ts +6 -0
- package/src/sap/fe/core/AppStateHandler.js +9 -7
- package/src/sap/fe/core/AppStateHandler.ts +7 -5
- package/src/sap/fe/core/BaseController.js +1 -1
- package/src/sap/fe/core/CommonUtils.js +8 -4
- package/src/sap/fe/core/CommonUtils.ts +19 -4
- package/src/sap/fe/core/ExtensionAPI.js +7 -5
- package/src/sap/fe/core/ExtensionAPI.ts +5 -3
- package/src/sap/fe/core/IRowBindingInterface.js +1 -1
- package/src/sap/fe/core/InsightsFormattersExtension.js +1 -1
- package/src/sap/fe/core/PageController.js +36 -6
- package/src/sap/fe/core/PageController.ts +30 -0
- package/src/sap/fe/core/ResourceModel.js +1 -1
- package/src/sap/fe/core/ReuseComponent.js +1 -1
- package/src/sap/fe/core/TemplateComponent.js +1 -1
- package/src/sap/fe/core/TemplateModel.js +1 -1
- package/src/sap/fe/core/UIProvider.js +2 -2
- package/src/sap/fe/core/UIProvider.ts +3 -32
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +34 -16
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +39 -18
- package/src/sap/fe/core/buildingBlocks/IBuildingBlockOwnerComponent.js +1 -1
- package/src/sap/fe/core/buildingBlocks/TraceInfo.js +1 -1
- package/src/sap/fe/core/buildingBlocks/templating/AttributeModel.js +1 -1
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockFormatter.js +1 -1
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockSupport.js +2 -2
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockSupport.ts +1 -0
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor.js +7 -7
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor.ts +9 -9
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplatingBase.js +1 -1
- package/src/sap/fe/core/controllerextensions/BaseControllerExtension.js +5 -3
- package/src/sap/fe/core/controllerextensions/BaseControllerExtension.ts +3 -1
- package/src/sap/fe/core/controllerextensions/BusyLocker.js +1 -1
- package/src/sap/fe/core/controllerextensions/CollaborativeDraft.js +15 -15
- package/src/sap/fe/core/controllerextensions/CollaborativeDraft.ts +19 -19
- package/src/sap/fe/core/controllerextensions/ContextSharing.js +1 -1
- package/src/sap/fe/core/controllerextensions/EditFlow.js +74 -93
- package/src/sap/fe/core/controllerextensions/EditFlow.ts +89 -108
- package/src/sap/fe/core/controllerextensions/Feedback.js +1 -1
- package/src/sap/fe/core/controllerextensions/InlineEditFlow.js +355 -0
- package/src/sap/fe/core/controllerextensions/InlineEditFlow.ts +387 -0
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +1 -1
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +1 -1
- package/src/sap/fe/core/controllerextensions/InternalRouting.js +36 -11
- package/src/sap/fe/core/controllerextensions/InternalRouting.ts +36 -10
- package/src/sap/fe/core/controllerextensions/KPIManagement.js +1 -1
- package/src/sap/fe/core/controllerextensions/MessageHandler.js +36 -6
- package/src/sap/fe/core/controllerextensions/MessageHandler.ts +41 -1
- package/src/sap/fe/core/controllerextensions/PageReady.js +5 -2
- package/src/sap/fe/core/controllerextensions/PageReady.ts +3 -0
- package/src/sap/fe/core/controllerextensions/Paginator.js +1 -1
- package/src/sap/fe/core/controllerextensions/Placeholder.js +1 -1
- package/src/sap/fe/core/controllerextensions/Recommendations.js +1 -1
- package/src/sap/fe/core/controllerextensions/Routing.js +9 -9
- package/src/sap/fe/core/controllerextensions/Routing.ts +4 -4
- package/src/sap/fe/core/controllerextensions/RoutingListener.js +1 -1
- package/src/sap/fe/core/controllerextensions/Share.js +1 -1
- package/src/sap/fe/core/controllerextensions/SideEffects.js +13 -6
- package/src/sap/fe/core/controllerextensions/SideEffects.ts +13 -6
- package/src/sap/fe/core/controllerextensions/Telemetry.js +1 -1
- package/src/sap/fe/core/controllerextensions/ViewState.js +1 -1
- package/src/sap/fe/core/controllerextensions/cards/CollaborationManager.js +14 -11
- package/src/sap/fe/core/controllerextensions/cards/CollaborationManager.ts +20 -14
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +4 -12
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +2 -10
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +12 -2
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.ts +12 -0
- package/src/sap/fe/core/controllerextensions/dialog/ODataStrictDialog.js +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog.js +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +111 -89
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +140 -105
- package/src/sap/fe/core/controllerextensions/editFlow/draft.js +137 -79
- package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +133 -120
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js +3 -3
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.ts +4 -1
- package/src/sap/fe/core/controllerextensions/editFlow/editFlowConstants.js +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataOperation.js +26 -17
- package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataOperation.ts +32 -23
- package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataStrictHandling.js +3 -3
- package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataStrictHandling.ts +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/operations/Operation.js +103 -23
- package/src/sap/fe/core/controllerextensions/editFlow/operations/Operation.ts +144 -53
- package/src/sap/fe/core/controllerextensions/editFlow/operations/OperationMessage.js +29 -11
- package/src/sap/fe/core/controllerextensions/editFlow/operations/OperationMessage.ts +39 -15
- package/src/sap/fe/core/controllerextensions/editFlow/operations/OperationParameters.js +24 -22
- package/src/sap/fe/core/controllerextensions/editFlow/operations/OperationParameters.ts +28 -26
- package/src/sap/fe/core/controllerextensions/editFlow/operations/actionHelper.js +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.js +6 -572
- package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.ts +25 -873
- package/src/sap/fe/core/controllerextensions/editFlow/operations.js +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +98 -56
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +102 -80
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +5 -3
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +7 -4
- package/src/sap/fe/core/controllerextensions/pageReady/DataQueryWatcher.js +1 -1
- package/src/sap/fe/core/controllerextensions/recommendations/Telemetry.js +1 -1
- package/src/sap/fe/core/controllerextensions/routing/ContextPathHelper.js +1 -1
- package/src/sap/fe/core/controllerextensions/routing/NavigationReason.js +1 -1
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +1 -1
- package/src/sap/fe/core/controllerextensions/viewState/IViewStateContributor.js +1 -1
- package/src/sap/fe/core/controllerextensions/viewState/IViewStateContributorMixin.js +1 -1
- package/src/sap/fe/core/controls/Any.js +1 -1
- package/src/sap/fe/core/controls/AnyElement.js +1 -1
- package/src/sap/fe/core/controls/CommandExecution.js +1 -1
- package/src/sap/fe/core/controls/ComponentLoader.js +1 -1
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.js +3 -3
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.tsx +8 -1
- package/src/sap/fe/core/controls/DataWatcher.js +4 -3
- package/src/sap/fe/core/controls/DataWatcher.tsx +4 -1
- package/src/sap/fe/core/controls/FormElementWrapper.js +1 -1
- package/src/sap/fe/core/controls/HideFormGroupAutomatically.js +10 -4
- package/src/sap/fe/core/controls/HideFormGroupAutomatically.ts +13 -2
- package/src/sap/fe/core/controls/MultiValueParameterDelegate.js +1 -1
- package/src/sap/fe/core/controls/Recommendations/ConfirmRecommendationDialog.js +1 -1
- package/src/sap/fe/core/controls/inlineEditFlow/BeforeActionDialog.js +68 -0
- package/src/sap/fe/core/controls/inlineEditFlow/BeforeActionDialog.tsx +52 -0
- package/src/sap/fe/core/controls/inlineEditFlow/BeforeNavigationDialog.js +144 -0
- package/src/sap/fe/core/controls/inlineEditFlow/BeforeNavigationDialog.tsx +128 -0
- package/src/sap/fe/core/controls/inlineEditFlow/DraftExistsDialog.js +53 -0
- package/src/sap/fe/core/controls/inlineEditFlow/DraftExistsDialog.tsx +39 -0
- package/src/sap/fe/core/converters/ConverterContext.js +1 -1
- package/src/sap/fe/core/converters/ManifestSettings.js +3 -2
- package/src/sap/fe/core/converters/ManifestSettings.ts +42 -20
- package/src/sap/fe/core/converters/ManifestWrapper.js +8 -2
- package/src/sap/fe/core/converters/ManifestWrapper.ts +8 -0
- package/src/sap/fe/core/converters/MetaModelConverter.js +1 -1
- package/src/sap/fe/core/converters/TemplateConverter.js +1 -1
- package/src/sap/fe/core/converters/annotations/DataField.js +2 -2
- package/src/sap/fe/core/converters/annotations/DataField.ts +2 -1
- package/src/sap/fe/core/converters/controls/Common/Action.js +55 -6
- package/src/sap/fe/core/converters/controls/Common/Action.ts +59 -3
- package/src/sap/fe/core/converters/controls/Common/Chart.js +45 -6
- package/src/sap/fe/core/converters/controls/Common/Chart.ts +60 -9
- package/src/sap/fe/core/converters/controls/Common/Criticality.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/Form.js +21 -5
- package/src/sap/fe/core/converters/controls/Common/Form.ts +25 -5
- package/src/sap/fe/core/converters/controls/Common/KPI.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/Table.js +89 -1686
- package/src/sap/fe/core/converters/controls/Common/Table.ts +254 -2513
- package/src/sap/fe/core/converters/controls/Common/table/Columns.js +1701 -0
- package/src/sap/fe/core/converters/controls/Common/table/Columns.ts +2377 -0
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +64 -15
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +76 -14
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +7 -36
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +8 -46
- package/src/sap/fe/core/converters/controls/ListReport/FilterField.js +106 -0
- package/src/sap/fe/core/converters/controls/ListReport/FilterField.ts +129 -0
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +10 -5
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +8 -3
- package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.js +1 -1
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +5 -3
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +11 -4
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +7 -2
- package/src/sap/fe/core/converters/helpers/Aggregation.js +1 -1
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +1 -1
- package/src/sap/fe/core/converters/helpers/DataFieldHelper.js +1 -1
- package/src/sap/fe/core/converters/helpers/ID.js +1 -1
- package/src/sap/fe/core/converters/helpers/InsightsHelpers.js +1 -1
- package/src/sap/fe/core/converters/helpers/IssueManager.js +1 -1
- package/src/sap/fe/core/converters/helpers/Key.js +1 -1
- package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.js +1 -1
- package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +1 -1
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +30 -8
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +40 -16
- package/src/sap/fe/core/converters/templates/ListReportConverter.js +5 -3
- package/src/sap/fe/core/converters/templates/ListReportConverter.ts +5 -1
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +1 -1
- package/src/sap/fe/core/designtime/AnnotationBasedChanges.js +184 -0
- package/src/sap/fe/core/designtime/AnnotationBasedChanges.ts +240 -0
- package/src/sap/fe/core/designtime/AppComponent.designtime.js +1 -1
- package/src/sap/fe/core/designtime/messagebundle.properties +11 -0
- package/src/sap/fe/core/designtime/messagebundle_ar.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_bg.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_ca.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_cnr.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_cs.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_cy.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_da.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_de.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_el.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_en.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_en_GB.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_es.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_es_MX.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_et.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_fi.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_fr.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_fr_CA.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_hi.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_hr.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_hu.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_id.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_it.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_iw.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_ja.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_kk.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_ko.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_lt.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_lv.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_mk.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_ms.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_nl.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_no.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_pl.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_pt.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_pt_PT.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_ro.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_ru.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_sh.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_sk.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_sl.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_sr.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_sv.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_th.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_tr.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_uk.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_vi.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_zh_CN.properties +7 -0
- package/src/sap/fe/core/designtime/messagebundle_zh_TW.properties +7 -0
- package/src/sap/fe/core/formatters/CollaborationFormatter.js +1 -1
- package/src/sap/fe/core/formatters/CriticalityFormatter.js +1 -1
- package/src/sap/fe/core/formatters/FPMFormatter.js +1 -1
- package/src/sap/fe/core/formatters/FiscalFormat.js +1 -1
- package/src/sap/fe/core/formatters/KPIFormatter.js +1 -1
- package/src/sap/fe/core/formatters/StandardFormatter.js +1 -1
- package/src/sap/fe/core/formatters/ValueFormatter.js +27 -12
- package/src/sap/fe/core/formatters/ValueFormatter.ts +25 -11
- package/src/sap/fe/core/fpm/Component.js +1 -1
- package/src/sap/fe/core/fpm/manifest.json +1 -1
- package/src/sap/fe/core/helpers/AdaptiveCardExpressionCompiler.js +1 -1
- package/src/sap/fe/core/helpers/AppStartupHelper.js +25 -4
- package/src/sap/fe/core/helpers/AppStartupHelper.ts +28 -2
- package/src/sap/fe/core/helpers/BindingHelper.js +4 -3
- package/src/sap/fe/core/helpers/BindingHelper.ts +2 -1
- package/src/sap/fe/core/helpers/BindingToolkitEvaluator.js +1 -1
- package/src/sap/fe/core/helpers/DeleteHelper.js +6 -12
- package/src/sap/fe/core/helpers/DeleteHelper.ts +4 -9
- package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +1 -1
- package/src/sap/fe/core/helpers/EditState.js +1 -1
- package/src/sap/fe/core/helpers/ExcelFormatHelper.js +1 -1
- package/src/sap/fe/core/helpers/FPMHelper.js +9 -3
- package/src/sap/fe/core/helpers/FPMHelper.ts +13 -1
- package/src/sap/fe/core/helpers/HTTP503Handler.js +1 -1
- package/src/sap/fe/core/helpers/KeepAliveHelper.js +1 -1
- package/src/sap/fe/core/helpers/KeepAliveRefreshTypes.js +1 -1
- package/src/sap/fe/core/helpers/LoaderUtils.js +1 -1
- package/src/sap/fe/core/helpers/ManifestHelper.js +1 -1
- package/src/sap/fe/core/helpers/MessageStrip.js +1 -1
- package/src/sap/fe/core/helpers/MetaModelFunction.js +1 -1
- package/src/sap/fe/core/helpers/MetaPath.js +1 -1
- package/src/sap/fe/core/helpers/ModelHelper.js +15 -5
- package/src/sap/fe/core/helpers/ModelHelper.ts +15 -4
- package/src/sap/fe/core/helpers/PasteHelper.js +39 -40
- package/src/sap/fe/core/helpers/PasteHelper.ts +49 -51
- package/src/sap/fe/core/helpers/PromiseKeeper.js +1 -1
- package/src/sap/fe/core/helpers/RecommendationHelper.js +1 -1
- package/src/sap/fe/core/helpers/ResourceModelHelper.js +1 -1
- package/src/sap/fe/core/helpers/SemanticKeyHelper.js +1 -1
- package/src/sap/fe/core/helpers/SizeHelper.js +1 -1
- package/src/sap/fe/core/helpers/StableIdHelper.js +1 -1
- package/src/sap/fe/core/helpers/StandardRecommendationHelper.js +1 -1
- package/src/sap/fe/core/helpers/Synchronization.js +1 -1
- package/src/sap/fe/core/helpers/TitleHelper.js +1 -1
- package/src/sap/fe/core/helpers/ToES6Promise.js +1 -1
- package/src/sap/fe/core/helpers/TypeGuards.js +1 -1
- package/src/sap/fe/core/helpers/WebSocket.js +11 -2
- package/src/sap/fe/core/helpers/WebSocket.ts +8 -0
- package/src/sap/fe/core/library.js +16 -4
- package/src/sap/fe/core/library.support.js +1 -1
- package/src/sap/fe/core/library.ts +1 -0
- package/src/sap/fe/core/manifestMerger/AddNewPage.js +1 -1
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +1 -1
- package/src/sap/fe/core/messagebundle.properties +41 -2
- package/src/sap/fe/core/messagebundle_ar.properties +25 -4
- package/src/sap/fe/core/messagebundle_bg.properties +25 -4
- package/src/sap/fe/core/messagebundle_ca.properties +24 -3
- package/src/sap/fe/core/messagebundle_cnr.properties +25 -4
- package/src/sap/fe/core/messagebundle_cs.properties +23 -2
- package/src/sap/fe/core/messagebundle_cy.properties +24 -3
- package/src/sap/fe/core/messagebundle_da.properties +25 -4
- package/src/sap/fe/core/messagebundle_de.properties +28 -7
- package/src/sap/fe/core/messagebundle_el.properties +23 -2
- package/src/sap/fe/core/messagebundle_en.properties +25 -4
- package/src/sap/fe/core/messagebundle_en_GB.properties +25 -4
- package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +26 -5
- package/src/sap/fe/core/messagebundle_es.properties +23 -2
- package/src/sap/fe/core/messagebundle_es_MX.properties +23 -2
- package/src/sap/fe/core/messagebundle_et.properties +23 -2
- package/src/sap/fe/core/messagebundle_fi.properties +23 -2
- package/src/sap/fe/core/messagebundle_fr.properties +26 -5
- package/src/sap/fe/core/messagebundle_fr_CA.properties +23 -2
- package/src/sap/fe/core/messagebundle_hi.properties +24 -3
- package/src/sap/fe/core/messagebundle_hr.properties +27 -6
- package/src/sap/fe/core/messagebundle_hu.properties +23 -2
- package/src/sap/fe/core/messagebundle_id.properties +23 -2
- package/src/sap/fe/core/messagebundle_it.properties +25 -4
- package/src/sap/fe/core/messagebundle_iw.properties +24 -3
- package/src/sap/fe/core/messagebundle_ja.properties +24 -3
- package/src/sap/fe/core/messagebundle_kk.properties +23 -2
- package/src/sap/fe/core/messagebundle_ko.properties +25 -4
- package/src/sap/fe/core/messagebundle_lt.properties +23 -2
- package/src/sap/fe/core/messagebundle_lv.properties +25 -4
- package/src/sap/fe/core/messagebundle_mk.properties +23 -2
- package/src/sap/fe/core/messagebundle_ms.properties +24 -3
- package/src/sap/fe/core/messagebundle_nl.properties +23 -2
- package/src/sap/fe/core/messagebundle_no.properties +23 -2
- package/src/sap/fe/core/messagebundle_pl.properties +25 -4
- package/src/sap/fe/core/messagebundle_pt.properties +25 -4
- package/src/sap/fe/core/messagebundle_pt_PT.properties +24 -3
- package/src/sap/fe/core/messagebundle_ro.properties +25 -4
- package/src/sap/fe/core/messagebundle_ru.properties +24 -3
- package/src/sap/fe/core/messagebundle_sh.properties +25 -4
- package/src/sap/fe/core/messagebundle_sk.properties +24 -3
- package/src/sap/fe/core/messagebundle_sl.properties +28 -7
- package/src/sap/fe/core/messagebundle_sr.properties +25 -4
- package/src/sap/fe/core/messagebundle_sv.properties +23 -2
- package/src/sap/fe/core/messagebundle_th.properties +25 -4
- package/src/sap/fe/core/messagebundle_tr.properties +23 -2
- package/src/sap/fe/core/messagebundle_uk.properties +25 -4
- package/src/sap/fe/core/messagebundle_vi.properties +25 -4
- package/src/sap/fe/core/messagebundle_zh_CN.properties +26 -5
- package/src/sap/fe/core/messagebundle_zh_TW.properties +24 -3
- package/src/sap/fe/core/rootView/Fcl.controller.js +11 -7
- package/src/sap/fe/core/rootView/Fcl.controller.ts +16 -7
- package/src/sap/fe/core/rootView/NavContainer.controller.js +3 -3
- package/src/sap/fe/core/rootView/NavContainer.controller.ts +1 -1
- package/src/sap/fe/core/rootView/RootViewBaseController.js +87 -35
- package/src/sap/fe/core/rootView/RootViewBaseController.ts +113 -57
- package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +1 -1
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +1 -1
- package/src/sap/fe/core/services/CollaborationManagerServiceFactory.js +29 -13
- package/src/sap/fe/core/services/CollaborationManagerServiceFactory.ts +27 -13
- package/src/sap/fe/core/services/CollaborativeToolsServiceFactory.js +1 -1
- package/src/sap/fe/core/services/ContextSharingServiceFactory.js +1 -1
- package/src/sap/fe/core/services/EnvironmentServiceFactory.js +8 -2
- package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +6 -0
- package/src/sap/fe/core/services/InlineEditServiceFactory.js +11 -5
- package/src/sap/fe/core/services/InlineEditServiceFactory.ts +9 -3
- package/src/sap/fe/core/services/NavigationServiceFactory.js +1 -1
- package/src/sap/fe/core/services/ResourceModelServiceFactory.js +1 -1
- package/src/sap/fe/core/services/RoutingServiceFactory.js +14 -7
- package/src/sap/fe/core/services/RoutingServiceFactory.ts +11 -5
- package/src/sap/fe/core/services/ShellServicesFactory.js +5 -4
- package/src/sap/fe/core/services/ShellServicesFactory.ts +5 -3
- package/src/sap/fe/core/services/SideEffectsServiceFactory.js +28 -4
- package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +32 -3
- package/src/sap/fe/core/services/TelemetryServiceFactory.js +1 -1
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +1 -1
- package/src/sap/fe/core/services/ValueHelpHistoryServiceFactory.js +1 -1
- package/src/sap/fe/core/services/collaborativeDraftServiceFactory.js +1 -1
- package/src/sap/fe/core/services/valueHelpService/HistoryOptOutProvider.js +1 -1
- package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +1 -1
- package/src/sap/fe/core/services/view/TemplatingErrorPage.view.xml +1 -1
- package/src/sap/fe/core/support/AnnotationIssue.support.js +1 -1
- package/src/sap/fe/core/support/CollectionFacetMissingID.support.js +1 -1
- package/src/sap/fe/core/support/CollectionFacetUnsupportedLevel.support.js +1 -1
- package/src/sap/fe/core/support/CommonHelper.js +1 -1
- package/src/sap/fe/core/support/Diagnostics.js +1 -1
- package/src/sap/fe/core/support/InvalidAnnotationColumnKey.support.js +1 -1
- package/src/sap/fe/core/templating/ActionHelper.js +1 -1
- package/src/sap/fe/core/templating/CommonFormatters.js +1 -1
- package/src/sap/fe/core/templating/CriticalityFormatters.js +1 -1
- package/src/sap/fe/core/templating/DataFieldFormatters.js +1 -1
- package/src/sap/fe/core/templating/DataModelPathHelper.js +1 -1
- package/src/sap/fe/core/templating/DisplayModeFormatter.js +1 -1
- package/src/sap/fe/core/templating/EntitySetHelper.js +199 -59
- package/src/sap/fe/core/templating/EntitySetHelper.ts +221 -61
- package/src/sap/fe/core/templating/EntityTypeHelper.js +1 -1
- package/src/sap/fe/core/templating/FieldControlHelper.js +1 -1
- package/src/sap/fe/core/templating/FilterTemplating.js +1 -1
- package/src/sap/fe/core/templating/PropertyFormatters.js +1 -1
- package/src/sap/fe/core/templating/PropertyHelper.js +1 -1
- package/src/sap/fe/core/templating/SemanticObjectHelper.js +8 -10
- package/src/sap/fe/core/templating/SemanticObjectHelper.ts +11 -10
- package/src/sap/fe/core/templating/UIFormatters.js +5 -2
- package/src/sap/fe/core/templating/UIFormatters.ts +3 -0
- package/src/sap/fe/core/type/Date.js +1 -1
- package/src/sap/fe/core/type/DateTimeWithTimezone.js +1 -1
- package/src/sap/fe/core/type/EDM.js +1 -1
- package/src/sap/fe/core/type/Email.js +1 -1
- package/src/sap/fe/core/type/FiscalDate.js +1 -1
- package/src/sap/fe/core/type/InputMask.js +1 -1
- package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.js +0 -288
- package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.tsx +0 -208
- package/src/sap/fe/core/controllerextensions/editFlow/ODataOperation.js +0 -404
- package/src/sap/fe/core/controllerextensions/editFlow/ODataOperation.ts +0 -502
- package/src/sap/fe/core/designtime/TextArrangementChangeAction.js +0 -100
- package/src/sap/fe/core/designtime/TextArrangementChangeAction.ts +0 -134
- package/src/sap/fe/core/operationsHelper.js +0 -192
- package/src/sap/fe/core/operationsHelper.ts +0 -277
|
@@ -0,0 +1,387 @@
|
|
|
1
|
+
import type { Property } from "@sap-ux/vocabularies-types";
|
|
2
|
+
import Log from "sap/base/Log";
|
|
3
|
+
import { defineUI5Class, methodOverride, type EnhanceWithUI5 } from "sap/fe/base/ClassSupport";
|
|
4
|
+
import { hookable } from "sap/fe/base/HookSupport";
|
|
5
|
+
import CommonUtils from "sap/fe/core/CommonUtils";
|
|
6
|
+
import type PageController from "sap/fe/core/PageController";
|
|
7
|
+
import BaseControllerExtension from "sap/fe/core/controllerextensions/BaseControllerExtension";
|
|
8
|
+
import messageHandling from "sap/fe/core/controllerextensions/messageHandler/messageHandling";
|
|
9
|
+
import BeforeActionDialog from "sap/fe/core/controls/inlineEditFlow/BeforeActionDialog";
|
|
10
|
+
import BeforeNavigationDialog, { type DIALOGRESULT } from "sap/fe/core/controls/inlineEditFlow/BeforeNavigationDialog";
|
|
11
|
+
import * as MetaModelConverter from "sap/fe/core/converters/MetaModelConverter";
|
|
12
|
+
import { isProperty } from "sap/fe/core/helpers/TypeGuards";
|
|
13
|
+
import { type DataModelObjectPath } from "sap/fe/core/templating/DataModelPathHelper";
|
|
14
|
+
import type Field from "sap/fe/macros/Field";
|
|
15
|
+
import type InlineEdit from "sap/fe/macros/inlineEdit/InlineEdit";
|
|
16
|
+
import MessageToast from "sap/m/MessageToast";
|
|
17
|
+
import type UI5Event from "sap/ui/base/Event";
|
|
18
|
+
import type ManagedObject from "sap/ui/base/ManagedObject";
|
|
19
|
+
import type Control from "sap/ui/core/Control";
|
|
20
|
+
import Lib from "sap/ui/core/Lib";
|
|
21
|
+
import Messaging from "sap/ui/core/Messaging";
|
|
22
|
+
import type Message from "sap/ui/core/message/Message";
|
|
23
|
+
import type { ODataContextBinding$PatchSentEvent } from "sap/ui/model/odata/v4/ODataContextBinding";
|
|
24
|
+
import DraftExistsDialog from "../controls/inlineEditFlow/DraftExistsDialog";
|
|
25
|
+
|
|
26
|
+
@defineUI5Class("sap.fe.core.controllerextensions.InlineEditFlow")
|
|
27
|
+
export default class InlineEditFlow extends BaseControllerExtension {
|
|
28
|
+
protected base!: PageController;
|
|
29
|
+
|
|
30
|
+
private inlineEditControls: Control[] = [];
|
|
31
|
+
|
|
32
|
+
private inlineEditBindingContextPath?: string;
|
|
33
|
+
|
|
34
|
+
private abortTimerBeforeSave?: Function;
|
|
35
|
+
|
|
36
|
+
private patchPromise?: Promise<UI5Event>;
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Method to know if there can be inline edit on the page.
|
|
40
|
+
* @returns True if inline edit is possible
|
|
41
|
+
*/
|
|
42
|
+
isInlineEditPossible(): boolean {
|
|
43
|
+
return this.base.getAppComponent().getInlineEditService().doesPageHaveInlineEdit(this.base.getRoutingTargetName());
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Save the inline edit changes.
|
|
48
|
+
* @returns A promise that resolved once the batch has returned.
|
|
49
|
+
*/
|
|
50
|
+
async inlineEditSave(): Promise<void> {
|
|
51
|
+
const model = this.base.getView().getModel();
|
|
52
|
+
|
|
53
|
+
const messages = Messaging.getMessageModel().getData();
|
|
54
|
+
const hasTechnicalMessages = messages.some((message: Message) => !messageHandling.isNonTechnicalMessage(message));
|
|
55
|
+
if (hasTechnicalMessages) {
|
|
56
|
+
this.base.setShowFooter(true);
|
|
57
|
+
// if there are invalid types we should not try to save
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
if (!model.hasPendingChanges(CommonUtils.INLINEEDIT_UPDATEGROUPID)) {
|
|
61
|
+
this.inlineEditEnd();
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
try {
|
|
65
|
+
Messaging.removeAllMessages();
|
|
66
|
+
await model.submitBatch(CommonUtils.INLINEEDIT_UPDATEGROUPID);
|
|
67
|
+
} catch (error: unknown) {
|
|
68
|
+
Log.warning("Error while saving inline edit changes");
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Discard the inline edit changes.
|
|
74
|
+
*/
|
|
75
|
+
inlineEditDiscard(): void {
|
|
76
|
+
this.base.getView().getModel().resetChanges(CommonUtils.INLINEEDIT_UPDATEGROUPID);
|
|
77
|
+
this.inlineEditEnd(true);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* End the inline edit.
|
|
82
|
+
* @param refreshDescription
|
|
83
|
+
*/
|
|
84
|
+
inlineEditEnd(refreshDescription?: boolean): void {
|
|
85
|
+
Messaging.removeAllMessages();
|
|
86
|
+
this.base.setShowFooter(false);
|
|
87
|
+
for (const control of this.inlineEditControls) {
|
|
88
|
+
(control as EnhanceWithUI5<Field> & InlineEdit).inlineEditEnd(refreshDescription);
|
|
89
|
+
}
|
|
90
|
+
this.inlineEditControls = [];
|
|
91
|
+
this.base.getView().getModel("ui").setProperty("/isInlineEditActive", false);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Start the inline edit on the bindingContextPath for the propertyFullyQualifiedName.
|
|
96
|
+
* @param propertyFullyQualifiedName
|
|
97
|
+
* @param bindingContextPath
|
|
98
|
+
* @param controlTrigger
|
|
99
|
+
*/
|
|
100
|
+
startInlineEdit(
|
|
101
|
+
propertyFullyQualifiedName: string,
|
|
102
|
+
bindingContextPath: string,
|
|
103
|
+
controlTrigger?: EnhanceWithUI5<Field> & InlineEdit
|
|
104
|
+
): void {
|
|
105
|
+
if (controlTrigger?.getBindingContext()?.getProperty("HasDraftEntity")) {
|
|
106
|
+
// there is already a draft on the entity. We should not start inline edit
|
|
107
|
+
new DraftExistsDialog(this.base.getView()).open();
|
|
108
|
+
controlTrigger?.resetIndicatorPopup();
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
const inlineEditService = this.base.getAppComponent().getInlineEditService();
|
|
112
|
+
const dependentProperties = inlineEditService.getInlineConnectedProperties(
|
|
113
|
+
this.base.getRoutingTargetName(),
|
|
114
|
+
propertyFullyQualifiedName
|
|
115
|
+
);
|
|
116
|
+
|
|
117
|
+
this.inlineEditStart([], dependentProperties?.length ? dependentProperties : [propertyFullyQualifiedName], bindingContextPath);
|
|
118
|
+
this.base.getView().getModel("ui").setProperty("/isInlineEditActive", true);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Focus handling for inline edit. When one field gets focus, all other inline edit popups, that are currently opened, should be closed.
|
|
123
|
+
* @param inlineEditControl Controls which are currently in inline edit mode.
|
|
124
|
+
*/
|
|
125
|
+
focusHandling(inlineEditControl: Control): void {
|
|
126
|
+
for (const control of this.inlineEditControls) {
|
|
127
|
+
if (control !== inlineEditControl) {
|
|
128
|
+
(control as EnhanceWithUI5<Field> & InlineEdit).closeInlineEditPopupEditMode();
|
|
129
|
+
} else if (control === inlineEditControl) {
|
|
130
|
+
control.focus();
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Confirm the start of the inline edit on the bindingContextPath for the properties.
|
|
137
|
+
* @param inlineEditControls The fields that are currently in inline edit mode.
|
|
138
|
+
* @param properties
|
|
139
|
+
* @param bindingContextPath
|
|
140
|
+
*/
|
|
141
|
+
@hookable("Before")
|
|
142
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
143
|
+
async inlineEditStart(inlineEditControls: Control[], properties: string[], bindingContextPath: string): Promise<void> {
|
|
144
|
+
if (this.abortTimerBeforeSave) {
|
|
145
|
+
// if there is a timer to save
|
|
146
|
+
this.abortTimerBeforeSave();
|
|
147
|
+
this.abortTimerBeforeSave = undefined;
|
|
148
|
+
await this.inlineEditSave();
|
|
149
|
+
}
|
|
150
|
+
const alreadyRegisteredControls = this.inlineEditControls.map((control: Control) => control.getId());
|
|
151
|
+
for (const control of inlineEditControls) {
|
|
152
|
+
if (!alreadyRegisteredControls.includes(control.getId())) {
|
|
153
|
+
this.inlineEditControls.push(control);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
this.inlineEditBindingContextPath = bindingContextPath;
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* Convenience method to determine if a property should be considered for inline edit.
|
|
162
|
+
* @param propertyFullyQualifiedName
|
|
163
|
+
* @returns True when the property is considered for Inline edit.
|
|
164
|
+
*/
|
|
165
|
+
isPropertyConsideredForInlineEdit(propertyFullyQualifiedName: string): boolean {
|
|
166
|
+
return this.base
|
|
167
|
+
.getAppComponent()
|
|
168
|
+
.getInlineEditService()
|
|
169
|
+
.isPropertyConsideredForInlineEdit(this.base.getRoutingTargetName(), propertyFullyQualifiedName);
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* Handles the patchSent event: handle inline edit save success or failure.
|
|
174
|
+
* @param event The event sent by the binding
|
|
175
|
+
*/
|
|
176
|
+
async handleInlineEditPatchSent(event: ODataContextBinding$PatchSentEvent): Promise<void> {
|
|
177
|
+
this.patchPromise = new Promise<UI5Event>((resolve, reject) => {
|
|
178
|
+
event.getSource().attachEventOnce("patchCompleted", (patchCompletedEvent: UI5Event<{ success: boolean }>) => {
|
|
179
|
+
const bSuccess = patchCompletedEvent.getParameter("success");
|
|
180
|
+
if (bSuccess) {
|
|
181
|
+
resolve(patchCompletedEvent);
|
|
182
|
+
} else {
|
|
183
|
+
reject(patchCompletedEvent);
|
|
184
|
+
}
|
|
185
|
+
});
|
|
186
|
+
});
|
|
187
|
+
try {
|
|
188
|
+
await this.patchPromise;
|
|
189
|
+
this.patchPromise = undefined;
|
|
190
|
+
const resourceBundle = Lib.getResourceBundleFor("sap.fe.core");
|
|
191
|
+
if (resourceBundle) {
|
|
192
|
+
MessageToast.show(resourceBundle.getText("C_INLINE_EDIT_SAVED"));
|
|
193
|
+
}
|
|
194
|
+
this.inlineEditEnd();
|
|
195
|
+
} catch (patchCompletedEvent) {
|
|
196
|
+
this.patchPromise = undefined;
|
|
197
|
+
this.handleInlineEditSaveFailed();
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
/**
|
|
202
|
+
* Method to show the errors when the inline edit save fails.
|
|
203
|
+
*/
|
|
204
|
+
handleInlineEditSaveFailed(): void {
|
|
205
|
+
const metaModel = this.base.getView().getModel().getMetaModel();
|
|
206
|
+
|
|
207
|
+
const messages = Messaging.getMessageModel().getData();
|
|
208
|
+
if (messages.length) {
|
|
209
|
+
this.base.setShowFooter(true);
|
|
210
|
+
this.propagateInlineFieldGroupIdToMessageButton();
|
|
211
|
+
}
|
|
212
|
+
if (!this.inlineEditBindingContextPath) {
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
215
|
+
for (const message of messages) {
|
|
216
|
+
for (const target of message.getTargets()) {
|
|
217
|
+
const targetMetaContext = metaModel.createBindingContext(metaModel.getMetaPath(target));
|
|
218
|
+
const messageTargetDataModelObject = targetMetaContext
|
|
219
|
+
? MetaModelConverter.getInvolvedDataModelObjects<unknown>(targetMetaContext)
|
|
220
|
+
: null;
|
|
221
|
+
if (isProperty(messageTargetDataModelObject?.targetObject)) {
|
|
222
|
+
const targetFullyQualifiedName =
|
|
223
|
+
(messageTargetDataModelObject as unknown as DataModelObjectPath<Property>)?.targetObject?.fullyQualifiedName ?? "";
|
|
224
|
+
if (this.isPropertyConsideredForInlineEdit(targetFullyQualifiedName)) {
|
|
225
|
+
this.startInlineEdit(targetFullyQualifiedName, this.inlineEditBindingContextPath);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
/**
|
|
233
|
+
* Performs a delayedCall when you focus out of a field.
|
|
234
|
+
*/
|
|
235
|
+
async delayedCallToSave(): Promise<void> {
|
|
236
|
+
if (this.abortTimerBeforeSave || this.patchPromise) {
|
|
237
|
+
// if there is already a timer running or a save in process do nothing
|
|
238
|
+
return;
|
|
239
|
+
}
|
|
240
|
+
const timerBeforeSave = new Promise<void>((resolve, reject) => {
|
|
241
|
+
this.abortTimerBeforeSave = reject;
|
|
242
|
+
setTimeout(() => resolve(), 500);
|
|
243
|
+
});
|
|
244
|
+
try {
|
|
245
|
+
await timerBeforeSave;
|
|
246
|
+
this.abortTimerBeforeSave = undefined;
|
|
247
|
+
this.inlineEditSave();
|
|
248
|
+
} catch (e) {
|
|
249
|
+
// Nothing to see it is just someone that cancelled the timer
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
/**
|
|
254
|
+
* Method to ensure we leave inline edit before any navigation..
|
|
255
|
+
* @returns Promise that retruns true if we need to cancel navigation and stay in inline edit
|
|
256
|
+
*/
|
|
257
|
+
@methodOverride("routing")
|
|
258
|
+
async onBeforeNavigation(): Promise<boolean> {
|
|
259
|
+
if (this.inlineEditControls.length > 0) {
|
|
260
|
+
// there are controls in inline edit we need to prevent the navigation and show the dialog
|
|
261
|
+
if (this.abortTimerBeforeSave) {
|
|
262
|
+
this.abortTimerBeforeSave();
|
|
263
|
+
this.abortTimerBeforeSave = undefined;
|
|
264
|
+
}
|
|
265
|
+
if (!this.base.getView().getModel().hasPendingChanges(CommonUtils.INLINEEDIT_UPDATEGROUPID)) {
|
|
266
|
+
// fields are in inline edit and there are no pending changes. We need to show the dialog
|
|
267
|
+
this.inlineEditEnd();
|
|
268
|
+
return false;
|
|
269
|
+
}
|
|
270
|
+
try {
|
|
271
|
+
if (this.patchPromise) {
|
|
272
|
+
await this.patchPromise;
|
|
273
|
+
} else {
|
|
274
|
+
const dialogResult = await this.openInlineEditBeforeNavigationDialogAndWaitForResult();
|
|
275
|
+
if (dialogResult === "Save") {
|
|
276
|
+
// we save and wait for the patchPromise
|
|
277
|
+
await this.inlineEditSave();
|
|
278
|
+
if (this.base.getView().getModel().hasPendingChanges(CommonUtils.INLINEEDIT_UPDATEGROUPID)) {
|
|
279
|
+
// if after saves there are still changes this means save has failed. we need to cancel navigation
|
|
280
|
+
this.focusHandling(this.inlineEditControls[0]);
|
|
281
|
+
return true;
|
|
282
|
+
}
|
|
283
|
+
} else if (dialogResult === "Cancel") {
|
|
284
|
+
this.focusHandling(this.inlineEditControls[0]);
|
|
285
|
+
return true;
|
|
286
|
+
} else {
|
|
287
|
+
// we discard the changes
|
|
288
|
+
this.inlineEditDiscard();
|
|
289
|
+
}
|
|
290
|
+
return false;
|
|
291
|
+
}
|
|
292
|
+
} catch (e) {
|
|
293
|
+
this.focusHandling(this.inlineEditControls[0]);
|
|
294
|
+
return true;
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
return false;
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
/**
|
|
301
|
+
* Method to open the dialog before navigation.
|
|
302
|
+
* @returns Promise that returns the dialog choice once the user has clicked on ok or cancel
|
|
303
|
+
*/
|
|
304
|
+
async openInlineEditBeforeNavigationDialogAndWaitForResult(): Promise<DIALOGRESULT> {
|
|
305
|
+
return new Promise<DIALOGRESULT>((resolve) => {
|
|
306
|
+
new BeforeNavigationDialog(this.base.getView(), resolve).open();
|
|
307
|
+
});
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
/**
|
|
311
|
+
* Method to ensure we leave inline edit before any standard edit flowaction.
|
|
312
|
+
* @returns Promise that reject and triggers save or discard if we are in inline edit
|
|
313
|
+
*/
|
|
314
|
+
async onBeforeAnyEditFlowAction(): Promise<void> {
|
|
315
|
+
if (this.inlineEditControls.length > 0) {
|
|
316
|
+
if (this.abortTimerBeforeSave) {
|
|
317
|
+
this.abortTimerBeforeSave();
|
|
318
|
+
this.abortTimerBeforeSave = undefined;
|
|
319
|
+
}
|
|
320
|
+
if (!this.base.getView().getModel().hasPendingChanges(CommonUtils.INLINEEDIT_UPDATEGROUPID)) {
|
|
321
|
+
// fields are in inline edit and there are no pending changes. We don't need to show the dialog
|
|
322
|
+
this.inlineEditEnd();
|
|
323
|
+
return Promise.resolve();
|
|
324
|
+
}
|
|
325
|
+
new BeforeActionDialog(this.base.getView()).open();
|
|
326
|
+
// there are controls in inline edit we need to prevent the action and show the dialog
|
|
327
|
+
return Promise.reject();
|
|
328
|
+
}
|
|
329
|
+
return Promise.resolve();
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
/**
|
|
333
|
+
* Handle before edit.
|
|
334
|
+
* @returns Promise that reject if edit needs to be cancelled
|
|
335
|
+
*/
|
|
336
|
+
@methodOverride("editFlow")
|
|
337
|
+
async onBeforeEdit(): Promise<void> {
|
|
338
|
+
return this.onBeforeAnyEditFlowAction();
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
/**
|
|
342
|
+
* Handle before create.
|
|
343
|
+
* @returns Promise that reject if cretae needs to be cancelled
|
|
344
|
+
*/
|
|
345
|
+
@methodOverride("editFlow")
|
|
346
|
+
async onBeforeCreate(): Promise<void> {
|
|
347
|
+
return this.onBeforeAnyEditFlowAction();
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
/**
|
|
351
|
+
* Handle before delete.
|
|
352
|
+
* @returns Promise that reject if delete needs to be cancelled
|
|
353
|
+
*/
|
|
354
|
+
@methodOverride("editFlow")
|
|
355
|
+
async onBeforeDelete(): Promise<void> {
|
|
356
|
+
return this.onBeforeAnyEditFlowAction();
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
/**
|
|
360
|
+
* Handle before action.
|
|
361
|
+
* @returns Promise that reject if delete needs to be cancelled
|
|
362
|
+
*/
|
|
363
|
+
@methodOverride("editFlow")
|
|
364
|
+
async onBeforeExecuteAction(): Promise<void> {
|
|
365
|
+
return this.onBeforeAnyEditFlowAction();
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
/**
|
|
369
|
+
* Propagate the field group id to the message button.
|
|
370
|
+
*/
|
|
371
|
+
private propagateInlineFieldGroupIdToMessageButton(): void {
|
|
372
|
+
// we propagate the fieldgroupId to the footer and all its descendants to ensure that
|
|
373
|
+
// clicking on the footer does not trigger a focusout and a save for the inline edit
|
|
374
|
+
const footerControls =
|
|
375
|
+
(this.base
|
|
376
|
+
.getFooter()
|
|
377
|
+
?.findAggregatedObjects(true, (managedObject: ManagedObject) => managedObject.isA<Control>("sap.ui.core.Control")) as
|
|
378
|
+
| Control[]
|
|
379
|
+
| undefined) ?? [];
|
|
380
|
+
|
|
381
|
+
for (const control of footerControls) {
|
|
382
|
+
const childFieldGroupIds = new Set(control.getFieldGroupIds());
|
|
383
|
+
childFieldGroupIds.add("InlineEdit");
|
|
384
|
+
control.setFieldGroupIds(Array.from(childFieldGroupIds));
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
|
-
* (c) Copyright 2009-
|
|
3
|
+
* (c) Copyright 2009-2025 SAP SE. All rights reserved
|
|
4
4
|
*/
|
|
5
5
|
sap.ui.define(["sap/fe/base/ClassSupport", "sap/ui/core/mvc/ControllerExtension", "sap/ui/core/mvc/OverrideExecution"], function (ClassSupport, ControllerExtension, OverrideExecution) {
|
|
6
6
|
"use strict";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
|
-
* (c) Copyright 2009-
|
|
3
|
+
* (c) Copyright 2009-2025 SAP SE. All rights reserved
|
|
4
4
|
*/
|
|
5
5
|
sap.ui.define(["sap/base/Log", "sap/base/util/merge", "sap/fe/base/ClassSupport", "sap/fe/core/CommonUtils", "sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog", "sap/fe/core/controllerextensions/editFlow/draft", "sap/fe/core/converters/MetaModelConverter", "sap/fe/core/helpers/FPMHelper", "sap/fe/core/helpers/KeepAliveHelper", "sap/fe/core/helpers/KeepAliveRefreshTypes", "sap/fe/core/helpers/ModelHelper", "sap/fe/core/helpers/ResourceModelHelper", "sap/fe/navigation/SelectionVariant", "sap/ui/core/Element", "sap/ui/core/Lib", "sap/ui/core/mvc/ControllerExtension", "sap/ui/core/mvc/OverrideExecution", "../converters/helpers/Aggregation"], function (Log, mergeObjects, ClassSupport, CommonUtils, NotApplicableContextDialog, draft, MetaModelConverter, FPMHelper, KeepAliveHelper, KeepAliveRefreshTypes, ModelHelper, ResourceModelHelper, SelectionVariant, Element, Library, ControllerExtension, OverrideExecution, Aggregation) {
|
|
6
6
|
"use strict";
|