@openui5/sap.ui.core 1.97.1 → 1.99.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 (403) hide show
  1. package/.eslintrc.json +92 -2
  2. package/.reuse/dep5 +25 -30
  3. package/THIRDPARTY.txt +14 -21
  4. package/package.json +1 -1
  5. package/src/jquery.sap.global.js +1 -1
  6. package/src/jquery.sap.mobile.js +29 -19
  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.storage.js +3 -3
  11. package/src/sap/base/util/restricted/_CancelablePromise.js +1 -1
  12. package/src/sap/base/util/restricted/_castArray.js +1 -1
  13. package/src/sap/base/util/restricted/_compact.js +1 -1
  14. package/src/sap/base/util/restricted/_curry.js +1 -1
  15. package/src/sap/base/util/restricted/_debounce.js +1 -1
  16. package/src/sap/base/util/restricted/_difference.js +1 -1
  17. package/src/sap/base/util/restricted/_differenceBy.js +1 -1
  18. package/src/sap/base/util/restricted/_differenceWith.js +1 -1
  19. package/src/sap/base/util/restricted/_flatMap.js +1 -1
  20. package/src/sap/base/util/restricted/_flatMapDeep.js +1 -1
  21. package/src/sap/base/util/restricted/_flatMapDepth.js +1 -1
  22. package/src/sap/base/util/restricted/_flatten.js +1 -1
  23. package/src/sap/base/util/restricted/_flattenDeep.js +1 -1
  24. package/src/sap/base/util/restricted/_flattenDepth.js +1 -1
  25. package/src/sap/base/util/restricted/_intersection.js +1 -1
  26. package/src/sap/base/util/restricted/_intersectionBy.js +1 -1
  27. package/src/sap/base/util/restricted/_intersectionWith.js +1 -1
  28. package/src/sap/base/util/restricted/_isEqual.js +1 -1
  29. package/src/sap/base/util/restricted/_isEqualWith.js +1 -1
  30. package/src/sap/base/util/restricted/_isNil.js +1 -1
  31. package/src/sap/base/util/restricted/_max.js +1 -1
  32. package/src/sap/base/util/restricted/_merge.js +1 -1
  33. package/src/sap/base/util/restricted/_mergeWith.js +1 -1
  34. package/src/sap/base/util/restricted/_min.js +1 -1
  35. package/src/sap/base/util/restricted/_omit.js +1 -1
  36. package/src/sap/base/util/restricted/_pick.js +1 -1
  37. package/src/sap/base/util/restricted/_pickBy.js +1 -1
  38. package/src/sap/base/util/restricted/_throttle.js +1 -1
  39. package/src/sap/base/util/restricted/_toArray.js +1 -1
  40. package/src/sap/base/util/restricted/_union.js +1 -1
  41. package/src/sap/base/util/restricted/_unionBy.js +1 -1
  42. package/src/sap/base/util/restricted/_unionWith.js +1 -1
  43. package/src/sap/base/util/restricted/_uniq.js +1 -1
  44. package/src/sap/base/util/restricted/_uniqBy.js +1 -1
  45. package/src/sap/base/util/restricted/_uniqWith.js +1 -1
  46. package/src/sap/base/util/restricted/_without.js +1 -1
  47. package/src/sap/base/util/restricted/_xor.js +1 -1
  48. package/src/sap/base/util/restricted/_xorBy.js +1 -1
  49. package/src/sap/base/util/restricted/_xorWith.js +1 -1
  50. package/src/sap/base/util/restricted/_zipObject.js +1 -1
  51. package/src/sap/base/util/restricted/_zipObjectDeep.js +1 -1
  52. package/src/sap/ui/Device.js +80 -168
  53. package/src/sap/ui/Global.js +4 -4
  54. package/src/sap/ui/VersionInfo.js +13 -10
  55. package/src/sap/ui/base/BindingParser.js +34 -7
  56. package/src/sap/ui/base/Event.js +1 -1
  57. package/src/sap/ui/base/EventProvider.js +1 -1
  58. package/src/sap/ui/base/Interface.js +1 -1
  59. package/src/sap/ui/base/ManagedObject.js +48 -27
  60. package/src/sap/ui/base/ManagedObjectMetadata.js +1 -1
  61. package/src/sap/ui/base/Metadata.js +1 -1
  62. package/src/sap/ui/base/Object.js +1 -1
  63. package/src/sap/ui/base/ObjectPool.js +1 -1
  64. package/src/sap/ui/core/.library +2 -2
  65. package/src/sap/ui/core/BusyIndicator.js +1 -1
  66. package/src/sap/ui/core/BusyIndicatorUtils.js +1 -1
  67. package/src/sap/ui/core/Component.js +3 -3
  68. package/src/sap/ui/core/ComponentContainer.js +1 -1
  69. package/src/sap/ui/core/ComponentMetadata.js +1 -1
  70. package/src/sap/ui/core/ComponentSupport.js +1 -1
  71. package/src/sap/ui/core/Configuration.js +79 -14
  72. package/src/sap/ui/core/Control.js +3 -2
  73. package/src/sap/ui/core/Core.js +3 -6
  74. package/src/sap/ui/core/CustomData.js +1 -1
  75. package/src/sap/ui/core/DeclarativeSupport.js +1 -1
  76. package/src/sap/ui/core/Element.js +5 -7
  77. package/src/sap/ui/core/ElementMetadata.js +1 -1
  78. package/src/sap/ui/core/EnabledPropagator.js +1 -1
  79. package/src/sap/ui/core/EventBus.js +1 -1
  80. package/src/sap/ui/core/ExtensionPoint.js +1 -1
  81. package/src/sap/ui/core/FocusHandler.js +1 -1
  82. package/src/sap/ui/core/Fragment.js +1 -1
  83. package/src/sap/ui/core/HTML.js +1 -1
  84. package/src/sap/ui/core/HTMLRenderer.js +1 -1
  85. package/src/sap/ui/core/History.js +1 -1
  86. package/src/sap/ui/core/Icon.js +2 -3
  87. package/src/sap/ui/core/IconRenderer.js +1 -1
  88. package/src/sap/ui/core/IndicationColorSupport.js +1 -1
  89. package/src/sap/ui/core/IntervalTrigger.js +1 -1
  90. package/src/sap/ui/core/InvisibleMessage.js +1 -1
  91. package/src/sap/ui/core/InvisibleRenderer.js +1 -1
  92. package/src/sap/ui/core/InvisibleText.js +1 -1
  93. package/src/sap/ui/core/Item.js +1 -1
  94. package/src/sap/ui/core/LabelEnablement.js +9 -2
  95. package/src/sap/ui/core/LayoutData.js +1 -1
  96. package/src/sap/ui/core/ListItem.js +1 -1
  97. package/src/sap/ui/core/LocalBusyIndicator.js +1 -1
  98. package/src/sap/ui/core/LocalBusyIndicatorRenderer.js +2 -2
  99. package/src/sap/ui/core/LocalBusyIndicatorSupport.js +1 -1
  100. package/src/sap/ui/core/Locale.js +1 -1
  101. package/src/sap/ui/core/LocaleData.js +37 -2
  102. package/src/sap/ui/core/Manifest.js +1 -1
  103. package/src/sap/ui/core/Message.js +1 -1
  104. package/src/sap/ui/core/Placeholder.js +28 -28
  105. package/src/sap/ui/core/Popup.js +3 -3
  106. package/src/sap/ui/core/RenderManager.js +1 -1
  107. package/src/sap/ui/core/Renderer.js +1 -1
  108. package/src/sap/ui/core/ResizeHandler.js +1 -1
  109. package/src/sap/ui/core/ScrollBar.js +1 -1
  110. package/src/sap/ui/core/ScrollBarRenderer.js +1 -1
  111. package/src/sap/ui/core/SeparatorItem.js +1 -1
  112. package/src/sap/ui/core/Title.js +1 -1
  113. package/src/sap/ui/core/TooltipBase.js +2 -2
  114. package/src/sap/ui/core/UIArea.js +1 -1
  115. package/src/sap/ui/core/UIComponent.js +1 -1
  116. package/src/sap/ui/core/UIComponentMetadata.js +1 -1
  117. package/src/sap/ui/core/ValueStateSupport.js +1 -1
  118. package/src/sap/ui/core/VariantLayoutData.js +1 -1
  119. package/src/sap/ui/core/XMLComposite.js +1 -1
  120. package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
  121. package/src/sap/ui/core/_IconRegistry.js +10 -1
  122. package/src/sap/ui/core/date/Japanese.js +1 -1
  123. package/src/sap/ui/core/date/UniversalDateUtils.js +175 -5
  124. package/src/sap/ui/core/delegate/ItemNavigation.js +1 -1
  125. package/src/sap/ui/core/delegate/ScrollEnablement.js +9 -6
  126. package/src/sap/ui/core/dnd/DragAndDrop.js +2 -2
  127. package/src/sap/ui/core/dnd/DragDropBase.js +1 -1
  128. package/src/sap/ui/core/dnd/DragDropInfo.js +1 -1
  129. package/src/sap/ui/core/dnd/DragInfo.js +1 -1
  130. package/src/sap/ui/core/dnd/DropInfo.js +1 -1
  131. package/src/sap/ui/core/format/DateFormat.js +562 -174
  132. package/src/sap/ui/core/format/DateFormatTimezoneDisplay.js +43 -0
  133. package/src/sap/ui/core/format/ListFormat.js +2 -2
  134. package/src/sap/ui/core/format/NumberFormat.js +190 -56
  135. package/src/sap/ui/core/format/TimezoneUtil.js +248 -0
  136. package/src/sap/ui/core/hyphenation/Hyphenation.js +1 -1
  137. package/src/sap/ui/core/library.js +45 -8
  138. package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
  139. package/src/sap/ui/core/message/Message.js +1 -1
  140. package/src/sap/ui/core/message/MessageManager.js +1 -1
  141. package/src/sap/ui/core/message/MessageMixin.js +2 -1
  142. package/src/sap/ui/core/message/MessageParser.js +1 -1
  143. package/src/sap/ui/core/message/MessageProcessor.js +1 -1
  144. package/src/sap/ui/core/messagebundle.properties +4 -0
  145. package/src/sap/ui/core/messagebundle_ar.properties +2 -0
  146. package/src/sap/ui/core/messagebundle_bg.properties +7 -5
  147. package/src/sap/ui/core/messagebundle_ca.properties +2 -0
  148. package/src/sap/ui/core/messagebundle_cs.properties +2 -0
  149. package/src/sap/ui/core/messagebundle_cy.properties +2 -0
  150. package/src/sap/ui/core/messagebundle_da.properties +2 -0
  151. package/src/sap/ui/core/messagebundle_de.properties +3 -1
  152. package/src/sap/ui/core/messagebundle_el.properties +2 -0
  153. package/src/sap/ui/core/messagebundle_en.properties +2 -0
  154. package/src/sap/ui/core/messagebundle_en_GB.properties +2 -0
  155. package/src/sap/ui/core/messagebundle_en_US_sappsd.properties +2 -0
  156. package/src/sap/ui/core/messagebundle_en_US_saprigi.properties +1 -0
  157. package/src/sap/ui/core/messagebundle_en_US_saptrc.properties +2 -0
  158. package/src/sap/ui/core/messagebundle_es.properties +2 -0
  159. package/src/sap/ui/core/messagebundle_es_MX.properties +2 -0
  160. package/src/sap/ui/core/messagebundle_et.properties +2 -0
  161. package/src/sap/ui/core/messagebundle_fi.properties +2 -0
  162. package/src/sap/ui/core/messagebundle_fr.properties +2 -0
  163. package/src/sap/ui/core/messagebundle_fr_CA.properties +2 -0
  164. package/src/sap/ui/core/messagebundle_hi.properties +2 -0
  165. package/src/sap/ui/core/messagebundle_hr.properties +2 -0
  166. package/src/sap/ui/core/messagebundle_hu.properties +2 -0
  167. package/src/sap/ui/core/messagebundle_id.properties +4 -2
  168. package/src/sap/ui/core/messagebundle_it.properties +3 -1
  169. package/src/sap/ui/core/messagebundle_iw.properties +2 -0
  170. package/src/sap/ui/core/messagebundle_ja.properties +2 -0
  171. package/src/sap/ui/core/messagebundle_kk.properties +2 -0
  172. package/src/sap/ui/core/messagebundle_ko.properties +2 -0
  173. package/src/sap/ui/core/messagebundle_lt.properties +2 -0
  174. package/src/sap/ui/core/messagebundle_lv.properties +3 -1
  175. package/src/sap/ui/core/messagebundle_ms.properties +2 -0
  176. package/src/sap/ui/core/messagebundle_nl.properties +2 -0
  177. package/src/sap/ui/core/messagebundle_no.properties +6 -4
  178. package/src/sap/ui/core/messagebundle_pl.properties +2 -0
  179. package/src/sap/ui/core/messagebundle_pt.properties +2 -0
  180. package/src/sap/ui/core/messagebundle_pt_PT.properties +2 -0
  181. package/src/sap/ui/core/messagebundle_ro.properties +2 -0
  182. package/src/sap/ui/core/messagebundle_ru.properties +2 -0
  183. package/src/sap/ui/core/messagebundle_sh.properties +2 -0
  184. package/src/sap/ui/core/messagebundle_sk.properties +2 -0
  185. package/src/sap/ui/core/messagebundle_sl.properties +2 -0
  186. package/src/sap/ui/core/messagebundle_sv.properties +2 -0
  187. package/src/sap/ui/core/messagebundle_th.properties +2 -0
  188. package/src/sap/ui/core/messagebundle_tr.properties +2 -0
  189. package/src/sap/ui/core/messagebundle_uk.properties +2 -0
  190. package/src/sap/ui/core/messagebundle_vi.properties +2 -0
  191. package/src/sap/ui/core/messagebundle_zh_CN.properties +2 -0
  192. package/src/sap/ui/core/messagebundle_zh_TW.properties +2 -0
  193. package/src/sap/ui/core/mvc/HTMLView.js +1 -1
  194. package/src/sap/ui/core/mvc/HTMLViewRenderer.js +1 -1
  195. package/src/sap/ui/core/mvc/JSONView.js +2 -1
  196. package/src/sap/ui/core/mvc/JSONViewRenderer.js +1 -1
  197. package/src/sap/ui/core/mvc/JSView.js +1 -1
  198. package/src/sap/ui/core/mvc/JSViewRenderer.js +1 -1
  199. package/src/sap/ui/core/mvc/TemplateView.js +1 -1
  200. package/src/sap/ui/core/mvc/TemplateViewRenderer.js +1 -1
  201. package/src/sap/ui/core/mvc/View.js +2 -1
  202. package/src/sap/ui/core/mvc/ViewRenderer.js +1 -1
  203. package/src/sap/ui/core/mvc/XMLView.js +16 -3
  204. package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
  205. package/src/sap/ui/core/plugin/LessSupport.js +1 -1
  206. package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -1
  207. package/src/sap/ui/core/postmessage/Bus.js +1 -1
  208. package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
  209. package/src/sap/ui/core/routing/Route.js +6 -6
  210. package/src/sap/ui/core/routing/Router.js +4 -3
  211. package/src/sap/ui/core/routing/Targets.js +17 -13
  212. package/src/sap/ui/core/rules/Model.support.js +95 -8
  213. package/src/sap/ui/core/search/OpenSearchProvider.js +1 -1
  214. package/src/sap/ui/core/search/SearchProvider.js +1 -1
  215. package/src/sap/ui/core/service/Service.js +1 -1
  216. package/src/sap/ui/core/service/ServiceFactory.js +1 -1
  217. package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
  218. package/src/sap/ui/core/support/Plugin.js +1 -1
  219. package/src/sap/ui/core/support/Support.js +1 -1
  220. package/src/sap/ui/core/support/plugins/ControlTree.js +1 -1
  221. package/src/sap/ui/core/support/plugins/Interaction.js +1 -1
  222. package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
  223. package/src/sap/ui/core/support/plugins/Performance.js +1 -1
  224. package/src/sap/ui/core/support/plugins/Selector.js +1 -1
  225. package/src/sap/ui/core/support/plugins/TechInfo.js +1 -1
  226. package/src/sap/ui/core/support/plugins/Trace.js +1 -1
  227. package/src/sap/ui/core/support/plugins/ViewInfo.js +1 -1
  228. package/src/sap/ui/core/support/techinfo/TechnicalInfo.js +1 -5
  229. package/src/sap/ui/core/themes/base/fonts/SAP-icons.woff2 +0 -0
  230. package/src/sap/ui/core/themes/base/parameterClasses.less +21 -21
  231. package/src/sap/ui/core/theming/Parameters.js +22 -142
  232. package/src/sap/ui/core/theming/ThemeHelper.js +26 -37
  233. package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
  234. package/src/sap/ui/core/tmpl/DOMElement.js +1 -1
  235. package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
  236. package/src/sap/ui/core/tmpl/Template.js +1 -1
  237. package/src/sap/ui/core/tmpl/TemplateControl.js +1 -1
  238. package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
  239. package/src/sap/ui/core/util/DraftEnabledMockServer.js +21 -16
  240. package/src/sap/ui/core/util/Export.js +1 -1
  241. package/src/sap/ui/core/util/ExportCell.js +1 -1
  242. package/src/sap/ui/core/util/ExportColumn.js +1 -1
  243. package/src/sap/ui/core/util/ExportRow.js +1 -1
  244. package/src/sap/ui/core/util/ExportType.js +1 -1
  245. package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
  246. package/src/sap/ui/core/util/File.js +1 -1
  247. package/src/sap/ui/core/util/LibraryInfo.js +1 -1
  248. package/src/sap/ui/core/util/MockServer.js +156 -57
  249. package/src/sap/ui/core/util/PasteHelper.js +4 -4
  250. package/src/sap/ui/core/util/XMLPreprocessor.js +16 -4
  251. package/src/sap/ui/core/util/reflection/BaseTreeModifier.js +4 -0
  252. package/src/sap/ui/core/util/reflection/JsControlTreeModifier.js +26 -16
  253. package/src/sap/ui/core/util/reflection/XmlTreeModifier.js +1 -1
  254. package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
  255. package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
  256. package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
  257. package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
  258. package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
  259. package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
  260. package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
  261. package/src/sap/ui/core/ws/ReadyState.js +1 -1
  262. package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
  263. package/src/sap/ui/core/ws/WebSocket.js +1 -1
  264. package/src/sap/ui/debug/ControlTree.js +1 -1
  265. package/src/sap/ui/debug/DebugEnv.js +1 -1
  266. package/src/sap/ui/debug/PropertyList.js +1 -1
  267. package/src/sap/ui/dom/includeStylesheet.js +8 -3
  268. package/src/sap/ui/events/jquery/EventExtension.js +1 -1
  269. package/src/sap/ui/events/jquery/EventSimulation.js +3 -13
  270. package/src/sap/ui/model/Binding.js +4 -3
  271. package/src/sap/ui/model/ClientModel.js +1 -1
  272. package/src/sap/ui/model/ClientTreeBinding.js +1 -1
  273. package/src/sap/ui/model/CompositeBinding.js +1 -1
  274. package/src/sap/ui/model/CompositeDataState.js +26 -4
  275. package/src/sap/ui/model/CompositeType.js +1 -1
  276. package/src/sap/ui/model/ContextBinding.js +1 -1
  277. package/src/sap/ui/model/DataState.js +27 -6
  278. package/src/sap/ui/model/ListBinding.js +2 -2
  279. package/src/sap/ui/model/MetaModel.js +2 -3
  280. package/src/sap/ui/model/Model.js +2 -2
  281. package/src/sap/ui/model/SelectionModel.js +1 -1
  282. package/src/sap/ui/model/SimpleType.js +1 -1
  283. package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
  284. package/src/sap/ui/model/Type.js +1 -1
  285. package/src/sap/ui/model/analytics/AnalyticalBinding.js +40 -30
  286. package/src/sap/ui/model/analytics/ODataModelAdapter.js +2 -15
  287. package/src/sap/ui/model/base/ManagedObjectModel.js +1 -1
  288. package/src/sap/ui/model/json/JSONListBinding.js +1 -1
  289. package/src/sap/ui/model/json/JSONModel.js +1 -1
  290. package/src/sap/ui/model/json/JSONPropertyBinding.js +1 -1
  291. package/src/sap/ui/model/message/MessageListBinding.js +1 -1
  292. package/src/sap/ui/model/message/MessageModel.js +1 -1
  293. package/src/sap/ui/model/message/MessagePropertyBinding.js +1 -1
  294. package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
  295. package/src/sap/ui/model/odata/ODataListBinding.js +1 -1
  296. package/src/sap/ui/model/odata/ODataMessageParser.js +1 -1
  297. package/src/sap/ui/model/odata/ODataMetaModel.js +1 -1
  298. package/src/sap/ui/model/odata/ODataMetadata.js +3 -3
  299. package/src/sap/ui/model/odata/ODataModel.js +2 -2
  300. package/src/sap/ui/model/odata/ODataTreeBinding.js +1 -1
  301. package/src/sap/ui/model/odata/_AnnotationHelperBasics.js +1 -1
  302. package/src/sap/ui/model/odata/_AnnotationHelperExpression.js +1 -1
  303. package/src/sap/ui/model/odata/_ODataMetaModelUtils.js +1 -1
  304. package/src/sap/ui/model/odata/type/Boolean.js +1 -1
  305. package/src/sap/ui/model/odata/type/Byte.js +1 -1
  306. package/src/sap/ui/model/odata/type/Currency.js +1 -1
  307. package/src/sap/ui/model/odata/type/Date.js +1 -1
  308. package/src/sap/ui/model/odata/type/DateTime.js +1 -1
  309. package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
  310. package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
  311. package/src/sap/ui/model/odata/type/DateTimeWithTimezone.js +338 -0
  312. package/src/sap/ui/model/odata/type/Decimal.js +1 -1
  313. package/src/sap/ui/model/odata/type/Double.js +1 -1
  314. package/src/sap/ui/model/odata/type/Guid.js +1 -1
  315. package/src/sap/ui/model/odata/type/Int.js +1 -1
  316. package/src/sap/ui/model/odata/type/Int16.js +1 -1
  317. package/src/sap/ui/model/odata/type/Int32.js +1 -1
  318. package/src/sap/ui/model/odata/type/Int64.js +1 -1
  319. package/src/sap/ui/model/odata/type/ODataType.js +1 -1
  320. package/src/sap/ui/model/odata/type/Raw.js +1 -1
  321. package/src/sap/ui/model/odata/type/SByte.js +1 -1
  322. package/src/sap/ui/model/odata/type/Single.js +1 -1
  323. package/src/sap/ui/model/odata/type/Stream.js +1 -1
  324. package/src/sap/ui/model/odata/type/String.js +1 -1
  325. package/src/sap/ui/model/odata/type/Time.js +1 -1
  326. package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
  327. package/src/sap/ui/model/odata/type/Unit.js +1 -1
  328. package/src/sap/ui/model/odata/type/UnitMixin.js +1 -1
  329. package/src/sap/ui/model/odata/v2/Context.js +57 -4
  330. package/src/sap/ui/model/odata/v2/ODataAnnotations.js +1 -1
  331. package/src/sap/ui/model/odata/v2/ODataContextBinding.js +8 -4
  332. package/src/sap/ui/model/odata/v2/ODataListBinding.js +216 -87
  333. package/src/sap/ui/model/odata/v2/ODataModel.js +89 -50
  334. package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +6 -4
  335. package/src/sap/ui/model/odata/v2/_CreatedContextsCache.js +65 -5
  336. package/src/sap/ui/model/odata/v4/AnnotationHelper.js +21 -22
  337. package/src/sap/ui/model/odata/v4/Context.js +208 -83
  338. package/src/sap/ui/model/odata/v4/ODataBinding.js +53 -27
  339. package/src/sap/ui/model/odata/v4/ODataContextBinding.js +252 -218
  340. package/src/sap/ui/model/odata/v4/ODataListBinding.js +395 -233
  341. package/src/sap/ui/model/odata/v4/ODataMetaModel.js +131 -100
  342. package/src/sap/ui/model/odata/v4/ODataModel.js +341 -259
  343. package/src/sap/ui/model/odata/v4/ODataParentBinding.js +85 -85
  344. package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +85 -79
  345. package/src/sap/ui/model/odata/v4/ODataUtils.js +5 -5
  346. package/src/sap/ui/model/odata/v4/SubmitMode.js +0 -1
  347. package/src/sap/ui/model/odata/v4/ValueListType.js +0 -1
  348. package/src/sap/ui/model/odata/v4/_AnnotationHelperExpression.js +20 -20
  349. package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +3 -5
  350. package/src/sap/ui/model/odata/v4/lib/_AggregationHelper.js +5 -4
  351. package/src/sap/ui/model/odata/v4/lib/_Batch.js +21 -20
  352. package/src/sap/ui/model/odata/v4/lib/_Cache.js +183 -103
  353. package/src/sap/ui/model/odata/v4/lib/_GroupLock.js +1 -1
  354. package/src/sap/ui/model/odata/v4/lib/_Helper.js +22 -18
  355. package/src/sap/ui/model/odata/v4/lib/_MetadataConverter.js +62 -61
  356. package/src/sap/ui/model/odata/v4/lib/_MetadataRequestor.js +1 -1
  357. package/src/sap/ui/model/odata/v4/lib/_Parser.js +52 -43
  358. package/src/sap/ui/model/odata/v4/lib/_Requestor.js +54 -43
  359. package/src/sap/ui/model/odata/v4/lib/_V2MetadataConverter.js +147 -147
  360. package/src/sap/ui/model/odata/v4/lib/_V2Requestor.js +14 -13
  361. package/src/sap/ui/model/odata/v4/lib/_V4MetadataConverter.js +66 -67
  362. package/src/sap/ui/model/resource/ResourceModel.js +1 -1
  363. package/src/sap/ui/model/resource/ResourcePropertyBinding.js +1 -1
  364. package/src/sap/ui/model/type/Boolean.js +1 -1
  365. package/src/sap/ui/model/type/Currency.js +1 -1
  366. package/src/sap/ui/model/type/Date.js +1 -1
  367. package/src/sap/ui/model/type/DateInterval.js +1 -1
  368. package/src/sap/ui/model/type/DateTime.js +1 -1
  369. package/src/sap/ui/model/type/DateTimeInterval.js +1 -1
  370. package/src/sap/ui/model/type/FileSize.js +1 -1
  371. package/src/sap/ui/model/type/Float.js +1 -1
  372. package/src/sap/ui/model/type/Integer.js +1 -1
  373. package/src/sap/ui/model/type/String.js +1 -1
  374. package/src/sap/ui/model/type/Time.js +1 -1
  375. package/src/sap/ui/model/type/TimeInterval.js +1 -1
  376. package/src/sap/ui/model/type/Unit.js +1 -1
  377. package/src/sap/ui/model/xml/XMLListBinding.js +1 -1
  378. package/src/sap/ui/model/xml/XMLModel.js +1 -1
  379. package/src/sap/ui/model/xml/XMLPropertyBinding.js +1 -1
  380. package/src/sap/ui/performance/trace/Passport.js +3 -3
  381. package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
  382. package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +1 -1
  383. package/src/sap/ui/test/BlanketReporter.js +1 -1
  384. package/src/sap/ui/test/Opa5.js +1 -1
  385. package/src/sap/ui/test/TestUtils.js +2 -2
  386. package/src/sap/ui/test/_LogCollector.js +1 -1
  387. package/src/sap/ui/test/actions/Action.js +4 -2
  388. package/src/sap/ui/test/actions/Press.js +51 -2
  389. package/src/sap/ui/test/autowaiter/_XHRWaiter.js +1 -1
  390. package/src/sap/ui/test/starter/createSuite.js +3 -3
  391. package/src/sap/ui/thirdparty/IPv6.js +1 -1
  392. package/src/sap/ui/thirdparty/SecondLevelDomains.js +1 -1
  393. package/src/sap/ui/thirdparty/URI.js +7 -3
  394. package/src/sap/ui/thirdparty/URITemplate.js +1 -1
  395. package/src/sap/ui/thirdparty/jquery-mobile-custom.js +3 -6
  396. package/src/sap/ui/thirdparty/jqueryui/jquery-ui-datepicker.js +143 -3
  397. package/src/sap/ui/thirdparty/jqueryui/jquery-ui-position.js +8 -1
  398. package/src/sap/ui/thirdparty/jszip.js +18 -7
  399. package/src/sap/ui/thirdparty/mobify-carousel.js +1 -1
  400. package/src/sap/ui/util/Mobile.js +17 -0
  401. package/src/sap/ui/util/Storage.js +1 -1
  402. package/src/sap/ui/util/XMLHelper.js +53 -30
  403. package/src/ui5loader.js +4 -4
