@sapui5/sap.fe.core 1.100.0 → 1.102.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 (295) hide show
  1. package/package.json +4 -4
  2. package/src/sap/fe/core/.library +2 -3
  3. package/src/sap/fe/core/AppComponent.js +23 -30
  4. package/src/sap/fe/core/AppComponent.ts +35 -40
  5. package/src/sap/fe/core/AppStateHandler.js +8 -8
  6. package/src/sap/fe/core/AppStateHandler.ts +11 -11
  7. package/src/sap/fe/core/BaseController.js +9 -9
  8. package/src/sap/fe/core/BaseController.ts +3 -4
  9. package/src/sap/fe/core/CommonUtils.js +122 -101
  10. package/src/sap/fe/core/CommonUtils.ts +239 -193
  11. package/src/sap/fe/core/ExtensionAPI.js +12 -13
  12. package/src/sap/fe/core/ExtensionAPI.ts +21 -31
  13. package/src/sap/fe/core/PageController.js +19 -13
  14. package/src/sap/fe/core/PageController.ts +40 -34
  15. package/src/sap/fe/core/TemplateComponent.js +198 -123
  16. package/src/sap/fe/core/TemplateComponent.ts +109 -121
  17. package/src/sap/fe/core/TemplateModel.js +7 -9
  18. package/src/sap/fe/core/TemplateModel.ts +3 -3
  19. package/src/sap/fe/core/buildingBlocks/AttributeModel.js +60 -0
  20. package/src/sap/fe/core/buildingBlocks/AttributeModel.ts +37 -0
  21. package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +165 -0
  22. package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +178 -0
  23. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js +935 -0
  24. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.ts +837 -0
  25. package/src/sap/fe/core/buildingBlocks/TraceInfo.js +436 -0
  26. package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +431 -0
  27. package/src/sap/fe/core/{BusyLocker.js → controllerextensions/BusyLocker.js} +1 -1
  28. package/src/sap/fe/core/{BusyLocker.ts → controllerextensions/BusyLocker.ts} +7 -7
  29. package/src/sap/fe/core/controllerextensions/EditFlow.js +660 -288
  30. package/src/sap/fe/core/controllerextensions/EditFlow.ts +513 -331
  31. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +11 -11
  32. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +6 -7
  33. package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +43 -25
  34. package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +132 -103
  35. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +16 -16
  36. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +64 -55
  37. package/src/sap/fe/core/controllerextensions/InternalRouting.js +166 -99
  38. package/src/sap/fe/core/controllerextensions/InternalRouting.ts +187 -149
  39. package/src/sap/fe/core/controllerextensions/KPIManagement.js +14 -14
  40. package/src/sap/fe/core/controllerextensions/KPIManagement.ts +12 -11
  41. package/src/sap/fe/core/controllerextensions/MassEdit.js +13 -12
  42. package/src/sap/fe/core/controllerextensions/MassEdit.ts +22 -22
  43. package/src/sap/fe/core/controllerextensions/MessageHandler.js +14 -26
  44. package/src/sap/fe/core/controllerextensions/MessageHandler.ts +20 -30
  45. package/src/sap/fe/core/controllerextensions/PageReady.js +25 -23
  46. package/src/sap/fe/core/controllerextensions/PageReady.ts +49 -47
  47. package/src/sap/fe/core/controllerextensions/Paginator.js +24 -15
  48. package/src/sap/fe/core/controllerextensions/Paginator.ts +35 -20
  49. package/src/sap/fe/core/controllerextensions/Placeholder.js +10 -10
  50. package/src/sap/fe/core/controllerextensions/Placeholder.ts +12 -14
  51. package/src/sap/fe/core/controllerextensions/Routing.js +11 -11
  52. package/src/sap/fe/core/controllerextensions/Routing.ts +12 -13
  53. package/src/sap/fe/core/controllerextensions/Share.js +34 -16
  54. package/src/sap/fe/core/controllerextensions/Share.ts +50 -32
  55. package/src/sap/fe/core/controllerextensions/SideEffects.js +15 -15
  56. package/src/sap/fe/core/controllerextensions/SideEffects.ts +64 -65
  57. package/src/sap/fe/core/controllerextensions/ViewState.js +27 -31
  58. package/src/sap/fe/core/controllerextensions/ViewState.ts +103 -102
  59. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +105 -0
  60. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +98 -0
  61. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js +360 -0
  62. package/src/sap/fe/core/{actions → controllerextensions}/collaboration/ActivitySync.ts +90 -132
  63. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +146 -0
  64. package/src/sap/fe/core/{actions → controllerextensions}/collaboration/CollaborationCommon.ts +18 -8
  65. package/src/sap/fe/core/controllerextensions/collaboration/Manage.js +264 -0
  66. package/src/sap/fe/core/{actions → controllerextensions}/collaboration/Manage.ts +35 -33
  67. package/src/sap/fe/core/controllerextensions/collaboration/ManageDialog.fragment.xml +100 -0
  68. package/src/sap/fe/core/{actions → controllerextensions}/collaboration/UserDetails.fragment.xml +5 -7
  69. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +1584 -0
  70. package/src/sap/fe/core/{TransactionHelper.ts → controllerextensions/editFlow/TransactionHelper.ts} +190 -159
  71. package/src/sap/fe/core/controllerextensions/editFlow/draft.js +780 -0
  72. package/src/sap/fe/core/{actions → controllerextensions/editFlow}/draft.ts +329 -76
  73. package/src/sap/fe/core/controllerextensions/editFlow/operations.js +1149 -0
  74. package/src/sap/fe/core/{actions → controllerextensions/editFlow}/operations.ts +169 -97
  75. package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +190 -0
  76. package/src/sap/fe/core/{actions → controllerextensions/editFlow}/sticky.ts +76 -12
  77. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +592 -0
  78. package/src/sap/fe/core/{actions → controllerextensions/messageHandler}/messageHandling.ts +83 -60
  79. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +940 -0
  80. package/src/sap/fe/core/{RouterProxy.ts → controllerextensions/routing/RouterProxy.ts} +52 -36
  81. package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +21 -18
  82. package/src/sap/fe/core/controls/Any.js +28 -0
  83. package/src/sap/fe/core/controls/Any.ts +30 -0
  84. package/src/sap/fe/core/controls/CommandExecution.js +50 -16
  85. package/src/sap/fe/core/controls/CommandExecution.ts +31 -22
  86. package/src/sap/fe/core/controls/ConditionalWrapper.js +136 -65
  87. package/src/sap/fe/core/controls/ConditionalWrapper.ts +49 -58
  88. package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js +371 -0
  89. package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.ts +282 -0
  90. package/src/sap/fe/core/controls/CustomQuickViewPage.js +74 -36
  91. package/src/sap/fe/core/controls/CustomQuickViewPage.ts +23 -32
  92. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossDraft.fragment.xml +52 -5
  93. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +127 -67
  94. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +127 -67
  95. package/src/sap/fe/core/controls/FieldWrapper.js +171 -87
  96. package/src/sap/fe/core/controls/FieldWrapper.ts +69 -80
  97. package/src/sap/fe/core/controls/FileWrapper.js +360 -0
  98. package/src/sap/fe/core/controls/FileWrapper.ts +202 -0
  99. package/src/sap/fe/core/controls/FilterBar.js +154 -119
  100. package/src/sap/fe/core/controls/FilterBar.ts +128 -123
  101. package/src/sap/fe/core/controls/FormElementWrapper.js +102 -37
  102. package/src/sap/fe/core/controls/FormElementWrapper.ts +43 -35
  103. package/src/sap/fe/core/controls/MassEditSelect.js +33 -0
  104. package/src/sap/fe/core/controls/MassEditSelect.ts +45 -0
  105. package/src/sap/fe/core/controls/filterbar/FilterContainer.js +111 -89
  106. package/src/sap/fe/core/controls/filterbar/FilterContainer.ts +86 -82
  107. package/src/sap/fe/core/controls/filterbar/VisualFilter.js +242 -193
  108. package/src/sap/fe/core/controls/filterbar/VisualFilter.ts +211 -204
  109. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +152 -116
  110. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.ts +105 -105
  111. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +2 -2
  112. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +23 -28
  113. package/src/sap/fe/core/controls/massEdit/MassEditDialog.fragment.xml +41 -81
  114. package/src/sap/fe/core/controls/massEdit/MassEditField.fragment.xml +107 -0
  115. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +550 -35
  116. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +604 -35
  117. package/src/sap/fe/core/converters/ManifestSettings.js +3 -1
  118. package/src/sap/fe/core/converters/ManifestSettings.ts +9 -2
  119. package/src/sap/fe/core/converters/MetaModelConverter.js +11 -40
  120. package/src/sap/fe/core/converters/MetaModelConverter.ts +56 -84
  121. package/src/sap/fe/core/converters/annotations/DataField.js +20 -5
  122. package/src/sap/fe/core/converters/annotations/DataField.ts +27 -6
  123. package/src/sap/fe/core/converters/controls/Common/Action.js +14 -21
  124. package/src/sap/fe/core/converters/controls/Common/Action.ts +23 -28
  125. package/src/sap/fe/core/converters/controls/Common/Chart.js +17 -10
  126. package/src/sap/fe/core/converters/controls/Common/Chart.ts +20 -14
  127. package/src/sap/fe/core/converters/controls/Common/Form.js +16 -18
  128. package/src/sap/fe/core/converters/controls/Common/Form.ts +20 -20
  129. package/src/sap/fe/core/converters/controls/Common/KPI.js +1 -1
  130. package/src/sap/fe/core/converters/controls/Common/KPI.ts +2 -3
  131. package/src/sap/fe/core/converters/controls/Common/Table.js +389 -173
  132. package/src/sap/fe/core/converters/controls/Common/Table.ts +440 -244
  133. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +26 -16
  134. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +27 -19
  135. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +78 -47
  136. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +146 -107
  137. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +6 -6
  138. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +20 -18
  139. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +30 -25
  140. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +39 -34
  141. package/src/sap/fe/core/converters/helpers/Aggregation.js +10 -2
  142. package/src/sap/fe/core/converters/helpers/Aggregation.ts +18 -13
  143. package/src/sap/fe/core/converters/helpers/BindingHelper.js +3 -2
  144. package/src/sap/fe/core/converters/helpers/BindingHelper.ts +6 -5
  145. package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +1 -1
  146. package/src/sap/fe/core/converters/objectPage/FormMenuActions.ts +0 -4
  147. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +27 -24
  148. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +49 -40
  149. package/src/sap/fe/core/converters/templates/ListReportConverter.js +33 -22
  150. package/src/sap/fe/core/converters/templates/ListReportConverter.ts +77 -62
  151. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +28 -28
  152. package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +38 -45
  153. package/src/sap/fe/core/designtime/AppComponent.designtime.js +3 -3
  154. package/src/sap/fe/core/designtime/AppComponent.designtime.ts +8 -6
  155. package/src/sap/fe/core/formatters/KPIFormatter.js +3 -12
  156. package/src/sap/fe/core/formatters/KPIFormatter.ts +3 -2
  157. package/src/sap/fe/core/formatters/TableFormatter.js +74 -13
  158. package/src/sap/fe/core/formatters/TableFormatter.ts +71 -16
  159. package/src/sap/fe/core/formatters/ValueFormatter.js +4 -4
  160. package/src/sap/fe/core/formatters/ValueFormatter.ts +4 -7
  161. package/src/sap/fe/core/fpm/Component.js +46 -17
  162. package/src/sap/fe/core/fpm/Component.ts +11 -16
  163. package/src/sap/fe/core/helpers/AppStartupHelper.js +4 -4
  164. package/src/sap/fe/core/helpers/AppStartupHelper.ts +3 -3
  165. package/src/sap/fe/core/helpers/BindingExpression.js +10 -7
  166. package/src/sap/fe/core/helpers/BindingExpression.ts +37 -35
  167. package/src/sap/fe/core/helpers/ClassSupport.js +273 -256
  168. package/src/sap/fe/core/helpers/ClassSupport.ts +315 -237
  169. package/src/sap/fe/core/helpers/FPMHelper.js +3 -2
  170. package/src/sap/fe/core/helpers/FPMHelper.ts +9 -8
  171. package/src/sap/fe/core/helpers/MassEditHelper.js +522 -147
  172. package/src/sap/fe/core/helpers/MassEditHelper.ts +563 -236
  173. package/src/sap/fe/core/helpers/ModelHelper.js +29 -1
  174. package/src/sap/fe/core/helpers/ModelHelper.ts +39 -26
  175. package/src/sap/fe/core/helpers/PasteHelper.js +4 -4
  176. package/src/sap/fe/core/helpers/PasteHelper.ts +4 -3
  177. package/src/sap/fe/core/helpers/SemanticDateOperators.js +3 -3
  178. package/src/sap/fe/core/helpers/SemanticDateOperators.ts +3 -1
  179. package/src/sap/fe/core/helpers/SemanticKeyHelper.js +1 -1
  180. package/src/sap/fe/core/helpers/SemanticKeyHelper.ts +1 -1
  181. package/src/sap/fe/core/helpers/StableIdHelper.js +5 -7
  182. package/src/sap/fe/core/helpers/StableIdHelper.ts +8 -8
  183. package/src/sap/fe/core/{Synchronization.js → helpers/Synchronization.js} +1 -1
  184. package/src/sap/fe/core/{Synchronization.ts → helpers/Synchronization.ts} +1 -1
  185. package/src/sap/fe/core/jsx-runtime/jsx.js +35 -5
  186. package/src/sap/fe/core/jsx-runtime/jsx.ts +22 -8
  187. package/src/sap/fe/core/library.js +13 -5
  188. package/src/sap/fe/core/library.ts +26 -17
  189. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +1 -1
  190. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +0 -3
  191. package/src/sap/fe/core/messagebundle.properties +135 -180
  192. package/src/sap/fe/core/messagebundle_ar.properties +31 -64
  193. package/src/sap/fe/core/messagebundle_bg.properties +31 -64
  194. package/src/sap/fe/core/messagebundle_ca.properties +31 -64
  195. package/src/sap/fe/core/messagebundle_cs.properties +31 -64
  196. package/src/sap/fe/core/messagebundle_cy.properties +32 -65
  197. package/src/sap/fe/core/messagebundle_da.properties +31 -64
  198. package/src/sap/fe/core/messagebundle_de.properties +29 -62
  199. package/src/sap/fe/core/messagebundle_el.properties +32 -65
  200. package/src/sap/fe/core/messagebundle_en.properties +32 -65
  201. package/src/sap/fe/core/messagebundle_en_GB.properties +29 -62
  202. package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +41 -74
  203. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +32 -65
  204. package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +20 -6
  205. package/src/sap/fe/core/messagebundle_es.properties +31 -64
  206. package/src/sap/fe/core/messagebundle_es_MX.properties +31 -64
  207. package/src/sap/fe/core/messagebundle_et.properties +31 -64
  208. package/src/sap/fe/core/messagebundle_fi.properties +29 -62
  209. package/src/sap/fe/core/messagebundle_fr.properties +36 -69
  210. package/src/sap/fe/core/messagebundle_fr_CA.properties +33 -66
  211. package/src/sap/fe/core/messagebundle_hi.properties +29 -62
  212. package/src/sap/fe/core/messagebundle_hr.properties +32 -65
  213. package/src/sap/fe/core/messagebundle_hu.properties +30 -63
  214. package/src/sap/fe/core/messagebundle_id.properties +32 -65
  215. package/src/sap/fe/core/messagebundle_it.properties +31 -64
  216. package/src/sap/fe/core/messagebundle_iw.properties +31 -64
  217. package/src/sap/fe/core/messagebundle_ja.properties +29 -62
  218. package/src/sap/fe/core/messagebundle_kk.properties +31 -64
  219. package/src/sap/fe/core/messagebundle_ko.properties +31 -64
  220. package/src/sap/fe/core/messagebundle_lt.properties +31 -64
  221. package/src/sap/fe/core/messagebundle_lv.properties +32 -65
  222. package/src/sap/fe/core/messagebundle_ms.properties +31 -64
  223. package/src/sap/fe/core/messagebundle_nl.properties +31 -64
  224. package/src/sap/fe/core/messagebundle_no.properties +31 -64
  225. package/src/sap/fe/core/messagebundle_pl.properties +34 -67
  226. package/src/sap/fe/core/messagebundle_pt.properties +32 -65
  227. package/src/sap/fe/core/messagebundle_pt_PT.properties +31 -64
  228. package/src/sap/fe/core/messagebundle_ro.properties +33 -66
  229. package/src/sap/fe/core/messagebundle_ru.properties +33 -66
  230. package/src/sap/fe/core/messagebundle_sh.properties +31 -64
  231. package/src/sap/fe/core/messagebundle_sk.properties +31 -64
  232. package/src/sap/fe/core/messagebundle_sl.properties +29 -62
  233. package/src/sap/fe/core/messagebundle_sv.properties +30 -63
  234. package/src/sap/fe/core/messagebundle_th.properties +31 -64
  235. package/src/sap/fe/core/messagebundle_tr.properties +31 -64
  236. package/src/sap/fe/core/messagebundle_uk.properties +32 -65
  237. package/src/sap/fe/core/messagebundle_vi.properties +31 -64
  238. package/src/sap/fe/core/messagebundle_zh_CN.properties +32 -65
  239. package/src/sap/fe/core/messagebundle_zh_TW.properties +34 -67
  240. package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +4 -4
  241. package/src/sap/fe/core/services/AsyncComponentServiceFactory.ts +1 -1
  242. package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +5 -5
  243. package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +1 -2
  244. package/src/sap/fe/core/services/EnvironmentServiceFactory.js +11 -8
  245. package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +15 -13
  246. package/src/sap/fe/core/services/NavigationServiceFactory.js +5 -5
  247. package/src/sap/fe/core/services/NavigationServiceFactory.ts +9 -5
  248. package/src/sap/fe/core/services/ResourceModelServiceFactory.js +4 -4
  249. package/src/sap/fe/core/services/ResourceModelServiceFactory.ts +1 -1
  250. package/src/sap/fe/core/services/RoutingServiceFactory.js +105 -66
  251. package/src/sap/fe/core/services/RoutingServiceFactory.ts +59 -49
  252. package/src/sap/fe/core/services/ShellServicesFactory.js +104 -29
  253. package/src/sap/fe/core/services/ShellServicesFactory.ts +64 -30
  254. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +4 -4
  255. package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +1 -1
  256. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +11 -10
  257. package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +38 -51
  258. package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +43 -5
  259. package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.ts +6 -3
  260. package/src/sap/fe/core/support/CommonHelper.js +1 -1
  261. package/src/sap/fe/core/support/CommonHelper.ts +0 -3
  262. package/src/sap/fe/core/templating/DataModelPathHelper.js +2 -9
  263. package/src/sap/fe/core/templating/DataModelPathHelper.ts +32 -38
  264. package/src/sap/fe/core/templating/DisplayModeFormatter.js +23 -3
  265. package/src/sap/fe/core/templating/DisplayModeFormatter.ts +27 -6
  266. package/src/sap/fe/core/templating/EntitySetHelper.js +1 -9
  267. package/src/sap/fe/core/templating/EntitySetHelper.ts +11 -13
  268. package/src/sap/fe/core/templating/FilterHelper.js +4 -4
  269. package/src/sap/fe/core/templating/FilterHelper.ts +6 -5
  270. package/src/sap/fe/core/templating/PropertyHelper.js +70 -33
  271. package/src/sap/fe/core/templating/PropertyHelper.ts +49 -27
  272. package/src/sap/fe/core/templating/UIFormatters.js +133 -22
  273. package/src/sap/fe/core/templating/UIFormatters.ts +144 -50
  274. package/src/sap/fe/core/type/DateTimeWithTimezone.js +47 -0
  275. package/src/sap/fe/core/type/DateTimeWithTimezone.ts +23 -0
  276. package/src/sap/fe/core/type/Email.js +26 -8
  277. package/src/sap/fe/core/type/Email.ts +8 -7
  278. package/src/sap/fe/core/AnnotationHelper.js +0 -312
  279. package/src/sap/fe/core/AnnotationHelper.ts +0 -315
  280. package/src/sap/fe/core/RouterProxy.js +0 -926
  281. package/src/sap/fe/core/TransactionHelper.js +0 -1562
  282. package/src/sap/fe/core/actions/collaboration/ActivitySync.js +0 -392
  283. package/src/sap/fe/core/actions/collaboration/CollaborationCommon.js +0 -136
  284. package/src/sap/fe/core/actions/collaboration/Manage.js +0 -262
  285. package/src/sap/fe/core/actions/collaboration/ManageDialog.fragment.xml +0 -103
  286. package/src/sap/fe/core/actions/draft.js +0 -523
  287. package/src/sap/fe/core/actions/messageHandling.js +0 -567
  288. package/src/sap/fe/core/actions/nonDraft.js +0 -20
  289. package/src/sap/fe/core/actions/nonDraft.ts +0 -12
  290. package/src/sap/fe/core/actions/operations.js +0 -1096
  291. package/src/sap/fe/core/actions/sticky.js +0 -130
  292. package/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.js +0 -78
  293. package/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.ts +0 -65
  294. package/src/sap/fe/core/formatters/CriticalityFormatter.js +0 -77
  295. package/src/sap/fe/core/formatters/CriticalityFormatter.ts +0 -58
