@openui5/sap.ui.core 1.139.0 → 1.139.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 (263) hide show
  1. package/THIRDPARTY.txt +1 -1
  2. package/package.json +1 -1
  3. package/src/jquery.sap.global.js +1 -1
  4. package/src/jquery.sap.properties.js +1 -1
  5. package/src/jquery.sap.resources.js +1 -1
  6. package/src/jquery.sap.script.js +1 -1
  7. package/src/jquery.sap.storage.js +3 -3
  8. package/src/sap/base/Event.js +1 -1
  9. package/src/sap/base/Eventing.js +1 -1
  10. package/src/sap/base/config.js +1 -1
  11. package/src/sap/base/i18n/LanguageTag.js +1 -1
  12. package/src/sap/base/i18n/date/TimezoneUtils.js +1 -1
  13. package/src/sap/base/util/restricted/_CancelablePromise.js +1 -1
  14. package/src/sap/base/util/restricted/_castArray.js +1 -1
  15. package/src/sap/base/util/restricted/_compact.js +1 -1
  16. package/src/sap/base/util/restricted/_curry.js +1 -1
  17. package/src/sap/base/util/restricted/_debounce.js +1 -1
  18. package/src/sap/base/util/restricted/_difference.js +1 -1
  19. package/src/sap/base/util/restricted/_differenceBy.js +1 -1
  20. package/src/sap/base/util/restricted/_differenceWith.js +1 -1
  21. package/src/sap/base/util/restricted/_flatMap.js +1 -1
  22. package/src/sap/base/util/restricted/_flatMapDeep.js +1 -1
  23. package/src/sap/base/util/restricted/_flatMapDepth.js +1 -1
  24. package/src/sap/base/util/restricted/_flatten.js +1 -1
  25. package/src/sap/base/util/restricted/_flattenDeep.js +1 -1
  26. package/src/sap/base/util/restricted/_flattenDepth.js +1 -1
  27. package/src/sap/base/util/restricted/_intersection.js +1 -1
  28. package/src/sap/base/util/restricted/_intersectionBy.js +1 -1
  29. package/src/sap/base/util/restricted/_intersectionWith.js +1 -1
  30. package/src/sap/base/util/restricted/_isEqual.js +1 -1
  31. package/src/sap/base/util/restricted/_isEqualWith.js +1 -1
  32. package/src/sap/base/util/restricted/_isNil.js +1 -1
  33. package/src/sap/base/util/restricted/_max.js +1 -1
  34. package/src/sap/base/util/restricted/_merge.js +1 -1
  35. package/src/sap/base/util/restricted/_mergeWith.js +1 -1
  36. package/src/sap/base/util/restricted/_min.js +1 -1
  37. package/src/sap/base/util/restricted/_omit.js +1 -1
  38. package/src/sap/base/util/restricted/_pick.js +1 -1
  39. package/src/sap/base/util/restricted/_pickBy.js +1 -1
  40. package/src/sap/base/util/restricted/_throttle.js +1 -1
  41. package/src/sap/base/util/restricted/_toArray.js +1 -1
  42. package/src/sap/base/util/restricted/_union.js +1 -1
  43. package/src/sap/base/util/restricted/_unionBy.js +1 -1
  44. package/src/sap/base/util/restricted/_unionWith.js +1 -1
  45. package/src/sap/base/util/restricted/_uniq.js +1 -1
  46. package/src/sap/base/util/restricted/_uniqBy.js +1 -1
  47. package/src/sap/base/util/restricted/_uniqWith.js +1 -1
  48. package/src/sap/base/util/restricted/_without.js +1 -1
  49. package/src/sap/base/util/restricted/_xor.js +1 -1
  50. package/src/sap/base/util/restricted/_xorBy.js +1 -1
  51. package/src/sap/base/util/restricted/_xorWith.js +1 -1
  52. package/src/sap/base/util/restricted/_zipObject.js +1 -1
  53. package/src/sap/base/util/restricted/_zipObjectDeep.js +1 -1
  54. package/src/sap/ui/Device.js +3 -3
  55. package/src/sap/ui/Global.js +3 -3
  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 +1 -1
  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 +1 -1
  65. package/src/sap/ui/core/BusyIndicator.js +1 -1
  66. package/src/sap/ui/core/Component.js +1 -1
  67. package/src/sap/ui/core/ComponentContainer.js +1 -1
  68. package/src/sap/ui/core/ComponentMetadata.js +1 -1
  69. package/src/sap/ui/core/ComponentSupport.js +1 -1
  70. package/src/sap/ui/core/Configuration.js +1 -1
  71. package/src/sap/ui/core/Control.js +1 -1
  72. package/src/sap/ui/core/Core.js +2 -2
  73. package/src/sap/ui/core/CustomData.js +1 -1
  74. package/src/sap/ui/core/DeclarativeSupport.js +1 -1
  75. package/src/sap/ui/core/Element.js +1 -1
  76. package/src/sap/ui/core/ElementMetadata.js +1 -1
  77. package/src/sap/ui/core/EnabledPropagator.js +1 -1
  78. package/src/sap/ui/core/EventBus.js +1 -1
  79. package/src/sap/ui/core/Fragment.js +1 -1
  80. package/src/sap/ui/core/HTML.js +1 -1
  81. package/src/sap/ui/core/History.js +1 -1
  82. package/src/sap/ui/core/Icon.js +1 -1
  83. package/src/sap/ui/core/IndicationColorSupport.js +1 -1
  84. package/src/sap/ui/core/IntervalTrigger.js +1 -1
  85. package/src/sap/ui/core/InvisibleMessage.js +1 -1
  86. package/src/sap/ui/core/InvisibleRenderer.js +1 -1
  87. package/src/sap/ui/core/InvisibleText.js +1 -1
  88. package/src/sap/ui/core/Item.js +1 -1
  89. package/src/sap/ui/core/LabelEnablement.js +1 -1
  90. package/src/sap/ui/core/LayoutData.js +1 -1
  91. package/src/sap/ui/core/ListItem.js +1 -1
  92. package/src/sap/ui/core/LocalBusyIndicator.js +1 -1
  93. package/src/sap/ui/core/Locale.js +1 -1
  94. package/src/sap/ui/core/LocaleData.js +7 -4
  95. package/src/sap/ui/core/Manifest.js +1 -1
  96. package/src/sap/ui/core/Message.js +1 -1
  97. package/src/sap/ui/core/Popup.js +9 -2
  98. package/src/sap/ui/core/RenderManager.js +1 -1
  99. package/src/sap/ui/core/Renderer.js +1 -1
  100. package/src/sap/ui/core/ResizeHandler.js +1 -1
  101. package/src/sap/ui/core/ScrollBar.js +1 -1
  102. package/src/sap/ui/core/SeparatorItem.js +1 -1
  103. package/src/sap/ui/core/Title.js +1 -1
  104. package/src/sap/ui/core/TooltipBase.js +1 -1
  105. package/src/sap/ui/core/UIArea.js +1 -1
  106. package/src/sap/ui/core/UIComponent.js +1 -1
  107. package/src/sap/ui/core/UIComponentMetadata.js +1 -1
  108. package/src/sap/ui/core/ValueStateSupport.js +1 -1
  109. package/src/sap/ui/core/VariantLayoutData.js +1 -1
  110. package/src/sap/ui/core/XMLComposite.js +1 -1
  111. package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
  112. package/src/sap/ui/core/date/UI5Date.js +1 -1
  113. package/src/sap/ui/core/delegate/ItemNavigation.js +1 -1
  114. package/src/sap/ui/core/delegate/ScrollEnablement.js +1 -1
  115. package/src/sap/ui/core/dnd/DragDropBase.js +1 -1
  116. package/src/sap/ui/core/dnd/DragDropInfo.js +1 -1
  117. package/src/sap/ui/core/dnd/DragInfo.js +1 -1
  118. package/src/sap/ui/core/dnd/DropInfo.js +1 -1
  119. package/src/sap/ui/core/format/FormatUtils.js +1 -1
  120. package/src/sap/ui/core/format/TimezoneUtil.js +1 -1
  121. package/src/sap/ui/core/getCompatibilityVersion.js +1 -1
  122. package/src/sap/ui/core/hyphenation/Hyphenation.js +1 -1
  123. package/src/sap/ui/core/interaction/KeyboardInteractionDisplay.js +21 -2
  124. package/src/sap/ui/core/library.js +3 -3
  125. package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
  126. package/src/sap/ui/core/message/Message.js +1 -1
  127. package/src/sap/ui/core/message/MessageManager.js +1 -1
  128. package/src/sap/ui/core/message/MessageParser.js +1 -1
  129. package/src/sap/ui/core/message/MessageProcessor.js +1 -1
  130. package/src/sap/ui/core/mvc/HTMLView.js +1 -1
  131. package/src/sap/ui/core/mvc/JSONView.js +1 -1
  132. package/src/sap/ui/core/mvc/JSView.js +1 -1
  133. package/src/sap/ui/core/mvc/TemplateView.js +1 -1
  134. package/src/sap/ui/core/mvc/View.js +1 -1
  135. package/src/sap/ui/core/mvc/XMLView.js +1 -1
  136. package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
  137. package/src/sap/ui/core/plugin/LessSupport.js +1 -1
  138. package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -1
  139. package/src/sap/ui/core/postmessage/Bus.js +1 -1
  140. package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
  141. package/src/sap/ui/core/routing/History.js +1 -0
  142. package/src/sap/ui/core/search/OpenSearchProvider.js +1 -1
  143. package/src/sap/ui/core/search/SearchProvider.js +1 -1
  144. package/src/sap/ui/core/service/Service.js +1 -1
  145. package/src/sap/ui/core/service/ServiceFactory.js +1 -1
  146. package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
  147. package/src/sap/ui/core/support/Plugin.js +1 -1
  148. package/src/sap/ui/core/support/Support.js +1 -1
  149. package/src/sap/ui/core/support/plugins/ControlTree.js +1 -1
  150. package/src/sap/ui/core/support/plugins/Interaction.js +1 -1
  151. package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
  152. package/src/sap/ui/core/support/plugins/Performance.js +1 -1
  153. package/src/sap/ui/core/support/plugins/Selector.js +1 -1
  154. package/src/sap/ui/core/support/plugins/TechInfo.js +1 -1
  155. package/src/sap/ui/core/support/plugins/Trace.js +1 -1
  156. package/src/sap/ui/core/support/plugins/ViewInfo.js +1 -1
  157. package/src/sap/ui/core/theming/ThemeManager.js +7 -3
  158. package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
  159. package/src/sap/ui/core/tmpl/DOMElement.js +1 -1
  160. package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
  161. package/src/sap/ui/core/tmpl/Template.js +1 -1
  162. package/src/sap/ui/core/tmpl/TemplateControl.js +1 -1
  163. package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
  164. package/src/sap/ui/core/util/Export.js +1 -1
  165. package/src/sap/ui/core/util/ExportCell.js +1 -1
  166. package/src/sap/ui/core/util/ExportColumn.js +1 -1
  167. package/src/sap/ui/core/util/ExportRow.js +1 -1
  168. package/src/sap/ui/core/util/ExportType.js +1 -1
  169. package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
  170. package/src/sap/ui/core/util/File.js +1 -1
  171. package/src/sap/ui/core/util/LibraryInfo.js +1 -1
  172. package/src/sap/ui/core/util/MockServer.js +1 -1
  173. package/src/sap/ui/core/util/PasteHelper.js +1 -1
  174. package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
  175. package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
  176. package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
  177. package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
  178. package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
  179. package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
  180. package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
  181. package/src/sap/ui/core/webc/WebComponent.js +1 -1
  182. package/src/sap/ui/core/webc/WebComponentMetadata.js +1 -1
  183. package/src/sap/ui/core/ws/ReadyState.js +1 -1
  184. package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
  185. package/src/sap/ui/core/ws/WebSocket.js +1 -1
  186. package/src/sap/ui/debug/ControlTree.js +1 -1
  187. package/src/sap/ui/debug/DebugEnv.js +1 -1
  188. package/src/sap/ui/debug/PropertyList.js +1 -1
  189. package/src/sap/ui/model/ClientModel.js +1 -1
  190. package/src/sap/ui/model/CompositeDataState.js +1 -1
  191. package/src/sap/ui/model/CompositeType.js +1 -1
  192. package/src/sap/ui/model/DataState.js +1 -1
  193. package/src/sap/ui/model/MetaModel.js +1 -1
  194. package/src/sap/ui/model/Model.js +1 -1
  195. package/src/sap/ui/model/SelectionModel.js +1 -1
  196. package/src/sap/ui/model/SimpleType.js +1 -1
  197. package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
  198. package/src/sap/ui/model/Type.js +1 -1
  199. package/src/sap/ui/model/json/JSONModel.js +1 -1
  200. package/src/sap/ui/model/message/MessageModel.js +1 -1
  201. package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
  202. package/src/sap/ui/model/odata/ODataMessageParser.js +1 -1
  203. package/src/sap/ui/model/odata/ODataMetaModel.js +1 -1
  204. package/src/sap/ui/model/odata/ODataMetadata.js +1 -1
  205. package/src/sap/ui/model/odata/ODataModel.js +1 -1
  206. package/src/sap/ui/model/odata/type/Boolean.js +1 -1
  207. package/src/sap/ui/model/odata/type/Byte.js +1 -1
  208. package/src/sap/ui/model/odata/type/Currency.js +1 -1
  209. package/src/sap/ui/model/odata/type/Date.js +1 -1
  210. package/src/sap/ui/model/odata/type/DateTime.js +1 -1
  211. package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
  212. package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
  213. package/src/sap/ui/model/odata/type/DateTimeWithTimezone.js +1 -1
  214. package/src/sap/ui/model/odata/type/Decimal.js +1 -1
  215. package/src/sap/ui/model/odata/type/Double.js +1 -1
  216. package/src/sap/ui/model/odata/type/Guid.js +1 -1
  217. package/src/sap/ui/model/odata/type/Int.js +1 -1
  218. package/src/sap/ui/model/odata/type/Int16.js +1 -1
  219. package/src/sap/ui/model/odata/type/Int32.js +1 -1
  220. package/src/sap/ui/model/odata/type/Int64.js +1 -1
  221. package/src/sap/ui/model/odata/type/ODataType.js +1 -1
  222. package/src/sap/ui/model/odata/type/Raw.js +1 -1
  223. package/src/sap/ui/model/odata/type/SByte.js +1 -1
  224. package/src/sap/ui/model/odata/type/Single.js +1 -1
  225. package/src/sap/ui/model/odata/type/Stream.js +1 -1
  226. package/src/sap/ui/model/odata/type/String.js +1 -1
  227. package/src/sap/ui/model/odata/type/Time.js +1 -1
  228. package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
  229. package/src/sap/ui/model/odata/type/Unit.js +1 -1
  230. package/src/sap/ui/model/odata/v2/Context.js +1 -1
  231. package/src/sap/ui/model/odata/v2/ODataAnnotations.js +1 -1
  232. package/src/sap/ui/model/odata/v2/ODataModel.js +1 -1
  233. package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +10 -2
  234. package/src/sap/ui/model/odata/v4/Context.js +1 -1
  235. package/src/sap/ui/model/odata/v4/ODataContextBinding.js +1 -1
  236. package/src/sap/ui/model/odata/v4/ODataListBinding.js +1 -1
  237. package/src/sap/ui/model/odata/v4/ODataMetaModel.js +1 -1
  238. package/src/sap/ui/model/odata/v4/ODataModel.js +1 -1
  239. package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +1 -1
  240. package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +1 -1
  241. package/src/sap/ui/model/odata/v4/lib/_Cache.js +27 -42
  242. package/src/sap/ui/model/odata/v4/lib/_Helper.js +11 -11
  243. package/src/sap/ui/model/odata/v4/lib/_Requestor.js +16 -6
  244. package/src/sap/ui/model/resource/ResourceModel.js +1 -1
  245. package/src/sap/ui/model/type/Boolean.js +1 -1
  246. package/src/sap/ui/model/type/Currency.js +1 -1
  247. package/src/sap/ui/model/type/Date.js +1 -1
  248. package/src/sap/ui/model/type/DateInterval.js +1 -1
  249. package/src/sap/ui/model/type/DateTime.js +1 -1
  250. package/src/sap/ui/model/type/DateTimeInterval.js +1 -1
  251. package/src/sap/ui/model/type/FileSize.js +1 -1
  252. package/src/sap/ui/model/type/Float.js +1 -1
  253. package/src/sap/ui/model/type/Integer.js +1 -1
  254. package/src/sap/ui/model/type/String.js +1 -1
  255. package/src/sap/ui/model/type/Time.js +1 -1
  256. package/src/sap/ui/model/type/TimeInterval.js +1 -1
  257. package/src/sap/ui/model/type/Unit.js +1 -1
  258. package/src/sap/ui/model/xml/XMLModel.js +1 -1
  259. package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
  260. package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +1 -1
  261. package/src/sap/ui/test/generic/TestBase.js +1 -1
  262. package/src/sap/ui/util/Storage.js +1 -1
  263. package/src/ui5loader.js +1 -1
