@openui5/sap.ui.core 1.114.2 → 1.114.4

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 (260) 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/sap/base/config.js +1 -1
  8. package/src/sap/base/util/restricted/_CancelablePromise.js +1 -1
  9. package/src/sap/base/util/restricted/_castArray.js +1 -1
  10. package/src/sap/base/util/restricted/_compact.js +1 -1
  11. package/src/sap/base/util/restricted/_curry.js +1 -1
  12. package/src/sap/base/util/restricted/_debounce.js +1 -1
  13. package/src/sap/base/util/restricted/_difference.js +1 -1
  14. package/src/sap/base/util/restricted/_differenceBy.js +1 -1
  15. package/src/sap/base/util/restricted/_differenceWith.js +1 -1
  16. package/src/sap/base/util/restricted/_flatMap.js +1 -1
  17. package/src/sap/base/util/restricted/_flatMapDeep.js +1 -1
  18. package/src/sap/base/util/restricted/_flatMapDepth.js +1 -1
  19. package/src/sap/base/util/restricted/_flatten.js +1 -1
  20. package/src/sap/base/util/restricted/_flattenDeep.js +1 -1
  21. package/src/sap/base/util/restricted/_flattenDepth.js +1 -1
  22. package/src/sap/base/util/restricted/_intersection.js +1 -1
  23. package/src/sap/base/util/restricted/_intersectionBy.js +1 -1
  24. package/src/sap/base/util/restricted/_intersectionWith.js +1 -1
  25. package/src/sap/base/util/restricted/_isEqual.js +1 -1
  26. package/src/sap/base/util/restricted/_isEqualWith.js +1 -1
  27. package/src/sap/base/util/restricted/_isNil.js +1 -1
  28. package/src/sap/base/util/restricted/_max.js +1 -1
  29. package/src/sap/base/util/restricted/_merge.js +1 -1
  30. package/src/sap/base/util/restricted/_mergeWith.js +1 -1
  31. package/src/sap/base/util/restricted/_min.js +1 -1
  32. package/src/sap/base/util/restricted/_omit.js +1 -1
  33. package/src/sap/base/util/restricted/_pick.js +1 -1
  34. package/src/sap/base/util/restricted/_pickBy.js +1 -1
  35. package/src/sap/base/util/restricted/_throttle.js +1 -1
  36. package/src/sap/base/util/restricted/_toArray.js +1 -1
  37. package/src/sap/base/util/restricted/_union.js +1 -1
  38. package/src/sap/base/util/restricted/_unionBy.js +1 -1
  39. package/src/sap/base/util/restricted/_unionWith.js +1 -1
  40. package/src/sap/base/util/restricted/_uniq.js +1 -1
  41. package/src/sap/base/util/restricted/_uniqBy.js +1 -1
  42. package/src/sap/base/util/restricted/_uniqWith.js +1 -1
  43. package/src/sap/base/util/restricted/_without.js +1 -1
  44. package/src/sap/base/util/restricted/_xor.js +1 -1
  45. package/src/sap/base/util/restricted/_xorBy.js +1 -1
  46. package/src/sap/base/util/restricted/_xorWith.js +1 -1
  47. package/src/sap/base/util/restricted/_zipObject.js +1 -1
  48. package/src/sap/base/util/restricted/_zipObjectDeep.js +1 -1
  49. package/src/sap/ui/Device.js +3 -3
  50. package/src/sap/ui/Global.js +4 -4
  51. package/src/sap/ui/base/Event.js +1 -1
  52. package/src/sap/ui/base/EventProvider.js +1 -1
  53. package/src/sap/ui/base/Interface.js +1 -1
  54. package/src/sap/ui/base/ManagedObject.js +1 -1
  55. package/src/sap/ui/base/ManagedObjectMetadata.js +1 -1
  56. package/src/sap/ui/base/Metadata.js +1 -1
  57. package/src/sap/ui/base/Object.js +1 -1
  58. package/src/sap/ui/base/ObjectPool.js +1 -1
  59. package/src/sap/ui/core/.library +1 -1
  60. package/src/sap/ui/core/BusyIndicator.js +1 -1
  61. package/src/sap/ui/core/Component.js +1 -1
  62. package/src/sap/ui/core/ComponentContainer.js +1 -1
  63. package/src/sap/ui/core/ComponentMetadata.js +1 -1
  64. package/src/sap/ui/core/ComponentSupport.js +1 -1
  65. package/src/sap/ui/core/Configuration.js +12 -18
  66. package/src/sap/ui/core/Control.js +1 -1
  67. package/src/sap/ui/core/Core.js +4 -2
  68. package/src/sap/ui/core/CustomData.js +1 -1
  69. package/src/sap/ui/core/DeclarativeSupport.js +1 -1
  70. package/src/sap/ui/core/Element.js +1 -1
  71. package/src/sap/ui/core/ElementMetadata.js +1 -1
  72. package/src/sap/ui/core/EnabledPropagator.js +1 -1
  73. package/src/sap/ui/core/EventBus.js +1 -1
  74. package/src/sap/ui/core/Fragment.js +1 -1
  75. package/src/sap/ui/core/HTML.js +1 -1
  76. package/src/sap/ui/core/History.js +1 -1
  77. package/src/sap/ui/core/Icon.js +1 -1
  78. package/src/sap/ui/core/IconPool.js +1 -2
  79. package/src/sap/ui/core/IndicationColorSupport.js +1 -1
  80. package/src/sap/ui/core/IntervalTrigger.js +1 -1
  81. package/src/sap/ui/core/InvisibleMessage.js +1 -1
  82. package/src/sap/ui/core/InvisibleRenderer.js +1 -1
  83. package/src/sap/ui/core/InvisibleText.js +1 -1
  84. package/src/sap/ui/core/Item.js +1 -1
  85. package/src/sap/ui/core/LabelEnablement.js +1 -1
  86. package/src/sap/ui/core/LayoutData.js +1 -1
  87. package/src/sap/ui/core/ListItem.js +1 -1
  88. package/src/sap/ui/core/LocalBusyIndicator.js +1 -1
  89. package/src/sap/ui/core/Locale.js +1 -1
  90. package/src/sap/ui/core/LocaleData.js +1 -1
  91. package/src/sap/ui/core/Manifest.js +1 -1
  92. package/src/sap/ui/core/Message.js +1 -1
  93. package/src/sap/ui/core/RenderManager.js +1 -1
  94. package/src/sap/ui/core/Renderer.js +1 -1
  95. package/src/sap/ui/core/ResizeHandler.js +1 -1
  96. package/src/sap/ui/core/ScrollBar.js +1 -1
  97. package/src/sap/ui/core/SeparatorItem.js +1 -1
  98. package/src/sap/ui/core/Shortcut.js +11 -9
  99. package/src/sap/ui/core/Title.js +1 -1
  100. package/src/sap/ui/core/TooltipBase.js +1 -1
  101. package/src/sap/ui/core/UIArea.js +1 -1
  102. package/src/sap/ui/core/UIComponent.js +1 -1
  103. package/src/sap/ui/core/UIComponentMetadata.js +1 -1
  104. package/src/sap/ui/core/ValueStateSupport.js +1 -1
  105. package/src/sap/ui/core/VariantLayoutData.js +1 -1
  106. package/src/sap/ui/core/XMLComposite.js +1 -1
  107. package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
  108. package/src/sap/ui/core/_IconRegistry.js +83 -11
  109. package/src/sap/ui/core/date/UI5Date.js +1 -1
  110. package/src/sap/ui/core/delegate/ItemNavigation.js +1 -1
  111. package/src/sap/ui/core/delegate/ScrollEnablement.js +1 -1
  112. package/src/sap/ui/core/dnd/DragDropBase.js +1 -1
  113. package/src/sap/ui/core/dnd/DragDropInfo.js +1 -1
  114. package/src/sap/ui/core/dnd/DragInfo.js +1 -1
  115. package/src/sap/ui/core/dnd/DropInfo.js +1 -1
  116. package/src/sap/ui/core/format/DateFormat.js +4 -0
  117. package/src/sap/ui/core/format/TimezoneUtil.js +1 -1
  118. package/src/sap/ui/core/hyphenation/Hyphenation.js +1 -1
  119. package/src/sap/ui/core/library.js +3 -3
  120. package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
  121. package/src/sap/ui/core/message/Message.js +1 -1
  122. package/src/sap/ui/core/message/MessageManager.js +1 -1
  123. package/src/sap/ui/core/message/MessageParser.js +1 -1
  124. package/src/sap/ui/core/message/MessageProcessor.js +1 -1
  125. package/src/sap/ui/core/mvc/HTMLView.js +1 -1
  126. package/src/sap/ui/core/mvc/JSONView.js +1 -1
  127. package/src/sap/ui/core/mvc/JSView.js +1 -1
  128. package/src/sap/ui/core/mvc/TemplateView.js +1 -1
  129. package/src/sap/ui/core/mvc/View.js +1 -1
  130. package/src/sap/ui/core/mvc/XMLView.js +1 -1
  131. package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
  132. package/src/sap/ui/core/plugin/LessSupport.js +1 -1
  133. package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -1
  134. package/src/sap/ui/core/postmessage/Bus.js +1 -1
  135. package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
  136. package/src/sap/ui/core/search/OpenSearchProvider.js +1 -1
  137. package/src/sap/ui/core/search/SearchProvider.js +1 -1
  138. package/src/sap/ui/core/service/Service.js +1 -1
  139. package/src/sap/ui/core/service/ServiceFactory.js +1 -1
  140. package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
  141. package/src/sap/ui/core/support/Plugin.js +1 -1
  142. package/src/sap/ui/core/support/Support.js +1 -1
  143. package/src/sap/ui/core/support/plugins/ControlTree.js +1 -1
  144. package/src/sap/ui/core/support/plugins/Interaction.js +1 -1
  145. package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
  146. package/src/sap/ui/core/support/plugins/Performance.js +1 -1
  147. package/src/sap/ui/core/support/plugins/Selector.js +1 -1
  148. package/src/sap/ui/core/support/plugins/TechInfo.js +1 -1
  149. package/src/sap/ui/core/support/plugins/Trace.js +1 -1
  150. package/src/sap/ui/core/support/plugins/ViewInfo.js +1 -1
  151. package/src/sap/ui/core/themes/base/Icon.less +2 -2
  152. package/src/sap/ui/core/theming/ThemeHelper.js +103 -0
  153. package/src/sap/ui/core/theming/ThemeManager.js +2 -1
  154. package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
  155. package/src/sap/ui/core/tmpl/DOMElement.js +1 -1
  156. package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
  157. package/src/sap/ui/core/tmpl/Template.js +1 -1
  158. package/src/sap/ui/core/tmpl/TemplateControl.js +1 -1
  159. package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
  160. package/src/sap/ui/core/util/Export.js +1 -1
  161. package/src/sap/ui/core/util/ExportCell.js +1 -1
  162. package/src/sap/ui/core/util/ExportColumn.js +1 -1
  163. package/src/sap/ui/core/util/ExportRow.js +1 -1
  164. package/src/sap/ui/core/util/ExportType.js +1 -1
  165. package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
  166. package/src/sap/ui/core/util/File.js +1 -1
  167. package/src/sap/ui/core/util/LibraryInfo.js +1 -1
  168. package/src/sap/ui/core/util/MockServer.js +1 -1
  169. package/src/sap/ui/core/util/PasteHelper.js +1 -1
  170. package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
  171. package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
  172. package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
  173. package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
  174. package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
  175. package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
  176. package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
  177. package/src/sap/ui/core/ws/ReadyState.js +1 -1
  178. package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
  179. package/src/sap/ui/core/ws/WebSocket.js +1 -1
  180. package/src/sap/ui/debug/ControlTree.js +1 -1
  181. package/src/sap/ui/debug/DebugEnv.js +1 -1
  182. package/src/sap/ui/debug/PropertyList.js +1 -1
  183. package/src/sap/ui/model/ClientModel.js +1 -1
  184. package/src/sap/ui/model/CompositeDataState.js +1 -1
  185. package/src/sap/ui/model/CompositeType.js +1 -1
  186. package/src/sap/ui/model/DataState.js +1 -1
  187. package/src/sap/ui/model/MetaModel.js +1 -1
  188. package/src/sap/ui/model/Model.js +1 -1
  189. package/src/sap/ui/model/SelectionModel.js +1 -1
  190. package/src/sap/ui/model/SimpleType.js +1 -1
  191. package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
  192. package/src/sap/ui/model/Type.js +1 -1
  193. package/src/sap/ui/model/json/JSONModel.js +1 -1
  194. package/src/sap/ui/model/message/MessageModel.js +1 -1
  195. package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
  196. package/src/sap/ui/model/odata/ODataMessageParser.js +1 -1
  197. package/src/sap/ui/model/odata/ODataMetaModel.js +1 -1
  198. package/src/sap/ui/model/odata/ODataMetadata.js +1 -1
  199. package/src/sap/ui/model/odata/ODataModel.js +1 -1
  200. package/src/sap/ui/model/odata/type/Boolean.js +1 -1
  201. package/src/sap/ui/model/odata/type/Byte.js +1 -1
  202. package/src/sap/ui/model/odata/type/Currency.js +1 -1
  203. package/src/sap/ui/model/odata/type/Date.js +1 -1
  204. package/src/sap/ui/model/odata/type/DateTime.js +1 -1
  205. package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
  206. package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
  207. package/src/sap/ui/model/odata/type/DateTimeWithTimezone.js +1 -1
  208. package/src/sap/ui/model/odata/type/Decimal.js +1 -1
  209. package/src/sap/ui/model/odata/type/Double.js +1 -1
  210. package/src/sap/ui/model/odata/type/Guid.js +1 -1
  211. package/src/sap/ui/model/odata/type/Int.js +1 -1
  212. package/src/sap/ui/model/odata/type/Int16.js +1 -1
  213. package/src/sap/ui/model/odata/type/Int32.js +1 -1
  214. package/src/sap/ui/model/odata/type/Int64.js +1 -1
  215. package/src/sap/ui/model/odata/type/ODataType.js +1 -1
  216. package/src/sap/ui/model/odata/type/Raw.js +1 -1
  217. package/src/sap/ui/model/odata/type/SByte.js +1 -1
  218. package/src/sap/ui/model/odata/type/Single.js +1 -1
  219. package/src/sap/ui/model/odata/type/Stream.js +1 -1
  220. package/src/sap/ui/model/odata/type/String.js +1 -1
  221. package/src/sap/ui/model/odata/type/Time.js +1 -1
  222. package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
  223. package/src/sap/ui/model/odata/type/Unit.js +1 -1
  224. package/src/sap/ui/model/odata/v2/Context.js +1 -1
  225. package/src/sap/ui/model/odata/v2/ODataAnnotations.js +1 -1
  226. package/src/sap/ui/model/odata/v2/ODataModel.js +1 -1
  227. package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +1 -1
  228. package/src/sap/ui/model/odata/v4/Context.js +3 -3
  229. package/src/sap/ui/model/odata/v4/ODataBinding.js +65 -38
  230. package/src/sap/ui/model/odata/v4/ODataContextBinding.js +5 -4
  231. package/src/sap/ui/model/odata/v4/ODataListBinding.js +7 -6
  232. package/src/sap/ui/model/odata/v4/ODataMetaModel.js +8 -9
  233. package/src/sap/ui/model/odata/v4/ODataModel.js +1 -1
  234. package/src/sap/ui/model/odata/v4/ODataParentBinding.js +58 -27
  235. package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +5 -5
  236. package/src/sap/ui/model/odata/v4/lib/_Cache.js +11 -7
  237. package/src/sap/ui/model/odata/v4/lib/_Helper.js +5 -1
  238. package/src/sap/ui/model/odata/v4/lib/_Requestor.js +1 -1
  239. package/src/sap/ui/model/odata/v4/lib/_V2MetadataConverter.js +4 -4
  240. package/src/sap/ui/model/odata/v4/lib/_V2Requestor.js +1 -1
  241. package/src/sap/ui/model/resource/ResourceModel.js +1 -1
  242. package/src/sap/ui/model/type/Boolean.js +1 -1
  243. package/src/sap/ui/model/type/Currency.js +1 -1
  244. package/src/sap/ui/model/type/Date.js +1 -1
  245. package/src/sap/ui/model/type/DateInterval.js +1 -1
  246. package/src/sap/ui/model/type/DateTime.js +1 -1
  247. package/src/sap/ui/model/type/DateTimeInterval.js +1 -1
  248. package/src/sap/ui/model/type/FileSize.js +1 -1
  249. package/src/sap/ui/model/type/Float.js +1 -1
  250. package/src/sap/ui/model/type/Integer.js +1 -1
  251. package/src/sap/ui/model/type/String.js +1 -1
  252. package/src/sap/ui/model/type/Time.js +1 -1
  253. package/src/sap/ui/model/type/TimeInterval.js +1 -1
  254. package/src/sap/ui/model/type/Unit.js +1 -1
  255. package/src/sap/ui/model/xml/XMLModel.js +1 -1
  256. package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
  257. package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +1 -1
  258. package/src/sap/ui/test/generic/TestBase.js +1 -1
  259. package/src/sap/ui/util/Mobile.js +10 -6
  260. package/src/sap/ui/util/Storage.js +1 -1
