@openui5/sap.ui.core 1.107.1 → 1.108.1

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 (287) hide show
  1. package/.dtsgenrc +63 -0
  2. package/THIRDPARTY.txt +1 -1
  3. package/package.json +1 -1
  4. package/src/jquery.sap.global.js +1 -1
  5. package/src/jquery.sap.properties.js +1 -1
  6. package/src/jquery.sap.resources.js +1 -1
  7. package/src/jquery.sap.script.js +1 -1
  8. package/src/jquery.sap.storage.js +3 -3
  9. package/src/sap/base/i18n/ResourceBundle.js +10 -0
  10. package/src/sap/base/security/URLListValidator.js +36 -3
  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/ui/Device.js +3 -3
  53. package/src/sap/ui/Global.js +4 -4
  54. package/src/sap/ui/base/Event.js +1 -1
  55. package/src/sap/ui/base/EventProvider.js +1 -1
  56. package/src/sap/ui/base/Interface.js +1 -1
  57. package/src/sap/ui/base/ManagedObject.js +2 -2
  58. package/src/sap/ui/base/ManagedObjectMetadata.js +1 -1
  59. package/src/sap/ui/base/Metadata.js +1 -1
  60. package/src/sap/ui/base/Object.js +1 -1
  61. package/src/sap/ui/base/ObjectPool.js +1 -1
  62. package/src/sap/ui/core/.library +50 -50
  63. package/src/sap/ui/core/BusyIndicator.js +1 -1
  64. package/src/sap/ui/core/BusyIndicatorUtils.js +22 -8
  65. package/src/sap/ui/core/Component.js +21 -4
  66. package/src/sap/ui/core/ComponentContainer.js +5 -1
  67. package/src/sap/ui/core/ComponentMetadata.js +1 -1
  68. package/src/sap/ui/core/ComponentSupport.js +1 -1
  69. package/src/sap/ui/core/Configuration.js +2 -15
  70. package/src/sap/ui/core/Control.js +20 -2
  71. package/src/sap/ui/core/Core.js +311 -413
  72. package/src/sap/ui/core/CustomData.js +1 -1
  73. package/src/sap/ui/core/DeclarativeSupport.js +1 -1
  74. package/src/sap/ui/core/Element.js +1 -1
  75. package/src/sap/ui/core/ElementMetadata.js +1 -1
  76. package/src/sap/ui/core/EnabledPropagator.js +1 -1
  77. package/src/sap/ui/core/EventBus.js +1 -1
  78. package/src/sap/ui/core/FocusHandler.js +12 -14
  79. package/src/sap/ui/core/Fragment.js +5 -2
  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/IconPool.js +7 -1
  84. package/src/sap/ui/core/IndicationColorSupport.js +1 -1
  85. package/src/sap/ui/core/IntervalTrigger.js +1 -1
  86. package/src/sap/ui/core/InvisibleMessage.js +1 -1
  87. package/src/sap/ui/core/InvisibleRenderer.js +1 -1
  88. package/src/sap/ui/core/InvisibleText.js +1 -1
  89. package/src/sap/ui/core/Item.js +1 -1
  90. package/src/sap/ui/core/LabelEnablement.js +1 -1
  91. package/src/sap/ui/core/LayoutData.js +1 -1
  92. package/src/sap/ui/core/ListItem.js +1 -1
  93. package/src/sap/ui/core/LocalBusyIndicator.js +1 -1
  94. package/src/sap/ui/core/Locale.js +1 -1
  95. package/src/sap/ui/core/LocaleData.js +1 -1
  96. package/src/sap/ui/core/Manifest.js +16 -83
  97. package/src/sap/ui/core/Message.js +1 -1
  98. package/src/sap/ui/core/Popup.js +14 -4
  99. package/src/sap/ui/core/RenderManager.js +111 -109
  100. package/src/sap/ui/core/Renderer.js +1 -1
  101. package/src/sap/ui/core/ResizeHandler.js +1 -1
  102. package/src/sap/ui/core/ScrollBar.js +1 -1
  103. package/src/sap/ui/core/SeparatorItem.js +1 -1
  104. package/src/sap/ui/core/ShortcutHintsMixin.js +20 -0
  105. package/src/sap/ui/core/Title.js +1 -1
  106. package/src/sap/ui/core/TooltipBase.js +1 -1
  107. package/src/sap/ui/core/UIArea.js +4 -2
  108. package/src/sap/ui/core/UIComponent.js +1 -1
  109. package/src/sap/ui/core/UIComponentMetadata.js +1 -1
  110. package/src/sap/ui/core/ValueStateSupport.js +1 -1
  111. package/src/sap/ui/core/VariantLayoutData.js +1 -1
  112. package/src/sap/ui/core/XMLComposite.js +1 -1
  113. package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
  114. package/src/sap/ui/core/_IconRegistry.js +11 -7
  115. package/src/sap/ui/core/_UrlResolver.js +139 -0
  116. package/src/sap/ui/core/date/CalendarUtils.js +87 -0
  117. package/src/sap/ui/core/date/CalendarWeekNumbering.js +73 -0
  118. package/src/sap/ui/core/date/UniversalDate.js +198 -74
  119. package/src/sap/ui/core/delegate/ItemNavigation.js +1 -1
  120. package/src/sap/ui/core/delegate/ScrollEnablement.js +1 -1
  121. package/src/sap/ui/core/dnd/DragDropBase.js +1 -1
  122. package/src/sap/ui/core/dnd/DragDropInfo.js +1 -1
  123. package/src/sap/ui/core/dnd/DragInfo.js +1 -1
  124. package/src/sap/ui/core/dnd/DropInfo.js +1 -1
  125. package/src/sap/ui/core/format/DateFormat.js +187 -57
  126. package/src/sap/ui/core/format/NumberFormat.js +64 -23
  127. package/src/sap/ui/core/format/TimezoneUtil.js +3 -1
  128. package/src/sap/ui/core/hyphenation/Hyphenation.js +1 -1
  129. package/src/sap/ui/core/library.js +19 -10
  130. package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
  131. package/src/sap/ui/core/message/Message.js +5 -3
  132. package/src/sap/ui/core/message/MessageManager.js +1 -1
  133. package/src/sap/ui/core/message/MessageParser.js +1 -1
  134. package/src/sap/ui/core/message/MessageProcessor.js +1 -1
  135. package/src/sap/ui/core/messagebundle_fr.properties +1 -1
  136. package/src/sap/ui/core/mvc/HTMLView.js +10 -2
  137. package/src/sap/ui/core/mvc/JSONView.js +1 -1
  138. package/src/sap/ui/core/mvc/JSView.js +1 -1
  139. package/src/sap/ui/core/mvc/TemplateView.js +1 -1
  140. package/src/sap/ui/core/mvc/View.js +1 -1
  141. package/src/sap/ui/core/mvc/XMLView.js +1 -1
  142. package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
  143. package/src/sap/ui/core/plugin/LessSupport.js +21 -20
  144. package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -1
  145. package/src/sap/ui/core/postmessage/Bus.js +1 -1
  146. package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
  147. package/src/sap/ui/core/search/OpenSearchProvider.js +1 -1
  148. package/src/sap/ui/core/search/SearchProvider.js +1 -1
  149. package/src/sap/ui/core/service/Service.js +1 -1
  150. package/src/sap/ui/core/service/ServiceFactory.js +1 -1
  151. package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
  152. package/src/sap/ui/core/support/Plugin.js +1 -1
  153. package/src/sap/ui/core/support/Support.js +1 -1
  154. package/src/sap/ui/core/support/plugins/ControlTree.js +1 -1
  155. package/src/sap/ui/core/support/plugins/Interaction.js +1 -1
  156. package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
  157. package/src/sap/ui/core/support/plugins/Performance.js +1 -1
  158. package/src/sap/ui/core/support/plugins/Selector.js +1 -1
  159. package/src/sap/ui/core/support/plugins/TechInfo.js +1 -1
  160. package/src/sap/ui/core/support/plugins/Trace.js +1 -1
  161. package/src/sap/ui/core/support/plugins/ViewInfo.js +1 -1
  162. package/src/sap/ui/core/themes/base/LocalBusyIndicator.less +3 -3
  163. package/src/sap/ui/core/themes/base/fonts/SAP-icons.woff2 +0 -0
  164. package/src/sap/ui/core/theming/Parameters.js +31 -12
  165. package/src/sap/ui/core/theming/ThemeHelper.js +56 -1
  166. package/src/sap/ui/core/theming/ThemeManager.js +817 -0
  167. package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
  168. package/src/sap/ui/core/tmpl/DOMElement.js +1 -1
  169. package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
  170. package/src/sap/ui/core/tmpl/Template.js +1 -1
  171. package/src/sap/ui/core/tmpl/TemplateControl.js +1 -1
  172. package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
  173. package/src/sap/ui/core/util/Export.js +1 -1
  174. package/src/sap/ui/core/util/ExportCell.js +1 -1
  175. package/src/sap/ui/core/util/ExportColumn.js +1 -1
  176. package/src/sap/ui/core/util/ExportRow.js +1 -1
  177. package/src/sap/ui/core/util/ExportType.js +1 -1
  178. package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
  179. package/src/sap/ui/core/util/File.js +1 -1
  180. package/src/sap/ui/core/util/LibraryInfo.js +1 -1
  181. package/src/sap/ui/core/util/MockServer.js +1 -1
  182. package/src/sap/ui/core/util/PasteHelper.js +1 -1
  183. package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +2 -1
  184. package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
  185. package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
  186. package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
  187. package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
  188. package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
  189. package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
  190. package/src/sap/ui/core/ws/ReadyState.js +1 -1
  191. package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
  192. package/src/sap/ui/core/ws/WebSocket.js +1 -1
  193. package/src/sap/ui/debug/ControlTree.js +1 -1
  194. package/src/sap/ui/debug/DebugEnv.js +1 -1
  195. package/src/sap/ui/debug/PropertyList.js +1 -1
  196. package/src/sap/ui/dom/getFirstEditableInput.js +25 -6
  197. package/src/sap/ui/dom/includeStylesheet.js +2 -2
  198. package/src/sap/ui/model/ClientListBinding.js +11 -4
  199. package/src/sap/ui/model/ClientModel.js +1 -1
  200. package/src/sap/ui/model/ClientTreeBinding.js +60 -5
  201. package/src/sap/ui/model/CompositeDataState.js +1 -1
  202. package/src/sap/ui/model/CompositeType.js +1 -1
  203. package/src/sap/ui/model/DataState.js +1 -1
  204. package/src/sap/ui/model/Filter.js +6 -6
  205. package/src/sap/ui/model/MetaModel.js +1 -1
  206. package/src/sap/ui/model/Model.js +1 -1
  207. package/src/sap/ui/model/SelectionModel.js +1 -1
  208. package/src/sap/ui/model/SimpleType.js +1 -1
  209. package/src/sap/ui/model/Sorter.js +6 -4
  210. package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
  211. package/src/sap/ui/model/TreeBinding.js +18 -0
  212. package/src/sap/ui/model/TreeBindingCompatibilityAdapter.js +1 -1
  213. package/src/sap/ui/model/Type.js +1 -1
  214. package/src/sap/ui/model/analytics/AnalyticalTreeBindingAdapter.js +28 -34
  215. package/src/sap/ui/model/controlhelper/TreeBindingProxy.js +590 -0
  216. package/src/sap/ui/model/json/JSONModel.js +1 -1
  217. package/src/sap/ui/model/message/MessageModel.js +1 -1
  218. package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
  219. package/src/sap/ui/model/odata/ODataMessageParser.js +1 -1
  220. package/src/sap/ui/model/odata/ODataMetaModel.js +1 -1
  221. package/src/sap/ui/model/odata/ODataMetadata.js +1 -1
  222. package/src/sap/ui/model/odata/ODataModel.js +1 -1
  223. package/src/sap/ui/model/odata/type/Boolean.js +1 -1
  224. package/src/sap/ui/model/odata/type/Byte.js +1 -1
  225. package/src/sap/ui/model/odata/type/Currency.js +1 -1
  226. package/src/sap/ui/model/odata/type/Date.js +1 -1
  227. package/src/sap/ui/model/odata/type/DateTime.js +1 -1
  228. package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
  229. package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
  230. package/src/sap/ui/model/odata/type/DateTimeWithTimezone.js +1 -1
  231. package/src/sap/ui/model/odata/type/Decimal.js +1 -1
  232. package/src/sap/ui/model/odata/type/Double.js +1 -1
  233. package/src/sap/ui/model/odata/type/Guid.js +1 -1
  234. package/src/sap/ui/model/odata/type/Int.js +1 -1
  235. package/src/sap/ui/model/odata/type/Int16.js +1 -1
  236. package/src/sap/ui/model/odata/type/Int32.js +1 -1
  237. package/src/sap/ui/model/odata/type/Int64.js +1 -1
  238. package/src/sap/ui/model/odata/type/ODataType.js +1 -1
  239. package/src/sap/ui/model/odata/type/Raw.js +1 -1
  240. package/src/sap/ui/model/odata/type/SByte.js +1 -1
  241. package/src/sap/ui/model/odata/type/Single.js +1 -1
  242. package/src/sap/ui/model/odata/type/Stream.js +1 -1
  243. package/src/sap/ui/model/odata/type/String.js +1 -1
  244. package/src/sap/ui/model/odata/type/Time.js +1 -1
  245. package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
  246. package/src/sap/ui/model/odata/type/Unit.js +1 -1
  247. package/src/sap/ui/model/odata/v2/BatchMode.js +2 -2
  248. package/src/sap/ui/model/odata/v2/Context.js +169 -4
  249. package/src/sap/ui/model/odata/v2/ODataAnnotations.js +1 -1
  250. package/src/sap/ui/model/odata/v2/ODataListBinding.js +39 -17
  251. package/src/sap/ui/model/odata/v2/ODataModel.js +219 -82
  252. package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +1 -1
  253. package/src/sap/ui/model/odata/v4/Context.js +35 -22
  254. package/src/sap/ui/model/odata/v4/ODataBinding.js +28 -22
  255. package/src/sap/ui/model/odata/v4/ODataContextBinding.js +6 -6
  256. package/src/sap/ui/model/odata/v4/ODataListBinding.js +111 -89
  257. package/src/sap/ui/model/odata/v4/ODataMetaModel.js +5 -4
  258. package/src/sap/ui/model/odata/v4/ODataModel.js +84 -46
  259. package/src/sap/ui/model/odata/v4/ODataParentBinding.js +19 -20
  260. package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +3 -3
  261. package/src/sap/ui/model/odata/v4/_AnnotationHelperExpression.js +1 -1
  262. package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +12 -5
  263. package/src/sap/ui/model/odata/v4/lib/_Cache.js +130 -64
  264. package/src/sap/ui/model/odata/v4/lib/_Helper.js +1 -1
  265. package/src/sap/ui/model/odata/v4/lib/_Requestor.js +56 -15
  266. package/src/sap/ui/model/resource/ResourceModel.js +1 -1
  267. package/src/sap/ui/model/type/Boolean.js +1 -1
  268. package/src/sap/ui/model/type/Currency.js +1 -1
  269. package/src/sap/ui/model/type/Date.js +1 -1
  270. package/src/sap/ui/model/type/DateInterval.js +1 -1
  271. package/src/sap/ui/model/type/DateTime.js +1 -1
  272. package/src/sap/ui/model/type/DateTimeInterval.js +1 -1
  273. package/src/sap/ui/model/type/FileSize.js +1 -1
  274. package/src/sap/ui/model/type/Float.js +1 -1
  275. package/src/sap/ui/model/type/Integer.js +1 -1
  276. package/src/sap/ui/model/type/String.js +1 -1
  277. package/src/sap/ui/model/type/Time.js +1 -1
  278. package/src/sap/ui/model/type/TimeInterval.js +1 -1
  279. package/src/sap/ui/model/type/Unit.js +1 -1
  280. package/src/sap/ui/model/xml/XMLModel.js +1 -1
  281. package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
  282. package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +1 -1
  283. package/src/sap/ui/test/TestUtils.js +20 -0
  284. package/src/sap/ui/test/generic/TestBase.js +1 -1
  285. package/src/sap/ui/thirdparty/mobify-carousel.js +0 -4
  286. package/src/sap/ui/util/Storage.js +1 -1
  287. package/src/sap/ui/core/ThemeCheck.js +0 -389