@@ -0,0 +1,360 @@
1
+ /*!
2
+ * SAP UI development toolkit for HTML5 (SAPUI5)
3
+ * (c) Copyright 2009-2021 SAP SE. All rights reserved
4
+ */
5
+ sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/core/helpers/ClassSupport", "sap/fe/macros/ResourceModel", "sap/m/BusyDialog", "./FieldWrapper"], function (CommonUtils, ClassSupport, ResourceModel, BusyDialog, FieldWrapper) {
6
+ "use strict";
7
+
8
+ var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _dec12, _dec13, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9, _descriptor10, _descriptor11, _descriptor12;
9
+
10
+ var property = ClassSupport.property;
11
+ var defineUI5Class = ClassSupport.defineUI5Class;
12
+ var aggregation = ClassSupport.aggregation;
13
+
14
+ function _initializerDefineProperty(target, property, descriptor, context) { if (!descriptor) return; Object.defineProperty(target, property, { enumerable: descriptor.enumerable, configurable: descriptor.configurable, writable: descriptor.writable, value: descriptor.initializer ? descriptor.initializer.call(context) : void 0 }); }
15
+
16
+ function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
17
+
18
+ function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
19
+
20
+ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
21
+
22
+ function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { var desc = {}; Object.keys(descriptor).forEach(function (key) { desc[key] = descriptor[key]; }); desc.enumerable = !!desc.enumerable; desc.configurable = !!desc.configurable; if ('value' in desc || desc.initializer) { desc.writable = true; } desc = decorators.slice().reverse().reduce(function (desc, decorator) { return decorator(target, property, desc) || desc; }, desc); if (context && desc.initializer !== void 0) { desc.value = desc.initializer ? desc.initializer.call(context) : void 0; desc.initializer = undefined; } if (desc.initializer === void 0) { Object.defineProperty(target, property, desc); desc = null; } return desc; }
23
+
24
+ function _initializerWarningHelper(descriptor, context) { throw new Error('Decorating class property failed. Please ensure that ' + 'proposal-class-properties is enabled and runs after the decorators transform.'); }
25
+
26
+ var FileWrapper = (_dec = defineUI5Class("sap.fe.core.controls.FileWrapper"), _dec2 = property({
27
+ type: "sap.ui.core.URI"
28
+ }), _dec3 = property({
29
+ type: "sap.ui.model.Context"
30
+ }), _dec4 = property({
31
+ type: "sap.ui.model.Context"
32
+ }), _dec5 = property({
33
+ type: "string"
34
+ }), _dec6 = property({
35
+ type: "string"
36
+ }), _dec7 = property({
37
+ type: "string"
38
+ }), _dec8 = aggregation({
39
+ type: "sap.m.Avatar",
40
+ multiple: false
41
+ }), _dec9 = aggregation({
42
+ type: "sap.ui.core.Icon",
43
+ multiple: false
44
+ }), _dec10 = aggregation({
45
+ type: "sap.m.Link",
46
+ multiple: false
47
+ }), _dec11 = aggregation({
48
+ type: "sap.m.Text",
49
+ multiple: false
50
+ }), _dec12 = aggregation({
51
+ type: "sap.ui.unified.FileUploader",
52
+ multiple: false
53
+ }), _dec13 = aggregation({
54
+ type: "sap.m.Button",
55
+ multiple: false
56
+ }), _dec(_class = (_class2 = /*#__PURE__*/function (_FieldWrapper) {
57
+ _inheritsLoose(FileWrapper, _FieldWrapper);
58
+
59
+ function FileWrapper() {
60
+ var _this;
61
+
62
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
63
+ args[_key] = arguments[_key];
64
+ }
65
+
66
+ _this = _FieldWrapper.call.apply(_FieldWrapper, [this].concat(args)) || this;
67
+
68
+ _initializerDefineProperty(_this, "uploadUrl", _descriptor, _assertThisInitialized(_this));
69
+
70
+ _initializerDefineProperty(_this, "parentEntitySet", _descriptor2, _assertThisInitialized(_this));
71
+
72
+ _initializerDefineProperty(_this, "parentEntityType", _descriptor3, _assertThisInitialized(_this));
73
+
74
+ _initializerDefineProperty(_this, "propertyPath", _descriptor4, _assertThisInitialized(_this));
75
+
76
+ _initializerDefineProperty(_this, "filename", _descriptor5, _assertThisInitialized(_this));
77
+
78
+ _initializerDefineProperty(_this, "mediaType", _descriptor6, _assertThisInitialized(_this));
79
+
80
+ _initializerDefineProperty(_this, "avatar", _descriptor7, _assertThisInitialized(_this));
81
+
82
+ _initializerDefineProperty(_this, "icon", _descriptor8, _assertThisInitialized(_this));
83
+
84
+ _initializerDefineProperty(_this, "link", _descriptor9, _assertThisInitialized(_this));
85
+
86
+ _initializerDefineProperty(_this, "text", _descriptor10, _assertThisInitialized(_this));
87
+
88
+ _initializerDefineProperty(_this, "fileUploader", _descriptor11, _assertThisInitialized(_this));
89
+
90
+ _initializerDefineProperty(_this, "deleteButton", _descriptor12, _assertThisInitialized(_this));
91
+
92
+ _this._busy = false;
93
+ return _this;
94
+ }
95
+
96
+ var _proto = FileWrapper.prototype;
97
+
98
+ _proto.getAccessibilityInfo = function getAccessibilityInfo() {
99
+ var accInfo = [];
100
+
101
+ if (this.avatar) {
102
+ accInfo.push(this.avatar);
103
+ }
104
+
105
+ if (this.icon) {
106
+ accInfo.push(this.icon);
107
+ }
108
+
109
+ if (this.link) {
110
+ accInfo.push(this.link);
111
+ }
112
+
113
+ if (this.text) {
114
+ accInfo.push(this.text);
115
+ }
116
+
117
+ if (this.fileUploader) {
118
+ accInfo.push(this.fileUploader);
119
+ }
120
+
121
+ if (this.deleteButton) {
122
+ accInfo.push(this.deleteButton);
123
+ }
124
+
125
+ return {
126
+ children: accInfo
127
+ };
128
+ };
129
+
130
+ _proto.onBeforeRendering = function onBeforeRendering() {
131
+ this._setAriaLabels();
132
+
133
+ this._addSideEffects();
134
+ };
135
+
136
+ _proto._setAriaLabels = function _setAriaLabels() {
137
+ this._setAriaLabelledBy(this.avatar);
138
+
139
+ this._setAriaLabelledBy(this.icon);
140
+
141
+ this._setAriaLabelledBy(this.link);
142
+
143
+ this._setAriaLabelledBy(this.text);
144
+
145
+ this._setAriaLabelledBy(this.fileUploader);
146
+
147
+ this._setAriaLabelledBy(this.deleteButton);
148
+ };
149
+
150
+ _proto._addSideEffects = function _addSideEffects() {
151
+ // add SideEffects for stream content, filename and mediatype
152
+ var sourceProperty = "",
153
+ sourcePath = "",
154
+ path = "",
155
+ parentEntitySetWithSlash = "";
156
+ var navigationProperties = [];
157
+ this.getCustomData().forEach(function (item) {
158
+ if (item.getProperty("key") === "sourcePath") {
159
+ sourcePath = item.getProperty("value");
160
+ }
161
+ });
162
+ parentEntitySetWithSlash = "/" + this.parentEntitySet + "/";
163
+ sourceProperty = sourcePath.substring(sourcePath.indexOf(parentEntitySetWithSlash) + parentEntitySetWithSlash.length, sourcePath.length);
164
+ path = sourceProperty.replace(this.propertyPath, "");
165
+ navigationProperties.push({
166
+ "$NavigationPropertyPath": sourceProperty
167
+ });
168
+
169
+ if (this.filename) {
170
+ navigationProperties.push({
171
+ "$NavigationPropertyPath": path + this.filename
172
+ });
173
+ }
174
+
175
+ if (this.mediaType) {
176
+ navigationProperties.push({
177
+ "$NavigationPropertyPath": path + this.mediaType
178
+ });
179
+ }
180
+
181
+ this._getSideEffectController().addControlSideEffects(this.parentEntityType, {
182
+ SourceProperties: sourceProperty,
183
+ TargetEntities: navigationProperties,
184
+ sourceControlId: this.getId()
185
+ });
186
+ };
187
+
188
+ _proto._getSideEffectController = function _getSideEffectController() {
189
+ var controller = this._getViewController();
190
+
191
+ return controller ? controller._sideEffects : undefined;
192
+ };
193
+
194
+ _proto._getViewController = function _getViewController() {
195
+ var view = CommonUtils.getTargetView(this);
196
+ return view && view.getController();
197
+ };
198
+
199
+ _proto.getUploadUrl = function getUploadUrl() {
200
+ // set upload url as canonical url for NavigationProperties
201
+ // this is a workaround as some backends cannot resolve NavigationsProperties for stream types
202
+ var context = this.getBindingContext();
203
+ return context ? this.uploadUrl.replace(context.getPath(), context.getCanonicalPath()) : "";
204
+ };
205
+
206
+ _proto.setUIBusy = function setUIBusy(busy) {
207
+ // eslint-disable-next-line @typescript-eslint/no-this-alias
208
+ var that = this;
209
+ this._busy = busy;
210
+
211
+ if (busy) {
212
+ if (!this.busyDialog) {
213
+ this.busyDialog = new BusyDialog({
214
+ text: ResourceModel.getText("M_FILEWRAPPER_BUSY_DIALOG_TITLE"),
215
+ showCancelButton: false
216
+ });
217
+ }
218
+
219
+ setTimeout(function () {
220
+ if (that._busy) {
221
+ var _that$busyDialog;
222
+
223
+ (_that$busyDialog = that.busyDialog) === null || _that$busyDialog === void 0 ? void 0 : _that$busyDialog.open();
224
+ }
225
+ }, 1000);
226
+ } else {
227
+ var _this$busyDialog;
228
+
229
+ (_this$busyDialog = this.busyDialog) === null || _this$busyDialog === void 0 ? void 0 : _this$busyDialog.close(false);
230
+ }
231
+ };
232
+
233
+ FileWrapper.render = function render(renderManager, fileWrapper) {
234
+ renderManager.openStart("div", fileWrapper); // FileWrapper control div
235
+
236
+ renderManager.style("width", fileWrapper.width);
237
+ renderManager.openEnd(); // Outer Box
238
+
239
+ renderManager.openStart("div"); // div for all controls
240
+
241
+ renderManager.style("display", "flex");
242
+ renderManager.style("box-sizing", "border-box");
243
+ renderManager.style("justify-content", "space-between");
244
+ renderManager.style("align-items", "center");
245
+ renderManager.style("flex-wrap", "wrap");
246
+ renderManager.style("align-content", "stretch");
247
+ renderManager.style("width", "100%");
248
+ renderManager.openEnd(); // Display Mode
249
+
250
+ renderManager.openStart("div"); // div for controls shown in Display mode
251
+
252
+ renderManager.style("display", "flex");
253
+ renderManager.style("align-items", "center");
254
+ renderManager.openEnd();
255
+
256
+ if (fileWrapper.avatar) {
257
+ renderManager.renderControl(fileWrapper.avatar); // render the Avatar Control
258
+ } else {
259
+ renderManager.renderControl(fileWrapper.icon); // render the Icon Control
260
+
261
+ renderManager.renderControl(fileWrapper.link); // render the Link Control
262
+
263
+ renderManager.renderControl(fileWrapper.text); // render the Text Control for empty file indication
264
+ }
265
+
266
+ renderManager.close("div"); // div for controls shown in Display mode
267
+ // Additional content for Edit Mode
268
+
269
+ renderManager.openStart("div"); // div for controls shown in Display + Edit mode
270
+
271
+ renderManager.style("display", "flex");
272
+ renderManager.style("align-items", "center");
273
+ renderManager.openEnd();
274
+ renderManager.renderControl(fileWrapper.fileUploader); // render the FileUploader Control
275
+
276
+ renderManager.renderControl(fileWrapper.deleteButton); // render the Delete Button Control
277
+
278
+ renderManager.close("div"); // div for controls shown in Display + Edit mode
279
+
280
+ renderManager.close("div"); // div for all controls
281
+
282
+ renderManager.close("div"); // end of the complete Control
283
+ };
284
+
285
+ _proto.destroy = function destroy(bSuppressInvalidate) {
286
+ var oSideEffects = this._getSideEffectController();
287
+
288
+ if (oSideEffects) {
289
+ oSideEffects.removeControlSideEffects(this);
290
+ }
291
+
292
+ delete this.busyDialog;
293
+ FieldWrapper.prototype.destroy.apply(this, [bSuppressInvalidate]);
294
+ };
295
+
296
+ return FileWrapper;
297
+ }(FieldWrapper), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, "uploadUrl", [_dec2], {
298
+ configurable: true,
299
+ enumerable: true,
300
+ writable: true,
301
+ initializer: null
302
+ }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, "parentEntitySet", [_dec3], {
303
+ configurable: true,
304
+ enumerable: true,
305
+ writable: true,
306
+ initializer: null
307
+ }), _descriptor3 = _applyDecoratedDescriptor(_class2.prototype, "parentEntityType", [_dec4], {
308
+ configurable: true,
309
+ enumerable: true,
310
+ writable: true,
311
+ initializer: null
312
+ }), _descriptor4 = _applyDecoratedDescriptor(_class2.prototype, "propertyPath", [_dec5], {
313
+ configurable: true,
314
+ enumerable: true,
315
+ writable: true,
316
+ initializer: null
317
+ }), _descriptor5 = _applyDecoratedDescriptor(_class2.prototype, "filename", [_dec6], {
318
+ configurable: true,
319
+ enumerable: true,
320
+ writable: true,
321
+ initializer: null
322
+ }), _descriptor6 = _applyDecoratedDescriptor(_class2.prototype, "mediaType", [_dec7], {
323
+ configurable: true,
324
+ enumerable: true,
325
+ writable: true,
326
+ initializer: null
327
+ }), _descriptor7 = _applyDecoratedDescriptor(_class2.prototype, "avatar", [_dec8], {
328
+ configurable: true,
329
+ enumerable: true,
330
+ writable: true,
331
+ initializer: null
332
+ }), _descriptor8 = _applyDecoratedDescriptor(_class2.prototype, "icon", [_dec9], {
333
+ configurable: true,
334
+ enumerable: true,
335
+ writable: true,
336
+ initializer: null
337
+ }), _descriptor9 = _applyDecoratedDescriptor(_class2.prototype, "link", [_dec10], {
338
+ configurable: true,
339
+ enumerable: true,
340
+ writable: true,
341
+ initializer: null
342
+ }), _descriptor10 = _applyDecoratedDescriptor(_class2.prototype, "text", [_dec11], {
343
+ configurable: true,
344
+ enumerable: true,
345
+ writable: true,
346
+ initializer: null
347
+ }), _descriptor11 = _applyDecoratedDescriptor(_class2.prototype, "fileUploader", [_dec12], {
348
+ configurable: true,
349
+ enumerable: true,
350
+ writable: true,
351
+ initializer: null
352
+ }), _descriptor12 = _applyDecoratedDescriptor(_class2.prototype, "deleteButton", [_dec13], {
353
+ configurable: true,
354
+ enumerable: true,
355
+ writable: true,
356
+ initializer: null
357
+ })), _class2)) || _class);
358
+ return FileWrapper;
359
+ }, false);
360
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkZpbGVXcmFwcGVyLnRzIl0sIm5hbWVzIjpbIkZpbGVXcmFwcGVyIiwiZGVmaW5lVUk1Q2xhc3MiLCJwcm9wZXJ0eSIsInR5cGUiLCJhZ2dyZWdhdGlvbiIsIm11bHRpcGxlIiwiX2J1c3kiLCJnZXRBY2Nlc3NpYmlsaXR5SW5mbyIsImFjY0luZm8iLCJhdmF0YXIiLCJwdXNoIiwiaWNvbiIsImxpbmsiLCJ0ZXh0IiwiZmlsZVVwbG9hZGVyIiwiZGVsZXRlQnV0dG9uIiwiY2hpbGRyZW4iLCJvbkJlZm9yZVJlbmRlcmluZyIsIl9zZXRBcmlhTGFiZWxzIiwiX2FkZFNpZGVFZmZlY3RzIiwiX3NldEFyaWFMYWJlbGxlZEJ5Iiwic291cmNlUHJvcGVydHkiLCJzb3VyY2VQYXRoIiwicGF0aCIsInBhcmVudEVudGl0eVNldFdpdGhTbGFzaCIsIm5hdmlnYXRpb25Qcm9wZXJ0aWVzIiwiZ2V0Q3VzdG9tRGF0YSIsImZvckVhY2giLCJpdGVtIiwiZ2V0UHJvcGVydHkiLCJwYXJlbnRFbnRpdHlTZXQiLCJzdWJzdHJpbmciLCJpbmRleE9mIiwibGVuZ3RoIiwicmVwbGFjZSIsInByb3BlcnR5UGF0aCIsImZpbGVuYW1lIiwibWVkaWFUeXBlIiwiX2dldFNpZGVFZmZlY3RDb250cm9sbGVyIiwiYWRkQ29udHJvbFNpZGVFZmZlY3RzIiwicGFyZW50RW50aXR5VHlwZSIsIlNvdXJjZVByb3BlcnRpZXMiLCJUYXJnZXRFbnRpdGllcyIsInNvdXJjZUNvbnRyb2xJZCIsImdldElkIiwiY29udHJvbGxlciIsIl9nZXRWaWV3Q29udHJvbGxlciIsIl9zaWRlRWZmZWN0cyIsInVuZGVmaW5lZCIsInZpZXciLCJDb21tb25VdGlscyIsImdldFRhcmdldFZpZXciLCJnZXRDb250cm9sbGVyIiwiZ2V0VXBsb2FkVXJsIiwiY29udGV4dCIsImdldEJpbmRpbmdDb250ZXh0IiwidXBsb2FkVXJsIiwiZ2V0UGF0aCIsImdldENhbm9uaWNhbFBhdGgiLCJzZXRVSUJ1c3kiLCJidXN5IiwidGhhdCIsImJ1c3lEaWFsb2ciLCJCdXN5RGlhbG9nIiwiUmVzb3VyY2VNb2RlbCIsImdldFRleHQiLCJzaG93Q2FuY2VsQnV0dG9uIiwic2V0VGltZW91dCIsIm9wZW4iLCJjbG9zZSIsInJlbmRlciIsInJlbmRlck1hbmFnZXIiLCJmaWxlV3JhcHBlciIsIm9wZW5TdGFydCIsInN0eWxlIiwid2lkdGgiLCJvcGVuRW5kIiwicmVuZGVyQ29udHJvbCIsImRlc3Ryb3kiLCJiU3VwcHJlc3NJbnZhbGlkYXRlIiwib1NpZGVFZmZlY3RzIiwicmVtb3ZlQ29udHJvbFNpZGVFZmZlY3RzIiwiRmllbGRXcmFwcGVyIiwicHJvdG90eXBlIiwiYXBwbHkiXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TUFlTUEsVyxXQURMQyxjQUFjLENBQUMsa0NBQUQsQyxVQUViQyxRQUFRLENBQUM7QUFBRUMsSUFBQUEsSUFBSSxFQUFFO0FBQVIsR0FBRCxDLFVBRVJELFFBQVEsQ0FBQztBQUFFQyxJQUFBQSxJQUFJLEVBQUU7QUFBUixHQUFELEMsVUFFUkQsUUFBUSxDQUFDO0FBQUVDLElBQUFBLElBQUksRUFBRTtBQUFSLEdBQUQsQyxVQUVSRCxRQUFRLENBQUM7QUFBRUMsSUFBQUEsSUFBSSxFQUFFO0FBQVIsR0FBRCxDLFVBRVJELFFBQVEsQ0FBQztBQUFFQyxJQUFBQSxJQUFJLEVBQUU7QUFBUixHQUFELEMsVUFFUkQsUUFBUSxDQUFDO0FBQUVDLElBQUFBLElBQUksRUFBRTtBQUFSLEdBQUQsQyxVQUVSQyxXQUFXLENBQUM7QUFBRUQsSUFBQUEsSUFBSSxFQUFFLGNBQVI7QUFBd0JFLElBQUFBLFFBQVEsRUFBRTtBQUFsQyxHQUFELEMsVUFFWEQsV0FBVyxDQUFDO0FBQUVELElBQUFBLElBQUksRUFBRSxrQkFBUjtBQUE0QkUsSUFBQUEsUUFBUSxFQUFFO0FBQXRDLEdBQUQsQyxXQUVYRCxXQUFXLENBQUM7QUFBRUQsSUFBQUEsSUFBSSxFQUFFLFlBQVI7QUFBc0JF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LFNBQWQsQ0FBd0IsS0FBeEIsRUFoQ3FFLENBZ0NyQzs7QUFDaENGLE1BQUFBLGFBQWEsQ0FBQ0csS0FBZCxDQUFvQixTQUFwQixFQUErQixNQUEvQjtBQUNBSCxNQUFBQSxhQUFhLENBQUNHLEtBQWQsQ0FBb0IsYUFBcEIsRUFBbUMsUUFBbkM7QUFDQUgsTUFBQUEsYUFBYSxDQUFDSyxPQUFkO0FBQ0FMLE1BQUFBLGFBQWEsQ0FBQ00sYUFBZCxDQUE0QkwsV0FBVyxDQUFDMUQsWUFBeEMsRUFwQ3FFLENBb0NkOztBQUN2RHlELE1BQUFBLGFBQWEsQ0FBQ00sYUFBZCxDQUE0QkwsV0FBVyxDQUFDekQsWUFBeEMsRUFyQ3FFLENBcUNkOztBQUN2RHdELE1BQUFBLGFBQWEsQ0FBQ0YsS0FBZCxDQUFvQixLQUFwQixFQXRDcUUsQ0FzQ3pDOztBQUU1QkUsTUFBQUEsYUFBYSxDQUFDRixLQUFkLENBQW9CLEtBQXBCLEVBeENxRSxDQXdDekM7O0FBRTVCRSxNQUFBQSxhQUFhLENBQUNGLEtBQWQsQ0FBb0IsS0FBcEIsRUExQ3FFLENBMEN6QztBQUM1QixLOztXQUNEUyxPLEdBQUEsaUJBQVFDLG1CQUFSLEVBQXNDO0FBQ3JDLFVBQU1DLFlBQVksR0FBRyxLQUFLMUMsd0JBQUwsRUFBckI7O0FBQ0EsVUFBSTBDLFlBQUosRUFBa0I7QUFDakJBLFFBQUFBLFlBQVksQ0FBQ0Msd0JBQWIsQ0FBc0MsSUFBdEM7QUFDQTs7QUFDRCxhQUFPLEtBQUtuQixVQUFaO0FBQ0FvQixNQUFBQSxZQUFZLENBQUNDLFNBQWIsQ0FBdUJMLE9BQXZCLENBQStCTSxLQUEvQixDQUFxQyxJQUFyQyxFQUEyQyxDQUFDTCxtQkFBRCxDQUEzQztBQUNBLEs7OztJQXJMd0JHLFk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7U0F3TFhsRixXIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgeyBhZ2dyZWdhdGlvbiwgZGVmaW5lVUk1Q2xhc3MsIHByb3BlcnR5IH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgUmVzb3VyY2VNb2RlbCBmcm9tIFwic2FwL2ZlL21hY3Jvcy9SZXNvdXJjZU1vZGVsXCI7XG5pbXBvcnQgQXZhdGFyIGZyb20gXCJzYXAvbS9BdmF0YXJcIjtcbmltcG9ydCBCdXN5RGlhbG9nIGZyb20gXCJzYXAvbS9CdXN5RGlhbG9nXCI7XG5pbXBvcnQgQnV0dG9uIGZyb20gXCJzYXAvbS9CdXR0b25cIjtcbmltcG9ydCBMaW5rIGZyb20gXCJzYXAvbS9MaW5rXCI7XG5pbXBvcnQgVGV4dCBmcm9tIFwic2FwL20vVGV4dFwiO1xuaW1wb3J0IEljb24gZnJvbSBcInNhcC91aS9jb3JlL0ljb25cIjtcbmltcG9ydCB7IFVSSSB9IGZyb20gXCJzYXAvdWkvY29yZS9saWJyYXJ5XCI7XG5pbXBvcnQgUmVuZGVyTWFuYWdlciBmcm9tIFwic2FwL3VpL2NvcmUvUmVuZGVyTWFuYWdlclwiO1xuaW1wb3J0IENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9Db250ZXh0XCI7XG5pbXBvcnQgVjRDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQ29udGV4dFwiO1xuaW1wb3J0IEZpbGVVcGxvYWRlciBmcm9tIFwic2FwL3VpL3VuaWZpZWQvRmlsZVVwbG9hZGVyXCI7XG5pbXBvcnQgRmllbGRXcmFwcGVyIGZyb20gXCIuL0ZpZWxkV3JhcHBlclwiO1xuXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUuY29yZS5jb250cm9scy5GaWxlV3JhcHBlclwiKVxuY2xhc3MgRmlsZVdyYXBwZXIgZXh0ZW5kcyBGaWVsZFdyYXBwZXIge1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcInNhcC51aS5jb3JlLlVSSVwiIH0pXG5cdHVwbG9hZFVybCE6IFVSSTtcblx0QHByb3BlcnR5KHsgdHlwZTogXCJzYXAudWkubW9kZWwuQ29udGV4dFwiIH0pXG5cdHBhcmVudEVudGl0eVNldCE6IENvbnRleHQ7XG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic2FwLnVpLm1vZGVsLkNvbnRleHRcIiB9KVxuXHRwYXJlbnRFbnRpdHlUeXBlITogQ29udGV4dDtcblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRwcm9wZXJ0eVBhdGghOiBzdHJpbmc7XG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0ZmlsZW5hbWUhOiBzdHJpbmc7XG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0bWVkaWFUeXBlITogc3RyaW5nO1xuXHRAYWdncmVnYXRpb24oeyB0eXBlOiBcInNhcC5tLkF2YXRhclwiLCBtdWx0aXBsZTogZmFsc2UgfSlcblx0YXZhdGFyITogQXZhdGFyO1xuXHRAYWdncmVnYXRpb24oeyB0eXBlOiBcInNhcC51aS5jb3JlLkljb25cIiwgbXVsdGlwbGU6IGZhbHNlIH0pXG5cdGljb24hOiBJY29uO1xuXHRAYWdncmVnYXRpb24oeyB0eXBlOiBcInNhcC5tLkxpbmtcIiwgbXVsdGlwbGU6IGZhbHNlIH0pXG5cdGxpbmshOiBMaW5rO1xuXHRAYWdncmVnYXRpb24oeyB0eXBlOiBcInNhcC5tLlRleHRcIiwgbXVsdGlwbGU6IGZhbHNlIH0pXG5cdHRleHQhOiBUZXh0O1xuXHRAYWdncmVnYXRpb24oeyB0eXBlOiBcInNhcC51aS51bmlmaWVkLkZpbGVVcGxvYWRlclwiLCBtdWx0aXBsZTogZmFsc2UgfSlcblx0ZmlsZVVwbG9hZGVyITogRmlsZVVwbG9hZGVyO1xuXHRAYWdncmVnYXRpb24oeyB0eXBlOiBcInNhcC5tLkJ1dHRvblwiLCBtdWx0aXBsZTogZmFsc2UgfSlcblx0ZGVsZXRlQnV0dG9uITogQnV0dG9uO1xuXHRwcml2YXRlIF9idXN5OiBib29sZWFuID0gZmFsc2U7XG5cdHByaXZhdGUgYnVzeURpYWxvZz86IEJ1c3lEaWFsb2c7XG5cblx0Z2V0QWNjZXNzaWJpbGl0eUluZm8oKSB7XG5cdFx0Y29uc3QgYWNjSW5mbyA9IFtdO1xuXHRcdGlmICh0aGlzLmF2YXRhcikge1xuXHRcdFx0YWNjSW5mby5wdXNoKHRoaXMuYXZhdGFyKTtcblx0XHR9XG5cdFx0aWYgKHRoaXMuaWNvbikge1xuXHRcdFx0YWNjSW5mby5wdXNoKHRoaXMuaWNvbik7XG5cdFx0fVxuXHRcdGlmICh0aGlzLmxpbmspIHtcblx0XHRcdGFjY0luZm8ucHVzaCh0aGlzLmxpbmspO1xuXHRcdH1cblx0XHRpZiAodGhpcy50ZXh0KSB7XG5cdFx0XHRhY2NJbmZvLnB1c2godGhpcy50ZXh0KTtcblx0XHR9XG5cdFx0aWYgKHRoaXMuZmlsZVVwbG9hZGVyKSB7XG5cdFx0XHRhY2NJbmZvLnB1c2godGhpcy5maWxlVXBsb2FkZXIpO1xuXHRcdH1cblx0XHRpZiAodGhpcy5kZWxldGVCdXR0b24pIHtcblx0XHRcdGFjY0luZm8ucHVzaCh0aGlzLmRlbGV0ZUJ1dHRvbik7XG5cdFx0fVxuXHRcdHJldHVybiB7IGNoaWxkcmVuOiBhY2NJbmZvIH07XG5cdH1cblxuXHRvbkJlZm9yZVJlbmRlcmluZygpIHtcblx0XHR0aGlzLl9zZXRBcmlhTGFiZWxzKCk7XG5cdFx0dGhpcy5fYWRkU2lkZUVmZmVjdHMoKTtcblx0fVxuXG5cdF9zZXRBcmlhTGFiZWxzKCkge1xuXHRcdHRoaXMuX3NldEFyaWFMYWJlbGxlZEJ5KHRoaXMuYXZhdGFyKTtcblx0XHR0aGlzLl9zZXRBcmlhTGFiZWxsZWRCeSh0aGlzLmljb24pO1xuXHRcdHRoaXMuX3NldEFyaWFMYWJlbGxlZEJ5KHRoaXMubGluayk7XG5cdFx0dGhpcy5fc2V0QXJpYUxhYmVsbGVkQnkodGhpcy50ZXh0KTtcblx0XHR0aGlzLl9zZXRBcmlhTGFiZWxsZWRCeSh0aGlzLmZpbGVVcGxvYWRlcik7XG5cdFx0dGhpcy5fc2V0QXJpYUxhYmVsbGVkQnkodGhpcy5kZWxldGVCdXR0b24pO1xuXHR9XG5cblx0X2FkZFNpZGVFZmZlY3RzKCkge1xuXHRcdC8vIGFkZCBTaWRlRWZmZWN0cyBmb3Igc3RyZWFtIGNvbnRlbnQsIGZpbGVuYW1lIGFuZCBtZWRpYXR5cGVcblx0XHRsZXQgc291cmNlUHJvcGVydHkgPSBcIlwiLFxuXHRcdFx0c291cmNlUGF0aCA9IFwiXCIsXG5cdFx0XHRwYXRoID0gXCJcIixcblx0XHRcdHBhcmVudEVudGl0eVNldFdpdGhTbGFzaCA9IFwiXCI7XG5cdFx0Y29uc3QgbmF2aWdhdGlvblByb3BlcnRpZXM6IG9iamVjdFtdID0gW107XG5cdFx0dGhpcy5nZXRDdXN0b21EYXRhKCkuZm9yRWFjaChmdW5jdGlvbiAoaXRlbTogYW55KSB7XG5cdFx0XHRpZiAoaXRlbS5nZXRQcm9wZXJ0eShcImtleVwiKSA9PT0gXCJzb3VyY2VQYXRoXCIpIHtcblx0XHRcdFx0c291cmNlUGF0aCA9IGl0ZW0uZ2V0UHJvcGVydHkoXCJ2YWx1ZVwiKTtcblx0XHRcdH1cblx0XHR9KTtcblx0XHRwYXJlbnRFbnRpdHlTZXRXaXRoU2xhc2ggPSBcIi9cIiArIHRoaXMucGFyZW50RW50aXR5U2V0ICsgXCIvXCI7XG5cdFx0c291cmNlUHJvcGVydHkgPSBzb3VyY2VQYXRoLnN1YnN0cmluZyhcblx0XHRcdHNvdXJjZVBhdGguaW5kZXhPZihwYXJlbnRFbnRpdHlTZXRXaXRoU2xhc2gpICsgcGFyZW50RW50aXR5U2V0V2l0aFNsYXNoLmxlbmd0aCxcblx0XHRcdHNvdXJjZVBhdGgubGVuZ3RoXG5cdFx0KTtcblx0XHRwYXRoID0gc291cmNlUHJvcGVydHkucmVwbGFjZSh0aGlzLnByb3BlcnR5UGF0aCwgXCJcIik7XG5cdFx0bmF2aWdhdGlvblByb3BlcnRpZXMucHVzaCh7IFwiJE5hdmlnYXRpb25Qcm9wZXJ0eVBhdGhcIjogc291cmNlUHJvcGVydHkgfSk7XG5cdFx0aWYgKHRoaXMuZmlsZW5hbWUpIHtcblx0XHRcdG5hdmlnYXRpb25Qcm9wZXJ0aWVzLnB1c2goeyBcIiROYXZpZ2F0aW9uUHJvcGVydHlQYXRoXCI6IHBhdGggKyB0aGlzLmZpbGVuYW1lIH0pO1xuXHRcdH1cblx0XHRpZiAodGhpcy5tZWRpYVR5cGUpIHtcblx0XHRcdG5hdmlnYXRpb25Qcm9wZXJ0aWVzLnB1c2goeyBcIiROYXZpZ2F0aW9uUHJvcGVydHlQYXRoXCI6IHBhdGggKyB0aGlzLm1lZGlhVHlwZSB9KTtcblx0XHR9XG5cdFx0dGhpcy5fZ2V0U2lkZUVmZmVjdENvbnRyb2xsZXIoKS5hZGRDb250cm9sU2lkZUVmZmVjdHModGhpcy5wYXJlbnRFbnRpdHlUeXBlLCB7XG5cdFx0XHRTb3VyY2VQcm9wZXJ0aWVzOiBzb3VyY2VQcm9wZXJ0eSxcblx0XHRcdFRhcmdldEVudGl0aWVzOiBuYXZpZ2F0aW9uUHJvcGVydGllcyxcblx0XHRcdHNvdXJjZUNvbnRyb2xJZDogdGhpcy5nZXRJZCgpXG5cdFx0fSk7XG5cdH1cblx0X2dldFNpZGVFZmZlY3RDb250cm9sbGVyKCkge1xuXHRcdGNvbnN0IGNvbnRyb2xsZXIgPSB0aGlzLl9nZXRWaWV3Q29udHJvbGxlcigpO1xuXHRcdHJldHVybiBjb250cm9sbGVyID8gY29udHJvbGxlci5fc2lkZUVmZmVjdHMgOiB1bmRlZmluZWQ7XG5cdH1cblx0X2dldFZpZXdDb250cm9sbGVyKCkge1xuXHRcdGNvbnN0IHZpZXcgPSBDb21tb25VdGlscy5nZXRUYXJnZXRWaWV3KHRoaXMpO1xuXHRcdHJldHVybiB2aWV3ICYmIHZpZXcuZ2V0Q29udHJvbGxlcigpO1xuXHR9XG5cdGdldFVwbG9hZFVybCgpIHtcblx0XHQvLyBzZXQgdXBsb2FkIHVybCBhcyBjYW5vbmljYWwgdXJsIGZvciBOYXZpZ2F0aW9uUHJvcGVydGllc1xuXHRcdC8vIHRoaXMgaXMgYSB3b3JrYXJvdW5kIGFzIHNvbWUgYmFja2VuZHMgY2Fubm90IHJlc29sdmUgTmF2aWdhdGlvbnNQcm9wZXJ0aWVzIGZvciBzdHJlYW0gdHlwZXNcblx0XHRjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRCaW5kaW5nQ29udGV4dCgpIGFzIFY0Q29udGV4dDtcblx0XHRyZXR1cm4gY29udGV4dCA/IHRoaXMudXBsb2FkVXJsLnJlcGxhY2UoY29udGV4dC5nZXRQYXRoKCksIGNvbnRleHQuZ2V0Q2Fub25pY2FsUGF0aCgpKSA6IFwiXCI7XG5cdH1cblx0c2V0VUlCdXN5KGJ1c3k6IGJvb2xlYW4pIHtcblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXRoaXMtYWxpYXNcblx0XHRjb25zdCB0aGF0ID0gdGhpcztcblx0XHR0aGlzLl9idXN5ID0gYnVzeTtcblx0XHRpZiAoYnVzeSkge1xuXHRcdFx0aWYgKCF0aGlzLmJ1c3lEaWFsb2cpIHtcblx0XHRcdFx0dGhpcy5idXN5RGlhbG9nID0gbmV3IEJ1c3lEaWFsb2coe1xuXHRcdFx0XHRcdHRleHQ6IFJlc291cmNlTW9kZWwuZ2V0VGV4dChcIk1fRklMRVdSQVBQRVJfQlVTWV9ESUFMT0dfVElUTEVcIiksXG5cdFx0XHRcdFx0c2hvd0NhbmNlbEJ1dHRvbjogZmFsc2Vcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0XHRzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0aWYgKHRoYXQuX2J1c3kpIHtcblx0XHRcdFx0XHR0aGF0LmJ1c3lEaWFsb2c/Lm9wZW4oKTtcblx0XHRcdFx0fVxuXHRcdFx0fSwgMTAwMCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuYnVzeURpYWxvZz8uY2xvc2UoZmFsc2UpO1xuXHRcdH1cblx0fVxuXHRzdGF0aWMgcmVuZGVyKHJlbmRlck1hbmFnZXI6IFJlbmRlck1hbmFnZXIsIGZpbGVXcmFwcGVyOiBGaWxlV3JhcHBlcikge1xuXHRcdHJlbmRlck1hbmFnZXIub3BlblN0YXJ0KFwiZGl2XCIsIGZpbGVXcmFwcGVyKTsgLy8gRmlsZVdyYXBwZXIgY29udHJvbCBkaXZcblx0XHRyZW5kZXJNYW5hZ2VyLnN0eWxlKFwid2lkdGhcIiwgZmlsZVdyYXBwZXIud2lkdGgpO1xuXHRcdHJlbmRlck1hbmFnZXIub3BlbkVuZCgpO1xuXG5cdFx0Ly8gT3V0ZXIgQm94XG5cdFx0cmVuZGVyTWFuYWdlci5vcGVuU3RhcnQoXCJkaXZcIik7IC8vIGRpdiBmb3IgYWxsIGNvbnRyb2xzXG5cdFx0cmVuZGVyTWFuYWdlci5zdHlsZShcImRpc3BsYXlcIiwgXCJmbGV4XCIpO1xuXHRcdHJlbmRlck1hbmFnZXIuc3R5bGUoXCJib3gtc2l6aW5nXCIsIFwiYm9yZGVyLWJveFwiKTtcblx0XHRyZW5kZXJNYW5hZ2VyLnN0eWxlKFwianVzdGlmeS1jb250ZW50XCIsIFwic3BhY2UtYmV0d2VlblwiKTtcblx0XHRyZW5kZXJNYW5hZ2VyLnN0eWxlKFwiYWxpZ24taXRlbXNcIiwgXCJjZW50ZXJcIik7XG5cdFx0cmVuZGVyTWFuYWdlci5zdHlsZShcImZsZXgtd3JhcFwiLCBcIndyYXBcIik7XG5cdFx0cmVuZGVyTWFuYWdlci5zdHlsZShcImFsaWduLWNvbnRlbnRcIiwgXCJzdHJldGNoXCIpO1xuXHRcdHJlbmRlck1hbmFnZXIuc3R5bGUoXCJ3aWR0aFwiLCBcIjEwMCVcIik7XG5cdFx0cmVuZGVyTWFuYWdlci5vcGVuRW5kKCk7XG5cblx0XHQvLyBEaXNwbGF5IE1vZGVcblx0XHRyZW5kZXJNYW5hZ2VyLm9wZW5TdGFydChcImRpdlwiKTsgLy8gZGl2IGZvciBjb250cm9scyBzaG93biBpbiBEaXNwbGF5IG1vZGVcblx0XHRyZW5kZXJNYW5hZ2VyLnN0eWxlKFwiZGlzcGxheVwiLCBcImZsZXhcIik7XG5cdFx0cmVuZGVyTWFuYWdlci5zdHlsZShcImFsaWduLWl0ZW1zXCIsIFwiY2VudGVyXCIpO1xuXHRcdHJlbmRlck1hbmFnZXIub3BlbkVuZCgpO1xuXG5cdFx0aWYgKGZpbGVXcmFwcGVyLmF2YXRhcikge1xuXHRcdFx0cmVuZGVyTWFuYWdlci5yZW5kZXJDb250cm9sKGZpbGVXcmFwcGVyLmF2YXRhcik7IC8vIHJlbmRlciB0aGUgQXZhdGFyIENvbnRyb2xcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmVuZGVyTWFuYWdlci5yZW5kZXJDb250cm9sKGZpbGVXcmFwcGVyLmljb24pOyAvLyByZW5kZXIgdGhlIEljb24gQ29udHJvbFxuXHRcdFx0cmVuZGVyTWFuYWdlci5yZW5kZXJDb250cm9sKGZpbGVXcmFwcGVyLmxpbmspOyAvLyByZW5kZXIgdGhlIExpbmsgQ29udHJvbFxuXHRcdFx0cmVuZGVyTWFuYWdlci5yZW5kZXJDb250cm9sKGZpbGVXcmFwcGVyLnRleHQpOyAvLyByZW5kZXIgdGhlIFRleHQgQ29udHJvbCBmb3IgZW1wdHkgZmlsZSBpbmRpY2F0aW9uXG5cdFx0fVxuXHRcdHJlbmRlck1hbmFnZXIuY2xvc2UoXCJkaXZcIik7IC8vIGRpdiBmb3IgY29udHJvbHMgc2hvd24gaW4gRGlzcGxheSBtb2RlXG5cblx0XHQvLyBBZGRpdGlvbmFsIGNvbnRlbnQgZm9yIEVkaXQgTW9kZVxuXHRcdHJlbmRlck1hbmFnZXIub3BlblN0YXJ0KFwiZGl2XCIpOyAvLyBkaXYgZm9yIGNvbnRyb2xzIHNob3duIGluIERpc3BsYXkgKyBFZGl0IG1vZGVcblx0XHRyZW5kZXJNYW5hZ2VyLnN0eWxlKFwiZGlzcGxheVwiLCBcImZsZXhcIik7XG5cdFx0cmVuZGVyTWFuYWdlci5zdHlsZShcImFsaWduLWl0ZW1zXCIsIFwiY2VudGVyXCIpO1xuXHRcdHJlbmRlck1hbmFnZXIub3BlbkVuZCgpO1xuXHRcdHJlbmRlck1hbmFnZXIucmVuZGVyQ29udHJvbChmaWxlV3JhcHBlci5maWxlVXBsb2FkZXIpOyAvLyByZW5kZXIgdGhlIEZpbGVVcGxvYWRlciBDb250cm9sXG5cdFx0cmVuZGVyTWFuYWdlci5yZW5kZXJDb250cm9sKGZpbGVXcmFwcGVyLmRlbGV0ZUJ1dHRvbik7IC8vIHJlbmRlciB0aGUgRGVsZXRlIEJ1dHRvbiBDb250cm9sXG5cdFx0cmVuZGVyTWFuYWdlci5jbG9zZShcImRpdlwiKTsgLy8gZGl2IGZvciBjb250cm9scyBzaG93biBpbiBEaXNwbGF5ICsgRWRpdCBtb2RlXG5cblx0XHRyZW5kZXJNYW5hZ2VyLmNsb3NlKFwiZGl2XCIpOyAvLyBkaXYgZm9yIGFsbCBjb250cm9sc1xuXG5cdFx0cmVuZGVyTWFuYWdlci5jbG9zZShcImRpdlwiKTsgLy8gZW5kIG9mIHRoZSBjb21wbGV0ZSBDb250cm9sXG5cdH1cblx0ZGVzdHJveShiU3VwcHJlc3NJbnZhbGlkYXRlOiBib29sZWFuKSB7XG5cdFx0Y29uc3Qgb1NpZGVFZmZlY3RzID0gdGhpcy5fZ2V0U2lkZUVmZmVjdENvbnRyb2xsZXIoKTtcblx0XHRpZiAob1NpZGVFZmZlY3RzKSB7XG5cdFx0XHRvU2lkZUVmZmVjdHMucmVtb3ZlQ29udHJvbFNpZGVFZmZlY3RzKHRoaXMpO1xuXHRcdH1cblx0XHRkZWxldGUgdGhpcy5idXN5RGlhbG9nO1xuXHRcdEZpZWxkV3JhcHBlci5wcm90b3R5cGUuZGVzdHJveS5hcHBseSh0aGlzLCBbYlN1cHByZXNzSW52YWxpZGF0ZV0pO1xuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEZpbGVXcmFwcGVyO1xuIl19
@@ -0,0 +1,202 @@
1
+ import CommonUtils from "sap/fe/core/CommonUtils";
2
+ import { aggregation, defineUI5Class, property } from "sap/fe/core/helpers/ClassSupport";
3
+ import ResourceModel from "sap/fe/macros/ResourceModel";
4
+ import Avatar from "sap/m/Avatar";
5
+ import BusyDialog from "sap/m/BusyDialog";
6
+ import Button from "sap/m/Button";
7
+ import Link from "sap/m/Link";
8
+ import Text from "sap/m/Text";
9
+ import Icon from "sap/ui/core/Icon";
10
+ import { URI } from "sap/ui/core/library";
11
+ import RenderManager from "sap/ui/core/RenderManager";
12
+ import Context from "sap/ui/model/Context";
13
+ import V4Context from "sap/ui/model/odata/v4/Context";
14
+ import FileUploader from "sap/ui/unified/FileUploader";
15
+ import FieldWrapper from "./FieldWrapper";
16
+
17
+ @defineUI5Class("sap.fe.core.controls.FileWrapper")
18
+ class FileWrapper extends FieldWrapper {
19
+ @property({ type: "sap.ui.core.URI" })
20
+ uploadUrl!: URI;
21
+ @property({ type: "sap.ui.model.Context" })
22
+ parentEntitySet!: Context;
23
+ @property({ type: "sap.ui.model.Context" })
24
+ parentEntityType!: Context;
25
+ @property({ type: "string" })
26
+ propertyPath!: string;
27
+ @property({ type: "string" })
28
+ filename!: string;
29
+ @property({ type: "string" })
30
+ mediaType!: string;
31
+ @aggregation({ type: "sap.m.Avatar", multiple: false })
32
+ avatar!: Avatar;
33
+ @aggregation({ type: "sap.ui.core.Icon", multiple: false })
34
+ icon!: Icon;
35
+ @aggregation({ type: "sap.m.Link", multiple: false })
36
+ link!: Link;
37
+ @aggregation({ type: "sap.m.Text", multiple: false })
38
+ text!: Text;
39
+ @aggregation({ type: "sap.ui.unified.FileUploader", multiple: false })
40
+ fileUploader!: FileUploader;
41
+ @aggregation({ type: "sap.m.Button", multiple: false })
42
+ deleteButton!: Button;
43
+ private _busy: boolean = false;
44
+ private busyDialog?: BusyDialog;
45
+
46
+ getAccessibilityInfo() {
47
+ const accInfo = [];
48
+ if (this.avatar) {
49
+ accInfo.push(this.avatar);
50
+ }
51
+ if (this.icon) {
52
+ accInfo.push(this.icon);
53
+ }
54
+ if (this.link) {
55
+ accInfo.push(this.link);
56
+ }
57
+ if (this.text) {
58
+ accInfo.push(this.text);
59
+ }
60
+ if (this.fileUploader) {
61
+ accInfo.push(this.fileUploader);
62
+ }
63
+ if (this.deleteButton) {
64
+ accInfo.push(this.deleteButton);
65
+ }
66
+ return { children: accInfo };
67
+ }
68
+
69
+ onBeforeRendering() {
70
+ this._setAriaLabels();
71
+ this._addSideEffects();
72
+ }
73
+
74
+ _setAriaLabels() {
75
+ this._setAriaLabelledBy(this.avatar);
76
+ this._setAriaLabelledBy(this.icon);
77
+ this._setAriaLabelledBy(this.link);
78
+ this._setAriaLabelledBy(this.text);
79
+ this._setAriaLabelledBy(this.fileUploader);
80
+ this._setAriaLabelledBy(this.deleteButton);
81
+ }
82
+
83
+ _addSideEffects() {
84
+ // add SideEffects for stream content, filename and mediatype
85
+ let sourceProperty = "",
86
+ sourcePath = "",
87
+ path = "",
88
+ parentEntitySetWithSlash = "";
89
+ const navigationProperties: object[] = [];
90
+ this.getCustomData().forEach(function (item: any) {
91
+ if (item.getProperty("key") === "sourcePath") {
92
+ sourcePath = item.getProperty("value");
93
+ }
94
+ });
95
+ parentEntitySetWithSlash = "/" + this.parentEntitySet + "/";
96
+ sourceProperty = sourcePath.substring(
97
+ sourcePath.indexOf(parentEntitySetWithSlash) + parentEntitySetWithSlash.length,
98
+ sourcePath.length
99
+ );
100
+ path = sourceProperty.replace(this.propertyPath, "");
101
+ navigationProperties.push({ "$NavigationPropertyPath": sourceProperty });
102
+ if (this.filename) {
103
+ navigationProperties.push({ "$NavigationPropertyPath": path + this.filename });
104
+ }
105
+ if (this.mediaType) {
106
+ navigationProperties.push({ "$NavigationPropertyPath": path + this.mediaType });
107
+ }
108
+ this._getSideEffectController().addControlSideEffects(this.parentEntityType, {
109
+ SourceProperties: sourceProperty,
110
+ TargetEntities: navigationProperties,
111
+ sourceControlId: this.getId()
112
+ });
113
+ }
114
+ _getSideEffectController() {
115
+ const controller = this._getViewController();
116
+ return controller ? controller._sideEffects : undefined;
117
+ }
118
+ _getViewController() {
119
+ const view = CommonUtils.getTargetView(this);
120
+ return view && view.getController();
121
+ }
122
+ getUploadUrl() {
123
+ // set upload url as canonical url for NavigationProperties
124
+ // this is a workaround as some backends cannot resolve NavigationsProperties for stream types
125
+ const context = this.getBindingContext() as V4Context;
126
+ return context ? this.uploadUrl.replace(context.getPath(), context.getCanonicalPath()) : "";
127
+ }
128
+ setUIBusy(busy: boolean) {
129
+ // eslint-disable-next-line @typescript-eslint/no-this-alias
130
+ const that = this;
131
+ this._busy = busy;
132
+ if (busy) {
133
+ if (!this.busyDialog) {
134
+ this.busyDialog = new BusyDialog({
135
+ text: ResourceModel.getText("M_FILEWRAPPER_BUSY_DIALOG_TITLE"),
136
+ showCancelButton: false
137
+ });
138
+ }
139
+ setTimeout(function () {
140
+ if (that._busy) {
141
+ that.busyDialog?.open();
142
+ }
143
+ }, 1000);
144
+ } else {
145
+ this.busyDialog?.close(false);
146
+ }
147
+ }
148
+ static render(renderManager: RenderManager, fileWrapper: FileWrapper) {
149
+ renderManager.openStart("div", fileWrapper); // FileWrapper control div
150
+ renderManager.style("width", fileWrapper.width);
151
+ renderManager.openEnd();
152
+
153
+ // Outer Box
154
+ renderManager.openStart("div"); // div for all controls
155
+ renderManager.style("display", "flex");
156
+ renderManager.style("box-sizing", "border-box");
157
+ renderManager.style("justify-content", "space-between");
158
+ renderManager.style("align-items", "center");
159
+ renderManager.style("flex-wrap", "wrap");
160
+ renderManager.style("align-content", "stretch");
161
+ renderManager.style("width", "100%");
162
+ renderManager.openEnd();
163
+
164
+ // Display Mode
165
+ renderManager.openStart("div"); // div for controls shown in Display mode
166
+ renderManager.style("display", "flex");
167
+ renderManager.style("align-items", "center");
168
+ renderManager.openEnd();
169
+
170
+ if (fileWrapper.avatar) {
171
+ renderManager.renderControl(fileWrapper.avatar); // render the Avatar Control
172
+ } else {
173
+ renderManager.renderControl(fileWrapper.icon); // render the Icon Control
174
+ renderManager.renderControl(fileWrapper.link); // render the Link Control
175
+ renderManager.renderControl(fileWrapper.text); // render the Text Control for empty file indication
176
+ }
177
+ renderManager.close("div"); // div for controls shown in Display mode
178
+
179
+ // Additional content for Edit Mode
180
+ renderManager.openStart("div"); // div for controls shown in Display + Edit mode
181
+ renderManager.style("display", "flex");
182
+ renderManager.style("align-items", "center");
183
+ renderManager.openEnd();
184
+ renderManager.renderControl(fileWrapper.fileUploader); // render the FileUploader Control
185
+ renderManager.renderControl(fileWrapper.deleteButton); // render the Delete Button Control
186
+ renderManager.close("div"); // div for controls shown in Display + Edit mode
187
+
188
+ renderManager.close("div"); // div for all controls
189
+
190
+ renderManager.close("div"); // end of the complete Control
191
+ }
192
+ destroy(bSuppressInvalidate: boolean) {
193
+ const oSideEffects = this._getSideEffectController();
194
+ if (oSideEffects) {
195
+ oSideEffects.removeControlSideEffects(this);
196
+ }
197
+ delete this.busyDialog;
198
+ FieldWrapper.prototype.destroy.apply(this, [bSuppressInvalidate]);
199
+ }
200
+ }
201
+
202
+ export default FileWrapper;