@openui5/sap.ui.core 1.108.1 → 1.109.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 (352) hide show
  1. package/THIRDPARTY.txt +1 -1
  2. package/package.json +1 -1
  3. package/src/jquery.sap.global.js +1 -1
  4. package/src/jquery.sap.properties.js +1 -1
  5. package/src/jquery.sap.resources.js +1 -1
  6. package/src/jquery.sap.script.js +1 -1
  7. package/src/jquery.sap.storage.js +3 -3
  8. package/src/sap/base/Log.js +125 -84
  9. package/src/sap/base/i18n/ResourceBundle.js +41 -11
  10. package/src/sap/base/util/includes.js +1 -1
  11. package/src/sap/base/util/restricted/_CancelablePromise.js +1 -1
  12. package/src/sap/base/util/restricted/_castArray.js +1 -1
  13. package/src/sap/base/util/restricted/_compact.js +1 -1
  14. package/src/sap/base/util/restricted/_curry.js +1 -1
  15. package/src/sap/base/util/restricted/_debounce.js +1 -1
  16. package/src/sap/base/util/restricted/_difference.js +1 -1
  17. package/src/sap/base/util/restricted/_differenceBy.js +1 -1
  18. package/src/sap/base/util/restricted/_differenceWith.js +1 -1
  19. package/src/sap/base/util/restricted/_flatMap.js +1 -1
  20. package/src/sap/base/util/restricted/_flatMapDeep.js +1 -1
  21. package/src/sap/base/util/restricted/_flatMapDepth.js +1 -1
  22. package/src/sap/base/util/restricted/_flatten.js +1 -1
  23. package/src/sap/base/util/restricted/_flattenDeep.js +1 -1
  24. package/src/sap/base/util/restricted/_flattenDepth.js +1 -1
  25. package/src/sap/base/util/restricted/_intersection.js +1 -1
  26. package/src/sap/base/util/restricted/_intersectionBy.js +1 -1
  27. package/src/sap/base/util/restricted/_intersectionWith.js +1 -1
  28. package/src/sap/base/util/restricted/_isEqual.js +1 -1
  29. package/src/sap/base/util/restricted/_isEqualWith.js +1 -1
  30. package/src/sap/base/util/restricted/_isNil.js +1 -1
  31. package/src/sap/base/util/restricted/_max.js +1 -1
  32. package/src/sap/base/util/restricted/_merge.js +1 -1
  33. package/src/sap/base/util/restricted/_mergeWith.js +1 -1
  34. package/src/sap/base/util/restricted/_min.js +1 -1
  35. package/src/sap/base/util/restricted/_omit.js +1 -1
  36. package/src/sap/base/util/restricted/_pick.js +1 -1
  37. package/src/sap/base/util/restricted/_pickBy.js +1 -1
  38. package/src/sap/base/util/restricted/_throttle.js +1 -1
  39. package/src/sap/base/util/restricted/_toArray.js +1 -1
  40. package/src/sap/base/util/restricted/_union.js +1 -1
  41. package/src/sap/base/util/restricted/_unionBy.js +1 -1
  42. package/src/sap/base/util/restricted/_unionWith.js +1 -1
  43. package/src/sap/base/util/restricted/_uniq.js +1 -1
  44. package/src/sap/base/util/restricted/_uniqBy.js +1 -1
  45. package/src/sap/base/util/restricted/_uniqWith.js +1 -1
  46. package/src/sap/base/util/restricted/_without.js +1 -1
  47. package/src/sap/base/util/restricted/_xor.js +1 -1
  48. package/src/sap/base/util/restricted/_xorBy.js +1 -1
  49. package/src/sap/base/util/restricted/_xorWith.js +1 -1
  50. package/src/sap/base/util/restricted/_zipObject.js +1 -1
  51. package/src/sap/base/util/restricted/_zipObjectDeep.js +1 -1
  52. package/src/sap/base/util/values.js +2 -1
  53. package/src/sap/ui/Device.js +3 -3
  54. package/src/sap/ui/Global.js +4 -4
  55. package/src/sap/ui/base/Event.js +1 -1
  56. package/src/sap/ui/base/EventProvider.js +1 -1
  57. package/src/sap/ui/base/Interface.js +1 -1
  58. package/src/sap/ui/base/ManagedObject.js +1 -1
  59. package/src/sap/ui/base/ManagedObjectMetadata.js +1 -1
  60. package/src/sap/ui/base/ManagedObjectObserver.js +33 -11
  61. package/src/sap/ui/base/Metadata.js +1 -1
  62. package/src/sap/ui/base/Object.js +1 -1
  63. package/src/sap/ui/base/ObjectPool.js +1 -1
  64. package/src/sap/ui/core/.library +3 -3
  65. package/src/sap/ui/core/BusyIndicator.js +1 -1
  66. package/src/sap/ui/core/Component.js +1 -1
  67. package/src/sap/ui/core/ComponentContainer.js +1 -1
  68. package/src/sap/ui/core/ComponentMetadata.js +1 -1
  69. package/src/sap/ui/core/ComponentSupport.js +1 -1
  70. package/src/sap/ui/core/Configuration.js +1 -1
  71. package/src/sap/ui/core/Control.js +1 -1
  72. package/src/sap/ui/core/Core.js +4 -4
  73. package/src/sap/ui/core/CustomData.js +1 -1
  74. package/src/sap/ui/core/DeclarativeSupport.js +1 -1
  75. package/src/sap/ui/core/Element.js +1 -1
  76. package/src/sap/ui/core/ElementMetadata.js +1 -1
  77. package/src/sap/ui/core/EnabledPropagator.js +1 -1
  78. package/src/sap/ui/core/EventBus.js +1 -1
  79. package/src/sap/ui/core/Fragment.js +1 -1
  80. package/src/sap/ui/core/HTML.js +1 -1
  81. package/src/sap/ui/core/History.js +1 -1
  82. package/src/sap/ui/core/Icon.js +1 -1
  83. package/src/sap/ui/core/IndicationColorSupport.js +1 -1
  84. package/src/sap/ui/core/IntervalTrigger.js +1 -1
  85. package/src/sap/ui/core/InvisibleMessage.js +1 -1
  86. package/src/sap/ui/core/InvisibleRenderer.js +1 -1
  87. package/src/sap/ui/core/InvisibleText.js +1 -1
  88. package/src/sap/ui/core/Item.js +1 -1
  89. package/src/sap/ui/core/LabelEnablement.js +1 -1
  90. package/src/sap/ui/core/LayoutData.js +1 -1
  91. package/src/sap/ui/core/ListItem.js +1 -1
  92. package/src/sap/ui/core/LocalBusyIndicator.js +1 -1
  93. package/src/sap/ui/core/Locale.js +1 -1
  94. package/src/sap/ui/core/LocaleData.js +133 -1
  95. package/src/sap/ui/core/Manifest.js +1 -1
  96. package/src/sap/ui/core/Message.js +1 -1
  97. package/src/sap/ui/core/RenderManager.js +82 -50
  98. package/src/sap/ui/core/Renderer.js +1 -1
  99. package/src/sap/ui/core/Rendering.js +29 -9
  100. package/src/sap/ui/core/ResizeHandler.js +1 -1
  101. package/src/sap/ui/core/ScrollBar.js +1 -1
  102. package/src/sap/ui/core/SeparatorItem.js +1 -1
  103. package/src/sap/ui/core/Title.js +1 -1
  104. package/src/sap/ui/core/TooltipBase.js +1 -1
  105. package/src/sap/ui/core/UIArea.js +7 -5
  106. package/src/sap/ui/core/UIComponent.js +1 -1
  107. package/src/sap/ui/core/UIComponentMetadata.js +1 -1
  108. package/src/sap/ui/core/ValueStateSupport.js +1 -1
  109. package/src/sap/ui/core/VariantLayoutData.js +1 -1
  110. package/src/sap/ui/core/XMLComposite.js +1 -1
  111. package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
  112. package/src/sap/ui/core/XMLTemplateProcessor.js +1 -3
  113. package/src/sap/ui/core/cldr/ar.json +330 -0
  114. package/src/sap/ui/core/cldr/ar_EG.json +330 -0
  115. package/src/sap/ui/core/cldr/ar_SA.json +330 -0
  116. package/src/sap/ui/core/cldr/bg.json +295 -0
  117. package/src/sap/ui/core/cldr/ca.json +329 -0
  118. package/src/sap/ui/core/cldr/cs.json +328 -0
  119. package/src/sap/ui/core/cldr/cy.json +260 -0
  120. package/src/sap/ui/core/cldr/da.json +295 -0
  121. package/src/sap/ui/core/cldr/de.json +329 -0
  122. package/src/sap/ui/core/cldr/de_AT.json +329 -0
  123. package/src/sap/ui/core/cldr/de_CH.json +329 -0
  124. package/src/sap/ui/core/cldr/el.json +228 -0
  125. package/src/sap/ui/core/cldr/el_CY.json +228 -0
  126. package/src/sap/ui/core/cldr/en.json +294 -0
  127. package/src/sap/ui/core/cldr/en_AU.json +294 -0
  128. package/src/sap/ui/core/cldr/en_GB.json +294 -0
  129. package/src/sap/ui/core/cldr/en_HK.json +294 -0
  130. package/src/sap/ui/core/cldr/en_IE.json +294 -0
  131. package/src/sap/ui/core/cldr/en_IN.json +294 -0
  132. package/src/sap/ui/core/cldr/en_NZ.json +294 -0
  133. package/src/sap/ui/core/cldr/en_PG.json +294 -0
  134. package/src/sap/ui/core/cldr/en_SG.json +294 -0
  135. package/src/sap/ui/core/cldr/en_ZA.json +294 -0
  136. package/src/sap/ui/core/cldr/es.json +261 -0
  137. package/src/sap/ui/core/cldr/es_AR.json +261 -0
  138. package/src/sap/ui/core/cldr/es_BO.json +261 -0
  139. package/src/sap/ui/core/cldr/es_CL.json +261 -0
  140. package/src/sap/ui/core/cldr/es_CO.json +261 -0
  141. package/src/sap/ui/core/cldr/es_MX.json +261 -0
  142. package/src/sap/ui/core/cldr/es_PE.json +261 -0
  143. package/src/sap/ui/core/cldr/es_UY.json +261 -0
  144. package/src/sap/ui/core/cldr/es_VE.json +261 -0
  145. package/src/sap/ui/core/cldr/et.json +294 -0
  146. package/src/sap/ui/core/cldr/fa.json +296 -0
  147. package/src/sap/ui/core/cldr/fi.json +328 -0
  148. package/src/sap/ui/core/cldr/fr.json +294 -0
  149. package/src/sap/ui/core/cldr/fr_BE.json +294 -0
  150. package/src/sap/ui/core/cldr/fr_CA.json +294 -0
  151. package/src/sap/ui/core/cldr/fr_CH.json +294 -0
  152. package/src/sap/ui/core/cldr/fr_LU.json +294 -0
  153. package/src/sap/ui/core/cldr/he.json +329 -0
  154. package/src/sap/ui/core/cldr/hi.json +261 -0
  155. package/src/sap/ui/core/cldr/hr.json +294 -0
  156. package/src/sap/ui/core/cldr/hu.json +362 -0
  157. package/src/sap/ui/core/cldr/id.json +294 -0
  158. package/src/sap/ui/core/cldr/it.json +294 -0
  159. package/src/sap/ui/core/cldr/it_CH.json +294 -0
  160. package/src/sap/ui/core/cldr/ja.json +328 -0
  161. package/src/sap/ui/core/cldr/kk.json +294 -0
  162. package/src/sap/ui/core/cldr/ko.json +328 -0
  163. package/src/sap/ui/core/cldr/lt.json +294 -0
  164. package/src/sap/ui/core/cldr/lv.json +294 -0
  165. package/src/sap/ui/core/cldr/ms.json +262 -0
  166. package/src/sap/ui/core/cldr/nb.json +295 -0
  167. package/src/sap/ui/core/cldr/nl.json +261 -0
  168. package/src/sap/ui/core/cldr/nl_BE.json +261 -0
  169. package/src/sap/ui/core/cldr/pl.json +328 -0
  170. package/src/sap/ui/core/cldr/pt.json +294 -0
  171. package/src/sap/ui/core/cldr/pt_PT.json +294 -0
  172. package/src/sap/ui/core/cldr/ro.json +294 -0
  173. package/src/sap/ui/core/cldr/ru.json +294 -0
  174. package/src/sap/ui/core/cldr/ru_UA.json +294 -0
  175. package/src/sap/ui/core/cldr/sk.json +328 -0
  176. package/src/sap/ui/core/cldr/sl.json +328 -0
  177. package/src/sap/ui/core/cldr/sr.json +294 -0
  178. package/src/sap/ui/core/cldr/sr_Latn.json +294 -0
  179. package/src/sap/ui/core/cldr/sv.json +295 -0
  180. package/src/sap/ui/core/cldr/th.json +362 -0
  181. package/src/sap/ui/core/cldr/tr.json +362 -0
  182. package/src/sap/ui/core/cldr/uk.json +294 -0
  183. package/src/sap/ui/core/cldr/vi.json +294 -0
  184. package/src/sap/ui/core/cldr/zh_CN.json +329 -0
  185. package/src/sap/ui/core/cldr/zh_HK.json +329 -0
  186. package/src/sap/ui/core/cldr/zh_SG.json +329 -0
  187. package/src/sap/ui/core/cldr/zh_TW.json +329 -0
  188. package/src/sap/ui/core/date/Japanese.js +30 -0
  189. package/src/sap/ui/core/delegate/ItemNavigation.js +1 -1
  190. package/src/sap/ui/core/delegate/ScrollEnablement.js +1 -1
  191. package/src/sap/ui/core/dnd/DragAndDrop.js +2 -2
  192. package/src/sap/ui/core/dnd/DragDropBase.js +1 -1
  193. package/src/sap/ui/core/dnd/DragDropInfo.js +1 -1
  194. package/src/sap/ui/core/dnd/DragInfo.js +1 -1
  195. package/src/sap/ui/core/dnd/DropInfo.js +1 -1
  196. package/src/sap/ui/core/format/DateFormat.js +122 -2
  197. package/src/sap/ui/core/format/NumberFormat.js +111 -70
  198. package/src/sap/ui/core/format/TimezoneUtil.js +2 -2
  199. package/src/sap/ui/core/hyphenation/Hyphenation.js +1 -1
  200. package/src/sap/ui/core/library.js +3 -3
  201. package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
  202. package/src/sap/ui/core/message/Message.js +1 -1
  203. package/src/sap/ui/core/message/MessageManager.js +1 -1
  204. package/src/sap/ui/core/message/MessageParser.js +1 -1
  205. package/src/sap/ui/core/message/MessageProcessor.js +1 -1
  206. package/src/sap/ui/core/mvc/HTMLView.js +1 -1
  207. package/src/sap/ui/core/mvc/JSONView.js +1 -1
  208. package/src/sap/ui/core/mvc/JSView.js +1 -1
  209. package/src/sap/ui/core/mvc/TemplateView.js +1 -1
  210. package/src/sap/ui/core/mvc/View.js +3 -3
  211. package/src/sap/ui/core/mvc/ViewType.js +4 -0
  212. package/src/sap/ui/core/mvc/XMLView.js +1 -1
  213. package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
  214. package/src/sap/ui/core/plugin/LessSupport.js +1 -1
  215. package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -1
  216. package/src/sap/ui/core/postmessage/Bus.js +12 -17
  217. package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
  218. package/src/sap/ui/core/search/OpenSearchProvider.js +1 -1
  219. package/src/sap/ui/core/search/SearchProvider.js +1 -1
  220. package/src/sap/ui/core/service/Service.js +1 -1
  221. package/src/sap/ui/core/service/ServiceFactory.js +1 -1
  222. package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
  223. package/src/sap/ui/core/support/Plugin.js +1 -1
  224. package/src/sap/ui/core/support/Support.js +1 -1
  225. package/src/sap/ui/core/support/plugins/ControlTree.js +1 -1
  226. package/src/sap/ui/core/support/plugins/Interaction.js +1 -1
  227. package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
  228. package/src/sap/ui/core/support/plugins/Performance.js +1 -1
  229. package/src/sap/ui/core/support/plugins/Selector.js +1 -1
  230. package/src/sap/ui/core/support/plugins/TechInfo.js +1 -1
  231. package/src/sap/ui/core/support/plugins/Trace.js +1 -1
  232. package/src/sap/ui/core/support/plugins/ViewInfo.js +1 -1
  233. package/src/sap/ui/core/themes/base/Icon.less +17 -4
  234. package/src/sap/ui/core/themes/base/LocalBusyIndicator.less +1 -1
  235. package/src/sap/ui/core/themes/base/base.less +599 -90
  236. package/src/sap/ui/core/themes/base/global.less +64 -0
  237. package/src/sap/ui/core/themes/sap_hcb/global.less +65 -0
  238. package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
  239. package/src/sap/ui/core/tmpl/DOMElement.js +1 -1
  240. package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
  241. package/src/sap/ui/core/tmpl/Template.js +1 -1
  242. package/src/sap/ui/core/tmpl/TemplateControl.js +1 -1
  243. package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
  244. package/src/sap/ui/core/util/Export.js +1 -1
  245. package/src/sap/ui/core/util/ExportCell.js +1 -1
  246. package/src/sap/ui/core/util/ExportColumn.js +1 -1
  247. package/src/sap/ui/core/util/ExportRow.js +1 -1
  248. package/src/sap/ui/core/util/ExportType.js +1 -1
  249. package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
  250. package/src/sap/ui/core/util/File.js +1 -1
  251. package/src/sap/ui/core/util/LibraryInfo.js +1 -1
  252. package/src/sap/ui/core/util/MockServer.js +1 -1
  253. package/src/sap/ui/core/util/PasteHelper.js +1 -1
  254. package/src/sap/ui/core/util/reflection/XmlTreeModifier.js +1 -3
  255. package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
  256. package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
  257. package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
  258. package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
  259. package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
  260. package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
  261. package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
  262. package/src/sap/ui/core/ws/ReadyState.js +1 -1
  263. package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
  264. package/src/sap/ui/core/ws/WebSocket.js +1 -1
  265. package/src/sap/ui/debug/ControlTree.js +1 -1
  266. package/src/sap/ui/debug/DebugEnv.js +1 -1
  267. package/src/sap/ui/debug/PropertyList.js +1 -1
  268. package/src/sap/ui/model/ClientModel.js +1 -1
  269. package/src/sap/ui/model/CompositeDataState.js +1 -1
  270. package/src/sap/ui/model/CompositeType.js +1 -1
  271. package/src/sap/ui/model/DataState.js +1 -1
  272. package/src/sap/ui/model/MetaModel.js +1 -1
  273. package/src/sap/ui/model/Model.js +1 -1
  274. package/src/sap/ui/model/SelectionModel.js +1 -1
  275. package/src/sap/ui/model/SimpleType.js +1 -1
  276. package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
  277. package/src/sap/ui/model/Type.js +1 -1
  278. package/src/sap/ui/model/controlhelper/TreeBindingProxy.js +11 -3
  279. package/src/sap/ui/model/json/JSONModel.js +1 -1
  280. package/src/sap/ui/model/message/MessageModel.js +1 -1
  281. package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
  282. package/src/sap/ui/model/odata/ODataMessageParser.js +1 -1
  283. package/src/sap/ui/model/odata/ODataMetaModel.js +1 -1
  284. package/src/sap/ui/model/odata/ODataMetadata.js +1 -1
  285. package/src/sap/ui/model/odata/ODataModel.js +1 -1
  286. package/src/sap/ui/model/odata/type/Boolean.js +1 -1
  287. package/src/sap/ui/model/odata/type/Byte.js +1 -1
  288. package/src/sap/ui/model/odata/type/Currency.js +1 -1
  289. package/src/sap/ui/model/odata/type/Date.js +1 -1
  290. package/src/sap/ui/model/odata/type/DateTime.js +1 -1
  291. package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
  292. package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
  293. package/src/sap/ui/model/odata/type/DateTimeWithTimezone.js +1 -1
  294. package/src/sap/ui/model/odata/type/Decimal.js +1 -1
  295. package/src/sap/ui/model/odata/type/Double.js +1 -1
  296. package/src/sap/ui/model/odata/type/Guid.js +1 -1
  297. package/src/sap/ui/model/odata/type/Int.js +1 -1
  298. package/src/sap/ui/model/odata/type/Int16.js +1 -1
  299. package/src/sap/ui/model/odata/type/Int32.js +1 -1
  300. package/src/sap/ui/model/odata/type/Int64.js +1 -1
  301. package/src/sap/ui/model/odata/type/ODataType.js +1 -1
  302. package/src/sap/ui/model/odata/type/Raw.js +1 -1
  303. package/src/sap/ui/model/odata/type/SByte.js +1 -1
  304. package/src/sap/ui/model/odata/type/Single.js +1 -1
  305. package/src/sap/ui/model/odata/type/Stream.js +1 -1
  306. package/src/sap/ui/model/odata/type/String.js +1 -1
  307. package/src/sap/ui/model/odata/type/Time.js +1 -1
  308. package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
  309. package/src/sap/ui/model/odata/type/Unit.js +1 -1
  310. package/src/sap/ui/model/odata/v2/Context.js +1 -1
  311. package/src/sap/ui/model/odata/v2/ODataAnnotations.js +1 -1
  312. package/src/sap/ui/model/odata/v2/ODataListBinding.js +1 -1
  313. package/src/sap/ui/model/odata/v2/ODataModel.js +1 -1
  314. package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +3 -4
  315. package/src/sap/ui/model/odata/v4/Context.js +82 -29
  316. package/src/sap/ui/model/odata/v4/ODataBinding.js +3 -0
  317. package/src/sap/ui/model/odata/v4/ODataContextBinding.js +3 -2
  318. package/src/sap/ui/model/odata/v4/ODataListBinding.js +77 -23
  319. package/src/sap/ui/model/odata/v4/ODataMetaModel.js +1 -1
  320. package/src/sap/ui/model/odata/v4/ODataModel.js +2 -2
  321. package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +1 -1
  322. package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +334 -142
  323. package/src/sap/ui/model/odata/v4/lib/_AggregationHelper.js +109 -16
  324. package/src/sap/ui/model/odata/v4/lib/_Cache.js +82 -42
  325. package/src/sap/ui/model/odata/v4/lib/_Helper.js +26 -0
  326. package/src/sap/ui/model/resource/ResourceModel.js +1 -1
  327. package/src/sap/ui/model/type/Boolean.js +1 -1
  328. package/src/sap/ui/model/type/Currency.js +1 -1
  329. package/src/sap/ui/model/type/Date.js +1 -1
  330. package/src/sap/ui/model/type/DateInterval.js +1 -1
  331. package/src/sap/ui/model/type/DateTime.js +1 -1
  332. package/src/sap/ui/model/type/DateTimeInterval.js +1 -1
  333. package/src/sap/ui/model/type/FileSize.js +1 -1
  334. package/src/sap/ui/model/type/Float.js +1 -1
  335. package/src/sap/ui/model/type/Integer.js +1 -1
  336. package/src/sap/ui/model/type/String.js +1 -1
  337. package/src/sap/ui/model/type/Time.js +1 -1
  338. package/src/sap/ui/model/type/TimeInterval.js +1 -1
  339. package/src/sap/ui/model/type/Unit.js +1 -1
  340. package/src/sap/ui/model/xml/XMLModel.js +1 -1
  341. package/src/sap/ui/qunit/QUnitUtils.js +14 -2
  342. package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
  343. package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +1 -1
  344. package/src/sap/ui/test/OpaExtension.js +1 -1
  345. package/src/sap/ui/test/OpaPlugin.js +6 -4
  346. package/src/sap/ui/test/PageObjectFactory.js +11 -9
  347. package/src/sap/ui/test/RecordReplay.js +1 -1
  348. package/src/sap/ui/test/_OpaLogger.js +1 -1
  349. package/src/sap/ui/test/autowaiter/_promiseWaiter.js +4 -1
  350. package/src/sap/ui/test/generic/TestBase.js +1 -1
  351. package/src/sap/ui/util/Mobile.js +17 -18
  352. package/src/sap/ui/util/Storage.js +90 -63
