@openui5/sap.ui.core 1.106.0 → 1.107.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 (307) hide show
  1. package/package.json +1 -1
  2. package/src/jquery.sap.global.js +1 -1
  3. package/src/jquery.sap.properties.js +1 -1
  4. package/src/jquery.sap.resources.js +1 -1
  5. package/src/jquery.sap.script.js +1 -1
  6. package/src/jquery.sap.storage.js +3 -3
  7. package/src/jquery.sap.ui.js +5 -7
  8. package/src/sap/base/util/LoaderExtensions.js +6 -6
  9. package/src/sap/base/util/fetch.js +3 -0
  10. package/src/sap/base/util/mixedFetch.js +1 -1
  11. package/src/sap/base/util/restricted/_CancelablePromise.js +1 -1
  12. package/src/sap/base/util/restricted/_castArray.js +1 -1
  13. package/src/sap/base/util/restricted/_compact.js +1 -1
  14. package/src/sap/base/util/restricted/_curry.js +1 -1
  15. package/src/sap/base/util/restricted/_debounce.js +1 -1
  16. package/src/sap/base/util/restricted/_difference.js +1 -1
  17. package/src/sap/base/util/restricted/_differenceBy.js +1 -1
  18. package/src/sap/base/util/restricted/_differenceWith.js +1 -1
  19. package/src/sap/base/util/restricted/_flatMap.js +1 -1
  20. package/src/sap/base/util/restricted/_flatMapDeep.js +1 -1
  21. package/src/sap/base/util/restricted/_flatMapDepth.js +1 -1
  22. package/src/sap/base/util/restricted/_flatten.js +1 -1
  23. package/src/sap/base/util/restricted/_flattenDeep.js +1 -1
  24. package/src/sap/base/util/restricted/_flattenDepth.js +1 -1
  25. package/src/sap/base/util/restricted/_intersection.js +1 -1
  26. package/src/sap/base/util/restricted/_intersectionBy.js +1 -1
  27. package/src/sap/base/util/restricted/_intersectionWith.js +1 -1
  28. package/src/sap/base/util/restricted/_isEqual.js +1 -1
  29. package/src/sap/base/util/restricted/_isEqualWith.js +1 -1
  30. package/src/sap/base/util/restricted/_isNil.js +1 -1
  31. package/src/sap/base/util/restricted/_max.js +1 -1
  32. package/src/sap/base/util/restricted/_merge.js +1 -1
  33. package/src/sap/base/util/restricted/_mergeWith.js +1 -1
  34. package/src/sap/base/util/restricted/_min.js +1 -1
  35. package/src/sap/base/util/restricted/_omit.js +1 -1
  36. package/src/sap/base/util/restricted/_pick.js +1 -1
  37. package/src/sap/base/util/restricted/_pickBy.js +1 -1
  38. package/src/sap/base/util/restricted/_throttle.js +1 -1
  39. package/src/sap/base/util/restricted/_toArray.js +1 -1
  40. package/src/sap/base/util/restricted/_union.js +1 -1
  41. package/src/sap/base/util/restricted/_unionBy.js +1 -1
  42. package/src/sap/base/util/restricted/_unionWith.js +1 -1
  43. package/src/sap/base/util/restricted/_uniq.js +1 -1
  44. package/src/sap/base/util/restricted/_uniqBy.js +1 -1
  45. package/src/sap/base/util/restricted/_uniqWith.js +1 -1
  46. package/src/sap/base/util/restricted/_without.js +1 -1
  47. package/src/sap/base/util/restricted/_xor.js +1 -1
  48. package/src/sap/base/util/restricted/_xorBy.js +1 -1
  49. package/src/sap/base/util/restricted/_xorWith.js +1 -1
  50. package/src/sap/base/util/restricted/_zipObject.js +1 -1
  51. package/src/sap/base/util/restricted/_zipObjectDeep.js +1 -1
  52. package/src/sap/ui/Device.js +3 -3
  53. package/src/sap/ui/Global.js +4 -4
  54. package/src/sap/ui/base/DataType.js +4 -4
  55. package/src/sap/ui/base/Event.js +1 -1
  56. package/src/sap/ui/base/EventProvider.js +1 -1
  57. package/src/sap/ui/base/Interface.js +1 -1
  58. package/src/sap/ui/base/ManagedObject.js +1 -1
  59. package/src/sap/ui/base/ManagedObjectMetadata.js +1 -1
  60. package/src/sap/ui/base/ManagedObjectRegistry.js +4 -3
  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 +1 -1
  65. package/src/sap/ui/core/AppCacheBuster.js +3 -4
  66. package/src/sap/ui/core/BusyIndicator.js +1 -1
  67. package/src/sap/ui/core/BusyIndicatorUtils.js +5 -6
  68. package/src/sap/ui/core/CalendarType.js +0 -1
  69. package/src/sap/ui/core/Component.js +12 -10
  70. package/src/sap/ui/core/ComponentContainer.js +6 -5
  71. package/src/sap/ui/core/ComponentMetadata.js +1 -1
  72. package/src/sap/ui/core/ComponentSupport.js +1 -1
  73. package/src/sap/ui/core/Configuration.js +1 -1
  74. package/src/sap/ui/core/Control.js +7 -7
  75. package/src/sap/ui/core/Core.js +31 -304
  76. package/src/sap/ui/core/CustomData.js +1 -1
  77. package/src/sap/ui/core/DeclarativeSupport.js +1 -1
  78. package/src/sap/ui/core/Element.js +6 -6
  79. package/src/sap/ui/core/ElementMetadata.js +1 -1
  80. package/src/sap/ui/core/EnabledPropagator.js +1 -1
  81. package/src/sap/ui/core/EventBus.js +1 -1
  82. package/src/sap/ui/core/FocusHandler.js +50 -2
  83. package/src/sap/ui/core/Fragment.js +1 -1
  84. package/src/sap/ui/core/HTML.js +1 -2
  85. package/src/sap/ui/core/History.js +1 -1
  86. package/src/sap/ui/core/Icon.js +1 -2
  87. package/src/sap/ui/core/IndicationColorSupport.js +1 -1
  88. package/src/sap/ui/core/IntervalTrigger.js +1 -1
  89. package/src/sap/ui/core/InvisibleMessage.js +1 -2
  90. package/src/sap/ui/core/InvisibleRenderer.js +1 -1
  91. package/src/sap/ui/core/InvisibleText.js +5 -5
  92. package/src/sap/ui/core/Item.js +1 -2
  93. package/src/sap/ui/core/LabelEnablement.js +1 -1
  94. package/src/sap/ui/core/LayoutData.js +1 -2
  95. package/src/sap/ui/core/ListItem.js +1 -2
  96. package/src/sap/ui/core/LocalBusyIndicator.js +1 -2
  97. package/src/sap/ui/core/Locale.js +1 -1
  98. package/src/sap/ui/core/LocaleData.js +11 -9
  99. package/src/sap/ui/core/Manifest.js +8 -6
  100. package/src/sap/ui/core/Message.js +4 -6
  101. package/src/sap/ui/core/Popup.js +62 -5
  102. package/src/sap/ui/core/RenderManager.js +7 -5
  103. package/src/sap/ui/core/Renderer.js +5 -4
  104. package/src/sap/ui/core/Rendering.js +251 -0
  105. package/src/sap/ui/core/ResizeHandler.js +1 -1
  106. package/src/sap/ui/core/ScrollBar.js +6 -9
  107. package/src/sap/ui/core/ScrollBarRenderer.js +3 -3
  108. package/src/sap/ui/core/SeparatorItem.js +1 -2
  109. package/src/sap/ui/core/Title.js +1 -2
  110. package/src/sap/ui/core/TooltipBase.js +1 -2
  111. package/src/sap/ui/core/UIArea.js +389 -121
  112. package/src/sap/ui/core/UIComponent.js +1 -2
  113. package/src/sap/ui/core/UIComponentMetadata.js +1 -1
  114. package/src/sap/ui/core/ValueStateSupport.js +1 -1
  115. package/src/sap/ui/core/VariantLayoutData.js +1 -2
  116. package/src/sap/ui/core/XMLComposite.js +1 -1
  117. package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
  118. package/src/sap/ui/core/XMLTemplateProcessor.js +5 -3
  119. package/src/sap/ui/core/cache/CacheManager.js +7 -6
  120. package/src/sap/ui/core/cache/LRUPersistentCache.js +4 -4
  121. package/src/sap/ui/core/date/Islamic.js +4 -4
  122. package/src/sap/ui/core/date/UniversalDate.js +8 -8
  123. package/src/sap/ui/core/date/UniversalDateUtils.js +3 -3
  124. package/src/sap/ui/core/delegate/ItemNavigation.js +5 -5
  125. package/src/sap/ui/core/delegate/ScrollEnablement.js +1 -1
  126. package/src/sap/ui/core/dnd/DragAndDrop.js +4 -3
  127. package/src/sap/ui/core/dnd/DragDropBase.js +1 -2
  128. package/src/sap/ui/core/dnd/DragDropInfo.js +1 -2
  129. package/src/sap/ui/core/dnd/DragInfo.js +1 -2
  130. package/src/sap/ui/core/dnd/DropInfo.js +1 -2
  131. package/src/sap/ui/core/format/DateFormat.js +9 -7
  132. package/src/sap/ui/core/format/DateFormatTimezoneDisplay.js +0 -1
  133. package/src/sap/ui/core/format/FileSizeFormat.js +4 -3
  134. package/src/sap/ui/core/format/ListFormat.js +4 -3
  135. package/src/sap/ui/core/format/NumberFormat.js +6 -5
  136. package/src/sap/ui/core/format/TimezoneUtil.js +1 -1
  137. package/src/sap/ui/core/hyphenation/Hyphenation.js +7 -6
  138. package/src/sap/ui/core/library.js +3 -55
  139. package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
  140. package/src/sap/ui/core/message/Message.js +1 -1
  141. package/src/sap/ui/core/message/MessageManager.js +13 -23
  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_fr.properties +1 -1
  145. package/src/sap/ui/core/mvc/Controller.js +3 -3
  146. package/src/sap/ui/core/mvc/EventHandlerResolver.js +5 -3
  147. package/src/sap/ui/core/mvc/HTMLView.js +1 -2
  148. package/src/sap/ui/core/mvc/JSONView.js +1 -2
  149. package/src/sap/ui/core/mvc/JSView.js +1 -2
  150. package/src/sap/ui/core/mvc/TemplateView.js +1 -2
  151. package/src/sap/ui/core/mvc/View.js +21 -20
  152. package/src/sap/ui/core/mvc/ViewType.js +0 -1
  153. package/src/sap/ui/core/mvc/XMLView.js +18 -18
  154. package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
  155. package/src/sap/ui/core/plugin/LessSupport.js +1 -1
  156. package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -1
  157. package/src/sap/ui/core/postmessage/Bus.js +1 -1
  158. package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
  159. package/src/sap/ui/core/routing/async/Target.js +4 -3
  160. package/src/sap/ui/core/rules/Config.support.js +6 -4
  161. package/src/sap/ui/core/rules/CoreHelper.support.js +3 -3
  162. package/src/sap/ui/core/search/OpenSearchProvider.js +1 -2
  163. package/src/sap/ui/core/search/SearchProvider.js +1 -3
  164. package/src/sap/ui/core/service/Service.js +1 -1
  165. package/src/sap/ui/core/service/ServiceFactory.js +1 -1
  166. package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
  167. package/src/sap/ui/core/support/Plugin.js +1 -1
  168. package/src/sap/ui/core/support/Support.js +1 -1
  169. package/src/sap/ui/core/support/ToolsAPI.js +11 -13
  170. package/src/sap/ui/core/support/plugins/ControlTree.js +4 -4
  171. package/src/sap/ui/core/support/plugins/Interaction.js +1 -1
  172. package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
  173. package/src/sap/ui/core/support/plugins/Performance.js +1 -1
  174. package/src/sap/ui/core/support/plugins/Selector.js +1 -1
  175. package/src/sap/ui/core/support/plugins/TechInfo.js +1 -1
  176. package/src/sap/ui/core/support/plugins/Trace.js +1 -1
  177. package/src/sap/ui/core/support/plugins/ViewInfo.js +1 -1
  178. package/src/sap/ui/core/support/techinfo/TechnicalInfo.js +7 -5
  179. package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -2
  180. package/src/sap/ui/core/tmpl/DOMElement.js +1 -4
  181. package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
  182. package/src/sap/ui/core/tmpl/Template.js +1 -2
  183. package/src/sap/ui/core/tmpl/TemplateControl.js +1 -2
  184. package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
  185. package/src/sap/ui/core/util/Export.js +1 -1
  186. package/src/sap/ui/core/util/ExportCell.js +1 -1
  187. package/src/sap/ui/core/util/ExportColumn.js +1 -1
  188. package/src/sap/ui/core/util/ExportRow.js +1 -1
  189. package/src/sap/ui/core/util/ExportType.js +1 -1
  190. package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
  191. package/src/sap/ui/core/util/File.js +1 -1
  192. package/src/sap/ui/core/util/LibraryInfo.js +1 -1
  193. package/src/sap/ui/core/util/MockServer.js +4 -2
  194. package/src/sap/ui/core/util/PasteHelper.js +1 -1
  195. package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
  196. package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
  197. package/src/sap/ui/core/util/serializer/ViewSerializer.js +4 -4
  198. package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
  199. package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
  200. package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
  201. package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
  202. package/src/sap/ui/core/ws/ReadyState.js +1 -1
  203. package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
  204. package/src/sap/ui/core/ws/WebSocket.js +1 -1
  205. package/src/sap/ui/debug/ControlTree.js +3 -3
  206. package/src/sap/ui/debug/DebugEnv.js +4 -4
  207. package/src/sap/ui/debug/PropertyList.js +1 -1
  208. package/src/sap/ui/model/ClientModel.js +1 -1
  209. package/src/sap/ui/model/ClientTreeBinding.js +3 -1
  210. package/src/sap/ui/model/CompositeDataState.js +1 -1
  211. package/src/sap/ui/model/CompositeType.js +1 -1
  212. package/src/sap/ui/model/DataState.js +1 -1
  213. package/src/sap/ui/model/MetaModel.js +1 -1
  214. package/src/sap/ui/model/Model.js +1 -1
  215. package/src/sap/ui/model/SelectionModel.js +1 -1
  216. package/src/sap/ui/model/SimpleType.js +1 -1
  217. package/src/sap/ui/model/Sorter.js +22 -17
  218. package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
  219. package/src/sap/ui/model/TreeBindingAdapter.js +3 -7
  220. package/src/sap/ui/model/Type.js +1 -1
  221. package/src/sap/ui/model/analytics/AnalyticalBinding.js +2 -0
  222. package/src/sap/ui/model/analytics/AnalyticalTreeBindingAdapter.js +5 -7
  223. package/src/sap/ui/model/json/JSONModel.js +8 -6
  224. package/src/sap/ui/model/message/MessageModel.js +1 -1
  225. package/src/sap/ui/model/odata/ODataAnnotations.js +5 -3
  226. package/src/sap/ui/model/odata/ODataMessageParser.js +1 -1
  227. package/src/sap/ui/model/odata/ODataMetaModel.js +31 -8
  228. package/src/sap/ui/model/odata/ODataMetadata.js +5 -4
  229. package/src/sap/ui/model/odata/ODataModel.js +6 -5
  230. package/src/sap/ui/model/odata/ODataTreeBindingFlat.js +0 -1
  231. package/src/sap/ui/model/odata/type/Boolean.js +1 -1
  232. package/src/sap/ui/model/odata/type/Byte.js +1 -1
  233. package/src/sap/ui/model/odata/type/Currency.js +1 -1
  234. package/src/sap/ui/model/odata/type/Date.js +1 -1
  235. package/src/sap/ui/model/odata/type/DateTime.js +1 -1
  236. package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
  237. package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
  238. package/src/sap/ui/model/odata/type/DateTimeWithTimezone.js +1 -1
  239. package/src/sap/ui/model/odata/type/Decimal.js +1 -1
  240. package/src/sap/ui/model/odata/type/Double.js +1 -1
  241. package/src/sap/ui/model/odata/type/Guid.js +1 -1
  242. package/src/sap/ui/model/odata/type/Int.js +1 -1
  243. package/src/sap/ui/model/odata/type/Int16.js +1 -1
  244. package/src/sap/ui/model/odata/type/Int32.js +1 -1
  245. package/src/sap/ui/model/odata/type/Int64.js +1 -1
  246. package/src/sap/ui/model/odata/type/ODataType.js +1 -1
  247. package/src/sap/ui/model/odata/type/Raw.js +1 -1
  248. package/src/sap/ui/model/odata/type/SByte.js +1 -1
  249. package/src/sap/ui/model/odata/type/Single.js +1 -1
  250. package/src/sap/ui/model/odata/type/Stream.js +1 -1
  251. package/src/sap/ui/model/odata/type/String.js +1 -1
  252. package/src/sap/ui/model/odata/type/Time.js +1 -1
  253. package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
  254. package/src/sap/ui/model/odata/type/Unit.js +1 -1
  255. package/src/sap/ui/model/odata/v2/Context.js +1 -1
  256. package/src/sap/ui/model/odata/v2/ODataAnnotations.js +4 -3
  257. package/src/sap/ui/model/odata/v2/ODataContextBinding.js +24 -15
  258. package/src/sap/ui/model/odata/v2/ODataListBinding.js +45 -27
  259. package/src/sap/ui/model/odata/v2/ODataModel.js +94 -36
  260. package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +5 -5
  261. package/src/sap/ui/model/odata/v4/Context.js +23 -19
  262. package/src/sap/ui/model/odata/v4/ODataBinding.js +7 -3
  263. package/src/sap/ui/model/odata/v4/ODataContextBinding.js +3 -3
  264. package/src/sap/ui/model/odata/v4/ODataListBinding.js +121 -57
  265. package/src/sap/ui/model/odata/v4/ODataMetaModel.js +11 -11
  266. package/src/sap/ui/model/odata/v4/ODataModel.js +111 -69
  267. package/src/sap/ui/model/odata/v4/ODataParentBinding.js +12 -4
  268. package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +2 -2
  269. package/src/sap/ui/model/odata/v4/ODataUtils.js +1 -1
  270. package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +41 -29
  271. package/src/sap/ui/model/odata/v4/lib/_Cache.js +59 -20
  272. package/src/sap/ui/model/odata/v4/lib/_Helper.js +135 -4
  273. package/src/sap/ui/model/odata/v4/lib/_Requestor.js +21 -7
  274. package/src/sap/ui/model/resource/ResourceModel.js +7 -6
  275. package/src/sap/ui/model/type/Boolean.js +1 -1
  276. package/src/sap/ui/model/type/Currency.js +1 -1
  277. package/src/sap/ui/model/type/Date.js +1 -1
  278. package/src/sap/ui/model/type/DateInterval.js +1 -1
  279. package/src/sap/ui/model/type/DateTime.js +1 -1
  280. package/src/sap/ui/model/type/DateTimeInterval.js +1 -1
  281. package/src/sap/ui/model/type/FileSize.js +1 -1
  282. package/src/sap/ui/model/type/Float.js +1 -1
  283. package/src/sap/ui/model/type/Integer.js +1 -1
  284. package/src/sap/ui/model/type/String.js +1 -1
  285. package/src/sap/ui/model/type/Time.js +1 -1
  286. package/src/sap/ui/model/type/TimeInterval.js +1 -1
  287. package/src/sap/ui/model/type/Unit.js +5 -4
  288. package/src/sap/ui/model/xml/XMLModel.js +8 -6
  289. package/src/sap/ui/performance/trace/Interaction.js +1 -1
  290. package/src/sap/ui/qunit/QUnitUtils.js +2 -1
  291. package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
  292. package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +1 -1
  293. package/src/sap/ui/test/Opa.js +7 -5
  294. package/src/sap/ui/test/Opa5.js +9 -15
  295. package/src/sap/ui/test/RecorderHotkeyListener.js +1 -1
  296. package/src/sap/ui/test/TestUtils.js +83 -1
  297. package/src/sap/ui/test/autowaiter/_autoWaiter.js +9 -0
  298. package/src/sap/ui/test/autowaiter/_cssAnimationWaiter.js +114 -0
  299. package/src/sap/ui/test/autowaiter/_cssTransitionWaiter.js +99 -0
  300. package/src/sap/ui/test/autowaiter/_jsAnimationWaiter.js +70 -0
  301. package/src/sap/ui/test/autowaiter/_resourceWaiter.js +3 -12
  302. package/src/sap/ui/test/autowaiter/_utils.js +13 -1
  303. package/src/sap/ui/test/generic/TestBase.js +1 -1
  304. package/src/sap/ui/test/matchers/Ancestor.js +1 -0
  305. package/src/sap/ui/test/matchers/Descendant.js +1 -0
  306. package/src/sap/ui/test/matchers/Sibling.js +1 -0
  307. package/src/sap/ui/util/Storage.js +1 -1
