@openui5/sap.ui.core 1.115.1 → 1.117.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (685) hide show
  1. package/.dtsgenrc +18 -0
  2. package/.eslintrc.json +1 -11
  3. package/.reuse/dep5 +0 -5
  4. package/THIRDPARTY.txt +1 -7
  5. package/package.json +1 -1
  6. package/src/jquery.sap.global.js +1 -1
  7. package/src/jquery.sap.properties.js +1 -1
  8. package/src/jquery.sap.resources.js +1 -1
  9. package/src/jquery.sap.script.js +1 -1
  10. package/src/jquery.sap.sjax.js +2 -2
  11. package/src/jquery.sap.storage.js +3 -3
  12. package/src/sap/base/Event.js +106 -0
  13. package/src/sap/base/Eventing.js +319 -0
  14. package/src/sap/base/config/MemoryConfigurationProvider.js +10 -1
  15. package/src/sap/base/config.js +3 -2
  16. package/src/sap/base/i18n/Formatting.js +989 -0
  17. package/src/sap/base/i18n/LanguageTag.js +189 -0
  18. package/src/sap/base/i18n/Localization.js +710 -0
  19. package/src/sap/base/i18n/ResourceBundle.js +5 -20
  20. package/src/sap/base/i18n/date/CalendarType.js +54 -0
  21. package/src/sap/base/i18n/date/CalendarWeekNumbering.js +105 -0
  22. package/src/sap/base/i18n/date/TimezoneUtils.js +287 -0
  23. package/src/sap/base/util/JSTokenizer.js +1 -1
  24. package/src/sap/base/util/fetch.js +4 -4
  25. package/src/sap/base/util/mixedFetch.js +2 -2
  26. package/src/sap/base/util/restricted/_CancelablePromise.js +1 -1
  27. package/src/sap/base/util/restricted/_castArray.js +1 -1
  28. package/src/sap/base/util/restricted/_compact.js +1 -1
  29. package/src/sap/base/util/restricted/_curry.js +1 -1
  30. package/src/sap/base/util/restricted/_debounce.js +1 -1
  31. package/src/sap/base/util/restricted/_difference.js +1 -1
  32. package/src/sap/base/util/restricted/_differenceBy.js +1 -1
  33. package/src/sap/base/util/restricted/_differenceWith.js +1 -1
  34. package/src/sap/base/util/restricted/_flatMap.js +1 -1
  35. package/src/sap/base/util/restricted/_flatMapDeep.js +1 -1
  36. package/src/sap/base/util/restricted/_flatMapDepth.js +1 -1
  37. package/src/sap/base/util/restricted/_flatten.js +1 -1
  38. package/src/sap/base/util/restricted/_flattenDeep.js +1 -1
  39. package/src/sap/base/util/restricted/_flattenDepth.js +1 -1
  40. package/src/sap/base/util/restricted/_intersection.js +1 -1
  41. package/src/sap/base/util/restricted/_intersectionBy.js +1 -1
  42. package/src/sap/base/util/restricted/_intersectionWith.js +1 -1
  43. package/src/sap/base/util/restricted/_isEqual.js +1 -1
  44. package/src/sap/base/util/restricted/_isEqualWith.js +1 -1
  45. package/src/sap/base/util/restricted/_isNil.js +1 -1
  46. package/src/sap/base/util/restricted/_max.js +1 -1
  47. package/src/sap/base/util/restricted/_merge.js +1 -1
  48. package/src/sap/base/util/restricted/_mergeWith.js +1 -1
  49. package/src/sap/base/util/restricted/_min.js +1 -1
  50. package/src/sap/base/util/restricted/_omit.js +1 -1
  51. package/src/sap/base/util/restricted/_pick.js +1 -1
  52. package/src/sap/base/util/restricted/_pickBy.js +1 -1
  53. package/src/sap/base/util/restricted/_throttle.js +1 -1
  54. package/src/sap/base/util/restricted/_toArray.js +1 -1
  55. package/src/sap/base/util/restricted/_union.js +1 -1
  56. package/src/sap/base/util/restricted/_unionBy.js +1 -1
  57. package/src/sap/base/util/restricted/_unionWith.js +1 -1
  58. package/src/sap/base/util/restricted/_uniq.js +1 -1
  59. package/src/sap/base/util/restricted/_uniqBy.js +1 -1
  60. package/src/sap/base/util/restricted/_uniqWith.js +1 -1
  61. package/src/sap/base/util/restricted/_without.js +1 -1
  62. package/src/sap/base/util/restricted/_xor.js +1 -1
  63. package/src/sap/base/util/restricted/_xorBy.js +1 -1
  64. package/src/sap/base/util/restricted/_xorWith.js +1 -1
  65. package/src/sap/base/util/restricted/_zipObject.js +1 -1
  66. package/src/sap/base/util/restricted/_zipObjectDeep.js +1 -1
  67. package/src/sap/base/util/syncFetch.js +2 -2
  68. package/src/sap/ui/Device.js +3 -3
  69. package/src/sap/ui/Global.js +4 -4
  70. package/src/sap/ui/base/Event.js +6 -4
  71. package/src/sap/ui/base/EventProvider.js +4 -12
  72. package/src/sap/ui/base/Interface.js +1 -1
  73. package/src/sap/ui/base/ManagedObject.js +9 -15
  74. package/src/sap/ui/base/ManagedObjectMetadata.js +33 -12
  75. package/src/sap/ui/base/Metadata.js +1 -1
  76. package/src/sap/ui/base/Object.js +1 -1
  77. package/src/sap/ui/base/ObjectPool.js +1 -1
  78. package/src/sap/ui/base/SyncPromise.js +10 -5
  79. package/src/sap/ui/core/.library +3 -3
  80. package/src/sap/ui/core/AccessKeysEnablement.js +10 -5
  81. package/src/sap/ui/core/AnimationMode.js +49 -0
  82. package/src/sap/ui/core/BusyIndicator.js +33 -42
  83. package/src/sap/ui/core/CalendarType.js +11 -37
  84. package/src/sap/ui/core/Component.js +4 -5
  85. package/src/sap/ui/core/ComponentContainer.js +1 -1
  86. package/src/sap/ui/core/ComponentMetadata.js +2 -2
  87. package/src/sap/ui/core/ComponentSupport.js +1 -1
  88. package/src/sap/ui/core/ConfigTest.js +17 -0
  89. package/src/sap/ui/core/Configuration.js +409 -1282
  90. package/src/sap/ui/core/Control.js +7 -12
  91. package/src/sap/ui/core/ControlBehavior.js +157 -0
  92. package/src/sap/ui/core/Core.js +126 -132
  93. package/src/sap/ui/core/CustomData.js +1 -1
  94. package/src/sap/ui/core/DeclarativeSupport.js +1 -1
  95. package/src/sap/ui/core/Element.js +14 -3
  96. package/src/sap/ui/core/ElementMetadata.js +2 -4
  97. package/src/sap/ui/core/EnabledPropagator.js +1 -1
  98. package/src/sap/ui/core/EventBus.js +1 -1
  99. package/src/sap/ui/core/Fragment.js +1 -1
  100. package/src/sap/ui/core/HTML.js +1 -1
  101. package/src/sap/ui/core/History.js +1 -1
  102. package/src/sap/ui/core/Icon.js +1 -1
  103. package/src/sap/ui/core/IconPool.js +1 -2
  104. package/src/sap/ui/core/IndicationColorSupport.js +1 -1
  105. package/src/sap/ui/core/IntervalTrigger.js +1 -1
  106. package/src/sap/ui/core/InvisibleMessage.js +5 -7
  107. package/src/sap/ui/core/InvisibleRenderer.js +1 -1
  108. package/src/sap/ui/core/InvisibleText.js +12 -12
  109. package/src/sap/ui/core/Item.js +1 -1
  110. package/src/sap/ui/core/LabelEnablement.js +1 -1
  111. package/src/sap/ui/core/LayoutData.js +1 -1
  112. package/src/sap/ui/core/Lib.js +126 -38
  113. package/src/sap/ui/core/ListItem.js +1 -1
  114. package/src/sap/ui/core/LocalBusyIndicator.js +1 -1
  115. package/src/sap/ui/core/Locale.js +154 -430
  116. package/src/sap/ui/core/LocaleData.js +50 -14
  117. package/src/sap/ui/core/Manifest.js +5 -5
  118. package/src/sap/ui/core/Message.js +1 -1
  119. package/src/sap/ui/core/Popup.js +37 -50
  120. package/src/sap/ui/core/RenderManager.js +1 -1
  121. package/src/sap/ui/core/Renderer.js +1 -1
  122. package/src/sap/ui/core/Rendering.js +1 -1
  123. package/src/sap/ui/core/ResizeHandler.js +1 -1
  124. package/src/sap/ui/core/ScrollBar.js +1 -1
  125. package/src/sap/ui/core/SeparatorItem.js +1 -1
  126. package/src/sap/ui/core/Shortcut.js +11 -9
  127. package/src/sap/ui/core/StaticArea.js +31 -17
  128. package/src/sap/ui/core/Theming.js +458 -0
  129. package/src/sap/ui/core/Title.js +1 -1
  130. package/src/sap/ui/core/TooltipBase.js +1 -1
  131. package/src/sap/ui/core/UIArea.js +1 -1
  132. package/src/sap/ui/core/UIComponent.js +1 -1
  133. package/src/sap/ui/core/UIComponentMetadata.js +1 -1
  134. package/src/sap/ui/core/ValueStateSupport.js +1 -1
  135. package/src/sap/ui/core/VariantLayoutData.js +1 -1
  136. package/src/sap/ui/core/XMLComposite.js +1 -1
  137. package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
  138. package/src/sap/ui/core/XMLTemplateProcessor.js +28 -5
  139. package/src/sap/ui/core/_IconRegistry.js +89 -12
  140. package/src/sap/ui/core/boot/_bootConfig.js +137 -0
  141. package/src/sap/ui/core/boot/_runBoot.js +16 -0
  142. package/src/sap/ui/core/boot/initDOM.js +96 -0
  143. package/src/sap/ui/core/boot/loadCalendar.js +50 -0
  144. package/src/sap/ui/core/boot/loadManifest.js +55 -0
  145. package/src/sap/ui/core/boot/loadModules.js +80 -0
  146. package/src/sap/ui/core/boot/manifest.json +11 -0
  147. package/src/sap/ui/core/boot/onInit.js +44 -0
  148. package/src/sap/ui/core/boot.js +107 -0
  149. package/src/sap/ui/core/date/CalendarWeekNumbering.js +12 -83
  150. package/src/sap/ui/core/date/UI5Date.js +10 -4
  151. package/src/sap/ui/core/delegate/ItemNavigation.js +8 -10
  152. package/src/sap/ui/core/delegate/ScrollEnablement.js +5 -5
  153. package/src/sap/ui/core/dnd/DragDropBase.js +1 -1
  154. package/src/sap/ui/core/dnd/DragDropInfo.js +1 -1
  155. package/src/sap/ui/core/dnd/DragInfo.js +1 -1
  156. package/src/sap/ui/core/dnd/DropInfo.js +1 -1
  157. package/src/sap/ui/core/format/DateFormat.js +33 -27
  158. package/src/sap/ui/core/format/TimezoneUtil.js +15 -273
  159. package/src/sap/ui/core/hyphenation/Hyphenation.js +1 -1
  160. package/src/sap/ui/core/library.js +32 -6
  161. package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
  162. package/src/sap/ui/core/message/Message.js +1 -1
  163. package/src/sap/ui/core/message/MessageManager.js +1 -1
  164. package/src/sap/ui/core/message/MessageMixin.js +6 -5
  165. package/src/sap/ui/core/message/MessageParser.js +1 -1
  166. package/src/sap/ui/core/message/MessageProcessor.js +1 -1
  167. package/src/sap/ui/core/messagebundle_ar.properties +57 -55
  168. package/src/sap/ui/core/messagebundle_bg.properties +57 -55
  169. package/src/sap/ui/core/messagebundle_ca.properties +30 -28
  170. package/src/sap/ui/core/messagebundle_cs.properties +44 -42
  171. package/src/sap/ui/core/messagebundle_cy.properties +59 -57
  172. package/src/sap/ui/core/messagebundle_da.properties +57 -55
  173. package/src/sap/ui/core/messagebundle_de.properties +59 -57
  174. package/src/sap/ui/core/messagebundle_el.properties +48 -46
  175. package/src/sap/ui/core/messagebundle_en.properties +59 -57
  176. package/src/sap/ui/core/messagebundle_en_GB.properties +59 -57
  177. package/src/sap/ui/core/messagebundle_en_US_sappsd.properties +2 -0
  178. package/src/sap/ui/core/messagebundle_en_US_saprigi.properties +2 -0
  179. package/src/sap/ui/core/messagebundle_en_US_saptrc.properties +3 -0
  180. package/src/sap/ui/core/messagebundle_es.properties +48 -46
  181. package/src/sap/ui/core/messagebundle_es_MX.properties +58 -56
  182. package/src/sap/ui/core/messagebundle_et.properties +55 -53
  183. package/src/sap/ui/core/messagebundle_fi.properties +51 -49
  184. package/src/sap/ui/core/messagebundle_fr.properties +36 -34
  185. package/src/sap/ui/core/messagebundle_fr_CA.properties +21 -19
  186. package/src/sap/ui/core/messagebundle_hi.properties +42 -40
  187. package/src/sap/ui/core/messagebundle_hr.properties +57 -55
  188. package/src/sap/ui/core/messagebundle_hu.properties +58 -56
  189. package/src/sap/ui/core/messagebundle_id.properties +59 -57
  190. package/src/sap/ui/core/messagebundle_it.properties +75 -73
  191. package/src/sap/ui/core/messagebundle_iw.properties +59 -57
  192. package/src/sap/ui/core/messagebundle_ja.properties +50 -48
  193. package/src/sap/ui/core/messagebundle_kk.properties +44 -42
  194. package/src/sap/ui/core/messagebundle_ko.properties +20 -18
  195. package/src/sap/ui/core/messagebundle_lt.properties +59 -57
  196. package/src/sap/ui/core/messagebundle_lv.properties +59 -57
  197. package/src/sap/ui/core/messagebundle_ms.properties +60 -58
  198. package/src/sap/ui/core/messagebundle_nl.properties +58 -56
  199. package/src/sap/ui/core/messagebundle_no.properties +56 -54
  200. package/src/sap/ui/core/messagebundle_pl.properties +56 -54
  201. package/src/sap/ui/core/messagebundle_pt.properties +58 -56
  202. package/src/sap/ui/core/messagebundle_pt_PT.properties +58 -56
  203. package/src/sap/ui/core/messagebundle_ro.properties +59 -57
  204. package/src/sap/ui/core/messagebundle_ru.properties +57 -55
  205. package/src/sap/ui/core/messagebundle_sh.properties +59 -57
  206. package/src/sap/ui/core/messagebundle_sk.properties +57 -55
  207. package/src/sap/ui/core/messagebundle_sl.properties +58 -56
  208. package/src/sap/ui/core/messagebundle_sv.properties +54 -52
  209. package/src/sap/ui/core/messagebundle_th.properties +18 -16
  210. package/src/sap/ui/core/messagebundle_tr.properties +58 -56
  211. package/src/sap/ui/core/messagebundle_uk.properties +59 -57
  212. package/src/sap/ui/core/messagebundle_vi.properties +59 -57
  213. package/src/sap/ui/core/messagebundle_zh_CN.properties +58 -56
  214. package/src/sap/ui/core/messagebundle_zh_TW.properties +58 -56
  215. package/src/sap/ui/core/mvc/HTMLView.js +1 -1
  216. package/src/sap/ui/core/mvc/JSONView.js +1 -1
  217. package/src/sap/ui/core/mvc/JSView.js +1 -1
  218. package/src/sap/ui/core/mvc/TemplateView.js +1 -1
  219. package/src/sap/ui/core/mvc/View.js +1 -1
  220. package/src/sap/ui/core/mvc/XMLView.js +14 -2
  221. package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
  222. package/src/sap/ui/core/plugin/LessSupport.js +14 -16
  223. package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -1
  224. package/src/sap/ui/core/postmessage/Bus.js +1 -1
  225. package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
  226. package/src/sap/ui/core/routing/HashChanger.js +1 -0
  227. package/src/sap/ui/core/routing/Route.js +1 -0
  228. package/src/sap/ui/core/routing/Router.js +3 -1
  229. package/src/sap/ui/core/rules/Config.support.js +2 -2
  230. package/src/sap/ui/core/rules/Misc.support.js +1 -1
  231. package/src/sap/ui/core/rules/Model.support.js +3 -1
  232. package/src/sap/ui/core/search/OpenSearchProvider.js +1 -1
  233. package/src/sap/ui/core/search/SearchProvider.js +1 -1
  234. package/src/sap/ui/core/service/Service.js +1 -1
  235. package/src/sap/ui/core/service/ServiceFactory.js +1 -1
  236. package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
  237. package/src/sap/ui/core/support/Plugin.js +1 -1
  238. package/src/sap/ui/core/support/Support.js +7 -4
  239. package/src/sap/ui/core/support/controls/TimelineOverview.js +1 -1
  240. package/src/sap/ui/core/support/plugins/ControlTree.js +2 -2
  241. package/src/sap/ui/core/support/plugins/Interaction.js +1 -1
  242. package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
  243. package/src/sap/ui/core/support/plugins/Performance.js +1 -1
  244. package/src/sap/ui/core/support/plugins/Selector.js +1 -1
  245. package/src/sap/ui/core/support/plugins/TechInfo.js +1 -1
  246. package/src/sap/ui/core/support/plugins/Trace.js +1 -1
  247. package/src/sap/ui/core/support/plugins/ViewInfo.js +1 -1
  248. package/src/sap/ui/core/themes/base/Icon.less +2 -2
  249. package/src/sap/ui/core/themes/base/LocalBusyIndicator.less +4 -4
  250. package/src/sap/ui/core/themes/base/base.less +41 -20
  251. package/src/sap/ui/core/themes/base/fonts/SAP-icons.ttf +0 -0
  252. package/src/sap/ui/core/themes/base/fonts/SAP-icons.woff2 +0 -0
  253. package/src/sap/ui/core/theming/Parameters.js +6 -10
  254. package/src/sap/ui/core/theming/ThemeManager.js +312 -450
  255. package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
  256. package/src/sap/ui/core/tmpl/DOMElement.js +5 -10
  257. package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
  258. package/src/sap/ui/core/tmpl/Template.js +1 -1
  259. package/src/sap/ui/core/tmpl/TemplateControl.js +1 -1
  260. package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
  261. package/src/sap/ui/core/util/Export.js +1 -1
  262. package/src/sap/ui/core/util/ExportCell.js +1 -1
  263. package/src/sap/ui/core/util/ExportColumn.js +1 -1
  264. package/src/sap/ui/core/util/ExportRow.js +1 -1
  265. package/src/sap/ui/core/util/ExportType.js +1 -1
  266. package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
  267. package/src/sap/ui/core/util/File.js +1 -1
  268. package/src/sap/ui/core/util/LibraryInfo.js +1 -1
  269. package/src/sap/ui/core/util/MockServer.js +4 -5
  270. package/src/sap/ui/core/util/PasteHelper.js +1 -1
  271. package/src/sap/ui/core/util/reflection/BaseTreeModifier.js +3 -1
  272. package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
  273. package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
  274. package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
  275. package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
  276. package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
  277. package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
  278. package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
  279. package/src/sap/ui/core/ws/ReadyState.js +1 -1
  280. package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
  281. package/src/sap/ui/core/ws/WebSocket.js +1 -1
  282. package/src/sap/ui/debug/ControlTree.js +1 -1
  283. package/src/sap/ui/debug/DebugEnv.js +1 -1
  284. package/src/sap/ui/debug/PropertyList.js +1 -1
  285. package/src/sap/ui/events/PseudoEvents.js +17 -9
  286. package/src/sap/ui/model/Binding.js +19 -15
  287. package/src/sap/ui/model/ClientModel.js +1 -1
  288. package/src/sap/ui/model/CompositeBinding.js +57 -19
  289. package/src/sap/ui/model/CompositeDataState.js +1 -1
  290. package/src/sap/ui/model/CompositeType.js +1 -1
  291. package/src/sap/ui/model/DataState.js +1 -1
  292. package/src/sap/ui/model/ListBinding.js +42 -1
  293. package/src/sap/ui/model/MetaModel.js +1 -1
  294. package/src/sap/ui/model/Model.js +5 -4
  295. package/src/sap/ui/model/PropertyBinding.js +10 -0
  296. package/src/sap/ui/model/SelectionModel.js +1 -1
  297. package/src/sap/ui/model/SimpleType.js +4 -1
  298. package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
  299. package/src/sap/ui/model/Type.js +1 -1
  300. package/src/sap/ui/model/analytics/AnalyticalBinding.js +166 -79
  301. package/src/sap/ui/model/analytics/AnalyticalVersionInfo.js +4 -3
  302. package/src/sap/ui/model/analytics/BatchResponseCollector.js +2 -2
  303. package/src/sap/ui/model/analytics/ODataModelAdapter.js +14 -27
  304. package/src/sap/ui/model/analytics/odata4analytics.js +6 -12
  305. package/src/sap/ui/model/base/ManagedObjectModel.js +3 -2
  306. package/src/sap/ui/model/json/JSONModel.js +6 -1
  307. package/src/sap/ui/model/message/MessageModel.js +1 -1
  308. package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
  309. package/src/sap/ui/model/odata/ODataMessageParser.js +1 -1
  310. package/src/sap/ui/model/odata/ODataMetaModel.js +191 -5
  311. package/src/sap/ui/model/odata/ODataMetadata.js +38 -4
  312. package/src/sap/ui/model/odata/ODataModel.js +1 -1
  313. package/src/sap/ui/model/odata/type/Boolean.js +1 -1
  314. package/src/sap/ui/model/odata/type/Byte.js +1 -1
  315. package/src/sap/ui/model/odata/type/Currency.js +1 -1
  316. package/src/sap/ui/model/odata/type/Date.js +1 -1
  317. package/src/sap/ui/model/odata/type/DateTime.js +1 -1
  318. package/src/sap/ui/model/odata/type/DateTimeBase.js +8 -1
  319. package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
  320. package/src/sap/ui/model/odata/type/DateTimeWithTimezone.js +1 -1
  321. package/src/sap/ui/model/odata/type/Decimal.js +1 -1
  322. package/src/sap/ui/model/odata/type/Double.js +1 -1
  323. package/src/sap/ui/model/odata/type/Guid.js +1 -1
  324. package/src/sap/ui/model/odata/type/Int.js +1 -1
  325. package/src/sap/ui/model/odata/type/Int16.js +1 -1
  326. package/src/sap/ui/model/odata/type/Int32.js +1 -1
  327. package/src/sap/ui/model/odata/type/Int64.js +1 -1
  328. package/src/sap/ui/model/odata/type/ODataType.js +3 -3
  329. package/src/sap/ui/model/odata/type/Raw.js +1 -1
  330. package/src/sap/ui/model/odata/type/SByte.js +1 -1
  331. package/src/sap/ui/model/odata/type/Single.js +1 -1
  332. package/src/sap/ui/model/odata/type/Stream.js +1 -1
  333. package/src/sap/ui/model/odata/type/String.js +1 -1
  334. package/src/sap/ui/model/odata/type/Time.js +1 -1
  335. package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
  336. package/src/sap/ui/model/odata/type/Unit.js +1 -1
  337. package/src/sap/ui/model/odata/v2/Context.js +3 -2
  338. package/src/sap/ui/model/odata/v2/ODataAnnotations.js +1 -1
  339. package/src/sap/ui/model/odata/v2/ODataListBinding.js +14 -3
  340. package/src/sap/ui/model/odata/v2/ODataModel.js +46 -32
  341. package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +1 -1
  342. package/src/sap/ui/model/odata/v4/AnnotationHelper.js +4 -4
  343. package/src/sap/ui/model/odata/v4/Context.js +39 -32
  344. package/src/sap/ui/model/odata/v4/ODataBinding.js +85 -52
  345. package/src/sap/ui/model/odata/v4/ODataContextBinding.js +23 -19
  346. package/src/sap/ui/model/odata/v4/ODataListBinding.js +139 -50
  347. package/src/sap/ui/model/odata/v4/ODataMetaModel.js +30 -36
  348. package/src/sap/ui/model/odata/v4/ODataModel.js +49 -44
  349. package/src/sap/ui/model/odata/v4/ODataParentBinding.js +72 -37
  350. package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +34 -29
  351. package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +95 -9
  352. package/src/sap/ui/model/odata/v4/lib/_AggregationHelper.js +25 -27
  353. package/src/sap/ui/model/odata/v4/lib/_Cache.js +95 -209
  354. package/src/sap/ui/model/odata/v4/lib/_Helper.js +168 -1
  355. package/src/sap/ui/model/odata/v4/lib/_MetadataRequestor.js +14 -5
  356. package/src/sap/ui/model/odata/v4/lib/_Requestor.js +34 -19
  357. package/src/sap/ui/model/odata/v4/lib/_V2MetadataConverter.js +4 -4
  358. package/src/sap/ui/model/odata/v4/lib/_V2Requestor.js +1 -1
  359. package/src/sap/ui/model/resource/ResourceModel.js +1 -1
  360. package/src/sap/ui/model/type/Boolean.js +1 -1
  361. package/src/sap/ui/model/type/Currency.js +1 -1
  362. package/src/sap/ui/model/type/Date.js +1 -1
  363. package/src/sap/ui/model/type/DateInterval.js +1 -1
  364. package/src/sap/ui/model/type/DateTime.js +1 -1
  365. package/src/sap/ui/model/type/DateTimeInterval.js +1 -1
  366. package/src/sap/ui/model/type/FileSize.js +1 -1
  367. package/src/sap/ui/model/type/Float.js +1 -1
  368. package/src/sap/ui/model/type/Integer.js +1 -1
  369. package/src/sap/ui/model/type/String.js +1 -1
  370. package/src/sap/ui/model/type/Time.js +1 -1
  371. package/src/sap/ui/model/type/TimeInterval.js +1 -1
  372. package/src/sap/ui/model/type/Unit.js +1 -1
  373. package/src/sap/ui/model/xml/XMLModel.js +1 -1
  374. package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
  375. package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +1 -1
  376. package/src/sap/ui/test/Opa5.js +1 -1
  377. package/src/sap/ui/test/TestUtils.js +1 -1
  378. package/src/sap/ui/test/autowaiter/_autoWaiter.js +1 -1
  379. package/src/sap/ui/test/generic/TestBase.js +1 -1
  380. package/src/sap/ui/test/generic/_EnforceSemanticRendering.js +1 -3
  381. package/src/sap/ui/test/gherkin/simpleGherkinParser.js +10 -5
  382. package/src/sap/ui/test/matchers/LabelFor.js +1 -0
  383. package/src/sap/ui/test/matchers/_Visitor.js +6 -1
  384. package/src/sap/ui/test/starter/_setupAndStart.js +2 -5
  385. package/src/sap/ui/thirdparty/caja-html-sanitizer.js +111 -96
  386. package/src/sap/ui/thirdparty/qunit-2.js +9 -3
  387. package/src/sap/ui/util/ActivityDetection.js +7 -1
  388. package/src/sap/ui/util/Mobile.js +21 -14
  389. package/src/sap/ui/util/Storage.js +1 -1
  390. package/src/sap-ui-boot.js +23 -6
  391. package/src/ui5-boot.js +50 -0
  392. package/src/ui5loader-autoconfig.js +150 -75
  393. package/src/ui5loader.js +458 -514
  394. package/test/sap/ui/core/Device.js +1 -1
  395. package/test/sap/ui/core/FormatHelper.js +3 -2
  396. package/test/sap/ui/core/demokit/docuindex.json +6 -0
  397. package/test/sap/ui/core/demokit/sample/OpaAction/applicationUnderTest/view/Main.view.xml +1 -0
  398. package/test/sap/ui/core/demokit/sample/OpaBusyIndicator/OpaBusyIndicator.js +1 -1
  399. package/test/sap/ui/core/demokit/sample/OpaMatchers/OpaMatchers.js +2 -2
  400. package/test/sap/ui/core/demokit/sample/ViewTemplate/types/MIT.ODataTypes.html +9 -14
  401. package/test/sap/ui/core/demokit/sample/ViewTemplate/types/Opa.qunit.js +7 -0
  402. package/test/sap/ui/core/demokit/sample/ViewTemplate/types/Template.controller.js +2 -2
  403. package/test/sap/ui/core/demokit/sample/common/pages/Any.js +1 -1
  404. package/test/sap/ui/core/demokit/sample/odata/v2/AutoExpand/AutoExpand.view.xml +24 -5
  405. package/test/sap/ui/core/demokit/sample/odata/v4/Ancestry/Main.view.xml +24 -6
  406. package/test/sap/ui/core/demokit/sample/odata/v4/DataAggregation/DataAggregation.view.xml +20 -5
  407. package/test/sap/ui/core/demokit/sample/odata/v4/DataAggregation/Opa.qunit.js +2 -1
  408. package/test/sap/ui/core/demokit/sample/odata/v4/DataAggregation/tests/filter.js +2 -2
  409. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/Component.js +27 -0
  410. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/ListReport.controller.js +43 -0
  411. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/ListReport.view.xml +47 -0
  412. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/Main.controller.js +27 -0
  413. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/Main.view.xml +7 -0
  414. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/NotFound.view.xml +8 -0
  415. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/ObjectPage.controller.js +123 -0
  416. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/ObjectPage.view.xml +92 -0
  417. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/Opa.qunit.html +27 -0
  418. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/Opa.qunit.js +70 -0
  419. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/README.html +55 -0
  420. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/SandboxModel.js +56 -0
  421. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/data/POST-SalesOrderList.json +66 -0
  422. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/data/SalesOrderList('0500000000')-SO_2_SOITEM.json +57 -0
  423. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/data/SalesOrderList('0500000000').json +20 -0
  424. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/data/SalesOrderList('0500000001').json +9 -0
  425. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/data/SalesOrderList('0500000007')-SO_2_BP.json +12 -0
  426. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/data/SalesOrderList.json +62 -0
  427. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/data/VH_CurrencyCode.json +85 -0
  428. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/data/VH_CurrencyCode.xml +185 -0
  429. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/data/VH_ProductID.json +93 -0
  430. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/data/VH_ProductID.xml +262 -0
  431. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/data/metadata.xml +1779 -0
  432. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/manifest.json +134 -0
  433. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/pages/Main.js +119 -0
  434. package/test/sap/ui/core/demokit/sample/odata/v4/Draft/Opa.qunit.js +2 -1
  435. package/test/sap/ui/core/demokit/sample/odata/v4/FieldGroups/Opa.qunit.js +2 -1
  436. package/test/sap/ui/core/demokit/sample/odata/v4/FlatDataAggregation/FlatDataAggregation.view.xml +4 -1
  437. package/test/sap/ui/core/demokit/sample/odata/v4/FlexibleColumnLayout/Opa.qunit.js +2 -1
  438. package/test/sap/ui/core/demokit/sample/odata/v4/GridTable/GridTable.view.xml +12 -3
  439. package/test/sap/ui/core/demokit/sample/odata/v4/LateProperties/Main.controller.js +2 -1
  440. package/test/sap/ui/core/demokit/sample/odata/v4/LateProperties/Opa.OptimisticBatch.qunit.js +2 -1
  441. package/test/sap/ui/core/demokit/sample/odata/v4/LateProperties/Opa.qunit.js +2 -1
  442. package/test/sap/ui/core/demokit/sample/odata/v4/ListBinding/Opa.qunit.js +2 -1
  443. package/test/sap/ui/core/demokit/sample/odata/v4/ListBindingTemplate/Opa.qunit.js +2 -1
  444. package/test/sap/ui/core/demokit/sample/odata/v4/MultipleInlineCreationRowsGrid/Opa.qunit.js +2 -1
  445. package/test/sap/ui/core/demokit/sample/odata/v4/MultipleInlineCreationRowsGrid/pages/Main.js +0 -41
  446. package/test/sap/ui/core/demokit/sample/odata/v4/Products/Opa.qunit.js +2 -1
  447. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/RecursiveHierarchy.view.xml +26 -8
  448. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/data/metadata.xml +4 -0
  449. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrderTP100_V2/Opa.qunit.js +2 -1
  450. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrderTP100_V2/manifest.json +1 -1
  451. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrderTP100_V4/Opa.qunit.js +2 -1
  452. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrderTP100_V4/manifest.json +1 -1
  453. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/Main.controller.js +5 -17
  454. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/Opa.qunit.js +2 -1
  455. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/pages/Main.js +18 -0
  456. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/tests/Create.js +10 -6
  457. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersRTATest/Opa.qunit.js +2 -1
  458. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersRTATest/manifest.json +18 -0
  459. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersTemplate/Opa.qunit.js +2 -1
  460. package/test/sap/ui/core/demokit/sample/odata/v4/ServerDrivenPaging/Main.view.xml +3 -3
  461. package/test/sap/ui/core/demokit/sample/odata/v4/ServerDrivenPaging/Opa.qunit.js +2 -1
  462. package/test/sap/ui/core/demokit/sample/odata/v4/ServerDrivenPaging/pages/Main.js +4 -1
  463. package/test/sap/ui/core/demokit/sample/odata/v4/Sticky/Opa.qunit.js +2 -1
  464. package/test/sap/ui/core/demokit/tutorial/odatav4/06/webapp/controller/App.controller.js +1 -6
  465. package/test/sap/ui/core/demokit/tutorial/odatav4/06/webapp/localService/mockserver.js +1 -0
  466. package/test/sap/ui/core/demokit/tutorial/odatav4/07/webapp/controller/App.controller.js +1 -6
  467. package/test/sap/ui/core/demokit/tutorial/odatav4/07/webapp/localService/mockserver.js +1 -0
  468. package/test/sap/ui/core/demokit/tutorial/odatav4/08/webapp/controller/App.controller.js +1 -6
  469. package/test/sap/ui/core/demokit/tutorial/odatav4/08/webapp/localService/mockserver.js +1 -0
  470. package/test/sap/ui/core/demokit/tutorial/odatav4/08/webapp/test/integration/arrangements/Startup.js +1 -1
  471. package/test/sap/ui/core/demokit/tutorial/odatav4/09/webapp/controller/App.controller.js +1 -6
  472. package/test/sap/ui/core/demokit/tutorial/odatav4/09/webapp/localService/mockserver.js +1 -0
  473. package/test/sap/ui/core/demokit/tutorial/odatav4/10/webapp/controller/App.controller.js +3 -8
  474. package/test/sap/ui/core/demokit/tutorial/odatav4/10/webapp/localService/mockserver.js +1 -0
  475. package/test/sap/ui/core/demokit/tutorial/odatav4/11/webapp/controller/App.controller.js +3 -8
  476. package/test/sap/ui/core/demokit/tutorial/odatav4/11/webapp/localService/mockserver.js +1 -0
  477. package/test/sap/ui/core/demokit/tutorial/odatav4/11/webapp/test/integration/arrangements/Startup.js +1 -1
  478. package/test/sap/ui/core/qunit/CompositeBinding.qunit.js +25 -7
  479. package/test/sap/ui/core/qunit/ControlRenderer.qunit.js +86 -2
  480. package/test/sap/ui/core/qunit/DataState.qunit.js +2 -7
  481. package/test/sap/ui/core/qunit/HTML.qunit.js +31 -31
  482. package/test/sap/ui/core/qunit/IconPool.qunit.js +53 -4
  483. package/test/sap/ui/core/qunit/Lib.qunit.js +55 -2
  484. package/test/sap/ui/core/qunit/LocalBusyIndicator.qunit.js +22 -15
  485. package/test/sap/ui/core/qunit/ManagedObject.qunit.js +5 -3
  486. package/test/sap/ui/core/qunit/ManagedObjectModel.qunit.js +43 -5
  487. package/test/sap/ui/core/qunit/Object.qunit.js +4 -1
  488. package/test/sap/ui/core/qunit/ThemeManager.qunit.js +2 -2
  489. package/test/sap/ui/core/qunit/ThemeParameters.qunit.js +9 -3
  490. package/test/sap/ui/core/qunit/Theming.beforeBootstrap.qunit.js +13 -0
  491. package/test/sap/ui/core/qunit/Theming.qunit.js +247 -0
  492. package/test/sap/ui/core/qunit/analytics/AnalyticalBinding.qunit.js +510 -185
  493. package/test/sap/ui/core/qunit/analytics/AnalyticalTreeBindingAdapter.qunit.js +2 -7
  494. package/test/sap/ui/core/qunit/analytics/ODataModelAdapter.qunit.js +81 -16
  495. package/test/sap/ui/core/qunit/analytics/odata4analytics.qunit.js +20 -29
  496. package/test/sap/ui/core/qunit/app/MessageListBinding.qunit.js +2 -7
  497. package/test/sap/ui/core/qunit/base/Config_cascade.qunit.js +18 -1
  498. package/test/sap/ui/core/qunit/base/i18n/Formatting.qunit.html +24 -0
  499. package/test/sap/ui/core/qunit/base/i18n/Formatting.qunit.js +277 -0
  500. package/test/sap/ui/core/qunit/base/i18n/Localization.qunit.js +282 -0
  501. package/test/sap/ui/core/qunit/base/i18n/ResourceBundle.qunit.js +5 -6
  502. package/test/sap/ui/core/qunit/base/security/sanitizeHTML.qunit.js +17 -0
  503. package/test/sap/ui/core/qunit/bootstrap/BootstrapPreload.qunit.js +1 -2
  504. package/test/sap/ui/core/qunit/bootstrap/BootstrapWithCustomBootTask.beforeBootstrap.qunit.js +13 -12
  505. package/test/sap/ui/core/qunit/bootstrap/Configuration.main.qunit.js +11 -0
  506. package/test/sap/ui/core/qunit/bootstrap/Configuration.qunit.html +4 -3
  507. package/test/sap/ui/core/qunit/bootstrap/Configuration.qunit.js +451 -281
  508. package/test/sap/ui/core/qunit/bootstrap/ThemeVersion.qunit.js +19 -30
  509. package/test/sap/ui/core/qunit/component/Models.qunit.js +12 -30
  510. package/test/sap/ui/core/qunit/component/Models_unavoidablySync.qunit.js +8 -26
  511. package/test/sap/ui/core/qunit/component/testdata/async/lib2/library-preload.js +2 -2
  512. package/test/sap/ui/core/qunit/component/testdata/async/lib2/library-preload.json +1 -1
  513. package/test/sap/ui/core/qunit/component/testdata/async/lib2/library.js +2 -2
  514. package/test/sap/ui/core/qunit/component/testdata/async/lib3/library-preload.js +2 -2
  515. package/test/sap/ui/core/qunit/component/testdata/async/lib3/library-preload.json +1 -1
  516. package/test/sap/ui/core/qunit/component/testdata/async/lib3/library.js +2 -2
  517. package/test/sap/ui/core/qunit/component/testdata/async/lib4/library-preload.js +2 -2
  518. package/test/sap/ui/core/qunit/component/testdata/async/lib4/library-preload.json +1 -1
  519. package/test/sap/ui/core/qunit/component/testdata/async/lib4/library.js +2 -2
  520. package/test/sap/ui/core/qunit/component/testdata/async/manifestcomp/Component-preload.js +1 -1
  521. package/test/sap/ui/core/qunit/component/testdata/async/manifestcomp/Component.js +2 -2
  522. package/test/sap/ui/core/qunit/component/testdata/async/mycomp/Component-preload.js +1 -1
  523. package/test/sap/ui/core/qunit/component/testdata/async/mycomp/Component.js +2 -2
  524. package/test/sap/ui/core/qunit/component/testdata/async/mysubcomp/Component-preload.js +1 -1
  525. package/test/sap/ui/core/qunit/component/testdata/async/mysubcomp/Component.js +2 -3
  526. package/test/sap/ui/core/qunit/component/testdata/customizing/customer/ext/Component.js +0 -4
  527. package/test/sap/ui/core/qunit/component/testdata/customizing/customer/ext/sync/Component.js +2 -6
  528. package/test/sap/ui/core/qunit/component/testdata/customizing/customersub/Component.js +0 -4
  529. package/test/sap/ui/core/qunit/component/testdata/inherit/Component.js +2 -7
  530. package/test/sap/ui/core/qunit/component/testdata/inherit/parent/Component.js +2 -7
  531. package/test/sap/ui/core/qunit/component/testdata/inheritAsync/Component.js +2 -2
  532. package/test/sap/ui/core/qunit/component/testdata/inheritAsync/parentA/Component.js +2 -2
  533. package/test/sap/ui/core/qunit/component/testdata/inheritAsync/parentB/Component.js +2 -2
  534. package/test/sap/ui/core/qunit/component/testdata/inheritAsyncError/Component.js +2 -2
  535. package/test/sap/ui/core/qunit/component/testdata/inheritAsyncError/parentA/Component.js +2 -2
  536. package/test/sap/ui/core/qunit/component/testdata/inheritAsyncError/parentB/Component.js +2 -2
  537. package/test/sap/ui/core/qunit/component/testdata/other/Component.js +2 -7
  538. package/test/sap/ui/core/qunit/component/testdata/terminologies/Component.js +2 -2
  539. package/test/sap/ui/core/qunit/component/testdata/terminologies/component1/Component.js +2 -2
  540. package/test/sap/ui/core/qunit/component/testdata/terminologies/component2/Component.js +2 -2
  541. package/test/sap/ui/core/qunit/component/testdata/terminologies/component3/Component.js +2 -2
  542. package/test/sap/ui/core/qunit/component/testdata/terminologies/component5/Component.js +2 -2
  543. package/test/sap/ui/core/qunit/component/testdata/terminologies/reuse/Component.js +2 -3
  544. package/test/sap/ui/core/qunit/component/testdata/v1/Component.js +2 -7
  545. package/test/sap/ui/core/qunit/component/testdata/v1empty/Component.js +2 -7
  546. package/test/sap/ui/core/qunit/component/testdata/v1inline/Component.js +2 -5
  547. package/test/sap/ui/core/qunit/component/testdata/v1missing/Component.js +2 -7
  548. package/test/sap/ui/core/qunit/component/testdata/v2/Component.js +2 -5
  549. package/test/sap/ui/core/qunit/component/testdata/v2asyncRootView/Component.js +2 -5
  550. package/test/sap/ui/core/qunit/component/testdata/v2empty/Component.js +2 -9
  551. package/test/sap/ui/core/qunit/component/testdata/v2inline/Component.js +2 -5
  552. package/test/sap/ui/core/qunit/component/testdata/v2missing/Component.js +2 -9
  553. package/test/sap/ui/core/qunit/component/testdata/v2version/Component.js +2 -2
  554. package/test/sap/ui/core/qunit/dnd/DragDropInfo.qunit.js +1 -2
  555. package/test/sap/ui/core/qunit/generic/EnforceSemanticRendering.qunit.js +2 -2
  556. package/test/sap/ui/core/qunit/generic/SettersContextReturn.qunit.js +2 -2
  557. package/test/sap/ui/core/qunit/generic/legacy/ControlMemoryLeaks.qunit.js +2 -0
  558. package/test/sap/ui/core/qunit/generic/legacy/DuplicateIdCheck.qunit.js +2 -0
  559. package/test/sap/ui/core/qunit/generic/legacy/SettersContextReturn.qunit.js +2 -2
  560. package/test/sap/ui/core/qunit/gherkin/dataTableUtils.qunit.js +2 -2
  561. package/test/sap/ui/core/qunit/i18n/Locale.qunit.js +0 -52
  562. package/test/sap/ui/core/qunit/i18n/LocaleData.qunit.js +49 -14
  563. package/test/sap/ui/core/qunit/i18n/UI5Date.qunit.js +16 -4
  564. package/test/sap/ui/core/qunit/i18n/UniversalDate.qunit.js +74 -114
  565. package/test/sap/ui/core/qunit/i18n/UniversalDateUtils.qunit.js +34 -39
  566. package/test/sap/ui/core/qunit/i18n/testsuite.i18n.qunit.js +18 -0
  567. package/test/sap/ui/core/qunit/internal/1RingModels.qunit.js +1 -0
  568. package/test/sap/ui/core/qunit/internal/BeforePush.ODataV4.js +28 -0
  569. package/test/sap/ui/core/qunit/internal/BeforePush.html +1 -0
  570. package/test/sap/ui/core/qunit/internal/BeforePush.js +15 -0
  571. package/test/sap/ui/core/qunit/internal/performance/ExpressionParser.performance.qunit.js +1 -0
  572. package/test/sap/ui/core/qunit/json/JSONListBinding.qunit.js +2 -7
  573. package/test/sap/ui/core/qunit/json/JSONPropertyBinding.qunit.js +7 -12
  574. package/test/sap/ui/core/qunit/json/JSONTwoWay.qunit.js +3 -8
  575. package/test/sap/ui/core/qunit/loader/asyncMode.qunit.js +2 -2
  576. package/test/sap/ui/core/qunit/loader/asyncMode_unavoidablySync.qunit.js +1 -1
  577. package/test/sap/ui/core/qunit/loader/fixture/amd-with-export-true/module1.js +2 -2
  578. package/test/sap/ui/core/qunit/loader/testsuite.loader.qunit.js +0 -3
  579. package/test/sap/ui/core/qunit/messages/MessageMixin.qunit.js +2 -7
  580. package/test/sap/ui/core/qunit/messages/messagesUsage.qunit.js +1 -1
  581. package/test/sap/ui/core/qunit/model/Binding.qunit.js +36 -11
  582. package/test/sap/ui/core/qunit/model/ClientListBinding.qunit.js +2 -7
  583. package/test/sap/ui/core/qunit/model/ClientTreeBinding.qunit.js +2 -7
  584. package/test/sap/ui/core/qunit/model/CompositeDataState.qunit.js +2 -7
  585. package/test/sap/ui/core/qunit/model/Context.qunit.js +2 -7
  586. package/test/sap/ui/core/qunit/model/ContextBinding.qunit.js +2 -7
  587. package/test/sap/ui/core/qunit/model/FAR_CUSTOMER_LINE_ITEMS.metadata.xml +2 -0
  588. package/test/sap/ui/core/qunit/model/ListBinding.qunit.js +63 -6
  589. package/test/sap/ui/core/qunit/model/Model.qunit.js +2 -7
  590. package/test/sap/ui/core/qunit/model/PropertyBinding.qunit.js +40 -0
  591. package/test/sap/ui/core/qunit/model/TreeBinding.qunit.js +2 -7
  592. package/test/sap/ui/core/qunit/model/TreeBindingAdapter.qunit.js +2 -7
  593. package/test/sap/ui/core/qunit/mvc/XMLTemplateProcessorRequireXML.qunit.js +51 -0
  594. package/test/sap/ui/core/qunit/mvc/XMLView.qunit.js +9 -8
  595. package/test/sap/ui/core/qunit/mvc/extensions/Controllerextensions.qunit.js +4 -4
  596. package/test/sap/ui/core/qunit/mvc/extensions/Controllerextensions_legacy.qunit.js +4 -4
  597. package/test/sap/ui/core/qunit/mvc/testdata/Async.view.xml +1 -1
  598. package/test/sap/ui/core/qunit/mvc/testdata/AsyncTypedView.js +5 -1
  599. package/test/sap/ui/core/qunit/odata/AnnotationParserNoFakeService.qunit.js +2 -7
  600. package/test/sap/ui/core/qunit/odata/ODataMessageParser.qunit.js +1 -1
  601. package/test/sap/ui/core/qunit/odata/ODataMessageParserNoFakeService.qunit.js +2 -8
  602. package/test/sap/ui/core/qunit/odata/ODataMetadataNoFakeService.qunit.js +68 -9
  603. package/test/sap/ui/core/qunit/odata/type/DateTimeBase.qunit.js +24 -0
  604. package/test/sap/ui/core/qunit/odata/v2/Context.qunit.js +2 -7
  605. package/test/sap/ui/core/qunit/odata/v2/ODataContextBindingNoFakeService.qunit.js +2 -7
  606. package/test/sap/ui/core/qunit/odata/v2/ODataListBindingNoFakeService.qunit.js +31 -17
  607. package/test/sap/ui/core/qunit/odata/v2/ODataModel.integration.qunit.js +260 -56
  608. package/test/sap/ui/core/qunit/odata/v2/ODataModelNoFakeService.qunit.js +70 -15
  609. package/test/sap/ui/core/qunit/odata/v2/ODataPropertyBindingNoFakeService.qunit.js +2 -7
  610. package/test/sap/ui/core/qunit/odata/v2/ODataTreeBindingFlatNoFakeService.qunit.js +4 -9
  611. package/test/sap/ui/core/qunit/odata/v2/ODataTreeBindingNoFakeService.qunit.js +2 -7
  612. package/test/sap/ui/core/qunit/odata/v2/V2ODataModel.qunit.js +1 -1
  613. package/test/sap/ui/core/qunit/odata/v2/_CreatedContextsCache.qunit.js +2 -7
  614. package/test/sap/ui/core/qunit/odata/v4/AnnotationHelper.qunit.js +1 -1
  615. package/test/sap/ui/core/qunit/odata/v4/Context.qunit.js +55 -22
  616. package/test/sap/ui/core/qunit/odata/v4/ODataBinding.qunit.js +184 -151
  617. package/test/sap/ui/core/qunit/odata/v4/ODataContextBinding.qunit.js +60 -30
  618. package/test/sap/ui/core/qunit/odata/v4/ODataListBinding.qunit.js +305 -69
  619. package/test/sap/ui/core/qunit/odata/v4/ODataMetaModel.qunit.js +20 -69
  620. package/test/sap/ui/core/qunit/odata/v4/ODataModel.integration.qunit.js +1282 -255
  621. package/test/sap/ui/core/qunit/odata/v4/ODataModel.qunit.js +90 -61
  622. package/test/sap/ui/core/qunit/odata/v4/ODataModel.realOData.qunit.js +0 -3
  623. package/test/sap/ui/core/qunit/odata/v4/ODataParentBinding.qunit.js +283 -170
  624. package/test/sap/ui/core/qunit/odata/v4/ODataPropertyBinding.qunit.js +103 -78
  625. package/test/sap/ui/core/qunit/odata/v4/data/metadata.json +2 -1
  626. package/test/sap/ui/core/qunit/odata/v4/data/metadata.xml +4 -0
  627. package/test/sap/ui/core/qunit/odata/v4/data/metadata_special_cases.xml +2 -0
  628. package/test/sap/ui/core/qunit/odata/v4/lib/_AggregationCache.qunit.js +151 -1
  629. package/test/sap/ui/core/qunit/odata/v4/lib/_AggregationHelper.qunit.js +24 -11
  630. package/test/sap/ui/core/qunit/odata/v4/lib/_Cache.qunit.js +279 -458
  631. package/test/sap/ui/core/qunit/odata/v4/lib/_Helper.qunit.js +204 -3
  632. package/test/sap/ui/core/qunit/odata/v4/lib/_MetadataRequestor.qunit.js +7 -3
  633. package/test/sap/ui/core/qunit/odata/v4/lib/_Requestor.qunit.js +145 -26
  634. package/test/sap/ui/core/qunit/odata/v4/testsuite.odatav4.qunit.js +4 -0
  635. package/test/sap/ui/core/qunit/opa/_LogCollector.qunit.js +1 -1
  636. package/test/sap/ui/core/qunit/opa/matchers/LabelFor.qunit.js +4 -2
  637. package/test/sap/ui/core/qunit/opa/matchers/_Busy.qunit.js +129 -2
  638. package/test/sap/ui/core/qunit/opa/matchers/_Editable.qunit.js +5 -1
  639. package/test/sap/ui/core/qunit/performance/trace/FESR.qunit.js +5 -0
  640. package/test/sap/ui/core/qunit/resource/ResourceModel.qunit.js +17 -37
  641. package/test/sap/ui/core/qunit/routing/HashChanger.qunit.js +1 -6
  642. package/test/sap/ui/core/qunit/routing/RouterHashChanger.qunit.js +1 -10
  643. package/test/sap/ui/core/qunit/routing/async/Router.qunit.js +1 -22
  644. package/test/sap/ui/core/qunit/routing/async/Target.qunit.js +1 -4
  645. package/test/sap/ui/core/qunit/routing/fixture/Async1.view.xml +1 -1
  646. package/test/sap/ui/core/qunit/rule/model/modelSupport.qunit.js +34 -1
  647. package/test/sap/ui/core/qunit/testdata/fastnavigation/view/FastNavigation.view.xml +2 -2
  648. package/test/sap/ui/core/qunit/testdata/libraries/resourcebundle/lib1/i18n.properties +1 -0
  649. package/test/sap/ui/core/qunit/testdata/libraries/resourcebundle/lib1/library.js +10 -0
  650. package/test/sap/ui/core/qunit/testdata/libraries/resourcebundle/lib1/manifest.json +10 -0
  651. package/test/sap/ui/core/qunit/testdata/libraries/resourcebundle/lib2/library.js +10 -0
  652. package/test/sap/ui/core/qunit/testdata/libraries/resourcebundle/lib2/messagebundle.properties +1 -0
  653. package/test/sap/ui/core/qunit/testdata/xml-require/helper/Formatter.js +7 -4
  654. package/test/sap/ui/core/qunit/testdata/xml-require/view/XMLTemplateProcessorAsync_require_in_html.view.xml +36 -0
  655. package/test/sap/ui/core/qunit/testsuites/testsuite.databinding.qunit.js +3 -0
  656. package/test/sap/ui/core/qunit/testsuites/testsuite.theming.qunit.js +29 -0
  657. package/test/sap/ui/core/qunit/types/DateFormatTimezones.qunit.js +1381 -1570
  658. package/test/sap/ui/core/qunit/types/SimpleType.qunit.js +16 -2
  659. package/test/sap/ui/core/qunit/types/Types.qunit.js +2 -37
  660. package/test/sap/ui/core/qunit/types/testsuite.types.qunit.js +1 -1
  661. package/test/sap/ui/core/qunit/util/Popup.qunit.js +7 -11
  662. package/test/sap/ui/core/qunit/util/SyncPromise.qunit.js +4 -1
  663. package/test/sap/ui/core/qunit/util/XMLPreprocessor.qunit.js +3 -1
  664. package/test/sap/ui/core/qunit/util/jQuery.sap.Version.qunit.js +3 -0
  665. package/test/sap/ui/core/qunit/util/jQuery.sap.measure.qunit.js +16 -11
  666. package/test/sap/ui/core/qunit/util/reflection/BaseTreeModifier.qunit.js +1 -1
  667. package/test/sap/ui/core/qunit/xml/XMLListBinding.qunit.js +1 -3
  668. package/test/sap/ui/core/qunit/xml/XMLModel.qunit.js +4 -14
  669. package/test/sap/ui/core/qunit/xml/XMLPropertyBinding.qunit.js +7 -11
  670. package/test/sap/ui/core/qunit/xml/XMLTreeBinding.qunit.js +1 -1
  671. package/test/sap/ui/core/qunit/xml/XMLTwoWay.qunit.js +3 -7
  672. package/test/sap/ui/core/relnotes/changes-1.115.json +1 -37
  673. package/test/sap/ui/core/relnotes/changes-1.116.json +71 -0
  674. package/test/sap/ui/core/relnotes/changes-1.117.json +127 -0
  675. package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/firstItem-contextMenu.ref.lnk +1 -1
  676. package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/initial.ref.lnk +1 -1
  677. package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/lastItem-contextMenu.ref.lnk +1 -1
  678. package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/leftDownBtn-contextMenu.ref.lnk +1 -1
  679. package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/myButtonSample-contextMenu.ref.lnk +1 -1
  680. package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/rightDownBtn-contextMenu.ref.lnk +1 -1
  681. package/test/sap/ui/core/visual/images/HyphenationPlayground/windows/1600x1200/chrome/horizon/ltr/cozy/19_thirdParty_language_sl.ref.lnk +1 -1
  682. package/test/testsuite/js/samples.js +2 -0
  683. package/ui5.yaml +166 -1
  684. package/src/sap/ui/core/util/MockServerAnnotationsHandler.js +0 -45
  685. /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.115.1
