@openui5/sap.ui.core 1.108.2 → 1.110.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 (798) hide show
  1. package/.eslintrc.json +7 -25
  2. package/.reuse/dep5 +16 -16
  3. package/THIRDPARTY.txt +2 -2
  4. package/package.json +1 -1
  5. package/src/jquery.sap.act.js +1 -1
  6. package/src/jquery.sap.dom.js +1 -1
  7. package/src/jquery.sap.encoder.js +1 -1
  8. package/src/jquery.sap.events.js +1 -1
  9. package/src/jquery.sap.global.js +2 -2
  10. package/src/jquery.sap.history.js +1 -1
  11. package/src/jquery.sap.keycodes.js +1 -1
  12. package/src/jquery.sap.mobile.js +1 -1
  13. package/src/jquery.sap.promise.js +1 -1
  14. package/src/jquery.sap.properties.js +2 -2
  15. package/src/jquery.sap.resources.js +2 -2
  16. package/src/jquery.sap.script.js +2 -2
  17. package/src/jquery.sap.sjax.js +1 -1
  18. package/src/jquery.sap.storage.js +4 -4
  19. package/src/jquery.sap.strings.js +1 -1
  20. package/src/jquery.sap.stubs.js +1 -1
  21. package/src/jquery.sap.trace.js +1 -1
  22. package/src/jquery.sap.ui.js +1 -1
  23. package/src/jquery.sap.xml.js +1 -1
  24. package/src/sap/base/Log.js +126 -85
  25. package/src/sap/base/assert.js +1 -1
  26. package/src/sap/base/i18n/ResourceBundle.js +42 -12
  27. package/src/sap/base/security/URLListValidator.js +1 -1
  28. package/src/sap/base/security/URLWhitelist.js +1 -1
  29. package/src/sap/base/security/encodeCSS.js +1 -1
  30. package/src/sap/base/security/encodeJS.js +1 -1
  31. package/src/sap/base/security/encodeURL.js +1 -1
  32. package/src/sap/base/security/encodeURLParameters.js +1 -1
  33. package/src/sap/base/security/encodeXML.js +1 -1
  34. package/src/sap/base/security/sanitizeHTML.js +1 -1
  35. package/src/sap/base/strings/camelize.js +1 -1
  36. package/src/sap/base/strings/capitalize.js +1 -1
  37. package/src/sap/base/strings/escapeRegExp.js +1 -1
  38. package/src/sap/base/strings/formatMessage.js +1 -1
  39. package/src/sap/base/strings/hash.js +1 -1
  40. package/src/sap/base/strings/hyphenate.js +1 -1
  41. package/src/sap/base/strings/toHex.js +1 -1
  42. package/src/sap/base/strings/whitespaceReplacer.js +1 -1
  43. package/src/sap/base/util/Deferred.js +1 -1
  44. package/src/sap/base/util/JSTokenizer.js +1 -1
  45. package/src/sap/base/util/LoaderExtensions.js +1 -1
  46. package/src/sap/base/util/ObjectPath.js +1 -1
  47. package/src/sap/base/util/Properties.js +1 -1
  48. package/src/sap/base/util/UriParameters.js +1 -1
  49. package/src/sap/base/util/Version.js +1 -1
  50. package/src/sap/base/util/_merge.js +1 -1
  51. package/src/sap/base/util/array/diff.js +1 -1
  52. package/src/sap/base/util/array/uniqueSort.js +1 -1
  53. package/src/sap/base/util/deepClone.js +1 -1
  54. package/src/sap/base/util/deepEqual.js +1 -1
  55. package/src/sap/base/util/deepExtend.js +1 -1
  56. package/src/sap/base/util/defineCoupledProperty.js +1 -1
  57. package/src/sap/base/util/defineLazyProperty.js +1 -1
  58. package/src/sap/base/util/each.js +1 -1
  59. package/src/sap/base/util/extend.js +1 -1
  60. package/src/sap/base/util/fetch.js +4 -4
  61. package/src/sap/base/util/includes.js +2 -2
  62. package/src/sap/base/util/isEmptyObject.js +1 -1
  63. package/src/sap/base/util/isPlainObject.js +1 -1
  64. package/src/sap/base/util/merge.js +1 -1
  65. package/src/sap/base/util/mixedFetch.js +1 -1
  66. package/src/sap/base/util/now.js +1 -1
  67. package/src/sap/base/util/resolveReference.js +1 -1
  68. package/src/sap/base/util/restricted/_CancelablePromise.js +1 -1
  69. package/src/sap/base/util/restricted/_castArray.js +2 -2
  70. package/src/sap/base/util/restricted/_compact.js +2 -2
  71. package/src/sap/base/util/restricted/_curry.js +2 -2
  72. package/src/sap/base/util/restricted/_debounce.js +2 -2
  73. package/src/sap/base/util/restricted/_difference.js +2 -2
  74. package/src/sap/base/util/restricted/_differenceBy.js +2 -2
  75. package/src/sap/base/util/restricted/_differenceWith.js +2 -2
  76. package/src/sap/base/util/restricted/_flatMap.js +2 -2
  77. package/src/sap/base/util/restricted/_flatMapDeep.js +2 -2
  78. package/src/sap/base/util/restricted/_flatMapDepth.js +2 -2
  79. package/src/sap/base/util/restricted/_flatten.js +2 -2
  80. package/src/sap/base/util/restricted/_flattenDeep.js +2 -2
  81. package/src/sap/base/util/restricted/_flattenDepth.js +2 -2
  82. package/src/sap/base/util/restricted/_intersection.js +2 -2
  83. package/src/sap/base/util/restricted/_intersectionBy.js +2 -2
  84. package/src/sap/base/util/restricted/_intersectionWith.js +2 -2
  85. package/src/sap/base/util/restricted/_isEqual.js +2 -2
  86. package/src/sap/base/util/restricted/_isEqualWith.js +2 -2
  87. package/src/sap/base/util/restricted/_isNil.js +2 -2
  88. package/src/sap/base/util/restricted/_max.js +2 -2
  89. package/src/sap/base/util/restricted/_merge.js +2 -2
  90. package/src/sap/base/util/restricted/_mergeWith.js +2 -2
  91. package/src/sap/base/util/restricted/_min.js +2 -2
  92. package/src/sap/base/util/restricted/_omit.js +2 -2
  93. package/src/sap/base/util/restricted/_pick.js +2 -2
  94. package/src/sap/base/util/restricted/_pickBy.js +2 -2
  95. package/src/sap/base/util/restricted/_throttle.js +2 -2
  96. package/src/sap/base/util/restricted/_toArray.js +2 -2
  97. package/src/sap/base/util/restricted/_union.js +2 -2
  98. package/src/sap/base/util/restricted/_unionBy.js +2 -2
  99. package/src/sap/base/util/restricted/_unionWith.js +2 -2
  100. package/src/sap/base/util/restricted/_uniq.js +2 -2
  101. package/src/sap/base/util/restricted/_uniqBy.js +2 -2
  102. package/src/sap/base/util/restricted/_uniqWith.js +2 -2
  103. package/src/sap/base/util/restricted/_without.js +2 -2
  104. package/src/sap/base/util/restricted/_xor.js +2 -2
  105. package/src/sap/base/util/restricted/_xorBy.js +2 -2
  106. package/src/sap/base/util/restricted/_xorWith.js +2 -2
  107. package/src/sap/base/util/restricted/_zipObject.js +2 -2
  108. package/src/sap/base/util/restricted/_zipObjectDeep.js +2 -2
  109. package/src/sap/base/util/syncFetch.js +2 -2
  110. package/src/sap/base/util/uid.js +1 -1
  111. package/src/sap/base/util/values.js +3 -2
  112. package/src/sap/ui/Device.js +4 -4
  113. package/src/sap/ui/Global.js +5 -5
  114. package/src/sap/ui/VersionInfo.js +1 -1
  115. package/src/sap/ui/base/BindingInfo.js +1 -1
  116. package/src/sap/ui/base/BindingParser.js +1 -1
  117. package/src/sap/ui/base/DataType.js +1 -1
  118. package/src/sap/ui/base/Event.js +2 -2
  119. package/src/sap/ui/base/EventProvider.js +2 -2
  120. package/src/sap/ui/base/Exception.js +1 -1
  121. package/src/sap/ui/base/ExpressionParser.js +1 -1
  122. package/src/sap/ui/base/Interface.js +2 -2
  123. package/src/sap/ui/base/ManagedObject.js +337 -233
  124. package/src/sap/ui/base/ManagedObjectMetadata.js +8 -6
  125. package/src/sap/ui/base/ManagedObjectObserver.js +1 -1
  126. package/src/sap/ui/base/ManagedObjectRegistry.js +1 -1
  127. package/src/sap/ui/base/Metadata.js +2 -2
  128. package/src/sap/ui/base/Object.js +21 -12
  129. package/src/sap/ui/base/ObjectPool.js +2 -2
  130. package/src/sap/ui/base/SyncPromise.js +1 -1
  131. package/src/sap/ui/base/syncXHRFix.js +1 -1
  132. package/src/sap/ui/core/.library +4 -4
  133. package/src/sap/ui/core/AccessKeysEnablement.js +1 -1
  134. package/src/sap/ui/core/AppCacheBuster.js +1 -1
  135. package/src/sap/ui/core/BlockLayerUtils.js +11 -4
  136. package/src/sap/ui/core/BusyIndicator.js +7 -5
  137. package/src/sap/ui/core/BusyIndicatorUtils.js +1 -1
  138. package/src/sap/ui/core/CalendarType.js +1 -1
  139. package/src/sap/ui/core/CommandExecution.js +1 -1
  140. package/src/sap/ui/core/Component.js +48 -34
  141. package/src/sap/ui/core/ComponentContainer.js +3 -3
  142. package/src/sap/ui/core/ComponentContainerRenderer.js +1 -1
  143. package/src/sap/ui/core/ComponentMetadata.js +2 -2
  144. package/src/sap/ui/core/ComponentSupport.js +2 -2
  145. package/src/sap/ui/core/Configuration.js +10 -7
  146. package/src/sap/ui/core/ContextMenuSupport.js +1 -1
  147. package/src/sap/ui/core/Control.js +11 -21
  148. package/src/sap/ui/core/Core.js +66 -986
  149. package/src/sap/ui/core/CustomData.js +2 -2
  150. package/src/sap/ui/core/CustomStyleClassSupport.js +1 -1
  151. package/src/sap/ui/core/DeclarativeSupport.js +2 -2
  152. package/src/sap/ui/core/Element.js +109 -28
  153. package/src/sap/ui/core/ElementMetadata.js +2 -2
  154. package/src/sap/ui/core/EnabledPropagator.js +2 -2
  155. package/src/sap/ui/core/EventBus.js +2 -2
  156. package/src/sap/ui/core/ExtensionPoint.js +1 -1
  157. package/src/sap/ui/core/FocusHandler.js +1 -1
  158. package/src/sap/ui/core/Fragment.js +2 -2
  159. package/src/sap/ui/core/HTML.js +2 -2
  160. package/src/sap/ui/core/HTMLRenderer.js +1 -1
  161. package/src/sap/ui/core/History.js +2 -2
  162. package/src/sap/ui/core/Icon.js +5 -3
  163. package/src/sap/ui/core/IconPool.js +1 -1
  164. package/src/sap/ui/core/IconRenderer.js +1 -1
  165. package/src/sap/ui/core/IndicationColorSupport.js +6 -6
  166. package/src/sap/ui/core/IntervalTrigger.js +2 -2
  167. package/src/sap/ui/core/InvisibleMessage.js +2 -2
  168. package/src/sap/ui/core/InvisibleRenderer.js +2 -2
  169. package/src/sap/ui/core/InvisibleText.js +11 -7
  170. package/src/sap/ui/core/Item.js +2 -2
  171. package/src/sap/ui/core/LabelEnablement.js +2 -2
  172. package/src/sap/ui/core/LayoutData.js +2 -2
  173. package/src/sap/ui/core/Lib.js +1595 -0
  174. package/src/sap/ui/core/ListItem.js +2 -2
  175. package/src/sap/ui/core/LocalBusyIndicator.js +2 -2
  176. package/src/sap/ui/core/LocalBusyIndicatorRenderer.js +1 -1
  177. package/src/sap/ui/core/LocalBusyIndicatorSupport.js +1 -1
  178. package/src/sap/ui/core/Locale.js +2 -2
  179. package/src/sap/ui/core/LocaleData.js +254 -26
  180. package/src/sap/ui/core/Manifest.js +5 -3
  181. package/src/sap/ui/core/Message.js +2 -2
  182. package/src/sap/ui/core/Patcher.js +1 -1
  183. package/src/sap/ui/core/Placeholder.js +3 -3
  184. package/src/sap/ui/core/Popup.js +1 -1
  185. package/src/sap/ui/core/RenderManager.js +83 -51
  186. package/src/sap/ui/core/Renderer.js +2 -2
  187. package/src/sap/ui/core/Rendering.js +30 -10
  188. package/src/sap/ui/core/ResizeHandler.js +61 -21
  189. package/src/sap/ui/core/ScrollBar.js +2 -2
  190. package/src/sap/ui/core/ScrollBarRenderer.js +1 -1
  191. package/src/sap/ui/core/SeparatorItem.js +2 -2
  192. package/src/sap/ui/core/Shortcut.js +1 -1
  193. package/src/sap/ui/core/ShortcutHint.js +5 -5
  194. package/src/sap/ui/core/ShortcutHintsMixin.js +1 -1
  195. package/src/sap/ui/core/StashedControlSupport.js +1 -1
  196. package/src/sap/ui/core/Title.js +2 -2
  197. package/src/sap/ui/core/TooltipBase.js +2 -2
  198. package/src/sap/ui/core/UIArea.js +10 -8
  199. package/src/sap/ui/core/UIComponent.js +9 -7
  200. package/src/sap/ui/core/UIComponentMetadata.js +2 -2
  201. package/src/sap/ui/core/ValueStateSupport.js +6 -6
  202. package/src/sap/ui/core/VariantLayoutData.js +2 -2
  203. package/src/sap/ui/core/XMLComposite.js +2 -2
  204. package/src/sap/ui/core/XMLCompositeMetadata.js +2 -2
  205. package/src/sap/ui/core/XMLTemplateProcessor.js +7 -7
  206. package/src/sap/ui/core/_ConfigurationProvider.js +1 -1
  207. package/src/sap/ui/core/_IconRegistry.js +5 -4
  208. package/src/sap/ui/core/_UrlResolver.js +1 -1
  209. package/src/sap/ui/core/cache/CacheManager.js +1 -1
  210. package/src/sap/ui/core/cache/CacheManagerNOP.js +1 -1
  211. package/src/sap/ui/core/cache/LRUPersistentCache.js +1 -1
  212. package/src/sap/ui/core/cldr/ar.json +1133 -429
  213. package/src/sap/ui/core/cldr/ar_EG.json +1133 -429
  214. package/src/sap/ui/core/cldr/ar_SA.json +1228 -525
  215. package/src/sap/ui/core/cldr/bg.json +815 -284
  216. package/src/sap/ui/core/cldr/ca.json +670 -101
  217. package/src/sap/ui/core/cldr/cs.json +689 -60
  218. package/src/sap/ui/core/cldr/cy.json +714 -325
  219. package/src/sap/ui/core/cldr/da.json +814 -305
  220. package/src/sap/ui/core/cldr/de.json +679 -115
  221. package/src/sap/ui/core/cldr/de_AT.json +669 -105
  222. package/src/sap/ui/core/cldr/de_CH.json +681 -117
  223. package/src/sap/ui/core/cldr/el.json +603 -128
  224. package/src/sap/ui/core/cldr/el_CY.json +603 -128
  225. package/src/sap/ui/core/cldr/en.json +600 -34
  226. package/src/sap/ui/core/cldr/en_AU.json +787 -210
  227. package/src/sap/ui/core/cldr/en_GB.json +759 -181
  228. package/src/sap/ui/core/cldr/en_HK.json +801 -221
  229. package/src/sap/ui/core/cldr/en_IE.json +800 -223
  230. package/src/sap/ui/core/cldr/en_IN.json +804 -223
  231. package/src/sap/ui/core/cldr/en_NZ.json +799 -222
  232. package/src/sap/ui/core/cldr/en_PG.json +800 -223
  233. package/src/sap/ui/core/cldr/en_SG.json +789 -209
  234. package/src/sap/ui/core/cldr/en_ZA.json +797 -220
  235. package/src/sap/ui/core/cldr/es.json +884 -385
  236. package/src/sap/ui/core/cldr/es_AR.json +791 -291
  237. package/src/sap/ui/core/cldr/es_BO.json +800 -300
  238. package/src/sap/ui/core/cldr/es_CL.json +758 -258
  239. package/src/sap/ui/core/cldr/es_CO.json +759 -259
  240. package/src/sap/ui/core/cldr/es_MX.json +945 -445
  241. package/src/sap/ui/core/cldr/es_PE.json +725 -225
  242. package/src/sap/ui/core/cldr/es_UY.json +729 -229
  243. package/src/sap/ui/core/cldr/es_VE.json +728 -228
  244. package/src/sap/ui/core/cldr/et.json +763 -232
  245. package/src/sap/ui/core/cldr/fa.json +975 -416
  246. package/src/sap/ui/core/cldr/fi.json +755 -125
  247. package/src/sap/ui/core/cldr/fr.json +606 -65
  248. package/src/sap/ui/core/cldr/fr_BE.json +603 -62
  249. package/src/sap/ui/core/cldr/fr_CA.json +622 -81
  250. package/src/sap/ui/core/cldr/fr_CH.json +603 -62
  251. package/src/sap/ui/core/cldr/fr_LU.json +606 -65
  252. package/src/sap/ui/core/cldr/he.json +1097 -538
  253. package/src/sap/ui/core/cldr/hi.json +630 -100
  254. package/src/sap/ui/core/cldr/hr.json +833 -80
  255. package/src/sap/ui/core/cldr/hu.json +670 -82
  256. package/src/sap/ui/core/cldr/id.json +686 -174
  257. package/src/sap/ui/core/cldr/it.json +586 -76
  258. package/src/sap/ui/core/cldr/it_CH.json +586 -76
  259. package/src/sap/ui/core/cldr/ja.json +592 -41
  260. package/src/sap/ui/core/cldr/kk.json +614 -69
  261. package/src/sap/ui/core/cldr/ko.json +673 -120
  262. package/src/sap/ui/core/cldr/lt.json +622 -87
  263. package/src/sap/ui/core/cldr/lv.json +741 -202
  264. package/src/sap/ui/core/cldr/ms.json +731 -250
  265. package/src/sap/ui/core/cldr/nb.json +624 -98
  266. package/src/sap/ui/core/cldr/nl.json +642 -63
  267. package/src/sap/ui/core/cldr/nl_BE.json +642 -63
  268. package/src/sap/ui/core/cldr/pl.json +821 -168
  269. package/src/sap/ui/core/cldr/pt.json +862 -350
  270. package/src/sap/ui/core/cldr/pt_PT.json +860 -346
  271. package/src/sap/ui/core/cldr/ro.json +668 -123
  272. package/src/sap/ui/core/cldr/ru.json +801 -211
  273. package/src/sap/ui/core/cldr/ru_UA.json +800 -210
  274. package/src/sap/ui/core/cldr/sk.json +674 -48
  275. package/src/sap/ui/core/cldr/sl.json +921 -295
  276. package/src/sap/ui/core/cldr/sr.json +698 -177
  277. package/src/sap/ui/core/cldr/sr_Latn.json +687 -178
  278. package/src/sap/ui/core/cldr/sv.json +770 -250
  279. package/src/sap/ui/core/cldr/th.json +746 -162
  280. package/src/sap/ui/core/cldr/tr.json +688 -98
  281. package/src/sap/ui/core/cldr/uk.json +936 -333
  282. package/src/sap/ui/core/cldr/vi.json +582 -70
  283. package/src/sap/ui/core/cldr/zh_CN.json +889 -333
  284. package/src/sap/ui/core/cldr/zh_HK.json +860 -304
  285. package/src/sap/ui/core/cldr/zh_SG.json +865 -309
  286. package/src/sap/ui/core/cldr/zh_TW.json +747 -177
  287. package/src/sap/ui/core/date/Buddhist.js +1 -1
  288. package/src/sap/ui/core/date/CalendarUtils.js +1 -1
  289. package/src/sap/ui/core/date/CalendarWeekNumbering.js +1 -1
  290. package/src/sap/ui/core/date/Gregorian.js +1 -1
  291. package/src/sap/ui/core/date/Islamic.js +1 -1
  292. package/src/sap/ui/core/date/Japanese.js +31 -1
  293. package/src/sap/ui/core/date/Persian.js +1 -1
  294. package/src/sap/ui/core/date/UniversalDate.js +1 -1
  295. package/src/sap/ui/core/date/UniversalDateUtils.js +1 -1
  296. package/src/sap/ui/core/date/_Calendars.js +1 -1
  297. package/src/sap/ui/core/delegate/ItemNavigation.js +18 -14
  298. package/src/sap/ui/core/delegate/ScrollEnablement.js +40 -3
  299. package/src/sap/ui/core/designtime/ComponentContainer.designtime.js +1 -1
  300. package/src/sap/ui/core/designtime/CustomData.designtime.js +1 -1
  301. package/src/sap/ui/core/designtime/Icon.designtime.js +1 -1
  302. package/src/sap/ui/core/designtime/UIComponent.designtime.js +1 -1
  303. package/src/sap/ui/core/designtime/library.designtime.js +1 -1
  304. package/src/sap/ui/core/designtime/mvc/ControllerExtensionTemplate.js +1 -1
  305. package/src/sap/ui/core/designtime/mvc/View.designtime.js +1 -1
  306. package/src/sap/ui/core/designtime/mvc/XMLView.designtime.js +1 -1
  307. package/src/sap/ui/core/dnd/DragAndDrop.js +3 -3
  308. package/src/sap/ui/core/dnd/DragDropBase.js +2 -2
  309. package/src/sap/ui/core/dnd/DragDropInfo.js +2 -2
  310. package/src/sap/ui/core/dnd/DragInfo.js +2 -2
  311. package/src/sap/ui/core/dnd/DropInfo.js +2 -2
  312. package/src/sap/ui/core/format/DateFormat.js +549 -294
  313. package/src/sap/ui/core/format/DateFormatTimezoneDisplay.js +1 -1
  314. package/src/sap/ui/core/format/FileSizeFormat.js +15 -5
  315. package/src/sap/ui/core/format/ListFormat.js +1 -1
  316. package/src/sap/ui/core/format/NumberFormat.js +155 -161
  317. package/src/sap/ui/core/format/TimezoneUtil.js +3 -3
  318. package/src/sap/ui/core/hyphenation/Hyphenation.js +2 -2
  319. package/src/sap/ui/core/hyphenation/HyphenationTestingWords.js +1 -1
  320. package/src/sap/ui/core/library.js +41 -13
  321. package/src/sap/ui/core/library.support.js +1 -1
  322. package/src/sap/ui/core/message/ControlMessageProcessor.js +2 -2
  323. package/src/sap/ui/core/message/Message.js +2 -2
  324. package/src/sap/ui/core/message/MessageManager.js +2 -2
  325. package/src/sap/ui/core/message/MessageMixin.js +1 -1
  326. package/src/sap/ui/core/message/MessageParser.js +2 -2
  327. package/src/sap/ui/core/message/MessageProcessor.js +2 -2
  328. package/src/sap/ui/core/messagebundle_bg.properties +1 -1
  329. package/src/sap/ui/core/messagebundle_fr.properties +1 -1
  330. package/src/sap/ui/core/messagebundle_th.properties +1 -1
  331. package/src/sap/ui/core/mvc/Controller.js +1 -1
  332. package/src/sap/ui/core/mvc/ControllerExtension.js +1 -1
  333. package/src/sap/ui/core/mvc/ControllerExtensionProvider.js +1 -1
  334. package/src/sap/ui/core/mvc/ControllerMetadata.js +1 -1
  335. package/src/sap/ui/core/mvc/EventHandlerResolver.js +1 -1
  336. package/src/sap/ui/core/mvc/HTMLView.js +2 -2
  337. package/src/sap/ui/core/mvc/HTMLViewRenderer.js +1 -1
  338. package/src/sap/ui/core/mvc/JSONView.js +2 -2
  339. package/src/sap/ui/core/mvc/JSONViewRenderer.js +1 -1
  340. package/src/sap/ui/core/mvc/JSView.js +2 -2
  341. package/src/sap/ui/core/mvc/JSViewRenderer.js +1 -1
  342. package/src/sap/ui/core/mvc/OverrideExecution.js +1 -1
  343. package/src/sap/ui/core/mvc/TemplateView.js +2 -2
  344. package/src/sap/ui/core/mvc/TemplateViewRenderer.js +1 -1
  345. package/src/sap/ui/core/mvc/View.js +4 -9
  346. package/src/sap/ui/core/mvc/ViewRenderer.js +1 -1
  347. package/src/sap/ui/core/mvc/ViewType.js +5 -1
  348. package/src/sap/ui/core/mvc/XMLProcessingMode.js +1 -1
  349. package/src/sap/ui/core/mvc/XMLView.js +2 -2
  350. package/src/sap/ui/core/mvc/XMLViewRenderer.js +1 -1
  351. package/src/sap/ui/core/plugin/DeclarativeSupport.js +2 -2
  352. package/src/sap/ui/core/plugin/LessSupport.js +3 -3
  353. package/src/sap/ui/core/plugin/TemplatingSupport.js +2 -2
  354. package/src/sap/ui/core/postmessage/Bus.js +13 -18
  355. package/src/sap/ui/core/postmessage/confirmationDialog.js +2 -2
  356. package/src/sap/ui/core/routing/HashChanger.js +1 -1
  357. package/src/sap/ui/core/routing/HashChangerBase.js +1 -1
  358. package/src/sap/ui/core/routing/History.js +1 -1
  359. package/src/sap/ui/core/routing/Route.js +1 -1
  360. package/src/sap/ui/core/routing/Router.js +1 -1
  361. package/src/sap/ui/core/routing/RouterHashChanger.js +1 -1
  362. package/src/sap/ui/core/routing/Target.js +19 -3
  363. package/src/sap/ui/core/routing/TargetCache.js +1 -1
  364. package/src/sap/ui/core/routing/Targets.js +7 -15
  365. package/src/sap/ui/core/routing/Views.js +1 -1
  366. package/src/sap/ui/core/routing/async/Route.js +1 -1
  367. package/src/sap/ui/core/routing/async/Target.js +15 -23
  368. package/src/sap/ui/core/routing/async/TargetCache.js +1 -3
  369. package/src/sap/ui/core/routing/async/Targets.js +1 -1
  370. package/src/sap/ui/core/routing/sync/Route.js +1 -1
  371. package/src/sap/ui/core/routing/sync/Target.js +1 -2
  372. package/src/sap/ui/core/routing/sync/TargetCache.js +1 -1
  373. package/src/sap/ui/core/routing/sync/Targets.js +1 -1
  374. package/src/sap/ui/core/rules/App.support.js +1 -1
  375. package/src/sap/ui/core/rules/Config.support.js +1 -1
  376. package/src/sap/ui/core/rules/CoreHelper.support.js +1 -1
  377. package/src/sap/ui/core/rules/Misc.support.js +1 -1
  378. package/src/sap/ui/core/rules/Model.support.js +1 -1
  379. package/src/sap/ui/core/rules/Rendering.support.js +1 -1
  380. package/src/sap/ui/core/rules/Theming.support.js +1 -1
  381. package/src/sap/ui/core/rules/View.support.js +1 -1
  382. package/src/sap/ui/core/search/OpenSearchProvider.js +2 -2
  383. package/src/sap/ui/core/search/SearchProvider.js +2 -2
  384. package/src/sap/ui/core/service/Service.js +2 -2
  385. package/src/sap/ui/core/service/ServiceFactory.js +2 -2
  386. package/src/sap/ui/core/service/ServiceFactoryRegistry.js +2 -2
  387. package/src/sap/ui/core/support/BootSupportTool.js +1 -1
  388. package/src/sap/ui/core/support/Hotkeys.js +1 -1
  389. package/src/sap/ui/core/support/Plugin.js +2 -2
  390. package/src/sap/ui/core/support/RuleEngineOpaExtension.js +9 -8
  391. package/src/sap/ui/core/support/Support.js +20 -12
  392. package/src/sap/ui/core/support/ToolsAPI.js +1 -1
  393. package/src/sap/ui/core/support/bootstrapFallback.js +1 -1
  394. package/src/sap/ui/core/support/controls/InteractionSlider.js +1 -1
  395. package/src/sap/ui/core/support/controls/InteractionTree.js +1 -1
  396. package/src/sap/ui/core/support/controls/ObjectViewer.js +1 -1
  397. package/src/sap/ui/core/support/controls/TimelineOverview.js +1 -1
  398. package/src/sap/ui/core/support/controls/TreeViewer.js +1 -1
  399. package/src/sap/ui/core/support/debugReboot.js +1 -1
  400. package/src/sap/ui/core/support/plugins/Breakpoint.js +1 -1
  401. package/src/sap/ui/core/support/plugins/ControlTree.js +2 -2
  402. package/src/sap/ui/core/support/plugins/Debugging.js +1 -1
  403. package/src/sap/ui/core/support/plugins/Interaction.js +2 -2
  404. package/src/sap/ui/core/support/plugins/LocalStorage.js +2 -2
  405. package/src/sap/ui/core/support/plugins/Performance.js +2 -2
  406. package/src/sap/ui/core/support/plugins/Selector.js +2 -2
  407. package/src/sap/ui/core/support/plugins/TechInfo.js +2 -2
  408. package/src/sap/ui/core/support/plugins/Trace.js +2 -2
  409. package/src/sap/ui/core/support/plugins/ViewInfo.js +2 -2
  410. package/src/sap/ui/core/support/techinfo/TechnicalInfo.fragment.xml +2 -1
  411. package/src/sap/ui/core/support/techinfo/TechnicalInfo.js +8 -6
  412. package/src/sap/ui/core/support/techinfo/TechnicalInfoDebugDialog.fragment.xml +1 -0
  413. package/src/sap/ui/core/support/techinfo/moduleTreeHelper.js +1 -1
  414. package/src/sap/ui/core/support/trace/E2eTraceLib.js +1 -1
  415. package/src/sap/ui/core/support/trace/EppLib.js +1 -1
  416. package/src/sap/ui/core/support/usage/EventBroadcaster.js +1 -1
  417. package/src/sap/ui/core/syncStyleClass.js +1 -1
  418. package/src/sap/ui/core/themes/base/Icon.less +17 -4
  419. package/src/sap/ui/core/themes/base/LocalBusyIndicator.less +1 -1
  420. package/src/sap/ui/core/themes/base/base.less +606 -92
  421. package/src/sap/ui/core/themes/base/fonts/SAP-icons.ttf +0 -0
  422. package/src/sap/ui/core/themes/base/global.less +64 -0
  423. package/src/sap/ui/core/themes/base/library.source.less +1 -1
  424. package/src/sap/ui/core/themes/sap_hcb/global.less +65 -0
  425. package/src/sap/ui/core/themes/sap_hcb/library.source.less +1 -1
  426. package/src/sap/ui/core/theming/Parameters.js +15 -14
  427. package/src/sap/ui/core/theming/ThemeHelper.js +48 -26
  428. package/src/sap/ui/core/theming/ThemeManager.js +4 -22
  429. package/src/sap/ui/core/tmpl/DOMAttribute.js +2 -2
  430. package/src/sap/ui/core/tmpl/DOMElement.js +2 -2
  431. package/src/sap/ui/core/tmpl/DOMElementRenderer.js +1 -1
  432. package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +2 -2
  433. package/src/sap/ui/core/tmpl/Template.js +2 -2
  434. package/src/sap/ui/core/tmpl/TemplateControl.js +2 -2
  435. package/src/sap/ui/core/tmpl/TemplateControlRenderer.js +1 -1
  436. package/src/sap/ui/core/tmpl/_parsePath.js +1 -1
  437. package/src/sap/ui/core/util/AsyncHintsHelper.js +2 -2
  438. package/src/sap/ui/core/util/DraftEnabledMockServer.js +1 -1
  439. package/src/sap/ui/core/util/Export.js +2 -2
  440. package/src/sap/ui/core/util/ExportCell.js +2 -2
  441. package/src/sap/ui/core/util/ExportColumn.js +2 -2
  442. package/src/sap/ui/core/util/ExportRow.js +2 -2
  443. package/src/sap/ui/core/util/ExportType.js +2 -2
  444. package/src/sap/ui/core/util/ExportTypeCSV.js +2 -2
  445. package/src/sap/ui/core/util/File.js +2 -2
  446. package/src/sap/ui/core/util/LibraryInfo.js +2 -2
  447. package/src/sap/ui/core/util/MockServer.js +2 -2
  448. package/src/sap/ui/core/util/MockServerAnnotationsHandler.js +1 -1
  449. package/src/sap/ui/core/util/PasteHelper.js +2 -2
  450. package/src/sap/ui/core/util/ResponsivePaddingsEnablement.js +1 -1
  451. package/src/sap/ui/core/util/ShortcutHelper.js +1 -1
  452. package/src/sap/ui/core/util/XMLPreprocessor.js +1 -1
  453. package/src/sap/ui/core/util/reflection/BaseTreeModifier.js +13 -1
  454. package/src/sap/ui/core/util/reflection/JsControlTreeModifier.js +28 -4
  455. package/src/sap/ui/core/util/reflection/XmlTreeModifier.js +17 -4
  456. package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +2 -2
  457. package/src/sap/ui/core/util/serializer/Serializer.js +2 -2
  458. package/src/sap/ui/core/util/serializer/ViewSerializer.js +2 -2
  459. package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +2 -2
  460. package/src/sap/ui/core/util/serializer/delegate/Delegate.js +2 -2
  461. package/src/sap/ui/core/util/serializer/delegate/HTML.js +2 -2
  462. package/src/sap/ui/core/util/serializer/delegate/XML.js +2 -2
  463. package/src/sap/ui/core/ws/ReadyState.js +2 -2
  464. package/src/sap/ui/core/ws/SapPcpWebSocket.js +2 -2
  465. package/src/sap/ui/core/ws/WebSocket.js +2 -2
  466. package/src/sap/ui/debug/ControlTree.js +2 -2
  467. package/src/sap/ui/debug/DebugEnv.js +2 -2
  468. package/src/sap/ui/debug/Highlighter.js +1 -1
  469. package/src/sap/ui/debug/LogViewer.js +1 -1
  470. package/src/sap/ui/debug/PropertyList.js +2 -2
  471. package/src/sap/ui/dom/_ready.js +1 -1
  472. package/src/sap/ui/dom/containsOrEquals.js +1 -1
  473. package/src/sap/ui/dom/denormalizeScrollBeginRTL.js +1 -1
  474. package/src/sap/ui/dom/denormalizeScrollLeftRTL.js +1 -1
  475. package/src/sap/ui/dom/getComputedStyleFix.js +1 -1
  476. package/src/sap/ui/dom/getFirstEditableInput.js +1 -1
  477. package/src/sap/ui/dom/getOwnerWindow.js +1 -1
  478. package/src/sap/ui/dom/getScrollbarSize.js +1 -1
  479. package/src/sap/ui/dom/includeScript.js +1 -1
  480. package/src/sap/ui/dom/includeStylesheet.js +1 -1
  481. package/src/sap/ui/dom/isBehindOtherElement.js +53 -0
  482. package/src/sap/ui/dom/isHidden.js +1 -1
  483. package/src/sap/ui/dom/jquery/Aria.js +1 -1
  484. package/src/sap/ui/dom/jquery/Focusable.js +1 -1
  485. package/src/sap/ui/dom/jquery/Selection.js +1 -1
  486. package/src/sap/ui/dom/jquery/Selectors.js +1 -1
  487. package/src/sap/ui/dom/jquery/control.js +1 -1
  488. package/src/sap/ui/dom/jquery/cursorPos.js +1 -1
  489. package/src/sap/ui/dom/jquery/getSelectedText.js +1 -1
  490. package/src/sap/ui/dom/jquery/hasTabIndex.js +1 -1
  491. package/src/sap/ui/dom/jquery/parentByAttribute.js +1 -1
  492. package/src/sap/ui/dom/jquery/rect.js +1 -1
  493. package/src/sap/ui/dom/jquery/rectContains.js +1 -1
  494. package/src/sap/ui/dom/jquery/scrollLeftRTL.js +1 -1
  495. package/src/sap/ui/dom/jquery/scrollRightRTL.js +1 -1
  496. package/src/sap/ui/dom/jquery/selectText.js +1 -1
  497. package/src/sap/ui/dom/jquery/zIndex.js +1 -1
  498. package/src/sap/ui/dom/units/Rem.js +1 -1
  499. package/src/sap/ui/events/ControlEvents.js +1 -1
  500. package/src/sap/ui/events/F6Navigation.js +230 -164
  501. package/src/sap/ui/events/KeyCodes.js +1 -1
  502. package/src/sap/ui/events/PasteEventFix.js +1 -1
  503. package/src/sap/ui/events/PseudoEvents.js +1 -1
  504. package/src/sap/ui/events/TouchToMouseMapping.js +1 -1
  505. package/src/sap/ui/events/checkMouseEnterOrLeave.js +1 -1
  506. package/src/sap/ui/events/isMouseEventDelayed.js +1 -1
  507. package/src/sap/ui/events/isSpecialKey.js +1 -1
  508. package/src/sap/ui/events/jquery/EventExtension.js +1 -1
  509. package/src/sap/ui/events/jquery/EventSimulation.js +1 -1
  510. package/src/sap/ui/events/jquery/EventTriggerHook.js +1 -1
  511. package/src/sap/ui/model/Binding.js +1 -1
  512. package/src/sap/ui/model/BindingMode.js +1 -1
  513. package/src/sap/ui/model/ChangeReason.js +1 -1
  514. package/src/sap/ui/model/ClientContextBinding.js +1 -1
  515. package/src/sap/ui/model/ClientListBinding.js +1 -1
  516. package/src/sap/ui/model/ClientModel.js +2 -2
  517. package/src/sap/ui/model/ClientPropertyBinding.js +1 -1
  518. package/src/sap/ui/model/ClientTreeBinding.js +1 -1
  519. package/src/sap/ui/model/ClientTreeBindingAdapter.js +1 -1
  520. package/src/sap/ui/model/CompositeBinding.js +1 -1
  521. package/src/sap/ui/model/CompositeDataState.js +2 -2
  522. package/src/sap/ui/model/CompositeType.js +2 -2
  523. package/src/sap/ui/model/Context.js +1 -1
  524. package/src/sap/ui/model/ContextBinding.js +1 -1
  525. package/src/sap/ui/model/DataState.js +2 -2
  526. package/src/sap/ui/model/Filter.js +1 -1
  527. package/src/sap/ui/model/FilterOperator.js +1 -1
  528. package/src/sap/ui/model/FilterProcessor.js +1 -1
  529. package/src/sap/ui/model/FilterType.js +1 -1
  530. package/src/sap/ui/model/FormatException.js +1 -1
  531. package/src/sap/ui/model/ListBinding.js +1 -1
  532. package/src/sap/ui/model/ManagedObjectBindingSupport.js +4 -10
  533. package/src/sap/ui/model/MetaModel.js +2 -2
  534. package/src/sap/ui/model/Model.js +3 -3
  535. package/src/sap/ui/model/ParseException.js +1 -1
  536. package/src/sap/ui/model/PropertyBinding.js +1 -1
  537. package/src/sap/ui/model/SelectionModel.js +2 -2
  538. package/src/sap/ui/model/SimpleType.js +2 -2
  539. package/src/sap/ui/model/Sorter.js +1 -1
  540. package/src/sap/ui/model/SorterProcessor.js +1 -1
  541. package/src/sap/ui/model/StaticBinding.js +1 -1
  542. package/src/sap/ui/model/TreeAutoExpandMode.js +2 -2
  543. package/src/sap/ui/model/TreeBinding.js +1 -1
  544. package/src/sap/ui/model/TreeBindingAdapter.js +1 -1
  545. package/src/sap/ui/model/TreeBindingCompatibilityAdapter.js +1 -1
  546. package/src/sap/ui/model/TreeBindingUtils.js +1 -1
  547. package/src/sap/ui/model/Type.js +2 -2
  548. package/src/sap/ui/model/ValidateException.js +1 -1
  549. package/src/sap/ui/model/_Helper.js +1 -1
  550. package/src/sap/ui/model/analytics/AnalyticalBinding.js +17 -7
  551. package/src/sap/ui/model/analytics/AnalyticalTreeBindingAdapter.js +1 -1
  552. package/src/sap/ui/model/analytics/AnalyticalVersionInfo.js +1 -1
  553. package/src/sap/ui/model/analytics/BatchResponseCollector.js +1 -1
  554. package/src/sap/ui/model/analytics/ODataModelAdapter.js +1 -1
  555. package/src/sap/ui/model/analytics/odata4analytics.js +7 -3
  556. package/src/sap/ui/model/base/ManagedObjectModel.js +1 -1
  557. package/src/sap/ui/model/controlhelper/TreeBindingProxy.js +54 -28
  558. package/src/sap/ui/model/json/JSONListBinding.js +1 -1
  559. package/src/sap/ui/model/json/JSONModel.js +2 -2
  560. package/src/sap/ui/model/json/JSONPropertyBinding.js +1 -1
  561. package/src/sap/ui/model/json/JSONTreeBinding.js +1 -1
  562. package/src/sap/ui/model/message/MessageListBinding.js +1 -1
  563. package/src/sap/ui/model/message/MessageModel.js +2 -2
  564. package/src/sap/ui/model/message/MessagePropertyBinding.js +1 -1
  565. package/src/sap/ui/model/odata/AnnotationHelper.js +1 -1
  566. package/src/sap/ui/model/odata/AnnotationParser.js +1 -1
  567. package/src/sap/ui/model/odata/CountMode.js +1 -1
  568. package/src/sap/ui/model/odata/Filter.js +1 -1
  569. package/src/sap/ui/model/odata/MessageScope.js +1 -1
  570. package/src/sap/ui/model/odata/ODataAnnotations.js +13 -5
  571. package/src/sap/ui/model/odata/ODataContextBinding.js +1 -1
  572. package/src/sap/ui/model/odata/ODataListBinding.js +1 -1
  573. package/src/sap/ui/model/odata/ODataMessageParser.js +2 -2
  574. package/src/sap/ui/model/odata/ODataMetaModel.js +28 -22
  575. package/src/sap/ui/model/odata/ODataMetadata.js +2 -2
  576. package/src/sap/ui/model/odata/ODataModel.js +2 -2
  577. package/src/sap/ui/model/odata/ODataPropertyBinding.js +1 -1
  578. package/src/sap/ui/model/odata/ODataTreeBinding.js +1 -1
  579. package/src/sap/ui/model/odata/ODataTreeBindingAdapter.js +1 -1
  580. package/src/sap/ui/model/odata/ODataTreeBindingFlat.js +1 -1
  581. package/src/sap/ui/model/odata/ODataUtils.js +1 -1
  582. package/src/sap/ui/model/odata/OperationMode.js +1 -1
  583. package/src/sap/ui/model/odata/UpdateMethod.js +1 -1
  584. package/src/sap/ui/model/odata/_AnnotationHelperBasics.js +1 -1
  585. package/src/sap/ui/model/odata/_AnnotationHelperExpression.js +1 -1
  586. package/src/sap/ui/model/odata/_ODataMetaModelUtils.js +1 -1
  587. package/src/sap/ui/model/odata/type/Boolean.js +2 -2
  588. package/src/sap/ui/model/odata/type/Byte.js +3 -3
  589. package/src/sap/ui/model/odata/type/Currency.js +9 -5
  590. package/src/sap/ui/model/odata/type/Date.js +3 -3
  591. package/src/sap/ui/model/odata/type/DateTime.js +2 -2
  592. package/src/sap/ui/model/odata/type/DateTimeBase.js +2 -2
  593. package/src/sap/ui/model/odata/type/DateTimeOffset.js +3 -3
  594. package/src/sap/ui/model/odata/type/DateTimeWithTimezone.js +2 -2
  595. package/src/sap/ui/model/odata/type/Decimal.js +4 -4
  596. package/src/sap/ui/model/odata/type/Double.js +4 -4
  597. package/src/sap/ui/model/odata/type/Guid.js +2 -2
  598. package/src/sap/ui/model/odata/type/Int.js +2 -2
  599. package/src/sap/ui/model/odata/type/Int16.js +4 -4
  600. package/src/sap/ui/model/odata/type/Int32.js +4 -4
  601. package/src/sap/ui/model/odata/type/Int64.js +4 -4
  602. package/src/sap/ui/model/odata/type/ODataType.js +2 -2
  603. package/src/sap/ui/model/odata/type/Raw.js +2 -2
  604. package/src/sap/ui/model/odata/type/SByte.js +3 -3
  605. package/src/sap/ui/model/odata/type/Single.js +4 -4
  606. package/src/sap/ui/model/odata/type/Stream.js +2 -2
  607. package/src/sap/ui/model/odata/type/String.js +2 -2
  608. package/src/sap/ui/model/odata/type/Time.js +3 -3
  609. package/src/sap/ui/model/odata/type/TimeOfDay.js +3 -3
  610. package/src/sap/ui/model/odata/type/Unit.js +8 -5
  611. package/src/sap/ui/model/odata/type/UnitMixin.js +1 -1
  612. package/src/sap/ui/model/odata/v2/BatchMode.js +1 -1
  613. package/src/sap/ui/model/odata/v2/Context.js +2 -2
  614. package/src/sap/ui/model/odata/v2/ODataAnnotations.js +3 -5
  615. package/src/sap/ui/model/odata/v2/ODataContextBinding.js +1 -1
  616. package/src/sap/ui/model/odata/v2/ODataListBinding.js +2 -2
  617. package/src/sap/ui/model/odata/v2/ODataModel.js +2 -2
  618. package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +4 -5
  619. package/src/sap/ui/model/odata/v2/_CreatedContextsCache.js +1 -1
  620. package/src/sap/ui/model/odata/v4/AnnotationHelper.js +1 -1
  621. package/src/sap/ui/model/odata/v4/Context.js +230 -127
  622. package/src/sap/ui/model/odata/v4/ODataBinding.js +4 -1
  623. package/src/sap/ui/model/odata/v4/ODataContextBinding.js +119 -83
  624. package/src/sap/ui/model/odata/v4/ODataListBinding.js +257 -183
  625. package/src/sap/ui/model/odata/v4/ODataMetaModel.js +3 -4
  626. package/src/sap/ui/model/odata/v4/ODataModel.js +68 -14
  627. package/src/sap/ui/model/odata/v4/ODataParentBinding.js +47 -13
  628. package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +19 -5
  629. package/src/sap/ui/model/odata/v4/ODataUtils.js +7 -7
  630. package/src/sap/ui/model/odata/v4/SubmitMode.js +1 -1
  631. package/src/sap/ui/model/odata/v4/ValueListType.js +1 -1
  632. package/src/sap/ui/model/odata/v4/_AnnotationHelperExpression.js +1 -1
  633. package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +422 -162
  634. package/src/sap/ui/model/odata/v4/lib/_AggregationHelper.js +122 -22
  635. package/src/sap/ui/model/odata/v4/lib/_Batch.js +20 -13
  636. package/src/sap/ui/model/odata/v4/lib/_Cache.js +225 -149
  637. package/src/sap/ui/model/odata/v4/lib/_ConcatHelper.js +1 -1
  638. package/src/sap/ui/model/odata/v4/lib/_GroupLock.js +1 -1
  639. package/src/sap/ui/model/odata/v4/lib/_Helper.js +122 -14
  640. package/src/sap/ui/model/odata/v4/lib/_MetadataConverter.js +1 -1
  641. package/src/sap/ui/model/odata/v4/lib/_MetadataRequestor.js +1 -1
  642. package/src/sap/ui/model/odata/v4/lib/_MinMaxHelper.js +1 -1
  643. package/src/sap/ui/model/odata/v4/lib/_Parser.js +1 -1
  644. package/src/sap/ui/model/odata/v4/lib/_Requestor.js +29 -14
  645. package/src/sap/ui/model/odata/v4/lib/_V2MetadataConverter.js +1 -1
  646. package/src/sap/ui/model/odata/v4/lib/_V2Requestor.js +1 -1
  647. package/src/sap/ui/model/odata/v4/lib/_V4MetadataConverter.js +1 -1
  648. package/src/sap/ui/model/resource/ResourceModel.js +2 -2
  649. package/src/sap/ui/model/resource/ResourcePropertyBinding.js +1 -1
  650. package/src/sap/ui/model/type/Boolean.js +2 -2
  651. package/src/sap/ui/model/type/Currency.js +2 -2
  652. package/src/sap/ui/model/type/Date.js +2 -2
  653. package/src/sap/ui/model/type/DateInterval.js +2 -2
  654. package/src/sap/ui/model/type/DateTime.js +2 -2
  655. package/src/sap/ui/model/type/DateTimeInterval.js +2 -2
  656. package/src/sap/ui/model/type/FileSize.js +4 -3
  657. package/src/sap/ui/model/type/Float.js +4 -3
  658. package/src/sap/ui/model/type/Integer.js +4 -3
  659. package/src/sap/ui/model/type/String.js +2 -2
  660. package/src/sap/ui/model/type/Time.js +2 -2
  661. package/src/sap/ui/model/type/TimeInterval.js +2 -2
  662. package/src/sap/ui/model/type/Unit.js +2 -2
  663. package/src/sap/ui/model/xml/XMLListBinding.js +1 -1
  664. package/src/sap/ui/model/xml/XMLModel.js +2 -2
  665. package/src/sap/ui/model/xml/XMLPropertyBinding.js +1 -1
  666. package/src/sap/ui/model/xml/XMLTreeBinding.js +1 -1
  667. package/src/sap/ui/performance/BeaconRequest.js +1 -1
  668. package/src/sap/ui/performance/Measurement.js +1 -1
  669. package/src/sap/ui/performance/XHRInterceptor.js +1 -1
  670. package/src/sap/ui/performance/trace/FESR.js +1 -1
  671. package/src/sap/ui/performance/trace/FESRHelper.js +1 -1
  672. package/src/sap/ui/performance/trace/Interaction.js +1 -1
  673. package/src/sap/ui/performance/trace/Passport.js +1 -1
  674. package/src/sap/ui/performance/trace/initTraces.js +10 -6
  675. package/src/sap/ui/qunit/QUnitUtils.js +15 -3
  676. package/src/sap/ui/qunit/qunit-2-css.js +1 -1
  677. package/src/sap/ui/qunit/qunit-coverage.js +1 -1
  678. package/src/sap/ui/qunit/qunit-css.js +1 -1
  679. package/src/sap/ui/qunit/qunit-junit.js +1 -1
  680. package/src/sap/ui/qunit/qunit-redirect.js +1 -1
  681. package/src/sap/ui/qunit/sinon-qunit-bridge.js +1 -1
  682. package/src/sap/ui/qunit/utils/ControlIterator.js +2 -2
  683. package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +2 -2
  684. package/src/sap/ui/qunit/utils/createAndAppendDiv.js +1 -1
  685. package/src/sap/ui/qunit/utils/waitForThemeApplied.js +1 -1
  686. package/src/sap/ui/security/FrameOptions.js +1 -1
  687. package/src/sap/ui/test/BlanketReporter.js +1 -1
  688. package/src/sap/ui/test/BlanketReporterUI.view.xml +2 -5
  689. package/src/sap/ui/test/BranchTracking.js +1 -1
  690. package/src/sap/ui/test/Opa.js +1 -1
  691. package/src/sap/ui/test/Opa5.js +1 -1
  692. package/src/sap/ui/test/OpaBuilder.js +2 -2
  693. package/src/sap/ui/test/OpaExtension.js +2 -2
  694. package/src/sap/ui/test/OpaPlugin.js +27 -6
  695. package/src/sap/ui/test/PageObjectFactory.js +12 -10
  696. package/src/sap/ui/test/RecordReplay.js +2 -2
  697. package/src/sap/ui/test/RecorderHotkeyListener.js +1 -1
  698. package/src/sap/ui/test/TestUtils.js +78 -92
  699. package/src/sap/ui/test/_BrowserLogCollector.js +1 -1
  700. package/src/sap/ui/test/_ControlFinder.js +254 -238
  701. package/src/sap/ui/test/_FocusListener.js +49 -0
  702. package/src/sap/ui/test/_LogCollector.js +1 -1
  703. package/src/sap/ui/test/_OpaLogger.js +2 -2
  704. package/src/sap/ui/test/_OpaUriParameterParser.js +1 -1
  705. package/src/sap/ui/test/_ParameterValidator.js +1 -1
  706. package/src/sap/ui/test/_UsageReport.js +1 -1
  707. package/src/sap/ui/test/_ValidationParameters.js +1 -1
  708. package/src/sap/ui/test/actions/Action.js +17 -3
  709. package/src/sap/ui/test/actions/Drag.js +1 -1
  710. package/src/sap/ui/test/actions/Drop.js +1 -1
  711. package/src/sap/ui/test/actions/EnterText.js +37 -5
  712. package/src/sap/ui/test/actions/Press.js +1 -1
  713. package/src/sap/ui/test/actions/Scroll.js +1 -1
  714. package/src/sap/ui/test/autowaiter/WaiterBase.js +1 -1
  715. package/src/sap/ui/test/autowaiter/_UIUpdatesWaiter.js +1 -1
  716. package/src/sap/ui/test/autowaiter/_XHRWaiter.js +1 -1
  717. package/src/sap/ui/test/autowaiter/_autoWaiter.js +1 -1
  718. package/src/sap/ui/test/autowaiter/_autoWaiterAsync.js +1 -1
  719. package/src/sap/ui/test/autowaiter/_cssAnimationWaiter.js +1 -1
  720. package/src/sap/ui/test/autowaiter/_cssTransitionWaiter.js +1 -1
  721. package/src/sap/ui/test/autowaiter/_jsAnimationWaiter.js +1 -1
  722. package/src/sap/ui/test/autowaiter/_moduleWaiter.js +1 -1
  723. package/src/sap/ui/test/autowaiter/_navigationContainerWaiter.js +1 -1
  724. package/src/sap/ui/test/autowaiter/_promiseWaiter.js +6 -3
  725. package/src/sap/ui/test/autowaiter/_resourceWaiter.js +1 -1
  726. package/src/sap/ui/test/autowaiter/_timeoutWaiter.js +1 -1
  727. package/src/sap/ui/test/autowaiter/_utils.js +1 -1
  728. package/src/sap/ui/test/generic/GenericTestCollection.js +22 -11
  729. package/src/sap/ui/test/generic/TestBase.js +2 -2
  730. package/src/sap/ui/test/generic/Utils.js +2 -2
  731. package/src/sap/ui/test/generic/_EnforceSemanticRendering.js +5 -5
  732. package/src/sap/ui/test/gherkin/GherkinTestGenerator.js +1 -1
  733. package/src/sap/ui/test/gherkin/StepDefinitions.js +1 -1
  734. package/src/sap/ui/test/gherkin/dataTableUtils.js +1 -1
  735. package/src/sap/ui/test/gherkin/opa5TestHarness.js +1 -1
  736. package/src/sap/ui/test/gherkin/qUnitTestHarness.js +1 -1
  737. package/src/sap/ui/test/gherkin/simpleGherkinParser.js +1 -1
  738. package/src/sap/ui/test/launchers/componentLauncher.js +1 -1
  739. package/src/sap/ui/test/launchers/iFrameLauncher.js +1 -1
  740. package/src/sap/ui/test/matchers/AggregationContainsPropertyEqual.js +1 -1
  741. package/src/sap/ui/test/matchers/AggregationEmpty.js +1 -1
  742. package/src/sap/ui/test/matchers/AggregationFilled.js +1 -1
  743. package/src/sap/ui/test/matchers/AggregationLengthEquals.js +1 -1
  744. package/src/sap/ui/test/matchers/Ancestor.js +1 -1
  745. package/src/sap/ui/test/matchers/BindingPath.js +1 -1
  746. package/src/sap/ui/test/matchers/Descendant.js +1 -1
  747. package/src/sap/ui/test/matchers/I18NText.js +1 -1
  748. package/src/sap/ui/test/matchers/Interactable.js +1 -1
  749. package/src/sap/ui/test/matchers/LabelFor.js +1 -1
  750. package/src/sap/ui/test/matchers/Matcher.js +1 -1
  751. package/src/sap/ui/test/matchers/MatcherFactory.js +1 -1
  752. package/src/sap/ui/test/matchers/Properties.js +1 -1
  753. package/src/sap/ui/test/matchers/PropertyStrictEquals.js +1 -1
  754. package/src/sap/ui/test/matchers/Sibling.js +1 -1
  755. package/src/sap/ui/test/matchers/Visible.js +1 -1
  756. package/src/sap/ui/test/matchers/_Busy.js +1 -1
  757. package/src/sap/ui/test/matchers/_Editable.js +1 -1
  758. package/src/sap/ui/test/matchers/_Enabled.js +1 -1
  759. package/src/sap/ui/test/matchers/_Visitor.js +1 -1
  760. package/src/sap/ui/test/matchers/matchers.js +1 -1
  761. package/src/sap/ui/test/opaQunit.js +1 -1
  762. package/src/sap/ui/test/pipelines/ActionPipeline.js +1 -1
  763. package/src/sap/ui/test/pipelines/MatcherPipeline.js +1 -1
  764. package/src/sap/ui/test/pipelines/PipelineFactory.js +1 -1
  765. package/src/sap/ui/test/qunitPause.js +1 -1
  766. package/src/sap/ui/test/selectors/_BindingPath.js +1 -1
  767. package/src/sap/ui/test/selectors/_ControlSelectorGenerator.js +1 -1
  768. package/src/sap/ui/test/selectors/_ControlSelectorValidator.js +1 -1
  769. package/src/sap/ui/test/selectors/_ControlType.js +1 -1
  770. package/src/sap/ui/test/selectors/_DropdownItem.js +1 -1
  771. package/src/sap/ui/test/selectors/_GlobalID.js +1 -1
  772. package/src/sap/ui/test/selectors/_LabelFor.js +1 -1
  773. package/src/sap/ui/test/selectors/_Properties.js +1 -1
  774. package/src/sap/ui/test/selectors/_Selector.js +2 -1
  775. package/src/sap/ui/test/selectors/_TableRowItem.js +1 -1
  776. package/src/sap/ui/test/selectors/_ViewID.js +1 -1
  777. package/src/sap/ui/test/selectors/_selectors.js +1 -1
  778. package/src/sap/ui/test/starter/_configureLoader.js +1 -1
  779. package/src/sap/ui/test/starter/_setupAndStart.js +1 -1
  780. package/src/sap/ui/test/starter/_utils.js +1 -1
  781. package/src/sap/ui/test/starter/createSuite.js +1 -1
  782. package/src/sap/ui/test/starter/runTest.js +1 -1
  783. package/src/sap/ui/thirdparty/RequestRecorder.js +1 -1
  784. package/src/sap/ui/thirdparty/caja-html-sanitizer.js +1 -1
  785. package/src/sap/ui/util/ActivityDetection.js +1 -1
  786. package/src/sap/ui/util/Mobile.js +18 -19
  787. package/src/sap/ui/util/Storage.js +91 -64
  788. package/src/sap/ui/util/XMLHelper.js +1 -1
  789. package/src/sap/ui/util/_FeatureDetection.js +1 -1
  790. package/src/sap/ui/util/defaultLinkTypes.js +1 -1
  791. package/src/sap/ui/util/isCrossOriginURL.js +1 -1
  792. package/src/sap/ui/util/openWindow.js +1 -1
  793. package/src/sap-ui-boot.js +1 -1
  794. package/src/sap-ui-core-nojQuery.js +1 -1
  795. package/src/sap-ui-core.js +1 -1
  796. package/src/sap-ui-debug.js +1 -1
  797. package/src/ui5loader-autoconfig.js +1 -1
  798. package/src/ui5loader.js +1 -1
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * OpenUI5
3
- * (c) Copyright 2009-2022 SAP SE or an SAP affiliate company.
3
+ * (c) Copyright 2009-2023 SAP SE or an SAP affiliate company.
4
4
  * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
