@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
@@ -28,16 +28,23 @@ type FieldEventPropertyType = {
28
28
  sideEffectsMap: FieldSideEffectDictionary;
29
29
  };
30
30
 
31
- type FieldSideEffectPropertyType = {
31
+ type BaseSideEffectPropertyType = {
32
32
  name: string;
33
33
  immediate?: boolean;
34
- context: Context;
35
34
  sideEffects: SideEffectsType;
36
35
  previouslyFailed?: boolean;
37
36
  };
38
37
 
38
+ export type MassEditFieldSideEffectPropertyType = BaseSideEffectPropertyType;
39
+
40
+ export type FieldSideEffectPropertyType = BaseSideEffectPropertyType & {
41
+ context: Context;
42
+ };
43
+
39
44
  type FieldSideEffectDictionary = Record<string, FieldSideEffectPropertyType>;
40
45
 
46
+ type MassEditFieldSideEffectDictionary = Record<string, MassEditFieldSideEffectPropertyType>;
47
+
41
48
  type FailedSideEffectDictionary = Record<string, SideEffectsType[]>;
42
49
 
43
50
  type FieldGroupSideEffectType = {
@@ -96,6 +103,12 @@ class SideEffectsControllerExtension extends ControllerExtension {
96
103
  return this._mFailedSideEffects;
97
104
  }
98
105
 
106
+ @publicExtension()
107
+ @finalExtension()
108
+ public deleteFailedRequestsForAContext(contextPath: string) {
109
+ delete this._mFailedSideEffects[contextPath];
110
+ }
111
+
99
112
  /**
100
113
  * Manages the workflow for SideEffects with related changes to a field
101
114
  * The following scenarios are managed:
@@ -139,9 +152,9 @@ class SideEffectsControllerExtension extends ControllerExtension {
139
152
 
140
153
  aImmediateSideEffectsProperties
141
154
  .filter((mImmediateSideEffects) => mImmediateSideEffects.previouslyFailed === true)
142
- .forEach((mImmediateSideEffects) =>
143
- this._addFailedSideEffects(mImmediateSideEffects.sideEffects, mImmediateSideEffects.context)
144
- );
155
+ .forEach((mImmediateSideEffects) => {
156
+ this._addFailedSideEffects(mImmediateSideEffects.sideEffects, mImmediateSideEffects.context);
157
+ });
145
158
  }
146
159
  });
147
160
  }
@@ -261,32 +274,38 @@ class SideEffectsControllerExtension extends ControllerExtension {
261
274
  * @name requestSideEffects
262
275
  * @param oSideEffects SideEffects to be executed
263
276
  * @param oContext Context where SideEffects need to be executed
277
+ * @param groupId
278
+ * @param fnGetTargets The callback function which will give us the targets and actions if it was coming through some specific handling.
264
279
  * @returns SideEffects request on SAPUI5 context
265
280
  */
266
281
  @publicExtension()
267
282
  @finalExtension()
268
- public requestSideEffects(oSideEffects: SideEffectsType, oContext: Context): Promise<any> {
269
- let fResolver: any, fRejector: any;
270
- const oPromise = new Promise(function (resolve, reject) {
271
- fResolver = resolve;
272
- fRejector = reject;
273
- });
274
- const aTargets: any[] = ((oSideEffects.TargetEntities as any[]) || []).concat((oSideEffects.TargetProperties as any[]) || []),
275
- sTriggerAction: String | undefined = (oSideEffects as ODataSideEffectsType).TriggerAction;
276
-
283
+ public async requestSideEffects(
284
+ oSideEffects: SideEffectsType,
285
+ oContext: Context,
286
+ groupId?: string,
287
+ fnGetTargets?: Function
288
+ ): Promise<any> {
289
+ let aTargets: any[], sTriggerAction;
290
+ if (fnGetTargets) {
291
+ const targetsAndActionData = await fnGetTargets(oSideEffects);
292
+ aTargets = targetsAndActionData["aTargets"];
293
+ sTriggerAction = targetsAndActionData["TriggerAction"];
294
+ } else {
295
+ aTargets = ((oSideEffects.TargetEntities as any[]) || []).concat((oSideEffects.TargetProperties as any[]) || []);
296
+ sTriggerAction = (oSideEffects as ODataSideEffectsType).TriggerAction;
297
+ }
277
298
  if (sTriggerAction) {
278
- this._oSideEffectsService.executeAction(sTriggerAction, oContext);
299
+ this._oSideEffectsService.executeAction(sTriggerAction, oContext, groupId);
279
300
  }
280
301
 
281
- this._oSideEffectsService
282
- .requestSideEffects(aTargets, oContext)
283
- .then(() => fResolver())
284
- .catch((oError: any) => {
302
+ if (aTargets.length) {
303
+ return this._oSideEffectsService.requestSideEffects(aTargets, oContext, groupId).catch((oError: any) => {
285
304
  this._addFailedSideEffects(oSideEffects, oContext);
286
- fRejector(oError);
305
+ return Promise.reject(oError);
287
306
  });
288
-
289
- return oPromise;
307
+ }
308
+ return Promise.resolve();
290
309
  }
291
310
 
292
311
  /**
@@ -319,6 +338,7 @@ class SideEffectsControllerExtension extends ControllerExtension {
319
338
  @finalExtension()
320
339
  private _addFailedSideEffects(oSideEffects: SideEffectsType, oContext: Context): void {
321
340
  const sContextPath: string = oContext.getPath();
341
+
322
342
  this._mFailedSideEffects[sContextPath] = this._mFailedSideEffects[sContextPath] || [];
323
343
  const bIsNotAlreadyListed = this._mFailedSideEffects[sContextPath].every(
324
344
  (mFailedSideEffects) => oSideEffects.fullyQualifiedName !== mFailedSideEffects.fullyQualifiedName
@@ -418,27 +438,24 @@ class SideEffectsControllerExtension extends ControllerExtension {
418
438
 
419
439
  /**
420
440
  * Gets the appropriate context on which SideEffects can be requested.
421
- * The correct one must have the binding parameter $$patchWithoutSideEffects.
441
+ * The correct one must have the binding parameter $$patchWithoutSideEffects.
422
442
  *
423
- * @function
424
- * @name _getContextForSideEffects
425
- * @param oSourceField Field
426
- * @param sSideEffectEntityType Target entity type of the SideEffects annotation
427
- * @returns SAPUI5 Context
443
+ * @param oBindingContext
444
+ * @param sSideEffectEntityType
445
+ * @returns SAPUI5 Context or undefined
428
446
  */
429
- @privateExtension()
447
+ @publicExtension()
430
448
  @finalExtension()
431
- private _getContextForSideEffects(oSourceField: FieldControl, sSideEffectEntityType: string): Context | undefined {
432
- const oBindingContext = oSourceField.getBindingContext();
449
+ public getContextForSideEffects(oBindingContext: any, sSideEffectEntityType: string): Context | undefined {
433
450
  let oContextForSideEffects = oBindingContext,
434
451
  sEntityType = this._oSideEffectsService.getEntityTypeFromContext(oBindingContext);
435
452
 
436
453
  if (sSideEffectEntityType !== sEntityType) {
437
- oContextForSideEffects = (oBindingContext as any).getBinding().getContext();
454
+ oContextForSideEffects = oBindingContext.getBinding().getContext();
438
455
  if (oContextForSideEffects) {
439
456
  sEntityType = this._oSideEffectsService.getEntityTypeFromContext(oContextForSideEffects);
440
457
  if (sSideEffectEntityType !== sEntityType) {
441
- oContextForSideEffects = (oContextForSideEffects as any).getBinding().getContext();
458
+ oContextForSideEffects = oContextForSideEffects.getBinding().getContext();
442
459
  if (oContextForSideEffects) {
443
460
  sEntityType = this._oSideEffectsService.getEntityTypeFromContext(oContextForSideEffects);
444
461
  if (sSideEffectEntityType !== sEntityType) {
@@ -474,10 +491,10 @@ class SideEffectsControllerExtension extends ControllerExtension {
474
491
  */
475
492
  private _getFieldPromise(oEvent: Event): Promise<any> {
476
493
  const promise = oEvent.getParameter("promise") || Promise.resolve();
477
-
494
+ const validity = FieldRuntime.getFieldStateOnChange(oEvent).state.validity;
478
495
  return promise.then(() => {
479
496
  return new Promise(function (resolve, reject) {
480
- if (!FieldRuntime.getFieldStateOnChange(oEvent).state.validity) {
497
+ if (!validity) {
481
498
  reject();
482
499
  } else {
483
500
  resolve(true);
@@ -516,34 +533,15 @@ class SideEffectsControllerExtension extends ControllerExtension {
516
533
  * @returns SideEffects map
517
534
  */
518
535
  private _getFieldSideEffectsMap(oField: FieldControl): FieldSideEffectDictionary {
519
- const mSideEffectsMap: FieldSideEffectDictionary = {},
520
- aFieldGroupIds: string[] = oField.getFieldGroupIds(),
536
+ let mSideEffectsMap: FieldSideEffectDictionary = {};
537
+ const aFieldGroupIds: string[] = oField.getFieldGroupIds(),
521
538
  sViewEntitySetSetName = this._oView.getViewData().entitySet,
522
539
  oViewEntitySet = (this._oSideEffectsService.getConvertedMetaModel() as ConvertedMetadata).entitySets.find((oEntitySet) => {
523
540
  return oEntitySet.name === sViewEntitySetSetName;
524
541
  });
525
542
 
526
543
  // SideEffects coming from an OData Service
527
- aFieldGroupIds.forEach((sFieldGroupId) => {
528
- const bIsImmediate: boolean = sFieldGroupId.indexOf("$$ImmediateRequest") !== -1,
529
- sName: string = sFieldGroupId.replace("$$ImmediateRequest", ""),
530
- aSideEffectParts: string[] = sName.split("#"),
531
- sSideEffectEntityType: string = aSideEffectParts[0],
532
- sSideEffectPath: string = `${sSideEffectEntityType}@com.sap.vocabularies.Common.v1.SideEffects${
533
- aSideEffectParts.length === 2 ? `#${aSideEffectParts[1]}` : ""
534
- }`,
535
- oSideEffect: SideEffectsType | undefined =
536
- this._oSideEffectsService.getODataEntitySideEffects(sSideEffectEntityType)?.[sSideEffectPath],
537
- oContext: Context | undefined = this._getContextForSideEffects(oField, sSideEffectEntityType);
538
- if (oSideEffect && oContext) {
539
- mSideEffectsMap[sName] = {
540
- name: sName,
541
- immediate: bIsImmediate,
542
- sideEffects: oSideEffect,
543
- context: oContext
544
- };
545
- }
546
- });
544
+ mSideEffectsMap = this.generateSideEffectsMapFromSideEffectId(aFieldGroupIds, oField) as FieldSideEffectDictionary;
547
545
 
548
546
  //SideEffects coming from control(s)
549
547
  if (sViewEntitySetSetName && oViewEntitySet) {
@@ -551,7 +549,7 @@ class SideEffectsControllerExtension extends ControllerExtension {
551
549
  mFieldPath: any = (oField.getAggregation("customData") as any[]).find((oCustomData) => {
552
550
  return oCustomData.getKey() === "sourcePath";
553
551
  }),
554
- oContext: Context | undefined = this._getContextForSideEffects(oField, sViewEntityType);
552
+ oContext: Context | undefined = this.getContextForSideEffects(oField.getBindingContext(), sViewEntityType);
555
553
 
556
554
  if (mFieldPath && oContext) {
557
555
  const sFieldPath = mFieldPath.getValue().replace(`/${sViewEntitySetSetName}/`, ""),
@@ -575,6 +573,62 @@ class SideEffectsControllerExtension extends ControllerExtension {
575
573
  return mSideEffectsMap;
576
574
  }
577
575
 
576
+ /**
577
+ * Get side effect Name, sideeffect obj and entity type from a given fieldGroupId.
578
+ *
579
+ * @param sFieldGroupId
580
+ * @returns Data about sideeffect name, entitytype, side effect object and if it is immediate.
581
+ */
582
+ private _getDataToGenerateSideEffectsMapFromSideEffectId(sFieldGroupId: any) {
583
+ const bIsImmediate: boolean = sFieldGroupId.indexOf("$$ImmediateRequest") !== -1,
584
+ sName: string = sFieldGroupId.replace("$$ImmediateRequest", ""),
585
+ aSideEffectParts: string[] = sName.split("#"),
586
+ sSideEffectEntityType: string = aSideEffectParts[0],
587
+ sSideEffectPath: string = `${sSideEffectEntityType}@com.sap.vocabularies.Common.v1.SideEffects${
588
+ aSideEffectParts.length === 2 ? `#${aSideEffectParts[1]}` : ""
589
+ }`,
590
+ oSideEffect: SideEffectsType | undefined =
591
+ this._oSideEffectsService.getODataEntitySideEffects(sSideEffectEntityType)?.[sSideEffectPath];
592
+ return { sName, bIsImmediate, oSideEffect, sSideEffectEntityType };
593
+ }
594
+
595
+ /**
596
+ * Generate the side effects map from id which is the entity and qualifier
597
+ * for the given entity.
598
+ *
599
+ * @function
600
+ * @param aFieldGroupIds
601
+ * @param oField
602
+ * @returns Side effect map with data
603
+ */
604
+
605
+ @publicExtension()
606
+ @finalExtension()
607
+ public generateSideEffectsMapFromSideEffectId(
608
+ aFieldGroupIds: string[],
609
+ oField?: FieldControl
610
+ ): MassEditFieldSideEffectDictionary | FieldSideEffectDictionary {
611
+ const mSideEffectsMap: MassEditFieldSideEffectDictionary | FieldSideEffectDictionary = {};
612
+ aFieldGroupIds.forEach((sFieldGroupId: any) => {
613
+ const { sName, bIsImmediate, oSideEffect, sSideEffectEntityType } =
614
+ this._getDataToGenerateSideEffectsMapFromSideEffectId(sFieldGroupId);
615
+ const oContext: Context | undefined = oField
616
+ ? this.getContextForSideEffects(oField.getBindingContext(), sSideEffectEntityType)
617
+ : undefined;
618
+ if (oSideEffect && (!oField || (oField && oContext))) {
619
+ mSideEffectsMap[sName] = {
620
+ name: sName,
621
+ immediate: bIsImmediate,
622
+ sideEffects: oSideEffect
623
+ };
624
+ if (oField) {
625
+ (mSideEffectsMap[sName] as FieldSideEffectPropertyType).context = oContext!;
626
+ }
627
+ }
628
+ });
629
+ return mSideEffectsMap;
630
+ }
631
+
578
632
  /**
579
633
  * Manages the SideEffects with related changes to a field
580
634
  * List: gets immediate SideEffects requests
@@ -599,45 +653,47 @@ class SideEffectsControllerExtension extends ControllerExtension {
599
653
 
600
654
  Object.keys(mFieldSideEffectsMap).forEach((sSideEffectName) => {
601
655
  const oSideEffectProperty: FieldSideEffectPropertyType = mFieldSideEffectsMap[sSideEffectName],
602
- sSideEffectContextPath = oSideEffectProperty.context.getPath(),
603
- aFailedSideEffects = this._mFailedSideEffects[sSideEffectContextPath];
604
-
605
- // Check if there is any previously failed request for this context
606
- if (aFailedSideEffects) {
607
- delete this._mFailedSideEffects[sSideEffectContextPath];
608
- mFailedSideEffectsName[sSideEffectContextPath] = {};
609
- aFailedSideEffects.forEach((mFailedSideEffects) => {
610
- mFailedSideEffectsName[sSideEffectContextPath][mFailedSideEffects.fullyQualifiedName] = true;
611
- aImmediateSideEffectsProperties.push({
612
- name: sSideEffectName,
613
- previouslyFailed: true,
614
- sideEffects: mFailedSideEffects,
615
- context: oSideEffectProperty.context
616
- });
617
- });
618
- }
619
- if (oSideEffectProperty.immediate) {
620
- // SideEffects will be executed immediately after event promise validation
621
- if (!mFailedSideEffectsName[sSideEffectContextPath]?.[oSideEffectProperty.sideEffects.fullyQualifiedName]) {
622
- aImmediateSideEffectsProperties.push({
623
- name: sSideEffectName,
624
- sideEffects: oSideEffectProperty.sideEffects,
625
- context: oSideEffectProperty.context
656
+ sSideEffectContextPath = oSideEffectProperty.context?.getPath();
657
+ if (sSideEffectContextPath) {
658
+ const aFailedSideEffects = this._mFailedSideEffects[sSideEffectContextPath];
659
+
660
+ if (aFailedSideEffects) {
661
+ delete this._mFailedSideEffects[sSideEffectContextPath];
662
+ mFailedSideEffectsName[sSideEffectContextPath] = {};
663
+ aFailedSideEffects.forEach((mFailedSideEffects: any) => {
664
+ mFailedSideEffectsName[sSideEffectContextPath][mFailedSideEffects.fullyQualifiedName] = true;
665
+ aImmediateSideEffectsProperties.push({
666
+ name: sSideEffectName,
667
+ previouslyFailed: true,
668
+ sideEffects: mFailedSideEffects,
669
+ context: oSideEffectProperty.context
670
+ });
626
671
  });
627
672
  }
628
- } else {
629
- // Add deferred SideEffects to the related dictionary
630
- this._mFieldGroupQueue[sSideEffectName] = this._mFieldGroupQueue[sSideEffectName] || {};
631
- const mSideEffectContextPath = this._mFieldGroupQueue[sSideEffectName][sSideEffectContextPath] || {
632
- promises: [],
633
- sideEffectProperty: oSideEffectProperty,
634
- processStarted: false
635
- };
636
- mSideEffectContextPath.promises = mSideEffectContextPath.promises.concat([
637
- oFieldPromiseForFieldGroup,
638
- oFieldGroupPreRequisite as Promise<any>
639
- ]);
640
- this._mFieldGroupQueue[sSideEffectName][sSideEffectContextPath] = mSideEffectContextPath;
673
+
674
+ if (oSideEffectProperty.immediate) {
675
+ // SideEffects will be executed immediately after event promise validation
676
+ if (!mFailedSideEffectsName[sSideEffectContextPath]?.[oSideEffectProperty.sideEffects.fullyQualifiedName]) {
677
+ aImmediateSideEffectsProperties.push({
678
+ name: sSideEffectName,
679
+ sideEffects: oSideEffectProperty.sideEffects,
680
+ context: oSideEffectProperty.context
681
+ });
682
+ }
683
+ } else {
684
+ // Add deferred SideEffects to the related dictionary
685
+ this._mFieldGroupQueue[sSideEffectName] = this._mFieldGroupQueue[sSideEffectName] || {};
686
+ const mSideEffectContextPath = this._mFieldGroupQueue[sSideEffectName][sSideEffectContextPath] || {
687
+ promises: [],
688
+ sideEffectProperty: oSideEffectProperty,
689
+ processStarted: false
690
+ };
691
+ mSideEffectContextPath.promises = mSideEffectContextPath.promises.concat([
692
+ oFieldPromiseForFieldGroup,
693
+ oFieldGroupPreRequisite as Promise<any>
694
+ ]);
695
+ this._mFieldGroupQueue[sSideEffectName][sSideEffectContextPath] = mSideEffectContextPath;
696
+ }
641
697
  }
642
698
  });
643
699
  return aImmediateSideEffectsProperties;