@openui5/sap.ui.core 1.120.1 → 1.120.3

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 (934) hide show
  1. package/.reuse/dep5 +1 -1
  2. package/THIRDPARTY.txt +1 -1
  3. package/package.json +1 -1
  4. package/src/jquery.sap.act.js +1 -1
  5. package/src/jquery.sap.dom.js +1 -1
  6. package/src/jquery.sap.encoder.js +1 -1
  7. package/src/jquery.sap.events.js +1 -1
  8. package/src/jquery.sap.global.js +2 -2
  9. package/src/jquery.sap.history.js +1 -1
  10. package/src/jquery.sap.keycodes.js +1 -1
  11. package/src/jquery.sap.mobile.js +1 -1
  12. package/src/jquery.sap.promise.js +1 -1
  13. package/src/jquery.sap.properties.js +2 -2
  14. package/src/jquery.sap.resources.js +2 -2
  15. package/src/jquery.sap.script.js +2 -2
  16. package/src/jquery.sap.sjax.js +1 -1
  17. package/src/jquery.sap.storage.js +4 -4
  18. package/src/jquery.sap.strings.js +1 -1
  19. package/src/jquery.sap.stubs.js +1 -1
  20. package/src/jquery.sap.trace.js +1 -1
  21. package/src/jquery.sap.ui.js +1 -1
  22. package/src/jquery.sap.xml.js +1 -1
  23. package/src/sap/base/Event.js +2 -2
  24. package/src/sap/base/Eventing.js +2 -2
  25. package/src/sap/base/Log.js +1 -1
  26. package/src/sap/base/assert.js +1 -1
  27. package/src/sap/base/config/MemoryConfigurationProvider.js +1 -1
  28. package/src/sap/base/config.js +2 -2
  29. package/src/sap/base/i18n/Formatting.js +1 -1
  30. package/src/sap/base/i18n/LanguageTag.js +2 -2
  31. package/src/sap/base/i18n/Localization.js +1 -1
  32. package/src/sap/base/i18n/ResourceBundle.js +1 -1
  33. package/src/sap/base/i18n/date/CalendarType.js +1 -1
  34. package/src/sap/base/i18n/date/CalendarWeekNumbering.js +1 -1
  35. package/src/sap/base/i18n/date/TimezoneUtils.js +23 -10
  36. package/src/sap/base/security/URLListValidator.js +1 -1
  37. package/src/sap/base/security/URLWhitelist.js +1 -1
  38. package/src/sap/base/security/encodeCSS.js +1 -1
  39. package/src/sap/base/security/encodeJS.js +1 -1
  40. package/src/sap/base/security/encodeURL.js +1 -1
  41. package/src/sap/base/security/encodeURLParameters.js +1 -1
  42. package/src/sap/base/security/encodeXML.js +1 -1
  43. package/src/sap/base/security/sanitizeHTML.js +1 -1
  44. package/src/sap/base/strings/camelize.js +1 -1
  45. package/src/sap/base/strings/capitalize.js +1 -1
  46. package/src/sap/base/strings/escapeRegExp.js +1 -1
  47. package/src/sap/base/strings/formatMessage.js +1 -1
  48. package/src/sap/base/strings/hash.js +1 -1
  49. package/src/sap/base/strings/hyphenate.js +1 -1
  50. package/src/sap/base/strings/toHex.js +1 -1
  51. package/src/sap/base/strings/whitespaceReplacer.js +1 -1
  52. package/src/sap/base/util/Deferred.js +1 -1
  53. package/src/sap/base/util/JSTokenizer.js +1 -1
  54. package/src/sap/base/util/LoaderExtensions.js +1 -1
  55. package/src/sap/base/util/ObjectPath.js +1 -1
  56. package/src/sap/base/util/Properties.js +1 -1
  57. package/src/sap/base/util/UriParameters.js +1 -1
  58. package/src/sap/base/util/Version.js +1 -1
  59. package/src/sap/base/util/_merge.js +1 -1
  60. package/src/sap/base/util/array/diff.js +1 -1
  61. package/src/sap/base/util/array/uniqueSort.js +1 -1
  62. package/src/sap/base/util/deepClone.js +1 -1
  63. package/src/sap/base/util/deepEqual.js +1 -1
  64. package/src/sap/base/util/deepExtend.js +1 -1
  65. package/src/sap/base/util/defineCoupledProperty.js +1 -1
  66. package/src/sap/base/util/defineLazyProperty.js +1 -1
  67. package/src/sap/base/util/each.js +1 -1
  68. package/src/sap/base/util/extend.js +1 -1
  69. package/src/sap/base/util/fetch.js +1 -1
  70. package/src/sap/base/util/includes.js +1 -1
  71. package/src/sap/base/util/isEmptyObject.js +1 -1
  72. package/src/sap/base/util/isPlainObject.js +1 -1
  73. package/src/sap/base/util/merge.js +1 -1
  74. package/src/sap/base/util/mixedFetch.js +1 -1
  75. package/src/sap/base/util/now.js +1 -1
  76. package/src/sap/base/util/resolveReference.js +1 -1
  77. package/src/sap/base/util/restricted/_CancelablePromise.js +1 -1
  78. package/src/sap/base/util/restricted/_castArray.js +2 -2
  79. package/src/sap/base/util/restricted/_compact.js +2 -2
  80. package/src/sap/base/util/restricted/_curry.js +2 -2
  81. package/src/sap/base/util/restricted/_debounce.js +2 -2
  82. package/src/sap/base/util/restricted/_difference.js +2 -2
  83. package/src/sap/base/util/restricted/_differenceBy.js +2 -2
  84. package/src/sap/base/util/restricted/_differenceWith.js +2 -2
  85. package/src/sap/base/util/restricted/_flatMap.js +2 -2
  86. package/src/sap/base/util/restricted/_flatMapDeep.js +2 -2
  87. package/src/sap/base/util/restricted/_flatMapDepth.js +2 -2
  88. package/src/sap/base/util/restricted/_flatten.js +2 -2
  89. package/src/sap/base/util/restricted/_flattenDeep.js +2 -2
  90. package/src/sap/base/util/restricted/_flattenDepth.js +2 -2
  91. package/src/sap/base/util/restricted/_intersection.js +2 -2
  92. package/src/sap/base/util/restricted/_intersectionBy.js +2 -2
  93. package/src/sap/base/util/restricted/_intersectionWith.js +2 -2
  94. package/src/sap/base/util/restricted/_isEqual.js +2 -2
  95. package/src/sap/base/util/restricted/_isEqualWith.js +2 -2
  96. package/src/sap/base/util/restricted/_isNil.js +2 -2
  97. package/src/sap/base/util/restricted/_max.js +2 -2
  98. package/src/sap/base/util/restricted/_merge.js +2 -2
  99. package/src/sap/base/util/restricted/_mergeWith.js +2 -2
  100. package/src/sap/base/util/restricted/_min.js +2 -2
  101. package/src/sap/base/util/restricted/_omit.js +2 -2
  102. package/src/sap/base/util/restricted/_pick.js +2 -2
  103. package/src/sap/base/util/restricted/_pickBy.js +2 -2
  104. package/src/sap/base/util/restricted/_throttle.js +2 -2
  105. package/src/sap/base/util/restricted/_toArray.js +2 -2
  106. package/src/sap/base/util/restricted/_union.js +2 -2
  107. package/src/sap/base/util/restricted/_unionBy.js +2 -2
  108. package/src/sap/base/util/restricted/_unionWith.js +2 -2
  109. package/src/sap/base/util/restricted/_uniq.js +2 -2
  110. package/src/sap/base/util/restricted/_uniqBy.js +2 -2
  111. package/src/sap/base/util/restricted/_uniqWith.js +2 -2
  112. package/src/sap/base/util/restricted/_without.js +2 -2
  113. package/src/sap/base/util/restricted/_xor.js +2 -2
  114. package/src/sap/base/util/restricted/_xorBy.js +2 -2
  115. package/src/sap/base/util/restricted/_xorWith.js +2 -2
  116. package/src/sap/base/util/restricted/_zipObject.js +2 -2
  117. package/src/sap/base/util/restricted/_zipObjectDeep.js +2 -2
  118. package/src/sap/base/util/syncFetch.js +1 -1
  119. package/src/sap/base/util/uid.js +1 -1
  120. package/src/sap/base/util/values.js +1 -1
  121. package/src/sap/ui/Device.js +4 -4
  122. package/src/sap/ui/Global.js +5 -5
  123. package/src/sap/ui/VersionInfo.js +1 -1
  124. package/src/sap/ui/base/BindingInfo.js +1 -1
  125. package/src/sap/ui/base/BindingParser.js +5 -5
  126. package/src/sap/ui/base/DataType.js +6 -6
  127. package/src/sap/ui/base/DesignTime.js +1 -1
  128. package/src/sap/ui/base/Event.js +2 -2
  129. package/src/sap/ui/base/EventProvider.js +2 -2
  130. package/src/sap/ui/base/Exception.js +1 -1
  131. package/src/sap/ui/base/ExpressionParser.js +1 -1
  132. package/src/sap/ui/base/Interface.js +2 -2
  133. package/src/sap/ui/base/ManagedObject.js +10 -10
  134. package/src/sap/ui/base/ManagedObjectMetadata.js +2 -2
  135. package/src/sap/ui/base/ManagedObjectObserver.js +1 -1
  136. package/src/sap/ui/base/ManagedObjectRegistry.js +187 -170
  137. package/src/sap/ui/base/Metadata.js +2 -2
  138. package/src/sap/ui/base/Object.js +2 -2
  139. package/src/sap/ui/base/ObjectPool.js +2 -2
  140. package/src/sap/ui/base/SyncPromise.js +1 -1
  141. package/src/sap/ui/base/syncXHRFix.js +1 -1
  142. package/src/sap/ui/core/.library +4 -4
  143. package/src/sap/ui/core/AccessKeysEnablement.js +1 -1
  144. package/src/sap/ui/core/AnimationMode.js +1 -1
  145. package/src/sap/ui/core/AppCacheBuster.js +1 -1
  146. package/src/sap/ui/core/BlockLayerUtils.js +1 -1
  147. package/src/sap/ui/core/BusyIndicator.js +2 -2
  148. package/src/sap/ui/core/BusyIndicatorUtils.js +1 -1
  149. package/src/sap/ui/core/CalendarType.js +1 -1
  150. package/src/sap/ui/core/CommandExecution.js +1 -1
  151. package/src/sap/ui/core/Component.js +31 -145
  152. package/src/sap/ui/core/ComponentContainer.js +4 -4
  153. package/src/sap/ui/core/ComponentContainerRenderer.js +1 -1
  154. package/src/sap/ui/core/ComponentMetadata.js +2 -2
  155. package/src/sap/ui/core/ComponentRegistry.js +153 -0
  156. package/src/sap/ui/core/ComponentSupport.js +4 -4
  157. package/src/sap/ui/core/Configuration.js +2 -2
  158. package/src/sap/ui/core/ContextMenuSupport.js +1 -1
  159. package/src/sap/ui/core/Control.js +7 -5
  160. package/src/sap/ui/core/ControlBehavior.js +1 -1
  161. package/src/sap/ui/core/Core.js +7 -5
  162. package/src/sap/ui/core/CustomData.js +2 -2
  163. package/src/sap/ui/core/CustomStyleClassSupport.js +1 -1
  164. package/src/sap/ui/core/DeclarativeSupport.js +2 -2
  165. package/src/sap/ui/core/Element.js +26 -142
  166. package/src/sap/ui/core/ElementMetadata.js +2 -2
  167. package/src/sap/ui/core/ElementRegistry.js +159 -0
  168. package/src/sap/ui/core/EnabledPropagator.js +2 -2
  169. package/src/sap/ui/core/EventBus.js +2 -2
  170. package/src/sap/ui/core/ExtensionPoint.js +6 -6
  171. package/src/sap/ui/core/FocusHandler.js +4 -3
  172. package/src/sap/ui/core/Fragment.js +6 -6
  173. package/src/sap/ui/core/HTML.js +2 -2
  174. package/src/sap/ui/core/HTMLRenderer.js +1 -1
  175. package/src/sap/ui/core/History.js +2 -2
  176. package/src/sap/ui/core/Icon.js +2 -2
  177. package/src/sap/ui/core/IconPool.js +1 -1
  178. package/src/sap/ui/core/IconRenderer.js +1 -1
  179. package/src/sap/ui/core/IndicationColorSupport.js +2 -2
  180. package/src/sap/ui/core/IntervalTrigger.js +2 -2
  181. package/src/sap/ui/core/InvisibleMessage.js +2 -2
  182. package/src/sap/ui/core/InvisibleRenderer.js +2 -2
  183. package/src/sap/ui/core/InvisibleText.js +2 -2
  184. package/src/sap/ui/core/Item.js +2 -2
  185. package/src/sap/ui/core/LabelEnablement.js +2 -2
  186. package/src/sap/ui/core/LayoutData.js +2 -2
  187. package/src/sap/ui/core/Lib.js +15 -8
  188. package/src/sap/ui/core/ListItem.js +2 -2
  189. package/src/sap/ui/core/LocalBusyIndicator.js +2 -2
  190. package/src/sap/ui/core/LocalBusyIndicatorRenderer.js +1 -1
  191. package/src/sap/ui/core/LocalBusyIndicatorSupport.js +1 -1
  192. package/src/sap/ui/core/Locale.js +2 -2
  193. package/src/sap/ui/core/LocaleData.js +56 -12
  194. package/src/sap/ui/core/Manifest.js +5 -6
  195. package/src/sap/ui/core/Message.js +3 -2
  196. package/src/sap/ui/core/Messaging.js +3 -3
  197. package/src/sap/ui/core/Patcher.js +1 -1
  198. package/src/sap/ui/core/Placeholder.js +1 -1
  199. package/src/sap/ui/core/Popup.js +1 -1
  200. package/src/sap/ui/core/RenderManager.js +2 -2
  201. package/src/sap/ui/core/Renderer.js +2 -2
  202. package/src/sap/ui/core/Rendering.js +1 -1
  203. package/src/sap/ui/core/ResizeHandler.js +2 -2
  204. package/src/sap/ui/core/ScrollBar.js +2 -2
  205. package/src/sap/ui/core/ScrollBarRenderer.js +1 -1
  206. package/src/sap/ui/core/SeparatorItem.js +2 -2
  207. package/src/sap/ui/core/Shortcut.js +16 -10
  208. package/src/sap/ui/core/ShortcutHint.js +1 -1
  209. package/src/sap/ui/core/ShortcutHintsMixin.js +1 -1
  210. package/src/sap/ui/core/StashedControlSupport.js +1 -1
  211. package/src/sap/ui/core/StaticArea.js +5 -2
  212. package/src/sap/ui/core/Supportability.js +1 -1
  213. package/src/sap/ui/core/Theming.js +3 -3
  214. package/src/sap/ui/core/Title.js +2 -2
  215. package/src/sap/ui/core/TooltipBase.js +2 -2
  216. package/src/sap/ui/core/UIArea.js +52 -14
  217. package/src/sap/ui/core/UIAreaRegistry.js +150 -0
  218. package/src/sap/ui/core/UIComponent.js +4 -4
  219. package/src/sap/ui/core/UIComponentMetadata.js +2 -2
  220. package/src/sap/ui/core/ValueStateSupport.js +2 -2
  221. package/src/sap/ui/core/VariantLayoutData.js +2 -2
  222. package/src/sap/ui/core/XMLComposite.js +2 -2
  223. package/src/sap/ui/core/XMLCompositeMetadata.js +2 -2
  224. package/src/sap/ui/core/XMLTemplateProcessor.js +96 -77
  225. package/src/sap/ui/core/_IconRegistry.js +1 -1
  226. package/src/sap/ui/core/_UrlResolver.js +1 -1
  227. package/src/sap/ui/core/boot/_bootConfig.js +1 -1
  228. package/src/sap/ui/core/boot/_runBoot.js +1 -1
  229. package/src/sap/ui/core/boot/initDOM.js +1 -1
  230. package/src/sap/ui/core/boot/loadCalendar.js +1 -1
  231. package/src/sap/ui/core/boot/loadManifest.js +1 -1
  232. package/src/sap/ui/core/boot/loadModules.js +1 -1
  233. package/src/sap/ui/core/boot/onInit.js +1 -1
  234. package/src/sap/ui/core/boot.js +1 -1
  235. package/src/sap/ui/core/cache/CacheManager.js +1 -1
  236. package/src/sap/ui/core/cache/CacheManagerNOP.js +1 -1
  237. package/src/sap/ui/core/cache/LRUPersistentCache.js +1 -1
  238. package/src/sap/ui/core/cldr/Unicode-Data-Files-LICENSE.txt +1 -1
  239. package/src/sap/ui/core/cldr/cy.json +12 -3
  240. package/src/sap/ui/core/cldr/en_AU.json +48 -12
  241. package/src/sap/ui/core/cldr/en_GB.json +24 -6
  242. package/src/sap/ui/core/cldr/en_HK.json +24 -6
  243. package/src/sap/ui/core/cldr/en_IE.json +24 -6
  244. package/src/sap/ui/core/cldr/en_IN.json +24 -6
  245. package/src/sap/ui/core/cldr/en_NZ.json +24 -6
  246. package/src/sap/ui/core/cldr/en_PG.json +24 -6
  247. package/src/sap/ui/core/cldr/en_SG.json +24 -6
  248. package/src/sap/ui/core/cldr/en_ZA.json +24 -6
  249. package/src/sap/ui/core/cldr/es.json +288 -72
  250. package/src/sap/ui/core/cldr/es_AR.json +288 -72
  251. package/src/sap/ui/core/cldr/es_BO.json +288 -72
  252. package/src/sap/ui/core/cldr/es_CL.json +144 -36
  253. package/src/sap/ui/core/cldr/es_CO.json +144 -36
  254. package/src/sap/ui/core/cldr/es_MX.json +288 -72
  255. package/src/sap/ui/core/cldr/fa.json +48 -12
  256. package/src/sap/ui/core/cldr/id.json +56 -14
  257. package/src/sap/ui/core/cldr/kk.json +184 -46
  258. package/src/sap/ui/core/cldr/ms.json +56 -14
  259. package/src/sap/ui/core/cldr/nb.json +36 -9
  260. package/src/sap/ui/core/cldr/nl.json +264 -66
  261. package/src/sap/ui/core/cldr/nl_BE.json +264 -66
  262. package/src/sap/ui/core/cldr/pt.json +288 -72
  263. package/src/sap/ui/core/cldr/pt_PT.json +288 -72
  264. package/src/sap/ui/core/cldr/sr.json +96 -24
  265. package/src/sap/ui/core/cldr/sr_Latn.json +72 -18
  266. package/src/sap/ui/core/date/Buddhist.js +1 -1
  267. package/src/sap/ui/core/date/CalendarUtils.js +1 -1
  268. package/src/sap/ui/core/date/CalendarWeekNumbering.js +1 -1
  269. package/src/sap/ui/core/date/Gregorian.js +1 -1
  270. package/src/sap/ui/core/date/Islamic.js +1 -1
  271. package/src/sap/ui/core/date/Japanese.js +1 -1
  272. package/src/sap/ui/core/date/Persian.js +1 -1
  273. package/src/sap/ui/core/date/UI5Date.js +2 -2
  274. package/src/sap/ui/core/date/UniversalDate.js +1 -1
  275. package/src/sap/ui/core/date/UniversalDateUtils.js +1 -1
  276. package/src/sap/ui/core/date/_Calendars.js +1 -1
  277. package/src/sap/ui/core/delegate/ItemNavigation.js +2 -2
  278. package/src/sap/ui/core/delegate/ScrollEnablement.js +2 -2
  279. package/src/sap/ui/core/designtime/ComponentContainer.designtime.js +1 -1
  280. package/src/sap/ui/core/designtime/CustomData.designtime.js +1 -1
  281. package/src/sap/ui/core/designtime/Icon.designtime.js +1 -1
  282. package/src/sap/ui/core/designtime/UIComponent.designtime.js +1 -1
  283. package/src/sap/ui/core/designtime/library.designtime.js +1 -1
  284. package/src/sap/ui/core/designtime/mvc/ControllerExtensionTemplate.js +1 -1
  285. package/src/sap/ui/core/designtime/mvc/View.designtime.js +1 -1
  286. package/src/sap/ui/core/designtime/mvc/XMLView.designtime.js +1 -1
  287. package/src/sap/ui/core/dnd/DragAndDrop.js +1 -1
  288. package/src/sap/ui/core/dnd/DragDropBase.js +2 -2
  289. package/src/sap/ui/core/dnd/DragDropInfo.js +2 -2
  290. package/src/sap/ui/core/dnd/DragInfo.js +2 -2
  291. package/src/sap/ui/core/dnd/DropInfo.js +2 -2
  292. package/src/sap/ui/core/format/DateFormat.js +26 -14
  293. package/src/sap/ui/core/format/DateFormatTimezoneDisplay.js +1 -1
  294. package/src/sap/ui/core/format/FileSizeFormat.js +1 -1
  295. package/src/sap/ui/core/format/ListFormat.js +1 -1
  296. package/src/sap/ui/core/format/NumberFormat.js +1 -1
  297. package/src/sap/ui/core/format/TimezoneUtil.js +2 -2
  298. package/src/sap/ui/core/getCompatibilityVersion.js +2 -2
  299. package/src/sap/ui/core/hyphenation/Hyphenation.js +2 -2
  300. package/src/sap/ui/core/hyphenation/HyphenationTestingWords.js +1 -1
  301. package/src/sap/ui/core/library.js +10 -4
  302. package/src/sap/ui/core/library.support.js +1 -1
  303. package/src/sap/ui/core/message/ControlMessageProcessor.js +2 -2
  304. package/src/sap/ui/core/message/Message.js +8 -8
  305. package/src/sap/ui/core/message/MessageManager.js +2 -2
  306. package/src/sap/ui/core/message/MessageMixin.js +1 -1
  307. package/src/sap/ui/core/message/MessageParser.js +2 -2
  308. package/src/sap/ui/core/message/MessageProcessor.js +2 -2
  309. package/src/sap/ui/core/message/MessageType.js +2 -2
  310. package/src/sap/ui/core/messagebundle_cnr.properties +352 -0
  311. package/src/sap/ui/core/messagebundle_en_US_saprigi.properties +297 -285
  312. package/src/sap/ui/core/mvc/Controller.js +16 -14
  313. package/src/sap/ui/core/mvc/ControllerExtension.js +8 -6
  314. package/src/sap/ui/core/mvc/ControllerExtensionProvider.js +2 -2
  315. package/src/sap/ui/core/mvc/ControllerMetadata.js +2 -2
  316. package/src/sap/ui/core/mvc/EventHandlerResolver.js +5 -5
  317. package/src/sap/ui/core/mvc/HTMLView.js +2 -2
  318. package/src/sap/ui/core/mvc/HTMLViewRenderer.js +1 -1
  319. package/src/sap/ui/core/mvc/JSONView.js +2 -2
  320. package/src/sap/ui/core/mvc/JSONViewRenderer.js +1 -1
  321. package/src/sap/ui/core/mvc/JSView.js +2 -2
  322. package/src/sap/ui/core/mvc/JSViewRenderer.js +1 -1
  323. package/src/sap/ui/core/mvc/OverrideExecution.js +1 -1
  324. package/src/sap/ui/core/mvc/TemplateView.js +2 -2
  325. package/src/sap/ui/core/mvc/TemplateViewRenderer.js +1 -1
  326. package/src/sap/ui/core/mvc/View.js +21 -10
  327. package/src/sap/ui/core/mvc/ViewRenderer.js +1 -1
  328. package/src/sap/ui/core/mvc/ViewType.js +1 -1
  329. package/src/sap/ui/core/mvc/XMLProcessingMode.js +1 -1
  330. package/src/sap/ui/core/mvc/XMLView.js +9 -3
  331. package/src/sap/ui/core/mvc/XMLViewRenderer.js +1 -1
  332. package/src/sap/ui/core/plugin/DeclarativeSupport.js +2 -2
  333. package/src/sap/ui/core/plugin/LessSupport.js +2 -2
  334. package/src/sap/ui/core/plugin/TemplatingSupport.js +2 -2
  335. package/src/sap/ui/core/postmessage/Bus.js +2 -2
  336. package/src/sap/ui/core/postmessage/confirmationDialog.js +2 -2
  337. package/src/sap/ui/core/routing/HashChanger.js +1 -1
  338. package/src/sap/ui/core/routing/HashChangerBase.js +1 -1
  339. package/src/sap/ui/core/routing/History.js +2 -2
  340. package/src/sap/ui/core/routing/Route.js +7 -7
  341. package/src/sap/ui/core/routing/Router.js +7 -7
  342. package/src/sap/ui/core/routing/RouterHashChanger.js +1 -1
  343. package/src/sap/ui/core/routing/Target.js +1 -1
  344. package/src/sap/ui/core/routing/TargetCache.js +1 -1
  345. package/src/sap/ui/core/routing/Targets.js +4 -4
  346. package/src/sap/ui/core/routing/Views.js +1 -1
  347. package/src/sap/ui/core/routing/async/Route.js +1 -1
  348. package/src/sap/ui/core/routing/async/Target.js +3 -3
  349. package/src/sap/ui/core/routing/async/TargetCache.js +1 -1
  350. package/src/sap/ui/core/routing/async/Targets.js +2 -2
  351. package/src/sap/ui/core/routing/sync/Route.js +1 -1
  352. package/src/sap/ui/core/routing/sync/Target.js +1 -1
  353. package/src/sap/ui/core/routing/sync/TargetCache.js +1 -1
  354. package/src/sap/ui/core/routing/sync/Targets.js +1 -1
  355. package/src/sap/ui/core/rules/App.support.js +1 -1
  356. package/src/sap/ui/core/rules/Config.support.js +1 -1
  357. package/src/sap/ui/core/rules/CoreHelper.support.js +1 -1
  358. package/src/sap/ui/core/rules/Misc.support.js +4 -4
  359. package/src/sap/ui/core/rules/Model.support.js +1 -1
  360. package/src/sap/ui/core/rules/Rendering.support.js +1 -1
  361. package/src/sap/ui/core/rules/Theming.support.js +1 -1
  362. package/src/sap/ui/core/rules/View.support.js +1 -1
  363. package/src/sap/ui/core/search/OpenSearchProvider.js +2 -2
  364. package/src/sap/ui/core/search/SearchProvider.js +2 -2
  365. package/src/sap/ui/core/service/Service.js +2 -2
  366. package/src/sap/ui/core/service/ServiceFactory.js +2 -2
  367. package/src/sap/ui/core/service/ServiceFactoryRegistry.js +2 -2
  368. package/src/sap/ui/core/support/BootSupportTool.js +1 -1
  369. package/src/sap/ui/core/support/Hotkeys.js +1 -1
  370. package/src/sap/ui/core/support/Plugin.js +2 -2
  371. package/src/sap/ui/core/support/RuleEngineOpaExtension.js +1 -1
  372. package/src/sap/ui/core/support/Support.js +2 -2
  373. package/src/sap/ui/core/support/ToolsAPI.js +1 -1
  374. package/src/sap/ui/core/support/bootstrapFallback.js +1 -1
  375. package/src/sap/ui/core/support/controls/InteractionSlider.js +1 -1
  376. package/src/sap/ui/core/support/controls/InteractionTree.js +1 -1
  377. package/src/sap/ui/core/support/controls/ObjectViewer.js +1 -1
  378. package/src/sap/ui/core/support/controls/TimelineOverview.js +1 -1
  379. package/src/sap/ui/core/support/controls/TreeViewer.js +1 -1
  380. package/src/sap/ui/core/support/debugReboot.js +1 -1
  381. package/src/sap/ui/core/support/plugins/Breakpoint.js +1 -1
  382. package/src/sap/ui/core/support/plugins/ControlTree.js +7 -5
  383. package/src/sap/ui/core/support/plugins/Debugging.js +1 -1
  384. package/src/sap/ui/core/support/plugins/Interaction.js +2 -2
  385. package/src/sap/ui/core/support/plugins/LocalStorage.js +2 -2
  386. package/src/sap/ui/core/support/plugins/Performance.js +2 -2
  387. package/src/sap/ui/core/support/plugins/Selector.js +2 -2
  388. package/src/sap/ui/core/support/plugins/TechInfo.js +2 -2
  389. package/src/sap/ui/core/support/plugins/Trace.js +2 -2
  390. package/src/sap/ui/core/support/plugins/ViewInfo.js +2 -2
  391. package/src/sap/ui/core/support/techinfo/TechnicalInfo.js +1 -1
  392. package/src/sap/ui/core/support/techinfo/moduleTreeHelper.js +1 -1
  393. package/src/sap/ui/core/support/trace/E2eTraceLib.js +1 -1
  394. package/src/sap/ui/core/support/trace/EppLib.js +1 -1
  395. package/src/sap/ui/core/support/usage/EventBroadcaster.js +1 -1
  396. package/src/sap/ui/core/syncStyleClass.js +1 -1
  397. package/src/sap/ui/core/themes/base/library.source.less +1 -1
  398. package/src/sap/ui/core/themes/sap_hcb/library.source.less +1 -1
  399. package/src/sap/ui/core/theming/Parameters.js +8 -8
  400. package/src/sap/ui/core/theming/ThemeHelper.js +3 -3
  401. package/src/sap/ui/core/theming/ThemeManager.js +3 -3
  402. package/src/sap/ui/core/tmpl/DOMAttribute.js +2 -2
  403. package/src/sap/ui/core/tmpl/DOMElement.js +2 -2
  404. package/src/sap/ui/core/tmpl/DOMElementRenderer.js +1 -1
  405. package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +2 -2
  406. package/src/sap/ui/core/tmpl/Template.js +2 -2
  407. package/src/sap/ui/core/tmpl/TemplateControl.js +2 -2
  408. package/src/sap/ui/core/tmpl/TemplateControlRenderer.js +1 -1
  409. package/src/sap/ui/core/tmpl/_parsePath.js +1 -1
  410. package/src/sap/ui/core/util/AsyncHintsHelper.js +2 -2
  411. package/src/sap/ui/core/util/DraftEnabledMockServer.js +1 -1
  412. package/src/sap/ui/core/util/Export.js +2 -2
  413. package/src/sap/ui/core/util/ExportCell.js +2 -2
  414. package/src/sap/ui/core/util/ExportColumn.js +2 -2
  415. package/src/sap/ui/core/util/ExportRow.js +2 -2
  416. package/src/sap/ui/core/util/ExportType.js +2 -2
  417. package/src/sap/ui/core/util/ExportTypeCSV.js +2 -2
  418. package/src/sap/ui/core/util/File.js +2 -2
  419. package/src/sap/ui/core/util/LibraryInfo.js +2 -2
  420. package/src/sap/ui/core/util/MockServer.js +35 -4
  421. package/src/sap/ui/core/util/PasteHelper.js +2 -2
  422. package/src/sap/ui/core/util/ResponsivePaddingsEnablement.js +1 -1
  423. package/src/sap/ui/core/util/ShortcutHelper.js +1 -1
  424. package/src/sap/ui/core/util/XMLPreprocessor.js +1 -1
  425. package/src/sap/ui/core/util/_LocalizationHelper.js +1 -1
  426. package/src/sap/ui/core/util/reflection/BaseTreeModifier.js +16 -1
  427. package/src/sap/ui/core/util/reflection/JsControlTreeModifier.js +12 -1
  428. package/src/sap/ui/core/util/reflection/XmlTreeModifier.js +15 -1
  429. package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +2 -2
  430. package/src/sap/ui/core/util/serializer/Serializer.js +2 -2
  431. package/src/sap/ui/core/util/serializer/ViewSerializer.js +2 -2
  432. package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +2 -2
  433. package/src/sap/ui/core/util/serializer/delegate/Delegate.js +2 -2
  434. package/src/sap/ui/core/util/serializer/delegate/HTML.js +2 -2
  435. package/src/sap/ui/core/util/serializer/delegate/XML.js +2 -2
  436. package/src/sap/ui/core/webc/WebComponent.js +2 -2
  437. package/src/sap/ui/core/webc/WebComponentMetadata.js +2 -2
  438. package/src/sap/ui/core/webc/WebComponentRenderer.js +1 -1
  439. package/src/sap/ui/core/ws/ReadyState.js +2 -2
  440. package/src/sap/ui/core/ws/SapPcpWebSocket.js +2 -2
  441. package/src/sap/ui/core/ws/WebSocket.js +2 -2
  442. package/src/sap/ui/debug/ControlTree.js +2 -2
  443. package/src/sap/ui/debug/DebugEnv.js +2 -2
  444. package/src/sap/ui/debug/Highlighter.js +1 -1
  445. package/src/sap/ui/debug/LogViewer.js +1 -1
  446. package/src/sap/ui/debug/PropertyList.js +2 -2
  447. package/src/sap/ui/dom/_ready.js +1 -1
  448. package/src/sap/ui/dom/containsOrEquals.js +1 -1
  449. package/src/sap/ui/dom/denormalizeScrollBeginRTL.js +1 -1
  450. package/src/sap/ui/dom/denormalizeScrollLeftRTL.js +1 -1
  451. package/src/sap/ui/dom/getComputedStyleFix.js +1 -1
  452. package/src/sap/ui/dom/getFirstEditableInput.js +1 -1
  453. package/src/sap/ui/dom/getOwnerWindow.js +1 -1
  454. package/src/sap/ui/dom/getScrollbarSize.js +1 -1
  455. package/src/sap/ui/dom/includeScript.js +1 -1
  456. package/src/sap/ui/dom/includeStylesheet.js +1 -1
  457. package/src/sap/ui/dom/isBehindOtherElement.js +1 -1
  458. package/src/sap/ui/dom/isHidden.js +1 -1
  459. package/src/sap/ui/dom/jquery/Aria.js +1 -1
  460. package/src/sap/ui/dom/jquery/Focusable.js +1 -1
  461. package/src/sap/ui/dom/jquery/Selection.js +1 -1
  462. package/src/sap/ui/dom/jquery/Selectors.js +1 -1
  463. package/src/sap/ui/dom/jquery/control.js +1 -1
  464. package/src/sap/ui/dom/jquery/cursorPos.js +1 -1
  465. package/src/sap/ui/dom/jquery/getSelectedText.js +1 -1
  466. package/src/sap/ui/dom/jquery/hasTabIndex.js +1 -1
  467. package/src/sap/ui/dom/jquery/parentByAttribute.js +1 -1
  468. package/src/sap/ui/dom/jquery/rect.js +1 -1
  469. package/src/sap/ui/dom/jquery/rectContains.js +1 -1
  470. package/src/sap/ui/dom/jquery/scrollLeftRTL.js +1 -1
  471. package/src/sap/ui/dom/jquery/scrollRightRTL.js +1 -1
  472. package/src/sap/ui/dom/jquery/selectText.js +1 -1
  473. package/src/sap/ui/dom/jquery/zIndex.js +1 -1
  474. package/src/sap/ui/dom/units/Rem.js +1 -1
  475. package/src/sap/ui/events/ControlEvents.js +1 -1
  476. package/src/sap/ui/events/F6Navigation.js +1 -1
  477. package/src/sap/ui/events/KeyCodes.js +1 -1
  478. package/src/sap/ui/events/PasteEventFix.js +1 -1
  479. package/src/sap/ui/events/PseudoEvents.js +1 -1
  480. package/src/sap/ui/events/TouchToMouseMapping.js +1 -1
  481. package/src/sap/ui/events/checkMouseEnterOrLeave.js +1 -1
  482. package/src/sap/ui/events/isMouseEventDelayed.js +1 -1
  483. package/src/sap/ui/events/isSpecialKey.js +1 -1
  484. package/src/sap/ui/events/jquery/EventExtension.js +1 -1
  485. package/src/sap/ui/events/jquery/EventSimulation.js +1 -1
  486. package/src/sap/ui/events/jquery/EventTriggerHook.js +1 -1
  487. package/src/sap/ui/model/Binding.js +3 -3
  488. package/src/sap/ui/model/BindingMode.js +1 -1
  489. package/src/sap/ui/model/ChangeReason.js +1 -1
  490. package/src/sap/ui/model/ClientContextBinding.js +1 -1
  491. package/src/sap/ui/model/ClientListBinding.js +1 -1
  492. package/src/sap/ui/model/ClientModel.js +2 -2
  493. package/src/sap/ui/model/ClientPropertyBinding.js +1 -1
  494. package/src/sap/ui/model/ClientTreeBinding.js +1 -1
  495. package/src/sap/ui/model/ClientTreeBindingAdapter.js +1 -1
  496. package/src/sap/ui/model/CompositeBinding.js +1 -1
  497. package/src/sap/ui/model/CompositeDataState.js +6 -6
  498. package/src/sap/ui/model/CompositeType.js +2 -2
  499. package/src/sap/ui/model/Context.js +1 -1
  500. package/src/sap/ui/model/ContextBinding.js +1 -1
  501. package/src/sap/ui/model/DataState.js +11 -11
  502. package/src/sap/ui/model/Filter.js +1 -1
  503. package/src/sap/ui/model/FilterOperator.js +1 -1
  504. package/src/sap/ui/model/FilterProcessor.js +9 -6
  505. package/src/sap/ui/model/FilterType.js +1 -1
  506. package/src/sap/ui/model/FormatException.js +1 -1
  507. package/src/sap/ui/model/ListBinding.js +1 -1
  508. package/src/sap/ui/model/ManagedObjectBindingSupport.js +3 -3
  509. package/src/sap/ui/model/MetaModel.js +2 -2
  510. package/src/sap/ui/model/Model.js +2 -2
  511. package/src/sap/ui/model/ParseException.js +1 -1
  512. package/src/sap/ui/model/PropertyBinding.js +1 -1
  513. package/src/sap/ui/model/SelectionModel.js +2 -2
  514. package/src/sap/ui/model/SimpleType.js +2 -2
  515. package/src/sap/ui/model/Sorter.js +1 -1
  516. package/src/sap/ui/model/SorterProcessor.js +1 -1
  517. package/src/sap/ui/model/StaticBinding.js +1 -1
  518. package/src/sap/ui/model/TreeAutoExpandMode.js +2 -2
  519. package/src/sap/ui/model/TreeBinding.js +1 -1
  520. package/src/sap/ui/model/TreeBindingAdapter.js +1 -1
  521. package/src/sap/ui/model/TreeBindingCompatibilityAdapter.js +1 -1
  522. package/src/sap/ui/model/TreeBindingUtils.js +1 -1
  523. package/src/sap/ui/model/Type.js +2 -2
  524. package/src/sap/ui/model/ValidateException.js +1 -1
  525. package/src/sap/ui/model/_Helper.js +1 -1
  526. package/src/sap/ui/model/analytics/AnalyticalBinding.js +1 -1
  527. package/src/sap/ui/model/analytics/AnalyticalTreeBindingAdapter.js +1 -1
  528. package/src/sap/ui/model/analytics/AnalyticalVersionInfo.js +1 -1
  529. package/src/sap/ui/model/analytics/BatchResponseCollector.js +1 -1
  530. package/src/sap/ui/model/analytics/ODataModelAdapter.js +1 -1
  531. package/src/sap/ui/model/analytics/odata4analytics.js +7 -7
  532. package/src/sap/ui/model/base/ManagedObjectModel.js +1 -1
  533. package/src/sap/ui/model/controlhelper/TreeBindingProxy.js +1 -1
  534. package/src/sap/ui/model/json/JSONListBinding.js +1 -1
  535. package/src/sap/ui/model/json/JSONModel.js +2 -2
  536. package/src/sap/ui/model/json/JSONPropertyBinding.js +1 -1
  537. package/src/sap/ui/model/json/JSONTreeBinding.js +1 -1
  538. package/src/sap/ui/model/message/MessageListBinding.js +1 -1
  539. package/src/sap/ui/model/message/MessageModel.js +2 -2
  540. package/src/sap/ui/model/message/MessagePropertyBinding.js +1 -1
  541. package/src/sap/ui/model/odata/AnnotationHelper.js +1 -1
  542. package/src/sap/ui/model/odata/AnnotationParser.js +1 -1
  543. package/src/sap/ui/model/odata/CountMode.js +1 -1
  544. package/src/sap/ui/model/odata/Filter.js +1 -1
  545. package/src/sap/ui/model/odata/MessageScope.js +1 -1
  546. package/src/sap/ui/model/odata/ODataAnnotations.js +2 -2
  547. package/src/sap/ui/model/odata/ODataContextBinding.js +1 -1
  548. package/src/sap/ui/model/odata/ODataListBinding.js +1 -1
  549. package/src/sap/ui/model/odata/ODataMessageParser.js +4 -4
  550. package/src/sap/ui/model/odata/ODataMetaModel.js +2 -2
  551. package/src/sap/ui/model/odata/ODataMetadata.js +2 -2
  552. package/src/sap/ui/model/odata/ODataModel.js +2 -2
  553. package/src/sap/ui/model/odata/ODataPropertyBinding.js +1 -1
  554. package/src/sap/ui/model/odata/ODataTreeBinding.js +1 -1
  555. package/src/sap/ui/model/odata/ODataTreeBindingAdapter.js +1 -1
  556. package/src/sap/ui/model/odata/ODataTreeBindingFlat.js +1 -1
  557. package/src/sap/ui/model/odata/ODataUtils.js +11 -6
  558. package/src/sap/ui/model/odata/OperationMode.js +1 -1
  559. package/src/sap/ui/model/odata/UpdateMethod.js +1 -1
  560. package/src/sap/ui/model/odata/_AnnotationHelperBasics.js +1 -1
  561. package/src/sap/ui/model/odata/_AnnotationHelperExpression.js +1 -1
  562. package/src/sap/ui/model/odata/_ODataMetaModelUtils.js +1 -1
  563. package/src/sap/ui/model/odata/type/Boolean.js +2 -2
  564. package/src/sap/ui/model/odata/type/Byte.js +2 -2
  565. package/src/sap/ui/model/odata/type/Currency.js +2 -2
  566. package/src/sap/ui/model/odata/type/Date.js +2 -2
  567. package/src/sap/ui/model/odata/type/DateTime.js +2 -2
  568. package/src/sap/ui/model/odata/type/DateTimeBase.js +2 -2
  569. package/src/sap/ui/model/odata/type/DateTimeOffset.js +2 -2
  570. package/src/sap/ui/model/odata/type/DateTimeWithTimezone.js +2 -2
  571. package/src/sap/ui/model/odata/type/Decimal.js +2 -2
  572. package/src/sap/ui/model/odata/type/Double.js +2 -2
  573. package/src/sap/ui/model/odata/type/Guid.js +2 -2
  574. package/src/sap/ui/model/odata/type/Int.js +2 -2
  575. package/src/sap/ui/model/odata/type/Int16.js +2 -2
  576. package/src/sap/ui/model/odata/type/Int32.js +2 -2
  577. package/src/sap/ui/model/odata/type/Int64.js +2 -2
  578. package/src/sap/ui/model/odata/type/ODataType.js +2 -2
  579. package/src/sap/ui/model/odata/type/Raw.js +2 -2
  580. package/src/sap/ui/model/odata/type/SByte.js +2 -2
  581. package/src/sap/ui/model/odata/type/Single.js +2 -2
  582. package/src/sap/ui/model/odata/type/Stream.js +2 -2
  583. package/src/sap/ui/model/odata/type/String.js +2 -2
  584. package/src/sap/ui/model/odata/type/Time.js +2 -2
  585. package/src/sap/ui/model/odata/type/TimeOfDay.js +2 -2
  586. package/src/sap/ui/model/odata/type/Unit.js +2 -2
  587. package/src/sap/ui/model/odata/type/UnitMixin.js +1 -1
  588. package/src/sap/ui/model/odata/v2/BatchMode.js +1 -1
  589. package/src/sap/ui/model/odata/v2/Context.js +2 -2
  590. package/src/sap/ui/model/odata/v2/ODataAnnotations.js +2 -2
  591. package/src/sap/ui/model/odata/v2/ODataContextBinding.js +1 -1
  592. package/src/sap/ui/model/odata/v2/ODataListBinding.js +1 -1
  593. package/src/sap/ui/model/odata/v2/ODataModel.js +5 -5
  594. package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +18 -10
  595. package/src/sap/ui/model/odata/v2/_CreatedContextsCache.js +1 -1
  596. package/src/sap/ui/model/odata/v4/AnnotationHelper.js +1 -1
  597. package/src/sap/ui/model/odata/v4/Context.js +33 -28
  598. package/src/sap/ui/model/odata/v4/ODataBinding.js +1 -1
  599. package/src/sap/ui/model/odata/v4/ODataContextBinding.js +19 -13
  600. package/src/sap/ui/model/odata/v4/ODataListBinding.js +199 -156
  601. package/src/sap/ui/model/odata/v4/ODataMetaModel.js +11 -9
  602. package/src/sap/ui/model/odata/v4/ODataModel.js +10 -5
  603. package/src/sap/ui/model/odata/v4/ODataParentBinding.js +10 -7
  604. package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +2 -2
  605. package/src/sap/ui/model/odata/v4/ODataUtils.js +1 -1
  606. package/src/sap/ui/model/odata/v4/SubmitMode.js +1 -1
  607. package/src/sap/ui/model/odata/v4/ValueListType.js +1 -1
  608. package/src/sap/ui/model/odata/v4/_AnnotationHelperExpression.js +1 -1
  609. package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +231 -90
  610. package/src/sap/ui/model/odata/v4/lib/_AggregationHelper.js +34 -21
  611. package/src/sap/ui/model/odata/v4/lib/_Batch.js +1 -1
  612. package/src/sap/ui/model/odata/v4/lib/_Cache.js +72 -20
  613. package/src/sap/ui/model/odata/v4/lib/_ConcatHelper.js +1 -1
  614. package/src/sap/ui/model/odata/v4/lib/_GroupLock.js +1 -1
  615. package/src/sap/ui/model/odata/v4/lib/_Helper.js +1 -1
  616. package/src/sap/ui/model/odata/v4/lib/_MetadataConverter.js +1 -1
  617. package/src/sap/ui/model/odata/v4/lib/_MetadataRequestor.js +1 -1
  618. package/src/sap/ui/model/odata/v4/lib/_MinMaxHelper.js +1 -1
  619. package/src/sap/ui/model/odata/v4/lib/_Parser.js +1 -1
  620. package/src/sap/ui/model/odata/v4/lib/_Requestor.js +10 -6
  621. package/src/sap/ui/model/odata/v4/lib/_V2MetadataConverter.js +1 -1
  622. package/src/sap/ui/model/odata/v4/lib/_V2Requestor.js +1 -1
  623. package/src/sap/ui/model/odata/v4/lib/_V4MetadataConverter.js +1 -1
  624. package/src/sap/ui/model/odata/v4/ts.js +1 -1
  625. package/src/sap/ui/model/resource/ResourceModel.js +2 -2
  626. package/src/sap/ui/model/resource/ResourcePropertyBinding.js +1 -1
  627. package/src/sap/ui/model/type/Boolean.js +2 -2
  628. package/src/sap/ui/model/type/Currency.js +2 -2
  629. package/src/sap/ui/model/type/Date.js +2 -2
  630. package/src/sap/ui/model/type/DateInterval.js +2 -2
  631. package/src/sap/ui/model/type/DateTime.js +2 -2
  632. package/src/sap/ui/model/type/DateTimeInterval.js +2 -2
  633. package/src/sap/ui/model/type/FileSize.js +2 -2
  634. package/src/sap/ui/model/type/Float.js +2 -2
  635. package/src/sap/ui/model/type/Integer.js +2 -2
  636. package/src/sap/ui/model/type/String.js +2 -2
  637. package/src/sap/ui/model/type/Time.js +2 -2
  638. package/src/sap/ui/model/type/TimeInterval.js +2 -2
  639. package/src/sap/ui/model/type/Unit.js +2 -2
  640. package/src/sap/ui/model/xml/XMLListBinding.js +1 -1
  641. package/src/sap/ui/model/xml/XMLModel.js +2 -2
  642. package/src/sap/ui/model/xml/XMLPropertyBinding.js +1 -1
  643. package/src/sap/ui/model/xml/XMLTreeBinding.js +1 -1
  644. package/src/sap/ui/performance/BeaconRequest.js +1 -1
  645. package/src/sap/ui/performance/Measurement.js +1 -1
  646. package/src/sap/ui/performance/XHRInterceptor.js +1 -1
  647. package/src/sap/ui/performance/trace/FESR.js +1 -1
  648. package/src/sap/ui/performance/trace/FESRHelper.js +1 -1
  649. package/src/sap/ui/performance/trace/Interaction.js +1 -1
  650. package/src/sap/ui/performance/trace/Passport.js +1 -1
  651. package/src/sap/ui/performance/trace/initTraces.js +1 -1
  652. package/src/sap/ui/qunit/QUnitUtils.js +1 -1
  653. package/src/sap/ui/qunit/qunit-2-css.js +1 -1
  654. package/src/sap/ui/qunit/qunit-coverage-istanbul.js +1 -1
  655. package/src/sap/ui/qunit/qunit-coverage.js +1 -1
  656. package/src/sap/ui/qunit/qunit-css.js +1 -1
  657. package/src/sap/ui/qunit/qunit-junit.js +1 -1
  658. package/src/sap/ui/qunit/qunit-redirect.js +1 -1
  659. package/src/sap/ui/qunit/sinon-qunit-bridge.js +1 -1
  660. package/src/sap/ui/qunit/utils/ControlIterator.js +2 -2
  661. package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +6 -6
  662. package/src/sap/ui/qunit/utils/createAndAppendDiv.js +1 -1
  663. package/src/sap/ui/qunit/utils/nextUIUpdate.js +1 -1
  664. package/src/sap/ui/qunit/utils/waitForThemeApplied.js +1 -1
  665. package/src/sap/ui/security/FrameOptions.js +1 -1
  666. package/src/sap/ui/test/BlanketReporter.js +1 -1
  667. package/src/sap/ui/test/BranchTracking.js +5 -1
  668. package/src/sap/ui/test/ModuleTracking.js +1 -1
  669. package/src/sap/ui/test/Opa.js +1 -1
  670. package/src/sap/ui/test/Opa5.js +1 -1
  671. package/src/sap/ui/test/OpaBuilder.js +1 -1
  672. package/src/sap/ui/test/OpaExtension.js +1 -1
  673. package/src/sap/ui/test/OpaPlugin.js +1 -1
  674. package/src/sap/ui/test/PageObjectFactory.js +1 -1
  675. package/src/sap/ui/test/RecordReplay.js +1 -1
  676. package/src/sap/ui/test/RecorderHotkeyListener.js +1 -1
  677. package/src/sap/ui/test/TestUtils.js +1 -1
  678. package/src/sap/ui/test/_BrowserLogCollector.js +1 -1
  679. package/src/sap/ui/test/_ControlFinder.js +1 -1
  680. package/src/sap/ui/test/_FocusListener.js +1 -1
  681. package/src/sap/ui/test/_LogCollector.js +1 -1
  682. package/src/sap/ui/test/_OpaLogger.js +1 -1
  683. package/src/sap/ui/test/_OpaUriParameterParser.js +1 -1
  684. package/src/sap/ui/test/_ParameterValidator.js +1 -1
  685. package/src/sap/ui/test/_UsageReport.js +1 -1
  686. package/src/sap/ui/test/_ValidationParameters.js +1 -1
  687. package/src/sap/ui/test/actions/Action.js +1 -1
  688. package/src/sap/ui/test/actions/Drag.js +1 -1
  689. package/src/sap/ui/test/actions/Drop.js +1 -1
  690. package/src/sap/ui/test/actions/EnterText.js +2 -6
  691. package/src/sap/ui/test/actions/Press.js +1 -1
  692. package/src/sap/ui/test/actions/Scroll.js +1 -1
  693. package/src/sap/ui/test/autowaiter/WaiterBase.js +1 -1
  694. package/src/sap/ui/test/autowaiter/_UIUpdatesWaiter.js +1 -1
  695. package/src/sap/ui/test/autowaiter/_XHRWaiter.js +1 -1
  696. package/src/sap/ui/test/autowaiter/_autoWaiter.js +1 -1
  697. package/src/sap/ui/test/autowaiter/_autoWaiterAsync.js +1 -1
  698. package/src/sap/ui/test/autowaiter/_cssAnimationWaiter.js +1 -1
  699. package/src/sap/ui/test/autowaiter/_cssTransitionWaiter.js +1 -1
  700. package/src/sap/ui/test/autowaiter/_fetchWaiter.js +1 -1
  701. package/src/sap/ui/test/autowaiter/_jsAnimationWaiter.js +1 -1
  702. package/src/sap/ui/test/autowaiter/_moduleWaiter.js +1 -1
  703. package/src/sap/ui/test/autowaiter/_navigationContainerWaiter.js +1 -1
  704. package/src/sap/ui/test/autowaiter/_promiseWaiter.js +1 -1
  705. package/src/sap/ui/test/autowaiter/_resourceWaiter.js +1 -1
  706. package/src/sap/ui/test/autowaiter/_timeoutWaiter.js +1 -1
  707. package/src/sap/ui/test/autowaiter/_utils.js +1 -1
  708. package/src/sap/ui/test/generic/GenericTestCollection.js +2 -1
  709. package/src/sap/ui/test/generic/TestBase.js +5 -5
  710. package/src/sap/ui/test/generic/Utils.js +4 -3
  711. package/src/sap/ui/test/generic/_EnforceSemanticRendering.js +1 -1
  712. package/src/sap/ui/test/gherkin/GherkinTestGenerator.js +1 -1
  713. package/src/sap/ui/test/gherkin/StepDefinitions.js +1 -1
  714. package/src/sap/ui/test/gherkin/dataTableUtils.js +1 -1
  715. package/src/sap/ui/test/gherkin/opa5TestHarness.js +1 -1
  716. package/src/sap/ui/test/gherkin/qUnitTestHarness.js +1 -1
  717. package/src/sap/ui/test/gherkin/simpleGherkinParser.js +1 -1
  718. package/src/sap/ui/test/launchers/componentLauncher.js +1 -1
  719. package/src/sap/ui/test/launchers/iFrameLauncher.js +1 -1
  720. package/src/sap/ui/test/matchers/AggregationContainsPropertyEqual.js +1 -1
  721. package/src/sap/ui/test/matchers/AggregationEmpty.js +1 -1
  722. package/src/sap/ui/test/matchers/AggregationFilled.js +1 -1
  723. package/src/sap/ui/test/matchers/AggregationLengthEquals.js +1 -1
  724. package/src/sap/ui/test/matchers/Ancestor.js +1 -1
  725. package/src/sap/ui/test/matchers/BindingPath.js +1 -1
  726. package/src/sap/ui/test/matchers/Descendant.js +1 -1
  727. package/src/sap/ui/test/matchers/I18NText.js +1 -1
  728. package/src/sap/ui/test/matchers/Interactable.js +1 -1
  729. package/src/sap/ui/test/matchers/LabelFor.js +1 -1
  730. package/src/sap/ui/test/matchers/Matcher.js +1 -1
  731. package/src/sap/ui/test/matchers/MatcherFactory.js +1 -1
  732. package/src/sap/ui/test/matchers/Properties.js +1 -1
  733. package/src/sap/ui/test/matchers/PropertyStrictEquals.js +1 -1
  734. package/src/sap/ui/test/matchers/Sibling.js +1 -1
  735. package/src/sap/ui/test/matchers/Visible.js +1 -1
  736. package/src/sap/ui/test/matchers/_Busy.js +1 -1
  737. package/src/sap/ui/test/matchers/_Editable.js +1 -1
  738. package/src/sap/ui/test/matchers/_Enabled.js +1 -1
  739. package/src/sap/ui/test/matchers/_Visitor.js +1 -1
  740. package/src/sap/ui/test/matchers/matchers.js +1 -1
  741. package/src/sap/ui/test/opaQunit.js +1 -1
  742. package/src/sap/ui/test/pipelines/ActionPipeline.js +1 -1
  743. package/src/sap/ui/test/pipelines/MatcherPipeline.js +1 -1
  744. package/src/sap/ui/test/pipelines/PipelineFactory.js +1 -1
  745. package/src/sap/ui/test/qunitPause.js +1 -1
  746. package/src/sap/ui/test/selectors/_BindingPath.js +1 -1
  747. package/src/sap/ui/test/selectors/_ControlSelectorGenerator.js +1 -1
  748. package/src/sap/ui/test/selectors/_ControlSelectorValidator.js +1 -1
  749. package/src/sap/ui/test/selectors/_ControlType.js +1 -1
  750. package/src/sap/ui/test/selectors/_DropdownItem.js +1 -1
  751. package/src/sap/ui/test/selectors/_GlobalID.js +1 -1
  752. package/src/sap/ui/test/selectors/_LabelFor.js +1 -1
  753. package/src/sap/ui/test/selectors/_Properties.js +1 -1
  754. package/src/sap/ui/test/selectors/_Selector.js +1 -1
  755. package/src/sap/ui/test/selectors/_TableRowItem.js +1 -1
  756. package/src/sap/ui/test/selectors/_ViewID.js +1 -1
  757. package/src/sap/ui/test/selectors/_selectors.js +1 -1
  758. package/src/sap/ui/test/starter/_configureLoader.js +1 -1
  759. package/src/sap/ui/test/starter/_setupAndStart.js +1 -1
  760. package/src/sap/ui/test/starter/_utils.js +1 -1
  761. package/src/sap/ui/test/starter/createSuite.js +1 -1
  762. package/src/sap/ui/test/starter/runTest.js +1 -1
  763. package/src/sap/ui/thirdparty/RequestRecorder.js +1 -1
  764. package/src/sap/ui/thirdparty/caja-html-sanitizer.js +1 -1
  765. package/src/sap/ui/util/ActivityDetection.js +1 -1
  766. package/src/sap/ui/util/Mobile.js +1 -1
  767. package/src/sap/ui/util/Storage.js +2 -2
  768. package/src/sap/ui/util/XMLHelper.js +1 -1
  769. package/src/sap/ui/util/_FeatureDetection.js +1 -1
  770. package/src/sap/ui/util/defaultLinkTypes.js +1 -1
  771. package/src/sap/ui/util/isCrossOriginURL.js +1 -1
  772. package/src/sap/ui/util/openWindow.js +1 -1
  773. package/src/sap-ui-boot.js +1 -1
  774. package/src/sap-ui-core-nojQuery.js +1 -1
  775. package/src/sap-ui-core.js +1 -1
  776. package/src/sap-ui-debug.js +1 -1
  777. package/src/ui5loader-autoconfig.js +24 -16
  778. package/src/ui5loader.js +10 -5
  779. package/test/sap/ui/core/demokit/sample/MessageManager/ODataBackendMessagesComp/ui5.yaml +1 -1
  780. package/test/sap/ui/core/demokit/sample/ViewTemplate/types/Template.controller.js +3 -3
  781. package/test/sap/ui/core/demokit/sample/common/Controller.js +0 -1
  782. package/test/sap/ui/core/demokit/sample/matcher/BindingPath/ui5.yaml +1 -1
  783. package/test/sap/ui/core/demokit/sample/matcher/Descendant/ui5.yaml +1 -1
  784. package/test/sap/ui/core/demokit/sample/matcher/I18NText/ui5.yaml +1 -1
  785. package/test/sap/ui/core/demokit/sample/matcher/LabelFor/ui5.yaml +1 -1
  786. package/test/sap/ui/core/demokit/sample/odata/v4/Ancestry/Main.controller.js +1 -1
  787. package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/Main.controller.js +14 -1
  788. package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/Main.view.xml +6 -0
  789. package/test/sap/ui/core/demokit/sample/odata/v4/MultipleInlineCreationRowsGrid/MIT.MultipleInlineCreationRowsGrid.html +5 -0
  790. package/test/sap/ui/core/demokit/sample/odata/v4/MultipleInlineCreationRowsGrid/Main.view.xml +9 -2
  791. package/test/sap/ui/core/demokit/sample/odata/v4/MultipleInlineCreationRowsGrid/Opa.qunit.js +23 -0
  792. package/test/sap/ui/core/demokit/sample/odata/v4/MultipleInlineCreationRowsGrid/pages/Main.js +58 -1
  793. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/RecursiveHierarchy.controller.js +75 -30
  794. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/RecursiveHierarchy.view.xml +21 -3
  795. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/SandboxModel.js +84 -28
  796. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/data/metadata.xml +3 -3
  797. package/test/sap/ui/core/demokit/tutorial/databinding/01/ui5.yaml +1 -1
  798. package/test/sap/ui/core/demokit/tutorial/databinding/02/ui5.yaml +1 -1
  799. package/test/sap/ui/core/demokit/tutorial/databinding/03/ui5.yaml +1 -1
  800. package/test/sap/ui/core/demokit/tutorial/databinding/04/ui5.yaml +1 -1
  801. package/test/sap/ui/core/demokit/tutorial/databinding/05/ui5.yaml +1 -1
  802. package/test/sap/ui/core/demokit/tutorial/databinding/06/ui5.yaml +1 -1
  803. package/test/sap/ui/core/demokit/tutorial/databinding/07/ui5.yaml +1 -1
  804. package/test/sap/ui/core/demokit/tutorial/databinding/08/ui5.yaml +1 -1
  805. package/test/sap/ui/core/demokit/tutorial/databinding/09/ui5.yaml +1 -1
  806. package/test/sap/ui/core/demokit/tutorial/databinding/10/ui5.yaml +1 -1
  807. package/test/sap/ui/core/demokit/tutorial/databinding/11/ui5.yaml +1 -1
  808. package/test/sap/ui/core/demokit/tutorial/databinding/12/ui5.yaml +1 -1
  809. package/test/sap/ui/core/demokit/tutorial/databinding/13/ui5.yaml +1 -1
  810. package/test/sap/ui/core/demokit/tutorial/databinding/14/ui5.yaml +1 -1
  811. package/test/sap/ui/core/demokit/tutorial/databinding/15/ui5.yaml +1 -1
  812. package/test/sap/ui/core/demokit/tutorial/mockserver/01/ui5.yaml +1 -1
  813. package/test/sap/ui/core/demokit/tutorial/mockserver/02/ui5.yaml +1 -1
  814. package/test/sap/ui/core/demokit/tutorial/mockserver/03/ui5.yaml +1 -1
  815. package/test/sap/ui/core/demokit/tutorial/mockserver/04/ui5.yaml +1 -1
  816. package/test/sap/ui/core/demokit/tutorial/navigation/01/ui5.yaml +1 -1
  817. package/test/sap/ui/core/demokit/tutorial/navigation/02/ui5.yaml +1 -1
  818. package/test/sap/ui/core/demokit/tutorial/navigation/03/ui5.yaml +1 -1
  819. package/test/sap/ui/core/demokit/tutorial/navigation/04/ui5.yaml +1 -1
  820. package/test/sap/ui/core/demokit/tutorial/navigation/05/ui5.yaml +1 -1
  821. package/test/sap/ui/core/demokit/tutorial/navigation/06/ui5.yaml +1 -1
  822. package/test/sap/ui/core/demokit/tutorial/navigation/07/ui5.yaml +1 -1
  823. package/test/sap/ui/core/demokit/tutorial/navigation/08/ui5.yaml +1 -1
  824. package/test/sap/ui/core/demokit/tutorial/navigation/09/ui5.yaml +1 -1
  825. package/test/sap/ui/core/demokit/tutorial/navigation/10/ui5.yaml +1 -1
  826. package/test/sap/ui/core/demokit/tutorial/navigation/11/ui5.yaml +1 -1
  827. package/test/sap/ui/core/demokit/tutorial/navigation/12/ui5.yaml +1 -1
  828. package/test/sap/ui/core/demokit/tutorial/navigation/13/ui5.yaml +1 -1
  829. package/test/sap/ui/core/demokit/tutorial/navigation/14/ui5.yaml +1 -1
  830. package/test/sap/ui/core/demokit/tutorial/navigation/15/ui5.yaml +1 -1
  831. package/test/sap/ui/core/demokit/tutorial/navigation/16/ui5.yaml +1 -1
  832. package/test/sap/ui/core/demokit/tutorial/navigation/17/ui5.yaml +1 -1
  833. package/test/sap/ui/core/demokit/tutorial/odatav4/01/ui5.yaml +1 -1
  834. package/test/sap/ui/core/demokit/tutorial/odatav4/02/ui5.yaml +1 -1
  835. package/test/sap/ui/core/demokit/tutorial/odatav4/03/ui5.yaml +1 -1
  836. package/test/sap/ui/core/demokit/tutorial/odatav4/04/ui5.yaml +1 -1
  837. package/test/sap/ui/core/demokit/tutorial/odatav4/05/ui5.yaml +1 -1
  838. package/test/sap/ui/core/demokit/tutorial/odatav4/06/ui5.yaml +1 -1
  839. package/test/sap/ui/core/demokit/tutorial/odatav4/07/ui5.yaml +1 -1
  840. package/test/sap/ui/core/demokit/tutorial/odatav4/08/ui5.yaml +1 -1
  841. package/test/sap/ui/core/demokit/tutorial/odatav4/09/ui5.yaml +1 -1
  842. package/test/sap/ui/core/demokit/tutorial/odatav4/10/ui5.yaml +1 -1
  843. package/test/sap/ui/core/demokit/tutorial/odatav4/11/ui5.yaml +1 -1
  844. package/test/sap/ui/core/demokit/tutorial/troubleshooting/01/ui5.yaml +1 -1
  845. package/test/sap/ui/core/qunit/BindingParser.qunit.js +4 -4
  846. package/test/sap/ui/core/qunit/CommandExecution.qunit.js +3 -1
  847. package/test/sap/ui/core/qunit/Core.qunit.js +1 -1
  848. package/test/sap/ui/core/qunit/DataBinding.qunit.js +6 -6
  849. package/test/sap/ui/core/qunit/Declarative.qunit.js +6 -6
  850. package/test/sap/ui/core/qunit/Element_base.qunit.js +8 -7
  851. package/test/sap/ui/core/qunit/Element_base_legacyAPIs.qunit.js +48 -0
  852. package/test/sap/ui/core/qunit/Element_closestTo.qunit.js +1 -1
  853. package/test/sap/ui/core/qunit/Fragment.qunit.js +63 -13
  854. package/test/sap/ui/core/qunit/HTML.qunit.js +5 -5
  855. package/test/sap/ui/core/qunit/Lib.qunit.js +19 -2
  856. package/test/sap/ui/core/qunit/PlaceAt.qunit.js +6 -6
  857. package/test/sap/ui/core/qunit/Shortcut.qunit.js +9 -1
  858. package/test/sap/ui/core/qunit/UIArea.qunit.js +7 -6
  859. package/test/sap/ui/core/qunit/analytics/odata4analytics.qunit.js +41 -0
  860. package/test/sap/ui/core/qunit/base/Config_cascade.qunit.html +7 -5
  861. package/test/sap/ui/core/qunit/base/Config_cascade.qunit.js +46 -7
  862. package/test/sap/ui/core/qunit/base/config/GlobalConfigForCascade.js +24 -21
  863. package/test/sap/ui/core/qunit/component/Component.qunit.js +9 -8
  864. package/test/sap/ui/core/qunit/component/ComponentContainer.qunit.js +1 -1
  865. package/test/sap/ui/core/qunit/component/Models.qunit.js +29 -30
  866. package/test/sap/ui/core/qunit/component/UIComponent.qunit.js +3 -3
  867. package/test/sap/ui/core/qunit/generic/ControlMemoryLeaks.qunit.js +4 -3
  868. package/test/sap/ui/core/qunit/generic/legacy/ControlMemoryLeaks.qunit.js +6 -7
  869. package/test/sap/ui/core/qunit/generic/legacy/DuplicateIdCheck.qunit.js +3 -2
  870. package/test/sap/ui/core/qunit/generic/legacy/testsuite.generic.qunit.js +3 -0
  871. package/test/sap/ui/core/qunit/i18n/LocaleData.qunit.js +65 -0
  872. package/test/sap/ui/core/qunit/i18n/UI5Date.qunit.js +107 -0
  873. package/test/sap/ui/core/qunit/jquery.sap.ui.qunit.js +12 -12
  874. package/test/sap/ui/core/qunit/loader/syncMode_unavoidablySync.qunit.js +54 -1
  875. package/test/sap/ui/core/qunit/messages/messagesGeneral.qunit.js +3 -1
  876. package/test/sap/ui/core/qunit/mockserver/testdata/shopping/Products.json +1 -1
  877. package/test/sap/ui/core/qunit/model/FilterProcessor.qunit.js +22 -8
  878. package/test/sap/ui/core/qunit/mvc/AnyView.qunit.js +3 -0
  879. package/test/sap/ui/core/qunit/mvc/Controller.qunit.js +3 -2
  880. package/test/sap/ui/core/qunit/mvc/EventHandlerResolver.qunit.js +2 -2
  881. package/test/sap/ui/core/qunit/mvc/View.qunit.js +38 -35
  882. package/test/sap/ui/core/qunit/mvc/XMLTemplateProcessor.qunit.js +1 -1
  883. package/test/sap/ui/core/qunit/mvc/XMLTemplateProcessorAsync.qunit.js +1 -1
  884. package/test/sap/ui/core/qunit/mvc/XMLTemplateProcessorRequireXML.qunit.js +5 -5
  885. package/test/sap/ui/core/qunit/mvc/XMLView.qunit.js +1 -1
  886. package/test/sap/ui/core/qunit/mvc/extensions/ControllerMetadata.qunit.js +6 -2
  887. package/test/sap/ui/core/qunit/mvc/extensions/Controllerextensions.qunit.js +12 -0
  888. package/test/sap/ui/core/qunit/mvc/extensions/Controllerextensions_legacy.qunit.js +12 -0
  889. package/test/sap/ui/core/qunit/mvc/extensions/testdata/AnotherMain.controller.js +3 -1
  890. package/test/sap/ui/core/qunit/mvc/testdata/XMLViewEmbeddingTypedViews.view.xml +1 -1
  891. package/test/sap/ui/core/qunit/mvc/viewprocessing/ViewProcessing.qunit.js +26 -7
  892. package/test/sap/ui/core/qunit/mvc_legacyAPIs/XMLTemplateProcessorRequireXML_legacyAPIs.qunit.js +5 -5
  893. package/test/sap/ui/core/qunit/mvc_legacyAPIs/XMLView_legacyAPIs.qunit.js +2 -2
  894. package/test/sap/ui/core/qunit/odata/ODataMessageParserNoFakeService.qunit.js +36 -34
  895. package/test/sap/ui/core/qunit/odata/ODataUtils.qunit.js +21 -0
  896. package/test/sap/ui/core/qunit/odata/v2/ODataModel.integration.qunit.js +175 -0
  897. package/test/sap/ui/core/qunit/odata/v2/ODataTreeBindingNoFakeService.qunit.js +11 -5
  898. package/test/sap/ui/core/qunit/odata/v4/Context.qunit.js +43 -22
  899. package/test/sap/ui/core/qunit/odata/v4/ODataContextBinding.qunit.js +75 -27
  900. package/test/sap/ui/core/qunit/odata/v4/ODataListBinding.qunit.js +318 -217
  901. package/test/sap/ui/core/qunit/odata/v4/ODataMetaModel.qunit.js +34 -16
  902. package/test/sap/ui/core/qunit/odata/v4/ODataModel.integration.qunit.js +2360 -177
  903. package/test/sap/ui/core/qunit/odata/v4/ODataParentBinding.qunit.js +43 -35
  904. package/test/sap/ui/core/qunit/odata/v4/data/metadata_special_cases.xml +20 -2
  905. package/test/sap/ui/core/qunit/odata/v4/lib/_AggregationCache.qunit.js +487 -139
  906. package/test/sap/ui/core/qunit/odata/v4/lib/_AggregationHelper.qunit.js +70 -33
  907. package/test/sap/ui/core/qunit/odata/v4/lib/_Cache.qunit.js +258 -10
  908. package/test/sap/ui/core/qunit/odata/v4/lib/_Requestor.qunit.js +10 -2
  909. package/test/sap/ui/core/qunit/opa/actions/EnterText.qunit.js +38 -14
  910. package/test/sap/ui/core/qunit/routing/async/Router.qunit.js +102 -52
  911. package/test/sap/ui/core/qunit/routing/async/Target.qunit.js +1 -1
  912. package/test/sap/ui/core/qunit/routing/async/Targets.qunit.js +4 -5
  913. package/test/sap/ui/core/qunit/routing/async/TitleHistory.qunit.js +1 -1
  914. package/test/sap/ui/core/qunit/routing/fixture/router/component/parentRoute/Child/Component.js +1 -0
  915. package/test/sap/ui/core/qunit/routing/fixture/router/component/parentRoute/Child/manifest.json +1 -5
  916. package/test/sap/ui/core/qunit/routing/fixture/router/component/parentRoute/Parent/Component.js +1 -0
  917. package/test/sap/ui/core/qunit/routing/fixture/router/component/parentRoute/Parent/manifest.json +1 -5
  918. package/test/sap/ui/core/qunit/routing/fixture/router/component/parentRoute/ParentExtended/Component.js +15 -0
  919. package/test/sap/ui/core/qunit/routing/fixture/router/component/parentRoute/ParentExtended/manifest.json +8 -0
  920. package/test/sap/ui/core/qunit/routing/sync/Router.qunit.js +2 -2
  921. package/test/sap/ui/core/qunit/routing/sync/Targets.qunit.js +2 -3
  922. package/test/sap/ui/core/qunit/testdata/fragments/XMLTestFragmentWithXMLView.fragment.xml +5 -0
  923. package/test/sap/ui/core/qunit/testsuites/testsuite.base.configuration.qunit.js +1 -1
  924. package/test/sap/ui/core/qunit/testsuites/testsuite.control.framework.qunit.js +4 -0
  925. package/test/sap/ui/core/qunit/types/DateFormat.qunit.js +190 -0
  926. package/test/sap/ui/core/qunit/types/DateInterval.qunit.js +2 -2
  927. package/test/sap/ui/core/qunit/types/TimezoneUtil.qunit.js +114 -2
  928. package/test/sap/ui/core/qunit/ui5classes/ManagedObjectRegistry.qunit.js +161 -0
  929. package/test/sap/ui/core/qunit/ui5classes/ManagedObjectRegistry_legacyAPIs.qunit.js +150 -0
  930. package/test/sap/ui/core/qunit/ui5classes/testsuite.ui5classes.qunit.js +84 -0
  931. package/test/sap/ui/core/qunit/util/ViewSerializer.qunit.js +4 -3
  932. package/test/sap/ui/core/qunit/util/reflection/JsControlTreeModifier.qunit.js +20 -0
  933. package/test/sap/ui/core/qunit/util/reflection/XmlTreeModifier.qunit.js +20 -2
  934. package/test/sap/ui/core/relnotes/changes-1.120.json +246 -0
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * OpenUI5
3
- * (c) Copyright 2009-2023 SAP SE or an SAP affiliate company.
3
+ * (c) Copyright 2009-2024 SAP SE or an SAP affiliate company.
4
4
  * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
