@openui5/sap.ui.core 1.139.0 → 1.141.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (372) hide show
  1. package/THIRDPARTY.txt +2 -2
  2. package/package.json +1 -1
  3. package/src/jquery.sap.global.js +1 -1
  4. package/src/jquery.sap.mobile.js +0 -8
  5. package/src/jquery.sap.properties.js +1 -1
  6. package/src/jquery.sap.resources.js +1 -1
  7. package/src/jquery.sap.script.js +1 -1
  8. package/src/jquery.sap.storage.js +3 -3
  9. package/src/sap/base/Event.js +1 -1
  10. package/src/sap/base/Eventing.js +1 -1
  11. package/src/sap/base/config.js +1 -1
  12. package/src/sap/base/i18n/Formatting.js +1 -1
  13. package/src/sap/base/i18n/LanguageTag.js +9 -9
  14. package/src/sap/base/i18n/Localization.js +2 -2
  15. package/src/sap/base/i18n/date/TimezoneUtils.js +1 -1
  16. package/src/sap/base/security/URLListValidator.js +7 -3
  17. package/src/sap/base/security/encodeURL.js +1 -1
  18. package/src/sap/base/util/resolveReference.js +3 -1
  19. package/src/sap/base/util/restricted/_CancelablePromise.js +1 -1
  20. package/src/sap/base/util/restricted/_castArray.js +1 -1
  21. package/src/sap/base/util/restricted/_compact.js +1 -1
  22. package/src/sap/base/util/restricted/_curry.js +1 -1
  23. package/src/sap/base/util/restricted/_debounce.js +1 -1
  24. package/src/sap/base/util/restricted/_difference.js +1 -1
  25. package/src/sap/base/util/restricted/_differenceBy.js +1 -1
  26. package/src/sap/base/util/restricted/_differenceWith.js +1 -1
  27. package/src/sap/base/util/restricted/_flatMap.js +1 -1
  28. package/src/sap/base/util/restricted/_flatMapDeep.js +1 -1
  29. package/src/sap/base/util/restricted/_flatMapDepth.js +1 -1
  30. package/src/sap/base/util/restricted/_flatten.js +1 -1
  31. package/src/sap/base/util/restricted/_flattenDeep.js +1 -1
  32. package/src/sap/base/util/restricted/_flattenDepth.js +1 -1
  33. package/src/sap/base/util/restricted/_intersection.js +1 -1
  34. package/src/sap/base/util/restricted/_intersectionBy.js +1 -1
  35. package/src/sap/base/util/restricted/_intersectionWith.js +1 -1
  36. package/src/sap/base/util/restricted/_isEqual.js +1 -1
  37. package/src/sap/base/util/restricted/_isEqualWith.js +1 -1
  38. package/src/sap/base/util/restricted/_isNil.js +1 -1
  39. package/src/sap/base/util/restricted/_max.js +1 -1
  40. package/src/sap/base/util/restricted/_merge.js +1 -1
  41. package/src/sap/base/util/restricted/_mergeWith.js +1 -1
  42. package/src/sap/base/util/restricted/_min.js +1 -1
  43. package/src/sap/base/util/restricted/_omit.js +1 -1
  44. package/src/sap/base/util/restricted/_pick.js +1 -1
  45. package/src/sap/base/util/restricted/_pickBy.js +1 -1
  46. package/src/sap/base/util/restricted/_throttle.js +1 -1
  47. package/src/sap/base/util/restricted/_toArray.js +1 -1
  48. package/src/sap/base/util/restricted/_union.js +1 -1
  49. package/src/sap/base/util/restricted/_unionBy.js +1 -1
  50. package/src/sap/base/util/restricted/_unionWith.js +1 -1
  51. package/src/sap/base/util/restricted/_uniq.js +1 -1
  52. package/src/sap/base/util/restricted/_uniqBy.js +1 -1
  53. package/src/sap/base/util/restricted/_uniqWith.js +1 -1
  54. package/src/sap/base/util/restricted/_without.js +1 -1
  55. package/src/sap/base/util/restricted/_xor.js +1 -1
  56. package/src/sap/base/util/restricted/_xorBy.js +1 -1
  57. package/src/sap/base/util/restricted/_xorWith.js +1 -1
  58. package/src/sap/base/util/restricted/_zipObject.js +1 -1
  59. package/src/sap/base/util/restricted/_zipObjectDeep.js +1 -1
  60. package/src/sap/ui/Device.js +3 -3
  61. package/src/sap/ui/Global.js +3 -3
  62. package/src/sap/ui/base/BindingParser.js +22 -5
  63. package/src/sap/ui/base/DataType.js +1 -1
  64. package/src/sap/ui/base/Event.js +1 -1
  65. package/src/sap/ui/base/EventProvider.js +1 -1
  66. package/src/sap/ui/base/ExpressionParser.js +5 -1
  67. package/src/sap/ui/base/Interface.js +1 -1
  68. package/src/sap/ui/base/ManagedObject.js +1 -1
  69. package/src/sap/ui/base/ManagedObjectMetadata.js +3 -3
  70. package/src/sap/ui/base/Metadata.js +1 -1
  71. package/src/sap/ui/base/Object.js +1 -1
  72. package/src/sap/ui/base/ObjectPool.js +1 -1
  73. package/src/sap/ui/base/SyncPromise.js +3 -2
  74. package/src/sap/ui/core/.library +3 -3
  75. package/src/sap/ui/core/BusyIndicator.js +1 -1
  76. package/src/sap/ui/core/Component.js +1 -1
  77. package/src/sap/ui/core/ComponentContainer.js +2 -2
  78. package/src/sap/ui/core/ComponentMetadata.js +1 -1
  79. package/src/sap/ui/core/ComponentSupport.js +3 -3
  80. package/src/sap/ui/core/Configuration.js +4 -4
  81. package/src/sap/ui/core/Control.js +1 -1
  82. package/src/sap/ui/core/Core.js +2 -11
  83. package/src/sap/ui/core/CustomData.js +1 -1
  84. package/src/sap/ui/core/DeclarativeSupport.js +1 -1
  85. package/src/sap/ui/core/Element.js +3 -3
  86. package/src/sap/ui/core/ElementMetadata.js +1 -1
  87. package/src/sap/ui/core/EnabledPropagator.js +1 -1
  88. package/src/sap/ui/core/EventBus.js +1 -1
  89. package/src/sap/ui/core/Fragment.js +1 -1
  90. package/src/sap/ui/core/HTML.js +1 -1
  91. package/src/sap/ui/core/History.js +1 -1
  92. package/src/sap/ui/core/Icon.js +1 -1
  93. package/src/sap/ui/core/IndicationColorSupport.js +1 -1
  94. package/src/sap/ui/core/IntervalTrigger.js +1 -1
  95. package/src/sap/ui/core/InvisibleMessage.js +1 -1
  96. package/src/sap/ui/core/InvisibleRenderer.js +1 -1
  97. package/src/sap/ui/core/InvisibleText.js +1 -1
  98. package/src/sap/ui/core/Item.js +1 -1
  99. package/src/sap/ui/core/LabelEnablement.js +1 -1
  100. package/src/sap/ui/core/LayoutData.js +1 -1
  101. package/src/sap/ui/core/Lib.js +50 -140
  102. package/src/sap/ui/core/ListItem.js +1 -1
  103. package/src/sap/ui/core/LocalBusyIndicator.js +1 -1
  104. package/src/sap/ui/core/Locale.js +7 -7
  105. package/src/sap/ui/core/LocaleData.js +7 -4
  106. package/src/sap/ui/core/Manifest.js +1 -1
  107. package/src/sap/ui/core/Message.js +1 -1
  108. package/src/sap/ui/core/RenderManager.js +1 -1
  109. package/src/sap/ui/core/Renderer.js +1 -1
  110. package/src/sap/ui/core/ResizeHandler.js +1 -1
  111. package/src/sap/ui/core/ScrollBar.js +1 -1
  112. package/src/sap/ui/core/SeparatorItem.js +1 -1
  113. package/src/sap/ui/core/Theming.js +145 -76
  114. package/src/sap/ui/core/Title.js +1 -1
  115. package/src/sap/ui/core/TooltipBase.js +1 -1
  116. package/src/sap/ui/core/UIArea.js +1 -1
  117. package/src/sap/ui/core/UIComponent.js +16 -7
  118. package/src/sap/ui/core/UIComponentMetadata.js +1 -1
  119. package/src/sap/ui/core/ValueStateSupport.js +1 -1
  120. package/src/sap/ui/core/VariantLayoutData.js +1 -1
  121. package/src/sap/ui/core/XMLComposite.js +1 -1
  122. package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
  123. package/src/sap/ui/core/XMLTemplateProcessor.js +1 -1
  124. package/src/sap/ui/core/_IconRegistry.js +19 -39
  125. package/src/sap/ui/core/date/UI5Date.js +1 -1
  126. package/src/sap/ui/core/delegate/ItemNavigation.js +1 -1
  127. package/src/sap/ui/core/delegate/ScrollEnablement.js +1 -1
  128. package/src/sap/ui/core/dnd/DragDropBase.js +1 -1
  129. package/src/sap/ui/core/dnd/DragDropInfo.js +1 -1
  130. package/src/sap/ui/core/dnd/DragInfo.js +1 -1
  131. package/src/sap/ui/core/dnd/DropInfo.js +1 -1
  132. package/src/sap/ui/core/format/FormatUtils.js +1 -1
  133. package/src/sap/ui/core/format/NumberFormat.js +2 -2
  134. package/src/sap/ui/core/format/TimezoneUtil.js +1 -1
  135. package/src/sap/ui/core/getCompatibilityVersion.js +1 -1
  136. package/src/sap/ui/core/hyphenation/Hyphenation.js +1 -1
  137. package/src/sap/ui/core/library.js +3 -3
  138. package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
  139. package/src/sap/ui/core/message/Message.js +1 -1
  140. package/src/sap/ui/core/message/MessageManager.js +1 -1
  141. package/src/sap/ui/core/message/MessageParser.js +1 -1
  142. package/src/sap/ui/core/message/MessageProcessor.js +1 -1
  143. package/src/sap/ui/core/messagebundle_ar.properties +26 -11
  144. package/src/sap/ui/core/messagebundle_bg.properties +21 -6
  145. package/src/sap/ui/core/messagebundle_ca.properties +24 -9
  146. package/src/sap/ui/core/messagebundle_cnr.properties +23 -8
  147. package/src/sap/ui/core/messagebundle_cs.properties +24 -9
  148. package/src/sap/ui/core/messagebundle_cy.properties +24 -9
  149. package/src/sap/ui/core/messagebundle_da.properties +21 -6
  150. package/src/sap/ui/core/messagebundle_de.properties +16 -1
  151. package/src/sap/ui/core/messagebundle_el.properties +26 -11
  152. package/src/sap/ui/core/messagebundle_en.properties +24 -9
  153. package/src/sap/ui/core/messagebundle_en_GB.properties +24 -9
  154. package/src/sap/ui/core/messagebundle_en_US_saprigi.properties +24 -9
  155. package/src/sap/ui/core/messagebundle_es.properties +21 -6
  156. package/src/sap/ui/core/messagebundle_es_MX.properties +24 -9
  157. package/src/sap/ui/core/messagebundle_et.properties +31 -16
  158. package/src/sap/ui/core/messagebundle_fi.properties +20 -5
  159. package/src/sap/ui/core/messagebundle_fr.properties +22 -7
  160. package/src/sap/ui/core/messagebundle_fr_CA.properties +20 -5
  161. package/src/sap/ui/core/messagebundle_hi.properties +24 -9
  162. package/src/sap/ui/core/messagebundle_hr.properties +20 -5
  163. package/src/sap/ui/core/messagebundle_hu.properties +23 -8
  164. package/src/sap/ui/core/messagebundle_id.properties +20 -5
  165. package/src/sap/ui/core/messagebundle_it.properties +23 -8
  166. package/src/sap/ui/core/messagebundle_iw.properties +21 -6
  167. package/src/sap/ui/core/messagebundle_ja.properties +19 -4
  168. package/src/sap/ui/core/messagebundle_kk.properties +22 -7
  169. package/src/sap/ui/core/messagebundle_ko.properties +20 -5
  170. package/src/sap/ui/core/messagebundle_lt.properties +20 -5
  171. package/src/sap/ui/core/messagebundle_lv.properties +20 -5
  172. package/src/sap/ui/core/messagebundle_mk.properties +25 -10
  173. package/src/sap/ui/core/messagebundle_ms.properties +24 -9
  174. package/src/sap/ui/core/messagebundle_nl.properties +22 -7
  175. package/src/sap/ui/core/messagebundle_no.properties +22 -7
  176. package/src/sap/ui/core/messagebundle_pl.properties +19 -4
  177. package/src/sap/ui/core/messagebundle_pt.properties +20 -5
  178. package/src/sap/ui/core/messagebundle_pt_PT.properties +18 -3
  179. package/src/sap/ui/core/messagebundle_ro.properties +22 -7
  180. package/src/sap/ui/core/messagebundle_ru.properties +19 -4
  181. package/src/sap/ui/core/messagebundle_sh.properties +23 -8
  182. package/src/sap/ui/core/messagebundle_sk.properties +23 -8
  183. package/src/sap/ui/core/messagebundle_sl.properties +20 -5
  184. package/src/sap/ui/core/messagebundle_sr.properties +23 -8
  185. package/src/sap/ui/core/messagebundle_sv.properties +23 -8
  186. package/src/sap/ui/core/messagebundle_th.properties +20 -5
  187. package/src/sap/ui/core/messagebundle_tr.properties +20 -5
  188. package/src/sap/ui/core/messagebundle_uk.properties +22 -7
  189. package/src/sap/ui/core/messagebundle_vi.properties +18 -3
  190. package/src/sap/ui/core/messagebundle_zh_CN.properties +24 -9
  191. package/src/sap/ui/core/messagebundle_zh_TW.properties +20 -5
  192. package/src/sap/ui/core/mvc/HTMLView.js +1 -1
  193. package/src/sap/ui/core/mvc/JSONView.js +1 -1
  194. package/src/sap/ui/core/mvc/JSView.js +1 -1
  195. package/src/sap/ui/core/mvc/TemplateView.js +1 -1
  196. package/src/sap/ui/core/mvc/View.js +2 -2
  197. package/src/sap/ui/core/mvc/XMLView.js +1 -1
  198. package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
  199. package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -1
  200. package/src/sap/ui/core/postmessage/Bus.js +1 -1
  201. package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
  202. package/src/sap/ui/core/routing/History.js +14 -5
  203. package/src/sap/ui/core/routing/Route.js +1 -1
  204. package/src/sap/ui/core/routing/Router.js +19 -1
  205. package/src/sap/ui/core/search/OpenSearchProvider.js +1 -1
  206. package/src/sap/ui/core/search/SearchProvider.js +1 -1
  207. package/src/sap/ui/core/service/Service.js +1 -1
  208. package/src/sap/ui/core/service/ServiceFactory.js +1 -1
  209. package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
  210. package/src/sap/ui/core/support/Plugin.js +1 -1
  211. package/src/sap/ui/core/support/Support.js +1 -1
  212. package/src/sap/ui/core/support/ViewInfo.css +12 -12
  213. package/src/sap/ui/core/support/plugins/ControlTree.js +1 -1
  214. package/src/sap/ui/core/support/plugins/Interaction.js +1 -1
  215. package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
  216. package/src/sap/ui/core/support/plugins/Performance.js +1 -1
  217. package/src/sap/ui/core/support/plugins/Selector.js +1 -1
  218. package/src/sap/ui/core/support/plugins/TechInfo.js +1 -1
  219. package/src/sap/ui/core/support/plugins/Trace.js +1 -1
  220. package/src/sap/ui/core/support/plugins/ViewInfo.js +1 -1
  221. package/src/sap/ui/core/support/techinfo/TechnicalInfo.js +1 -3
  222. package/src/sap/ui/core/support/trace/E2eTraceLib.js +13 -7
  223. package/src/sap/ui/core/themes/base/BrowserScrollbar.less +0 -28
  224. package/src/sap/ui/core/themes/base/ScrollBar.less +4 -0
  225. package/src/sap/ui/core/themes/base/base.less +80 -31
  226. package/src/sap/ui/core/themes/base/global.less +5 -0
  227. package/src/sap/ui/core/themes/base/shared.less +4 -1
  228. package/src/sap/ui/core/themes/base/skeleton.less +7 -3
  229. package/src/sap/ui/core/themes/sap_hcb/LocalBusyIndicator.less +4 -0
  230. package/src/sap/ui/core/themes/sap_hcb/base_LocalBusyIndicator.less +4 -0
  231. package/src/sap/ui/core/themes/sap_hcb/base_ScrollBar.less +4 -0
  232. package/src/sap/ui/core/theming/Parameters.js +729 -754
  233. package/src/sap/ui/core/theming/ThemeHelper.js +0 -77
  234. package/src/sap/ui/core/theming/ThemeManager.js +536 -526
  235. package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
  236. package/src/sap/ui/core/tmpl/DOMElement.js +1 -1
  237. package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
  238. package/src/sap/ui/core/tmpl/Template.js +1 -1
  239. package/src/sap/ui/core/tmpl/TemplateControl.js +1 -1
  240. package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
  241. package/src/sap/ui/core/util/DraftEnabledMockServer.js +47 -43
  242. package/src/sap/ui/core/util/Export.js +1 -1
  243. package/src/sap/ui/core/util/ExportCell.js +1 -1
  244. package/src/sap/ui/core/util/ExportColumn.js +1 -1
  245. package/src/sap/ui/core/util/ExportRow.js +1 -1
  246. package/src/sap/ui/core/util/ExportType.js +1 -1
  247. package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
  248. package/src/sap/ui/core/util/File.js +1 -1
  249. package/src/sap/ui/core/util/LibraryInfo.js +1 -1
  250. package/src/sap/ui/core/util/MockServer.js +1 -1
  251. package/src/sap/ui/core/util/PasteHelper.js +1 -1
  252. package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
  253. package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
  254. package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
  255. package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
  256. package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
  257. package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
  258. package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
  259. package/src/sap/ui/core/webc/WebComponent.js +93 -45
  260. package/src/sap/ui/core/webc/WebComponentMetadata.js +40 -6
  261. package/src/sap/ui/core/ws/ReadyState.js +1 -1
  262. package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
  263. package/src/sap/ui/core/ws/WebSocket.js +1 -1
  264. package/src/sap/ui/debug/ControlTree.js +1 -1
  265. package/src/sap/ui/debug/DebugEnv.js +1 -1
  266. package/src/sap/ui/debug/PropertyList.js +1 -1
  267. package/src/sap/ui/dom/includeStylesheet.js +4 -1
  268. package/src/sap/ui/events/F6Navigation.js +11 -3
  269. package/src/sap/ui/model/ClientModel.js +1 -1
  270. package/src/sap/ui/model/CompositeDataState.js +1 -1
  271. package/src/sap/ui/model/CompositeType.js +1 -1
  272. package/src/sap/ui/model/DataState.js +1 -1
  273. package/src/sap/ui/model/MetaModel.js +1 -1
  274. package/src/sap/ui/model/Model.js +7 -7
  275. package/src/sap/ui/model/SelectionModel.js +1 -1
  276. package/src/sap/ui/model/SimpleType.js +1 -1
  277. package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
  278. package/src/sap/ui/model/Type.js +1 -1
  279. package/src/sap/ui/model/json/JSONModel.js +1 -1
  280. package/src/sap/ui/model/json/TypedJSONContext.js +16 -0
  281. package/src/sap/ui/model/json/TypedJSONModel.js +16 -0
  282. package/src/sap/ui/model/message/MessageModel.js +1 -1
  283. package/src/sap/ui/model/odata/AnnotationHelper.js +1 -1
  284. package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
  285. package/src/sap/ui/model/odata/ODataMessageParser.js +1 -1
  286. package/src/sap/ui/model/odata/ODataMetaModel.js +1 -1
  287. package/src/sap/ui/model/odata/ODataMetadata.js +4 -4
  288. package/src/sap/ui/model/odata/ODataModel.js +1 -1
  289. package/src/sap/ui/model/odata/ODataTreeBindingFlat.js +33 -80
  290. package/src/sap/ui/model/odata/_AnnotationHelperExpression.js +2 -2
  291. package/src/sap/ui/model/odata/type/Boolean.js +1 -1
  292. package/src/sap/ui/model/odata/type/Byte.js +1 -1
  293. package/src/sap/ui/model/odata/type/Currency.js +1 -1
  294. package/src/sap/ui/model/odata/type/Date.js +1 -1
  295. package/src/sap/ui/model/odata/type/DateTime.js +1 -1
  296. package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
  297. package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
  298. package/src/sap/ui/model/odata/type/DateTimeWithTimezone.js +1 -1
  299. package/src/sap/ui/model/odata/type/Decimal.js +1 -1
  300. package/src/sap/ui/model/odata/type/Double.js +1 -1
  301. package/src/sap/ui/model/odata/type/Guid.js +1 -1
  302. package/src/sap/ui/model/odata/type/Int.js +1 -1
  303. package/src/sap/ui/model/odata/type/Int16.js +1 -1
  304. package/src/sap/ui/model/odata/type/Int32.js +1 -1
  305. package/src/sap/ui/model/odata/type/Int64.js +1 -1
  306. package/src/sap/ui/model/odata/type/ODataType.js +1 -1
  307. package/src/sap/ui/model/odata/type/Raw.js +1 -1
  308. package/src/sap/ui/model/odata/type/SByte.js +1 -1
  309. package/src/sap/ui/model/odata/type/Single.js +1 -1
  310. package/src/sap/ui/model/odata/type/Stream.js +1 -1
  311. package/src/sap/ui/model/odata/type/String.js +1 -1
  312. package/src/sap/ui/model/odata/type/Time.js +1 -1
  313. package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
  314. package/src/sap/ui/model/odata/type/Unit.js +1 -1
  315. package/src/sap/ui/model/odata/v2/Context.js +1 -1
  316. package/src/sap/ui/model/odata/v2/ODataAnnotations.js +1 -1
  317. package/src/sap/ui/model/odata/v2/ODataContextBinding.js +2 -2
  318. package/src/sap/ui/model/odata/v2/ODataListBinding.js +2 -2
  319. package/src/sap/ui/model/odata/v2/ODataModel.js +63 -67
  320. package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +84 -70
  321. package/src/sap/ui/model/odata/v4/AnnotationHelper.js +11 -7
  322. package/src/sap/ui/model/odata/v4/Context.js +27 -27
  323. package/src/sap/ui/model/odata/v4/ODataBinding.js +44 -28
  324. package/src/sap/ui/model/odata/v4/ODataContextBinding.js +16 -15
  325. package/src/sap/ui/model/odata/v4/ODataListBinding.js +35 -23
  326. package/src/sap/ui/model/odata/v4/ODataMetaModel.js +81 -53
  327. package/src/sap/ui/model/odata/v4/ODataModel.js +40 -24
  328. package/src/sap/ui/model/odata/v4/ODataParentBinding.js +50 -19
  329. package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +3 -3
  330. package/src/sap/ui/model/odata/v4/_AnnotationHelperExpression.js +14 -14
  331. package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +68 -18
  332. package/src/sap/ui/model/odata/v4/lib/_Batch.js +10 -7
  333. package/src/sap/ui/model/odata/v4/lib/_Cache.js +64 -74
  334. package/src/sap/ui/model/odata/v4/lib/_GroupLock.js +1 -1
  335. package/src/sap/ui/model/odata/v4/lib/_Helper.js +15 -15
  336. package/src/sap/ui/model/odata/v4/lib/_MetadataConverter.js +35 -4
  337. package/src/sap/ui/model/odata/v4/lib/_Requestor.js +29 -16
  338. package/src/sap/ui/model/odata/v4/lib/_V2Requestor.js +2 -2
  339. package/src/sap/ui/model/resource/ResourceModel.js +1 -1
  340. package/src/sap/ui/model/type/Boolean.js +1 -1
  341. package/src/sap/ui/model/type/Currency.js +1 -1
  342. package/src/sap/ui/model/type/Date.js +1 -1
  343. package/src/sap/ui/model/type/DateInterval.js +1 -1
  344. package/src/sap/ui/model/type/DateTime.js +1 -1
  345. package/src/sap/ui/model/type/DateTimeInterval.js +1 -1
  346. package/src/sap/ui/model/type/FileSize.js +1 -1
  347. package/src/sap/ui/model/type/Float.js +1 -1
  348. package/src/sap/ui/model/type/Integer.js +1 -1
  349. package/src/sap/ui/model/type/String.js +1 -1
  350. package/src/sap/ui/model/type/Time.js +1 -1
  351. package/src/sap/ui/model/type/TimeInterval.js +1 -1
  352. package/src/sap/ui/model/type/Unit.js +19 -5
  353. package/src/sap/ui/model/xml/XMLModel.js +1 -1
  354. package/src/sap/ui/performance/XHRInterceptor.js +14 -9
  355. package/src/sap/ui/performance/trace/FESR.js +4 -11
  356. package/src/sap/ui/performance/trace/Passport.js +3 -10
  357. package/src/sap/ui/performance/trace/_InteractionImpl.js +4 -10
  358. package/src/sap/ui/qunit/utils/ControlIterator.js +1 -2
  359. package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +1 -1
  360. package/src/sap/ui/test/TestUtils.js +27 -15
  361. package/src/sap/ui/test/generic/TestBase.js +1 -1
  362. package/src/sap/ui/test/generic/Utils.js +6 -6
  363. package/src/sap/ui/test/gherkin/dataTableUtils.js +2 -2
  364. package/src/sap/ui/test/opaQunit.js +3 -0
  365. package/src/sap/ui/thirdparty/caja-html-sanitizer.js +8 -2
  366. package/src/sap/ui/thirdparty/qunit-2.js +4 -1
  367. package/src/sap/ui/util/Mobile.js +0 -9
  368. package/src/sap/ui/util/Storage.js +1 -1
  369. package/src/sap/ui/util/isCrossOriginURL.js +1 -1
  370. package/src/ui5loader.js +1 -1
  371. package/ui5.yaml +0 -1
  372. package/src/sap/ui/core/plugin/LessSupport.js +0 -542
