@openui5/sap.ui.core 1.117.0 → 1.118.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 (833) hide show
  1. package/package.json +1 -1
  2. package/src/jquery.sap.global.js +1 -1
  3. package/src/jquery.sap.properties.js +1 -1
  4. package/src/jquery.sap.resources.js +1 -1
  5. package/src/jquery.sap.script.js +1 -1
  6. package/src/jquery.sap.storage.js +3 -3
  7. package/src/sap/base/Event.js +1 -1
  8. package/src/sap/base/Eventing.js +1 -1
  9. package/src/sap/base/config.js +1 -1
  10. package/src/sap/base/i18n/LanguageTag.js +1 -1
  11. package/src/sap/base/i18n/Localization.js +42 -39
  12. package/src/sap/base/i18n/date/TimezoneUtils.js +1 -1
  13. package/src/sap/base/util/restricted/_CancelablePromise.js +1 -1
  14. package/src/sap/base/util/restricted/_castArray.js +1 -1
  15. package/src/sap/base/util/restricted/_compact.js +1 -1
  16. package/src/sap/base/util/restricted/_curry.js +1 -1
  17. package/src/sap/base/util/restricted/_debounce.js +1 -1
  18. package/src/sap/base/util/restricted/_difference.js +1 -1
  19. package/src/sap/base/util/restricted/_differenceBy.js +1 -1
  20. package/src/sap/base/util/restricted/_differenceWith.js +1 -1
  21. package/src/sap/base/util/restricted/_flatMap.js +1 -1
  22. package/src/sap/base/util/restricted/_flatMapDeep.js +1 -1
  23. package/src/sap/base/util/restricted/_flatMapDepth.js +1 -1
  24. package/src/sap/base/util/restricted/_flatten.js +1 -1
  25. package/src/sap/base/util/restricted/_flattenDeep.js +1 -1
  26. package/src/sap/base/util/restricted/_flattenDepth.js +1 -1
  27. package/src/sap/base/util/restricted/_intersection.js +1 -1
  28. package/src/sap/base/util/restricted/_intersectionBy.js +1 -1
  29. package/src/sap/base/util/restricted/_intersectionWith.js +1 -1
  30. package/src/sap/base/util/restricted/_isEqual.js +1 -1
  31. package/src/sap/base/util/restricted/_isEqualWith.js +1 -1
  32. package/src/sap/base/util/restricted/_isNil.js +1 -1
  33. package/src/sap/base/util/restricted/_max.js +1 -1
  34. package/src/sap/base/util/restricted/_merge.js +1 -1
  35. package/src/sap/base/util/restricted/_mergeWith.js +1 -1
  36. package/src/sap/base/util/restricted/_min.js +1 -1
  37. package/src/sap/base/util/restricted/_omit.js +1 -1
  38. package/src/sap/base/util/restricted/_pick.js +1 -1
  39. package/src/sap/base/util/restricted/_pickBy.js +1 -1
  40. package/src/sap/base/util/restricted/_throttle.js +1 -1
  41. package/src/sap/base/util/restricted/_toArray.js +1 -1
  42. package/src/sap/base/util/restricted/_union.js +1 -1
  43. package/src/sap/base/util/restricted/_unionBy.js +1 -1
  44. package/src/sap/base/util/restricted/_unionWith.js +1 -1
  45. package/src/sap/base/util/restricted/_uniq.js +1 -1
  46. package/src/sap/base/util/restricted/_uniqBy.js +1 -1
  47. package/src/sap/base/util/restricted/_uniqWith.js +1 -1
  48. package/src/sap/base/util/restricted/_without.js +1 -1
  49. package/src/sap/base/util/restricted/_xor.js +1 -1
  50. package/src/sap/base/util/restricted/_xorBy.js +1 -1
  51. package/src/sap/base/util/restricted/_xorWith.js +1 -1
  52. package/src/sap/base/util/restricted/_zipObject.js +1 -1
  53. package/src/sap/base/util/restricted/_zipObjectDeep.js +1 -1
  54. package/src/sap/ui/Device.js +3 -3
  55. package/src/sap/ui/Global.js +4 -4
  56. package/src/sap/ui/base/BindingParser.js +2 -1
  57. package/src/sap/ui/base/Event.js +1 -1
  58. package/src/sap/ui/base/EventProvider.js +1 -1
  59. package/src/sap/ui/base/Interface.js +1 -1
  60. package/src/sap/ui/base/ManagedObject.js +7 -3
  61. package/src/sap/ui/base/ManagedObjectMetadata.js +1 -1
  62. package/src/sap/ui/base/Metadata.js +1 -1
  63. package/src/sap/ui/base/Object.js +1 -1
  64. package/src/sap/ui/base/ObjectPool.js +1 -1
  65. package/src/sap/ui/core/.library +9 -1
  66. package/src/sap/ui/core/AnimationMode.js +1 -1
  67. package/src/sap/ui/core/BlockLayerUtils.js +1 -1
  68. package/src/sap/ui/core/BusyIndicator.js +2 -2
  69. package/src/sap/ui/core/Component.js +22 -15
  70. package/src/sap/ui/core/ComponentContainer.js +2 -2
  71. package/src/sap/ui/core/ComponentMetadata.js +1 -1
  72. package/src/sap/ui/core/ComponentSupport.js +1 -1
  73. package/src/sap/ui/core/Configuration.js +1 -13
  74. package/src/sap/ui/core/Control.js +21 -1
  75. package/src/sap/ui/core/Core.js +67 -41
  76. package/src/sap/ui/core/CustomData.js +1 -1
  77. package/src/sap/ui/core/DeclarativeSupport.js +1 -1
  78. package/src/sap/ui/core/Element.js +1 -1
  79. package/src/sap/ui/core/ElementMetadata.js +1 -1
  80. package/src/sap/ui/core/EnabledPropagator.js +1 -1
  81. package/src/sap/ui/core/EventBus.js +1 -1
  82. package/src/sap/ui/core/Fragment.js +1 -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 +2 -2
  86. package/src/sap/ui/core/IndicationColorSupport.js +2 -2
  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 +3 -6
  91. package/src/sap/ui/core/Item.js +1 -1
  92. package/src/sap/ui/core/LabelEnablement.js +1 -1
  93. package/src/sap/ui/core/LayoutData.js +1 -1
  94. package/src/sap/ui/core/Lib.js +9 -13
  95. package/src/sap/ui/core/ListItem.js +1 -1
  96. package/src/sap/ui/core/LocalBusyIndicator.js +1 -1
  97. package/src/sap/ui/core/Locale.js +1 -1
  98. package/src/sap/ui/core/LocaleData.js +2 -2
  99. package/src/sap/ui/core/Manifest.js +1 -1
  100. package/src/sap/ui/core/Message.js +1 -1
  101. package/src/sap/ui/core/Messaging.js +472 -0
  102. package/src/sap/ui/core/RenderManager.js +1 -1
  103. package/src/sap/ui/core/Renderer.js +1 -1
  104. package/src/sap/ui/core/Rendering.js +3 -2
  105. package/src/sap/ui/core/ResizeHandler.js +1 -4
  106. package/src/sap/ui/core/ScrollBar.js +1 -1
  107. package/src/sap/ui/core/SeparatorItem.js +1 -1
  108. package/src/sap/ui/core/ShortcutHint.js +1 -1
  109. package/src/sap/ui/core/Theming.js +28 -31
  110. package/src/sap/ui/core/Title.js +1 -1
  111. package/src/sap/ui/core/TooltipBase.js +1 -1
  112. package/src/sap/ui/core/UIArea.js +85 -17
  113. package/src/sap/ui/core/UIComponent.js +1 -1
  114. package/src/sap/ui/core/UIComponentMetadata.js +1 -1
  115. package/src/sap/ui/core/ValueStateSupport.js +2 -2
  116. package/src/sap/ui/core/VariantLayoutData.js +1 -1
  117. package/src/sap/ui/core/XMLComposite.js +1 -1
  118. package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
  119. package/src/sap/ui/core/_IconRegistry.js +1 -1
  120. package/src/sap/ui/core/boot.js +9 -0
  121. package/src/sap/ui/core/date/UI5Date.js +1 -1
  122. package/src/sap/ui/core/delegate/ItemNavigation.js +1 -1
  123. package/src/sap/ui/core/delegate/ScrollEnablement.js +1 -1
  124. package/src/sap/ui/core/dnd/DragAndDrop.js +1 -1
  125. package/src/sap/ui/core/dnd/DragDropBase.js +1 -1
  126. package/src/sap/ui/core/dnd/DragDropInfo.js +1 -1
  127. package/src/sap/ui/core/dnd/DragInfo.js +1 -1
  128. package/src/sap/ui/core/dnd/DropInfo.js +1 -1
  129. package/src/sap/ui/core/format/DateFormat.js +4 -0
  130. package/src/sap/ui/core/format/TimezoneUtil.js +1 -1
  131. package/src/sap/ui/core/hyphenation/Hyphenation.js +1 -1
  132. package/src/sap/ui/core/library.js +18 -47
  133. package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
  134. package/src/sap/ui/core/message/Message.js +1 -1
  135. package/src/sap/ui/core/message/MessageManager.js +37 -459
  136. package/src/sap/ui/core/message/MessageMixin.js +3 -3
  137. package/src/sap/ui/core/message/MessageParser.js +1 -1
  138. package/src/sap/ui/core/message/MessageProcessor.js +9 -9
  139. package/src/sap/ui/core/message/MessageType.js +53 -0
  140. package/src/sap/ui/core/messagebundle.properties +3 -0
  141. package/src/sap/ui/core/messagebundle_ar.properties +1 -1
  142. package/src/sap/ui/core/messagebundle_bg.properties +1 -1
  143. package/src/sap/ui/core/messagebundle_ca.properties +1 -1
  144. package/src/sap/ui/core/messagebundle_cs.properties +1 -1
  145. package/src/sap/ui/core/messagebundle_cy.properties +1 -1
  146. package/src/sap/ui/core/messagebundle_da.properties +1 -1
  147. package/src/sap/ui/core/messagebundle_de.properties +1 -1
  148. package/src/sap/ui/core/messagebundle_el.properties +1 -1
  149. package/src/sap/ui/core/messagebundle_es.properties +1 -1
  150. package/src/sap/ui/core/messagebundle_es_MX.properties +1 -1
  151. package/src/sap/ui/core/messagebundle_et.properties +1 -1
  152. package/src/sap/ui/core/messagebundle_fi.properties +1 -1
  153. package/src/sap/ui/core/messagebundle_fr.properties +1 -1
  154. package/src/sap/ui/core/messagebundle_fr_CA.properties +1 -1
  155. package/src/sap/ui/core/messagebundle_hi.properties +1 -1
  156. package/src/sap/ui/core/messagebundle_hr.properties +1 -1
  157. package/src/sap/ui/core/messagebundle_hu.properties +1 -1
  158. package/src/sap/ui/core/messagebundle_id.properties +1 -1
  159. package/src/sap/ui/core/messagebundle_it.properties +1 -1
  160. package/src/sap/ui/core/messagebundle_iw.properties +1 -1
  161. package/src/sap/ui/core/messagebundle_ja.properties +1 -1
  162. package/src/sap/ui/core/messagebundle_kk.properties +1 -1
  163. package/src/sap/ui/core/messagebundle_ko.properties +1 -1
  164. package/src/sap/ui/core/messagebundle_lt.properties +1 -1
  165. package/src/sap/ui/core/messagebundle_lv.properties +1 -1
  166. package/src/sap/ui/core/messagebundle_ms.properties +1 -1
  167. package/src/sap/ui/core/messagebundle_nl.properties +1 -1
  168. package/src/sap/ui/core/messagebundle_no.properties +1 -1
  169. package/src/sap/ui/core/messagebundle_pl.properties +1 -1
  170. package/src/sap/ui/core/messagebundle_pt.properties +1 -1
  171. package/src/sap/ui/core/messagebundle_pt_PT.properties +1 -1
  172. package/src/sap/ui/core/messagebundle_ro.properties +1 -1
  173. package/src/sap/ui/core/messagebundle_ru.properties +1 -1
  174. package/src/sap/ui/core/messagebundle_sh.properties +1 -1
  175. package/src/sap/ui/core/messagebundle_sk.properties +1 -1
  176. package/src/sap/ui/core/messagebundle_sl.properties +1 -1
  177. package/src/sap/ui/core/messagebundle_sv.properties +9 -9
  178. package/src/sap/ui/core/messagebundle_th.properties +1 -1
  179. package/src/sap/ui/core/messagebundle_tr.properties +1 -1
  180. package/src/sap/ui/core/messagebundle_uk.properties +1 -1
  181. package/src/sap/ui/core/messagebundle_vi.properties +1 -1
  182. package/src/sap/ui/core/messagebundle_zh_CN.properties +1 -1
  183. package/src/sap/ui/core/messagebundle_zh_TW.properties +1 -1
  184. package/src/sap/ui/core/mvc/HTMLView.js +1 -1
  185. package/src/sap/ui/core/mvc/JSONView.js +1 -1
  186. package/src/sap/ui/core/mvc/JSView.js +1 -1
  187. package/src/sap/ui/core/mvc/TemplateView.js +1 -1
  188. package/src/sap/ui/core/mvc/View.js +1 -1
  189. package/src/sap/ui/core/mvc/XMLView.js +9 -2
  190. package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
  191. package/src/sap/ui/core/plugin/LessSupport.js +1 -1
  192. package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -1
  193. package/src/sap/ui/core/postmessage/Bus.js +1 -1
  194. package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
  195. package/src/sap/ui/core/routing/Router.js +7 -1
  196. package/src/sap/ui/core/routing/async/Route.js +1 -0
  197. package/src/sap/ui/core/routing/sync/Route.js +1 -0
  198. package/src/sap/ui/core/search/OpenSearchProvider.js +1 -1
  199. package/src/sap/ui/core/search/SearchProvider.js +1 -1
  200. package/src/sap/ui/core/service/Service.js +1 -1
  201. package/src/sap/ui/core/service/ServiceFactory.js +1 -1
  202. package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
  203. package/src/sap/ui/core/support/Plugin.js +25 -5
  204. package/src/sap/ui/core/support/Support.js +34 -4
  205. package/src/sap/ui/core/support/ToolsAPI.js +6 -16
  206. package/src/sap/ui/core/support/controls/InteractionTree.js +0 -4
  207. package/src/sap/ui/core/support/plugins/Breakpoint.js +0 -2
  208. package/src/sap/ui/core/support/plugins/ControlTree.js +10 -12
  209. package/src/sap/ui/core/support/plugins/Debugging.js +10 -9
  210. package/src/sap/ui/core/support/plugins/Interaction.js +12 -13
  211. package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -3
  212. package/src/sap/ui/core/support/plugins/Performance.js +1 -3
  213. package/src/sap/ui/core/support/plugins/Selector.js +1 -1
  214. package/src/sap/ui/core/support/plugins/TechInfo.js +32 -42
  215. package/src/sap/ui/core/support/plugins/Trace.js +1 -1
  216. package/src/sap/ui/core/support/plugins/ViewInfo.js +27 -13
  217. package/src/sap/ui/core/support/techinfo/TechnicalInfo.js +4 -4
  218. package/src/sap/ui/core/theming/ThemeHelper.js +100 -0
  219. package/src/sap/ui/core/theming/ThemeManager.js +18 -18
  220. package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
  221. package/src/sap/ui/core/tmpl/DOMElement.js +1 -1
  222. package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
  223. package/src/sap/ui/core/tmpl/Template.js +1 -1
  224. package/src/sap/ui/core/tmpl/TemplateControl.js +1 -1
  225. package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
  226. package/src/sap/ui/core/util/Export.js +1 -1
  227. package/src/sap/ui/core/util/ExportCell.js +1 -1
  228. package/src/sap/ui/core/util/ExportColumn.js +1 -1
  229. package/src/sap/ui/core/util/ExportRow.js +1 -1
  230. package/src/sap/ui/core/util/ExportType.js +1 -1
  231. package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
  232. package/src/sap/ui/core/util/File.js +1 -1
  233. package/src/sap/ui/core/util/LibraryInfo.js +1 -1
  234. package/src/sap/ui/core/util/MockServer.js +1 -1
  235. package/src/sap/ui/core/util/PasteHelper.js +1 -1
  236. package/src/sap/ui/core/util/XMLPreprocessor.js +53 -29
  237. package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
  238. package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
  239. package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
  240. package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
  241. package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
  242. package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
  243. package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
  244. package/src/sap/ui/core/webc/WebComponent.js +659 -0
  245. package/src/sap/ui/core/webc/WebComponentMetadata.js +253 -0
  246. package/src/sap/ui/core/webc/WebComponentRenderer.js +323 -0
  247. package/src/sap/ui/core/ws/ReadyState.js +1 -1
  248. package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
  249. package/src/sap/ui/core/ws/WebSocket.js +1 -1
  250. package/src/sap/ui/debug/ControlTree.js +4 -3
  251. package/src/sap/ui/debug/DebugEnv.js +4 -4
  252. package/src/sap/ui/debug/PropertyList.js +1 -1
  253. package/src/sap/ui/model/Binding.js +6 -6
  254. package/src/sap/ui/model/ClientModel.js +1 -1
  255. package/src/sap/ui/model/ClientPropertyBinding.js +3 -3
  256. package/src/sap/ui/model/CompositeDataState.js +1 -1
  257. package/src/sap/ui/model/CompositeType.js +1 -1
  258. package/src/sap/ui/model/Context.js +1 -1
  259. package/src/sap/ui/model/DataState.js +1 -1
  260. package/src/sap/ui/model/ManagedObjectBindingSupport.js +4 -4
  261. package/src/sap/ui/model/MetaModel.js +1 -1
  262. package/src/sap/ui/model/Model.js +4 -4
  263. package/src/sap/ui/model/SelectionModel.js +1 -1
  264. package/src/sap/ui/model/SimpleType.js +1 -1
  265. package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
  266. package/src/sap/ui/model/Type.js +1 -1
  267. package/src/sap/ui/model/controlhelper/TreeBindingProxy.js +27 -13
  268. package/src/sap/ui/model/json/JSONModel.js +1 -1
  269. package/src/sap/ui/model/message/MessageModel.js +1 -1
  270. package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
  271. package/src/sap/ui/model/odata/ODataListBinding.js +24 -0
  272. package/src/sap/ui/model/odata/ODataMessageParser.js +4 -4
  273. package/src/sap/ui/model/odata/ODataMetaModel.js +1 -1
  274. package/src/sap/ui/model/odata/ODataMetadata.js +1 -1
  275. package/src/sap/ui/model/odata/ODataModel.js +1 -1
  276. package/src/sap/ui/model/odata/ODataTreeBindingFlat.js +6 -0
  277. package/src/sap/ui/model/odata/type/Boolean.js +1 -1
  278. package/src/sap/ui/model/odata/type/Byte.js +1 -1
  279. package/src/sap/ui/model/odata/type/Currency.js +1 -1
  280. package/src/sap/ui/model/odata/type/Date.js +1 -1
  281. package/src/sap/ui/model/odata/type/DateTime.js +1 -1
  282. package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
  283. package/src/sap/ui/model/odata/type/DateTimeOffset.js +7 -2
  284. package/src/sap/ui/model/odata/type/DateTimeWithTimezone.js +1 -1
  285. package/src/sap/ui/model/odata/type/Decimal.js +1 -1
  286. package/src/sap/ui/model/odata/type/Double.js +1 -1
  287. package/src/sap/ui/model/odata/type/Guid.js +1 -1
  288. package/src/sap/ui/model/odata/type/Int.js +1 -1
  289. package/src/sap/ui/model/odata/type/Int16.js +1 -1
  290. package/src/sap/ui/model/odata/type/Int32.js +1 -1
  291. package/src/sap/ui/model/odata/type/Int64.js +1 -1
  292. package/src/sap/ui/model/odata/type/ODataType.js +1 -1
  293. package/src/sap/ui/model/odata/type/Raw.js +1 -1
  294. package/src/sap/ui/model/odata/type/SByte.js +1 -1
  295. package/src/sap/ui/model/odata/type/Single.js +1 -1
  296. package/src/sap/ui/model/odata/type/Stream.js +1 -1
  297. package/src/sap/ui/model/odata/type/String.js +1 -1
  298. package/src/sap/ui/model/odata/type/Time.js +1 -1
  299. package/src/sap/ui/model/odata/type/TimeOfDay.js +6 -2
  300. package/src/sap/ui/model/odata/type/Unit.js +1 -1
  301. package/src/sap/ui/model/odata/v2/Context.js +1 -1
  302. package/src/sap/ui/model/odata/v2/ODataAnnotations.js +1 -1
  303. package/src/sap/ui/model/odata/v2/ODataListBinding.js +23 -3
  304. package/src/sap/ui/model/odata/v2/ODataModel.js +6 -6
  305. package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +33 -6
  306. package/src/sap/ui/model/odata/v4/Context.js +26 -16
  307. package/src/sap/ui/model/odata/v4/ODataContextBinding.js +6 -2
  308. package/src/sap/ui/model/odata/v4/ODataListBinding.js +62 -29
  309. package/src/sap/ui/model/odata/v4/ODataMetaModel.js +1 -1
  310. package/src/sap/ui/model/odata/v4/ODataModel.js +17 -10
  311. package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +5 -1
  312. package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +129 -6
  313. package/src/sap/ui/model/odata/v4/lib/_Cache.js +102 -57
  314. package/src/sap/ui/model/odata/v4/lib/_Helper.js +30 -4
  315. package/src/sap/ui/model/odata/v4/lib/_Parser.js +3 -0
  316. package/src/sap/ui/model/odata/v4/lib/_Requestor.js +14 -4
  317. package/src/sap/ui/model/odata/v4/lib/_V2Requestor.js +28 -35
  318. package/src/sap/ui/model/odata/v4/ts.js +44 -0
  319. package/src/sap/ui/model/resource/ResourceModel.js +1 -1
  320. package/src/sap/ui/model/type/Boolean.js +1 -1
  321. package/src/sap/ui/model/type/Currency.js +1 -1
  322. package/src/sap/ui/model/type/Date.js +1 -1
  323. package/src/sap/ui/model/type/DateInterval.js +5 -4
  324. package/src/sap/ui/model/type/DateTime.js +1 -1
  325. package/src/sap/ui/model/type/DateTimeInterval.js +1 -1
  326. package/src/sap/ui/model/type/FileSize.js +1 -1
  327. package/src/sap/ui/model/type/Float.js +1 -1
  328. package/src/sap/ui/model/type/Integer.js +1 -1
  329. package/src/sap/ui/model/type/String.js +1 -1
  330. package/src/sap/ui/model/type/Time.js +1 -1
  331. package/src/sap/ui/model/type/TimeInterval.js +1 -1
  332. package/src/sap/ui/model/type/Unit.js +1 -1
  333. package/src/sap/ui/model/xml/XMLModel.js +1 -1
  334. package/src/sap/ui/performance/trace/Interaction.js +11 -2
  335. package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
  336. package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +10 -11
  337. package/src/sap/ui/qunit/utils/nextUIUpdate.js +51 -0
  338. package/src/sap/ui/test/ModuleTracking.js +326 -0
  339. package/src/sap/ui/test/TestUtils.js +7 -6
  340. package/src/sap/ui/test/autowaiter/_UIUpdatesWaiter.js +3 -2
  341. package/src/sap/ui/test/generic/TestBase.js +1 -1
  342. package/src/sap/ui/test/selectors/_ControlSelectorGenerator.js +2 -0
  343. package/src/sap/ui/test/selectors/_DropdownItem.js +1 -0
  344. package/src/sap/ui/test/selectors/_TableRowItem.js +1 -0
  345. package/src/sap/ui/util/Storage.js +1 -1
  346. package/src/ui5loader-autoconfig.js +14 -10
  347. package/src/ui5loader.js +2 -2
  348. package/test/sap/ui/core/ComponentCleanup.html +228 -225
  349. package/test/sap/ui/core/ComponentConfig.html +1 -1
  350. package/test/sap/ui/core/ComponentExtensibility_CustomizingDisabled.html +1 -1
  351. package/test/sap/ui/core/ComponentExtensibility_legacyAPIs.html +1 -1
  352. package/test/sap/ui/core/ComponentSimple.html +1 -1
  353. package/test/sap/ui/core/ComponentSimpleModel.html +1 -1
  354. package/test/sap/ui/core/ComponentSupport.html +1 -1
  355. package/test/sap/ui/core/DateFormat.js +3 -3
  356. package/test/sap/ui/core/EventBroadcaster.html +62 -62
  357. package/test/sap/ui/core/Formats.html +4 -2
  358. package/test/sap/ui/core/GenericEventBinding.html +53 -52
  359. package/test/sap/ui/core/ListFormat.js +3 -3
  360. package/test/sap/ui/core/NumberFormat.js +3 -3
  361. package/test/sap/ui/core/ODataAnnotationsPerformance.html +28 -28
  362. package/test/sap/ui/core/ODataV2CanonicalRequests.html +3 -2
  363. package/test/sap/ui/core/ODataV2Messages.html +4 -3
  364. package/test/sap/ui/core/PopupWithUserSelection.html +1 -1
  365. package/test/sap/ui/core/Strings.js +3 -3
  366. package/test/sap/ui/core/ValidateURL.html +143 -143
  367. package/test/sap/ui/core/demokit/sample/Commands/Commands.html +1 -1
  368. package/test/sap/ui/core/demokit/sample/MessageManager/BasicMessages/Controller.controller.js +10 -10
  369. package/test/sap/ui/core/demokit/sample/MessageManager/BasicODataMessages/Controller.controller.js +7 -7
  370. package/test/sap/ui/core/demokit/sample/MessageManager/ODataBackendMessagesComp/webapp/Component.js +3 -2
  371. package/test/sap/ui/core/demokit/sample/MessageManager/ODataBackendMessagesComp/webapp/controller/Employee.controller.js +3 -2
  372. package/test/sap/ui/core/demokit/sample/MessageManager/ODataBackendMessagesComp/webapp/index.html +7 -8
  373. package/test/sap/ui/core/demokit/sample/OpaGetStarted/applicationUnderTest/index.html +9 -6
  374. package/test/sap/ui/core/demokit/sample/OpaWithSupportAssistant/applicationUnderTest/index.html +13 -10
  375. package/test/sap/ui/core/demokit/sample/PatternMatching/Patterns.html +11 -8
  376. package/test/sap/ui/core/demokit/sample/RoutingFullscreen/RoutingFullscreen.html +11 -8
  377. package/test/sap/ui/core/demokit/sample/RoutingMasterDetail/RoutingMasterDetail.html +11 -8
  378. package/test/sap/ui/core/demokit/sample/RoutingNestedComponent/RoutingNestedComponent.html +1 -1
  379. package/test/sap/ui/core/demokit/sample/RoutingNestedComponent/test/integration/opaTests.qunit.html +1 -1
  380. package/test/sap/ui/core/demokit/sample/RoutingNestedComponent/test/integration/opaTests.qunit.js +5 -4
  381. package/test/sap/ui/core/demokit/sample/TargetsStandalone/TargetsStandalone.html +11 -8
  382. package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/Opa.qunit.js +9 -8
  383. package/test/sap/ui/core/demokit/sample/ViewTemplate/types/Opa.qunit.js +12 -11
  384. package/test/sap/ui/core/demokit/sample/common/Controller.js +6 -7
  385. package/test/sap/ui/core/demokit/sample/common/Helper.js +6 -2
  386. package/test/sap/ui/core/demokit/sample/common/init.js +25 -21
  387. package/test/sap/ui/core/demokit/sample/gherkin/GherkinWithOPA5/WebsiteCode.js +8 -7
  388. package/test/sap/ui/core/demokit/sample/odata/v4/DataAggregation/Opa.qunit.js +9 -8
  389. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/ObjectPage.controller.js +3 -2
  390. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/Opa.qunit.js +12 -10
  391. package/test/sap/ui/core/demokit/sample/odata/v4/Draft/ListReport.controller.js +3 -2
  392. package/test/sap/ui/core/demokit/sample/odata/v4/Draft/Opa.qunit.js +10 -9
  393. package/test/sap/ui/core/demokit/sample/odata/v4/FieldGroups/Opa.qunit.js +10 -9
  394. package/test/sap/ui/core/demokit/sample/odata/v4/FlatDataAggregation/Component.js +4 -4
  395. package/test/sap/ui/core/demokit/sample/odata/v4/FlexibleColumnLayout/Main.controller.js +3 -3
  396. package/test/sap/ui/core/demokit/sample/odata/v4/FlexibleColumnLayout/Opa.qunit.js +10 -9
  397. package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/Component.js +19 -0
  398. package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/Main.controller.js +93 -0
  399. package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/Main.view.xml +85 -0
  400. package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/SandboxModel.js +10 -0
  401. package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/data/all.json +396 -0
  402. package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/data/metadata.xml +423 -0
  403. package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/manifest.json +70 -0
  404. package/test/sap/ui/core/demokit/sample/odata/v4/LateProperties/Opa.OptimisticBatch.qunit.js +11 -10
  405. package/test/sap/ui/core/demokit/sample/odata/v4/LateProperties/Opa.qunit.js +9 -8
  406. package/test/sap/ui/core/demokit/sample/odata/v4/ListBinding/Opa.qunit.js +10 -9
  407. package/test/sap/ui/core/demokit/sample/odata/v4/ListBindingTemplate/Opa.qunit.js +8 -7
  408. package/test/sap/ui/core/demokit/sample/odata/v4/MultipleInlineCreationRowsGrid/Main.controller.js +8 -10
  409. package/test/sap/ui/core/demokit/sample/odata/v4/MultipleInlineCreationRowsGrid/Opa.qunit.js +12 -11
  410. package/test/sap/ui/core/demokit/sample/odata/v4/Products/Main.controller.js +3 -2
  411. package/test/sap/ui/core/demokit/sample/odata/v4/Products/Opa.qunit.js +11 -10
  412. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/MIT.RecursiveHierarchy maintenance.html +408 -0
  413. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/Opa.qunit.js +26 -8
  414. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/RecursiveHierarchy.controller.js +54 -14
  415. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/RecursiveHierarchy.view.xml +24 -10
  416. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/SandboxModel.js +352 -287
  417. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/pages/Main.js +38 -5
  418. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/tests/createEdit.js +128 -0
  419. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/tests/pageExpandCollapse.js +23 -22
  420. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrderTP100_V2/Opa.qunit.js +10 -9
  421. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrderTP100_V4/Opa.qunit.js +9 -8
  422. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/Component.js +3 -2
  423. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/Opa.qunit.js +15 -14
  424. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersRTATest/Opa.qunit.js +9 -8
  425. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersTemplate/Opa.qunit.js +9 -8
  426. package/test/sap/ui/core/demokit/sample/odata/v4/ServerDrivenPaging/Opa.qunit.js +10 -9
  427. package/test/sap/ui/core/demokit/sample/odata/v4/Sticky/Opa.qunit.js +10 -9
  428. package/test/sap/ui/core/demokit/tutorial/databinding/01/package.json +2 -5
  429. package/test/sap/ui/core/demokit/tutorial/databinding/01/ui5.yaml +8 -0
  430. package/test/sap/ui/core/demokit/tutorial/databinding/01/webapp/index.js +7 -3
  431. package/test/sap/ui/core/demokit/tutorial/databinding/02/package.json +2 -5
  432. package/test/sap/ui/core/demokit/tutorial/databinding/02/ui5.yaml +8 -0
  433. package/test/sap/ui/core/demokit/tutorial/databinding/02/webapp/index.js +4 -3
  434. package/test/sap/ui/core/demokit/tutorial/databinding/03/package.json +2 -5
  435. package/test/sap/ui/core/demokit/tutorial/databinding/03/ui5.yaml +8 -0
  436. package/test/sap/ui/core/demokit/tutorial/databinding/03/webapp/index.js +4 -3
  437. package/test/sap/ui/core/demokit/tutorial/databinding/04/package.json +2 -5
  438. package/test/sap/ui/core/demokit/tutorial/databinding/04/ui5.yaml +8 -0
  439. package/test/sap/ui/core/demokit/tutorial/databinding/04/webapp/index.js +4 -3
  440. package/test/sap/ui/core/demokit/tutorial/databinding/05/package.json +2 -5
  441. package/test/sap/ui/core/demokit/tutorial/databinding/05/ui5.yaml +8 -0
  442. package/test/sap/ui/core/demokit/tutorial/databinding/05/webapp/index.js +4 -3
  443. package/test/sap/ui/core/demokit/tutorial/databinding/06/package.json +2 -5
  444. package/test/sap/ui/core/demokit/tutorial/databinding/06/ui5.yaml +8 -0
  445. package/test/sap/ui/core/demokit/tutorial/databinding/06/webapp/index.js +4 -3
  446. package/test/sap/ui/core/demokit/tutorial/databinding/07/package.json +2 -5
  447. package/test/sap/ui/core/demokit/tutorial/databinding/07/ui5.yaml +8 -0
  448. package/test/sap/ui/core/demokit/tutorial/databinding/07/webapp/index.js +4 -3
  449. package/test/sap/ui/core/demokit/tutorial/databinding/08/package.json +2 -5
  450. package/test/sap/ui/core/demokit/tutorial/databinding/08/ui5.yaml +8 -0
  451. package/test/sap/ui/core/demokit/tutorial/databinding/08/webapp/index.js +4 -3
  452. package/test/sap/ui/core/demokit/tutorial/databinding/09/package.json +2 -5
  453. package/test/sap/ui/core/demokit/tutorial/databinding/09/ui5.yaml +8 -0
  454. package/test/sap/ui/core/demokit/tutorial/databinding/09/webapp/index.js +4 -3
  455. package/test/sap/ui/core/demokit/tutorial/databinding/10/package.json +2 -5
  456. package/test/sap/ui/core/demokit/tutorial/databinding/10/ui5.yaml +8 -0
  457. package/test/sap/ui/core/demokit/tutorial/databinding/10/webapp/index.js +4 -3
  458. package/test/sap/ui/core/demokit/tutorial/databinding/11/package.json +2 -5
  459. package/test/sap/ui/core/demokit/tutorial/databinding/11/ui5.yaml +8 -0
  460. package/test/sap/ui/core/demokit/tutorial/databinding/11/webapp/index.js +6 -4
  461. package/test/sap/ui/core/demokit/tutorial/databinding/12/package.json +2 -5
  462. package/test/sap/ui/core/demokit/tutorial/databinding/12/ui5.yaml +8 -0
  463. package/test/sap/ui/core/demokit/tutorial/databinding/12/webapp/index.js +6 -4
  464. package/test/sap/ui/core/demokit/tutorial/databinding/13/package.json +2 -5
  465. package/test/sap/ui/core/demokit/tutorial/databinding/13/ui5.yaml +8 -0
  466. package/test/sap/ui/core/demokit/tutorial/databinding/13/webapp/index.js +6 -4
  467. package/test/sap/ui/core/demokit/tutorial/databinding/14/package.json +2 -5
  468. package/test/sap/ui/core/demokit/tutorial/databinding/14/ui5.yaml +8 -0
  469. package/test/sap/ui/core/demokit/tutorial/databinding/14/webapp/index.js +6 -4
  470. package/test/sap/ui/core/demokit/tutorial/databinding/15/package.json +2 -5
  471. package/test/sap/ui/core/demokit/tutorial/databinding/15/ui5.yaml +8 -0
  472. package/test/sap/ui/core/demokit/tutorial/databinding/15/webapp/index.js +6 -4
  473. package/test/sap/ui/core/demokit/tutorial/mockserver/01/package.json +2 -5
  474. package/test/sap/ui/core/demokit/tutorial/mockserver/01/ui5.yaml +8 -0
  475. package/test/sap/ui/core/demokit/tutorial/mockserver/02/package.json +2 -5
  476. package/test/sap/ui/core/demokit/tutorial/mockserver/02/ui5.yaml +8 -0
  477. package/test/sap/ui/core/demokit/tutorial/mockserver/03/package.json +2 -5
  478. package/test/sap/ui/core/demokit/tutorial/mockserver/03/ui5.yaml +8 -0
  479. package/test/sap/ui/core/demokit/tutorial/mockserver/04/package.json +2 -5
  480. package/test/sap/ui/core/demokit/tutorial/mockserver/04/ui5.yaml +8 -0
  481. package/test/sap/ui/core/demokit/tutorial/navigation/01/package.json +2 -4
  482. package/test/sap/ui/core/demokit/tutorial/navigation/01/ui5.yaml +7 -0
  483. package/test/sap/ui/core/demokit/tutorial/navigation/01/webapp/index.html +1 -1
  484. package/test/sap/ui/core/demokit/tutorial/navigation/02/package.json +2 -4
  485. package/test/sap/ui/core/demokit/tutorial/navigation/02/ui5.yaml +7 -0
  486. package/test/sap/ui/core/demokit/tutorial/navigation/02/webapp/index.html +1 -1
  487. package/test/sap/ui/core/demokit/tutorial/navigation/03/package.json +2 -4
  488. package/test/sap/ui/core/demokit/tutorial/navigation/03/ui5.yaml +7 -0
  489. package/test/sap/ui/core/demokit/tutorial/navigation/03/webapp/index.html +1 -1
  490. package/test/sap/ui/core/demokit/tutorial/navigation/04/package.json +2 -4
  491. package/test/sap/ui/core/demokit/tutorial/navigation/04/ui5.yaml +7 -0
  492. package/test/sap/ui/core/demokit/tutorial/navigation/04/webapp/index.html +1 -1
  493. package/test/sap/ui/core/demokit/tutorial/navigation/05/package.json +2 -4
  494. package/test/sap/ui/core/demokit/tutorial/navigation/05/ui5.yaml +7 -0
  495. package/test/sap/ui/core/demokit/tutorial/navigation/05/webapp/index.html +1 -1
  496. package/test/sap/ui/core/demokit/tutorial/navigation/06/package.json +2 -4
  497. package/test/sap/ui/core/demokit/tutorial/navigation/06/ui5.yaml +7 -0
  498. package/test/sap/ui/core/demokit/tutorial/navigation/06/webapp/index.html +1 -1
  499. package/test/sap/ui/core/demokit/tutorial/navigation/07/package.json +2 -4
  500. package/test/sap/ui/core/demokit/tutorial/navigation/07/ui5.yaml +7 -0
  501. package/test/sap/ui/core/demokit/tutorial/navigation/07/webapp/index.html +1 -1
  502. package/test/sap/ui/core/demokit/tutorial/navigation/08/package.json +2 -4
  503. package/test/sap/ui/core/demokit/tutorial/navigation/08/ui5.yaml +7 -0
  504. package/test/sap/ui/core/demokit/tutorial/navigation/08/webapp/index.html +1 -1
  505. package/test/sap/ui/core/demokit/tutorial/navigation/09/package.json +2 -4
  506. package/test/sap/ui/core/demokit/tutorial/navigation/09/ui5.yaml +7 -0
  507. package/test/sap/ui/core/demokit/tutorial/navigation/09/webapp/index.html +1 -1
  508. package/test/sap/ui/core/demokit/tutorial/navigation/10/package.json +2 -4
  509. package/test/sap/ui/core/demokit/tutorial/navigation/10/ui5.yaml +7 -0
  510. package/test/sap/ui/core/demokit/tutorial/navigation/10/webapp/index.html +1 -1
  511. package/test/sap/ui/core/demokit/tutorial/navigation/11/package.json +2 -4
  512. package/test/sap/ui/core/demokit/tutorial/navigation/11/ui5.yaml +7 -0
  513. package/test/sap/ui/core/demokit/tutorial/navigation/11/webapp/index.html +1 -1
  514. package/test/sap/ui/core/demokit/tutorial/navigation/12/package.json +2 -4
  515. package/test/sap/ui/core/demokit/tutorial/navigation/12/ui5.yaml +7 -0
  516. package/test/sap/ui/core/demokit/tutorial/navigation/12/webapp/index.html +1 -1
  517. package/test/sap/ui/core/demokit/tutorial/navigation/13/package.json +2 -4
  518. package/test/sap/ui/core/demokit/tutorial/navigation/13/ui5.yaml +7 -0
  519. package/test/sap/ui/core/demokit/tutorial/navigation/13/webapp/index.html +1 -1
  520. package/test/sap/ui/core/demokit/tutorial/navigation/14/package.json +2 -4
  521. package/test/sap/ui/core/demokit/tutorial/navigation/14/ui5.yaml +7 -0
  522. package/test/sap/ui/core/demokit/tutorial/navigation/14/webapp/index.html +1 -1
  523. package/test/sap/ui/core/demokit/tutorial/navigation/15/package.json +2 -4
  524. package/test/sap/ui/core/demokit/tutorial/navigation/15/ui5.yaml +7 -0
  525. package/test/sap/ui/core/demokit/tutorial/navigation/15/webapp/index.html +1 -1
  526. package/test/sap/ui/core/demokit/tutorial/navigation/16/package.json +2 -4
  527. package/test/sap/ui/core/demokit/tutorial/navigation/16/ui5.yaml +7 -0
  528. package/test/sap/ui/core/demokit/tutorial/navigation/16/webapp/index.html +1 -1
  529. package/test/sap/ui/core/demokit/tutorial/navigation/17/package.json +4 -6
  530. package/test/sap/ui/core/demokit/tutorial/navigation/17/ui5.yaml +8 -1
  531. package/test/sap/ui/core/demokit/tutorial/navigation/17/webapp/index.html +1 -1
  532. package/test/sap/ui/core/demokit/tutorial/navigation/index.html +2 -2
  533. package/test/sap/ui/core/demokit/tutorial/odatav4/01/package.json +2 -6
  534. package/test/sap/ui/core/demokit/tutorial/odatav4/01/ui5.yaml +9 -0
  535. package/test/sap/ui/core/demokit/tutorial/odatav4/02/package.json +2 -6
  536. package/test/sap/ui/core/demokit/tutorial/odatav4/02/ui5.yaml +9 -0
  537. package/test/sap/ui/core/demokit/tutorial/odatav4/03/package.json +2 -6
  538. package/test/sap/ui/core/demokit/tutorial/odatav4/03/ui5.yaml +9 -0
  539. package/test/sap/ui/core/demokit/tutorial/odatav4/04/package.json +2 -6
  540. package/test/sap/ui/core/demokit/tutorial/odatav4/04/ui5.yaml +9 -0
  541. package/test/sap/ui/core/demokit/tutorial/odatav4/05/package.json +2 -6
  542. package/test/sap/ui/core/demokit/tutorial/odatav4/05/ui5.yaml +9 -0
  543. package/test/sap/ui/core/demokit/tutorial/odatav4/06/package.json +2 -6
  544. package/test/sap/ui/core/demokit/tutorial/odatav4/06/ui5.yaml +9 -0
  545. package/test/sap/ui/core/demokit/tutorial/odatav4/06/webapp/controller/App.controller.js +5 -5
  546. package/test/sap/ui/core/demokit/tutorial/odatav4/07/package.json +2 -6
  547. package/test/sap/ui/core/demokit/tutorial/odatav4/07/ui5.yaml +9 -0
  548. package/test/sap/ui/core/demokit/tutorial/odatav4/07/webapp/controller/App.controller.js +7 -7
  549. package/test/sap/ui/core/demokit/tutorial/odatav4/08/package.json +2 -6
  550. package/test/sap/ui/core/demokit/tutorial/odatav4/08/ui5.yaml +9 -0
  551. package/test/sap/ui/core/demokit/tutorial/odatav4/08/webapp/controller/App.controller.js +7 -7
  552. package/test/sap/ui/core/demokit/tutorial/odatav4/08/webapp/test/integration/opaTests.qunit.js +5 -5
  553. package/test/sap/ui/core/demokit/tutorial/odatav4/08/webapp/test/integration/pages/Tutorial.js +1 -1
  554. package/test/sap/ui/core/demokit/tutorial/odatav4/09/package.json +2 -6
  555. package/test/sap/ui/core/demokit/tutorial/odatav4/09/ui5.yaml +9 -0
  556. package/test/sap/ui/core/demokit/tutorial/odatav4/09/webapp/controller/App.controller.js +7 -7
  557. package/test/sap/ui/core/demokit/tutorial/odatav4/10/package.json +2 -6
  558. package/test/sap/ui/core/demokit/tutorial/odatav4/10/ui5.yaml +9 -0
  559. package/test/sap/ui/core/demokit/tutorial/odatav4/10/webapp/controller/App.controller.js +7 -7
  560. package/test/sap/ui/core/demokit/tutorial/odatav4/11/package.json +2 -6
  561. package/test/sap/ui/core/demokit/tutorial/odatav4/11/ui5.yaml +9 -0
  562. package/test/sap/ui/core/demokit/tutorial/odatav4/11/webapp/controller/App.controller.js +7 -7
  563. package/test/sap/ui/core/demokit/tutorial/odatav4/11/webapp/test/integration/opaTests.qunit.js +5 -5
  564. package/test/sap/ui/core/demokit/tutorial/odatav4/11/webapp/test/integration/pages/Tutorial.js +1 -1
  565. package/test/sap/ui/core/demokit/tutorial/troubleshooting/01/package.json +2 -5
  566. package/test/sap/ui/core/demokit/tutorial/troubleshooting/01/ui5.yaml +8 -0
  567. package/test/sap/ui/core/demokit/tutorial/troubleshooting/01/webapp/test/integration/opaTests.qunit.js +6 -6
  568. package/test/sap/ui/core/frameoptions/createcontent.js +7 -6
  569. package/test/sap/ui/core/internal/samples/client/MusicCollection/index.html +1 -1
  570. package/test/sap/ui/core/internal/samples/composite/xmlcomposite/exStringAndFloat/Test.controller.js +3 -2
  571. package/test/sap/ui/core/internal/samples/odata/twoFields/Opa.qunit.html +1 -1
  572. package/test/sap/ui/core/internal/samples/odata/twoFields/Opa.qunit.js +8 -8
  573. package/test/sap/ui/core/internal/samples/odata/twoFields/index.html +1 -1
  574. package/test/sap/ui/core/internal/samples/odata/v2/Products/Opa.qunit.html +1 -1
  575. package/test/sap/ui/core/internal/samples/odata/v2/Products/Opa.qunit.js +7 -7
  576. package/test/sap/ui/core/internal/samples/odata/v2/Products/index.html +1 -1
  577. package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/Component.js +3 -2
  578. package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/MIT.SalesOrders(V2).ODLB.create.html +2 -0
  579. package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/Main.controller.js +3 -3
  580. package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/Opa.qunit.html +1 -1
  581. package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/Opa.qunit.js +9 -6
  582. package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/SandboxModel.js +3 -0
  583. package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/data/ODLB.create/TC3/SalesOrderSet_desc_4-1.json +16 -0
  584. package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/index.html +1 -1
  585. package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/tests/ODataListBinding.create/TC3_SalesOrders_InlineCreationRow.js +9 -0
  586. package/test/sap/ui/core/internal/samples/odata/v2/TreeTable/Component.js +3 -2
  587. package/test/sap/ui/core/internal/samples/odata/v2/TreeTable/Main.controller.js +3 -3
  588. package/test/sap/ui/core/internal/samples/odata/v2/TreeTable/index.html +1 -1
  589. package/test/sap/ui/core/qunit/BlockLayerUtils.qunit.js +9 -7
  590. package/test/sap/ui/core/qunit/CalculatedFields.qunit.js +4 -2
  591. package/test/sap/ui/core/qunit/ContextMenuSupport.qunit.js +3 -2
  592. package/test/sap/ui/core/qunit/ControlDefinition.qunit.js +11 -10
  593. package/test/sap/ui/core/qunit/ControlRenderer.qunit.js +218 -223
  594. package/test/sap/ui/core/qunit/Core.qunit.js +35 -31
  595. package/test/sap/ui/core/qunit/CoreEvents.qunit.js +17 -15
  596. package/test/sap/ui/core/qunit/Core_repeatedExecution.qunit.js +3 -3
  597. package/test/sap/ui/core/qunit/CustomStyleClassSupport.qunit.js +4 -3
  598. package/test/sap/ui/core/qunit/Element_data.qunit.js +5 -5
  599. package/test/sap/ui/core/qunit/Element_destroy.qunit.js +6 -4
  600. package/test/sap/ui/core/qunit/Element_focus.qunit.js +25 -24
  601. package/test/sap/ui/core/qunit/Element_metadata_selector.qunit.js +3 -2
  602. package/test/sap/ui/core/qunit/EnabledPropagator.qunit.js +7 -6
  603. package/test/sap/ui/core/qunit/ExpressionParser.qunit.js +1 -1
  604. package/test/sap/ui/core/qunit/FastNavigationWithWebComponents.qunit.js +5 -5
  605. package/test/sap/ui/core/qunit/FieldGroup.qunit.js +9 -6
  606. package/test/sap/ui/core/qunit/FocusHandler.qunit.js +7 -6
  607. package/test/sap/ui/core/qunit/Fragment.qunit.js +35 -34
  608. package/test/sap/ui/core/qunit/Fragment_legacyAPIs.qunit.js +51 -50
  609. package/test/sap/ui/core/qunit/HTML.qunit.js +32 -32
  610. package/test/sap/ui/core/qunit/Icon.qunit.js +66 -65
  611. package/test/sap/ui/core/qunit/IconPool.qunit.js +2 -1
  612. package/test/sap/ui/core/qunit/InvisibleText.qunit.js +13 -12
  613. package/test/sap/ui/core/qunit/Lib.qunit.js +8 -8
  614. package/test/sap/ui/core/qunit/LocalBusyIndicator.qunit.js +24 -24
  615. package/test/sap/ui/core/qunit/RenderManager.qunit.js +54 -53
  616. package/test/sap/ui/core/qunit/ResizeHandler.qunit.js +8 -9
  617. package/test/sap/ui/core/qunit/ScrollBar.qunit.js +7 -6
  618. package/test/sap/ui/core/qunit/ShortcutHints.qunit.js +13 -11
  619. package/test/sap/ui/core/qunit/StashedControlSupport.qunit.js +6 -5
  620. package/test/sap/ui/core/qunit/ThemeParameters.qunit.js +5 -4
  621. package/test/sap/ui/core/qunit/Theming.qunit.js +88 -50
  622. package/test/sap/ui/core/qunit/Theming_default_and_fallback.qunit.js +130 -0
  623. package/test/sap/ui/core/qunit/TooltipBase.qunit.js +4 -3
  624. package/test/sap/ui/core/qunit/UIArea.qunit.js +248 -18
  625. package/test/sap/ui/core/qunit/analytics/testsuite4analytics.qunit.js +9 -8
  626. package/test/sap/ui/core/qunit/app/MessageListBinding.qunit.js +10 -10
  627. package/test/sap/ui/core/qunit/base/Config.qunit.js +12 -2
  628. package/test/sap/ui/core/qunit/base/Config_cascade.qunit.js +123 -52
  629. package/test/sap/ui/core/qunit/base/Config_meta.qunit.html +2 -0
  630. package/test/sap/ui/core/qunit/base/config/GlobalConfig.js +3 -1
  631. package/test/sap/ui/core/qunit/base/config/GlobalConfigForCascade.js +4 -1
  632. package/test/sap/ui/core/qunit/bootstrap/BootstrapMinimal.qunit.js +3 -3
  633. package/test/sap/ui/core/qunit/bootstrap/BootstrapMinimal_legacyAPIs.qunit.js +13 -11
  634. package/test/sap/ui/core/qunit/bootstrap/BootstrapPreload.qunit.js +1 -1
  635. package/test/sap/ui/core/qunit/bootstrap/BootstrapWithCustomScript_legacyAPIs.qunit.js +13 -11
  636. package/test/sap/ui/core/qunit/bootstrap/BootstrapWithNoJQuery_legacyAPIs.qunit.js +7 -5
  637. package/test/sap/ui/core/qunit/bootstrap/CalendarClassLoadingWithCustomBootTaskAndPreload.qunit.js +12 -14
  638. package/test/sap/ui/core/qunit/bootstrap/CfgDefaults.qunit.js +3 -2
  639. package/test/sap/ui/core/qunit/bootstrap/CfgFromTagAttributes.qunit.js +1 -1
  640. package/test/sap/ui/core/qunit/bootstrap/_checkCoreAndLibraryBooted.qunit.js +1 -1
  641. package/test/sap/ui/core/qunit/bootstrap/testsuite.bootstrap.qunit.js +12 -6
  642. package/test/sap/ui/core/qunit/component/Component.qunit.js +14 -15
  643. package/test/sap/ui/core/qunit/component/Component_unavoidablySync.qunit.js +4 -3
  644. package/test/sap/ui/core/qunit/component/Customizing.qunit.js +4 -5
  645. package/test/sap/ui/core/qunit/component/Customizing_async.qunit.js +4 -3
  646. package/test/sap/ui/core/qunit/component/Customizing_disabled.qunit.js +4 -6
  647. package/test/sap/ui/core/qunit/component/Customizing_legacyAPIs.qunit.js +3 -5
  648. package/test/sap/ui/core/qunit/component/Customizing_multi.qunit.js +3 -6
  649. package/test/sap/ui/core/qunit/component/Customizing_unavoidablySync.qunit.js +5 -8
  650. package/test/sap/ui/core/qunit/component/ExtensionPoint.qunit.js +4 -5
  651. package/test/sap/ui/core/qunit/component/ExtensionPoint_unavoidablySync.qunit.js +4 -3
  652. package/test/sap/ui/core/qunit/component/UIComponent.qunit.js +19 -19
  653. package/test/sap/ui/core/qunit/component/UIComponent_unavoidablySync.qunit.js +19 -19
  654. package/test/sap/ui/core/qunit/composite/XMLComposite.qunit.js +43 -43
  655. package/test/sap/ui/core/qunit/csp/ContentSecurityPolicy.qunit.js +18 -13
  656. package/test/sap/ui/core/qunit/dnd/DragAndDrop.qunit.js +19 -18
  657. package/test/sap/ui/core/qunit/dnd/DragInfo.qunit.js +13 -12
  658. package/test/sap/ui/core/qunit/dnd/DropInfo.qunit.js +5 -4
  659. package/test/sap/ui/core/qunit/generic/ControlMemoryLeaks.qunit.js +7 -6
  660. package/test/sap/ui/core/qunit/generic/DuplicateIdCheck.qunit.js +7 -6
  661. package/test/sap/ui/core/qunit/generic/legacy/ControlIterator.qunit.js +6 -6
  662. package/test/sap/ui/core/qunit/generic/legacy/ControlMemoryLeaks.qunit.js +20 -17
  663. package/test/sap/ui/core/qunit/generic/legacy/DuplicateIdCheck.qunit.js +8 -7
  664. package/test/sap/ui/core/qunit/i18n/LocaleData.qunit.js +1 -2
  665. package/test/sap/ui/core/qunit/internal/1Ring.qunit.html +14 -19
  666. package/test/sap/ui/core/qunit/internal/1Ring.qunit.js +34 -22
  667. package/test/sap/ui/core/qunit/internal/ODataV4.qunit.html +6 -6
  668. package/test/sap/ui/core/qunit/internal/testsuite.feature-odata-v4.qunit.js +4 -0
  669. package/test/sap/ui/core/qunit/isBehindOtherElement.qunit.js +7 -7
  670. package/test/sap/ui/core/qunit/jquery-mobile-custom.qunit.js +3 -3
  671. package/test/sap/ui/core/qunit/jquery.sap.events.qunit.js +3 -2
  672. package/test/sap/ui/core/qunit/jquery.sap.ui.qunit.js +16 -16
  673. package/test/sap/ui/core/qunit/messages/{MessageManager.qunit.js → Messaging.qunit.js} +46 -49
  674. package/test/sap/ui/core/qunit/messages/messagesDataBinding.qunit.js +3 -1
  675. package/test/sap/ui/core/qunit/messages/messagesEnd2End.qunit.js +10 -10
  676. package/test/sap/ui/core/qunit/messages/messagesGeneral.qunit.js +36 -46
  677. package/test/sap/ui/core/qunit/messages/messagesUsage.qunit.js +25 -36
  678. package/test/sap/ui/core/qunit/messages/testsuite.messaging.base.qunit.js +2 -2
  679. package/test/sap/ui/core/qunit/model/Binding.qunit.js +8 -8
  680. package/test/sap/ui/core/qunit/model/controlhelper/TreeBindingProxy.qunit.js +24 -14
  681. package/test/sap/ui/core/qunit/mvc/AnyView.qunit.js +7 -6
  682. package/test/sap/ui/core/qunit/mvc/AnyViewAsync.qunit.js +3 -2
  683. package/test/sap/ui/core/qunit/mvc/XMLTemplateProcessorAsync_unavoidablyUsingInlineStyle.qunit.js +5 -4
  684. package/test/sap/ui/core/qunit/mvc/XMLTemplateProcessorRequireXML.qunit.js +8 -9
  685. package/test/sap/ui/core/qunit/mvc/XMLView.qunit.js +45 -40
  686. package/test/sap/ui/core/qunit/mvc/testdata/stashed/OP.html +1 -1
  687. package/test/sap/ui/core/qunit/mvc/viewprocessing/ViewProcessing.qunit.js +15 -20
  688. package/test/sap/ui/core/qunit/mvc/viewprocessing/ViewProcessing_legacyAPIs.qunit.js +20 -25
  689. package/test/sap/ui/core/qunit/mvc_legacyAPIs/AnyViewAsync_legacyAPIs.qunit.js +10 -11
  690. package/test/sap/ui/core/qunit/mvc_legacyAPIs/AnyView_legacyAPIs.qunit.js +7 -6
  691. package/test/sap/ui/core/qunit/mvc_legacyAPIs/HTMLView_legacyAPIs.qunit.js +8 -7
  692. package/test/sap/ui/core/qunit/mvc_legacyAPIs/XMLTemplateProcessorRequireXML_legacyAPIs.qunit.js +7 -7
  693. package/test/sap/ui/core/qunit/mvc_legacyAPIs/XMLView_legacyAPIs.qunit.js +40 -47
  694. package/test/sap/ui/core/qunit/odata/ODataAnnotations.qunit.js +52 -20
  695. package/test/sap/ui/core/qunit/odata/{ODataListBinding.qunit.js → ODataListBinding_legacyAPIs.qunit.js} +27 -0
  696. package/test/sap/ui/core/qunit/odata/ODataMessageParser.qunit.js +44 -48
  697. package/test/sap/ui/core/qunit/odata/ODataMessageParserNoFakeService.qunit.js +8 -8
  698. package/test/sap/ui/core/qunit/odata/ODataMetaModel.qunit.js +66 -29
  699. package/test/sap/ui/core/qunit/odata/ODataMetadata.qunit.js +17 -7
  700. package/test/sap/ui/core/qunit/odata/ODataTreeBindingAdapter.qunit.js +147 -89
  701. package/test/sap/ui/core/qunit/odata/ODataUtils.qunit.js +1 -0
  702. package/test/sap/ui/core/qunit/odata/type/DateTimeBase.qunit.js +33 -12
  703. package/test/sap/ui/core/qunit/odata/type/TimeOfDay.qunit.js +33 -12
  704. package/test/sap/ui/core/qunit/odata/v2/CanonicalRequests.qunit.js +5 -4
  705. package/test/sap/ui/core/qunit/odata/v2/ODataListBindingNoFakeService.qunit.js +63 -13
  706. package/test/sap/ui/core/qunit/odata/v2/ODataModel.integration.qunit.js +281 -59
  707. package/test/sap/ui/core/qunit/odata/v2/ODataModelNoFakeService.qunit.js +28 -4
  708. package/test/sap/ui/core/qunit/odata/v2/ODataTreeBindingFlatNoFakeService.qunit.js +21 -0
  709. package/test/sap/ui/core/qunit/odata/v2/ODataTreeBindingNoFakeService.qunit.js +1 -2
  710. package/test/sap/ui/core/qunit/odata/v2/ODataV2ListBinding.qunit.js +7 -207
  711. package/test/sap/ui/core/qunit/odata/v2/ODataV2ListBinding_Filter_legacyAPIs.qunit.js +281 -0
  712. package/test/sap/ui/core/qunit/odata/v2/ODataV2Model.qunit.js +9 -8
  713. package/test/sap/ui/core/qunit/odata/v2/ODataV2TreeBinding.qunit.js +1 -0
  714. package/test/sap/ui/core/qunit/odata/v2/V2ODataModel.qunit.js +95 -85
  715. package/test/sap/ui/core/qunit/odata/v2/V2ODataModelB.qunit.js +70 -67
  716. package/test/sap/ui/core/qunit/odata/v2/V2ODataModelDataState.qunit.js +19 -20
  717. package/test/sap/ui/core/qunit/odata/v2/testsuite.odatav2.qunit.js +4 -0
  718. package/test/sap/ui/core/qunit/odata/v4/Context.qunit.js +50 -27
  719. package/test/sap/ui/core/qunit/odata/v4/ODataBinding.qunit.js +5 -0
  720. package/test/sap/ui/core/qunit/odata/v4/ODataContextBinding.qunit.js +4 -3
  721. package/test/sap/ui/core/qunit/odata/v4/ODataListBinding.qunit.js +103 -14
  722. package/test/sap/ui/core/qunit/odata/v4/ODataModel.integration.qunit.js +1027 -31
  723. package/test/sap/ui/core/qunit/odata/v4/ODataModel.qunit.js +18 -17
  724. package/test/sap/ui/core/qunit/odata/v4/lib/_AggregationCache.qunit.js +272 -36
  725. package/test/sap/ui/core/qunit/odata/v4/lib/_Cache.qunit.js +115 -82
  726. package/test/sap/ui/core/qunit/odata/v4/lib/_Helper.qunit.js +10 -0
  727. package/test/sap/ui/core/qunit/odata/v4/lib/_Requestor.qunit.js +108 -10
  728. package/test/sap/ui/core/qunit/odata/v4/lib/_V2Requestor.qunit.js +1 -1
  729. package/test/sap/ui/core/qunit/opa/Opa5PageObject.qunit.js +5 -6
  730. package/test/sap/ui/core/qunit/opa/OpaPlugin.qunit.js +29 -42
  731. package/test/sap/ui/core/qunit/opa/RecordReplay.qunit.js +13 -14
  732. package/test/sap/ui/core/qunit/opa/_ControlFinder.qunit.js +5 -4
  733. package/test/sap/ui/core/qunit/opa/actions/Action.qunit.js +6 -5
  734. package/test/sap/ui/core/qunit/opa/actions/EnterText.qunit.js +22 -21
  735. package/test/sap/ui/core/qunit/opa/actions/Press.qunit.js +60 -56
  736. package/test/sap/ui/core/qunit/opa/autowaiter/_cssAnimationWaiter.js +5 -7
  737. package/test/sap/ui/core/qunit/opa/autowaiter/_cssTransitionWaiter.js +5 -9
  738. package/test/sap/ui/core/qunit/opa/autowaiter/_jsAnimationWaiter.js +5 -6
  739. package/test/sap/ui/core/qunit/opa/autowaiter/_navigationContainerWaiter.js +5 -4
  740. package/test/sap/ui/core/qunit/opa/autowaiter/_resourceWaiter.js +21 -20
  741. package/test/sap/ui/core/qunit/opa/fixture/bindingPath.js +6 -5
  742. package/test/sap/ui/core/qunit/opa/matchers/Interactable.qunit.js +7 -5
  743. package/test/sap/ui/core/qunit/opa/matchers/LabelFor.qunit.js +4 -3
  744. package/test/sap/ui/core/qunit/opa/matchers/Sibling.qunit.js +4 -3
  745. package/test/sap/ui/core/qunit/opa/matchers/Visible.qunit.js +6 -5
  746. package/test/sap/ui/core/qunit/opa/matchers/_Busy.qunit.js +28 -27
  747. package/test/sap/ui/core/qunit/opa/matchers/_Editable.qunit.js +11 -10
  748. package/test/sap/ui/core/qunit/opa/matchers/_Enabled.qunit.js +11 -10
  749. package/test/sap/ui/core/qunit/opa/matchers/_Visitor.qunit.js +5 -4
  750. package/test/sap/ui/core/qunit/opa/opa5/actions.qunit.js +8 -7
  751. package/test/sap/ui/core/qunit/opa/opa5/basics.qunit.js +12 -17
  752. package/test/sap/ui/core/qunit/opa/opa5/logging.qunit.js +5 -6
  753. package/test/sap/ui/core/qunit/opa/opa5/matchers.qunit.js +6 -5
  754. package/test/sap/ui/core/qunit/opa/selectors/_BindingPath.js +10 -9
  755. package/test/sap/ui/core/qunit/opa/selectors/_ControlSelectorGenerator.js +6 -7
  756. package/test/sap/ui/core/qunit/opa/selectors/_ControlSelectorValidator.js +4 -3
  757. package/test/sap/ui/core/qunit/opa/selectors/_DropdownItem.js +4 -3
  758. package/test/sap/ui/core/qunit/opa/selectors/_GlobalID.js +4 -3
  759. package/test/sap/ui/core/qunit/opa/selectors/_LabelFor.js +4 -3
  760. package/test/sap/ui/core/qunit/opa/selectors/_Properties.js +33 -27
  761. package/test/sap/ui/core/qunit/opa/selectors/_Selector.js +7 -10
  762. package/test/sap/ui/core/qunit/opa/selectors/_TableRowItem.js +5 -7
  763. package/test/sap/ui/core/qunit/opa/selectors/_ViewID.js +5 -7
  764. package/test/sap/ui/core/qunit/performance/trace/Interaction.qunit.js +35 -28
  765. package/test/sap/ui/core/qunit/routing/Placeholder.qunit.js +11 -9
  766. package/test/sap/ui/core/qunit/routing/PlaceholderOptOut.qunit.js +5 -3
  767. package/test/sap/ui/core/qunit/routing/async/Router.qunit.js +57 -0
  768. package/test/sap/ui/core/qunit/routing/fixture/historyIframe/iframe/index.html +1 -1
  769. package/test/sap/ui/core/qunit/routing/fixture/router/component/2LevelsMultiNavTo/Child/Component.js +30 -0
  770. package/test/sap/ui/core/qunit/routing/fixture/router/component/2LevelsMultiNavTo/Child/manifest.json +25 -0
  771. package/test/sap/ui/core/qunit/routing/fixture/router/component/2LevelsMultiNavTo/Parent/Component.js +14 -0
  772. package/test/sap/ui/core/qunit/routing/fixture/router/component/2LevelsMultiNavTo/Parent/manifest.json +51 -0
  773. package/test/sap/ui/core/qunit/routing/fixture/router/component/2LevelsMultiNavTo/Parent/view/NotFound.view.xml +3 -0
  774. package/test/sap/ui/core/qunit/routing/fixture/router/component/2LevelsMultiNavTo/Parent/view/RootView.view.xml +5 -0
  775. package/test/sap/ui/core/qunit/rule/app/syncXHR.qunit.js +24 -17
  776. package/test/sap/ui/core/qunit/rule/app/syncXHRBootstrap.qunit.js +3 -3
  777. package/test/sap/ui/core/qunit/rule/app/syncXHRBootstrapDebug.qunit.js +3 -3
  778. package/test/sap/ui/core/qunit/rule/config/asynchronousXMLViews.qunit.js +9 -18
  779. package/test/sap/ui/core/qunit/support/techinfo/TechnicalInfoTestbench.html +3 -1
  780. package/test/sap/ui/core/qunit/test/starter/find/index.html +1 -1
  781. package/test/sap/ui/core/qunit/test/starter/find/main.js +3 -2
  782. package/test/sap/ui/core/qunit/testsuite.core.framework.qunit.js +0 -6
  783. package/test/sap/ui/core/qunit/testsuites/testsuite.base.configuration.qunit.js +1 -1
  784. package/test/sap/ui/core/qunit/testsuites/testsuite.databinding.qunit.js +10 -6
  785. package/test/sap/ui/core/qunit/testsuites/testsuite.theming.qunit.js +27 -4
  786. package/test/sap/ui/core/qunit/tmpl/Template.qunit.js +36 -35
  787. package/test/sap/ui/core/qunit/types/DateFormat.qunit.js +13 -0
  788. package/test/sap/ui/core/qunit/types/DateInterval.qunit.js +2 -2
  789. package/test/sap/ui/core/qunit/util/BusyIndicatorNoCore.qunit.js +2 -2
  790. package/test/sap/ui/core/qunit/util/InvisibleMessage.qunit.js +4 -4
  791. package/test/sap/ui/core/qunit/util/LabelEnablement.qunit.js +27 -31
  792. package/test/sap/ui/core/qunit/util/Popup.qunit.js +27 -27
  793. package/test/sap/ui/core/qunit/util/ResponsivePaddingsEnablement.qunit.js +13 -9
  794. package/test/sap/ui/core/qunit/util/XMLPreprocessor.qunit.js +37 -6
  795. package/test/sap/ui/core/qunit/util/jQuery.sap.measure.qunit.js +1 -1
  796. package/test/sap/ui/core/qunit/util/jquery.sap.dom.qunit.js +3 -2
  797. package/test/sap/ui/core/qunit/util/reflection/JsControlTreeModifier.qunit.js +8 -8
  798. package/test/sap/ui/core/qunit/util/reflection/XmlTreeModifier.qunit.js +24 -24
  799. package/test/sap/ui/core/qunit/util/static/TechnicalInfoTestbenchInit.js +8 -2
  800. package/test/sap/ui/core/qunit/webc/WebComponent.qunit.js +188 -0
  801. package/test/sap/ui/core/qunit/webc/testsuite.webc.qunit.html +14 -0
  802. package/test/sap/ui/core/qunit/webc/testsuite.webc.qunit.js +22 -0
  803. package/test/sap/ui/core/relnotes/changes-1.117.json +1 -34
  804. package/test/sap/ui/core/relnotes/changes-1.118.json +143 -0
  805. package/test/sap/ui/core/samples/components/resourcesCSS/index.html +1 -1
  806. package/test/sap/ui/core/samples/databinding/DataBinding.html +3 -1
  807. package/test/sap/ui/core/samples/databinding/DataBindingAsyncType.html +3 -2
  808. package/test/sap/ui/core/samples/databinding/DataBindingCalculatedFields.html +3 -1
  809. package/test/sap/ui/core/samples/databinding/DataBindingList.html +3 -1
  810. package/test/sap/ui/core/samples/databinding/DataBindingListNamedModel.html +3 -1
  811. package/test/sap/ui/core/samples/databinding/DataBindingListXML.html +3 -1
  812. package/test/sap/ui/core/samples/databinding/DataBindingMultiModel.html +3 -1
  813. package/test/sap/ui/core/samples/databinding/DataBindingSortingFiltering.html +3 -1
  814. package/test/sap/ui/core/samples/databinding/DataBindingTreeLarge.html +102 -113
  815. package/test/sap/ui/core/samples/databinding/DataBindingTwoWay.html +3 -1
  816. package/test/sap/ui/core/samples/databinding/DataBindingTwoWayTable.html +90 -89
  817. package/test/sap/ui/core/samples/databinding/DataBindingValidation.html +149 -148
  818. package/test/sap/ui/core/samples/databinding/DataBindingXML.html +3 -2
  819. package/test/sap/ui/core/samples/databinding/DatabindingMessages.html +158 -153
  820. package/test/sap/ui/core/samples/databinding/ODatabindingMessages.html +4 -6
  821. package/test/sap/ui/core/samples/databinding/UnitTableMain.js +3 -4
  822. package/test/sap/ui/core/samples/extensions/index_legacyAPIs.html +15 -13
  823. package/test/sap/ui/core/samples/formatting/controller/ChooseFormatOptions.controller.js +3 -2
  824. package/test/sap/ui/core/samples/mvc/ExtendedXMLViewEventHandlerSyntax.html +5 -3
  825. package/test/sap/ui/core/samples/mvc/XMLViewBindableAggregation.html +1 -1
  826. package/test/testsuite/testframe.html +4 -4
  827. package/src/ui5-boot.js +0 -50
  828. package/test/sap/ui/core/qunit/CoreLock.qunit.js +0 -61
  829. package/test/sap/ui/core/qunit/internal/ODataV4.qunit.js +0 -30
  830. /package/test/sap/ui/core/qunit/{MasterDetail.qunit.js → MasterDetail_legacyAPIs.qunit.js} +0 -0
  831. /package/test/sap/ui/core/qunit/odata/{ODataModel.qunit.js → ODataModel_legacyAPIs.qunit.js} +0 -0
  832. /package/test/sap/ui/core/qunit/odata/{ODataSharedMetadata.qunit.js → ODataSharedMetadata_legacyAPIs.qunit.js} +0 -0
  833. /package/test/sap/ui/core/qunit/odata/{ODataTreeBinding.qunit.js → ODataTreeBinding_legacyAPIs.qunit.js} +0 -0
