@openui5/sap.ui.core 1.138.0 → 1.140.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 (365) hide show
  1. package/README.md +1 -1
  2. package/REUSE.toml +8 -1
  3. package/THIRDPARTY.txt +72 -66
  4. package/package.json +2 -2
  5. package/src/jquery.sap.global.js +1 -1
  6. package/src/jquery.sap.mobile.js +0 -8
  7. package/src/jquery.sap.properties.js +1 -1
  8. package/src/jquery.sap.resources.js +1 -1
  9. package/src/jquery.sap.script.js +1 -1
  10. package/src/jquery.sap.storage.js +3 -3
  11. package/src/sap/base/Event.js +1 -1
  12. package/src/sap/base/Eventing.js +1 -1
  13. package/src/sap/base/config.js +22 -1
  14. package/src/sap/base/i18n/LanguageFallback.js +18 -2
  15. package/src/sap/base/i18n/LanguageTag.js +11 -5
  16. package/src/sap/base/i18n/Localization.js +36 -9
  17. package/src/sap/base/i18n/ResourceBundle.js +59 -35
  18. package/src/sap/base/i18n/date/TimezoneUtils.js +1 -1
  19. package/src/sap/base/security/URLListValidator.js +7 -3
  20. package/src/sap/base/util/restricted/_CancelablePromise.js +1 -1
  21. package/src/sap/base/util/restricted/_castArray.js +1 -1
  22. package/src/sap/base/util/restricted/_compact.js +1 -1
  23. package/src/sap/base/util/restricted/_curry.js +1 -1
  24. package/src/sap/base/util/restricted/_debounce.js +1 -1
  25. package/src/sap/base/util/restricted/_difference.js +1 -1
  26. package/src/sap/base/util/restricted/_differenceBy.js +1 -1
  27. package/src/sap/base/util/restricted/_differenceWith.js +1 -1
  28. package/src/sap/base/util/restricted/_flatMap.js +1 -1
  29. package/src/sap/base/util/restricted/_flatMapDeep.js +1 -1
  30. package/src/sap/base/util/restricted/_flatMapDepth.js +1 -1
  31. package/src/sap/base/util/restricted/_flatten.js +1 -1
  32. package/src/sap/base/util/restricted/_flattenDeep.js +1 -1
  33. package/src/sap/base/util/restricted/_flattenDepth.js +1 -1
  34. package/src/sap/base/util/restricted/_intersection.js +1 -1
  35. package/src/sap/base/util/restricted/_intersectionBy.js +1 -1
  36. package/src/sap/base/util/restricted/_intersectionWith.js +1 -1
  37. package/src/sap/base/util/restricted/_isEqual.js +1 -1
  38. package/src/sap/base/util/restricted/_isEqualWith.js +1 -1
  39. package/src/sap/base/util/restricted/_isNil.js +1 -1
  40. package/src/sap/base/util/restricted/_max.js +1 -1
  41. package/src/sap/base/util/restricted/_merge.js +1 -1
  42. package/src/sap/base/util/restricted/_mergeWith.js +1 -1
  43. package/src/sap/base/util/restricted/_min.js +1 -1
  44. package/src/sap/base/util/restricted/_omit.js +1 -1
  45. package/src/sap/base/util/restricted/_pick.js +1 -1
  46. package/src/sap/base/util/restricted/_pickBy.js +1 -1
  47. package/src/sap/base/util/restricted/_throttle.js +1 -1
  48. package/src/sap/base/util/restricted/_toArray.js +1 -1
  49. package/src/sap/base/util/restricted/_union.js +1 -1
  50. package/src/sap/base/util/restricted/_unionBy.js +1 -1
  51. package/src/sap/base/util/restricted/_unionWith.js +1 -1
  52. package/src/sap/base/util/restricted/_uniq.js +1 -1
  53. package/src/sap/base/util/restricted/_uniqBy.js +1 -1
  54. package/src/sap/base/util/restricted/_uniqWith.js +1 -1
  55. package/src/sap/base/util/restricted/_without.js +1 -1
  56. package/src/sap/base/util/restricted/_xor.js +1 -1
  57. package/src/sap/base/util/restricted/_xorBy.js +1 -1
  58. package/src/sap/base/util/restricted/_xorWith.js +1 -1
  59. package/src/sap/base/util/restricted/_zipObject.js +1 -1
  60. package/src/sap/base/util/restricted/_zipObjectDeep.js +1 -1
  61. package/src/sap/ui/Device.js +3 -3
  62. package/src/sap/ui/Global.js +3 -3
  63. package/src/sap/ui/base/BindingInfo.js +6 -1
  64. package/src/sap/ui/base/BindingParser.js +1 -1
  65. package/src/sap/ui/base/DataType.js +27 -2
  66. package/src/sap/ui/base/Event.js +1 -1
  67. package/src/sap/ui/base/EventProvider.js +1 -1
  68. package/src/sap/ui/base/Interface.js +1 -1
  69. package/src/sap/ui/base/ManagedObject.js +49 -12
  70. package/src/sap/ui/base/ManagedObjectMetadata.js +1 -1
  71. package/src/sap/ui/base/Metadata.js +1 -1
  72. package/src/sap/ui/base/Object.js +1 -1
  73. package/src/sap/ui/base/ObjectPool.js +1 -1
  74. package/src/sap/ui/base/OwnStatics.js +49 -0
  75. package/src/sap/ui/core/.library +8 -3
  76. package/src/sap/ui/core/BlockLayerUtils.js +2 -2
  77. package/src/sap/ui/core/BusyIndicator.js +1 -1
  78. package/src/sap/ui/core/Component.js +11 -9
  79. package/src/sap/ui/core/ComponentContainer.js +13 -3
  80. package/src/sap/ui/core/ComponentMetadata.js +1 -1
  81. package/src/sap/ui/core/ComponentSupport.js +1 -1
  82. package/src/sap/ui/core/Configuration.js +1 -1
  83. package/src/sap/ui/core/Control.js +1 -1
  84. package/src/sap/ui/core/Core.js +2 -11
  85. package/src/sap/ui/core/CustomData.js +1 -1
  86. package/src/sap/ui/core/DeclarativeSupport.js +1 -1
  87. package/src/sap/ui/core/Element.js +10 -4
  88. package/src/sap/ui/core/ElementMetadata.js +1 -1
  89. package/src/sap/ui/core/EnabledPropagator.js +1 -1
  90. package/src/sap/ui/core/EventBus.js +1 -1
  91. package/src/sap/ui/core/Fragment.js +10 -8
  92. package/src/sap/ui/core/HTML.js +1 -1
  93. package/src/sap/ui/core/History.js +1 -1
  94. package/src/sap/ui/core/Icon.js +1 -1
  95. package/src/sap/ui/core/IndicationColorSupport.js +1 -1
  96. package/src/sap/ui/core/IntervalTrigger.js +1 -1
  97. package/src/sap/ui/core/InvisibleMessage.js +1 -1
  98. package/src/sap/ui/core/InvisibleRenderer.js +1 -1
  99. package/src/sap/ui/core/InvisibleText.js +1 -1
  100. package/src/sap/ui/core/Item.js +1 -1
  101. package/src/sap/ui/core/LabelEnablement.js +1 -1
  102. package/src/sap/ui/core/LayoutData.js +1 -1
  103. package/src/sap/ui/core/Lib.js +54 -132
  104. package/src/sap/ui/core/ListItem.js +1 -1
  105. package/src/sap/ui/core/LocalBusyIndicator.js +1 -1
  106. package/src/sap/ui/core/Locale.js +1 -1
  107. package/src/sap/ui/core/LocaleData.js +1 -1
  108. package/src/sap/ui/core/Manifest.js +1 -1
  109. package/src/sap/ui/core/Message.js +1 -1
  110. package/src/sap/ui/core/RenderManager.js +1 -1
  111. package/src/sap/ui/core/Renderer.js +1 -1
  112. package/src/sap/ui/core/ResizeHandler.js +1 -1
  113. package/src/sap/ui/core/ScrollBar.js +1 -1
  114. package/src/sap/ui/core/SeparatorItem.js +1 -1
  115. package/src/sap/ui/core/Theming.js +145 -76
  116. package/src/sap/ui/core/Title.js +1 -1
  117. package/src/sap/ui/core/TooltipBase.js +1 -1
  118. package/src/sap/ui/core/UIArea.js +1 -1
  119. package/src/sap/ui/core/UIComponent.js +6 -2
  120. package/src/sap/ui/core/UIComponentMetadata.js +1 -1
  121. package/src/sap/ui/core/ValueStateSupport.js +1 -1
  122. package/src/sap/ui/core/VariantLayoutData.js +1 -1
  123. package/src/sap/ui/core/XMLComposite.js +1 -1
  124. package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
  125. package/src/sap/ui/core/XMLTemplateProcessor.js +1 -1
  126. package/src/sap/ui/core/date/UI5Date.js +1 -1
  127. package/src/sap/ui/core/delegate/ItemNavigation.js +1 -1
  128. package/src/sap/ui/core/delegate/ScrollEnablement.js +1 -1
  129. package/src/sap/ui/core/dnd/DragDropBase.js +1 -1
  130. package/src/sap/ui/core/dnd/DragDropInfo.js +1 -1
  131. package/src/sap/ui/core/dnd/DragInfo.js +1 -1
  132. package/src/sap/ui/core/dnd/DropInfo.js +1 -1
  133. package/src/sap/ui/core/format/FormatUtils.js +1 -1
  134. package/src/sap/ui/core/format/NumberFormat.js +44 -20
  135. package/src/sap/ui/core/format/TimezoneUtil.js +1 -1
  136. package/src/sap/ui/core/getCompatibilityVersion.js +1 -1
  137. package/src/sap/ui/core/hyphenation/Hyphenation.js +1 -1
  138. package/src/sap/ui/core/i18n/interaction_ar.xml +1 -1
  139. package/src/sap/ui/core/interaction/KeyboardInteractionDisplay.js +64 -37
  140. package/src/sap/ui/core/library.js +3 -3
  141. package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
  142. package/src/sap/ui/core/message/Message.js +1 -1
  143. package/src/sap/ui/core/message/MessageManager.js +1 -1
  144. package/src/sap/ui/core/message/MessageParser.js +1 -1
  145. package/src/sap/ui/core/message/MessageProcessor.js +1 -1
  146. package/src/sap/ui/core/messagebundle.properties +58 -28
  147. package/src/sap/ui/core/messagebundle_ar.properties +26 -11
  148. package/src/sap/ui/core/messagebundle_bg.properties +21 -6
  149. package/src/sap/ui/core/messagebundle_ca.properties +24 -9
  150. package/src/sap/ui/core/messagebundle_cnr.properties +25 -10
  151. package/src/sap/ui/core/messagebundle_cs.properties +24 -9
  152. package/src/sap/ui/core/messagebundle_cy.properties +24 -9
  153. package/src/sap/ui/core/messagebundle_da.properties +21 -6
  154. package/src/sap/ui/core/messagebundle_de.properties +16 -1
  155. package/src/sap/ui/core/messagebundle_el.properties +26 -11
  156. package/src/sap/ui/core/messagebundle_en.properties +24 -9
  157. package/src/sap/ui/core/messagebundle_en_GB.properties +24 -9
  158. package/src/sap/ui/core/messagebundle_en_US_saprigi.properties +24 -9
  159. package/src/sap/ui/core/messagebundle_es.properties +21 -6
  160. package/src/sap/ui/core/messagebundle_es_MX.properties +24 -9
  161. package/src/sap/ui/core/messagebundle_et.properties +31 -16
  162. package/src/sap/ui/core/messagebundle_fi.properties +22 -7
  163. package/src/sap/ui/core/messagebundle_fr.properties +22 -7
  164. package/src/sap/ui/core/messagebundle_fr_CA.properties +20 -5
  165. package/src/sap/ui/core/messagebundle_hi.properties +24 -9
  166. package/src/sap/ui/core/messagebundle_hr.properties +20 -5
  167. package/src/sap/ui/core/messagebundle_hu.properties +23 -8
  168. package/src/sap/ui/core/messagebundle_id.properties +20 -5
  169. package/src/sap/ui/core/messagebundle_it.properties +23 -8
  170. package/src/sap/ui/core/messagebundle_iw.properties +21 -6
  171. package/src/sap/ui/core/messagebundle_ja.properties +19 -4
  172. package/src/sap/ui/core/messagebundle_kk.properties +25 -10
  173. package/src/sap/ui/core/messagebundle_ko.properties +26 -11
  174. package/src/sap/ui/core/messagebundle_lt.properties +20 -5
  175. package/src/sap/ui/core/messagebundle_lv.properties +22 -7
  176. package/src/sap/ui/core/messagebundle_mk.properties +25 -10
  177. package/src/sap/ui/core/messagebundle_ms.properties +24 -9
  178. package/src/sap/ui/core/messagebundle_nl.properties +22 -7
  179. package/src/sap/ui/core/messagebundle_no.properties +22 -7
  180. package/src/sap/ui/core/messagebundle_pl.properties +19 -4
  181. package/src/sap/ui/core/messagebundle_pt.properties +18 -3
  182. package/src/sap/ui/core/messagebundle_pt_PT.properties +18 -3
  183. package/src/sap/ui/core/messagebundle_ro.properties +24 -9
  184. package/src/sap/ui/core/messagebundle_ru.properties +19 -4
  185. package/src/sap/ui/core/messagebundle_sh.properties +25 -10
  186. package/src/sap/ui/core/messagebundle_sk.properties +24 -9
  187. package/src/sap/ui/core/messagebundle_sl.properties +20 -5
  188. package/src/sap/ui/core/messagebundle_sr.properties +25 -10
  189. package/src/sap/ui/core/messagebundle_sv.properties +23 -8
  190. package/src/sap/ui/core/messagebundle_th.properties +20 -5
  191. package/src/sap/ui/core/messagebundle_tr.properties +20 -5
  192. package/src/sap/ui/core/messagebundle_uk.properties +22 -7
  193. package/src/sap/ui/core/messagebundle_vi.properties +26 -11
  194. package/src/sap/ui/core/messagebundle_zh_CN.properties +24 -9
  195. package/src/sap/ui/core/messagebundle_zh_TW.properties +26 -11
  196. package/src/sap/ui/core/mvc/Controller.js +5 -3
  197. package/src/sap/ui/core/mvc/HTMLView.js +6 -2
  198. package/src/sap/ui/core/mvc/JSONView.js +6 -2
  199. package/src/sap/ui/core/mvc/JSView.js +6 -3
  200. package/src/sap/ui/core/mvc/TemplateView.js +1 -1
  201. package/src/sap/ui/core/mvc/View.js +63 -20
  202. package/src/sap/ui/core/mvc/XMLView.js +6 -2
  203. package/src/sap/ui/core/mvc/_ViewFactory.js +8 -4
  204. package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
  205. package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -1
  206. package/src/sap/ui/core/postmessage/Bus.js +1 -1
  207. package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
  208. package/src/sap/ui/core/routing/Route.js +1 -1
  209. package/src/sap/ui/core/routing/Router.js +19 -1
  210. package/src/sap/ui/core/search/OpenSearchProvider.js +1 -1
  211. package/src/sap/ui/core/search/SearchProvider.js +1 -1
  212. package/src/sap/ui/core/service/Service.js +1 -1
  213. package/src/sap/ui/core/service/ServiceFactory.js +1 -1
  214. package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
  215. package/src/sap/ui/core/support/Plugin.js +1 -1
  216. package/src/sap/ui/core/support/Support.js +1 -1
  217. package/src/sap/ui/core/support/plugins/ControlTree.js +1 -1
  218. package/src/sap/ui/core/support/plugins/Interaction.js +1 -1
  219. package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
  220. package/src/sap/ui/core/support/plugins/Performance.js +1 -1
  221. package/src/sap/ui/core/support/plugins/Selector.js +1 -1
  222. package/src/sap/ui/core/support/plugins/TechInfo.js +1 -1
  223. package/src/sap/ui/core/support/plugins/Trace.js +1 -1
  224. package/src/sap/ui/core/support/plugins/ViewInfo.js +1 -1
  225. package/src/sap/ui/core/themes/base/base.less +6 -6
  226. package/src/sap/ui/core/themes/base/shared.less +4 -1
  227. package/src/sap/ui/core/themes/base/skeleton.less +3 -3
  228. package/src/sap/ui/core/theming/Parameters.js +717 -755
  229. package/src/sap/ui/core/theming/ThemeHelper.js +0 -77
  230. package/src/sap/ui/core/theming/ThemeManager.js +535 -526
  231. package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
  232. package/src/sap/ui/core/tmpl/DOMElement.js +1 -1
  233. package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
  234. package/src/sap/ui/core/tmpl/Template.js +1 -1
  235. package/src/sap/ui/core/tmpl/TemplateControl.js +1 -1
  236. package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
  237. package/src/sap/ui/core/util/Export.js +1 -1
  238. package/src/sap/ui/core/util/ExportCell.js +1 -1
  239. package/src/sap/ui/core/util/ExportColumn.js +1 -1
  240. package/src/sap/ui/core/util/ExportRow.js +1 -1
  241. package/src/sap/ui/core/util/ExportType.js +1 -1
  242. package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
  243. package/src/sap/ui/core/util/File.js +1 -1
  244. package/src/sap/ui/core/util/LibraryInfo.js +1 -1
  245. package/src/sap/ui/core/util/MockServer.js +1 -1
  246. package/src/sap/ui/core/util/PasteHelper.js +1 -1
  247. package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
  248. package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
  249. package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
  250. package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
  251. package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
  252. package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
  253. package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
  254. package/src/sap/ui/core/webc/WebComponent.js +93 -45
  255. package/src/sap/ui/core/webc/WebComponentMetadata.js +40 -6
  256. package/src/sap/ui/core/ws/ReadyState.js +1 -1
  257. package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
  258. package/src/sap/ui/core/ws/WebSocket.js +1 -1
  259. package/src/sap/ui/debug/ControlTree.js +1 -1
  260. package/src/sap/ui/debug/DebugEnv.js +1 -1
  261. package/src/sap/ui/debug/PropertyList.js +1 -1
  262. package/src/sap/ui/dom/findTabbable.js +1 -1
  263. package/src/sap/ui/dom/includeStylesheet.js +4 -1
  264. package/src/sap/ui/model/ClientModel.js +2 -2
  265. package/src/sap/ui/model/CompositeDataState.js +1 -1
  266. package/src/sap/ui/model/CompositeType.js +1 -1
  267. package/src/sap/ui/model/DataState.js +1 -1
  268. package/src/sap/ui/model/Filter.js +55 -35
  269. package/src/sap/ui/model/FilterOperator.js +79 -9
  270. package/src/sap/ui/model/MetaModel.js +1 -1
  271. package/src/sap/ui/model/Model.js +7 -7
  272. package/src/sap/ui/model/SelectionModel.js +1 -1
  273. package/src/sap/ui/model/SimpleType.js +1 -1
  274. package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
  275. package/src/sap/ui/model/Type.js +1 -1
  276. package/src/sap/ui/model/json/JSONModel.js +1 -1
  277. package/src/sap/ui/model/json/JSONPropertyBinding.js +14 -2
  278. package/src/sap/ui/model/json/TypedJSONContext.js +16 -0
  279. package/src/sap/ui/model/json/TypedJSONModel.js +16 -0
  280. package/src/sap/ui/model/message/MessageModel.js +1 -1
  281. package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
  282. package/src/sap/ui/model/odata/ODataMessageParser.js +1 -1
  283. package/src/sap/ui/model/odata/ODataMetaModel.js +1 -1
  284. package/src/sap/ui/model/odata/ODataMetadata.js +4 -4
  285. package/src/sap/ui/model/odata/ODataModel.js +3 -3
  286. package/src/sap/ui/model/odata/ODataTreeBindingFlat.js +9 -8
  287. package/src/sap/ui/model/odata/_AnnotationHelperExpression.js +2 -2
  288. package/src/sap/ui/model/odata/type/Boolean.js +1 -1
  289. package/src/sap/ui/model/odata/type/Byte.js +1 -1
  290. package/src/sap/ui/model/odata/type/Currency.js +1 -1
  291. package/src/sap/ui/model/odata/type/Date.js +1 -1
  292. package/src/sap/ui/model/odata/type/DateTime.js +1 -1
  293. package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
  294. package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
  295. package/src/sap/ui/model/odata/type/DateTimeWithTimezone.js +1 -1
  296. package/src/sap/ui/model/odata/type/Decimal.js +1 -1
  297. package/src/sap/ui/model/odata/type/Double.js +1 -1
  298. package/src/sap/ui/model/odata/type/Guid.js +1 -1
  299. package/src/sap/ui/model/odata/type/Int.js +1 -1
  300. package/src/sap/ui/model/odata/type/Int16.js +1 -1
  301. package/src/sap/ui/model/odata/type/Int32.js +1 -1
  302. package/src/sap/ui/model/odata/type/Int64.js +1 -1
  303. package/src/sap/ui/model/odata/type/ODataType.js +1 -1
  304. package/src/sap/ui/model/odata/type/Raw.js +1 -1
  305. package/src/sap/ui/model/odata/type/SByte.js +1 -1
  306. package/src/sap/ui/model/odata/type/Single.js +1 -1
  307. package/src/sap/ui/model/odata/type/Stream.js +1 -1
  308. package/src/sap/ui/model/odata/type/String.js +1 -1
  309. package/src/sap/ui/model/odata/type/Time.js +1 -1
  310. package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
  311. package/src/sap/ui/model/odata/type/Unit.js +1 -1
  312. package/src/sap/ui/model/odata/v2/Context.js +1 -1
  313. package/src/sap/ui/model/odata/v2/ODataAnnotations.js +17 -11
  314. package/src/sap/ui/model/odata/v2/ODataContextBinding.js +2 -2
  315. package/src/sap/ui/model/odata/v2/ODataListBinding.js +2 -2
  316. package/src/sap/ui/model/odata/v2/ODataModel.js +44 -61
  317. package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +82 -60
  318. package/src/sap/ui/model/odata/v4/Context.js +19 -15
  319. package/src/sap/ui/model/odata/v4/ODataBinding.js +2 -2
  320. package/src/sap/ui/model/odata/v4/ODataContextBinding.js +4 -4
  321. package/src/sap/ui/model/odata/v4/ODataListBinding.js +26 -14
  322. package/src/sap/ui/model/odata/v4/ODataMetaModel.js +38 -23
  323. package/src/sap/ui/model/odata/v4/ODataModel.js +2 -2
  324. package/src/sap/ui/model/odata/v4/ODataParentBinding.js +34 -7
  325. package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +1 -1
  326. package/src/sap/ui/model/odata/v4/ODataUtils.js +2 -2
  327. package/src/sap/ui/model/odata/v4/_AnnotationHelperExpression.js +1 -1
  328. package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +78 -26
  329. package/src/sap/ui/model/odata/v4/lib/_AggregationHelper.js +10 -7
  330. package/src/sap/ui/model/odata/v4/lib/_Cache.js +32 -27
  331. package/src/sap/ui/model/odata/v4/lib/_Helper.js +50 -32
  332. package/src/sap/ui/model/odata/v4/lib/_MinMaxHelper.js +1 -1
  333. package/src/sap/ui/model/odata/v4/lib/_Requestor.js +19 -9
  334. package/src/sap/ui/model/odata/v4/lib/_V2Requestor.js +1 -1
  335. package/src/sap/ui/model/resource/ResourceModel.js +1 -1
  336. package/src/sap/ui/model/type/Boolean.js +1 -1
  337. package/src/sap/ui/model/type/Currency.js +1 -1
  338. package/src/sap/ui/model/type/Date.js +1 -1
  339. package/src/sap/ui/model/type/DateInterval.js +1 -1
  340. package/src/sap/ui/model/type/DateTime.js +1 -1
  341. package/src/sap/ui/model/type/DateTimeInterval.js +1 -1
  342. package/src/sap/ui/model/type/FileSize.js +1 -1
  343. package/src/sap/ui/model/type/Float.js +1 -1
  344. package/src/sap/ui/model/type/Integer.js +1 -1
  345. package/src/sap/ui/model/type/String.js +1 -1
  346. package/src/sap/ui/model/type/Time.js +1 -1
  347. package/src/sap/ui/model/type/TimeInterval.js +1 -1
  348. package/src/sap/ui/model/type/Unit.js +19 -5
  349. package/src/sap/ui/model/xml/XMLModel.js +1 -1
  350. package/src/sap/ui/qunit/utils/ControlIterator.js +1 -2
  351. package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +1 -1
  352. package/src/sap/ui/test/TestUtils.js +27 -15
  353. package/src/sap/ui/test/generic/GenericTestCollection.js +11 -1
  354. package/src/sap/ui/test/generic/TestBase.js +1 -1
  355. package/src/sap/ui/test/generic/Utils.js +6 -6
  356. package/src/sap/ui/test/opaQunit.js +3 -0
  357. package/src/sap/ui/thirdparty/jquery.js +1 -1
  358. package/src/sap/ui/thirdparty/qunit-2.js +4 -1
  359. package/src/sap/ui/util/Mobile.js +0 -9
  360. package/src/sap/ui/util/Storage.js +1 -1
  361. package/src/ui5loader-autoconfig.js +49 -42
  362. package/src/ui5loader.js +1 -1
  363. package/ui5.yaml +0 -1
  364. package/src/sap/ui/base/_runWithOwner.js +0 -43
  365. package/src/sap/ui/core/plugin/LessSupport.js +0 -542
