@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,403 @@
1
+ import UIComponent from "sap/ui/core/UIComponent";
2
+ import RouterProxy from "sap/fe/core/RouterProxy";
3
+ import AppStateHandler from "sap/fe/core/AppStateHandler";
4
+ import Log from "sap/base/Log";
5
+ import Diagnostics from "sap/fe/core/support/Diagnostics";
6
+ import JSONModel from "sap/ui/model/json/JSONModel";
7
+ import library from "sap/fe/core/library";
8
+ import ModelHelper from "sap/fe/core/helpers/ModelHelper";
9
+ import ValueListHelper from "sap/fe/macros/internal/valuehelp/ValueListHelper";
10
+ import { UI5Class } from "sap/fe/core/helpers/ClassSupport";
11
+ import ComponentMetadata from "sap/ui/core/ComponentMetadata";
12
+ import View from "sap/ui/core/mvc/View";
13
+ import ODataModel from "sap/ui/model/odata/v4/ODataModel";
14
+ import ResourceBundle from "sap/base/i18n/ResourceBundle";
15
+ import BaseController from "./BaseController";
16
+ import { deleteModelCacheData } from "./converters/MetaModelConverter";
17
+ import ODataMetaModel from "sap/ui/model/odata/v4/ODataMetaModel";
18
+ import { RoutingService } from "sap/fe/core/services/RoutingServiceFactory";
19
+ import { IShellServices } from "sap/fe/core/services/ShellServicesFactory";
20
+ import { NavigationService } from "sap/fe/core/services/NavigationServiceFactory";
21
+ import { SideEffectsService } from "sap/fe/core/services/SideEffectsServiceFactory";
22
+ import { EnvironmentCapabilitiesService } from "sap/fe/core/services/EnvironmentServiceFactory";
23
+
24
+ const NAVCONF = {
25
+ FCL: {
26
+ VIEWNAME: "sap.fe.templates.RootContainer.view.Fcl",
27
+ ROUTERCLASS: "sap.f.routing.Router"
28
+ },
29
+ NAVCONTAINER: {
30
+ VIEWNAME: "sap.fe.templates.RootContainer.view.NavContainer",
31
+ ROUTERCLASS: "sap.m.routing.Router"
32
+ }
33
+ };
34
+
35
+ /**
36
+ * Main class for components used for an application in SAP Fiori elements.
37
+ *
38
+ * Application developers using the templates and building blocks provided by SAP Fiori elements should create their apps by extending this component.
39
+ * This ensures that all the necessary services that you need for the building blocks and templates to work properly are started.
40
+ *
41
+ * When you use sap.fe.core.AppComponent as the base component, you also need to use a rootView. SAP Fiori elements provides two options: <br/>
42
+ * - sap.fe.templates.RootContainer.view.NavContainer when using sap.m.routing.Router <br/>
43
+ * - sap.fe.templates.RootContainer.view.Fcl when using sap.f.routing.Router (FCL use case) <br/>
44
+ *
45
+ * @hideconstructor
46
+ * @public
47
+ * @name sap.fe.core.AppComponent
48
+ */
49
+ @UI5Class("sap.fe.core.AppComponent", ComponentMetadata, {
50
+ interfaces: ["sap.ui.core.IAsyncContentCreation"],
51
+ config: {
52
+ fullWidth: true
53
+ },
54
+ manifest: {
55
+ "sap.ui5": {
56
+ services: {
57
+ resourceModel: {
58
+ factoryName: "sap.fe.core.services.ResourceModelService",
59
+ "startup": "waitFor",
60
+ "settings": {
61
+ "bundles": ["sap.fe.core.messagebundle"],
62
+ "modelName": "sap.fe.i18n"
63
+ }
64
+ },
65
+ routingService: {
66
+ factoryName: "sap.fe.core.services.RoutingService",
67
+ startup: "waitFor"
68
+ },
69
+ shellServices: {
70
+ factoryName: "sap.fe.core.services.ShellServices",
71
+ startup: "waitFor"
72
+ },
73
+ ShellUIService: {
74
+ factoryName: "sap.ushell.ui5service.ShellUIService"
75
+ },
76
+ navigationService: {
77
+ factoryName: "sap.fe.core.services.NavigationService",
78
+ startup: "waitFor"
79
+ },
80
+ environmentCapabilities: {
81
+ factoryName: "sap.fe.core.services.EnvironmentService",
82
+ startup: "waitFor"
83
+ },
84
+ sideEffectsService: {
85
+ factoryName: "sap.fe.core.services.SideEffectsService",
86
+ startup: "waitFor"
87
+ },
88
+ asyncComponentService: {
89
+ factoryName: "sap.fe.core.services.AsyncComponentService",
90
+ startup: "waitFor"
91
+ }
92
+ },
93
+ rootView: {
94
+ viewName: NAVCONF.NAVCONTAINER.VIEWNAME,
95
+ type: "XML",
96
+ async: true,
97
+ id: "appRootView"
98
+ },
99
+ routing: {
100
+ config: {
101
+ controlId: "appContent",
102
+ routerClass: NAVCONF.NAVCONTAINER.ROUTERCLASS,
103
+ viewType: "XML",
104
+ controlAggregation: "pages",
105
+ async: true,
106
+ containerOptions: {
107
+ propagateModel: true
108
+ }
109
+ }
110
+ }
111
+ }
112
+ },
113
+ designtime: "sap/fe/core/designtime/AppComponent.designtime",
114
+
115
+ library: "sap.fe.core"
116
+ })
117
+ class AppComponent extends UIComponent {
118
+ static instanceMap: Record<string, AppComponent> = {};
119
+ private _oRouterProxy!: RouterProxy;
120
+ private _oAppStateHandler!: AppStateHandler;
121
+ private bInitializeRouting?: boolean;
122
+ private _oDiagnostics!: Diagnostics;
123
+ private entityContainer: any;
124
+ /**
125
+ * @private
126
+ * @name sap.fe.core.AppComponent.getMetadata
127
+ * @function
128
+ */
129
+
130
+ _isFclEnabled() {
131
+ const oManifestUI5 = this.getMetadata().getManifestEntry("/sap.ui5", true);
132
+ return NAVCONF.FCL.VIEWNAME === oManifestUI5.rootView.viewName;
133
+ }
134
+
135
+ /**
136
+ * Get a reference to the RouterProxy.
137
+ *
138
+ * @function
139
+ * @name sap.fe.core.AppComponent#getRouterProxy
140
+ * @memberof sap.fe.core.AppComponent
141
+ * @returns {oObject} A Reference to the RouterProxy
142
+ *
143
+ * @ui5-restricted
144
+ * @final
145
+ */
146
+ getRouterProxy(): RouterProxy {
147
+ return this._oRouterProxy;
148
+ }
149
+
150
+ /**
151
+ * Get a reference to the AppStateHandler.
152
+ *
153
+ * @function
154
+ * @name sap.fe.core.AppComponent#getAppStateHandler
155
+ * @memberof sap.fe.core.AppComponent
156
+ * @returns {oObject} A reference to the AppStateHandler
157
+ *
158
+ * @ui5-restricted
159
+ * @final
160
+ */
161
+ getAppStateHandler() {
162
+ return this._oAppStateHandler;
163
+ }
164
+
165
+ /**
166
+ * Get a reference to the nav/FCL Controller.
167
+ *
168
+ * @function
169
+ * @name sap.fe.core.AppComponent#getRootViewController
170
+ * @memberof sap.fe.core.AppComponent
171
+ * @returns {oObject} A reference to the FCL Controller
172
+ *
173
+ * @ui5-restricted
174
+ * @final
175
+ */
176
+ getRootViewController(): BaseController {
177
+ return (this.getRootControl() as View).getController() as BaseController;
178
+ }
179
+
180
+ /**
181
+ * Get the NavContainer control or the FCL control.
182
+ *
183
+ * @function
184
+ * @name sap.fe.core.AppComponent#getRootContainer
185
+ * @memberof sap.fe.core.AppComponent
186
+ * @returns {oObject} A reference to NavContainer control or the FCL control
187
+ *
188
+ * @ui5-restricted
189
+ * @final
190
+ */
191
+ getRootContainer() {
192
+ return (this.getRootControl() as View).getContent()[0];
193
+ }
194
+
195
+ init(...args: any[]) {
196
+ this.setModel(
197
+ new JSONModel({
198
+ editMode: library.EditMode.Display,
199
+ isEditable: false,
200
+ draftStatus: library.DraftStatus.Clear,
201
+ busy: false,
202
+ busyLocal: {},
203
+ pages: {}
204
+ }),
205
+ "ui"
206
+ );
207
+
208
+ const oInternalModel = new JSONModel({
209
+ pages: {}
210
+ });
211
+
212
+ ModelHelper.enhanceInternalJSONModel(oInternalModel);
213
+
214
+ this.setModel(oInternalModel, "internal");
215
+
216
+ this.bInitializeRouting = this.bInitializeRouting !== undefined ? this.bInitializeRouting : true;
217
+ this._oRouterProxy = new RouterProxy();
218
+ this._oAppStateHandler = new AppStateHandler(this);
219
+ this._oDiagnostics = new Diagnostics();
220
+ const oModel = this.getModel() as ODataModel;
221
+ if (oModel) {
222
+ this.entityContainer = oModel.getMetaModel().requestObject("/$EntityContainer/");
223
+ }
224
+
225
+ const oManifestUI5 = this.getMetadata().getManifestEntry("/sap.ui5", true);
226
+ if (
227
+ oManifestUI5.rootView.viewName === NAVCONF.FCL.VIEWNAME &&
228
+ oManifestUI5.routing.config.routerClass === NAVCONF.FCL.ROUTERCLASS
229
+ ) {
230
+ Log.info('Rootcontainer: "' + NAVCONF.FCL.VIEWNAME + '" - Routerclass: "' + NAVCONF.FCL.ROUTERCLASS + '"');
231
+ } else if (
232
+ oManifestUI5.rootView.viewName === NAVCONF.NAVCONTAINER.VIEWNAME &&
233
+ oManifestUI5.routing.config.routerClass === NAVCONF.NAVCONTAINER.ROUTERCLASS
234
+ ) {
235
+ Log.info('Rootcontainer: "' + NAVCONF.NAVCONTAINER.VIEWNAME + '" - Routerclass: "' + NAVCONF.NAVCONTAINER.ROUTERCLASS + '"');
236
+ } else if (oManifestUI5.rootView.viewName.indexOf("sap.fe") !== -1) {
237
+ throw Error(
238
+ "\nWrong configuration for the couple (rootView/routerClass) in manifest file.\n" +
239
+ "Current values are :(" +
240
+ oManifestUI5.rootView.viewName +
241
+ "/" +
242
+ oManifestUI5.routing.config.routerClass +
243
+ ")\n" +
244
+ "Expected values are \n" +
245
+ "\t - (" +
246
+ NAVCONF.NAVCONTAINER.VIEWNAME +
247
+ "/" +
248
+ NAVCONF.NAVCONTAINER.ROUTERCLASS +
249
+ ")\n" +
250
+ "\t - (" +
251
+ NAVCONF.FCL.VIEWNAME +
252
+ "/" +
253
+ NAVCONF.FCL.ROUTERCLASS +
254
+ ")"
255
+ );
256
+ } else {
257
+ Log.info('Rootcontainer: "' + oManifestUI5.rootView.viewName + '" - Routerclass: "' + NAVCONF.NAVCONTAINER.ROUTERCLASS + '"');
258
+ }
259
+
260
+ // Adding Semantic Date Operators
261
+ // Commenting since it is not needed for SingleRange
262
+ // SemanticDateOperators.addSemanticDateOperators();
263
+
264
+ // the init function configures the routing according to the settings above
265
+ // it will call the createContent function to instantiate the RootView and add it to the UIComponent aggregations
266
+
267
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
268
+ // @ts-ignore
269
+ UIComponent.prototype.init.apply(this, args);
270
+ AppComponent.instanceMap[this.getId()] = this;
271
+ }
272
+ onServicesStarted() {
273
+ //router must be started once the rootcontainer is initialized
274
+ //starting of the router
275
+ const finalizedRoutingInitialization = () => {
276
+ this.entityContainer
277
+ .then(() => {
278
+ if ((this.getRootViewController() as any).attachRouteMatchers) {
279
+ (this.getRootViewController() as any).attachRouteMatchers();
280
+ }
281
+ this.getRouter().initialize();
282
+ this.getRouterProxy().init(this, this._isFclEnabled());
283
+ })
284
+ .catch((error: any) => {
285
+ const oResourceBundle = sap.ui.getCore().getLibraryResourceBundle("sap.fe.core") as ResourceBundle;
286
+
287
+ (this.getRootViewController() as any).displayMessagePage(
288
+ oResourceBundle.getText("C_APP_COMPONENT_SAPFE_APPSTART_TECHNICAL_ISSUES"),
289
+ {
290
+ title: oResourceBundle.getText("C_COMMON_SAPFE_ERROR"),
291
+ description: error.message,
292
+ FCLLevel: 0
293
+ }
294
+ );
295
+ });
296
+ };
297
+
298
+ if (this.bInitializeRouting) {
299
+ return this.getRoutingService()
300
+ .initializeRouting()
301
+ .then(() => {
302
+ if (this.getRootViewController()) {
303
+ return finalizedRoutingInitialization();
304
+ } else {
305
+ (this.getRootControl() as any).attachAfterInit(function() {
306
+ finalizedRoutingInitialization();
307
+ });
308
+ }
309
+ })
310
+ .catch(function(err: any) {
311
+ Log.error("cannot cannot initialize routing: " + err);
312
+ });
313
+ }
314
+ }
315
+ exit() {
316
+ this._oAppStateHandler.destroy();
317
+ this._oRouterProxy.destroy();
318
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
319
+ // @ts-ignore
320
+ delete this._oAppStateHandler;
321
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
322
+ // @ts-ignore
323
+ delete this._oRouterProxy;
324
+ deleteModelCacheData(this.getMetaModel());
325
+ this.getModel("ui").destroy();
326
+ }
327
+ getMetaModel(): ODataMetaModel {
328
+ return this.getModel().getMetaModel() as ODataMetaModel;
329
+ }
330
+ getDiagnostics() {
331
+ return this._oDiagnostics;
332
+ }
333
+ destroy(...args: any[]) {
334
+ // LEAKS, with workaround for some Flex / MDC issue
335
+ try {
336
+ // // This one is only a leak if you don't go back to the same component in the long run
337
+ //delete sap.ui.fl.FlexControllerFactory._componentInstantiationPromises[this.getId()];
338
+
339
+ ValueListHelper.initializeCachedValueHelp();
340
+
341
+ delete AppComponent.instanceMap[this.getId()];
342
+
343
+ // var oRegistry = sap.ui.mdc.p13n.Engine.getInstance()._getRegistry();
344
+ // Object.keys(oRegistry).forEach(function(sKey) {
345
+ // Object.keys(oRegistry[sKey].controller).forEach(function(sControllerKey) {
346
+ // oRegistry[sKey].controller[sControllerKey].destroy();
347
+ // });
348
+ // });
349
+ // sap.ui.mdc.p13n.Engine.getInstance().destroy();
350
+ delete (window as any)._routing;
351
+ } catch (e) {
352
+ Log.info(e);
353
+ }
354
+
355
+ //WORKAROUND for sticky discard request : due to async callback, request triggered by the exitApplication will be send after the UIComponent.prototype.destroy
356
+ //so we need to copy the Requestor headers as it will be destroy
357
+
358
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
359
+ // @ts-ignore
360
+ const oMainModel = (this as any).oModels[undefined];
361
+ const oHeaders = jQuery.extend({}, oMainModel.oRequestor.mHeaders);
362
+ // As we need to cleanup the application / handle the dirty object we need to call our cleanup before the models are destroyed
363
+ this.getRoutingService().beforeExit();
364
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
365
+ // @ts-ignore
366
+ UIComponent.prototype.destroy.apply(this, [args]);
367
+ oMainModel.oRequestor.mHeaders = oHeaders;
368
+ }
369
+ getComponentData(): any {
370
+ return super.getComponentData();
371
+ }
372
+ getRoutingService(): RoutingService {
373
+ return {} as RoutingService; // overriden at runtime
374
+ }
375
+ getShellServices(): IShellServices {
376
+ return {} as IShellServices; // overriden at runtime
377
+ }
378
+ getNavigationService(): NavigationService {
379
+ return {} as NavigationService; // overriden at runtime
380
+ }
381
+ getSideEffectsService(): SideEffectsService {
382
+ return {} as SideEffectsService;
383
+ }
384
+ getEnvironmentCapabilities(): EnvironmentCapabilitiesService {
385
+ return {} as EnvironmentCapabilitiesService;
386
+ }
387
+
388
+ getStartupParameters() {
389
+ const oComponentData = this.getComponentData() as any;
390
+ const oStartUpParameters = (oComponentData && oComponentData.startupParameters) || {};
391
+ return Promise.resolve(oStartUpParameters);
392
+ }
393
+ restore() {
394
+ // called by FLP when app sap-keep-alive is enabled and app is restored
395
+ (this.getRootViewController() as any).viewState.onRestore();
396
+ }
397
+ suspend() {
398
+ // called by FLP when app sap-keep-alive is enabled and app is suspended
399
+ (this.getRootViewController() as any).viewState.onSuspend();
400
+ }
401
+ }
402
+
403
+ export default AppComponent;