@@ -38,8 +38,9 @@ sap.ui.define([
38
38
  "sap/ui/core/cache/CacheManager",
39
39
  "sap/ui/core/Configuration",
40
40
  "sap/ui/core/library",
41
+ "sap/ui/core/Rendering",
41
42
  "sap/ui/core/message/Message",
42
- "sap/ui/core/message/MessageManager",
43
+ "sap/ui/core/Messaging",
43
44
  "sap/ui/model/BindingMode",
44
45
  "sap/ui/model/Context",
45
46
  "sap/ui/model/Model",
@@ -47,8 +48,8 @@ sap.ui.define([
47
48
  "sap/ui/thirdparty/URI"
48
49
  ], function (ODataContextBinding, ODataListBinding, ODataMetaModel, ODataPropertyBinding,
49
50
  SubmitMode, _GroupLock, _Helper, _MetadataRequestor, _Parser, _Requestor, assert, Log,
50
- SyncPromise, CacheManager, Configuration, coreLibrary, Message, MessageManager, BindingMode,
51
- BaseContext, Model, OperationMode, URI) {
51
+ SyncPromise, CacheManager, Configuration, coreLibrary, Rendering, Message, Messaging,
52
+ BindingMode, BaseContext, Model, OperationMode, URI) {
52
53
  "use strict";
53
54
 
54
55
  var sClassName = "sap.ui.model.odata.v4.ODataModel",
@@ -233,7 +234,7 @@ sap.ui.define([
233
234
  * @extends sap.ui.model.Model
234
235
  * @public
235
236
  * @since 1.37.0
236
- * @version 1.117.0
237
+ * @version 1.118.0
237
238
  */
238
239
  ODataModel = Model.extend("sap.ui.model.odata.v4.ODataModel",
239
240
  /** @lends sap.ui.model.odata.v4.ODataModel.prototype */{
@@ -379,7 +380,7 @@ sap.ui.define([
379
380
  reportStateMessages : this.reportStateMessages.bind(this),
380
381
  reportTransitionMessages : this.reportTransitionMessages.bind(this),
381
382
  updateMessages : function (aOldMessages, aNewMessages) {
382
- MessageManager.updateMessages(aOldMessages, aNewMessages);
383
+ Messaging.updateMessages(aOldMessages, aNewMessages);
383
384
  }
384
385
  };
385
386
  this.oRequestor = _Requestor.create(this.sServiceUrl, this.oInterface, this.mHeaders,
@@ -463,7 +464,9 @@ sap.ui.define([
463
464
  * the entity is also available.
464
465
  *
465
466
  * @param {sap.ui.base.Event} oEvent
467
+ * The event object
466
468
  * @param {object} oEvent.getParameters
469
+ * Object containing all event parameters
467
470
  * @param {object} [oEvent.getParameters.data]
468
471
  * An empty data object if a back-end request succeeds
469
472
  * @param {Error} [oEvent.getParameters.error]
@@ -505,7 +508,9 @@ sap.ui.define([
505
508
  * </ul>
506
509
  *
507
510
  * @param {sap.ui.base.Event} oEvent
511
+ * The event object
508
512
  * @param {object} oEvent.getParameters
513
+ * Object containing all event parameters
509
514
  * @param {string} [oEvent.getParameters.path]
510
515
  * The absolute path to the entity which caused the event. The path is only provided for
511
516
  * additional property requests; for other requests it is <code>undefined</code>.
@@ -534,7 +539,9 @@ sap.ui.define([
534
539
  * not user input.
535
540
  *
536
541
  * @param {sap.ui.base.Event} oEvent
542
+ * The event object
537
543
  * @param {object} oEvent.getParameters
544
+ * Object containing all event parameters
538
545
  * @param {sap.ui.model.Context} [oEvent.getParameters.context]
539
546
  * The property binding's {@link sap.ui.model.Binding#getContext context}, if available
540
547
  * @param {string} oEvent.getParameters.path
@@ -618,7 +625,7 @@ sap.ui.define([
618
625
  if (!this.aPrerenderingTasks) {
619
626
  this.aPrerenderingTasks = [];
620
627
  fnRunTasks = runTasks.bind(null, this.aPrerenderingTasks);
621
- sap.ui.getCore().addPrerenderingTask(fnRunTasks);
628
+ Rendering.addPrerenderingTask(fnRunTasks);
622
629
  // Add a watchdog to run the tasks in case there is no rendering. Ensure that the task
623
630
  // runs after all setTimeout(0) tasks scheduled from within the current task, even those
624
631
  // that were scheduled afterwards. A simple setTimeout(n) with n > 0 is not sufficient
@@ -1210,7 +1217,7 @@ sap.ui.define([
1210
1217
  * <li> It must not contain control characters.
1211
1218
  * </ul>
1212
1219
  *
1213
- * @param {object} [mHeaders]
1220
+ * @param {Object<string|undefined>} [mHeaders]
1214
1221
  * Map of HTTP header names to their values
1215
1222
  * @throws {Error}
1216
1223
  * If <code>mHeaders</code> contains unsupported headers, the same header occurs more than
@@ -1813,7 +1820,7 @@ sap.ui.define([
1813
1820
  *
1814
1821
  * @param {boolean} [bIncludeContextId]
1815
1822
  * Whether to include the "SAP-ContextId" header (@since 1.86.0)
1816
- * @returns {object}
1823
+ * @returns {Object<string>}
1817
1824
  * The map of HTTP headers
1818
1825
  *
1819
1826
  * @public
@@ -2413,7 +2420,7 @@ sap.ui.define([
2413
2420
  });
2414
2421
  });
2415
2422
  if (aNewMessages.length || aOldMessages.length) {
2416
- MessageManager.updateMessages(aOldMessages, aNewMessages);
2423
+ Messaging.updateMessages(aOldMessages, aNewMessages);
2417
2424
  }
2418
2425
  };
2419
2426
 
@@ -2432,7 +2439,7 @@ sap.ui.define([
2432
2439
  var that = this;
2433
2440
 
2434
2441
  if (aMessages && aMessages.length) {
2435
- MessageManager.updateMessages(undefined, aMessages.map(function (oMessage) {
2442
+ Messaging.updateMessages(undefined, aMessages.map(function (oMessage) {
2436
2443
  oMessage.transition = true;
2437
2444
  return that.createUI5Message(oMessage, sResourcePath);
2438
2445
  }));
@@ -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.117.0
45
+ * @version 1.118.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
@@ -117,7 +117,9 @@ sap.ui.define([
117
117
  * change reason as parameter.
118
118
  *
119
119
  * @param {sap.ui.base.Event} oEvent
120
+ * The event object
120
121
  * @param {object} oEvent.getParameters
122
+ * Object containing all event parameters
121
123
  * @param {sap.ui.model.ChangeReason} oEvent.getParameters.reason
122
124
  * The reason for the 'change' event could be
123
125
  * <ul>
@@ -154,7 +156,9 @@ sap.ui.define([
154
156
  * 'error' event parameter.
155
157
  *
156
158
  * @param {sap.ui.base.Event} oEvent
159
+ * The event object
157
160
  * @param {object} oEvent.getParameters
161
+ * Object containing all event parameters
158
162
  * @param {object} [oEvent.getParameters.data]
159
163
  * An empty data object if a back-end request succeeds
160
164
  * @param {Error} [oEvent.getParameters.error] The error object if a back-end request failed.
@@ -119,10 +119,83 @@ sap.ui.define([
119
119
 
120
120
  // make _AggregationCache a _Cache, but actively disinherit some critical methods
121
121
  _AggregationCache.prototype = Object.create(_Cache.prototype);
122
- _AggregationCache.prototype._delete = null;
123
122
  _AggregationCache.prototype.addTransientCollection = null;
124
123
  _AggregationCache.prototype.getAndRemoveValue = null;
125
124
 
125
+ /**
126
+ * Deletes an entity on the server and in the cached data.
127
+ *
128
+ * @param {sap.ui.model.odata.v4.lib._GroupLock} oGroupLock
129
+ * A lock for the group ID to be used for the DELETE request
130
+ * @param {string} sEditUrl
131
+ * The entity's edit URL to be used for the DELETE request
132
+ * @param {string} sIndex
133
+ * The entity's index
134
+ * @param {object} [oETagEntity]
135
+ * An entity with the ETag of the binding for which the deletion was requested. This is
136
+ * provided if the deletion is delegated from a context binding with empty path to a list
137
+ * binding
138
+ * @param {function(number,number):void} fnCallback
139
+ * A function which is called immediately when an entity has been deleted from the cache, or
140
+ * when it was re-inserted; the index of the entity and an offset (-1 for deletion, 1 for
141
+ * re-insertion) are passed as parameter
142
+ * @returns {sap.ui.base.SyncPromise}
143
+ * A promise which is resolved without a result in case of success, or rejected with an
144
+ * instance of <code>Error</code> in case of failure
145
+ * @throws {Error} If the cache is shared, <code>this.oAggregation.expandTo > 1</code>, or
146
+ * <code>sIndex</code> is not a number.
147
+ *
148
+ * @public
149
+ */
150
+ // @override sap.ui.model.odata.v4.lib._Cache#_delete
151
+ _AggregationCache.prototype._delete = function (oGroupLock, sEditUrl, sIndex, oETagEntity,
152
+ fnCallback) {
153
+ if (this.oAggregation.expandTo > 1) {
154
+ throw new Error("Unsupported expandTo: " + this.oAggregation.expandTo);
155
+ }
156
+
157
+ let iFlatIndex = parseInt(sIndex);
158
+ if (isNaN(iFlatIndex)) {
159
+ throw new Error(`Unsupported kept-alive entity: ${this.sResourcePath}${sIndex}`);
160
+ }
161
+
162
+ const oElement = this.aElements[iFlatIndex];
163
+ const oLevelCache = _Helper.getPrivateAnnotation(oElement, "parent");
164
+ const iLevelIndex = _Helper.getPrivateAnnotation(oElement, "index");
165
+ let iParentIndex = iFlatIndex - iLevelIndex - 1;
166
+ const oParent = this.aElements[iParentIndex];
167
+ return oLevelCache._delete(oGroupLock, sEditUrl, iLevelIndex.toString(), oETagEntity,
168
+ (iIndex, iOffset) => {
169
+ if (iOffset < 0) { // deleting
170
+ this.shiftIndex(iFlatIndex, iOffset);
171
+ this.removeElement(this.aElements, iFlatIndex,
172
+ _Helper.getPrivateAnnotation(oElement, "predicate"), "");
173
+ if (oParent && !oLevelCache.getValue("$count")) {
174
+ _Helper.updateAll(this.mChangeListeners,
175
+ _Helper.getPrivateAnnotation(oParent, "predicate"), oParent,
176
+ {"@$ui5.node.isExpanded" : undefined});
177
+ // _Helper.updateAll only sets it to undefined
178
+ delete oParent["@$ui5.node.isExpanded"];
179
+ }
180
+ } else { // reinserting
181
+ if (oParent) {
182
+ if (oParent !== this.aElements[iParentIndex]) { // parent moved
183
+ iParentIndex = this.aElements.indexOf(oParent);
184
+ }
185
+ if (oLevelCache.getValue("$count") === 1) {
186
+ _Helper.updateAll(this.mChangeListeners,
187
+ _Helper.getPrivateAnnotation(oParent, "predicate"), oParent,
188
+ {"@$ui5.node.isExpanded" : true});
189
+ }
190
+ }
191
+ iFlatIndex = iParentIndex + iIndex + 1;
192
+ this.restoreElement(this.aElements, iFlatIndex, oElement, "");
193
+ this.shiftIndex(iFlatIndex, iOffset);
194
+ }
195
+ fnCallback(iFlatIndex, iOffset);
196
+ });
197
+ };
198
+
126
199
  /**
127
200
  * Copies the given elements from a cache read into <code>this.aElements</code>.
128
201
  *
@@ -252,7 +325,7 @@ sap.ui.define([
252
325
  iCount = 0,
253
326
  iDescendants,
254
327
  aElements = this.aElements,
255
- oGroupNode = this.fetchValue(_GroupLock.$cached, sGroupNodePath).getResult(),
328
+ oGroupNode = this.getValue(sGroupNodePath),
256
329
  iGroupNodeLevel = oGroupNode["@$ui5.node.level"],
257
330
  iIndex = aElements.indexOf(oGroupNode),
258
331
  i = iIndex + 1;
@@ -349,10 +422,12 @@ sap.ui.define([
349
422
  if (oParentNode["@$ui5.node.isExpanded"] === false) {
350
423
  throw new Error("Unsupported collapsed parent: " + sParentPath);
351
424
  }
425
+ const iIndex = aElements.indexOf(oParentNode) + 1;
352
426
 
353
427
  let oCache = _Helper.getPrivateAnnotation(oParentNode, "cache");
354
428
  if (!oCache) {
355
429
  oCache = this.createGroupLevelCache(oParentNode);
430
+ oCache.setEmpty();
356
431
  _Helper.setPrivateAnnotation(oParentNode, "cache", oCache);
357
432
  _Helper.updateAll(this.mChangeListeners, sParentPredicate, oParentNode,
358
433
  {"@$ui5.node.isExpanded" : true}); // not a leaf anymore
@@ -360,16 +435,26 @@ sap.ui.define([
360
435
 
361
436
  delete oEntityData["@$ui5.node.parent"];
362
437
  const oResult = oCache.create(oGroupLock, oPostPathPromise, sPath, sTransientPredicate,
363
- oEntityData, bAtEndOfCreated, fnErrorCallback, fnSubmitCallback);
438
+ oEntityData, bAtEndOfCreated, fnErrorCallback, fnSubmitCallback, function onCancel() {
439
+ this.shiftIndex(iIndex, -1);
440
+ aElements.$count -= 1;
441
+ delete aElements.$byPredicate[
442
+ _Helper.getPrivateAnnotation(oEntityData, "transientPredicate")];
443
+ aElements.splice(aElements.indexOf(oEntityData), 1);
444
+ }.bind(this));
445
+
364
446
  // add @odata.bind to POST body only
365
447
  _Helper.getPrivateAnnotation(oEntityData, "postBody")
366
- [this.oAggregation.$ParentNavigationProperty + "@odata.bind"] = sParentPath;
448
+ [this.oAggregation.$ParentNavigationProperty + "@odata.bind"]
449
+ = _Helper.makeRelativeUrl("/" + sParentPath, "/" + this.sResourcePath);
367
450
  oEntityData["@$ui5.node.level"] = oParentNode["@$ui5.node.level"] + 1;
368
451
 
369
- const iIndex = aElements.indexOf(oParentNode) + 1;
370
452
  aElements.splice(iIndex, 0, null); // create a gap
371
453
  this.addElements(oEntityData, iIndex, oCache, 0);
372
454
  aElements.$count += 1;
455
+ // increase "index" for all children of oCache;
456
+ // oParentNode is expanded, thus all such nodes or placeholders are inside aElements
457
+ this.shiftIndex(iIndex, +1);
373
458
 
374
459
  return oResult.then(function () {
375
460
  aElements.$byPredicate[_Helper.getPrivateAnnotation(oEntityData, "predicate")]
@@ -457,7 +542,7 @@ sap.ui.define([
457
542
  iCount,
458
543
  aElements = this.aElements,
459
544
  oGroupNode = typeof vGroupNodeOrPath === "string"
460
- ? this.fetchValue(_GroupLock.$cached, vGroupNodeOrPath).getResult()
545
+ ? this.getValue(vGroupNodeOrPath)
461
546
  : vGroupNodeOrPath,
462
547
  iIndex,
463
548
  aSpliced = _Helper.getPrivateAnnotation(oGroupNode, "spliced"),
@@ -1121,6 +1206,14 @@ sap.ui.define([
1121
1206
  this.oFirstLevel = this.createGroupLevelCache();
1122
1207
  };
1123
1208
 
1209
+ /**
1210
+ * @override
1211
+ * @see sap.ui.model.odata.v4.lib._CollectionCache#resetChangesForPath
1212
+ */
1213
+ _AggregationCache.prototype.resetChangesForPath = function (sPath) {
1214
+ _Helper.getPrivateAnnotation(this.getValue(sPath), "parent").resetChangesForPath(sPath);
1215
+ };
1216
+
1124
1217
  /**
1125
1218
  * @override
1126
1219
  * @see sap.ui.model.odata.v4.lib._CollectionCache#restore
@@ -1134,6 +1227,36 @@ sap.ui.define([
1134
1227
  this.oFirstLevel.restore.call(this, bReally);
1135
1228
  };
1136
1229
 
1230
+ /**
1231
+ * Shifts the "index" of all siblings (nodes or placeholders) after the node at the given index
1232
+ * by the given offset.
1233
+ *
1234
+ * @param {number} iIndex
1235
+ * Index in <code>this.aElements</code> of a node which is inserted (+1) or removed (-1)
1236
+ * @param {number} iOffset
1237
+ * Offset (either -1 or +1) to add to "index"
1238
+ *
1239
+ * @private
1240
+ */
1241
+ _AggregationCache.prototype.shiftIndex = function (iIndex, iOffset) {
1242
+ const aElements = this.aElements;
1243
+ const oNode = aElements[iIndex];
1244
+ const oCache = _Helper.getPrivateAnnotation(oNode, "parent");
1245
+ for (let i = iIndex + 1; i < aElements.length; i += 1) {
1246
+ const oSibling = aElements[i];
1247
+ if (_Helper.getPrivateAnnotation(oSibling, "parent") === oCache) {
1248
+ _Helper.setPrivateAnnotation(oSibling, "index",
1249
+ _Helper.getPrivateAnnotation(oSibling, "index") + iOffset);
1250
+ }
1251
+ if (oSibling["@$ui5.node.level"] < oNode["@$ui5.node.level"]
1252
+ && !_Helper.hasPrivateAnnotation(oSibling, "placeholder")) {
1253
+ // Note: level 0 means "don't know" for initial *placeholders* of 1st level cache!
1254
+ // Note: oCache !== this.oFirstLevel, thus "descendants" should not matter
1255
+ break;
1256
+ }
1257
+ }
1258
+ };
1259
+
1137
1260
  /**
1138
1261
  * Returns the cache's URL.
1139
1262
  *
@@ -103,7 +103,8 @@ sap.ui.define([
103
103
  * The entity's edit URL to be used for the DELETE request; w/o a lock, this is mostly
104
104
  * ignored.
105
105
  * @param {string} sPath
106
- * The entity's path within the cache (as used by change listeners)
106
+ * The entity's path within the cache; if the entity is in a collection, the last segment is
107
+ * its index therein
107
108
  * @param {object} [oETagEntity]
108
109
  * An entity with the ETag of the binding for which the deletion was requested. This is
109
110
  * provided if the deletion is delegated from a context binding with empty path to a list
@@ -121,26 +122,26 @@ sap.ui.define([
121
122
  */
122
123
  _Cache.prototype._delete = function (oGroupLock, sEditUrl, sPath, oETagEntity, fnCallback) {
123
124
  var aSegments = sPath.split("/"),
124
- vDeleteProperty = aSegments.pop(),
125
+ // either a :1 nav.prop, the index as string, or a key-predicate (kept-alive and hidden)
126
+ sDeleteProperty = aSegments.pop(),
125
127
  sParentPath = aSegments.join("/"),
126
128
  that = this;
127
129
 
128
130
  this.checkSharedRequest();
129
131
 
130
132
  return this.fetchValue(_GroupLock.$cached, sParentPath).then(function (vCacheData) {
131
- var vCachePath = _Cache.from$skip(vDeleteProperty, vCacheData),
132
- oDeleted,
133
- oEntity = vDeleteProperty
134
- ? vCacheData[vCachePath] || vCacheData.$byPredicate[vCachePath]
133
+ var oDeleted,
134
+ oEntity = sDeleteProperty
135
+ ? vCacheData[sDeleteProperty] || vCacheData.$byPredicate[sDeleteProperty]
135
136
  : vCacheData, // deleting at root level
136
137
  oError,
137
138
  sGroupId,
138
139
  aMessages,
139
140
  mHeaders,
140
- iIndex = typeof vCachePath === "number" ? vCachePath : undefined,
141
+ iIndex = rNumber.test(sDeleteProperty) ? Number(sDeleteProperty) : undefined,
141
142
  sKeyPredicate = _Helper.getPrivateAnnotation(oEntity, "predicate"),
142
143
  sEntityPath = _Helper.buildPath(sParentPath,
143
- Array.isArray(vCacheData) ? sKeyPredicate : vDeleteProperty),
144
+ Array.isArray(vCacheData) ? sKeyPredicate : sDeleteProperty),
144
145
  oModelInterface = that.oRequestor.getModelInterface(),
145
146
  oRequestPromise,
146
147
  sTransientGroup = _Helper.getPrivateAnnotation(oEntity, "transient"),
@@ -150,8 +151,6 @@ sap.ui.define([
150
151
  * Cleans up after a cancel or failed request.
151
152
  */
152
153
  function cleanUp() {
153
- var iDeletedIndex;
154
-
155
154
  _Helper.removeByPath(that.mChangeRequests, sEntityPath, oRequestPromise);
156
155
 
157
156
  if (aMessages.length) {
@@ -161,19 +160,12 @@ sap.ui.define([
161
160
  delete oEntity["@$ui5.context.isDeleted"];
162
161
  if (Array.isArray(vCacheData)) {
163
162
  iIndex = oDeleted.index;
163
+ const iDeletedIndex = vCacheData.$deleted.indexOf(oDeleted);
164
164
  if (iIndex !== undefined) {
165
- _Helper.addToCount(that.mChangeListeners, sParentPath, vCacheData, 1);
165
+ that.restoreElement(vCacheData, iIndex, oEntity, sParentPath,
166
+ iDeletedIndex);
166
167
  }
167
- iDeletedIndex = vCacheData.$deleted.indexOf(oDeleted);
168
- that.adjustIndexes(sParentPath, vCacheData, iIndex, 1, iDeletedIndex);
169
- vCacheData.splice(iIndex, 0, oEntity);
170
168
  vCacheData.$deleted.splice(iDeletedIndex, 1);
171
- if (sTransientPredicate) {
172
- vCacheData.$created += 1;
173
- if (!sParentPath) {
174
- that.iActiveElements += 1;
175
- }
176
- }
177
169
  }
178
170
  if (that.iActiveUsages) {
179
171
  fnCallback(iIndex, 1);
@@ -222,7 +214,6 @@ sap.ui.define([
222
214
  }
223
215
  mHeaders = {"If-Match" : oETagEntity || oEntity};
224
216
  sEditUrl += that.oRequestor.buildQueryString(that.sMetaPath, that.mQueryOptions, true);
225
- // the existence of an onCancel callback causes a pending change in the requestor
226
217
  oRequestPromise = oGroupLock
227
218
  ? that.oRequestor.request("DELETE", sEditUrl, oGroupLock, mHeaders, undefined,
228
219
  undefined, cleanUp, undefined,
@@ -240,10 +231,10 @@ sap.ui.define([
240
231
  vCacheData.$deleted.splice(vCacheData.$deleted.indexOf(oDeleted), 1);
241
232
  delete vCacheData.$byPredicate[sKeyPredicate];
242
233
  delete vCacheData.$byPredicate[sTransientPredicate];
243
- } else if (vDeleteProperty) {
234
+ } else if (sDeleteProperty) {
244
235
  // set to null and notify listeners
245
236
  _Helper.updateExisting(that.mChangeListeners, sParentPath,
246
- vCacheData, _Helper.makeUpdateData([vDeleteProperty], null));
237
+ vCacheData, _Helper.makeUpdateData([sDeleteProperty], null));
247
238
  } else { // deleting at root level
248
239
  oEntity["$ui5.deleted"] = true;
249
240
  }
@@ -398,8 +389,7 @@ sap.ui.define([
398
389
  if (iIndex === undefined) {
399
390
  return; // not in the list -> nothing to adjust
400
391
  }
401
- if (!sPath) {
402
- // If the path is empty, we are in a _CollectionCache and aReadRequest exists
392
+ if (!sPath && this.aReadRequests) {
403
393
  this.aReadRequests.forEach(function (oReadRequest) {
404
394
  if (oReadRequest.iStart >= iIndex) {
405
395
  oReadRequest.iStart += iOffset;
@@ -430,7 +420,7 @@ sap.ui.define([
430
420
  * The meta path for the entity
431
421
  * @returns {string|undefined}
432
422
  * The key predicate or <code>undefined</code>, if key predicate cannot be determined
433
- * @private
423
+ * @protected
434
424
  */
435
425
  // Note: overridden by _AggregationCache.calculateKeyPredicate
436
426
  _Cache.prototype.calculateKeyPredicate = function (oInstance, mTypeForMetaPath, sMetaPath) {
@@ -484,6 +474,10 @@ sap.ui.define([
484
474
  * fails
485
475
  * @param {function} fnSubmitCallback
486
476
  * A function which is called just before a POST request for the create is sent
477
+ * @param {function} [fnCancelCallback]
478
+ * A function which is called when the create has been canceled (after internal clean-up and
479
+ * just before {@link sap.ui.model.odata.v4.lib._GroupLock#cancel}), except if the entity is
480
+ * simply inactive
487
481
  * @returns {sap.ui.base.SyncPromise}
488
482
  * A promise which is resolved with the created entity when the POST request has been
489
483
  * successfully sent and the entity has been marked as non-transient
@@ -492,7 +486,7 @@ sap.ui.define([
492
486
  * @public
493
487
  */
494
488
  _Cache.prototype.create = function (oGroupLock, oPostPathPromise, sPath, sTransientPredicate,
495
- oEntityData, bAtEndOfCreated, fnErrorCallback, fnSubmitCallback) {
489
+ oEntityData, bAtEndOfCreated, fnErrorCallback, fnSubmitCallback, fnCancelCallback) {
496
490
  var aCollection = this.getValue(sPath),
497
491
  sGroupId = oGroupLock.getGroupId(),
498
492
  oPostBody,
@@ -534,6 +528,9 @@ sap.ui.define([
534
528
  }
535
529
  delete aCollection.$byPredicate[sTransientPredicate];
536
530
  that.adjustIndexes(sPath, aCollection, iIndex, -1);
531
+ if (fnCancelCallback) {
532
+ fnCancelCallback();
533
+ }
537
534
  oGroupLock.cancel();
538
535
  }
539
536
 
@@ -720,7 +717,7 @@ sap.ui.define([
720
717
  * @returns {sap.ui.base.SyncPromise}
721
718
  * A promise that is resolved with the result matching to <code>sPath</code>
722
719
  *
723
- * @private
720
+ * @protected
724
721
  */
725
722
  _Cache.prototype.drillDown = function (oData, sPath, oGroupLock, bCreateOnDemand) {
726
723
  var oDataPromise = SyncPromise.resolve(oData),
@@ -1218,7 +1215,7 @@ sap.ui.define([
1218
1215
  * @param {object} mQueryOptions - The query options
1219
1216
  * @returns {object} The download query options derived from the given query options
1220
1217
  *
1221
- * @private
1218
+ * @protected
1222
1219
  */
1223
1220
  _Cache.prototype.getDownloadQueryOptions = function (mQueryOptions) {
1224
1221
  return mQueryOptions;
@@ -1631,7 +1628,7 @@ sap.ui.define([
1631
1628
  * @param {string} sPath The path
1632
1629
  * @param {object} [oListener] The listener
1633
1630
  *
1634
- * @private
1631
+ * @protected
1635
1632
  */
1636
1633
  _Cache.prototype.registerChangeListener = function (sPath, oListener) {
1637
1634
  if (!(this.bSharedRequest && sPath)) {
@@ -1640,13 +1637,13 @@ sap.ui.define([
1640
1637
  };
1641
1638
 
1642
1639
  /**
1643
- * Removes the element at the given index from the given array, taking care of
1644
- * <code>$byPredicate</code>, <code>$created</code>, the array's count, and a collection cache's
1645
- * limit and number of active elements (if applicable).
1640
+ * Removes the element at the given index from the given array, taking care of the array's
1641
+ * <code>$byPredicate</code>, <code>$created</code> and <code>$count</code>, and a collection
1642
+ * cache's limit and number of active elements (if applicable).
1646
1643
  *
1647
1644
  * @param {object[]} aElements
1648
1645
  * The array of elements
1649
- * @param {number} iIndex
1646
+ * @param {number} [iIndex]
1650
1647
  * The array index of the old element to be removed or <code>undefined</code> in case the
1651
1648
  * element is a kept-alive element without an index
1652
1649
  * @param {string} sPredicate
@@ -1654,10 +1651,10 @@ sap.ui.define([
1654
1651
  * @param {string} sPath
1655
1652
  * The element collection's path within this cache (as used by change listeners), may be
1656
1653
  * <code>""</code> (only in a CollectionCache)
1657
- * @returns {number} The index at which the element actually was (it might have moved due to
1658
- * parallel insert/delete)
1654
+ * @returns {number|undefined} The index at which the element actually was (it might have moved
1655
+ * due to parallel insert/delete)
1659
1656
  *
1660
- * @private
1657
+ * @protected
1661
1658
  */
1662
1659
  _Cache.prototype.removeElement = function (aElements, iIndex, sPredicate, sPath) {
1663
1660
  var oElement = aElements.$byPredicate[sPredicate],
@@ -1682,11 +1679,10 @@ sap.ui.define([
1682
1679
  if (!bDeleted) {
1683
1680
  delete aElements.$byPredicate[sTransientPredicate];
1684
1681
  }
1685
- }
1686
- this.adjustIndexes(sPath, aElements, iIndex, -1);
1687
- if (!sPath && !sTransientPredicate) {
1682
+ } else if (!sPath) {
1688
1683
  this.iLimit -= 1; // this doesn't change Infinity
1689
1684
  }
1685
+ this.adjustIndexes(sPath, aElements, iIndex, -1);
1690
1686
  }
1691
1687
  return iIndex;
1692
1688
  };
@@ -1882,6 +1878,37 @@ sap.ui.define([
1882
1878
  });
1883
1879
  };
1884
1880
 
1881
+ /**
1882
+ * Restores the element in the given array at the given index, taking care of the array's
1883
+ * <code>$created</code> and <code>$count</code>, and a collection cache's limit and number of
1884
+ * active elements (if applicable).
1885
+ *
1886
+ * @param {object[]} aElements - The array of elements
1887
+ * @param {number} iIndex - The index to restore at
1888
+ * @param {object} oElement - The element to restore
1889
+ * @param {string} sPath
1890
+ * The element collection's path within this cache (as used by change listeners), may be
1891
+ * <code>""</code> (only in a CollectionCache)
1892
+ * @param {int} [iDeletedIndex]
1893
+ * The index of the entry in <code>aElements.$deleted</code> if any
1894
+ *
1895
+ * @protected
1896
+ */
1897
+ _Cache.prototype.restoreElement = function (aElements, iIndex, oElement, sPath, iDeletedIndex) {
1898
+ this.adjustIndexes(sPath, aElements, iIndex, 1, iDeletedIndex);
1899
+ const sTransientPredicate = _Helper.getPrivateAnnotation(oElement, "transientPredicate");
1900
+ if (sTransientPredicate) {
1901
+ aElements.$created += 1;
1902
+ if (!sPath) {
1903
+ this.iActiveElements += 1;
1904
+ }
1905
+ } else if (!sPath) {
1906
+ this.iLimit += 1; // this doesn't change Infinity
1907
+ }
1908
+ _Helper.addToCount(this.mChangeListeners, sPath, aElements, 1);
1909
+ aElements.splice(iIndex, 0, oElement);
1910
+ };
1911
+
1885
1912
  /**
1886
1913
  * Adds or removes a usage of this cache. A cache with active usages must not be destroyed.
1887
1914
  * If a usage is removed, all change listeners are removed too. Note: shared caches have no
@@ -2050,9 +2077,6 @@ sap.ui.define([
2050
2077
  * If no back-end request is needed, the function is not called.
2051
2078
  * @param {function} fnIsKeepAlive
2052
2079
  * A function to tell whether the entity is kept-alive
2053
- * @param {boolean} [bInactive]
2054
- * If <code>true</code>, the cache and the POST request will be updated, but the entity stays
2055
- * inactive
2056
2080
  * @returns {sap.ui.base.SyncPromise}
2057
2081
  * A promise for the PATCH request (resolves with <code>undefined</code>); rejected in case of
2058
2082
  * cancellation or if no <code>fnErrorCallback</code> is given
@@ -2062,7 +2086,7 @@ sap.ui.define([
2062
2086
  */
2063
2087
  _Cache.prototype.update = function (oGroupLock, sPropertyPath, vValue, fnErrorCallback,
2064
2088
  sEditUrl, sEntityPath, sUnitOrCurrencyPath, bPatchWithoutSideEffects, fnPatchSent,
2065
- fnIsKeepAlive, bInactive) {
2089
+ fnIsKeepAlive) {
2066
2090
  var oPromise,
2067
2091
  aPropertyPath = sPropertyPath.split("/"),
2068
2092
  aUnitOrCurrencyPath,
@@ -2254,12 +2278,6 @@ sap.ui.define([
2254
2278
  if (oPostBody) {
2255
2279
  // change listeners are informed later
2256
2280
  _Helper.updateAll({}, sEntityPath, oPostBody, oUpdateData);
2257
- if (oEntity["@$ui5.context.isInactive"] && !bInactive) {
2258
- oUpdateData["@$ui5.context.isInactive"] = false;
2259
- _Helper.deletePrivateAnnotation(oEntity, "initialData");
2260
- that.iActiveElements += 1;
2261
- _Helper.addToCount(that.mChangeListeners, "", that.aElements, 1);
2262
- }
2263
2281
  }
2264
2282
  // write the changed value into the cache
2265
2283
  _Helper.updateAll(that.mChangeListeners, sEntityPath, oEntity, oUpdateData);
@@ -2280,13 +2298,8 @@ sap.ui.define([
2280
2298
  }
2281
2299
  if (sTransientGroup) {
2282
2300
  // When updating a transient entity, the above _Helper.updateAll has already updated
2283
- // the POST request.
2284
- // If the entity remains inactive, update the request, but keep it parked
2285
- if (bInactive) {
2286
- _Helper.updateAll(that.mChangeListeners, sEntityPath, oEntity,
2287
- {"@$ui5.context.isInactive" : 1}
2288
- );
2289
- } else if (sParkedGroup) {
2301
+ // the POST request. An inactive entity must remain parked.
2302
+ if (sParkedGroup && !oEntity["@$ui5.context.isInactive"]) {
2290
2303
  _Helper.setPrivateAnnotation(oEntity, "transient", sTransientGroup);
2291
2304
  that.oRequestor.relocate(sParkedGroup, oPostBody, sTransientGroup);
2292
2305
  }
@@ -3582,10 +3595,42 @@ sap.ui.define([
3582
3595
  this.oBackup = null;
3583
3596
  };
3584
3597
 
3598
+ /**
3599
+ * Sets the cache's $count at the root level to 0.
3600
+ *
3601
+ * @protected
3602
+ */
3603
+ _CollectionCache.prototype.setEmpty = function () {
3604
+ this.iLimit = this.aElements.$count = 0;
3605
+ };
3606
+
3607
+ /**
3608
+ * Sets the isInactive annotation at the entity with the given path, which might activate it.
3609
+ *
3610
+ * @param {string} sPath - The path
3611
+ * @param {boolean|number} bInactive
3612
+ * The new value, either <code>false</code> to activate it, or <code>1</code> to mark it as
3613
+ * inactive, but changed
3614
+ *
3615
+ * @public
3616
+ */
3617
+ _CollectionCache.prototype.setInactive = function (sPath, bInactive) {
3618
+ const oElement = this.getValue(sPath);
3619
+ _Helper.updateAll(this.mChangeListeners, sPath, oElement,
3620
+ {"@$ui5.context.isInactive" : bInactive});
3621
+ if (!bInactive) { // activate
3622
+ _Helper.deletePrivateAnnotation(oElement, "initialData");
3623
+ this.iActiveElements += 1;
3624
+ _Helper.addToCount(this.mChangeListeners, "", this.aElements, 1);
3625
+ }
3626
+ };
3627
+
3585
3628
  /**
3586
3629
  * Sets the cache's elements to the given collection after a deep create.
3587
3630
  *
3588
3631
  * @param {object} aElements - The elements from the deep create
3632
+ *
3633
+ * @public
3589
3634
  */
3590
3635
  _CollectionCache.prototype.setPersistedCollection = function (aElements) {
3591
3636
  this.aElements = aElements;