5
  */
6
6
 
@@ -13,9 +13,10 @@ sap.ui.define([
13
13
  "./_Helper",
14
14
  "./_MinMaxHelper",
15
15
  "sap/base/Log",
16
- "sap/ui/base/SyncPromise"
16
+ "sap/ui/base/SyncPromise",
17
+ "sap/ui/model/odata/ODataUtils"
17
18
  ], function (_AggregationHelper, _Cache, _ConcatHelper, _GroupLock, _Helper, _MinMaxHelper, Log,
18
- SyncPromise) {
19
+ SyncPromise, ODataUtils) {
19
20
  "use strict";
20
21
 
21
22
  //*********************************************************************************************
@@ -174,7 +175,7 @@ sap.ui.define([
174
175
  iIndex = _Cache.getElementIndex(this.aElements, sPredicate, iIndex);
175
176
  // remove in parent cache
176
177
  const iIndexInParentCache = oParentCache.removeElement(
177
- _Helper.getPrivateAnnotation(oElement, "index", 0), sPredicate);
178
+ _Helper.getPrivateAnnotation(oElement, "rank", 0), sPredicate);
178
179
  // remove the descendants in the parent cache (if any)
179
180
  const iDescendants = _Helper.getPrivateAnnotation(oElement, "descendants", 0);
180
181
  for (let i = 0; i < iDescendants; i += 1) {
@@ -187,9 +188,7 @@ sap.ui.define([
187
188
  // make parent a leaf (the direct predecessor)
188
189
  this.makeLeaf(this.aElements[iIndex - 1]);
189
190
  }
190
- if (!("@$ui5.context.isTransient" in oElement)) {
191
- this.shiftIndex(iIndex, -iOffset);
192
- }
191
+ this.shiftRank(iIndex, -iOffset);
193
192
  // remove in this cache
194
193
  this.removeElement(iIndex, sPredicate);
195
194
  // notify caller
@@ -208,8 +207,9 @@ sap.ui.define([
208
207
  * The group level cache which the given elements have been read from; omit it only for grand
209
208
  * totals or separate subtotals
210
209
  * @param {number} [iStart]
211
- * The $skip index of the first given element within the cache's collection; omit it only if
212
- * no group level cache is given or for a single created element (where it is always unknown)
210
+ * The rank (aka. $skip index) of the first given element within the cache's collection; omit
211
+ * it only if no group level cache is given or for a single created element (where it may be
212
+ * unknown)
213
213
  * @throws {Error}
214
214
  * In case an unexpected element or placeholder would be overwritten, if the given offset is
215
215
  * negative, if a resulting array index is out of bounds, in case of a duplicate predicate, or
@@ -268,9 +268,9 @@ sap.ui.define([
268
268
  }
269
269
 
270
270
  if (sTransientPredicate) { // created
271
- iStart -= 1; // "shift" index of non-created elements behind this one
271
+ iStart -= 1; // "shift" rank of non-created elements behind this one
272
272
  } else {
273
- _Helper.setPrivateAnnotation(oElement, "index", iStart + i);
273
+ _Helper.setPrivateAnnotation(oElement, "rank", iStart + i);
274
274
  }
275
275
  }
276
276
 
@@ -309,7 +309,7 @@ sap.ui.define([
309
309
  } else if (iCandidateLevel < iLevel) {
310
310
  if (!bInitialPlaceholderFound || this.isAncestorOf(iCandidateIndex, iIndex)) {
311
311
  const iCount
312
- = _Helper.getPrivateAnnotation(oCandidate, "descendants") + iOffset;
312
+ = _Helper.getPrivateAnnotation(oCandidate, "descendants", 0) + iOffset;
313
313
  _Helper.setPrivateAnnotation(oCandidate, "descendants", iCount);
314
314
  if (iCount === 0) {
315
315
  this.makeLeaf(oCandidate);
@@ -395,7 +395,7 @@ sap.ui.define([
395
395
  _Helper.getPrivateAnnotation(aElements[i], "transientPredicate")];
396
396
  }
397
397
  const aSpliced = aElements.splice(iIndex + 1, iCount);
398
- aSpliced.$index = _Helper.getPrivateAnnotation(oGroupNode, "index");
398
+ aSpliced.$rank = _Helper.getPrivateAnnotation(oGroupNode, "rank");
399
399
  _Helper.setPrivateAnnotation(oGroupNode, "spliced", aSpliced);
400
400
  aElements.$count -= iCount;
401
401
 
@@ -420,8 +420,8 @@ sap.ui.define([
420
420
  let iGroupNodeLevel = oGroupNode["@$ui5.node.level"];
421
421
  let iDescendants = _Helper.getPrivateAnnotation(oGroupNode, "descendants");
422
422
  if (iDescendants) { // => this.oAggregation.expandTo > 1
423
- // Note: "descendants" refers to LimitedDescendantCountProperty and counts descendants
424
- // within "top pyramid" only!
423
+ // Note: "descendants" refers to LimitedDescendantCount and counts descendants within
424
+ // "top pyramid" only!
425
425
  iGroupNodeLevel = this.oAggregation.expandTo;
426
426
  }
427
427
  const aElements = this.aElements;
@@ -490,6 +490,10 @@ sap.ui.define([
490
490
  if (oParentNode?.["@$ui5.node.isExpanded"] === false) {
491
491
  throw new Error("Unsupported collapsed parent: " + sParentPath);
492
492
  }
493
+ if (oParentNode && oParentNode["@$ui5.node.isExpanded"] === undefined) {
494
+ _Helper.updateAll(this.mChangeListeners, sParentPredicate, oParentNode,
495
+ {"@$ui5.node.isExpanded" : true}); // not a leaf anymore
496
+ }
493
497
 
494
498
  const iLevel = oParentNode
495
499
  ? oParentNode["@$ui5.node.level"] + 1
@@ -501,8 +505,6 @@ sap.ui.define([
501
505
  oCache = this.createGroupLevelCache(oParentNode);
502
506
  oCache.setEmpty();
503
507
  _Helper.setPrivateAnnotation(oParentNode, "cache", oCache);
504
- _Helper.updateAll(this.mChangeListeners, sParentPredicate, oParentNode,
505
- {"@$ui5.node.isExpanded" : true}); // not a leaf anymore
506
508
  }
507
509
 
508
510
  const iIndex = aElements.indexOf(oParentNode) + 1; // 0 w/o oParentNode :-)
@@ -512,8 +514,7 @@ sap.ui.define([
512
514
  this.adjustDescendantCount(oEntityData, iIndex, -1);
513
515
  }
514
516
  aElements.$count -= 1;
515
- delete aElements.$byPredicate[
516
- _Helper.getPrivateAnnotation(oEntityData, "transientPredicate")];
517
+ delete aElements.$byPredicate[sTransientPredicate];
517
518
  aElements.splice(iIndex, 1);
518
519
  });
519
520
 
@@ -525,18 +526,30 @@ sap.ui.define([
525
526
  oEntityData["@$ui5.node.level"] = iLevel; // do not send via POST!
526
527
 
527
528
  aElements.splice(iIndex, 0, null); // create a gap
528
- this.addElements(oEntityData, iIndex, oCache); // $skip index is undefined!
529
+ this.addElements(oEntityData, iIndex, oCache); // rank is undefined!
529
530
  aElements.$count += 1;
530
531
  if (oCache === this.oFirstLevel) {
531
532
  this.adjustDescendantCount(oEntityData, iIndex, +1);
532
533
  }
533
534
 
534
- return oPromise.then(function () {
535
+ return oPromise.then(async () => {
535
536
  aElements.$byPredicate[_Helper.getPrivateAnnotation(oEntityData, "predicate")]
536
537
  = oEntityData;
537
538
  // Note: #calculateKeyPredicateRH doesn't know better :-(
538
539
  oEntityData["@$ui5.node.level"] = iLevel;
539
540
 
541
+ if (this.oAggregation.expandTo >= 999) { // "expand all"
542
+ const iRank = await this.requestRank(oEntityData, oGroupLock.getUnlockedCopy());
543
+
544
+ this.oFirstLevel.removeElement(0, sTransientPredicate);
545
+ _Helper.deletePrivateAnnotation(oEntityData, "transientPredicate");
546
+ this.oFirstLevel.restoreElement(iRank, oEntityData);
547
+
548
+ delete this.aElements.$byPredicate[sTransientPredicate];
549
+ _Helper.setPrivateAnnotation(oEntityData, "rank", iRank);
550
+ this.shiftRank(iIndex, +1);
551
+ }
552
+
540
553
  return oEntityData;
541
554
  });
542
555
  };
@@ -639,15 +652,19 @@ sap.ui.define([
639
652
  iCount = aSpliced.length;
640
653
  this.aElements.$count = aOldElements.$count + iCount;
641
654
  const iLevelDiff = oGroupNode["@$ui5.node.level"] + 1 - aSpliced[0]["@$ui5.node.level"];
642
- const iIndexDiff = _Helper.getPrivateAnnotation(oGroupNode, "index") - aSpliced.$index;
655
+ const iRankDiff = _Helper.getPrivateAnnotation(oGroupNode, "rank") - aSpliced.$rank;
643
656
  aSpliced.forEach(function (oElement) {
644
657
  var sPredicate = _Helper.getPrivateAnnotation(oElement, "predicate");
645
658
 
646
- oElement["@$ui5.node.level"] += iLevelDiff;
659
+ if (oElement["@$ui5.node.level"]) {
660
+ // Note: level 0 is used for initial placeholders of 1st level cache in case
661
+ // expandTo > 1
662
+ oElement["@$ui5.node.level"] += iLevelDiff;
663
+ }
647
664
  if (_Helper.getPrivateAnnotation(oElement, "parent") === that.oFirstLevel) {
648
- const iIndex = _Helper.getPrivateAnnotation(oElement, "index");
649
- if (iIndex !== undefined) {
650
- _Helper.setPrivateAnnotation(oElement, "index", iIndex + iIndexDiff);
665
+ const iRank = _Helper.getPrivateAnnotation(oElement, "rank");
666
+ if (iRank !== undefined) {
667
+ _Helper.setPrivateAnnotation(oElement, "rank", iRank + iRankDiff);
651
668
  }
652
669
  }
653
670
  if (!_Helper.hasPrivateAnnotation(oElement, "placeholder")) {
@@ -748,6 +765,45 @@ sap.ui.define([
748
765
  });
749
766
  };
750
767
 
768
+ /**
769
+ * Returns a promise to be resolved with an OData object for the requested parent node.
770
+ *
771
+ * @param {number} iIndex
772
+ * The index of the child node
773
+ * @param {sap.ui.model.odata.v4.lib._GroupLock} oGroupLock
774
+ * A lock for the group to associate the requests with
775
+ * @returns {sap.ui.base.SyncPromise}
776
+ * A promise to be resolved with the requested data of the parent.
777
+ *
778
+ * @public
779
+ */
780
+ _AggregationCache.prototype.fetchParent = function (iIndex, oGroupLock) {
781
+ const sFilter = _Helper.getKeyFilter(this.aElements[iIndex], this.oAggregation.$metaPath,
782
+ this.getTypes());
783
+ const mQueryOptions = Object.assign({}, this.mQueryOptions);
784
+
785
+ mQueryOptions.$apply = "ancestors($root" + this.oAggregation.$path
786
+ + "," + this.oAggregation.hierarchyQualifier + "," + this.oAggregation.$NodeProperty
787
+ + ",filter(" + sFilter + "),1)";
788
+
789
+ const sQueryString = this.sResourcePath
790
+ + this.oRequestor.buildQueryString(/*sMetaPath*/null, mQueryOptions);
791
+
792
+ return SyncPromise.all([
793
+ this.oRequestor.request("GET", sQueryString, oGroupLock),
794
+ this.fetchTypes()
795
+ ]).then((aResults) => {
796
+ const oParent = aResults[0].value[0];
797
+ this.visitResponse(oParent, aResults[1],
798
+ _Helper.getMetaPath(_Helper.buildPath(this.sMetaPath, "")));
799
+
800
+ this.aElements.$byPredicate[_Helper.getPrivateAnnotation(oParent, "predicate")]
801
+ = oParent;
802
+
803
+ return oParent;
804
+ });
805
+ };
806
+
751
807
  /**
752
808
  * Returns a promise to be resolved with an OData object for the requested data.
753
809
  *
@@ -865,16 +921,13 @@ sap.ui.define([
865
921
  };
866
922
 
867
923
  /**
868
- * Returns the index of a parent node
924
+ * Returns the index of a parent node.
869
925
  *
870
926
  * @param {number} iIndex
871
927
  * The index of the child node
872
- * @returns {number|null}
928
+ * @returns {number|undefined}
873
929
  * The parent node's index, or -1 if the given node is a root node and thus has
874
- * no parent
875
- * @throws {Error}
876
- * If the index of a parent cannot be found
877
- *
930
+ * no parent, or <code>undefined</code> if the parent node hasn't been read yet
878
931
  *
879
932
  * @public
880
933
  */
@@ -885,13 +938,22 @@ sap.ui.define([
885
938
  return -1; // a root has no parent
886
939
  }
887
940
 
888
- for (; iIndex >= 0; iIndex -= 1) {
889
- if (this.aElements[iIndex]["@$ui5.node.level"] < iLevel) {
890
- return iIndex;
941
+ let bInitialPlaceholderFound = false;
942
+ for (let i = iIndex; i >= 0; i -= 1) {
943
+ const oCandidate = this.aElements[i];
944
+ const iCandidateLevel = oCandidate["@$ui5.node.level"];
945
+
946
+ if (iCandidateLevel === 0) {
947
+ bInitialPlaceholderFound = true;
948
+ } else if (iCandidateLevel < iLevel) {
949
+ if (iCandidateLevel === iLevel - 1
950
+ && (!bInitialPlaceholderFound || this.isAncestorOf(i, iIndex))) {
951
+ return i;
952
+ }
953
+ break; // missed the parent
891
954
  }
892
955
  }
893
-
894
- throw new Error("Unexpected error");
956
+ // return undefined;
895
957
  };
896
958
 
897
959
  /**
@@ -996,13 +1058,13 @@ sap.ui.define([
996
1058
  /**
997
1059
  * Moves the (child) node with the given path to the parent node with the given path by sending
998
1060
  * a PATCH request for "<parent navigation>@odata.bind". The (child) node may be a leaf or a
999
- * collapsed node, but not expanded!
1061
+ * collapsed node, but not expanded! Omitting a new parent turns the child into a root.
1000
1062
  *
1001
1063
  * @param {sap.ui.model.odata.v4.lib._GroupLock} oGroupLock
1002
1064
  * A lock for the group to associate the requests with
1003
1065
  * @param {string} sChildPath
1004
1066
  * The (child) node's path relative to the cache
1005
- * @param {string} sParentPath
1067
+ * @param {string} [sParentPath=null]
1006
1068
  * The parent node's path relative to the cache
1007
1069
  * @returns {sap.ui.base.SyncPromise<number>}
1008
1070
  * A promise which is resolved with the number of child nodes added (normally one, but maybe
@@ -1011,20 +1073,24 @@ sap.ui.define([
1011
1073
  *
1012
1074
  * @public
1013
1075
  */
1014
- _AggregationCache.prototype.move = function (oGroupLock, sChildPath, sParentPath) {
1076
+ _AggregationCache.prototype.move = function (oGroupLock, sChildPath, sParentPath = null) {
1015
1077
  const sTransientPredicate = "($uid=" + _Helper.uid() + ")";
1016
1078
 
1017
1079
  const sChildPredicate = sChildPath.slice(sChildPath.indexOf("("));
1018
1080
  const oChildNode = this.aElements.$byPredicate[sChildPredicate];
1019
- const sParentPredicate = sParentPath.slice(sParentPath.indexOf("("));
1081
+ const sParentPredicate = sParentPath?.slice(sParentPath.indexOf("("));
1020
1082
  const oParentNode = this.aElements.$byPredicate[sParentPredicate];
1021
1083
 
1022
1084
  let oReadPromise;
1023
- let oCache = _Helper.getPrivateAnnotation(oParentNode, "cache");
1024
- if (!oCache && oParentNode["@$ui5.node.isExpanded"] === false) {
1085
+ let oCache = oParentNode
1086
+ ? _Helper.getPrivateAnnotation(oParentNode, "cache")
1087
+ : this.oFirstLevel;
1088
+ if (this.oAggregation.expandTo > 1) { // "expand all": GET LimitedRank
1089
+ oReadPromise = this.requestRank(oChildNode, oGroupLock.getUnlockedCopy());
1090
+ } else if (!oCache && oParentNode["@$ui5.node.isExpanded"] === false) {
1025
1091
  oCache = this.createGroupLevelCache(oParentNode);
1026
1092
  // @see #getExclusiveFilter
1027
- oCache.restoreElement(undefined, 0, oChildNode, "", undefined, sTransientPredicate);
1093
+ oCache.restoreElement(0, oChildNode, undefined, sTransientPredicate);
1028
1094
  // prefetch from the group level cache
1029
1095
  oReadPromise = oCache.read(0, this.iReadLength, 0, oGroupLock.getUnlockedCopy());
1030
1096
  }
@@ -1036,17 +1102,48 @@ sap.ui.define([
1036
1102
  }, {[this.oAggregation.$ParentNavigationProperty + "@odata.bind"] : sParentPath},
1037
1103
  /*fnSubmit*/null, function fnCancel() { /*nothing to do*/ }),
1038
1104
  oReadPromise
1039
- ]).then(([oPatchResult, _oReadResult]) => {
1105
+ ]).then(([oPatchResult, iPreorderRank]) => {
1106
+ const updateChildNode = () => {
1107
+ // update the cache with the PATCH response (Note: "@odata.etag" is optional!)
1108
+ _Helper.updateExisting(this.mChangeListeners, sChildPredicate, oChildNode, {
1109
+ "@odata.etag" : oPatchResult["@odata.etag"],
1110
+ "@$ui5.node.level" : oParentNode ? oParentNode["@$ui5.node.level"] + 1 : 1
1111
+ });
1112
+ };
1040
1113
  const iOldIndex = this.aElements.indexOf(oChildNode);
1041
- // update the cache with the PATCH response (Note: "@odata.etag" is optional!)
1042
- _Helper.updateExisting(this.mChangeListeners, sChildPredicate, oChildNode, {
1043
- "@odata.etag" : oPatchResult["@odata.etag"],
1044
- "@$ui5.node.level" : oParentNode["@$ui5.node.level"] + 1
1045
- });
1114
+ let iResult = 1;
1115
+
1116
+ if (this.oAggregation.expandTo > 1) {
1117
+ const iOffset = _Helper.getPrivateAnnotation(oChildNode, "descendants", 0) + 1;
1118
+ this.adjustDescendantCount(oChildNode, iOldIndex, -iOffset);
1119
+ this.shiftRank(iOldIndex, -iOffset);
1120
+ this.aElements.splice(iOldIndex, 1);
1121
+ this.oFirstLevel.move(_Helper.getPrivateAnnotation(oChildNode, "rank"),
1122
+ iPreorderRank, iOffset);
1123
+ updateChildNode();
1124
+ _Helper.setPrivateAnnotation(oChildNode, "rank", iPreorderRank);
1125
+ switch (oParentNode ? oParentNode["@$ui5.node.isExpanded"] : true) {
1126
+ case false:
1127
+ iResult = this.expand(_GroupLock.$cached, sParentPredicate).unwrap() + 1;
1128
+ // fall through
1129
+ case true:
1130
+ break;
1131
+
1132
+ default:
1133
+ _Helper.updateAll(this.mChangeListeners, sParentPredicate, oParentNode,
1134
+ {"@$ui5.node.isExpanded" : true}); // not a leaf anymore
1135
+ }
1136
+ const iNewIndex = this.aElements.indexOf(oParentNode) + 1; // 0 w/o oParentNode :-)
1137
+ this.aElements.splice(iNewIndex, 0, oChildNode);
1138
+ this.shiftRank(iNewIndex, +iOffset);
1139
+ this.adjustDescendantCount(oChildNode, iNewIndex, +iOffset);
1140
+
1141
+ return iResult;
1142
+ }
1046
1143
 
1047
1144
  // remove original element from its cache's collection
1048
1145
  const oOldParentCache = _Helper.getPrivateAnnotation(oChildNode, "parent");
1049
- oOldParentCache.removeElement(_Helper.getPrivateAnnotation(oChildNode, "index", 0),
1146
+ oOldParentCache.removeElement(_Helper.getPrivateAnnotation(oChildNode, "rank", 0),
1050
1147
  sChildPredicate);
1051
1148
  if (oOldParentCache.getValue("$count") === 0) { // last child has gone
1052
1149
  const oOldParent = this.aElements[iOldIndex - 1];
@@ -1056,18 +1153,19 @@ sap.ui.define([
1056
1153
  }
1057
1154
 
1058
1155
  // once oChildNode has moved, it should look 'created' because of its new position
1059
- _Helper.deletePrivateAnnotation(oChildNode, "index");
1060
1156
  if (!_Helper.hasPrivateAnnotation(oChildNode, "transientPredicate")) {
1061
1157
  _Helper.setPrivateAnnotation(oChildNode, "transientPredicate",
1062
1158
  sTransientPredicate);
1063
1159
  this.aElements.$byPredicate[sTransientPredicate] = oChildNode;
1064
1160
  _Helper.updateAll(this.mChangeListeners, sChildPredicate, oChildNode,
1065
1161
  {"@$ui5.context.isTransient" : false});
1066
- this.shiftIndex(iOldIndex, -1); // only shift indices after non-created ones
1162
+ this.shiftRank(iOldIndex, -1); // only shift indices after non-created ones
1067
1163
  }
1164
+ _Helper.deletePrivateAnnotation(oChildNode, "rank");
1068
1165
  this.aElements.splice(iOldIndex, 1);
1069
1166
 
1070
- let iResult = 1;
1167
+ updateChildNode();
1168
+
1071
1169
  if (oReadPromise) {
1072
1170
  _Helper.setPrivateAnnotation(oChildNode, "parent", oCache);
1073
1171
  _Helper.setPrivateAnnotation(oParentNode, "cache", oCache);
@@ -1075,7 +1173,7 @@ sap.ui.define([
1075
1173
  // Note: oChildNode already belongs to oCache!
1076
1174
  this.aElements.$count -= 1; // #expand adjusts $count incl. oChildNode!
1077
1175
  iResult = this.expand(_GroupLock.$cached, sParentPredicate).unwrap();
1078
- // Note: "index" created OK by #expand for oChildNode's siblings
1176
+ // Note: "rank" created OK by #expand for oChildNode's siblings
1079
1177
  } else {
1080
1178
  if (!oCache) {
1081
1179
  oCache = this.createGroupLevelCache(oParentNode);
@@ -1085,10 +1183,11 @@ sap.ui.define([
1085
1183
  {"@$ui5.node.isExpanded" : true}); // not a leaf anymore
1086
1184
  }
1087
1185
  _Helper.setPrivateAnnotation(oChildNode, "parent", oCache);
1088
- oCache.restoreElement(undefined, 0, oChildNode, "");
1186
+ oCache.restoreElement(0, oChildNode);
1089
1187
 
1090
- const iNewIndex = this.aElements.indexOf(oParentNode) + 1;
1091
- const aSpliced = _Helper.getPrivateAnnotation(oParentNode, "spliced");
1188
+ const iNewIndex = this.aElements.indexOf(oParentNode) + 1; // 0 w/o oParentNode :-)
1189
+ const aSpliced
1190
+ = oParentNode && _Helper.getPrivateAnnotation(oParentNode, "spliced");
1092
1191
  if (aSpliced) {
1093
1192
  // Note: "@$ui5.node.level" will be adjusted by #expand for aSpliced!
1094
1193
  oChildNode["@$ui5.node.level"] = aSpliced[0]["@$ui5.node.level"];
@@ -1145,7 +1244,7 @@ sap.ui.define([
1145
1244
  bHasGrandTotalAtTop = this.oGrandTotalPromise
1146
1245
  && this.oAggregation.grandTotalAtBottomOnly !== true,
1147
1246
  aReadPromises = [],
1148
- i, n,
1247
+ i,
1149
1248
  that = this;
1150
1249
 
1151
1250
  /*
@@ -1186,7 +1285,12 @@ sap.ui.define([
1186
1285
  this.readFirst(iFirstLevelIndex, iFirstLevelLength, iPrefetchLength,
1187
1286
  oGroupLock, fnDataRequested));
1188
1287
  } else {
1189
- for (i = iIndex, n = Math.min(iIndex + iLength, this.aElements.length); i < n; i += 1) {
1288
+ const oReadRange = ODataUtils._getReadRange(this.aElements, iIndex, iLength,
1289
+ iPrefetchLength,
1290
+ // _getReadRange happily reads beyond aElements, so oElement may be undefined
1291
+ (oElement) => !oElement || _Helper.hasPrivateAnnotation(oElement, "placeholder"));
1292
+ const n = Math.min(oReadRange.start + oReadRange.length, this.aElements.length);
1293
+ for (i = oReadRange.start; i < n; i += 1) {
1190
1294
  oElement = this.aElements[i];
1191
1295
  oCurrentParent = _Helper.hasPrivateAnnotation(oElement, "placeholder")
1192
1296
  ? _Helper.getPrivateAnnotation(oElement, "parent")
@@ -1201,10 +1305,10 @@ sap.ui.define([
1201
1305
  oGapParent = oCurrentParent;
1202
1306
  }
1203
1307
  } else if (iGapStart !== undefined
1204
- && _Helper.getPrivateAnnotation(oElement, "index")
1205
- !== _Helper.getPrivateAnnotation(this.aElements[i - 1], "index") + 1) {
1206
- // Note: w/ side effect, indices might not be consecutive => split gap
1207
- // Note: an undefined "index" causes a split gap, which is important!
1308
+ && _Helper.getPrivateAnnotation(oElement, "rank")
1309
+ !== _Helper.getPrivateAnnotation(this.aElements[i - 1], "rank") + 1) {
1310
+ // Note: w/ side effect, ranks might not be consecutive => split gap
1311
+ // Note: an undefined "rank" causes a split gap, which is important!
1208
1312
  readGap(iGapStart, i);
1209
1313
  iGapStart = i;
1210
1314
  }
@@ -1372,8 +1476,8 @@ sap.ui.define([
1372
1476
  _AggregationCache.prototype.readGap = function (oCache, iStart, iEnd, oGroupLock,
1373
1477
  fnDataRequested) {
1374
1478
  const oStartElement = this.aElements[iStart];
1375
- const iIndex = _Helper.getPrivateAnnotation(oStartElement, "index");
1376
- if (iIndex === undefined) {
1479
+ const iRank = _Helper.getPrivateAnnotation(oStartElement, "rank");
1480
+ if (iRank === undefined) {
1377
1481
  if (iEnd - iStart !== 1) {
1378
1482
  throw new Error("Not just a single created persisted");
1379
1483
  }
@@ -1395,7 +1499,7 @@ sap.ui.define([
1395
1499
  oCache.setQueryOptions(mQueryOptions, true);
1396
1500
  }
1397
1501
 
1398
- const oPromise = oCache.read(iIndex, iEnd - iStart, 0, oGroupLock, fnDataRequested, true)
1502
+ const oPromise = oCache.read(iRank, iEnd - iStart, 0, oGroupLock, fnDataRequested, true)
1399
1503
  .then((oResult) => {
1400
1504
  // Note: this code must be idempotent, it might well run twice!
1401
1505
  var bGapHasMoved = false,
@@ -1417,7 +1521,7 @@ sap.ui.define([
1417
1521
  }
1418
1522
  }
1419
1523
 
1420
- this.addElements(oResult.value, iStart, oCache, iIndex);
1524
+ this.addElements(oResult.value, iStart, oCache, iRank);
1421
1525
 
1422
1526
  if (bGapHasMoved) {
1423
1527
  oError = new Error("Collapse or expand before read has finished");
@@ -1447,6 +1551,37 @@ sap.ui.define([
1447
1551
  return this.oFirstLevel.refreshKeptElements.call(this, oGroupLock, fnOnRemove, true);
1448
1552
  };
1449
1553
 
1554
+ /**
1555
+ * Requests the (limited preorder) rank of the given element which must belong to
1556
+ * <code>this.oFirstLevel</code>.
1557
+ *
1558
+ * @param {object} oElement - The element
1559
+ * @param {sap.ui.model.odata.v4.lib._GroupLock} oGroupLock
1560
+ * A lock for the group ID to be used for the GET request
1561
+ * @returns {Promise<number>}
1562
+ * A promise which is resolved with the (limited preorder) rank of the given element, or
1563
+ * rejected in case of an error
1564
+ *
1565
+ * @private
1566
+ */
1567
+ _AggregationCache.prototype.requestRank = async function (oElement, oGroupLock) {
1568
+ const sMetaPath = this.oAggregation.$metaPath;
1569
+ const {$apply, $orderby} = this.oFirstLevel.getQueryOptions();
1570
+ const mQueryOptions = {
1571
+ $apply,
1572
+ $filter : _Helper.getKeyFilter(oElement, sMetaPath, this.getTypes()),
1573
+ $select : this.oAggregation.$LimitedRank
1574
+ };
1575
+ if ($orderby) {
1576
+ mQueryOptions.$orderby = $orderby;
1577
+ }
1578
+ const sResourcePath = this.sResourcePath
1579
+ + this.oRequestor.buildQueryString(sMetaPath, mQueryOptions, false, true);
1580
+ const oResult = await this.oRequestor.request("GET", sResourcePath, oGroupLock);
1581
+
1582
+ return parseInt(_Helper.drillDown(oResult.value[0], this.oAggregation.$LimitedRank));
1583
+ };
1584
+
1450
1585
  /**
1451
1586
  * @override
1452
1587
  * @see sap.ui.model.odata.v4.lib._CollectionCache#reset
@@ -1512,27 +1647,33 @@ sap.ui.define([
1512
1647
  };
1513
1648
 
1514
1649
  /**
1515
- * Shifts the $skip "index" of all siblings (nodes or placeholders) after the node at the given
1516
- * index by the given offset, except for created elements (where it is always
1517
- * <code>undefined</code>).
1650
+ * Shifts the rank (aka. $skip index) of all siblings (nodes or placeholders) after the node at
1651
+ * the given array index by the given offset, except for elements where it is
1652
+ * <code>undefined</code> or lower than the node's own rank. If the node at the given index
1653
+ * itself has an <code>undefined</code> rank, nothing is shifted. Note that inside
1654
+ * <code>this.oFirstLevel</code> not only siblings are affected.
1518
1655
  *
1519
1656
  * @param {number} iIndex
1520
1657
  * Index in <code>this.aElements</code> of a node
1521
1658
  * @param {number} iOffset
1522
- * Offset to add to "index"
1659
+ * Offset to add to rank
1523
1660
  *
1524
1661
  * @private
1525
1662
  */
1526
- _AggregationCache.prototype.shiftIndex = function (iIndex, iOffset) {
1527
- const aElements = this.aElements;
1528
- const oNode = aElements[iIndex];
1663
+ _AggregationCache.prototype.shiftRank = function (iIndex, iOffset) {
1664
+ const oNode = this.aElements[iIndex];
1665
+ const iMinRank = _Helper.getPrivateAnnotation(oNode, "rank");
1666
+ if (iMinRank === undefined) {
1667
+ return;
1668
+ }
1669
+
1529
1670
  const oCache = _Helper.getPrivateAnnotation(oNode, "parent");
1530
- for (let i = iIndex + 1; i < aElements.length; i += 1) {
1531
- const oSibling = aElements[i];
1671
+ for (let i = iIndex + 1; i < this.aElements.length; i += 1) {
1672
+ const oSibling = this.aElements[i];
1532
1673
  if (_Helper.getPrivateAnnotation(oSibling, "parent") === oCache) {
1533
- const iIndex = _Helper.getPrivateAnnotation(oSibling, "index");
1534
- if (iIndex !== undefined) {
1535
- _Helper.setPrivateAnnotation(oSibling, "index", iIndex + iOffset);
1674
+ const iRank = _Helper.getPrivateAnnotation(oSibling, "rank");
1675
+ if (iRank >= iMinRank) { // Note: undefined >= ... is false
1676
+ _Helper.setPrivateAnnotation(oSibling, "rank", iRank + iOffset);
1536
1677
  }
1537
1678
  }
1538
1679
  if (oCache !== this.oFirstLevel
@@ -1576,9 +1717,9 @@ sap.ui.define([
1576
1717
  _AggregationHelper.markSplicedStale(oElement);
1577
1718
  delete this.aElements.$byPredicate[sPredicate];
1578
1719
  // drop original element from its cache's collection
1579
- const iIndex = _Helper.getPrivateAnnotation(oElement, "index");
1580
- if (iIndex !== undefined) {
1581
- _Helper.getPrivateAnnotation(oElement, "parent").drop(iIndex, sPredicate, true);
1720
+ const iRank = _Helper.getPrivateAnnotation(oElement, "rank");
1721
+ if (iRank !== undefined) {
1722
+ _Helper.getPrivateAnnotation(oElement, "parent").drop(iRank, sPredicate, true);
1582
1723
  } // else: special handling inside #readGap
1583
1724
  };
1584
1725
 
@@ -1688,7 +1829,7 @@ sap.ui.define([
1688
1829
  return sPredicate;
1689
1830
  }
1690
1831
 
1691
- switch (_Helper.drillDown(oElement, oAggregation.$DrillStateProperty)) {
1832
+ switch (_Helper.drillDown(oElement, oAggregation.$DrillState)) {
1692
1833
  case "expanded":
1693
1834
  bIsExpanded = true;
1694
1835
  break;
@@ -1700,24 +1841,24 @@ sap.ui.define([
1700
1841
  default: // "leaf"
1701
1842
  // bIsExpanded = undefined;
1702
1843
  }
1703
- _Helper.deleteProperty(oElement, oAggregation.$DrillStateProperty);
1844
+ _Helper.deleteProperty(oElement, oAggregation.$DrillState);
1704
1845
  if (oGroupNode) {
1705
1846
  iLevel = oGroupNode["@$ui5.node.level"] + 1;
1706
1847
  } else {
1707
- sDistanceFromRoot = _Helper.drillDown(oElement, oAggregation.$DistanceFromRootProperty);
1848
+ sDistanceFromRoot = _Helper.drillDown(oElement, oAggregation.$DistanceFromRoot);
1708
1849
  if (sDistanceFromRoot) { // Edm.Int64
1709
- _Helper.deleteProperty(oElement, oAggregation.$DistanceFromRootProperty);
1850
+ _Helper.deleteProperty(oElement, oAggregation.$DistanceFromRoot);
1710
1851
  iLevel = parseInt(sDistanceFromRoot) + 1;
1711
1852
  }
1712
1853
  }
1713
1854
  // set the node values
1714
1855
  _AggregationHelper.setAnnotations(oElement, bIsExpanded, /*bIsTotal*/undefined, iLevel);
1715
1856
 
1716
- if (oAggregation.$LimitedDescendantCountProperty) {
1857
+ if (oAggregation.$LimitedDescendantCount) {
1717
1858
  sLimitedDescendantCount
1718
- = _Helper.drillDown(oElement, oAggregation.$LimitedDescendantCountProperty);
1859
+ = _Helper.drillDown(oElement, oAggregation.$LimitedDescendantCount);
1719
1860
  if (sLimitedDescendantCount) {
1720
- _Helper.deleteProperty(oElement, oAggregation.$LimitedDescendantCountProperty);
1861
+ _Helper.deleteProperty(oElement, oAggregation.$LimitedDescendantCount);
1721
1862
  if (sLimitedDescendantCount !== "0") { // Edm.Int64
1722
1863
  _Helper.setPrivateAnnotation(oElement, "descendants",
1723
1864
  parseInt(sLimitedDescendantCount));