@sapui5/sap.fe.core 1.103.0 → 1.106.0

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