@@ -208,7 +208,7 @@ sap.ui.define([
208
208
  * {@link #loaded loaded} has been resolved!
209
209
  *
210
210
  * @author SAP SE
211
- * @version 1.108.1
211
+ * @version 1.109.0
212
212
  * @alias sap.ui.model.odata.ODataMetaModel
213
213
  * @extends sap.ui.model.MetaModel
214
214
  * @public
@@ -45,7 +45,7 @@ sap.ui.define([
45
45
  * Implementation to access OData metadata
46
46
  *
47
47
  * @author SAP SE
48
- * @version 1.108.1
48
+ * @version 1.109.0
49
49
  *
50
50
  * @public
51
51
  * @alias sap.ui.model.odata.ODataMetadata
@@ -77,7 +77,7 @@ sap.ui.define([
77
77
  *
78
78
  *
79
79
  * @author SAP SE
80
- * @version 1.108.1
80
+ * @version 1.109.0
81
81
  *
82
82
  * @public
83
83
  * @deprecated As of version 1.48, please use {@link sap.ui.model.odata.v2.ODataModel} instead.
@@ -87,7 +87,7 @@ sap.ui.define([
87
87
  * @extends sap.ui.model.odata.type.ODataType
88
88
  *
89
89
  * @author SAP SE
90
- * @version 1.108.1
90
+ * @version 1.109.0
91
91
  *
92
92
  * @alias sap.ui.model.odata.type.Boolean
93
93
  * @param {object} [oFormatOptions]
@@ -24,7 +24,7 @@ sap.ui.define([
24
24
  * @extends sap.ui.model.odata.type.Int
25
25
  *
26
26
  * @author SAP SE
27
- * @version 1.108.1
27
+ * @version 1.109.0
28
28
  *
29
29
  * @alias sap.ui.model.odata.type.Byte
30
30
  * @param {object} [oFormatOptions]
@@ -61,7 +61,7 @@ sap.ui.define([
61
61
  * @extends sap.ui.model.type.Currency
62
62
  * @public
63
63
  * @since 1.63.0
64
- * @version 1.108.1
64
+ * @version 1.109.0
65
65
  */
66
66
  var Currency = BaseCurrency.extend("sap.ui.model.odata.type.Currency", {
67
67
  constructor : function (oFormatOptions, oConstraints) {
@@ -106,7 +106,7 @@ sap.ui.define([
106
106
  * @extends sap.ui.model.odata.type.ODataType
107
107
  *
108
108
  * @author SAP SE
109
- * @version 1.108.1
109
+ * @version 1.109.0
110
110
  *
111
111
  * @alias sap.ui.model.odata.type.Date
112
112
  * @param {object} [oFormatOptions]
@@ -59,7 +59,7 @@ sap.ui.define([
59
59
  * @extends sap.ui.model.odata.type.DateTimeBase
60
60
  *
61
61
  * @author SAP SE
62
- * @version 1.108.1
62
+ * @version 1.109.0
63
63
  *
64
64
  * @alias sap.ui.model.odata.type.DateTime
65
65
  * @param {object} [oFormatOptions]
@@ -132,7 +132,7 @@ sap.ui.define([
132
132
  * @extends sap.ui.model.odata.type.ODataType
133
133
  * @public
134
134
  * @since 1.27.0
135
- * @version 1.108.1
135
+ * @version 1.109.0
136
136
  */
137
137
  var DateTimeBase = ODataType.extend("sap.ui.model.odata.type.DateTimeBase", {
138
138
  constructor : function (oFormatOptions, oConstraints) {
@@ -28,7 +28,7 @@ sap.ui.define([
28
28
  * @extends sap.ui.model.odata.type.DateTimeBase
29
29
  *
30
30
  * @author SAP SE
31
- * @version 1.108.1
31
+ * @version 1.109.0
32
32
  *
33
33
  * @alias sap.ui.model.odata.type.DateTimeOffset
34
34
  * @param {object} [oFormatOptions]
@@ -60,7 +60,7 @@ sap.ui.define([
60
60
  * @public
61
61
  * @see {sap.ui.model.odata.v2.ODataModel#bindProperty}
62
62
  * @since 1.99.0
63
- * @version 1.108.1
63
+ * @version 1.109.0
64
64
  */
65
65
  var DateTimeWithTimezone = CompositeType.extend("sap.ui.model.odata.type.DateTimeWithTimezone",
66
66
  {
@@ -201,7 +201,7 @@ sap.ui.define([
201
201
  * @extends sap.ui.model.odata.type.ODataType
202
202
  *
203
203
  * @author SAP SE
204
- * @version 1.108.1
204
+ * @version 1.109.0
205
205
  *
206
206
  * @alias sap.ui.model.odata.type.Decimal
207
207
  * @param {object} [oFormatOptions]
@@ -95,7 +95,7 @@ sap.ui.define([
95
95
  * @extends sap.ui.model.odata.type.ODataType
96
96
  *
97
97
  * @author SAP SE
98
- * @version 1.108.1
98
+ * @version 1.109.0
99
99
  *
100
100
  * @alias sap.ui.model.odata.type.Double
101
101
  * @param {object} [oFormatOptions]
@@ -62,7 +62,7 @@ sap.ui.define([
62
62
  * @extends sap.ui.model.odata.type.ODataType
63
63
  *
64
64
  * @author SAP SE
65
- * @version 1.108.1
65
+ * @version 1.109.0
66
66
  *
67
67
  * @alias sap.ui.model.odata.type.Guid
68
68
  * @param {object} [oFormatOptions]
@@ -80,7 +80,7 @@ sap.ui.define([
80
80
  * @extends sap.ui.model.odata.type.ODataType
81
81
  *
82
82
  * @author SAP SE
83
- * @version 1.108.1
83
+ * @version 1.109.0
84
84
  *
85
85
  * @abstract
86
86
  * @alias sap.ui.model.odata.type.Int
@@ -24,7 +24,7 @@ sap.ui.define([
24
24
  * @extends sap.ui.model.odata.type.Int
25
25
  *
26
26
  * @author SAP SE
27
- * @version 1.108.1
27
+ * @version 1.109.0
28
28
  *
29
29
  * @alias sap.ui.model.odata.type.Int16
30
30
  * @param {object} [oFormatOptions]
@@ -24,7 +24,7 @@ sap.ui.define([
24
24
  * @extends sap.ui.model.odata.type.Int
25
25
  *
26
26
  * @author SAP SE
27
- * @version 1.108.1
27
+ * @version 1.109.0
28
28
  *
29
29
  * @alias sap.ui.model.odata.type.Int32
30
30
  * @param {object} [oFormatOptions]
@@ -137,7 +137,7 @@ sap.ui.define([
137
137
  * @extends sap.ui.model.odata.type.ODataType
138
138
  *
139
139
  * @author SAP SE
140
- * @version 1.108.1
140
+ * @version 1.109.0
141
141
  *
142
142
  * @alias sap.ui.model.odata.type.Int64
143
143
  * @param {object} [oFormatOptions]
@@ -115,7 +115,7 @@ sap.ui.define([
115
115
  * @extends sap.ui.model.SimpleType
116
116
  *
117
117
  * @author SAP SE
118
- * @version 1.108.1
118
+ * @version 1.109.0
119
119
  *
120
120
  * @abstract
121
121
  * @alias sap.ui.model.odata.type.ODataType
@@ -30,7 +30,7 @@ sap.ui.define([
30
30
  * @extends sap.ui.model.odata.type.ODataType
31
31
  * @public
32
32
  * @since 1.37.0
33
- * @version 1.108.1
33
+ * @version 1.109.0
34
34
  */
35
35
  var Raw = ODataType.extend("sap.ui.model.odata.type.Raw", {
36
36
  constructor : function (oFormatOptions, oConstraints) {
@@ -24,7 +24,7 @@ sap.ui.define([
24
24
  * @extends sap.ui.model.odata.type.Int
25
25
  *
26
26
  * @author SAP SE
27
- * @version 1.108.1
27
+ * @version 1.109.0
28
28
  *
29
29
  * @alias sap.ui.model.odata.type.SByte
30
30
  * @param {object} [oFormatOptions]
@@ -95,7 +95,7 @@ sap.ui.define([
95
95
  * @extends sap.ui.model.odata.type.ODataType
96
96
  *
97
97
  * @author SAP SE
98
- * @version 1.108.1
98
+ * @version 1.109.0
99
99
  *
100
100
  * @alias sap.ui.model.odata.type.Single
101
101
  * @param {object} [oFormatOptions]
@@ -60,7 +60,7 @@ sap.ui.define([
60
60
  * @extends sap.ui.model.odata.type.ODataType
61
61
  * @public
62
62
  * @since 1.51.0
63
- * @version 1.108.1
63
+ * @version 1.109.0
64
64
  */
65
65
  var Stream = ODataType.extend("sap.ui.model.odata.type.Stream", {
66
66
  constructor : function (oFormatOptions, oConstraints) {
@@ -84,7 +84,7 @@ sap.ui.define([
84
84
  * @extends sap.ui.model.odata.type.ODataType
85
85
  *
86
86
  * @author SAP SE
87
- * @version 1.108.1
87
+ * @version 1.109.0
88
88
  *
89
89
  * @alias sap.ui.model.odata.type.String
90
90
  * @param {object} [oFormatOptions]
@@ -154,7 +154,7 @@ sap.ui.define([
154
154
  * @extends sap.ui.model.odata.type.ODataType
155
155
  *
156
156
  * @author SAP SE
157
- * @version 1.108.1
157
+ * @version 1.109.0
158
158
  *
159
159
  * @alias sap.ui.model.odata.type.Time
160
160
  * @param {object} [oFormatOptions]
@@ -110,7 +110,7 @@ sap.ui.define([
110
110
  * @extends sap.ui.model.odata.type.ODataType
111
111
  * @public
112
112
  * @since 1.37.0
113
- * @version 1.108.1
113
+ * @version 1.109.0
114
114
  */
115
115
  var TimeOfDay = ODataType.extend("sap.ui.model.odata.type.TimeOfDay", {
116
116
  constructor : function (oFormatOptions, oConstraints) {
@@ -63,7 +63,7 @@ sap.ui.define([
63
63
  * @extends sap.ui.model.type.Unit
64
64
  * @public
65
65
  * @since 1.63.0
66
- * @version 1.108.1
66
+ * @version 1.109.0
67
67
  */
68
68
  var Unit = BaseUnit.extend("sap.ui.model.odata.type.Unit", {
69
69
  constructor : function (oFormatOptions, oConstraints, aDynamicFormatOptionNames) {
@@ -64,7 +64,7 @@ sap.ui.define([
64
64
  * @hideconstructor
65
65
  * @public
66
66
  * @since 1.93.0
67
- * @version 1.108.1
67
+ * @version 1.109.0
68
68
  */
69
69
  var Context = BaseContext.extend("sap.ui.model.odata.v2.Context", {
70
70
  constructor : function (oModel, sPath, sDeepPath, oCreatePromise, bInactive,
@@ -36,7 +36,7 @@ sap.ui.define([
36
36
  * @class Annotation loader for OData V2 services
37
37
  *
38
38
  * @author SAP SE
39
- * @version 1.108.1
39
+ * @version 1.109.0
40
40
  *
41
41
  * @public
42
42
  * @since 1.37.0
@@ -1894,7 +1894,7 @@ sap.ui.define([
1894
1894
  * relative to the created contexts within this list. Note: the order of created contexts in
1895
1895
  * the binding does not necessarily correspond to the order of the resulting back end creation
1896
1896
  * requests.
1897
- * @param {object} mParameters
1897
+ * @param {object} [mParameters]
1898
1898
  * A map of parameters as specified for {@link sap.ui.model.odata.v2.ODataModel#createEntry},
1899
1899
  * where only the subset given below is supported. In case of deep create, <b>none</b> of the
1900
1900
  * parameters in <code>mParameters</code> must be set.
@@ -205,7 +205,7 @@ sap.ui.define([
205
205
  * This model is not prepared to be inherited from.
206
206
  *
207
207
  * @author SAP SE
208
- * @version 1.108.1
208
+ * @version 1.109.0
209
209
  *
210
210
  * @public
211
211
  * @alias sap.ui.model.odata.v2.ODataModel
@@ -10,7 +10,6 @@ sap.ui.define([
10
10
  "sap/base/Log",
11
11
  "sap/base/util/deepExtend",
12
12
  "sap/base/util/each",
13
- "sap/base/util/includes",
14
13
  "sap/base/util/isEmptyObject",
15
14
  "sap/ui/model/ChangeReason",
16
15
  "sap/ui/model/Context",
@@ -24,7 +23,7 @@ sap.ui.define([
24
23
  "sap/ui/model/odata/CountMode",
25
24
  "sap/ui/model/odata/ODataUtils",
26
25
  "sap/ui/model/odata/OperationMode"
27
- ], function(assert, Log, deepExtend, each, includes, isEmptyObject, ChangeReason, Context, Filter,
26
+ ], function(assert, Log, deepExtend, each, isEmptyObject, ChangeReason, Context, Filter,
28
27
  FilterProcessor, FilterType, Sorter, SorterProcessor, TreeBinding, TreeBindingUtils,
29
28
  CountMode, ODataUtils, OperationMode) {
30
29
  "use strict";
@@ -94,7 +93,7 @@ sap.ui.define([
94
93
  * @extends sap.ui.model.TreeBinding
95
94
  * @hideconstructor
96
95
  * @public
97
- * @version 1.108.1
96
+ * @version 1.109.0
98
97
  */
99
98
  var ODataTreeBinding = TreeBinding.extend("sap.ui.model.odata.v2.ODataTreeBinding", /** @lends sap.ui.model.odata.v2.ODataTreeBinding.prototype */ {
100
99
 
@@ -1557,7 +1556,7 @@ sap.ui.define([
1557
1556
 
1558
1557
  for (sNodeKey in this.oKeys) {
1559
1558
  for (sChangedEntityKey in mChangedEntities) {
1560
- if (includes(this.oKeys[sNodeKey], sChangedEntityKey)) {
1559
+ if (this.oKeys[sNodeKey].includes(sChangedEntityKey)) {
1561
1560
  return true;
1562
1561
  }
1563
1562
  }
@@ -42,7 +42,7 @@ sap.ui.define([
42
42
  * @hideconstructor
43
43
  * @public
44
44
  * @since 1.39.0
45
- * @version 1.108.1
45
+ * @version 1.109.0
46
46
  */
47
47
  Context = BaseContext.extend("sap.ui.model.odata.v4.Context", {
48
48
  constructor : constructor
@@ -126,7 +126,8 @@ sap.ui.define([
126
126
  // ensure to return a promise that is resolved w/o data
127
127
  && Promise.resolve(oCreatePromise).then(function () {});
128
128
  this.oSyncCreatePromise = oCreatePromise;
129
- this.bDeleted = false; // deleted on the client, but not on the server yet
129
+ // a promise waiting for the deletion, also used as indicator for #isDeleted
130
+ this.oDeletePromise = null;
130
131
  this.iGeneration = iGeneration || 0;
131
132
  this.bInactive = bInactive || undefined; // be in sync with the annotation
132
133
  this.iIndex = iIndex;
@@ -279,19 +280,27 @@ sap.ui.define([
279
280
  /**
280
281
  * Deletes the OData entity this context points to. The context is removed from the binding
281
282
  * immediately, even if {@link sap.ui.model.odata.v4.SubmitMode.API} is used, and the request is
282
- * only sent later when {@link sap.ui.model.odata.v4.ODataModel#submitBatch} is called. As long
283
- * as the context is deleted on the client, but not yet on the server, {@link #isDeleted}
284
- * returns <code>true</code> and the context must not be used anymore (except for checking
285
- * {@link #isDeleted}), especially not as a binding context. The application has to take care
286
- * that the context is no longer used.
283
+ * only sent later when {@link sap.ui.model.odata.v4.ODataModel#submitBatch} is called. As soon
284
+ * as the context is deleted on the client, {@link #isDeleted} returns <code>true</code> and the
285
+ * context must not be used anymore (except for status APIs like {@link #isDeleted},
286
+ * {@link #isKeepAlive}, {@link #hasPendingChanges}, {@link #resetChanges}), especially not as a
287
+ * binding context.
287
288
  *
288
289
  * Since 1.105 such a pending deletion is a pending change. It causes
289
290
  * <code>hasPendingChanges</code> to return <code>true</code> for the context, the binding
290
- * containing it, and the model. <code>resetChanges</code> in binding or model cancels the
291
- * deletion and restores the context.
291
+ * containing it, and the model. The <code>resetChanges</code> method called on the context
292
+ * (since 1.109.0), the binding, or the model cancels the deletion and restores the context.
292
293
  *
293
294
  * If the DELETE request succeeds, the context is destroyed and must not be used anymore. If it
294
- * fails, the context is restored, reinserted into the list, and fully functional again.
295
+ * fails or is canceled, the context is restored, reinserted into the list, and fully functional
296
+ * again.
297
+ *
298
+ * If the deleted context is used as binding context of a control or view, the application is
299
+ * advised to unbind it via
300
+ * <code>{@link sap.ui.base.ManagedObject#setBindingContext setBindingContext(null)}</code>
301
+ * before calling <code>delete</code>, and to possibly rebind it after reset or failure. The
302
+ * model itself ensures that all bindings depending on this context become unresolved, but no
303
+ * attempt is made to restore these bindings in case of reset or failure.
295
304
  *
296
305
  * @param {string} [sGroupId]
297
306
  * The group ID to be used for the DELETE request; if not specified, the update group ID for
@@ -332,6 +341,7 @@ sap.ui.define([
332
341
  * @function
333
342
  * @public
334
343
  * @see #hasPendingChanges
344
+ * @see #resetChanges
335
345
  * @see sap.ui.model.odata.v4.ODataContextBinding#hasPendingChanges
336
346
  * @see sap.ui.model.odata.v4.ODataListBinding#hasPendingChanges
337
347
  * @see sap.ui.model.odata.v4.ODataModel#hasPendingChanges
@@ -366,13 +376,15 @@ sap.ui.define([
366
376
  oGroupLock = this.oBinding.lockGroup(sGroupId, true, true);
367
377
  }
368
378
 
369
- this.bDeleted = true;
379
+ this.oModel.getDependentBindings(this).forEach(function (oDependentBinding) {
380
+ oDependentBinding.setContext(undefined);
381
+ });
370
382
 
371
- return Promise.resolve(this._delete(oGroupLock, /*oETagEntity*/null, bDoNotRequestCount))
372
- .then(function () {
383
+ this.oDeletePromise = this._delete(
384
+ oGroupLock, /*oETagEntity*/null, bDoNotRequestCount
385
+ ).then(function () {
373
386
  var sResourcePathPrefix = that.sPath.slice(1);
374
387
 
375
- that.bDeleted = false;
376
388
  // Messages have been updated via _Cache#_delete; "that" is already destroyed; remove
377
389
  // all dependent caches in all bindings
378
390
  oModel.getAllBindings().forEach(function (oBinding) {
@@ -383,10 +395,12 @@ sap.ui.define([
383
395
  oGroupLock.unlock(true);
384
396
  }
385
397
  oModel.reportError("Failed to delete " + that.getPath(), sClassName, oError);
386
- that.bDeleted = false;
398
+ that.oDeletePromise = null;
387
399
  that.checkUpdate();
388
400
  throw oError;
389
401
  });
402
+
403
+ return Promise.resolve(this.oDeletePromise);
390
404
  };
391
405
 
392
406
  /**
@@ -528,8 +542,14 @@ sap.ui.define([
528
542
  }
529
543
 
530
544
  if (that.isInactive()) {
531
- oBinding.fireCreateActivate(that);
532
- that.bInactive = false;
545
+ // early cache update so that the new value is properly available on the
546
+ // event listener
547
+ // runs synchronously - setProperty calls fetchValue with $cached
548
+ oCache.setProperty(oResult.propertyPath, vValue, sEntityPath, bUpdating)
549
+ .catch(that.oModel.getReporter());
550
+ if (oBinding.fireCreateActivate(that)) {
551
+ that.bInactive = false;
552
+ }
533
553
  }
534
554
 
535
555
  // if request is canceled fnPatchSent and fnErrorCallback are not called and
@@ -537,7 +557,8 @@ sap.ui.define([
537
557
  return oCache.update(oGroupLock, oResult.propertyPath, vValue,
538
558
  bSkipRetry ? undefined : errorCallback, oResult.editUrl, sEntityPath,
539
559
  oMetaModel.getUnitOrCurrencyPath(that.oModel.resolve(sPath, that)),
540
- oBinding.isPatchWithoutSideEffects(), patchSent, that.isKeepAlive.bind(that)
560
+ oBinding.isPatchWithoutSideEffects(), patchSent,
561
+ that.isKeepAlive.bind(that), that.bInactive
541
562
  ).then(function () {
542
563
  firePatchCompleted(true);
543
564
  }, function (oError) {
@@ -905,8 +926,8 @@ sap.ui.define([
905
926
  * Returns whether there are pending changes for bindings dependent on this context, or for
906
927
  * unresolved bindings (see {@link sap.ui.model.Binding#isResolved}) which were dependent on
907
928
  * this context at the time the pending change was created. This includes the context itself
908
- * being {@link #isTransient transient} or {@link #isDeleted deleted}. Since 1.98.0,
909
- * {@link #isInactive inactive} contexts are ignored.
929
+ * being {@link #isTransient transient} or {@link #delete deleted} on the client, but not yet on
930
+ * the server. Since 1.98.0, {@link #isInactive inactive} contexts are ignored.
910
931
  *
911
932
  * @returns {boolean}
912
933
  * Whether there are pending changes
@@ -916,7 +937,7 @@ sap.ui.define([
916
937
  */
917
938
  Context.prototype.hasPendingChanges = function () {
918
939
  return this.isTransient()
919
- || this.isDeleted()
940
+ || this.oDeletePromise && this.oDeletePromise.isPending()
920
941
  || this.getBinding().hasPendingChangesForPath(this.sPath)
921
942
  || this.oModel.getDependentBindings(this).some(function (oDependentBinding) {
922
943
  return oDependentBinding.oCache
@@ -927,9 +948,12 @@ sap.ui.define([
927
948
  };
928
949
 
929
950
  /**
930
- * Returns whether this context is deleted on the client, but not on the server yet. The result
931
- * of this function can also be accessed via the "@$ui5.context.isDeleted" instance annotation
932
- * at the entity.
951
+ * Returns whether this context is deleted. It becomes <code>true</code> immediately after
952
+ * calling {@link #delete}, even while the request is waiting for
953
+ * {@link sap.ui.model.odata.v4.ODataModel#submitBatch submitBatch} or is in process. It becomes
954
+ * <code>false</code> again when the DELETE request fails or is canceled. The result of this
955
+ * function can also be accessed via the "@$ui5.context.isDeleted" instance annotation at the
956
+ * entity.
933
957
  *
934
958
  * @returns {boolean} <code>true</code> if this context is deleted
935
959
  *
@@ -938,7 +962,7 @@ sap.ui.define([
938
962
  * @since 1.105.0
939
963
  */
940
964
  Context.prototype.isDeleted = function () {
941
- return this.bDeleted;
965
+ return !!this.oDeletePromise;
942
966
  };
943
967
 
944
968
  /**
@@ -1122,7 +1146,7 @@ sap.ui.define([
1122
1146
  throw new Error("Cannot replace " + this);
1123
1147
  }
1124
1148
  if (oOtherContext.oBinding !== this.oBinding || oOtherContext.iIndex !== undefined
1125
- || oOtherContext.bDeleted || !oOtherContext.bKeepAlive) {
1149
+ || oOtherContext.isDeleted() || !oOtherContext.bKeepAlive) {
1126
1150
  throw new Error("Cannot replace with " + oOtherContext);
1127
1151
  }
1128
1152
  oElement = oOtherContext.getValue();
@@ -1369,8 +1393,9 @@ sap.ui.define([
1369
1393
  * property that was changed on the server and now targets a different entity
1370
1394
  * (since 1.79.0)
1371
1395
  * <li> the binding of this context has "$$aggregation" (see
1372
- * {@link sap.ui.model.odata.v4.ODataModel#bindList}) and the context is not the header
1373
- * context
1396
+ * {@link sap.ui.model.odata.v4.ODataModel#bindList}), the context is not the header
1397
+ * context, and (since 1.109.0) no <code>hierarchyQualifier</code> is given (see
1398
+ * {@link sap.ui.model.odata.v4.ODataListBinding#setAggregation})
1374
1399
  * </ul>
1375
1400
  * @public
1376
1401
  * @see sap.ui.model.odata.v4.ODataContextBinding#execute
@@ -1554,6 +1579,34 @@ sap.ui.define([
1554
1579
  return SyncPromise.all(aPromises);
1555
1580
  };
1556
1581
 
1582
+ /**
1583
+ * Resets all pending changes of this context, see {@link #hasPendingChanges}. Resets also
1584
+ * invalid user input. If this context is currently {@link #delete deleted} on the client, but
1585
+ * not yet on the server, this method cancels the deletion and restores the context.
1586
+ *
1587
+ * Note: This is an experimental API. Currently only PATCH and DELETE changes for row contexts
1588
+ * of an absolute {@link sap.ui.model.odata.v4.ODataListBinding} are supported.
1589
+ *
1590
+ * @returns {Promise}
1591
+ * A promise which is resolved without a defined result as soon as all changes in the context
1592
+ * itself are canceled
1593
+ * @throws {Error}
1594
+ * If the binding's root binding is suspended or if there is a change of this context which
1595
+ * has been sent to the server and for which there is no response yet
1596
+ *
1597
+ * @experimental As of version 1.109.0
1598
+ * @public
1599
+ */
1600
+ Context.prototype.resetChanges = function () {
1601
+ var aPromises = this.oDeletePromise
1602
+ ? [this.oDeletePromise.catch(function () { /*already handled in #delete*/ })]
1603
+ : [];
1604
+
1605
+ this.oBinding.checkSuspended();
1606
+ this.oBinding.resetChangesForPath(this.sPath, aPromises);
1607
+ return Promise.all(aPromises).then(function () {});
1608
+ };
1609
+
1557
1610
  /**
1558
1611
  * Sets the <code>bKeepAlive</code> flag of this content to <code>false</code> without
1559
1612
  * touching the callback function <code>fnOnBeforeDestroy</code>.
@@ -1748,7 +1801,7 @@ sap.ui.define([
1748
1801
 
1749
1802
  if (!this.oModel) {
1750
1803
  sSuffix = ";destroyed";
1751
- } else if (this.bDeleted) {
1804
+ } else if (this.isDeleted()) {
1752
1805
  sSuffix = ";deleted";
1753
1806
  }
1754
1807
 
@@ -489,6 +489,9 @@ sap.ui.define([
489
489
  sGroupId, oCallToken.oOldCache);
490
490
  });
491
491
  }
492
+ if (oCache) {
493
+ oCache.setActive(false);
494
+ }
492
495
  that.oCache = null;
493
496
  return null;
494
497
  });
@@ -74,7 +74,7 @@ sap.ui.define([
74
74
  * @mixes sap.ui.model.odata.v4.ODataParentBinding
75
75
  * @public
76
76
  * @since 1.37.0
77
- * @version 1.108.1
77
+ * @version 1.109.0
78
78
  *
79
79
  * @borrows sap.ui.model.odata.v4.ODataBinding#getGroupId as #getGroupId
80
80
  * @borrows sap.ui.model.odata.v4.ODataBinding#getRootBinding as #getRootBinding
@@ -917,7 +917,8 @@ sap.ui.define([
917
917
  * </ul>
918
918
  * It is also rejected if <code>bReplaceWithRVC</code> is supplied, and there is no return
919
919
  * value context at all or the existing context as described above is currently part of the
920
- * list's collection (that is, has an index).<br>
920
+ * list's collection (that is, has an index).
921
+ * <br>
921
922
  * A return value context is a {@link sap.ui.model.odata.v4.Context} which represents a bound
922
923
  * operation response. It is created only if the operation is bound and has a single entity
923
924
  * return value from the same entity set as the operation's binding parameter and has a