@sapui5/sap.fe.core 1.99.0 → 1.100.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 (246) hide show
  1. package/package.json +4 -2
  2. package/src/sap/fe/core/.library +1 -1
  3. package/src/sap/fe/core/AnnotationHelper.js +1 -69
  4. package/src/sap/fe/core/AnnotationHelper.ts +0 -70
  5. package/src/sap/fe/core/AppComponent.js +388 -399
  6. package/src/sap/fe/core/AppComponent.ts +403 -0
  7. package/src/sap/fe/core/AppStateHandler.js +127 -158
  8. package/src/sap/fe/core/BaseController.js +82 -58
  9. package/src/sap/fe/core/BaseController.ts +68 -0
  10. package/src/sap/fe/core/CommonUtils.js +111 -20
  11. package/src/sap/fe/core/CommonUtils.ts +131 -32
  12. package/src/sap/fe/core/ExtensionAPI.js +278 -274
  13. package/src/sap/fe/core/ExtensionAPI.ts +250 -0
  14. package/src/sap/fe/core/PageController.js +157 -29
  15. package/src/sap/fe/core/PageController.ts +60 -32
  16. package/src/sap/fe/core/RouterProxy.js +694 -756
  17. package/src/sap/fe/core/RouterProxy.ts +11 -9
  18. package/src/sap/fe/core/Synchronization.js +21 -31
  19. package/src/sap/fe/core/TemplateComponent.js +1 -1
  20. package/src/sap/fe/core/TemplateComponent.ts +10 -3
  21. package/src/sap/fe/core/TemplateModel.js +20 -38
  22. package/src/sap/fe/core/TemplateModel.ts +1 -1
  23. package/src/sap/fe/core/TransactionHelper.js +1354 -1370
  24. package/src/sap/fe/core/TransactionHelper.ts +33 -22
  25. package/src/sap/fe/core/actions/collaboration/ActivitySync.js +392 -0
  26. package/src/sap/fe/core/actions/collaboration/ActivitySync.ts +355 -0
  27. package/src/sap/fe/core/actions/collaboration/CollaborationCommon.js +136 -0
  28. package/src/sap/fe/core/actions/collaboration/CollaborationCommon.ts +119 -0
  29. package/src/sap/fe/core/actions/collaboration/Manage.js +262 -0
  30. package/src/sap/fe/core/actions/collaboration/Manage.ts +244 -0
  31. package/src/sap/fe/core/actions/collaboration/ManageDialog.fragment.xml +103 -0
  32. package/src/sap/fe/core/actions/collaboration/UserDetails.fragment.xml +13 -0
  33. package/src/sap/fe/core/actions/draft.js +30 -68
  34. package/src/sap/fe/core/actions/draft.ts +44 -71
  35. package/src/sap/fe/core/actions/messageHandling.js +55 -36
  36. package/src/sap/fe/core/actions/messageHandling.ts +66 -46
  37. package/src/sap/fe/core/actions/operations.js +34 -15
  38. package/src/sap/fe/core/actions/operations.ts +48 -18
  39. package/src/sap/fe/core/actions/sticky.js +17 -4
  40. package/src/sap/fe/core/actions/sticky.ts +21 -4
  41. package/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.js +69 -66
  42. package/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.ts +65 -0
  43. package/src/sap/fe/core/controllerextensions/EditFlow.js +1593 -1669
  44. package/src/sap/fe/core/controllerextensions/EditFlow.ts +1672 -0
  45. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +79 -54
  46. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +61 -0
  47. package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +718 -779
  48. package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +783 -0
  49. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +796 -816
  50. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +803 -0
  51. package/src/sap/fe/core/controllerextensions/InternalRouting.js +1004 -1005
  52. package/src/sap/fe/core/controllerextensions/InternalRouting.ts +978 -0
  53. package/src/sap/fe/core/controllerextensions/KPIManagement.js +487 -521
  54. package/src/sap/fe/core/controllerextensions/KPIManagement.ts +2 -2
  55. package/src/sap/fe/core/controllerextensions/MassEdit.js +141 -169
  56. package/src/sap/fe/core/controllerextensions/MassEdit.ts +156 -0
  57. package/src/sap/fe/core/controllerextensions/MessageHandler.js +233 -244
  58. package/src/sap/fe/core/controllerextensions/MessageHandler.ts +225 -0
  59. package/src/sap/fe/core/controllerextensions/PageReady.js +301 -336
  60. package/src/sap/fe/core/controllerextensions/PageReady.ts +12 -10
  61. package/src/sap/fe/core/controllerextensions/Paginator.js +188 -175
  62. package/src/sap/fe/core/controllerextensions/Paginator.ts +163 -0
  63. package/src/sap/fe/core/controllerextensions/Placeholder.js +157 -149
  64. package/src/sap/fe/core/controllerextensions/Placeholder.ts +151 -0
  65. package/src/sap/fe/core/controllerextensions/Routing.js +144 -125
  66. package/src/sap/fe/core/controllerextensions/Routing.ts +132 -0
  67. package/src/sap/fe/core/controllerextensions/RoutingListener.js +7 -6
  68. package/src/sap/fe/core/controllerextensions/RoutingListener.ts +3 -0
  69. package/src/sap/fe/core/controllerextensions/Share.js +230 -268
  70. package/src/sap/fe/core/controllerextensions/Share.ts +231 -0
  71. package/src/sap/fe/core/controllerextensions/SideEffects.js +592 -633
  72. package/src/sap/fe/core/controllerextensions/SideEffects.ts +8 -7
  73. package/src/sap/fe/core/controllerextensions/ViewState.js +788 -806
  74. package/src/sap/fe/core/controllerextensions/ViewState.ts +805 -0
  75. package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +2 -2
  76. package/src/sap/fe/core/controls/ActionPartial.fragment.xml +2 -2
  77. package/src/sap/fe/core/controls/CommandExecution.js +67 -66
  78. package/src/sap/fe/core/controls/CommandExecution.ts +72 -0
  79. package/src/sap/fe/core/controls/ConditionalWrapper.js +90 -75
  80. package/src/sap/fe/core/controls/ConditionalWrapper.ts +83 -0
  81. package/src/sap/fe/core/controls/CustomQuickViewPage.js +130 -125
  82. package/src/sap/fe/core/controls/CustomQuickViewPage.ts +126 -0
  83. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +103 -112
  84. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +101 -0
  85. package/src/sap/fe/core/controls/FieldWrapper.js +122 -135
  86. package/src/sap/fe/core/controls/FieldWrapper.ts +115 -0
  87. package/src/sap/fe/core/controls/FilterBar.js +162 -159
  88. package/src/sap/fe/core/controls/FilterBar.ts +143 -0
  89. package/src/sap/fe/core/controls/FormElementWrapper.js +45 -39
  90. package/src/sap/fe/core/controls/FormElementWrapper.ts +40 -0
  91. package/src/sap/fe/core/controls/MultiValueParameterDelegate.js +37 -42
  92. package/src/sap/fe/core/controls/MultiValueParameterDelegate.ts +31 -0
  93. package/src/sap/fe/core/controls/filterbar/FilterContainer.js +126 -116
  94. package/src/sap/fe/core/controls/filterbar/FilterContainer.ts +98 -0
  95. package/src/sap/fe/core/controls/filterbar/VisualFilter.js +241 -255
  96. package/src/sap/fe/core/controls/filterbar/VisualFilter.ts +245 -0
  97. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +150 -141
  98. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.ts +125 -0
  99. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +335 -322
  100. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +337 -0
  101. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +74 -74
  102. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +70 -0
  103. package/src/sap/fe/core/converters/ConverterContext.js +348 -379
  104. package/src/sap/fe/core/converters/ConverterContext.ts +19 -16
  105. package/src/sap/fe/core/converters/ManifestSettings.js +12 -1
  106. package/src/sap/fe/core/converters/ManifestSettings.ts +12 -1
  107. package/src/sap/fe/core/converters/ManifestWrapper.js +354 -378
  108. package/src/sap/fe/core/converters/ManifestWrapper.ts +10 -0
  109. package/src/sap/fe/core/converters/MetaModelConverter.js +6 -4
  110. package/src/sap/fe/core/converters/MetaModelConverter.ts +5 -2
  111. package/src/sap/fe/core/converters/TemplateConverter.js +1 -1
  112. package/src/sap/fe/core/converters/TemplateConverter.ts +2 -1
  113. package/src/sap/fe/core/converters/annotations/DataField.js +26 -12
  114. package/src/sap/fe/core/converters/annotations/DataField.ts +37 -13
  115. package/src/sap/fe/core/converters/controls/Common/Form.js +2 -2
  116. package/src/sap/fe/core/converters/controls/Common/Form.ts +4 -2
  117. package/src/sap/fe/core/converters/controls/Common/KPI.js +1 -1
  118. package/src/sap/fe/core/converters/controls/Common/KPI.ts +3 -2
  119. package/src/sap/fe/core/converters/controls/Common/Table.js +130 -23
  120. package/src/sap/fe/core/converters/controls/Common/Table.ts +134 -29
  121. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +118 -53
  122. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +156 -93
  123. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +161 -207
  124. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +148 -206
  125. package/src/sap/fe/core/converters/helpers/Aggregation.js +115 -133
  126. package/src/sap/fe/core/converters/helpers/BindingHelper.js +20 -6
  127. package/src/sap/fe/core/converters/helpers/BindingHelper.ts +16 -4
  128. package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +12 -1
  129. package/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +11 -0
  130. package/src/sap/fe/core/converters/helpers/Key.js +42 -57
  131. package/src/sap/fe/core/converters/helpers/Key.ts +1 -1
  132. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +25 -4
  133. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +20 -3
  134. package/src/sap/fe/core/converters/templates/ListReportConverter.js +10 -4
  135. package/src/sap/fe/core/converters/templates/ListReportConverter.ts +15 -4
  136. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +7 -5
  137. package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +5 -1
  138. package/src/sap/fe/core/designtime/AppComponent.designtime.js +92 -98
  139. package/src/sap/fe/core/designtime/AppComponent.designtime.ts +91 -0
  140. package/src/sap/fe/core/formatters/CollaborationFormatter.js +104 -0
  141. package/src/sap/fe/core/formatters/CollaborationFormatter.ts +60 -0
  142. package/src/sap/fe/core/formatters/TableFormatter.js +53 -2
  143. package/src/sap/fe/core/formatters/TableFormatter.ts +51 -0
  144. package/src/sap/fe/core/fpm/Component.js +50 -54
  145. package/src/sap/fe/core/fpm/Component.ts +48 -0
  146. package/src/sap/fe/core/helpers/AppStartupHelper.js +323 -309
  147. package/src/sap/fe/core/helpers/AppStartupHelper.ts +363 -337
  148. package/src/sap/fe/core/helpers/BindingExpression.js +7 -7
  149. package/src/sap/fe/core/helpers/BindingExpression.ts +7 -7
  150. package/src/sap/fe/core/helpers/ClassSupport.js +186 -62
  151. package/src/sap/fe/core/helpers/ClassSupport.ts +168 -52
  152. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +5 -4
  153. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.ts +1 -5
  154. package/src/sap/fe/core/helpers/FPMHelper.js +1 -1
  155. package/src/sap/fe/core/helpers/FPMHelper.ts +1 -1
  156. package/src/sap/fe/core/helpers/MassEditHelper.js +601 -684
  157. package/src/sap/fe/core/helpers/MassEditHelper.ts +699 -0
  158. package/src/sap/fe/core/helpers/ModelHelper.js +25 -1
  159. package/src/sap/fe/core/helpers/ModelHelper.ts +23 -0
  160. package/src/sap/fe/core/helpers/SemanticDateOperators.js +5 -1
  161. package/src/sap/fe/core/helpers/SemanticDateOperators.ts +4 -0
  162. package/src/sap/fe/core/library.js +426 -451
  163. package/src/sap/fe/core/library.support.js +22 -33
  164. package/src/sap/fe/core/library.support.ts +23 -0
  165. package/src/sap/fe/core/library.ts +420 -0
  166. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +5 -3
  167. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +4 -1
  168. package/src/sap/fe/core/messagebundle.properties +22 -5
  169. package/src/sap/fe/core/messagebundle_ar.properties +27 -7
  170. package/src/sap/fe/core/messagebundle_bg.properties +27 -7
  171. package/src/sap/fe/core/messagebundle_ca.properties +27 -7
  172. package/src/sap/fe/core/messagebundle_cs.properties +27 -7
  173. package/src/sap/fe/core/messagebundle_cy.properties +27 -7
  174. package/src/sap/fe/core/messagebundle_da.properties +27 -7
  175. package/src/sap/fe/core/messagebundle_de.properties +27 -7
  176. package/src/sap/fe/core/messagebundle_el.properties +27 -7
  177. package/src/sap/fe/core/messagebundle_en.properties +27 -7
  178. package/src/sap/fe/core/messagebundle_en_GB.properties +27 -7
  179. package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +27 -7
  180. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +27 -7
  181. package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +27 -7
  182. package/src/sap/fe/core/messagebundle_es.properties +27 -7
  183. package/src/sap/fe/core/messagebundle_es_MX.properties +27 -7
  184. package/src/sap/fe/core/messagebundle_et.properties +27 -7
  185. package/src/sap/fe/core/messagebundle_fi.properties +28 -8
  186. package/src/sap/fe/core/messagebundle_fr.properties +28 -8
  187. package/src/sap/fe/core/messagebundle_fr_CA.properties +29 -9
  188. package/src/sap/fe/core/messagebundle_hi.properties +27 -7
  189. package/src/sap/fe/core/messagebundle_hr.properties +27 -7
  190. package/src/sap/fe/core/messagebundle_hu.properties +27 -7
  191. package/src/sap/fe/core/messagebundle_id.properties +27 -7
  192. package/src/sap/fe/core/messagebundle_it.properties +27 -7
  193. package/src/sap/fe/core/messagebundle_iw.properties +27 -7
  194. package/src/sap/fe/core/messagebundle_ja.properties +26 -6
  195. package/src/sap/fe/core/messagebundle_kk.properties +27 -7
  196. package/src/sap/fe/core/messagebundle_ko.properties +27 -7
  197. package/src/sap/fe/core/messagebundle_lt.properties +27 -7
  198. package/src/sap/fe/core/messagebundle_lv.properties +28 -8
  199. package/src/sap/fe/core/messagebundle_ms.properties +27 -7
  200. package/src/sap/fe/core/messagebundle_nl.properties +27 -7
  201. package/src/sap/fe/core/messagebundle_no.properties +27 -7
  202. package/src/sap/fe/core/messagebundle_pl.properties +27 -7
  203. package/src/sap/fe/core/messagebundle_pt.properties +28 -8
  204. package/src/sap/fe/core/messagebundle_pt_PT.properties +27 -7
  205. package/src/sap/fe/core/messagebundle_ro.properties +27 -7
  206. package/src/sap/fe/core/messagebundle_ru.properties +27 -7
  207. package/src/sap/fe/core/messagebundle_sh.properties +27 -7
  208. package/src/sap/fe/core/messagebundle_sk.properties +27 -7
  209. package/src/sap/fe/core/messagebundle_sl.properties +27 -7
  210. package/src/sap/fe/core/messagebundle_sv.properties +27 -7
  211. package/src/sap/fe/core/messagebundle_th.properties +26 -6
  212. package/src/sap/fe/core/messagebundle_tr.properties +30 -10
  213. package/src/sap/fe/core/messagebundle_uk.properties +27 -7
  214. package/src/sap/fe/core/messagebundle_vi.properties +27 -7
  215. package/src/sap/fe/core/messagebundle_zh_CN.properties +27 -7
  216. package/src/sap/fe/core/messagebundle_zh_TW.properties +27 -7
  217. package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +45 -71
  218. package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +154 -192
  219. package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +4 -4
  220. package/src/sap/fe/core/services/EnvironmentServiceFactory.js +66 -92
  221. package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +1 -1
  222. package/src/sap/fe/core/services/NavigationServiceFactory.js +284 -339
  223. package/src/sap/fe/core/services/NavigationServiceFactory.ts +10 -13
  224. package/src/sap/fe/core/services/ResourceModelServiceFactory.js +67 -102
  225. package/src/sap/fe/core/services/ResourceModelServiceFactory.ts +5 -2
  226. package/src/sap/fe/core/services/RoutingServiceFactory.js +754 -814
  227. package/src/sap/fe/core/services/RoutingServiceFactory.ts +13 -13
  228. package/src/sap/fe/core/services/ShellServicesFactory.js +649 -736
  229. package/src/sap/fe/core/services/ShellServicesFactory.ts +7 -4
  230. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +567 -592
  231. package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +22 -3
  232. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +354 -386
  233. package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +21 -14
  234. package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +1 -1
  235. package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.ts +1 -1
  236. package/src/sap/fe/core/support/CommonHelper.js +1 -1
  237. package/src/sap/fe/core/support/CommonHelper.ts +1 -1
  238. package/src/sap/fe/core/support/Diagnostics.js +36 -48
  239. package/src/sap/fe/core/templating/DataModelPathHelper.js +93 -85
  240. package/src/sap/fe/core/templating/DataModelPathHelper.ts +104 -95
  241. package/src/sap/fe/core/templating/FilterHelper.js +25 -32
  242. package/src/sap/fe/core/templating/FilterHelper.ts +36 -35
  243. package/src/sap/fe/core/templating/PropertyHelper.js +2 -2
  244. package/src/sap/fe/core/templating/PropertyHelper.ts +1 -1
  245. package/src/sap/fe/core/templating/UIFormatters.js +32 -26
  246. package/src/sap/fe/core/templating/UIFormatters.ts +37 -24
