@openui5/sap.ui.core 1.116.0 → 1.117.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 (474) hide show
  1. package/.eslintrc.json +1 -22
  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/Event.js +4 -4
  9. package/src/sap/base/Eventing.js +5 -6
  10. package/src/sap/base/config/MemoryConfigurationProvider.js +10 -1
  11. package/src/sap/base/config.js +3 -2
  12. package/src/sap/base/i18n/Formatting.js +30 -32
  13. package/src/sap/base/i18n/LanguageTag.js +2 -2
  14. package/src/sap/base/i18n/Localization.js +19 -20
  15. package/src/sap/base/i18n/date/CalendarType.js +1 -1
  16. package/src/sap/base/i18n/date/CalendarWeekNumbering.js +1 -1
  17. package/src/sap/base/i18n/date/TimezoneUtils.js +1 -1
  18. package/src/sap/base/util/JSTokenizer.js +1 -1
  19. package/src/sap/base/util/fetch.js +4 -4
  20. package/src/sap/base/util/mixedFetch.js +2 -2
  21. package/src/sap/base/util/restricted/_CancelablePromise.js +1 -1
  22. package/src/sap/base/util/restricted/_castArray.js +1 -1
  23. package/src/sap/base/util/restricted/_compact.js +1 -1
  24. package/src/sap/base/util/restricted/_curry.js +1 -1
  25. package/src/sap/base/util/restricted/_debounce.js +1 -1
  26. package/src/sap/base/util/restricted/_difference.js +1 -1
  27. package/src/sap/base/util/restricted/_differenceBy.js +1 -1
  28. package/src/sap/base/util/restricted/_differenceWith.js +1 -1
  29. package/src/sap/base/util/restricted/_flatMap.js +1 -1
  30. package/src/sap/base/util/restricted/_flatMapDeep.js +1 -1
  31. package/src/sap/base/util/restricted/_flatMapDepth.js +1 -1
  32. package/src/sap/base/util/restricted/_flatten.js +1 -1
  33. package/src/sap/base/util/restricted/_flattenDeep.js +1 -1
  34. package/src/sap/base/util/restricted/_flattenDepth.js +1 -1
  35. package/src/sap/base/util/restricted/_intersection.js +1 -1
  36. package/src/sap/base/util/restricted/_intersectionBy.js +1 -1
  37. package/src/sap/base/util/restricted/_intersectionWith.js +1 -1
  38. package/src/sap/base/util/restricted/_isEqual.js +1 -1
  39. package/src/sap/base/util/restricted/_isEqualWith.js +1 -1
  40. package/src/sap/base/util/restricted/_isNil.js +1 -1
  41. package/src/sap/base/util/restricted/_max.js +1 -1
  42. package/src/sap/base/util/restricted/_merge.js +1 -1
  43. package/src/sap/base/util/restricted/_mergeWith.js +1 -1
  44. package/src/sap/base/util/restricted/_min.js +1 -1
  45. package/src/sap/base/util/restricted/_omit.js +1 -1
  46. package/src/sap/base/util/restricted/_pick.js +1 -1
  47. package/src/sap/base/util/restricted/_pickBy.js +1 -1
  48. package/src/sap/base/util/restricted/_throttle.js +1 -1
  49. package/src/sap/base/util/restricted/_toArray.js +1 -1
  50. package/src/sap/base/util/restricted/_union.js +1 -1
  51. package/src/sap/base/util/restricted/_unionBy.js +1 -1
  52. package/src/sap/base/util/restricted/_unionWith.js +1 -1
  53. package/src/sap/base/util/restricted/_uniq.js +1 -1
  54. package/src/sap/base/util/restricted/_uniqBy.js +1 -1
  55. package/src/sap/base/util/restricted/_uniqWith.js +1 -1
  56. package/src/sap/base/util/restricted/_without.js +1 -1
  57. package/src/sap/base/util/restricted/_xor.js +1 -1
  58. package/src/sap/base/util/restricted/_xorBy.js +1 -1
  59. package/src/sap/base/util/restricted/_xorWith.js +1 -1
  60. package/src/sap/base/util/restricted/_zipObject.js +1 -1
  61. package/src/sap/base/util/restricted/_zipObjectDeep.js +1 -1
  62. package/src/sap/base/util/syncFetch.js +2 -2
  63. package/src/sap/ui/Device.js +3 -3
  64. package/src/sap/ui/Global.js +4 -4
  65. package/src/sap/ui/base/Event.js +6 -4
  66. package/src/sap/ui/base/EventProvider.js +1 -1
  67. package/src/sap/ui/base/Interface.js +1 -1
  68. package/src/sap/ui/base/ManagedObject.js +2 -4
  69. package/src/sap/ui/base/ManagedObjectMetadata.js +4 -6
  70. package/src/sap/ui/base/Metadata.js +1 -1
  71. package/src/sap/ui/base/Object.js +1 -1
  72. package/src/sap/ui/base/ObjectPool.js +1 -1
  73. package/src/sap/ui/core/.library +2 -2
  74. package/src/sap/ui/core/AnimationMode.js +1 -1
  75. package/src/sap/ui/core/BusyIndicator.js +1 -1
  76. package/src/sap/ui/core/Component.js +1 -1
  77. package/src/sap/ui/core/ComponentContainer.js +1 -1
  78. package/src/sap/ui/core/ComponentMetadata.js +1 -1
  79. package/src/sap/ui/core/ComponentSupport.js +1 -1
  80. package/src/sap/ui/core/ConfigTest.js +17 -0
  81. package/src/sap/ui/core/Configuration.js +2 -14
  82. package/src/sap/ui/core/Control.js +4 -1
  83. package/src/sap/ui/core/ControlBehavior.js +2 -2
  84. package/src/sap/ui/core/Core.js +3 -1
  85. package/src/sap/ui/core/CustomData.js +1 -1
  86. package/src/sap/ui/core/DeclarativeSupport.js +1 -1
  87. package/src/sap/ui/core/Element.js +1 -1
  88. package/src/sap/ui/core/ElementMetadata.js +2 -4
  89. package/src/sap/ui/core/EnabledPropagator.js +1 -1
  90. package/src/sap/ui/core/EventBus.js +1 -1
  91. package/src/sap/ui/core/Fragment.js +1 -1
  92. package/src/sap/ui/core/HTML.js +1 -1
  93. package/src/sap/ui/core/History.js +1 -1
  94. package/src/sap/ui/core/Icon.js +1 -1
  95. package/src/sap/ui/core/IconPool.js +1 -2
  96. package/src/sap/ui/core/IndicationColorSupport.js +1 -1
  97. package/src/sap/ui/core/IntervalTrigger.js +1 -1
  98. package/src/sap/ui/core/InvisibleMessage.js +1 -1
  99. package/src/sap/ui/core/InvisibleRenderer.js +1 -1
  100. package/src/sap/ui/core/InvisibleText.js +1 -1
  101. package/src/sap/ui/core/Item.js +1 -1
  102. package/src/sap/ui/core/LabelEnablement.js +1 -1
  103. package/src/sap/ui/core/LayoutData.js +1 -1
  104. package/src/sap/ui/core/Lib.js +17 -16
  105. package/src/sap/ui/core/ListItem.js +1 -1
  106. package/src/sap/ui/core/LocalBusyIndicator.js +1 -1
  107. package/src/sap/ui/core/Locale.js +5 -2
  108. package/src/sap/ui/core/LocaleData.js +12 -4
  109. package/src/sap/ui/core/Manifest.js +5 -5
  110. package/src/sap/ui/core/Message.js +1 -1
  111. package/src/sap/ui/core/Popup.js +37 -50
  112. package/src/sap/ui/core/RenderManager.js +1 -1
  113. package/src/sap/ui/core/Renderer.js +1 -1
  114. package/src/sap/ui/core/Rendering.js +1 -1
  115. package/src/sap/ui/core/ResizeHandler.js +1 -1
  116. package/src/sap/ui/core/ScrollBar.js +1 -1
  117. package/src/sap/ui/core/SeparatorItem.js +1 -1
  118. package/src/sap/ui/core/Shortcut.js +11 -9
  119. package/src/sap/ui/core/StaticArea.js +1 -1
  120. package/src/sap/ui/core/Theming.js +16 -9
  121. package/src/sap/ui/core/Title.js +1 -1
  122. package/src/sap/ui/core/TooltipBase.js +1 -1
  123. package/src/sap/ui/core/UIArea.js +1 -1
  124. package/src/sap/ui/core/UIComponent.js +1 -1
  125. package/src/sap/ui/core/UIComponentMetadata.js +1 -1
  126. package/src/sap/ui/core/ValueStateSupport.js +1 -1
  127. package/src/sap/ui/core/VariantLayoutData.js +1 -1
  128. package/src/sap/ui/core/XMLComposite.js +1 -1
  129. package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
  130. package/src/sap/ui/core/XMLTemplateProcessor.js +27 -5
  131. package/src/sap/ui/core/_IconRegistry.js +82 -11
  132. package/src/sap/ui/core/boot/_bootConfig.js +137 -0
  133. package/src/sap/ui/core/boot/_runBoot.js +16 -0
  134. package/src/sap/ui/core/boot/initDOM.js +96 -0
  135. package/src/sap/ui/core/boot/loadCalendar.js +50 -0
  136. package/src/sap/ui/core/boot/loadManifest.js +55 -0
  137. package/src/sap/ui/core/boot/loadModules.js +80 -0
  138. package/src/sap/ui/core/boot/manifest.json +11 -0
  139. package/src/sap/ui/core/boot/onInit.js +44 -0
  140. package/src/sap/ui/core/boot.js +107 -0
  141. package/src/sap/ui/core/date/UI5Date.js +9 -3
  142. package/src/sap/ui/core/delegate/ItemNavigation.js +1 -1
  143. package/src/sap/ui/core/delegate/ScrollEnablement.js +1 -1
  144. package/src/sap/ui/core/dnd/DragDropBase.js +1 -1
  145. package/src/sap/ui/core/dnd/DragDropInfo.js +1 -1
  146. package/src/sap/ui/core/dnd/DragInfo.js +1 -1
  147. package/src/sap/ui/core/dnd/DropInfo.js +1 -1
  148. package/src/sap/ui/core/format/DateFormat.js +13 -12
  149. package/src/sap/ui/core/format/TimezoneUtil.js +1 -1
  150. package/src/sap/ui/core/hyphenation/Hyphenation.js +1 -1
  151. package/src/sap/ui/core/library.js +32 -6
  152. package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
  153. package/src/sap/ui/core/message/Message.js +1 -1
  154. package/src/sap/ui/core/message/MessageManager.js +1 -1
  155. package/src/sap/ui/core/message/MessageMixin.js +6 -5
  156. package/src/sap/ui/core/message/MessageParser.js +1 -1
  157. package/src/sap/ui/core/message/MessageProcessor.js +1 -1
  158. package/src/sap/ui/core/messagebundle_ar.properties +57 -55
  159. package/src/sap/ui/core/messagebundle_bg.properties +57 -55
  160. package/src/sap/ui/core/messagebundle_ca.properties +30 -28
  161. package/src/sap/ui/core/messagebundle_cs.properties +43 -41
  162. package/src/sap/ui/core/messagebundle_cy.properties +58 -56
  163. package/src/sap/ui/core/messagebundle_da.properties +56 -54
  164. package/src/sap/ui/core/messagebundle_de.properties +58 -56
  165. package/src/sap/ui/core/messagebundle_el.properties +47 -45
  166. package/src/sap/ui/core/messagebundle_en.properties +58 -56
  167. package/src/sap/ui/core/messagebundle_en_GB.properties +58 -56
  168. package/src/sap/ui/core/messagebundle_en_US_sappsd.properties +2 -0
  169. package/src/sap/ui/core/messagebundle_en_US_saprigi.properties +2 -0
  170. package/src/sap/ui/core/messagebundle_en_US_saptrc.properties +3 -0
  171. package/src/sap/ui/core/messagebundle_es.properties +47 -45
  172. package/src/sap/ui/core/messagebundle_es_MX.properties +57 -55
  173. package/src/sap/ui/core/messagebundle_et.properties +54 -52
  174. package/src/sap/ui/core/messagebundle_fi.properties +51 -49
  175. package/src/sap/ui/core/messagebundle_fr.properties +36 -34
  176. package/src/sap/ui/core/messagebundle_fr_CA.properties +21 -19
  177. package/src/sap/ui/core/messagebundle_hi.properties +42 -40
  178. package/src/sap/ui/core/messagebundle_hr.properties +57 -55
  179. package/src/sap/ui/core/messagebundle_hu.properties +58 -56
  180. package/src/sap/ui/core/messagebundle_id.properties +58 -56
  181. package/src/sap/ui/core/messagebundle_it.properties +59 -57
  182. package/src/sap/ui/core/messagebundle_iw.properties +58 -56
  183. package/src/sap/ui/core/messagebundle_ja.properties +50 -48
  184. package/src/sap/ui/core/messagebundle_kk.properties +43 -41
  185. package/src/sap/ui/core/messagebundle_ko.properties +19 -17
  186. package/src/sap/ui/core/messagebundle_lt.properties +58 -56
  187. package/src/sap/ui/core/messagebundle_lv.properties +58 -56
  188. package/src/sap/ui/core/messagebundle_ms.properties +58 -56
  189. package/src/sap/ui/core/messagebundle_nl.properties +57 -55
  190. package/src/sap/ui/core/messagebundle_no.properties +55 -53
  191. package/src/sap/ui/core/messagebundle_pl.properties +55 -53
  192. package/src/sap/ui/core/messagebundle_pt.properties +57 -55
  193. package/src/sap/ui/core/messagebundle_pt_PT.properties +57 -55
  194. package/src/sap/ui/core/messagebundle_ro.properties +58 -56
  195. package/src/sap/ui/core/messagebundle_ru.properties +57 -55
  196. package/src/sap/ui/core/messagebundle_sh.properties +58 -56
  197. package/src/sap/ui/core/messagebundle_sk.properties +57 -55
  198. package/src/sap/ui/core/messagebundle_sl.properties +58 -56
  199. package/src/sap/ui/core/messagebundle_sv.properties +54 -52
  200. package/src/sap/ui/core/messagebundle_th.properties +17 -15
  201. package/src/sap/ui/core/messagebundle_tr.properties +58 -56
  202. package/src/sap/ui/core/messagebundle_uk.properties +58 -56
  203. package/src/sap/ui/core/messagebundle_vi.properties +58 -56
  204. package/src/sap/ui/core/messagebundle_zh_CN.properties +58 -56
  205. package/src/sap/ui/core/messagebundle_zh_TW.properties +58 -56
  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 +1 -1
  211. package/src/sap/ui/core/mvc/XMLView.js +14 -2
  212. package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
  213. package/src/sap/ui/core/plugin/LessSupport.js +1 -1
  214. package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -1
  215. package/src/sap/ui/core/postmessage/Bus.js +1 -1
  216. package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
  217. package/src/sap/ui/core/rules/Misc.support.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 +7 -4
  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 +2 -2
  234. package/src/sap/ui/core/theming/Parameters.js +0 -5
  235. package/src/sap/ui/core/theming/ThemeManager.js +3 -4
  236. package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
  237. package/src/sap/ui/core/tmpl/DOMElement.js +1 -1
  238. package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
  239. package/src/sap/ui/core/tmpl/Template.js +1 -1
  240. package/src/sap/ui/core/tmpl/TemplateControl.js +1 -1
  241. package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
  242. package/src/sap/ui/core/util/Export.js +1 -1
  243. package/src/sap/ui/core/util/ExportCell.js +1 -1
  244. package/src/sap/ui/core/util/ExportColumn.js +1 -1
  245. package/src/sap/ui/core/util/ExportRow.js +1 -1
  246. package/src/sap/ui/core/util/ExportType.js +1 -1
  247. package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
  248. package/src/sap/ui/core/util/File.js +1 -1
  249. package/src/sap/ui/core/util/LibraryInfo.js +1 -1
  250. package/src/sap/ui/core/util/MockServer.js +4 -5
  251. package/src/sap/ui/core/util/PasteHelper.js +1 -1
  252. package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
  253. package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
  254. package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
  255. package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
  256. package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
  257. package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
  258. package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
  259. package/src/sap/ui/core/ws/ReadyState.js +1 -1
  260. package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
  261. package/src/sap/ui/core/ws/WebSocket.js +1 -1
  262. package/src/sap/ui/debug/ControlTree.js +1 -1
  263. package/src/sap/ui/debug/DebugEnv.js +1 -1
  264. package/src/sap/ui/debug/PropertyList.js +1 -1
  265. package/src/sap/ui/model/ClientModel.js +1 -1
  266. package/src/sap/ui/model/CompositeDataState.js +1 -1
  267. package/src/sap/ui/model/CompositeType.js +1 -1
  268. package/src/sap/ui/model/DataState.js +1 -1
  269. package/src/sap/ui/model/MetaModel.js +1 -1
  270. package/src/sap/ui/model/Model.js +1 -1
  271. package/src/sap/ui/model/SelectionModel.js +1 -1
  272. package/src/sap/ui/model/SimpleType.js +1 -1
  273. package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
  274. package/src/sap/ui/model/Type.js +1 -1
  275. package/src/sap/ui/model/analytics/AnalyticalBinding.js +166 -79
  276. package/src/sap/ui/model/analytics/AnalyticalVersionInfo.js +4 -3
  277. package/src/sap/ui/model/analytics/BatchResponseCollector.js +2 -2
  278. package/src/sap/ui/model/analytics/ODataModelAdapter.js +14 -27
  279. package/src/sap/ui/model/analytics/odata4analytics.js +6 -12
  280. package/src/sap/ui/model/base/ManagedObjectModel.js +2 -1
  281. package/src/sap/ui/model/json/JSONModel.js +6 -1
  282. package/src/sap/ui/model/message/MessageModel.js +1 -1
  283. package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
  284. package/src/sap/ui/model/odata/ODataMessageParser.js +1 -1
  285. package/src/sap/ui/model/odata/ODataMetaModel.js +191 -5
  286. package/src/sap/ui/model/odata/ODataMetadata.js +38 -4
  287. package/src/sap/ui/model/odata/ODataModel.js +1 -1
  288. package/src/sap/ui/model/odata/type/Boolean.js +1 -1
  289. package/src/sap/ui/model/odata/type/Byte.js +1 -1
  290. package/src/sap/ui/model/odata/type/Currency.js +1 -1
  291. package/src/sap/ui/model/odata/type/Date.js +1 -1
  292. package/src/sap/ui/model/odata/type/DateTime.js +1 -1
  293. package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
  294. package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
  295. package/src/sap/ui/model/odata/type/DateTimeWithTimezone.js +1 -1
  296. package/src/sap/ui/model/odata/type/Decimal.js +1 -1
  297. package/src/sap/ui/model/odata/type/Double.js +1 -1
  298. package/src/sap/ui/model/odata/type/Guid.js +1 -1
  299. package/src/sap/ui/model/odata/type/Int.js +1 -1
  300. package/src/sap/ui/model/odata/type/Int16.js +1 -1
  301. package/src/sap/ui/model/odata/type/Int32.js +1 -1
  302. package/src/sap/ui/model/odata/type/Int64.js +1 -1
  303. package/src/sap/ui/model/odata/type/ODataType.js +1 -1
  304. package/src/sap/ui/model/odata/type/Raw.js +1 -1
  305. package/src/sap/ui/model/odata/type/SByte.js +1 -1
  306. package/src/sap/ui/model/odata/type/Single.js +1 -1
  307. package/src/sap/ui/model/odata/type/Stream.js +1 -1
  308. package/src/sap/ui/model/odata/type/String.js +1 -1
  309. package/src/sap/ui/model/odata/type/Time.js +1 -1
  310. package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
  311. package/src/sap/ui/model/odata/type/Unit.js +1 -1
  312. package/src/sap/ui/model/odata/v2/Context.js +1 -1
  313. package/src/sap/ui/model/odata/v2/ODataAnnotations.js +1 -1
  314. package/src/sap/ui/model/odata/v2/ODataModel.js +2 -2
  315. package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +1 -1
  316. package/src/sap/ui/model/odata/v4/AnnotationHelper.js +4 -4
  317. package/src/sap/ui/model/odata/v4/Context.js +33 -30
  318. package/src/sap/ui/model/odata/v4/ODataBinding.js +18 -14
  319. package/src/sap/ui/model/odata/v4/ODataContextBinding.js +12 -12
  320. package/src/sap/ui/model/odata/v4/ODataListBinding.js +110 -43
  321. package/src/sap/ui/model/odata/v4/ODataMetaModel.js +20 -28
  322. package/src/sap/ui/model/odata/v4/ODataModel.js +40 -31
  323. package/src/sap/ui/model/odata/v4/ODataParentBinding.js +8 -6
  324. package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +14 -14
  325. package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +93 -9
  326. package/src/sap/ui/model/odata/v4/lib/_AggregationHelper.js +25 -27
  327. package/src/sap/ui/model/odata/v4/lib/_Cache.js +58 -195
  328. package/src/sap/ui/model/odata/v4/lib/_Helper.js +157 -0
  329. package/src/sap/ui/model/odata/v4/lib/_MetadataRequestor.js +14 -5
  330. package/src/sap/ui/model/odata/v4/lib/_Requestor.js +27 -15
  331. package/src/sap/ui/model/resource/ResourceModel.js +1 -1
  332. package/src/sap/ui/model/type/Boolean.js +1 -1
  333. package/src/sap/ui/model/type/Currency.js +1 -1
  334. package/src/sap/ui/model/type/Date.js +1 -1
  335. package/src/sap/ui/model/type/DateInterval.js +1 -1
  336. package/src/sap/ui/model/type/DateTime.js +1 -1
  337. package/src/sap/ui/model/type/DateTimeInterval.js +1 -1
  338. package/src/sap/ui/model/type/FileSize.js +1 -1
  339. package/src/sap/ui/model/type/Float.js +1 -1
  340. package/src/sap/ui/model/type/Integer.js +1 -1
  341. package/src/sap/ui/model/type/String.js +1 -1
  342. package/src/sap/ui/model/type/Time.js +1 -1
  343. package/src/sap/ui/model/type/TimeInterval.js +1 -1
  344. package/src/sap/ui/model/type/Unit.js +1 -1
  345. package/src/sap/ui/model/xml/XMLModel.js +1 -1
  346. package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
  347. package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +1 -1
  348. package/src/sap/ui/test/TestUtils.js +1 -1
  349. package/src/sap/ui/test/generic/TestBase.js +1 -1
  350. package/src/sap/ui/test/generic/_EnforceSemanticRendering.js +1 -3
  351. package/src/sap/ui/test/matchers/_Visitor.js +6 -1
  352. package/src/sap/ui/test/starter/_setupAndStart.js +2 -5
  353. package/src/sap/ui/thirdparty/qunit-2.js +9 -3
  354. package/src/sap/ui/util/Mobile.js +10 -6
  355. package/src/sap/ui/util/Storage.js +1 -1
  356. package/src/sap-ui-boot.js +23 -6
  357. package/src/ui5-boot.js +50 -0
  358. package/src/ui5loader-autoconfig.js +147 -75
  359. package/src/ui5loader.js +320 -360
  360. package/test/sap/ui/core/Device.js +1 -1
  361. package/test/sap/ui/core/demokit/sample/OpaAction/applicationUnderTest/view/Main.view.xml +1 -0
  362. package/test/sap/ui/core/demokit/sample/ViewTemplate/types/Template.controller.js +2 -2
  363. package/test/sap/ui/core/demokit/sample/odata/v2/AutoExpand/AutoExpand.view.xml +24 -5
  364. package/test/sap/ui/core/demokit/sample/odata/v4/Ancestry/Main.view.xml +24 -6
  365. package/test/sap/ui/core/demokit/sample/odata/v4/DataAggregation/DataAggregation.view.xml +20 -5
  366. package/test/sap/ui/core/demokit/sample/odata/v4/DataAggregation/Opa.qunit.js +2 -1
  367. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/Opa.qunit.js +2 -1
  368. package/test/sap/ui/core/demokit/sample/odata/v4/Draft/Opa.qunit.js +2 -1
  369. package/test/sap/ui/core/demokit/sample/odata/v4/FieldGroups/Opa.qunit.js +2 -1
  370. package/test/sap/ui/core/demokit/sample/odata/v4/FlatDataAggregation/FlatDataAggregation.view.xml +4 -1
  371. package/test/sap/ui/core/demokit/sample/odata/v4/FlexibleColumnLayout/Opa.qunit.js +2 -1
  372. package/test/sap/ui/core/demokit/sample/odata/v4/GridTable/GridTable.view.xml +12 -3
  373. package/test/sap/ui/core/demokit/sample/odata/v4/LateProperties/Main.controller.js +2 -1
  374. package/test/sap/ui/core/demokit/sample/odata/v4/LateProperties/Opa.OptimisticBatch.qunit.js +2 -1
  375. package/test/sap/ui/core/demokit/sample/odata/v4/LateProperties/Opa.qunit.js +2 -1
  376. package/test/sap/ui/core/demokit/sample/odata/v4/ListBinding/Opa.qunit.js +2 -1
  377. package/test/sap/ui/core/demokit/sample/odata/v4/ListBindingTemplate/Opa.qunit.js +2 -1
  378. package/test/sap/ui/core/demokit/sample/odata/v4/MultipleInlineCreationRowsGrid/Opa.qunit.js +2 -1
  379. package/test/sap/ui/core/demokit/sample/odata/v4/Products/Opa.qunit.js +2 -1
  380. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/RecursiveHierarchy.view.xml +26 -8
  381. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/data/metadata.xml +4 -0
  382. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrderTP100_V2/Opa.qunit.js +2 -1
  383. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrderTP100_V4/Opa.qunit.js +2 -1
  384. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/Opa.qunit.js +2 -1
  385. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/pages/Main.js +18 -0
  386. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/tests/Create.js +10 -6
  387. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersRTATest/Opa.qunit.js +2 -1
  388. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersRTATest/manifest.json +18 -0
  389. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersTemplate/Opa.qunit.js +2 -1
  390. package/test/sap/ui/core/demokit/sample/odata/v4/ServerDrivenPaging/Opa.qunit.js +2 -1
  391. package/test/sap/ui/core/demokit/sample/odata/v4/ServerDrivenPaging/pages/Main.js +4 -1
  392. package/test/sap/ui/core/demokit/sample/odata/v4/Sticky/Opa.qunit.js +2 -1
  393. package/test/sap/ui/core/demokit/tutorial/odatav4/06/webapp/controller/App.controller.js +1 -6
  394. package/test/sap/ui/core/demokit/tutorial/odatav4/06/webapp/localService/mockserver.js +1 -0
  395. package/test/sap/ui/core/demokit/tutorial/odatav4/07/webapp/controller/App.controller.js +1 -6
  396. package/test/sap/ui/core/demokit/tutorial/odatav4/07/webapp/localService/mockserver.js +1 -0
  397. package/test/sap/ui/core/demokit/tutorial/odatav4/08/webapp/controller/App.controller.js +1 -6
  398. package/test/sap/ui/core/demokit/tutorial/odatav4/08/webapp/localService/mockserver.js +1 -0
  399. package/test/sap/ui/core/demokit/tutorial/odatav4/09/webapp/controller/App.controller.js +1 -6
  400. package/test/sap/ui/core/demokit/tutorial/odatav4/09/webapp/localService/mockserver.js +1 -0
  401. package/test/sap/ui/core/demokit/tutorial/odatav4/10/webapp/controller/App.controller.js +3 -8
  402. package/test/sap/ui/core/demokit/tutorial/odatav4/10/webapp/localService/mockserver.js +1 -0
  403. package/test/sap/ui/core/demokit/tutorial/odatav4/11/webapp/controller/App.controller.js +3 -8
  404. package/test/sap/ui/core/demokit/tutorial/odatav4/11/webapp/localService/mockserver.js +1 -0
  405. package/test/sap/ui/core/qunit/IconPool.qunit.js +53 -4
  406. package/test/sap/ui/core/qunit/ManagedObjectModel.qunit.js +43 -5
  407. package/test/sap/ui/core/qunit/Theming.qunit.js +19 -1
  408. package/test/sap/ui/core/qunit/analytics/AnalyticalBinding.qunit.js +510 -185
  409. package/test/sap/ui/core/qunit/analytics/ODataModelAdapter.qunit.js +80 -10
  410. package/test/sap/ui/core/qunit/analytics/odata4analytics.qunit.js +20 -29
  411. package/test/sap/ui/core/qunit/base/Config_cascade.qunit.js +18 -1
  412. package/test/sap/ui/core/qunit/base/i18n/Formatting.qunit.js +15 -13
  413. package/test/sap/ui/core/qunit/base/i18n/Localization.qunit.js +35 -12
  414. package/test/sap/ui/core/qunit/bootstrap/Configuration.main.qunit.js +11 -0
  415. package/test/sap/ui/core/qunit/bootstrap/Configuration.qunit.html +4 -3
  416. package/test/sap/ui/core/qunit/bootstrap/Configuration.qunit.js +71 -35
  417. package/test/sap/ui/core/qunit/bootstrap/_checkCoreAndLibraryBooted.qunit.js +1 -1
  418. package/test/sap/ui/core/qunit/component/Models.qunit.js +5 -2
  419. package/test/sap/ui/core/qunit/generic/EnforceSemanticRendering.qunit.js +2 -2
  420. package/test/sap/ui/core/qunit/generic/SettersContextReturn.qunit.js +2 -2
  421. package/test/sap/ui/core/qunit/generic/legacy/SettersContextReturn.qunit.js +2 -2
  422. package/test/sap/ui/core/qunit/i18n/LocaleData.qunit.js +48 -13
  423. package/test/sap/ui/core/qunit/i18n/UI5Date.qunit.js +16 -4
  424. package/test/sap/ui/core/qunit/i18n/UniversalDate.qunit.js +73 -103
  425. package/test/sap/ui/core/qunit/i18n/UniversalDateUtils.qunit.js +34 -39
  426. package/test/sap/ui/core/qunit/internal/BeforePush.ODataV4.js +28 -0
  427. package/test/sap/ui/core/qunit/internal/BeforePush.html +1 -0
  428. package/test/sap/ui/core/qunit/internal/BeforePush.js +15 -0
  429. package/test/sap/ui/core/qunit/internal/performance/ExpressionParser.performance.qunit.js +1 -0
  430. package/test/sap/ui/core/qunit/loader/asyncMode.qunit.js +2 -2
  431. package/test/sap/ui/core/qunit/loader/asyncMode_unavoidablySync.qunit.js +1 -1
  432. package/test/sap/ui/core/qunit/loader/testsuite.loader.qunit.js +0 -3
  433. package/test/sap/ui/core/qunit/model/FAR_CUSTOMER_LINE_ITEMS.metadata.xml +2 -0
  434. package/test/sap/ui/core/qunit/mvc/XMLTemplateProcessorRequireXML.qunit.js +51 -0
  435. package/test/sap/ui/core/qunit/mvc/testdata/Async.view.xml +1 -1
  436. package/test/sap/ui/core/qunit/mvc/testdata/AsyncTypedView.js +5 -1
  437. package/test/sap/ui/core/qunit/odata/ODataMetadataNoFakeService.qunit.js +68 -4
  438. package/test/sap/ui/core/qunit/odata/v2/ODataModel.integration.qunit.js +232 -37
  439. package/test/sap/ui/core/qunit/odata/v2/V2ODataModel.qunit.js +1 -1
  440. package/test/sap/ui/core/qunit/odata/v4/Context.qunit.js +10 -5
  441. package/test/sap/ui/core/qunit/odata/v4/ODataBinding.qunit.js +33 -1
  442. package/test/sap/ui/core/qunit/odata/v4/ODataContextBinding.qunit.js +5 -3
  443. package/test/sap/ui/core/qunit/odata/v4/ODataListBinding.qunit.js +186 -65
  444. package/test/sap/ui/core/qunit/odata/v4/ODataMetaModel.qunit.js +17 -66
  445. package/test/sap/ui/core/qunit/odata/v4/ODataModel.integration.qunit.js +528 -60
  446. package/test/sap/ui/core/qunit/odata/v4/ODataModel.qunit.js +48 -8
  447. package/test/sap/ui/core/qunit/odata/v4/ODataModel.realOData.qunit.js +0 -3
  448. package/test/sap/ui/core/qunit/odata/v4/data/metadata.json +2 -1
  449. package/test/sap/ui/core/qunit/odata/v4/data/metadata.xml +4 -0
  450. package/test/sap/ui/core/qunit/odata/v4/data/metadata_special_cases.xml +2 -0
  451. package/test/sap/ui/core/qunit/odata/v4/lib/_AggregationCache.qunit.js +148 -1
  452. package/test/sap/ui/core/qunit/odata/v4/lib/_AggregationHelper.qunit.js +24 -11
  453. package/test/sap/ui/core/qunit/odata/v4/lib/_Cache.qunit.js +196 -404
  454. package/test/sap/ui/core/qunit/odata/v4/lib/_Helper.qunit.js +201 -2
  455. package/test/sap/ui/core/qunit/odata/v4/lib/_MetadataRequestor.qunit.js +7 -3
  456. package/test/sap/ui/core/qunit/odata/v4/lib/_Requestor.qunit.js +21 -4
  457. package/test/sap/ui/core/qunit/opa/matchers/LabelFor.qunit.js +4 -2
  458. package/test/sap/ui/core/qunit/opa/matchers/_Busy.qunit.js +129 -2
  459. package/test/sap/ui/core/qunit/opa/matchers/_Editable.qunit.js +5 -1
  460. package/test/sap/ui/core/qunit/routing/fixture/Async1.view.xml +1 -1
  461. package/test/sap/ui/core/qunit/testdata/xml-require/helper/Formatter.js +7 -4
  462. package/test/sap/ui/core/qunit/testdata/xml-require/view/XMLTemplateProcessorAsync_require_in_html.view.xml +36 -0
  463. package/test/sap/ui/core/qunit/testsuites/testsuite.theming.qunit.js +2 -2
  464. package/test/sap/ui/core/qunit/types/DateFormatTimezones.qunit.js +1222 -1201
  465. package/test/sap/ui/core/qunit/util/Popup.qunit.js +7 -11
  466. package/test/sap/ui/core/qunit/util/XMLPreprocessor.qunit.js +3 -1
  467. package/test/sap/ui/core/qunit/util/jQuery.sap.Version.qunit.js +3 -0
  468. package/test/sap/ui/core/qunit/util/reflection/BaseTreeModifier.qunit.js +1 -1
  469. package/test/sap/ui/core/relnotes/changes-1.116.json +1 -12
  470. package/test/sap/ui/core/relnotes/changes-1.117.json +127 -0
  471. package/test/sap/ui/core/visual/images/HyphenationPlayground/windows/1600x1200/chrome/horizon/ltr/cozy/19_thirdParty_language_sl.ref.lnk +1 -1
  472. package/ui5.yaml +165 -0
  473. package/src/sap/ui/core/util/MockServerAnnotationsHandler.js +0 -45
  474. /package/test/sap/ui/core/qunit/bootstrap/{GlobalConfigurationSettings.js → Configuration.beforeBootstrap.qunit.js} +0 -0
