@sapui5/sap.fe.core 1.100.0 → 1.102.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 +4 -4
- package/src/sap/fe/core/.library +2 -3
- package/src/sap/fe/core/AppComponent.js +23 -30
- package/src/sap/fe/core/AppComponent.ts +35 -40
- package/src/sap/fe/core/AppStateHandler.js +8 -8
- package/src/sap/fe/core/AppStateHandler.ts +11 -11
- package/src/sap/fe/core/BaseController.js +9 -9
- package/src/sap/fe/core/BaseController.ts +3 -4
- package/src/sap/fe/core/CommonUtils.js +122 -101
- package/src/sap/fe/core/CommonUtils.ts +239 -193
- package/src/sap/fe/core/ExtensionAPI.js +12 -13
- package/src/sap/fe/core/ExtensionAPI.ts +21 -31
- package/src/sap/fe/core/PageController.js +19 -13
- package/src/sap/fe/core/PageController.ts +40 -34
- package/src/sap/fe/core/TemplateComponent.js +198 -123
- package/src/sap/fe/core/TemplateComponent.ts +109 -121
- package/src/sap/fe/core/TemplateModel.js +7 -9
- package/src/sap/fe/core/TemplateModel.ts +3 -3
- package/src/sap/fe/core/buildingBlocks/AttributeModel.js +60 -0
- package/src/sap/fe/core/buildingBlocks/AttributeModel.ts +37 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +165 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +178 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js +935 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.ts +837 -0
- package/src/sap/fe/core/buildingBlocks/TraceInfo.js +436 -0
- package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +431 -0
- package/src/sap/fe/core/{BusyLocker.js → controllerextensions/BusyLocker.js} +1 -1
- package/src/sap/fe/core/{BusyLocker.ts → controllerextensions/BusyLocker.ts} +7 -7
- package/src/sap/fe/core/controllerextensions/EditFlow.js +660 -288
- package/src/sap/fe/core/controllerextensions/EditFlow.ts +513 -331
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +11 -11
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +6 -7
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +43 -25
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +132 -103
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +16 -16
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +64 -55
- package/src/sap/fe/core/controllerextensions/InternalRouting.js +166 -99
- package/src/sap/fe/core/controllerextensions/InternalRouting.ts +187 -149
- package/src/sap/fe/core/controllerextensions/KPIManagement.js +14 -14
- package/src/sap/fe/core/controllerextensions/KPIManagement.ts +12 -11
- package/src/sap/fe/core/controllerextensions/MassEdit.js +13 -12
- package/src/sap/fe/core/controllerextensions/MassEdit.ts +22 -22
- package/src/sap/fe/core/controllerextensions/MessageHandler.js +14 -26
- package/src/sap/fe/core/controllerextensions/MessageHandler.ts +20 -30
- package/src/sap/fe/core/controllerextensions/PageReady.js +25 -23
- package/src/sap/fe/core/controllerextensions/PageReady.ts +49 -47
- package/src/sap/fe/core/controllerextensions/Paginator.js +24 -15
- package/src/sap/fe/core/controllerextensions/Paginator.ts +35 -20
- package/src/sap/fe/core/controllerextensions/Placeholder.js +10 -10
- package/src/sap/fe/core/controllerextensions/Placeholder.ts +12 -14
- package/src/sap/fe/core/controllerextensions/Routing.js +11 -11
- package/src/sap/fe/core/controllerextensions/Routing.ts +12 -13
- package/src/sap/fe/core/controllerextensions/Share.js +34 -16
- package/src/sap/fe/core/controllerextensions/Share.ts +50 -32
- package/src/sap/fe/core/controllerextensions/SideEffects.js +15 -15
- package/src/sap/fe/core/controllerextensions/SideEffects.ts +64 -65
- package/src/sap/fe/core/controllerextensions/ViewState.js +27 -31
- package/src/sap/fe/core/controllerextensions/ViewState.ts +103 -102
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +105 -0
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +98 -0
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js +360 -0
- package/src/sap/fe/core/{actions → controllerextensions}/collaboration/ActivitySync.ts +90 -132
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +146 -0
- package/src/sap/fe/core/{actions → controllerextensions}/collaboration/CollaborationCommon.ts +18 -8
- package/src/sap/fe/core/controllerextensions/collaboration/Manage.js +264 -0
- package/src/sap/fe/core/{actions → controllerextensions}/collaboration/Manage.ts +35 -33
- package/src/sap/fe/core/controllerextensions/collaboration/ManageDialog.fragment.xml +100 -0
- package/src/sap/fe/core/{actions → controllerextensions}/collaboration/UserDetails.fragment.xml +5 -7
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +1584 -0
- package/src/sap/fe/core/{TransactionHelper.ts → controllerextensions/editFlow/TransactionHelper.ts} +190 -159
- package/src/sap/fe/core/controllerextensions/editFlow/draft.js +780 -0
- package/src/sap/fe/core/{actions → controllerextensions/editFlow}/draft.ts +329 -76
- package/src/sap/fe/core/controllerextensions/editFlow/operations.js +1149 -0
- package/src/sap/fe/core/{actions → controllerextensions/editFlow}/operations.ts +169 -97
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +190 -0
- package/src/sap/fe/core/{actions → controllerextensions/editFlow}/sticky.ts +76 -12
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +592 -0
- package/src/sap/fe/core/{actions → controllerextensions/messageHandler}/messageHandling.ts +83 -60
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +940 -0
- package/src/sap/fe/core/{RouterProxy.ts → controllerextensions/routing/RouterProxy.ts} +52 -36
- package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +21 -18
- package/src/sap/fe/core/controls/Any.js +28 -0
- package/src/sap/fe/core/controls/Any.ts +30 -0
- package/src/sap/fe/core/controls/CommandExecution.js +50 -16
- package/src/sap/fe/core/controls/CommandExecution.ts +31 -22
- package/src/sap/fe/core/controls/ConditionalWrapper.js +136 -65
- package/src/sap/fe/core/controls/ConditionalWrapper.ts +49 -58
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js +371 -0
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.ts +282 -0
- package/src/sap/fe/core/controls/CustomQuickViewPage.js +74 -36
- package/src/sap/fe/core/controls/CustomQuickViewPage.ts +23 -32
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossDraft.fragment.xml +52 -5
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +127 -67
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +127 -67
- package/src/sap/fe/core/controls/FieldWrapper.js +171 -87
- package/src/sap/fe/core/controls/FieldWrapper.ts +69 -80
- package/src/sap/fe/core/controls/FileWrapper.js +360 -0
- package/src/sap/fe/core/controls/FileWrapper.ts +202 -0
- package/src/sap/fe/core/controls/FilterBar.js +154 -119
- package/src/sap/fe/core/controls/FilterBar.ts +128 -123
- package/src/sap/fe/core/controls/FormElementWrapper.js +102 -37
- package/src/sap/fe/core/controls/FormElementWrapper.ts +43 -35
- package/src/sap/fe/core/controls/MassEditSelect.js +33 -0
- package/src/sap/fe/core/controls/MassEditSelect.ts +45 -0
- package/src/sap/fe/core/controls/filterbar/FilterContainer.js +111 -89
- package/src/sap/fe/core/controls/filterbar/FilterContainer.ts +86 -82
- package/src/sap/fe/core/controls/filterbar/VisualFilter.js +242 -193
- package/src/sap/fe/core/controls/filterbar/VisualFilter.ts +211 -204
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +152 -116
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.ts +105 -105
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +2 -2
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +23 -28
- package/src/sap/fe/core/controls/massEdit/MassEditDialog.fragment.xml +41 -81
- package/src/sap/fe/core/controls/massEdit/MassEditField.fragment.xml +107 -0
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +550 -35
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +604 -35
- package/src/sap/fe/core/converters/ManifestSettings.js +3 -1
- package/src/sap/fe/core/converters/ManifestSettings.ts +9 -2
- package/src/sap/fe/core/converters/MetaModelConverter.js +11 -40
- package/src/sap/fe/core/converters/MetaModelConverter.ts +56 -84
- package/src/sap/fe/core/converters/annotations/DataField.js +20 -5
- package/src/sap/fe/core/converters/annotations/DataField.ts +27 -6
- package/src/sap/fe/core/converters/controls/Common/Action.js +14 -21
- package/src/sap/fe/core/converters/controls/Common/Action.ts +23 -28
- package/src/sap/fe/core/converters/controls/Common/Chart.js +17 -10
- package/src/sap/fe/core/converters/controls/Common/Chart.ts +20 -14
- package/src/sap/fe/core/converters/controls/Common/Form.js +16 -18
- package/src/sap/fe/core/converters/controls/Common/Form.ts +20 -20
- package/src/sap/fe/core/converters/controls/Common/KPI.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/KPI.ts +2 -3
- package/src/sap/fe/core/converters/controls/Common/Table.js +389 -173
- package/src/sap/fe/core/converters/controls/Common/Table.ts +440 -244
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +26 -16
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +27 -19
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +78 -47
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +146 -107
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +6 -6
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +20 -18
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +30 -25
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +39 -34
- package/src/sap/fe/core/converters/helpers/Aggregation.js +10 -2
- package/src/sap/fe/core/converters/helpers/Aggregation.ts +18 -13
- package/src/sap/fe/core/converters/helpers/BindingHelper.js +3 -2
- package/src/sap/fe/core/converters/helpers/BindingHelper.ts +6 -5
- package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +1 -1
- package/src/sap/fe/core/converters/objectPage/FormMenuActions.ts +0 -4
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +27 -24
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +49 -40
- package/src/sap/fe/core/converters/templates/ListReportConverter.js +33 -22
- package/src/sap/fe/core/converters/templates/ListReportConverter.ts +77 -62
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +28 -28
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +38 -45
- package/src/sap/fe/core/designtime/AppComponent.designtime.js +3 -3
- package/src/sap/fe/core/designtime/AppComponent.designtime.ts +8 -6
- package/src/sap/fe/core/formatters/KPIFormatter.js +3 -12
- package/src/sap/fe/core/formatters/KPIFormatter.ts +3 -2
- package/src/sap/fe/core/formatters/TableFormatter.js +74 -13
- package/src/sap/fe/core/formatters/TableFormatter.ts +71 -16
- package/src/sap/fe/core/formatters/ValueFormatter.js +4 -4
- package/src/sap/fe/core/formatters/ValueFormatter.ts +4 -7
- package/src/sap/fe/core/fpm/Component.js +46 -17
- package/src/sap/fe/core/fpm/Component.ts +11 -16
- package/src/sap/fe/core/helpers/AppStartupHelper.js +4 -4
- package/src/sap/fe/core/helpers/AppStartupHelper.ts +3 -3
- package/src/sap/fe/core/helpers/BindingExpression.js +10 -7
- package/src/sap/fe/core/helpers/BindingExpression.ts +37 -35
- package/src/sap/fe/core/helpers/ClassSupport.js +273 -256
- package/src/sap/fe/core/helpers/ClassSupport.ts +315 -237
- package/src/sap/fe/core/helpers/FPMHelper.js +3 -2
- package/src/sap/fe/core/helpers/FPMHelper.ts +9 -8
- package/src/sap/fe/core/helpers/MassEditHelper.js +522 -147
- package/src/sap/fe/core/helpers/MassEditHelper.ts +563 -236
- package/src/sap/fe/core/helpers/ModelHelper.js +29 -1
- package/src/sap/fe/core/helpers/ModelHelper.ts +39 -26
- package/src/sap/fe/core/helpers/PasteHelper.js +4 -4
- package/src/sap/fe/core/helpers/PasteHelper.ts +4 -3
- package/src/sap/fe/core/helpers/SemanticDateOperators.js +3 -3
- package/src/sap/fe/core/helpers/SemanticDateOperators.ts +3 -1
- package/src/sap/fe/core/helpers/SemanticKeyHelper.js +1 -1
- package/src/sap/fe/core/helpers/SemanticKeyHelper.ts +1 -1
- package/src/sap/fe/core/helpers/StableIdHelper.js +5 -7
- package/src/sap/fe/core/helpers/StableIdHelper.ts +8 -8
- package/src/sap/fe/core/{Synchronization.js → helpers/Synchronization.js} +1 -1
- package/src/sap/fe/core/{Synchronization.ts → helpers/Synchronization.ts} +1 -1
- package/src/sap/fe/core/jsx-runtime/jsx.js +35 -5
- package/src/sap/fe/core/jsx-runtime/jsx.ts +22 -8
- package/src/sap/fe/core/library.js +13 -5
- package/src/sap/fe/core/library.ts +26 -17
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +1 -1
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +0 -3
- package/src/sap/fe/core/messagebundle.properties +135 -180
- package/src/sap/fe/core/messagebundle_ar.properties +31 -64
- package/src/sap/fe/core/messagebundle_bg.properties +31 -64
- package/src/sap/fe/core/messagebundle_ca.properties +31 -64
- package/src/sap/fe/core/messagebundle_cs.properties +31 -64
- package/src/sap/fe/core/messagebundle_cy.properties +32 -65
- package/src/sap/fe/core/messagebundle_da.properties +31 -64
- package/src/sap/fe/core/messagebundle_de.properties +29 -62
- package/src/sap/fe/core/messagebundle_el.properties +32 -65
- package/src/sap/fe/core/messagebundle_en.properties +32 -65
- package/src/sap/fe/core/messagebundle_en_GB.properties +29 -62
- package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +41 -74
- package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +32 -65
- package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +20 -6
- package/src/sap/fe/core/messagebundle_es.properties +31 -64
- package/src/sap/fe/core/messagebundle_es_MX.properties +31 -64
- package/src/sap/fe/core/messagebundle_et.properties +31 -64
- package/src/sap/fe/core/messagebundle_fi.properties +29 -62
- package/src/sap/fe/core/messagebundle_fr.properties +36 -69
- package/src/sap/fe/core/messagebundle_fr_CA.properties +33 -66
- package/src/sap/fe/core/messagebundle_hi.properties +29 -62
- package/src/sap/fe/core/messagebundle_hr.properties +32 -65
- package/src/sap/fe/core/messagebundle_hu.properties +30 -63
- package/src/sap/fe/core/messagebundle_id.properties +32 -65
- package/src/sap/fe/core/messagebundle_it.properties +31 -64
- package/src/sap/fe/core/messagebundle_iw.properties +31 -64
- package/src/sap/fe/core/messagebundle_ja.properties +29 -62
- package/src/sap/fe/core/messagebundle_kk.properties +31 -64
- package/src/sap/fe/core/messagebundle_ko.properties +31 -64
- package/src/sap/fe/core/messagebundle_lt.properties +31 -64
- package/src/sap/fe/core/messagebundle_lv.properties +32 -65
- package/src/sap/fe/core/messagebundle_ms.properties +31 -64
- package/src/sap/fe/core/messagebundle_nl.properties +31 -64
- package/src/sap/fe/core/messagebundle_no.properties +31 -64
- package/src/sap/fe/core/messagebundle_pl.properties +34 -67
- package/src/sap/fe/core/messagebundle_pt.properties +32 -65
- package/src/sap/fe/core/messagebundle_pt_PT.properties +31 -64
- package/src/sap/fe/core/messagebundle_ro.properties +33 -66
- package/src/sap/fe/core/messagebundle_ru.properties +33 -66
- package/src/sap/fe/core/messagebundle_sh.properties +31 -64
- package/src/sap/fe/core/messagebundle_sk.properties +31 -64
- package/src/sap/fe/core/messagebundle_sl.properties +29 -62
- package/src/sap/fe/core/messagebundle_sv.properties +30 -63
- package/src/sap/fe/core/messagebundle_th.properties +31 -64
- package/src/sap/fe/core/messagebundle_tr.properties +31 -64
- package/src/sap/fe/core/messagebundle_uk.properties +32 -65
- package/src/sap/fe/core/messagebundle_vi.properties +31 -64
- package/src/sap/fe/core/messagebundle_zh_CN.properties +32 -65
- package/src/sap/fe/core/messagebundle_zh_TW.properties +34 -67
- package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +4 -4
- package/src/sap/fe/core/services/AsyncComponentServiceFactory.ts +1 -1
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +5 -5
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +1 -2
- package/src/sap/fe/core/services/EnvironmentServiceFactory.js +11 -8
- package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +15 -13
- package/src/sap/fe/core/services/NavigationServiceFactory.js +5 -5
- package/src/sap/fe/core/services/NavigationServiceFactory.ts +9 -5
- package/src/sap/fe/core/services/ResourceModelServiceFactory.js +4 -4
- package/src/sap/fe/core/services/ResourceModelServiceFactory.ts +1 -1
- package/src/sap/fe/core/services/RoutingServiceFactory.js +105 -66
- package/src/sap/fe/core/services/RoutingServiceFactory.ts +59 -49
- package/src/sap/fe/core/services/ShellServicesFactory.js +104 -29
- package/src/sap/fe/core/services/ShellServicesFactory.ts +64 -30
- package/src/sap/fe/core/services/SideEffectsServiceFactory.js +4 -4
- package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +1 -1
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +11 -10
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +38 -51
- package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +43 -5
- package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.ts +6 -3
- package/src/sap/fe/core/support/CommonHelper.js +1 -1
- package/src/sap/fe/core/support/CommonHelper.ts +0 -3
- package/src/sap/fe/core/templating/DataModelPathHelper.js +2 -9
- package/src/sap/fe/core/templating/DataModelPathHelper.ts +32 -38
- package/src/sap/fe/core/templating/DisplayModeFormatter.js +23 -3
- package/src/sap/fe/core/templating/DisplayModeFormatter.ts +27 -6
- package/src/sap/fe/core/templating/EntitySetHelper.js +1 -9
- package/src/sap/fe/core/templating/EntitySetHelper.ts +11 -13
- package/src/sap/fe/core/templating/FilterHelper.js +4 -4
- package/src/sap/fe/core/templating/FilterHelper.ts +6 -5
- package/src/sap/fe/core/templating/PropertyHelper.js +70 -33
- package/src/sap/fe/core/templating/PropertyHelper.ts +49 -27
- package/src/sap/fe/core/templating/UIFormatters.js +133 -22
- package/src/sap/fe/core/templating/UIFormatters.ts +144 -50
- package/src/sap/fe/core/type/DateTimeWithTimezone.js +47 -0
- package/src/sap/fe/core/type/DateTimeWithTimezone.ts +23 -0
- package/src/sap/fe/core/type/Email.js +26 -8
- package/src/sap/fe/core/type/Email.ts +8 -7
- package/src/sap/fe/core/AnnotationHelper.js +0 -312
- package/src/sap/fe/core/AnnotationHelper.ts +0 -315
- package/src/sap/fe/core/RouterProxy.js +0 -926
- package/src/sap/fe/core/TransactionHelper.js +0 -1562
- package/src/sap/fe/core/actions/collaboration/ActivitySync.js +0 -392
- package/src/sap/fe/core/actions/collaboration/CollaborationCommon.js +0 -136
- package/src/sap/fe/core/actions/collaboration/Manage.js +0 -262
- package/src/sap/fe/core/actions/collaboration/ManageDialog.fragment.xml +0 -103
- package/src/sap/fe/core/actions/draft.js +0 -523
- package/src/sap/fe/core/actions/messageHandling.js +0 -567
- package/src/sap/fe/core/actions/nonDraft.js +0 -20
- package/src/sap/fe/core/actions/nonDraft.ts +0 -12
- package/src/sap/fe/core/actions/operations.js +0 -1096
- package/src/sap/fe/core/actions/sticky.js +0 -130
- package/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.js +0 -78
- package/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.ts +0 -65
- package/src/sap/fe/core/formatters/CriticalityFormatter.js +0 -77
- package/src/sap/fe/core/formatters/CriticalityFormatter.ts +0 -58
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
|
+
* (c) Copyright 2009-2021 SAP SE. All rights reserved
|
|
4
|
+
*/
|
|
5
|
+
sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/library", "sap/m/MessageBox", "sap/ui/core/Core"], function (Log, CommonUtils, FELibrary, MessageBox, Core) {
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
var ProgrammingModel = FELibrary.ProgrammingModel;
|
|
9
|
+
/**
|
|
10
|
+
* Opens a sticky session to edit a document.
|
|
11
|
+
*
|
|
12
|
+
* @function
|
|
13
|
+
* @name sap.fe.core.actions.sticky#editDocumentInStickySession
|
|
14
|
+
* @memberof sap.fe.core.actions.sticky
|
|
15
|
+
* @static
|
|
16
|
+
* @param {sap.ui.model.odata.v4.Context} oContext Context of the document to be edited
|
|
17
|
+
* @param {AppComponent} oAppComponent The AppComponent
|
|
18
|
+
* @returns {Promise}
|
|
19
|
+
* @private
|
|
20
|
+
* @ui5-restricted
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
function editDocumentInStickySession(oContext, oAppComponent) {
|
|
24
|
+
var oModel = oContext.getModel(),
|
|
25
|
+
oMetaModel = oModel.getMetaModel(),
|
|
26
|
+
sMetaPath = oMetaModel.getMetaPath(oContext.getPath()),
|
|
27
|
+
sEditAction = oMetaModel.getObject(sMetaPath + "@com.sap.vocabularies.Session.v1.StickySessionSupported/EditAction");
|
|
28
|
+
|
|
29
|
+
if (!sEditAction) {
|
|
30
|
+
throw new Error("Edit Action for Sticky Session not found for " + sMetaPath);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
var localI18nRef = Core.getLibraryResourceBundle("sap.fe.core");
|
|
34
|
+
var sActionName = localI18nRef.getText("C_COMMON_OBJECT_PAGE_EDIT");
|
|
35
|
+
var oEditAction = oModel.bindContext(sEditAction + "(...)", oContext, {
|
|
36
|
+
$$inheritExpandSelect: true
|
|
37
|
+
});
|
|
38
|
+
var sGroupId = "direct";
|
|
39
|
+
var oEditPromise = oEditAction.execute(sGroupId, undefined, CommonUtils.fnOnStrictHandlingFailed.bind(sticky, sGroupId, sActionName, oModel));
|
|
40
|
+
oModel.submitBatch(sGroupId);
|
|
41
|
+
return oEditPromise.then(function (oNewContext) {
|
|
42
|
+
var _oSideEffects$trigger;
|
|
43
|
+
|
|
44
|
+
var oSideEffects = oAppComponent.getSideEffectsService().getODataActionSideEffects(sEditAction, oNewContext);
|
|
45
|
+
|
|
46
|
+
if (oSideEffects !== null && oSideEffects !== void 0 && (_oSideEffects$trigger = oSideEffects.triggerActions) !== null && _oSideEffects$trigger !== void 0 && _oSideEffects$trigger.length) {
|
|
47
|
+
return oAppComponent.getSideEffectsService().requestSideEffectsForODataAction(oSideEffects, oNewContext).then(function () {
|
|
48
|
+
return oNewContext;
|
|
49
|
+
});
|
|
50
|
+
} else {
|
|
51
|
+
return oNewContext;
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Activates a document and closes the sticky session.
|
|
57
|
+
*
|
|
58
|
+
* @function
|
|
59
|
+
* @name sap.fe.core.actions.sticky#activateDocument
|
|
60
|
+
* @memberof sap.fe.core.actions.sticky
|
|
61
|
+
* @static
|
|
62
|
+
* @param {sap.ui.model.odata.v4.Context} oContext Context of the document to be activated
|
|
63
|
+
* @param {boolean} bEnableStrictHandling
|
|
64
|
+
* @returns {Promise}
|
|
65
|
+
* @private
|
|
66
|
+
* @ui5-restricted
|
|
67
|
+
*/
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
function activateDocument(oContext, bEnableStrictHandling) {
|
|
71
|
+
var oModel = oContext.getModel(),
|
|
72
|
+
oMetaModel = oModel.getMetaModel(),
|
|
73
|
+
sMetaPath = oMetaModel.getMetaPath(oContext.getPath()),
|
|
74
|
+
sSaveAction = oMetaModel.getObject(sMetaPath + "@com.sap.vocabularies.Session.v1.StickySessionSupported/SaveAction");
|
|
75
|
+
|
|
76
|
+
if (!sSaveAction) {
|
|
77
|
+
throw new Error("Save Action for Sticky Session not found for " + sMetaPath);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
var localI18nRef = Core.getLibraryResourceBundle("sap.fe.core");
|
|
81
|
+
var sActionName = localI18nRef.getText("C_OP_OBJECT_PAGE_SAVE");
|
|
82
|
+
var oSaveAction = oModel.bindContext(sSaveAction + "(...)", oContext, {
|
|
83
|
+
$$inheritExpandSelect: true
|
|
84
|
+
});
|
|
85
|
+
var sGroupId = "direct"; //Triggering of 412 in case of save in sticky apps only when URL parameter is present
|
|
86
|
+
|
|
87
|
+
var oSavePromise = bEnableStrictHandling ? oSaveAction.execute(sGroupId, undefined, CommonUtils.fnOnStrictHandlingFailed.bind(sticky, sGroupId, sActionName, oModel)) : oSaveAction.execute(sGroupId);
|
|
88
|
+
oModel.submitBatch(sGroupId);
|
|
89
|
+
return oSavePromise;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Discards a document and closes sticky session.
|
|
93
|
+
*
|
|
94
|
+
* @function
|
|
95
|
+
* @name sap.fe.core.actions.sticky#discardDocument
|
|
96
|
+
* @memberof sap.fe.core.actions.sticky
|
|
97
|
+
* @static
|
|
98
|
+
* @param {sap.ui.model.odata.v4.Context} oContext Context of the document to be discarded
|
|
99
|
+
* @returns {Promise}
|
|
100
|
+
* @private
|
|
101
|
+
* @ui5-restricted
|
|
102
|
+
*/
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
function discardDocument(oContext) {
|
|
106
|
+
var oModel = oContext.getModel(),
|
|
107
|
+
oMetaModel = oModel.getMetaModel(),
|
|
108
|
+
sMetaPath = oMetaModel.getMetaPath(oContext.getPath()),
|
|
109
|
+
sDiscardAction = oMetaModel.getObject(sMetaPath + "@com.sap.vocabularies.Session.v1.StickySessionSupported/DiscardAction");
|
|
110
|
+
|
|
111
|
+
if (!sDiscardAction) {
|
|
112
|
+
throw new Error("Discard Action for Sticky Session not found for " + sMetaPath);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
var oDiscardAction = oModel.bindContext("/" + sDiscardAction + "(...)");
|
|
116
|
+
var oDiscardPromise = oDiscardAction.execute("direct").then(function () {
|
|
117
|
+
return oContext;
|
|
118
|
+
});
|
|
119
|
+
oModel.submitBatch("direct");
|
|
120
|
+
return oDiscardPromise;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Process the Data loss confirmation.
|
|
124
|
+
*
|
|
125
|
+
* @function
|
|
126
|
+
* @name sap.fe.core.actions.sticky#discardDocument
|
|
127
|
+
* @memberof sap.fe.core.actions.sticky
|
|
128
|
+
* @static
|
|
129
|
+
* @param {Function} fnProcess Function to execute after confirmation
|
|
130
|
+
* @param {sap.ui.core.mvc.XMLView} oView Current view
|
|
131
|
+
* @param {string} programmingModel Programming Model of the current page
|
|
132
|
+
* @returns {void}
|
|
133
|
+
* @private
|
|
134
|
+
* @ui5-restricted
|
|
135
|
+
*/
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
function processDataLossConfirmation(fnProcess, oView, programmingModel) {
|
|
139
|
+
var bUIEditable = oView.getModel("ui").getProperty("/isEditable"),
|
|
140
|
+
oResourceBundle = Core.getLibraryResourceBundle("sap.fe.templates"),
|
|
141
|
+
sWarningMsg = oResourceBundle && oResourceBundle.getText("T_COMMON_UTILS_NAVIGATION_AWAY_MSG"),
|
|
142
|
+
sConfirmButtonTxt = oResourceBundle && oResourceBundle.getText("T_COMMON_UTILS_NAVIGATION_AWAY_CONFIRM_BUTTON"),
|
|
143
|
+
sCancelButtonTxt = oResourceBundle && oResourceBundle.getText("T_COMMON_UTILS_NAVIGATION_AWAY_CANCEL_BUTTON");
|
|
144
|
+
|
|
145
|
+
if (programmingModel === ProgrammingModel.Sticky && bUIEditable) {
|
|
146
|
+
return MessageBox.warning(sWarningMsg, {
|
|
147
|
+
actions: [sConfirmButtonTxt, sCancelButtonTxt],
|
|
148
|
+
emphasizedAction: sConfirmButtonTxt,
|
|
149
|
+
onClose: function (sAction) {
|
|
150
|
+
if (sAction === sConfirmButtonTxt) {
|
|
151
|
+
var oInternalModel = oView && oView.getModel("internal");
|
|
152
|
+
Log.info("Navigation confirmed.");
|
|
153
|
+
|
|
154
|
+
if (oInternalModel) {
|
|
155
|
+
oInternalModel.setProperty("/sessionOn", false);
|
|
156
|
+
oInternalModel.setProperty("/stickySessionToken", undefined);
|
|
157
|
+
} else {
|
|
158
|
+
Log.warning("Local UIModel couldn't be found.");
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
fnProcess();
|
|
162
|
+
} else {
|
|
163
|
+
Log.info("Navigation rejected.");
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
return fnProcess();
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Static functions for the sticky session programming model
|
|
173
|
+
*
|
|
174
|
+
* @namespace
|
|
175
|
+
* @alias sap.fe.core.actions.sticky
|
|
176
|
+
* @private
|
|
177
|
+
* @experimental This module is only for experimental use! <br/><b>This is only a POC and maybe deleted</b>
|
|
178
|
+
* @since 1.54.0
|
|
179
|
+
*/
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
var sticky = {
|
|
183
|
+
editDocumentInStickySession: editDocumentInStickySession,
|
|
184
|
+
activateDocument: activateDocument,
|
|
185
|
+
discardDocument: discardDocument,
|
|
186
|
+
processDataLossConfirmation: processDataLossConfirmation
|
|
187
|
+
};
|
|
188
|
+
return sticky;
|
|
189
|
+
}, false);
|
|
190
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0aWNreS50cyJdLCJuYW1lcyI6WyJQcm9ncmFtbWluZ01vZGVsIiwiRkVMaWJyYXJ5IiwiZWRpdERvY3VtZW50SW5TdGlja3lTZXNzaW9uIiwib0NvbnRleHQiLCJvQXBwQ29tcG9uZW50Iiwib01vZGVsIiwiZ2V0TW9kZWwiLCJvTWV0YU1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwic01ldGFQYXRoIiwiZ2V0TWV0YVBhdGgiLCJnZXRQYXRoIiwic0VkaXRBY3Rpb24iLCJnZXRPYmplY3QiLCJFcnJvciIsImxvY2FsSTE4blJlZiIsIkNvcmUiLCJnZXRMaWJyYXJ5UmVzb3VyY2VCdW5kbGUiLCJzQWN0aW9uTmFtZSIsImdldFRleHQiLCJvRWRpdEFjdGlvbiIsImJpbmRDb250ZXh0IiwiJCRpbmhlcml0RXhwYW5kU2VsZWN0Iiwic0dyb3VwSWQiLCJvRWRpdFByb21pc2UiLCJleGVjdXRlIiwidW5kZWZpbmVkIiwiQ29tbW9uVXRpbHMiLCJmbk9uU3RyaWN0SGFuZGxpbmdGYWlsZWQiLCJiaW5kIiwic3RpY2t5Iiwic3VibWl0QmF0Y2giLCJ0aGVuIiwib05ld0NvbnRleHQiLCJvU2lkZUVmZmVjdHMiLCJnZXRTaWRlRWZmZWN0c1NlcnZpY2UiLCJnZXRPRGF0YUFjdGlvblNpZGVFZmZlY3RzIiwidHJpZ2dlckFjdGlvbnMiLCJsZW5ndGgiLCJyZXF1ZXN0U2lkZUVmZmVjdHNGb3JPRGF0YUFjdGlvbiIsImFjdGl2YXRlRG9jdW1lbnQiLCJiRW5hYmxlU3RyaWN0SGFuZGxpbmciLCJzU2F2ZUFjdGlvbiIsIm9TYXZlQWN0aW9uIiwib1NhdmVQcm9taXNlIiwiZGlzY2FyZERvY3VtZW50Iiwic0Rpc2NhcmRBY3Rpb24iLCJvRGlzY2FyZEFjdGlvbiIsIm9EaXNjYXJkUHJvbWlzZSIsInByb2Nlc3NEYXRhTG9zc0NvbmZpcm1hdGlvbiIsImZuUHJvY2VzcyIsIm9WaWV3IiwicHJvZ3JhbW1pbmdNb2RlbCIsImJVSUVkaXRhYmxlIiwiZ2V0UHJvcGVydHkiLCJvUmVzb3VyY2VCdW5kbGUiLCJzV2FybmluZ01zZyIsInNDb25maXJtQnV0dG9uVHh0Iiwic0NhbmNlbEJ1dHRvblR4dCIsIlN0aWNreSIsIk1lc3NhZ2VCb3giLCJ3YXJuaW5nIiwiYWN0aW9ucyIsImVtcGhhc2l6ZWRBY3Rpb24iLCJvbkNsb3NlIiwic0FjdGlvbiIsIm9JbnRlcm5hbE1vZGVsIiwiTG9nIiwiaW5mbyIsInNldFByb3BlcnR5Il0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7O0FBUUEsTUFBTUEsZ0JBQWdCLEdBQUdDLFNBQVMsQ0FBQ0QsZ0JBQW5DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBQ0EsV0FBU0UsMkJBQVQsQ0FBcUNDLFFBQXJDLEVBQXdEQyxhQUF4RCxFQUFxRjtBQUNwRixRQUFNQyxNQUFNLEdBQUdGLFFBQVEsQ0FBQ0csUUFBVCxFQUFmO0FBQUEsUUFDQ0MsVUFBVSxHQUFHRixNQUFNLENBQUNHLFlBQVAsRUFEZDtBQUFBLFFBRUNDLFNBQVMsR0FBR0YsVUFBVSxDQUFDRyxXQUFYLENBQXVCUCxRQUFRLENBQUNRLE9BQVQsRUFBdkIsQ0FGYjtBQUFBLFFBR0NDLFdBQVcsR0FBR0wsVUFBVSxDQUFDTSxTQUFYLENBQXFCSixTQUFTLEdBQUcsb0VBQWpDLENBSGY7O0FBS0EsUUFBSSxDQUFDRyxXQUFMLEVBQWtCO0FBQ2pCLFlBQU0sSUFBSUUsS0FBSixDQUFVLGtEQUFrREwsU0FBNUQsQ0FBTjtBQUNBOztBQUNELFFBQU1NLFlBQVksR0FBSUMsSUFBRCxDQUFpQkMsd0JBQWpCLENBQTBDLGFBQTFDLENBQXJCO0FBQ0EsUUFBTUMsV0FBVyxHQUFHSCxZQUFZLENBQUNJLE9BQWIsQ0FBcUIsMkJBQXJCLENBQXBCO0FBQ0EsUUFBTUMsV0FBVyxHQUFHZixNQUFNLENBQUNnQixXQUFQLENBQW1CVCxXQUFXLEdBQUcsT0FBakMsRUFBMENULFFBQTFDLEVBQW9EO0FBQUVtQixNQUFBQSxx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R0FBRztBQUNkNUIsSUFBQUEsMkJBQTJCLEVBQUVBLDJCQURmO0FBRWRzQyxJQUFBQSxnQkFBZ0IsRUFBRUEsZ0JBRko7QUFHZEssSUFBQUEsZUFBZSxFQUFFQSxlQUhIO0FBSWRJLElBQUFBLDJCQUEyQixFQUFFQTtBQUpmLEdBQWY7U0FPZW5CLE0iLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IEFwcENvbXBvbmVudCBmcm9tIFwic2FwL2ZlL2NvcmUvQXBwQ29tcG9uZW50XCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgRkVMaWJyYXJ5IGZyb20gXCJzYXAvZmUvY29yZS9saWJyYXJ5XCI7XG5pbXBvcnQgTWVzc2FnZUJveCBmcm9tIFwic2FwL20vTWVzc2FnZUJveFwiO1xuaW1wb3J0IENvcmUgZnJvbSBcInNhcC91aS9jb3JlL0NvcmVcIjtcbmltcG9ydCBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQ29udGV4dFwiO1xuaW1wb3J0IE9EYXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1vZGVsXCI7XG5pbXBvcnQgeyBDb3JlRXggfSBmcm9tIFwidHlwZXMvZXh0ZW5zaW9uX3R5cGVzXCI7XG5cbmNvbnN0IFByb2dyYW1taW5nTW9kZWwgPSBGRUxpYnJhcnkuUHJvZ3JhbW1pbmdNb2RlbDtcbi8qKlxuICogT3BlbnMgYSBzdGlja3kgc2Vzc2lvbiB0byBlZGl0IGEgZG9jdW1lbnQuXG4gKlxuICogQGZ1bmN0aW9uXG4gKiBAbmFtZSBzYXAuZmUuY29yZS5hY3Rpb25zLnN0aWNreSNlZGl0RG9jdW1lbnRJblN0aWNreVNlc3Npb25cbiAqIEBtZW1iZXJvZiBzYXAuZmUuY29yZS5hY3Rpb25zLnN0aWNreVxuICogQHN0YXRpY1xuICogQHBhcmFtIHtzYXAudWkubW9kZWwub2RhdGEudjQuQ29udGV4dH0gb0NvbnRleHQgQ29udGV4dCBvZiB0aGUgZG9jdW1lbnQgdG8gYmUgZWRpdGVkXG4gKiBAcGFyYW0ge0FwcENvbXBvbmVudH0gb0FwcENvbXBvbmVudCBUaGUgQXBwQ29tcG9uZW50XG4gKiBAcmV0dXJucyB7UHJvbWlzZX1cbiAqIEBwcml2YXRlXG4gKiBAdWk1LXJlc3RyaWN0ZWRcbiAqL1xuZnVuY3Rpb24gZWRpdERvY3VtZW50SW5TdGlja3lTZXNzaW9uKG9Db250ZXh0OiBDb250ZXh0LCBvQXBwQ29tcG9uZW50OiBBcHBDb21wb25lbnQpIHtcblx0Y29uc3Qgb01vZGVsID0gb0NvbnRleHQuZ2V0TW9kZWwoKSBhcyBPRGF0YU1vZGVsLFxuXHRcdG9NZXRhTW9kZWwgPSBvTW9kZWwuZ2V0TWV0YU1vZGVsKCksXG5cdFx0c01ldGFQYXRoID0gb01ldGFNb2RlbC5nZXRNZXRhUGF0aChvQ29udGV4dC5nZXRQYXRoKCkpLFxuXHRcdHNFZGl0QWN0aW9uID0gb01ldGFNb2RlbC5nZXRPYmplY3Qoc01ldGFQYXRoICsgXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuU2Vzc2lvbi52MS5TdGlja3lTZXNzaW9uU3VwcG9ydGVkL0VkaXRBY3Rpb25cIik7XG5cblx0aWYgKCFzRWRpdEFjdGlvbikge1xuXHRcdHRocm93IG5ldyBFcnJvcihcIkVkaXQgQWN0aW9uIGZvciBTdGlja3kgU2Vzc2lvbiBub3QgZm91bmQgZm9yIFwiICsgc01ldGFQYXRoKTtcblx0fVxuXHRjb25zdCBsb2NhbEkxOG5SZWYgPSAoQ29yZSBhcyBDb3JlRXgpLmdldExpYnJhcnlSZXNvdXJjZUJ1bmRsZShcInNhcC5mZS5jb3JlXCIpO1xuXHRjb25zdCBzQWN0aW9uTmFtZSA9IGxvY2FsSTE4blJlZi5nZXRUZXh0KFwiQ19DT01NT05fT0JKRUNUX1BBR0VfRURJVFwiKTtcblx0Y29uc3Qgb0VkaXRBY3Rpb24gPSBvTW9kZWwuYmluZENvbnRleHQoc0VkaXRBY3Rpb24gKyBcIiguLi4pXCIsIG9Db250ZXh0LCB7ICQkaW5oZXJpdEV4cGFuZFNlbGVjdDogdHJ1ZSB9KTtcblx0Y29uc3Qgc0dyb3VwSWQgPSBcImRpcmVjdFwiO1xuXHRjb25zdCBvRWRpdFByb21pc2UgPSBvRWRpdEFjdGlvbi5leGVjdXRlKFxuXHRcdHNHcm91cElkLFxuXHRcdHVuZGVmaW5lZCxcblx0XHRDb21tb25VdGlscy5mbk9uU3RyaWN0SGFuZGxpbmdGYWlsZWQuYmluZChzdGlja3ksIHNHcm91cElkLCBzQWN0aW9uTmFtZSwgb01vZGVsKVxuXHQpO1xuXHRvTW9kZWwuc3VibWl0QmF0Y2goc0dyb3VwSWQpO1xuXHRyZXR1cm4gb0VkaXRQcm9taXNlLnRoZW4oKG9OZXdDb250ZXh0OiBDb250ZXh0KSA9PiB7XG5cdFx0Y29uc3Qgb1NpZGVFZmZlY3RzID0gb0FwcENvbXBvbmVudC5nZXRTaWRlRWZmZWN0c1NlcnZpY2UoKS5nZXRPRGF0YUFjdGlvblNpZGVFZmZlY3RzKHNFZGl0QWN0aW9uLCBvTmV3Q29udGV4dCk7XG5cdFx0aWYgKG9TaWRlRWZmZWN0cz8udHJpZ2dlckFjdGlvbnM/Lmxlbmd0aCkge1xuXHRcdFx0cmV0dXJuIG9BcHBDb21wb25lbnRcblx0XHRcdFx0LmdldFNpZGVFZmZlY3RzU2VydmljZSgpXG5cdFx0XHRcdC5yZXF1ZXN0U2lkZUVmZmVjdHNGb3JPRGF0YUFjdGlvbihvU2lkZUVmZmVjdHMsIG9OZXdDb250ZXh0KVxuXHRcdFx0XHQudGhlbigoKSA9PiB7XG5cdFx0XHRcdFx0cmV0dXJuIG9OZXdDb250ZXh0O1xuXHRcdFx0XHR9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIG9OZXdDb250ZXh0O1xuXHRcdH1cblx0fSk7XG59XG4vKipcbiAqIEFjdGl2YXRlcyBhIGRvY3VtZW50IGFuZCBjbG9zZXMgdGhlIHN0aWNreSBzZXNzaW9uLlxuICpcbiAqIEBmdW5jdGlvblxuICogQG5hbWUgc2FwLmZlLmNvcmUuYWN0aW9ucy5zdGlja3kjYWN0aXZhdGVEb2N1bWVudFxuICogQG1lbWJlcm9mIHNhcC5mZS5jb3JlLmFjdGlvbnMuc3RpY2t5XG4gKiBAc3RhdGljXG4gKiBAcGFyYW0ge3NhcC51aS5tb2RlbC5vZGF0YS52NC5Db250ZXh0fSBvQ29udGV4dCBDb250ZXh0IG9mIHRoZSBkb2N1bWVudCB0byBiZSBhY3RpdmF0ZWRcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gYkVuYWJsZVN0cmljdEhhbmRsaW5nXG4gKiBAcmV0dXJucyB7UHJvbWlzZX1cbiAqIEBwcml2YXRlXG4gKiBAdWk1LXJlc3RyaWN0ZWRcbiAqL1xuZnVuY3Rpb24gYWN0aXZhdGVEb2N1bWVudChvQ29udGV4dDogYW55LCBiRW5hYmxlU3RyaWN0SGFuZGxpbmc6IGJvb2xlYW4pIHtcblx0Y29uc3Qgb01vZGVsID0gb0NvbnRleHQuZ2V0TW9kZWwoKSxcblx0XHRvTWV0YU1vZGVsID0gb01vZGVsLmdldE1ldGFNb2RlbCgpLFxuXHRcdHNNZXRhUGF0aCA9IG9NZXRhTW9kZWwuZ2V0TWV0YVBhdGgob0NvbnRleHQuZ2V0UGF0aCgpKSxcblx0XHRzU2F2ZUFjdGlvbiA9IG9NZXRhTW9kZWwuZ2V0T2JqZWN0KHNNZXRhUGF0aCArIFwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlNlc3Npb24udjEuU3RpY2t5U2Vzc2lvblN1cHBvcnRlZC9TYXZlQWN0aW9uXCIpO1xuXG5cdGlmICghc1NhdmVBY3Rpb24pIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoXCJTYXZlIEFjdGlvbiBmb3IgU3RpY2t5IFNlc3Npb24gbm90IGZvdW5kIGZvciBcIiArIHNNZXRhUGF0aCk7XG5cdH1cblx0Y29uc3QgbG9jYWxJMThuUmVmID0gKENvcmUgYXMgQ29yZUV4KS5nZXRMaWJyYXJ5UmVzb3VyY2VCdW5kbGUoXCJzYXAuZmUuY29yZVwiKTtcblx0Y29uc3Qgc0FjdGlvbk5hbWUgPSBsb2NhbEkxOG5SZWYuZ2V0VGV4dChcIkNfT1BfT0JKRUNUX1BBR0VfU0FWRVwiKTtcblx0Y29uc3Qgb1NhdmVBY3Rpb24gPSBvTW9kZWwuYmluZENvbnRleHQoc1NhdmVBY3Rpb24gKyBcIiguLi4pXCIsIG9Db250ZXh0LCB7ICQkaW5oZXJpdEV4cGFuZFNlbGVjdDogdHJ1ZSB9KTtcblx0Y29uc3Qgc0dyb3VwSWQgPSBcImRpcmVjdFwiO1xuXHQvL1RyaWdnZXJpbmcgb2YgNDEyIGluIGNhc2Ugb2Ygc2F2ZSBpbiBzdGlja3kgYXBwcyBvbmx5IHdoZW4gVVJMIHBhcmFtZXRlciBpcyBwcmVzZW50XG5cdGNvbnN0IG9TYXZlUHJvbWlzZSA9IGJFbmFibGVTdHJpY3RIYW5kbGluZ1xuXHRcdD8gb1NhdmVBY3Rpb24uZXhlY3V0ZShzR3JvdXBJZCwgdW5kZWZpbmVkLCBDb21tb25VdGlscy5mbk9uU3RyaWN0SGFuZGxpbmdGYWlsZWQuYmluZChzdGlja3ksIHNHcm91cElkLCBzQWN0aW9uTmFtZSwgb01vZGVsKSlcblx0XHQ6IG9TYXZlQWN0aW9uLmV4ZWN1dGUoc0dyb3VwSWQpO1xuXHRvTW9kZWwuc3VibWl0QmF0Y2goc0dyb3VwSWQpO1xuXHRyZXR1cm4gb1NhdmVQcm9taXNlO1xufVxuLyoqXG4gKiBEaXNjYXJkcyBhIGRvY3VtZW50IGFuZCBjbG9zZXMgc3RpY2t5IHNlc3Npb24uXG4gKlxuICogQGZ1bmN0aW9uXG4gKiBAbmFtZSBzYXAuZmUuY29yZS5hY3Rpb25zLnN0aWNreSNkaXNjYXJkRG9jdW1lbnRcbiAqIEBtZW1iZXJvZiBzYXAuZmUuY29yZS5hY3Rpb25zLnN0aWNreVxuICogQHN0YXRpY1xuICogQHBhcmFtIHtzYXAudWkubW9kZWwub2RhdGEudjQuQ29udGV4dH0gb0NvbnRleHQgQ29udGV4dCBvZiB0aGUgZG9jdW1lbnQgdG8gYmUgZGlzY2FyZGVkXG4gKiBAcmV0dXJucyB7UHJvbWlzZX1cbiAqIEBwcml2YXRlXG4gKiBAdWk1LXJlc3RyaWN0ZWRcbiAqL1xuZnVuY3Rpb24gZGlzY2FyZERvY3VtZW50KG9Db250ZXh0OiBhbnkpIHtcblx0Y29uc3Qgb01vZGVsID0gb0NvbnRleHQuZ2V0TW9kZWwoKSxcblx0XHRvTWV0YU1vZGVsID0gb01vZGVsLmdldE1ldGFNb2RlbCgpLFxuXHRcdHNNZXRhUGF0aCA9IG9NZXRhTW9kZWwuZ2V0TWV0YVBhdGgob0NvbnRleHQuZ2V0UGF0aCgpKSxcblx0XHRzRGlzY2FyZEFjdGlvbiA9IG9NZXRhTW9kZWwuZ2V0T2JqZWN0KHNNZXRhUGF0aCArIFwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlNlc3Npb24udjEuU3RpY2t5U2Vzc2lvblN1cHBvcnRlZC9EaXNjYXJkQWN0aW9uXCIpO1xuXG5cdGlmICghc0Rpc2NhcmRBY3Rpb24pIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoXCJEaXNjYXJkIEFjdGlvbiBmb3IgU3RpY2t5IFNlc3Npb24gbm90IGZvdW5kIGZvciBcIiArIHNNZXRhUGF0aCk7XG5cdH1cblxuXHRjb25zdCBvRGlzY2FyZEFjdGlvbiA9IG9Nb2RlbC5iaW5kQ29udGV4dChcIi9cIiArIHNEaXNjYXJkQWN0aW9uICsgXCIoLi4uKVwiKTtcblx0Y29uc3Qgb0Rpc2NhcmRQcm9taXNlID0gb0Rpc2NhcmRBY3Rpb24uZXhlY3V0ZShcImRpcmVjdFwiKS50aGVuKGZ1bmN0aW9uICgpIHtcblx0XHRyZXR1cm4gb0NvbnRleHQ7XG5cdH0pO1xuXHRvTW9kZWwuc3VibWl0QmF0Y2goXCJkaXJlY3RcIik7XG5cdHJldHVybiBvRGlzY2FyZFByb21pc2U7XG59XG5cbi8qKlxuICogUHJvY2VzcyB0aGUgRGF0YSBsb3NzIGNvbmZpcm1hdGlvbi5cbiAqXG4gKiBAZnVuY3Rpb25cbiAqIEBuYW1lIHNhcC5mZS5jb3JlLmFjdGlvbnMuc3RpY2t5I2Rpc2NhcmREb2N1bWVudFxuICogQG1lbWJlcm9mIHNhcC5mZS5jb3JlLmFjdGlvbnMuc3RpY2t5XG4gKiBAc3RhdGljXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmblByb2Nlc3MgRnVuY3Rpb24gdG8gZXhlY3V0ZSBhZnRlciBjb25maXJtYXRpb25cbiAqIEBwYXJhbSB7c2FwLnVpLmNvcmUubXZjLlhNTFZpZXd9IG9WaWV3IEN1cnJlbnQgdmlld1xuICogQHBhcmFtIHtzdHJpbmd9IHByb2dyYW1taW5nTW9kZWwgUHJvZ3JhbW1pbmcgTW9kZWwgb2YgdGhlIGN1cnJlbnQgcGFnZVxuICogQHJldHVybnMge3ZvaWR9XG4gKiBAcHJpdmF0ZVxuICogQHVpNS1yZXN0cmljdGVkXG4gKi9cbmZ1bmN0aW9uIHByb2Nlc3NEYXRhTG9zc0NvbmZpcm1hdGlvbihmblByb2Nlc3M6IEZ1bmN0aW9uLCBvVmlldzogYW55LCBwcm9ncmFtbWluZ01vZGVsOiBzdHJpbmcpIHtcblx0Y29uc3QgYlVJRWRpdGFibGUgPSBvVmlldy5nZXRNb2RlbChcInVpXCIpLmdldFByb3BlcnR5KFwiL2lzRWRpdGFibGVcIiksXG5cdFx0b1Jlc291cmNlQnVuZGxlID0gKENvcmUgYXMgQ29yZUV4KS5nZXRMaWJyYXJ5UmVzb3VyY2VCdW5kbGUoXCJzYXAuZmUudGVtcGxhdGVzXCIpLFxuXHRcdHNXYXJuaW5nTXNnID0gb1Jlc291cmNlQnVuZGxlICYmIG9SZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiVF9DT01NT05fVVRJTFNfTkFWSUdBVElPTl9BV0FZX01TR1wiKSxcblx0XHRzQ29uZmlybUJ1dHRvblR4dCA9IG9SZXNvdXJjZUJ1bmRsZSAmJiBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIlRfQ09NTU9OX1VUSUxTX05BVklHQVRJT05fQVdBWV9DT05GSVJNX0JVVFRPTlwiKSxcblx0XHRzQ2FuY2VsQnV0dG9uVHh0ID0gb1Jlc291cmNlQnVuZGxlICYmIG9SZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiVF9DT01NT05fVVRJTFNfTkFWSUdBVElPTl9BV0FZX0NBTkNFTF9CVVRUT05cIik7XG5cblx0aWYgKHByb2dyYW1taW5nTW9kZWwgPT09IFByb2dyYW1taW5nTW9kZWwuU3RpY2t5ICYmIGJVSUVkaXRhYmxlKSB7XG5cdFx0cmV0dXJuIE1lc3NhZ2VCb3gud2FybmluZyhzV2FybmluZ01zZywge1xuXHRcdFx0YWN0aW9uczogW3NDb25maXJtQnV0dG9uVHh0LCBzQ2FuY2VsQnV0dG9uVHh0XSxcblx0XHRcdGVtcGhhc2l6ZWRBY3Rpb246IHNDb25maXJtQnV0dG9uVHh0LFxuXHRcdFx0b25DbG9zZTogZnVuY3Rpb24gKHNBY3Rpb246IGFueSkge1xuXHRcdFx0XHRpZiAoc0FjdGlvbiA9PT0gc0NvbmZpcm1CdXR0b25UeHQpIHtcblx0XHRcdFx0XHRjb25zdCBvSW50ZXJuYWxNb2RlbCA9IG9WaWV3ICYmIG9WaWV3LmdldE1vZGVsKFwiaW50ZXJuYWxcIik7XG5cblx0XHRcdFx0XHRMb2cuaW5mbyhcIk5hdmlnYXRpb24gY29uZmlybWVkLlwiKTtcblx0XHRcdFx0XHRpZiAob0ludGVybmFsTW9kZWwpIHtcblx0XHRcdFx0XHRcdG9JbnRlcm5hbE1vZGVsLnNldFByb3BlcnR5KFwiL3Nlc3Npb25PblwiLCBmYWxzZSk7XG5cdFx0XHRcdFx0XHRvSW50ZXJuYWxNb2RlbC5zZXRQcm9wZXJ0eShcIi9zdGlja3lTZXNzaW9uVG9rZW5cIiwgdW5kZWZpbmVkKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0TG9nLndhcm5pbmcoXCJMb2NhbCBVSU1vZGVsIGNvdWxkbid0IGJlIGZvdW5kLlwiKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Zm5Qcm9jZXNzKCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0TG9nLmluZm8oXCJOYXZpZ2F0aW9uIHJlamVjdGVkLlwiKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cdHJldHVybiBmblByb2Nlc3MoKTtcbn1cblxuLyoqXG4gKiBTdGF0aWMgZnVuY3Rpb25zIGZvciB0aGUgc3RpY2t5IHNlc3Npb24gcHJvZ3JhbW1pbmcgbW9kZWxcbiAqXG4gKiBAbmFtZXNwYWNlXG4gKiBAYWxpYXMgc2FwLmZlLmNvcmUuYWN0aW9ucy5zdGlja3lcbiAqIEBwcml2YXRlXG4gKiBAZXhwZXJpbWVudGFsIFRoaXMgbW9kdWxlIGlzIG9ubHkgZm9yIGV4cGVyaW1lbnRhbCB1c2UhIDxici8+PGI+VGhpcyBpcyBvbmx5IGEgUE9DIGFuZCBtYXliZSBkZWxldGVkPC9iPlxuICogQHNpbmNlIDEuNTQuMFxuICovXG5jb25zdCBzdGlja3kgPSB7XG5cdGVkaXREb2N1bWVudEluU3RpY2t5U2Vzc2lvbjogZWRpdERvY3VtZW50SW5TdGlja3lTZXNzaW9uLFxuXHRhY3RpdmF0ZURvY3VtZW50OiBhY3RpdmF0ZURvY3VtZW50LFxuXHRkaXNjYXJkRG9jdW1lbnQ6IGRpc2NhcmREb2N1bWVudCxcblx0cHJvY2Vzc0RhdGFMb3NzQ29uZmlybWF0aW9uOiBwcm9jZXNzRGF0YUxvc3NDb25maXJtYXRpb25cbn07XG5cbmV4cG9ydCBkZWZhdWx0IHN0aWNreTtcbiJdfQ==
|
|
@@ -1,7 +1,14 @@
|
|
|
1
|
+
import Log from "sap/base/Log";
|
|
2
|
+
import AppComponent from "sap/fe/core/AppComponent";
|
|
3
|
+
import CommonUtils from "sap/fe/core/CommonUtils";
|
|
4
|
+
import FELibrary from "sap/fe/core/library";
|
|
5
|
+
import MessageBox from "sap/m/MessageBox";
|
|
6
|
+
import Core from "sap/ui/core/Core";
|
|
1
7
|
import Context from "sap/ui/model/odata/v4/Context";
|
|
2
8
|
import ODataModel from "sap/ui/model/odata/v4/ODataModel";
|
|
3
|
-
import
|
|
9
|
+
import { CoreEx } from "types/extension_types";
|
|
4
10
|
|
|
11
|
+
const ProgrammingModel = FELibrary.ProgrammingModel;
|
|
5
12
|
/**
|
|
6
13
|
* Opens a sticky session to edit a document.
|
|
7
14
|
*
|
|
@@ -24,11 +31,16 @@ function editDocumentInStickySession(oContext: Context, oAppComponent: AppCompon
|
|
|
24
31
|
if (!sEditAction) {
|
|
25
32
|
throw new Error("Edit Action for Sticky Session not found for " + sMetaPath);
|
|
26
33
|
}
|
|
27
|
-
|
|
34
|
+
const localI18nRef = (Core as CoreEx).getLibraryResourceBundle("sap.fe.core");
|
|
35
|
+
const sActionName = localI18nRef.getText("C_COMMON_OBJECT_PAGE_EDIT");
|
|
28
36
|
const oEditAction = oModel.bindContext(sEditAction + "(...)", oContext, { $$inheritExpandSelect: true });
|
|
29
|
-
|
|
30
|
-
const oEditPromise = oEditAction.execute(
|
|
31
|
-
|
|
37
|
+
const sGroupId = "direct";
|
|
38
|
+
const oEditPromise = oEditAction.execute(
|
|
39
|
+
sGroupId,
|
|
40
|
+
undefined,
|
|
41
|
+
CommonUtils.fnOnStrictHandlingFailed.bind(sticky, sGroupId, sActionName, oModel)
|
|
42
|
+
);
|
|
43
|
+
oModel.submitBatch(sGroupId);
|
|
32
44
|
return oEditPromise.then((oNewContext: Context) => {
|
|
33
45
|
const oSideEffects = oAppComponent.getSideEffectsService().getODataActionSideEffects(sEditAction, oNewContext);
|
|
34
46
|
if (oSideEffects?.triggerActions?.length) {
|
|
@@ -51,11 +63,12 @@ function editDocumentInStickySession(oContext: Context, oAppComponent: AppCompon
|
|
|
51
63
|
* @memberof sap.fe.core.actions.sticky
|
|
52
64
|
* @static
|
|
53
65
|
* @param {sap.ui.model.odata.v4.Context} oContext Context of the document to be activated
|
|
66
|
+
* @param {boolean} bEnableStrictHandling
|
|
54
67
|
* @returns {Promise}
|
|
55
68
|
* @private
|
|
56
69
|
* @ui5-restricted
|
|
57
70
|
*/
|
|
58
|
-
function activateDocument(oContext: any) {
|
|
71
|
+
function activateDocument(oContext: any, bEnableStrictHandling: boolean) {
|
|
59
72
|
const oModel = oContext.getModel(),
|
|
60
73
|
oMetaModel = oModel.getMetaModel(),
|
|
61
74
|
sMetaPath = oMetaModel.getMetaPath(oContext.getPath()),
|
|
@@ -64,11 +77,15 @@ function activateDocument(oContext: any) {
|
|
|
64
77
|
if (!sSaveAction) {
|
|
65
78
|
throw new Error("Save Action for Sticky Session not found for " + sMetaPath);
|
|
66
79
|
}
|
|
67
|
-
|
|
80
|
+
const localI18nRef = (Core as CoreEx).getLibraryResourceBundle("sap.fe.core");
|
|
81
|
+
const sActionName = localI18nRef.getText("C_OP_OBJECT_PAGE_SAVE");
|
|
68
82
|
const oSaveAction = oModel.bindContext(sSaveAction + "(...)", oContext, { $$inheritExpandSelect: true });
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
83
|
+
const sGroupId = "direct";
|
|
84
|
+
//Triggering of 412 in case of save in sticky apps only when URL parameter is present
|
|
85
|
+
const oSavePromise = bEnableStrictHandling
|
|
86
|
+
? oSaveAction.execute(sGroupId, undefined, CommonUtils.fnOnStrictHandlingFailed.bind(sticky, sGroupId, sActionName, oModel))
|
|
87
|
+
: oSaveAction.execute(sGroupId);
|
|
88
|
+
oModel.submitBatch(sGroupId);
|
|
72
89
|
return oSavePromise;
|
|
73
90
|
}
|
|
74
91
|
/**
|
|
@@ -94,13 +111,59 @@ function discardDocument(oContext: any) {
|
|
|
94
111
|
}
|
|
95
112
|
|
|
96
113
|
const oDiscardAction = oModel.bindContext("/" + sDiscardAction + "(...)");
|
|
97
|
-
const oDiscardPromise = oDiscardAction.execute("direct").then(function() {
|
|
114
|
+
const oDiscardPromise = oDiscardAction.execute("direct").then(function () {
|
|
98
115
|
return oContext;
|
|
99
116
|
});
|
|
100
117
|
oModel.submitBatch("direct");
|
|
101
118
|
return oDiscardPromise;
|
|
102
119
|
}
|
|
103
120
|
|
|
121
|
+
/**
|
|
122
|
+
* Process the Data loss confirmation.
|
|
123
|
+
*
|
|
124
|
+
* @function
|
|
125
|
+
* @name sap.fe.core.actions.sticky#discardDocument
|
|
126
|
+
* @memberof sap.fe.core.actions.sticky
|
|
127
|
+
* @static
|
|
128
|
+
* @param {Function} fnProcess Function to execute after confirmation
|
|
129
|
+
* @param {sap.ui.core.mvc.XMLView} oView Current view
|
|
130
|
+
* @param {string} programmingModel Programming Model of the current page
|
|
131
|
+
* @returns {void}
|
|
132
|
+
* @private
|
|
133
|
+
* @ui5-restricted
|
|
134
|
+
*/
|
|
135
|
+
function processDataLossConfirmation(fnProcess: Function, oView: any, programmingModel: string) {
|
|
136
|
+
const bUIEditable = oView.getModel("ui").getProperty("/isEditable"),
|
|
137
|
+
oResourceBundle = (Core as CoreEx).getLibraryResourceBundle("sap.fe.templates"),
|
|
138
|
+
sWarningMsg = oResourceBundle && oResourceBundle.getText("T_COMMON_UTILS_NAVIGATION_AWAY_MSG"),
|
|
139
|
+
sConfirmButtonTxt = oResourceBundle && oResourceBundle.getText("T_COMMON_UTILS_NAVIGATION_AWAY_CONFIRM_BUTTON"),
|
|
140
|
+
sCancelButtonTxt = oResourceBundle && oResourceBundle.getText("T_COMMON_UTILS_NAVIGATION_AWAY_CANCEL_BUTTON");
|
|
141
|
+
|
|
142
|
+
if (programmingModel === ProgrammingModel.Sticky && bUIEditable) {
|
|
143
|
+
return MessageBox.warning(sWarningMsg, {
|
|
144
|
+
actions: [sConfirmButtonTxt, sCancelButtonTxt],
|
|
145
|
+
emphasizedAction: sConfirmButtonTxt,
|
|
146
|
+
onClose: function (sAction: any) {
|
|
147
|
+
if (sAction === sConfirmButtonTxt) {
|
|
148
|
+
const oInternalModel = oView && oView.getModel("internal");
|
|
149
|
+
|
|
150
|
+
Log.info("Navigation confirmed.");
|
|
151
|
+
if (oInternalModel) {
|
|
152
|
+
oInternalModel.setProperty("/sessionOn", false);
|
|
153
|
+
oInternalModel.setProperty("/stickySessionToken", undefined);
|
|
154
|
+
} else {
|
|
155
|
+
Log.warning("Local UIModel couldn't be found.");
|
|
156
|
+
}
|
|
157
|
+
fnProcess();
|
|
158
|
+
} else {
|
|
159
|
+
Log.info("Navigation rejected.");
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
return fnProcess();
|
|
165
|
+
}
|
|
166
|
+
|
|
104
167
|
/**
|
|
105
168
|
* Static functions for the sticky session programming model
|
|
106
169
|
*
|
|
@@ -113,7 +176,8 @@ function discardDocument(oContext: any) {
|
|
|
113
176
|
const sticky = {
|
|
114
177
|
editDocumentInStickySession: editDocumentInStickySession,
|
|
115
178
|
activateDocument: activateDocument,
|
|
116
|
-
discardDocument: discardDocument
|
|
179
|
+
discardDocument: discardDocument,
|
|
180
|
+
processDataLossConfirmation: processDataLossConfirmation
|
|
117
181
|
};
|
|
118
182
|
|
|
119
183
|
export default sticky;
|