@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
@@ -38,8 +38,9 @@
38
38
 
39
39
  <template:if test="{= !${parameter>$isCollection} }">
40
40
  <template:then>
41
+ <!--The payload of FieldBaseDelegate is used to control the fallback feature 'retrieveTextFromValueList' -->
41
42
  <mdc:Field
42
- delegate="{name: 'sap/ui/mdc/odata/v4/FieldBaseDelegate'}"
43
+ delegate="{name:'sap/fe/macros/FieldBaseDelegate', payload:{retrieveTextFromValueList:true}}"
43
44
  unittest:id="ActionParameterDialogFieldExpressionTest"
44
45
  id="{= ID.generate(['APD_', ${parameter>$Name}]) }"
45
46
  value="{parameter>@@MODEL.format}"
@@ -50,7 +51,7 @@
50
51
  required="{= FIELD.isRequired(${actionParameter>@@FIELD.fieldControl}, 'Editable')}"
51
52
  change="{= '.handleChange($event, \'' + ${parameter>$Name} + '\')' }"
52
53
  fieldHelp="{= FIELD.getActionParameterDialogFieldHelp(${actionParameter>@}, ${actionName>@sapui.name}, ${parameter>$Name}) }"
53
- visible="{actionParameter>@@COMMON.isVisible}"
54
+ visible="{actionParameter>@com.sap.vocabularies.UI.v1.Hidden@@FIELD.getActionParameterVisibility}"
54
55
  >
55
56
  <core:Fragment fragmentName="sap.fe.core.controls.ActionParameterDialogValueHelp" type="XML" />
56
57
  </mdc:Field>
@@ -67,7 +68,7 @@
67
68
  multipleLines="{= ${actionParameter>@com.sap.vocabularies.UI.v1.MultiLineText} ? (${actionParameter>@com.sap.vocabularies.UI.v1.MultiLineText} !== false) : undefined}"
68
69
  required="{= FIELD.isRequired(${actionParameter>@@FIELD.fieldControl}, 'Editable')}"
69
70
  fieldHelp="{= FIELD.getActionParameterDialogFieldHelp(${actionParameter>@}, ${actionName>@sapui.name}, ${parameter>$Name}) }"
70
- visible="{actionParameter>@@COMMON.isVisible}"
71
+ visible="{actionParameter>@com.sap.vocabularies.UI.v1.Hidden@@FIELD.getActionParameterVisibility}"
71
72
  >
72
73
  <mdcField:MultiValueFieldItem key="{path: 'mvfview>Key', type:'sap.ui.model.type.String'}" description="{mvfview>Desc}" />
73
74
  <core:Fragment fragmentName="sap.fe.core.controls.ActionParameterDialogValueHelp" type="XML" />
@@ -37,8 +37,8 @@
37
37
  <items>
38
38
  <CustomListItem>
39
39
  <HBox justifyContent="Start">
40
- <Text
41
- text="{= '{notApplicable>' + ${headerInfo>Title/Value/$Path} + '}' }"
40
+ <Text
41
+ text="{= '{= !${notApplicable>' + ${headerInfo>Title/Value/$Path} + '} ? ${sap.fe.i18n>T_MESSAGE_ITEM_SUBTITLE_CREATION_ROW_INDICATOR} : ${notApplicable>' + ${headerInfo>Title/Value/$Path} + '}}' }"
42
42
  class="sapUiTinyMarginBegin sapUiTinyMarginTopBottom"
43
43
  unittest:id="ActionPartialHeaderInfoListItemText"
44
44
  />