5
  */
6
6
 
@@ -42,6 +42,9 @@ sap.ui.define([
42
42
  // shortcut for the sap.ui.core.ID type
43
43
  var IDType;
44
44
 
45
+ // Binding info factory symbol
46
+ var BINDING_INFO_FACTORY_SYMBOL = Symbol("bindingInfoFactory");
47
+
45
48
  /**
46
49
  * Constructs and initializes a managed object with the given <code>sId</code> and settings.
47
50
  *
@@ -248,7 +251,7 @@ sap.ui.define([
248
251
  *
249
252
  * @extends sap.ui.base.EventProvider
250
253
  * @author SAP SE
251
- * @version 1.108.2
254
+ * @version 1.110.0
252
255
  * @public
253
256
  * @alias sap.ui.base.ManagedObject
254
257
  */
@@ -595,85 +598,150 @@ sap.ui.define([
595
598
  */
596
599
 
597
600
  /**
598
- * Defines a new subclass of ManagedObject with name <code>sClassName</code> and enriches it with
599
- * the information contained in <code>oClassInfo</code>.
600
- *
601
- * <code>oClassInfo</code> can contain the same information that {@link sap.ui.base.Object.extend} already accepts,
602
- * plus the following new properties in the 'metadata' object literal:
603
- *
604
- * <ul>
605
- * <li><code>library : <i>string</i></code></li>
606
- * <li><code>properties : <i>object</i></code></li>
607
- * <li><code>defaultProperty : <i>string</i></code></li>
608
- * <li><code>aggregations : <i>object</i></code></li>
609
- * <li><code>defaultAggregation : <i>string</i></code></li>
610
- * <li><code>associations : <i>object</i></code></li>
611
- * <li><code>events : <i>object</i></code></li>
612
- * <li><code>specialSettings : <i>object</i></code>// this one is still experimental and not for public usage!</li>
613
- * </ul>
614
- *
615
- * Each of these properties is explained in more detail lateron.
616
- *
617
- * Example:
618
- * <pre>
619
- * ManagedObject.extend('sap.mylib.MyClass', {
620
- * metadata : {
621
- * library: 'sap.mylib',
622
- * properties : {
623
- * value: 'string',
624
- * width: 'sap.ui.core.CSSSize',
625
- * height: { type: 'sap.ui.core.CSSSize', defaultValue: '100%'}
626
- * description: { type: 'string', defaultValue: '', selector: '#{id}-desc'}
627
- * },
628
- * defaultProperty : 'value',
629
- * aggregations : {
630
- * header : { type: 'sap.mylib.FancyHeader', multiple : false }
631
- * items : 'sap.ui.core.Control',
632
- * buttons: { type: 'sap.mylib.Button', multiple : true, selector: '#{id} > .sapMLButtonsSection'}
633
- * },
634
- * defaultAggregation : 'items',
635
- * associations : {
636
- * initiallyFocused : { type: 'sap.ui.core.Control' }
637
- * },
638
- * events: {
639
- * beforeOpen : {
640
- * parameters : {
641
- * opener : { type: 'sap.ui.core.Control' }
642
- * }
643
- * }
644
- * },
645
- * },
646
- *
647
- * init: function() {
648
- * }
649
- *
650
- * }); // end of 'extend' call
651
- * </pre>
601
+ * @typedef {sap.ui.base.Object.MetadataOptions} sap.ui.base.ManagedObject.MetadataOptions
602
+ *
603
+ * The structure of the "metadata" object which is passed when inheriting from sap.ui.base.ManagedObject using its static "extend" method.
604
+ * See {@link sap.ui.base.ManagedObject.extend} for details on its usage.
605
+ *
606
+ * @property {string} [library]
607
+ * Name of the library that the new subclass should belong to. If the subclass is a control or element, it will
608
+ * automatically register with that library so that authoring tools can discover it.
609
+ * By convention, the name of the subclass should have the library name as a prefix, but subfolders are allowed,
610
+ * e.g. <code>sap.ui.layout.form.Form</code> belongs to library <code>sap.ui.layout</code>.
611
+ *
612
+ * @property {Object<string, string | sap.ui.base.ManagedObject.MetadataOptions.Property>} [properties]
613
+ * An object literal whose properties each define a new managed property in the ManagedObject subclass.
614
+ * The value can either be a simple string which then will be assumed to be the type of the new property or it can be
615
+ * an object literal with the following properties (see {@link sap.ui.base.ManagedObject.MetadataOptions.Property Property} for details):
616
+ * type, visibility, byValue, group, defaultValue, bindable, selector
617
+ * Property names should use camelCase notation, start with a lowercase letter and only use characters from the set [a-zA-Z0-9_$].
618
+ * If an aggregation in the literal is preceded by a JSDoc comment (doclet) and if the UI5 plugin and template are used for JSDoc3 generation, the doclet will
619
+ * be used as generic documentation of the aggregation.
620
+ *
621
+ * For each public property 'foo', the following methods will be created by the "extend" method and will be added to the
622
+ * prototype of the subclass:
623
+ * <ul>
624
+ * <li>getFoo() - returns the current value of property 'foo'. Internally calls {@link #getProperty}</li>
625
+ * <li>setFoo(v) - sets 'v' as the new value of property 'foo'. Internally calls {@link #setProperty}</li>
626
+ * <li>bindFoo(c) - (only if property was defined to be 'bindable'): convenience function that wraps {@link #bindProperty}</li>
627
+ * <li>unbindFoo() - (only if property was defined to be 'bindable'): convenience function that wraps {@link #unbindProperty}</li>
628
+ * </ul>
629
+ * For hidden properties, no methods are generated.
630
+ *
631
+ * @property {string} [defaultProperty]
632
+ * When specified, the default property must match the name of one of the properties defined for the new subclass (either own or inherited).
633
+ * The named property can be used to identify the main property to be used for bound data. E.g. the value property of a field control.
634
+ *
635
+ * @property {Object<string, string | sap.ui.base.ManagedObject.MetadataOptions.Aggregation>} [aggregations]
636
+ * An object literal whose properties each define a new aggregation in the ManagedObject subclass.
637
+ * The value can either be a simple string which then will be assumed to be the type of the new aggregation or it can be
638
+ * an object literal with the following properties (see {@link sap.ui.base.ManagedObject.MetadataOptions.Aggregation Aggregation} for details):
639
+ * type, multiple, singularName, visibility, bindable, forwarding, selector.
640
+ * Aggregation names should use camelCase notation, start with a lowercase letter and only use characters from the set [a-zA-Z0-9_$].
641
+ * The name for a hidden aggregations might start with an underscore.
642
+ * If an aggregation in the literal is preceded by a JSDoc comment (doclet) and if the UI5 plugin and template are used for JSDoc3 generation, the doclet will
643
+ * be used as generic documentation of the aggregation.
644
+ *
645
+ * For each public aggregation 'item' of cardinality 0..1, the following methods will be created by the "extend" method and will be added to the
646
+ * prototype of the subclass:
647
+ * <ul>
648
+ * <li>getItem() - returns the current value of aggregation 'item'. Internally calls {@link #getAggregation} with a default value of <code>undefined</code></li>
649
+ * <li>setItem(o) - sets 'o' as the new aggregated object in aggregation 'item'. Internally calls {@link #setAggregation}</li>
650
+ * <li>destroyItem(o) - destroy a currently aggregated object in aggregation 'item' and clears the aggregation. Internally calls {@link #destroyAggregation}</li>
651
+ * <li>bindItem(c) - (only if aggregation was defined to be 'bindable'): convenience function that wraps {@link #bindAggregation}</li>
652
+ * <li>unbindItem() - (only if aggregation was defined to be 'bindable'): convenience function that wraps {@link #unbindAggregation}</li>
653
+ * </ul>
654
+ * For a public aggregation 'items' of cardinality 0..n, the following methods will be created:
655
+ * <ul>
656
+ * <li>getItems() - returns an array with the objects contained in aggregation 'items'. Internally calls {@link #getAggregation} with a default value of <code>[]</code></li>
657
+ * <li>addItem(o) - adds an object as last element in the aggregation 'items'. Internally calls {@link #addAggregation}</li>
658
+ * <li>insertItem(o,p) - inserts an object into the aggregation 'items'. Internally calls {@link #insertAggregation}</li>
659
+ * <li>indexOfItem(o) - returns the position of the given object within the aggregation 'items'. Internally calls {@link #indexOfAggregation}</li>
660
+ * <li>removeItem(v) - removes an object from the aggregation 'items'. Internally calls {@link #removeAggregation}</li>
661
+ * <li>removeItems() - removes all objects from the aggregation 'items'. Internally calls {@link #removeAllAggregation}</li>
662
+ * <li>destroyItems() - destroy all currently aggregated objects in aggregation 'items' and clears the aggregation. Internally calls {@link #destroyAggregation}</li>
663
+ * <li>bindItems(c) - (only if aggregation was defined to be 'bindable'): convenience function that wraps {@link #bindAggregation}</li>
664
+ * <li>unbindItems() - (only if aggregation was defined to be 'bindable'): convenience function that wraps {@link #unbindAggregation}</li>
665
+ * </ul>
666
+ * For hidden aggregations, no methods are generated.
667
+ *
668
+ * @property {string} [defaultAggregation]
669
+ * When specified, the default aggregation must match the name of one of the aggregations defined for the new subclass (either own or inherited).
670
+ * The named aggregation will be used in contexts where no aggregation is specified. E,g. when an object in an XMLView embeds other objects without
671
+ * naming an aggregation, as in the following example:
672
+ * <pre>
673
+ * &lt;!-- assuming the defaultAggregation for Dialog is 'content' -->
674
+ * &lt;Dialog>
675
+ * &lt;Text/>
676
+ * &lt;Button/>
677
+ * &lt;/Dialog>
678
+ * </pre>
679
+ *
680
+ * @property {Object<string, string | sap.ui.base.ManagedObject.MetadataOptions.Association>} [associations]
681
+ * An object literal whose properties each define a new association of the ManagedObject subclass.
682
+ * The value can either be a simple string which then will be assumed to be the type of the new association or it can be
683
+ * an object literal with the following properties (see {@link sap.ui.base.ManagedObject.MetadataOptions.Association Association} for details): type, multiple, singularName, visibility
684
+ * Association names should use camelCase notation, start with a lowercase letter and only use characters from the set [a-zA-Z0-9_$].
685
+ * If an association in the literal is preceded by a JSDoc comment (doclet) and if the UI5 plugin and template are used for JSDoc3 generation, the doclet will
686
+ * be used as generic documentation of the association.
687
+ *
688
+ * For each association 'ref' of cardinality 0..1, the following methods will be created by the "extend" method and will be added to the
689
+ * prototype of the subclass:
690
+ * <ul>
691
+ * <li>getRef() - returns the current value of association 'item'. Internally calls {@link #getAssociation} with a default value of <code>undefined</code></li>
692
+ * <li>setRef(o) - sets 'o' as the new associated object in association 'item'. Internally calls {@link #setAssociation}</li>
693
+ * </ul>
694
+ * For a public association 'refs' of cardinality 0..n, the following methods will be created:
695
+ * <ul>
696
+ * <li>getRefs() - returns an array with the objects contained in association 'items'. Internally calls {@link #getAssociation} with a default value of <code>[]</code></li>
697
+ * <li>addRef(o) - adds an object as last element in the association 'items'. Internally calls {@link #addAssociation}</li>
698
+ * <li>removeRef(v) - removes an object from the association 'items'. Internally calls {@link #removeAssociation}</li>
699
+ * <li>removeAllRefs() - removes all objects from the association 'items'. Internally calls {@link #removeAllAssociation}</li>
700
+ * </ul>
701
+ * For hidden associations, no methods are generated.
702
+ *
703
+ * @property {Object<string, string | sap.ui.base.ManagedObject.MetadataOptions.Event>} [events]
704
+ * An object literal whose properties each define a new event of the ManagedObject subclass.
705
+ * In this literal, the property names are used as event names and the values are object literals describing the respective event which can have the
706
+ * following properties (see {@link sap.ui.base.ManagedObject.MetadataOptions.Event Event} for details): allowPreventDefault, parameters
707
+ * Event names should use camelCase notation, start with a lower-case letter and only use characters from the set [a-zA-Z0-9_$].
708
+ * If an event in the literal is preceded by a JSDoc comment (doclet) and if the UI5 plugin and template are used for JSDoc3 generation, the doclet will be used
709
+ * as generic documentation of the event.
710
+ *
711
+ * For each event 'Some' the following methods will be created by the "extend" method and will be added to the
712
+ * prototype of the subclass:
713
+ * <ul>
714
+ * <li>attachSome(fn,o) - registers a listener for the event. Internally calls {@link #attachEvent}</li>
715
+ * <li>detachSome(fn,o) - deregisters a listener for the event. Internally calls {@link #detachEvent}</li>
716
+ * <li>fireSome() - fire the event. Internally calls {@link #fireEvent}</li>
717
+ * </ul>
652
718
  *
653
- * Detailed explanation of properties<br>
719
+ * @property {string | boolean} [designtime]
720
+ * Name of a module that implements the designtime part. Alternatively <code>true</code> to indicate that the module's file is named *.designtime.js with
721
+ * the same base name as the class itself.
654
722
  *
723
+ * @property {Object<string,any>} [specialSettings] Special settings are an experimental feature and MUST NOT BE DEFINED in controls or applications outside of the <code>sap.ui.core</code> library.
724
+ * There's no generic or general way how to set or get the values for special settings. For the same reason, they cannot be bound against a model.
725
+ * If there's a way for consumers to define a value for a special setting, it must be documented in the class that introduces the setting.
655
726
  *
656
- * <b>'library'</b> : <i>string</i><br>
657
- * Name of the library that the new subclass should belong to. If the subclass is a control or element, it will
658
- * automatically register with that library so that authoring tools can discover it.
659
- * By convention, the name of the subclass should have the library name as a prefix, but subfolders are allowed,
660
- * e.g. <code>sap.ui.layout.form.Form</code> belongs to library <code>sap.ui.layout</code>.
727
+ * @public
728
+ */
729
+
730
+ /**
731
+ * @typedef {object} sap.ui.base.ManagedObject.MetadataOptions.Property
661
732
  *
733
+ * An object literal describing a property of a class derived from <code>sap.ui.base.ManagedObject</code>.
734
+ * See {@link sap.ui.base.ManagedObject.MetadataOptions MetadataOptions} for details on its usage.
662
735
  *
663
- * <b>'properties'</b> : <i>object</i><br>
664
- * An object literal whose properties each define a new managed property in the ManagedObject subclass.
665
- * The value can either be a simple string which then will be assumed to be the type of the new property or it can be
666
- * an object literal with the following properties
667
- * <ul>
668
- * <li><code>type: <i>string</i></code> type of the new property. Must either be one of the built-in types
736
+ * @property {string} type Type of the new property. Must either be one of the built-in types
669
737
  * 'string', 'boolean', 'int', 'float', 'object', 'function' or 'any', or a type created and registered with
670
738
  * {@link sap.ui.base.DataType.createType} or an array type based on one of the previous types (e.g. 'int[]'
671
- * or 'string[]', but not just 'array').</li>
672
- * <li><code>visibility: <i>string</i></code> either 'hidden' or 'public', defaults to 'public'. Properties that
739
+ * or 'string[]', but not just 'array').
740
+ * @property {"hidden" | "public"} [visibility="public"] Either 'hidden' or 'public', defaults to 'public'. Properties that
673
741
  * belong to the API of a class must be 'public' whereas 'hidden' properties can only be used internally.
674
742
  * Only public properties are accepted by the constructor or by <code>applySettings</code> or in declarative
675
- * representations like an <code>XMLView</code>. Equally, only public properties are cloned.</li>
676
- * <li><code>byValue: <i>boolean</i></code> (either can be omitted or set to the boolean value <code>true</code>)
743
+ * representations like an <code>XMLView</code>. Equally, only public properties are cloned.
744
+ * @property {boolean} [byValue=false]
677
745
  * If set to <code>true</code>, the property value will be {@link module:sap/base/util/deepClone deep cloned}
678
746
  * on write and read operations to ensure that the internal value can't be modified by the outside. The property
679
747
  * <code>byValue</code> is currently restricted to a <code>boolean</code> value. Other types are reserved for future
@@ -682,15 +750,18 @@ sap.ui.define([
682
750
  * Note that using <code>byValue:true</code> has a performance impact on property access and therefore should be
683
751
  * used carefully. It also doesn't make sense to set this option for properties with a primitive type (they have
684
752
  * value semantic anyhow) or for properties with arrays of primitive types (they are already cloned
685
- * with a less expensive implementation).
686
- * <li><code>group:<i>string</i></code> a semantic grouping of the properties, intended to be used in design time tools.
687
- * Allowed values are (case sensitive): Accessibility, Appearance, Behavior, Data, Designtime, Dimension, Identification, Misc</li>
688
- * <li><code>defaultValue: <i>any</i></code> the default value for the property or null if there is no defaultValue.</li>
689
- * <li><code>bindable: <i>boolean|string</i></code> (either can be omitted or set to the boolean value <code>true</code> or the magic string 'bindable')
753
+ * with a less expensive implementation). Defaults to 'false'.
754
+ * @property {"Accessibility" | "Appearance" | "Behavior" | "Data" | "Designtime" | "Dimension" | "Identification" | "Misc"} [group]
755
+ * A semantic grouping of the properties, intended to be used in design time tools.
756
+ * Allowed values are (case sensitive): Accessibility, Appearance, Behavior, Data, Designtime, Dimension, Identification, Misc
757
+ * @property {any} [defaultValue] The default value for the property or null if there is no specific
758
+ * default value defined (the data type's default becomes the default value in this case, e.g. <code>false</code> for boolean and
759
+ * the empty string for type string). Omitting this property means the default value is <code>undefined</code>.
760
+ * @property {boolean | "bindable"} [bindable=false] (Either can be omitted or set to the boolean value <code>true</code> or the magic string 'bindable'.)
690
761
  * If set to <code>true</code> or 'bindable', additional named methods <code>bind<i>Name</i></code> and <code>unbind<i>Name</i></code> are generated as convenience.
691
762
  * Despite its name, setting this flag is not mandatory to make the managed property bindable. The generic methods {@link #bindProperty} and
692
- * {@link #unbindProperty} can always be used. </li>
693
- * <li><code>selector: <i>string</i></code> Optional; can be set to a valid CSS selector (as accepted by the
763
+ * {@link #unbindProperty} can always be used.
764
+ * @property {string} [selector] Can be set to a valid CSS selector (as accepted by the
694
765
  * {@link https://developer.mozilla.org/en-US/docs/Web/API/Element/querySelector Element.prototype.querySelector}
695
766
  * method). When set, it locates the DOM element that represents this property's value. It should only be set
696
767
  * for properties that have a visual text representation in the DOM.
@@ -710,49 +781,37 @@ sap.ui.define([
710
781
  * Only selected framework features may use that private method, it is not yet a public API and might be changed
711
782
  * or removed in future versions of UI5. However, instead of maintaining the <code>selector</code> in the metadata,
712
783
  * element and control classes can overwrite <code>getDomRefForSetting</code> and determine the DOM element
713
- * dynamically.</li>
714
- * </ul>
715
- * Property names should use camelCase notation, start with a lowercase letter and only use characters from the set [a-zA-Z0-9_$].
716
- * If an aggregation in the literal is preceded by a JSDoc comment (doclet) and if the UI5 plugin and template are used for JSDoc3 generation, the doclet will
717
- * be used as generic documentation of the aggregation.
718
- *
719
- * For each public property 'foo', the following methods will be created by the "extend" method and will be added to the
720
- * prototype of the subclass:
721
- * <ul>
722
- * <li>getFoo() - returns the current value of property 'foo'. Internally calls {@link #getProperty}</li>
723
- * <li>setFoo(v) - sets 'v' as the new value of property 'foo'. Internally calls {@link #setProperty}</li>
724
- * <li>bindFoo(c) - (only if property was defined to be 'bindable'): convenience function that wraps {@link #bindProperty}</li>
725
- * <li>unbindFoo() - (only if property was defined to be 'bindable'): convenience function that wraps {@link #unbindProperty}</li>
726
- * </ul>
727
- * For hidden properties, no methods are generated.
784
+ * dynamically.
785
+ * @property {boolean} [deprecated=false] Flag that marks the property as deprecated (defaults to false). May lead to an additional warning
786
+ * log message at runtime when the property is still used. For the documentation, also add a <code>@deprecated</code> tag in the JSDoc,
787
+ * describing since when it is deprecated and what any alternatives are.
728
788
  *
789
+ * @public
790
+ */
791
+
792
+ /**
793
+ * @typedef {object} sap.ui.base.ManagedObject.MetadataOptions.Aggregation
729
794
  *
730
- * <b>'defaultProperty'</b> : <i>string</i><br>
731
- * When specified, the default property must match the name of one of the properties defined for the new subclass (either own or inherited).
732
- * The named property can be used to identify the main property to be used for bound data. E.g. the value property of a field control.
733
- *
795
+ * An object literal describing an aggregation of a class derived from <code>sap.ui.base.ManagedObject</code>.
796
+ * See {@link sap.ui.base.ManagedObject.MetadataOptions MetadataOptions} for details on its usage.
734
797
  *
735
- * <b>'aggregations'</b> : <i>object</i><br>
736
- * An object literal whose properties each define a new aggregation in the ManagedObject subclass.
737
- * The value can either be a simple string which then will be assumed to be the type of the new aggregation or it can be
738
- * an object literal with the following properties
739
- * <ul>
740
- * <li><code>type: <i>string</i></code> type of the new aggregation. must be the full global name of a ManagedObject subclass or UI5 interface (in dot notation, e.g. 'sap.m.Button')</li>
741
- * <li><code>[multiple]: <i>boolean</i></code> whether the aggregation is a 0..1 (false) or a 0..n aggregation (true), defaults to true </li>
742
- * <li><code>[singularName]: <i>string</i></code>. Singular name for 0..n aggregations. For 0..n aggregations the name by convention should be the plural name.
798
+ * @property {string} [type='sap.ui.core.Control'] Type of the new aggregation. Must be the full global name of a ManagedObject subclass
799
+ * or a UI5 interface (in dot notation, e.g. 'sap.m.Button').
800
+ * @property {boolean} [multiple=true] Whether the aggregation is a 0..1 (false) or a 0..n aggregation (true), defaults to true
801
+ * @property {string} [singularName] Singular name for 0..n aggregations. For 0..n aggregations the name by convention should be the plural name.
743
802
  * Methods affecting multiple objects in an aggregation will use the plural name (e.g. getItems(), whereas methods that deal with a single object will use
744
- * the singular name (e.g. addItem). The framework knows a set of common rules for building plural form of English nouns and uses these rules to determine
745
- * a singular name on its own. if that name is wrong, a singluarName can be specified with this property. </li>
746
- * <li><code>[visibility]: <i>string</i></code> either 'hidden' or 'public', defaults to 'public'. Aggregations that
803
+ * the singular name (e.g. addItem). The framework knows a set of common rules for building the plural form of English nouns and uses these rules to determine
804
+ * a singular name on its own. If that name is wrong, a singluarName can be specified with this property.
805
+ * @property {"hidden" | "public"} [visibility="public"] Either 'hidden' or 'public', defaults to 'public'. Aggregations that
747
806
  * belong to the API of a class must be 'public' whereas 'hidden' aggregations typically are used for the
748
807
  * implementation of composite classes (e.g. composite controls). Only public aggregations are accepted by
749
808
  * the constructor or by <code>applySettings</code> or in declarative representations like an <code>XMLView</code>.
750
- * Equally, only public aggregations are cloned.</li>
751
- * <li><code>bindable: <i>boolean|string</i></code> (either can be omitted or set to the boolean value <code>true</code> or the magic string 'bindable')
809
+ * Equally, only public aggregations are cloned.
810
+ * @property {boolean | "bindable"} [bindable=false] (Either can be omitted or set to the boolean value <code>true</code> or the magic string 'bindable'.)
752
811
  * If set to <code>true</code> or 'bindable', additional named methods <code>bind<i>Name</i></code> and <code>unbind<i>Name</i></code> are generated as convenience.
753
812
  * Despite its name, setting this flag is not mandatory to make the managed aggregation bindable. The generic methods {@link #bindAggregation} and
754
- * {@link #unbindAggregation} can always be used. </li>
755
- * <li><code>forwarding: <i>object</i></code>
813
+ * {@link #unbindAggregation} can always be used.
814
+ * @property {object} [forwarding]
756
815
  * If set, this defines a forwarding of objects added to this aggregation into an aggregation of another ManagedObject - typically to an inner control
757
816
  * within a composite control.
758
817
  * This means that all adding, removal, or other operations happening on the source aggregation are actually called on the target instance.
@@ -768,26 +827,21 @@ sap.ui.define([
768
827
  * The aggregation target must remain the same instance across the entire lifetime of the source control.
769
828
  * Aggregation forwarding will behave unexpectedly when the content in the target aggregation is modified by other actors (e.g. by the target element or by
770
829
  * another forwarding from a different source aggregation). Hence, this is not allowed.
771
- * The forwarding configuration object defines the target of the forwarding. The available settings are:
772
- * <ul>
773
- * <li><code>idSuffix: <i>string</i></code>A string which is appended to the ID of <i>this</i> ManagedObject to construct the ID of the target ManagedObject. This is
774
- * one of the two options to specify the target. This option requires the target instance to be created in the init() method of this ManagedObject and to be
775
- * always available.</li>
776
- * <li><code>getter: <i>string</i></code>The name of the function on instances of this ManagedObject which returns the target instance. This second option
777
- * to specify the target can be used for lazy instantiation of the target. Note that either idSuffix or getter must be given. Also note that the target
778
- * instance returned by the getter must remain the same over the entire lifetime of this ManagedObject and the implementation assumes that all instances return
779
- * the same type of object (at least the target aggregation must always be defined in the same class).</li>
780
- * <li><code>aggregation: <i>string</i></code>The name of the aggregation on the target into which the objects shall be forwarded. The multiplicity of the target
781
- * aggregation must be the same as the one of the source aggregation for which forwarding is defined.</li>
782
- * <li><code>[forwardBinding]: <i>boolean</i></code>Whether any binding should happen on the forwarding target or not. Default if omitted is <code>false</code>,
783
- * which means any bindings happen on the outer ManagedObject. When the binding is forwarded, all binding methods like updateAggregation, getBindingInfo,
784
- * refreshAggregation etc. are called on the target element of the forwarding instead of being called on this element. The basic aggregation mutator methods
785
- * (add/remove etc.) are only called on the forwarding target element. Without forwardBinding, they are called on this element, but forwarded to the forwarding
786
- * target, where they actually modify the aggregation.
787
- * </li>
788
- * </ul>
789
- * </li>
790
- * <li><code>selector: <i>string</i></code> Optional; can be set to a valid CSS selector (as accepted by the
830
+ * @property {string} forwarding.aggregation The name of the aggregation on the target into which the objects shall be forwarded. The multiplicity of the target
831
+ * aggregation must be the same as the one of the source aggregation for which forwarding is defined.
832
+ * @property {string} [forwarding.idSuffix] A string which is appended to the ID of <i>this</i> ManagedObject to construct the ID of the target ManagedObject. This is
833
+ * one of the two options to specify the target. This option requires the target instance to be created in the init() method of this ManagedObject and to be
834
+ * always available.
835
+ * @property {string} [forwarding.getter] The name of the function on instances of this ManagedObject which returns the target instance. This second option
836
+ * to specify the target can be used for lazy instantiation of the target. Note that either idSuffix or getter must be given. Also note that the target
837
+ * instance returned by the getter must remain the same over the entire lifetime of this ManagedObject and the implementation assumes that all instances return
838
+ * the same type of object (at least the target aggregation must always be defined in the same class).
839
+ * @property {boolean} [forwarding.forwardBinding] Whether any binding should happen on the forwarding target or not. Default if omitted is <code>false</code>,
840
+ * which means any bindings happen on the outer ManagedObject. When the binding is forwarded, all binding methods like updateAggregation, getBindingInfo,
841
+ * refreshAggregation etc. are called on the target element of the forwarding instead of being called on this element. The basic aggregation mutator methods
842
+ * (add/remove etc.) are only called on the forwarding target element. Without forwardBinding, they are called on this element, but forwarded to the forwarding
843
+ * target, where they actually modify the aggregation.
844
+ * @property {string} [selector] Can be set to a valid CSS selector (as accepted by the
791
845
  * {@link https://developer.mozilla.org/en-US/docs/Web/API/Element/querySelector Element.prototype.querySelector}
792
846
  * method). When set, it locates the DOM element that surrounds the aggregation's content. It should only be
793
847
  * set for aggregations that have a visual representation in the DOM. A DOM element surrounding the aggregation's
@@ -809,120 +863,132 @@ sap.ui.define([
809
863
  * Only selected framework features may use that private method, it is not yet a public API and might be changed
810
864
  * or removed in future versions of UI5. However, instead of maintaining the <code>selector</code> in the metadata,
811
865
  * element and control classes can overwrite <code>getDomRefForSetting</code> to calculate or add the appropriate
812
- * DOM Element dynamically.</li>
813
- * </li>
814
- * </ul>
815
- * Aggregation names should use camelCase notation, start with a lowercase letter and only use characters from the set [a-zA-Z0-9_$].
816
- * The name for a hidden aggregations might start with an underscore.
817
- * If an aggregation in the literal is preceded by a JSDoc comment (doclet) and if the UI5 plugin and template are used for JSDoc3 generation, the doclet will
818
- * be used as generic documentation of the aggregation.
819
- *
820
- * For each public aggregation 'item' of cardinality 0..1, the following methods will be created by the "extend" method and will be added to the
821
- * prototype of the subclass:
822
- * <ul>
823
- * <li>getItem() - returns the current value of aggregation 'item'. Internally calls {@link #getAggregation} with a default value of <code>undefined</code></li>
824
- * <li>setItem(o) - sets 'o' as the new aggregated object in aggregation 'item'. Internally calls {@link #setAggregation}</li>
825
- * <li>destroyItem(o) - destroy a currently aggregated object in aggregation 'item' and clears the aggregation. Internally calls {@link #destroyAggregation}</li>
826
- * <li>bindItem(c) - (only if aggregation was defined to be 'bindable'): convenience function that wraps {@link #bindAggregation}</li>
827
- * <li>unbindItem() - (only if aggregation was defined to be 'bindable'): convenience function that wraps {@link #unbindAggregation}</li>
828
- * </ul>
829
- * For a public aggregation 'items' of cardinality 0..n, the following methods will be created:
830
- * <ul>
831
- * <li>getItems() - returns an array with the objects contained in aggregation 'items'. Internally calls {@link #getAggregation} with a default value of <code>[]</code></li>
832
- * <li>addItem(o) - adds an object as last element in the aggregation 'items'. Internally calls {@link #addAggregation}</li>
833
- * <li>insertItem(o,p) - inserts an object into the aggregation 'items'. Internally calls {@link #insertAggregation}</li>
834
- * <li>indexOfItem(o) - returns the position of the given object within the aggregation 'items'. Internally calls {@link #indexOfAggregation}</li>
835
- * <li>removeItem(v) - removes an object from the aggregation 'items'. Internally calls {@link #removeAggregation}</li>
836
- * <li>removeItems() - removes all objects from the aggregation 'items'. Internally calls {@link #removeAllAggregation}</li>
837
- * <li>destroyItems() - destroy all currently aggregated objects in aggregation 'items' and clears the aggregation. Internally calls {@link #destroyAggregation}</li>
838
- * <li>bindItems(c) - (only if aggregation was defined to be 'bindable'): convenience function that wraps {@link #bindAggregation}</li>
839
- * <li>unbindItems() - (only if aggregation was defined to be 'bindable'): convenience function that wraps {@link #unbindAggregation}</li>
840
- * </ul>
841
- * For hidden aggregations, no methods are generated.
842
- *
843
- *
844
- * <b>'defaultAggregation'</b> : <i>string</i><br>
845
- * When specified, the default aggregation must match the name of one of the aggregations defined for the new subclass (either own or inherited).
846
- * The named aggregation will be used in contexts where no aggregation is specified. E,g. when an object in an XMLView embeds other objects without
847
- * naming an aggregation, as in the following example:
848
- * <pre>
849
- * &lt;!-- assuming the defaultAggregation for Dialog is 'content' -->
850
- * &lt;Dialog>
851
- * &lt;Text/>
852
- * &lt;Button/>
853
- * &lt;/Dialog>
854
- * </pre>
855
- *
866
+ * DOM Element dynamically.
867
+ * @property {boolean} [deprecated=false] Flag that marks the aggregation as deprecated (defaults to false). May lead to an additional warning
868
+ * log message at runtime when the aggregation is still used. For the documentation, also add a <code>@deprecated</code> tag in the JSDoc,
869
+ * describing since when it is deprecated and what any alternatives are.
870
+ * @property {string[]} [altTypes] An optional list of alternative types that may be given instead of the main type. Alternative types
871
+ * may only be simple types, no descendants of ManagedObject. An example of altTypes being used is the 'tooltip' aggregation of
872
+ * <code>sap.ui.core.Element</code>, which accepts tooltip controls extending <code>sap.ui.core.TooltipBase</code> with their own renderer
873
+ * and design, as well as plain strings, which will simply be displayed using the browser's built-in tooltip functionality.
874
+ * @property {boolean | object} [dnd=false]
875
+ * Only available for aggregations of a class extending <code>sap.ui.core.Element</code>, which is a subclass of <code>sap.ui.base.ManagedObject</code>!
876
+ * Defines draggable and droppable configuration of the aggregation.
877
+ * If the <code>dnd</code> property is of type Boolean, then the <code>draggable</code> and <code>droppable</code> configuration are both set to this Boolean value
878
+ * and the layout (in case of enabled dnd) is set to default ("Vertical").
879
+ * @property {boolean} [dnd.draggable=false] Defines whether elements from this aggregation are draggable or not. The default value is <code>false</code>.
880
+ * @property {boolean} [dnd.droppable=false] Defines whether the element is droppable (it allows being dropped on by a draggable element) or not. The default value is <code>false</code>.
881
+ * @property {"Vertical" | "Horizontal"} [dnd.layout="Vertical"] The arrangement of the items in this aggregation. This setting is recommended for the aggregation with multiplicity 0..n
882
+ * (<code>multiple: true</code>). Possible values are <code>Vertical</code> (e.g. rows in a table) and <code>Horizontal</code> (e.g. columns in a table). It is recommended
883
+ * to use <code>Horizontal</code> layout if the visual arrangement of the aggregation is two-dimensional.
856
884
  *
857
- * <b>'associations'</b> : <i>object</i><br>
858
- * An object literal whose properties each define a new association of the ManagedObject subclass.
859
- * The value can either be a simple string which then will be assumed to be the type of the new association or it can be
860
- * an object literal with the following properties
861
- * <ul>
862
- * <li><code>type: <i>string</i></code> type of the new association</li>
863
- * <li><code>multiple: <i>boolean</i></code> whether the association is a 0..1 (false) or a 0..n association (true), defaults to false(1) for associations</li>
864
- * <li><code>[singularName]: <i>string</i></code>. Singular name for 0..n associations. For 0..n associations the name by convention should be the plural name.
865
- * Methods affecting multiple objects in an association will use the plural name (e.g. getItems(), whereas methods that deal with a single object will use
866
- * the singular name (e.g. addItem). The framework knows a set of common rules for building plural form of English nouns and uses these rules to determine
867
- * a singular name on its own. if that name is wrong, a singluarName can be specified with this property.</li>
868
- * <li><code>visibility: <i>string</i></code> either 'hidden' or 'public', defaults to 'public'. Associations that
885
+ * @public
886
+ */
887
+
888
+ /**
889
+ * @typedef {object} sap.ui.base.ManagedObject.MetadataOptions.Association
890
+ *
891
+ * An object literal describing an association of a class derived from <code>sap.ui.base.ManagedObject</code>.
892
+ * See {@link sap.ui.base.ManagedObject.MetadataOptions MetadataOptions} for details on its usage.
893
+ *
894
+ * @property {string} [type='sap.ui.core.Control'] Type of the new association
895
+ * @property {boolean} [multiple=false] Whether the association is a 0..1 (false) or a 0..n association (true), defaults to false (0..1) for associations
896
+ * @property {string} [singularName] Custom singular name. This is only relevant for 0..n associations where the association name should be defined in plural form
897
+ * and the framework tries to generate the singular form of it for certain places where it is needed. To do so, the framework knows
898
+ * a set of common rules for building the plural form of English nouns and uses these rules to determine
899
+ * a singular name on its own. If that name is wrong, a singularName can be specified with this property.
900
+ * E.g. for an association named <code>items</code>, methods affecting multiple objects in an association will use the plural name (<code>getItems()</code>),
901
+ * whereas methods that deal with a single object will automatically use the generated singular name (e.g. <code>addItem(...)</code>). However, the generated
902
+ * singular form for an association <code>news</code> would be <code>new</code>, which is wrong, so the singular name "news" would need to be set.
903
+ * @property {"hidden" | "public"} [visibility="public"] Either 'hidden' or 'public', defaults to 'public'. Associations that
869
904
  * belong to the API of a class must be 'public' whereas 'hidden' associations can only be used internally.
870
905
  * Only public associations are accepted by the constructor or by <code>applySettings</code> or in declarative
871
- * representations like an <code>XMLView</code>. Equally, only public associations are cloned.</li>
872
- * </ul>
873
- * Association names should use camelCase notation, start with a lowercase letter and only use characters from the set [a-zA-Z0-9_$].
874
- * If an association in the literal is preceded by a JSDoc comment (doclet) and if the UI5 plugin and template are used for JSDoc3 generation, the doclet will
875
- * be used as generic documentation of the association.
906
+ * representations like an <code>XMLView</code>. Equally, only public associations are cloned.
907
+ * @property {boolean} [deprecated=false] Flag that marks the association as deprecated (defaults to false). May lead to an additional warning
908
+ * log message at runtime when the association is still used. For the documentation, also add a <code>@deprecated</code> tag in the JSDoc,
909
+ * describing since when it is deprecated and what any alternatives are.
876
910
  *
877
- * For each association 'ref' of cardinality 0..1, the following methods will be created by the "extend" method and will be added to the
878
- * prototype of the subclass:
879
- * <ul>
880
- * <li>getRef() - returns the current value of association 'item'. Internally calls {@link #getAssociation} with a default value of <code>undefined</code></li>
881
- * <li>setRef(o) - sets 'o' as the new associated object in association 'item'. Internally calls {@link #setAssociation}</li>
882
- * </ul>
883
- * For a public association 'refs' of cardinality 0..n, the following methods will be created:
884
- * <ul>
885
- * <li>getRefs() - returns an array with the objects contained in association 'items'. Internally calls {@link #getAssociation} with a default value of <code>[]</code></li>
886
- * <li>addRef(o) - adds an object as last element in the association 'items'. Internally calls {@link #addAssociation}</li>
887
- * <li>removeRef(v) - removes an object from the association 'items'. Internally calls {@link #removeAssociation}</li>
888
- * <li>removeAllRefs() - removes all objects from the association 'items'. Internally calls {@link #removeAllAssociation}</li>
889
- * </ul>
890
- * For hidden associations, no methods are generated.
911
+ * @public
912
+ */
913
+
914
+ /**
915
+ * @typedef {object} sap.ui.base.ManagedObject.MetadataOptions.Event
891
916
  *
917
+ * An object literal describing an event of a class derived from <code>sap.ui.base.ManagedObject</code>.
918
+ * See {@link sap.ui.base.ManagedObject.MetadataOptions MetadataOptions} for details on its usage.
892
919
  *
893
- * <b>'events'</b> : <i>object</i><br>
894
- * An object literal whose properties each define a new event of the ManagedObject subclass.
895
- * The value can either be a simple string which then will be assumed to be the type of the new association or it can be
896
- * an object literal with the following properties
897
- * <ul>
898
- * <li><code>allowPreventDefault: <i>boolean</i></code> whether the event allows to prevented the default behavior of the event source</li>
899
- * <li><code>parameters: <i>object</i></code> an object literal that describes the parameters of this event. </li>
900
- * </ul>
901
- * Event names should use camelCase notation, start with a lower-case letter and only use characters from the set [a-zA-Z0-9_$].
902
- * If an event in the literal is preceded by a JSDoc comment (doclet) and if the UI5 plugin and template are used for JSDoc3 generation, the doclet will be used
903
- * as generic documentation of the event.
920
+ * @property {boolean} [allowPreventDefault] Whether the event allows to prevented the default behavior of the event source
921
+ * @property {Object<string, {type: string} | string>} [parameters] An object literal that describes the parameters of this event;
922
+ * the keys are the parameter names and the values are objects with a 'type' property that specifies the type of the respective parameter.
923
+ * @property {boolean} [enableEventBubbling=false] whether event bubbling is enabled on this event. When <code>true</code> the event is also forwarded to the parent(s)
924
+ * of the object (see {@link sap.ui.base.EventProvider#getEventingParent}) until the bubbling of the event is stopped or no parent is available anymore.
925
+ * @property {boolean} [deprecated=false] Flag that marks the event as deprecated (defaults to false). May lead to an additional warning
926
+ * log message at runtime when the event is still used. For the documentation, also add a <code>@deprecated</code> tag in the JSDoc,
927
+ * describing since when it is deprecated and what any alternatives are.
904
928
  *
905
- * For each event 'Some' the following methods will be created by the "extend" method and will be added to the
906
- * prototype of the subclass:
929
+ * @public
930
+ */
931
+
932
+ /**
933
+ * Defines a new subclass of ManagedObject with name <code>sClassName</code> and enriches it with
934
+ * the information contained in <code>oClassInfo</code>.
935
+ *
936
+ * <code>oClassInfo</code> can contain the same information that {@link sap.ui.base.Object.extend} already accepts,
937
+ * plus the following new properties in the 'metadata' object literal
938
+ * (see {@link sap.ui.base.ManagedObject.MetadataOptions MetadataOptions} for details on each of them):
907
939
  * <ul>
908
- * <li>attachSome(fn,o) - registers a listener for the event. Internally calls {@link #attachEvent}</li>
909
- * <li>detachSome(fn,o) - deregisters a listener for the event. Internally calls {@link #detachEvent}</li>
910
- * <li>fireSome() - fire the event. Internally calls {@link #fireEvent}</li>
940
+ * <li><code>library : <i>string</i></code></li>
941
+ * <li><code>properties : <i>object</i></code></li>
942
+ * <li><code>defaultProperty : <i>string</i></code></li>
943
+ * <li><code>aggregations : <i>object</i></code></li>
944
+ * <li><code>defaultAggregation : <i>string</i></code></li>
945
+ * <li><code>associations : <i>object</i></code></li>
946
+ * <li><code>events : <i>object</i></code></li>
947
+ * <li><code>specialSettings : <i>object</i></code> // this one is still experimental and not for public usage!</li>
911
948
  * </ul>
912
949
  *
913
950
  *
914
- * <b>'specialSettings'</b> : <i>object</i><br>
915
- * Special settings are an experimental feature and MUST NOT BE DEFINED in controls or applications outside of the <code>sap.ui.core</code> library.
916
- * There's no generic or general way how to set or get the values for special settings. For the same reason, they cannot be bound against a model.
917
- * If there's a way for consumers to define a value for a special setting, it must be documented in the class that introduces the setting.
918
- *
951
+ * Example:
952
+ * <pre>
953
+ * ManagedObject.extend('sap.mylib.MyClass', {
954
+ * metadata : {
955
+ * library: 'sap.mylib',
956
+ * properties : {
957
+ * value: 'string',
958
+ * width: 'sap.ui.core.CSSSize',
959
+ * height: { type: 'sap.ui.core.CSSSize', defaultValue: '100%'}
960
+ * description: { type: 'string', defaultValue: '', selector: '#{id}-desc'}
961
+ * },
962
+ * defaultProperty : 'value',
963
+ * aggregations : {
964
+ * header : { type: 'sap.mylib.FancyHeader', multiple : false }
965
+ * items : 'sap.ui.core.Control',
966
+ * buttons: { type: 'sap.mylib.Button', multiple : true, selector: '#{id} > .sapMLButtonsSection'}
967
+ * },
968
+ * defaultAggregation : 'items',
969
+ * associations : {
970
+ * initiallyFocused : { type: 'sap.ui.core.Control' }
971
+ * },
972
+ * events: {
973
+ * beforeOpen : {
974
+ * parameters : {
975
+ * opener : { type: 'sap.ui.core.Control' }
976
+ * }
977
+ * }
978
+ * },
979
+ * },
919
980
  *
981
+ * init: function() {
982
+ * }
920
983
  *
984
+ * }); // end of 'extend' call
985
+ * </pre>
921
986
  *
922
- * @param {string} sClassName name of the class to be created
923
- * @param {object} [oClassInfo] object literal with information about the class
924
- * @param {function} [FNMetaImpl] constructor function for the metadata object. If not given, it defaults to <code>sap.ui.base.ManagedObjectMetadata</code>.
925
- * @return {function} the created class / constructor function
987
+ * @param {string} sClassName Name of the class to be created
988
+ * @param {object} [oClassInfo] Object literal with information about the class
989
+ * @param {sap.ui.base.ManagedObject.MetadataOptions} [oClassInfo.metadata] The metadata object describing the class: properties, aggregations, events etc.
990
+ * @param {function} [FNMetaImpl] Constructor function for the metadata object. If not given, it defaults to <code>sap.ui.base.ManagedObjectMetadata</code>.
991
+ * @return {function} The created class / constructor function
926
992
  *
927
993
  * @public
928
994
  * @static
@@ -1050,6 +1116,31 @@ sap.ui.define([
1050
1116
 
1051
1117
  };
1052
1118
 
1119
+ /**
1120
+ * Calls the function <code>fn</code> once and marks all ManagedObjects
1121
+ * created during that call as "owned" by the given ID.
1122
+ *
1123
+ * @param {function} fn Function to execute
1124
+ * @param {string} sOwnerId Id of the owner
1125
+ * @param {Object} [oThisArg=undefined] Value to use as <code>this</code> when executing <code>fn</code>
1126
+ * @return {any} result of function <code>fn</code>
1127
+ * @private
1128
+ * @ui5-restricted sap.ui.core
1129
+ */
1130
+ ManagedObject.runWithOwner = function(fn, sOwnerId, oThisArg) {
1131
+
1132
+ assert(typeof fn === "function", "fn must be a function");
1133
+
1134
+ var oldOwnerId = ManagedObject._sOwnerId;
1135
+ try {
1136
+ ManagedObject._sOwnerId = sOwnerId;
1137
+ return fn.call(oThisArg);
1138
+ } finally {
1139
+ ManagedObject._sOwnerId = oldOwnerId;
1140
+ }
1141
+
1142
+ };
1143
+
1053
1144
  /**
1054
1145
  * Sets all the properties, aggregations, associations and event handlers as given in
1055
1146
  * the object literal <code>mSettings</code>. If a property, aggregation, etc.
@@ -3601,6 +3692,19 @@ sap.ui.define([
3601
3692
  throw new Error("Missing template or factory function for aggregation " + sName + " of " + this + " !");
3602
3693
  }
3603
3694
 
3695
+ if (oBindingInfo.factory) {
3696
+ // unwrap factory if alread wrapped (e.g. bindingInfo is shared)
3697
+ var fnOriginalFactory = oBindingInfo.factory[BINDING_INFO_FACTORY_SYMBOL] || oBindingInfo.factory;
3698
+
3699
+ // wrap runWithOwner() call around the original factory function
3700
+ var sOwnerId = this._sOwnerId;
3701
+ oBindingInfo.factory = function(sId, oContext) {
3702
+ // bind original factory with the two arguments: id and bindingContext
3703
+ return ManagedObject.runWithOwner(fnOriginalFactory.bind(null, sId, oContext), sOwnerId);
3704
+ };
3705
+ oBindingInfo.factory[BINDING_INFO_FACTORY_SYMBOL] = fnOriginalFactory;
3706
+ }
3707
+
3604
3708
  if (this._observer) {
3605
3709
  this._observer.bindingChange(this, sName, "prepare", oBindingInfo, "aggregation");
3606
3710
  }