@@ -0,0 +1,231 @@
1
+ import ObjectPath from "sap/base/util/ObjectPath";
2
+ import extend from "sap/base/util/extend";
3
+ import Log from "sap/base/Log";
4
+ import XMLTemplateProcessor from "sap/ui/core/XMLTemplateProcessor";
5
+ import XMLPreprocessor from "sap/ui/core/util/XMLPreprocessor";
6
+ import Fragment from "sap/ui/core/Fragment";
7
+ import JSONModel from "sap/ui/model/json/JSONModel";
8
+ import ControllerExtension from "sap/ui/core/mvc/ControllerExtension";
9
+ import OverrideExecution from "sap/ui/core/mvc/OverrideExecution";
10
+ import HashChanger from "sap/ui/core/routing/HashChanger";
11
+ import library from "sap/m/library";
12
+ import { Extensible, Final, Public, UI5Class } from "sap/fe/core/helpers/ClassSupport";
13
+ import ControllerExtensionMetadata from "sap/fe/core/controllerextensions/ControllerExtensionMetadata";
14
+ import Control from "sap/ui/core/Control";
15
+ import ActionSheet from "sap/m/ActionSheet";
16
+ import ResourceBundle from "sap/base/i18n/ResourceBundle";
17
+ import Dialog from "sap/m/Dialog";
18
+ import PageController from "../PageController";
19
+
20
+ let oLastFocusedControl: Control;
21
+
22
+ /**
23
+ * A controller extension offering hooks into the routing flow of the application
24
+ *
25
+ * @hideconstructor
26
+ * @public
27
+ * @since 1.86.0
28
+ */
29
+ @UI5Class("sap.fe.core.controllerextensions.Share", ControllerExtensionMetadata)
30
+ class ShareUtils extends ControllerExtension {
31
+ private base!: PageController;
32
+
33
+ /**
34
+ * Opens the share sheet.
35
+ *
36
+ * @function
37
+ * @param {object} oControl The control to which the ActionSheet is opened.
38
+ * @alias sap.fe.core.controllerextensions.Share#openShareSheet
39
+ * @public
40
+ * @since 1.93.0
41
+ */
42
+ @Public
43
+ @Final
44
+ openShareSheet(oControl: object) {
45
+ this._openShareSheetImpl(oControl);
46
+ }
47
+ /**
48
+ * Adapts the metadata used while sharing the page URL via 'Send Email', 'Share in SAP Jam', and 'Save as Tile'.
49
+ *
50
+ * @function
51
+ * @param {object} oShareMetadata Object containing the share metadata.
52
+ * @param {string} oShareMetadata.url Default URL that will be used via 'Send Email', 'Share in SAP Jam', and 'Save as Tile'
53
+ * @param {string} oShareMetadata.title Default title that will be used as 'email subject' in 'Send Email', 'share text' in 'Share in SAP Jam' and 'title' in 'Save as Tile'
54
+ * @param {object} oShareMetadata.email Email-specific metadata.
55
+ * @param {string} oShareMetadata.email.url URL that will be used specifically for 'Send Email'. This takes precedence over oShareMetadata.url.
56
+ * @param {string} oShareMetadata.email.title Title that will be used as "email subject" in 'Send Email'. This takes precedence over oShareMetadata.title.
57
+ * @param {object} oShareMetadata.jam SAP Jam-specific metadata.
58
+ * @param {string} oShareMetadata.jam.url URL that will be used specifically for 'Share in SAP Jam'. This takes precedence over oShareMetadata.url.
59
+ * @param {string} oShareMetadata.jam.title Title that will be used as 'share text' in 'Share in SAP Jam'. This takes precedence over oShareMetadata.title.
60
+ * @param {object} oShareMetadata.tile Save as Tile-specific metadata.
61
+ * @param {string} oShareMetadata.tile.url URL that will be used specifically for 'Save as Tile'. This takes precedence over oShareMetadata.url.
62
+ * @param {string} oShareMetadata.tile.title Title to be used for the tile. This takes precedence over oShareMetadata.title.
63
+ * @param {string} oShareMetadata.tile.subtitle Subtitle to be used for the tile.
64
+ * @param {string} oShareMetadata.tile.icon Icon to be used for the tile.
65
+ * @param {string} oShareMetadata.tile.queryUrl Query URL of an OData service from which data for a dynamic tile is read.
66
+ * @returns {object | Promise<object>} Share Metadata or a Promise resolving the Share Metadata
67
+ * @alias sap.fe.core.controllerextensions.Share#adaptShareMetadata
68
+ * @public
69
+ * @since 1.93.0
70
+ */
71
+ @Public
72
+ @Extensible(OverrideExecution.After)
73
+ adaptShareMetadata(oShareMetadata: {
74
+ url: string;
75
+ title: string;
76
+ email?: { url: string; title: string };
77
+ jam?: { url: string; title: string };
78
+ tile?: { url: string; title: string; subtitle: string; icon: string; queryUrl: string };
79
+ }): object | Promise<object> {
80
+ return oShareMetadata;
81
+ }
82
+ _openShareSheetImpl(by: any) {
83
+ let oShareActionSheet: ActionSheet, fragmentController: any;
84
+ const sHash = HashChanger.getInstance().getHash(),
85
+ sBasePath = (HashChanger.getInstance() as any).hrefForAppSpecificHash
86
+ ? (HashChanger.getInstance() as any).hrefForAppSpecificHash("")
87
+ : "",
88
+ oShareMetadata = {
89
+ url: sHash ? sBasePath + sHash : window.location.hash,
90
+ title: document.title,
91
+ email: {
92
+ url: "",
93
+ title: ""
94
+ },
95
+ jam: {
96
+ url: "",
97
+ title: ""
98
+ },
99
+ tile: {
100
+ url: "",
101
+ title: "",
102
+ subtitle: "",
103
+ icon: "",
104
+ queryUrl: ""
105
+ }
106
+ };
107
+ oLastFocusedControl = by;
108
+
109
+ const setShareEmailData = function(oShareActionSheet: any, oModelData: any) {
110
+ const oShareMailModel = oShareActionSheet.getModel("shareData");
111
+ const oNewMailData = extend(oShareMailModel.getData(), oModelData);
112
+ oShareMailModel.setData(oNewMailData);
113
+ };
114
+ return Promise.resolve(this.adaptShareMetadata(oShareMetadata))
115
+ .then((oModelData: any) => {
116
+ fragmentController = {
117
+ shareEmailPressed: function() {
118
+ const oMailModel = oShareActionSheet.getModel("shareData") as JSONModel;
119
+ const oMailData = oMailModel.getData() as any;
120
+ const oResource = sap.ui.getCore().getLibraryResourceBundle("sap.fe.core") as ResourceBundle;
121
+ const sEmailSubject = oMailData.email.title
122
+ ? oMailData.email.title
123
+ : oResource.getText("T_SHARE_UTIL_HELPER_SAPFE_EMAIL_SUBJECT", [oMailData.title]);
124
+ library.URLHelper.triggerEmail(undefined, sEmailSubject, oMailData.email.url ? oMailData.email.url : oMailData.url);
125
+ },
126
+ onSaveTilePress: function() {
127
+ // TODO it seems that the press event is executed before the dialog is available - adding a timeout is a cheap workaround
128
+ setTimeout(function() {
129
+ (sap.ui.getCore().byId("bookmarkDialog") as Dialog)?.attachAfterClose(function() {
130
+ oLastFocusedControl.focus();
131
+ });
132
+ }, 0);
133
+ },
134
+ shareJamPressed() {
135
+ this._doOpenJamShareDialog(
136
+ oModelData.jam.title ? oModelData.jam.title : oModelData.title,
137
+ oModelData.jam.url ? oModelData.jam.url : window.location.origin + window.location.pathname + oModelData.url
138
+ );
139
+ }
140
+ };
141
+
142
+ fragmentController.onCancelPressed = function() {
143
+ oShareActionSheet.close();
144
+ };
145
+
146
+ fragmentController.setShareSheet = function(oShareSheet: any) {
147
+ by.shareSheet = oShareSheet;
148
+ };
149
+
150
+ const oThis = new JSONModel({}),
151
+ oPreprocessorSettings = {
152
+ bindingContexts: {
153
+ "this": oThis.createBindingContext("/")
154
+ },
155
+ models: {
156
+ "this": oThis
157
+ }
158
+ };
159
+ const oTileData = {
160
+ title: oModelData.tile.title ? oModelData.tile.title : oModelData.title,
161
+ subtitle: oModelData.tile.subtitle,
162
+ icon: oModelData.tile.icon,
163
+ url: oModelData.tile.url ? oModelData.tile.url : oModelData.url,
164
+ queryUrl: oModelData.tile.queryUrl
165
+ };
166
+ if (by.shareSheet) {
167
+ oShareActionSheet = by.shareSheet;
168
+
169
+ const oShareModel = oShareActionSheet.getModel("share") as JSONModel;
170
+ this._setStaticShareData(oShareModel);
171
+ const oNewData = extend(oShareModel.getData(), oTileData);
172
+ oShareModel.setData(oNewData);
173
+ setShareEmailData(oShareActionSheet, oModelData);
174
+ oShareActionSheet.openBy(by);
175
+ } else {
176
+ const sFragmentName = "sap.fe.macros.share.ShareSheet",
177
+ oPopoverFragment = XMLTemplateProcessor.loadTemplate(sFragmentName, "fragment");
178
+
179
+ Promise.resolve(XMLPreprocessor.process(oPopoverFragment, { name: sFragmentName }, oPreprocessorSettings))
180
+ .then(function(oFragment: any) {
181
+ return Fragment.load({ definition: oFragment, controller: fragmentController });
182
+ })
183
+ .then((oActionSheet: any) => {
184
+ oShareActionSheet = oActionSheet;
185
+
186
+ oShareActionSheet.setModel(new JSONModel(oTileData || {}), "share");
187
+ const oShareModel = oShareActionSheet.getModel("share") as JSONModel;
188
+ this._setStaticShareData(oShareModel);
189
+ const oNewData = extend(oShareModel.getData(), oTileData);
190
+ oShareModel.setData(oNewData);
191
+
192
+ oShareActionSheet.setModel(new JSONModel(oModelData || {}), "shareData");
193
+ setShareEmailData(oShareActionSheet, oModelData);
194
+
195
+ by.addDependent(oShareActionSheet);
196
+ oShareActionSheet.openBy(by);
197
+ fragmentController.setShareSheet(oShareActionSheet);
198
+ })
199
+ .catch(function(oError: any) {
200
+ Log.error("Error while opening the share fragment", oError);
201
+ });
202
+ }
203
+ })
204
+ .catch(function(oError: any) {
205
+ Log.error("Error while fetching the share model data", oError);
206
+ });
207
+ }
208
+ _setStaticShareData(shareModel: any) {
209
+ const oResource = sap.ui.getCore().getLibraryResourceBundle("sap.fe.core") as ResourceBundle;
210
+ shareModel.setProperty("/jamButtonText", oResource.getText("T_COMMON_SAPFE_SHARE_JAM"));
211
+ shareModel.setProperty("/emailButtonText", oResource.getText("T_SEMANTIC_CONTROL_SEND_EMAIL"));
212
+ const fnGetUser = ObjectPath.get("sap.ushell.Container.getUser");
213
+ shareModel.setProperty("/jamVisible", !!fnGetUser && fnGetUser().isJamActive());
214
+ shareModel.setProperty("/saveAsTileVisible", !!(sap && sap.ushell && sap.ushell.Container));
215
+ }
216
+ //the actual opening of the JAM share dialog
217
+ _doOpenJamShareDialog(text: any, sUrl?: any) {
218
+ const oShareDialog = sap.ui.getCore().createComponent({
219
+ name: "sap.collaboration.components.fiori.sharing.dialog",
220
+ settings: {
221
+ object: {
222
+ id: sUrl,
223
+ share: text
224
+ }
225
+ }
226
+ });
227
+ oShareDialog.open();
228
+ }
229
+ }
230
+
231
+ export default ShareUtils;