@@ -201,7 +201,7 @@ sap.ui.define([
201
201
  * This model is not prepared to be inherited from.
202
202
  *
203
203
  * @author SAP SE
204
- * @version 1.97.1
204
+ * @version 1.99.1
205
205
  *
206
206
  * @public
207
207
  * @alias sap.ui.model.odata.v2.ODataModel
@@ -1887,7 +1887,7 @@ sap.ui.define([
1887
1887
  * function lead to a single synchronous call where <code>mChangedEntities</code> is the union
1888
1888
  * of all <code>mChangedEntities</Code> from the asynchronous calls.
1889
1889
  *
1890
- * @param {boolean} bForceUpdate
1890
+ * @param {boolean} [bForceUpdate]
1891
1891
  * The parameter <code>bForceUpdate</code> for the <code>checkUpdate</code> call on the
1892
1892
  * bindings
1893
1893
  * @param {boolean} bAsync
@@ -2922,7 +2922,7 @@ sap.ui.define([
2922
2922
  oResultValue = {};
2923
2923
  for (i = 0; i < aOwnPropSelect.length; i++) {
2924
2924
  sSelect = aOwnPropSelect[i];
2925
- if (oValue[sSelect] !== undefined) {
2925
+ if (oValue[sSelect] !== undefined || oValue.__metadata.created) {
2926
2926
  oResultValue[sSelect] = oValue[sSelect];
2927
2927
  } else {
2928
2928
  Log.fatal("No data loaded for select property: " + sSelect + " of entry: " + that.getKey(oValue));
@@ -4928,7 +4928,10 @@ sap.ui.define([
4928
4928
  };
4929
4929
 
4930
4930
  /**
4931
- * Trigger a <code>POST</code> request to the OData service that was specified in the model constructor.
4931
+ * Trigger a <code>POST</code> request to the OData service that was specified in the model
4932
+ * constructor; see
4933
+ * {@link topic:6c47b2b39db9404582994070ec3d57a2#loio4c4cd99af9b14e08bb72470cc7cabff4 Creating
4934
+ * Entities documentation} for comprehensive information on the topic.
4932
4935
  *
4933
4936
  * Please note that deep creates are not supported and may not work.
4934
4937
  *
@@ -5198,7 +5201,7 @@ sap.ui.define([
5198
5201
  * @param {function} [mParameters.success]
5199
5202
  * A callback function which is called when the data has been successfully retrieved; the
5200
5203
  * handler can have the following parameters: <code>oData</code> and <code>response</code>.
5201
- * @param {Object<string,string>} [mParameters.urlParameters]
5204
+ * @param {Object<string,any>} [mParameters.urlParameters]
5202
5205
  * Maps the function import parameter name as specified in the function import's metadata to
5203
5206
  * its value; the value is formatted based on the parameter's type as specified in the metadata
5204
5207
  * @param {string} [mParameters.batchGroupId]
@@ -5831,11 +5834,10 @@ sap.ui.define([
5831
5834
  * @public
5832
5835
  */
5833
5836
  ODataModel.prototype.submitChanges = function(mParameters) {
5834
- var oRequest, sGroupId, oGroupInfo, fnSuccess, fnError,
5835
- oRequestHandle, vRequestHandleInternal,
5836
- bAborted = false, sMethod, mChangedEntities,
5837
+ var mChangedEntities, fnError, sGroupId, sMethod, oRequestHandle, vRequestHandleInternal,
5838
+ fnSuccess,
5839
+ bAborted = false,
5837
5840
  bRefreshAfterChange = this.bRefreshAfterChange,
5838
- mParams,
5839
5841
  that = this;
5840
5842
 
5841
5843
  if (mParameters) {
@@ -5855,28 +5857,37 @@ sap.ui.define([
5855
5857
  mChangedEntities = merge({}, that.mChangedEntities);
5856
5858
 
5857
5859
  this.oMetadata.loaded().then(function() {
5860
+ var oChange, aChanges, sChangeSetId, i, sRequestGroupId, oRequestGroup;
5861
+
5858
5862
  each(mChangedEntities, function(sKey, oData) {
5859
- oGroupInfo = that._resolveGroup(sKey);
5863
+ var oCreatedInfo, oRequest, oRequestHandle0,
5864
+ oGroupInfo = that._resolveGroup(sKey);
5865
+
5860
5866
  if (oGroupInfo.groupId === sGroupId || !sGroupId) {
5861
5867
  oRequest = that._processChange(sKey, oData, sMethod || that.sDefaultUpdateMethod);
5862
5868
  oRequest.key = sKey;
5863
5869
  //get params for created entries: could contain success/error handler
5864
- mParams = oData.__metadata && oData.__metadata.created ? oData.__metadata.created : {};
5865
- var oRequestHandle = {
5870
+ oCreatedInfo = oData.__metadata && oData.__metadata.created
5871
+ ? oData.__metadata.created
5872
+ : {};
5873
+ oRequestHandle0 = {
5866
5874
  abort: function() {
5867
5875
  oRequest._aborted = true;
5868
5876
  }
5869
5877
  };
5870
5878
  if (oGroupInfo.groupId in that.mDeferredGroups) {
5871
- that._pushToRequestQueue(that.mDeferredRequests, oGroupInfo.groupId, oGroupInfo.changeSetId,
5872
- oRequest, mParams.success, mParams.error, oRequestHandle, bRefreshAfterChange);
5879
+ that._pushToRequestQueue(that.mDeferredRequests, oGroupInfo.groupId,
5880
+ oGroupInfo.changeSetId, oRequest, oCreatedInfo.success,
5881
+ oCreatedInfo.error, oRequestHandle0,
5882
+ oCreatedInfo.refreshAfterChange === undefined
5883
+ ? bRefreshAfterChange
5884
+ : oCreatedInfo.refreshAfterChange);
5873
5885
  }
5874
5886
  }
5875
5887
  });
5876
5888
 
5877
5889
  // Set undefined refreshAfterChange flags
5878
5890
  // If undefined => overwrite with current global refreshAfterChange state
5879
- var sRequestGroupId, sChangeSetId, oRequestGroup, aChanges, oChange, i;
5880
5891
  for (sRequestGroupId in that.mDeferredRequests) {
5881
5892
  oRequestGroup = that.mDeferredRequests[sRequestGroupId];
5882
5893
  for (sChangeSetId in oRequestGroup.changes) {
@@ -6015,6 +6026,9 @@ sap.ui.define([
6015
6026
  that.abortInternalRequest(sGroupId, {requestKey : sKey});
6016
6027
  });
6017
6028
  if (bDeleteCreatedEntities && oCreated) {
6029
+ // remove context synchronously from the list of created contexts to avoid a temporary
6030
+ // empty table row
6031
+ this.oCreatedContextsCache.findAndRemoveContext(this.mContexts["/" + sKey]);
6018
6032
  this._removeEntity(sKey);
6019
6033
  if (oCreated.abort) {
6020
6034
  oCreated.abort(ODataModel._createAbortedError());
@@ -6044,7 +6058,7 @@ sap.ui.define([
6044
6058
  * </ul>
6045
6059
  *
6046
6060
  * @param {array} [aPath]
6047
- * Paths to be be reset; if no array is passed, all changes are reset
6061
+ * Paths to be reset; if no array is passed, all changes are reset
6048
6062
  * @param {boolean} [bAll=false]
6049
6063
  * Whether also deferred requests are taken into account
6050
6064
  * @param {boolean} [bDeleteCreatedEntities=false]
@@ -6136,11 +6150,14 @@ sap.ui.define([
6136
6150
  */
6137
6151
  ODataModel.prototype.setProperty = function(sPath, oValue, oContext, bAsyncUpdate) {
6138
6152
 
6139
- var oOriginalValue, sPropertyPath, mRequests, oRequest, oOriginalEntry, oEntry,
6140
- sResolvedPath, aParts, sKey, oGroupInfo, oRequestHandle, oEntityMetadata,
6141
- mChangedEntities = {}, oEntityInfo = {}, mParams, oChangeObject, bRefreshAfterChange,
6142
- bFunction = false, that = this, bCreated,
6143
- oEntityType, oNavPropRefInfo, bIsNavPropExpanded, mKeys, oRef, sDeepPath;
6153
+ var oContextToActivate, oChangeObject, bCreated, sDeepPath, oEntityMetadata, oEntityType,
6154
+ oEntry, oGroupInfo, bIsNavPropExpanded, sKey, mKeys, oNavPropRefInfo, oOriginalEntry,
6155
+ oOriginalValue, mParams, aParts, sPropertyPath, oRef, bRefreshAfterChange, oRequest,
6156
+ mRequests, oRequestHandle, sResolvedPath,
6157
+ mChangedEntities = {},
6158
+ oEntityInfo = {},
6159
+ bFunction = false,
6160
+ that = this;
6144
6161
 
6145
6162
  function updateChangedEntities(oOriginalObject, oChangedObject) {
6146
6163
  each(oChangedObject,function(sKey) {
@@ -6256,7 +6273,13 @@ sap.ui.define([
6256
6273
 
6257
6274
  bRefreshAfterChange = this._getRefreshAfterChange(undefined, oGroupInfo.groupId);
6258
6275
 
6259
- this.oMetadata.loaded().then(function() {
6276
+ if (oEntry.__metadata.created && !oEntry.__metadata.created.functionImport) {
6277
+ oContextToActivate = this.oCreatedContextsCache.findCreatedContext(sResolvedPath);
6278
+ if (oContextToActivate) {
6279
+ oContextToActivate.activate();
6280
+ }
6281
+ }
6282
+ this.oMetadata.loaded().then(function () {
6260
6283
  oRequestHandle = {
6261
6284
  abort: function() {
6262
6285
  oRequest._aborted = true;
@@ -6494,7 +6517,9 @@ sap.ui.define([
6494
6517
  /**
6495
6518
  * Creates a new entry object which is described by the metadata of the entity type of the
6496
6519
  * specified <code>sPath</code> Name. A context object is returned which can be used to bind
6497
- * against the newly created object.
6520
+ * against the newly created object. See
6521
+ * {@link topic:6c47b2b39db9404582994070ec3d57a2#loio4c4cd99af9b14e08bb72470cc7cabff4 Creating
6522
+ * Entities documentation} for comprehensive information on the topic.
6498
6523
  *
6499
6524
  * For each created entry a request is created and stored in a request queue.
6500
6525
  * The request queue can be submitted by calling {@link #submitChanges}. As long as the context
@@ -6589,6 +6614,10 @@ sap.ui.define([
6589
6614
  * batch request
6590
6615
  * @param {Object<string,string>} [mParameters.headers]
6591
6616
  * A map of headers
6617
+ * @param {boolean} [mParameters.inactive]
6618
+ * Whether the created context is inactive. An inactive context will only be sent to the
6619
+ * server after the first property update. From then on it behaves like any other created
6620
+ * context. Supported since 1.98.0
6592
6621
  * @param {array|object} [mParameters.properties]
6593
6622
  * An array that specifies a set of properties or the entry
6594
6623
  * @param {boolean} [mParameters.refreshAfterChange]
@@ -6610,9 +6639,9 @@ sap.ui.define([
6610
6639
  */
6611
6640
  ODataModel.prototype.createEntry = function (sPath, mParameters) {
6612
6641
  var bCanonical, sChangeSetId, oContext, fnCreated, pCreate, fnCreatedPromiseResolve,
6613
- sDeepPath, fnError, sETag, sExpand, sGroupId, mHeaders, sKey, sNormalizedPath,
6614
- vProperties, bRefreshAfterChange, oRequest, mRequests, fnSuccess, sUrl, aUrlParams,
6615
- mUrlParams,
6642
+ sDeepPath, fnError, sETag, sExpand, sGroupId, mHeaders, bInactive, sKey,
6643
+ sNormalizedPath, vProperties, bRefreshAfterChange, oRequest, mRequests, fnSuccess, sUrl,
6644
+ aUrlParams, mUrlParams,
6616
6645
  oEntity = {},
6617
6646
  sMethod = "POST",
6618
6647
  that = this;
@@ -6631,6 +6660,7 @@ sap.ui.define([
6631
6660
  bRefreshAfterChange = mParameters.refreshAfterChange;
6632
6661
  bCanonical = mParameters.canonicalRequest;
6633
6662
  sExpand = mParameters.expand;
6663
+ bInactive = mParameters.inactive;
6634
6664
  }
6635
6665
  if (sExpand && !this.bUseBatch) {
6636
6666
  throw new Error("The 'expand' parameter is only supported if batch mode is used");
@@ -6764,19 +6794,20 @@ sap.ui.define([
6764
6794
  };
6765
6795
  }
6766
6796
  oEntity.__metadata = {
6767
- type: "" + oEntityMetadata.entityType,
6768
- uri: that.sServiceUrl + '/' + sKey,
6769
- created: {
6770
- key: sNormalizedPath.substring(1), //store path for later POST
6771
- success: fnSuccess,
6772
- error: fnError,
6773
- headers: mHeaders,
6774
- urlParameters: mUrlParams,
6775
- groupId: sGroupId,
6776
- changeSetId: sChangeSetId,
6777
- eTag: sETag
6797
+ type : "" + oEntityMetadata.entityType,
6798
+ uri : that.sServiceUrl + '/' + sKey,
6799
+ created : {
6800
+ changeSetId : sChangeSetId,
6801
+ error : fnError,
6802
+ eTag : sETag,
6803
+ groupId : sGroupId,
6804
+ headers : mHeaders,
6805
+ key : sNormalizedPath.substring(1), //store path for later POST
6806
+ refreshAfterChange : bRefreshAfterChange,
6807
+ success : fnSuccess,
6808
+ urlParameters : mUrlParams
6778
6809
  },
6779
- deepPath: sDeepPath
6810
+ deepPath : sDeepPath
6780
6811
  };
6781
6812
  pCreate = new SyncPromise(function (resolve, reject) {
6782
6813
  fnCreatedPromiseResolve = function () {
@@ -6799,7 +6830,9 @@ sap.ui.define([
6799
6830
  });
6800
6831
 
6801
6832
  sKey = that._addEntity(merge({}, oEntity));
6802
- that.mChangedEntities[sKey] = oEntity;
6833
+ if (!bInactive) {
6834
+ that.mChangedEntities[sKey] = oEntity;
6835
+ }
6803
6836
 
6804
6837
  sUrl = that._createRequestUrlWithNormalizedPath(sNormalizedPath, aUrlParams, that.bUseBatch);
6805
6838
  oRequest = that._createRequest(sUrl, sDeepPath, sMethod, mHeaders, oEntity, sETag);
@@ -6816,7 +6849,7 @@ sap.ui.define([
6816
6849
  oEntity.__metadata.created.contentID = sUID;
6817
6850
  }
6818
6851
 
6819
- oCreatedContext = that.getContext("/" + sKey, sDeepPath, pCreate);
6852
+ oCreatedContext = that.getContext("/" + sKey, sDeepPath, pCreate, bInactive);
6820
6853
 
6821
6854
  oRequest.key = sKey;
6822
6855
  oRequest.created = true;
@@ -6826,11 +6859,14 @@ sap.ui.define([
6826
6859
  mRequests = that.mDeferredRequests;
6827
6860
  }
6828
6861
 
6829
- that.oMetadata.loaded().then(function() {
6830
- that._pushToRequestQueue(mRequests, sGroupId,
6831
- sChangeSetId, oRequest, fnSuccess, fnError, oRequestHandle, bRefreshAfterChange);
6832
- that._processRequestQueueAsync(that.mRequests);
6862
+ that.oMetadata.loaded().then(function () {
6863
+ oCreatedContext.fetchActivated().then(function () {
6864
+ that._pushToRequestQueue(mRequests, sGroupId, sChangeSetId, oRequest, fnSuccess,
6865
+ fnError, oRequestHandle, bRefreshAfterChange);
6866
+ that._processRequestQueueAsync(that.mRequests);
6867
+ });
6833
6868
  });
6869
+
6834
6870
  return oCreatedContext;
6835
6871
  }
6836
6872
 
@@ -7755,9 +7791,9 @@ sap.ui.define([
7755
7791
  };
7756
7792
 
7757
7793
  /**
7758
- * Enriches the context with the deep path information.
7759
- * Gets the OData V2 context instance for the given path. The returned context is cached by the
7760
- * given path.
7794
+ * Gets or creates the OData V2 context for the given path; the returned context is cached by
7795
+ * this path. Enriches the context with the given deep path. In case the context is created, the
7796
+ * parameters <code>oCreatePromise</code> and <code>bInactive</code> are used for the creation.
7761
7797
  *
7762
7798
  * @param {string} sPath
7763
7799
  * The absolute path
@@ -7765,15 +7801,18 @@ sap.ui.define([
7765
7801
  * The absolute deep path representing the same data as the given <code>sPath</code>
7766
7802
  * @param {sap.ui.base.SyncPromise} [oCreatePromise]
7767
7803
  * A created promise as specified in the constructor of {@link sap.ui.model.odata.v2.Context}
7804
+ * @param {boolean} [bInactive]
7805
+ * Whether the created context is inactive
7768
7806
  * @returns {sap.ui.model.odata.v2.Context}
7769
7807
  * The ODate V2 context for the given path
7770
7808
  * @private
7771
7809
  */
7772
- ODataModel.prototype.getContext = function (sPath, sDeepPath, oCreatePromise) {
7810
+ ODataModel.prototype.getContext = function (sPath, sDeepPath, oCreatePromise, bInactive) {
7773
7811
  var oContext = this.mContexts[sPath];
7774
7812
 
7775
7813
  if (!oContext) {
7776
- oContext = this.mContexts[sPath] = new Context(this, sPath, sDeepPath, oCreatePromise);
7814
+ oContext = this.mContexts[sPath]
7815
+ = new Context(this, sPath, sDeepPath, oCreatePromise, bInactive);
7777
7816
  } else {
7778
7817
  oContext.setDeepPath(sDeepPath || oContext.getDeepPath() || sPath);
7779
7818
  }
@@ -7842,7 +7881,7 @@ sap.ui.define([
7842
7881
  * path prefix. Use <code>fullTarget</code> to determine whether a message matches the resolved
7843
7882
  * binding path prefix.
7844
7883
  *
7845
- * @param {string} sMessageTarget
7884
+ * @param {string} sMessagePath
7846
7885
  * The messages target used as key in <code>this.mMessages</code>
7847
7886
  * @param {string} sPathPrefix
7848
7887
  * The resolved binding path prefix
@@ -92,7 +92,7 @@ sap.ui.define([
92
92
  * @extends sap.ui.model.TreeBinding
93
93
  * @hideconstructor
94
94
  * @public
95
- * @version 1.97.1
95
+ * @version 1.99.1
96
96
  */
97
97
  var ODataTreeBinding = TreeBinding.extend("sap.ui.model.odata.v2.ODataTreeBinding", /** @lends sap.ui.model.odata.v2.ODataTreeBinding.prototype */ {
98
98
 
@@ -906,8 +906,7 @@ sap.ui.define([
906
906
  * Retrieves parent ids from a given data set
907
907
  *
908
908
  * @param {Array} aData Lookup array to search for parent ids
909
- * @param {boolean} bExcludeRootNodes Can be set to exclude root node elements
910
- * @returns {Array} Array of all parent ids
909
+ * @returns {Object<string,string>} Map of all parent ids
911
910
  *
912
911
  * @private
913
912
  */
@@ -1379,6 +1378,9 @@ sap.ui.define([
1379
1378
  }
1380
1379
  var sAbsolutePath = this.getResolvedPath();
1381
1380
  if (sAbsolutePath) {
1381
+ if (this.iTotalCollectionCount) {
1382
+ aURLParams.push("$top=" + this.iTotalCollectionCount);
1383
+ }
1382
1384
  this.mRequestHandles[sRequestKey] = this.oModel.read(sAbsolutePath, {
1383
1385
  urlParameters: aURLParams,
1384
1386
  success: fnSuccess,
@@ -1821,7 +1823,7 @@ sap.ui.define([
1821
1823
  * Check whether this Binding would provide new values and in case it changed,fire a change
1822
1824
  * event.
1823
1825
  *
1824
- * @param {boolean} bForceUpdate
1826
+ * @param {boolean} [bForceUpdate]
1825
1827
  * Whether to fire the event regardless of the bindings state
1826
1828
  * @param {object} mChangedEntities
1827
1829
  * A map of changed entities
@@ -33,10 +33,14 @@ sap.ui.define([
33
33
  * The resolved binding path
34
34
  * @param {string} sListID
35
35
  * The identifier for the list showing the data
36
+ * @param {boolean} bAtEnd
37
+ * Whether the context is added at the end; if set to <code>false</code>, the context is added
38
+ * at the beginning. The first call determines the overall position of the contexts.
36
39
  *
37
40
  * @private
38
41
  */
39
- _CreatedContextsCache.prototype.addContext = function (oCreatedContext, sPath, sListID) {
42
+ _CreatedContextsCache.prototype.addContext = function (oCreatedContext, sPath, sListID,
43
+ bAtEnd) {
40
44
  var aContexts, mListIDToContexts;
41
45
 
42
46
  mListIDToContexts = this.mCache[sPath];
@@ -46,9 +50,14 @@ sap.ui.define([
46
50
  aContexts = mListIDToContexts[sListID];
47
51
  if (!aContexts) {
48
52
  aContexts = mListIDToContexts[sListID] = [];
53
+ // store bAtEnd initially because it will determine the overall position of the contexts
54
+ aContexts.bAtEnd = bAtEnd;
55
+ }
56
+ if (bAtEnd) {
57
+ aContexts.push(oCreatedContext);
58
+ } else {
59
+ aContexts.unshift(oCreatedContext);
49
60
  }
50
- // currently we support only bAtEnd === false in ODataListBinding#create
51
- aContexts.unshift(oCreatedContext);
52
61
  };
53
62
 
54
63
  /**
@@ -67,6 +76,36 @@ sap.ui.define([
67
76
  }
68
77
  };
69
78
 
79
+ /**
80
+ * Finds the context in the cache whose path is prefix to or equals the given path.
81
+ *
82
+ * @param {string} sPath
83
+ * The absolute path
84
+ * @returns {sap.ui.model.odata.v2.Context|undefined}
85
+ * The matching context or <code>undefined</code> if no context matches
86
+ *
87
+ * @private
88
+ */
89
+ _CreatedContextsCache.prototype.findCreatedContext = function (sPath) {
90
+ var oContext;
91
+
92
+ Object.values(this.mCache).some(function (mListIDToContexts) {
93
+ return Object.values(mListIDToContexts).some(function (aContextsByListID) {
94
+ return aContextsByListID.some(function (oContext0) {
95
+ if (sPath.startsWith(oContext0.getPath())) {
96
+ oContext = oContext0;
97
+
98
+ return true;
99
+ }
100
+
101
+ return false;
102
+ });
103
+ });
104
+ });
105
+
106
+ return oContext;
107
+ };
108
+
70
109
  /**
71
110
  * Checks whether a given context is contained in the the list of contexts for created entities
72
111
  * and returns the path and list ID.
@@ -104,7 +143,7 @@ sap.ui.define([
104
143
  /**
105
144
  * Gets the contexts for created entities for the given path and list ID.
106
145
  *
107
- * @param {string} [sPath]
146
+ * @param {string} sPath
108
147
  * The resolved binding path
109
148
  * @param {string} sListID
110
149
  * The identifier for the list showing the data
@@ -121,6 +160,27 @@ sap.ui.define([
121
160
  return aContexts ? aContexts.slice() : [];
122
161
  };
123
162
 
163
+ /**
164
+ * Returns whether the contexts for created entities for the given path and list ID are added
165
+ * at the end.
166
+ *
167
+ * @param {string} sPath
168
+ * The resolved binding path
169
+ * @param {string} sListID
170
+ * The identifier for the list showing the data
171
+ * @returns {boolean|undefined}
172
+ * Whether the contexts are added at the end; <code>undefined</code> if there are no contexts
173
+ * for the given path and list ID
174
+ *
175
+ * @private
176
+ */
177
+ _CreatedContextsCache.prototype.isAtEnd = function (sPath, sListID) {
178
+ var mListIDToContexts = this.mCache[sPath],
179
+ aContexts = mListIDToContexts && mListIDToContexts[sListID];
180
+
181
+ return aContexts && aContexts.bAtEnd;
182
+ };
183
+
124
184
  /**
125
185
  * Removes a context from the list of contexts for created entities for the given path and list
126
186
  * ID.
@@ -176,4 +236,4 @@ sap.ui.define([
176
236
  };
177
237
 
178
238
  return _CreatedContextsCache;
179
- }, /* bExport= */ false);
239
+ });
@@ -15,7 +15,6 @@ sap.ui.define([
15
15
  rPaths = /\$(?:(?:Annotation)|(?:(?:Navigation)?Property))?Path/,
16
16
  rSplitPathSegment = /^(.+?\/(\$(?:Annotation)?Path))(\/?)(.*)$/,
17
17
  rUnsupportedPathSegments = /\$(?:Navigation)?PropertyPath/,
18
-
19
18
  /**
20
19
  * @classdesc
21
20
  * A collection of methods which help to consume
@@ -113,16 +112,16 @@ sap.ui.define([
113
112
  * Example for "$AnnotationPath" in the context's path:
114
113
  * <pre>
115
114
  * &lt;Annotations Target="com.sap.gateway.default.iwbep.tea_busi.v0001.EQUIPMENT">
116
- * &lt;Annotation Term="com.sap.vocabularies.UI.v1.Facets">
117
- * &lt;Collection>
118
- * &lt;Record Type="com.sap.vocabularies.UI.v1.ReferenceFacet">
119
- * &lt;PropertyValue Property="Target" AnnotationPath="EQUIPMENT_2_PRODUCT/@com.sap.vocabularies.Common.v1.QuickInfo" />
120
- * &lt;/Record>
121
- * &lt;/Collection>
122
- * &lt;/Annotation>
115
+ * &lt;Annotation Term="com.sap.vocabularies.UI.v1.Facets">
116
+ * &lt;Collection>
117
+ * &lt;Record Type="com.sap.vocabularies.UI.v1.ReferenceFacet">
118
+ * &lt;PropertyValue Property="Target" AnnotationPath="EQUIPMENT_2_PRODUCT/@com.sap.vocabularies.Common.v1.QuickInfo" />
119
+ * &lt;/Record>
120
+ * &lt;/Collection>
121
+ * &lt;/Annotation>
123
122
  * &lt;/Annotations>
124
123
  * &lt;Annotations Target="com.sap.gateway.default.iwbep.tea_busi_product.v0001.Product">
125
- * &lt;Annotation Term="com.sap.vocabularies.Common.v1.QuickInfo" Path="Name" />
124
+ * &lt;Annotation Term="com.sap.vocabularies.Common.v1.QuickInfo" Path="Name" />
126
125
  * &lt;/Annotations>
127
126
  * </pre>
128
127
  * <pre>
@@ -134,16 +133,16 @@ sap.ui.define([
134
133
  * Example for "$Path" in the context's path:
135
134
  * <pre>
136
135
  * &lt;Annotations Target="com.sap.gateway.default.iwbep.tea_busi.v0001.EQUIPMENT">
137
- * &lt;Annotation Term="com.sap.vocabularies.UI.v1.LineItem">
138
- * &lt;Collection>
139
- * &lt;Record Type="com.sap.vocabularies.UI.v1.DataField">
140
- * &lt;PropertyValue Property="Value" Path="EQUIPMENT_2_PRODUCT/Name" />
141
- * &lt;/Record>
142
- * &lt;/Collection>
143
- * &lt;/Annotation>
136
+ * &lt;Annotation Term="com.sap.vocabularies.UI.v1.LineItem">
137
+ * &lt;Collection>
138
+ * &lt;Record Type="com.sap.vocabularies.UI.v1.DataField">
139
+ * &lt;PropertyValue Property="Value" Path="EQUIPMENT_2_PRODUCT/Name" />
140
+ * &lt;/Record>
141
+ * &lt;/Collection>
142
+ * &lt;/Annotation>
144
143
  * &lt;/Annotations>
145
144
  * &lt;Annotations Target="com.sap.gateway.default.iwbep.tea_busi_product.v0001.Product/Name">
146
- * &lt;Annotation Term="com.sap.vocabularies.Common.v1.QuickInfo" Path="PRODUCT_2_SUPPLIER/Supplier_Name" />
145
+ * &lt;Annotation Term="com.sap.vocabularies.Common.v1.QuickInfo" Path="PRODUCT_2_SUPPLIER/Supplier_Name" />
147
146
  * &lt;/Annotations>
148
147
  * </pre>
149
148
  * <pre>
@@ -296,7 +295,7 @@ sap.ui.define([
296
295
  if (sPath.endsWith("/$Path")) {
297
296
  sPath = sPath.slice(0, -6);
298
297
  vRawValue = {$Path : vRawValue};
299
- } else if (sPath.endsWith('/$PropertyPath')) {
298
+ } else if (sPath.endsWith("/$PropertyPath")) {
300
299
  sPath = sPath.slice(0, -14);
301
300
  vRawValue = {$PropertyPath : vRawValue};
302
301
  }
@@ -327,7 +326,7 @@ sap.ui.define([
327
326
  i;
328
327
 
329
328
  if (!bIsAnnotationPath && aMatches[3]) {
330
- sPrefix = sPrefix + "/";
329
+ sPrefix += "/";
331
330
  } else if (!sPrefix.endsWith("/")) {
332
331
  i = sPrefix.lastIndexOf("/");
333
332
  sPrefix = i < 0 ? "" : sPrefix.slice(0, i + 1);
@@ -502,7 +501,7 @@ sap.ui.define([
502
501
  var iIndexOfAt;
503
502
 
504
503
  // Whether the given value is exactly <code>true</code>
505
- function isTrue (vValue) {
504
+ function isTrue(vValue) {
506
505
  return vValue === true;
507
506
  }
508
507
 
@@ -549,7 +548,7 @@ sap.ui.define([
549
548
  * @param {sap.ui.model.Context} oDetails.context
550
549
  * Points to the given raw value, that is
551
550
  * <code>oDetails.context.getProperty("") === vRawValue</code>
552
- * @returns {string|Promise}
551
+ * @returns {string|Promise|undefined}
553
552
  * A data binding or a fixed text or a sequence thereof or <code>undefined</code>. If
554
553
  * <code>oDetails.$$valueAsPromise</code> is <code>true</code> a <code>Promise</code>
555
554
  * may be returned resolving with the value for the label.
@@ -802,7 +801,7 @@ sap.ui.define([
802
801
  } else if (sPath.endsWith("/$Path")) {
803
802
  sPath = sPath.slice(0, -6);
804
803
  vRawValue = {$Path : vRawValue};
805
- } else if (sPath.endsWith('/$PropertyPath')) {
804
+ } else if (sPath.endsWith("/$PropertyPath")) {
806
805
  sPath = sPath.slice(0, -14);
807
806
  vRawValue = {$PropertyPath : vRawValue};
808
807
  }