@sapui5/sap.fe.core 1.97.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 (306) hide show
  1. package/package.json +7 -4
  2. package/src/sap/fe/core/.library +1 -1
  3. package/src/sap/fe/core/AnnotationHelper.js +309 -405
  4. package/src/sap/fe/core/AnnotationHelper.ts +315 -0
  5. package/src/sap/fe/core/AppComponent.js +389 -397
  6. package/src/sap/fe/core/AppComponent.ts +403 -0
  7. package/src/sap/fe/core/AppStateHandler.js +198 -181
  8. package/src/sap/fe/core/AppStateHandler.ts +171 -0
  9. package/src/sap/fe/core/BaseController.js +83 -58
  10. package/src/sap/fe/core/BaseController.ts +68 -0
  11. package/src/sap/fe/core/BusyLocker.js +105 -121
  12. package/src/sap/fe/core/BusyLocker.ts +98 -0
  13. package/src/sap/fe/core/CommonUtils.js +2164 -2379
  14. package/src/sap/fe/core/CommonUtils.ts +2177 -0
  15. package/src/sap/fe/core/ExtensionAPI.js +279 -266
  16. package/src/sap/fe/core/ExtensionAPI.ts +250 -0
  17. package/src/sap/fe/core/PageController.js +218 -125
  18. package/src/sap/fe/core/PageController.ts +129 -0
  19. package/src/sap/fe/core/RouterProxy.js +924 -807
  20. package/src/sap/fe/core/RouterProxy.ts +840 -0
  21. package/src/sap/fe/core/Synchronization.js +41 -35
  22. package/src/sap/fe/core/Synchronization.ts +29 -0
  23. package/src/sap/fe/core/TemplateComponent.js +173 -155
  24. package/src/sap/fe/core/TemplateComponent.ts +173 -0
  25. package/src/sap/fe/core/TemplateModel.js +79 -54
  26. package/src/sap/fe/core/TemplateModel.ts +63 -0
  27. package/src/sap/fe/core/TransactionHelper.js +1560 -1579
  28. package/src/sap/fe/core/TransactionHelper.ts +1717 -0
  29. package/src/sap/fe/core/actions/collaboration/ActivitySync.js +392 -0
  30. package/src/sap/fe/core/actions/collaboration/ActivitySync.ts +355 -0
  31. package/src/sap/fe/core/actions/collaboration/CollaborationCommon.js +136 -0
  32. package/src/sap/fe/core/actions/collaboration/CollaborationCommon.ts +119 -0
  33. package/src/sap/fe/core/actions/collaboration/Manage.js +262 -0
  34. package/src/sap/fe/core/actions/collaboration/Manage.ts +244 -0
  35. package/src/sap/fe/core/actions/collaboration/ManageDialog.fragment.xml +103 -0
  36. package/src/sap/fe/core/actions/collaboration/UserDetails.fragment.xml +13 -0
  37. package/src/sap/fe/core/actions/draft.js +521 -581
  38. package/src/sap/fe/core/actions/draft.ts +566 -0
  39. package/src/sap/fe/core/actions/messageHandling.js +564 -511
  40. package/src/sap/fe/core/actions/messageHandling.ts +552 -0
  41. package/src/sap/fe/core/actions/nonDraft.js +17 -19
  42. package/src/sap/fe/core/actions/nonDraft.ts +12 -0
  43. package/src/sap/fe/core/actions/operations.js +1093 -1211
  44. package/src/sap/fe/core/actions/operations.ts +1192 -0
  45. package/src/sap/fe/core/actions/sticky.js +114 -104
  46. package/src/sap/fe/core/actions/sticky.ts +119 -0
  47. package/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.js +70 -66
  48. package/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.ts +65 -0
  49. package/src/sap/fe/core/controllerextensions/EditFlow.js +1594 -1701
  50. package/src/sap/fe/core/controllerextensions/EditFlow.ts +1672 -0
  51. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +80 -54
  52. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +61 -0
  53. package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +719 -505
  54. package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +783 -0
  55. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +797 -813
  56. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +803 -0
  57. package/src/sap/fe/core/controllerextensions/InternalRouting.js +1005 -973
  58. package/src/sap/fe/core/controllerextensions/InternalRouting.ts +978 -0
  59. package/src/sap/fe/core/controllerextensions/KPIManagement.js +530 -476
  60. package/src/sap/fe/core/controllerextensions/KPIManagement.ts +137 -46
  61. package/src/sap/fe/core/controllerextensions/MassEdit.js +144 -0
  62. package/src/sap/fe/core/controllerextensions/MassEdit.ts +156 -0
  63. package/src/sap/fe/core/controllerextensions/MessageHandler.js +234 -232
  64. package/src/sap/fe/core/controllerextensions/MessageHandler.ts +225 -0
  65. package/src/sap/fe/core/controllerextensions/PageReady.js +302 -337
  66. package/src/sap/fe/core/controllerextensions/PageReady.ts +23 -17
  67. package/src/sap/fe/core/controllerextensions/Paginator.js +189 -148
  68. package/src/sap/fe/core/controllerextensions/Paginator.ts +163 -0
  69. package/src/sap/fe/core/controllerextensions/Placeholder.js +158 -146
  70. package/src/sap/fe/core/controllerextensions/Placeholder.ts +151 -0
  71. package/src/sap/fe/core/controllerextensions/Routing.js +145 -106
  72. package/src/sap/fe/core/controllerextensions/Routing.ts +132 -0
  73. package/src/sap/fe/core/controllerextensions/RoutingListener.js +8 -6
  74. package/src/sap/fe/core/controllerextensions/RoutingListener.ts +3 -0
  75. package/src/sap/fe/core/controllerextensions/Share.js +220 -244
  76. package/src/sap/fe/core/controllerextensions/Share.ts +231 -0
  77. package/src/sap/fe/core/controllerextensions/SideEffects.js +593 -634
  78. package/src/sap/fe/core/controllerextensions/SideEffects.ts +29 -27
  79. package/src/sap/fe/core/controllerextensions/ViewState.js +789 -806
  80. package/src/sap/fe/core/controllerextensions/ViewState.ts +805 -0
  81. package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +4 -3
  82. package/src/sap/fe/core/controls/ActionPartial.fragment.xml +2 -2
  83. package/src/sap/fe/core/controls/CommandExecution.js +68 -66
  84. package/src/sap/fe/core/controls/CommandExecution.ts +72 -0
  85. package/src/sap/fe/core/controls/ConditionalWrapper.js +91 -75
  86. package/src/sap/fe/core/controls/ConditionalWrapper.ts +83 -0
  87. package/src/sap/fe/core/controls/CustomQuickViewPage.js +131 -125
  88. package/src/sap/fe/core/controls/CustomQuickViewPage.ts +126 -0
  89. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +105 -110
  90. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +101 -0
  91. package/src/sap/fe/core/controls/FieldWrapper.js +122 -140
  92. package/src/sap/fe/core/controls/FieldWrapper.ts +115 -0
  93. package/src/sap/fe/core/controls/FilterBar.js +163 -159
  94. package/src/sap/fe/core/controls/FilterBar.ts +143 -0
  95. package/src/sap/fe/core/controls/FormElementWrapper.js +46 -44
  96. package/src/sap/fe/core/controls/FormElementWrapper.ts +40 -0
  97. package/src/sap/fe/core/controls/MultiValueParameterDelegate.js +38 -42
  98. package/src/sap/fe/core/controls/MultiValueParameterDelegate.ts +31 -0
  99. package/src/sap/fe/core/controls/NonComputedVisibleKeyFieldsDialog.fragment.xml +2 -1
  100. package/src/sap/fe/core/controls/filterbar/FilterContainer.js +127 -116
  101. package/src/sap/fe/core/controls/filterbar/FilterContainer.ts +98 -0
  102. package/src/sap/fe/core/controls/filterbar/VisualFilter.js +242 -255
  103. package/src/sap/fe/core/controls/filterbar/VisualFilter.ts +245 -0
  104. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +151 -141
  105. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.ts +125 -0
  106. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +336 -322
  107. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +337 -0
  108. package/src/sap/fe/core/controls/massEdit/MassEditDialog.fragment.xml +106 -0
  109. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +79 -0
  110. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +70 -0
  111. package/src/sap/fe/core/converters/ConverterContext.js +348 -367
  112. package/src/sap/fe/core/converters/ConverterContext.ts +33 -19
  113. package/src/sap/fe/core/converters/ManifestSettings.js +12 -1
  114. package/src/sap/fe/core/converters/ManifestSettings.ts +16 -1
  115. package/src/sap/fe/core/converters/ManifestWrapper.js +354 -354
  116. package/src/sap/fe/core/converters/ManifestWrapper.ts +34 -6
  117. package/src/sap/fe/core/converters/MetaModelConverter.js +72 -9
  118. package/src/sap/fe/core/converters/MetaModelConverter.ts +75 -16
  119. package/src/sap/fe/core/converters/TemplateConverter.js +1 -1
  120. package/src/sap/fe/core/converters/TemplateConverter.ts +4 -3
  121. package/src/sap/fe/core/converters/annotations/DataField.js +28 -14
  122. package/src/sap/fe/core/converters/annotations/DataField.ts +38 -14
  123. package/src/sap/fe/core/converters/common/AnnotationConverter.js +33 -21
  124. package/src/sap/fe/core/converters/controls/Common/Action.js +11 -2
  125. package/src/sap/fe/core/converters/controls/Common/Action.ts +8 -2
  126. package/src/sap/fe/core/converters/controls/Common/Chart.js +5 -3
  127. package/src/sap/fe/core/converters/controls/Common/Chart.ts +11 -3
  128. package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +3 -3
  129. package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +2 -2
  130. package/src/sap/fe/core/converters/controls/Common/Form.js +21 -11
  131. package/src/sap/fe/core/converters/controls/Common/Form.ts +28 -6
  132. package/src/sap/fe/core/converters/controls/Common/KPI.js +69 -4
  133. package/src/sap/fe/core/converters/controls/Common/KPI.ts +75 -2
  134. package/src/sap/fe/core/converters/controls/Common/Table.js +507 -408
  135. package/src/sap/fe/core/converters/controls/Common/Table.ts +618 -500
  136. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +592 -0
  137. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +718 -0
  138. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +465 -59
  139. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +462 -72
  140. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +2 -2
  141. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +1 -1
  142. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +17 -9
  143. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +24 -9
  144. package/src/sap/fe/core/converters/helpers/Aggregation.js +118 -121
  145. package/src/sap/fe/core/converters/helpers/Aggregation.ts +28 -5
  146. package/src/sap/fe/core/converters/helpers/BindingHelper.js +20 -6
  147. package/src/sap/fe/core/converters/helpers/BindingHelper.ts +16 -4
  148. package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +12 -1
  149. package/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +11 -0
  150. package/src/sap/fe/core/converters/helpers/IssueManager.js +7 -1
  151. package/src/sap/fe/core/converters/helpers/IssueManager.ts +6 -0
  152. package/src/sap/fe/core/converters/helpers/Key.js +42 -57
  153. package/src/sap/fe/core/converters/helpers/Key.ts +1 -1
  154. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +28 -7
  155. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +23 -6
  156. package/src/sap/fe/core/converters/templates/ListReportConverter.js +20 -7
  157. package/src/sap/fe/core/converters/templates/ListReportConverter.ts +36 -14
  158. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +7 -5
  159. package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +5 -1
  160. package/src/sap/fe/core/designtime/AppComponent.designtime.js +93 -90
  161. package/src/sap/fe/core/designtime/AppComponent.designtime.ts +91 -0
  162. package/src/sap/fe/core/formatters/CollaborationFormatter.js +104 -0
  163. package/src/sap/fe/core/formatters/CollaborationFormatter.ts +60 -0
  164. package/src/sap/fe/core/formatters/CriticalityFormatter.js +1 -1
  165. package/src/sap/fe/core/formatters/CriticalityFormatter.ts +1 -1
  166. package/src/sap/fe/core/formatters/FPMFormatter.js +1 -1
  167. package/src/sap/fe/core/formatters/FPMFormatter.ts +4 -10
  168. package/src/sap/fe/core/formatters/KPIFormatter.js +1 -1
  169. package/src/sap/fe/core/formatters/KPIFormatter.ts +3 -1
  170. package/src/sap/fe/core/formatters/TableFormatter.js +91 -29
  171. package/src/sap/fe/core/formatters/TableFormatter.ts +94 -28
  172. package/src/sap/fe/core/formatters/ValueFormatter.js +30 -5
  173. package/src/sap/fe/core/formatters/ValueFormatter.ts +30 -7
  174. package/src/sap/fe/core/fpm/Component.js +51 -54
  175. package/src/sap/fe/core/fpm/Component.ts +48 -0
  176. package/src/sap/fe/core/helpers/AppStartupHelper.js +373 -0
  177. package/src/sap/fe/core/helpers/AppStartupHelper.ts +417 -0
  178. package/src/sap/fe/core/helpers/BindingExpression.js +489 -442
  179. package/src/sap/fe/core/helpers/BindingExpression.ts +486 -469
  180. package/src/sap/fe/core/helpers/ClassSupport.js +212 -76
  181. package/src/sap/fe/core/helpers/ClassSupport.ts +198 -71
  182. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +64 -59
  183. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.ts +52 -0
  184. package/src/sap/fe/core/helpers/EditState.js +81 -84
  185. package/src/sap/fe/core/helpers/EditState.ts +81 -0
  186. package/src/sap/fe/core/helpers/ExcelFormatHelper.js +62 -48
  187. package/src/sap/fe/core/helpers/ExcelFormatHelper.ts +49 -0
  188. package/src/sap/fe/core/helpers/FPMHelper.js +52 -56
  189. package/src/sap/fe/core/helpers/FPMHelper.ts +62 -0
  190. package/src/sap/fe/core/helpers/KeepAliveHelper.js +4 -5
  191. package/src/sap/fe/core/helpers/KeepAliveHelper.ts +10 -10
  192. package/src/sap/fe/core/helpers/MassEditHelper.js +604 -0
  193. package/src/sap/fe/core/helpers/MassEditHelper.ts +699 -0
  194. package/src/sap/fe/core/helpers/ModelHelper.js +253 -225
  195. package/src/sap/fe/core/helpers/ModelHelper.ts +250 -0
  196. package/src/sap/fe/core/helpers/PasteHelper.js +210 -132
  197. package/src/sap/fe/core/helpers/PasteHelper.ts +196 -0
  198. package/src/sap/fe/core/helpers/SemanticDateOperators.js +336 -313
  199. package/src/sap/fe/core/helpers/SemanticDateOperators.ts +334 -0
  200. package/src/sap/fe/core/helpers/SemanticKeyHelper.js +66 -67
  201. package/src/sap/fe/core/helpers/SemanticKeyHelper.ts +73 -0
  202. package/src/sap/fe/core/helpers/StableIdHelper.js +4 -7
  203. package/src/sap/fe/core/helpers/StableIdHelper.ts +2 -6
  204. package/src/sap/fe/core/jsx-runtime/jsx.js +1 -1
  205. package/src/sap/fe/core/jsx-runtime/jsx.ts +1 -1
  206. package/src/sap/fe/core/library.js +427 -425
  207. package/src/sap/fe/core/library.support.js +23 -27
  208. package/src/sap/fe/core/library.support.ts +23 -0
  209. package/src/sap/fe/core/library.ts +420 -0
  210. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +64 -0
  211. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +69 -0
  212. package/src/sap/fe/core/messagebundle.properties +78 -13
  213. package/src/sap/fe/core/messagebundle_ar.properties +58 -7
  214. package/src/sap/fe/core/messagebundle_bg.properties +58 -7
  215. package/src/sap/fe/core/messagebundle_ca.properties +58 -7
  216. package/src/sap/fe/core/messagebundle_cs.properties +59 -8
  217. package/src/sap/fe/core/messagebundle_cy.properties +58 -7
  218. package/src/sap/fe/core/messagebundle_da.properties +58 -7
  219. package/src/sap/fe/core/messagebundle_de.properties +58 -7
  220. package/src/sap/fe/core/messagebundle_el.properties +58 -7
  221. package/src/sap/fe/core/messagebundle_en.properties +57 -6
  222. package/src/sap/fe/core/messagebundle_en_GB.properties +57 -6
  223. package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +61 -6
  224. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +58 -7
  225. package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +58 -7
  226. package/src/sap/fe/core/messagebundle_es.properties +58 -7
  227. package/src/sap/fe/core/messagebundle_es_MX.properties +58 -7
  228. package/src/sap/fe/core/messagebundle_et.properties +58 -7
  229. package/src/sap/fe/core/messagebundle_fi.properties +60 -9
  230. package/src/sap/fe/core/messagebundle_fr.properties +64 -13
  231. package/src/sap/fe/core/messagebundle_fr_CA.properties +59 -8
  232. package/src/sap/fe/core/messagebundle_hi.properties +58 -7
  233. package/src/sap/fe/core/messagebundle_hr.properties +58 -7
  234. package/src/sap/fe/core/messagebundle_hu.properties +59 -8
  235. package/src/sap/fe/core/messagebundle_id.properties +61 -10
  236. package/src/sap/fe/core/messagebundle_it.properties +58 -7
  237. package/src/sap/fe/core/messagebundle_iw.properties +58 -7
  238. package/src/sap/fe/core/messagebundle_ja.properties +58 -7
  239. package/src/sap/fe/core/messagebundle_kk.properties +58 -7
  240. package/src/sap/fe/core/messagebundle_ko.properties +58 -7
  241. package/src/sap/fe/core/messagebundle_lt.properties +58 -7
  242. package/src/sap/fe/core/messagebundle_lv.properties +59 -8
  243. package/src/sap/fe/core/messagebundle_ms.properties +58 -7
  244. package/src/sap/fe/core/messagebundle_nl.properties +58 -7
  245. package/src/sap/fe/core/messagebundle_no.properties +58 -7
  246. package/src/sap/fe/core/messagebundle_pl.properties +58 -7
  247. package/src/sap/fe/core/messagebundle_pt.properties +59 -8
  248. package/src/sap/fe/core/messagebundle_pt_PT.properties +58 -7
  249. package/src/sap/fe/core/messagebundle_ro.properties +58 -7
  250. package/src/sap/fe/core/messagebundle_ru.properties +58 -7
  251. package/src/sap/fe/core/messagebundle_sh.properties +58 -7
  252. package/src/sap/fe/core/messagebundle_sk.properties +58 -7
  253. package/src/sap/fe/core/messagebundle_sl.properties +58 -7
  254. package/src/sap/fe/core/messagebundle_sv.properties +59 -8
  255. package/src/sap/fe/core/messagebundle_th.properties +58 -7
  256. package/src/sap/fe/core/messagebundle_tr.properties +60 -9
  257. package/src/sap/fe/core/messagebundle_uk.properties +58 -7
  258. package/src/sap/fe/core/messagebundle_vi.properties +58 -7
  259. package/src/sap/fe/core/messagebundle_zh_CN.properties +58 -7
  260. package/src/sap/fe/core/messagebundle_zh_TW.properties +58 -7
  261. package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +45 -71
  262. package/src/sap/fe/core/services/AsyncComponentServiceFactory.ts +3 -1
  263. package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +231 -202
  264. package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +212 -0
  265. package/src/sap/fe/core/services/EnvironmentServiceFactory.js +67 -92
  266. package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +10 -6
  267. package/src/sap/fe/core/services/NavigationServiceFactory.js +351 -300
  268. package/src/sap/fe/core/services/NavigationServiceFactory.ts +313 -0
  269. package/src/sap/fe/core/services/ResourceModelServiceFactory.js +114 -81
  270. package/src/sap/fe/core/services/ResourceModelServiceFactory.ts +83 -0
  271. package/src/sap/fe/core/services/RoutingServiceFactory.js +927 -1152
  272. package/src/sap/fe/core/services/RoutingServiceFactory.ts +898 -0
  273. package/src/sap/fe/core/services/ShellServicesFactory.js +649 -707
  274. package/src/sap/fe/core/services/ShellServicesFactory.ts +52 -15
  275. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +569 -637
  276. package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +78 -102
  277. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +429 -478
  278. package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +460 -0
  279. package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +10 -8
  280. package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.ts +8 -0
  281. package/src/sap/fe/core/support/AnnotationIssue.support.js +15 -3
  282. package/src/sap/fe/core/support/AnnotationIssue.support.ts +16 -2
  283. package/src/sap/fe/core/support/CollectionFacetUnsupportedLevel.support.js +2 -2
  284. package/src/sap/fe/core/support/CollectionFacetUnsupportedLevel.support.ts +1 -1
  285. package/src/sap/fe/core/support/CommonHelper.js +1 -1
  286. package/src/sap/fe/core/support/CommonHelper.ts +1 -1
  287. package/src/sap/fe/core/support/Diagnostics.js +36 -48
  288. package/src/sap/fe/core/support/InvalidAnnotationColumnKey.support.js +38 -0
  289. package/src/sap/fe/core/support/InvalidAnnotationColumnKey.support.ts +18 -0
  290. package/src/sap/fe/core/templating/DataModelPathHelper.js +97 -127
  291. package/src/sap/fe/core/templating/DataModelPathHelper.ts +112 -135
  292. package/src/sap/fe/core/templating/DisplayModeFormatter.js +114 -0
  293. package/src/sap/fe/core/templating/DisplayModeFormatter.ts +86 -0
  294. package/src/sap/fe/core/templating/FieldControlHelper.js +8 -8
  295. package/src/sap/fe/core/templating/FieldControlHelper.ts +25 -7
  296. package/src/sap/fe/core/templating/FilterHelper.js +140 -78
  297. package/src/sap/fe/core/templating/FilterHelper.ts +149 -78
  298. package/src/sap/fe/core/templating/PropertyHelper.js +3 -3
  299. package/src/sap/fe/core/templating/PropertyHelper.ts +2 -2
  300. package/src/sap/fe/core/templating/UIFormatters.js +76 -135
  301. package/src/sap/fe/core/templating/UIFormatters.ts +76 -99
  302. package/src/sap/fe/core/type/Email.js +1 -1
  303. package/src/sap/fe/core/type/Email.ts +4 -6
  304. package/ui5.yaml +0 -3
  305. package/src/sap/fe/core/controls/filterbar.d.js +0 -8
  306. package/src/sap/fe/core/controls/filterbar.d.ts +0 -0
