@openui5/sap.ui.core 1.124.1 → 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 (641) 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 +6 -3
  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 +23 -16
  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/theming/Parameters.js +2 -2
  167. package/src/sap/ui/core/tmpl/DOMAttribute.js +2 -2
  168. package/src/sap/ui/core/tmpl/DOMElement.js +2 -2
  169. package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +2 -2
  170. package/src/sap/ui/core/tmpl/Template.js +1 -1
  171. package/src/sap/ui/core/tmpl/TemplateControl.js +2 -2
  172. package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
  173. package/src/sap/ui/core/util/Export.js +1 -1
  174. package/src/sap/ui/core/util/ExportCell.js +1 -1
  175. package/src/sap/ui/core/util/ExportColumn.js +1 -1
  176. package/src/sap/ui/core/util/ExportRow.js +1 -1
  177. package/src/sap/ui/core/util/ExportType.js +1 -1
  178. package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
  179. package/src/sap/ui/core/util/File.js +1 -1
  180. package/src/sap/ui/core/util/LibraryInfo.js +1 -1
  181. package/src/sap/ui/core/util/MockServer.js +1 -1
  182. package/src/sap/ui/core/util/PasteHelper.js +1 -1
  183. package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
  184. package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
  185. package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
  186. package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
  187. package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
  188. package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
  189. package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
  190. package/src/sap/ui/core/webc/WebComponent.js +1 -1
  191. package/src/sap/ui/core/webc/WebComponentMetadata.js +1 -1
  192. package/src/sap/ui/core/ws/ReadyState.js +1 -1
  193. package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
  194. package/src/sap/ui/core/ws/WebSocket.js +1 -1
  195. package/src/sap/ui/debug/ControlTree.js +1 -1
  196. package/src/sap/ui/debug/DebugEnv.js +1 -1
  197. package/src/sap/ui/debug/PropertyList.js +1 -1
  198. package/src/sap/ui/dom/jquery/control.js +6 -3
  199. package/src/sap/ui/model/Binding.js +10 -0
  200. package/src/sap/ui/model/ClientModel.js +1 -1
  201. package/src/sap/ui/model/CompositeDataState.js +1 -1
  202. package/src/sap/ui/model/CompositeType.js +1 -1
  203. package/src/sap/ui/model/DataState.js +1 -1
  204. package/src/sap/ui/model/FieldHelp.js +362 -0
  205. package/src/sap/ui/model/MetaModel.js +1 -1
  206. package/src/sap/ui/model/Model.js +1 -1
  207. package/src/sap/ui/model/SelectionModel.js +1 -1
  208. package/src/sap/ui/model/SimpleType.js +1 -1
  209. package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
  210. package/src/sap/ui/model/Type.js +1 -1
  211. package/src/sap/ui/model/analytics/AnalyticalBinding.js +8 -12
  212. package/src/sap/ui/model/json/JSONModel.js +6 -5
  213. package/src/sap/ui/model/message/MessageModel.js +1 -1
  214. package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
  215. package/src/sap/ui/model/odata/ODataMessageParser.js +1 -1
  216. package/src/sap/ui/model/odata/ODataMetaModel.js +1 -1
  217. package/src/sap/ui/model/odata/ODataMetadata.js +1 -1
  218. package/src/sap/ui/model/odata/ODataModel.js +1 -1
  219. package/src/sap/ui/model/odata/type/Boolean.js +1 -1
  220. package/src/sap/ui/model/odata/type/Byte.js +1 -1
  221. package/src/sap/ui/model/odata/type/Currency.js +1 -1
  222. package/src/sap/ui/model/odata/type/Date.js +1 -1
  223. package/src/sap/ui/model/odata/type/DateTime.js +1 -1
  224. package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
  225. package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
  226. package/src/sap/ui/model/odata/type/DateTimeWithTimezone.js +1 -1
  227. package/src/sap/ui/model/odata/type/Decimal.js +1 -1
  228. package/src/sap/ui/model/odata/type/Double.js +1 -1
  229. package/src/sap/ui/model/odata/type/Guid.js +1 -1
  230. package/src/sap/ui/model/odata/type/Int.js +1 -1
  231. package/src/sap/ui/model/odata/type/Int16.js +1 -1
  232. package/src/sap/ui/model/odata/type/Int32.js +1 -1
  233. package/src/sap/ui/model/odata/type/Int64.js +1 -1
  234. package/src/sap/ui/model/odata/type/ODataType.js +1 -1
  235. package/src/sap/ui/model/odata/type/Raw.js +1 -1
  236. package/src/sap/ui/model/odata/type/SByte.js +1 -1
  237. package/src/sap/ui/model/odata/type/Single.js +1 -1
  238. package/src/sap/ui/model/odata/type/Stream.js +1 -1
  239. package/src/sap/ui/model/odata/type/String.js +1 -1
  240. package/src/sap/ui/model/odata/type/Time.js +1 -1
  241. package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
  242. package/src/sap/ui/model/odata/type/Unit.js +1 -1
  243. package/src/sap/ui/model/odata/v2/Context.js +1 -1
  244. package/src/sap/ui/model/odata/v2/ODataAnnotations.js +1 -1
  245. package/src/sap/ui/model/odata/v2/ODataModel.js +50 -6
  246. package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +1 -1
  247. package/src/sap/ui/model/odata/v4/Context.js +45 -13
  248. package/src/sap/ui/model/odata/v4/ODataBinding.js +20 -20
  249. package/src/sap/ui/model/odata/v4/ODataContextBinding.js +68 -68
  250. package/src/sap/ui/model/odata/v4/ODataListBinding.js +283 -212
  251. package/src/sap/ui/model/odata/v4/ODataMetaModel.js +41 -39
  252. package/src/sap/ui/model/odata/v4/ODataModel.js +236 -209
  253. package/src/sap/ui/model/odata/v4/ODataParentBinding.js +202 -202
  254. package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +1 -1
  255. package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +90 -20
  256. package/src/sap/ui/model/odata/v4/lib/_AggregationHelper.js +5 -0
  257. package/src/sap/ui/model/odata/v4/lib/_Cache.js +38 -42
  258. package/src/sap/ui/model/odata/v4/lib/_Helper.js +93 -68
  259. package/src/sap/ui/model/odata/v4/lib/_Requestor.js +78 -78
  260. package/src/sap/ui/model/odata/v4/lib/_TreeState.js +1 -1
  261. package/src/sap/ui/model/odata/v4/lib/_V2MetadataConverter.js +20 -20
  262. package/src/sap/ui/model/odata/v4/lib/_V2Requestor.js +60 -60
  263. package/src/sap/ui/model/resource/ResourceModel.js +7 -2
  264. package/src/sap/ui/model/type/Boolean.js +1 -1
  265. package/src/sap/ui/model/type/Currency.js +1 -1
  266. package/src/sap/ui/model/type/Date.js +1 -1
  267. package/src/sap/ui/model/type/DateInterval.js +1 -1
  268. package/src/sap/ui/model/type/DateTime.js +1 -1
  269. package/src/sap/ui/model/type/DateTimeInterval.js +1 -1
  270. package/src/sap/ui/model/type/FileSize.js +1 -1
  271. package/src/sap/ui/model/type/Float.js +1 -1
  272. package/src/sap/ui/model/type/Integer.js +1 -1
  273. package/src/sap/ui/model/type/String.js +1 -1
  274. package/src/sap/ui/model/type/Time.js +1 -1
  275. package/src/sap/ui/model/type/TimeInterval.js +1 -1
  276. package/src/sap/ui/model/type/Unit.js +1 -1
  277. package/src/sap/ui/model/xml/XMLModel.js +1 -1
  278. package/src/sap/ui/qunit/qunit-coverage-istanbul.js +1 -1
  279. package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
  280. package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +1 -1
  281. package/src/sap/ui/test/OpaPlugin.js +36 -12
  282. package/src/sap/ui/test/generic/TestBase.js +1 -1
  283. package/src/sap/ui/util/Storage.js +1 -1
  284. package/test/sap/ui/core/BindableResponseHeaders.html +4 -4
  285. package/test/sap/ui/core/ComponentCleanup.html +46 -46
  286. package/test/sap/ui/core/ComponentManifestFirst.html +26 -20
  287. package/test/sap/ui/core/ContextMenuSupport.html +9 -10
  288. package/test/sap/ui/core/DesigntimeOverview.html +1 -1
  289. package/test/sap/ui/core/EventBroadcaster.html +2 -2
  290. package/test/sap/ui/core/FieldGroup.html +70 -61
  291. package/test/sap/ui/core/GenericEventBinding.html +26 -23
  292. package/test/sap/ui/core/HTMLControl.html +46 -38
  293. package/test/sap/ui/core/HTMLSanitizer.html +70 -45
  294. package/test/sap/ui/core/IntervalTrigger.html +22 -21
  295. package/test/sap/ui/core/InvisibleControls.html +72 -72
  296. package/test/sap/ui/core/InvisibleText.html +2 -2
  297. package/test/sap/ui/core/LRUPersistentCache.html +19 -18
  298. package/test/sap/ui/core/LabelEnablement.html +18 -29
  299. package/test/sap/ui/core/Localization.html +40 -65
  300. package/test/sap/ui/core/Localization_HeapUsage.html +11 -12
  301. package/test/sap/ui/core/ManagedObjectModel.html +6 -7
  302. package/test/sap/ui/core/ODataAnnotationsPerformance.html +592 -602
  303. package/test/sap/ui/core/ODataV2CanonicalRequests.html +8 -8
  304. package/test/sap/ui/core/ODataV2Messages.html +1 -1
  305. package/test/sap/ui/core/ODataV2MessagesPerf.html +131 -132
  306. package/test/sap/ui/core/Popup.html +18 -14
  307. package/test/sap/ui/core/PopupWithUserSelection.html +4 -4
  308. package/test/sap/ui/core/StashedControlSupport.html +1 -1
  309. package/test/sap/ui/core/ThemeParameters.html +32 -20
  310. package/test/sap/ui/core/ValidateURL.html +109 -75
  311. package/test/sap/ui/core/demokit/sample/Messaging/ODataBackendMessagesComp/ui5.yaml +1 -1
  312. package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/Component.js +1 -4
  313. package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/Detail.controller.js +0 -1
  314. package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/Main.controller.js +0 -1
  315. package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/Opa.qunit.html +0 -1
  316. package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/extension/Component.js +1 -5
  317. package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/manifest.json +2 -10
  318. package/test/sap/ui/core/demokit/sample/ViewTemplate/tiny/Component.js +4 -1
  319. package/test/sap/ui/core/demokit/sample/ViewTemplate/tiny/manifest.json +37 -0
  320. package/test/sap/ui/core/demokit/sample/ViewTemplate/types/Component.js +5 -1
  321. package/test/sap/ui/core/demokit/sample/ViewTemplate/types/manifest.json +42 -0
  322. package/test/sap/ui/core/demokit/sample/ViewTemplate/valuelist/Component.js +6 -3
  323. package/test/sap/ui/core/demokit/sample/ViewTemplate/valuelist/Main.view.xml +4 -1
  324. package/test/sap/ui/core/demokit/sample/ViewTemplate/valuelist/manifest.json +49 -0
  325. package/test/sap/ui/core/demokit/sample/matcher/BindingPath/ui5.yaml +1 -1
  326. package/test/sap/ui/core/demokit/sample/matcher/Descendant/ui5.yaml +1 -1
  327. package/test/sap/ui/core/demokit/sample/matcher/I18NText/ui5.yaml +1 -1
  328. package/test/sap/ui/core/demokit/sample/matcher/LabelFor/ui5.yaml +1 -1
  329. package/test/sap/ui/core/demokit/sample/odata/types/v2/DateTime/Component.js +1 -0
  330. package/test/sap/ui/core/demokit/sample/odata/types/v2/DateTime/manifest.json +1 -2
  331. package/test/sap/ui/core/demokit/sample/odata/types/v2/DateTimeOffset/Component.js +1 -0
  332. package/test/sap/ui/core/demokit/sample/odata/types/v2/DateTimeOffset/manifest.json +1 -2
  333. package/test/sap/ui/core/demokit/sample/odata/types/v2/Time/Component.js +1 -0
  334. package/test/sap/ui/core/demokit/sample/odata/types/v2/Time/manifest.json +1 -2
  335. package/test/sap/ui/core/demokit/sample/odata/types/v4/Date/Component.js +1 -0
  336. package/test/sap/ui/core/demokit/sample/odata/types/v4/Date/manifest.json +1 -2
  337. package/test/sap/ui/core/demokit/sample/odata/types/v4/DateTimeOffset/Component.js +1 -0
  338. package/test/sap/ui/core/demokit/sample/odata/types/v4/DateTimeOffset/manifest.json +1 -2
  339. package/test/sap/ui/core/demokit/sample/odata/types/v4/TimeOfDay/Component.js +1 -0
  340. package/test/sap/ui/core/demokit/sample/odata/types/v4/TimeOfDay/manifest.json +1 -2
  341. package/test/sap/ui/core/demokit/sample/odata/v4/Ancestry/Component.js +1 -0
  342. package/test/sap/ui/core/demokit/sample/odata/v4/Ancestry/Main.controller.js +35 -31
  343. package/test/sap/ui/core/demokit/sample/odata/v4/Ancestry/manifest.json +1 -10
  344. package/test/sap/ui/core/demokit/sample/odata/v4/ConsumeV2Service/Component.js +1 -0
  345. package/test/sap/ui/core/demokit/sample/odata/v4/ConsumeV2Service/manifest.json +2 -11
  346. package/test/sap/ui/core/demokit/sample/odata/v4/DataAggregation/Component.js +1 -0
  347. package/test/sap/ui/core/demokit/sample/odata/v4/DataAggregation/DataAggregation.controller.js +71 -68
  348. package/test/sap/ui/core/demokit/sample/odata/v4/DataAggregation/Opa.qunit.html +0 -1
  349. package/test/sap/ui/core/demokit/sample/odata/v4/DataAggregation/manifest.json +3 -11
  350. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/Component.js +1 -0
  351. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/Opa.qunit.html +0 -1
  352. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/manifest.json +7 -16
  353. package/test/sap/ui/core/demokit/sample/odata/v4/Draft/Component.js +1 -0
  354. package/test/sap/ui/core/demokit/sample/odata/v4/Draft/Main.controller.js +3 -3
  355. package/test/sap/ui/core/demokit/sample/odata/v4/Draft/Opa.qunit.html +0 -1
  356. package/test/sap/ui/core/demokit/sample/odata/v4/Draft/manifest.json +1 -10
  357. package/test/sap/ui/core/demokit/sample/odata/v4/FieldGroups/Component.js +1 -0
  358. package/test/sap/ui/core/demokit/sample/odata/v4/FieldGroups/FieldGroups.view.xml +0 -1
  359. package/test/sap/ui/core/demokit/sample/odata/v4/FieldGroups/Opa.qunit.html +0 -1
  360. package/test/sap/ui/core/demokit/sample/odata/v4/FieldGroups/manifest.json +3 -11
  361. package/test/sap/ui/core/demokit/sample/odata/v4/FlatDataAggregation/Component.js +1 -0
  362. package/test/sap/ui/core/demokit/sample/odata/v4/FlatDataAggregation/FlatDataAggregation.controller.js +46 -43
  363. package/test/sap/ui/core/demokit/sample/odata/v4/FlatDataAggregation/FlatDataAggregation.view.xml +12 -10
  364. package/test/sap/ui/core/demokit/sample/odata/v4/FlatDataAggregation/manifest.json +3 -11
  365. package/test/sap/ui/core/demokit/sample/odata/v4/FlexibleColumnLayout/Component.js +1 -0
  366. package/test/sap/ui/core/demokit/sample/odata/v4/FlexibleColumnLayout/Main.controller.js +21 -18
  367. package/test/sap/ui/core/demokit/sample/odata/v4/FlexibleColumnLayout/Opa.qunit.html +0 -1
  368. package/test/sap/ui/core/demokit/sample/odata/v4/FlexibleColumnLayout/manifest.json +4 -7
  369. package/test/sap/ui/core/demokit/sample/odata/v4/GridTable/Component.js +1 -0
  370. package/test/sap/ui/core/demokit/sample/odata/v4/GridTable/manifest.json +1 -10
  371. package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/Component.js +1 -0
  372. package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/Main.controller.js +21 -18
  373. package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/manifest.json +1 -10
  374. package/test/sap/ui/core/demokit/sample/odata/v4/LateProperties/Component.js +1 -0
  375. package/test/sap/ui/core/demokit/sample/odata/v4/LateProperties/Main.controller.js +25 -22
  376. package/test/sap/ui/core/demokit/sample/odata/v4/LateProperties/Opa.OptimisticBatch.qunit.html +0 -1
  377. package/test/sap/ui/core/demokit/sample/odata/v4/LateProperties/Opa.OptimisticBatch.qunit.js +5 -4
  378. package/test/sap/ui/core/demokit/sample/odata/v4/LateProperties/Opa.qunit.html +0 -1
  379. package/test/sap/ui/core/demokit/sample/odata/v4/LateProperties/manifest.json +3 -7
  380. package/test/sap/ui/core/demokit/sample/odata/v4/ListBinding/Component.js +1 -0
  381. package/test/sap/ui/core/demokit/sample/odata/v4/ListBinding/Opa.qunit.html +0 -1
  382. package/test/sap/ui/core/demokit/sample/odata/v4/ListBinding/manifest.json +3 -11
  383. package/test/sap/ui/core/demokit/sample/odata/v4/ListBindingTemplate/Component.js +1 -0
  384. package/test/sap/ui/core/demokit/sample/odata/v4/ListBindingTemplate/Opa.qunit.html +0 -1
  385. package/test/sap/ui/core/demokit/sample/odata/v4/ListBindingTemplate/manifest.json +2 -10
  386. package/test/sap/ui/core/demokit/sample/odata/v4/MultipleInlineCreationRowsGrid/Component.js +1 -0
  387. package/test/sap/ui/core/demokit/sample/odata/v4/MultipleInlineCreationRowsGrid/Main.controller.js +60 -57
  388. package/test/sap/ui/core/demokit/sample/odata/v4/MultipleInlineCreationRowsGrid/Opa.qunit.html +0 -1
  389. package/test/sap/ui/core/demokit/sample/odata/v4/MultipleInlineCreationRowsGrid/manifest.json +4 -6
  390. package/test/sap/ui/core/demokit/sample/odata/v4/MusicArtists/Component.js +1 -0
  391. package/test/sap/ui/core/demokit/sample/odata/v4/MusicArtists/manifest.json +3 -11
  392. package/test/sap/ui/core/demokit/sample/odata/v4/Products/Component.js +1 -0
  393. package/test/sap/ui/core/demokit/sample/odata/v4/Products/Main.view.xml +0 -1
  394. package/test/sap/ui/core/demokit/sample/odata/v4/Products/Opa.qunit.html +0 -1
  395. package/test/sap/ui/core/demokit/sample/odata/v4/Products/manifest.json +3 -10
  396. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/Component.js +1 -0
  397. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/Opa.qunit.html +0 -1
  398. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/RecursiveHierarchy.controller.js +81 -69
  399. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/RecursiveHierarchy.view.xml +44 -9
  400. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/SandboxModel.js +49 -0
  401. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/data/metadata.xml +14 -0
  402. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/manifest.json +1 -10
  403. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrderTP100_V2/Component.js +1 -0
  404. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrderTP100_V2/Opa.qunit.html +0 -1
  405. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrderTP100_V2/manifest.json +2 -11
  406. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrderTP100_V4/Component.js +1 -0
  407. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrderTP100_V4/Opa.qunit.html +0 -1
  408. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrderTP100_V4/manifest.json +2 -11
  409. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/Component.js +1 -2
  410. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/Opa.qunit.html +0 -1
  411. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/manifest.json +3 -10
  412. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersRTATest/Component.js +1 -0
  413. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersRTATest/Opa.qunit.html +0 -1
  414. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersRTATest/manifest.json +6 -5
  415. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersTemplate/Component.js +1 -0
  416. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersTemplate/Opa.qunit.html +0 -1
  417. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersTemplate/manifest.json +2 -10
  418. package/test/sap/ui/core/demokit/sample/odata/v4/ServerDrivenPaging/Component.js +1 -0
  419. package/test/sap/ui/core/demokit/sample/odata/v4/ServerDrivenPaging/Opa.qunit.html +0 -1
  420. package/test/sap/ui/core/demokit/sample/odata/v4/ServerDrivenPaging/manifest.json +3 -10
  421. package/test/sap/ui/core/demokit/sample/odata/v4/Sticky/Opa.qunit.html +0 -1
  422. package/test/sap/ui/core/demokit/sample/odata/v4/Sticky/manifest.json +3 -11
  423. package/test/sap/ui/core/demokit/tutorial/databinding/01/ui5.yaml +1 -1
  424. package/test/sap/ui/core/demokit/tutorial/databinding/02/ui5.yaml +1 -1
  425. package/test/sap/ui/core/demokit/tutorial/databinding/03/ui5.yaml +1 -1
  426. package/test/sap/ui/core/demokit/tutorial/databinding/04/ui5.yaml +1 -1
  427. package/test/sap/ui/core/demokit/tutorial/databinding/05/ui5.yaml +1 -1
  428. package/test/sap/ui/core/demokit/tutorial/databinding/06/ui5.yaml +1 -1
  429. package/test/sap/ui/core/demokit/tutorial/databinding/07/ui5.yaml +1 -1
  430. package/test/sap/ui/core/demokit/tutorial/databinding/08/ui5.yaml +1 -1
  431. package/test/sap/ui/core/demokit/tutorial/databinding/09/ui5.yaml +1 -1
  432. package/test/sap/ui/core/demokit/tutorial/databinding/10/ui5.yaml +1 -1
  433. package/test/sap/ui/core/demokit/tutorial/databinding/11/ui5.yaml +1 -1
  434. package/test/sap/ui/core/demokit/tutorial/databinding/12/ui5.yaml +1 -1
  435. package/test/sap/ui/core/demokit/tutorial/databinding/13/ui5.yaml +1 -1
  436. package/test/sap/ui/core/demokit/tutorial/databinding/14/ui5.yaml +1 -1
  437. package/test/sap/ui/core/demokit/tutorial/databinding/15/ui5.yaml +1 -1
  438. package/test/sap/ui/core/demokit/tutorial/mockserver/01/ui5.yaml +1 -1
  439. package/test/sap/ui/core/demokit/tutorial/mockserver/02/ui5.yaml +1 -1
  440. package/test/sap/ui/core/demokit/tutorial/mockserver/03/ui5.yaml +1 -1
  441. package/test/sap/ui/core/demokit/tutorial/mockserver/04/ui5.yaml +1 -1
  442. package/test/sap/ui/core/demokit/tutorial/navigation/01/ui5.yaml +1 -1
  443. package/test/sap/ui/core/demokit/tutorial/navigation/02/ui5.yaml +1 -1
  444. package/test/sap/ui/core/demokit/tutorial/navigation/03/ui5.yaml +1 -1
  445. package/test/sap/ui/core/demokit/tutorial/navigation/04/ui5.yaml +1 -1
  446. package/test/sap/ui/core/demokit/tutorial/navigation/05/ui5.yaml +1 -1
  447. package/test/sap/ui/core/demokit/tutorial/navigation/06/ui5.yaml +1 -1
  448. package/test/sap/ui/core/demokit/tutorial/navigation/07/ui5.yaml +1 -1
  449. package/test/sap/ui/core/demokit/tutorial/navigation/08/ui5.yaml +1 -1
  450. package/test/sap/ui/core/demokit/tutorial/navigation/09/ui5.yaml +1 -1
  451. package/test/sap/ui/core/demokit/tutorial/navigation/10/ui5.yaml +1 -1
  452. package/test/sap/ui/core/demokit/tutorial/navigation/11/ui5.yaml +1 -1
  453. package/test/sap/ui/core/demokit/tutorial/navigation/12/ui5.yaml +1 -1
  454. package/test/sap/ui/core/demokit/tutorial/navigation/13/ui5.yaml +1 -1
  455. package/test/sap/ui/core/demokit/tutorial/navigation/14/ui5.yaml +1 -1
  456. package/test/sap/ui/core/demokit/tutorial/navigation/15/ui5.yaml +1 -1
  457. package/test/sap/ui/core/demokit/tutorial/navigation/16/ui5.yaml +1 -1
  458. package/test/sap/ui/core/demokit/tutorial/navigation/17/ui5.yaml +1 -1
  459. package/test/sap/ui/core/demokit/tutorial/odatav4/01/Component.js +1 -0
  460. package/test/sap/ui/core/demokit/tutorial/odatav4/01/ui5.yaml +1 -1
  461. package/test/sap/ui/core/demokit/tutorial/odatav4/01/webapp/Component.js +1 -0
  462. package/test/sap/ui/core/demokit/tutorial/odatav4/01/webapp/index.html +0 -1
  463. package/test/sap/ui/core/demokit/tutorial/odatav4/01/webapp/manifest.json +2 -13
  464. package/test/sap/ui/core/demokit/tutorial/odatav4/02/Component.js +1 -0
  465. package/test/sap/ui/core/demokit/tutorial/odatav4/02/ui5.yaml +1 -1
  466. package/test/sap/ui/core/demokit/tutorial/odatav4/02/webapp/Component.js +1 -0
  467. package/test/sap/ui/core/demokit/tutorial/odatav4/02/webapp/index.html +0 -1
  468. package/test/sap/ui/core/demokit/tutorial/odatav4/02/webapp/manifest.json +2 -13
  469. package/test/sap/ui/core/demokit/tutorial/odatav4/03/Component.js +1 -0
  470. package/test/sap/ui/core/demokit/tutorial/odatav4/03/ui5.yaml +1 -1
  471. package/test/sap/ui/core/demokit/tutorial/odatav4/03/webapp/Component.js +1 -0
  472. package/test/sap/ui/core/demokit/tutorial/odatav4/03/webapp/index.html +0 -1
  473. package/test/sap/ui/core/demokit/tutorial/odatav4/03/webapp/manifest.json +2 -13
  474. package/test/sap/ui/core/demokit/tutorial/odatav4/04/Component.js +1 -0
  475. package/test/sap/ui/core/demokit/tutorial/odatav4/04/ui5.yaml +1 -1
  476. package/test/sap/ui/core/demokit/tutorial/odatav4/04/webapp/Component.js +1 -0
  477. package/test/sap/ui/core/demokit/tutorial/odatav4/04/webapp/index.html +0 -1
  478. package/test/sap/ui/core/demokit/tutorial/odatav4/04/webapp/manifest.json +2 -13
  479. package/test/sap/ui/core/demokit/tutorial/odatav4/05/Component.js +1 -0
  480. package/test/sap/ui/core/demokit/tutorial/odatav4/05/ui5.yaml +1 -1
  481. package/test/sap/ui/core/demokit/tutorial/odatav4/05/webapp/Component.js +1 -0
  482. package/test/sap/ui/core/demokit/tutorial/odatav4/05/webapp/index.html +0 -1
  483. package/test/sap/ui/core/demokit/tutorial/odatav4/05/webapp/manifest.json +2 -13
  484. package/test/sap/ui/core/demokit/tutorial/odatav4/06/Component.js +1 -0
  485. package/test/sap/ui/core/demokit/tutorial/odatav4/06/ui5.yaml +1 -1
  486. package/test/sap/ui/core/demokit/tutorial/odatav4/06/webapp/Component.js +1 -0
  487. package/test/sap/ui/core/demokit/tutorial/odatav4/06/webapp/index.html +0 -1
  488. package/test/sap/ui/core/demokit/tutorial/odatav4/06/webapp/manifest.json +2 -13
  489. package/test/sap/ui/core/demokit/tutorial/odatav4/07/Component.js +1 -0
  490. package/test/sap/ui/core/demokit/tutorial/odatav4/07/ui5.yaml +1 -1
  491. package/test/sap/ui/core/demokit/tutorial/odatav4/07/webapp/Component.js +1 -0
  492. package/test/sap/ui/core/demokit/tutorial/odatav4/07/webapp/index.html +0 -1
  493. package/test/sap/ui/core/demokit/tutorial/odatav4/07/webapp/manifest.json +2 -13
  494. package/test/sap/ui/core/demokit/tutorial/odatav4/08/Component.js +1 -0
  495. package/test/sap/ui/core/demokit/tutorial/odatav4/08/ui5.yaml +1 -1
  496. package/test/sap/ui/core/demokit/tutorial/odatav4/08/webapp/Component.js +1 -0
  497. package/test/sap/ui/core/demokit/tutorial/odatav4/08/webapp/index.html +0 -1
  498. package/test/sap/ui/core/demokit/tutorial/odatav4/08/webapp/manifest.json +2 -13
  499. package/test/sap/ui/core/demokit/tutorial/odatav4/08/webapp/test/integration/opaTests.qunit.html +0 -1
  500. package/test/sap/ui/core/demokit/tutorial/odatav4/09/Component.js +1 -0
  501. package/test/sap/ui/core/demokit/tutorial/odatav4/09/ui5.yaml +1 -1
  502. package/test/sap/ui/core/demokit/tutorial/odatav4/09/webapp/Component.js +1 -0
  503. package/test/sap/ui/core/demokit/tutorial/odatav4/09/webapp/index.html +0 -1
  504. package/test/sap/ui/core/demokit/tutorial/odatav4/09/webapp/manifest.json +2 -11
  505. package/test/sap/ui/core/demokit/tutorial/odatav4/10/Component.js +1 -0
  506. package/test/sap/ui/core/demokit/tutorial/odatav4/10/ui5.yaml +1 -1
  507. package/test/sap/ui/core/demokit/tutorial/odatav4/10/webapp/Component.js +1 -0
  508. package/test/sap/ui/core/demokit/tutorial/odatav4/10/webapp/index.html +0 -1
  509. package/test/sap/ui/core/demokit/tutorial/odatav4/10/webapp/manifest.json +2 -11
  510. package/test/sap/ui/core/demokit/tutorial/odatav4/11/Component.js +1 -0
  511. package/test/sap/ui/core/demokit/tutorial/odatav4/11/ui5.yaml +1 -1
  512. package/test/sap/ui/core/demokit/tutorial/odatav4/11/webapp/Component.js +1 -0
  513. package/test/sap/ui/core/demokit/tutorial/odatav4/11/webapp/index.html +0 -1
  514. package/test/sap/ui/core/demokit/tutorial/odatav4/11/webapp/manifest.json +2 -11
  515. package/test/sap/ui/core/demokit/tutorial/odatav4/11/webapp/test/integration/opaTests.qunit.html +0 -1
  516. package/test/sap/ui/core/demokit/tutorial/troubleshooting/01/ui5.yaml +1 -1
  517. package/test/sap/ui/core/getComputedStyle.html +2 -1
  518. package/test/sap/ui/core/getComputedStyleFF.html +1 -1
  519. package/test/sap/ui/core/internal/samples/client/MusicCollection/Component.js +5 -8
  520. package/test/sap/ui/core/internal/samples/client/MusicCollection/Main.controller.js +6 -2
  521. package/test/sap/ui/core/internal/samples/client/MusicCollection/Main.view.xml +7 -3
  522. package/test/sap/ui/core/internal/samples/client/MusicCollection/index.html +1 -3
  523. package/test/sap/ui/core/internal/samples/client/MusicCollection/manifest.json +1 -13
  524. package/test/sap/ui/core/internal/samples/odata/twoFields/Component.js +3 -45
  525. package/test/sap/ui/core/internal/samples/odata/twoFields/Main.controller.js +37 -1
  526. package/test/sap/ui/core/internal/samples/odata/twoFields/Main.view.xml +5 -5
  527. package/test/sap/ui/core/internal/samples/odata/twoFields/Opa.qunit.html +1 -3
  528. package/test/sap/ui/core/internal/samples/odata/twoFields/index.html +1 -3
  529. package/test/sap/ui/core/internal/samples/odata/twoFields/manifest.json +1 -11
  530. package/test/sap/ui/core/internal/samples/odata/v2/Products/Component.js +3 -22
  531. package/test/sap/ui/core/internal/samples/odata/v2/Products/Main.controller.js +16 -22
  532. package/test/sap/ui/core/internal/samples/odata/v2/Products/Main.view.xml +3 -2
  533. package/test/sap/ui/core/internal/samples/odata/v2/Products/SandboxModel.js +1 -1
  534. package/test/sap/ui/core/internal/samples/odata/v2/Products/index.html +1 -3
  535. package/test/sap/ui/core/internal/samples/odata/v2/Products/manifest.json +2 -13
  536. package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/Component.js +1 -0
  537. package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/Main.controller.js +49 -41
  538. package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/Main.view.xml +6 -4
  539. package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/manifest.json +3 -12
  540. package/test/sap/ui/core/internal/samples/odata/v2/TreeTable/Component.js +1 -0
  541. package/test/sap/ui/core/internal/samples/odata/v2/TreeTable/Main.controller.js +2 -2
  542. package/test/sap/ui/core/internal/samples/odata/v2/TreeTable/Main.view.xml +4 -3
  543. package/test/sap/ui/core/internal/samples/odata/v2/TreeTable/index.html +1 -3
  544. package/test/sap/ui/core/internal/samples/odata/v2/TreeTable/manifest.json +1 -11
  545. package/test/sap/ui/core/qunit/Fragment.qunit.js +20 -20
  546. package/test/sap/ui/core/qunit/Fragment_legacyAPIs.qunit.js +4 -4
  547. package/test/sap/ui/core/qunit/Icon.qunit.js +217 -1
  548. package/test/sap/ui/core/qunit/RenderManager.qunit.js +18 -5
  549. package/test/sap/ui/core/qunit/ScrollBar.qunit.js +15 -18
  550. package/test/sap/ui/core/qunit/analytics/AnalyticalBinding.qunit.js +5 -13
  551. package/test/sap/ui/core/qunit/component/Customizing.qunit.js +2 -2
  552. package/test/sap/ui/core/qunit/component/Customizing_async.qunit.js +36 -1
  553. package/test/sap/ui/core/qunit/component/ExtensionPoint.qunit.js +475 -290
  554. package/test/sap/ui/core/qunit/component/Models.qunit.js +0 -70
  555. package/test/sap/ui/core/qunit/component/Models_unavoidablySync.qunit.js +86 -0
  556. package/test/sap/ui/core/qunit/component/UIComponent.qunit.js +86 -1
  557. package/test/sap/ui/core/qunit/component/testdata/customizing/customer/ext/EP_In_Product_Table_Cell_Found.fragment.xml +5 -0
  558. package/test/sap/ui/core/qunit/component/testdata/customizing/customer/ext/EP_In_Product_Table_Column.fragment.xml +5 -0
  559. package/test/sap/ui/core/qunit/component/testdata/customizing/customer/ext/EPinNestedView.view.xml +51 -0
  560. package/test/sap/ui/core/qunit/component/testdata/customizing/customer/ext/ExtensionPointProvider.js +27 -4
  561. package/test/sap/ui/core/qunit/component/testdata/customizing/customer/ext/Main.view.xml +5 -0
  562. package/test/sap/ui/core/qunit/component/testdata/customizing/sap/Main.view.xml +0 -1
  563. package/test/sap/ui/core/qunit/component/testdata/customizing/sap/Sub2.view.xml +1 -3
  564. package/test/sap/ui/core/qunit/dnd/DragAndDrop.qunit.js +72 -2
  565. package/test/sap/ui/core/qunit/dnd/DropInfo.qunit.js +14 -2
  566. package/test/sap/ui/core/qunit/generic/ControlRenderer.qunit.js +4 -1
  567. package/test/sap/ui/core/qunit/generic/legacy/ControlRenderer.qunit.js +4 -0
  568. package/test/sap/ui/core/qunit/internal/1RingModels.qunit.js +1 -0
  569. package/test/sap/ui/core/qunit/loader/amd/base_tag/_launchTest.js +2 -4
  570. package/test/sap/ui/core/qunit/loader/amd/config_paths/_launchTest.js +2 -4
  571. package/test/sap/ui/core/qunit/loader/amd/config_paths_relative/_launchTest.js +2 -4
  572. package/test/sap/ui/core/qunit/loader/amdAPIs.qunit.js +3 -0
  573. package/test/sap/ui/core/qunit/model/Binding.qunit.js +13 -0
  574. package/test/sap/ui/core/qunit/model/FieldHelp.qunit.js +864 -0
  575. package/test/sap/ui/core/qunit/mvc/Controller.qunit.js +2 -2
  576. package/test/sap/ui/core/qunit/mvc/XMLTemplateProcessorAsync.qunit.js +8 -6
  577. package/test/sap/ui/core/qunit/mvc/XMLTemplateProcessorRequireXML.qunit.js +7 -7
  578. package/test/sap/ui/core/qunit/mvc/XMLView.qunit.js +131 -22
  579. package/test/sap/ui/core/qunit/mvc/testdata/Async.view.xml +1 -2
  580. package/test/sap/ui/core/qunit/mvc/testdata/asyncHooks.view.xml +1 -3
  581. package/test/sap/ui/core/qunit/mvc/testdata/cache.view.xml +1 -1
  582. package/test/sap/ui/core/qunit/mvc/testdata/legacy/test.view.xml +32 -0
  583. package/test/sap/ui/core/qunit/mvc/testdata/test.view.xml +2 -15
  584. package/test/sap/ui/core/qunit/odata/v2/ODataModel.integration.qunit.js +148 -1
  585. package/test/sap/ui/core/qunit/odata/v2/ODataModelNoFakeService.qunit.js +55 -6
  586. package/test/sap/ui/core/qunit/odata/v2/data/ZUI5_GWSAMPLE_BASIC.metadata.xml +14 -0
  587. package/test/sap/ui/core/qunit/odata/v4/Context.qunit.js +54 -0
  588. package/test/sap/ui/core/qunit/odata/v4/ODataListBinding.qunit.js +277 -15
  589. package/test/sap/ui/core/qunit/odata/v4/ODataModel.integration.qunit.js +580 -13
  590. package/test/sap/ui/core/qunit/odata/v4/ODataModel.qunit.js +86 -5
  591. package/test/sap/ui/core/qunit/odata/v4/lib/_AggregationCache.qunit.js +268 -5
  592. package/test/sap/ui/core/qunit/odata/v4/lib/_AggregationHelper.qunit.js +20 -0
  593. package/test/sap/ui/core/qunit/odata/v4/lib/_Cache.qunit.js +4 -10
  594. package/test/sap/ui/core/qunit/odata/v4/lib/_Helper.qunit.js +61 -13
  595. package/test/sap/ui/core/qunit/resource/ResourceBinding.qunit.js +17 -14
  596. package/test/sap/ui/core/qunit/routing/async/Views.qunit.js +3 -0
  597. package/test/sap/ui/core/qunit/test/starter/find/main.js +6 -4
  598. package/test/sap/ui/core/qunit/testdata/routing/HistoryIFrame.html +2 -1
  599. package/test/sap/ui/core/qunit/testsuites/testsuite.databinding.qunit.js +3 -0
  600. package/test/sap/ui/core/qunit/types/DateFormat.qunit.js +51 -22
  601. package/test/sap/ui/core/qunit/ui/Device.qunit.js +24 -0
  602. package/test/sap/ui/core/qunit/util/LabelEnablement.qunit.js +47 -1
  603. package/test/sap/ui/core/relnotes/changes-1.124.json +1 -21
  604. package/test/sap/ui/core/relnotes/changes-1.125.json +37 -0
  605. package/test/sap/ui/core/samples/ResponsiveDemo.html +97 -103
  606. package/test/sap/ui/core/samples/databinding/UnitTable/ui5.yaml +1 -1
  607. package/test/sap/ui/core/samples/draganddrop/DragAndDrop.html +2 -2
  608. package/test/sap/ui/core/samples/mvc/Product.html +1 -7
  609. package/test/sap/ui/core/samples/mvc/ViewPreprocessor.html +20 -12
  610. package/test/sap/ui/core/samples/mvc/XMLView.html +77 -24
  611. package/test/sap/ui/core/samples/mvc/XMLViewAsync.html +13 -19
  612. package/test/sap/ui/core/samples/mvc/controller/Async.controller.js +0 -1
  613. package/test/sap/ui/core/samples/mvc/controller/Product.controller.js +0 -1
  614. package/test/sap/ui/core/samples/mvc/views/Async.view.xml +16 -57
  615. package/test/sap/ui/core/samples/mvc/views/Dummy.fragment.xml +2 -2
  616. package/test/sap/ui/core/samples/mvc/views/Dummy.view.xml +2 -2
  617. package/test/sap/ui/core/samples/mvc/views/Product.view.xml +16 -57
  618. package/test/sap/ui/core/util/PasteHelper.html +148 -147
  619. package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/firstItem-contextMenu.ref.lnk +1 -1
  620. package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/initial.ref.lnk +1 -1
  621. package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/lastItem-contextMenu.ref.lnk +1 -1
  622. package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/leftDownBtn-contextMenu.ref.lnk +1 -1
  623. package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/myButtonSample-contextMenu.ref.lnk +1 -1
  624. package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/rightDownBtn-contextMenu.ref.lnk +1 -1
  625. package/test/testsuite/js/settings.js +5 -4
  626. package/test/testsuite/styles/main.css +5 -0
  627. package/test/sap/ui/core/ResourceRoots.html +0 -28
  628. package/test/sap/ui/core/demokit/sample/ViewTemplate/tiny/component.json +0 -17
  629. package/test/sap/ui/core/demokit/sample/ViewTemplate/types/component.json +0 -18
  630. package/test/sap/ui/core/demokit/sample/ViewTemplate/valuelist/component.json +0 -30
  631. package/test/sap/ui/core/demokit/sample/odata/v2/AutoExpand/AutoExpand.view.xml +0 -52
  632. package/test/sap/ui/core/demokit/sample/odata/v2/AutoExpand/Component.js +0 -30
  633. package/test/sap/ui/core/demokit/sample/odata/v2/AutoExpand/Sandbox.js +0 -51
  634. package/test/sap/ui/core/demokit/sample/odata/v2/AutoExpand/data/Items_L0_top5.json +0 -32
  635. package/test/sap/ui/core/demokit/sample/odata/v2/AutoExpand/data/Items_L1_A_skip8.json +0 -138
  636. package/test/sap/ui/core/demokit/sample/odata/v2/AutoExpand/data/Items_L1_B.json +0 -17
  637. package/test/sap/ui/core/demokit/sample/odata/v2/AutoExpand/data/Items_L1_C.json +0 -17
  638. package/test/sap/ui/core/demokit/sample/odata/v2/AutoExpand/data/Items_L1_top8.json +0 -93
  639. package/test/sap/ui/core/demokit/sample/odata/v2/AutoExpand/data/metadata.xml +0 -2322
  640. package/test/sap/ui/core/demokit/sample/odata/v2/AutoExpand/i18n/i18n.properties +0 -3
  641. package/test/sap/ui/core/demokit/sample/odata/v2/AutoExpand/manifest.json +0 -69