@@ -87,7 +87,8 @@ sap.ui.define([
87
87
  sharedRequests : true,
88
88
  supportReferences : true,
89
89
  synchronizationMode : true,
90
- updateGroupId : true
90
+ updateGroupId : true,
91
+ withCredentials : true
91
92
  },
92
93
  // system query options allowed in mParameters
93
94
  aSystemQueryOptions = ["$apply", "$count", "$expand", "$filter", "$orderby", "$search",
@@ -174,12 +175,16 @@ sap.ui.define([
174
175
  * (Controls synchronization between different bindings which refer to the same data for
175
176
  * the case data changes in one binding. Must be set to 'None' which means bindings are
176
177
  * not synchronized at all; all other values are not supported and lead to an error.)
177
- * <b>deprecated:</b> As of version 1.110.0, this parameter is optional; see also
178
+ * <b>deprecated:</b> As of Version 1.110.0, this parameter is optional; see also
178
179
  * {@link topic:648e360fa22d46248ca783dc6eb44531 Data Reuse}
179
180
  * @param {string} [mParameters.updateGroupId]
180
181
  * The group ID that is used for update requests. If no update group ID is specified,
181
182
  * <code>mParameters.groupId</code> is used. Valid update group IDs are
182
183
  * <code>undefined</code>, '$auto', '$direct' or an application group ID.
184
+ * @param {boolean} [mParameters.withCredentials]
185
+ * Whether the XMLHttpRequest is called with <code>withCredentials</code>, so that user
186
+ * credentials are included in cross-origin requests by the browser (@experimental as of
187
+ * Version 1.117.0)
183
188
  * @throws {Error} If an unsupported synchronization mode is given, if the given service
184
189
  * root URL does not end with a forward slash, if an unsupported parameter is given, if
185
190
  * OData system query options or parameter aliases are specified as parameters, if an
@@ -228,7 +233,7 @@ sap.ui.define([
228
233
  * @extends sap.ui.model.Model
229
234
  * @public
230
235
  * @since 1.37.0
231
- * @version 1.116.0
236
+ * @version 1.117.1
232
237
  */
233
238
  ODataModel = Model.extend("sap.ui.model.odata.v4.ODataModel",
234
239
  /** @lends sap.ui.model.odata.v4.ODataModel.prototype */{
@@ -347,7 +352,8 @@ sap.ui.define([
347
352
  mQueryParams = Object.assign({}, mUriParameters, mParameters.metadataUrlParams);
348
353
  this.oMetaModel = new ODataMetaModel(
349
354
  _MetadataRequestor.create(this.mMetadataHeaders, sODataVersion,
350
- mParameters.ignoreAnnotationsFromMetadata, mQueryParams),
355
+ mParameters.ignoreAnnotationsFromMetadata, mQueryParams,
356
+ mParameters.withCredentials),
351
357
  this.sServiceUrl + "$metadata", mParameters.annotationURI, this,
352
358
  mParameters.supportReferences, mQueryParams["sap-language"]);
353
359
  this.oInterface = {
@@ -377,7 +383,7 @@ sap.ui.define([
377
383
  }
378
384
  };
379
385
  this.oRequestor = _Requestor.create(this.sServiceUrl, this.oInterface, this.mHeaders,
380
- mUriParameters, sODataVersion);
386
+ mUriParameters, sODataVersion, mParameters.withCredentials);
381
387
  this.changeHttpHeaders(mParameters.httpHeaders);
382
388
  this.bEarlyRequests = mParameters.earlyRequests;
383
389
  if (this.bEarlyRequests) {
@@ -457,12 +463,12 @@ sap.ui.define([
457
463
  * the entity is also available.
458
464
  *
459
465
  * @param {sap.ui.base.Event} oEvent
460
- * @param {object} oEvent.getParameters()
461
- * @param {object} [oEvent.getParameters().data]
466
+ * @param {object} oEvent.getParameters
467
+ * @param {object} [oEvent.getParameters.data]
462
468
  * An empty data object if a back-end request succeeds
463
- * @param {Error} [oEvent.getParameters().error]
469
+ * @param {Error} [oEvent.getParameters.error]
464
470
  * The error object if a back-end request failed.
465
- * @param {string} [oEvent.getParameters().path]
471
+ * @param {string} [oEvent.getParameters.path]
466
472
  * The absolute path to the entity which caused the event. The path is only provided for
467
473
  * additional property requests; for other requests it is <code>undefined</code>.
468
474
  *
@@ -499,8 +505,8 @@ sap.ui.define([
499
505
  * </ul>
500
506
  *
501
507
  * @param {sap.ui.base.Event} oEvent
502
- * @param {object} oEvent.getParameters()
503
- * @param {string} [oEvent.getParameters().path]
508
+ * @param {object} oEvent.getParameters
509
+ * @param {string} [oEvent.getParameters.path]
504
510
  * The absolute path to the entity which caused the event. The path is only provided for
505
511
  * additional property requests; for other requests it is <code>undefined</code>.
506
512
  *
@@ -528,20 +534,20 @@ sap.ui.define([
528
534
  * not user input.
529
535
  *
530
536
  * @param {sap.ui.base.Event} oEvent
531
- * @param {object} oEvent.getParameters()
532
- * @param {sap.ui.model.Context} [oEvent.getParameters().context]
537
+ * @param {object} oEvent.getParameters
538
+ * @param {sap.ui.model.Context} [oEvent.getParameters.context]
533
539
  * The property binding's {@link sap.ui.model.Binding#getContext context}, if available
534
- * @param {string} oEvent.getParameters().path
540
+ * @param {string} oEvent.getParameters.path
535
541
  * The property binding's {@link sap.ui.model.Binding#getPath path}
536
- * @param {Promise} [oEvent.getParameters().promise]
542
+ * @param {Promise<void>} [oEvent.getParameters.promise]
537
543
  * A promise on the outcome of the PATCH request, much like
538
544
  * {@link sap.ui.model.odata.v4.Context#setProperty} provides it for
539
545
  * <code>bRetry === true</code>; missing in case there is no PATCH
540
- * @param {sap.ui.model.ChangeReason} oEvent.getParameters().reason
546
+ * @param {sap.ui.model.ChangeReason} oEvent.getParameters.reason
541
547
  * The reason for the property change: always <code>sap.ui.model.ChangeReason.Binding</code>
542
- * @param {string} oEvent.getParameters().resolvedPath
548
+ * @param {string} oEvent.getParameters.resolvedPath
543
549
  * The property binding's {@link sap.ui.model.Binding#getResolvedPath resolved path}
544
- * @param {any} oEvent.getParameters().value
550
+ * @param {any} oEvent.getParameters.value
545
551
  * The property binding's new
546
552
  * {@link sap.ui.model.odata.v4.ODataPropertyBinding#getValue value}
547
553
  *
@@ -1500,10 +1506,10 @@ sap.ui.define([
1500
1506
  * If <code>true</code>, deletion fails if the entity does not exist (HTTP status code 404 or
1501
1507
  * 412 due to the <code>If-Match: *</code> header); otherwise we assume that it has already
1502
1508
  * been deleted by someone else and report success
1503
- * @returns {Promise}
1504
- * A promise resolving when the delete succeeded, and rejecting with an instance of Error
1505
- * otherwise. In the latter case the HTTP status code of the response is given in the error's
1506
- * property <code>status</code>.
1509
+ * @returns {Promise<void>}
1510
+ * A promise which is resolved without a defined result when the delete succeeded, or rejected
1511
+ * with an instance of Error otherwise. In the latter case the HTTP status code of the
1512
+ * response is given in the error's property <code>status</code>.
1507
1513
  * @throws {Error} If
1508
1514
  * <ul>
1509
1515
  * <li> the path does not start with a '/',
@@ -1545,6 +1551,7 @@ sap.ui.define([
1545
1551
  ).catch(function (oError) {
1546
1552
  if (bRejectIfNotFound
1547
1553
  || !(oError.status === 404 || bInAllBindings && oError.status === 412)) {
1554
+ that.reportError("Failed to delete " + aResults[0], sClassName, oError);
1548
1555
  throw oError;
1549
1556
  } // else: map 404/412 to 204
1550
1557
  }).then(function () {
@@ -2521,7 +2528,7 @@ sap.ui.define([
2521
2528
  *
2522
2529
  * @param {sap.ui.model.odata.v4.Context} oEntityContext
2523
2530
  * A context in this model which must point to a non-contained OData entity
2524
- * @returns {Promise}
2531
+ * @returns {Promise<string>}
2525
2532
  * A promise which is resolved with the canonical path (e.g. "/SalesOrderList('0500000000')")
2526
2533
  * in case of success, or rejected with an instance of <code>Error</code> in case of failure,
2527
2534
  * e.g. when the given context does not point to an entity
@@ -2566,8 +2573,8 @@ sap.ui.define([
2566
2573
  * The absolute paths to request side effects for; each path must not start with the fully
2567
2574
  * qualified container name.
2568
2575
  * @returns {sap.ui.base.SyncPromise|undefined}
2569
- * A promise resolving without a defined result, or rejecting with an error if loading of side
2570
- * effects fails, or <code>undefined</code> if there is nothing to do
2576
+ * A promise which is resolved without a defined result, or rejected with an error if loading
2577
+ * of side effects fails, or <code>undefined</code> if there is nothing to do
2571
2578
  *
2572
2579
  * @private
2573
2580
  */
@@ -2785,8 +2792,8 @@ sap.ui.define([
2785
2792
  *
2786
2793
  * @param {string} sGroupId
2787
2794
  * A valid group ID as specified in {@link sap.ui.model.odata.v4.ODataModel}.
2788
- * @returns {Promise<undefined>}
2789
- * A promise on the outcome of the HTTP request resolving with <code>undefined</code>; it is
2795
+ * @returns {Promise<void>}
2796
+ * A promise which is resolved without a defined result on the outcome of the HTTP request, or
2790
2797
  * rejected with an error if the batch request itself fails
2791
2798
  * @throws {Error}
2792
2799
  * If the given group ID is not a valid group ID or has
@@ -2853,10 +2860,12 @@ sap.ui.define([
2853
2860
  /**
2854
2861
  * Cleans up the optimistic batch cache to a given point in time.
2855
2862
  *
2856
- * @param {Date} [dOlderThan] The point in time from which on older cache entries are deleted.
2857
- * If not supplied, all optimistic batch entries are deleted.
2858
- * @returns {Promise} A promise resolving without a defined result, or rejecting with an error
2859
- * if deletion fails.
2863
+ * @param {Date} [dOlderThan]
2864
+ * The point in time from which on older cache entries are deleted. If not supplied, all
2865
+ * optimistic batch entries are deleted.
2866
+ * @returns {Promise<void>}
2867
+ * A promise which is resolved without a defined result, or rejected with an error if
2868
+ * deletion fails.
2860
2869
  *
2861
2870
  * @experimental As of version 1.102.0
2862
2871
  * @private
@@ -459,9 +459,10 @@ sap.ui.define([
459
459
  * parent context changed.
460
460
  *
461
461
  * @returns {sap.ui.base.SyncPromise}
462
- * A promise resolving without a defined result when the check is finished, or rejecting in
463
- * case of an error
464
- * @throws {Error} If called with parameters
462
+ * A promise which is resolved without a defined result when the check is finished, or
463
+ * rejected in case of an error
464
+ * @throws {Error}
465
+ * If called with parameters
465
466
  *
466
467
  * @private
467
468
  */
@@ -1257,8 +1258,8 @@ sap.ui.define([
1257
1258
  * The context for which to request side effects; if this parameter is missing or if it is the
1258
1259
  * header context of a list binding, the whole binding is affected
1259
1260
  * @returns {sap.ui.base.SyncPromise}
1260
- * A promise resolving without a defined result, or rejecting with an error if loading of side
1261
- * effects fails
1261
+ * A promise which is resolved without a defined result, or rejected with an error if loading
1262
+ * of side effects fails
1262
1263
  * @throws {Error}
1263
1264
  * If this binding does not use own data service requests or if the binding's root binding is
1264
1265
  * suspended and the given group ID is not the binding's group
@@ -1412,7 +1413,8 @@ sap.ui.define([
1412
1413
  * Note: Some API calls are not allowed as long as the binding is in suspended mode, hence the
1413
1414
  * returned promise can be used to get the point in time when these APIs can be called again.
1414
1415
  *
1415
- * @returns {Promise} A promise which is resolved when the binding is resumed.
1416
+ * @returns {Promise<void>}
1417
+ * A promise which is resolved without a defined result when the binding is resumed.
1416
1418
  * @throws {Error}
1417
1419
  * If this binding is relative to an {@link sap.ui.model.odata.v4.Context} or if it is an
1418
1420
  * operation binding or if it is not suspended
@@ -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.116.0
45
+ * @version 1.117.1
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,8 +117,8 @@ sap.ui.define([
117
117
  * change reason as parameter.
118
118
  *
119
119
  * @param {sap.ui.base.Event} oEvent
120
- * @param {object} oEvent.getParameters()
121
- * @param {sap.ui.model.ChangeReason} oEvent.getParameters().reason
120
+ * @param {object} oEvent.getParameters
121
+ * @param {sap.ui.model.ChangeReason} oEvent.getParameters.reason
122
122
  * The reason for the 'change' event could be
123
123
  * <ul>
124
124
  * <li> {@link sap.ui.model.ChangeReason.Change Change} when the binding is initialized,
@@ -154,10 +154,10 @@ sap.ui.define([
154
154
  * 'error' event parameter.
155
155
  *
156
156
  * @param {sap.ui.base.Event} oEvent
157
- * @param {object} oEvent.getParameters()
158
- * @param {object} [oEvent.getParameters().data]
157
+ * @param {object} oEvent.getParameters
158
+ * @param {object} [oEvent.getParameters.data]
159
159
  * An empty data object if a back-end request succeeds
160
- * @param {Error} [oEvent.getParameters().error] The error object if a back-end request failed.
160
+ * @param {Error} [oEvent.getParameters.error] The error object if a back-end request failed.
161
161
  * If there are multiple failed back-end requests, the error of the first one is provided.
162
162
  *
163
163
  * @event sap.ui.model.odata.v4.ODataPropertyBinding#dataReceived
@@ -234,10 +234,10 @@ sap.ui.define([
234
234
  * @param {any} [vValue]
235
235
  * The new value obtained from the cache, see {@link #onChange}
236
236
  * @returns {sap.ui.base.SyncPromise}
237
- * A promise resolving without a defined result when the check is finished, or rejecting in
238
- * case of an error. If the cache is no longer the active cache when the response arrives,
239
- * that response is ignored almost silently (that is, with a canceled error) and the value
240
- * remains unchanged.
237
+ * A promise which is resolved without a defined result when the check is finished, or
238
+ * rejected in case of an error. If the cache is no longer the active cache when the response
239
+ * arrives, that response is ignored almost silently (that is, with a canceled error) and the
240
+ * value remains unchanged.
241
241
  *
242
242
  * @private
243
243
  * @see sap.ui.model.PropertyBinding#checkDataState
@@ -539,8 +539,8 @@ sap.ui.define([
539
539
  * Requests the value of the property binding.
540
540
  *
541
541
  * @returns {Promise<any|undefined>}
542
- * A promise resolving with the resulting value or <code>undefined</code> if it could not be
543
- * determined, or rejecting in case of an error
542
+ * A promise resolved with the resulting value or <code>undefined</code> if it could not be
543
+ * determined, or rejected in case of an error
544
544
  *
545
545
  * @public
546
546
  * @since 1.69
@@ -560,7 +560,7 @@ sap.ui.define([
560
560
  * The value of the parameter <code>autoExpandSelect</code> for value list models created by
561
561
  * this method. If the value list model is this binding's model, this flag has no effect.
562
562
  * Supported since 1.68.0
563
- * @returns {Promise}
563
+ * @returns {Promise<Object<object>>}
564
564
  * See {@link sap.ui.model.odata.v4.ODataMetaModel#requestValueListInfo}
565
565
  * @throws {Error}
566
566
  * If the binding is unresolved (see {@link sap.ui.model.Binding#isResolved})
@@ -581,7 +581,7 @@ sap.ui.define([
581
581
  /**
582
582
  * Determines which type of value list exists for this property.
583
583
  *
584
- * @returns {Promise}
584
+ * @returns {Promise<sap.ui.model.odata.v4.ValueListType>}
585
585
  * A promise that is resolved with the type of the value list. It is rejected if the property
586
586
  * cannot be found in the metadata.
587
587
  * @throws {Error}
@@ -117,8 +117,11 @@ sap.ui.define([
117
117
  }
118
118
  }
119
119
 
120
- // make _AggregationCache a _Cache
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
+ _AggregationCache.prototype.addTransientCollection = null;
124
+ _AggregationCache.prototype.getAndRemoveValue = null;
122
125
 
123
126
  /**
124
127
  * Copies the given elements from a cache read into <code>this.aElements</code>.
@@ -149,7 +152,8 @@ sap.ui.define([
149
152
  function addElement(oElement, i) {
150
153
  var oOldElement = aElements[iOffset + i],
151
154
  oKeptElement,
152
- sPredicate = _Helper.getPrivateAnnotation(oElement, "predicate");
155
+ sPredicate = _Helper.getPrivateAnnotation(oElement, "transientPredicate")
156
+ || _Helper.getPrivateAnnotation(oElement, "predicate");
153
157
 
154
158
  if (oOldElement) { // check before overwriting
155
159
  if (oOldElement === oElement) {
@@ -295,6 +299,86 @@ sap.ui.define([
295
299
  return iCount;
296
300
  };
297
301
 
302
+ /**
303
+ * Creates a transient node with the parent identified by "@$ui5.node.parent", inserts it into
304
+ * the hierarchy at the appropriate position, and adds a POST request to the batch
305
+ * group with the given ID. See {@link sap.ui.model.odata.v4.lib._Cache#create} for more.
306
+ *
307
+ * @param {sap.ui.model.odata.v4.lib._GroupLock} oGroupLock
308
+ * A lock for the group ID
309
+ * @param {sap.ui.base.SyncPromise} oPostPathPromise
310
+ * A SyncPromise resolving with the resource path for the POST request
311
+ * @param {string} sPath
312
+ * The collection's path within the cache (as used by change listeners)
313
+ * @param {string} sTransientPredicate
314
+ * A (temporary) key predicate for the transient entity: "($uid=...)"
315
+ * @param {object} oEntityData
316
+ * The initial entity data, already cloned and cleaned of client-side annotations (except
317
+ * "@$ui5.node.parent" which contains the OData ID string needed for "...@odata.bind")
318
+ * @param {boolean} bAtEndOfCreated
319
+ * Whether the newly created entity should be inserted after previously created entities or at
320
+ * the front of the list.
321
+ * @param {function} fnErrorCallback
322
+ * A function which is called with an error object each time a POST request for the create
323
+ * fails
324
+ * @param {function} fnSubmitCallback
325
+ * A function which is called just before a POST request for the create is sent
326
+ * @returns {sap.ui.base.SyncPromise}
327
+ * A promise which is resolved with the created entity when the POST request has been
328
+ * successfully sent and the entity has been marked as non-transient
329
+ * @throws {Error}
330
+ * If <code>this.oAggregation.expandTo > 1</code>, <code>bAtEndOfCreated</code> is set, or the
331
+ * parent is collapsed
332
+ *
333
+ * @public
334
+ */
335
+ // @override sap.ui.model.odata.v4.lib._Cache#create
336
+ _AggregationCache.prototype.create = function (oGroupLock, oPostPathPromise, sPath,
337
+ sTransientPredicate, oEntityData, bAtEndOfCreated, fnErrorCallback, fnSubmitCallback) {
338
+ if (this.oAggregation.expandTo > 1) {
339
+ throw new Error("Unsupported expandTo: " + this.oAggregation.expandTo);
340
+ }
341
+ if (bAtEndOfCreated) {
342
+ throw new Error("Unsupported bAtEndOfCreated");
343
+ }
344
+
345
+ const aElements = this.aElements;
346
+ const sParentPath = oEntityData["@$ui5.node.parent"];
347
+ const sParentPredicate = sParentPath.slice(sParentPath.indexOf("("));
348
+ const oParentNode = aElements.$byPredicate[sParentPredicate];
349
+ if (oParentNode["@$ui5.node.isExpanded"] === false) {
350
+ throw new Error("Unsupported collapsed parent: " + sParentPath);
351
+ }
352
+
353
+ let oCache = _Helper.getPrivateAnnotation(oParentNode, "cache");
354
+ if (!oCache) {
355
+ oCache = this.createGroupLevelCache(oParentNode);
356
+ _Helper.setPrivateAnnotation(oParentNode, "cache", oCache);
357
+ _Helper.updateAll(this.mChangeListeners, sParentPredicate, oParentNode,
358
+ {"@$ui5.node.isExpanded" : true}); // not a leaf anymore
359
+ }
360
+
361
+ delete oEntityData["@$ui5.node.parent"];
362
+ const oResult = oCache.create(oGroupLock, oPostPathPromise, sPath, sTransientPredicate,
363
+ oEntityData, bAtEndOfCreated, fnErrorCallback, fnSubmitCallback);
364
+ // add @odata.bind to POST body only
365
+ _Helper.getPrivateAnnotation(oEntityData, "postBody")
366
+ [this.oAggregation.$ParentNavigationProperty + "@odata.bind"] = sParentPath;
367
+ oEntityData["@$ui5.node.level"] = oParentNode["@$ui5.node.level"] + 1;
368
+
369
+ const iIndex = aElements.indexOf(oParentNode) + 1;
370
+ aElements.splice(iIndex, 0, null); // create a gap
371
+ this.addElements(oEntityData, iIndex, oCache, 0);
372
+ aElements.$count += 1;
373
+
374
+ return oResult.then(function () {
375
+ aElements.$byPredicate[_Helper.getPrivateAnnotation(oEntityData, "predicate")]
376
+ = oEntityData;
377
+
378
+ return oEntityData;
379
+ });
380
+ };
381
+
298
382
  /**
299
383
  * Creates a cache for the children (next group level or leaves) of the given group node.
300
384
  * Creates the first level cache if there is no group node.
@@ -795,9 +879,9 @@ sap.ui.define([
795
879
  * @param {sap.ui.model.odata.v4.lib._GroupLock} oGroupLock
796
880
  * A lock for the group to associate the requests with;
797
881
  * {@link sap.ui.model.odata.v4.lib._GroupLock#getUnlockedCopy} still needs to be called!
798
- * @returns {Promise|undefined}
799
- * A promise resolving without a defined result when the read is finished, or rejecting in
800
- * case of an error; <code>undefined</code> in case no count needs to be read
882
+ * @returns {Promise<void>|undefined}
883
+ * A promise which is resolved without a defined result when the read is finished, or
884
+ * rejected in case of an error; <code>undefined</code> in case no count needs to be read
801
885
  * @throws {Error}
802
886
  * If group ID is '$cached'. The error has a property <code>$cached = true</code>
803
887
  *
@@ -848,8 +932,8 @@ sap.ui.define([
848
932
  * The function is called just before a back-end request is sent.
849
933
  * If no back-end request is needed, the function is not called.
850
934
  * @returns {sap.ui.base.SyncPromise}
851
- * A promise resolving without a defined result when the read is finished, or rejecting in
852
- * case of an error
935
+ * A promise which is resolved without a defined result when the read is finished, or
936
+ * rejected in case of an error
853
937
  * @throws {Error} If given index or length is less than 0
854
938
  *
855
939
  * @private
@@ -920,8 +1004,8 @@ sap.ui.define([
920
1004
  * The function is called just before a back-end request is sent.
921
1005
  * If no back-end request is needed, the function is not called.
922
1006
  * @returns {sap.ui.base.SyncPromise}
923
- * A promise resolving without a defined result when the read is finished, or rejecting in
924
- * case of an error
1007
+ * A promise which is resolved without a defined result when the read is finished, or
1008
+ * rejected in case of an error
925
1009
  * @throws {Error} If index of placeholder at start of gap is less than 0, or if end of gap is
926
1010
  * before start
927
1011
  *
@@ -407,9 +407,9 @@ sap.ui.define([
407
407
  * Builds the value for a "$apply" system query option based on the given data aggregation
408
408
  * information for a recursive hierarchy. If no query options are given, only a symbolic
409
409
  * "$apply" is constructed to avoid timing issues with metadata. The property paths for
410
- * DistanceFromRootProperty, DrillStateProperty, LimitedDescendantCountProperty, and
411
- * NodeProperty are stored at <code>oAggregation</code> using a "$" prefix (if not already
412
- * stored).
410
+ * DistanceFromRootProperty, DrillStateProperty, LimitedDescendantCountProperty,
411
+ * NodeProperty, and ParentNavigationProperty are stored at <code>oAggregation</code> using
412
+ * a "$" prefix (if not already stored).
413
413
  *
414
414
  * @param {object} oAggregation
415
415
  * An object holding the information needed for a recursive hierarchy; see
@@ -438,25 +438,17 @@ sap.ui.define([
438
438
  * @public
439
439
  */
440
440
  buildApply4Hierarchy : function (oAggregation, mQueryOptions, bAllLevels) {
441
- var sApply = "",
442
- sHierarchyQualifier = oAggregation.hierarchyQualifier,
443
- sMetaPath = oAggregation.$metaPath,
444
- sNodeProperty = oAggregation.$NodeProperty,
445
- sPath = oAggregation.$path,
446
- mRecursiveHierarchy,
447
- sSeparator = "",
448
- oSyncPromise;
441
+ let mRecursiveHierarchy; // cache it on 1st access
449
442
 
450
443
  function select(sProperty) {
451
- var sPropertyPath;
452
-
453
444
  if (mQueryOptions.$select) {
454
- sPropertyPath = oAggregation["$" + sProperty];
445
+ let sPropertyPath = oAggregation["$" + sProperty];
455
446
  if (!sPropertyPath) {
456
447
  if (!mRecursiveHierarchy) {
457
- mRecursiveHierarchy = oAggregation.$fetchMetadata(sMetaPath
458
- + "/@com.sap.vocabularies.Hierarchy.v1.RecursiveHierarchy#"
459
- + sHierarchyQualifier).getResult();
448
+ mRecursiveHierarchy = oAggregation.$fetchMetadata(oAggregation.$metaPath
449
+ + "/@com.sap.vocabularies.Hierarchy.v1.RecursiveHierarchy#"
450
+ + oAggregation.hierarchyQualifier
451
+ ).getResult();
460
452
  }
461
453
 
462
454
  sPropertyPath = oAggregation["$" + sProperty]
@@ -466,14 +458,18 @@ sap.ui.define([
466
458
  }
467
459
  }
468
460
 
461
+ let sNodeProperty = oAggregation.$NodeProperty;
469
462
  if (!sNodeProperty) {
470
463
  sNodeProperty = "???";
471
464
  if (mQueryOptions) {
472
- oSyncPromise = oAggregation.$fetchMetadata(sMetaPath
473
- + "/@Org.OData.Aggregation.V1.RecursiveHierarchy#" + sHierarchyQualifier
474
- + "/NodeProperty/$PropertyPath");
465
+ const oSyncPromise = oAggregation.$fetchMetadata(oAggregation.$metaPath
466
+ + "/@Org.OData.Aggregation.V1.RecursiveHierarchy#"
467
+ + oAggregation.hierarchyQualifier);
475
468
  if (oSyncPromise.isFulfilled()) {
476
- sNodeProperty = oAggregation.$NodeProperty = oSyncPromise.getResult();
469
+ sNodeProperty = oAggregation.$NodeProperty
470
+ = oSyncPromise.getResult().NodeProperty.$PropertyPath;
471
+ oAggregation.$ParentNavigationProperty = oSyncPromise.getResult()
472
+ .ParentNavigationProperty.$NavigationPropertyPath;
477
473
  }
478
474
  }
479
475
  }
@@ -486,7 +482,9 @@ sap.ui.define([
486
482
  }
487
483
  }
488
484
 
485
+ let sApply = "";
489
486
  if (mQueryOptions.$filter || oAggregation.search) {
487
+ let sSeparator = "";
490
488
  if (mQueryOptions.$filter) {
491
489
  sApply = "filter(" + mQueryOptions.$filter;
492
490
  sSeparator = ")/";
@@ -495,15 +493,15 @@ sap.ui.define([
495
493
  if (oAggregation.search) {
496
494
  sApply += sSeparator + "search(" + oAggregation.search;
497
495
  }
498
- sApply = "ancestors($root" + sPath
499
- + "," + sHierarchyQualifier
496
+ sApply = "ancestors($root" + oAggregation.$path
497
+ + "," + oAggregation.hierarchyQualifier
500
498
  + "," + sNodeProperty
501
499
  + "," + sApply
502
500
  + "),keep start)/";
503
501
  }
504
502
  if (mQueryOptions.$$filterBeforeAggregate) { // children of a given parent
505
- sApply += "descendants($root" + sPath + "," + sHierarchyQualifier
506
- + "," + sNodeProperty
503
+ sApply += "descendants($root" + oAggregation.$path
504
+ + "," + oAggregation.hierarchyQualifier + "," + sNodeProperty
507
505
  + ",filter(" + mQueryOptions.$$filterBeforeAggregate + "),1)";
508
506
  delete mQueryOptions.$$filterBeforeAggregate;
509
507
  if (mQueryOptions.$orderby) {
@@ -516,8 +514,8 @@ sap.ui.define([
516
514
  delete mQueryOptions.$orderby;
517
515
  }
518
516
  sApply += "com.sap.vocabularies.Hierarchy.v1.TopLevels(HierarchyNodes=$root"
519
- + (sPath || "")
520
- + ",HierarchyQualifier='" + sHierarchyQualifier
517
+ + (oAggregation.$path || "")
518
+ + ",HierarchyQualifier='" + oAggregation.hierarchyQualifier
521
519
  + "',NodeProperty='" + sNodeProperty
522
520
  + "',Levels=" + (bAllLevels ? 999 : oAggregation.expandTo || 1)
523
521
  + ")";