@@ -15,7 +15,6 @@ sap.ui.define([
15
15
  "./lib/_Helper",
16
16
  "./lib/_Parser",
17
17
  "sap/base/Log",
18
- "sap/base/util/uid",
19
18
  "sap/ui/base/SyncPromise",
20
19
  "sap/ui/model/Binding",
21
20
  "sap/ui/model/ChangeReason",
@@ -27,7 +26,7 @@ sap.ui.define([
27
26
  "sap/ui/model/Sorter",
28
27
  "sap/ui/model/odata/OperationMode"
29
28
  ], function (Context, asODataParentBinding, _AggregationCache, _AggregationHelper, _Cache,
30
- _GroupLock, _Helper, _Parser, Log, uid, SyncPromise, Binding, ChangeReason, Filter,
29
+ _GroupLock, _Helper, _Parser, Log, SyncPromise, Binding, ChangeReason, Filter,
31
30
  FilterOperator, FilterProcessor, FilterType, ListBinding, Sorter, OperationMode) {
32
31
  "use strict";
33
32
 
@@ -58,7 +57,7 @@ sap.ui.define([
58
57
  * @mixes sap.ui.model.odata.v4.ODataParentBinding
59
58
  * @public
60
59
  * @since 1.37.0
61
- * @version 1.106.0
60
+ * @version 1.107.1
62
61
  * @borrows sap.ui.model.odata.v4.ODataBinding#getGroupId as #getGroupId
63
62
  * @borrows sap.ui.model.odata.v4.ODataBinding#getRootBinding as #getRootBinding
64
63
  * @borrows sap.ui.model.odata.v4.ODataBinding#getUpdateGroupId as #getUpdateGroupId
@@ -147,6 +146,7 @@ sap.ui.define([
147
146
  this.mPreviousContextsByPath = {};
148
147
  this.aPreviousData = [];
149
148
  this.bRefreshKeptElements = false; // refresh kept elements when resuming?
149
+ this.sResumeAction = undefined; // a special resume action for $$sharedRequest
150
150
  this.bSharedRequest = mParameters.$$sharedRequest || oModel.bSharedRequests;
151
151
  this.aSorters = _Helper.toArray(vSorters);
152
152
  this.sUpdateGroupId = mParameters.$$updateGroupId;
@@ -173,12 +173,13 @@ sap.ui.define([
173
173
  *
174
174
  * @param {function} fnFunction The function to call when the event occurs
175
175
  * @param {object} [oListener] Object on which to call the given function
176
+ * @returns {this} <code>this</code> to allow method chaining
176
177
  *
177
178
  * @public
178
179
  * @since 1.98.0
179
180
  */
180
181
  ODataListBinding.prototype.attachCreateActivate = function (fnFunction, oListener) {
181
- this.attachEvent("createActivate", fnFunction, oListener);
182
+ return this.attachEvent("createActivate", fnFunction, oListener);
182
183
  };
183
184
 
184
185
  /**
@@ -186,12 +187,13 @@ sap.ui.define([
186
187
  *
187
188
  * @param {function} fnFunction The function to call when the event occurs
188
189
  * @param {object} [oListener] Object on which to call the given function
190
+ * @returns {this} <code>this</code> to allow method chaining
189
191
  *
190
192
  * @public
191
193
  * @since 1.98.0
192
194
  */
193
195
  ODataListBinding.prototype.detachCreateActivate = function (fnFunction, oListener) {
194
- this.detachEvent("createActivate", fnFunction, oListener);
196
+ return this.detachEvent("createActivate", fnFunction, oListener);
195
197
  };
196
198
 
197
199
  /**
@@ -199,12 +201,13 @@ sap.ui.define([
199
201
  *
200
202
  * @param {function} fnFunction The function to call when the event occurs
201
203
  * @param {object} [oListener] Object on which to call the given function
204
+ * @returns {this} <code>this</code> to allow method chaining
202
205
  *
203
206
  * @public
204
207
  * @since 1.66.0
205
208
  */
206
209
  ODataListBinding.prototype.attachCreateCompleted = function (fnFunction, oListener) {
207
- this.attachEvent("createCompleted", fnFunction, oListener);
210
+ return this.attachEvent("createCompleted", fnFunction, oListener);
208
211
  };
209
212
 
210
213
  /**
@@ -213,12 +216,13 @@ sap.ui.define([
213
216
  *
214
217
  * @param {function} fnFunction The function to call when the event occurs
215
218
  * @param {object} [oListener] Object on which to call the given function
219
+ * @returns {this} <code>this</code> to allow method chaining
216
220
  *
217
221
  * @public
218
222
  * @since 1.66.0
219
223
  */
220
224
  ODataListBinding.prototype.detachCreateCompleted = function (fnFunction, oListener) {
221
- this.detachEvent("createCompleted", fnFunction, oListener);
225
+ return this.detachEvent("createCompleted", fnFunction, oListener);
222
226
  };
223
227
 
224
228
  /**
@@ -226,12 +230,13 @@ sap.ui.define([
226
230
  *
227
231
  * @param {function} fnFunction The function to call when the event occurs
228
232
  * @param {object} [oListener] Object on which to call the given function
233
+ * @returns {this} <code>this</code> to allow method chaining
229
234
  *
230
235
  * @public
231
236
  * @since 1.66.0
232
237
  */
233
238
  ODataListBinding.prototype.attachCreateSent = function (fnFunction, oListener) {
234
- this.attachEvent("createSent", fnFunction, oListener);
239
+ return this.attachEvent("createSent", fnFunction, oListener);
235
240
  };
236
241
 
237
242
  /**
@@ -240,12 +245,13 @@ sap.ui.define([
240
245
  *
241
246
  * @param {function} fnFunction The function to call when the event occurs
242
247
  * @param {object} [oListener] Object on which to call the given function
248
+ * @returns {this} <code>this</code> to allow method chaining
243
249
  *
244
250
  * @public
245
251
  * @since 1.66.0
246
252
  */
247
253
  ODataListBinding.prototype.detachCreateSent = function (fnFunction, oListener) {
248
- this.detachEvent("createSent", fnFunction, oListener);
254
+ return this.detachEvent("createSent", fnFunction, oListener);
249
255
  };
250
256
 
251
257
  /**
@@ -843,7 +849,7 @@ sap.ui.define([
843
849
  sGroupId = this.getUpdateGroupId(),
844
850
  oGroupLock,
845
851
  sResolvedPath = this.getResolvedPath(),
846
- sTransientPredicate = "($uid=" + uid() + ")",
852
+ sTransientPredicate = "($uid=" + _Helper.uid() + ")",
847
853
  sTransientPath = sResolvedPath + sTransientPredicate,
848
854
  i,
849
855
  that = this;
@@ -1100,7 +1106,7 @@ sap.ui.define([
1100
1106
  */
1101
1107
  ODataListBinding.prototype.destroyLater = function (oContext) {
1102
1108
  if (this.iCurrentEnd) {
1103
- // Add the context to mPreviousContextsByPath although it definitely won't be reused.
1109
+ // Add the context to mPreviousContextsByPath, although it definitely won't be reused.
1104
1110
  // Then it is destroyed later, but only if there is a listener (iCurrentEnd is set by
1105
1111
  // getContexts and mPreviousContextsByPath is only cleared when getContexts is called)
1106
1112
  this.mPreviousContextsByPath[oContext.getPath()] = oContext;
@@ -1147,6 +1153,7 @@ sap.ui.define([
1147
1153
  ODataListBinding.prototype.doCreateCache = function (sResourcePath, mQueryOptions, oContext,
1148
1154
  sDeepResourcePath, sGroupId, oOldCache) {
1149
1155
  var sBindingPath,
1156
+ oCache,
1150
1157
  aKeptElementPaths,
1151
1158
  that = this;
1152
1159
 
@@ -1171,10 +1178,15 @@ sap.ui.define([
1171
1178
 
1172
1179
  mQueryOptions = this.inheritQueryOptions(mQueryOptions, oContext);
1173
1180
 
1174
- return this.getCacheAndMoveKeepAliveContexts(sResourcePath, mQueryOptions)
1181
+ oCache = this.getCacheAndMoveKeepAliveContexts(sResourcePath, mQueryOptions)
1175
1182
  || _AggregationCache.create(this.oModel.oRequestor, sResourcePath, sDeepResourcePath,
1176
1183
  this.mParameters.$$aggregation, mQueryOptions, this.oModel.bAutoExpandSelect,
1177
- this.bSharedRequest);
1184
+ this.bSharedRequest, this.isGrouped());
1185
+ if (this.bSharedRequest) {
1186
+ oCache.registerChangeListener("", this);
1187
+ }
1188
+
1189
+ return oCache;
1178
1190
  };
1179
1191
 
1180
1192
  /**
@@ -2434,11 +2446,11 @@ sap.ui.define([
2434
2446
  || this.aContexts.find(function (oCandidate) {
2435
2447
  return oCandidate && oCandidate.getPath() === sPath;
2436
2448
  }),
2437
- iPredicateIndex = this.oModel.getPredicateIndex(sPath),
2449
+ iPredicateIndex = _Helper.getPredicateIndex(sPath),
2438
2450
  sResolvedPath = this.getResolvedPath();
2439
2451
 
2440
2452
  this.checkSuspended();
2441
- this.oModel.checkGroupId(sGroupId);
2453
+ _Helper.checkGroupId(sGroupId);
2442
2454
  if (!oContext) {
2443
2455
  if (!sResolvedPath) {
2444
2456
  throw new Error("Binding is unresolved: " + this);
@@ -2694,6 +2706,35 @@ sap.ui.define([
2694
2706
  return this.bLengthFinal;
2695
2707
  };
2696
2708
 
2709
+ /**
2710
+ * Notification from the cache that the collection has changed. Currently, only bindings with
2711
+ * bSharedRequest register at the cache and are notified when the cache has been reset.
2712
+ *
2713
+ * @private
2714
+ */
2715
+ ODataListBinding.prototype.onChange = function () {
2716
+ var aDependentBindings,
2717
+ that = this;
2718
+
2719
+ if (!this.oRefreshPromise) {
2720
+ // some other binding with the same cache is refreshing
2721
+ if (this.isRootBindingSuspended()) {
2722
+ this.sResumeAction = "onChange";
2723
+ } else {
2724
+ // Note: after reset the dependent bindings cannot be found anymore
2725
+ aDependentBindings = this.getDependentBindings();
2726
+ this.reset(ChangeReason.Refresh);
2727
+ SyncPromise.all(
2728
+ aDependentBindings.map(function (oBinding) {
2729
+ return oBinding.refreshInternal("");
2730
+ })
2731
+ ).then(function () {
2732
+ return that.oHeaderContext.checkUpdateInternal();
2733
+ }).catch(this.oModel.getReporter());
2734
+ }
2735
+ }
2736
+ };
2737
+
2697
2738
  /**
2698
2739
  * @override
2699
2740
  * @see sap.ui.model.odata.v4.ODataBinding#refreshInternal
@@ -2725,8 +2766,12 @@ sap.ui.define([
2725
2766
 
2726
2767
  if (this.isRootBindingSuspended()) {
2727
2768
  // Note: side-effects (incl. refresh) are forbidden while suspended
2728
- this.refreshSuspended(sGroupId);
2729
- this.bRefreshKeptElements = true;
2769
+ if (this.bSharedRequest) {
2770
+ this.sResumeAction = "resetCache";
2771
+ } else {
2772
+ this.refreshSuspended(sGroupId);
2773
+ this.bRefreshKeptElements = true;
2774
+ }
2730
2775
  return SyncPromise.all(refreshAll(that.getDependentBindings()));
2731
2776
  }
2732
2777
 
@@ -2741,46 +2786,52 @@ sap.ui.define([
2741
2786
 
2742
2787
  if (oCache && !oPromise) { // do not refresh twice
2743
2788
  that.removeCachesAndMessages(sResourcePathPrefix);
2744
- that.fetchCache(that.oContext, false, /*bKeepQueryOptions*/true,
2745
- bKeepCacheOnError ? sGroupId : undefined);
2746
- oKeptElementsPromise = that.refreshKeptElements(sGroupId);
2747
- if (that.iCurrentEnd > 0) {
2748
- oPromise = that.createRefreshPromise(
2749
- /*bPreventBubbling*/bKeepCacheOnError
2750
- ).catch(function (oError) {
2751
- if (!bKeepCacheOnError || oError.canceled) {
2752
- throw oError;
2753
- }
2754
- return that.fetchResourcePath(that.oContext).then(function (sResourcePath) {
2755
- var i;
2756
-
2757
- if (!that.bRelative || oCache.getResourcePath() === sResourcePath) {
2758
- if (that.oCache === oCache) {
2759
- oCache.restore(true);
2760
- } else { // still needed in case of _AggregationCache
2761
- oCache.setActive(true);
2762
- that.oCache = oCache;
2763
- that.oCachePromise = SyncPromise.resolve(oCache);
2764
- }
2765
- that.iActiveContexts = iActiveContexts;
2766
- that.iCreatedContexts = iCreatedContexts;
2767
- for (i = 0; i < iCreatedContexts; i += 1) {
2768
- aContexts[i].iIndex = i - iCreatedContexts;
2769
- delete that.mPreviousContextsByPath[aContexts[i].getPath()];
2789
+ if (that.bSharedRequest) {
2790
+ oPromise = that.createRefreshPromise();
2791
+ oCache.reset([]);
2792
+ } else {
2793
+ that.fetchCache(that.oContext, false, /*bKeepQueryOptions*/true,
2794
+ bKeepCacheOnError ? sGroupId : undefined);
2795
+ oKeptElementsPromise = that.refreshKeptElements(sGroupId);
2796
+ if (that.iCurrentEnd > 0) {
2797
+ oPromise = that.createRefreshPromise(
2798
+ /*bPreventBubbling*/bKeepCacheOnError
2799
+ ).catch(function (oError) {
2800
+ if (!bKeepCacheOnError || oError.canceled) {
2801
+ throw oError;
2802
+ }
2803
+ return that.fetchResourcePath(that.oContext
2804
+ ).then(function (sResourcePath) {
2805
+ var i;
2806
+
2807
+ if (!that.bRelative || oCache.getResourcePath() === sResourcePath) {
2808
+ if (that.oCache === oCache) {
2809
+ oCache.restore(true);
2810
+ } else { // still needed in case of _AggregationCache
2811
+ oCache.setActive(true);
2812
+ that.oCache = oCache;
2813
+ that.oCachePromise = SyncPromise.resolve(oCache);
2814
+ }
2815
+ that.iActiveContexts = iActiveContexts;
2816
+ that.iCreatedContexts = iCreatedContexts;
2817
+ for (i = 0; i < iCreatedContexts; i += 1) {
2818
+ aContexts[i].iIndex = i - iCreatedContexts;
2819
+ delete that.mPreviousContextsByPath[aContexts[i].getPath()];
2820
+ }
2821
+ that.aContexts = aContexts; // restore created contexts
2822
+ that._fireChange({reason : ChangeReason.Change});
2770
2823
  }
2771
- that.aContexts = aContexts; // restore created contexts
2772
- that._fireChange({reason : ChangeReason.Change});
2824
+ throw oError;
2825
+ });
2826
+ }).finally(function () {
2827
+ if (oCache.restore) {
2828
+ oCache.restore(false);
2773
2829
  }
2774
- throw oError;
2775
2830
  });
2776
- }).finally(function () {
2777
- if (oCache.restore) {
2778
- oCache.restore(false);
2779
- }
2780
- });
2831
+ }
2781
2832
  }
2782
2833
  }
2783
- // Note: after reset the dependent bindings cannot be found any more
2834
+ // Note: after reset the dependent bindings cannot be found anymore
2784
2835
  aDependentBindings = that.getDependentBindings();
2785
2836
  that.reset(ChangeReason.Refresh, !oCache || (bKeepCacheOnError ? false : undefined),
2786
2837
  sGroupId); // this may reset that.oRefreshPromise
@@ -3031,7 +3082,7 @@ sap.ui.define([
3031
3082
  throw new Error("Unresolved binding: " + this.sPath);
3032
3083
  }
3033
3084
  this.checkSuspended();
3034
- this.oModel.checkGroupId(sGroupId);
3085
+ _Helper.checkGroupId(sGroupId);
3035
3086
 
3036
3087
  iStart = iStart || 0;
3037
3088
  iLength = iLength || this.oModel.iSizeLimit;
@@ -3160,7 +3211,7 @@ sap.ui.define([
3160
3211
  * cancellations.
3161
3212
  *
3162
3213
  * @param {Promise} oPromise - A promise
3163
- * @return {Promise} A promise including an error handler
3214
+ * @returns {Promise} A promise including an error handler
3164
3215
  */
3165
3216
  function reportError(oPromise) {
3166
3217
  return oPromise.catch(function (oError) {
@@ -3352,14 +3403,24 @@ sap.ui.define([
3352
3403
  */
3353
3404
  ODataListBinding.prototype.resumeInternal = function (_bCheckUpdate, bParentHasChanges) {
3354
3405
  var aBindings = this.getDependentBindings(),
3406
+ sResumeAction = this.sResumeAction,
3355
3407
  sResumeChangeReason = this.sResumeChangeReason,
3356
- bRefresh = bParentHasChanges || sResumeChangeReason,
3408
+ bRefresh = bParentHasChanges || sResumeAction || sResumeChangeReason,
3357
3409
  that = this;
3358
3410
 
3411
+ this.sResumeAction = undefined;
3359
3412
  this.sResumeChangeReason = undefined;
3360
3413
 
3361
3414
  if (bRefresh) {
3362
3415
  this.removeCachesAndMessages("");
3416
+ if (sResumeAction === "onChange") {
3417
+ this.onChange();
3418
+ return;
3419
+ }
3420
+ if (sResumeAction === "resetCache") {
3421
+ this.oCache.reset([]);
3422
+ return;
3423
+ }
3363
3424
  this.reset();
3364
3425
  // if the parent binding resumes but there are no changes in the parent binding
3365
3426
  // ignore the parent cache and create an own cache
@@ -3417,6 +3478,7 @@ sap.ui.define([
3417
3478
  * <li> <code>grandTotal</code>: An optional boolean that tells whether a grand total for
3418
3479
  * this aggregatable property is needed (since 1.59.0); filtering by any aggregatable
3419
3480
  * property is not supported in this case (since 1.89.0) as is "$search" (since 1.93.0)
3481
+ * or the <code>vGroup</code> parameter of {@link sap.ui.model.Sorter} (since 1.107.0)
3420
3482
  * <li> <code>subtotals</code>: An optional boolean that tells whether subtotals for this
3421
3483
  * aggregatable property are needed
3422
3484
  * <li> <code>with</code>: An optional string that provides the name of the method (for
@@ -3450,14 +3512,16 @@ sap.ui.define([
3450
3512
  * @param {string[]} [oAggregation.groupLevels]
3451
3513
  * A list of groupable property names used to determine group levels. They may, but don't need
3452
3514
  * to, be repeated in <code>oAggregation.group</code>. Group levels cannot be combined with
3453
- * filtering for aggregated properties or (since 1.93.0) with "$search".
3515
+ * filtering for aggregated properties or (since 1.93.0) with "$search" or (since 1.107.0) the
3516
+ * <code>vGroup</code> parameter of {@link sap.ui.model.Sorter}.
3454
3517
  * @param {string} [oAggregation.hierarchyQualifier]
3455
3518
  * The qualifier for the pair of "Org.OData.Aggregation.V1.RecursiveHierarchy" and
3456
3519
  * "com.sap.vocabularies.Hierarchy.v1.RecursiveHierarchy" annotations at this binding's
3457
3520
  * entity type (@experimental as of version 1.105.0). If present, a recursive hierarchy
3458
3521
  * without data aggregation is defined, and the only other supported properties are
3459
3522
  * <code>expandTo</code> and <code>search</code>. A recursive hierarchy cannot be combined
3460
- * with "$search".
3523
+ * with "$search" or (since 1.107.0) the <code>vGroup</code> parameter of
3524
+ * {@link sap.ui.model.Sorter}.
3461
3525
  * @param {string} [oAggregation.search]
3462
3526
  * Like the <a href=
3463
3527
  * "https://docs.oasis-open.org/odata/odata/v4.0/odata-v4.0-part2-url-conventions.html#_Search_System_Query"
@@ -157,7 +157,7 @@ sap.ui.define([
157
157
  * @hideconstructor
158
158
  * @public
159
159
  * @since 1.37.0
160
- * @version 1.106.0
160
+ * @version 1.107.1
161
161
  */
162
162
  ODataMetaModel = MetaModel.extend("sap.ui.model.odata.v4.ODataMetaModel", {
163
163
  constructor : constructor
@@ -696,13 +696,16 @@ sap.ui.define([
696
696
  * Whether <code>&lt;edmx:Reference></code> and <code>&lt;edmx:Include></code> directives are
697
697
  * supported in order to load schemas on demand from other $metadata documents and include
698
698
  * them into the current service ("cross-service references").
699
+ * @param {string} [sLanguage]
700
+ * The "sap-language" URL parameter
699
701
  */
700
- function constructor(oRequestor, sUrl, vAnnotationUri, oModel, bSupportReferences) {
702
+ function constructor(oRequestor, sUrl, vAnnotationUri, oModel, bSupportReferences, sLanguage) {
701
703
  MetaModel.call(this);
702
704
  this.aAnnotationUris = vAnnotationUri && !Array.isArray(vAnnotationUri)
703
705
  ? [vAnnotationUri] : vAnnotationUri;
704
706
  this.sDefaultBindingMode = BindingMode.OneTime;
705
707
  this.mETags = {};
708
+ this.sLanguage = sLanguage;
706
709
  this.oLastModified = new Date(0);
707
710
  this.oMetadataPromise = null;
708
711
  this.oModel = oModel;
@@ -2345,6 +2348,7 @@ sap.ui.define([
2345
2348
  autoExpandSelect : bAutoExpandSelect,
2346
2349
  groupId : sGroupId,
2347
2350
  httpHeaders : this.oModel.getHttpHeaders(),
2351
+ metadataUrlParams : this.sLanguage && {"sap-language" : this.sLanguage},
2348
2352
  operationMode : OperationMode.Server,
2349
2353
  serviceUrl : sUrl,
2350
2354
  sharedRequests : true,
@@ -2555,24 +2559,20 @@ sap.ui.define([
2555
2559
 
2556
2560
  return this.requestObject("/@com.sap.vocabularies.CodeList.v1." + sTerm)
2557
2561
  .then(function (oCodeList) {
2558
- var sCacheKey,
2559
- oCodeListMetaModel,
2560
- oCodeListModel,
2561
- oPromise,
2562
- sTypePath;
2562
+ var sCacheKey, oCodeListMetaModel, oCodeListModel, oPromise, sTypePath, sUrl;
2563
2563
 
2564
2564
  if (!oCodeList) {
2565
2565
  return null;
2566
2566
  }
2567
2567
 
2568
- sCacheKey = that.getAbsoluteServiceUrl(oCodeList.Url)
2569
- + "#" + oCodeList.CollectionPath;
2568
+ sUrl = _Helper.setLanguage(oCodeList.Url, that.sLanguage);
2569
+ sCacheKey = that.getAbsoluteServiceUrl(sUrl) + "#" + oCodeList.CollectionPath;
2570
2570
  oPromise = mCodeListUrl2Promise.get(sCacheKey);
2571
2571
  if (oPromise) {
2572
2572
  return oPromise;
2573
2573
  }
2574
2574
 
2575
- oCodeListModel = that.getOrCreateSharedModel(oCodeList.Url, "$direct");
2575
+ oCodeListModel = that.getOrCreateSharedModel(sUrl, "$direct");
2576
2576
  oCodeListMetaModel = oCodeListModel.getMetaModel();
2577
2577
  sTypePath = "/" + oCodeList.CollectionPath + "/";
2578
2578
  oPromise = oCodeListMetaModel.requestObject(sTypePath).then(function (oType) {
@@ -3426,7 +3426,7 @@ sap.ui.define([
3426
3426
  * Returns a string representation of this object including the URL to the $metadata document of
3427
3427
  * the service.
3428
3428
  *
3429
- * @return {string} A string description of this model
3429
+ * @returns {string} A string description of this model
3430
3430
  *
3431
3431
  * @public
3432
3432
  * @since 1.37.0