@@ -92,7 +92,7 @@ sap.ui.define([
92
92
  * @extends sap.ui.model.odata.type.ODataType
93
93
  * @public
94
94
  * @since 1.27.0
95
- * @version 1.114.2
95
+ * @version 1.114.4
96
96
  */
97
97
  var DateTimeBase = ODataType.extend("sap.ui.model.odata.type.DateTimeBase", {
98
98
  constructor : function (oFormatOptions, oConstraints) {
@@ -29,7 +29,7 @@ sap.ui.define([
29
29
  * @extends sap.ui.model.odata.type.DateTimeBase
30
30
  *
31
31
  * @author SAP SE
32
- * @version 1.114.2
32
+ * @version 1.114.4
33
33
  *
34
34
  * @alias sap.ui.model.odata.type.DateTimeOffset
35
35
  * @param {object} [oFormatOptions]
@@ -45,7 +45,7 @@ sap.ui.define([
45
45
  * @public
46
46
  * @see {sap.ui.model.odata.v2.ODataModel#bindProperty}
47
47
  * @since 1.99.0
48
- * @version 1.114.2
48
+ * @version 1.114.4
49
49
  */
50
50
  var DateTimeWithTimezone = CompositeType.extend("sap.ui.model.odata.type.DateTimeWithTimezone",
51
51
  {
@@ -171,7 +171,7 @@ sap.ui.define([
171
171
  * @extends sap.ui.model.odata.type.ODataType
172
172
  *
173
173
  * @author SAP SE
174
- * @version 1.114.2
174
+ * @version 1.114.4
175
175
  *
176
176
  * @alias sap.ui.model.odata.type.Decimal
177
177
  * @param {object} [oFormatOptions]
@@ -73,7 +73,7 @@ sap.ui.define([
73
73
  * @extends sap.ui.model.odata.type.ODataType
74
74
  *
75
75
  * @author SAP SE
76
- * @version 1.114.2
76
+ * @version 1.114.4
77
77
  *
78
78
  * @alias sap.ui.model.odata.type.Double
79
79
  * @param {object} [oFormatOptions]
@@ -62,7 +62,7 @@ sap.ui.define([
62
62
  * @extends sap.ui.model.odata.type.ODataType
63
63
  *
64
64
  * @author SAP SE
65
- * @version 1.114.2
65
+ * @version 1.114.4
66
66
  *
67
67
  * @alias sap.ui.model.odata.type.Guid
68
68
  * @param {object} [oFormatOptions]
@@ -63,7 +63,7 @@ sap.ui.define([
63
63
  * @extends sap.ui.model.odata.type.ODataType
64
64
  *
65
65
  * @author SAP SE
66
- * @version 1.114.2
66
+ * @version 1.114.4
67
67
  *
68
68
  * @abstract
69
69
  * @alias sap.ui.model.odata.type.Int
@@ -24,7 +24,7 @@ sap.ui.define([
24
24
  * @extends sap.ui.model.odata.type.Int
25
25
  *
26
26
  * @author SAP SE
27
- * @version 1.114.2
27
+ * @version 1.114.4
28
28
  *
29
29
  * @alias sap.ui.model.odata.type.Int16
30
30
  * @param {object} [oFormatOptions]
@@ -24,7 +24,7 @@ sap.ui.define([
24
24
  * @extends sap.ui.model.odata.type.Int
25
25
  *
26
26
  * @author SAP SE
27
- * @version 1.114.2
27
+ * @version 1.114.4
28
28
  *
29
29
  * @alias sap.ui.model.odata.type.Int32
30
30
  * @param {object} [oFormatOptions]
@@ -119,7 +119,7 @@ sap.ui.define([
119
119
  * @extends sap.ui.model.odata.type.ODataType
120
120
  *
121
121
  * @author SAP SE
122
- * @version 1.114.2
122
+ * @version 1.114.4
123
123
  *
124
124
  * @alias sap.ui.model.odata.type.Int64
125
125
  * @param {object} [oFormatOptions]
@@ -115,7 +115,7 @@ sap.ui.define([
115
115
  * @extends sap.ui.model.SimpleType
116
116
  *
117
117
  * @author SAP SE
118
- * @version 1.114.2
118
+ * @version 1.114.4
119
119
  *
120
120
  * @abstract
121
121
  * @alias sap.ui.model.odata.type.ODataType
@@ -30,7 +30,7 @@ sap.ui.define([
30
30
  * @extends sap.ui.model.odata.type.ODataType
31
31
  * @public
32
32
  * @since 1.37.0
33
- * @version 1.114.2
33
+ * @version 1.114.4
34
34
  */
35
35
  var Raw = ODataType.extend("sap.ui.model.odata.type.Raw", {
36
36
  constructor : function (oFormatOptions, oConstraints) {
@@ -24,7 +24,7 @@ sap.ui.define([
24
24
  * @extends sap.ui.model.odata.type.Int
25
25
  *
26
26
  * @author SAP SE
27
- * @version 1.114.2
27
+ * @version 1.114.4
28
28
  *
29
29
  * @alias sap.ui.model.odata.type.SByte
30
30
  * @param {object} [oFormatOptions]
@@ -73,7 +73,7 @@ sap.ui.define([
73
73
  * @extends sap.ui.model.odata.type.ODataType
74
74
  *
75
75
  * @author SAP SE
76
- * @version 1.114.2
76
+ * @version 1.114.4
77
77
  *
78
78
  * @alias sap.ui.model.odata.type.Single
79
79
  * @param {object} [oFormatOptions]
@@ -60,7 +60,7 @@ sap.ui.define([
60
60
  * @extends sap.ui.model.odata.type.ODataType
61
61
  * @public
62
62
  * @since 1.51.0
63
- * @version 1.114.2
63
+ * @version 1.114.4
64
64
  */
65
65
  var Stream = ODataType.extend("sap.ui.model.odata.type.Stream", {
66
66
  constructor : function (oFormatOptions, oConstraints) {
@@ -84,7 +84,7 @@ sap.ui.define([
84
84
  * @extends sap.ui.model.odata.type.ODataType
85
85
  *
86
86
  * @author SAP SE
87
- * @version 1.114.2
87
+ * @version 1.114.4
88
88
  *
89
89
  * @alias sap.ui.model.odata.type.String
90
90
  * @param {object} [oFormatOptions]
@@ -138,7 +138,7 @@ sap.ui.define([
138
138
  * @extends sap.ui.model.odata.type.ODataType
139
139
  *
140
140
  * @author SAP SE
141
- * @version 1.114.2
141
+ * @version 1.114.4
142
142
  *
143
143
  * @alias sap.ui.model.odata.type.Time
144
144
  * @param {object} [oFormatOptions]
@@ -92,7 +92,7 @@ sap.ui.define([
92
92
  * @extends sap.ui.model.odata.type.ODataType
93
93
  * @public
94
94
  * @since 1.37.0
95
- * @version 1.114.2
95
+ * @version 1.114.4
96
96
  */
97
97
  var TimeOfDay = ODataType.extend("sap.ui.model.odata.type.TimeOfDay", {
98
98
  constructor : function (oFormatOptions, oConstraints) {
@@ -66,7 +66,7 @@ sap.ui.define([
66
66
  * @extends sap.ui.model.type.Unit
67
67
  * @public
68
68
  * @since 1.63.0
69
- * @version 1.114.2
69
+ * @version 1.114.4
70
70
  */
71
71
  var Unit = BaseUnit.extend("sap.ui.model.odata.type.Unit", {
72
72
  constructor : function (oFormatOptions, oConstraints, aDynamicFormatOptionNames) {
@@ -64,7 +64,7 @@ sap.ui.define([
64
64
  * @hideconstructor
65
65
  * @public
66
66
  * @since 1.93.0
67
- * @version 1.114.2
67
+ * @version 1.114.4
68
68
  */
69
69
  var Context = BaseContext.extend("sap.ui.model.odata.v2.Context", {
70
70
  constructor : function (oModel, sPath, sDeepPath, oCreatePromise, bInactive,
@@ -36,7 +36,7 @@ sap.ui.define([
36
36
  * @class Annotation loader for OData V2 services
37
37
  *
38
38
  * @author SAP SE
39
- * @version 1.114.2
39
+ * @version 1.114.4
40
40
  *
41
41
  * @public
42
42
  * @since 1.37.0
@@ -212,7 +212,7 @@ sap.ui.define([
212
212
  * This model is not prepared to be inherited from.
213
213
  *
214
214
  * @author SAP SE
215
- * @version 1.114.2
215
+ * @version 1.114.4
216
216
  *
217
217
  * @public
218
218
  * @alias sap.ui.model.odata.v2.ODataModel
@@ -93,7 +93,7 @@ sap.ui.define([
93
93
  * @extends sap.ui.model.TreeBinding
94
94
  * @hideconstructor
95
95
  * @public
96
- * @version 1.114.2
96
+ * @version 1.114.4
97
97
  */
98
98
  var ODataTreeBinding = TreeBinding.extend("sap.ui.model.odata.v2.ODataTreeBinding", /** @lends sap.ui.model.odata.v2.ODataTreeBinding.prototype */ {
99
99
 
@@ -42,7 +42,7 @@ sap.ui.define([
42
42
  * @hideconstructor
43
43
  * @public
44
44
  * @since 1.39.0
45
- * @version 1.114.2
45
+ * @version 1.114.4
46
46
  */
47
47
  Context = BaseContext.extend("sap.ui.model.odata.v4.Context", {
48
48
  constructor : constructor
@@ -1308,7 +1308,7 @@ sap.ui.define([
1308
1308
  this.oBinding.checkSuspended();
1309
1309
 
1310
1310
  return Promise.all(aPaths.map(function (sPath) {
1311
- return that.oBinding.fetchIfChildCanUseCache(that, sPath, SyncPromise.resolve({}))
1311
+ return that.oBinding.fetchIfChildCanUseCache(that, sPath, undefined, true)
1312
1312
  .then(function (sReducedPath) {
1313
1313
  if (sReducedPath) {
1314
1314
  return that.fetchPrimitiveValue(sReducedPath, bExternalFormat);
@@ -1809,7 +1809,7 @@ sap.ui.define([
1809
1809
  if (!sMessagesPath) {
1810
1810
  throw new Error("Missing @com.sap.vocabularies.Common.v1.Messages");
1811
1811
  }
1812
- return that.oBinding.fetchIfChildCanUseCache(that, sMessagesPath, {});
1812
+ return that.oBinding.fetchIfChildCanUseCache(that, sMessagesPath, undefined, true);
1813
1813
  }).then(function (sReducedPath) {
1814
1814
  return that.fetchValue(sReducedPath);
1815
1815
  }).catch(this.oModel.getReporter());
@@ -468,17 +468,17 @@ sap.ui.define([
468
468
  };
469
469
 
470
470
  /**
471
- * Hook method for {@link #fetchQueryOptionsForOwnCache} to determine the query options for this
472
- * binding.
471
+ * Hook method for {@link #fetchOrGetQueryOptionsForOwnCache} to determine the query options for
472
+ * this binding.
473
473
  *
474
474
  * @param {sap.ui.model.Context} [oContext]
475
475
  * The context instance to be used for a relative binding
476
- * @returns {sap.ui.base.SyncPromise}
477
- * A promise resolving with the binding's query options
476
+ * @returns {object|undefined|sap.ui.base.SyncPromise}
477
+ * The binding's query options (if any) or a promise resolving with them
478
478
  *
479
479
  * @abstract
480
480
  * @function
481
- * @name sap.ui.model.odata.v4.ODataBinding#doFetchQueryOptions
481
+ * @name sap.ui.model.odata.v4.ODataBinding#doFetchOrGetQueryOptions
482
482
  * @private
483
483
  */
484
484
 
@@ -535,7 +535,7 @@ sap.ui.define([
535
535
  }
536
536
 
537
537
  aPromises = [
538
- this.fetchQueryOptionsForOwnCache(oContext, bIgnoreParentCache),
538
+ this.fetchOrGetQueryOptionsForOwnCache(oContext, bIgnoreParentCache),
539
539
  this.oModel.oRequestor.ready()
540
540
  ];
541
541
  this.mCacheQueryOptions = undefined;
@@ -585,51 +585,79 @@ sap.ui.define([
585
585
  * @param {boolean} [bIgnoreParentCache]
586
586
  * Whether the query options of the parent cache shall be ignored and own query options are
587
587
  * determined (see {@link #fetchCache})
588
- * @returns {sap.ui.base.SyncPromise}
589
- * A promise resolving with an object having two properties:
588
+ * @returns {object|sap.ui.base.SyncPromise}
589
+ * An object having two properties (or a promise resolving with it):
590
590
  * {object} mQueryOptions - The query options to create the cache for this binding or
591
591
  * <code>undefined</code> if no cache is to be created
592
592
  * {string} sReducedPath - The binding's absolute, reduced path in the cache hierarchy
593
593
  *
594
594
  * @private
595
595
  */
596
- ODataBinding.prototype.fetchQueryOptionsForOwnCache = function (oContext, bIgnoreParentCache) {
596
+ ODataBinding.prototype.fetchOrGetQueryOptionsForOwnCache = function (oContext,
597
+ bIgnoreParentCache) {
597
598
  var bHasNonSystemQueryOptions,
598
- oQueryOptionsPromise,
599
+ vQueryOptions, // {object|undefined|sap.ui.base.SyncPromise}
599
600
  sResolvedPath = this.oModel.resolve(this.sPath, oContext),
600
601
  that = this;
601
602
 
602
603
  /*
603
- * Wraps the given query options (promise) and adds sResolvedPath so that it can be returned
604
- * by fetchQueryOptionsForOwnCache.
604
+ * Wraps the given query options and adds sReducedPath to create a result for
605
+ * #fetchOrGetQueryOptionsForOwnCache.
605
606
  *
606
- * @param {object|sap.ui.base.SyncPromise} vQueryOptions
607
- * The query options (promise)
607
+ * @param {object} [mQueryOptions]
608
+ * Map of query options, or <code>undefined</code>
609
+ * @param {boolean} [bDropEmptyObject]
610
+ * Whether an empty query options object should be replaced by <code>undefined</code>
608
611
  * @param {string} [sReducedPath=sResolvedPath]
609
612
  * The reduced path
610
- * @returns {sap.ui.base.SyncPromise}
611
- * A promise to be returned by fetchQueryOptionsForOwnCache
613
+ * @returns {object}
614
+ * A result for #fetchOrGetQueryOptionsForOwnCache
612
615
  */
613
- function wrapQueryOptions(vQueryOptions, sReducedPath) {
614
- return SyncPromise.resolve(vQueryOptions).then(function (mQueryOptions) {
615
- return {
616
- mQueryOptions : mQueryOptions,
617
- sReducedPath : sReducedPath || sResolvedPath
618
- };
619
- });
616
+ function _wrapQueryOptions(mQueryOptions, bDropEmptyObject, sReducedPath) {
617
+ if (bDropEmptyObject && mQueryOptions && _Helper.isEmptyObject(mQueryOptions)) {
618
+ mQueryOptions = undefined;
619
+ }
620
+ return {
621
+ mQueryOptions : mQueryOptions,
622
+ sReducedPath : sReducedPath || sResolvedPath
623
+ };
624
+ }
625
+
626
+ /*
627
+ * Waits for <code>vQueryOptions</code> (if needed) and then creates a result for
628
+ * #fetchOrGetQueryOptionsForOwnCache.
629
+ *
630
+ * @param {boolean} [bDropEmptyObject]
631
+ * Whether an empty query options object should be replaced by <code>undefined</code>
632
+ * @param {string} [sReducedPath=sResolvedPath]
633
+ * The reduced path
634
+ * @returns {object|sap.ui.base.SyncPromise}
635
+ * A result for #fetchOrGetQueryOptionsForOwnCache
636
+ */
637
+ function wrapQueryOptions(bDropEmptyObject, sReducedPath) {
638
+ if (vQueryOptions instanceof SyncPromise) {
639
+ if (!vQueryOptions.isFulfilled()) {
640
+ return vQueryOptions.then(function (mQueryOptions) {
641
+ return _wrapQueryOptions(mQueryOptions, bDropEmptyObject, sReducedPath);
642
+ });
643
+ }
644
+ vQueryOptions = vQueryOptions.getResult();
645
+ }
646
+
647
+ return _wrapQueryOptions(vQueryOptions, bDropEmptyObject, sReducedPath);
620
648
  }
621
649
 
622
650
  if (this.oOperation // operation binding manages its cache on its own
623
651
  || this.bRelative && !oContext // unresolved binding
624
652
  || this.isMeta()) {
625
- return wrapQueryOptions(undefined);
653
+ return _wrapQueryOptions();
626
654
  }
627
655
 
628
656
  // auto-$expand/$select and binding is a parent binding, so that it needs to wait until all
629
657
  // its child bindings know via the corresponding promise in this.aChildCanUseCachePromises
630
658
  // if they can use the parent binding's cache
631
659
  // With $$aggregation, no auto-$expand/$select is needed
632
- oQueryOptionsPromise = this.doFetchQueryOptions(oContext);
660
+ vQueryOptions = this.doFetchOrGetQueryOptions(oContext);
633
661
  if (this.oModel.bAutoExpandSelect && this.aChildCanUseCachePromises
634
662
  && !_Helper.isDataAggregation(this.mParameters)) {
635
663
  // For auto-$expand/$select, wait for query options of dependent bindings:
@@ -637,8 +665,8 @@ sap.ui.define([
637
665
  // query options promise to this binding via fetchIfChildCanUseCache.
638
666
  // The aggregated query options of this binding and its dependent bindings are available
639
667
  // in that.mAggregatedQueryOptions once all these promises are fulfilled.
640
- oQueryOptionsPromise = SyncPromise.all([
641
- oQueryOptionsPromise,
668
+ vQueryOptions = SyncPromise.all([
669
+ vQueryOptions,
642
670
  Promise.resolve().then(function () {
643
671
  return SyncPromise.all(that.aChildCanUseCachePromises);
644
672
  })
@@ -652,7 +680,7 @@ sap.ui.define([
652
680
  // parent cache is ignored or (quasi-)absolute binding
653
681
  if (bIgnoreParentCache || !this.bRelative || !oContext.fetchValue) {
654
682
  // the binding shall create its own cache
655
- return wrapQueryOptions(oQueryOptionsPromise);
683
+ return wrapQueryOptions();
656
684
  }
657
685
 
658
686
  // auto-$expand/$select: Use parent binding's cache if possible
@@ -662,28 +690,27 @@ sap.ui.define([
662
690
  return sKey[0] !== "$" || sKey[1] === "$";
663
691
  });
664
692
  if (bHasNonSystemQueryOptions) {
665
- return wrapQueryOptions(oQueryOptionsPromise);
693
+ return wrapQueryOptions();
666
694
  }
667
695
  return oContext.getBinding()
668
- .fetchIfChildCanUseCache(oContext, that.sPath, oQueryOptionsPromise,
696
+ .fetchIfChildCanUseCache(oContext, that.sPath, vQueryOptions,
669
697
  !this.mParameters) // duck typing for property binding
670
698
  .then(function (sReducedPath) {
671
- return wrapQueryOptions(sReducedPath ? undefined : oQueryOptionsPromise,
672
- sReducedPath);
699
+ if (sReducedPath) {
700
+ vQueryOptions = undefined;
701
+ }
702
+ return wrapQueryOptions(false, sReducedPath);
673
703
  });
674
704
  }
675
705
 
676
706
  // relative list or context binding with parameters which are not query options
677
707
  // (such as $$groupId)
678
- if (this.mParameters && Object.keys(this.mParameters).length) {
679
- return wrapQueryOptions(oQueryOptionsPromise);
708
+ if (this.mParameters && !_Helper.isEmptyObject(this.mParameters)) {
709
+ return wrapQueryOptions();
680
710
  }
681
711
 
682
712
  // relative binding which may have query options from UI5 filter or sorter objects
683
- return oQueryOptionsPromise.then(function (mQueryOptions) {
684
- return wrapQueryOptions(
685
- Object.keys(mQueryOptions).length ? mQueryOptions : undefined);
686
- });
713
+ return wrapQueryOptions(true);
687
714
  };
688
715
 
689
716
  /**
@@ -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.114.2
77
+ * @version 1.114.4
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
@@ -638,7 +638,7 @@ sap.ui.define([
638
638
  && !oOperationMetadata.$ReturnType.$Type.startsWith("Edm.")) {
639
639
  sMetaPath += "/$Type";
640
640
  }
641
- } else if (Object.keys(mParameters).length) {
641
+ } else if (!_Helper.isEmptyObject(mParameters)) {
642
642
  throw new Error("Unsupported parameters for navigation property");
643
643
  }
644
644
 
@@ -792,9 +792,9 @@ sap.ui.define([
792
792
 
793
793
  /**
794
794
  * @override
795
- * @see sap.ui.model.odata.v4.ODataBinding#doFetchQueryOptions
795
+ * @see sap.ui.model.odata.v4.ODataBinding#doFetchOrGetQueryOptions
796
796
  */
797
- ODataContextBinding.prototype.doFetchQueryOptions = function (oContext) {
797
+ ODataContextBinding.prototype.doFetchOrGetQueryOptions = function (oContext) {
798
798
  return this.fetchResolvedQueryOptions(oContext);
799
799
  };
800
800
 
@@ -1582,6 +1582,7 @@ sap.ui.define([
1582
1582
  if (bParentHasChanges || sResumeChangeReason) {
1583
1583
  this.mAggregatedQueryOptions = {};
1584
1584
  this.bAggregatedQueryOptionsInitial = true;
1585
+ this.mCanUseCachePromiseByChildPath = {};
1585
1586
  this.removeCachesAndMessages("");
1586
1587
  this.fetchCache(this.oContext);
1587
1588
  }
@@ -57,7 +57,7 @@ sap.ui.define([
57
57
  * @mixes sap.ui.model.odata.v4.ODataParentBinding
58
58
  * @public
59
59
  * @since 1.37.0
60
- * @version 1.114.2
60
+ * @version 1.114.4
61
61
  * @borrows sap.ui.model.odata.v4.ODataBinding#getGroupId as #getGroupId
62
62
  * @borrows sap.ui.model.odata.v4.ODataBinding#getRootBinding as #getRootBinding
63
63
  * @borrows sap.ui.model.odata.v4.ODataBinding#getUpdateGroupId as #getUpdateGroupId
@@ -348,7 +348,7 @@ sap.ui.define([
348
348
  sApply = _AggregationHelper.buildApply(mParameters.$$aggregation).$apply;
349
349
  }
350
350
  this.mQueryOptions = this.oModel.buildQueryOptions(mParameters, true);
351
- this.oQueryOptionsPromise = undefined; // @see #doFetchQueryOptions
351
+ this.oQueryOptionsPromise = undefined; // @see #doFetchOrGetQueryOptions
352
352
  this.mParameters = mParameters; // store mParameters at binding after validation
353
353
  if (sApply) {
354
354
  this.mQueryOptions.$apply = sApply;
@@ -1265,9 +1265,9 @@ sap.ui.define([
1265
1265
 
1266
1266
  /**
1267
1267
  * @override
1268
- * @see sap.ui.model.odata.v4.ODataBinding#doFetchQueryOptions
1268
+ * @see sap.ui.model.odata.v4.ODataBinding#doFetchOrGetQueryOptions
1269
1269
  */
1270
- ODataListBinding.prototype.doFetchQueryOptions = function (oContext) {
1270
+ ODataListBinding.prototype.doFetchOrGetQueryOptions = function (oContext) {
1271
1271
  // Note: an absolute binding needs no parent context :-)
1272
1272
  var sMetaPath = oContext && _Helper.getMetaPath(oContext.getPath()),
1273
1273
  that = this;
@@ -2782,7 +2782,7 @@ sap.ui.define([
2782
2782
  ODataListBinding.prototype.inheritQueryOptions = function (mQueryOptions, oContext) {
2783
2783
  var mInheritedQueryOptions;
2784
2784
 
2785
- if (!Object.keys(this.mParameters).length) {
2785
+ if (_Helper.isEmptyObject(this.mParameters)) {
2786
2786
  // mix-in inherited static query options
2787
2787
  mInheritedQueryOptions = this.getQueryOptionsForPath("", oContext);
2788
2788
  if (mQueryOptions.$orderby && mInheritedQueryOptions.$orderby) {
@@ -2857,7 +2857,7 @@ sap.ui.define([
2857
2857
  // When suspended it matches if it already has contexts. Then its getKeepAliveContext fails.
2858
2858
  return this.mParameters.$$getKeepAliveContext && this.getResolvedPath() === sPath
2859
2859
  && (!this.isRootBindingSuspended() || this.aContexts.length
2860
- || Object.keys(this.mPreviousContextsByPath).length);
2860
+ || !_Helper.isEmptyObject(this.mPreviousContextsByPath));
2861
2861
  };
2862
2862
 
2863
2863
  /**
@@ -3967,6 +3967,7 @@ sap.ui.define([
3967
3967
  if (this.mParameters.$$aggregation) {
3968
3968
  _AggregationHelper.setPath(this.mParameters.$$aggregation, sResolvedPath);
3969
3969
  } else if (this.bHasPathReductionToParent && this.oModel.bAutoExpandSelect) {
3970
+ this.mCanUseCachePromiseByChildPath = {};
3970
3971
  this.sChangeReason = "AddVirtualContext"; // JIRA: CPOUI5ODATAV4-848
3971
3972
  }
3972
3973
  if (oContext.getBinding
@@ -11,7 +11,6 @@ sap.ui.define([
11
11
  "./lib/_Helper",
12
12
  "sap/base/assert",
13
13
  "sap/base/Log",
14
- "sap/base/util/isEmptyObject",
15
14
  "sap/base/util/JSTokenizer",
16
15
  "sap/base/util/ObjectPath",
17
16
  "sap/ui/base/ManagedObject",
@@ -43,11 +42,11 @@ sap.ui.define([
43
42
  "sap/ui/model/odata/type/String",
44
43
  "sap/ui/model/odata/type/TimeOfDay",
45
44
  "sap/ui/thirdparty/URI"
46
- ], function (AnnotationHelper, ValueListType, _Helper, assert, Log, isEmptyObject, JSTokenizer,
47
- ObjectPath, ManagedObject, SyncPromise, BindingMode, ChangeReason, ClientListBinding,
48
- BaseContext, ContextBinding, MetaModel, PropertyBinding, OperationMode, Boolean, Byte,
49
- EdmDate, DateTimeOffset, Decimal, Double, Guid, Int16, Int32, Int64, Raw, SByte, Single,
50
- Stream, String, TimeOfDay, URI) {
45
+ ], function (AnnotationHelper, ValueListType, _Helper, assert, Log, JSTokenizer, ObjectPath,
46
+ ManagedObject, SyncPromise, BindingMode, ChangeReason, ClientListBinding, BaseContext,
47
+ ContextBinding, MetaModel, PropertyBinding, OperationMode, Boolean, Byte, EdmDate,
48
+ DateTimeOffset, Decimal, Double, Guid, Int16, Int32, Int64, Raw, SByte, Single, Stream,
49
+ String, TimeOfDay, URI) {
51
50
  "use strict";
52
51
  /*eslint max-nested-callbacks: 0 */
53
52
 
@@ -157,7 +156,7 @@ sap.ui.define([
157
156
  * @hideconstructor
158
157
  * @public
159
158
  * @since 1.37.0
160
- * @version 1.114.2
159
+ * @version 1.114.4
161
160
  */
162
161
  ODataMetaModel = MetaModel.extend("sap.ui.model.odata.v4.ODataMetaModel", {
163
162
  constructor : constructor
@@ -1630,7 +1629,7 @@ sap.ui.define([
1630
1629
  }
1631
1630
 
1632
1631
  if (mFormatOptions) {
1633
- if (isEmptyObject(mFormatOptions)) {
1632
+ if (_Helper.isEmptyObject(mFormatOptions)) {
1634
1633
  mFormatOptions = undefined;
1635
1634
  } else if ("parseKeepsEmptyString" in mFormatOptions
1636
1635
  && oProperty.$Type !== "Edm.String") {
@@ -3273,7 +3272,7 @@ sap.ui.define([
3273
3272
 
3274
3273
  // Each reference must have contributed at least one qualifier. So if oValueListInfo
3275
3274
  // is empty, there cannot have been a reference.
3276
- if (isEmptyObject(oValueListInfo)) {
3275
+ if (_Helper.isEmptyObject(oValueListInfo)) {
3277
3276
  throw new Error("No annotation '" + sValueListReferences.slice(1) + "' for "
3278
3277
  + sPropertyPath);
3279
3278
  }
@@ -227,7 +227,7 @@ sap.ui.define([
227
227
  * @extends sap.ui.model.Model
228
228
  * @public
229
229
  * @since 1.37.0
230
- * @version 1.114.2
230
+ * @version 1.114.4
231
231
  */
232
232
  ODataModel = Model.extend("sap.ui.model.odata.v4.ODataModel",
233
233
  /** @lends sap.ui.model.odata.v4.ODataModel.prototype */{