@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
@@ -51,149 +51,68 @@ sap.ui.define([
51
51
  var sClassName = "sap.ui.model.odata.v4.ODataParentBinding";
52
52
 
53
53
  /**
54
- * Attach event handler <code>fnFunction</code> to the 'patchCompleted' event of this binding.
55
- *
56
- * @param {function} fnFunction The function to call when the event occurs
57
- * @param {object} [oListener] Object on which to call the given function
58
- * @returns {this} <code>this</code> to allow method chaining
59
- *
60
- * @public
61
- * @since 1.59.0
62
- */
63
- ODataParentBinding.prototype.attachPatchCompleted = function (fnFunction, oListener) {
64
- return this.attachEvent("patchCompleted", fnFunction, oListener);
65
- };
66
-
67
- /**
68
- * Detach event handler <code>fnFunction</code> from the 'patchCompleted' event of this binding.
69
- *
70
- * @param {function} fnFunction The function to call when the event occurs
71
- * @param {object} [oListener] Object on which to call the given function
72
- * @returns {this} <code>this</code> to allow method chaining
73
- *
74
- * @public
75
- * @since 1.59.0
76
- */
77
- ODataParentBinding.prototype.detachPatchCompleted = function (fnFunction, oListener) {
78
- return this.detachEvent("patchCompleted", fnFunction, oListener);
79
- };
80
-
81
- /**
82
- * Handles exceptional cases of setting the property with the given path to the given value.
83
- *
84
- * @param {string} sPath
85
- * A path (absolute or relative to this binding)
86
- * @param {any} vValue
87
- * The new value which must be primitive
88
- * @param {sap.ui.model.odata.v4.lib._GroupLock} [oGroupLock]
89
- * A lock for the group ID to be used for the PATCH request; without a lock, no PATCH is sent
90
- * @returns {sap.ui.base.SyncPromise|undefined}
91
- * <code>undefined</code> for the general case which is handled generically by the caller
92
- * {@link sap.ui.model.odata.v4.Context#doSetProperty} or a <code>SyncPromise</code> for the
93
- * exceptional case
94
- *
95
- * @abstract
96
- * @function
97
- * @name sap.ui.model.odata.v4.ODataParentBinding#doSetProperty
98
- * @private
99
- */
100
-
101
- /**
102
- * Binding specific code for suspend.
103
- *
104
- * @private
105
- */
106
- ODataParentBinding.prototype.doSuspend = function () {
107
- // nothing to do here
108
- };
109
-
110
- /**
111
- * Finds the context that matches the given canonical path.
54
+ * Find the context in the uppermost binding in the hierarchy that can be reached with an empty
55
+ * path.
112
56
  *
113
- * @param {string} sCanonicalPath
114
- * The canonical path of an entity (as a context path with the leading "/")
57
+ * @param {sap.ui.model.odata.v4.Context} oContext
58
+ * The context of the caller
115
59
  * @returns {sap.ui.model.odata.v4.Context}
116
- * A matching context or <code>undefined</code> if there is none
117
- *
118
- * @function
119
- * @name sap.ui.model.odata.v4.ODataParentBinding#findContextForCanonicalPath
120
- * @private
121
- */
122
-
123
- /**
124
- * Fire event 'patchCompleted' to attached listeners, if the last PATCH request is completed.
60
+ * The context that can be reached through empty paths
125
61
  *
126
- * @param {boolean} bSuccess Whether the current PATCH request has been processed successfully
127
62
  * @private
128
63
  */
129
- ODataParentBinding.prototype.firePatchCompleted = function (bSuccess) {
130
- if (this.iPatchCounter === 0) {
131
- throw new Error("Completed more PATCH requests than sent");
132
- }
133
- this.iPatchCounter -= 1;
134
- this.bPatchSuccess &&= bSuccess;
135
- if (this.iPatchCounter === 0) {
136
- this.fireEvent("patchCompleted", {success : this.bPatchSuccess});
137
- this.bPatchSuccess = true;
64
+ ODataParentBinding.prototype._findEmptyPathParentContext = function (oContext) {
65
+ if (this.sPath === "" && this.oContext.getBinding) {
66
+ return this.oContext.getBinding()._findEmptyPathParentContext(this.oContext);
138
67
  }
68
+ return oContext;
139
69
  };
140
70
 
141
71
  /**
142
- * Attach event handler <code>fnFunction</code> to the 'patchSent' event of this binding.
72
+ * Resumes this binding. The binding can again fire change events and initiate data service
73
+ * requests.
143
74
  *
144
- * @param {function} fnFunction The function to call when the event occurs
145
- * @param {object} [oListener] Object on which to call the given function
146
- * @returns {this} <code>this</code> to allow method chaining
75
+ * @param {boolean} bAsPrerenderingTask
76
+ * Whether resume is done as a prerendering task
77
+ * @throws {Error}
78
+ * If this binding is relative to an {@link sap.ui.model.odata.v4.Context} or if it is an
79
+ * operation binding or if it is not suspended
147
80
  *
148
- * @public
149
- * @since 1.59.0
81
+ * @private
82
+ * @see #suspend
150
83
  */
151
- ODataParentBinding.prototype.attachPatchSent = function (fnFunction, oListener) {
152
- return this.attachEvent("patchSent", fnFunction, oListener);
153
- };
84
+ ODataParentBinding.prototype._resume = function (bAsPrerenderingTask) {
85
+ var that = this;
154
86
 
155
- /**
156
- * Detach event handler <code>fnFunction</code> from the 'patchSent' event of this binding.
157
- *
158
- * @param {function} fnFunction The function to call when the event occurs
159
- * @param {object} [oListener] Object on which to call the given function
160
- * @returns {this} <code>this</code> to allow method chaining
161
- *
162
- * @public
163
- * @since 1.59.0
164
- */
165
- ODataParentBinding.prototype.detachPatchSent = function (fnFunction, oListener) {
166
- return this.detachEvent("patchSent", fnFunction, oListener);
167
- };
87
+ function doResume() {
88
+ that.bSuspended = false;
89
+ if (that.oResumePromise) {
90
+ that.resumeInternal(true);
91
+ that.oResumePromise.$resolve();
92
+ that.oResumePromise = undefined;
93
+ }
94
+ }
168
95
 
169
- /**
170
- * Fire event 'patchSent' to attached listeners, if the first PATCH request is sent.
171
- *
172
- * @private
173
- */
174
- ODataParentBinding.prototype.firePatchSent = function () {
175
- this.iPatchCounter += 1;
176
- if (this.iPatchCounter === 1) {
177
- this.fireEvent("patchSent");
96
+ if (this.oOperation) {
97
+ throw new Error("Cannot resume an operation binding: " + this);
98
+ }
99
+ if (!this.isRoot()) {
100
+ throw new Error("Cannot resume a relative binding: " + this);
101
+ }
102
+ if (!this.bSuspended) {
103
+ throw new Error("Cannot resume a not suspended binding: " + this);
178
104
  }
179
- };
180
105
 
181
- /**
182
- * Find the context in the uppermost binding in the hierarchy that can be reached with an empty
183
- * path.
184
- *
185
- * @param {sap.ui.model.odata.v4.Context} oContext
186
- * The context of the caller
187
- * @returns {sap.ui.model.odata.v4.Context}
188
- * The context that can be reached through empty paths
189
- *
190
- * @private
191
- */
192
- ODataParentBinding.prototype._findEmptyPathParentContext = function (oContext) {
193
- if (this.sPath === "" && this.oContext.getBinding) {
194
- return this.oContext.getBinding()._findEmptyPathParentContext(this.oContext);
106
+ if (bAsPrerenderingTask) {
107
+ // wait one additional prerendering because resume itself starts in a prerendering task
108
+ this.createReadGroupLock(this.getGroupId(), true, 1);
109
+ // dependent bindings are only removed in a *new task* in ManagedObject#updateBindings
110
+ // => must only resume in prerendering task
111
+ this.oModel.addPrerenderingTask(doResume);
112
+ } else {
113
+ this.createReadGroupLock(this.getGroupId(), true);
114
+ doResume();
195
115
  }
196
- return oContext;
197
116
  };
198
117
 
199
118
  /**
@@ -325,6 +244,34 @@ sap.ui.define([
325
244
  return false;
326
245
  };
327
246
 
247
+ /**
248
+ * Attach event handler <code>fnFunction</code> to the 'patchCompleted' event of this binding.
249
+ *
250
+ * @param {function} fnFunction The function to call when the event occurs
251
+ * @param {object} [oListener] Object on which to call the given function
252
+ * @returns {this} <code>this</code> to allow method chaining
253
+ *
254
+ * @public
255
+ * @since 1.59.0
256
+ */
257
+ ODataParentBinding.prototype.attachPatchCompleted = function (fnFunction, oListener) {
258
+ return this.attachEvent("patchCompleted", fnFunction, oListener);
259
+ };
260
+
261
+ /**
262
+ * Attach event handler <code>fnFunction</code> to the 'patchSent' event of this binding.
263
+ *
264
+ * @param {function} fnFunction The function to call when the event occurs
265
+ * @param {object} [oListener] Object on which to call the given function
266
+ * @returns {this} <code>this</code> to allow method chaining
267
+ *
268
+ * @public
269
+ * @since 1.59.0
270
+ */
271
+ ODataParentBinding.prototype.attachPatchSent = function (fnFunction, oListener) {
272
+ return this.attachEvent("patchSent", fnFunction, oListener);
273
+ };
274
+
328
275
  /**
329
276
  * Changes this binding's parameters and refreshes the binding. Since 1.111.0, a list binding's
330
277
  * header context is deselected, but (since 1.120.13) only if the binding parameter
@@ -705,6 +652,63 @@ sap.ui.define([
705
652
  asODataBinding.prototype.destroy.call(this);
706
653
  };
707
654
 
655
+ /**
656
+ * Detach event handler <code>fnFunction</code> from the 'patchCompleted' event of this binding.
657
+ *
658
+ * @param {function} fnFunction The function to call when the event occurs
659
+ * @param {object} [oListener] Object on which to call the given function
660
+ * @returns {this} <code>this</code> to allow method chaining
661
+ *
662
+ * @public
663
+ * @since 1.59.0
664
+ */
665
+ ODataParentBinding.prototype.detachPatchCompleted = function (fnFunction, oListener) {
666
+ return this.detachEvent("patchCompleted", fnFunction, oListener);
667
+ };
668
+
669
+ /**
670
+ * Detach event handler <code>fnFunction</code> from the 'patchSent' event of this binding.
671
+ *
672
+ * @param {function} fnFunction The function to call when the event occurs
673
+ * @param {object} [oListener] Object on which to call the given function
674
+ * @returns {this} <code>this</code> to allow method chaining
675
+ *
676
+ * @public
677
+ * @since 1.59.0
678
+ */
679
+ ODataParentBinding.prototype.detachPatchSent = function (fnFunction, oListener) {
680
+ return this.detachEvent("patchSent", fnFunction, oListener);
681
+ };
682
+
683
+ /**
684
+ * Handles exceptional cases of setting the property with the given path to the given value.
685
+ *
686
+ * @param {string} sPath
687
+ * A path (absolute or relative to this binding)
688
+ * @param {any} vValue
689
+ * The new value which must be primitive
690
+ * @param {sap.ui.model.odata.v4.lib._GroupLock} [oGroupLock]
691
+ * A lock for the group ID to be used for the PATCH request; without a lock, no PATCH is sent
692
+ * @returns {sap.ui.base.SyncPromise|undefined}
693
+ * <code>undefined</code> for the general case which is handled generically by the caller
694
+ * {@link sap.ui.model.odata.v4.Context#doSetProperty} or a <code>SyncPromise</code> for the
695
+ * exceptional case
696
+ *
697
+ * @abstract
698
+ * @function
699
+ * @name sap.ui.model.odata.v4.ODataParentBinding#doSetProperty
700
+ * @private
701
+ */
702
+
703
+ /**
704
+ * Binding specific code for suspend.
705
+ *
706
+ * @private
707
+ */
708
+ ODataParentBinding.prototype.doSuspend = function () {
709
+ // nothing to do here
710
+ };
711
+
708
712
  /**
709
713
  * Determines whether a child binding with the given context and path can use
710
714
  * the cache of this binding or one of its ancestor bindings. If this is the case, enhances
@@ -996,6 +1000,49 @@ sap.ui.define([
996
1000
  });
997
1001
  };
998
1002
 
1003
+ /**
1004
+ * Finds the context that matches the given canonical path.
1005
+ *
1006
+ * @param {string} sCanonicalPath
1007
+ * The canonical path of an entity (as a context path with the leading "/")
1008
+ * @returns {sap.ui.model.odata.v4.Context}
1009
+ * A matching context or <code>undefined</code> if there is none
1010
+ *
1011
+ * @function
1012
+ * @name sap.ui.model.odata.v4.ODataParentBinding#findContextForCanonicalPath
1013
+ * @private
1014
+ */
1015
+
1016
+ /**
1017
+ * Fire event 'patchCompleted' to attached listeners, if the last PATCH request is completed.
1018
+ *
1019
+ * @param {boolean} bSuccess Whether the current PATCH request has been processed successfully
1020
+ * @private
1021
+ */
1022
+ ODataParentBinding.prototype.firePatchCompleted = function (bSuccess) {
1023
+ if (this.iPatchCounter === 0) {
1024
+ throw new Error("Completed more PATCH requests than sent");
1025
+ }
1026
+ this.iPatchCounter -= 1;
1027
+ this.bPatchSuccess &&= bSuccess;
1028
+ if (this.iPatchCounter === 0) {
1029
+ this.fireEvent("patchCompleted", {success : this.bPatchSuccess});
1030
+ this.bPatchSuccess = true;
1031
+ }
1032
+ };
1033
+
1034
+ /**
1035
+ * Fire event 'patchSent' to attached listeners, if the first PATCH request is sent.
1036
+ *
1037
+ * @private
1038
+ */
1039
+ ODataParentBinding.prototype.firePatchSent = function () {
1040
+ this.iPatchCounter += 1;
1041
+ if (this.iPatchCounter === 1) {
1042
+ this.fireEvent("patchSent");
1043
+ }
1044
+ };
1045
+
999
1046
  /**
1000
1047
  * Returns the absolute base path used for path reduction of child (property) bindings. This is
1001
1048
  * the shortest possible path of a binding that may carry the data for the reduced path. A
@@ -1020,6 +1067,19 @@ sap.ui.define([
1020
1067
  return this.getResolvedPath();
1021
1068
  };
1022
1069
 
1070
+ /**
1071
+ * Returns the unique number of this bindings's generation, or <code>0</code> if it does not
1072
+ * belong to any specific generation. This number can be inherited from a parent context.
1073
+ *
1074
+ * @returns {number}
1075
+ * The unique number of this binding's generation, or <code>0</code>
1076
+ *
1077
+ * @private
1078
+ */
1079
+ ODataParentBinding.prototype.getGeneration = function () {
1080
+ return this.bRelative && this.oContext.getGeneration && this.oContext.getGeneration() || 0;
1081
+ };
1082
+
1023
1083
  /**
1024
1084
  * Returns the query options that can be inherited from this binding, including late query
1025
1085
  * options.
@@ -1038,19 +1098,6 @@ sap.ui.define([
1038
1098
  this.oContext.getBinding().getInheritableQueryOptions(), this.sPath);
1039
1099
  };
1040
1100
 
1041
- /**
1042
- * Returns the unique number of this bindings's generation, or <code>0</code> if it does not
1043
- * belong to any specific generation. This number can be inherited from a parent context.
1044
- *
1045
- * @returns {number}
1046
- * The unique number of this binding's generation, or <code>0</code>
1047
- *
1048
- * @private
1049
- */
1050
- ODataParentBinding.prototype.getGeneration = function () {
1051
- return this.bRelative && this.oContext.getGeneration && this.oContext.getGeneration() || 0;
1052
- };
1053
-
1054
1101
  /**
1055
1102
  * Returns the query options for the given path relative to this binding. Uses the options
1056
1103
  * resulting from the binding parameters or the options inherited from the parent binding by
@@ -1308,22 +1355,6 @@ sap.ui.define([
1308
1355
  });
1309
1356
  };
1310
1357
 
1311
- /**
1312
- * Resumes this binding and all dependent bindings, fires a change or refresh event afterwards.
1313
- *
1314
- * @param {boolean} bCheckUpdate
1315
- * Parameter is ignored; dependent property bindings of a list binding never call checkUpdate
1316
- * @param {boolean} [bParentHasChanges]
1317
- * Whether there are changes on the parent binding that become active after resuming. If
1318
- * <code>true</code>, this binding is allowed to reuse the parent cache, otherwise this
1319
- * binding has to create its own cache
1320
- *
1321
- * @abstract
1322
- * @function
1323
- * @name sap.ui.model.odata.v4.ODataParentBinding#resumeInternal
1324
- * @private
1325
- */
1326
-
1327
1358
  /**
1328
1359
  * If there is a refresh promise created by {@link #createRefreshPromise}, it is resolved with
1329
1360
  * the given promise and cleared. Does not reject the refresh promise with a canceled error.
@@ -1345,53 +1376,6 @@ sap.ui.define([
1345
1376
  return oPromise;
1346
1377
  };
1347
1378
 
1348
- /**
1349
- * Resumes this binding. The binding can again fire change events and initiate data service
1350
- * requests.
1351
- *
1352
- * @param {boolean} bAsPrerenderingTask
1353
- * Whether resume is done as a prerendering task
1354
- * @throws {Error}
1355
- * If this binding is relative to an {@link sap.ui.model.odata.v4.Context} or if it is an
1356
- * operation binding or if it is not suspended
1357
- *
1358
- * @private
1359
- * @see #suspend
1360
- */
1361
- ODataParentBinding.prototype._resume = function (bAsPrerenderingTask) {
1362
- var that = this;
1363
-
1364
- function doResume() {
1365
- that.bSuspended = false;
1366
- if (that.oResumePromise) {
1367
- that.resumeInternal(true);
1368
- that.oResumePromise.$resolve();
1369
- that.oResumePromise = undefined;
1370
- }
1371
- }
1372
-
1373
- if (this.oOperation) {
1374
- throw new Error("Cannot resume an operation binding: " + this);
1375
- }
1376
- if (!this.isRoot()) {
1377
- throw new Error("Cannot resume a relative binding: " + this);
1378
- }
1379
- if (!this.bSuspended) {
1380
- throw new Error("Cannot resume a not suspended binding: " + this);
1381
- }
1382
-
1383
- if (bAsPrerenderingTask) {
1384
- // wait one additional prerendering because resume itself starts in a prerendering task
1385
- this.createReadGroupLock(this.getGroupId(), true, 1);
1386
- // dependent bindings are only removed in a *new task* in ManagedObject#updateBindings
1387
- // => must only resume in prerendering task
1388
- this.oModel.addPrerenderingTask(doResume);
1389
- } else {
1390
- this.createReadGroupLock(this.getGroupId(), true);
1391
- doResume();
1392
- }
1393
- };
1394
-
1395
1379
  /**
1396
1380
  * Resumes this binding. The binding can then again fire change events and initiate data service
1397
1381
  * requests.
@@ -1439,6 +1423,22 @@ sap.ui.define([
1439
1423
  return Promise.resolve(this.oResumePromise);
1440
1424
  };
1441
1425
 
1426
+ /**
1427
+ * Resumes this binding and all dependent bindings, fires a change or refresh event afterwards.
1428
+ *
1429
+ * @param {boolean} bCheckUpdate
1430
+ * Parameter is ignored; dependent property bindings of a list binding never call checkUpdate
1431
+ * @param {boolean} [bParentHasChanges]
1432
+ * Whether there are changes on the parent binding that become active after resuming. If
1433
+ * <code>true</code>, this binding is allowed to reuse the parent cache, otherwise this
1434
+ * binding has to create its own cache
1435
+ *
1436
+ * @abstract
1437
+ * @function
1438
+ * @name sap.ui.model.odata.v4.ODataParentBinding#resumeInternal
1439
+ * @private
1440
+ */
1441
+
1442
1442
  /**
1443
1443
  * Adds the key properties of the entity reached by the given navigation property path to
1444
1444
  * $select of the query options. Expects that the type has already been loaded so that it can
@@ -42,7 +42,7 @@ sap.ui.define([
42
42
  * @mixes sap.ui.model.odata.v4.ODataBinding
43
43
  * @public
44
44
  * @since 1.37.0
45
- * @version 1.124.1
45
+ * @version 1.125.0
46
46
  * @borrows sap.ui.model.odata.v4.ODataBinding#getGroupId as #getGroupId
47
47
  * @borrows sap.ui.model.odata.v4.ODataBinding#getRootBinding as #getRootBinding
48
48
  * @borrows sap.ui.model.odata.v4.ODataBinding#getUpdateGroupId as #getUpdateGroupId
@@ -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
 
@@ -1943,7 +2013,7 @@ sap.ui.define([
1943
2013
  mQueryOptions = getApply(
1944
2014
  _AggregationHelper.buildApply4Hierarchy(oAggregation, this.mQueryOptions));
1945
2015
  } else {
1946
- const oCache = _Helper.getPrivateAnnotation(oElement, "parent");
2016
+ const oCache = _Helper.getPrivateAnnotation(oElement, "parent", this.oFirstLevel);
1947
2017
  mQueryOptions = bDropFilter
1948
2018
  ? _AggregationHelper
1949
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
  }