@@ -74,7 +74,7 @@ sap.ui.define([
74
74
  * @mixes sap.ui.model.odata.v4.ODataParentBinding
75
75
  * @public
76
76
  * @since 1.37.0
77
- * @version 1.139.0
77
+ * @version 1.139.1
78
78
  *
79
79
  * @borrows sap.ui.model.odata.v4.ODataBinding#getGroupId as #getGroupId
80
80
  * @borrows sap.ui.model.odata.v4.ODataBinding#getRootBinding as #getRootBinding
@@ -60,7 +60,7 @@ sap.ui.define([
60
60
  * @mixes sap.ui.model.odata.v4.ODataParentBinding
61
61
  * @public
62
62
  * @since 1.37.0
63
- * @version 1.139.0
63
+ * @version 1.139.1
64
64
  * @borrows sap.ui.model.odata.v4.ODataBinding#getGroupId as #getGroupId
65
65
  * @borrows sap.ui.model.odata.v4.ODataBinding#getRootBinding as #getRootBinding
66
66
  * @borrows sap.ui.model.odata.v4.ODataBinding#getUpdateGroupId as #getUpdateGroupId
@@ -199,7 +199,7 @@ sap.ui.define([
199
199
  * @hideconstructor
200
200
  * @public
201
201
  * @since 1.37.0
202
- * @version 1.139.0
202
+ * @version 1.139.1
203
203
  */
204
204
  ODataMetaModel = MetaModel.extend("sap.ui.model.odata.v4.ODataMetaModel", {
205
205
  constructor : constructor
@@ -240,7 +240,7 @@ sap.ui.define([
240
240
  * @extends sap.ui.model.Model
241
241
  * @public
242
242
  * @since 1.37.0
243
- * @version 1.139.0
243
+ * @version 1.139.1
244
244
  */
245
245
  ODataModel = Model.extend("sap.ui.model.odata.v4.ODataModel",
246
246
  /** @lends sap.ui.model.odata.v4.ODataModel.prototype */{
@@ -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.139.0
45
+ * @version 1.139.1
46
46
  * @borrows sap.ui.model.odata.v4.ODataBinding#getGroupId as #getGroupId
47
47
  * @borrows sap.ui.model.odata.v4.ODataBinding#getRootBinding as #getRootBinding
48
48
  * @borrows sap.ui.model.odata.v4.ODataBinding#getUpdateGroupId as #getUpdateGroupId
@@ -1308,7 +1308,7 @@ sap.ui.define([
1308
1308
  throw new Error("Unsupported path: " + sPath);
1309
1309
  }
1310
1310
 
1311
- const mQueryOptions = _Helper.clone(this.mLateQueryOptions ?? this.mQueryOptions);
1311
+ const mQueryOptions = _Helper.clone({...this.mQueryOptions, ...this.mLateExpandSelect});
1312
1312
  const iIndex = mQueryOptions.$select.indexOf(this.oAggregation.$NodeProperty);
1313
1313
  if (iIndex >= 0) {
1314
1314
  mQueryOptions.$select.splice(iIndex, 1);
@@ -586,7 +586,7 @@ sap.ui.define([
586
586
  _Helper.getPrivateAnnotation(oEntityData, "select"));
587
587
  if (!bDeepCreate) { // after a deep create the complete response is accepted
588
588
  aSelect = _Helper.getQueryOptionsForPath(
589
- that.mLateQueryOptions || that.mQueryOptions, sPath
589
+ that.mLateExpandSelect || that.mQueryOptions, sPath
590
590
  ).$select;
591
591
  }
592
592
  // update selected properties (or in case of a deep create all of them incl.
@@ -998,7 +998,7 @@ sap.ui.define([
998
998
  }
999
999
  }
1000
1000
 
1001
- if (!(this.mLateQueryOptions || this.mQueryOptions && this.mQueryOptions.$select)) {
1001
+ if (!(this.mLateExpandSelect || this.mQueryOptions && this.mQueryOptions.$select)) {
1002
1002
  return false; // no autoExpandSelect
1003
1003
  }
1004
1004
 
@@ -1011,7 +1011,7 @@ sap.ui.define([
1011
1011
  aUpdateProperties = [sRequestedPropertyPath];
1012
1012
 
1013
1013
  sFullResourceMetaPath = _Helper.buildPath(this.sMetaPath, sResourceMetaPath);
1014
- mQueryOptions = this.mLateQueryOptions
1014
+ mQueryOptions = this.mLateExpandSelect
1015
1015
  || { // ensure that $select precedes $expand in the resulting query
1016
1016
  $select : this.mQueryOptions.$select,
1017
1017
  $expand : this.mQueryOptions.$expand
@@ -1284,18 +1284,6 @@ sap.ui.define([
1284
1284
  return aFilteredElements;
1285
1285
  };
1286
1286
 
1287
- /**
1288
- * Returns the query options for late properties.
1289
- *
1290
- * @returns {object} The late query options
1291
- *
1292
- * @public
1293
- * @see #setLateQueryOptions
1294
- */
1295
- _Cache.prototype.getLateQueryOptions = function () {
1296
- return this.mLateQueryOptions;
1297
- };
1298
-
1299
1287
  /**
1300
1288
  * Returns a promise that is pending while DELETEs or POSTs are being sent, or
1301
1289
  * <code>null</code> in case no such requests are currently being sent.
@@ -1511,10 +1499,10 @@ sap.ui.define([
1511
1499
  throw new Error("No key predicate known");
1512
1500
  }
1513
1501
  sReadUrl = _Helper.buildPath(that.sResourcePath, sPath, sPredicate);
1514
- if (bKeepAlive && that.mLateQueryOptions) {
1502
+ if (bKeepAlive && that.mLateExpandSelect) {
1515
1503
  // bKeepAlive === true -> own cache of the list binding -> sPath === ''
1516
1504
  // -> no need to apply _Helper.getQueryOptionsForPath
1517
- _Helper.aggregateExpandSelect(mQueryOptions, that.mLateQueryOptions);
1505
+ _Helper.aggregateExpandSelect(mQueryOptions, that.mLateExpandSelect);
1518
1506
  }
1519
1507
  if (sMessagesPath && mQueryOptions.$select
1520
1508
  && !mQueryOptions.$select.includes(sMessagesPath)) {
@@ -1522,19 +1510,17 @@ sap.ui.define([
1522
1510
  mQueryOptions.$select.push(sMessagesPath);
1523
1511
  bKeepReportedMessagesPath = true;
1524
1512
  }
1525
- // drop collection related system query options
1526
- delete mQueryOptions.$apply;
1527
- delete mQueryOptions.$count;
1528
- delete mQueryOptions.$filter;
1529
- delete mQueryOptions.$orderby;
1530
- delete mQueryOptions.$search;
1531
- sReadUrl += that.oRequestor.buildQueryString(that.sMetaPath, mQueryOptions, false,
1532
- that.bSortExpandSelect);
1513
+ const mMergeableQueryOptions = _Helper.extractMergeableQueryOptions(mQueryOptions);
1514
+ mMergeableQueryOptions.$$sortIfMerged = true;
1515
+ sReadUrl += that.oRequestor.buildQueryString(that.sMetaPath, mQueryOptions,
1516
+ // drop system query options to allow merging with late property requests
1517
+ /*bDropSystemQueryOptions*/true, that.bSortExpandSelect);
1533
1518
 
1534
1519
  that.bSentRequest = true;
1535
1520
  return SyncPromise.all([
1536
1521
  that.oRequestor
1537
- .request("GET", sReadUrl, oGroupLock, undefined, undefined, fnDataRequested),
1522
+ .request("GET", sReadUrl, oGroupLock, undefined, undefined, fnDataRequested,
1523
+ undefined, undefined, undefined, undefined, mMergeableQueryOptions),
1538
1524
  that.fetchTypes()
1539
1525
  ]).then(function (aResult) {
1540
1526
  var oElement = aResult[0];
@@ -1641,10 +1627,10 @@ sap.ui.define([
1641
1627
 
1642
1628
  that.bSentRequest = true;
1643
1629
  if (bKeepAlive) {
1644
- if (that.mLateQueryOptions) {
1630
+ if (that.mLateExpandSelect) {
1645
1631
  // bKeepAlive === true -> own cache of the list binding -> sPath === ''
1646
1632
  // -> no need to apply _Helper.getQueryOptionsForPath
1647
- _Helper.aggregateExpandSelect(mQueryOptions, that.mLateQueryOptions);
1633
+ _Helper.aggregateExpandSelect(mQueryOptions, that.mLateExpandSelect);
1648
1634
  }
1649
1635
  // clone query options for possible second request to check if entity is in
1650
1636
  // the collection
@@ -2042,26 +2028,25 @@ sap.ui.define([
2042
2028
 
2043
2029
  /**
2044
2030
  * Sets query options after the cache has sent a request to allow adding late properties.
2045
- * Accepts only $expand and $select.
2031
+ * Remembers only $expand and $select, and ignores others.
2046
2032
  *
2047
2033
  * @param {object} mQueryOptions
2048
2034
  * The new late query options or <code>null</code> to reset
2049
2035
  *
2050
2036
  * @public
2051
- * @see #getLateQueryOptions
2052
2037
  * @see #hasSentRequest
2053
2038
  */
2054
2039
  _Cache.prototype.setLateQueryOptions = function (mQueryOptions) {
2055
2040
  // this.checkSharedRequest(); // don't do that here! it might work well enough
2056
2041
  if (mQueryOptions) {
2057
- this.mLateQueryOptions = {
2042
+ this.mLateExpandSelect = {
2058
2043
  // must contain both properties for requestSideEffects
2059
2044
  // ensure that $select precedes $expand in the resulting query
2060
2045
  $select : mQueryOptions.$select,
2061
2046
  $expand : mQueryOptions.$expand
2062
2047
  };
2063
2048
  } else {
2064
- this.mLateQueryOptions = null;
2049
+ this.mLateExpandSelect = null;
2065
2050
  }
2066
2051
  };
2067
2052
 
@@ -2141,7 +2126,7 @@ sap.ui.define([
2141
2126
  this.oTypePromise = undefined;
2142
2127
 
2143
2128
  // the query options extended by $select for late properties
2144
- this.mLateQueryOptions = null;
2129
+ this.mLateExpandSelect = null;
2145
2130
  // map from resource path to request Promise for pending late property requests
2146
2131
  this.mPropertyRequestByPath = {};
2147
2132
  };
@@ -3542,8 +3527,8 @@ sap.ui.define([
3542
3527
  var aKeyFilters,
3543
3528
  mQueryOptions = _Helper.clone(that.mQueryOptions);
3544
3529
 
3545
- if (that.mLateQueryOptions) {
3546
- _Helper.aggregateExpandSelect(mQueryOptions, that.mLateQueryOptions);
3530
+ if (that.mLateExpandSelect) {
3531
+ _Helper.aggregateExpandSelect(mQueryOptions, that.mLateExpandSelect);
3547
3532
  }
3548
3533
  if (bDropApply) {
3549
3534
  delete mQueryOptions.$apply;
@@ -3945,7 +3930,7 @@ sap.ui.define([
3945
3930
  this.checkSharedRequest();
3946
3931
 
3947
3932
  mQueryOptions = _Helper.intersectQueryOptions(
3948
- Object.assign({}, this.mQueryOptions, this.mLateQueryOptions), aPaths,
3933
+ Object.assign({}, this.mQueryOptions, this.mLateExpandSelect), aPaths,
3949
3934
  this.oRequestor.getModelInterface().fetchMetadata, this.sMetaPath, "", bWithMessages);
3950
3935
  if (!mQueryOptions) {
3951
3936
  return SyncPromise.resolve(); // micro optimization: use *sync.* promise which is cached
@@ -4657,7 +4642,7 @@ sap.ui.define([
4657
4642
  this.checkSharedRequest();
4658
4643
 
4659
4644
  mQueryOptions = this.oPromise && _Helper.intersectQueryOptions(
4660
- Object.assign({}, this.mQueryOptions, this.mLateQueryOptions), aPaths,
4645
+ Object.assign({}, this.mQueryOptions, this.mLateExpandSelect), aPaths,
4661
4646
  this.oRequestor.getModelInterface().fetchMetadata, this.sMetaPath);
4662
4647
  if (!mQueryOptions) {
4663
4648
  return SyncPromise.resolve();
@@ -4782,7 +4767,7 @@ sap.ui.define([
4782
4767
 
4783
4768
  /**
4784
4769
  * Delegates to #fetchValue of its shared OData Singleton _SingleCache. Within the 1st call its
4785
- * own relative property path is added to the mLateQueryOptions of its _SingleCache.
4770
+ * own relative property path is added to the mLateExpandSelect of its _SingleCache.
4786
4771
  *
4787
4772
  * @param {sap.ui.model.odata.v4.lib._GroupLock} oGroupLock
4788
4773
  * A lock for the group to associate the request with
@@ -4807,18 +4792,18 @@ sap.ui.define([
4807
4792
  _SingletonPropertyCache.prototype.fetchValue = function (oGroupLock, _sPath, fnDataRequested,
4808
4793
  oListener, bCreateOnDemand) {
4809
4794
  var sPropertyPath = this.oSingleton.sResourcePath + "/" + this.sRelativePath,
4810
- mLateQueryOptions,
4795
+ mLateExpandSelect,
4811
4796
  oMetadataPromise = this.oMetadataPromise || this.oRequestor.getModelInterface()
4812
4797
  .fetchMetadata("/" + _Helper.getMetaPath(sPropertyPath)),
4813
4798
  that = this;
4814
4799
 
4815
4800
  return oMetadataPromise.then(function () {
4816
4801
  if (!that.oMetadataPromise) {
4817
- mLateQueryOptions = that.oSingleton.getLateQueryOptions() || {};
4818
- _Helper.aggregateExpandSelect(mLateQueryOptions,
4802
+ mLateExpandSelect = that.oSingleton.mLateExpandSelect || {};
4803
+ _Helper.aggregateExpandSelect(mLateExpandSelect,
4819
4804
  _Helper.wrapChildQueryOptions("/" + that.oSingleton.sResourcePath,
4820
4805
  that.sRelativePath, {}, that.oRequestor.getModelInterface().fetchMetadata));
4821
- that.oSingleton.setLateQueryOptions(mLateQueryOptions);
4806
+ that.oSingleton.setLateQueryOptions(mLateExpandSelect);
4822
4807
  }
4823
4808
  that.oMetadataPromise = oMetadataPromise;
4824
4809
  return that.oSingleton.fetchValue(oGroupLock, that.sRelativePath, fnDataRequested,
@@ -303,7 +303,8 @@ sap.ui.define([
303
303
  /**
304
304
  * Builds a query string from the given parameter map. Takes care of encoding, but ensures
305
305
  * that the characters "$", "(", ")", ";" and "=" are not encoded, so that OData queries
306
- * remain readable.
306
+ * remain readable. A parameter starting with "$$" is meant to be internal and does not
307
+ * become part of the query string.
307
308
  *
308
309
  * ';' is not encoded although RFC 1866 encourages its usage as separator between query
309
310
  * parameters. However OData Version 4.0 Part 2 specifies that only '&' is a valid
@@ -331,7 +332,7 @@ sap.ui.define([
331
332
  return "";
332
333
  }
333
334
 
334
- aKeys = Object.keys(mParameters);
335
+ aKeys = Object.keys(mParameters).filter((sKey) => !sKey.startsWith("$$"));
335
336
  if (aKeys.length === 0) {
336
337
  return "";
337
338
  }
@@ -1018,21 +1019,20 @@ sap.ui.define([
1018
1019
  * them as a new map while replacing their value with "~" in the old map.
1019
1020
  *
1020
1021
  * @param {object} mQueryOptions - The original query options to be MODIFIED
1021
- * @returns {object} The extracted query options
1022
+ * @returns {object} The extracted query options in the same order
1022
1023
  *
1023
1024
  * @public
1024
1025
  */
1025
1026
  extractMergeableQueryOptions : function (mQueryOptions) {
1026
1027
  var mExtractedQueryOptions = {};
1027
1028
 
1028
- if ("$expand" in mQueryOptions) {
1029
- mExtractedQueryOptions.$expand = mQueryOptions.$expand;
1030
- mQueryOptions.$expand = "~";
1031
- }
1032
- if ("$select" in mQueryOptions) {
1033
- mExtractedQueryOptions.$select = mQueryOptions.$select;
1034
- mQueryOptions.$select = "~";
1035
- }
1029
+ // ensure to keep the order of the query options
1030
+ Object.keys(mQueryOptions).forEach(function (sKey) {
1031
+ if (sKey === "$expand" || sKey === "$select") {
1032
+ mExtractedQueryOptions[sKey] = mQueryOptions[sKey];
1033
+ mQueryOptions[sKey] = "~";
1034
+ }
1035
+ });
1036
1036
 
1037
1037
  return mExtractedQueryOptions;
1038
1038
  },
@@ -192,11 +192,14 @@ sap.ui.define([
192
192
  * @param {string} sResourcePath The resource path with possible query options and placeholders
193
193
  * @param {string} sMetaPath The absolute meta path matching the resource path
194
194
  * @param {object} mQueryOptions Query options to add to the resource path
195
+ * @param {boolean} [bSortSystemQueryOptions]
196
+ * Whether system query options are sorted alphabetically and moved to the query string's end
195
197
  * @returns {string} The resource path with the query options
196
198
  *
197
199
  * @private
198
200
  */
199
- _Requestor.prototype.addQueryString = function (sResourcePath, sMetaPath, mQueryOptions) {
201
+ _Requestor.prototype.addQueryString = function (sResourcePath, sMetaPath, mQueryOptions,
202
+ bSortSystemQueryOptions) {
200
203
  var sQueryString;
201
204
 
202
205
  mQueryOptions = this.convertQueryOptions(sMetaPath, mQueryOptions, false, true);
@@ -209,7 +212,7 @@ sap.ui.define([
209
212
  return _Helper.encodePair(sOption, sValue);
210
213
  });
211
214
 
212
- sQueryString = _Helper.buildQuery(mQueryOptions);
215
+ sQueryString = _Helper.buildQuery(mQueryOptions, bSortSystemQueryOptions);
213
216
  if (!sQueryString) {
214
217
  return sResourcePath;
215
218
  }
@@ -1285,6 +1288,9 @@ sap.ui.define([
1285
1288
  if (oCandidate.$mergeRequests && oRequest.$mergeRequests) {
1286
1289
  oCandidate.$mergeRequests(oRequest.$mergeRequests());
1287
1290
  }
1291
+ oCandidate.$sortSystemQueryOptions
1292
+ ||= oCandidate.$queryOptions.$$sortIfMerged
1293
+ || oRequest.$queryOptions.$$sortIfMerged;
1288
1294
 
1289
1295
  return true;
1290
1296
  }
@@ -1302,10 +1308,12 @@ sap.ui.define([
1302
1308
  var mQueryOptions = oRequest.$queryOptions;
1303
1309
 
1304
1310
  if (mQueryOptions) {
1305
- if (mQueryOptions.$expand && !mQueryOptions.$select.length) {
1311
+ // if there was no $select, don't introduce one
1312
+ if (mQueryOptions.$expand && mQueryOptions.$select?.length === 0) {
1306
1313
  mQueryOptions.$select = Object.keys(mQueryOptions.$expand).sort().slice(0, 1);
1307
1314
  }
1308
- oRequest.url = that.addQueryString(oRequest.url, oRequest.$metaPath, mQueryOptions);
1315
+ oRequest.url = that.addQueryString(oRequest.url, oRequest.$metaPath, mQueryOptions,
1316
+ oRequest.$sortSystemQueryOptions);
1309
1317
  }
1310
1318
  });
1311
1319
  aResultingRequests.iChangeSet = aRequests.iChangeSet;
@@ -1853,10 +1861,12 @@ sap.ui.define([
1853
1861
  * contain $expand
1854
1862
  * @param {any} [vOwner]
1855
1863
  * An additional precondition for the merging of GET requests: the owner must be identical.
1864
+ * This is probably relevant when using parameter <code>fnMergeRequests</code> to ensure both
1865
+ * functions work well together.
1856
1866
  * @param {function(string[]):string[]} [fnMergeRequests]
1857
1867
  * Function which is called during merging of GET or PATCH requests. If a merged request has a
1858
- * function given, this function will be called and its return value is
1859
- * given to the one remaining request's function as a parameter.
1868
+ * function given, this function will be called and its return value is given to the one
1869
+ * remaining request's function as a parameter. See also <code>vOwner</code>.
1860
1870
  * @returns {Promise}
1861
1871
  * A promise on the outcome of the HTTP request; it will be rejected with an error having the
1862
1872
  * property <code>canceled = true</code> instead of sending a request if
@@ -227,7 +227,7 @@ sap.ui.define([
227
227
  *
228
228
  * @extends sap.ui.model.Model
229
229
  * @public
230
- * @version 1.139.0
230
+ * @version 1.139.1
231
231
  */
232
232
  var ResourceModel = Model.extend("sap.ui.model.resource.ResourceModel", /** @lends sap.ui.model.resource.ResourceModel.prototype */ {
233
233
 
@@ -19,7 +19,7 @@ sap.ui.define(["sap/ui/core/Lib", 'sap/ui/model/SimpleType', 'sap/ui/model/Forma
19
19
  * @extends sap.ui.model.SimpleType
20
20
  *
21
21
  * @author SAP SE
22
- * @version 1.139.0
22
+ * @version 1.139.1
23
23
  *
24
24
  * @public
25
25
  * @param {object} [oFormatOptions]
@@ -34,7 +34,7 @@ sap.ui.define([
34
34
  * @extends sap.ui.model.CompositeType
35
35
  *
36
36
  * @author SAP SE
37
- * @version 1.139.0
37
+ * @version 1.139.1
38
38
  *
39
39
  * @public
40
40
  * @param {object} [oFormatOptions]
@@ -27,7 +27,7 @@ sap.ui.define([
27
27
  * @extends sap.ui.model.SimpleType
28
28
  *
29
29
  * @author SAP SE
30
- * @version 1.139.0
30
+ * @version 1.139.1
31
31
  *
32
32
  * @public
33
33
  * @param {object} [oFormatOptions] Formatting options. For a list of all available options, see {@link sap.ui.core.format.DateFormat.getDateInstance DateFormat}.
@@ -25,7 +25,7 @@ sap.ui.define([
25
25
  * @extends sap.ui.model.CompositeType
26
26
  *
27
27
  * @author SAP SE
28
- * @version 1.139.0
28
+ * @version 1.139.1
29
29
  *
30
30
  * @alias sap.ui.model.type.DateInterval
31
31
  * @param {object} [oFormatOptions]
@@ -19,7 +19,7 @@ sap.ui.define(['./Date', 'sap/ui/core/format/DateFormat'],
19
19
  * @extends sap.ui.model.type.Date
20
20
  *
21
21
  * @author SAP SE
22
- * @version 1.139.0
22
+ * @version 1.139.1
23
23
  *
24
24
  * @public
25
25
  * @param {object} [oFormatOptions] Formatting options. For a list of all available options, see {@link sap.ui.core.format.DateFormat.getDateTimeInstance DateFormat}.
@@ -19,7 +19,7 @@ sap.ui.define(['./DateInterval', 'sap/ui/core/format/DateFormat'],
19
19
  * @extends sap.ui.model.type.DateInterval
20
20
  *
21
21
  * @author SAP SE
22
- * @version 1.139.0
22
+ * @version 1.139.1
23
23
  *
24
24
  * @public
25
25
  * @param {object} [oFormatOptions] Formatting options. For a list of all available options, see {@link sap.ui.core.format.DateFormat.getDateTimeInstance DateFormat}.
@@ -25,7 +25,7 @@ sap.ui.define([
25
25
  * @extends sap.ui.model.SimpleType
26
26
  *
27
27
  * @author SAP SE
28
- * @version 1.139.0
28
+ * @version 1.139.1
29
29
  *
30
30
  * @public
31
31
  * @param {object} [oFormatOptions]
@@ -26,7 +26,7 @@ sap.ui.define([
26
26
  * @extends sap.ui.model.SimpleType
27
27
  *
28
28
  * @author SAP SE
29
- * @version 1.139.0
29
+ * @version 1.139.1
30
30
  *
31
31
  * @public
32
32
  * @param {object} [oFormatOptions]
@@ -26,7 +26,7 @@ sap.ui.define([
26
26
  * @extends sap.ui.model.SimpleType
27
27
  *
28
28
  * @author SAP SE
29
- * @version 1.139.0
29
+ * @version 1.139.1
30
30
  *
31
31
  * @public
32
32
  * @param {object} [oFormatOptions]
@@ -25,7 +25,7 @@ sap.ui.define([
25
25
  * @extends sap.ui.model.SimpleType
26
26
  *
27
27
  * @author SAP SE
28
- * @version 1.139.0
28
+ * @version 1.139.1
29
29
  *
30
30
  * @alias sap.ui.model.type.String
31
31
  * @param {object} [oFormatOptions]
@@ -19,7 +19,7 @@ sap.ui.define(['./Date', 'sap/ui/core/format/DateFormat'],
19
19
  * @extends sap.ui.model.type.Date
20
20
  *
21
21
  * @author SAP SE
22
- * @version 1.139.0
22
+ * @version 1.139.1
23
23
  *
24
24
  * @public
25
25
  * @param {object} [oFormatOptions] Formatting options. For a list of all available options, see {@link sap.ui.core.format.DateFormat.getTimeInstance DateFormat}.
@@ -19,7 +19,7 @@ sap.ui.define(['./DateInterval', 'sap/ui/core/format/DateFormat'],
19
19
  * @extends sap.ui.model.type.DateInterval
20
20
  *
21
21
  * @author SAP SE
22
- * @version 1.139.0
22
+ * @version 1.139.1
23
23
  *
24
24
  * @public
25
25
  * @param {object} [oFormatOptions] Formatting options. For a list of all available options, see {@link sap.ui.core.format.DateFormat.getTimeInstance DateFormat}.
@@ -49,7 +49,7 @@ sap.ui.define([
49
49
  *
50
50
  *
51
51
  * @author SAP SE
52
- * @version 1.139.0
52
+ * @version 1.139.1
53
53
  *
54
54
  * @public
55
55
  * @param {object} [oFormatOptions]
@@ -47,7 +47,7 @@ sap.ui.define([
47
47
  * @extends sap.ui.model.ClientModel
48
48
  *
49
49
  * @author SAP SE
50
- * @version 1.139.0
50
+ * @version 1.139.1
51
51
  *
52
52
  * @param {XMLDocument|string} oData
53
53
  * Either the URL where to load the XML from or an XML document
@@ -53,7 +53,7 @@ sap.ui.define(['sap/ui/core/Core', "sap/ui/VersionInfo", "sap/ui/core/Lib"],
53
53
  * @namespace
54
54
  *
55
55
  * @author SAP SE
56
- * @version 1.139.0
56
+ * @version 1.139.1
57
57
  *
58
58
  * @public
59
59
  * @since 1.48.0
@@ -30,7 +30,7 @@ sap.ui.define([ 'sap/ui/core/ElementRegistry', 'sap/ui/core/Control', "sap/ui/qu
30
30
  * @namespace
31
31
  *
32
32
  * @author SAP SE
33
- * @version 1.139.0
33
+ * @version 1.139.1
34
34
  *
35
35
  * @public
36
36
  * @since 1.48.0
@@ -26,7 +26,7 @@ sap.ui.define([
26
26
  * @extends sap.ui.base.Object
27
27
  * @abstract
28
28
  * @author SAP SE
29
- * @version 1.139.0
29
+ * @version 1.139.1
30
30
  * @since 1.100
31
31
  */
32
32
  return BaseObject.extend("sap.ui.test.generic.TestBase", {
@@ -277,7 +277,7 @@ sap.ui.define(["sap/base/assert"], function (assert) {
277
277
  *
278
278
  * @enum {string}
279
279
  * @public
280
- * @version 1.139.0
280
+ * @version 1.139.1
281
281
  */
282
282
  Storage.Type = {
283
283
  /**
package/src/ui5loader.js CHANGED
@@ -2696,7 +2696,7 @@
2696
2696
  /**
2697
2697
  * Root namespace for JavaScript functionality provided by SAP SE.
2698
2698
  *
2699
- * @version 1.139.0
2699
+ * @version 1.139.1
2700
2700
  * @namespace
2701
2701
  * @public
2702
2702
  * @name sap