@@ -42,7 +42,7 @@ sap.ui.define([
42
42
  * @hideconstructor
43
43
  * @public
44
44
  * @since 1.39.0
45
- * @version 1.107.1
45
+ * @version 1.108.1
46
46
  */
47
47
  Context = BaseContext.extend("sap.ui.model.odata.v4.Context", {
48
48
  constructor : constructor
@@ -281,18 +281,17 @@ sap.ui.define([
281
281
  * immediately, even if {@link sap.ui.model.odata.v4.SubmitMode.API} is used, and the request is
282
282
  * only sent later when {@link sap.ui.model.odata.v4.ODataModel#submitBatch} is called. As long
283
283
  * as the context is deleted on the client, but not yet on the server, {@link #isDeleted}
284
- * returns <code>true</code>. The context must not be used, e.g. as a binding context, while
285
- * {@link #isDeleted} returns <code>true</code>.
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.
286
287
  *
287
288
  * Since 1.105 such a pending deletion is a pending change. It causes
288
289
  * <code>hasPendingChanges</code> to return <code>true</code> for the context, the binding
289
290
  * containing it, and the model. <code>resetChanges</code> in binding or model cancels the
290
291
  * deletion and restores the context.
291
292
  *
292
- * The usage of a group ID with {@link sap.ui.model.odata.v4.SubmitMode.API} is possible since
293
- * 1.105 - this is an experimental API.
294
- *
295
- * The context must not be used anymore after successful deletion.
293
+ * 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.
296
295
  *
297
296
  * @param {string} [sGroupId]
298
297
  * The group ID to be used for the DELETE request; if not specified, the update group ID for
@@ -300,7 +299,8 @@ sap.ui.define([
300
299
  * is transient (see {@link #isTransient}), no group ID needs to be specified. Since 1.98.0,
301
300
  * you can use <code>null</code> to prevent the DELETE request in case of a kept-alive context
302
301
  * that is not in the collection and of which you know that it does not exist on the server
303
- * anymore (for example, a draft after activation).
302
+ * anymore (for example, a draft after activation). Since 1.108.0 the usage of a group ID with
303
+ * {@link sap.ui.model.odata.v4.SubmitMode.API} is possible.
304
304
  * @param {boolean} [bDoNotRequestCount]
305
305
  * Whether not to request the new count from the server; useful in case of
306
306
  * {@link #replaceWith} where it is known that the count remains unchanged (since 1.97.0).
@@ -326,10 +326,7 @@ sap.ui.define([
326
326
  * <li> a <code>null</code> group ID is used with a context which is not
327
327
  * {@link #isKeepAlive kept alive},
328
328
  * <li> the context is already being deleted,
329
- * <li> the resulting group ID has {@link sap.ui.model.odata.v4.SubmitMode.API}, and the
330
- * context is {@link #isKeepAlive kept alive}, but not in the current collection,
331
- * <li> (only before 1.105) the resulting group ID has
332
- * {@link sap.ui.model.odata.v4.SubmitMode.API}
329
+ * <li> the context's binding is a list binding with data aggregation,
333
330
  * </ul>
334
331
  *
335
332
  * @function
@@ -351,6 +348,9 @@ sap.ui.define([
351
348
  if (this.isDeleted()) {
352
349
  throw new Error("Must not delete twice: " + this);
353
350
  }
351
+ if (this.oBinding.mParameters.$$aggregation) {
352
+ throw new Error("Cannot delete " + this + " when using data aggregation");
353
+ }
354
354
  this.oBinding.checkSuspended();
355
355
  if (this.isTransient()) {
356
356
  sGroupId = null;
@@ -382,7 +382,7 @@ sap.ui.define([
382
382
  if (oGroupLock) {
383
383
  oGroupLock.unlock(true);
384
384
  }
385
- oModel.reportError("Failed to delete " + that, sClassName, oError);
385
+ oModel.reportError("Failed to delete " + that.getPath(), sClassName, oError);
386
386
  that.bDeleted = false;
387
387
  that.checkUpdate();
388
388
  throw oError;
@@ -1100,10 +1100,15 @@ sap.ui.define([
1100
1100
  * @throws {Error} If
1101
1101
  * <ul>
1102
1102
  * <li> this context's root binding is suspended,
1103
- * <li> this context is transient (see {@link #isTransient}),
1104
- * <li> the given other context does not belong to the same list binding as this context, is
1105
- * already in the collection (has an index, see {@link #getIndex}), or is not
1106
- * {@link #isKeepAlive kept alive}.
1103
+ * <li> this context is {@link #isTransient transient},
1104
+ * <li> this context is {@link #isDeleted deleted},
1105
+ * <li> the given other context
1106
+ * <ul>
1107
+ * <li> does not belong to the same list binding as this context,
1108
+ * <li> is already in the collection (has an {@link #getIndex index}),
1109
+ * <li> is {@link #delete deleted},
1110
+ * <li> or is not {@link #isKeepAlive kept alive}.
1111
+ * </ul>
1107
1112
  * </ul>
1108
1113
  *
1109
1114
  * @public
@@ -1113,11 +1118,11 @@ sap.ui.define([
1113
1118
  var oElement;
1114
1119
 
1115
1120
  this.oBinding.checkSuspended();
1116
- if (this.isTransient()) {
1121
+ if (this.isTransient() || this.isDeleted()) {
1117
1122
  throw new Error("Cannot replace " + this);
1118
1123
  }
1119
1124
  if (oOtherContext.oBinding !== this.oBinding || oOtherContext.iIndex !== undefined
1120
- || !oOtherContext.bKeepAlive) {
1125
+ || oOtherContext.bDeleted || !oOtherContext.bKeepAlive) {
1121
1126
  throw new Error("Cannot replace with " + oOtherContext);
1122
1127
  }
1123
1128
  oElement = oOtherContext.getValue();
@@ -1338,6 +1343,10 @@ sap.ui.define([
1338
1343
  * effects fails. Use it to set fields affected by side effects to read-only before
1339
1344
  * {@link #requestSideEffects} and make them editable again when the promise resolves; in the
1340
1345
  * error handler, you can repeat the loading of side effects.
1346
+ * <br>
1347
+ * The promise is rejected if the call wants to refresh a whole list binding (via header
1348
+ * context or an absolute path), but the deletion of a row context (see {@link #delete}) is
1349
+ * pending with a different group ID.
1341
1350
  * @throws {Error} If
1342
1351
  * <ul>
1343
1352
  * <li> metadata has not yet been loaded
@@ -1352,6 +1361,7 @@ sap.ui.define([
1352
1361
  * {@link sap.ui.model.odata.v4.ODataPropertyBinding#getRootBinding}, and
1353
1362
  * {@link sap.ui.model.Binding#isSuspended})
1354
1363
  * <li> this context is transient (see {@link #isTransient})
1364
+ * <li> this context is deleted (see {@link #isDeleted})
1355
1365
  * <li> the binding of this context is unresolved (see
1356
1366
  * {@link sap.ui.model.Binding#isResolved})
1357
1367
  * <li> the group ID is invalid
@@ -1399,7 +1409,7 @@ sap.ui.define([
1399
1409
 
1400
1410
  this.oBinding.checkSuspended();
1401
1411
  _Helper.checkGroupId(sGroupId);
1402
- if (this.isTransient()) {
1412
+ if (this.isTransient() || this.isDeleted()) {
1403
1413
  throw new Error("Unsupported context: " + this);
1404
1414
  }
1405
1415
  if (!aPathExpressions || !aPathExpressions.length) {
@@ -1595,6 +1605,7 @@ sap.ui.define([
1595
1605
  * <li> this context is not a list binding's context,
1596
1606
  * <li> it is the header context,
1597
1607
  * <li> it is transient,
1608
+ * <li> it is deleted and <code>bKeepAlive</code> is <code>true</code>,
1598
1609
  * <li> it does not point to an entity,
1599
1610
  * <li> a key property of the entity has not been requested,
1600
1611
  * <li> the list binding is relative and does not use the <code>$$ownRequest</code>
@@ -1614,8 +1625,8 @@ sap.ui.define([
1614
1625
  Context.prototype.setKeepAlive = function (bKeepAlive, fnOnBeforeDestroy, bRequestMessages) {
1615
1626
  var that = this;
1616
1627
 
1617
- if (this.isTransient()) {
1618
- throw new Error("Unsupported transient context " + this);
1628
+ if (this.isTransient() || bKeepAlive && this.isDeleted()) {
1629
+ throw new Error("Unsupported context " + this);
1619
1630
  }
1620
1631
  _Helper.getPredicateIndex(this.sPath);
1621
1632
  this.oBinding.checkKeepAlive(this);
@@ -1776,6 +1787,8 @@ sap.ui.define([
1776
1787
  * @returns {sap.ui.base.SyncPromise} A sync promise that is resolved with either the result of
1777
1788
  * the processor or <code>undefined</code> if there is no cache for this binding, or if the
1778
1789
  * cache determination is not yet completed
1790
+ *
1791
+ * @private
1779
1792
  */
1780
1793
  Context.prototype.withCache = function (fnProcessor, sPath, bSync, bWithOrWithoutCache) {
1781
1794
  if (this.iIndex === iVIRTUAL) {
@@ -22,7 +22,7 @@ sap.ui.define([
22
22
  * Tells whether the first given change reason has precedence over the second one.
23
23
  *
24
24
  * @param {string} sChangeReason0 - A change reason
25
- * @param {string} sChangeReason1 - A change reason
25
+ * @param {string} sChangeReason1 - A change reason
26
26
  * @returns {boolean} Whether the first given change reason has precedence over the second one
27
27
  */
28
28
  function hasPrecedenceOver(sChangeReason0, sChangeReason1) {
@@ -281,10 +281,10 @@ sap.ui.define([
281
281
 
282
282
  this.mCacheQueryOptions = Object.assign({}, this.oModel.mUriParameters, mQueryOptions);
283
283
  if (this.bRelative) { // quasi-absolute or relative binding
284
- // The parent has to be persisted in order to know the key predicates when creating the
284
+ // The parent has to be persisted in order to know its key predicate when creating the
285
285
  // child's own cache. Context#isTransient cannot be used exclusively here because it
286
286
  // returns true for ODLB#create w/o bSkipRefresh, unless the refresh for the created
287
- // entity is resolved too - but the entity's key predicates are already available.
287
+ // entity is resolved too - but the entity's key predicate is already available.
288
288
  if (oContext.isTransient && oContext.isTransient()
289
289
  && oContext.getProperty("@$ui5.context.isTransient")) {
290
290
  // Note: sResourcePath is kind of preliminary here, no use to remember it!
@@ -649,7 +649,7 @@ sap.ui.define([
649
649
  };
650
650
 
651
651
  /**
652
- * Fires the 'dataReceived' event. It may be bubbled up to the model.
652
+ * Fires the 'dataReceived' event. The event is bubbled up to the model, unless it is prevented.
653
653
  *
654
654
  * @param {object} oParameters
655
655
  * The event parameters
@@ -658,7 +658,7 @@ sap.ui.define([
658
658
  * @param {Error} [oParameters.error]
659
659
  * The error object if a back-end request failed.
660
660
  * @param {boolean} [bPreventBubbling]
661
- * Whether the dataRequested and dataReceived events must not be bubbled up to the model
661
+ * Whether to prevent bubbling this event to the model
662
662
  *
663
663
  * @private
664
664
  */
@@ -669,10 +669,11 @@ sap.ui.define([
669
669
  };
670
670
 
671
671
  /**
672
- * Fires the 'dataRequested' event. It may be bubbled up to the model.
672
+ * Fires the 'dataRequested' event. The event is bubbled up to the model, unless it is
673
+ * prevented.
673
674
  *
674
675
  * @param {boolean} [bPreventBubbling]
675
- * Whether the dataRequested and dataReceived events must not be bubbled up to the model
676
+ * Whether to prevent bubbling this event to the model
676
677
  *
677
678
  * @private
678
679
  */
@@ -865,11 +866,10 @@ sap.ui.define([
865
866
  };
866
867
 
867
868
  /**
868
- * Returns <code>true</code> if this binding or its dependent bindings have pending property
869
- * changes or created entities which have not been sent successfully to the server. This
870
- * function does not take into account the deletion of entities (see
871
- * {@link sap.ui.model.odata.v4.Context#delete}) and the execution of OData operations
872
- * (see {@link sap.ui.model.odata.v4.ODataContextBinding#execute}). Since 1.98.0,
869
+ * Returns <code>true</code> if this binding or its dependent bindings have property changes,
870
+ * created entities, or entity deletions which have not been sent successfully to the server.
871
+ * This function does not take the execution of OData operations
872
+ * (see {@link sap.ui.model.odata.v4.ODataContextBinding#execute}) into account. Since 1.98.0,
873
873
  * {@link sap.ui.model.odata.v4.Context#isInactive inactive} contexts are ignored.
874
874
  *
875
875
  * Note: If this binding is relative, its data is cached separately for each parent context
@@ -884,8 +884,9 @@ sap.ui.define([
884
884
  * {@link sap.ui.model.odata.v4.ODataListBinding#refresh refresh} (since 1.100.0),
885
885
  * {@link sap.ui.model.odata.v4.ODataListBinding#sort sort}, or
886
886
  * {@link sap.ui.model.odata.v4.ODataListBinding#suspend suspend} because they relate to a
887
- * {@link sap.ui.model.odata.v4.Context#isKeepAlive kept-alive} context of this binding
888
- * (since 1.97.0). Since 1.98.0, {@link sap.ui.model.odata.v4.Context#isTransient transient}
887
+ * {@link sap.ui.model.odata.v4.Context#isKeepAlive kept-alive} (since 1.97.0) or
888
+ * {@link sap.ui.model.odata.v4.Context#delete deleted} (since 1.108.0) context of this
889
+ * binding. Since 1.98.0, {@link sap.ui.model.odata.v4.Context#isTransient transient}
889
890
  * contexts of a {@link #getRootBinding root binding} are treated as kept-alive by this flag.
890
891
  * Since 1.99.0, the same happens for bindings using the <code>$$ownRequest</code> parameter
891
892
  * (see {@link sap.ui.model.odata.v4.ODataModel#bindList}).
@@ -909,7 +910,7 @@ sap.ui.define([
909
910
  * The path (absolute or relative to this binding)
910
911
  * @param {boolean} [bIgnoreKeptAlive]
911
912
  * Whether to ignore changes which will not be lost by APIs like sort or filter because they
912
- * relate to a context which is kept alive.
913
+ * relate to a deleted context or a context which is kept alive
913
914
  * @returns {boolean}
914
915
  * <code>true</code> if there are pending changes for the path
915
916
  *
@@ -952,7 +953,7 @@ sap.ui.define([
952
953
  *
953
954
  * @param {boolean} [bIgnoreKeptAlive]
954
955
  * Whether to ignore changes which will not be lost by APIs like sort or filter because they
955
- * relate to a context which is kept alive.
956
+ * relate to a deleted context or a context which is kept alive
956
957
  * @returns {boolean}
957
958
  * <code>true</code> if this binding has pending changes
958
959
  *
@@ -1074,15 +1075,20 @@ sap.ui.define([
1074
1075
  * @throws {Error} If
1075
1076
  * <ul>
1076
1077
  * <li> the given group ID is invalid,
1077
- * <li> there are pending changes that cannot be ignored,
1078
1078
  * <li> refresh on this binding is not supported,
1079
1079
  * <li> a group ID different from the binding's group ID is specified for a suspended
1080
1080
  * binding,
1081
- * <li> or a value of type boolean is given.
1082
- * </ul> Since 1.100.0, pending changes are ignored if they relate to a
1083
- * {@link sap.ui.model.odata.v4.Context#isKeepAlive kept-alive} context of this binding, and
1084
- * {@link sap.ui.model.odata.v4.Context#isTransient transient} contexts of a
1085
- * {@link #getRootBinding root binding} do not count as pending changes.
1081
+ * <li> a value of type <code>boolean</code> is given,
1082
+ * <li> or there are pending changes that cannot be ignored.
1083
+ * </ul>
1084
+ * The following pending changes are ignored:
1085
+ * <ul>
1086
+ * <li> changes relating to a {@link sap.ui.model.odata.v4.Context#isKeepAlive kept-alive}
1087
+ * context of this binding (since 1.97.0),
1088
+ * <li> {@link sap.ui.model.odata.v4.Context#isTransient transient} contexts of a
1089
+ * {@link #getRootBinding root binding} (since 1.98.0),
1090
+ * <li> {@link sap.ui.model.odata.v4.Context#delete deleted} contexts (since 1.108.0).
1091
+ * </ul>
1086
1092
  *
1087
1093
  * @public
1088
1094
  * @see sap.ui.model.Binding#refresh
@@ -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.107.1
77
+ * @version 1.108.1
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
@@ -207,7 +207,7 @@ sap.ui.define([
207
207
  * A lock for the group ID to be used for the DELETE request; w/o a lock, no DELETE is sent.
208
208
  * For a transient entity, the lock is ignored (use NULL)!
209
209
  * @param {string} sEditUrl
210
- * The entity's edit URL to be used for the DELETE request; w/o a lock, this is mostly
210
+ * The entity's edit URL to be used for the DELETE request; w/o a lock, this is mostly
211
211
  * ignored.
212
212
  * @param {sap.ui.model.odata.v4.Context} _oContext - ignored
213
213
  * @param {object} [_oETagEntity] - ignored
@@ -269,7 +269,7 @@ sap.ui.define([
269
269
  if (oReturnValueContext) {
270
270
  oEmptyPathParentBinding.oReturnValueContext = oReturnValueContext;
271
271
  }
272
- that._fireChange({reason : ChangeReason.Insert});
272
+ that._fireChange({reason : ChangeReason.Add});
273
273
  }
274
274
  throw oError;
275
275
  });
@@ -930,7 +930,7 @@ sap.ui.define([
930
930
  * control's property bindings use the return value context as binding context.
931
931
  * @throws {Error} If
932
932
  * <ul>
933
- * <li>the binding's root binding is suspended,
933
+ * <li> the binding's root binding is suspended,
934
934
  * <li> the given group ID is invalid,
935
935
  * <li> the binding is not a deferred operation binding (see
936
936
  * {@link sap.ui.model.odata.v4.ODataContextBinding}),
@@ -1101,7 +1101,7 @@ sap.ui.define([
1101
1101
  oEntity = oContext.getValue();
1102
1102
 
1103
1103
  // avoid problems in fetchCanonicalPath (leading to an ODM#reportError)
1104
- if (oEntity && _Helper.getPrivateAnnotation(oEntity, "predicate")) {
1104
+ if (oEntity && _Helper.hasPrivateAnnotation(oEntity, "predicate")) {
1105
1105
  oPromise = oContext.fetchCanonicalPath();
1106
1106
  oPromise.caught();
1107
1107
  if (oPromise.getResult() === sCanonicalPath) {
@@ -1182,7 +1182,7 @@ sap.ui.define([
1182
1182
  * @returns {string}
1183
1183
  * The resolved path with replaced transient predicates
1184
1184
  * @throws {Error}
1185
- * If an entity related to a segment with a transient predicate does not have key predicates
1185
+ * If an entity related to a segment with a transient predicate does not have a key predicate
1186
1186
  *
1187
1187
  * @private
1188
1188
  */