@@ -1,70 +1,72 @@
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/ui/core/CommandExecution", "sap/base/Log", "sap/ui/core/Element", "sap/ui/core/Shortcut"], function(
6
- CommandExecution,
7
- Log,
8
- Element,
9
- Shortcut
10
- ) {
11
- "use strict";
12
- return CommandExecution.extend("sap.fe.core.controls.CommandExecution", {
13
- setParent: function(oParent) {
14
- var aExcludedSingleKey = ["escape"],
15
- aCommands;
16
- CommandExecution.prototype.setParent.apply(this, arguments);
17
- aCommands = oParent.data("sap.ui.core.Shortcut");
18
- if (Array.isArray(aCommands) && aCommands.length > 0) {
19
- var oCommand = oParent.data("sap.ui.core.Shortcut")[aCommands.length - 1],
20
- oShortcut = oCommand.shortcutSpec;
21
- if (oShortcut && aExcludedSingleKey.indexOf(oShortcut.key) > -1) {
22
- // Check if single key shortcut
23
- for (var key in oShortcut) {
24
- if (oShortcut[key] && key !== "key") {
25
- return this;
26
- }
27
- }
28
- // Need to disable ShortCut when user press single shortcut key into an input
29
- oParent.addDelegate(
30
- {
31
- "onkeydown": function(oEvent) {
32
- if (aExcludedSingleKey.indexOf(oEvent.key.toLowerCase()) > -1) {
33
- var sElement = oEvent.target ? oEvent.target.tagName.toLowerCase() : undefined;
34
- if (sElement === "input") {
35
- oEvent.setMarked();
36
- }
37
- }
38
- }
39
- },
40
- true,
41
- undefined,
42
- true
43
- );
44
- }
45
- return this;
46
- }
47
- },
5
+ sap.ui.define(["sap/ui/core/CommandExecution", "sap/base/Log", "sap/ui/core/Element", "sap/ui/core/Shortcut"], function (CommandExecution, Log, Element, Shortcut) {
6
+ "use strict";
48
7
 
49
- destroy: function() {
50
- var oParent = this.getParent();
51
- if (oParent) {
52
- var oCommand = this._getCommandInfo();
53
- if (oCommand) {
54
- Shortcut.unregister(this.getParent(), oCommand.shortcut);
55
- }
56
- this._cleanupContext(oParent);
57
- }
58
- Element.prototype.destroy.apply(this, arguments);
59
- },
8
+ var CustomCommandExecution = CommandExecution.extend("sap.fe.core.controls.CommandExecution", {
9
+ setParent: function (oParent) {
10
+ var aExcludedSingleKey = ["escape"];
11
+ CommandExecution.prototype.setParent.apply(this, [oParent]);
12
+ var aCommands = oParent.data("sap.ui.core.Shortcut");
60
13
 
61
- setVisible: function(bValue) {
62
- var oCommand = this._getCommandInfo();
63
- if (oCommand) {
64
- CommandExecution.prototype.setVisible.apply(this, arguments);
65
- } else {
66
- Log.info("There is no shortcut definition registered in the manifest for the command : " + this.getCommand());
67
- }
68
- }
69
- });
70
- });
14
+ if (Array.isArray(aCommands) && aCommands.length > 0) {
15
+ var oCommand = oParent.data("sap.ui.core.Shortcut")[aCommands.length - 1],
16
+ oShortcut = oCommand.shortcutSpec;
17
+
18
+ if (oShortcut && aExcludedSingleKey.indexOf(oShortcut.key) > -1) {
19
+ // Check if single key shortcut
20
+ for (var key in oShortcut) {
21
+ if (oShortcut[key] && key !== "key") {
22
+ return this;
23
+ }
24
+ } // Need to disable ShortCut when user press single shortcut key into an input
25
+
26
+
27
+ oParent.addDelegate({
28
+ "onkeydown": function (oEvent) {
29
+ if (aExcludedSingleKey.indexOf(oEvent.key.toLowerCase()) > -1) {
30
+ var sElement = oEvent.target ? oEvent.target.tagName.toLowerCase() : undefined;
31
+
32
+ if (sElement === "input") {
33
+ oEvent.setMarked();
34
+ }
35
+ }
36
+ }
37
+ }, true, undefined, true);
38
+ }
39
+
40
+ return this;
41
+ }
42
+ },
43
+ destroy: function (bSuppressInvalidate) {
44
+ var oParent = this.getParent();
45
+
46
+ if (oParent) {
47
+ var oCommand = this._getCommandInfo();
48
+
49
+ if (oCommand) {
50
+ Shortcut.unregister(this.getParent(), oCommand.shortcut);
51
+ }
52
+
53
+ this._cleanupContext(oParent);
54
+ }
55
+
56
+ Element.prototype.destroy.apply(this, [bSuppressInvalidate]);
57
+ },
58
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
59
+ // @ts-ignore
60
+ setVisible: function (bValue) {
61
+ var oCommand = this._getCommandInfo();
62
+
63
+ if (oCommand) {
64
+ return CommandExecution.prototype.setVisible.apply(this, [bValue]);
65
+ } else {
66
+ Log.info("There is no shortcut definition registered in the manifest for the command : " + this.getCommand());
67
+ }
68
+ }
69
+ });
70
+ return CustomCommandExecution;
71
+ }, false);
72
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNvbW1hbmRFeGVjdXRpb24udHMiXSwibmFtZXMiOlsiQ3VzdG9tQ29tbWFuZEV4ZWN1dGlvbiIsIkNvbW1hbmRFeGVjdXRpb24iLCJleHRlbmQiLCJzZXRQYXJlbnQiLCJvUGFyZW50IiwiYUV4Y2x1ZGVkU2luZ2xlS2V5IiwicHJvdG90eXBlIiwiYXBwbHkiLCJhQ29tbWFuZHMiLCJkYXRhIiwiQXJyYXkiLCJpc0FycmF5IiwibGVuZ3RoIiwib0NvbW1hbmQiLCJvU2hvcnRjdXQiLCJzaG9ydGN1dFNwZWMiLCJpbmRleE9mIiwia2V5IiwiYWRkRGVsZWdhdGUiLCJvRXZlbnQiLCJ0b0xvd2VyQ2FzZSIsInNFbGVtZW50IiwidGFyZ2V0IiwidGFnTmFtZSIsInVuZGVmaW5lZCIsInNldE1hcmtlZCIsImRlc3Ryb3kiLCJiU3VwcHJlc3NJbnZhbGlkYXRlIiwiZ2V0UGFyZW50IiwiX2dldENvbW1hbmRJbmZvIiwiU2hvcnRjdXQiLCJ1bnJlZ2lzdGVyIiwic2hvcnRjdXQiLCJfY2xlYW51cENvbnRleHQiLCJFbGVtZW50Iiwic2V0VmlzaWJsZSIsImJWYWx1ZSIsIkxvZyIsImluZm8iLCJnZXRDb21tYW5kIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7O0FBU0EsTUFBTUEsc0JBQXNCLEdBQUdDLGdCQUFnQixDQUFDQyxNQUFqQixDQUF3Qix1Q0FBeEIsRUFBaUU7QUFDL0ZDLElBQUFBLFNBQVMsRUFBRSxVQUFTQyxPQUFULEVBQXVCO0FBQ2pDLFVBQU1DLGtCQUFrQixHQUFHLENBQUMsUUFBRCxDQUEzQjtBQUNDSixNQUFBQSxnQkFBZ0IsQ0FBQ0ssU0FBbEIsQ0FBb0NILFNBQXBDLENBQThDSSxLQUE5QyxDQUFvRCxJQUFwRCxFQUEwRCxDQUFDSCxPQUFELENBQTFEO0FBQ0EsVUFBTUksU0FBUyxHQUFHSixPQUFPLENBQUNLLElBQVIsQ0FBYSxzQkFBYixDQUFsQjs7QUFDQSxVQUFJQyxLQUFLLENBQUNDLE9BQU4sQ0FBY0gsU0FBZCxLQUE0QkEsU0FBUyxDQUFDSSxNQUFWLEdBQW1CLENBQW5ELEVBQXNEO0FBQ3JELFlBQU1DLFFBQVEsR0FBR1QsT0FBTyxDQUFDSyxJQUFSLENBQWEsc0JBQWIsRUFBcUNELFNBQVMsQ0FBQ0ksTUFBVixHQUFtQixDQUF4RCxDQUFqQjtBQUFBLFlBQ0NFLFNBQVMsR0FBR0QsUUFBUSxDQUFDRSxZQUR0Qjs7QUFFQSxZQUFJRCxTQUFTLElBQUlULGtCQUFrQixDQUFDVyxPQUFuQixDQUEyQkYsU0FBUyxDQUFDRyxHQUFyQyxJQUE0QyxDQUFDLENBQTlELEVBQWlFO0FBQ2hFO0FBQ0EsZUFBSyxJQUFNQSxHQUFYLElBQWtCSCxTQUFsQixFQUE2QjtBQUM1QixnQkFBSUEsU0FBUyxDQUFDRyxHQUFELENBQVQsSUFBa0JBLEdBQUcsS0FBSyxLQUE5QixFQUFxQztBQUNwQyxxQkFBTyxJQUFQO0FBQ0E7QUFDRCxXQU4rRCxDQU9oRTs7O0FBQ0FiLFVBQUFBLE9BQU8sQ0FBQ2MsV0FBUixDQUNDO0FBQ0MseUJBQWEsVUFBU0MsTUFBVCxFQUFzQjtBQUNsQyxrQkFBSWQsa0JBQWtCLENBQUNXLE9BQW5CLENBQTJCRyxNQUFNLENBQUNGLEdBQVAsQ0FBV0csV0FBWCxFQUEzQixJQUF1RCxDQUFDLENBQTVELEVBQStEO0FBQzlELG9CQUFNQyxRQUFRLEdBQUdGLE1BQU0sQ0FBQ0csTUFBUCxHQUFnQkgsTUFBTSxDQUFDRyxNQUFQLENBQWNDLE9BQWQsQ0FBc0JILFdBQXRCLEVBQWhCLEdBQXNESSxTQUF2RTs7QUFDQSxvQkFBSUgsUUFBUSxLQUFLLE9BQWpCLEVBQTBCO0FBQ3pCRixrQkFBQUEsTUFBTSxDQUFDTSxTQUFQO0FBQ0E7QUFDRDtBQUNEO0FBUkYsV0FERCxFQVdDLElBWEQsRUFZQ0QsU0FaRCxFQWFDLElBYkQ7QUFlQTs7QUFDRCxlQUFPLElBQVA7QUFDQTtBQUNELEtBbEM4RjtBQW9DL0ZFLElBQUFBLE9BQU8sRUFBRSxVQUFtQ0MsbUJBQW5DLEVBQXdEO0FBQ2hFLFVBQU12QixPQUFPLEdBQUcsS0FBS3dCLFNBQUwsRUFBaEI7O0FBQ0EsVUFBSXhCLE9BQUosRUFBYTtBQUNaLFlBQU1TLFFBQVEsR0FBRyxLQUFLZ0IsZUFBTCxFQUFqQjs7QUFDQSxZQUFJaEIsUUFBSixFQUFjO0FBQ2JpQixVQUFBQSxRQUFRLENBQUNDLFVBQVQsQ0FBb0IsS0FBS0gsU0FBTCxFQUFwQixFQUFzQ2YsUUFBUSxDQUFDbUIsUUFBL0M7QUFDQTs7QUFDRCxhQUFLQyxlQUFMLENBQXFCN0IsT0FBckI7QUFDQTs7QUFDRDhCLE1BQUFBLE9BQU8sQ0FBQzVCLFNBQVIsQ0FBa0JvQixPQUFsQixDQUEwQm5CLEtBQTFCLENBQWdDLElBQWhDLEVBQXNDLENBQUNvQixtQkFBRCxDQUF0QztBQUNBLEtBOUM4RjtBQWdEL0Y7QUFDQTtBQUNBUSxJQUFBQSxVQUFVLEVBQUUsVUFBbUNDLE1BQW5DLEVBQWdEO0FBQzNELFVBQU12QixRQUFRLEdBQUcsS0FBS2dCLGVBQUwsRUFBakI7O0FBQ0EsVUFBSWhCLFFBQUosRUFBYztBQUNiLGVBQU9aLGdCQUFnQixDQUFDSyxTQUFqQixDQUEyQjZCLFVBQTNCLENBQXNDNUIsS0FBdEMsQ0FBNEMsSUFBNUMsRUFBa0QsQ0FBQzZCLE1BQUQsQ0FBbEQsQ0FBUDtBQUNBLE9BRkQsTUFFTztBQUNOQyxRQUFBQSxHQUFHLENBQUNDLElBQUosQ0FBUyxrRkFBa0YsS0FBS0MsVUFBTCxFQUEzRjtBQUNBO0FBQ0Q7QUF6RDhGLEdBQWpFLENBQS9CO1NBNERldkMsc0IiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDb21tYW5kRXhlY3V0aW9uIGZyb20gXCJzYXAvdWkvY29yZS9Db21tYW5kRXhlY3V0aW9uXCI7XG5pbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCBFbGVtZW50IGZyb20gXCJzYXAvdWkvY29yZS9FbGVtZW50XCI7XG5pbXBvcnQgU2hvcnRjdXQgZnJvbSBcInNhcC91aS9jb3JlL1Nob3J0Y3V0XCI7XG5cbnR5cGUgQ29tbWFuZEV4ZWN1dGlvbkV4ID0gQ29tbWFuZEV4ZWN1dGlvbiAmIHtcblx0c2V0UGFyZW50KG9QYXJlbnQ6IGFueSk6IHZvaWQ7XG5cdF9nZXRDb21tYW5kSW5mbygpOiBhbnk7XG5cdF9jbGVhbnVwQ29udGV4dChvUGFyZW50OiBhbnkpOiB2b2lkO1xufTtcblxuY29uc3QgQ3VzdG9tQ29tbWFuZEV4ZWN1dGlvbiA9IENvbW1hbmRFeGVjdXRpb24uZXh0ZW5kKFwic2FwLmZlLmNvcmUuY29udHJvbHMuQ29tbWFuZEV4ZWN1dGlvblwiLCB7XG5cdHNldFBhcmVudDogZnVuY3Rpb24ob1BhcmVudDogYW55KSB7XG5cdFx0Y29uc3QgYUV4Y2x1ZGVkU2luZ2xlS2V5ID0gW1wiZXNjYXBlXCJdO1xuXHRcdChDb21tYW5kRXhlY3V0aW9uLnByb3RvdHlwZSBhcyBhbnkpLnNldFBhcmVudC5hcHBseSh0aGlzLCBbb1BhcmVudF0pO1xuXHRcdGNvbnN0IGFDb21tYW5kcyA9IG9QYXJlbnQuZGF0YShcInNhcC51aS5jb3JlLlNob3J0Y3V0XCIpO1xuXHRcdGlmIChBcnJheS5pc0FycmF5KGFDb21tYW5kcykgJiYgYUNvbW1hbmRzLmxlbmd0aCA+IDApIHtcblx0XHRcdGNvbnN0IG9Db21tYW5kID0gb1BhcmVudC5kYXRhKFwic2FwLnVpLmNvcmUuU2hvcnRjdXRcIilbYUNvbW1hbmRzLmxlbmd0aCAtIDFdLFxuXHRcdFx0XHRvU2hvcnRjdXQgPSBvQ29tbWFuZC5zaG9ydGN1dFNwZWM7XG5cdFx0XHRpZiAob1Nob3J0Y3V0ICYmIGFFeGNsdWRlZFNpbmdsZUtleS5pbmRleE9mKG9TaG9ydGN1dC5rZXkpID4gLTEpIHtcblx0XHRcdFx0Ly8gQ2hlY2sgaWYgc2luZ2xlIGtleSBzaG9ydGN1dFxuXHRcdFx0XHRmb3IgKGNvbnN0IGtleSBpbiBvU2hvcnRjdXQpIHtcblx0XHRcdFx0XHRpZiAob1Nob3J0Y3V0W2tleV0gJiYga2V5ICE9PSBcImtleVwiKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gTmVlZCB0byBkaXNhYmxlIFNob3J0Q3V0IHdoZW4gdXNlciBwcmVzcyBzaW5nbGUgc2hvcnRjdXQga2V5IGludG8gYW4gaW5wdXRcblx0XHRcdFx0b1BhcmVudC5hZGREZWxlZ2F0ZShcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcIm9ua2V5ZG93blwiOiBmdW5jdGlvbihvRXZlbnQ6IGFueSkge1xuXHRcdFx0XHRcdFx0XHRpZiAoYUV4Y2x1ZGVkU2luZ2xlS2V5LmluZGV4T2Yob0V2ZW50LmtleS50b0xvd2VyQ2FzZSgpKSA+IC0xKSB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3Qgc0VsZW1lbnQgPSBvRXZlbnQudGFyZ2V0ID8gb0V2ZW50LnRhcmdldC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgOiB1bmRlZmluZWQ7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKHNFbGVtZW50ID09PSBcImlucHV0XCIpIHtcblx0XHRcdFx0XHRcdFx0XHRcdG9FdmVudC5zZXRNYXJrZWQoKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHRydWUsXG5cdFx0XHRcdFx0dW5kZWZpbmVkLFxuXHRcdFx0XHRcdHRydWVcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHRcdHJldHVybiB0aGlzO1xuXHRcdH1cblx0fSxcblxuXHRkZXN0cm95OiBmdW5jdGlvbih0aGlzOiBDb21tYW5kRXhlY3V0aW9uRXgsIGJTdXBwcmVzc0ludmFsaWRhdGUpIHtcblx0XHRjb25zdCBvUGFyZW50ID0gdGhpcy5nZXRQYXJlbnQoKTtcblx0XHRpZiAob1BhcmVudCkge1xuXHRcdFx0Y29uc3Qgb0NvbW1hbmQgPSB0aGlzLl9nZXRDb21tYW5kSW5mbygpO1xuXHRcdFx0aWYgKG9Db21tYW5kKSB7XG5cdFx0XHRcdFNob3J0Y3V0LnVucmVnaXN0ZXIodGhpcy5nZXRQYXJlbnQoKSwgb0NvbW1hbmQuc2hvcnRjdXQpO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5fY2xlYW51cENvbnRleHQob1BhcmVudCk7XG5cdFx0fVxuXHRcdEVsZW1lbnQucHJvdG90eXBlLmRlc3Ryb3kuYXBwbHkodGhpcywgW2JTdXBwcmVzc0ludmFsaWRhdGVdKTtcblx0fSxcblxuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG5cdC8vIEB0cy1pZ25vcmVcblx0c2V0VmlzaWJsZTogZnVuY3Rpb24odGhpczogQ29tbWFuZEV4ZWN1dGlvbkV4LCBiVmFsdWU6IGFueSkge1xuXHRcdGNvbnN0IG9Db21tYW5kID0gdGhpcy5fZ2V0Q29tbWFuZEluZm8oKTtcblx0XHRpZiAob0NvbW1hbmQpIHtcblx0XHRcdHJldHVybiBDb21tYW5kRXhlY3V0aW9uLnByb3RvdHlwZS5zZXRWaXNpYmxlLmFwcGx5KHRoaXMsIFtiVmFsdWVdKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0TG9nLmluZm8oXCJUaGVyZSBpcyBubyBzaG9ydGN1dCBkZWZpbml0aW9uIHJlZ2lzdGVyZWQgaW4gdGhlIG1hbmlmZXN0IGZvciB0aGUgY29tbWFuZCA6IFwiICsgdGhpcy5nZXRDb21tYW5kKCkpO1xuXHRcdH1cblx0fVxufSk7XG5cbmV4cG9ydCBkZWZhdWx0IEN1c3RvbUNvbW1hbmRFeGVjdXRpb247XG4iXX0=
@@ -0,0 +1,72 @@
1
+ import CommandExecution from "sap/ui/core/CommandExecution";
2
+ import Log from "sap/base/Log";
3
+ import Element from "sap/ui/core/Element";
4
+ import Shortcut from "sap/ui/core/Shortcut";
5
+
6
+ type CommandExecutionEx = CommandExecution & {
7
+ setParent(oParent: any): void;
8
+ _getCommandInfo(): any;
9
+ _cleanupContext(oParent: any): void;
10
+ };
11
+
12
+ const CustomCommandExecution = CommandExecution.extend("sap.fe.core.controls.CommandExecution", {
13
+ setParent: function(oParent: any) {
14
+ const aExcludedSingleKey = ["escape"];
15
+ (CommandExecution.prototype as any).setParent.apply(this, [oParent]);
16
+ const aCommands = oParent.data("sap.ui.core.Shortcut");
17
+ if (Array.isArray(aCommands) && aCommands.length > 0) {
18
+ const oCommand = oParent.data("sap.ui.core.Shortcut")[aCommands.length - 1],
19
+ oShortcut = oCommand.shortcutSpec;
20
+ if (oShortcut && aExcludedSingleKey.indexOf(oShortcut.key) > -1) {
21
+ // Check if single key shortcut
22
+ for (const key in oShortcut) {
23
+ if (oShortcut[key] && key !== "key") {
24
+ return this;
25
+ }
26
+ }
27
+ // Need to disable ShortCut when user press single shortcut key into an input
28
+ oParent.addDelegate(
29
+ {
30
+ "onkeydown": function(oEvent: any) {
31
+ if (aExcludedSingleKey.indexOf(oEvent.key.toLowerCase()) > -1) {
32
+ const sElement = oEvent.target ? oEvent.target.tagName.toLowerCase() : undefined;
33
+ if (sElement === "input") {
34
+ oEvent.setMarked();
35
+ }
36
+ }
37
+ }
38
+ },
39
+ true,
40
+ undefined,
41
+ true
42
+ );
43
+ }
44
+ return this;
45
+ }
46
+ },
47
+
48
+ destroy: function(this: CommandExecutionEx, bSuppressInvalidate) {
49
+ const oParent = this.getParent();
50
+ if (oParent) {
51
+ const oCommand = this._getCommandInfo();
52
+ if (oCommand) {
53
+ Shortcut.unregister(this.getParent(), oCommand.shortcut);
54
+ }
55
+ this._cleanupContext(oParent);
56
+ }
57
+ Element.prototype.destroy.apply(this, [bSuppressInvalidate]);
58
+ },
59
+
60
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
61
+ // @ts-ignore
62
+ setVisible: function(this: CommandExecutionEx, bValue: any) {
63
+ const oCommand = this._getCommandInfo();
64
+ if (oCommand) {
65
+ return CommandExecution.prototype.setVisible.apply(this, [bValue]);
66
+ } else {
67
+ Log.info("There is no shortcut definition registered in the manifest for the command : " + this.getCommand());
68
+ }
69
+ }
70
+ });
71
+
72
+ export default CustomCommandExecution;
@@ -1,81 +1,97 @@
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/ui/core/Control"], function(Control) {
6
- "use strict";
5
+ sap.ui.define(["sap/ui/core/Control"], function (Control) {
6
+ "use strict";
7
7
 
8
- return Control.extend("sap.fe.core.controls.ConditionalWrapper", {
9
- metadata: {
10
- interfaces: ["sap.ui.core.IFormContent"],
11
- properties: {
12
- width: {
13
- type: "sap.ui.core.CSSSize",
14
- defaultValue: null
15
- },
16
- formDoNotAdjustWidth: {
17
- type: "boolean",
18
- defaultValue: false
19
- },
20
- condition: {
21
- type: "boolean",
22
- defaultValue: false
23
- }
24
- },
25
- associations: {
26
- /**
27
- * Association to controls / IDs that label this control (see WAI-ARIA attribute aria-labelledby).
28
- */
29
- ariaLabelledBy: { type: "sap.ui.core.Control", multiple: true, singularName: "ariaLabelledBy" }
30
- },
31
- defaultAggregation: "contentTrue",
32
- aggregations: {
33
- contentTrue: { type: "sap.ui.core.Control", multiple: false },
34
- contentFalse: { type: "sap.ui.core.Control", multiple: false }
35
- }
36
- },
37
- enhanceAccessibilityState: function(oElement, mAriaProps) {
38
- var oParent = this.getParent();
8
+ var ConditionalWrapper = Control.extend("sap.fe.core.controls.ConditionalWrapper", {
9
+ metadata: {
10
+ interfaces: ["sap.ui.core.IFormContent"],
11
+ properties: {
12
+ width: {
13
+ type: "sap.ui.core.CSSSize",
14
+ defaultValue: null
15
+ },
16
+ formDoNotAdjustWidth: {
17
+ type: "boolean",
18
+ defaultValue: false
19
+ },
20
+ condition: {
21
+ type: "boolean",
22
+ defaultValue: false
23
+ }
24
+ },
25
+ associations: {
26
+ /**
27
+ * Association to controls / IDs that label this control (see WAI-ARIA attribute aria-labelledby).
28
+ */
29
+ ariaLabelledBy: {
30
+ type: "sap.ui.core.Control",
31
+ multiple: true,
32
+ singularName: "ariaLabelledBy"
33
+ }
34
+ },
35
+ defaultAggregation: "contentTrue",
36
+ aggregations: {
37
+ contentTrue: {
38
+ type: "sap.ui.core.Control",
39
+ multiple: false
40
+ },
41
+ contentFalse: {
42
+ type: "sap.ui.core.Control",
43
+ multiple: false
44
+ }
45
+ }
46
+ },
47
+ enhanceAccessibilityState: function (oElement, mAriaProps) {
48
+ var oParent = this.getParent();
39
49
 
40
- if (oParent && oParent.enhanceAccessibilityState) {
41
- oParent.enhanceAccessibilityState(this, mAriaProps);
42
- }
50
+ if (oParent && oParent.enhanceAccessibilityState) {
51
+ oParent.enhanceAccessibilityState(this, mAriaProps);
52
+ }
43
53
 
44
- return mAriaProps;
45
- },
46
- _setAriaLabelledBy: function(oContent) {
47
- if (oContent && oContent.addAriaLabelledBy) {
48
- var aAriaLabelledBy = this.getAriaLabelledBy();
54
+ return mAriaProps;
55
+ },
56
+ _setAriaLabelledBy: function (oContent) {
57
+ if (oContent && oContent.addAriaLabelledBy) {
58
+ var aAriaLabelledBy = this.getAriaLabelledBy();
49
59
 
50
- for (var i = 0; i < aAriaLabelledBy.length; i++) {
51
- var sId = aAriaLabelledBy[i];
52
- var aAriaLabelledBys = oContent.getAriaLabelledBy() || [];
53
- if (aAriaLabelledBys.indexOf(sId) === -1) {
54
- oContent.addAriaLabelledBy(sId);
55
- }
56
- }
57
- }
58
- },
59
- onBeforeRendering: function() {
60
- // before calling the renderer of the ConditionalWrapper parent control may have set ariaLabelledBy
61
- // we ensure it is passed to its inner controls
62
- this._setAriaLabelledBy(this.getContentTrue());
63
- this._setAriaLabelledBy(this.getContentFalse());
64
- },
65
- renderer: {
66
- apiVersion: 2,
67
- render: function(oRm, oControl) {
68
- oRm.openStart("div", oControl);
69
- oRm.style("width", oControl.getWidth());
70
- oRm.style("display", "inline-block");
71
- oRm.openEnd();
72
- if (oControl.getCondition()) {
73
- oRm.renderControl(oControl.getContentTrue());
74
- } else {
75
- oRm.renderControl(oControl.getContentFalse());
76
- }
77
- oRm.close("div"); // end of the complete Control
78
- }
79
- }
80
- });
81
- });
60
+ for (var i = 0; i < aAriaLabelledBy.length; i++) {
61
+ var sId = aAriaLabelledBy[i];
62
+ var aAriaLabelledBys = oContent.getAriaLabelledBy() || [];
63
+
64
+ if (aAriaLabelledBys.indexOf(sId) === -1) {
65
+ oContent.addAriaLabelledBy(sId);
66
+ }
67
+ }
68
+ }
69
+ },
70
+ onBeforeRendering: function () {
71
+ // before calling the renderer of the ConditionalWrapper parent control may have set ariaLabelledBy
72
+ // we ensure it is passed to its inner controls
73
+ this._setAriaLabelledBy(this.getContentTrue());
74
+
75
+ this._setAriaLabelledBy(this.getContentFalse());
76
+ },
77
+ renderer: {
78
+ apiVersion: 2,
79
+ render: function (oRm, oControl) {
80
+ oRm.openStart("div", oControl);
81
+ oRm.style("width", oControl.getWidth());
82
+ oRm.style("display", "inline-block");
83
+ oRm.openEnd();
84
+
85
+ if (oControl.getCondition()) {
86
+ oRm.renderControl(oControl.getContentTrue());
87
+ } else {
88
+ oRm.renderControl(oControl.getContentFalse());
89
+ }
90
+
91
+ oRm.close("div"); // end of the complete Control
92
+ }
93
+ }
94
+ });
95
+ return ConditionalWrapper;
96
+ }, false);
97
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNvbmRpdGlvbmFsV3JhcHBlci50cyJdLCJuYW1lcyI6WyJDb25kaXRpb25hbFdyYXBwZXIiLCJDb250cm9sIiwiZXh0ZW5kIiwibWV0YWRhdGEiLCJpbnRlcmZhY2VzIiwicHJvcGVydGllcyIsIndpZHRoIiwidHlwZSIsImRlZmF1bHRWYWx1ZSIsImZvcm1Eb05vdEFkanVzdFdpZHRoIiwiY29uZGl0aW9uIiwiYXNzb2NpYXRpb25zIiwiYXJpYUxhYmVsbGVkQnkiLCJtdWx0aXBsZSIsInNpbmd1bGFyTmFtZSIsImRlZmF1bHRBZ2dyZWdhdGlvbiIsImFnZ3JlZ2F0aW9ucyIsImNvbnRlbnRUcnVlIiwiY29udGVudEZhbHNlIiwiZW5oYW5jZUFjY2Vzc2liaWxpdHlTdGF0ZSIsIm9FbGVtZW50IiwibUFyaWFQcm9wcyIsIm9QYXJlbnQiLCJnZXRQYXJlbnQiLCJfc2V0QXJpYUxhYmVsbGVkQnkiLCJvQ29udGVudCIsImFkZEFyaWFMYWJlbGxlZEJ5IiwiYUFyaWFMYWJlbGxlZEJ5IiwiZ2V0QXJpYUxhYmVsbGVkQnkiLCJpIiwibGVuZ3RoIiwic0lkIiwiYUFyaWFMYWJlbGxlZEJ5cyIsImluZGV4T2YiLCJvbkJlZm9yZVJlbmRlcmluZyIsImdldENvbnRlbnRUcnVlIiwiZ2V0Q29udGVudEZhbHNlIiwicmVuZGVyZXIiLCJhcGlWZXJzaW9uIiwicmVuZGVyIiwib1JtIiwib0NvbnRyb2wiLCJvcGVuU3RhcnQiLCJzdHlsZSIsImdldFdpZHRoIiwib3BlbkVuZCIsImdldENvbmRpdGlvbiIsInJlbmRlckNvbnRyb2wiLCJjbG9zZSJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7OztBQU1BLE1BQU1BLGtCQUFrQixHQUFHQyxPQUFPLENBQUNDLE1BQVIsQ0FBZSx5Q0FBZixFQUEwRDtBQUNwRkMsSUFBQUEsUUFBUSxFQUFFO0FBQ1RDLE1BQUFBLFVBQVUsRUFBRSxDQUFDLDBCQUFELENBREg7QUFFVEMsTUFBQUEsVUFBVSxFQUFFO0FBQ1hDLFFB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QUFDNUJOLFVBQUFBLEdBQUcsQ0FBQ08sYUFBSixDQUFrQk4sUUFBUSxDQUFDTixjQUFULEVBQWxCO0FBQ0EsU0FGRCxNQUVPO0FBQ05LLFVBQUFBLEdBQUcsQ0FBQ08sYUFBSixDQUFrQk4sUUFBUSxDQUFDTCxlQUFULEVBQWxCO0FBQ0E7O0FBQ0RJLFFBQUFBLEdBQUcsQ0FBQ1EsS0FBSixDQUFVLEtBQVYsRUFWeUMsQ0FVdkI7QUFDbEI7QUFiUTtBQXpEMEUsR0FBMUQsQ0FBM0I7U0EwRWVoRCxrQiIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcblxudHlwZSBDb25kaXRpb25hbFdyYXBwZXJUeXBlID0gQ29udHJvbCAmIHtcblx0Z2V0Q29udGVudFRydWUoKTogQ29udHJvbDtcblx0Z2V0Q29udGVudEZhbHNlKCk6IENvbnRyb2w7XG5cdF9zZXRBcmlhTGFiZWxsZWRCeShvQ29udHJvbDogQ29udHJvbCk6IHZvaWQ7XG5cdGdldEFyaWFMYWJlbGxlZEJ5KCk6IENvbnRyb2xbXTtcbn07XG5jb25zdCBDb25kaXRpb25hbFdyYXBwZXIgPSBDb250cm9sLmV4dGVuZChcInNhcC5mZS5jb3JlLmNvbnRyb2xzLkNvbmRpdGlvbmFsV3JhcHBlclwiLCB7XG5cdG1ldGFkYXRhOiB7XG5cdFx0aW50ZXJmYWNlczogW1wic2FwLnVpLmNvcmUuSUZvcm1Db250ZW50XCJdLFxuXHRcdHByb3BlcnRpZXM6IHtcblx0XHRcdHdpZHRoOiB7XG5cdFx0XHRcdHR5cGU6IFwic2FwLnVpLmNvcmUuQ1NTU2l6ZVwiLFxuXHRcdFx0XHRkZWZhdWx0VmFsdWU6IG51bGxcblx0XHRcdH0sXG5cdFx0XHRmb3JtRG9Ob3RBZGp1c3RXaWR0aDoge1xuXHRcdFx0XHR0eXBlOiBcImJvb2xlYW5cIixcblx0XHRcdFx0ZGVmYXVsdFZhbHVlOiBmYWxzZVxuXHRcdFx0fSxcblx0XHRcdGNvbmRpdGlvbjoge1xuXHRcdFx0XHR0eXBlOiBcImJvb2xlYW5cIixcblx0XHRcdFx0ZGVmYXVsdFZhbHVlOiBmYWxzZVxuXHRcdFx0fVxuXHRcdH0sXG5cdFx0YXNzb2NpYXRpb25zOiB7XG5cdFx0XHQvKipcblx0XHRcdCAqIEFzc29jaWF0aW9uIHRvIGNvbnRyb2xzIC8gSURzIHRoYXQgbGFiZWwgdGhpcyBjb250cm9sIChzZWUgV0FJLUFSSUEgYXR0cmlidXRlIGFyaWEtbGFiZWxsZWRieSkuXG5cdFx0XHQgKi9cblx0XHRcdGFyaWFMYWJlbGxlZEJ5OiB7IHR5cGU6IFwic2FwLnVpLmNvcmUuQ29udHJvbFwiLCBtdWx0aXBsZTogdHJ1ZSwgc2luZ3VsYXJOYW1lOiBcImFyaWFMYWJlbGxlZEJ5XCIgfVxuXHRcdH0sXG5cdFx0ZGVmYXVsdEFnZ3JlZ2F0aW9uOiBcImNvbnRlbnRUcnVlXCIsXG5cdFx0YWdncmVnYXRpb25zOiB7XG5cdFx0XHRjb250ZW50VHJ1ZTogeyB0eXBlOiBcInNhcC51aS5jb3JlLkNvbnRyb2xcIiwgbXVsdGlwbGU6IGZhbHNlIH0sXG5cdFx0XHRjb250ZW50RmFsc2U6IHsgdHlwZTogXCJzYXAudWkuY29yZS5Db250cm9sXCIsIG11bHRpcGxlOiBmYWxzZSB9XG5cdFx0fVxuXHR9LFxuXHRlbmhhbmNlQWNjZXNzaWJpbGl0eVN0YXRlOiBmdW5jdGlvbihvRWxlbWVudDogYW55LCBtQXJpYVByb3BzOiBhbnkpIHtcblx0XHRjb25zdCBvUGFyZW50ID0gdGhpcy5nZXRQYXJlbnQoKSBhcyBhbnk7XG5cblx0XHRpZiAob1BhcmVudCAmJiBvUGFyZW50LmVuaGFuY2VBY2Nlc3NpYmlsaXR5U3RhdGUpIHtcblx0XHRcdG9QYXJlbnQuZW5oYW5jZUFjY2Vzc2liaWxpdHlTdGF0ZSh0aGlzLCBtQXJpYVByb3BzKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gbUFyaWFQcm9wcztcblx0fSxcblx0X3NldEFyaWFMYWJlbGxlZEJ5OiBmdW5jdGlvbih0aGlzOiBDb25kaXRpb25hbFdyYXBwZXJUeXBlLCBvQ29udGVudDogYW55KSB7XG5cdFx0aWYgKG9Db250ZW50ICYmIG9Db250ZW50LmFkZEFyaWFMYWJlbGxlZEJ5KSB7XG5cdFx0XHRjb25zdCBhQXJpYUxhYmVsbGVkQnkgPSB0aGlzLmdldEFyaWFMYWJlbGxlZEJ5KCk7XG5cblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgYUFyaWFMYWJlbGxlZEJ5Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdGNvbnN0IHNJZCA9IGFBcmlhTGFiZWxsZWRCeVtpXTtcblx0XHRcdFx0Y29uc3QgYUFyaWFMYWJlbGxlZEJ5cyA9IG9Db250ZW50LmdldEFyaWFMYWJlbGxlZEJ5KCkgfHwgW107XG5cdFx0XHRcdGlmIChhQXJpYUxhYmVsbGVkQnlzLmluZGV4T2Yoc0lkKSA9PT0gLTEpIHtcblx0XHRcdFx0XHRvQ29udGVudC5hZGRBcmlhTGFiZWxsZWRCeShzSWQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXHRvbkJlZm9yZVJlbmRlcmluZzogZnVuY3Rpb24odGhpczogQ29uZGl0aW9uYWxXcmFwcGVyVHlwZSkge1xuXHRcdC8vIGJlZm9yZSBjYWxsaW5nIHRoZSByZW5kZXJlciBvZiB0aGUgQ29uZGl0aW9uYWxXcmFwcGVyIHBhcmVudCBjb250cm9sIG1heSBoYXZlIHNldCBhcmlhTGFiZWxsZWRCeVxuXHRcdC8vIHdlIGVuc3VyZSBpdCBpcyBwYXNzZWQgdG8gaXRzIGlubmVyIGNvbnRyb2xzXG5cdFx0dGhpcy5fc2V0QXJpYUxhYmVsbGVkQnkodGhpcy5nZXRDb250ZW50VHJ1ZSgpKTtcblx0XHR0aGlzLl9zZXRBcmlhTGFiZWxsZWRCeSh0aGlzLmdldENvbnRlbnRGYWxzZSgpKTtcblx0fSxcblx0cmVuZGVyZXI6IHtcblx0XHRhcGlWZXJzaW9uOiAyLFxuXHRcdHJlbmRlcjogZnVuY3Rpb24ob1JtOiBhbnksIG9Db250cm9sOiBhbnkpIHtcblx0XHRcdG9SbS5vcGVuU3RhcnQoXCJkaXZcIiwgb0NvbnRyb2wpO1xuXHRcdFx0b1JtLnN0eWxlKFwid2lkdGhcIiwgb0NvbnRyb2wuZ2V0V2lkdGgoKSk7XG5cdFx0XHRvUm0uc3R5bGUoXCJkaXNwbGF5XCIsIFwiaW5saW5lLWJsb2NrXCIpO1xuXHRcdFx0b1JtLm9wZW5FbmQoKTtcblx0XHRcdGlmIChvQ29udHJvbC5nZXRDb25kaXRpb24oKSkge1xuXHRcdFx0XHRvUm0ucmVuZGVyQ29udHJvbChvQ29udHJvbC5nZXRDb250ZW50VHJ1ZSgpKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdG9SbS5yZW5kZXJDb250cm9sKG9Db250cm9sLmdldENvbnRlbnRGYWxzZSgpKTtcblx0XHRcdH1cblx0XHRcdG9SbS5jbG9zZShcImRpdlwiKTsgLy8gZW5kIG9mIHRoZSBjb21wbGV0ZSBDb250cm9sXG5cdFx0fVxuXHR9XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgQ29uZGl0aW9uYWxXcmFwcGVyO1xuIl19
@@ -0,0 +1,83 @@
1
+ import Control from "sap/ui/core/Control";
2
+
3
+ type ConditionalWrapperType = Control & {
4
+ getContentTrue(): Control;
5
+ getContentFalse(): Control;
6
+ _setAriaLabelledBy(oControl: Control): void;
7
+ getAriaLabelledBy(): Control[];
8
+ };
9
+ const ConditionalWrapper = Control.extend("sap.fe.core.controls.ConditionalWrapper", {
10
+ metadata: {
11
+ interfaces: ["sap.ui.core.IFormContent"],
12
+ properties: {
13
+ width: {
14
+ type: "sap.ui.core.CSSSize",
15
+ defaultValue: null
16
+ },
17
+ formDoNotAdjustWidth: {
18
+ type: "boolean",
19
+ defaultValue: false
20
+ },
21
+ condition: {
22
+ type: "boolean",
23
+ defaultValue: false
24
+ }
25
+ },
26
+ associations: {
27
+ /**
28
+ * Association to controls / IDs that label this control (see WAI-ARIA attribute aria-labelledby).
29
+ */
30
+ ariaLabelledBy: { type: "sap.ui.core.Control", multiple: true, singularName: "ariaLabelledBy" }
31
+ },
32
+ defaultAggregation: "contentTrue",
33
+ aggregations: {
34
+ contentTrue: { type: "sap.ui.core.Control", multiple: false },
35
+ contentFalse: { type: "sap.ui.core.Control", multiple: false }
36
+ }
37
+ },
38
+ enhanceAccessibilityState: function(oElement: any, mAriaProps: any) {
39
+ const oParent = this.getParent() as any;
40
+
41
+ if (oParent && oParent.enhanceAccessibilityState) {
42
+ oParent.enhanceAccessibilityState(this, mAriaProps);
43
+ }
44
+
45
+ return mAriaProps;
46
+ },
47
+ _setAriaLabelledBy: function(this: ConditionalWrapperType, oContent: any) {
48
+ if (oContent && oContent.addAriaLabelledBy) {
49
+ const aAriaLabelledBy = this.getAriaLabelledBy();
50
+
51
+ for (let i = 0; i < aAriaLabelledBy.length; i++) {
52
+ const sId = aAriaLabelledBy[i];
53
+ const aAriaLabelledBys = oContent.getAriaLabelledBy() || [];
54
+ if (aAriaLabelledBys.indexOf(sId) === -1) {
55
+ oContent.addAriaLabelledBy(sId);
56
+ }
57
+ }
58
+ }
59
+ },
60
+ onBeforeRendering: function(this: ConditionalWrapperType) {
61
+ // before calling the renderer of the ConditionalWrapper parent control may have set ariaLabelledBy
62
+ // we ensure it is passed to its inner controls
63
+ this._setAriaLabelledBy(this.getContentTrue());
64
+ this._setAriaLabelledBy(this.getContentFalse());
65
+ },
66
+ renderer: {
67
+ apiVersion: 2,
68
+ render: function(oRm: any, oControl: any) {
69
+ oRm.openStart("div", oControl);
70
+ oRm.style("width", oControl.getWidth());
71
+ oRm.style("display", "inline-block");
72
+ oRm.openEnd();
73
+ if (oControl.getCondition()) {
74
+ oRm.renderControl(oControl.getContentTrue());
75
+ } else {
76
+ oRm.renderControl(oControl.getContentFalse());
77
+ }
78
+ oRm.close("div"); // end of the complete Control
79
+ }
80
+ }
81
+ });
82
+
83
+ export default ConditionalWrapper;