@sapui5/sap.fe.core 1.103.0 → 1.106.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 +5 -5
- package/src/sap/fe/core/.library +1 -1
- package/src/sap/fe/core/ActionRuntime.js +121 -0
- package/src/sap/fe/core/ActionRuntime.ts +122 -0
- package/src/sap/fe/core/AppComponent.js +24 -11
- package/src/sap/fe/core/AppComponent.ts +17 -5
- package/src/sap/fe/core/AppStateHandler.js +74 -62
- package/src/sap/fe/core/AppStateHandler.ts +24 -29
- package/src/sap/fe/core/BaseController.js +2 -2
- package/src/sap/fe/core/CommonUtils.js +147 -180
- package/src/sap/fe/core/CommonUtils.ts +166 -193
- package/src/sap/fe/core/ExtensionAPI.js +2 -2
- package/src/sap/fe/core/PageController.js +2 -2
- package/src/sap/fe/core/TemplateComponent.js +21 -10
- package/src/sap/fe/core/TemplateComponent.ts +3 -0
- package/src/sap/fe/core/TemplateModel.js +2 -2
- package/src/sap/fe/core/buildingBlocks/AttributeModel.js +11 -3
- package/src/sap/fe/core/buildingBlocks/AttributeModel.ts +7 -1
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +194 -43
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +162 -24
- package/src/sap/fe/core/buildingBlocks/BuildingBlockFormatter.js +14 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockFormatter.ts +5 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js +609 -227
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.ts +268 -119
- package/src/sap/fe/core/buildingBlocks/TraceInfo.js +111 -76
- package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +96 -76
- package/src/sap/fe/core/controllerextensions/BusyLocker.js +1 -1
- package/src/sap/fe/core/controllerextensions/EditFlow.js +723 -637
- package/src/sap/fe/core/controllerextensions/EditFlow.ts +361 -398
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +2 -2
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +83 -55
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +42 -44
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +29 -27
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +35 -30
- package/src/sap/fe/core/controllerextensions/InternalRouting.js +171 -74
- package/src/sap/fe/core/controllerextensions/InternalRouting.ts +167 -76
- package/src/sap/fe/core/controllerextensions/KPIManagement.js +5 -21
- package/src/sap/fe/core/controllerextensions/KPIManagement.ts +2 -17
- package/src/sap/fe/core/controllerextensions/MassEdit.js +3 -3
- package/src/sap/fe/core/controllerextensions/MassEdit.ts +1 -1
- package/src/sap/fe/core/controllerextensions/MessageHandler.js +2 -2
- package/src/sap/fe/core/controllerextensions/PageReady.js +3 -3
- package/src/sap/fe/core/controllerextensions/PageReady.ts +5 -1
- package/src/sap/fe/core/controllerextensions/Paginator.js +13 -13
- package/src/sap/fe/core/controllerextensions/Paginator.ts +11 -11
- package/src/sap/fe/core/controllerextensions/Placeholder.js +2 -2
- package/src/sap/fe/core/controllerextensions/Routing.js +2 -2
- package/src/sap/fe/core/controllerextensions/RoutingListener.js +1 -1
- package/src/sap/fe/core/controllerextensions/Share.js +154 -123
- package/src/sap/fe/core/controllerextensions/Share.ts +93 -95
- package/src/sap/fe/core/controllerextensions/SideEffects.js +157 -97
- package/src/sap/fe/core/controllerextensions/SideEffects.ts +151 -95
- package/src/sap/fe/core/controllerextensions/ViewState.js +151 -80
- package/src/sap/fe/core/controllerextensions/ViewState.ts +95 -93
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +1 -1
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js +9 -9
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.ts +6 -7
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +26 -11
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.ts +30 -11
- package/src/sap/fe/core/controllerextensions/collaboration/Manage.js +57 -40
- package/src/sap/fe/core/controllerextensions/collaboration/Manage.ts +55 -47
- package/src/sap/fe/core/controllerextensions/collaboration/ManageDialog.fragment.xml +31 -32
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +1376 -914
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +654 -714
- package/src/sap/fe/core/controllerextensions/editFlow/draft.js +372 -326
- package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +210 -276
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js +309 -0
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.ts +320 -0
- package/src/sap/fe/core/controllerextensions/editFlow/operations.js +670 -521
- package/src/sap/fe/core/controllerextensions/editFlow/operations.ts +537 -535
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +85 -65
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +16 -21
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +25 -13
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +53 -43
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +18 -27
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.ts +9 -15
- package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +19 -3
- package/src/sap/fe/core/controls/ActionParameterDialogFieldValueHelp.fragment.xml +35 -0
- package/src/sap/fe/core/controls/ActionParameterDialogValueHelp.fragment.xml +26 -16
- package/src/sap/fe/core/controls/Any.js +1 -1
- package/src/sap/fe/core/controls/CommandExecution.js +2 -2
- package/src/sap/fe/core/controls/ConditionalWrapper.js +2 -2
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js +5 -5
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.ts +0 -3
- package/src/sap/fe/core/controls/CustomQuickViewPage.js +2 -2
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +1 -1
- package/src/sap/fe/core/controls/FieldWrapper.js +2 -2
- package/src/sap/fe/core/controls/FileWrapper.js +8 -3
- package/src/sap/fe/core/controls/FileWrapper.ts +5 -1
- package/src/sap/fe/core/controls/FilterBar.js +2 -2
- package/src/sap/fe/core/controls/FormElementWrapper.js +2 -2
- package/src/sap/fe/core/controls/MassEditSelect.js +1 -1
- package/src/sap/fe/core/controls/MultiValueParameterDelegate.js +1 -1
- package/src/sap/fe/core/controls/NonComputedVisibleKeyFieldsDialog.fragment.xml +48 -17
- package/src/sap/fe/core/controls/filterbar/FilterContainer.js +2 -2
- package/src/sap/fe/core/controls/filterbar/VisualFilter.js +2 -2
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +2 -2
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +3 -3
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +2 -2
- package/src/sap/fe/core/controls/massEdit/MassEditField.fragment.xml +22 -35
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +2 -2
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +1 -1
- package/src/sap/fe/core/converters/ConverterContext.js +23 -2
- package/src/sap/fe/core/converters/ConverterContext.ts +34 -9
- package/src/sap/fe/core/converters/ManifestSettings.js +19 -18
- package/src/sap/fe/core/converters/ManifestSettings.ts +53 -47
- package/src/sap/fe/core/converters/ManifestWrapper.js +1 -1
- package/src/sap/fe/core/converters/MetaModelConverter.js +32 -10
- package/src/sap/fe/core/converters/MetaModelConverter.ts +42 -19
- package/src/sap/fe/core/converters/TemplateConverter.js +1 -1
- package/src/sap/fe/core/converters/annotations/DataField.js +5 -2
- package/src/sap/fe/core/converters/annotations/DataField.ts +5 -1
- package/src/sap/fe/core/converters/common/AnnotationConverter.js +69 -23
- package/src/sap/fe/core/converters/controls/Common/Action.js +98 -51
- package/src/sap/fe/core/converters/controls/Common/Action.ts +121 -44
- package/src/sap/fe/core/converters/controls/Common/Chart.js +31 -34
- package/src/sap/fe/core/converters/controls/Common/Chart.ts +26 -34
- package/src/sap/fe/core/converters/controls/Common/Criticality.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +43 -7
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +60 -33
- package/src/sap/fe/core/converters/controls/Common/Form.js +8 -6
- package/src/sap/fe/core/converters/controls/Common/Form.ts +11 -14
- package/src/sap/fe/core/converters/controls/Common/KPI.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/KPI.ts +16 -15
- package/src/sap/fe/core/converters/controls/Common/Table.js +188 -157
- package/src/sap/fe/core/converters/controls/Common/Table.ts +279 -230
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +4 -4
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +57 -21
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +71 -18
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +30 -8
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +24 -7
- package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.js +1 -1
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +43 -34
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +37 -25
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +85 -49
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +74 -50
- package/src/sap/fe/core/converters/helpers/Aggregation.js +54 -4
- package/src/sap/fe/core/converters/helpers/Aggregation.ts +56 -8
- package/src/sap/fe/core/converters/helpers/BindingHelper.js +1 -1
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +6 -4
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +10 -2
- package/src/sap/fe/core/converters/helpers/DataFieldHelper.js +182 -0
- package/src/sap/fe/core/converters/helpers/DataFieldHelper.ts +167 -0
- package/src/sap/fe/core/converters/helpers/ID.js +3 -1
- package/src/sap/fe/core/converters/helpers/ID.ts +1 -0
- 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/helpers/SelectionVariantHelper.ts +2 -3
- package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +1 -1
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +8 -14
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +6 -9
- package/src/sap/fe/core/converters/templates/ListReportConverter.js +31 -31
- package/src/sap/fe/core/converters/templates/ListReportConverter.ts +54 -47
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +44 -15
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +64 -30
- package/src/sap/fe/core/designtime/AppComponent.designtime.js +1 -1
- package/src/sap/fe/core/formatters/CollaborationFormatter.js +1 -1
- package/src/sap/fe/core/formatters/FPMFormatter.js +1 -1
- package/src/sap/fe/core/formatters/KPIFormatter.js +1 -1
- package/src/sap/fe/core/formatters/StandardFormatter.js +13 -6
- package/src/sap/fe/core/formatters/StandardFormatter.ts +20 -14
- package/src/sap/fe/core/formatters/TableFormatter.js +1 -1
- package/src/sap/fe/core/formatters/TableFormatterTypes.js +1 -1
- package/src/sap/fe/core/formatters/ValueFormatter.js +1 -1
- package/src/sap/fe/core/fpm/Component.js +33 -7
- package/src/sap/fe/core/fpm/Component.ts +14 -0
- package/src/sap/fe/core/helpers/AnnotationEnum.js +1 -1
- package/src/sap/fe/core/helpers/AppStartupHelper.js +5 -4
- package/src/sap/fe/core/helpers/AppStartupHelper.ts +4 -3
- package/src/sap/fe/core/helpers/BindingToolkit.js +56 -24
- package/src/sap/fe/core/helpers/BindingToolkit.ts +67 -21
- package/src/sap/fe/core/helpers/ClassSupport.js +31 -3
- package/src/sap/fe/core/helpers/ClassSupport.ts +24 -1
- 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 +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 +39 -0
- package/src/sap/fe/core/helpers/LoaderUtils.ts +14 -0
- package/src/sap/fe/core/helpers/MassEditHelper.js +475 -99
- package/src/sap/fe/core/helpers/MassEditHelper.ts +468 -155
- package/src/sap/fe/core/helpers/MessageStrip.js +81 -0
- package/src/sap/fe/core/helpers/MessageStrip.ts +79 -0
- package/src/sap/fe/core/helpers/ModelHelper.js +1 -1
- package/src/sap/fe/core/helpers/PasteHelper.js +1 -1
- package/src/sap/fe/core/helpers/SemanticDateOperators.js +82 -36
- package/src/sap/fe/core/helpers/SemanticDateOperators.ts +52 -36
- package/src/sap/fe/core/helpers/SemanticKeyHelper.js +1 -1
- package/src/sap/fe/core/helpers/SideEffectsHelper.js +146 -0
- package/src/sap/fe/core/helpers/SideEffectsHelper.ts +128 -0
- package/src/sap/fe/core/helpers/StableIdHelper.js +1 -1
- package/src/sap/fe/core/helpers/Synchronization.js +1 -1
- package/src/sap/fe/core/helpers/ToES6Promise.js +32 -0
- package/src/sap/fe/core/helpers/ToES6Promise.ts +19 -0
- package/src/sap/fe/core/jsx-runtime/Fragment.js +16 -0
- package/src/sap/fe/core/jsx-runtime/Fragment.ts +3 -0
- package/src/sap/fe/core/jsx-runtime/ViewLoader.js +109 -0
- package/src/sap/fe/core/jsx-runtime/ViewLoader.tsx +47 -0
- package/src/sap/fe/core/jsx-runtime/jsx-control.js +119 -0
- package/src/sap/fe/core/jsx-runtime/jsx-control.ts +98 -0
- package/src/sap/fe/core/jsx-runtime/jsx-xml.js +105 -0
- package/src/sap/fe/core/jsx-runtime/jsx-xml.ts +89 -0
- package/src/sap/fe/core/jsx-runtime/jsx.js +12 -90
- package/src/sap/fe/core/jsx-runtime/jsx.ts +24 -85
- package/src/sap/fe/core/jsx-runtime/jsxs.js +1 -1
- package/src/sap/fe/core/jsx-runtime/useMDXComponents.js +179 -0
- package/src/sap/fe/core/jsx-runtime/useMDXComponents.tsx +150 -0
- package/src/sap/fe/core/library.js +2 -2
- package/src/sap/fe/core/library.support.js +1 -1
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +1 -1
- package/src/sap/fe/core/messagebundle.properties +4 -41
- package/src/sap/fe/core/messagebundle_ar.properties +22 -45
- package/src/sap/fe/core/messagebundle_bg.properties +22 -45
- package/src/sap/fe/core/messagebundle_ca.properties +22 -45
- package/src/sap/fe/core/messagebundle_cs.properties +22 -45
- package/src/sap/fe/core/messagebundle_cy.properties +21 -44
- package/src/sap/fe/core/messagebundle_da.properties +22 -45
- package/src/sap/fe/core/messagebundle_de.properties +22 -45
- package/src/sap/fe/core/messagebundle_el.properties +22 -45
- package/src/sap/fe/core/messagebundle_en.properties +21 -44
- package/src/sap/fe/core/messagebundle_en_GB.properties +21 -44
- package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +21 -42
- package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +20 -40
- package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +21 -42
- package/src/sap/fe/core/messagebundle_es.properties +22 -45
- package/src/sap/fe/core/messagebundle_es_MX.properties +22 -45
- package/src/sap/fe/core/messagebundle_et.properties +22 -45
- package/src/sap/fe/core/messagebundle_fi.properties +22 -45
- package/src/sap/fe/core/messagebundle_fr.properties +21 -44
- package/src/sap/fe/core/messagebundle_fr_CA.properties +20 -43
- package/src/sap/fe/core/messagebundle_hi.properties +22 -45
- package/src/sap/fe/core/messagebundle_hr.properties +22 -45
- package/src/sap/fe/core/messagebundle_hu.properties +22 -45
- package/src/sap/fe/core/messagebundle_id.properties +22 -45
- package/src/sap/fe/core/messagebundle_it.properties +22 -45
- package/src/sap/fe/core/messagebundle_iw.properties +22 -45
- package/src/sap/fe/core/messagebundle_ja.properties +22 -45
- package/src/sap/fe/core/messagebundle_kk.properties +22 -45
- package/src/sap/fe/core/messagebundle_ko.properties +27 -50
- package/src/sap/fe/core/messagebundle_lt.properties +22 -45
- package/src/sap/fe/core/messagebundle_lv.properties +22 -45
- package/src/sap/fe/core/messagebundle_ms.properties +22 -45
- package/src/sap/fe/core/messagebundle_nl.properties +24 -47
- package/src/sap/fe/core/messagebundle_no.properties +22 -45
- package/src/sap/fe/core/messagebundle_pl.properties +23 -46
- package/src/sap/fe/core/messagebundle_pt.properties +23 -46
- package/src/sap/fe/core/messagebundle_pt_PT.properties +22 -45
- package/src/sap/fe/core/messagebundle_ro.properties +22 -45
- package/src/sap/fe/core/messagebundle_ru.properties +22 -45
- package/src/sap/fe/core/messagebundle_sh.properties +22 -45
- package/src/sap/fe/core/messagebundle_sk.properties +22 -45
- package/src/sap/fe/core/messagebundle_sl.properties +22 -45
- package/src/sap/fe/core/messagebundle_sv.properties +22 -45
- package/src/sap/fe/core/messagebundle_th.properties +20 -43
- package/src/sap/fe/core/messagebundle_tr.properties +22 -45
- package/src/sap/fe/core/messagebundle_uk.properties +22 -45
- package/src/sap/fe/core/messagebundle_vi.properties +22 -45
- package/src/sap/fe/core/messagebundle_zh_CN.properties +22 -45
- package/src/sap/fe/core/messagebundle_zh_TW.properties +22 -45
- package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +2 -2
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +102 -74
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +62 -63
- package/src/sap/fe/core/services/EnvironmentServiceFactory.js +2 -2
- package/src/sap/fe/core/services/NavigationServiceFactory.js +11 -8
- package/src/sap/fe/core/services/NavigationServiceFactory.ts +10 -7
- package/src/sap/fe/core/services/ResourceModelServiceFactory.js +2 -2
- package/src/sap/fe/core/services/RoutingServiceFactory.js +2 -2
- package/src/sap/fe/core/services/ShellServicesFactory.js +22 -2
- package/src/sap/fe/core/services/ShellServicesFactory.ts +19 -0
- package/src/sap/fe/core/services/SideEffectsServiceFactory.js +4 -4
- package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +2 -2
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +251 -200
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +160 -144
- package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +2 -2
- 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/CommonFormatters.js +4 -3
- package/src/sap/fe/core/templating/CommonFormatters.ts +5 -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 +8 -1
- package/src/sap/fe/core/templating/DataModelPathHelper.ts +5 -2
- package/src/sap/fe/core/templating/DisplayModeFormatter.js +1 -1
- package/src/sap/fe/core/templating/EntitySetHelper.js +4 -5
- package/src/sap/fe/core/templating/EntitySetHelper.ts +4 -3
- package/src/sap/fe/core/templating/FieldControlHelper.js +1 -1
- package/src/sap/fe/core/templating/FilterHelper.js +34 -15
- package/src/sap/fe/core/templating/FilterHelper.ts +28 -12
- 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/UIFormatters.js +5 -3
- package/src/sap/fe/core/templating/UIFormatters.ts +7 -5
- package/src/sap/fe/core/type/DateTimeWithTimezone.js +2 -2
- package/src/sap/fe/core/type/Email.js +2 -2
|
@@ -0,0 +1,320 @@
|
|
|
1
|
+
import DataLossOrDraftDiscardHandler from "sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler";
|
|
2
|
+
import EditState from "sap/fe/core/helpers/EditState";
|
|
3
|
+
import ActivitySync from "sap/fe/core/controllerextensions/collaboration/ActivitySync";
|
|
4
|
+
import Log from "sap/base/Log";
|
|
5
|
+
import type PageController from "../../PageController";
|
|
6
|
+
|
|
7
|
+
/* Enum for navigation types */
|
|
8
|
+
enum NavigationType {
|
|
9
|
+
BackNavigation = "BackNavigation",
|
|
10
|
+
ForwardNavigation = "ForwardNavigation"
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* The method checks whether an optional parameter in the manifest is set to silently keep the draft in case a forward navigation is triggered.
|
|
15
|
+
*
|
|
16
|
+
* @param pageController The reference to the current PageController instance
|
|
17
|
+
* @returns Boolean value with true or false to silently keep the draft
|
|
18
|
+
*/
|
|
19
|
+
function silentlyKeepDraftOnForwardNavigation(pageController: PageController) {
|
|
20
|
+
let rbSilentlyKeep = false;
|
|
21
|
+
const oManifest = pageController.getAppComponent().getManifest() as any;
|
|
22
|
+
rbSilentlyKeep = oManifest?.["sap.fe"]?.app?.silentlyKeepDraftOnForwardNavigation || false;
|
|
23
|
+
return rbSilentlyKeep;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Logic to process the fcl mode.
|
|
28
|
+
*
|
|
29
|
+
* @param draftAdminData Admin data
|
|
30
|
+
* @param fnCancelFunction The cancel function
|
|
31
|
+
* @param oController The current controller referenced
|
|
32
|
+
* @param processFunctionForDrafts The functon to process the handler
|
|
33
|
+
* @param bSkipBindingToView The optional parameter to skip the binding to the view
|
|
34
|
+
*/
|
|
35
|
+
async function processFclMode(
|
|
36
|
+
draftAdminData: any,
|
|
37
|
+
fnCancelFunction: any,
|
|
38
|
+
oController: any,
|
|
39
|
+
processFunctionForDrafts: any,
|
|
40
|
+
bSkipBindingToView?: boolean,
|
|
41
|
+
) {
|
|
42
|
+
// The application is running in FCL mode so in this case we fall back to
|
|
43
|
+
// the old logic since the dirty state handling is not properly working
|
|
44
|
+
// for FCL.
|
|
45
|
+
if (draftAdminData.CreationDateTime !== draftAdminData.LastChangeDateTime) {
|
|
46
|
+
DataLossOrDraftDiscardHandler.performAfterDiscardorKeepDraft(
|
|
47
|
+
processFunctionForDrafts,
|
|
48
|
+
fnCancelFunction,
|
|
49
|
+
oController,
|
|
50
|
+
bSkipBindingToView
|
|
51
|
+
);
|
|
52
|
+
} else {
|
|
53
|
+
processFunctionForDrafts();
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Logic to process the mode with no active entity.
|
|
59
|
+
*
|
|
60
|
+
* @param draftAdminData Admin data
|
|
61
|
+
* @param fnCancelFunction The cancel function
|
|
62
|
+
* @param oController The current controller referenced
|
|
63
|
+
* @param processFunctionForDrafts The functon to process the handler
|
|
64
|
+
* @param navigationType The navigation type for which the function should be called
|
|
65
|
+
* @param bSilentlyKeepDraftOnForwardNavigation The parameter to determine whether to skip the popup appearance in forward case
|
|
66
|
+
* @param bSkipBindingToView The optional parameter to skip the binding to the view
|
|
67
|
+
*/
|
|
68
|
+
async function processNoActiveEntityMode(
|
|
69
|
+
draftAdminData: any,
|
|
70
|
+
fnCancelFunction: any,
|
|
71
|
+
oController: any,
|
|
72
|
+
processFunctionForDrafts: any,
|
|
73
|
+
navigationType: NavigationType,
|
|
74
|
+
bSilentlyKeepDraftOnForwardNavigation: boolean,
|
|
75
|
+
bSkipBindingToView?: boolean) {
|
|
76
|
+
// There is no active entity so we are editing either newly created data or
|
|
77
|
+
// a draft which has never been saved to active version
|
|
78
|
+
// Since we want to react differently in the two situations, we have to check the
|
|
79
|
+
// dirty state
|
|
80
|
+
if (EditState.isEditStateDirty()) {
|
|
81
|
+
if (
|
|
82
|
+
draftAdminData.CreationDateTime === draftAdminData.LastChangeDateTime &&
|
|
83
|
+
navigationType === NavigationType.BackNavigation
|
|
84
|
+
) {
|
|
85
|
+
// in case we have untouched changes for the draft and a "back"
|
|
86
|
+
// navigation we can silently discard the draft again
|
|
87
|
+
// eslint-disable-next-line promise/no-nesting
|
|
88
|
+
try {
|
|
89
|
+
await DataLossOrDraftDiscardHandler.discardDraft(oController, bSkipBindingToView);
|
|
90
|
+
processFunctionForDrafts();
|
|
91
|
+
} catch (error: any) {
|
|
92
|
+
Log.error("Error while canceling the document", error);
|
|
93
|
+
}
|
|
94
|
+
} else if (navigationType === NavigationType.ForwardNavigation && bSilentlyKeepDraftOnForwardNavigation) {
|
|
95
|
+
// In case we have a "forward navigation" and an additional parameter set in the manifest
|
|
96
|
+
// we "silently" keep the draft
|
|
97
|
+
processFunctionForDrafts();
|
|
98
|
+
} else {
|
|
99
|
+
// In this case data is being changed or a forward navigation is triggered
|
|
100
|
+
// and we always want to show the dataloss dialog on navigation
|
|
101
|
+
DataLossOrDraftDiscardHandler.performAfterDiscardorKeepDraft(
|
|
102
|
+
processFunctionForDrafts,
|
|
103
|
+
fnCancelFunction,
|
|
104
|
+
oController,
|
|
105
|
+
bSkipBindingToView
|
|
106
|
+
);
|
|
107
|
+
}
|
|
108
|
+
} else {
|
|
109
|
+
// We are editing a draft which has been created earlier but never saved to active
|
|
110
|
+
// version and since the edit state is not dirty, there have been no user changes
|
|
111
|
+
// so in this case we want to silently navigate and do nothing
|
|
112
|
+
processFunctionForDrafts();
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Logic to process the draft editing for existing entity.
|
|
117
|
+
*
|
|
118
|
+
* @param oController The current controller referenced.
|
|
119
|
+
* @param oContext The context of the current call
|
|
120
|
+
* @param processFunctionForDrafts The functon to process the handler
|
|
121
|
+
* @param navigationType The navigation type for which the function should be called
|
|
122
|
+
*/
|
|
123
|
+
async function processEditingDraftForExistingEntity(
|
|
124
|
+
oController: any,
|
|
125
|
+
oContext: any,
|
|
126
|
+
processFunctionForDrafts: any,
|
|
127
|
+
navigationType: NavigationType,
|
|
128
|
+
) {
|
|
129
|
+
// We are editing a draft for an existing active entity
|
|
130
|
+
// The CreationDateTime and LastChangeDateTime are equal, so this draft was
|
|
131
|
+
// never saved before, hence we're currently editing a newly created draft for
|
|
132
|
+
// an existing active entity for the first time.
|
|
133
|
+
// Also there have so far been no changes made to the draft and in this
|
|
134
|
+
// case we want to silently navigate and delete the draftin case of a back
|
|
135
|
+
// navigation but in case of a forward navigation we want to silently keep it!
|
|
136
|
+
if (navigationType === NavigationType.BackNavigation) {
|
|
137
|
+
const mParameters = {
|
|
138
|
+
skipDiscardPopover: true
|
|
139
|
+
};
|
|
140
|
+
|
|
141
|
+
try {
|
|
142
|
+
await oController.editFlow.cancelDocument(oContext, mParameters);
|
|
143
|
+
processFunctionForDrafts();
|
|
144
|
+
} catch (error: any) {
|
|
145
|
+
Log.error("Error while canceling the document", error);
|
|
146
|
+
}
|
|
147
|
+
} else {
|
|
148
|
+
// In case of a forward navigation we silently keep the draft and only
|
|
149
|
+
// execute the followup function.
|
|
150
|
+
processFunctionForDrafts();
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* Logic to process the edit state dirty.
|
|
156
|
+
*
|
|
157
|
+
* @param oController The current controller referenced.
|
|
158
|
+
* @param fnCancelFunction The cancel function
|
|
159
|
+
* @param processFunctionForDrafts The functon to process the handler
|
|
160
|
+
* @param navigationType The navigation type for which the function should be called
|
|
161
|
+
* @param bSilentlyKeepDraftOnForwardNavigation The parameter to determine whether to skip the popup appearance in forward case
|
|
162
|
+
* @param bSkipBindingToView The optional parameter to skip the binding to the view.
|
|
163
|
+
*/
|
|
164
|
+
async function processEditStateDirty(
|
|
165
|
+
oController: any,
|
|
166
|
+
fnCancelFunction: any,
|
|
167
|
+
processFunctionForDrafts: any,
|
|
168
|
+
navigationType: NavigationType,
|
|
169
|
+
bSilentlyKeepDraftOnForwardNavigation: boolean,
|
|
170
|
+
bSkipBindingToView?: boolean) {
|
|
171
|
+
if (navigationType === NavigationType.ForwardNavigation && bSilentlyKeepDraftOnForwardNavigation) {
|
|
172
|
+
// In case we have a "forward navigation" and an additional parameter set in the manifest
|
|
173
|
+
// we "silently" keep the draft
|
|
174
|
+
processFunctionForDrafts();
|
|
175
|
+
} else {
|
|
176
|
+
// The CreationDateTime and LastChangeDateTime are NOT equal, so we are currently editing
|
|
177
|
+
// an existing draft and need to distinguish depending on if any changes
|
|
178
|
+
// have been made in the current editing session or not
|
|
179
|
+
// Changes have been made in the current editing session so we want
|
|
180
|
+
// to show the dataloss dialog and let the user decide
|
|
181
|
+
DataLossOrDraftDiscardHandler.performAfterDiscardorKeepDraft(
|
|
182
|
+
processFunctionForDrafts,
|
|
183
|
+
fnCancelFunction,
|
|
184
|
+
oController,
|
|
185
|
+
bSkipBindingToView
|
|
186
|
+
);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
/**
|
|
192
|
+
* Logic to process the admin data.
|
|
193
|
+
*
|
|
194
|
+
* @param draftAdminData Admin data
|
|
195
|
+
* @param fnProcessFunction The functon to process the handler
|
|
196
|
+
* @param fnCancelFunction The cancel function
|
|
197
|
+
* @param oContext The context of the current call
|
|
198
|
+
* @param oController The current controller referenced
|
|
199
|
+
* @param bSkipBindingToView The optional parameter to skip the binding to the view
|
|
200
|
+
* @param navigationType The navigation type for which the function should be called
|
|
201
|
+
*/
|
|
202
|
+
async function processDraftAdminData(draftAdminData: any, fnProcessFunction: any,
|
|
203
|
+
fnCancelFunction: any,
|
|
204
|
+
oContext: any,
|
|
205
|
+
oController: any,
|
|
206
|
+
bSkipBindingToView?: boolean,
|
|
207
|
+
navigationType: NavigationType = NavigationType.BackNavigation) {
|
|
208
|
+
|
|
209
|
+
const collaborationConnected = ActivitySync.isConnected(oController.getView());
|
|
210
|
+
const processFunctionForDrafts = !collaborationConnected
|
|
211
|
+
? fnProcessFunction
|
|
212
|
+
: function (...args: any[]) {
|
|
213
|
+
ActivitySync.disconnect(oController.getView());
|
|
214
|
+
fnProcessFunction.apply(null, ...args);
|
|
215
|
+
};
|
|
216
|
+
|
|
217
|
+
const bSilentlyKeepDraftOnForwardNavigation = silentlyKeepDraftOnForwardNavigation(oController);
|
|
218
|
+
|
|
219
|
+
if (draftAdminData) {
|
|
220
|
+
if (oController.getAppComponent().getRootViewController().isFclEnabled()) {
|
|
221
|
+
await processFclMode(
|
|
222
|
+
draftAdminData,
|
|
223
|
+
fnCancelFunction,
|
|
224
|
+
oController,
|
|
225
|
+
processFunctionForDrafts,
|
|
226
|
+
bSkipBindingToView
|
|
227
|
+
)
|
|
228
|
+
} else if (!oContext.getObject().HasActiveEntity) {
|
|
229
|
+
processNoActiveEntityMode(
|
|
230
|
+
draftAdminData,
|
|
231
|
+
fnCancelFunction,
|
|
232
|
+
oController,
|
|
233
|
+
processFunctionForDrafts,
|
|
234
|
+
navigationType,
|
|
235
|
+
bSilentlyKeepDraftOnForwardNavigation,
|
|
236
|
+
bSkipBindingToView
|
|
237
|
+
);
|
|
238
|
+
} else if (draftAdminData.CreationDateTime === draftAdminData.LastChangeDateTime) {
|
|
239
|
+
processEditingDraftForExistingEntity(
|
|
240
|
+
oController,
|
|
241
|
+
oContext,
|
|
242
|
+
processFunctionForDrafts,
|
|
243
|
+
navigationType,
|
|
244
|
+
)
|
|
245
|
+
} else if (EditState.isEditStateDirty()) {
|
|
246
|
+
processEditStateDirty(
|
|
247
|
+
oController,
|
|
248
|
+
fnCancelFunction,
|
|
249
|
+
processFunctionForDrafts,
|
|
250
|
+
navigationType,
|
|
251
|
+
bSilentlyKeepDraftOnForwardNavigation,
|
|
252
|
+
bSkipBindingToView
|
|
253
|
+
)
|
|
254
|
+
} else {
|
|
255
|
+
// The user started editing the existing draft but did not make any changes
|
|
256
|
+
// in the current editing session, so in this case we do not want
|
|
257
|
+
// to show the dataloss dialog but just keep the draft
|
|
258
|
+
processFunctionForDrafts();
|
|
259
|
+
}
|
|
260
|
+
} else {
|
|
261
|
+
fnProcessFunction();
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
/**
|
|
266
|
+
* The general handler in which the individual steps are called.
|
|
267
|
+
*
|
|
268
|
+
* @param fnProcessFunction
|
|
269
|
+
* @param fnCancelFunction
|
|
270
|
+
* @param oContext
|
|
271
|
+
* @param oController
|
|
272
|
+
* @param bSkipBindingToView
|
|
273
|
+
* @param navigationType
|
|
274
|
+
*/
|
|
275
|
+
async function processDataLossOrDraftDiscardConfirmation(
|
|
276
|
+
fnProcessFunction: any,
|
|
277
|
+
fnCancelFunction: any,
|
|
278
|
+
oContext: any,
|
|
279
|
+
oController: any,
|
|
280
|
+
bSkipBindingToView?: boolean,
|
|
281
|
+
navigationType: NavigationType = NavigationType.BackNavigation
|
|
282
|
+
) {
|
|
283
|
+
const oModel = oContext.getModel();
|
|
284
|
+
const draftDataContext = oModel.bindContext(`${oContext.getPath()}/DraftAdministrativeData`).getBoundContext();
|
|
285
|
+
|
|
286
|
+
if (
|
|
287
|
+
oContext &&
|
|
288
|
+
oContext.getObject() &&
|
|
289
|
+
(!oContext.getObject().DraftAdministrativeData || oContext.getObject().IsActiveEntity === true)
|
|
290
|
+
) {
|
|
291
|
+
fnProcessFunction();
|
|
292
|
+
} else {
|
|
293
|
+
try {
|
|
294
|
+
|
|
295
|
+
const draftAdminData = await draftDataContext.requestObject()
|
|
296
|
+
await processDraftAdminData(draftAdminData,
|
|
297
|
+
fnProcessFunction,
|
|
298
|
+
fnCancelFunction,
|
|
299
|
+
oContext,
|
|
300
|
+
oController,
|
|
301
|
+
bSkipBindingToView,
|
|
302
|
+
navigationType);
|
|
303
|
+
|
|
304
|
+
} catch (oError: any) {
|
|
305
|
+
Log.error("Cannot retrieve draftDataContext information", oError);
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
const draftDataLossPopup = {
|
|
311
|
+
processDataLossOrDraftDiscardConfirmation: processDataLossOrDraftDiscardConfirmation,
|
|
312
|
+
silentlyKeepDraftOnForwardNavigation: silentlyKeepDraftOnForwardNavigation,
|
|
313
|
+
NavigationType: NavigationType,
|
|
314
|
+
processFclMode: processFclMode,
|
|
315
|
+
processNoActiveEntityMode: processNoActiveEntityMode,
|
|
316
|
+
processEditingDraftForExistingEntity: processEditingDraftForExistingEntity,
|
|
317
|
+
processEditStateDirty: processEditStateDirty
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
export default draftDataLossPopup;
|