@@ -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
  }
@@ -916,7 +919,7 @@ sap.ui.define([
916
919
  *
917
920
  * @param {string} sMetaPath
918
921
  * The meta path, e.g. "/SalesOrderList/SO_2_BP"
919
- * @returns {sap.ui.base.SyncPromise}
922
+ * @returns {sap.ui.base.SyncPromise<object>}
920
923
  * A promise that is resolved with the type at the given path.
921
924
  *
922
925
  * @private
@@ -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;
@@ -1582,7 +1590,8 @@ sap.ui.define([
1582
1590
  * Returns a sync promise that is resolved when the requestor is ready to be used. The V4
1583
1591
  * requestor is ready immediately. Subclasses may behave differently.
1584
1592
  *
1585
- * @returns {sap.ui.base.SyncPromise} A sync promise that is resolved immediately with no result
1593
+ * @returns {sap.ui.base.SyncPromise<void>}
1594
+ * A sync promise that is resolved immediately with no result
1586
1595
  *
1587
1596
  * @public
1588
1597
  */
@@ -1592,10 +1601,11 @@ sap.ui.define([
1592
1601
 
1593
1602
  /**
1594
1603
  * Returns a promise that will be resolved once the CSRF token has been refreshed, or rejected
1595
- * if that fails. Makes sure that only one HEAD request is underway at any given time and
1596
- * shares the promise accordingly. If the HEAD request fails with a 503 HTTP status code and
1597
- * a "Retry-After" response header, the promise is also resolved because the next request (in
1598
- * {@link #sendRequest}) will also fail with 503 and is handled there.
1604
+ * (unless for an initial call without <code>sOldSecurityToken</code>) if that fails. Makes sure
1605
+ * that only one HEAD request is underway at any given time and shares the promise accordingly.
1606
+ * If the HEAD request fails with a 503 HTTP status code and a "Retry-After" response header,
1607
+ * the promise is also resolved because the next request (in {@link #sendRequest}) will also
1608
+ * fail with 503 and is handled there.
1599
1609
  *
1600
1610
  * @param {string} [sOldSecurityToken]
1601
1611
  * Security token that caused a 403. A new token is only fetched if the old one is still
@@ -1638,7 +1648,8 @@ sap.ui.define([
1638
1648
  fnResolve();
1639
1649
  }, function (jqXHR) {
1640
1650
  that.oSecurityTokenPromise = null;
1641
- if (jqXHR.status === 503 && jqXHR.getResponseHeader("Retry-After")) {
1651
+ if (!sOldSecurityToken
1652
+ || jqXHR.status === 503 && jqXHR.getResponseHeader("Retry-After")) {
1642
1653
  fnResolve();
1643
1654
  } else {
1644
1655
  fnReject(
@@ -1853,10 +1864,12 @@ sap.ui.define([
1853
1864
  * contain $expand
1854
1865
  * @param {any} [vOwner]
1855
1866
  * An additional precondition for the merging of GET requests: the owner must be identical.
1867
+ * This is probably relevant when using parameter <code>fnMergeRequests</code> to ensure both
1868
+ * functions work well together.
1856
1869
  * @param {function(string[]):string[]} [fnMergeRequests]
1857
1870
  * 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.
1871
+ * function given, this function will be called and its return value is given to the one
1872
+ * remaining request's function as a parameter. See also <code>vOwner</code>.
1860
1873
  * @returns {Promise}
1861
1874
  * A promise on the outcome of the HTTP request; it will be rejected with an error having the
1862
1875
  * property <code>canceled = true</code> instead of sending a request if
@@ -2248,7 +2261,7 @@ sap.ui.define([
2248
2261
  *
2249
2262
  * @param {string} sGroupId
2250
2263
  * The group ID
2251
- * @returns {sap.ui.base.SyncPromise}
2264
+ * @returns {sap.ui.base.SyncPromise<void>}
2252
2265
  * A promise on the outcome of the HTTP request resolving with <code>undefined</code>; it is
2253
2266
  * rejected with an error if the batch request itself fails.
2254
2267
  *
@@ -2296,7 +2309,7 @@ sap.ui.define([
2296
2309
  *
2297
2310
  * @param {string} sGroupId
2298
2311
  * The group ID
2299
- * @returns {sap.ui.base.SyncPromise}
2312
+ * @returns {sap.ui.base.SyncPromise<void>}
2300
2313
  * A promise that resolves without a defined result when a batch response has been received
2301
2314
  * for the given group ID, no matter if the batch succeeded or failed
2302
2315
  *
@@ -2313,7 +2326,7 @@ sap.ui.define([
2313
2326
  *
2314
2327
  * @param {string} sGroupId
2315
2328
  * The group ID
2316
- * @returns {sap.ui.base.SyncPromise}
2329
+ * @returns {sap.ui.base.SyncPromise<void>}
2317
2330
  * A promise that resolves without a defined result when all currently running change requests
2318
2331
  * for the given group ID have been processed completely, no matter if they succeed or fail
2319
2332
  *
@@ -944,8 +944,8 @@ sap.ui.define([
944
944
  * Returns a sync promise that is resolved when the requestor is ready to be used. Waits for the
945
945
  * metadata to be available.
946
946
  *
947
- * @returns {sap.ui.base.SyncPromise} A sync promise that is resolved with no result when the
948
- * metadata is available
947
+ * @returns {sap.ui.base.SyncPromise<void>}
948
+ * A sync promise that is resolved with no result when the metadata is available
949
949
  *
950
950
  * @public
951
951
  */
@@ -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.141.0
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.141.0
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.141.0
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.141.0
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.141.0
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.141.0
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.141.0
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.141.0
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.141.0
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.141.0
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.141.0
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.141.0
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.141.0
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.141.0
53
53
  *
54
54
  * @public
55
55
  * @param {object} [oFormatOptions]
@@ -61,9 +61,16 @@ sap.ui.define([
61
61
  * {@link sap.ui.model.Binding#supportsIgnoreMessages}, and the corresponding binding
62
62
  * parameter is not set manually.
63
63
  * @param {object} [oFormatOptions.decimals]
64
- * The number of decimals to be used for formatting the number part of the unit; defaults to <b>3</b> if none of
65
- * the format options <code>maxFractionDigits</code>, <code>minFractionDigits</code> or <code>decimals</code>
66
- * is given
64
+ * The number of decimals to be used for formatting the numerical value of the unit composite type; if none of the
65
+ * format options <code>maxFractionDigits</code>, <code>minFractionDigits</code> or <code>decimals</code> are
66
+ * given, the following defaults apply:
67
+ * <ul>
68
+ * <li> <b>0</b> if the numerical value is of an OData integer type, i.e. {@link sap.ui.model.odata.type.Int}
69
+ * or {@link sap.ui.model.odata.type.Int64} </li>
70
+ * <li> the <b>scale constraint of the numerical value's type</b> if this type is
71
+ * {@link sap.ui.model.odata.type.Decimal} and the scale is not "variable" </li>
72
+ * <li> <b>3</b> otherwise </li>
73
+ * </ul>
67
74
  * @param {boolean} [oFormatOptions.preserveDecimals=true]
68
75
  * By default decimals are preserved, unless <code>oFormatOptions.style</code> is given as
69
76
  * "short" or "long"; since 1.89.0
@@ -324,9 +331,16 @@ sap.ui.define([
324
331
  * @since 1.120.0
325
332
  */
326
333
  Unit.prototype.processPartTypes = function (aPartTypes) {
334
+ this.iScale = undefined; // type of quantity binding part may be changed => reset scale
327
335
  const oQuantityType = aPartTypes[0];
336
+ if (oQuantityType?.isA(["sap.ui.model.odata.type.Int", "sap.ui.model.odata.type.Int64"])) {
337
+ this.iScale = 0;
338
+ }
328
339
  if (oQuantityType?.isA("sap.ui.model.odata.type.Decimal")) {
329
- this.iScale = oQuantityType.oConstraints?.scale || 0;
340
+ const iScale = oQuantityType.oConstraints?.scale;
341
+ if (iScale !== Infinity) { // like in Decimal type, do not propagate scale "variable" to formatter
342
+ this.iScale = iScale || 0;
343
+ }
330
344
  }
331
345
  };
332
346
 
@@ -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.141.0
51
51
  *
52
52
  * @param {XMLDocument|string} oData
53
53
  * Either the URL where to load the XML from or an XML document
@@ -71,7 +71,7 @@ sap.ui.define([
71
71
  * @since 1.58
72
72
  * @alias module:sap/ui/performance/XHRInterceptor
73
73
  * @private
74
- * @ui5-restricted sap.ui.core
74
+ * @ui5-restricted sap.ui.performance.trace
75
75
  */
76
76
  var oXHRInterceptor = {
77
77
  /**
@@ -80,7 +80,8 @@ sap.ui.define([
80
80
  * @param {string} sName Name under which the function is registered
81
81
  * @param {string} sXHRMethod Name of the actual XHR method
82
82
  * @param {function} fnCallback The registered callback function
83
- * @public
83
+ * @private
84
+ * @ui5-restricted sap.ui.performance.trace
84
85
  */
85
86
  register: function(sName, sXHRMethod, fnCallback) {
86
87
  Log.debug("Register '" + sName + "' for XHR function '" + sXHRMethod + "'", XHRINTERCEPTOR);
@@ -95,10 +96,11 @@ sap.ui.define([
95
96
  /**
96
97
  * Unregister a registered function.
97
98
  *
98
- * @param {string} sName Name under which the function is registered
99
+ * @param {string} sName Name under which the function is registered
99
100
  * @param {string} sXHRMethod Name of the actual XHR method
100
101
  * @return {boolean} True if unregister was successful
101
- * @public
102
+ * @private
103
+ * @ui5-restricted sap.ui.performance.trace.FESR
102
104
  */
103
105
  unregister: function(sName, sXHRMethod) {
104
106
  var bRemove = delete mRegistry[sXHRMethod][sName];
@@ -106,11 +108,14 @@ sap.ui.define([
106
108
  return bRemove;
107
109
  },
108
110
 
109
- /*
110
- * Check if a function is registered
111
- * @param {string} sName Name under which the function is registered
112
- * @param {string} sXHRMethod Name of the actual XHR method
113
- * @public
111
+ /**
112
+ * Checks if a function is registered for a specific XHR method.
113
+ *
114
+ * @param {string} sName Name under which the function is registered
115
+ * @param {string} sXHRMethod Name of the actual XHR method (e.g., "open", "send", "setRequestHeader")
116
+ * @returns {boolean} True if a function is registered under the given name for the XHR method, false otherwise
117
+ * @private
118
+ * @ui5-restricted sap.ui.performance.trace.FESR
114
119
  */
115
120
  isRegistered: function(sName, sXHRMethod) {
116
121
  return mRegistry[sXHRMethod] && mRegistry[sXHRMethod][sName];
@@ -8,14 +8,14 @@
8
8
 
9
9
  sap.ui.define([
10
10
  "sap/base/config",
11
- 'sap/ui/thirdparty/URI',
12
11
  'sap/ui/Device',
13
12
  'sap/ui/performance/trace/Passport',
14
13
  'sap/ui/performance/trace/Interaction',
15
14
  'sap/ui/performance/XHRInterceptor',
16
15
  'sap/ui/performance/BeaconRequest',
16
+ 'sap/ui/util/isCrossOriginURL',
17
17
  'sap/base/util/Version'
18
- ], function (BaseConfig, URI, Device, Passport, Interaction, XHRInterceptor, BeaconRequest, Version) {
18
+ ], function (BaseConfig, Device, Passport, Interaction, XHRInterceptor, BeaconRequest, isCrossOriginURL, Version) {
19
19
  "use strict";
20
20
 
21
21
  const sIntegrationEnvironment = BaseConfig.get({
@@ -30,7 +30,6 @@ sap.ui.define([
30
30
  oBeaconRequest,
31
31
  iBeaconTimeoutID,
32
32
  ROOT_ID = Passport.getRootId(), // static per session
33
- HOST = window.location.host, // static per session
34
33
  CLIENT_OS = Device.os.name + "_" + Device.os.version,
35
34
  CLIENT_MODEL = `${Device.browser.reportingName}_${Device.browser.version}${sIntegrationEnvironment ? ":" + sIntegrationEnvironment : ""}`,
36
35
  CLIENT_DEVICE = setClientDevice(),
@@ -63,16 +62,10 @@ sap.ui.define([
63
62
  return oDate.toISOString().replace(/[^\d]/g, '');
64
63
  }
65
64
 
66
- function isCORSRequest(sUrl) {
67
- var sHost = new URI(sUrl.toString()).host();
68
- // url is relative or with same host
69
- return sHost && sHost !== HOST;
70
- }
71
-
72
65
  function passportHeaderOverride() {
73
66
 
74
67
  // only use Passport for non CORS requests
75
- if (!isCORSRequest(arguments[1])) {
68
+ if (!isCrossOriginURL(arguments[1])) {
76
69
 
77
70
  // use the first request of an interaction as FESR TransactionID
78
71
  if (!sFESRTransactionId) {
@@ -100,7 +93,7 @@ sap.ui.define([
100
93
  function fesrHeaderOverride() {
101
94
 
102
95
  // only use FESR for non CORS requests
103
- if (!isCORSRequest(arguments[1])) {
96
+ if (!isCrossOriginURL(arguments[1])) {
104
97
 
105
98
  if (sFESR && sFESRopt) {
106
99
  this.setRequestHeader("SAP-Perf-FESRec", sFESR);
@@ -7,13 +7,12 @@
7
7
  * IMPORTANT: This is a private module, its API must not be used and is subject to change.
8
8
  * Code other than the OpenUI5 libraries must not introduce dependencies to this module.
9
9
  */
10
- sap.ui.define(["sap/ui/performance/XHRInterceptor", "sap/ui/thirdparty/URI"], function(XHRInterceptor, URI) {
10
+ sap.ui.define(["sap/ui/performance/XHRInterceptor", "sap/ui/util/isCrossOriginURL"], function(XHRInterceptor, isCrossOriginURL) {
11
11
  "use strict";
12
12
 
13
13
  var iE2eTraceLevel;
14
14
  var sTransactionId;
15
15
  var ROOT_ID;
16
- var HOST = window.location.host;
17
16
 
18
17
  // old methods taken over from E2eTraceLib
19
18
  function getBytesFromString(s) {
@@ -187,12 +186,6 @@ sap.ui.define(["sap/ui/performance/XHRInterceptor", "sap/ui/thirdparty/URI"], fu
187
186
  return sTransactionId;
188
187
  };
189
188
 
190
- function isCORSRequest(sUrl) {
191
- var sHost = new URI(sUrl.toString()).host();
192
- // url is relative or with same host
193
- return sHost && sHost !== HOST;
194
- }
195
-
196
189
  /**
197
190
  * @param {boolean} bActive State of the Passport header creation
198
191
  * @private
@@ -200,12 +193,12 @@ sap.ui.define(["sap/ui/performance/XHRInterceptor", "sap/ui/thirdparty/URI"], fu
200
193
  Passport.setActive = function(bActive) {
201
194
  if (bActive) {
202
195
  XHRInterceptor.register("PASSPORT_ID", "open", function() {
203
- if (!isCORSRequest(arguments[1])) {
196
+ if (!isCrossOriginURL(arguments[1])) {
204
197
  sTransactionId = Passport.createGUID();
205
198
  }
206
199
  });
207
200
  XHRInterceptor.register("PASSPORT_HEADER", "open", function() {
208
- if (!isCORSRequest(arguments[1])) {
201
+ if (!isCrossOriginURL(arguments[1])) {
209
202
  // set passport with Root Context ID, Transaction ID for Trace
210
203
  this.setRequestHeader("SAP-PASSPORT", Passport.header(iE2eTraceLevel, ROOT_ID, sTransactionId));
211
204
  }
@@ -9,12 +9,12 @@ sap.ui.define([
9
9
  "sap/ui/performance/Measurement",
10
10
  "sap/ui/performance/XHRInterceptor",
11
11
  "sap/ui/performance/trace/FESRHelper",
12
+ "sap/ui/util/isCrossOriginURL",
12
13
  "sap/base/util/LoaderExtensions",
13
14
  "sap/base/util/now",
14
15
  "sap/base/util/uid",
15
- "sap/base/Log",
16
- "sap/ui/thirdparty/URI"
17
- ], function(Measurement, XHRInterceptor, FESRHelper, LoaderExtensions, now, uid, Log, URI) {
16
+ "sap/base/Log"
17
+ ], function(Measurement, XHRInterceptor, FESRHelper, isCrossOriginURL, LoaderExtensions, now, uid, Log) {
18
18
 
19
19
  "use strict";
20
20
 
@@ -43,12 +43,6 @@ sap.ui.define([
43
43
  },
44
44
  sCompressedExtensions = "zip,rar,arj,z,gz,tar,lzh,cab,hqx,ace,jar,ear,war,jpg,jpeg,pdf,gzip";
45
45
 
46
- function isCORSRequest(sUrl) {
47
- var sHost = new URI(sUrl.toString()).host();
48
- // url is relative or with same host
49
- return sHost && sHost !== window.location.host;
50
- }
51
-
52
46
  function hexToAscii(sValue) {
53
47
  var hex = sValue.toString();
54
48
  var str = '';
@@ -293,7 +287,7 @@ sap.ui.define([
293
287
  }
294
288
  // we only need to take care of requests when we have a running interaction
295
289
  if (oPendingInteraction) {
296
- var bIsNoCorsRequest = !isCORSRequest(sUrl);
290
+ var bIsNoCorsRequest = !isCrossOriginURL(sUrl);
297
291
  // only use Interaction for non CORS requests
298
292
  if (bIsNoCorsRequest) {
299
293
  //only track if FESR.clientID == EPP.Action && FESR.rootContextID == EPP.rootContextID
@@ -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.141.0
57
57
  *
58
58
  * @public
59
59
  * @since 1.48.0
@@ -63,7 +63,6 @@ sap.ui.define(['sap/ui/core/Core', "sap/ui/VersionInfo", "sap/ui/core/Lib"],
63
63
 
64
64
  var aControlsThatCannotBeRenderedGenerically = [
65
65
  "sap.chart.Chart",
66
- "sap.m.ColumnHeaderPopover",
67
66
  "sap.m.FacetFilterItem",
68
67
  "sap.m.internal.NumericInput",
69
68
  "sap.m.IconTabBarSelectList",
@@ -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.141.0
34
34
  *
35
35
  * @public
36
36
  * @since 1.48.0
@@ -19,6 +19,7 @@ sap.ui.define([
19
19
 
20
20
  var rBatch = /\/\$batch($|\?)/,
21
21
  rContentId = /(?:^|\r\n)Content-Id\s*:\s*(\S+)/i,
22
+ rContentIdReference = / \$([^ ?\/]+)/,
22
23
  rEndsWithJSON = /\.json$/i,
23
24
  rEndsWithXML = /\.xml$/i,
24
25
  rHeaderLine = /^(.*)?:\s*(.*)$/,
@@ -445,13 +446,14 @@ sap.ui.define([
445
446
  * extension unless specified. This has precedence over <code>message</code>.
446
447
  * </ul>
447
448
  * @param {object[]} [aRegExps]
448
- * An array containing regular expressions in the regExp property and the corresponding
449
- * response(s) objects in the response property. If no match for a request was found in
450
- * the normal fixture, the regular expressions are checked. The response object looks
451
- * exactly the same as in the fixture and may additionally contain a method
452
- * <code>buildResponse(aMatch, oResponse, oRequest)</code> which gets passed the match
453
- * object, the response, and the request in order to allow modification of the response
454
- * before sending.
449
+ * An array containing regular expressions in the regExp property and the corresponding
450
+ * response(s) objects in the response property. If no match for a request was found in
451
+ * the normal fixture, the regular expressions are checked. The response object looks
452
+ * exactly the same as in the fixture and may additionally contain a method
453
+ * <code>buildResponse(aMatch, oResponse, oRequest, sReferencedMessage)</code> which gets
454
+ * passed the match object, the response, the request, and optionally the referenced
455
+ * response message in case of Content-ID referencing in order to allow modification of
456
+ * the response before sending.
455
457
  * @param {string} [sServiceUrl]
456
458
  * The service URL which determines a prefix for all requests the fake server responds to;
457
459
  * it responds with an error for requests not given in the fixture, except DELETE, MERGE,
@@ -689,9 +691,11 @@ sap.ui.define([
689
691
  * @param {boolean} [bTry]
690
692
  * Whether to do nothing and return <code>undefined</code> if no fixture matches; also
691
693
  * prevents defaulting for non-GET requests
694
+ * @param {object} [mContentId2Response]
695
+ * A map which refers a content ID to a response message while processing a batch
692
696
  * @returns {object|undefined} The response object or <code>undefined</code>
693
697
  */
694
- function getResponseFromFixture(oRequest, sContentId, bTry) {
698
+ function getResponseFromFixture(oRequest, sContentId, bTry, mContentId2Response) {
695
699
  var iAlternative,
696
700
  oMatch = getMatchingResponse(oRequest.method, oRequest.url),
697
701
  oResponse,
@@ -708,7 +712,13 @@ sap.ui.define([
708
712
  if (typeof oResponse.buildResponse === "function") {
709
713
  oResponse = merge({}, oResponse);
710
714
  try {
711
- oResponse.buildResponse(oMatch.match, oResponse, oRequest);
715
+ const aMatches = rContentIdReference.exec(oRequest.requestLine);
716
+ let sReferencedMessage;
717
+ if (aMatches) {
718
+ sReferencedMessage = mContentId2Response[aMatches[1]];
719
+ }
720
+ oResponse.buildResponse(oMatch.match, oResponse, oRequest,
721
+ sReferencedMessage);
712
722
  } catch (oError) {
713
723
  oResponse = error(500, oRequest, oError);
714
724
  }
@@ -758,6 +768,9 @@ sap.ui.define([
758
768
  oResponse.headers = jQuery.extend({}, getODataHeaders(oRequest), oResponse.headers);
759
769
  if (sContentId && oResponse.code < 300) {
760
770
  oResponse.contentId = sContentId;
771
+ if (mContentId2Response) {
772
+ mContentId2Response[sContentId] = oResponse.message;
773
+ }
761
774
  }
762
775
  return oResponse;
763
776
  }
@@ -767,14 +780,13 @@ sap.ui.define([
767
780
  *
768
781
  * @param {string} sServiceBase The service base URL
769
782
  * @param {string} sBody The body
783
+ * @param {object} [oBatch] allows to keep state while processing a batch
770
784
  * @returns {object} An object with the properties boundary and parts
771
785
  */
772
- function multipart(sServiceBase, sBody) {
773
- var sBoundary;
774
-
786
+ function multipart(sServiceBase, sBody, oBatch = {}) {
775
787
  // skip preamble consisting of whitespace (as sent by datajs)
776
788
  sBody = sBody.replace(/^\s+/, "");
777
- sBoundary = firstLine(sBody);
789
+ const sBoundary = firstLine(sBody);
778
790
  return {
779
791
  boundary : firstLine(sBody).slice(2),
780
792
  parts : sBody.split(sBoundary).slice(1, -1).map(function (sRequestPart) {
@@ -784,7 +796,7 @@ sap.ui.define([
784
796
  sFirstLine = firstLine(sRequestPart);
785
797
  if (rMultipartHeader.test(sFirstLine)) {
786
798
  oMultipart = multipart(sServiceBase,
787
- sRequestPart.slice(sFirstLine.length + 4));
799
+ sRequestPart.slice(sFirstLine.length + 4), oBatch);
788
800
  aFailures = oMultipart.parts.filter(function (oPart) {
789
801
  return oPart.code >= 300;
790
802
  });
@@ -793,7 +805,7 @@ sap.ui.define([
793
805
  iRequestStart = sRequestPart.indexOf("\r\n\r\n") + 4;
794
806
  oRequest = parseRequest(sServiceBase, sRequestPart.slice(iRequestStart));
795
807
  aMatch = rContentId.exec(sRequestPart.slice(0, iRequestStart));
796
- return getResponseFromFixture(oRequest, aMatch && aMatch[1]);
808
+ return getResponseFromFixture(oRequest, aMatch && aMatch[1], false, oBatch);
797
809
  })
798
810
  };
799
811
  }