236
+ * @version 1.117.0
232
237
  */
233
238
  ODataModel = Model.extend("sap.ui.model.odata.v4.ODataModel",
234
239
  /** @lends sap.ui.model.odata.v4.ODataModel.prototype */{
@@ -347,13 +352,13 @@ 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 = {
354
360
  fetchEntityContainer : this.oMetaModel.fetchEntityContainer.bind(this.oMetaModel),
355
361
  fetchMetadata : this.oMetaModel.fetchObject.bind(this.oMetaModel),
356
- fireMessageChange : this.fireMessageChange.bind(this),
357
362
  fireDataReceived : this.fireDataReceived.bind(this),
358
363
  fireDataRequested : this.fireDataRequested.bind(this),
359
364
  fireSessionTimeout : function () {
@@ -372,10 +377,13 @@ sap.ui.define([
372
377
  }
373
378
  },
374
379
  reportStateMessages : this.reportStateMessages.bind(this),
375
- reportTransitionMessages : this.reportTransitionMessages.bind(this)
380
+ reportTransitionMessages : this.reportTransitionMessages.bind(this),
381
+ updateMessages : function (aOldMessages, aNewMessages) {
382
+ MessageManager.updateMessages(aOldMessages, aNewMessages);
383
+ }
376
384
  };
377
385
  this.oRequestor = _Requestor.create(this.sServiceUrl, this.oInterface, this.mHeaders,
378
- mUriParameters, sODataVersion);
386
+ mUriParameters, sODataVersion, mParameters.withCredentials);
379
387
  this.changeHttpHeaders(mParameters.httpHeaders);
380
388
  this.bEarlyRequests = mParameters.earlyRequests;
381
389
  if (this.bEarlyRequests) {
@@ -455,12 +463,12 @@ sap.ui.define([
455
463
  * the entity is also available.
456
464
  *
457
465
  * @param {sap.ui.base.Event} oEvent
458
- * @param {object} oEvent.getParameters()
459
- * @param {object} [oEvent.getParameters().data]
466
+ * @param {object} oEvent.getParameters
467
+ * @param {object} [oEvent.getParameters.data]
460
468
  * An empty data object if a back-end request succeeds
461
- * @param {Error} [oEvent.getParameters().error]
469
+ * @param {Error} [oEvent.getParameters.error]
462
470
  * The error object if a back-end request failed.
463
- * @param {string} [oEvent.getParameters().path]
471
+ * @param {string} [oEvent.getParameters.path]
464
472
  * The absolute path to the entity which caused the event. The path is only provided for
465
473
  * additional property requests; for other requests it is <code>undefined</code>.
466
474
  *
@@ -497,8 +505,8 @@ sap.ui.define([
497
505
  * </ul>
498
506
  *
499
507
  * @param {sap.ui.base.Event} oEvent
500
- * @param {object} oEvent.getParameters()
501
- * @param {string} [oEvent.getParameters().path]
508
+ * @param {object} oEvent.getParameters
509
+ * @param {string} [oEvent.getParameters.path]
502
510
  * The absolute path to the entity which caused the event. The path is only provided for
503
511
  * additional property requests; for other requests it is <code>undefined</code>.
504
512
  *
@@ -526,20 +534,20 @@ sap.ui.define([
526
534
  * not user input.
527
535
  *
528
536
  * @param {sap.ui.base.Event} oEvent
529
- * @param {object} oEvent.getParameters()
530
- * @param {sap.ui.model.Context} [oEvent.getParameters().context]
537
+ * @param {object} oEvent.getParameters
538
+ * @param {sap.ui.model.Context} [oEvent.getParameters.context]
531
539
  * The property binding's {@link sap.ui.model.Binding#getContext context}, if available
532
- * @param {string} oEvent.getParameters().path
540
+ * @param {string} oEvent.getParameters.path
533
541
  * The property binding's {@link sap.ui.model.Binding#getPath path}
534
- * @param {Promise} [oEvent.getParameters().promise]
542
+ * @param {Promise<void>} [oEvent.getParameters.promise]
535
543
  * A promise on the outcome of the PATCH request, much like
536
544
  * {@link sap.ui.model.odata.v4.Context#setProperty} provides it for
537
545
  * <code>bRetry === true</code>; missing in case there is no PATCH
538
- * @param {sap.ui.model.ChangeReason} oEvent.getParameters().reason
546
+ * @param {sap.ui.model.ChangeReason} oEvent.getParameters.reason
539
547
  * The reason for the property change: always <code>sap.ui.model.ChangeReason.Binding</code>
540
- * @param {string} oEvent.getParameters().resolvedPath
548
+ * @param {string} oEvent.getParameters.resolvedPath
541
549
  * The property binding's {@link sap.ui.model.Binding#getResolvedPath resolved path}
542
- * @param {any} oEvent.getParameters().value
550
+ * @param {any} oEvent.getParameters.value
543
551
  * The property binding's new
544
552
  * {@link sap.ui.model.odata.v4.ODataPropertyBinding#getValue value}
545
553
  *
@@ -1498,10 +1506,10 @@ sap.ui.define([
1498
1506
  * If <code>true</code>, deletion fails if the entity does not exist (HTTP status code 404 or
1499
1507
  * 412 due to the <code>If-Match: *</code> header); otherwise we assume that it has already
1500
1508
  * been deleted by someone else and report success
1501
- * @returns {Promise}
1502
- * A promise resolving when the delete succeeded, and rejecting with an instance of Error
1503
- * otherwise. In the latter case the HTTP status code of the response is given in the error's
1504
- * 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>.
1505
1513
  * @throws {Error} If
1506
1514
  * <ul>
1507
1515
  * <li> the path does not start with a '/',
@@ -1543,6 +1551,7 @@ sap.ui.define([
1543
1551
  ).catch(function (oError) {
1544
1552
  if (bRejectIfNotFound
1545
1553
  || !(oError.status === 404 || bInAllBindings && oError.status === 412)) {
1554
+ that.reportError("Failed to delete " + aResults[0], sClassName, oError);
1546
1555
  throw oError;
1547
1556
  } // else: map 404/412 to 204
1548
1557
  }).then(function () {
@@ -1708,10 +1717,6 @@ sap.ui.define([
1708
1717
  }
1709
1718
  };
1710
1719
 
1711
- ODataModel.prototype.fireMessageChange = function (mParameters) {
1712
- MessageManager.updateMessages(mParameters.oldMessages, mParameters.newMessages);
1713
- };
1714
-
1715
1720
  /**
1716
1721
  * Returns the model's bindings.
1717
1722
  *
@@ -2408,7 +2413,7 @@ sap.ui.define([
2408
2413
  });
2409
2414
  });
2410
2415
  if (aNewMessages.length || aOldMessages.length) {
2411
- this.fireMessageChange({newMessages : aNewMessages, oldMessages : aOldMessages});
2416
+ MessageManager.updateMessages(aOldMessages, aNewMessages);
2412
2417
  }
2413
2418
  };
2414
2419
 
@@ -2427,12 +2432,10 @@ sap.ui.define([
2427
2432
  var that = this;
2428
2433
 
2429
2434
  if (aMessages && aMessages.length) {
2430
- this.fireMessageChange({
2431
- newMessages : aMessages.map(function (oMessage) {
2432
- oMessage.transition = true;
2433
- return that.createUI5Message(oMessage, sResourcePath);
2434
- })
2435
- });
2435
+ MessageManager.updateMessages(undefined, aMessages.map(function (oMessage) {
2436
+ oMessage.transition = true;
2437
+ return that.createUI5Message(oMessage, sResourcePath);
2438
+ }));
2436
2439
  }
2437
2440
  };
2438
2441
 
@@ -2525,7 +2528,7 @@ sap.ui.define([
2525
2528
  *
2526
2529
  * @param {sap.ui.model.odata.v4.Context} oEntityContext
2527
2530
  * A context in this model which must point to a non-contained OData entity
2528
- * @returns {Promise}
2531
+ * @returns {Promise<string>}
2529
2532
  * A promise which is resolved with the canonical path (e.g. "/SalesOrderList('0500000000')")
2530
2533
  * in case of success, or rejected with an instance of <code>Error</code> in case of failure,
2531
2534
  * e.g. when the given context does not point to an entity
@@ -2570,8 +2573,8 @@ sap.ui.define([
2570
2573
  * The absolute paths to request side effects for; each path must not start with the fully
2571
2574
  * qualified container name.
2572
2575
  * @returns {sap.ui.base.SyncPromise|undefined}
2573
- * A promise resolving without a defined result, or rejecting with an error if loading of side
2574
- * 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
2575
2578
  *
2576
2579
  * @private
2577
2580
  */
@@ -2789,8 +2792,8 @@ sap.ui.define([
2789
2792
  *
2790
2793
  * @param {string} sGroupId
2791
2794
  * A valid group ID as specified in {@link sap.ui.model.odata.v4.ODataModel}.
2792
- * @returns {Promise<undefined>}
2793
- * 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
2794
2797
  * rejected with an error if the batch request itself fails
2795
2798
  * @throws {Error}
2796
2799
  * If the given group ID is not a valid group ID or has
@@ -2857,10 +2860,12 @@ sap.ui.define([
2857
2860
  /**
2858
2861
  * Cleans up the optimistic batch cache to a given point in time.
2859
2862
  *
2860
- * @param {Date} [dOlderThan] The point in time from which on older cache entries are deleted.
2861
- * If not supplied, all optimistic batch entries are deleted.
2862
- * @returns {Promise} A promise resolving without a defined result, or rejecting with an error
2863
- * 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.
2864
2869
  *
2865
2870
  * @experimental As of version 1.102.0
2866
2871
  * @private
@@ -31,6 +31,7 @@ sap.ui.define([
31
31
  this.mAggregatedQueryOptions = {};
32
32
  // whether the aggregated query options are processed the first time
33
33
  this.bAggregatedQueryOptionsInitial = true;
34
+ this.mCanUseCachePromiseByChildPath = {};
34
35
  // auto-$expand/$select: promises to wait until child bindings have provided
35
36
  // their path and query options
36
37
  this.aChildCanUseCachePromises = [];
@@ -215,28 +216,33 @@ sap.ui.define([
215
216
  * @param {object} mQueryOptions - The query options to be merged
216
217
  * @param {string} sBaseMetaPath - This binding's meta path
217
218
  * @param {boolean} bCacheImmutable - Whether the cache of this binding is immutable
218
- * @param {boolean} bIsProperty - Whether the child is a property binding
219
+ * @param {boolean} [bIsProperty] - Whether the child is a property binding
219
220
  * @returns {boolean} Whether the query options can be fulfilled by this binding
220
221
  *
221
222
  * @private
222
223
  */
223
224
  ODataParentBinding.prototype.aggregateQueryOptions = function (mQueryOptions, sBaseMetaPath,
224
225
  bCacheImmutable, bIsProperty) {
225
- var mAggregatedQueryOptionsClone = _Helper.merge({},
226
+ var mAggregatedQueryOptionsClone = _Helper.clone(
226
227
  bCacheImmutable && this.mLateQueryOptions || this.mAggregatedQueryOptions),
227
228
  that = this;
228
229
 
229
230
  /*
230
231
  * Recursively merges the given query options into the given aggregated query options.
231
232
  *
232
- * @param {object} mAggregatedQueryOptions The aggregated query options
233
- * @param {object} mQueryOptions0 The query options to merge into the aggregated query
234
- * options
235
- * @param {string} sMetaPath The meta path for the current $expand
236
- * @param {boolean} [bInsideExpand] Whether the given query options are inside a $expand
237
- * @param {boolean} [bAdd] Whether to add the given query options because they are in a
238
- * $expand that has not been aggregated yet
239
- * @returns {boolean} Whether the query options can be fulfilled by this binding
233
+ * @param {object} mAggregatedQueryOptions
234
+ * The aggregated query options
235
+ * @param {object} mQueryOptions0
236
+ * The query options to merge into the aggregated query options
237
+ * @param {string} [sMetaPath]
238
+ * The meta path for the current $expand (only used if cache is immutable)
239
+ * @param {boolean} [bInsideExpand]
240
+ * Whether the given query options are inside a $expand
241
+ * @param {boolean} [bAdd]
242
+ * Whether to add the given query options because they are in a $expand that has not been
243
+ * aggregated yet
244
+ * @returns {boolean}
245
+ * Whether the query options can be fulfilled by this binding
240
246
  */
241
247
  function merge(mAggregatedQueryOptions, mQueryOptions0, sMetaPath, bInsideExpand, bAdd) {
242
248
  /*
@@ -306,10 +312,13 @@ sap.ui.define([
306
312
  }
307
313
 
308
314
  if (merge(mAggregatedQueryOptionsClone, mQueryOptions, sBaseMetaPath)) {
309
- if (!bCacheImmutable) {
310
- this.mAggregatedQueryOptions = mAggregatedQueryOptionsClone;
311
- } else {
315
+ if (bCacheImmutable) {
312
316
  this.mLateQueryOptions = mAggregatedQueryOptionsClone;
317
+ } else {
318
+ this.mAggregatedQueryOptions = mAggregatedQueryOptionsClone;
319
+ if (this.mLateQueryOptions) {
320
+ merge(this.mLateQueryOptions, mQueryOptions);
321
+ }
313
322
  }
314
323
  return true;
315
324
  }
@@ -450,9 +459,10 @@ sap.ui.define([
450
459
  * parent context changed.
451
460
  *
452
461
  * @returns {sap.ui.base.SyncPromise}
453
- * A promise resolving without a defined result when the check is finished, or rejecting in
454
- * case of an error
455
- * @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
456
466
  *
457
467
  * @private
458
468
  */
@@ -704,14 +714,14 @@ sap.ui.define([
704
714
  * @param {sap.ui.model.odata.v4.Context} oContext
705
715
  * A context of this binding which is the direct or indirect parent of the child binding.
706
716
  * Initially it is the child binding's parent context (See
707
- * {@link sap.ui.model.odata.v4.ODataBinding#fetchQueryOptionsForOwnCache}). When a binding
708
- * delegates up to its parent binding, it passes its own parent context adjusting
717
+ * {@link sap.ui.model.odata.v4.ODataBinding#fetchOrGetQueryOptionsForOwnCache}). When a
718
+ * binding delegates up to its parent binding, it passes its own parent context adjusting
709
719
  * <code>sChildPath</code> accordingly.
710
720
  * @param {string} sChildPath
711
721
  * The child binding's binding path relative to <code>oContext</code>
712
- * @param {object|sap.ui.base.SyncPromise} vChildQueryOptions
713
- * The child binding's (aggregated) query options or a promise resolving with them
714
- * @param {boolean} bIsProperty
722
+ * @param {object|sap.ui.base.SyncPromise} [vChildQueryOptions={}]
723
+ * The child binding's (aggregated) query options (if any) or a promise resolving with them
724
+ * @param {boolean} [bIsProperty]
715
725
  * Whether the child is a property binding
716
726
  * @returns {sap.ui.base.SyncPromise}
717
727
  * A promise resolved with the reduced path for the child binding if the child binding can use
@@ -726,7 +736,7 @@ sap.ui.define([
726
736
  // getBaseForPathReduction must be called early, because the (virtual) parent context may be
727
737
  // lost again when the path is needed
728
738
  var sBaseForPathReduction = this.getBaseForPathReduction(),
729
- sBaseMetaPath = _Helper.getMetaPath(oContext.getPath()),
739
+ sBaseMetaPath,
730
740
  bCacheImmutable,
731
741
  oCanUseCachePromise,
732
742
  // whether this binding is an operation or depends on one
@@ -782,6 +792,23 @@ sap.ui.define([
782
792
  return SyncPromise.resolve(sResolvedChildPath);
783
793
  }
784
794
 
795
+ oCanUseCachePromise = this.mCanUseCachePromiseByChildPath[sChildPath];
796
+ if (oCanUseCachePromise && bIsProperty) {
797
+ return oCanUseCachePromise.then(function (sOldReducedPath) {
798
+ if (!sOldReducedPath) {
799
+ return undefined;
800
+ }
801
+ // Note: sResolvedChildPath could be "/SalesOrderList('42')/SO_2_SOITEM/0/Note"
802
+ // w/ index (thus getMetaPath helps), but getStrippedMetaPath makes no difference
803
+ if (!sChildPath.includes("/")
804
+ || _Helper.getMetaPath(sOldReducedPath)
805
+ === _Helper.getMetaPath(sResolvedChildPath)) {
806
+ return sResolvedChildPath;
807
+ }
808
+ return oMetaModel.getReducedPath(sResolvedChildPath, sBaseForPathReduction);
809
+ });
810
+ }
811
+
785
812
  // Note: this.oCachePromise exists for all bindings except operation bindings; it might
786
813
  // become pending again
787
814
  bCacheImmutable = this.oCachePromise.isRejected()
@@ -789,16 +816,17 @@ sap.ui.define([
789
816
  || oContext.isEffectivelyKeptAlive() // no index when not in aContexts
790
817
  || this.oCache === null
791
818
  || this.oCache && this.oCache.hasSentRequest();
819
+ sBaseMetaPath = _Helper.getMetaPath(oContext.getPath());
792
820
  aPromises = [
793
- this.doFetchQueryOptions(oParentContext),
821
+ this.doFetchOrGetQueryOptions(oParentContext),
794
822
  // After access to complete meta path of property, the metadata of all prefix paths
795
823
  // is loaded so that synchronous access in wrapChildQueryOptions via getObject is
796
- // possible
824
+ // possible - as well as #getReducedPath
797
825
  fetchPropertyAndType(),
798
826
  vChildQueryOptions
799
827
  ];
800
828
  oCanUseCachePromise = SyncPromise.all(aPromises).then(function (aResult) {
801
- var mChildQueryOptions = aResult[2],
829
+ var mChildQueryOptions = aResult[2] || {},
802
830
  mWrappedChildQueryOptions,
803
831
  mLocalQueryOptions = aResult[0],
804
832
  oProperty = aResult[1],
@@ -819,7 +847,7 @@ sap.ui.define([
819
847
  that.bHasPathReductionToParent = true;
820
848
  return oParentContext.getBinding().fetchIfChildCanUseCache(oParentContext,
821
849
  _Helper.getRelativePath(sResolvedChildPath, oParentContext.getPath()),
822
- vChildQueryOptions);
850
+ mChildQueryOptions, bIsProperty);
823
851
  }
824
852
 
825
853
  if (bDependsOnOperation || sReducedChildMetaPath === "$count"
@@ -828,8 +856,8 @@ sap.ui.define([
828
856
  }
829
857
 
830
858
  if (that.bAggregatedQueryOptionsInitial) {
831
- that.selectKeyProperties(mLocalQueryOptions, sBaseMetaPath);
832
859
  that.mAggregatedQueryOptions = _Helper.clone(mLocalQueryOptions);
860
+ that.selectKeyProperties(that.mAggregatedQueryOptions, sBaseMetaPath);
833
861
  that.bAggregatedQueryOptionsInitial = false;
834
862
  }
835
863
  if (bIsAdvertisement) {
@@ -869,8 +897,7 @@ sap.ui.define([
869
897
  that.oCache.setLateQueryOptions(that.mLateQueryOptions);
870
898
  } else if (that.oCache === null) {
871
899
  return oParentContext.getBinding()
872
- .fetchIfChildCanUseCache(oParentContext, that.sPath,
873
- SyncPromise.resolve(that.mLateQueryOptions))
900
+ .fetchIfChildCanUseCache(oParentContext, that.sPath, that.mLateQueryOptions)
874
901
  .then(function (sPath) {
875
902
  return sPath && sReducedPath;
876
903
  });
@@ -878,6 +905,9 @@ sap.ui.define([
878
905
  }
879
906
  return sReducedPath;
880
907
  });
908
+ if (bIsProperty && !oContext.getPath().includes("($uid=")) {
909
+ this.mCanUseCachePromiseByChildPath[sChildPath] = oCanUseCachePromise;
910
+ }
881
911
  this.aChildCanUseCachePromises.push(oCanUseCachePromise);
882
912
  this.oCachePromise = SyncPromise.all([this.oCachePromise, oCanUseCachePromise])
883
913
  .then(function (aResult) {
@@ -903,6 +933,7 @@ sap.ui.define([
903
933
  that.oModel.reportError(that + ": Failed to enhance query options for "
904
934
  + "auto-$expand/$select for child " + sChildPath, sClassName, oError);
905
935
  });
936
+
906
937
  return oCanUseCachePromise;
907
938
  };
908
939
 
@@ -932,7 +963,7 @@ sap.ui.define([
932
963
 
933
964
  fnFetchMetadata = oModel.oInterface.fetchMetadata;
934
965
  sMetaPath = _Helper.getMetaPath(oModel.resolve(this.sPath, oContext));
935
- mConvertedQueryOptions = Object.assign({}, mQueryOptions, {$select : []});
966
+ mConvertedQueryOptions = Object.assign({}, _Helper.clone(mQueryOptions), {$select : []});
936
967
  return SyncPromise.all(mQueryOptions.$select.map(function (sSelectPath) {
937
968
  var sMetaSelectPath = sMetaPath + "/" + sSelectPath;
938
969
 
@@ -1026,7 +1057,7 @@ sap.ui.define([
1026
1057
  * @private
1027
1058
  */
1028
1059
  ODataParentBinding.prototype.getQueryOptionsForPath = function (sPath, oContext) {
1029
- if (Object.keys(this.mParameters).length) {
1060
+ if (!_Helper.isEmptyObject(this.mParameters)) {
1030
1061
  // binding has parameters -> all query options need to be defined at the binding
1031
1062
  return _Helper.getQueryOptionsForPath(this.getQueryOptionsFromParameters(), sPath);
1032
1063
  }
@@ -1055,8 +1086,8 @@ sap.ui.define([
1055
1086
  * @function
1056
1087
  * @name sap.ui.model.odata.v4.ODataParentBinding.getQueryOptionsFromParameters
1057
1088
  * @private
1058
- * @see sap.ui.model.odata.v4.ODataBinding#fetchQueryOptionsForOwnCache
1059
- * @see sap.ui.model.odata.v4.ODataBinding#doFetchQueryOptions
1089
+ * @see sap.ui.model.odata.v4.ODataBinding#fetchOrGetQueryOptionsForOwnCache
1090
+ * @see sap.ui.model.odata.v4.ODataBinding#doFetchOrGetQueryOptions
1060
1091
  */
1061
1092
 
1062
1093
  /**
@@ -1227,8 +1258,8 @@ sap.ui.define([
1227
1258
  * The context for which to request side effects; if this parameter is missing or if it is the
1228
1259
  * header context of a list binding, the whole binding is affected
1229
1260
  * @returns {sap.ui.base.SyncPromise}
1230
- * A promise resolving without a defined result, or rejecting with an error if loading of side
1231
- * effects fails
1261
+ * A promise which is resolved without a defined result, or rejected with an error if loading
1262
+ * of side effects fails
1232
1263
  * @throws {Error}
1233
1264
  * If this binding does not use own data service requests or if the binding's root binding is
1234
1265
  * suspended and the given group ID is not the binding's group
@@ -1382,7 +1413,8 @@ sap.ui.define([
1382
1413
  * Note: Some API calls are not allowed as long as the binding is in suspended mode, hence the
1383
1414
  * returned promise can be used to get the point in time when these APIs can be called again.
1384
1415
  *
1385
- * @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.
1386
1418
  * @throws {Error}
1387
1419
  * If this binding is relative to an {@link sap.ui.model.odata.v4.Context} or if it is an
1388
1420
  * operation binding or if it is not suspended
@@ -1525,7 +1557,10 @@ sap.ui.define([
1525
1557
 
1526
1558
  aDependentBindings.forEach(function (oDependentBinding) {
1527
1559
  var sPath = _Helper.buildPath(sPrefix,
1528
- _Helper.getMetaPath(oDependentBinding.getPath())),
1560
+ oDependentBinding.oOperation
1561
+ ? "" // operation's name cannot appear inside aPaths!
1562
+ : _Helper.getMetaPath(oDependentBinding.getPath())
1563
+ ),
1529
1564
  aStrippedPaths;
1530
1565
 
1531
1566
  if (oDependentBinding.oCache) {
@@ -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.115.1
45
+ * @version 1.117.0
46
46
  * @borrows sap.ui.model.odata.v4.ODataBinding#getGroupId as #getGroupId
47
47
  * @borrows sap.ui.model.odata.v4.ODataBinding#getRootBinding as #getRootBinding
48
48
  * @borrows sap.ui.model.odata.v4.ODataBinding#getUpdateGroupId as #getUpdateGroupId
@@ -103,7 +103,7 @@ sap.ui.define([
103
103
  this.mQueryOptions = this.oModel.buildQueryOptions(_Helper.clone(mParameters),
104
104
  /*bSystemQueryOptionsAllowed*/sPath.endsWith("$count"));
105
105
  this.vValue = undefined;
106
- // BEWARE: #doFetchQueryOptions uses #isRoot which relies on this.oContext!
106
+ // BEWARE: #doFetchOrGetQueryOptions uses #isRoot which relies on this.oContext!
107
107
  this.fetchCache(oContext);
108
108
  oModel.bindingCreated(this);
109
109
  }
@@ -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
@@ -265,12 +265,9 @@ sap.ui.define([
265
265
  that = this;
266
266
 
267
267
  this.oCheckUpdateCallToken = oCallToken;
268
- if (this.bHasDeclaredType === undefined) {
269
- this.bHasDeclaredType = !!vType;
270
- }
271
- if (sResolvedPath && !this.bHasDeclaredType && this.sInternalType !== "any"
272
- && !bIsMeta) {
273
- vType = oMetaModel.fetchUI5Type(sResolvedPath);
268
+ if (!vType && sResolvedPath && this.sInternalType !== "any" && !bIsMeta
269
+ && !sResolvedPath.includes(sVirtualPath)) {
270
+ vType = oMetaModel.fetchUI5Type(this.sReducedPath || sResolvedPath);
274
271
  }
275
272
  if (vValue === undefined) {
276
273
  // if called via #onChange, we need to fetch implicit values
@@ -289,9 +286,7 @@ sap.ui.define([
289
286
  return vResult;
290
287
  });
291
288
  }
292
- if (!that.sReducedPath || !that.isResolved()) {
293
- // binding is unresolved or context was reset by another call to
294
- // checkUpdateInternal
289
+ if (!that.isResolved()) {
295
290
  return undefined;
296
291
  }
297
292
  if (sResolvedPath.includes(sVirtualPath)) {
@@ -332,7 +327,7 @@ sap.ui.define([
332
327
  });
333
328
  if (bForceUpdate && vValue.isFulfilled()) {
334
329
  if (vType && vType.isFulfilled && vType.isFulfilled()) {
335
- this.setType(vType.getResult(), this.sInternalType);
330
+ this.oType = vType.getResult();
336
331
  }
337
332
  this.vValue = vValue.getResult();
338
333
  }
@@ -346,7 +341,7 @@ sap.ui.define([
346
341
 
347
342
  if (oCallToken === that.oCheckUpdateCallToken) { // latest call to checkUpdateInternal
348
343
  that.oCheckUpdateCallToken = undefined;
349
- that.setType(oType, that.sInternalType);
344
+ that.oType = oType;
350
345
  if (oCallToken.forceUpdate || that.vValue !== vValue) {
351
346
  that.bInitial = false;
352
347
  that.vValue = vValue;
@@ -406,10 +401,10 @@ sap.ui.define([
406
401
 
407
402
  /**
408
403
  * @override
409
- * @see sap.ui.model.odata.v4.ODataBinding#doFetchQueryOptions
404
+ * @see sap.ui.model.odata.v4.ODataBinding#doFetchOrGetQueryOptions
410
405
  */
411
- ODataPropertyBinding.prototype.doFetchQueryOptions = function () {
412
- return this.isRoot() ? SyncPromise.resolve(this.mQueryOptions) : SyncPromise.resolve({});
406
+ ODataPropertyBinding.prototype.doFetchOrGetQueryOptions = function () {
407
+ return this.isRoot() ? this.mQueryOptions : undefined;
413
408
  };
414
409
 
415
410
  /**
@@ -544,8 +539,8 @@ sap.ui.define([
544
539
  * Requests the value of the property binding.
545
540
  *
546
541
  * @returns {Promise<any|undefined>}
547
- * A promise resolving with the resulting value or <code>undefined</code> if it could not be
548
- * 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
549
544
  *
550
545
  * @public
551
546
  * @since 1.69
@@ -565,7 +560,7 @@ sap.ui.define([
565
560
  * The value of the parameter <code>autoExpandSelect</code> for value list models created by
566
561
  * this method. If the value list model is this binding's model, this flag has no effect.
567
562
  * Supported since 1.68.0
568
- * @returns {Promise}
563
+ * @returns {Promise<Object<object>>}
569
564
  * See {@link sap.ui.model.odata.v4.ODataMetaModel#requestValueListInfo}
570
565
  * @throws {Error}
571
566
  * If the binding is unresolved (see {@link sap.ui.model.Binding#isResolved})
@@ -586,7 +581,7 @@ sap.ui.define([
586
581
  /**
587
582
  * Determines which type of value list exists for this property.
588
583
  *
589
- * @returns {Promise}
584
+ * @returns {Promise<sap.ui.model.odata.v4.ValueListType>}
590
585
  * A promise that is resolved with the type of the value list. It is rejected if the property
591
586
  * cannot be found in the metadata.
592
587
  * @throws {Error}
@@ -679,6 +674,15 @@ sap.ui.define([
679
674
  if (this.bRelative) {
680
675
  this.checkSuspended(true);
681
676
  this.deregisterChangeListener();
677
+ if (oContext) {
678
+ if (this.oType && !this.bHasDeclaredType
679
+ // Note: this.oType => this.sReducedPath
680
+ && _Helper.getMetaPath(this.oModel.resolve(this.sPath, oContext))
681
+ !== _Helper.getMetaPath(this.sReducedPath)) {
682
+ this.oType = undefined;
683
+ }
684
+ this.sReducedPath = undefined;
685
+ }
682
686
  }
683
687
  this.oContext = oContext;
684
688
  this.sResumeChangeReason = undefined;
@@ -709,6 +713,7 @@ sap.ui.define([
709
713
  ODataPropertyBinding.prototype.setType = function (oType, _sInternalType) {
710
714
  var oOldType = this.oType;
711
715
 
716
+ this.bHasDeclaredType = !!oType;
712
717
  if (oType && oType.getName() === "sap.ui.model.odata.type.DateTimeOffset") {
713
718
  oType.setV4();
714
719
  }