@@ -6552,7 +6552,7 @@ sap.ui.define([
6552
6552
  //*********************************************************************************************
6553
6553
  [false, true].forEach(function (bAll) {
6554
6554
  [false, true].forEach(function (bDeleteCreatedEntities) {
6555
- var sTitle = "resetChanges: no paths; bAll=" + bAll + ", bDeleteCreatedEntities="
6555
+ var sTitle = "_resetChanges: no paths; bAll=" + bAll + ", bDeleteCreatedEntities="
6556
6556
  + bDeleteCreatedEntities;
6557
6557
 
6558
6558
  QUnit.test(sTitle, function (assert) {
@@ -6602,7 +6602,7 @@ sap.ui.define([
6602
6602
 
6603
6603
  // code under test
6604
6604
  assert.strictEqual(
6605
- ODataModel.prototype.resetChanges.call(oModel, undefined, bAll, bDeleteCreatedEntities),
6605
+ ODataModel.prototype._resetChanges.call(oModel, undefined, bAll, bDeleteCreatedEntities),
6606
6606
  oPromise);
6607
6607
 
6608
6608
  oModelMock.expects("abortInternalRequest").withExactArgs("deferred0").exactly(bAll ? 1 : 0);
@@ -6623,7 +6623,7 @@ sap.ui.define([
6623
6623
  {bDeleteEntity : undefined, oQuxMetadata : {}},
6624
6624
  {bDeleteEntity : bDeleteCreatedEntities, oQuxMetadata : {created : {}}}
6625
6625
  ].forEach(function (oFixture) {
6626
- var sTitle = "resetChanges: with paths; bAll=" + bAll + ", bDeleteCreatedEntities="
6626
+ var sTitle = "_resetChanges: with paths; bAll=" + bAll + ", bDeleteCreatedEntities="
6627
6627
  + bDeleteCreatedEntities + ", oMetadata=" + JSON.stringify(oFixture.oQuxMetadata);
6628
6628
 
6629
6629
  QUnit.test(sTitle, function (assert) {
@@ -6738,7 +6738,7 @@ sap.ui.define([
6738
6738
 
6739
6739
  // code under test
6740
6740
  assert.strictEqual(
6741
- ODataModel.prototype.resetChanges.call(oModel,
6741
+ ODataModel.prototype._resetChanges.call(oModel,
6742
6742
  ["/Z", "/Z/Y/X", "/Bar/P", "/Baz", "/Bar/Q/X", "/Qux", "/Foo/S"],
6743
6743
  bAll, bDeleteCreatedEntities),
6744
6744
  oPromise);
@@ -6778,7 +6778,7 @@ sap.ui.define([
6778
6778
  });
6779
6779
 
6780
6780
  //*********************************************************************************************
6781
- QUnit.test("resetChanges: calls oBinding._resetChanges", function (assert) {
6781
+ QUnit.test("_resetChanges: calls oBinding._resetChanges", function (assert) {
6782
6782
  var oBinding1 = {_resetChanges : function () {}},
6783
6783
  oBinding2 = {_resetChanges : function () {}},
6784
6784
  oModel = {
@@ -6797,10 +6797,59 @@ sap.ui.define([
6797
6797
  this.mock(oModel).expects("checkUpdate").withExactArgs(true);
6798
6798
 
6799
6799
  // code under test
6800
- assert.strictEqual(ODataModel.prototype.resetChanges.call(oModel, aPath),
6800
+ assert.strictEqual(ODataModel.prototype._resetChanges.call(oModel, aPath),
6801
6801
  "~pMetaDataLoaded");
6802
6802
  });
6803
6803
 
6804
+
6805
+ //*********************************************************************************************
6806
+ QUnit.test("_resetChanges: with bForceUpdate=false", function (assert) {
6807
+ const oModel = {
6808
+ oMetadata : {loaded() {}},
6809
+ checkUpdate() {},
6810
+ getBindings() {}
6811
+ };
6812
+
6813
+ this.mock(oModel.oMetadata).expects("loaded").withExactArgs().returns("~pMetaDataLoaded");
6814
+ this.mock(oModel).expects("getBindings").withExactArgs().returns([]);
6815
+ this.mock(oModel).expects("checkUpdate").withExactArgs(false);
6816
+
6817
+ // code under test
6818
+ assert.strictEqual(ODataModel.prototype._resetChanges.call(oModel, /*aPath*/ undefined, /*bAll*/ undefined,
6819
+ /*bDeleteCreatedEntities*/ undefined, /*bForceUpdate*/ false), "~pMetaDataLoaded");
6820
+ });
6821
+
6822
+ //*********************************************************************************************
6823
+ QUnit.test("resetChanges delegates to _resetChanges", function (assert) {
6824
+ const oModel = {
6825
+ _resetChanges() {}
6826
+ };
6827
+
6828
+ this.mock(oModel).expects("_resetChanges")
6829
+ .withExactArgs("~aPath", "~bAll", "~bDeleteCreated")
6830
+ .returns("~pReturn");
6831
+
6832
+ // code under test
6833
+ assert.strictEqual(ODataModel.prototype.resetChanges.call(oModel, "~aPath", "~bAll", "~bDeleteCreated"),
6834
+ "~pReturn");
6835
+ });
6836
+
6837
+ //*********************************************************************************************
6838
+ QUnit.test("resetChangesWithoutUpdate delegates to _resetChanges", function (assert) {
6839
+ const oModel = {
6840
+ _resetChanges() {}
6841
+ };
6842
+
6843
+ this.mock(oModel).expects("_resetChanges")
6844
+ .withExactArgs("~aPath", "~bAll", "~bDeleteCreated", false)
6845
+ .returns("~pReturn");
6846
+
6847
+ // code under test
6848
+ assert.strictEqual(
6849
+ ODataModel.prototype.resetChangesWithoutUpdate.call(oModel, "~aPath", "~bAll", "~bDeleteCreated"),
6850
+ "~pReturn");
6851
+ });
6852
+
6804
6853
  //*********************************************************************************************
6805
6854
  [true, false].forEach(function (bDeleteEntity) {
6806
6855
  [
@@ -1678,6 +1678,20 @@
1678
1678
  </Annotation>
1679
1679
  <Annotation Term="SAP__common.ValueListWithFixedValues" />
1680
1680
  </Annotations>
1681
+ <Annotations Target="GWSAMPLE_BASIC.SalesOrder/Note" xmlns="http://docs.oasis-open.org/odata/ns/edm">
1682
+ <!-- Note: parameters are URI encoded, e.g.
1683
+ urn:sap-com:documentation:key?=type=DTEL&id=%2fiwbep%2faccount&origin=G1Y_000-->
1684
+ <Annotation Term="SAP__common.DocumentationRef"
1685
+ String="urn:sap-com:documentation:key?=type=DTEL&amp;id=NOTE&amp;origin=MyOrigin"/>
1686
+ </Annotations>
1687
+ <Annotations Target="GWSAMPLE_BASIC.SalesOrder/GrossAmount" xmlns="http://docs.oasis-open.org/odata/ns/edm">
1688
+ <Annotation Term="SAP__common.DocumentationRef"
1689
+ String="urn:sap-com:documentation:key?=type=DTEL&amp;id=GROSSAMOUNT"/>
1690
+ </Annotations>
1691
+ <Annotations Target="GWSAMPLE_BASIC.SalesOrder/CurrencyCode" xmlns="http://docs.oasis-open.org/odata/ns/edm">
1692
+ <Annotation Term="SAP__common.DocumentationRef"
1693
+ String="urn:sap-com:documentation:key?=type=DTEL&amp;id=%2fFOO%2fCURRENCY"/>
1694
+ </Annotations>
1681
1695
  <atom:link rel="self"
1682
1696
  href="/sap/opu/odata/sap/ZUI5_GWSAMPLE_BASIC/$metadata"
1683
1697
  xmlns:atom="http://www.w3.org/2005/Atom" />
@@ -4964,6 +4964,60 @@ sap.ui.define([
4964
4964
  }, "~oError~");
4965
4965
  });
4966
4966
 
4967
+ //*********************************************************************************************
4968
+ [-2, +2, -3, +3, 0].forEach((iOffset) => {
4969
+ QUnit.test(`requestSibling: unsupported offset ${iOffset}`, function (assert) {
4970
+ const oContext = Context.create({/*oModel*/}, {/*oBinding*/}, "/EMPLOYEES('42')", 42);
4971
+
4972
+ assert.throws(function () {
4973
+ // code under test
4974
+ oContext.requestSibling(iOffset);
4975
+ }, new Error("Unsupported offset: " + iOffset));
4976
+ });
4977
+ });
4978
+
4979
+ //*********************************************************************************************
4980
+ QUnit.test("requestSibling: deleted/transient", function (assert) {
4981
+ const oContext = Context.create({/*oModel*/}, {/*oBinding*/}, "/EMPLOYEES('42')", 42);
4982
+ // also called by SinonJS, would call #isDeleted etc. :-(
4983
+ oContext.toString = function () { return "~toString~"; };
4984
+ const oContextMock = this.mock(oContext);
4985
+ oContextMock.expects("isDeleted").withExactArgs().returns(true);
4986
+ oContextMock.expects("isTransient").never();
4987
+
4988
+ assert.throws(function () {
4989
+ // code under test
4990
+ oContext.requestSibling();
4991
+ }, new Error("Unsupported context: ~toString~"));
4992
+
4993
+ oContextMock.expects("isDeleted").withExactArgs().returns(false);
4994
+ oContextMock.expects("isTransient").withExactArgs().returns(true);
4995
+
4996
+ assert.throws(function () {
4997
+ // code under test
4998
+ oContext.requestSibling();
4999
+ }, new Error("Unsupported context: ~toString~"));
5000
+ });
5001
+
5002
+ //*********************************************************************************************
5003
+ [{in : undefined, out : +1}, {in : +1, out : +1}, {in : -1, out : -1}].forEach((oFixture, i) => {
5004
+ QUnit.test("requestSibling: #" + i, function (assert) {
5005
+ const oBinding = {
5006
+ requestSibling : mustBeMocked
5007
+ };
5008
+ const oContext = Context.create({/*oModel*/}, oBinding, "/EMPLOYEES('42')", 42);
5009
+ // also called by SinonJS, would call #isDeleted etc. :-(
5010
+ oContext.toString = function () { return "n/a"; };
5011
+ this.mock(oContext).expects("isDeleted").withExactArgs().returns(false);
5012
+ this.mock(oContext).expects("isTransient").withExactArgs().returns(false);
5013
+ this.mock(oBinding).expects("requestSibling")
5014
+ .withExactArgs(sinon.match.same(oContext), oFixture.out).returns("~result~");
5015
+
5016
+ // code under test
5017
+ assert.strictEqual(oContext.requestSibling(oFixture.in), "~result~");
5018
+ });
5019
+ });
5020
+
4967
5021
  //*********************************************************************************************
4968
5022
  [0, 1].forEach(function (iFailureIndex) {
4969
5023
  QUnit.test("updateAfterCreate, fail=" + iFailureIndex, function () {
@@ -5767,7 +5767,6 @@ sap.ui.define([
5767
5767
  // Note: autoExpandSelect at model would be required for hierarchyQualifier, but that leads
5768
5768
  // too far :-(
5769
5769
  oBinding.mParameters.$$aggregation = {hierarchyQualifier : "X"};
5770
- oBinding.iMaxLength = 42;
5771
5770
  this.mock(oBinding).expects("fetchResourcePath").withExactArgs()
5772
5771
  .returns("~oCreatePathPromise~");
5773
5772
  this.mock(oBinding).expects("getUpdateGroupId").withExactArgs()
@@ -5785,7 +5784,7 @@ sap.ui.define([
5785
5784
  getCanonicalPath : mustBeMocked,
5786
5785
  isExpanded : mustBeMocked
5787
5786
  };
5788
- oBinding.aContexts.push("0", "1", oParentContext, {iIndex : 3}, undefined, {iIndex : 5});
5787
+ oBinding.aContexts[2] = oParentContext;
5789
5788
  const oInitialData = {"@$ui5.node.parent" : oParentContext};
5790
5789
  const oEntityData = {};
5791
5790
  this.mock(_Helper).expects("publicClone")
@@ -5813,8 +5812,8 @@ sap.ui.define([
5813
5812
  this.mock(oContext).expects("setSelected").withExactArgs("~selected~");
5814
5813
  this.mock(oContext).expects("fetchValue").withExactArgs()
5815
5814
  .returns(SyncPromise.resolve()); //TODO
5816
- this.mock(oBinding).expects("_fireChange")
5817
- .withExactArgs({reason : ChangeReason.Add});
5815
+ this.mock(oBinding).expects("insertContext")
5816
+ .withExactArgs(sinon.match.same(oContext), 3, false);
5818
5817
 
5819
5818
  // code under test
5820
5819
  assert.strictEqual(oBinding.create(oInitialData, true), oContext);
@@ -5822,9 +5821,6 @@ sap.ui.define([
5822
5821
  assert.strictEqual(oBinding.iActiveContexts, 0, "unchanged");
5823
5822
  assert.strictEqual(oBinding.iCreatedContexts, 0, "unchanged");
5824
5823
  assert.strictEqual(oBinding.bFirstCreateAtEnd, false);
5825
- assert.strictEqual(oBinding.iMaxLength, 43);
5826
- assert.deepEqual(oBinding.aContexts,
5827
- ["0", "1", oParentContext, oContext, {iIndex : 4}, undefined, {iIndex : 6}]);
5828
5824
  });
5829
5825
  });
5830
5826
 
@@ -5835,7 +5831,6 @@ sap.ui.define([
5835
5831
  // Note: autoExpandSelect at model would be required for hierarchyQualifier, but that leads
5836
5832
  // too far :-(
5837
5833
  oBinding.mParameters.$$aggregation = {expandTo : 2, hierarchyQualifier : "X"};
5838
- oBinding.iMaxLength = 42;
5839
5834
  this.mock(oBinding).expects("fetchResourcePath").withExactArgs()
5840
5835
  .returns("~oCreatePathPromise~");
5841
5836
  this.mock(oBinding).expects("getUpdateGroupId").withExactArgs()
@@ -5849,7 +5844,6 @@ sap.ui.define([
5849
5844
  this.mock(oBinding).expects("isTransient").twice().withExactArgs().returns(false);
5850
5845
  this.mock(oBinding).expects("checkDeepCreate").never();
5851
5846
  this.mock(oBinding).expects("isRelative").never();
5852
- oBinding.aContexts.push({iIndex : 0}, undefined, {iIndex : 2});
5853
5847
  this.mock(_Helper).expects("publicClone")
5854
5848
  .withExactArgs(sinon.match.same(oInitialData), true).returns("~oEntityData~");
5855
5849
  this.mock(oBinding).expects("lockGroup")
@@ -5870,8 +5864,8 @@ sap.ui.define([
5870
5864
  this.mock(oContext).expects("setSelected").withExactArgs("~selected~");
5871
5865
  this.mock(oContext).expects("fetchValue").withExactArgs()
5872
5866
  .returns(SyncPromise.resolve()); //TODO
5873
- this.mock(oBinding).expects("_fireChange")
5874
- .withExactArgs({reason : ChangeReason.Add});
5867
+ this.mock(oBinding).expects("insertContext")
5868
+ .withExactArgs(sinon.match.same(oContext), 0, false);
5875
5869
 
5876
5870
  // code under test
5877
5871
  assert.strictEqual(oBinding.create(oInitialData, true), oContext);
@@ -5879,9 +5873,94 @@ sap.ui.define([
5879
5873
  assert.strictEqual(oBinding.iActiveContexts, 0, "unchanged");
5880
5874
  assert.strictEqual(oBinding.iCreatedContexts, 0, "unchanged");
5881
5875
  assert.strictEqual(oBinding.bFirstCreateAtEnd, false);
5882
- assert.strictEqual(oBinding.iMaxLength, 43);
5883
- assert.deepEqual(oBinding.aContexts,
5884
- [oContext, {iIndex : 1}, undefined, {iIndex : 3}]);
5876
+ });
5877
+ });
5878
+
5879
+ //*********************************************************************************************
5880
+ [undefined, 42].forEach(function (iRank) {
5881
+ QUnit.test("create: recursive hierarchy, createInPlace, rank=" + iRank, function (assert) {
5882
+ const oBinding = this.bindList("/EMPLOYEES");
5883
+ // Note: autoExpandSelect at model would be required for hierarchyQualifier, but that leads
5884
+ // too far :-(
5885
+ oBinding.mParameters.$$aggregation = {createInPlace : true, hierarchyQualifier : "X"};
5886
+ this.mock(oBinding).expects("fetchResourcePath").withExactArgs()
5887
+ .returns("~oCreatePathPromise~");
5888
+ this.mock(oBinding).expects("getUpdateGroupId").withExactArgs()
5889
+ .returns("~sGroupId~");
5890
+ this.mock(oBinding).expects("getResolvedPath").withExactArgs()
5891
+ .returns("~sResolvedPath~");
5892
+ const oHelperMock = this.mock(_Helper);
5893
+ oHelperMock.expects("uid").withExactArgs().returns("id-1-23");
5894
+ this.mock(oBinding).expects("checkSuspended").withExactArgs();
5895
+ oHelperMock.expects("isDataAggregation")
5896
+ .withExactArgs(sinon.match.same(oBinding.mParameters)).returns(false);
5897
+ this.mock(oBinding).expects("isTransient").twice().withExactArgs().returns(false);
5898
+ this.mock(oBinding).expects("checkDeepCreate").never();
5899
+ this.mock(oBinding).expects("isRelative").never();
5900
+ oHelperMock.expects("publicClone")
5901
+ .withExactArgs(undefined, true).returns("~oEntityData~");
5902
+ this.mock(oBinding).expects("lockGroup")
5903
+ .withExactArgs("~sGroupId~", true, true, sinon.match.func).returns("~oGroupLock~");
5904
+ const oContext = {
5905
+ destroy : mustBeMocked,
5906
+ fetchValue : mustBeMocked,
5907
+ setSelected : mustBeMocked,
5908
+ updateAfterCreate : mustBeMocked
5909
+ };
5910
+ const oCreatePromise = new SyncPromise((resolve) => {
5911
+ setTimeout(() => {
5912
+ oHelperMock.expects("getPrivateAnnotation")
5913
+ .withExactArgs("~oCreatedEntity~", "predicate")
5914
+ .returns("~sPredicate~");
5915
+ this.mock(oBinding).expects("adjustPredicate")
5916
+ .withExactArgs("($uid=id-1-23)", "~sPredicate~", sinon.match.same(oContext));
5917
+ this.mock(oBinding).expects("fireEvent")
5918
+ .withExactArgs("createCompleted",
5919
+ {context : sinon.match.same(oContext), success : true});
5920
+ oHelperMock.expects("getPrivateAnnotation")
5921
+ .withExactArgs("~oCreatedEntity~", "rank")
5922
+ .returns(iRank);
5923
+ this.mock(oContext).expects("destroy").exactly(iRank ? 0 : 1).withExactArgs();
5924
+ this.mock(oBinding).expects("insertContext").exactly(iRank ? 1 : 0)
5925
+ .withExactArgs(sinon.match.same(oContext), 42);
5926
+ oHelperMock.expects("getPrivateAnnotation").exactly(iRank ? 1 : 0)
5927
+ .withExactArgs("~oCreatedEntity~", "deepCreate").returns(false);
5928
+ oHelperMock.expects("deletePrivateAnnotation").exactly(iRank ? 1 : 0)
5929
+ .withExactArgs("~oCreatedEntity~", "deepCreate");
5930
+ this.mock(oBinding).expects("getGroupId").exactly(iRank ? 1 : 0)
5931
+ .withExactArgs().returns("~sGroupId~");
5932
+ this.mock(this.oModel).expects("isApiGroup").exactly(iRank ? 1 : 0)
5933
+ .withExactArgs("~sGroupId~").returns(false);
5934
+ this.mock(oContext).expects("updateAfterCreate").exactly(iRank ? 1 : 0)
5935
+ .withExactArgs(true, "~sGroupId~");
5936
+
5937
+ resolve("~oCreatedEntity~");
5938
+ }, 0);
5939
+ });
5940
+ this.mock(oBinding).expects("createInCache")
5941
+ .withExactArgs("~oGroupLock~", "~oCreatePathPromise~", "~sResolvedPath~",
5942
+ sinon.match(rTransientPredicate), "~oEntityData~",
5943
+ false, sinon.match.func, sinon.match.func)
5944
+ .returns(oCreatePromise);
5945
+ this.mock(Context).expects("create")
5946
+ .withExactArgs(sinon.match.same(this.oModel), sinon.match.same(oBinding),
5947
+ "~sResolvedPath~($uid=id-1-23)", /*iIndex*/undefined,
5948
+ sinon.match.instanceOf(SyncPromise), undefined)
5949
+ .returns(oContext);
5950
+ this.mock(oBinding.oHeaderContext).expects("isSelected")
5951
+ .withExactArgs().returns("~selected~");
5952
+ this.mock(oContext).expects("setSelected").withExactArgs("~selected~");
5953
+ this.mock(oContext).expects("fetchValue").never();
5954
+ this.mock(oBinding).expects("_fireChange").never();
5955
+
5956
+ // code under test
5957
+ assert.strictEqual(oBinding.create(/*oInitialData*/ undefined, true), oContext);
5958
+
5959
+ assert.strictEqual(oBinding.iActiveContexts, 0, "unchanged");
5960
+ assert.strictEqual(oBinding.iCreatedContexts, 0, "unchanged");
5961
+ assert.strictEqual(oBinding.bFirstCreateAtEnd, false);
5962
+
5963
+ return oCreatePromise;
5885
5964
  });
5886
5965
  });
5887
5966
 
@@ -11040,7 +11119,7 @@ sap.ui.define([
11040
11119
  [false, true].forEach((bIsExpanded) => {
11041
11120
  [1, 4].forEach((iCount) => {
11042
11121
  [false, true].forEach((bMakeRoot) => {
11043
- [23, 42, 101, 999].forEach((iNewIndex) => {
11122
+ [23, 42].forEach((iNewIndex) => {
11044
11123
  const sTitle = `move: expanded=${bIsExpanded}, child nodes added=${iCount},
11045
11124
  make root=${bMakeRoot}, new index=${iNewIndex}`;
11046
11125
 
@@ -11066,6 +11145,7 @@ sap.ui.define([
11066
11145
  // Note: autoExpandSelect at model would be required for hierarchyQualifier, but that leads
11067
11146
  // too far :-(
11068
11147
  oBinding.mParameters.$$aggregation = {hierarchyQualifier : "X"};
11148
+ this.mock(oBinding).expects("checkSuspended").withExactArgs();
11069
11149
  this.mock(oBinding).expects("getUpdateGroupId").withExactArgs().returns("~group~");
11070
11150
  this.mock(oBinding).expects("lockGroup").withExactArgs("~group~", true, true)
11071
11151
  .returns("~oGroupLock~");
@@ -11094,6 +11174,10 @@ sap.ui.define([
11094
11174
  this.mock(oChildContext).expects("getModelIndex").withExactArgs()
11095
11175
  .returns(iOldIndex);
11096
11176
  oBinding.aContexts[iOldIndex] = oChildContext;
11177
+ this.mock(_Helper).expects("insert")
11178
+ .withExactArgs(sinon.match.same(oBinding.aContexts), iNewIndex,
11179
+ sinon.match.same(oChildContext))
11180
+ .callThrough(); // needed for "setIndices"
11097
11181
  this.mock(oBinding).expects("expand").exactly(bIsExpanded ? 1 : 0)
11098
11182
  .withExactArgs(sinon.match.same(oChildContext))
11099
11183
  .returns(SyncPromise.resolve());
@@ -11159,6 +11243,7 @@ sap.ui.define([
11159
11243
  oBinding.mParameters.$$aggregation = {hierarchyQualifier : "X"};
11160
11244
  this.mock(oBinding).expects("collapse").never();
11161
11245
  this.mock(oBinding).expects("expand").never();
11246
+ this.mock(oBinding).expects("checkSuspended").withExactArgs();
11162
11247
  this.mock(oBinding).expects("getUpdateGroupId").withExactArgs().returns("~group~");
11163
11248
  this.mock(oBinding).expects("lockGroup").withExactArgs("~group~", true, true)
11164
11249
  .returns("~oGroupLock~");
@@ -11207,6 +11292,7 @@ sap.ui.define([
11207
11292
  // too far :-(
11208
11293
  oBinding.mParameters.$$aggregation = {hierarchyQualifier : "X"};
11209
11294
  this.mock(oBinding).expects("collapse").never();
11295
+ this.mock(oBinding).expects("checkSuspended").withExactArgs();
11210
11296
  this.mock(oBinding).expects("getUpdateGroupId").withExactArgs().returns("~group~");
11211
11297
  this.mock(oBinding).expects("lockGroup").withExactArgs("~group~", true, true)
11212
11298
  .returns("~oGroupLock~");
@@ -11239,6 +11325,7 @@ sap.ui.define([
11239
11325
  // Note: autoExpandSelect at model would be required for hierarchyQualifier, but that leads
11240
11326
  // too far :-(
11241
11327
  oBinding.mParameters.$$aggregation = {hierarchyQualifier : "X"};
11328
+ this.mock(oBinding).expects("checkSuspended").withExactArgs();
11242
11329
  this.mock(oBinding).expects("getUpdateGroupId").withExactArgs().returns("~group~");
11243
11330
  this.mock(oBinding).expects("lockGroup").withExactArgs("~group~", true, true)
11244
11331
  .returns("~oGroupLock~");
@@ -11255,6 +11342,9 @@ sap.ui.define([
11255
11342
  this.mock(oBinding).expects("collapse")
11256
11343
  .withExactArgs(sinon.match.same(oChildContext), true, "~iCollapseCount~");
11257
11344
  this.mock(oChildContext).expects("getModelIndex").withExactArgs().returns(43);
11345
+ this.mock(_Helper).expects("insert")
11346
+ .withExactArgs(sinon.match.same(oBinding.aContexts), 43,
11347
+ sinon.match.same(oChildContext));
11258
11348
  this.mock(oBinding).expects("expand")
11259
11349
  .withExactArgs(sinon.match.same(oChildContext))
11260
11350
  .returns(SyncPromise.reject("~error~"));
@@ -11842,6 +11932,95 @@ sap.ui.define([
11842
11932
  assert.strictEqual(ODataListBinding.isBelowAggregation(oContext), true);
11843
11933
  });
11844
11934
 
11935
+ //*********************************************************************************************
11936
+ QUnit.test("requestSibling: Missing recursive hierarchy", function (assert) {
11937
+ const oBinding = this.bindList("/EMPLOYEES");
11938
+ this.mock(oBinding).expects("checkSuspended").never();
11939
+
11940
+ assert.throws(function () {
11941
+ // code under test
11942
+ oBinding.requestSibling();
11943
+ }, new Error("Missing recursive hierarchy"));
11944
+
11945
+ oBinding.mParameters = {$$aggregation : {}};
11946
+
11947
+ assert.throws(function () {
11948
+ // code under test
11949
+ oBinding.requestSibling();
11950
+ }, new Error("Missing recursive hierarchy"));
11951
+ });
11952
+
11953
+ //*********************************************************************************************
11954
+ QUnit.test("requestSibling: Unsupported context", function (assert) {
11955
+ const oBinding = this.bindList("/EMPLOYEES");
11956
+ // Note: autoExpandSelect at model would be required for hierarchyQualifier, but that leads
11957
+ // too far :-(
11958
+ oBinding.mParameters.$$aggregation = {hierarchyQualifier : "X"};
11959
+ const oNode = Context.create({/*oModel*/}, oBinding, "/EMPLOYEES('42')", 42);
11960
+ oBinding.aContexts[41] = oNode; // wrong index
11961
+ this.mock(oBinding).expects("checkSuspended").never();
11962
+
11963
+ assert.throws(function () {
11964
+ // code under test
11965
+ oBinding.requestSibling(oNode);
11966
+ }, new Error("Unsupported context: " + oNode));
11967
+ });
11968
+
11969
+ //*********************************************************************************************
11970
+ QUnit.test("requestSibling: null", async function (assert) {
11971
+ const oBinding = this.bindList("/EMPLOYEES");
11972
+ // Note: autoExpandSelect at model would be required for hierarchyQualifier, but that leads
11973
+ // too far :-(
11974
+ oBinding.mParameters.$$aggregation = {hierarchyQualifier : "X"};
11975
+ const oNode = {iIndex : "~iIndex~"};
11976
+ oBinding.aContexts["~iIndex~"] = oNode;
11977
+ const oCheckSuspendedExpectation
11978
+ = this.mock(oBinding).expects("checkSuspended").withExactArgs();
11979
+ const oCache = {
11980
+ getSiblingIndex : mustBeMocked
11981
+ };
11982
+ oBinding.oCache = oCache;
11983
+ const oGetSiblingIndexExpectation = this.mock(oCache).expects("getSiblingIndex")
11984
+ .withExactArgs("~iIndex~", "~iOffset~").returns(-1);
11985
+ this.mock(oBinding).expects("requestContexts").never();
11986
+
11987
+ // code under test
11988
+ const oPromise = oBinding.requestSibling(oNode, "~iOffset~");
11989
+
11990
+ sinon.assert.callOrder(oCheckSuspendedExpectation, oGetSiblingIndexExpectation);
11991
+ assert.ok(oPromise instanceof Promise);
11992
+ assert.strictEqual(await oPromise, null);
11993
+ });
11994
+
11995
+ //*********************************************************************************************
11996
+ [0, 1, 42].forEach((iIndex) => {
11997
+ QUnit.test(`requestSibling: non-null, index = ${iIndex}`, async function (assert) {
11998
+ const oBinding = this.bindList("/EMPLOYEES");
11999
+ // Note: autoExpandSelect at model would be required for hierarchyQualifier, but that leads
12000
+ // too far :-(
12001
+ oBinding.mParameters.$$aggregation = {hierarchyQualifier : "X"};
12002
+ const oNode = {iIndex : "~iIndex~"};
12003
+ oBinding.aContexts["~iIndex~"] = oNode;
12004
+ const oCheckSuspendedExpectation
12005
+ = this.mock(oBinding).expects("checkSuspended").withExactArgs();
12006
+ const oCache = {
12007
+ getSiblingIndex : mustBeMocked
12008
+ };
12009
+ oBinding.oCache = oCache;
12010
+ const oGetSiblingIndexExpectation = this.mock(oCache).expects("getSiblingIndex")
12011
+ .withExactArgs("~iIndex~", "~iOffset~").returns(iIndex);
12012
+ this.mock(oBinding).expects("requestContexts").withExactArgs(iIndex, 1)
12013
+ .resolves(["~oSiblingContext~"]);
12014
+
12015
+ // code under test
12016
+ const oPromise = oBinding.requestSibling(oNode, "~iOffset~");
12017
+
12018
+ sinon.assert.callOrder(oCheckSuspendedExpectation, oGetSiblingIndexExpectation);
12019
+ assert.ok(oPromise instanceof Promise);
12020
+ assert.strictEqual(await oPromise, "~oSiblingContext~");
12021
+ });
12022
+ });
12023
+
11845
12024
  //*********************************************************************************************
11846
12025
  QUnit.test("setResetViaSideEffects ", function (assert) {
11847
12026
  const oBinding = this.bindList("/SalesOrderList");
@@ -11860,6 +12039,89 @@ sap.ui.define([
11860
12039
  oBinding.setResetViaSideEffects(true);
11861
12040
  assert.strictEqual(oBinding.bResetViaSideEffects, false, "true must not win over false");
11862
12041
  });
12042
+
12043
+ //*********************************************************************************************
12044
+ QUnit.test("insertContext: use index", function (assert) {
12045
+ const oBinding = this.bindList("/EMPLOYEES");
12046
+ oBinding.aContexts = [
12047
+ {iIndex : 0, sName : "foo"},
12048
+ {iIndex : 1, sName : "bar"},
12049
+ undefined,
12050
+ {iIndex : 2, sName : "baz"}
12051
+ ];
12052
+ oBinding.iMaxLength = 42;
12053
+
12054
+ this.mock(oBinding).expects("_fireChange").twice()
12055
+ .withExactArgs({reason : ChangeReason.Add});
12056
+
12057
+ // code under test
12058
+ oBinding.insertContext({sName : "created0"}, 1);
12059
+
12060
+ assert.strictEqual(oBinding.iMaxLength, 43);
12061
+ assert.deepEqual(oBinding.aContexts, [
12062
+ {iIndex : 0, sName : "foo"},
12063
+ {sName : "created0"},
12064
+ {iIndex : 2, sName : "bar"},
12065
+ undefined,
12066
+ {iIndex : 3, sName : "baz"}
12067
+ ]);
12068
+
12069
+ // code under test
12070
+ oBinding.insertContext({sName : "created1"}, 6);
12071
+
12072
+ assert.strictEqual(oBinding.iMaxLength, 44);
12073
+ assert.deepEqual(oBinding.aContexts, [
12074
+ {iIndex : 0, sName : "foo"},
12075
+ {sName : "created0"},
12076
+ {iIndex : 2, sName : "bar"},
12077
+ undefined,
12078
+ {iIndex : 3, sName : "baz"},
12079
+ undefined,
12080
+ {sName : "created1"}
12081
+ ]);
12082
+ });
12083
+
12084
+ //*********************************************************************************************
12085
+ [false, true].forEach(function (bAtEnd, i) {
12086
+ QUnit.test("insertContext: add to creation area #" + i, function (assert) {
12087
+ const oBinding = this.bindList("/EMPLOYEES");
12088
+ oBinding.aContexts = [
12089
+ {iIndex : -1, sName : "created0"},
12090
+ {iIndex : 0, sName : "foo"},
12091
+ {iIndex : 1, sName : "bar"}
12092
+ ];
12093
+ oBinding.bFirstCreateAtEnd = bAtEnd;
12094
+ oBinding.iMaxLength = 23;
12095
+
12096
+ this.mock(oBinding).expects("_fireChange").twice()
12097
+ .withExactArgs({reason : ChangeReason.Add});
12098
+
12099
+ // code under test: insert at beginning of aContexts
12100
+ oBinding.insertContext({iIndex : -2, sName : "created1"}, /*iIndex*/undefined, bAtEnd);
12101
+
12102
+ assert.strictEqual(oBinding.iMaxLength, 23, "unchanged");
12103
+ assert.deepEqual(oBinding.aContexts, [
12104
+ {iIndex : -2, sName : "created1"},
12105
+ {iIndex : -1, sName : "created0"},
12106
+ {iIndex : 0, sName : "foo"},
12107
+ {iIndex : 1, sName : "bar"}
12108
+ ]);
12109
+
12110
+ oBinding.iCreatedContexts = 3; // creation area increases to a third item
12111
+
12112
+ // code under test: insert at end of creation area; adjusting indices
12113
+ oBinding.insertContext({iIndex : -3, sName : "created2"}, /*iIndex*/undefined, !bAtEnd);
12114
+
12115
+ assert.strictEqual(oBinding.iMaxLength, 23, "unchanged");
12116
+ assert.deepEqual(oBinding.aContexts, [
12117
+ {iIndex : -3, sName : "created1"},
12118
+ {iIndex : -2, sName : "created0"},
12119
+ {iIndex : -1, sName : "created2"},
12120
+ {iIndex : 0, sName : "foo"},
12121
+ {iIndex : 1, sName : "bar"}
12122
+ ]);
12123
+ });
12124
+ });
11863
12125
  });
11864
12126
 
11865
12127
  //TODO integration: 2 entity sets with same $expand, but different $select