@openui5/sap.ui.core 1.124.0 → 1.125.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 (647) hide show
  1. package/.reuse/dep5 +5 -0
  2. package/THIRDPARTY.txt +7 -0
  3. package/package.json +1 -1
  4. package/src/jquery.sap.global.js +4 -4
  5. package/src/jquery.sap.properties.js +2 -2
  6. package/src/jquery.sap.resources.js +1 -1
  7. package/src/jquery.sap.script.js +1 -1
  8. package/src/jquery.sap.storage.js +3 -3
  9. package/src/jquery.sap.ui.js +6 -2
  10. package/src/sap/base/Event.js +1 -1
  11. package/src/sap/base/Eventing.js +1 -1
  12. package/src/sap/base/config.js +1 -1
  13. package/src/sap/base/i18n/LanguageTag.js +1 -1
  14. package/src/sap/base/i18n/date/TimezoneUtils.js +1 -1
  15. package/src/sap/base/util/restricted/_CancelablePromise.js +1 -1
  16. package/src/sap/base/util/restricted/_castArray.js +1 -1
  17. package/src/sap/base/util/restricted/_compact.js +1 -1
  18. package/src/sap/base/util/restricted/_curry.js +1 -1
  19. package/src/sap/base/util/restricted/_debounce.js +1 -1
  20. package/src/sap/base/util/restricted/_difference.js +1 -1
  21. package/src/sap/base/util/restricted/_differenceBy.js +1 -1
  22. package/src/sap/base/util/restricted/_differenceWith.js +1 -1
  23. package/src/sap/base/util/restricted/_flatMap.js +1 -1
  24. package/src/sap/base/util/restricted/_flatMapDeep.js +1 -1
  25. package/src/sap/base/util/restricted/_flatMapDepth.js +1 -1
  26. package/src/sap/base/util/restricted/_flatten.js +1 -1
  27. package/src/sap/base/util/restricted/_flattenDeep.js +1 -1
  28. package/src/sap/base/util/restricted/_flattenDepth.js +1 -1
  29. package/src/sap/base/util/restricted/_intersection.js +1 -1
  30. package/src/sap/base/util/restricted/_intersectionBy.js +1 -1
  31. package/src/sap/base/util/restricted/_intersectionWith.js +1 -1
  32. package/src/sap/base/util/restricted/_isEqual.js +1 -1
  33. package/src/sap/base/util/restricted/_isEqualWith.js +1 -1
  34. package/src/sap/base/util/restricted/_isNil.js +1 -1
  35. package/src/sap/base/util/restricted/_max.js +1 -1
  36. package/src/sap/base/util/restricted/_merge.js +1 -1
  37. package/src/sap/base/util/restricted/_mergeWith.js +1 -1
  38. package/src/sap/base/util/restricted/_min.js +1 -1
  39. package/src/sap/base/util/restricted/_omit.js +1 -1
  40. package/src/sap/base/util/restricted/_pick.js +1 -1
  41. package/src/sap/base/util/restricted/_pickBy.js +1 -1
  42. package/src/sap/base/util/restricted/_throttle.js +1 -1
  43. package/src/sap/base/util/restricted/_toArray.js +1 -1
  44. package/src/sap/base/util/restricted/_union.js +1 -1
  45. package/src/sap/base/util/restricted/_unionBy.js +1 -1
  46. package/src/sap/base/util/restricted/_unionWith.js +1 -1
  47. package/src/sap/base/util/restricted/_uniq.js +1 -1
  48. package/src/sap/base/util/restricted/_uniqBy.js +1 -1
  49. package/src/sap/base/util/restricted/_uniqWith.js +1 -1
  50. package/src/sap/base/util/restricted/_without.js +1 -1
  51. package/src/sap/base/util/restricted/_xor.js +1 -1
  52. package/src/sap/base/util/restricted/_xorBy.js +1 -1
  53. package/src/sap/base/util/restricted/_xorWith.js +1 -1
  54. package/src/sap/base/util/restricted/_zipObject.js +1 -1
  55. package/src/sap/base/util/restricted/_zipObjectDeep.js +1 -1
  56. package/src/sap/ui/Device.js +3 -3
  57. package/src/sap/ui/Global.js +4 -4
  58. package/src/sap/ui/base/Event.js +1 -1
  59. package/src/sap/ui/base/EventProvider.js +1 -1
  60. package/src/sap/ui/base/Interface.js +1 -1
  61. package/src/sap/ui/base/ManagedObject.js +1 -1
  62. package/src/sap/ui/base/ManagedObjectMetadata.js +1 -1
  63. package/src/sap/ui/base/Metadata.js +1 -1
  64. package/src/sap/ui/base/Object.js +1 -1
  65. package/src/sap/ui/base/ObjectPool.js +1 -1
  66. package/src/sap/ui/core/.library +3 -3
  67. package/src/sap/ui/core/BusyIndicator.js +1 -1
  68. package/src/sap/ui/core/Component.js +7 -4
  69. package/src/sap/ui/core/ComponentContainer.js +1 -1
  70. package/src/sap/ui/core/ComponentMetadata.js +1 -1
  71. package/src/sap/ui/core/ComponentSupport.js +1 -1
  72. package/src/sap/ui/core/Configuration.js +1 -1
  73. package/src/sap/ui/core/Control.js +1 -1
  74. package/src/sap/ui/core/Core.js +18 -25
  75. package/src/sap/ui/core/CustomData.js +1 -1
  76. package/src/sap/ui/core/DeclarativeSupport.js +1 -1
  77. package/src/sap/ui/core/Element.js +1 -1
  78. package/src/sap/ui/core/ElementMetadata.js +4 -3
  79. package/src/sap/ui/core/EnabledPropagator.js +1 -1
  80. package/src/sap/ui/core/EventBus.js +1 -1
  81. package/src/sap/ui/core/ExtensionPoint.js +23 -9
  82. package/src/sap/ui/core/Fragment.js +15 -1
  83. package/src/sap/ui/core/HTML.js +1 -1
  84. package/src/sap/ui/core/History.js +1 -1
  85. package/src/sap/ui/core/Icon.js +84 -50
  86. package/src/sap/ui/core/IndicationColorSupport.js +1 -1
  87. package/src/sap/ui/core/IntervalTrigger.js +1 -1
  88. package/src/sap/ui/core/InvisibleMessage.js +1 -1
  89. package/src/sap/ui/core/InvisibleRenderer.js +1 -1
  90. package/src/sap/ui/core/InvisibleText.js +1 -1
  91. package/src/sap/ui/core/Item.js +1 -1
  92. package/src/sap/ui/core/LabelEnablement.js +66 -1
  93. package/src/sap/ui/core/LayoutData.js +1 -1
  94. package/src/sap/ui/core/ListItem.js +1 -1
  95. package/src/sap/ui/core/LocalBusyIndicator.js +1 -1
  96. package/src/sap/ui/core/Locale.js +1 -1
  97. package/src/sap/ui/core/LocaleData.js +1 -1
  98. package/src/sap/ui/core/Manifest.js +1 -1
  99. package/src/sap/ui/core/Message.js +1 -1
  100. package/src/sap/ui/core/RenderManager.js +1 -1
  101. package/src/sap/ui/core/Renderer.js +1 -1
  102. package/src/sap/ui/core/ResizeHandler.js +1 -1
  103. package/src/sap/ui/core/ScrollBar.js +1 -1
  104. package/src/sap/ui/core/SeparatorItem.js +1 -1
  105. package/src/sap/ui/core/Title.js +1 -1
  106. package/src/sap/ui/core/TooltipBase.js +1 -1
  107. package/src/sap/ui/core/UIArea.js +5 -5
  108. package/src/sap/ui/core/UIComponent.js +24 -17
  109. package/src/sap/ui/core/UIComponentMetadata.js +1 -1
  110. package/src/sap/ui/core/ValueStateSupport.js +1 -1
  111. package/src/sap/ui/core/VariantLayoutData.js +1 -1
  112. package/src/sap/ui/core/XMLComposite.js +1 -1
  113. package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
  114. package/src/sap/ui/core/XMLTemplateProcessor.js +110 -74
  115. package/src/sap/ui/core/cldr/zh_TW.json +20 -20
  116. package/src/sap/ui/core/date/UI5Date.js +1 -1
  117. package/src/sap/ui/core/delegate/ItemNavigation.js +1 -1
  118. package/src/sap/ui/core/delegate/ScrollEnablement.js +1 -1
  119. package/src/sap/ui/core/dnd/DragAndDrop.js +29 -23
  120. package/src/sap/ui/core/dnd/DragDropBase.js +1 -1
  121. package/src/sap/ui/core/dnd/DragDropInfo.js +1 -1
  122. package/src/sap/ui/core/dnd/DragInfo.js +1 -1
  123. package/src/sap/ui/core/dnd/DropInfo.js +6 -3
  124. package/src/sap/ui/core/format/DateFormat.js +3 -3
  125. package/src/sap/ui/core/format/FormatUtils.js +1 -1
  126. package/src/sap/ui/core/format/TimezoneUtil.js +1 -1
  127. package/src/sap/ui/core/getCompatibilityVersion.js +1 -1
  128. package/src/sap/ui/core/hyphenation/Hyphenation.js +1 -1
  129. package/src/sap/ui/core/library.js +3 -3
  130. package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
  131. package/src/sap/ui/core/message/Message.js +1 -1
  132. package/src/sap/ui/core/message/MessageManager.js +1 -1
  133. package/src/sap/ui/core/message/MessageParser.js +1 -1
  134. package/src/sap/ui/core/message/MessageProcessor.js +1 -1
  135. package/src/sap/ui/core/mvc/Controller.js +77 -77
  136. package/src/sap/ui/core/mvc/HTMLView.js +1 -1
  137. package/src/sap/ui/core/mvc/JSONView.js +1 -1
  138. package/src/sap/ui/core/mvc/JSView.js +1 -1
  139. package/src/sap/ui/core/mvc/TemplateView.js +1 -1
  140. package/src/sap/ui/core/mvc/View.js +10 -2
  141. package/src/sap/ui/core/mvc/XMLProcessingMode.js +4 -1
  142. package/src/sap/ui/core/mvc/XMLView.js +33 -5
  143. package/src/sap/ui/core/mvc/XMLViewRenderer.js +40 -7
  144. package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
  145. package/src/sap/ui/core/plugin/LessSupport.js +1 -1
  146. package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -1
  147. package/src/sap/ui/core/postmessage/Bus.js +1 -1
  148. package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
  149. package/src/sap/ui/core/routing/async/TargetCache.js +12 -1
  150. package/src/sap/ui/core/search/OpenSearchProvider.js +2 -2
  151. package/src/sap/ui/core/search/SearchProvider.js +2 -2
  152. package/src/sap/ui/core/service/Service.js +1 -1
  153. package/src/sap/ui/core/service/ServiceFactory.js +1 -1
  154. package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
  155. package/src/sap/ui/core/support/Plugin.js +1 -1
  156. package/src/sap/ui/core/support/Support.js +1 -1
  157. package/src/sap/ui/core/support/bootstrapFallback.js +1 -1
  158. package/src/sap/ui/core/support/plugins/ControlTree.js +1 -1
  159. package/src/sap/ui/core/support/plugins/Interaction.js +1 -1
  160. package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
  161. package/src/sap/ui/core/support/plugins/Performance.js +1 -1
  162. package/src/sap/ui/core/support/plugins/Selector.js +1 -1
  163. package/src/sap/ui/core/support/plugins/TechInfo.js +1 -1
  164. package/src/sap/ui/core/support/plugins/Trace.js +1 -1
  165. package/src/sap/ui/core/support/plugins/ViewInfo.js +1 -1
  166. package/src/sap/ui/core/tmpl/DOMAttribute.js +2 -2
  167. package/src/sap/ui/core/tmpl/DOMElement.js +2 -2
  168. package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +2 -2
  169. package/src/sap/ui/core/tmpl/Template.js +1 -1
  170. package/src/sap/ui/core/tmpl/TemplateControl.js +2 -2
  171. package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
  172. package/src/sap/ui/core/util/Export.js +1 -1
  173. package/src/sap/ui/core/util/ExportCell.js +1 -1
  174. package/src/sap/ui/core/util/ExportColumn.js +1 -1
  175. package/src/sap/ui/core/util/ExportRow.js +1 -1
  176. package/src/sap/ui/core/util/ExportType.js +1 -1
  177. package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
  178. package/src/sap/ui/core/util/File.js +1 -1
  179. package/src/sap/ui/core/util/LibraryInfo.js +1 -1
  180. package/src/sap/ui/core/util/MockServer.js +1 -1
  181. package/src/sap/ui/core/util/PasteHelper.js +1 -1
  182. package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
  183. package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
  184. package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
  185. package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
  186. package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
  187. package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
  188. package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
  189. package/src/sap/ui/core/webc/WebComponent.js +1 -1
  190. package/src/sap/ui/core/webc/WebComponentMetadata.js +1 -1
  191. package/src/sap/ui/core/ws/ReadyState.js +1 -1
  192. package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
  193. package/src/sap/ui/core/ws/WebSocket.js +1 -1
  194. package/src/sap/ui/debug/ControlTree.js +1 -1
  195. package/src/sap/ui/debug/DebugEnv.js +1 -1
  196. package/src/sap/ui/debug/PropertyList.js +1 -1
  197. package/src/sap/ui/dom/jquery/control.js +6 -3
  198. package/src/sap/ui/model/Binding.js +10 -0
  199. package/src/sap/ui/model/ClientModel.js +1 -1
  200. package/src/sap/ui/model/CompositeDataState.js +1 -1
  201. package/src/sap/ui/model/CompositeType.js +1 -1
  202. package/src/sap/ui/model/DataState.js +1 -1
  203. package/src/sap/ui/model/FieldHelp.js +362 -0
  204. package/src/sap/ui/model/MetaModel.js +1 -1
  205. package/src/sap/ui/model/Model.js +1 -1
  206. package/src/sap/ui/model/SelectionModel.js +1 -1
  207. package/src/sap/ui/model/SimpleType.js +1 -1
  208. package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
  209. package/src/sap/ui/model/Type.js +1 -1
  210. package/src/sap/ui/model/analytics/AnalyticalBinding.js +8 -12
  211. package/src/sap/ui/model/json/JSONModel.js +6 -5
  212. package/src/sap/ui/model/message/MessageModel.js +1 -1
  213. package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
  214. package/src/sap/ui/model/odata/ODataMessageParser.js +1 -1
  215. package/src/sap/ui/model/odata/ODataMetaModel.js +1 -1
  216. package/src/sap/ui/model/odata/ODataMetadata.js +1 -1
  217. package/src/sap/ui/model/odata/ODataModel.js +1 -1
  218. package/src/sap/ui/model/odata/type/Boolean.js +1 -1
  219. package/src/sap/ui/model/odata/type/Byte.js +1 -1
  220. package/src/sap/ui/model/odata/type/Currency.js +1 -1
  221. package/src/sap/ui/model/odata/type/Date.js +1 -1
  222. package/src/sap/ui/model/odata/type/DateTime.js +1 -1
  223. package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
  224. package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
  225. package/src/sap/ui/model/odata/type/DateTimeWithTimezone.js +1 -1
  226. package/src/sap/ui/model/odata/type/Decimal.js +1 -1
  227. package/src/sap/ui/model/odata/type/Double.js +1 -1
  228. package/src/sap/ui/model/odata/type/Guid.js +1 -1
  229. package/src/sap/ui/model/odata/type/Int.js +1 -1
  230. package/src/sap/ui/model/odata/type/Int16.js +1 -1
  231. package/src/sap/ui/model/odata/type/Int32.js +1 -1
  232. package/src/sap/ui/model/odata/type/Int64.js +1 -1
  233. package/src/sap/ui/model/odata/type/ODataType.js +1 -1
  234. package/src/sap/ui/model/odata/type/Raw.js +1 -1
  235. package/src/sap/ui/model/odata/type/SByte.js +1 -1
  236. package/src/sap/ui/model/odata/type/Single.js +1 -1
  237. package/src/sap/ui/model/odata/type/Stream.js +1 -1
  238. package/src/sap/ui/model/odata/type/String.js +1 -1
  239. package/src/sap/ui/model/odata/type/Time.js +1 -1
  240. package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
  241. package/src/sap/ui/model/odata/type/Unit.js +1 -1
  242. package/src/sap/ui/model/odata/v2/Context.js +1 -1
  243. package/src/sap/ui/model/odata/v2/ODataAnnotations.js +1 -1
  244. package/src/sap/ui/model/odata/v2/ODataModel.js +50 -6
  245. package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +1 -1
  246. package/src/sap/ui/model/odata/v4/Context.js +46 -32
  247. package/src/sap/ui/model/odata/v4/ODataBinding.js +47 -57
  248. package/src/sap/ui/model/odata/v4/ODataContextBinding.js +70 -82
  249. package/src/sap/ui/model/odata/v4/ODataListBinding.js +285 -213
  250. package/src/sap/ui/model/odata/v4/ODataMetaModel.js +41 -39
  251. package/src/sap/ui/model/odata/v4/ODataModel.js +236 -209
  252. package/src/sap/ui/model/odata/v4/ODataParentBinding.js +202 -203
  253. package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +1 -17
  254. package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +94 -22
  255. package/src/sap/ui/model/odata/v4/lib/_AggregationHelper.js +5 -0
  256. package/src/sap/ui/model/odata/v4/lib/_Cache.js +41 -61
  257. package/src/sap/ui/model/odata/v4/lib/_Helper.js +111 -68
  258. package/src/sap/ui/model/odata/v4/lib/_Requestor.js +78 -78
  259. package/src/sap/ui/model/odata/v4/lib/_TreeState.js +1 -1
  260. package/src/sap/ui/model/odata/v4/lib/_V2MetadataConverter.js +20 -20
  261. package/src/sap/ui/model/odata/v4/lib/_V2Requestor.js +60 -60
  262. package/src/sap/ui/model/resource/ResourceModel.js +7 -2
  263. package/src/sap/ui/model/type/Boolean.js +1 -1
  264. package/src/sap/ui/model/type/Currency.js +6 -3
  265. package/src/sap/ui/model/type/Date.js +1 -1
  266. package/src/sap/ui/model/type/DateInterval.js +1 -1
  267. package/src/sap/ui/model/type/DateTime.js +1 -1
  268. package/src/sap/ui/model/type/DateTimeInterval.js +1 -1
  269. package/src/sap/ui/model/type/FileSize.js +1 -1
  270. package/src/sap/ui/model/type/Float.js +1 -1
  271. package/src/sap/ui/model/type/Integer.js +1 -1
  272. package/src/sap/ui/model/type/String.js +1 -1
  273. package/src/sap/ui/model/type/Time.js +1 -1
  274. package/src/sap/ui/model/type/TimeInterval.js +1 -1
  275. package/src/sap/ui/model/type/Unit.js +6 -3
  276. package/src/sap/ui/model/xml/XMLModel.js +1 -1
  277. package/src/sap/ui/qunit/qunit-coverage-istanbul.js +1 -1
  278. package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
  279. package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +1 -1
  280. package/src/sap/ui/test/OpaPlugin.js +36 -12
  281. package/src/sap/ui/test/generic/TestBase.js +1 -1
  282. package/src/sap/ui/util/Storage.js +1 -1
  283. package/test/sap/ui/core/BindableResponseHeaders.html +4 -4
  284. package/test/sap/ui/core/ComponentCleanup.html +46 -46
  285. package/test/sap/ui/core/ComponentManifestFirst.html +26 -20
  286. package/test/sap/ui/core/ContextMenuSupport.html +9 -10
  287. package/test/sap/ui/core/DesigntimeOverview.html +1 -1
  288. package/test/sap/ui/core/EventBroadcaster.html +2 -2
  289. package/test/sap/ui/core/FieldGroup.html +70 -61
  290. package/test/sap/ui/core/GenericEventBinding.html +26 -23
  291. package/test/sap/ui/core/HTMLControl.html +46 -38
  292. package/test/sap/ui/core/HTMLSanitizer.html +70 -45
  293. package/test/sap/ui/core/IntervalTrigger.html +22 -21
  294. package/test/sap/ui/core/InvisibleControls.html +72 -72
  295. package/test/sap/ui/core/InvisibleText.html +2 -2
  296. package/test/sap/ui/core/LRUPersistentCache.html +19 -18
  297. package/test/sap/ui/core/LabelEnablement.html +18 -29
  298. package/test/sap/ui/core/Localization.html +40 -65
  299. package/test/sap/ui/core/Localization_HeapUsage.html +11 -12
  300. package/test/sap/ui/core/ManagedObjectModel.html +6 -7
  301. package/test/sap/ui/core/ODataAnnotationsPerformance.html +592 -602
  302. package/test/sap/ui/core/ODataV2CanonicalRequests.html +8 -8
  303. package/test/sap/ui/core/ODataV2Messages.html +1 -1
  304. package/test/sap/ui/core/ODataV2MessagesPerf.html +131 -132
  305. package/test/sap/ui/core/Popup.html +18 -14
  306. package/test/sap/ui/core/PopupWithUserSelection.html +4 -4
  307. package/test/sap/ui/core/StashedControlSupport.html +1 -1
  308. package/test/sap/ui/core/ThemeParameters.html +32 -20
  309. package/test/sap/ui/core/ValidateURL.html +109 -75
  310. package/test/sap/ui/core/demokit/sample/Messaging/ODataBackendMessagesComp/ui5.yaml +1 -1
  311. package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/Component.js +1 -4
  312. package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/Detail.controller.js +0 -1
  313. package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/Main.controller.js +0 -1
  314. package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/Opa.qunit.html +0 -1
  315. package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/extension/Component.js +1 -5
  316. package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/manifest.json +2 -10
  317. package/test/sap/ui/core/demokit/sample/ViewTemplate/tiny/Component.js +4 -1
  318. package/test/sap/ui/core/demokit/sample/ViewTemplate/tiny/manifest.json +37 -0
  319. package/test/sap/ui/core/demokit/sample/ViewTemplate/types/Component.js +5 -1
  320. package/test/sap/ui/core/demokit/sample/ViewTemplate/types/manifest.json +42 -0
  321. package/test/sap/ui/core/demokit/sample/ViewTemplate/valuelist/Component.js +6 -3
  322. package/test/sap/ui/core/demokit/sample/ViewTemplate/valuelist/Main.view.xml +4 -1
  323. package/test/sap/ui/core/demokit/sample/ViewTemplate/valuelist/manifest.json +49 -0
  324. package/test/sap/ui/core/demokit/sample/matcher/BindingPath/ui5.yaml +1 -1
  325. package/test/sap/ui/core/demokit/sample/matcher/Descendant/ui5.yaml +1 -1
  326. package/test/sap/ui/core/demokit/sample/matcher/I18NText/ui5.yaml +1 -1
  327. package/test/sap/ui/core/demokit/sample/matcher/LabelFor/ui5.yaml +1 -1
  328. package/test/sap/ui/core/demokit/sample/odata/types/v2/DateTime/Component.js +1 -0
  329. package/test/sap/ui/core/demokit/sample/odata/types/v2/DateTime/manifest.json +1 -2
  330. package/test/sap/ui/core/demokit/sample/odata/types/v2/DateTimeOffset/Component.js +1 -0
  331. package/test/sap/ui/core/demokit/sample/odata/types/v2/DateTimeOffset/manifest.json +1 -2
  332. package/test/sap/ui/core/demokit/sample/odata/types/v2/Time/Component.js +1 -0
  333. package/test/sap/ui/core/demokit/sample/odata/types/v2/Time/manifest.json +1 -2
  334. package/test/sap/ui/core/demokit/sample/odata/types/v4/Date/Component.js +1 -0
  335. package/test/sap/ui/core/demokit/sample/odata/types/v4/Date/manifest.json +1 -2
  336. package/test/sap/ui/core/demokit/sample/odata/types/v4/DateTimeOffset/Component.js +1 -0
  337. package/test/sap/ui/core/demokit/sample/odata/types/v4/DateTimeOffset/manifest.json +1 -2
  338. package/test/sap/ui/core/demokit/sample/odata/types/v4/TimeOfDay/Component.js +1 -0
  339. package/test/sap/ui/core/demokit/sample/odata/types/v4/TimeOfDay/manifest.json +1 -2
  340. package/test/sap/ui/core/demokit/sample/odata/v4/Ancestry/Component.js +1 -0
  341. package/test/sap/ui/core/demokit/sample/odata/v4/Ancestry/Main.controller.js +35 -31
  342. package/test/sap/ui/core/demokit/sample/odata/v4/Ancestry/manifest.json +1 -10
  343. package/test/sap/ui/core/demokit/sample/odata/v4/ConsumeV2Service/Component.js +1 -0
  344. package/test/sap/ui/core/demokit/sample/odata/v4/ConsumeV2Service/manifest.json +2 -11
  345. package/test/sap/ui/core/demokit/sample/odata/v4/DataAggregation/Component.js +1 -0
  346. package/test/sap/ui/core/demokit/sample/odata/v4/DataAggregation/DataAggregation.controller.js +71 -68
  347. package/test/sap/ui/core/demokit/sample/odata/v4/DataAggregation/Opa.qunit.html +0 -1
  348. package/test/sap/ui/core/demokit/sample/odata/v4/DataAggregation/manifest.json +3 -11
  349. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/Component.js +1 -0
  350. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/Opa.qunit.html +0 -1
  351. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/manifest.json +7 -16
  352. package/test/sap/ui/core/demokit/sample/odata/v4/Draft/Component.js +1 -0
  353. package/test/sap/ui/core/demokit/sample/odata/v4/Draft/Main.controller.js +3 -3
  354. package/test/sap/ui/core/demokit/sample/odata/v4/Draft/Opa.qunit.html +0 -1
  355. package/test/sap/ui/core/demokit/sample/odata/v4/Draft/manifest.json +1 -10
  356. package/test/sap/ui/core/demokit/sample/odata/v4/FieldGroups/Component.js +1 -0
  357. package/test/sap/ui/core/demokit/sample/odata/v4/FieldGroups/FieldGroups.view.xml +0 -1
  358. package/test/sap/ui/core/demokit/sample/odata/v4/FieldGroups/Opa.qunit.html +0 -1
  359. package/test/sap/ui/core/demokit/sample/odata/v4/FieldGroups/manifest.json +3 -11
  360. package/test/sap/ui/core/demokit/sample/odata/v4/FlatDataAggregation/Component.js +1 -0
  361. package/test/sap/ui/core/demokit/sample/odata/v4/FlatDataAggregation/FlatDataAggregation.controller.js +46 -43
  362. package/test/sap/ui/core/demokit/sample/odata/v4/FlatDataAggregation/FlatDataAggregation.view.xml +12 -10
  363. package/test/sap/ui/core/demokit/sample/odata/v4/FlatDataAggregation/manifest.json +3 -11
  364. package/test/sap/ui/core/demokit/sample/odata/v4/FlexibleColumnLayout/Component.js +1 -0
  365. package/test/sap/ui/core/demokit/sample/odata/v4/FlexibleColumnLayout/Main.controller.js +21 -18
  366. package/test/sap/ui/core/demokit/sample/odata/v4/FlexibleColumnLayout/Opa.qunit.html +0 -1
  367. package/test/sap/ui/core/demokit/sample/odata/v4/FlexibleColumnLayout/manifest.json +4 -7
  368. package/test/sap/ui/core/demokit/sample/odata/v4/GridTable/Component.js +1 -0
  369. package/test/sap/ui/core/demokit/sample/odata/v4/GridTable/manifest.json +1 -10
  370. package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/Component.js +1 -0
  371. package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/Main.controller.js +21 -18
  372. package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/manifest.json +1 -10
  373. package/test/sap/ui/core/demokit/sample/odata/v4/LateProperties/Component.js +1 -0
  374. package/test/sap/ui/core/demokit/sample/odata/v4/LateProperties/Main.controller.js +25 -22
  375. package/test/sap/ui/core/demokit/sample/odata/v4/LateProperties/Opa.OptimisticBatch.qunit.html +0 -1
  376. package/test/sap/ui/core/demokit/sample/odata/v4/LateProperties/Opa.OptimisticBatch.qunit.js +5 -4
  377. package/test/sap/ui/core/demokit/sample/odata/v4/LateProperties/Opa.qunit.html +0 -1
  378. package/test/sap/ui/core/demokit/sample/odata/v4/LateProperties/manifest.json +3 -7
  379. package/test/sap/ui/core/demokit/sample/odata/v4/ListBinding/Component.js +1 -0
  380. package/test/sap/ui/core/demokit/sample/odata/v4/ListBinding/Opa.qunit.html +0 -1
  381. package/test/sap/ui/core/demokit/sample/odata/v4/ListBinding/manifest.json +3 -11
  382. package/test/sap/ui/core/demokit/sample/odata/v4/ListBindingTemplate/Component.js +1 -0
  383. package/test/sap/ui/core/demokit/sample/odata/v4/ListBindingTemplate/Opa.qunit.html +0 -1
  384. package/test/sap/ui/core/demokit/sample/odata/v4/ListBindingTemplate/manifest.json +2 -10
  385. package/test/sap/ui/core/demokit/sample/odata/v4/MultipleInlineCreationRowsGrid/Component.js +1 -0
  386. package/test/sap/ui/core/demokit/sample/odata/v4/MultipleInlineCreationRowsGrid/Main.controller.js +60 -57
  387. package/test/sap/ui/core/demokit/sample/odata/v4/MultipleInlineCreationRowsGrid/Opa.qunit.html +0 -1
  388. package/test/sap/ui/core/demokit/sample/odata/v4/MultipleInlineCreationRowsGrid/manifest.json +4 -6
  389. package/test/sap/ui/core/demokit/sample/odata/v4/MusicArtists/Component.js +1 -0
  390. package/test/sap/ui/core/demokit/sample/odata/v4/MusicArtists/manifest.json +3 -11
  391. package/test/sap/ui/core/demokit/sample/odata/v4/Products/Component.js +1 -0
  392. package/test/sap/ui/core/demokit/sample/odata/v4/Products/Main.view.xml +0 -1
  393. package/test/sap/ui/core/demokit/sample/odata/v4/Products/Opa.qunit.html +0 -1
  394. package/test/sap/ui/core/demokit/sample/odata/v4/Products/manifest.json +3 -10
  395. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/Component.js +1 -0
  396. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/Opa.qunit.html +0 -1
  397. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/RecursiveHierarchy.controller.js +81 -69
  398. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/RecursiveHierarchy.view.xml +44 -9
  399. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/SandboxModel.js +49 -0
  400. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/data/metadata.xml +14 -0
  401. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/manifest.json +1 -10
  402. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrderTP100_V2/Component.js +1 -0
  403. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrderTP100_V2/Opa.qunit.html +0 -1
  404. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrderTP100_V2/manifest.json +2 -11
  405. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrderTP100_V4/Component.js +1 -0
  406. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrderTP100_V4/Opa.qunit.html +0 -1
  407. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrderTP100_V4/manifest.json +2 -11
  408. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/Component.js +1 -2
  409. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/Opa.qunit.html +0 -1
  410. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/manifest.json +3 -10
  411. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersRTATest/Component.js +1 -0
  412. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersRTATest/Opa.qunit.html +0 -1
  413. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersRTATest/manifest.json +6 -5
  414. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersTemplate/Component.js +1 -0
  415. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersTemplate/Opa.qunit.html +0 -1
  416. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersTemplate/manifest.json +2 -10
  417. package/test/sap/ui/core/demokit/sample/odata/v4/ServerDrivenPaging/Component.js +1 -0
  418. package/test/sap/ui/core/demokit/sample/odata/v4/ServerDrivenPaging/Opa.qunit.html +0 -1
  419. package/test/sap/ui/core/demokit/sample/odata/v4/ServerDrivenPaging/manifest.json +3 -10
  420. package/test/sap/ui/core/demokit/sample/odata/v4/Sticky/Opa.qunit.html +0 -1
  421. package/test/sap/ui/core/demokit/sample/odata/v4/Sticky/manifest.json +3 -11
  422. package/test/sap/ui/core/demokit/tutorial/databinding/01/ui5.yaml +1 -1
  423. package/test/sap/ui/core/demokit/tutorial/databinding/02/ui5.yaml +1 -1
  424. package/test/sap/ui/core/demokit/tutorial/databinding/03/ui5.yaml +1 -1
  425. package/test/sap/ui/core/demokit/tutorial/databinding/04/ui5.yaml +1 -1
  426. package/test/sap/ui/core/demokit/tutorial/databinding/05/ui5.yaml +1 -1
  427. package/test/sap/ui/core/demokit/tutorial/databinding/06/ui5.yaml +1 -1
  428. package/test/sap/ui/core/demokit/tutorial/databinding/07/ui5.yaml +1 -1
  429. package/test/sap/ui/core/demokit/tutorial/databinding/08/ui5.yaml +1 -1
  430. package/test/sap/ui/core/demokit/tutorial/databinding/09/ui5.yaml +1 -1
  431. package/test/sap/ui/core/demokit/tutorial/databinding/10/ui5.yaml +1 -1
  432. package/test/sap/ui/core/demokit/tutorial/databinding/11/ui5.yaml +1 -1
  433. package/test/sap/ui/core/demokit/tutorial/databinding/12/ui5.yaml +1 -1
  434. package/test/sap/ui/core/demokit/tutorial/databinding/13/ui5.yaml +1 -1
  435. package/test/sap/ui/core/demokit/tutorial/databinding/14/ui5.yaml +1 -1
  436. package/test/sap/ui/core/demokit/tutorial/databinding/15/ui5.yaml +1 -1
  437. package/test/sap/ui/core/demokit/tutorial/mockserver/01/ui5.yaml +1 -1
  438. package/test/sap/ui/core/demokit/tutorial/mockserver/02/ui5.yaml +1 -1
  439. package/test/sap/ui/core/demokit/tutorial/mockserver/03/ui5.yaml +1 -1
  440. package/test/sap/ui/core/demokit/tutorial/mockserver/04/ui5.yaml +1 -1
  441. package/test/sap/ui/core/demokit/tutorial/navigation/01/ui5.yaml +1 -1
  442. package/test/sap/ui/core/demokit/tutorial/navigation/02/ui5.yaml +1 -1
  443. package/test/sap/ui/core/demokit/tutorial/navigation/03/ui5.yaml +1 -1
  444. package/test/sap/ui/core/demokit/tutorial/navigation/04/ui5.yaml +1 -1
  445. package/test/sap/ui/core/demokit/tutorial/navigation/05/ui5.yaml +1 -1
  446. package/test/sap/ui/core/demokit/tutorial/navigation/06/ui5.yaml +1 -1
  447. package/test/sap/ui/core/demokit/tutorial/navigation/07/ui5.yaml +1 -1
  448. package/test/sap/ui/core/demokit/tutorial/navigation/08/ui5.yaml +1 -1
  449. package/test/sap/ui/core/demokit/tutorial/navigation/09/ui5.yaml +1 -1
  450. package/test/sap/ui/core/demokit/tutorial/navigation/10/ui5.yaml +1 -1
  451. package/test/sap/ui/core/demokit/tutorial/navigation/11/ui5.yaml +1 -1
  452. package/test/sap/ui/core/demokit/tutorial/navigation/12/ui5.yaml +1 -1
  453. package/test/sap/ui/core/demokit/tutorial/navigation/13/ui5.yaml +1 -1
  454. package/test/sap/ui/core/demokit/tutorial/navigation/14/ui5.yaml +1 -1
  455. package/test/sap/ui/core/demokit/tutorial/navigation/15/ui5.yaml +1 -1
  456. package/test/sap/ui/core/demokit/tutorial/navigation/16/ui5.yaml +1 -1
  457. package/test/sap/ui/core/demokit/tutorial/navigation/17/ui5.yaml +1 -1
  458. package/test/sap/ui/core/demokit/tutorial/odatav4/01/Component.js +1 -0
  459. package/test/sap/ui/core/demokit/tutorial/odatav4/01/ui5.yaml +1 -1
  460. package/test/sap/ui/core/demokit/tutorial/odatav4/01/webapp/Component.js +1 -0
  461. package/test/sap/ui/core/demokit/tutorial/odatav4/01/webapp/index.html +0 -1
  462. package/test/sap/ui/core/demokit/tutorial/odatav4/01/webapp/manifest.json +2 -13
  463. package/test/sap/ui/core/demokit/tutorial/odatav4/02/Component.js +1 -0
  464. package/test/sap/ui/core/demokit/tutorial/odatav4/02/ui5.yaml +1 -1
  465. package/test/sap/ui/core/demokit/tutorial/odatav4/02/webapp/Component.js +1 -0
  466. package/test/sap/ui/core/demokit/tutorial/odatav4/02/webapp/index.html +0 -1
  467. package/test/sap/ui/core/demokit/tutorial/odatav4/02/webapp/manifest.json +2 -13
  468. package/test/sap/ui/core/demokit/tutorial/odatav4/03/Component.js +1 -0
  469. package/test/sap/ui/core/demokit/tutorial/odatav4/03/ui5.yaml +1 -1
  470. package/test/sap/ui/core/demokit/tutorial/odatav4/03/webapp/Component.js +1 -0
  471. package/test/sap/ui/core/demokit/tutorial/odatav4/03/webapp/index.html +0 -1
  472. package/test/sap/ui/core/demokit/tutorial/odatav4/03/webapp/manifest.json +2 -13
  473. package/test/sap/ui/core/demokit/tutorial/odatav4/04/Component.js +1 -0
  474. package/test/sap/ui/core/demokit/tutorial/odatav4/04/ui5.yaml +1 -1
  475. package/test/sap/ui/core/demokit/tutorial/odatav4/04/webapp/Component.js +1 -0
  476. package/test/sap/ui/core/demokit/tutorial/odatav4/04/webapp/index.html +0 -1
  477. package/test/sap/ui/core/demokit/tutorial/odatav4/04/webapp/manifest.json +2 -13
  478. package/test/sap/ui/core/demokit/tutorial/odatav4/05/Component.js +1 -0
  479. package/test/sap/ui/core/demokit/tutorial/odatav4/05/ui5.yaml +1 -1
  480. package/test/sap/ui/core/demokit/tutorial/odatav4/05/webapp/Component.js +1 -0
  481. package/test/sap/ui/core/demokit/tutorial/odatav4/05/webapp/index.html +0 -1
  482. package/test/sap/ui/core/demokit/tutorial/odatav4/05/webapp/manifest.json +2 -13
  483. package/test/sap/ui/core/demokit/tutorial/odatav4/06/Component.js +1 -0
  484. package/test/sap/ui/core/demokit/tutorial/odatav4/06/ui5.yaml +1 -1
  485. package/test/sap/ui/core/demokit/tutorial/odatav4/06/webapp/Component.js +1 -0
  486. package/test/sap/ui/core/demokit/tutorial/odatav4/06/webapp/index.html +0 -1
  487. package/test/sap/ui/core/demokit/tutorial/odatav4/06/webapp/manifest.json +2 -13
  488. package/test/sap/ui/core/demokit/tutorial/odatav4/07/Component.js +1 -0
  489. package/test/sap/ui/core/demokit/tutorial/odatav4/07/ui5.yaml +1 -1
  490. package/test/sap/ui/core/demokit/tutorial/odatav4/07/webapp/Component.js +1 -0
  491. package/test/sap/ui/core/demokit/tutorial/odatav4/07/webapp/index.html +0 -1
  492. package/test/sap/ui/core/demokit/tutorial/odatav4/07/webapp/manifest.json +2 -13
  493. package/test/sap/ui/core/demokit/tutorial/odatav4/08/Component.js +1 -0
  494. package/test/sap/ui/core/demokit/tutorial/odatav4/08/ui5.yaml +1 -1
  495. package/test/sap/ui/core/demokit/tutorial/odatav4/08/webapp/Component.js +1 -0
  496. package/test/sap/ui/core/demokit/tutorial/odatav4/08/webapp/index.html +0 -1
  497. package/test/sap/ui/core/demokit/tutorial/odatav4/08/webapp/manifest.json +2 -13
  498. package/test/sap/ui/core/demokit/tutorial/odatav4/08/webapp/test/integration/opaTests.qunit.html +0 -1
  499. package/test/sap/ui/core/demokit/tutorial/odatav4/09/Component.js +1 -0
  500. package/test/sap/ui/core/demokit/tutorial/odatav4/09/ui5.yaml +1 -1
  501. package/test/sap/ui/core/demokit/tutorial/odatav4/09/webapp/Component.js +1 -0
  502. package/test/sap/ui/core/demokit/tutorial/odatav4/09/webapp/index.html +0 -1
  503. package/test/sap/ui/core/demokit/tutorial/odatav4/09/webapp/manifest.json +2 -11
  504. package/test/sap/ui/core/demokit/tutorial/odatav4/10/Component.js +1 -0
  505. package/test/sap/ui/core/demokit/tutorial/odatav4/10/ui5.yaml +1 -1
  506. package/test/sap/ui/core/demokit/tutorial/odatav4/10/webapp/Component.js +1 -0
  507. package/test/sap/ui/core/demokit/tutorial/odatav4/10/webapp/index.html +0 -1
  508. package/test/sap/ui/core/demokit/tutorial/odatav4/10/webapp/manifest.json +2 -11
  509. package/test/sap/ui/core/demokit/tutorial/odatav4/11/Component.js +1 -0
  510. package/test/sap/ui/core/demokit/tutorial/odatav4/11/ui5.yaml +1 -1
  511. package/test/sap/ui/core/demokit/tutorial/odatav4/11/webapp/Component.js +1 -0
  512. package/test/sap/ui/core/demokit/tutorial/odatav4/11/webapp/index.html +0 -1
  513. package/test/sap/ui/core/demokit/tutorial/odatav4/11/webapp/manifest.json +2 -11
  514. package/test/sap/ui/core/demokit/tutorial/odatav4/11/webapp/test/integration/opaTests.qunit.html +0 -1
  515. package/test/sap/ui/core/demokit/tutorial/troubleshooting/01/ui5.yaml +1 -1
  516. package/test/sap/ui/core/getComputedStyle.html +2 -1
  517. package/test/sap/ui/core/getComputedStyleFF.html +1 -1
  518. package/test/sap/ui/core/internal/samples/client/MusicCollection/Component.js +5 -8
  519. package/test/sap/ui/core/internal/samples/client/MusicCollection/Main.controller.js +6 -2
  520. package/test/sap/ui/core/internal/samples/client/MusicCollection/Main.view.xml +7 -3
  521. package/test/sap/ui/core/internal/samples/client/MusicCollection/index.html +1 -3
  522. package/test/sap/ui/core/internal/samples/client/MusicCollection/manifest.json +1 -13
  523. package/test/sap/ui/core/internal/samples/odata/twoFields/Component.js +3 -45
  524. package/test/sap/ui/core/internal/samples/odata/twoFields/Main.controller.js +37 -1
  525. package/test/sap/ui/core/internal/samples/odata/twoFields/Main.view.xml +5 -5
  526. package/test/sap/ui/core/internal/samples/odata/twoFields/Opa.qunit.html +1 -3
  527. package/test/sap/ui/core/internal/samples/odata/twoFields/index.html +1 -3
  528. package/test/sap/ui/core/internal/samples/odata/twoFields/manifest.json +1 -11
  529. package/test/sap/ui/core/internal/samples/odata/v2/Products/Component.js +3 -22
  530. package/test/sap/ui/core/internal/samples/odata/v2/Products/Main.controller.js +16 -22
  531. package/test/sap/ui/core/internal/samples/odata/v2/Products/Main.view.xml +3 -2
  532. package/test/sap/ui/core/internal/samples/odata/v2/Products/SandboxModel.js +1 -1
  533. package/test/sap/ui/core/internal/samples/odata/v2/Products/index.html +1 -3
  534. package/test/sap/ui/core/internal/samples/odata/v2/Products/manifest.json +2 -13
  535. package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/Component.js +1 -0
  536. package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/Main.controller.js +49 -41
  537. package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/Main.view.xml +6 -4
  538. package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/manifest.json +3 -12
  539. package/test/sap/ui/core/internal/samples/odata/v2/TreeTable/Component.js +1 -0
  540. package/test/sap/ui/core/internal/samples/odata/v2/TreeTable/Main.controller.js +2 -2
  541. package/test/sap/ui/core/internal/samples/odata/v2/TreeTable/Main.view.xml +4 -3
  542. package/test/sap/ui/core/internal/samples/odata/v2/TreeTable/index.html +1 -3
  543. package/test/sap/ui/core/internal/samples/odata/v2/TreeTable/manifest.json +1 -11
  544. package/test/sap/ui/core/qunit/Fragment.qunit.js +20 -20
  545. package/test/sap/ui/core/qunit/Fragment_legacyAPIs.qunit.js +4 -4
  546. package/test/sap/ui/core/qunit/Icon.qunit.js +217 -1
  547. package/test/sap/ui/core/qunit/RenderManager.qunit.js +18 -5
  548. package/test/sap/ui/core/qunit/ScrollBar.qunit.js +15 -18
  549. package/test/sap/ui/core/qunit/analytics/AnalyticalBinding.qunit.js +5 -13
  550. package/test/sap/ui/core/qunit/component/Customizing.qunit.js +2 -2
  551. package/test/sap/ui/core/qunit/component/Customizing_async.qunit.js +36 -1
  552. package/test/sap/ui/core/qunit/component/ExtensionPoint.qunit.js +475 -290
  553. package/test/sap/ui/core/qunit/component/Models.qunit.js +97 -70
  554. package/test/sap/ui/core/qunit/component/Models_unavoidablySync.qunit.js +86 -0
  555. package/test/sap/ui/core/qunit/component/UIComponent.qunit.js +86 -1
  556. package/test/sap/ui/core/qunit/component/testdata/customizing/customer/ext/EP_In_Product_Table_Cell_Found.fragment.xml +5 -0
  557. package/test/sap/ui/core/qunit/component/testdata/customizing/customer/ext/EP_In_Product_Table_Column.fragment.xml +5 -0
  558. package/test/sap/ui/core/qunit/component/testdata/customizing/customer/ext/EPinNestedView.view.xml +51 -0
  559. package/test/sap/ui/core/qunit/component/testdata/customizing/customer/ext/ExtensionPointProvider.js +27 -4
  560. package/test/sap/ui/core/qunit/component/testdata/customizing/customer/ext/Main.view.xml +5 -0
  561. package/test/sap/ui/core/qunit/component/testdata/customizing/sap/Main.view.xml +0 -1
  562. package/test/sap/ui/core/qunit/component/testdata/customizing/sap/Sub2.view.xml +1 -3
  563. package/test/sap/ui/core/qunit/component/testdata/v4models/sapSystem/Component.js +16 -0
  564. package/test/sap/ui/core/qunit/component/testdata/v4models/sapSystem/manifest.json +102 -0
  565. package/test/sap/ui/core/qunit/dnd/DragAndDrop.qunit.js +72 -2
  566. package/test/sap/ui/core/qunit/dnd/DropInfo.qunit.js +14 -2
  567. package/test/sap/ui/core/qunit/generic/ControlRenderer.qunit.js +4 -1
  568. package/test/sap/ui/core/qunit/generic/legacy/ControlRenderer.qunit.js +4 -0
  569. package/test/sap/ui/core/qunit/internal/1RingModels.qunit.js +1 -0
  570. package/test/sap/ui/core/qunit/loader/amd/base_tag/_launchTest.js +2 -4
  571. package/test/sap/ui/core/qunit/loader/amd/config_paths/_launchTest.js +2 -4
  572. package/test/sap/ui/core/qunit/loader/amd/config_paths_relative/_launchTest.js +2 -4
  573. package/test/sap/ui/core/qunit/loader/amdAPIs.qunit.js +3 -0
  574. package/test/sap/ui/core/qunit/model/Binding.qunit.js +13 -0
  575. package/test/sap/ui/core/qunit/model/FieldHelp.qunit.js +864 -0
  576. package/test/sap/ui/core/qunit/mvc/Controller.qunit.js +2 -2
  577. package/test/sap/ui/core/qunit/mvc/XMLTemplateProcessorAsync.qunit.js +8 -6
  578. package/test/sap/ui/core/qunit/mvc/XMLTemplateProcessorRequireXML.qunit.js +7 -7
  579. package/test/sap/ui/core/qunit/mvc/XMLView.qunit.js +131 -22
  580. package/test/sap/ui/core/qunit/mvc/testdata/Async.view.xml +1 -2
  581. package/test/sap/ui/core/qunit/mvc/testdata/asyncHooks.view.xml +1 -3
  582. package/test/sap/ui/core/qunit/mvc/testdata/cache.view.xml +1 -1
  583. package/test/sap/ui/core/qunit/mvc/testdata/legacy/test.view.xml +32 -0
  584. package/test/sap/ui/core/qunit/mvc/testdata/test.view.xml +2 -15
  585. package/test/sap/ui/core/qunit/odata/v2/ODataModel.integration.qunit.js +159 -8
  586. package/test/sap/ui/core/qunit/odata/v2/ODataModelNoFakeService.qunit.js +55 -6
  587. package/test/sap/ui/core/qunit/odata/v2/data/ZUI5_GWSAMPLE_BASIC.metadata.xml +14 -0
  588. package/test/sap/ui/core/qunit/odata/v4/Context.qunit.js +48 -21
  589. package/test/sap/ui/core/qunit/odata/v4/ODataBinding.qunit.js +17 -70
  590. package/test/sap/ui/core/qunit/odata/v4/ODataContextBinding.qunit.js +19 -42
  591. package/test/sap/ui/core/qunit/odata/v4/ODataListBinding.qunit.js +290 -20
  592. package/test/sap/ui/core/qunit/odata/v4/ODataModel.integration.qunit.js +613 -25
  593. package/test/sap/ui/core/qunit/odata/v4/ODataModel.qunit.js +86 -5
  594. package/test/sap/ui/core/qunit/odata/v4/ODataParentBinding.qunit.js +0 -1
  595. package/test/sap/ui/core/qunit/odata/v4/ODataPropertyBinding.qunit.js +0 -49
  596. package/test/sap/ui/core/qunit/odata/v4/lib/_AggregationCache.qunit.js +272 -8
  597. package/test/sap/ui/core/qunit/odata/v4/lib/_AggregationHelper.qunit.js +20 -0
  598. package/test/sap/ui/core/qunit/odata/v4/lib/_Cache.qunit.js +46 -46
  599. package/test/sap/ui/core/qunit/odata/v4/lib/_Helper.qunit.js +91 -13
  600. package/test/sap/ui/core/qunit/resource/ResourceBinding.qunit.js +17 -14
  601. package/test/sap/ui/core/qunit/routing/async/Views.qunit.js +3 -0
  602. package/test/sap/ui/core/qunit/test/starter/find/main.js +6 -4
  603. package/test/sap/ui/core/qunit/testdata/routing/HistoryIFrame.html +2 -1
  604. package/test/sap/ui/core/qunit/testsuites/testsuite.databinding.qunit.js +3 -0
  605. package/test/sap/ui/core/qunit/types/DateFormat.qunit.js +51 -22
  606. package/test/sap/ui/core/qunit/types/Types.qunit.js +35 -6
  607. package/test/sap/ui/core/qunit/ui/Device.qunit.js +24 -0
  608. package/test/sap/ui/core/qunit/util/LabelEnablement.qunit.js +47 -1
  609. package/test/sap/ui/core/relnotes/changes-1.124.json +1 -1
  610. package/test/sap/ui/core/relnotes/changes-1.125.json +37 -0
  611. package/test/sap/ui/core/samples/ResponsiveDemo.html +97 -103
  612. package/test/sap/ui/core/samples/databinding/UnitTable/ui5.yaml +1 -1
  613. package/test/sap/ui/core/samples/draganddrop/DragAndDrop.html +2 -2
  614. package/test/sap/ui/core/samples/mvc/Product.html +1 -7
  615. package/test/sap/ui/core/samples/mvc/ViewPreprocessor.html +20 -12
  616. package/test/sap/ui/core/samples/mvc/XMLView.html +77 -24
  617. package/test/sap/ui/core/samples/mvc/XMLViewAsync.html +13 -19
  618. package/test/sap/ui/core/samples/mvc/controller/Async.controller.js +0 -1
  619. package/test/sap/ui/core/samples/mvc/controller/Product.controller.js +0 -1
  620. package/test/sap/ui/core/samples/mvc/views/Async.view.xml +16 -57
  621. package/test/sap/ui/core/samples/mvc/views/Dummy.fragment.xml +2 -2
  622. package/test/sap/ui/core/samples/mvc/views/Dummy.view.xml +2 -2
  623. package/test/sap/ui/core/samples/mvc/views/Product.view.xml +16 -57
  624. package/test/sap/ui/core/util/PasteHelper.html +148 -147
  625. package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/firstItem-contextMenu.ref.lnk +1 -1
  626. package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/initial.ref.lnk +1 -1
  627. package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/lastItem-contextMenu.ref.lnk +1 -1
  628. package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/leftDownBtn-contextMenu.ref.lnk +1 -1
  629. package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/myButtonSample-contextMenu.ref.lnk +1 -1
  630. package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/rightDownBtn-contextMenu.ref.lnk +1 -1
  631. package/test/testsuite/js/settings.js +5 -4
  632. package/test/testsuite/styles/main.css +5 -0
  633. package/test/sap/ui/core/ResourceRoots.html +0 -28
  634. package/test/sap/ui/core/demokit/sample/ViewTemplate/tiny/component.json +0 -17
  635. package/test/sap/ui/core/demokit/sample/ViewTemplate/types/component.json +0 -18
  636. package/test/sap/ui/core/demokit/sample/ViewTemplate/valuelist/component.json +0 -30
  637. package/test/sap/ui/core/demokit/sample/odata/v2/AutoExpand/AutoExpand.view.xml +0 -52
  638. package/test/sap/ui/core/demokit/sample/odata/v2/AutoExpand/Component.js +0 -30
  639. package/test/sap/ui/core/demokit/sample/odata/v2/AutoExpand/Sandbox.js +0 -51
  640. package/test/sap/ui/core/demokit/sample/odata/v2/AutoExpand/data/Items_L0_top5.json +0 -32
  641. package/test/sap/ui/core/demokit/sample/odata/v2/AutoExpand/data/Items_L1_A_skip8.json +0 -138
  642. package/test/sap/ui/core/demokit/sample/odata/v2/AutoExpand/data/Items_L1_B.json +0 -17
  643. package/test/sap/ui/core/demokit/sample/odata/v2/AutoExpand/data/Items_L1_C.json +0 -17
  644. package/test/sap/ui/core/demokit/sample/odata/v2/AutoExpand/data/Items_L1_top8.json +0 -93
  645. package/test/sap/ui/core/demokit/sample/odata/v2/AutoExpand/data/metadata.xml +0 -2322
  646. package/test/sap/ui/core/demokit/sample/odata/v2/AutoExpand/i18n/i18n.properties +0 -3
  647. package/test/sap/ui/core/demokit/sample/odata/v2/AutoExpand/manifest.json +0 -69