@@ -1,37 +1,43 @@
1
1
  /*!
2
- * SAPUI5
3
- * (c) Copyright 2009-2021 SAP SE. All rights reserved.
2
+ * SAP UI development toolkit for HTML5 (SAPUI5)
3
+ * (c) Copyright 2009-2021 SAP SE. All rights reserved
4
4
  */
5
- sap.ui.define(["sap/base/Log", "sap/ui/base/Object"], function(Log, BaseObject) {
6
- "use strict";
7
-
8
- return BaseObject.extend("sap.fe.core.Synchronization", {
9
- constructor: function() {
10
- this._fnResolve = null;
11
- this._isResolved = false;
12
-
13
- return BaseObject.apply(this, arguments);
14
- },
15
-
16
- waitFor: function() {
17
- var that = this;
18
-
19
- if (this._isResolved) {
20
- return Promise.resolve();
21
- } else {
22
- return new Promise(function(resolve, reject) {
23
- that._fnResolve = resolve;
24
- });
25
- }
26
- },
27
-
28
- resolve: function() {
29
- if (!this._isResolved) {
30
- this._isResolved = true;
31
- if (this._fnResolve) {
32
- this._fnResolve();
33
- }
34
- }
35
- }
36
- });
37
- });
5
+ sap.ui.define([], function () {
6
+ "use strict";
7
+
8
+ var Synchronization = /*#__PURE__*/function () {
9
+ function Synchronization() {
10
+ this._fnResolve = null;
11
+ this._isResolved = false;
12
+ }
13
+
14
+ var _proto = Synchronization.prototype;
15
+
16
+ _proto.waitFor = function waitFor() {
17
+ var _this = this;
18
+
19
+ if (this._isResolved) {
20
+ return Promise.resolve();
21
+ } else {
22
+ return new Promise(function (resolve) {
23
+ _this._fnResolve = resolve;
24
+ });
25
+ }
26
+ };
27
+
28
+ _proto.resolve = function resolve() {
29
+ if (!this._isResolved) {
30
+ this._isResolved = true;
31
+
32
+ if (this._fnResolve) {
33
+ this._fnResolve();
34
+ }
35
+ }
36
+ };
37
+
38
+ return Synchronization;
39
+ }();
40
+
41
+ return Synchronization;
42
+ }, false);
43
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlN5bmNocm9uaXphdGlvbi50cyJdLCJuYW1lcyI6WyJTeW5jaHJvbml6YXRpb24iLCJfZm5SZXNvbHZlIiwiX2lzUmVzb2x2ZWQiLCJ3YWl0Rm9yIiwiUHJvbWlzZSIsInJlc29sdmUiXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7TUFGTUEsZTtBQUdMLCtCQUFjO0FBQ2IsV0FBS0MsVUFBTCxHQUFrQixJQUFsQjtBQUNBLFdBQUtDLFdBQUwsR0FBbUIsS0FBbkI7QUFDQTs7OztXQUVEQyxPLEdBQUEsbUJBQVU7QUFBQTs7QUFDVCxVQUFJLEtBQUtELFdBQVQsRUFBc0I7QUFDckIsZUFBT0UsT0FBTyxDQUFDQyxPQUFSLEVBQVA7QUFDQSxPQUZELE1BRU87QUFDTixlQUFPLElBQUlELE9BQUosQ0FBWSxVQUFBQyxPQUFPLEVBQUk7QUFDN0IsVUFBQSxLQUFJLENBQUNKLFVBQUwsR0FBa0JJLE9BQWxCO0FBQ0EsU0FGTSxDQUFQO0FBR0E7QUFDRCxLOztXQUVEQSxPLEdBQUEsbUJBQVU7QUFDVCxVQUFJLENBQUMsS0FBS0gsV0FBVixFQUF1QjtBQUN0QixhQUFLQSxXQUFMLEdBQW1CLElBQW5COztBQUNBLFlBQUksS0FBS0QsVUFBVCxFQUFxQjtBQUNwQixlQUFLQSxVQUFMO0FBQ0E7QUFDRDtBQUNELEs7Ozs7O1NBR2FELGUiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImNsYXNzIFN5bmNocm9uaXphdGlvbiB7XG5cdHByaXZhdGUgX2ZuUmVzb2x2ZTogRnVuY3Rpb24gfCBudWxsO1xuXHRwcml2YXRlIF9pc1Jlc29sdmVkOiBib29sZWFuO1xuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHR0aGlzLl9mblJlc29sdmUgPSBudWxsO1xuXHRcdHRoaXMuX2lzUmVzb2x2ZWQgPSBmYWxzZTtcblx0fVxuXG5cdHdhaXRGb3IoKSB7XG5cdFx0aWYgKHRoaXMuX2lzUmVzb2x2ZWQpIHtcblx0XHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuXHRcdFx0XHR0aGlzLl9mblJlc29sdmUgPSByZXNvbHZlO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHR9XG5cblx0cmVzb2x2ZSgpIHtcblx0XHRpZiAoIXRoaXMuX2lzUmVzb2x2ZWQpIHtcblx0XHRcdHRoaXMuX2lzUmVzb2x2ZWQgPSB0cnVlO1xuXHRcdFx0aWYgKHRoaXMuX2ZuUmVzb2x2ZSkge1xuXHRcdFx0XHR0aGlzLl9mblJlc29sdmUoKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgU3luY2hyb25pemF0aW9uO1xuIl19
@@ -0,0 +1,29 @@
1
+ class Synchronization {
2
+ private _fnResolve: Function | null;
3
+ private _isResolved: boolean;
4
+ constructor() {
5
+ this._fnResolve = null;
6
+ this._isResolved = false;
7
+ }
8
+
9
+ waitFor() {
10
+ if (this._isResolved) {
11
+ return Promise.resolve();
12
+ } else {
13
+ return new Promise(resolve => {
14
+ this._fnResolve = resolve;
15
+ });
16
+ }
17
+ }
18
+
19
+ resolve() {
20
+ if (!this._isResolved) {
21
+ this._isResolved = true;
22
+ if (this._fnResolve) {
23
+ this._fnResolve();
24
+ }
25
+ }
26
+ }
27
+ }
28
+
29
+ export default Synchronization;
@@ -1,157 +1,175 @@
1
1
  /*!
2
- * SAPUI5
3
- * (c) Copyright 2009-2021 SAP SE. All rights reserved.
2
+ * SAP UI development toolkit for HTML5 (SAPUI5)
3
+ * (c) Copyright 2009-2021 SAP SE. All rights reserved
4
4
  */