@@ -177,7 +177,7 @@ sap.ui.define([
177
177
  * Enable/disable automatic refresh after change operations
178
178
  * @param {boolean} [mParameters.sequentializeRequests=false]
179
179
  * Whether to sequentialize all requests, needed in case the service cannot handle parallel
180
- * requests. <b>Deprecated</b> as of version 1.128.0, the concept has been discarded.
180
+ * requests. <b>Deprecated as of version 1.128.0</b>, the concept has been discarded.
181
181
  * @param {string} [mParameters.serviceUrl]
182
182
  * Base URI of the service to request data from; this property is mandatory when the first
183
183
  * method parameter <code>serviceUrl</code> is omitted, but ignored otherwise
@@ -198,16 +198,16 @@ sap.ui.define([
198
198
  * If set to <code>true</code>, the user credentials are included in a cross-origin request. <b>Note:</b> This
199
199
  * only works if all requests are asynchronous.
200
200
  * @param {string} [mParameters.password]
201
- * <b>Deprecated</b> for security reasons. Use strong server side authentication instead.
201
+ * <b>Deprecated as of version 1.75.0</b> for security reasons. Use strong server side authentication instead.
202
202
  * Password for the service.
203
203
  * @param {boolean} [mParameters.skipMetadataAnnotationParsing]
204
- * <b>Deprecated</b> This parameter does not prevent creation of annotations from the metadata
205
- * document in this model's metamodel.
204
+ * <b>Deprecated as of version 1.112.0</b> This parameter does not prevent creation of annotations from the
205
+ * metadata document in this model's metamodel.
206
206
  * Whether to skip the automated loading of annotations from the metadata document. Loading
207
207
  * annotations from metadata does not have any effects (except the lost performance by
208
208
  * invoking the parser) if there are no annotations inside the metadata document
209
209
  * @param {string} [mParameters.user]
210
- * <b>Deprecated</b> for security reasons. Use strong server side authentication instead.
210
+ * <b>Deprecated as of version 1.75.0</b> for security reasons. Use strong server side authentication instead.
211
211
  * UserID for the service.
212
212
  *
213
213
  * @class
@@ -219,7 +219,7 @@ sap.ui.define([
219
219
  * This model is not prepared to be inherited from.
220
220
  *
221
221
  * @author SAP SE
222
- * @version 1.138.0
222
+ * @version 1.140.0
223
223
  *
224
224
  * @public
225
225
  * @alias sap.ui.model.odata.v2.ODataModel
@@ -325,7 +325,7 @@ sap.ui.define([
325
325
  this.sWarmupUrl = sWarmupUrl;
326
326
  this.bWarmup = !!sWarmupUrl;
327
327
  this.mSupportedBindingModes = {"OneWay": true, "OneTime": true, "TwoWay":true};
328
- this.mUnsupportedFilterOperators = {"Any": true, "All": true};
328
+ this.mUnsupportedFilterOperators = {All: true, Any: true, NotAll: true, NotAny: true};
329
329
  this.sDefaultBindingMode = sDefaultBindingMode || BindingMode.OneWay;
330
330
  this.bIsMessageScopeSupported = false;
331
331
  this.iPendingDeferredRequests = 0;
@@ -467,7 +467,8 @@ sap.ui.define([
467
467
  headers: this.mCustomHeaders,
468
468
  combineEvents: true,
469
469
  cacheKey: this._getAnnotationCacheKey(this.sMetadataUrl),
470
- useCache: this.bUseCache
470
+ useCache: this.bUseCache,
471
+ withCredentials: this.bWithCredentials
471
472
  });
472
473
  if (!this.bDisableSoftStateHeader) {
473
474
  delete this.mCustomHeaders["sap-contextid-accept"];
@@ -2103,10 +2104,10 @@ sap.ui.define([
2103
2104
  * {@link topic:6c47b2b39db9404582994070ec3d57a2#loio62149734b5c24507868e722fe87a75db
2104
2105
  * Optimizing Dependent Bindings}.
2105
2106
  * @param {string} [mParameters.batchGroupId]
2106
- * <b>Deprecated</b>, use <code>groupId</code> instead. Sets the batch group id to be used for
2107
- * requests originating from the binding.
2107
+ * <b>Deprecated as of version 1.31.0</b>, use <code>groupId</code> instead. Sets the batch group id to be used
2108
+ * for requests originating from the binding.
2108
2109
  * @param {int} [mParameters.threshold]
2109
- * Deprecated since 1.102.0, as {@link sap.ui.model.odata.OperationMode.Auto} is deprecated;
2110
+ * <b>Deprecated as of version 1.102.0</b>, as {@link sap.ui.model.odata.OperationMode.Auto} is deprecated;
2110
2111
  * the threshold that defines how many entries should be fetched at least by the binding if
2111
2112
  * <code>operationMode</code> is set to <code>Auto</code>.
2112
2113
  * @throws {Error} If one of the filters uses an operator that is not supported by the underlying model
@@ -2136,33 +2137,22 @@ sap.ui.define([
2136
2137
  * single initial OData request.
2137
2138
  *
2138
2139
  * For services without the <code>hierarchy-node-descendant-count-for</code> annotation, the
2139
- * <code>numberOfExpandedLevels</code> property is not supported and deprecated.
2140
+ * <code>numberOfExpandedLevels</code> property is not supported and deprecated since 1.44.5.
2141
+ *
2142
+ * The OData service must always return node collections which are sufficient to create a valid hierarchy on the
2143
+ * client. This means that for each node in the response all parent nodes up to the hierarchy root must also
2144
+ * be contained in the response. Note that this rule applies independent of any filters set for the binding.
2145
+ *
2146
+ * You must not define filters on tree annotation properties for this binding as this interferes with hierarchy
2147
+ * filters defined by the binding itself.
2140
2148
  *
2141
- * <h3>Operation Modes</h3>
2149
+ * <h3>Notes On Operation Modes</h3>
2142
2150
  * For a full definition and explanation of all OData binding operation modes, see
2143
2151
  * {@link sap.ui.model.odata.OperationMode}.
2144
2152
  *
2145
- * <h4>OperationMode.Server</h4>
2146
- * Filtering on the <code>ODataTreeBinding</code> is only supported with filters of type
2147
- * {@link sap.ui.model.FilterType.Application}. Be aware that this applies
2148
- * only to filters which do not prevent the creation of a hierarchy. So filtering on a property
2149
- * (e.g. a "Customer") is fine, as long as the application ensures that the responses from the
2150
- * back end are sufficient to create a valid hierarchy on the client. Subsequent paging requests
2151
- * for sibling and child nodes must also return responses, since the filters are sent with every
2152
- * request. Using control-defined filters (see {@link sap.ui.model.FilterType.Control}) via the
2153
- * {@link #filter} function is not supported for the operation mode <code>Server</code>.
2154
- *
2155
- * <h4>OperationMode.Client and OperationMode.Auto</h4>
2156
- * The ODataTreeBinding supports control-defined filters only in operation modes
2157
- * <code>Client</code> and <code>Auto</code>. With these operation modes, the filters and
2158
- * sorters are applied on the client, like for the
2159
- * {@link sap.ui.model.odata.v2.ODataListBinding}.
2160
- *
2161
2153
  * The operation modes <code>Client</code> and <code>Auto</code> are only supported for services
2162
2154
  * which expose the hierarchy annotations mentioned above, but do <b>not</b> expose the
2163
- * <code>hierarchy-node-descendant-count-for</code> annotation. Services with hierarchy
2164
- * annotations including the <code>hierarchy-node-descendant-count-for</code> annotation, do
2165
- * <b>not</b> support the operation modes <code>Client</code> and <code>Auto</code>.
2155
+ * <code>hierarchy-node-descendant-count-for</code> annotation.
2166
2156
  * <b>Note:</b> {@link sap.ui.model.odata.OperationMode.Auto} is deprecated since 1.102.0.
2167
2157
  *
2168
2158
  * <b>Note:</b> OData tree bindings do neither support
@@ -2203,8 +2193,8 @@ sap.ui.define([
2203
2193
  * the referenced property has to be an integer type
2204
2194
  * @param {number} [mParameters.numberOfExpandedLevels=0]
2205
2195
  * The number of levels that are auto-expanded initially. Setting this property might lead to
2206
- * multiple back-end requests. The auto-expand feature is <b>deprecated for services without
2207
- * the <code>hierarchy-node-descendant-count-for</code> annotation</b>
2196
+ * multiple back-end requests. The auto-expand feature is <b>deprecated as of Version 1.44.5
2197
+ * for services without the <code>hierarchy-node-descendant-count-for</code> annotation</b>
2208
2198
  * @param {number} [mParameters.rootLevel=0]
2209
2199
  * The level of the topmost tree nodes
2210
2200
  * @param {string} [mParameters.groupId]
@@ -2214,22 +2204,15 @@ sap.ui.define([
2214
2204
  * specified. {@link sap.ui.model.odata.OperationMode.Auto OperationMode.Auto} is only
2215
2205
  * supported for services which expose the hierarchy annotations, yet do <b>NOT</b> expose the
2216
2206
  * <code>hierarchy-node-descendant-count-for</code> annotation.
2217
- * <b>Note:</b> {@link sap.ui.model.odata.OperationMode.Auto} is deprecated since 1.102.0.
2218
2207
  * @param {number} [mParameters.threshold]
2219
2208
  * Deprecated since 1.102.0, as {@link sap.ui.model.odata.OperationMode.Auto} is deprecated;
2220
2209
  * the threshold that defines how many entries should be fetched at least by the binding if
2221
2210
  * <code>operationMode</code> is set to <code>Auto</code>
2222
2211
  * @param {boolean} [mParameters.useServersideApplicationFilters]
2223
- * Deprecated since 1.102.0, as {@link sap.ui.model.odata.OperationMode.Auto} is deprecated;
2224
- * whether <code>$filter</code> statements should be used for the <code>$count</code> /
2212
+ * Whether <code>$filter</code> statements should be used for the <code>$count</code> /
2225
2213
  * <code>$inlinecount</code> requests and for the data request if the operation mode is
2226
- * {@link sap.ui.model.odata.OperationMode.Auto OperationMode.Auto}. Use this feature only
2227
- * if your back end supports pre-filtering the tree and is capable of responding with
2228
- * a complete tree hierarchy, including all inner nodes. To construct the hierarchy on the
2229
- * client, it is mandatory that all filter matches include their complete parent chain up to
2230
- * the root level. If {@link sap.ui.model.odata.OperationMode.Client OperationMode.Client} is
2231
- * used, the complete collection without filters is requested; filters are applied on the
2232
- * client side.
2214
+ * {@link sap.ui.model.odata.OperationMode.Auto OperationMode.Auto} or
2215
+ * {@link sap.ui.model.odata.OperationMode.Client OperationMode.Client}
2233
2216
  * @param {any} [mParameters.treeState]
2234
2217
  * A tree state handle can be given to the <code>ODataTreeBinding</code> when two conditions
2235
2218
  * are met: <ul>
@@ -2252,14 +2235,14 @@ sap.ui.define([
2252
2235
  * <code>preliminaryContext</code> given on construction of the binding's model, see
2253
2236
  * {@link sap.ui.model.odata.v2.ODataModel}
2254
2237
  * @param {string} [mParameters.batchGroupId]
2255
- * <b>Deprecated</b>, use <code>groupId</code> instead. Sets the batch group id to be used
2238
+ * <b>Deprecated as of version 1.31.0</b>, use <code>groupId</code> instead. Sets the batch group id to be used
2256
2239
  * for requests originating from this binding
2257
2240
  * @param {object} [mParameters.navigation]
2258
2241
  * A map describing the navigation properties between entity sets, which is used for
2259
2242
  * constructing and paging the tree. Keys in this object are entity names, whereas the values
2260
2243
  * name the navigation properties.
2261
2244
  *
2262
- * <b>Deprecated: since 1.44</b> The use of navigation properties to build up the hierarchy
2245
+ * <b>Deprecated as of version 1.44</b> The use of navigation properties to build up the hierarchy
2263
2246
  * structure is deprecated. It is recommended to use the hierarchy annotations mentioned above
2264
2247
  * instead.
2265
2248
  * @param {sap.ui.model.Sorter[]|sap.ui.model.Sorter} [vSorters=[]]
@@ -2784,8 +2767,8 @@ sap.ui.define([
2784
2767
  * see {@link topic:6c47b2b39db9404582994070ec3d57a2#loio62149734b5c24507868e722fe87a75db
2785
2768
  * Optimizing Dependent Bindings}.
2786
2769
  * @param {string} [mParameters.batchGroupId]
2787
- * <b>Deprecated</b>, use <code>groupId</code> instead. Sets the batch group id to be used for
2788
- * requests originating from the binding.
2770
+ * <b>Deprecated as of version 1.31.0</b>, use <code>groupId</code> instead. Sets the batch group id to be used
2771
+ * for requests originating from the binding.
2789
2772
  * @returns {sap.ui.model.odata.v2.ODataContextBinding} The new context binding
2790
2773
  * @see sap.ui.model.Model.prototype.bindContext
2791
2774
  * @public
@@ -2966,8 +2949,8 @@ sap.ui.define([
2966
2949
  * @param {string} sPath Path/name of the property
2967
2950
  * @param {object} [oContext] Context if available to access the property value
2968
2951
  * @param {boolean} [bIncludeExpandEntries=false]
2969
- * Deprecated, use {@link #getObject} function with 'select' and 'expand' parameters instead.
2970
- * Whether entities for navigation properties of this property which have been read via
2952
+ * <b>Deprecated as of version 1.41.0</b>, use {@link #getObject} function with 'select' and 'expand' parameters
2953
+ * instead. Whether entities for navigation properties of this property which have been read via
2971
2954
  * <code>$expand</code> are part of the return value.
2972
2955
  * @returns {any} Value of the property
2973
2956
  * @throws {Error}
@@ -5305,7 +5288,7 @@ sap.ui.define([
5305
5288
  * sure that the request is completed before the data is processed any further.
5306
5289
  * @param {Object<string,string>} [mParameters.urlParameters] A map containing the parameters that will be passed as query strings
5307
5290
  * @param {Object<string,string>} [mParameters.headers] A map of headers for this request
5308
- * @param {string} [mParameters.batchGroupId] Deprecated - use <code>groupId</code> instead
5291
+ * @param {string} [mParameters.batchGroupId] <b>Deprecated as of version 1.31.0</b>, use <code>groupId</code> instead
5309
5292
  * @param {string} [mParameters.groupId] ID of a request group; requests belonging to the same group will be bundled in one batch request
5310
5293
  * @param {string} [mParameters.changeSetId] ID of the <code>ChangeSet</code> that this request should belong to
5311
5294
  * @param {boolean} [mParameters.refreshAfterChange] Since 1.46; defines whether to update all bindings after submitting this change operation.
@@ -5390,7 +5373,7 @@ sap.ui.define([
5390
5373
  * <code>true</code>.
5391
5374
  * @param {Object<string,string>} [mParameters.urlParameters] A map containing the parameters that will be passed as query strings
5392
5375
  * @param {Object<string,string>} [mParameters.headers] A map of headers for this request
5393
- * @param {string} [mParameters.batchGroupId] Deprecated - use <code>groupId</code> instead
5376
+ * @param {string} [mParameters.batchGroupId] <b>Deprecated as of version 1.31.0</b>, use <code>groupId</code> instead
5394
5377
  * @param {string} [mParameters.groupId] ID of a request group; requests belonging to the same group will be bundled in one batch request
5395
5378
  * @param {string} [mParameters.changeSetId] ID of the <code>ChangeSet</code> that this request should belong to
5396
5379
  * @param {boolean} [mParameters.refreshAfterChange] Since 1.46; defines whether to update all bindings after submitting this change operation.
@@ -5478,7 +5461,7 @@ sap.ui.define([
5478
5461
  * @param {Object<string,string>} [mParameters.headers]
5479
5462
  * A map of headers for this request
5480
5463
  * @param {string} [mParameters.batchGroupId]
5481
- * Deprecated - use <code>groupId</code> instead
5464
+ * <b>Deprecated as of version 1.31.0</b>, use <code>groupId</code> instead
5482
5465
  * @param {string} [mParameters.groupId]
5483
5466
  * ID of a request group; requests belonging to the same group will be bundled in one batch
5484
5467
  * request
@@ -5660,7 +5643,7 @@ sap.ui.define([
5660
5643
  * Maps the function import parameter name as specified in the function import's metadata to
5661
5644
  * its value; the value is formatted based on the parameter's type as specified in the metadata
5662
5645
  * @param {string} [mParameters.batchGroupId]
5663
- * <b>Deprecated - use <code>groupId</code> instead</b>
5646
+ * <b>Deprecated as of version 1.31.0</b>, use <code>groupId</code> instead
5664
5647
  *
5665
5648
  * @return {object}
5666
5649
  * An object which has a <code>contextCreated</code> function that returns a
@@ -5959,7 +5942,7 @@ sap.ui.define([
5959
5942
  * failed. The handler can have the parameter: <code>oError</code> which contains additional error information.
5960
5943
  * If the <code>GET</code> request has been aborted, the error has an <code>aborted</code> flag set to
5961
5944
  * <code>true</code>.
5962
- * @param {string} [mParameters.batchGroupId] Deprecated - use <code>groupId</code> instead
5945
+ * @param {string} [mParameters.batchGroupId] <b>Deprecated as of version 1.31.0</b>, use <code>groupId</code> instead
5963
5946
  * @param {string} [mParameters.groupId] ID of a request group; requests belonging to the same group will be bundled in one batch request
5964
5947
  * @param {boolean} [mParameters.updateAggregatedMessages]
5965
5948
  * Whether messages for child entities belonging to the same business object as the requested
@@ -6394,9 +6377,9 @@ sap.ui.define([
6394
6377
  * If all contained requests have been aborted, the error has an <code>aborted</code> flag set to
6395
6378
  * <code>true</code>.
6396
6379
  * @param {string} [mParameters.batchGroupId]
6397
- * <b>Deprecated</b>, use <code>groupId</code> instead
6380
+ * <b>Deprecated as of version 1.31.0</b>, use <code>groupId</code> instead
6398
6381
  * @param {boolean} [mParameters.merge]
6399
- * <b>Deprecated</b> since 1.38.0; use the <code>defaultUpdateMethod</code> constructor parameter instead.
6382
+ * <b>Deprecated as of version 1.38.0</b>, use the <code>defaultUpdateMethod</code> constructor parameter instead.
6400
6383
  * If unset, the update method is determined from the <code>defaultUpdateMethod</code> constructor parameter.
6401
6384
  * If <code>true</code>, <code>sap.ui.model.odata.UpdateMethod.MERGE</code> is used for update operations;
6402
6385
  * if set to <code>false</code>, <code>sap.ui.model.odata.UpdateMethod.PUT</code> is used.
@@ -6430,10 +6413,10 @@ sap.ui.define([
6430
6413
  * @param {function} [mParameters.success]
6431
6414
  * A callback function which is called when the request has been successful
6432
6415
  * @param {string} [mParameters.batchGroupId]
6433
- * <b>Deprecated</b>, use <code>groupId</code> instead
6416
+ * <b>Deprecated as of version 1.31.0</b>, use <code>groupId</code> instead
6434
6417
  * @param {boolean} [mParameters.merge]
6435
- * <b>Deprecated</b> since 1.38.0; whether the update method
6436
- * <code>sap.ui.model.odata.UpdateMethod.MERGE</code> is used
6418
+ * <b>Deprecated as of version 1.38.0</b>, use the <code>defaultUpdateMethod</code> constructor parameter instead.
6419
+ * Whether the update method <code>sap.ui.model.odata.UpdateMethod.MERGE</code> is used
6437
6420
  * @returns {object}
6438
6421
  * An object which has an <code>abort</code> function
6439
6422
  * @throws {Error}
@@ -7342,7 +7325,7 @@ sap.ui.define([
7342
7325
  * @param {object} mParameters
7343
7326
  * A map of the following parameters:
7344
7327
  * @param {string} [mParameters.batchGroupId]
7345
- * Deprecated - use <code>groupId</code> instead
7328
+ * <b>Deprecated as of version 1.31.0</b>, use <code>groupId</code> instead
7346
7329
  * @param {string} [mParameters.changeSetId]
7347
7330
  * The ID of the <code>ChangeSet</code> that this request should belong to
7348
7331
  * @param {sap.ui.model.Context} [mParameters.context]
@@ -28,6 +28,8 @@ sap.ui.define([
28
28
  CountMode, ODataUtils, OperationMode) {
29
29
  "use strict";
30
30
 
31
+ const sClassName = "sap.ui.model.odata.v2.ODataTreeBinding";
32
+
31
33
  /**
32
34
  * Do <strong>NOT</strong> call this private constructor, but rather use
33
35
  * {@link sap.ui.model.odata.v2.ODataModel#bindTree} instead!
@@ -75,10 +77,10 @@ sap.ui.define([
75
77
  * the threshold that defines how many entries should be fetched at least by the binding if
76
78
  * <code>operationMode</code> is set to <code>Auto</code>
77
79
  * @param {boolean} [mParameters.useServersideApplicationFilters]
78
- * Deprecated since 1.102.0, as {@link sap.ui.model.odata.OperationMode.Auto} is deprecated;
79
- * whether <code>$filter</code> statements should be used for the <code>$count</code> /
80
+ * Whether <code>$filter</code> statements should be used for the <code>$count</code> /
80
81
  * <code>$inlinecount</code> requests and for the data request if the operation mode is
81
- * {@link sap.ui.model.odata.OperationMode.Auto OperationMode.Auto}
82
+ * {@link sap.ui.model.odata.OperationMode.Auto OperationMode.Auto} or
83
+ * {@link sap.ui.model.odata.OperationMode.Client OperationMode.Client}
82
84
  * @param {any} [mParameters.treeState]
83
85
  * A tree state handle
84
86
  * @param {sap.ui.model.odata.CountMode} [mParameters.countMode]
@@ -86,9 +88,9 @@ sap.ui.define([
86
88
  * @param {boolean} [mParameters.usePreliminaryContext]
87
89
  * Whether a preliminary context is used
88
90
  * @param {string} [mParameters.batchGroupId]
89
- * <b>Deprecated</b>, use <code>groupId</code> instead
91
+ * <b>Deprecated as of version 1.31.0</b>, use <code>groupId</code> instead
90
92
  * @param {object} [mParameters.navigation]
91
- * <b>Deprecated since 1.44:</b> A map describing the navigation properties between entity
93
+ * <b>Deprecated as of version 1.44</b>. A map describing the navigation properties between entity
92
94
  * sets, which is used for constructing and paging the tree
93
95
  * @param {sap.ui.model.Sorter[]|sap.ui.model.Sorter} [vSorters=[]]
94
96
  * The sorters used initially; call {@link #sort} to replace them
@@ -103,7 +105,7 @@ sap.ui.define([
103
105
  * @extends sap.ui.model.TreeBinding
104
106
  * @hideconstructor
105
107
  * @public
106
- * @version 1.138.0
108
+ * @version 1.140.0
107
109
  */
108
110
  var ODataTreeBinding = TreeBinding.extend("sap.ui.model.odata.v2.ODataTreeBinding", /** @lends sap.ui.model.odata.v2.ODataTreeBinding.prototype */ {
109
111
 
@@ -130,17 +132,6 @@ sap.ui.define([
130
132
 
131
133
  this.mNormalizeCache = {};
132
134
 
133
- vFilters = vFilters || [];
134
- // The ODataTreeBinding expects there to be only an array in this.aApplicationFilters later on.
135
- // Wrap the given application filters inside an array if necessary
136
- if (vFilters instanceof Filter) {
137
- vFilters = [vFilters];
138
- }
139
- if (vFilters.length > 1) {
140
- vFilters = [FilterProcessor.groupFilters(vFilters)];
141
- }
142
- this.aApplicationFilters = vFilters;
143
-
144
135
  // check filter integrity
145
136
  this.oModel.checkFilter(this.aApplicationFilters);
146
137
 
@@ -1407,11 +1398,7 @@ sap.ui.define([
1407
1398
  delete that.mRequestHandles[sRequestKey];
1408
1399
  that.bNeedsUpdate = true;
1409
1400
 
1410
- // apply clientside filters, if any
1411
- if ((that.aApplicationFilters && that.aApplicationFilters.length > 0) ||
1412
- (that.aFilters && that.aFilters.length > 0)) {
1413
- that._applyFilter();
1414
- }
1401
+ that._applyFilter();
1415
1402
 
1416
1403
  // apply clientside sorters
1417
1404
  if (that.aSorters && that.aSorters.length > 0) {
@@ -1674,14 +1661,6 @@ sap.ui.define([
1674
1661
  // check filter integrity
1675
1662
  this.oModel.checkFilter(aFilters);
1676
1663
 
1677
- // check if filtering is supported for the current binding configuration
1678
- if (sFilterType == FilterType.Control && (!this.bClientOperation || this.sOperationMode == OperationMode.Server)) {
1679
- Log.warning("Filtering with ControlFilters is ONLY possible if the ODataTreeBinding is running in OperationMode.Client or " +
1680
- "OperationMode.Auto, in case the given threshold is lower than the total number of tree nodes.");
1681
-
1682
- return this;
1683
- }
1684
-
1685
1664
  // empty filters
1686
1665
  if (!aFilters) {
1687
1666
  aFilters = [];
@@ -1701,13 +1680,11 @@ sap.ui.define([
1701
1680
  this.aApplicationFilters = aFilters;
1702
1681
  }
1703
1682
 
1704
- if (!this.bInitial) {
1705
-
1706
- // in client/auto mode: Always apply control filter.
1707
- // Clientside Application filters are only applied if "bUseServersideApplicationFilters" is set to false (default), otherwise
1708
- // the application filters will be applied on the backend.
1709
- if (this.bClientOperation && (sFilterType === FilterType.Control || (sFilterType === FilterType.Application && !this.bUseServersideApplicationFilters))) {
1683
+ this._checkFilterForTreeProperties();
1710
1684
 
1685
+ if (!this.bInitial) {
1686
+ if (this.bClientOperation
1687
+ && (sFilterType === FilterType.Control || !this.bUseServersideApplicationFilters)) {
1711
1688
  if (this.oAllKeys) {
1712
1689
  this.oKeys = deepExtend({}, this.oAllKeys);
1713
1690
  this.oLengths = deepExtend({}, this.oAllLengths);
@@ -1742,13 +1719,12 @@ sap.ui.define([
1742
1719
  */
1743
1720
  ODataTreeBinding.prototype._applyFilter = function () {
1744
1721
  var that = this;
1745
- var oCombinedFilter;
1746
-
1747
- // if we do not use serverside application filters, we have to include them for the FilterProcessor
1748
- if (this.bUseServersideApplicationFilters) {
1749
- oCombinedFilter = FilterProcessor.groupFilters(this.aFilters);
1750
- } else {
1751
- oCombinedFilter = FilterProcessor.combineFilters(this.aFilters, this.aApplicationFilters);
1722
+ const aClientApplicationFilters = this.bUseServersideApplicationFilters
1723
+ ? undefined
1724
+ : this.aApplicationFilters;
1725
+ const oCombinedFilter = FilterProcessor.combineFilters(this.aFilters, aClientApplicationFilters);
1726
+ if (!oCombinedFilter) {
1727
+ return;
1752
1728
  }
1753
1729
 
1754
1730
  // filter function for recursive filtering,
@@ -1777,6 +1753,46 @@ sap.ui.define([
1777
1753
  }
1778
1754
  };
1779
1755
 
1756
+ /**
1757
+ * Returns the combination of the binding's application and control filters as a single multi-filter object.
1758
+ *
1759
+ * @returns {sap.ui.model.Filter|undefined} The combined filters as multi-filter or <code>undefined</code> if
1760
+ * the binding has neither application nor control filters.
1761
+ *
1762
+ * @private
1763
+ */
1764
+ ODataTreeBinding.prototype.getCombinedFilter = function () {
1765
+ return FilterProcessor.combineFilters(this.aFilters, this.aApplicationFilters);
1766
+ };
1767
+
1768
+ /**
1769
+ * Checks if the binding's application and control filters refer to one of the tree annotation properties and log
1770
+ * an error in this case.
1771
+ *
1772
+ * @private
1773
+ */
1774
+ ODataTreeBinding.prototype._checkFilterForTreeProperties = function () {
1775
+ if (!this.oTreeProperties) {
1776
+ return;
1777
+ }
1778
+
1779
+ const aTreePropertyPaths = Object.values(this.oTreeProperties);
1780
+ const checkSingleFilter = (oFilter) => {
1781
+ if (oFilter.aFilters?.length) { // multi-filter
1782
+ oFilter.aFilters.forEach((oMultiFilterPart) => {
1783
+ checkSingleFilter(oMultiFilterPart);
1784
+ });
1785
+ } else if (aTreePropertyPaths.includes(oFilter.sPath)) {
1786
+ Log.error("Filter for tree annotation property '" + oFilter.sPath + "' is not allowed", undefined,
1787
+ sClassName);
1788
+ }
1789
+ };
1790
+ const oCombinedFilter = this.getCombinedFilter();
1791
+ if (oCombinedFilter) {
1792
+ checkSingleFilter(oCombinedFilter);
1793
+ }
1794
+ };
1795
+
1780
1796
  /*
1781
1797
  * @private
1782
1798
  */
@@ -2169,6 +2185,7 @@ sap.ui.define([
2169
2185
  ODataTreeBinding.prototype._initialize = function (fnFireEvent) {
2170
2186
  this.bInitial = false;
2171
2187
  this.bHasTreeAnnotations = this._hasTreeAnnotations();
2188
+ this._checkFilterForTreeProperties();
2172
2189
  this.oEntityType = this._getEntityType();
2173
2190
  this._processSelectParameters();
2174
2191
  this._applyAdapter(fnFireEvent);
@@ -2562,24 +2579,27 @@ sap.ui.define([
2562
2579
  };
2563
2580
 
2564
2581
  /**
2565
- * Creates valid odata filter strings for the application filters, given in "this.aApplicationFilters".
2566
- * Also sets the created filter-string to "this.sFilterParams".
2567
- * @returns {string} the concatenated OData filters
2582
+ * Creates the OData filter string for the binding's application and control filters considering client mode and
2583
+ * bUseServersideApplicationFilters.
2584
+ *
2585
+ * @returns {string} the created OData filter string
2568
2586
  *
2569
2587
  * @private
2570
2588
  */
2571
2589
  ODataTreeBinding.prototype.getFilterParams = function() {
2572
- var oGroupedFilter;
2573
- if (this.aApplicationFilters) {
2574
- this.aApplicationFilters = Array.isArray(this.aApplicationFilters) ? this.aApplicationFilters : [this.aApplicationFilters];
2575
- if (this.aApplicationFilters.length > 0 && !this.sFilterParams) {
2576
- oGroupedFilter = FilterProcessor.groupFilters(this.aApplicationFilters);
2577
- this.sFilterParams = ODataUtils._createFilterParams(oGroupedFilter, this.oModel.oMetadata, this.oEntityType);
2578
- // Add a bracket around filter params, as they will be combined with tree specific filters
2579
- this.sFilterParams = this.sFilterParams ? "(" + this.sFilterParams + ")" : "";
2580
- }
2581
- } else {
2582
- this.sFilterParams = "";
2590
+ const aServerApplicationFilters = this.bUseServersideApplicationFilters
2591
+ ? this.aApplicationFilters
2592
+ : undefined;
2593
+ const oCombinedFilter = this.bClientOperation
2594
+ ? FilterProcessor.combineFilters(undefined, aServerApplicationFilters)
2595
+ : FilterProcessor.combineFilters(this.aFilters, this.aApplicationFilters);
2596
+
2597
+ this.sFilterParams = "";
2598
+ if (oCombinedFilter) {
2599
+ const sFilterParams = ODataUtils._createFilterParams(
2600
+ oCombinedFilter, this.oModel.oMetadata, this.oEntityType);
2601
+ // Add a bracket around filter params, as they will be combined with tree specific filters
2602
+ this.sFilterParams = sFilterParams && `(${sFilterParams})`;
2583
2603
  }
2584
2604
 
2585
2605
  return this.sFilterParams;
@@ -2596,9 +2616,11 @@ sap.ui.define([
2596
2616
  * @ui5-restricted sap.ui.table, sap.ui.export
2597
2617
  */
2598
2618
  ODataTreeBinding.prototype.getFilterInfo = function (bIncludeOrigin) {
2599
- return this.aApplicationFilters[0]
2600
- ? this.aApplicationFilters[0].getAST(bIncludeOrigin)
2601
- : null;
2619
+ const oCombinedFilter = this.getCombinedFilter();
2620
+ if (oCombinedFilter) {
2621
+ return oCombinedFilter.getAST(bIncludeOrigin);
2622
+ }
2623
+ return null;
2602
2624
  };
2603
2625
 
2604
2626
  /**
@@ -42,7 +42,7 @@ sap.ui.define([
42
42
  * @hideconstructor
43
43
  * @public
44
44
  * @since 1.39.0
45
- * @version 1.138.0
45
+ * @version 1.140.0
46
46
  */
47
47
  Context = BaseContext.extend("sap.ui.model.odata.v4.Context", {
48
48
  constructor : constructor
@@ -641,20 +641,24 @@ sap.ui.define([
641
641
  *
642
642
  * @param {boolean} bSelected
643
643
  * Whether this context is to be selected
644
- * @param {boolean} [bDoNotUpdateAnnotation]
645
- * Whether the client-side annotation "@$ui5.context.isSelected" should not be updated
644
+ * @param {boolean} [bSilent]
645
+ * Whether the client-side annotation "@$ui5.context.isSelected" should not be updated and
646
+ * the binding should not be informed via
647
+ * {@link sap.ui.model.odata.v4.ODataListBinding#onKeepAliveChanged}
646
648
  * @returns {boolean}
647
649
  * Whether the selection state of this context has changed
648
650
  *
649
651
  * @private
650
652
  * @see #setSelected
651
653
  */
652
- Context.prototype.doSetSelected = function (bSelected, bDoNotUpdateAnnotation) {
654
+ Context.prototype.doSetSelected = function (bSelected, bSilent) {
653
655
  if (this.bSelected === bSelected) {
654
656
  return false;
655
657
  }
656
658
  this.bSelected = bSelected;
657
- this.oBinding.onKeepAliveChanged(this); // selected contexts are effectively kept alive
659
+ if (!bSilent) {
660
+ this.oBinding.onKeepAliveChanged(this); // selected contexts are effectively kept alive
661
+ }
658
662
  const oHeaderContext = this.oBinding.getHeaderContext();
659
663
  if (oHeaderContext === this) {
660
664
  if (!bSelected) {
@@ -666,7 +670,7 @@ sap.ui.define([
666
670
  }
667
671
 
668
672
  // Note: data binding may cause #setSelected to be called redundantly!
669
- if (!bDoNotUpdateAnnotation) {
673
+ if (!bSilent) {
670
674
  this.withCache((oCache, sPath) => {
671
675
  if (this.oBinding) {
672
676
  oCache.setProperty("@$ui5.context.isSelected", bSelected, sPath);
@@ -1023,9 +1027,9 @@ sap.ui.define([
1023
1027
  /**
1024
1028
  * Returns the value for the given path relative to this context. The function allows access to
1025
1029
  * the complete data the context points to (if <code>sPath</code> is "") or any part thereof.
1026
- * The data is a JSON structure as described in <a href=
1027
- * "https://docs.oasis-open.org/odata/odata-json-format/v4.0/odata-json-format-v4.0.html"
1028
- * >"OData JSON Format Version 4.0"</a>.
1030
+ * The data is a JSON structure as described in
1031
+ * <a href="https://docs.oasis-open.org/odata/odata-json-format/v4.0/">
1032
+ * "OData JSON Format Version 4.0"</a>.
1029
1033
  * Note that the function clones the result. Modify values via
1030
1034
  * {@link sap.ui.model.odata.v4.ODataPropertyBinding#setValue}.
1031
1035
  *
@@ -1182,9 +1186,9 @@ sap.ui.define([
1182
1186
  /**
1183
1187
  * Returns the value for the given path. The function allows access to the complete data the
1184
1188
  * context points to (if <code>sPath</code> is "") or any part thereof. The data is a JSON
1185
- * structure as described in <a href=
1186
- * "https://docs.oasis-open.org/odata/odata-json-format/v4.0/odata-json-format-v4.0.html"
1187
- * >"OData JSON Format Version 4.0"</a>.
1189
+ * structure as described in
1190
+ * <a href="https://docs.oasis-open.org/odata/odata-json-format/v4.0/">
1191
+ * "OData JSON Format Version 4.0"</a>.
1188
1192
  * Note that the function returns the cache instance. Do not modify the result, use
1189
1193
  * {@link sap.ui.model.odata.v4.ODataPropertyBinding#setValue} instead.
1190
1194
  *
@@ -1699,9 +1703,9 @@ sap.ui.define([
1699
1703
  /**
1700
1704
  * Returns a promise on the value for the given path relative to this context. The function
1701
1705
  * allows access to the complete data the context points to (if <code>sPath</code> is "") or
1702
- * any part thereof. The data is a JSON structure as described in <a href=
1703
- * "https://docs.oasis-open.org/odata/odata-json-format/v4.0/odata-json-format-v4.0.html"
1704
- * >"OData JSON Format Version 4.0"</a>.
1706
+ * any part thereof. The data is a JSON structure as described in
1707
+ * <a href="https://docs.oasis-open.org/odata/odata-json-format/v4.0/">
1708
+ * "OData JSON Format Version 4.0"</a>.
1705
1709
  * Note that the function clones the result. Modify values via {@link #setProperty}.
1706
1710
  *
1707
1711
  * The header context of a list binding only delivers <code>$count</code> and
@@ -361,7 +361,7 @@ sap.ui.define([
361
361
  if (this.bRelative) { // quasi-absolute or relative binding
362
362
  // mCacheByResourcePath has to be reset if parameters are changing
363
363
  oCache = this.mCacheByResourcePath && this.mCacheByResourcePath[sResourcePath];
364
- iGeneration = oContext.getGeneration && oContext.getGeneration() || 0;
364
+ iGeneration = oContext.getGeneration?.() ?? 0;
365
365
  if (oCache && oCache.$generation >= iGeneration) {
366
366
  oCache.setActive(true);
367
367
  } else {
@@ -430,7 +430,7 @@ sap.ui.define([
430
430
  * @param {string} sResourcePath
431
431
  * The resource path, for example "EMPLOYEES"
432
432
  * @param {object} mQueryOptions
433
- * The query options
433
+ * A map of key-value pairs representing the query string (requires "copy on write"!)
434
434
  * @param {sap.ui.model.Context} [oContext]
435
435
  * The context instance to be used, must be <code>undefined</code> for absolute bindings
436
436
  * @param {string} [sDeepResourcePath=sResourcePath]
@@ -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.138.0
77
+ * @version 1.140.0
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
@@ -1683,9 +1683,9 @@ sap.ui.define([
1683
1683
  /**
1684
1684
  * Returns a promise on the value for the given path relative to this binding. The function
1685
1685
  * allows access to the complete data the binding points to (if <code>sPath</code> is "") or
1686
- * any part thereof. The data is a JSON structure as described in <a href=
1687
- * "https://docs.oasis-open.org/odata/odata-json-format/v4.0/odata-json-format-v4.0.html"
1688
- * >"OData JSON Format Version 4.0"</a>.
1686
+ * any part thereof. The data is a JSON structure as described in
1687
+ * <a href="https://docs.oasis-open.org/odata/odata-json-format/v4.0/">
1688
+ * "OData JSON Format Version 4.0"</a>.
1689
1689
  * Note that the function clones the result. Modify values via
1690
1690
  * {@link sap.ui.model.odata.v4.Context#setProperty}.
1691
1691
  *