@@ -121,7 +121,8 @@ sap.ui.define([
121
121
  (oNode) => _Helper.getKeyFilter(oNode, this.sMetaPath, this.getTypes()));
122
122
  // Whether this cache is a unified cache, using oFirstLevel with ExpandLevels instead of
123
123
  // separate group level caches
124
- this.bUnifiedCache = this.oAggregation.expandTo >= Number.MAX_SAFE_INTEGER;
124
+ this.bUnifiedCache = this.oAggregation.expandTo >= Number.MAX_SAFE_INTEGER
125
+ || !!this.oAggregation.createInPlace;
125
126
  }
126
127
 
127
128
  // make _AggregationCache a _Cache, but actively disinherit some critical methods
@@ -540,15 +541,46 @@ sap.ui.define([
540
541
  [this.oAggregation.$ParentNavigationProperty + "@odata.bind"]
541
542
  = _Helper.makeRelativeUrl("/" + sParentPath, "/" + this.sResourcePath);
542
543
  }
543
- oEntityData["@$ui5.node.level"] = iLevel; // do not send via POST!
544
544
 
545
- aElements.splice(iIndex, 0, null); // create a gap
546
- this.addElements(oEntityData, iIndex, oCache); // rank is undefined!
547
- aElements.$count += 1;
548
- if (oCache === this.oFirstLevel) {
549
- this.adjustDescendantCount(oEntityData, iIndex, +1);
545
+ const addElement = (iIndex0, iRank) => {
546
+ oEntityData["@$ui5.node.level"] = iLevel; // do not send via POST!
547
+ aElements.splice(iIndex0, 0, null); // create a gap
548
+ this.addElements(oEntityData, iIndex0, oCache, iRank);
549
+ aElements.$count += 1;
550
+ if (oCache === this.oFirstLevel) {
551
+ this.adjustDescendantCount(oEntityData, iIndex0, +1);
552
+ }
553
+ };
554
+ const completeCreation = (iIndex0, iRank) => {
555
+ oCache.removeElement(0, sTransientPredicate);
556
+ _Helper.deletePrivateAnnotation(oEntityData, "transientPredicate");
557
+ oCache.restoreElement(iRank, oEntityData);
558
+
559
+ delete aElements.$byPredicate[sTransientPredicate];
560
+ _Helper.setPrivateAnnotation(oEntityData, "rank", iRank);
561
+ this.shiftRank(iIndex0, +1);
562
+ };
563
+
564
+ if (this.oAggregation.createInPlace) {
565
+ return oPromise.then(async () => {
566
+ _Helper.removeByPath(this.mPostRequests, sTransientPredicate, oEntityData);
567
+ const [iRank] = await Promise.all([
568
+ this.requestRank(oEntityData, oGroupLock),
569
+ this.requestNodeProperty(oEntityData, oGroupLock)
570
+ ]);
571
+ if (iRank === undefined) {
572
+ oCache.removeElement(0, sTransientPredicate);
573
+ } else {
574
+ addElement(iRank, iRank);
575
+ completeCreation(iRank, iRank);
576
+ }
577
+
578
+ return oEntityData;
579
+ });
550
580
  }
551
581
 
582
+ addElement(iIndex, /*iRank*/undefined);
583
+
552
584
  return oPromise.then(async () => {
553
585
  _Helper.removeByPath(this.mPostRequests, sTransientPredicate, oEntityData);
554
586
  aElements.$byPredicate[_Helper.getPrivateAnnotation(oEntityData, "predicate")]
@@ -564,13 +596,7 @@ sap.ui.define([
564
596
  this.requestNodeProperty(oEntityData, oGroupLock, /*bDropFilter*/true)
565
597
  ]);
566
598
 
567
- oCache.removeElement(0, sTransientPredicate);
568
- _Helper.deletePrivateAnnotation(oEntityData, "transientPredicate");
569
- oCache.restoreElement(iRank, oEntityData);
570
-
571
- delete this.aElements.$byPredicate[sTransientPredicate];
572
- _Helper.setPrivateAnnotation(oEntityData, "rank", iRank);
573
- this.shiftRank(iIndex, +1);
599
+ completeCreation(iIndex, iRank);
574
600
  } else {
575
601
  await this.requestNodeProperty(oEntityData, oGroupLock, /*bDropFilter*/true);
576
602
  }
@@ -935,20 +961,23 @@ sap.ui.define([
935
961
 
936
962
  /**
937
963
  * Returns the index in <code>this.aElements</code> for a given (limited preorder) rank where
938
- * either a node or placeholder with that rank is present and belongs to the first level cache.
964
+ * either a node or placeholder with that rank is present and belongs to the given first level
965
+ * or group level cache.
939
966
  *
940
967
  * @param {number} iRank
941
968
  * The (limited preorder) rank of a node
969
+ * @param {sap.ui.model.odata.v4.lib._CollectionCache} [oCache]
970
+ * A (group level) cache
942
971
  * @returns {number}
943
972
  * The array index
944
973
  *
945
974
  * @private
946
975
  * @see #getInsertIndex
947
976
  */
948
- _AggregationCache.prototype.findIndex = function (iRank) {
977
+ _AggregationCache.prototype.findIndex = function (iRank, oCache = this.oFirstLevel) {
949
978
  return this.aElements.findIndex(
950
979
  (oNode) => _Helper.getPrivateAnnotation(oNode, "rank") === iRank
951
- && _Helper.getPrivateAnnotation(oNode, "parent") === this.oFirstLevel);
980
+ && _Helper.getPrivateAnnotation(oNode, "parent") === oCache);
952
981
  };
953
982
 
954
983
  /**
@@ -1083,6 +1112,45 @@ sap.ui.define([
1083
1112
  // return undefined;
1084
1113
  };
1085
1114
 
1115
+ /**
1116
+ * Returns the index of the given node's sibling, either the next one (via offset +1) or the
1117
+ * previous one (via offset -1).
1118
+ *
1119
+ * @param {number} iIndex - The index of a node
1120
+ * @param {number} iOffset - An offset, either -1 or +1
1121
+ * @returns {number}
1122
+ * The sibling node's index, or -1 if no such sibling exists
1123
+ *
1124
+ * @public
1125
+ */
1126
+ _AggregationCache.prototype.getSiblingIndex = function (iIndex, iOffset) {
1127
+ function findSibling(aElements, iRank, iLevel) {
1128
+ for (;;) {
1129
+ iRank += iOffset;
1130
+ if (iRank < 0 || iRank >= aElements.$count) {
1131
+ return -1; // no such sibling
1132
+ }
1133
+ if (!aElements[iRank]) {
1134
+ return iRank;
1135
+ }
1136
+ if (aElements[iRank]["@$ui5.node.level"] < iLevel) {
1137
+ return -1; // no such sibling
1138
+ }
1139
+ if (aElements[iRank]["@$ui5.node.level"] === iLevel) {
1140
+ return iRank;
1141
+ }
1142
+ // else: ignore descendants
1143
+ }
1144
+ }
1145
+
1146
+ const oNode = this.aElements[iIndex];
1147
+ const oCache = _Helper.getPrivateAnnotation(oNode, "parent");
1148
+ const iSiblingRank = findSibling(oCache.aElements,
1149
+ _Helper.getPrivateAnnotation(oNode, "rank"), oNode["@$ui5.node.level"]);
1150
+
1151
+ return iSiblingRank < 0 ? -1 : this.findIndex(iSiblingRank, oCache);
1152
+ };
1153
+
1086
1154
  /**
1087
1155
  * @override
1088
1156
  * @see sap.ui.model.odata.v4.lib._Cache#getValue
@@ -1116,7 +1184,7 @@ sap.ui.define([
1116
1184
  const getPredicate
1117
1185
  = (oNode) => _Helper.getKeyPredicate(oNode, this.sMetaPath, this.getTypes());
1118
1186
  const getRank
1119
- = (oNode) => Number.parseInt(_Helper.drillDown(oNode, this.oAggregation.$LimitedRank));
1187
+ = (oNode) => parseInt(_Helper.drillDown(oNode, this.oAggregation.$LimitedRank));
1120
1188
  const mPredicate2RankResult = {};
1121
1189
  oRankResult.value.forEach((oNode) => {
1122
1190
  mPredicate2RankResult[getPredicate(oNode)] = oNode;
@@ -1145,8 +1213,10 @@ sap.ui.define([
1145
1213
  _Helper.merge(oNode, mPredicate2RankResult[sPredicate]);
1146
1214
  // Note: overridden by _AggregationCache.calculateKeyPredicateRH
1147
1215
  this.oFirstLevel.calculateKeyPredicate(oNode, this.getTypes(), this.sMetaPath);
1216
+ const iRank = getRank(oNode);
1217
+ _Helper.deleteProperty(oNode, this.oAggregation.$LimitedRank);
1148
1218
  // insert at rank position to ensure correct placeholder is replaced
1149
- this.insertNode(oNode, getRank(oNode));
1219
+ this.insertNode(oNode, iRank);
1150
1220
  });
1151
1221
  });
1152
1222
 
@@ -1352,8 +1422,10 @@ sap.ui.define([
1352
1422
  oSiblingNode = null;
1353
1423
  }
1354
1424
 
1355
- return this.oRequestor.request("POST", sActionPath, oGroupLock.getUnlockedCopy(),
1356
- {Prefer : "return=minimal"}, {NextSibling : oSiblingNode});
1425
+ return this.oRequestor.request("POST", sActionPath, oGroupLock.getUnlockedCopy(), {
1426
+ "If-Match" : oChildNode,
1427
+ Prefer : "return=minimal"
1428
+ }, {NextSibling : oSiblingNode});
1357
1429
  }
1358
1430
  };
1359
1431
 
@@ -1941,7 +2013,7 @@ sap.ui.define([
1941
2013
  mQueryOptions = getApply(
1942
2014
  _AggregationHelper.buildApply4Hierarchy(oAggregation, this.mQueryOptions));
1943
2015
  } else {
1944
- const oCache = _Helper.getPrivateAnnotation(oElement, "parent");
2016
+ const oCache = _Helper.getPrivateAnnotation(oElement, "parent", this.oFirstLevel);
1945
2017
  mQueryOptions = bDropFilter
1946
2018
  ? _AggregationHelper
1947
2019
  .dropFilter(this.oAggregation, this.mQueryOptions, oCache.$parentFilter)
@@ -44,6 +44,7 @@ sap.ui.define([
44
44
  + "(?:/" + _Parser.sODataIdentifier + ")*"
45
45
  + ")(?:" + _Parser.sWhitespace + "+(?:asc|desc))?$"),
46
46
  mRecursiveHierarchyType = {
47
+ createInPlace : true,
47
48
  expandTo : /^[1-9]\d*$/, // a positive integer
48
49
  hierarchyQualifier : "string",
49
50
  search : "string"
@@ -636,6 +637,10 @@ sap.ui.define([
636
637
  _AggregationHelper.checkTypeof(vValue[sKey], vType[bIsMap ? "*" : sKey],
637
638
  sPath + "/" + sKey);
638
639
  });
640
+ } else if (vType === true) {
641
+ if (vValue !== true) {
642
+ throw new Error("Not a true value for '" + sPath + "'");
643
+ }
639
644
  } else if (typeof vValue !== vType) { // eslint-disable-line valid-typeof
640
645
  throw new Error("Not a " + vType + " value for '" + sPath + "'");
641
646
  }
@@ -683,23 +683,6 @@ sap.ui.define([
683
683
  });
684
684
  };
685
685
 
686
- /**
687
- * Deregisters the given change listener. Note: shared caches only have listeners for the empty
688
- * path.
689
- *
690
- * @param {string} sPath
691
- * The path
692
- * @param {object} oListener
693
- * The change listener
694
- *
695
- * @public
696
- */
697
- _Cache.prototype.deregisterChangeListener = function (sPath, oListener) {
698
- if (!(this.bSharedRequest && sPath)) {
699
- _Helper.removeByPath(this.mChangeListeners, sPath, oListener);
700
- }
701
- };
702
-
703
686
  /**
704
687
  * Drills down into the given object according to <code>sPath</code>. Logs an error if the path
705
688
  * leads into void. Paths may contain key predicates like "TEAM_2_EMPLOYEES('42')/Name". The
@@ -730,6 +713,8 @@ sap.ui.define([
730
713
  that = this;
731
714
 
732
715
  function invalidSegment(sSegment, bAsInfo) {
716
+ // no error for a key predicate, it's most probably due to a deleted entity
717
+ bAsInfo ||= sSegment[0] === "(" && sSegment.at(-1) === ")";
733
718
  Log[bAsInfo ? "info" : "error"]("Failed to drill-down into " + sPath
734
719
  + ", invalid segment: " + sSegment, that.toString(), sClassName);
735
720
  return undefined;
@@ -1144,6 +1129,32 @@ sap.ui.define([
1144
1129
  * @public
1145
1130
  */
1146
1131
 
1132
+ /**
1133
+ * Returns an array containing all current elements of a collection or single cache for the
1134
+ * given relative path; the array is annotated with the collection's $count. If there are
1135
+ * pending requests, the corresponding promises will be ignored and set to
1136
+ * <code>undefined</code>.
1137
+ *
1138
+ * @param {string} [sPath]
1139
+ * Relative path to drill-down into, may be empty (only for collection cache)
1140
+ * @returns {object[]} The cache elements
1141
+ *
1142
+ * @public
1143
+ */
1144
+ _Cache.prototype.getAllElements = function (sPath) {
1145
+ var aAllElements;
1146
+
1147
+ if (sPath) {
1148
+ return this.getValue(sPath);
1149
+ }
1150
+ aAllElements = this.aElements.map(function (oElement) {
1151
+ return oElement instanceof SyncPromise ? undefined : oElement;
1152
+ });
1153
+ aAllElements.$count = this.aElements.$count;
1154
+
1155
+ return aAllElements;
1156
+ };
1157
+
1147
1158
  /**
1148
1159
  * Returns the collection at the given path and removes it from the cache if it is marked as
1149
1160
  * transferable.
@@ -1175,32 +1186,6 @@ sap.ui.define([
1175
1186
  return vValue;
1176
1187
  };
1177
1188
 
1178
- /**
1179
- * Returns an array containing all current elements of a collection or single cache for the
1180
- * given relative path; the array is annotated with the collection's $count. If there are
1181
- * pending requests, the corresponding promises will be ignored and set to
1182
- * <code>undefined</code>.
1183
- *
1184
- * @param {string} [sPath]
1185
- * Relative path to drill-down into, may be empty (only for collection cache)
1186
- * @returns {object[]} The cache elements
1187
- *
1188
- * @public
1189
- */
1190
- _Cache.prototype.getAllElements = function (sPath) {
1191
- var aAllElements;
1192
-
1193
- if (sPath) {
1194
- return this.getValue(sPath);
1195
- }
1196
- aAllElements = this.aElements.map(function (oElement) {
1197
- return oElement instanceof SyncPromise ? undefined : oElement;
1198
- });
1199
- aAllElements.$count = this.aElements.$count;
1200
-
1201
- return aAllElements;
1202
- };
1203
-
1204
1189
  /**
1205
1190
  * Returns all created elements for the given path.
1206
1191
  *
@@ -1296,6 +1281,17 @@ sap.ui.define([
1296
1281
  return this.mQueryOptions;
1297
1282
  };
1298
1283
 
1284
+ /**
1285
+ * Gets the cache's resource path.
1286
+ *
1287
+ * @returns {string} The resource path
1288
+ *
1289
+ * @public
1290
+ */
1291
+ _Cache.prototype.getResourcePath = function () {
1292
+ return this.sResourcePath;
1293
+ };
1294
+
1299
1295
  /**
1300
1296
  * Returns the existing map from meta path to type.
1301
1297
  *
@@ -1324,17 +1320,6 @@ sap.ui.define([
1324
1320
  throw new Error("Unsupported operation");
1325
1321
  };
1326
1322
 
1327
- /**
1328
- * Gets the cache's resource path.
1329
- *
1330
- * @returns {string} The resource path
1331
- *
1332
- * @public
1333
- */
1334
- _Cache.prototype.getResourcePath = function () {
1335
- return this.sResourcePath;
1336
- };
1337
-
1338
1323
  /**
1339
1324
  * Tells whether there are any registered change listeners.
1340
1325
  *
@@ -1342,7 +1327,6 @@ sap.ui.define([
1342
1327
  * Whether there are any registered change listeners
1343
1328
  *
1344
1329
  * @public
1345
- * @see #deregisterChangeListener
1346
1330
  * @see #registerChangeListener
1347
1331
  */
1348
1332
  _Cache.prototype.hasChangeListeners = function () {
@@ -1659,7 +1643,7 @@ sap.ui.define([
1659
1643
  */
1660
1644
  _Cache.prototype.registerChangeListener = function (sPath, oListener) {
1661
1645
  if (!(this.bSharedRequest && sPath)) {
1662
- _Helper.addByPath(this.mChangeListeners, sPath, oListener);
1646
+ _Helper.registerChangeListener(this, sPath, oListener);
1663
1647
  }
1664
1648
  };
1665
1649
 
@@ -1945,11 +1929,7 @@ sap.ui.define([
1945
1929
  this.iLimit += 1; // this doesn't change Infinity
1946
1930
  }
1947
1931
  _Helper.addToCount(this.mChangeListeners, sPath, aElements, 1);
1948
- if (iIndex >= aElements.length) { // Note: #splice ignores iIndex then!
1949
- aElements[iIndex] = oElement;
1950
- } else {
1951
- aElements.splice(iIndex, 0, oElement);
1952
- }
1932
+ _Helper.insert(aElements, iIndex, oElement);
1953
1933
  aElements.$byPredicate[_Helper.getPrivateAnnotation(oElement, "predicate")] = oElement;
1954
1934
  };
1955
1935
 
@@ -163,8 +163,9 @@ sap.ui.define([
163
163
  * @param {object} oOperationMetadata
164
164
  * The operation metadata to determine whether a given message target is a parameter
165
165
  * of the operation
166
- * @param {string} sParameterContextPath
167
- * The parameter context path
166
+ * @param {string} [sParameterContextPath]
167
+ * The parameter context path, needed for adjusting a message target in case it is an
168
+ * operation parameter, except the binding parameter
168
169
  * @param {string} [sContextPath]
169
170
  * The context path for a bound operation
170
171
  *
@@ -172,7 +173,9 @@ sap.ui.define([
172
173
  */
173
174
  adjustTargets : function (oMessage, oOperationMetadata, sParameterContextPath,
174
175
  sContextPath) {
175
- var sAdditionalTargetsKey = _Helper.getAnnotationKey(oMessage, ".additionalTargets"),
176
+ var sAdditionalTargetsKey = "additionalTargets" in oMessage
177
+ ? "additionalTargets"
178
+ : _Helper.getAnnotationKey(oMessage, ".additionalTargets"),
176
179
  aTargets;
177
180
 
178
181
  aTargets = [oMessage.target].concat(oMessage[sAdditionalTargetsKey])
@@ -528,6 +531,21 @@ sap.ui.define([
528
531
  }
529
532
  },
530
533
 
534
+ /**
535
+ * Sets "@$ui5.context.isSelected" in <code>oTarget</code> to true if it is true in
536
+ * <code>oSource</code>.
537
+ *
538
+ * @param {object} oSource - The source object
539
+ * @param {object} oTarget - The target object
540
+ *
541
+ * @public
542
+ */
543
+ copySelected : function (oSource, oTarget) {
544
+ if (oSource["@$ui5.context.isSelected"] === true) {
545
+ oTarget["@$ui5.context.isSelected"] = true;
546
+ }
547
+ },
548
+
531
549
  /**
532
550
  * Returns an <code>Error</code> instance from a jQuery XHR wrapper.
533
551
  *
@@ -959,6 +977,32 @@ sap.ui.define([
959
977
  return _Helper.encode(sKey, true) + "=" + _Helper.encode(sValue, false);
960
978
  },
961
979
 
980
+ /**
981
+ * Extracts the mergeable query options "$expand" and "$select" from the given ones, returns
982
+ * them as a new map while replacing their value with "~" in the old map.
983
+ *
984
+ * @param {object} mQueryOptions
985
+ * The original query options, will be modified
986
+ * @returns {object}
987
+ * The extracted query options
988
+ *
989
+ * @public
990
+ */
991
+ extractMergeableQueryOptions : function (mQueryOptions) {
992
+ var mExtractedQueryOptions = {};
993
+
994
+ if ("$expand" in mQueryOptions) {
995
+ mExtractedQueryOptions.$expand = mQueryOptions.$expand;
996
+ mQueryOptions.$expand = "~";
997
+ }
998
+ if ("$select" in mQueryOptions) {
999
+ mExtractedQueryOptions.$select = mQueryOptions.$select;
1000
+ mQueryOptions.$select = "~";
1001
+ }
1002
+
1003
+ return mExtractedQueryOptions;
1004
+ },
1005
+
962
1006
  /**
963
1007
  * Extracts all (top and detail) messages from the given error instance.
964
1008
  *
@@ -1045,32 +1089,6 @@ sap.ui.define([
1045
1089
  return aMessages;
1046
1090
  },
1047
1091
 
1048
- /**
1049
- * Extracts the mergeable query options "$expand" and "$select" from the given ones, returns
1050
- * them as a new map while replacing their value with "~" in the old map.
1051
- *
1052
- * @param {object} mQueryOptions
1053
- * The original query options, will be modified
1054
- * @returns {object}
1055
- * The extracted query options
1056
- *
1057
- * @public
1058
- */
1059
- extractMergeableQueryOptions : function (mQueryOptions) {
1060
- var mExtractedQueryOptions = {};
1061
-
1062
- if ("$expand" in mQueryOptions) {
1063
- mExtractedQueryOptions.$expand = mQueryOptions.$expand;
1064
- mQueryOptions.$expand = "~";
1065
- }
1066
- if ("$select" in mQueryOptions) {
1067
- mExtractedQueryOptions.$select = mQueryOptions.$select;
1068
- mQueryOptions.$select = "~";
1069
- }
1070
-
1071
- return mExtractedQueryOptions;
1072
- },
1073
-
1074
1092
  /**
1075
1093
  * Fetches the property that is reached by the meta path and (if necessary) its type.
1076
1094
  *
@@ -1264,8 +1282,9 @@ sap.ui.define([
1264
1282
  * @param {object} oOperationMetadata
1265
1283
  * The operation metadata to determine whether a given message target is a parameter
1266
1284
  * of the operation
1267
- * @param {string} sParameterContextPath
1268
- * The parameter context path
1285
+ * @param {string} [sParameterContextPath]
1286
+ * The parameter context path, needed for adjusting a message target in case it is an
1287
+ * operation parameter, except the binding parameter
1269
1288
  * @param {string} [sContextPath]
1270
1289
  * The context path for a bound operation
1271
1290
  * @returns {string|undefined} The adjusted target, or <code>undefined</code> if the target
@@ -1274,7 +1293,7 @@ sap.ui.define([
1274
1293
  * @private
1275
1294
  */
1276
1295
  getAdjustedTarget : function (sTarget, oOperationMetadata, sParameterContextPath,
1277
- sContextPath) {
1296
+ sContextPath) {
1278
1297
  var bIsParameterName,
1279
1298
  sParameterName,
1280
1299
  aSegments;
@@ -1290,6 +1309,9 @@ sap.ui.define([
1290
1309
  sTarget = _Helper.buildPath(sContextPath, aSegments.join("/"));
1291
1310
  return sTarget;
1292
1311
  }
1312
+ if (!sParameterContextPath) {
1313
+ return sTarget;
1314
+ }
1293
1315
  bIsParameterName = oOperationMetadata.$Parameter.some(function (oParameter) {
1294
1316
  return sParameterName === oParameter.$Name;
1295
1317
  });
@@ -1570,6 +1592,27 @@ sap.ui.define([
1570
1592
  });
1571
1593
  },
1572
1594
 
1595
+ /**
1596
+ * Returns the index of the key predicate in the last segment of the given path.
1597
+ *
1598
+ * @param {string} sPath - The path
1599
+ * @returns {number} The index of the key predicate
1600
+ * @throws {Error} If no path is given or the last segment contains no key predicate
1601
+ *
1602
+ * @public
1603
+ */
1604
+ getPredicateIndex : function (sPath) {
1605
+ var iPredicateIndex = sPath
1606
+ ? sPath.indexOf("(", sPath.lastIndexOf("/"))
1607
+ : -1;
1608
+
1609
+ if (iPredicateIndex < 0 || !sPath.endsWith(")")) {
1610
+ throw new Error("Not a list context path to an entity: " + sPath);
1611
+ }
1612
+
1613
+ return iPredicateIndex;
1614
+ },
1615
+
1573
1616
  /**
1574
1617
  * Returns the list of predicates corresponding to the given list of contexts, or
1575
1618
  * <code>null</code if at least one predicate is missing.
@@ -1595,27 +1638,6 @@ sap.ui.define([
1595
1638
  return bMissingPredicate ? null : aPredicates;
1596
1639
  },
1597
1640
 
1598
- /**
1599
- * Returns the index of the key predicate in the last segment of the given path.
1600
- *
1601
- * @param {string} sPath - The path
1602
- * @returns {number} The index of the key predicate
1603
- * @throws {Error} If no path is given or the last segment contains no key predicate
1604
- *
1605
- * @public
1606
- */
1607
- getPredicateIndex : function (sPath) {
1608
- var iPredicateIndex = sPath
1609
- ? sPath.indexOf("(", sPath.lastIndexOf("/"))
1610
- : -1;
1611
-
1612
- if (iPredicateIndex < 0 || !sPath.endsWith(")")) {
1613
- throw new Error("Not a list context path to an entity: " + sPath);
1614
- }
1615
-
1616
- return iPredicateIndex;
1617
- },
1618
-
1619
1641
  /**
1620
1642
  * Returns the value of the private client-side instance annotation with the given
1621
1643
  * unqualified name at the given object.
@@ -1832,6 +1854,24 @@ sap.ui.define([
1832
1854
  });
1833
1855
  },
1834
1856
 
1857
+ /**
1858
+ * Inserts the given element into the given array at the given index, even it is beyond the
1859
+ * array's current length.
1860
+ *
1861
+ * @param {any[]} aElements - Some array
1862
+ * @param {number} iIndex - Some index
1863
+ * @param {any} vElement - Some element
1864
+ *
1865
+ * @public
1866
+ */
1867
+ insert : function (aElements, iIndex, vElement) {
1868
+ if (iIndex >= aElements.length) { // Note: #splice ignores iIndex then!
1869
+ aElements[iIndex] = vElement;
1870
+ } else {
1871
+ aElements.splice(iIndex, 0, vElement);
1872
+ }
1873
+ },
1874
+
1835
1875
  /**
1836
1876
  * Returns a copy of given query options where "$expand" and "$select" are replaced by the
1837
1877
  * intersection with the given (navigation) property paths.
@@ -2309,6 +2349,24 @@ sap.ui.define([
2309
2349
  }, bAsString);
2310
2350
  },
2311
2351
 
2352
+ /**
2353
+ * Registers the listener for the given owner. Passes a deregister function to the listener.
2354
+ *
2355
+ * @param {object} oOwner - The owner with a map mChangeListeners (which may change)
2356
+ * @param {string} sPath - The path
2357
+ * @param {object} [oListener] - The listener
2358
+ *
2359
+ * @public
2360
+ */
2361
+ registerChangeListener : function (oOwner, sPath, oListener) {
2362
+ if (oListener) {
2363
+ _Helper.addByPath(oOwner.mChangeListeners, sPath, oListener);
2364
+ oListener.setDeregisterChangeListener(function () {
2365
+ _Helper.removeByPath(oOwner.mChangeListeners, sPath, oListener);
2366
+ });
2367
+ }
2368
+ },
2369
+
2312
2370
  /**
2313
2371
  * Removes an item from the given map by path.
2314
2372
  *
@@ -3024,21 +3082,6 @@ sap.ui.define([
3024
3082
  }
3025
3083
  },
3026
3084
 
3027
- /**
3028
- * Sets "@$ui5.context.isSelected" in <code>oTarget</code> to true if it is true in
3029
- * <code>oSource</code>.
3030
- *
3031
- * @param {object} oSource - The source object
3032
- * @param {object} oTarget - The target object
3033
- *
3034
- * @public
3035
- */
3036
- copySelected : function (oSource, oTarget) {
3037
- if (oSource["@$ui5.context.isSelected"] === true) {
3038
- oTarget["@$ui5.context.isSelected"] = true;
3039
- }
3040
- },
3041
-
3042
3085
  /**
3043
3086
  * Creates the query options for a child binding with the meta path given by its base
3044
3087
  * meta path and relative meta path. Adds the key properties to $select of all expanded