5
- sap.ui.define(
6
- ["sap/ui/core/UIComponent", "sap/fe/core/CommonUtils", "sap/base/Log"],
7
- function(UIComponent, CommonUtils, Log) {
8
- "use strict";
9
-
10
- var TemplateComponent = UIComponent.extend("sap.fe.core.TemplateComponent", {
11
- metadata: {
12
- interfaces: ["sap.ui.core.IAsyncContentCreation"],
13
- properties: {
14
- /**
15
- * OData EntitySet name
16
- */
17
- entitySet: {
18
- type: "string",
19
- defaultValue: null
20
- },
21
- /**
22
- * Context Path for rendering the template
23
- */
24
- contextPath: {
25
- type: "string",
26
- defaultValue: null
27
- },
28
- /**
29
- * The pattern for the binding context to be create based on the parameters from the navigation
30
- * If not provided we'll default to what was passed in the URL
31
- */
32
- bindingContextPattern: {
33
- type: "string"
34
- },
35
-
36
- /**
37
- * Map of used OData navigations and its routing targets
38
- */
39
- navigation: {
40
- type: "object"
41
- },
42
- /**
43
- * Enhance the i18n bundle used for this page with one or more app specific i18n resource bundles or resource models
44
- * or a combination of both. The last resource bundle/model is given highest priority
45
- */
46
- enhanceI18n: {
47
- type: "string[]"
48
- },
49
- /**
50
- * Define control related configuration settings
51
- */
52
- controlConfiguration: {
53
- type: "object"
54
- },
55
- /**
56
- * Adjusts the template content
57
- */
58
- content: {
59
- type: "object"
60
- },
61
- /**
62
- * Whether or not you can reach this page directly through semantic bookmarks
63
- */
64
- allowDeepLinking: {
65
- type: "boolean"
66
- },
67
- /**
68
- * Defines the context path on the component that is refreshed when the app is restored using keep alive mode
69
- */
70
- refreshStrategyOnAppRestore: {
71
- type: "object"
72
- }
73
- },
74
- events: {
75
- containerDefined: {
76
- container: { type: "sap.ui.base.ManagedObject" }
77
- },
78
- heroesBatchReceived: {
79
- element: { type: "sap.ui.base.ManagedObject" }
80
- },
81
- workersBatchReceived: {
82
- element: { type: "sap.ui.base.ManagedObject" }
83
- }
84
- },
85
- library: "sap.fe.core"
86
- },
87
-
88
- setContainer: function(oContainer) {
89
- UIComponent.prototype.setContainer.apply(this, arguments);
90
- this.fireContainerDefined({ container: oContainer });
91
- },
92
-
93
- init: function() {
94
- this.oAppComponent = CommonUtils.getAppComponent(this);
95
- UIComponent.prototype.init.apply(this, arguments);
96
- },
97
-
98
- // This method is called by UI5 core to access to the component containing the customizing configuration.
99
- // as controller extensions are defined in the manifest for the app component and not for the
100
- // template component we return the app component.
101
- getExtensionComponent: function() {
102
- return this.oAppComponent;
103
- },
104
-
105
- onPageReady: function(mParameters) {
106
- if (this.getRootControl() && this.getRootControl().getController() && this.getRootControl().getController().onPageReady) {
107
- this.getRootControl()
108
- .getController()
109
- .onPageReady(mParameters);
110
- }
111
- },
112
-
113
- getNavigationConfiguration: function(sTargetPath) {
114
- var mNavigation = this.getNavigation();
115
- return mNavigation[sTargetPath];
116
- },
117
-
118
- getViewData: function() {
119
- var mProperties = this.getMetadata().getAllProperties();
120
- var oViewData = Object.keys(mProperties).reduce(
121
- function(mViewData, sPropertyName) {
122
- mViewData[sPropertyName] = mProperties[sPropertyName].get(this);
123
- return mViewData;
124
- }.bind(this),
125
- {}
126
- );
127
-
128
- // Access the internal _isFclEnabled which will be there
129
- oViewData.fclEnabled = this.oAppComponent._isFclEnabled();
130
-
131
- return oViewData;
132
- },
133
-
134
- _getPageTitleInformation: function() {
135
- if (
136
- this.getRootControl() &&
137
- this.getRootControl().getController() &&
138
- this.getRootControl().getController()._getPageTitleInformation
139
- ) {
140
- return this.getRootControl()
141
- .getController()
142
- ._getPageTitleInformation();
143
- } else {
144
- return Promise.resolve({});
145
- }
146
- },
147
-
148
- getExtensionAPI: function() {
149
- return this.getRootControl()
150
- .getController()
151
- .getExtensionAPI();
152
- }
153
- });
154
- return TemplateComponent;
155
- },
156
- /* bExport= */ true
157
- );
5
+ sap.ui.define(["sap/ui/core/UIComponent", "sap/fe/core/CommonUtils", "sap/ui/mdc/p13n/StateUtil"], function (UIComponent, CommonUtils, StateUtil) {
6
+ "use strict";
7
+
8
+ var TemplateComponent = UIComponent.extend("sap.fe.core.TemplateComponent", {
9
+ metadata: {
10
+ interfaces: ["sap.ui.core.IAsyncContentCreation"],
11
+ properties: {
12
+ /**
13
+ * Name of the OData entity set
14
+ */
15
+ entitySet: {
16
+ type: "string",
17
+ defaultValue: null
18
+ },
19
+
20
+ /**
21
+ * Context Path for rendering the template
22
+ */
23
+ contextPath: {
24
+ type: "string",
25
+ defaultValue: null
26
+ },
27
+
28
+ /**
29
+ * The pattern for the binding context to be create based on the parameters from the navigation
30
+ * If not provided we'll default to what was passed in the URL
31
+ */
32
+ bindingContextPattern: {
33
+ type: "string"
34
+ },
35
+
36
+ /**
37
+ * Map of used OData navigations and its routing targets
38
+ */
39
+ navigation: {
40
+ type: "object"
41
+ },
42
+
43
+ /**
44
+ * Enhance the i18n bundle used for this page with one or more app specific i18n resource bundles or resource models
45
+ * or a combination of both. The last resource bundle/model is given highest priority
46
+ */
47
+ enhanceI18n: {
48
+ type: "string[]"
49
+ },
50
+
51
+ /**
52
+ * Define control related configuration settings
53
+ */
54
+ controlConfiguration: {
55
+ type: "object"
56
+ },
57
+
58
+ /**
59
+ * Adjusts the template content
60
+ */
61
+ content: {
62
+ type: "object"
63
+ },
64
+
65
+ /**
66
+ * Whether or not you can reach this page directly through semantic bookmarks
67
+ */
68
+ allowDeepLinking: {
69
+ type: "boolean"
70
+ },
71
+
72
+ /**
73
+ * Defines the context path on the component that is refreshed when the app is restored using keep alive mode
74
+ */
75
+ refreshStrategyOnAppRestore: {
76
+ type: "object"
77
+ }
78
+ },
79
+ events: {
80
+ containerDefined: {
81
+ container: {
82
+ type: "sap.ui.base.ManagedObject"
83
+ }
84
+ },
85
+ heroesBatchReceived: {
86
+ element: {
87
+ type: "sap.ui.base.ManagedObject"
88
+ }
89
+ },
90
+ workersBatchReceived: {
91
+ element: {
92
+ type: "sap.ui.base.ManagedObject"
93
+ }
94
+ }
95
+ },
96
+ library: "sap.fe.core"
97
+ },
98
+ setContainer: function (oContainer) {
99
+ var setContainerOutput = UIComponent.prototype.setContainer.apply(this, [oContainer]);
100
+ this.fireContainerDefined({
101
+ container: oContainer
102
+ });
103
+ return setContainerOutput;
104
+ },
105
+ init: function () {
106
+ this.oAppComponent = CommonUtils.getAppComponent(this);
107
+ UIComponent.prototype.init.apply(this);
108
+
109
+ var oStateChangedHandler = function (oEvent) {
110
+ var oControl = oEvent.getParameter("control");
111
+
112
+ if (oControl.isA("sap.ui.mdc.Table") || oControl.isA("sap.ui.mdc.FilterBar")) {
113
+ var oMacroAPI = oControl.getParent();
114
+ oMacroAPI.fireStateChanged();
115
+ }
116
+ };
117
+
118
+ StateUtil.detachStateChange(oStateChangedHandler);
119
+ StateUtil.attachStateChange(oStateChangedHandler);
120
+ },
121
+ // This method is called by UI5 core to access to the component containing the customizing configuration.
122
+ // as controller extensions are defined in the manifest for the app component and not for the
123
+ // template component we return the app component.
124
+ getExtensionComponent: function () {
125
+ return this.oAppComponent;
126
+ },
127
+ getRootController: function () {
128
+ var rootControl = this.getRootControl();
129
+ var rootController;
130
+
131
+ if (rootControl && rootControl.getController) {
132
+ rootController = rootControl.getController();
133
+ }
134
+
135
+ return rootController;
136
+ },
137
+ onPageReady: function (mParameters) {
138
+ var rootController = this.getRootController();
139
+
140
+ if (rootController && rootController.onPageReady) {
141
+ rootController.onPageReady(mParameters);
142
+ }
143
+ },
144
+ getNavigationConfiguration: function (sTargetPath) {
145
+ var mNavigation = this.getNavigation();
146
+ return mNavigation[sTargetPath];
147
+ },
148
+ getViewData: function () {
149
+ var _this = this;
150
+
151
+ var mProperties = this.getMetadata().getAllProperties();
152
+ var oViewData = Object.keys(mProperties).reduce(function (mViewData, sPropertyName) {
153
+ mViewData[sPropertyName] = mProperties[sPropertyName].get(_this);
154
+ return mViewData;
155
+ }, {}); // Access the internal _isFclEnabled which will be there
156
+
157
+ oViewData.fclEnabled = this.oAppComponent._isFclEnabled();
158
+ return oViewData;
159
+ },
160
+ _getPageTitleInformation: function () {
161
+ var rootControl = this.getRootControl();
162
+
163
+ if (rootControl && rootControl.getController() && rootControl.getController()._getPageTitleInformation) {
164
+ return rootControl.getController()._getPageTitleInformation();
165
+ } else {
166
+ return {};
167
+ }
168
+ },
169
+ getExtensionAPI: function () {
170
+ return this.getRootControl().getController().getExtensionAPI();
171
+ }
172
+ });
173
+ return TemplateComponent;
174
+ }, false);
175
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRlbXBsYXRlQ29tcG9uZW50LnRzIl0sIm5hbWVzIjpbIlRlbXBsYXRlQ29tcG9uZW50IiwiVUlDb21wb25lbnQiLCJleHRlbmQiLCJtZXRhZGF0YSIsImludGVyZmFjZXMiLCJwcm9wZXJ0aWVzIiwiZW50aXR5U2V0IiwidHlwZSIsImRlZmF1bHRWYWx1ZSIsImNvbnRleHRQYXRoIiwiYmluZGluZ0NvbnRleHRQYXR0ZXJuIiwibmF2aWdhdGlvbiIsImVuaGFuY2VJMThuIiwiY29udHJvbENvbmZpZ3VyYXRpb24iLCJjb250ZW50IiwiYWxsb3dEZWVwTGlua2luZyIsInJlZnJlc2hTdHJhdGVneU9uQXBwUmVzdG9yZSIsImV2ZW50cyIsImNvbnRhaW5lckRlZmluZWQiLCJjb250YWluZXIiLCJoZXJvZXNCYXRjaFJlY2VpdmVkIiwiZWxlbWVudCIsIndvcmtlcnNCYXRjaFJlY2VpdmVkIiwibGlicmFyeSIsInNldENvbnRhaW5lciIsIm9Db250YWluZXIiLCJzZXRDb250YWluZXJPdXRwdXQiLCJwcm90b3R5cGUiLCJhcHBseSIsImZpcmVDb250YWluZXJEZWZpbmVkIiwiaW5pdCIsIm9BcHBDb21wb25lbnQiLCJDb21tb25VdGlscyIsImdldEFwcENvbXBvbmVudCIsIm9TdGF0ZUNoYW5nZWRIYW5kbGVyIiwib0V2ZW50Iiwib0NvbnRyb2wiLCJnZXRQYXJhbWV0ZXIiLCJpc0EiLCJvTWFjcm9BUEkiLCJnZXRQYXJlbnQiLCJmaXJlU3RhdGVDaGFuZ2VkIiwiU3RhdGVVdGlsIiwiZGV0YWNoU3RhdGVDaGFuZ2UiLCJhdHRhY2hTdGF0ZUNoYW5nZSIsImdldEV4dGVuc2lvbkNvbXBvbmVudCIsImdldFJvb3RDb250cm9sbGVyIiwicm9vdENvbnRyb2wiLCJnZXRSb290Q29udHJvbCIsInJvb3RDb250cm9sbGVyIiwiZ2V0Q29udHJvbGxlciIsIm9uUGFnZVJlYWR5IiwibVBhcmFtZXRlcnMiLCJnZXROYXZpZ2F0aW9uQ29uZmlndXJhdGlvbiIsInNUYXJnZXRQYXRoIiwibU5hdmlnYXRpb24iLCJnZXROYXZpZ2F0aW9uIiwiZ2V0Vmlld0RhdGEiLCJtUHJvcGVydGllcyIsImdldE1ldGFkYXRhIiwiZ2V0QWxsUHJvcGVydGllcyIsIm9WaWV3RGF0YSIsIk9iamVjdCIsImtleXMiLCJyZWR1Y2UiLCJtVmlld0RhdGEiLCJzUHJvcGVydHlOYW1lIiwiZ2V0IiwiZmNsRW5hYmxlZCIsIl9pc0ZjbEVuYWJsZWQiLCJfZ2V0UGFnZVRpdGxlSW5mb3JtYXRpb24iLCJnZXRFeHRlbnNpb25BUEkiXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7QUFpQkEsTUFBTUEsaUJBQWlCLEdBQUdDLFdBQVcsQ0FBQ0MsTUFBWixDQUFtQiwrQkFBbkIsRUFBb0Q7QUFDN0VDLElBQUFBLFFBQVEsRUFBRTtBQUNUQyxNQUFBQSxVQUFVLEVBQUUsQ0FBQyxtQ0FBRCxDQURIO0FBRVRDLE1BQUFBLFVBQVUsRUFBRTtBQUNYO0FBQ0g7QUFDQTtBQUNHQyxRQUFBQSxTQUFTLEVBQUU7QUFDVkMsVUFBQUEsSUFBSSxFQUFFLFFBREk7QUFFVkMsVUFBQUEsWUFBWSxFQUFFO0FBRkosU0FKQTs7QUFRWDtBQUNIO0FBQ0E7QUFDR0MsUUFBQUEsV0FBVyxFQUFFO0FBQ1pGLFVBQUFBLElBQUksRUFBRSxRQURNO0FBRVpDLFVBQUFBLFlBQVksRUFBRTtBQUZGLFNBWEY7O0FBZVg7QUFDSDtBQUNBO0FBQ0E7QUFDR0UsUUFBQUEscUJBQXFCLEVBQUU7QUFDdEJILFVBQUFBLElBQUksRUFBRTtBQURnQixTQW5CWjs7QUF1Qlg7QUFDSDtBQUNBO0FBQ0dJLFFBQUFBLFVBQVUsRUFBRTtBQUNYSixVQUFBQSxJQUFJLEVBQUU7QUFESyxTQTFCRDs7QUE2Qlg7QUFDSDtBQUNBO0FBQ0E7QUFDR0ssUUFBQUEsV0FBVyxFQUFFO0FBQ1pMLFVBQUFBLElBQUksRUFBRTtBQURNLFNBakNGOztBQW9DWDtBQUNIO0FBQ0E7QUFDR00sUUFBQUEsb0JBQW9CLEVBQUU7QUFDckJOLFVBQUFBLElBQUks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aEMsRUFBRCxDQUF5RHFCLGVBQXpELEVBQVA7QUFDQTtBQXRKNEUsR0FBcEQsQ0FBMUI7U0F5SmdCdkUsaUIiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBVSUNvbXBvbmVudCBmcm9tIFwic2FwL3VpL2NvcmUvVUlDb21wb25lbnRcIjtcbmltcG9ydCBDb21tb25VdGlscyBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCBTdGF0ZVV0aWwgZnJvbSBcInNhcC91aS9tZGMvcDEzbi9TdGF0ZVV0aWxcIjtcbmltcG9ydCBDb21wb25lbnRDb250YWluZXIgZnJvbSBcInNhcC91aS9jb3JlL0NvbXBvbmVudENvbnRhaW5lclwiO1xuaW1wb3J0IEFwcENvbXBvbmVudCBmcm9tIFwic2FwL2ZlL2NvcmUvQXBwQ29tcG9uZW50XCI7XG5pbXBvcnQgVmlldyBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL1ZpZXdcIjtcbmltcG9ydCBQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvUGFnZUNvbnRyb2xsZXJcIjtcblxuZXhwb3J0IHR5cGUgVGVtcGxhdGVDb21wb25lbnRUeXBlID0gVUlDb21wb25lbnQgJiB7XG5cdG9BcHBDb21wb25lbnQ6IEFwcENvbXBvbmVudDtcblx0Z2V0TmF2aWdhdGlvbigpOiBhbnk7XG5cdGdldE5hdmlnYXRpb25Db25maWd1cmF0aW9uKHNOYXZpZ2F0aW9uTmFtZTogc3RyaW5nKTogYW55O1xuXHRnZXRCaW5kaW5nQ29udGV4dFBhdHRlcm4oKTogYW55O1xuXHRjcmVhdGVEZWZlcnJlZENvbnRleHQoc1BhdGg6IHN0cmluZywgb0xpc3RCaW5kaW5nOiBhbnksIGJBY3Rpb25DcmVhdGU6IGJvb2xlYW4pOiBhbnk7XG5cdGdldEVudGl0eVNldCgpOiBzdHJpbmc7XG5cdGdldENvbnRleHRQYXRoKCk6IHN0cmluZztcblx0Z2V0Vmlld0RhdGEoKTogYW55O1xuXHRleHRlbmQoc05hbWU6IHN0cmluZywgc0V4dGVuc2lvbjogYW55KTogYW55O1xufTtcbmNvbnN0IFRlbXBsYXRlQ29tcG9uZW50ID0gVUlDb21wb25lbnQuZXh0ZW5kKFwic2FwLmZlLmNvcmUuVGVtcGxhdGVDb21wb25lbnRcIiwge1xuXHRtZXRhZGF0YToge1xuXHRcdGludGVyZmFjZXM6IFtcInNhcC51aS5jb3JlLklBc3luY0NvbnRlbnRDcmVhdGlvblwiXSxcblx0XHRwcm9wZXJ0aWVzOiB7XG5cdFx0XHQvKipcblx0XHRcdCAqIE5hbWUgb2YgdGhlIE9EYXRhIGVudGl0eSBzZXRcblx0XHRcdCAqL1xuXHRcdFx0ZW50aXR5U2V0OiB7XG5cdFx0XHRcdHR5cGU6IFwic3RyaW5nXCIsXG5cdFx0XHRcdGRlZmF1bHRWYWx1ZTogbnVsbFxuXHRcdFx0fSxcblx0XHRcdC8qKlxuXHRcdFx0ICogQ29udGV4dCBQYXRoIGZvciByZW5kZXJpbmcgdGhlIHRlbXBsYXRlXG5cdFx0XHQgKi9cblx0XHRcdGNvbnRleHRQYXRoOiB7XG5cdFx0XHRcdHR5cGU6IFwic3RyaW5nXCIsXG5cdFx0XHRcdGRlZmF1bHRWYWx1ZTogbnVsbFxuXHRcdFx0fSxcblx0XHRcdC8qKlxuXHRcdFx0ICogVGhlIHBhdHRlcm4gZm9yIHRoZSBiaW5kaW5nIGNvbnRleHQgdG8gYmUgY3JlYXRlIGJhc2VkIG9uIHRoZSBwYXJhbWV0ZXJzIGZyb20gdGhlIG5hdmlnYXRpb25cblx0XHRcdCAqIElmIG5vdCBwcm92aWRlZCB3ZSdsbCBkZWZhdWx0IHRvIHdoYXQgd2FzIHBhc3NlZCBpbiB0aGUgVVJMXG5cdFx0XHQgKi9cblx0XHRcdGJpbmRpbmdDb250ZXh0UGF0dGVybjoge1xuXHRcdFx0XHR0eXBlOiBcInN0cmluZ1wiXG5cdFx0XHR9LFxuXG5cdFx0XHQvKipcblx0XHRcdCAqIE1hcCBvZiB1c2VkIE9EYXRhIG5hdmlnYXRpb25zIGFuZCBpdHMgcm91dGluZyB0YXJnZXRzXG5cdFx0XHQgKi9cblx0XHRcdG5hdmlnYXRpb246IHtcblx0XHRcdFx0dHlwZTogXCJvYmplY3RcIlxuXHRcdFx0fSxcblx0XHRcdC8qKlxuXHRcdFx0ICogRW5oYW5jZSB0aGUgaTE4biBidW5kbGUgdXNlZCBmb3IgdGhpcyBwYWdlIHdpdGggb25lIG9yIG1vcmUgYXBwIHNwZWNpZmljIGkxOG4gcmVzb3VyY2UgYnVuZGxlcyBvciByZXNvdXJjZSBtb2RlbHNcblx0XHRcdCAqIG9yIGEgY29tYmluYXRpb24gb2YgYm90aC4gVGhlIGxhc3QgcmVzb3VyY2UgYnVuZGxlL21vZGVsIGlzIGdpdmVuIGhpZ2hlc3QgcHJpb3JpdHlcblx0XHRcdCAqL1xuXHRcdFx0ZW5oYW5jZUkxOG46IHtcblx0XHRcdFx0dHlwZTogXCJzdHJpbmdbXVwiXG5cdFx0XHR9LFxuXHRcdFx0LyoqXG5cdFx0XHQgKiBEZWZpbmUgY29udHJvbCByZWxhdGVkIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3Ncblx0XHRcdCAqL1xuXHRcdFx0Y29udHJvbENvbmZpZ3VyYXRpb246IHtcblx0XHRcdFx0dHlwZTogXCJvYmplY3RcIlxuXHRcdFx0fSxcblx0XHRcdC8qKlxuXHRcdFx0ICogQWRqdXN0cyB0aGUgdGVtcGxhdGUgY29udGVudFxuXHRcdFx0ICovXG5cdFx0XHRjb250ZW50OiB7XG5cdFx0XHRcdHR5cGU6IFwib2JqZWN0XCJcblx0XHRcdH0sXG5cdFx0XHQvKipcblx0XHRcdCAqIFdoZXRoZXIgb3Igbm90IHlvdSBjYW4gcmVhY2ggdGhpcyBwYWdlIGRpcmVjdGx5IHRocm91Z2ggc2VtYW50aWMgYm9va21hcmtzXG5cdFx0XHQgKi9cblx0XHRcdGFsbG93RGVlcExpbmtpbmc6IHtcblx0XHRcdFx0dHlwZTogXCJib29sZWFuXCJcblx0XHRcdH0sXG5cdFx0XHQvKipcblx0XHRcdCAqIERlZmluZXMgdGhlIGNvbnRleHQgcGF0aCBvbiB0aGUgY29tcG9uZW50IHRoYXQgaXMgcmVmcmVzaGVkIHdoZW4gdGhlIGFwcCBpcyByZXN0b3JlZCB1c2luZyBrZWVwIGFsaXZlIG1vZGVcblx0XHRcdCAqL1xuXHRcdFx0cmVmcmVzaFN0cmF0ZWd5T25BcHBSZXN0b3JlOiB7XG5cdFx0XHRcdHR5cGU6IFwib2JqZWN0XCJcblx0XHRcdH1cblx0XHR9LFxuXHRcdGV2ZW50czoge1xuXHRcdFx0Y29udGFpbmVyRGVmaW5lZDoge1xuXHRcdFx0XHRjb250YWluZXI6IHsgdHlwZTogXCJzYXAudWkuYmFzZS5NYW5hZ2VkT2JqZWN0XCIgfVxuXHRcdFx0fSxcblx0XHRcdGhlcm9lc0JhdGNoUmVjZWl2ZWQ6IHtcblx0XHRcdFx0ZWxlbWVudDogeyB0eXBlOiBcInNhcC51aS5iYXNlLk1hbmFnZWRPYmplY3RcIiB9XG5cdFx0XHR9LFxuXHRcdFx0d29ya2Vyc0JhdGNoUmVjZWl2ZWQ6IHtcblx0XHRcdFx0ZWxlbWVudDogeyB0eXBlOiBcInNhcC51aS5iYXNlLk1hbmFnZWRPYmplY3RcIiB9XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRsaWJyYXJ5OiBcInNhcC5mZS5jb3JlXCJcblx0fSxcblxuXHRzZXRDb250YWluZXI6IGZ1bmN0aW9uKG9Db250YWluZXI6IENvbXBvbmVudENvbnRhaW5lcik6IFVJQ29tcG9uZW50IHtcblx0XHRjb25zdCBzZXRDb250YWluZXJPdXRwdXQgPSBVSUNvbXBvbmVudC5wcm90b3R5cGUuc2V0Q29udGFpbmVyLmFwcGx5KHRoaXMsIFtvQ29udGFpbmVyXSk7XG5cdFx0KHRoaXMgYXMgYW55KS5maXJlQ29udGFpbmVyRGVmaW5lZCh7IGNvbnRhaW5lcjogb0NvbnRhaW5lciB9KTtcblx0XHRyZXR1cm4gc2V0Q29udGFpbmVyT3V0cHV0O1xuXHR9LFxuXG5cdGluaXQ6IGZ1bmN0aW9uKHRoaXM6IFRlbXBsYXRlQ29tcG9uZW50VHlwZSkge1xuXHRcdHRoaXMub0FwcENvbXBvbmVudCA9IENvbW1vblV0aWxzLmdldEFwcENvbXBvbmVudCh0aGlzKTtcblx0XHRVSUNvbXBvbmVudC5wcm90b3R5cGUuaW5pdC5hcHBseSh0aGlzKTtcblx0XHRjb25zdCBvU3RhdGVDaGFuZ2VkSGFuZGxlciA9IGZ1bmN0aW9uKG9FdmVudDogYW55KSB7XG5cdFx0XHRjb25zdCBvQ29udHJvbCA9IG9FdmVudC5nZXRQYXJhbWV0ZXIoXCJjb250cm9sXCIpO1xuXHRcdFx0aWYgKG9Db250cm9sLmlzQShcInNhcC51aS5tZGMuVGFibGVcIikgfHwgb0NvbnRyb2wuaXNBKFwic2FwLnVpLm1kYy5GaWx0ZXJCYXJcIikpIHtcblx0XHRcdFx0Y29uc3Qgb01hY3JvQVBJID0gb0NvbnRyb2wuZ2V0UGFyZW50KCk7XG5cdFx0XHRcdG9NYWNyb0FQSS5maXJlU3RhdGVDaGFuZ2VkKCk7XG5cdFx0XHR9XG5cdFx0fTtcblx0XHRTdGF0ZVV0aWwuZGV0YWNoU3RhdGVDaGFuZ2Uob1N0YXRlQ2hhbmdlZEhhbmRsZXIpO1xuXHRcdFN0YXRlVXRpbC5hdHRhY2hTdGF0ZUNoYW5nZShvU3RhdGVDaGFuZ2VkSGFuZGxlcik7XG5cdH0sXG5cblx0Ly8gVGhpcyBtZXRob2QgaXMgY2FsbGVkIGJ5IFVJNSBjb3JlIHRvIGFjY2VzcyB0byB0aGUgY29tcG9uZW50IGNvbnRhaW5pbmcgdGhlIGN1c3RvbWl6aW5nIGNvbmZpZ3VyYXRpb24uXG5cdC8vIGFzIGNvbnRyb2xsZXIgZXh0ZW5zaW9ucyBhcmUgZGVmaW5lZCBpbiB0aGUgbWFuaWZlc3QgZm9yIHRoZSBhcHAgY29tcG9uZW50IGFuZCBub3QgZm9yIHRoZVxuXHQvLyB0ZW1wbGF0ZSBjb21wb25lbnQgd2UgcmV0dXJuIHRoZSBhcHAgY29tcG9uZW50LlxuXHRnZXRFeHRlbnNpb25Db21wb25lbnQ6IGZ1bmN0aW9uKHRoaXM6IFRlbXBsYXRlQ29tcG9uZW50VHlwZSk6IEFwcENvbXBvbmVudCB7XG5cdFx0cmV0dXJuIHRoaXMub0FwcENvbXBvbmVudDtcblx0fSxcblxuXHRnZXRSb290Q29udHJvbGxlcigpOiBhbnkgfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IHJvb3RDb250cm9sOiBWaWV3ID0gdGhpcy5nZXRSb290Q29udHJvbCgpIGFzIFZpZXc7XG5cdFx0bGV0IHJvb3RDb250cm9sbGVyOiBQYWdlQ29udHJvbGxlciB8IHVuZGVmaW5lZDtcblx0XHRpZiAocm9vdENvbnRyb2wgJiYgcm9vdENvbnRyb2wuZ2V0Q29udHJvbGxlcikge1xuXHRcdFx0cm9vdENvbnRyb2xsZXIgPSByb290Q29udHJvbC5nZXRDb250cm9sbGVyKCkgYXMgUGFnZUNvbnRyb2xsZXI7XG5cdFx0fVxuXHRcdHJldHVybiByb290Q29udHJvbGxlcjtcblx0fSxcblxuXHRvblBhZ2VSZWFkeTogZnVuY3Rpb24obVBhcmFtZXRlcnM6IGFueSkge1xuXHRcdGNvbnN0IHJvb3RDb250cm9sbGVyID0gdGhpcy5nZXRSb290Q29udHJvbGxlcigpO1xuXHRcdGlmIChyb290Q29udHJvbGxlciAmJiByb290Q29udHJvbGxlci5vblBhZ2VSZWFkeSkge1xuXHRcdFx0cm9vdENvbnRyb2xsZXIub25QYWdlUmVhZHkobVBhcmFtZXRlcnMpO1xuXHRcdH1cblx0fSxcblxuXHRnZXROYXZpZ2F0aW9uQ29uZmlndXJhdGlvbjogZnVuY3Rpb24odGhpczogVGVtcGxhdGVDb21wb25lbnRUeXBlLCBzVGFyZ2V0UGF0aDogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRjb25zdCBtTmF2aWdhdGlvbiA9IHRoaXMuZ2V0TmF2aWdhdGlvbigpO1xuXHRcdHJldHVybiBtTmF2aWdhdGlvbltzVGFyZ2V0UGF0aF07XG5cdH0sXG5cblx0Z2V0Vmlld0RhdGE6IGZ1bmN0aW9uKHRoaXM6IFRlbXBsYXRlQ29tcG9uZW50VHlwZSkge1xuXHRcdGNvbnN0IG1Qcm9wZXJ0aWVzID0gdGhpcy5nZXRNZXRhZGF0YSgpLmdldEFsbFByb3BlcnRpZXMoKTtcblx0XHRjb25zdCBvVmlld0RhdGEgPSBPYmplY3Qua2V5cyhtUHJvcGVydGllcykucmVkdWNlKChtVmlld0RhdGE6IGFueSwgc1Byb3BlcnR5TmFtZTogYW55KSA9PiB7XG5cdFx0XHRtVmlld0RhdGFbc1Byb3BlcnR5TmFtZV0gPSAobVByb3BlcnRpZXNbc1Byb3BlcnR5TmFtZV0gYXMgYW55KS5nZXQodGhpcyk7XG5cdFx0XHRyZXR1cm4gbVZpZXdEYXRhO1xuXHRcdH0sIHt9KTtcblxuXHRcdC8vIEFjY2VzcyB0aGUgaW50ZXJuYWwgX2lzRmNsRW5hYmxlZCB3aGljaCB3aWxsIGJlIHRoZXJlXG5cdFx0b1ZpZXdEYXRhLmZjbEVuYWJsZWQgPSB0aGlzLm9BcHBDb21wb25lbnQuX2lzRmNsRW5hYmxlZCgpO1xuXG5cdFx0cmV0dXJuIG9WaWV3RGF0YTtcblx0fSxcblxuXHRfZ2V0UGFnZVRpdGxlSW5mb3JtYXRpb246IGZ1bmN0aW9uKCkge1xuXHRcdGNvbnN0IHJvb3RDb250cm9sID0gdGhpcy5nZXRSb290Q29udHJvbCgpIGFzIFZpZXc7XG5cdFx0aWYgKHJvb3RDb250cm9sICYmIHJvb3RDb250cm9sLmdldENvbnRyb2xsZXIoKSAmJiAocm9vdENvbnRyb2wuZ2V0Q29udHJvbGxlcigpIGFzIGFueSkuX2dldFBhZ2VUaXRsZUluZm9ybWF0aW9uKSB7XG5cdFx0XHRyZXR1cm4gKHJvb3RDb250cm9sLmdldENvbnRyb2xsZXIoKSBhcyBhbnkpLl9nZXRQYWdlVGl0bGVJbmZvcm1hdGlvbigpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4ge307XG5cdFx0fVxuXHR9LFxuXG5cdGdldEV4dGVuc2lvbkFQSTogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuICgodGhpcy5nZXRSb290Q29udHJvbCgpIGFzIFZpZXcpLmdldENvbnRyb2xsZXIoKSBhcyBhbnkpLmdldEV4dGVuc2lvbkFQSSgpO1xuXHR9XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgKFRlbXBsYXRlQ29tcG9uZW50IGFzIGFueSkgYXMgVGVtcGxhdGVDb21wb25lbnRUeXBlO1xuIl19
@@ -0,0 +1,173 @@
1
+ import UIComponent from "sap/ui/core/UIComponent";
2
+ import CommonUtils from "sap/fe/core/CommonUtils";
3
+ import StateUtil from "sap/ui/mdc/p13n/StateUtil";
4
+ import ComponentContainer from "sap/ui/core/ComponentContainer";
5
+ import AppComponent from "sap/fe/core/AppComponent";
6
+ import View from "sap/ui/core/mvc/View";
7
+ import PageController from "sap/fe/core/PageController";
8
+
9
+ export type TemplateComponentType = UIComponent & {
10
+ oAppComponent: AppComponent;
11
+ getNavigation(): any;
12
+ getNavigationConfiguration(sNavigationName: string): any;
13
+ getBindingContextPattern(): any;
14
+ createDeferredContext(sPath: string, oListBinding: any, bActionCreate: boolean): any;
15
+ getEntitySet(): string;
16
+ getContextPath(): string;
17
+ getViewData(): any;
18
+ extend(sName: string, sExtension: any): any;
19
+ };
20
+ const TemplateComponent = UIComponent.extend("sap.fe.core.TemplateComponent", {
21
+ metadata: {
22
+ interfaces: ["sap.ui.core.IAsyncContentCreation"],
23
+ properties: {
24
+ /**
25
+ * Name of the OData entity set
26
+ */
27
+ entitySet: {
28
+ type: "string",
29
+ defaultValue: null
30
+ },
31
+ /**
32
+ * Context Path for rendering the template
33
+ */
34
+ contextPath: {
35
+ type: "string",
36
+ defaultValue: null
37
+ },
38
+ /**
39
+ * The pattern for the binding context to be create based on the parameters from the navigation
40
+ * If not provided we'll default to what was passed in the URL
41
+ */
42
+ bindingContextPattern: {
43
+ type: "string"
44
+ },
45
+
46
+ /**
47
+ * Map of used OData navigations and its routing targets
48
+ */
49
+ navigation: {
50
+ type: "object"
51
+ },
52
+ /**
53
+ * Enhance the i18n bundle used for this page with one or more app specific i18n resource bundles or resource models
54
+ * or a combination of both. The last resource bundle/model is given highest priority
55
+ */
56
+ enhanceI18n: {
57
+ type: "string[]"
58
+ },
59
+ /**
60
+ * Define control related configuration settings
61
+ */
62
+ controlConfiguration: {
63
+ type: "object"
64
+ },
65
+ /**
66
+ * Adjusts the template content
67
+ */
68
+ content: {
69
+ type: "object"
70
+ },
71
+ /**
72
+ * Whether or not you can reach this page directly through semantic bookmarks
73
+ */
74
+ allowDeepLinking: {
75
+ type: "boolean"
76
+ },
77
+ /**
78
+ * Defines the context path on the component that is refreshed when the app is restored using keep alive mode
79
+ */
80
+ refreshStrategyOnAppRestore: {
81
+ type: "object"
82
+ }
83
+ },
84
+ events: {
85
+ containerDefined: {
86
+ container: { type: "sap.ui.base.ManagedObject" }
87
+ },
88
+ heroesBatchReceived: {
89
+ element: { type: "sap.ui.base.ManagedObject" }
90
+ },
91
+ workersBatchReceived: {
92
+ element: { type: "sap.ui.base.ManagedObject" }
93
+ }
94
+ },
95
+ library: "sap.fe.core"
96
+ },
97
+
98
+ setContainer: function(oContainer: ComponentContainer): UIComponent {
99
+ const setContainerOutput = UIComponent.prototype.setContainer.apply(this, [oContainer]);
100
+ (this as any).fireContainerDefined({ container: oContainer });
101
+ return setContainerOutput;
102
+ },
103
+
104
+ init: function(this: TemplateComponentType) {
105
+ this.oAppComponent = CommonUtils.getAppComponent(this);
106
+ UIComponent.prototype.init.apply(this);
107
+ const oStateChangedHandler = function(oEvent: any) {
108
+ const oControl = oEvent.getParameter("control");
109
+ if (oControl.isA("sap.ui.mdc.Table") || oControl.isA("sap.ui.mdc.FilterBar")) {
110
+ const oMacroAPI = oControl.getParent();
111
+ oMacroAPI.fireStateChanged();
112
+ }
113
+ };
114
+ StateUtil.detachStateChange(oStateChangedHandler);
115
+ StateUtil.attachStateChange(oStateChangedHandler);
116
+ },
117
+
118
+ // This method is called by UI5 core to access to the component containing the customizing configuration.
119
+ // as controller extensions are defined in the manifest for the app component and not for the
120
+ // template component we return the app component.
121
+ getExtensionComponent: function(this: TemplateComponentType): AppComponent {
122
+ return this.oAppComponent;
123
+ },
124
+
125
+ getRootController(): any | undefined {
126
+ const rootControl: View = this.getRootControl() as View;
127
+ let rootController: PageController | undefined;
128
+ if (rootControl && rootControl.getController) {
129
+ rootController = rootControl.getController() as PageController;
130
+ }
131
+ return rootController;
132
+ },
133
+
134
+ onPageReady: function(mParameters: any) {
135
+ const rootController = this.getRootController();
136
+ if (rootController && rootController.onPageReady) {
137
+ rootController.onPageReady(mParameters);
138
+ }
139
+ },
140
+
141
+ getNavigationConfiguration: function(this: TemplateComponentType, sTargetPath: string): string {
142
+ const mNavigation = this.getNavigation();
143
+ return mNavigation[sTargetPath];
144
+ },
145
+
146
+ getViewData: function(this: TemplateComponentType) {
147
+ const mProperties = this.getMetadata().getAllProperties();
148
+ const oViewData = Object.keys(mProperties).reduce((mViewData: any, sPropertyName: any) => {
149
+ mViewData[sPropertyName] = (mProperties[sPropertyName] as any).get(this);
150
+ return mViewData;
151
+ }, {});
152
+
153
+ // Access the internal _isFclEnabled which will be there
154
+ oViewData.fclEnabled = this.oAppComponent._isFclEnabled();
155
+
156
+ return oViewData;
157
+ },
158
+
159
+ _getPageTitleInformation: function() {
160
+ const rootControl = this.getRootControl() as View;
161
+ if (rootControl && rootControl.getController() && (rootControl.getController() as any)._getPageTitleInformation) {
162
+ return (rootControl.getController() as any)._getPageTitleInformation();
163
+ } else {
164
+ return {};
165
+ }
166
+ },
167
+
168
+ getExtensionAPI: function() {
169
+ return ((this.getRootControl() as View).getController() as any).getExtensionAPI();
170
+ }
171
+ });
172
+
173
+ export default (TemplateComponent as any) as TemplateComponentType;