@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.
Files changed (295) hide show
  1. package/package.json +4 -4
  2. package/src/sap/fe/core/.library +2 -3
  3. package/src/sap/fe/core/AppComponent.js +23 -30
  4. package/src/sap/fe/core/AppComponent.ts +35 -40
  5. package/src/sap/fe/core/AppStateHandler.js +8 -8
  6. package/src/sap/fe/core/AppStateHandler.ts +11 -11
  7. package/src/sap/fe/core/BaseController.js +9 -9
  8. package/src/sap/fe/core/BaseController.ts +3 -4
  9. package/src/sap/fe/core/CommonUtils.js +122 -101
  10. package/src/sap/fe/core/CommonUtils.ts +239 -193
  11. package/src/sap/fe/core/ExtensionAPI.js +12 -13
  12. package/src/sap/fe/core/ExtensionAPI.ts +21 -31
  13. package/src/sap/fe/core/PageController.js +19 -13
  14. package/src/sap/fe/core/PageController.ts +40 -34
  15. package/src/sap/fe/core/TemplateComponent.js +198 -123
  16. package/src/sap/fe/core/TemplateComponent.ts +109 -121
  17. package/src/sap/fe/core/TemplateModel.js +7 -9
  18. package/src/sap/fe/core/TemplateModel.ts +3 -3
  19. package/src/sap/fe/core/buildingBlocks/AttributeModel.js +60 -0
  20. package/src/sap/fe/core/buildingBlocks/AttributeModel.ts +37 -0
  21. package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +165 -0
  22. package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +178 -0
  23. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js +935 -0
  24. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.ts +837 -0
  25. package/src/sap/fe/core/buildingBlocks/TraceInfo.js +436 -0
  26. package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +431 -0
  27. package/src/sap/fe/core/{BusyLocker.js → controllerextensions/BusyLocker.js} +1 -1
  28. package/src/sap/fe/core/{BusyLocker.ts → controllerextensions/BusyLocker.ts} +7 -7
  29. package/src/sap/fe/core/controllerextensions/EditFlow.js +660 -288
  30. package/src/sap/fe/core/controllerextensions/EditFlow.ts +513 -331
  31. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +11 -11
  32. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +6 -7
  33. package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +43 -25
  34. package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +132 -103
  35. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +16 -16
  36. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +64 -55
  37. package/src/sap/fe/core/controllerextensions/InternalRouting.js +166 -99
  38. package/src/sap/fe/core/controllerextensions/InternalRouting.ts +187 -149
  39. package/src/sap/fe/core/controllerextensions/KPIManagement.js +14 -14
  40. package/src/sap/fe/core/controllerextensions/KPIManagement.ts +12 -11
  41. package/src/sap/fe/core/controllerextensions/MassEdit.js +13 -12
  42. package/src/sap/fe/core/controllerextensions/MassEdit.ts +22 -22
  43. package/src/sap/fe/core/controllerextensions/MessageHandler.js +14 -26
  44. package/src/sap/fe/core/controllerextensions/MessageHandler.ts +20 -30
  45. package/src/sap/fe/core/controllerextensions/PageReady.js +25 -23
  46. package/src/sap/fe/core/controllerextensions/PageReady.ts +49 -47
  47. package/src/sap/fe/core/controllerextensions/Paginator.js +24 -15
  48. package/src/sap/fe/core/controllerextensions/Paginator.ts +35 -20
  49. package/src/sap/fe/core/controllerextensions/Placeholder.js +10 -10
  50. package/src/sap/fe/core/controllerextensions/Placeholder.ts +12 -14
  51. package/src/sap/fe/core/controllerextensions/Routing.js +11 -11
  52. package/src/sap/fe/core/controllerextensions/Routing.ts +12 -13
  53. package/src/sap/fe/core/controllerextensions/Share.js +34 -16
  54. package/src/sap/fe/core/controllerextensions/Share.ts +50 -32
  55. package/src/sap/fe/core/controllerextensions/SideEffects.js +15 -15
  56. package/src/sap/fe/core/controllerextensions/SideEffects.ts +64 -65
  57. package/src/sap/fe/core/controllerextensions/ViewState.js +27 -31
  58. package/src/sap/fe/core/controllerextensions/ViewState.ts +103 -102
  59. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +105 -0
  60. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +98 -0
  61. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js +360 -0
  62. package/src/sap/fe/core/{actions → controllerextensions}/collaboration/ActivitySync.ts +90 -132
  63. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +146 -0
  64. package/src/sap/fe/core/{actions → controllerextensions}/collaboration/CollaborationCommon.ts +18 -8
  65. package/src/sap/fe/core/controllerextensions/collaboration/Manage.js +264 -0
  66. package/src/sap/fe/core/{actions → controllerextensions}/collaboration/Manage.ts +35 -33
  67. package/src/sap/fe/core/controllerextensions/collaboration/ManageDialog.fragment.xml +100 -0
  68. package/src/sap/fe/core/{actions → controllerextensions}/collaboration/UserDetails.fragment.xml +5 -7
  69. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +1584 -0
  70. package/src/sap/fe/core/{TransactionHelper.ts → controllerextensions/editFlow/TransactionHelper.ts} +190 -159
  71. package/src/sap/fe/core/controllerextensions/editFlow/draft.js +780 -0
  72. package/src/sap/fe/core/{actions → controllerextensions/editFlow}/draft.ts +329 -76
  73. package/src/sap/fe/core/controllerextensions/editFlow/operations.js +1149 -0
  74. package/src/sap/fe/core/{actions → controllerextensions/editFlow}/operations.ts +169 -97
  75. package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +190 -0
  76. package/src/sap/fe/core/{actions → controllerextensions/editFlow}/sticky.ts +76 -12
  77. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +592 -0
  78. package/src/sap/fe/core/{actions → controllerextensions/messageHandler}/messageHandling.ts +83 -60
  79. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +940 -0
  80. package/src/sap/fe/core/{RouterProxy.ts → controllerextensions/routing/RouterProxy.ts} +52 -36
  81. package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +21 -18
  82. package/src/sap/fe/core/controls/Any.js +28 -0
  83. package/src/sap/fe/core/controls/Any.ts +30 -0
  84. package/src/sap/fe/core/controls/CommandExecution.js +50 -16
  85. package/src/sap/fe/core/controls/CommandExecution.ts +31 -22
  86. package/src/sap/fe/core/controls/ConditionalWrapper.js +136 -65
  87. package/src/sap/fe/core/controls/ConditionalWrapper.ts +49 -58
  88. package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js +371 -0
  89. package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.ts +282 -0
  90. package/src/sap/fe/core/controls/CustomQuickViewPage.js +74 -36
  91. package/src/sap/fe/core/controls/CustomQuickViewPage.ts +23 -32
  92. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossDraft.fragment.xml +52 -5
  93. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +127 -67
  94. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +127 -67
  95. package/src/sap/fe/core/controls/FieldWrapper.js +171 -87
  96. package/src/sap/fe/core/controls/FieldWrapper.ts +69 -80
  97. package/src/sap/fe/core/controls/FileWrapper.js +360 -0
  98. package/src/sap/fe/core/controls/FileWrapper.ts +202 -0
  99. package/src/sap/fe/core/controls/FilterBar.js +154 -119
  100. package/src/sap/fe/core/controls/FilterBar.ts +128 -123
  101. package/src/sap/fe/core/controls/FormElementWrapper.js +102 -37
  102. package/src/sap/fe/core/controls/FormElementWrapper.ts +43 -35
  103. package/src/sap/fe/core/controls/MassEditSelect.js +33 -0
  104. package/src/sap/fe/core/controls/MassEditSelect.ts +45 -0
  105. package/src/sap/fe/core/controls/filterbar/FilterContainer.js +111 -89
  106. package/src/sap/fe/core/controls/filterbar/FilterContainer.ts +86 -82
  107. package/src/sap/fe/core/controls/filterbar/VisualFilter.js +242 -193
  108. package/src/sap/fe/core/controls/filterbar/VisualFilter.ts +211 -204
  109. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +152 -116
  110. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.ts +105 -105
  111. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +2 -2
  112. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +23 -28
  113. package/src/sap/fe/core/controls/massEdit/MassEditDialog.fragment.xml +41 -81
  114. package/src/sap/fe/core/controls/massEdit/MassEditField.fragment.xml +107 -0
  115. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +550 -35
  116. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +604 -35
  117. package/src/sap/fe/core/converters/ManifestSettings.js +3 -1
  118. package/src/sap/fe/core/converters/ManifestSettings.ts +9 -2
  119. package/src/sap/fe/core/converters/MetaModelConverter.js +11 -40
  120. package/src/sap/fe/core/converters/MetaModelConverter.ts +56 -84
  121. package/src/sap/fe/core/converters/annotations/DataField.js +20 -5
  122. package/src/sap/fe/core/converters/annotations/DataField.ts +27 -6
  123. package/src/sap/fe/core/converters/controls/Common/Action.js +14 -21
  124. package/src/sap/fe/core/converters/controls/Common/Action.ts +23 -28
  125. package/src/sap/fe/core/converters/controls/Common/Chart.js +17 -10
  126. package/src/sap/fe/core/converters/controls/Common/Chart.ts +20 -14
  127. package/src/sap/fe/core/converters/controls/Common/Form.js +16 -18
  128. package/src/sap/fe/core/converters/controls/Common/Form.ts +20 -20
  129. package/src/sap/fe/core/converters/controls/Common/KPI.js +1 -1
  130. package/src/sap/fe/core/converters/controls/Common/KPI.ts +2 -3
  131. package/src/sap/fe/core/converters/controls/Common/Table.js +389 -173
  132. package/src/sap/fe/core/converters/controls/Common/Table.ts +440 -244
  133. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +26 -16
  134. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +27 -19
  135. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +78 -47
  136. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +146 -107
  137. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +6 -6
  138. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +20 -18
  139. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +30 -25
  140. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +39 -34
  141. package/src/sap/fe/core/converters/helpers/Aggregation.js +10 -2
  142. package/src/sap/fe/core/converters/helpers/Aggregation.ts +18 -13
  143. package/src/sap/fe/core/converters/helpers/BindingHelper.js +3 -2
  144. package/src/sap/fe/core/converters/helpers/BindingHelper.ts +6 -5
  145. package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +1 -1
  146. package/src/sap/fe/core/converters/objectPage/FormMenuActions.ts +0 -4
  147. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +27 -24
  148. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +49 -40
  149. package/src/sap/fe/core/converters/templates/ListReportConverter.js +33 -22
  150. package/src/sap/fe/core/converters/templates/ListReportConverter.ts +77 -62
  151. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +28 -28
  152. package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +38 -45
  153. package/src/sap/fe/core/designtime/AppComponent.designtime.js +3 -3
  154. package/src/sap/fe/core/designtime/AppComponent.designtime.ts +8 -6
  155. package/src/sap/fe/core/formatters/KPIFormatter.js +3 -12
  156. package/src/sap/fe/core/formatters/KPIFormatter.ts +3 -2
  157. package/src/sap/fe/core/formatters/TableFormatter.js +74 -13
  158. package/src/sap/fe/core/formatters/TableFormatter.ts +71 -16
  159. package/src/sap/fe/core/formatters/ValueFormatter.js +4 -4
  160. package/src/sap/fe/core/formatters/ValueFormatter.ts +4 -7
  161. package/src/sap/fe/core/fpm/Component.js +46 -17
  162. package/src/sap/fe/core/fpm/Component.ts +11 -16
  163. package/src/sap/fe/core/helpers/AppStartupHelper.js +4 -4
  164. package/src/sap/fe/core/helpers/AppStartupHelper.ts +3 -3
  165. package/src/sap/fe/core/helpers/BindingExpression.js +10 -7
  166. package/src/sap/fe/core/helpers/BindingExpression.ts +37 -35
  167. package/src/sap/fe/core/helpers/ClassSupport.js +273 -256
  168. package/src/sap/fe/core/helpers/ClassSupport.ts +315 -237
  169. package/src/sap/fe/core/helpers/FPMHelper.js +3 -2
  170. package/src/sap/fe/core/helpers/FPMHelper.ts +9 -8
  171. package/src/sap/fe/core/helpers/MassEditHelper.js +522 -147
  172. package/src/sap/fe/core/helpers/MassEditHelper.ts +563 -236
  173. package/src/sap/fe/core/helpers/ModelHelper.js +29 -1
  174. package/src/sap/fe/core/helpers/ModelHelper.ts +39 -26
  175. package/src/sap/fe/core/helpers/PasteHelper.js +4 -4
  176. package/src/sap/fe/core/helpers/PasteHelper.ts +4 -3
  177. package/src/sap/fe/core/helpers/SemanticDateOperators.js +3 -3
  178. package/src/sap/fe/core/helpers/SemanticDateOperators.ts +3 -1
  179. package/src/sap/fe/core/helpers/SemanticKeyHelper.js +1 -1
  180. package/src/sap/fe/core/helpers/SemanticKeyHelper.ts +1 -1
  181. package/src/sap/fe/core/helpers/StableIdHelper.js +5 -7
  182. package/src/sap/fe/core/helpers/StableIdHelper.ts +8 -8
  183. package/src/sap/fe/core/{Synchronization.js → helpers/Synchronization.js} +1 -1
  184. package/src/sap/fe/core/{Synchronization.ts → helpers/Synchronization.ts} +1 -1
  185. package/src/sap/fe/core/jsx-runtime/jsx.js +35 -5
  186. package/src/sap/fe/core/jsx-runtime/jsx.ts +22 -8
  187. package/src/sap/fe/core/library.js +13 -5
  188. package/src/sap/fe/core/library.ts +26 -17
  189. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +1 -1
  190. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +0 -3
  191. package/src/sap/fe/core/messagebundle.properties +135 -180
  192. package/src/sap/fe/core/messagebundle_ar.properties +31 -64
  193. package/src/sap/fe/core/messagebundle_bg.properties +31 -64
  194. package/src/sap/fe/core/messagebundle_ca.properties +31 -64
  195. package/src/sap/fe/core/messagebundle_cs.properties +31 -64
  196. package/src/sap/fe/core/messagebundle_cy.properties +32 -65
  197. package/src/sap/fe/core/messagebundle_da.properties +31 -64
  198. package/src/sap/fe/core/messagebundle_de.properties +29 -62
  199. package/src/sap/fe/core/messagebundle_el.properties +32 -65
  200. package/src/sap/fe/core/messagebundle_en.properties +32 -65
  201. package/src/sap/fe/core/messagebundle_en_GB.properties +29 -62
  202. package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +41 -74
  203. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +32 -65
  204. package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +20 -6
  205. package/src/sap/fe/core/messagebundle_es.properties +31 -64
  206. package/src/sap/fe/core/messagebundle_es_MX.properties +31 -64
  207. package/src/sap/fe/core/messagebundle_et.properties +31 -64
  208. package/src/sap/fe/core/messagebundle_fi.properties +29 -62
  209. package/src/sap/fe/core/messagebundle_fr.properties +36 -69
  210. package/src/sap/fe/core/messagebundle_fr_CA.properties +33 -66
  211. package/src/sap/fe/core/messagebundle_hi.properties +29 -62
  212. package/src/sap/fe/core/messagebundle_hr.properties +32 -65
  213. package/src/sap/fe/core/messagebundle_hu.properties +30 -63
  214. package/src/sap/fe/core/messagebundle_id.properties +32 -65
  215. package/src/sap/fe/core/messagebundle_it.properties +31 -64
  216. package/src/sap/fe/core/messagebundle_iw.properties +31 -64
  217. package/src/sap/fe/core/messagebundle_ja.properties +29 -62
  218. package/src/sap/fe/core/messagebundle_kk.properties +31 -64
  219. package/src/sap/fe/core/messagebundle_ko.properties +31 -64
  220. package/src/sap/fe/core/messagebundle_lt.properties +31 -64
  221. package/src/sap/fe/core/messagebundle_lv.properties +32 -65
  222. package/src/sap/fe/core/messagebundle_ms.properties +31 -64
  223. package/src/sap/fe/core/messagebundle_nl.properties +31 -64
  224. package/src/sap/fe/core/messagebundle_no.properties +31 -64
  225. package/src/sap/fe/core/messagebundle_pl.properties +34 -67
  226. package/src/sap/fe/core/messagebundle_pt.properties +32 -65
  227. package/src/sap/fe/core/messagebundle_pt_PT.properties +31 -64
  228. package/src/sap/fe/core/messagebundle_ro.properties +33 -66
  229. package/src/sap/fe/core/messagebundle_ru.properties +33 -66
  230. package/src/sap/fe/core/messagebundle_sh.properties +31 -64
  231. package/src/sap/fe/core/messagebundle_sk.properties +31 -64
  232. package/src/sap/fe/core/messagebundle_sl.properties +29 -62
  233. package/src/sap/fe/core/messagebundle_sv.properties +30 -63
  234. package/src/sap/fe/core/messagebundle_th.properties +31 -64
  235. package/src/sap/fe/core/messagebundle_tr.properties +31 -64
  236. package/src/sap/fe/core/messagebundle_uk.properties +32 -65
  237. package/src/sap/fe/core/messagebundle_vi.properties +31 -64
  238. package/src/sap/fe/core/messagebundle_zh_CN.properties +32 -65
  239. package/src/sap/fe/core/messagebundle_zh_TW.properties +34 -67
  240. package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +4 -4
  241. package/src/sap/fe/core/services/AsyncComponentServiceFactory.ts +1 -1
  242. package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +5 -5
  243. package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +1 -2
  244. package/src/sap/fe/core/services/EnvironmentServiceFactory.js +11 -8
  245. package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +15 -13
  246. package/src/sap/fe/core/services/NavigationServiceFactory.js +5 -5
  247. package/src/sap/fe/core/services/NavigationServiceFactory.ts +9 -5
  248. package/src/sap/fe/core/services/ResourceModelServiceFactory.js +4 -4
  249. package/src/sap/fe/core/services/ResourceModelServiceFactory.ts +1 -1
  250. package/src/sap/fe/core/services/RoutingServiceFactory.js +105 -66
  251. package/src/sap/fe/core/services/RoutingServiceFactory.ts +59 -49
  252. package/src/sap/fe/core/services/ShellServicesFactory.js +104 -29
  253. package/src/sap/fe/core/services/ShellServicesFactory.ts +64 -30
  254. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +4 -4
  255. package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +1 -1
  256. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +11 -10
  257. package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +38 -51
  258. package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +43 -5
  259. package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.ts +6 -3
  260. package/src/sap/fe/core/support/CommonHelper.js +1 -1
  261. package/src/sap/fe/core/support/CommonHelper.ts +0 -3
  262. package/src/sap/fe/core/templating/DataModelPathHelper.js +2 -9
  263. package/src/sap/fe/core/templating/DataModelPathHelper.ts +32 -38
  264. package/src/sap/fe/core/templating/DisplayModeFormatter.js +23 -3
  265. package/src/sap/fe/core/templating/DisplayModeFormatter.ts +27 -6
  266. package/src/sap/fe/core/templating/EntitySetHelper.js +1 -9
  267. package/src/sap/fe/core/templating/EntitySetHelper.ts +11 -13
  268. package/src/sap/fe/core/templating/FilterHelper.js +4 -4
  269. package/src/sap/fe/core/templating/FilterHelper.ts +6 -5
  270. package/src/sap/fe/core/templating/PropertyHelper.js +70 -33
  271. package/src/sap/fe/core/templating/PropertyHelper.ts +49 -27
  272. package/src/sap/fe/core/templating/UIFormatters.js +133 -22
  273. package/src/sap/fe/core/templating/UIFormatters.ts +144 -50
  274. package/src/sap/fe/core/type/DateTimeWithTimezone.js +47 -0
  275. package/src/sap/fe/core/type/DateTimeWithTimezone.ts +23 -0
  276. package/src/sap/fe/core/type/Email.js +26 -8
  277. package/src/sap/fe/core/type/Email.ts +8 -7
  278. package/src/sap/fe/core/AnnotationHelper.js +0 -312
  279. package/src/sap/fe/core/AnnotationHelper.ts +0 -315
  280. package/src/sap/fe/core/RouterProxy.js +0 -926
  281. package/src/sap/fe/core/TransactionHelper.js +0 -1562
  282. package/src/sap/fe/core/actions/collaboration/ActivitySync.js +0 -392
  283. package/src/sap/fe/core/actions/collaboration/CollaborationCommon.js +0 -136
  284. package/src/sap/fe/core/actions/collaboration/Manage.js +0 -262
  285. package/src/sap/fe/core/actions/collaboration/ManageDialog.fragment.xml +0 -103
  286. package/src/sap/fe/core/actions/draft.js +0 -523
  287. package/src/sap/fe/core/actions/messageHandling.js +0 -567
  288. package/src/sap/fe/core/actions/nonDraft.js +0 -20
  289. package/src/sap/fe/core/actions/nonDraft.ts +0 -12
  290. package/src/sap/fe/core/actions/operations.js +0 -1096
  291. package/src/sap/fe/core/actions/sticky.js +0 -130
  292. package/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.js +0 -78
  293. package/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.ts +0 -65
  294. package/src/sap/fe/core/formatters/CriticalityFormatter.js +0 -77
  295. 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 AppComponent from "sap/fe/core/AppComponent";
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("direct");
31
- oModel.submitBatch("direct");
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
- const oSavePromise = oSaveAction.execute("direct");
71
- oModel.submitBatch("direct");
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;