@openui5/sap.ui.core 1.129.0 → 1.130.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (425) hide show
  1. package/THIRDPARTY.txt +1 -1
  2. package/package.json +1 -1
  3. package/src/jquery.sap.global.js +7 -7
  4. package/src/jquery.sap.properties.js +1 -1
  5. package/src/jquery.sap.resources.js +1 -1
  6. package/src/jquery.sap.script.js +1 -1
  7. package/src/jquery.sap.storage.js +3 -3
  8. package/src/jquery.sap.trace.js +18 -18
  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/future.js +10 -2
  13. package/src/sap/base/i18n/LanguageTag.js +1 -1
  14. package/src/sap/base/i18n/date/TimezoneUtils.js +1 -1
  15. package/src/sap/base/util/restricted/_CancelablePromise.js +1 -1
  16. package/src/sap/base/util/restricted/_castArray.js +1 -1
  17. package/src/sap/base/util/restricted/_compact.js +1 -1
  18. package/src/sap/base/util/restricted/_curry.js +1 -1
  19. package/src/sap/base/util/restricted/_debounce.js +1 -1
  20. package/src/sap/base/util/restricted/_difference.js +1 -1
  21. package/src/sap/base/util/restricted/_differenceBy.js +1 -1
  22. package/src/sap/base/util/restricted/_differenceWith.js +1 -1
  23. package/src/sap/base/util/restricted/_flatMap.js +1 -1
  24. package/src/sap/base/util/restricted/_flatMapDeep.js +1 -1
  25. package/src/sap/base/util/restricted/_flatMapDepth.js +1 -1
  26. package/src/sap/base/util/restricted/_flatten.js +1 -1
  27. package/src/sap/base/util/restricted/_flattenDeep.js +1 -1
  28. package/src/sap/base/util/restricted/_flattenDepth.js +1 -1
  29. package/src/sap/base/util/restricted/_intersection.js +1 -1
  30. package/src/sap/base/util/restricted/_intersectionBy.js +1 -1
  31. package/src/sap/base/util/restricted/_intersectionWith.js +1 -1
  32. package/src/sap/base/util/restricted/_isEqual.js +1 -1
  33. package/src/sap/base/util/restricted/_isEqualWith.js +1 -1
  34. package/src/sap/base/util/restricted/_isNil.js +1 -1
  35. package/src/sap/base/util/restricted/_max.js +1 -1
  36. package/src/sap/base/util/restricted/_merge.js +1 -1
  37. package/src/sap/base/util/restricted/_mergeWith.js +1 -1
  38. package/src/sap/base/util/restricted/_min.js +1 -1
  39. package/src/sap/base/util/restricted/_omit.js +1 -1
  40. package/src/sap/base/util/restricted/_pick.js +1 -1
  41. package/src/sap/base/util/restricted/_pickBy.js +1 -1
  42. package/src/sap/base/util/restricted/_throttle.js +1 -1
  43. package/src/sap/base/util/restricted/_toArray.js +1 -1
  44. package/src/sap/base/util/restricted/_union.js +1 -1
  45. package/src/sap/base/util/restricted/_unionBy.js +1 -1
  46. package/src/sap/base/util/restricted/_unionWith.js +1 -1
  47. package/src/sap/base/util/restricted/_uniq.js +1 -1
  48. package/src/sap/base/util/restricted/_uniqBy.js +1 -1
  49. package/src/sap/base/util/restricted/_uniqWith.js +1 -1
  50. package/src/sap/base/util/restricted/_without.js +1 -1
  51. package/src/sap/base/util/restricted/_xor.js +1 -1
  52. package/src/sap/base/util/restricted/_xorBy.js +1 -1
  53. package/src/sap/base/util/restricted/_xorWith.js +1 -1
  54. package/src/sap/base/util/restricted/_zipObject.js +1 -1
  55. package/src/sap/base/util/restricted/_zipObjectDeep.js +1 -1
  56. package/src/sap/ui/Device.js +3 -3
  57. package/src/sap/ui/Global.js +3 -3
  58. package/src/sap/ui/base/BindingParser.js +1 -3
  59. package/src/sap/ui/base/Event.js +1 -1
  60. package/src/sap/ui/base/EventProvider.js +1 -1
  61. package/src/sap/ui/base/Interface.js +1 -1
  62. package/src/sap/ui/base/ManagedObject.js +4 -9
  63. package/src/sap/ui/base/ManagedObjectMetadata.js +1 -1
  64. package/src/sap/ui/base/Metadata.js +1 -1
  65. package/src/sap/ui/base/Object.js +1 -1
  66. package/src/sap/ui/base/ObjectPool.js +1 -1
  67. package/src/sap/ui/core/.library +2 -2
  68. package/src/sap/ui/core/BusyIndicator.js +1 -1
  69. package/src/sap/ui/core/Component.js +32 -130
  70. package/src/sap/ui/core/ComponentContainer.js +2 -2
  71. package/src/sap/ui/core/ComponentHooks.js +174 -0
  72. package/src/sap/ui/core/ComponentMetadata.js +1 -1
  73. package/src/sap/ui/core/ComponentSupport.js +1 -1
  74. package/src/sap/ui/core/Configuration.js +1 -1
  75. package/src/sap/ui/core/Control.js +1 -1
  76. package/src/sap/ui/core/Core.js +2 -2
  77. package/src/sap/ui/core/CustomData.js +1 -1
  78. package/src/sap/ui/core/DeclarativeSupport.js +1 -1
  79. package/src/sap/ui/core/Element.js +6 -2
  80. package/src/sap/ui/core/ElementMetadata.js +1 -1
  81. package/src/sap/ui/core/EnabledPropagator.js +1 -1
  82. package/src/sap/ui/core/EventBus.js +1 -1
  83. package/src/sap/ui/core/Fragment.js +6 -5
  84. package/src/sap/ui/core/HTML.js +1 -1
  85. package/src/sap/ui/core/History.js +1 -1
  86. package/src/sap/ui/core/Icon.js +1 -1
  87. package/src/sap/ui/core/IndicationColorSupport.js +1 -1
  88. package/src/sap/ui/core/IntervalTrigger.js +1 -1
  89. package/src/sap/ui/core/InvisibleMessage.js +1 -1
  90. package/src/sap/ui/core/InvisibleRenderer.js +1 -1
  91. package/src/sap/ui/core/InvisibleText.js +1 -1
  92. package/src/sap/ui/core/Item.js +1 -1
  93. package/src/sap/ui/core/LabelEnablement.js +2 -15
  94. package/src/sap/ui/core/LayoutData.js +1 -1
  95. package/src/sap/ui/core/ListItem.js +1 -1
  96. package/src/sap/ui/core/LocalBusyIndicator.js +1 -1
  97. package/src/sap/ui/core/Locale.js +1 -1
  98. package/src/sap/ui/core/LocaleData.js +43 -37
  99. package/src/sap/ui/core/Manifest.js +2 -2
  100. package/src/sap/ui/core/Message.js +1 -1
  101. package/src/sap/ui/core/RenderManager.js +41 -32
  102. package/src/sap/ui/core/Renderer.js +1 -1
  103. package/src/sap/ui/core/ResizeHandler.js +1 -1
  104. package/src/sap/ui/core/ScrollBar.js +1 -1
  105. package/src/sap/ui/core/SeparatorItem.js +1 -1
  106. package/src/sap/ui/core/StaticArea.js +0 -1
  107. package/src/sap/ui/core/Title.js +1 -1
  108. package/src/sap/ui/core/TooltipBase.js +1 -1
  109. package/src/sap/ui/core/UIArea.js +1 -1
  110. package/src/sap/ui/core/UIComponent.js +3 -3
  111. package/src/sap/ui/core/UIComponentMetadata.js +1 -1
  112. package/src/sap/ui/core/ValueStateSupport.js +1 -1
  113. package/src/sap/ui/core/VariantLayoutData.js +1 -1
  114. package/src/sap/ui/core/XMLComposite.js +1 -1
  115. package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
  116. package/src/sap/ui/core/XMLTemplateProcessor.js +3 -3
  117. package/src/sap/ui/core/_IconRegistry.js +1 -1
  118. package/src/sap/ui/core/cldr/ar.json +5 -1
  119. package/src/sap/ui/core/cldr/ar_EG.json +5 -1
  120. package/src/sap/ui/core/cldr/ar_SA.json +5 -1
  121. package/src/sap/ui/core/cldr/bg.json +4 -0
  122. package/src/sap/ui/core/cldr/ca.json +4 -0
  123. package/src/sap/ui/core/cldr/cnr.json +4 -0
  124. package/src/sap/ui/core/cldr/cs.json +4 -0
  125. package/src/sap/ui/core/cldr/cy.json +4 -0
  126. package/src/sap/ui/core/cldr/da.json +4 -0
  127. package/src/sap/ui/core/cldr/de.json +4 -0
  128. package/src/sap/ui/core/cldr/de_AT.json +4 -0
  129. package/src/sap/ui/core/cldr/de_CH.json +4 -0
  130. package/src/sap/ui/core/cldr/el.json +4 -0
  131. package/src/sap/ui/core/cldr/el_CY.json +4 -0
  132. package/src/sap/ui/core/cldr/en.json +4 -0
  133. package/src/sap/ui/core/cldr/en_AU.json +4 -0
  134. package/src/sap/ui/core/cldr/en_GB.json +4 -0
  135. package/src/sap/ui/core/cldr/en_HK.json +5 -1
  136. package/src/sap/ui/core/cldr/en_IE.json +4 -0
  137. package/src/sap/ui/core/cldr/en_IN.json +5 -1
  138. package/src/sap/ui/core/cldr/en_NZ.json +4 -0
  139. package/src/sap/ui/core/cldr/en_PG.json +4 -0
  140. package/src/sap/ui/core/cldr/en_SG.json +5 -1
  141. package/src/sap/ui/core/cldr/en_ZA.json +4 -0
  142. package/src/sap/ui/core/cldr/es.json +4 -0
  143. package/src/sap/ui/core/cldr/es_AR.json +4 -0
  144. package/src/sap/ui/core/cldr/es_BO.json +4 -0
  145. package/src/sap/ui/core/cldr/es_CL.json +4 -0
  146. package/src/sap/ui/core/cldr/es_CO.json +4 -0
  147. package/src/sap/ui/core/cldr/es_MX.json +4 -0
  148. package/src/sap/ui/core/cldr/es_PE.json +4 -0
  149. package/src/sap/ui/core/cldr/es_UY.json +4 -0
  150. package/src/sap/ui/core/cldr/es_VE.json +4 -0
  151. package/src/sap/ui/core/cldr/et.json +4 -0
  152. package/src/sap/ui/core/cldr/fa.json +6 -3
  153. package/src/sap/ui/core/cldr/fi.json +4 -0
  154. package/src/sap/ui/core/cldr/fr.json +4 -0
  155. package/src/sap/ui/core/cldr/fr_BE.json +4 -0
  156. package/src/sap/ui/core/cldr/fr_CA.json +4 -0
  157. package/src/sap/ui/core/cldr/fr_CH.json +4 -0
  158. package/src/sap/ui/core/cldr/fr_LU.json +4 -0
  159. package/src/sap/ui/core/cldr/he.json +6 -3
  160. package/src/sap/ui/core/cldr/hi.json +5 -1
  161. package/src/sap/ui/core/cldr/hr.json +4 -0
  162. package/src/sap/ui/core/cldr/hu.json +4 -0
  163. package/src/sap/ui/core/cldr/id.json +5 -1
  164. package/src/sap/ui/core/cldr/it.json +4 -0
  165. package/src/sap/ui/core/cldr/it_CH.json +4 -0
  166. package/src/sap/ui/core/cldr/ja.json +5 -1
  167. package/src/sap/ui/core/cldr/kk.json +4 -0
  168. package/src/sap/ui/core/cldr/ko.json +5 -1
  169. package/src/sap/ui/core/cldr/lt.json +4 -0
  170. package/src/sap/ui/core/cldr/lv.json +4 -0
  171. package/src/sap/ui/core/cldr/mk.json +4 -0
  172. package/src/sap/ui/core/cldr/ms.json +5 -1
  173. package/src/sap/ui/core/cldr/nb.json +5 -2
  174. package/src/sap/ui/core/cldr/nl.json +4 -0
  175. package/src/sap/ui/core/cldr/nl_BE.json +4 -0
  176. package/src/sap/ui/core/cldr/pl.json +4 -0
  177. package/src/sap/ui/core/cldr/pt.json +4 -0
  178. package/src/sap/ui/core/cldr/pt_PT.json +4 -0
  179. package/src/sap/ui/core/cldr/ro.json +4 -0
  180. package/src/sap/ui/core/cldr/ru.json +4 -0
  181. package/src/sap/ui/core/cldr/ru_UA.json +4 -0
  182. package/src/sap/ui/core/cldr/sk.json +4 -0
  183. package/src/sap/ui/core/cldr/sl.json +4 -0
  184. package/src/sap/ui/core/cldr/sr.json +4 -0
  185. package/src/sap/ui/core/cldr/sr_Latn.json +6 -2
  186. package/src/sap/ui/core/cldr/sv.json +4 -0
  187. package/src/sap/ui/core/cldr/th.json +5 -1
  188. package/src/sap/ui/core/cldr/tr.json +5 -1
  189. package/src/sap/ui/core/cldr/uk.json +4 -0
  190. package/src/sap/ui/core/cldr/vi.json +4 -0
  191. package/src/sap/ui/core/cldr/zh_CN.json +5 -1
  192. package/src/sap/ui/core/cldr/zh_HK.json +6 -3
  193. package/src/sap/ui/core/cldr/zh_SG.json +6 -3
  194. package/src/sap/ui/core/cldr/zh_TW.json +5 -1
  195. package/src/sap/ui/core/date/UI5Date.js +1 -1
  196. package/src/sap/ui/core/delegate/ItemNavigation.js +1 -1
  197. package/src/sap/ui/core/delegate/ScrollEnablement.js +1 -1
  198. package/src/sap/ui/core/dnd/DragDropBase.js +1 -1
  199. package/src/sap/ui/core/dnd/DragDropInfo.js +1 -1
  200. package/src/sap/ui/core/dnd/DragInfo.js +1 -1
  201. package/src/sap/ui/core/dnd/DropInfo.js +1 -1
  202. package/src/sap/ui/core/fieldhelp/FieldHelp.js +5 -7
  203. package/src/sap/ui/core/fieldhelp/FieldHelpCustomData.js +88 -0
  204. package/src/sap/ui/core/fieldhelp/FieldHelpUtil.js +22 -26
  205. package/src/sap/ui/core/format/FormatUtils.js +1 -1
  206. package/src/sap/ui/core/format/NumberFormat.js +16 -27
  207. package/src/sap/ui/core/format/TimezoneUtil.js +1 -1
  208. package/src/sap/ui/core/getCompatibilityVersion.js +1 -1
  209. package/src/sap/ui/core/hyphenation/Hyphenation.js +1 -1
  210. package/src/sap/ui/core/library.js +5 -7
  211. package/src/sap/ui/core/library.support.js +10 -1
  212. package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
  213. package/src/sap/ui/core/message/Message.js +1 -1
  214. package/src/sap/ui/core/message/MessageManager.js +1 -1
  215. package/src/sap/ui/core/message/MessageParser.js +1 -1
  216. package/src/sap/ui/core/message/MessageProcessor.js +1 -1
  217. package/src/sap/ui/core/messagebundle.properties +6 -12
  218. package/src/sap/ui/core/messagebundle_ar.properties +3 -6
  219. package/src/sap/ui/core/messagebundle_bg.properties +3 -6
  220. package/src/sap/ui/core/messagebundle_ca.properties +3 -6
  221. package/src/sap/ui/core/messagebundle_cnr.properties +3 -6
  222. package/src/sap/ui/core/messagebundle_cs.properties +3 -6
  223. package/src/sap/ui/core/messagebundle_cy.properties +3 -6
  224. package/src/sap/ui/core/messagebundle_da.properties +3 -6
  225. package/src/sap/ui/core/messagebundle_de.properties +3 -6
  226. package/src/sap/ui/core/messagebundle_el.properties +3 -6
  227. package/src/sap/ui/core/messagebundle_en.properties +3 -6
  228. package/src/sap/ui/core/messagebundle_en_GB.properties +3 -6
  229. package/src/sap/ui/core/messagebundle_en_US_saprigi.properties +3 -6
  230. package/src/sap/ui/core/messagebundle_es.properties +3 -6
  231. package/src/sap/ui/core/messagebundle_es_MX.properties +3 -6
  232. package/src/sap/ui/core/messagebundle_et.properties +3 -6
  233. package/src/sap/ui/core/messagebundle_fi.properties +3 -6
  234. package/src/sap/ui/core/messagebundle_fr.properties +3 -6
  235. package/src/sap/ui/core/messagebundle_fr_CA.properties +3 -6
  236. package/src/sap/ui/core/messagebundle_hi.properties +3 -6
  237. package/src/sap/ui/core/messagebundle_hr.properties +3 -6
  238. package/src/sap/ui/core/messagebundle_hu.properties +3 -6
  239. package/src/sap/ui/core/messagebundle_id.properties +3 -6
  240. package/src/sap/ui/core/messagebundle_it.properties +53 -56
  241. package/src/sap/ui/core/messagebundle_iw.properties +3 -6
  242. package/src/sap/ui/core/messagebundle_ja.properties +3 -6
  243. package/src/sap/ui/core/messagebundle_kk.properties +3 -6
  244. package/src/sap/ui/core/messagebundle_ko.properties +3 -6
  245. package/src/sap/ui/core/messagebundle_lt.properties +3 -6
  246. package/src/sap/ui/core/messagebundle_lv.properties +3 -6
  247. package/src/sap/ui/core/messagebundle_mk.properties +3 -6
  248. package/src/sap/ui/core/messagebundle_ms.properties +3 -6
  249. package/src/sap/ui/core/messagebundle_nl.properties +3 -6
  250. package/src/sap/ui/core/messagebundle_no.properties +4 -7
  251. package/src/sap/ui/core/messagebundle_pl.properties +3 -6
  252. package/src/sap/ui/core/messagebundle_pt.properties +3 -6
  253. package/src/sap/ui/core/messagebundle_pt_PT.properties +3 -6
  254. package/src/sap/ui/core/messagebundle_ro.properties +3 -6
  255. package/src/sap/ui/core/messagebundle_ru.properties +3 -6
  256. package/src/sap/ui/core/messagebundle_sh.properties +3 -6
  257. package/src/sap/ui/core/messagebundle_sk.properties +3 -6
  258. package/src/sap/ui/core/messagebundle_sl.properties +3 -6
  259. package/src/sap/ui/core/messagebundle_sr.properties +3 -6
  260. package/src/sap/ui/core/messagebundle_sv.properties +3 -6
  261. package/src/sap/ui/core/messagebundle_th.properties +3 -6
  262. package/src/sap/ui/core/messagebundle_tr.properties +3 -6
  263. package/src/sap/ui/core/messagebundle_uk.properties +3 -6
  264. package/src/sap/ui/core/messagebundle_vi.properties +3 -6
  265. package/src/sap/ui/core/messagebundle_zh_CN.properties +3 -6
  266. package/src/sap/ui/core/messagebundle_zh_TW.properties +3 -6
  267. package/src/sap/ui/core/mvc/Controller.js +2 -2
  268. package/src/sap/ui/core/mvc/HTMLView.js +1 -1
  269. package/src/sap/ui/core/mvc/JSONView.js +1 -1
  270. package/src/sap/ui/core/mvc/JSView.js +1 -1
  271. package/src/sap/ui/core/mvc/TemplateView.js +1 -1
  272. package/src/sap/ui/core/mvc/View.js +3 -3
  273. package/src/sap/ui/core/mvc/XMLView.js +2 -2
  274. package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
  275. package/src/sap/ui/core/plugin/LessSupport.js +1 -1
  276. package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -1
  277. package/src/sap/ui/core/postmessage/Bus.js +1 -1
  278. package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
  279. package/src/sap/ui/core/routing/Route.js +4 -4
  280. package/src/sap/ui/core/routing/Router.js +5 -5
  281. package/src/sap/ui/core/routing/Targets.js +3 -3
  282. package/src/sap/ui/core/routing/async/Target.js +1 -1
  283. package/src/sap/ui/core/routing/async/Targets.js +2 -2
  284. package/src/sap/ui/core/rules/App.support.js +13 -2
  285. package/src/sap/ui/core/search/OpenSearchProvider.js +1 -1
  286. package/src/sap/ui/core/search/SearchProvider.js +1 -1
  287. package/src/sap/ui/core/service/Service.js +1 -1
  288. package/src/sap/ui/core/service/ServiceFactory.js +1 -1
  289. package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
  290. package/src/sap/ui/core/support/Plugin.js +1 -1
  291. package/src/sap/ui/core/support/Support.js +1 -1
  292. package/src/sap/ui/core/support/plugins/ControlTree.js +1 -1
  293. package/src/sap/ui/core/support/plugins/Interaction.js +1 -1
  294. package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
  295. package/src/sap/ui/core/support/plugins/Performance.js +1 -1
  296. package/src/sap/ui/core/support/plugins/Selector.js +1 -1
  297. package/src/sap/ui/core/support/plugins/TechInfo.js +1 -1
  298. package/src/sap/ui/core/support/plugins/Trace.js +1 -1
  299. package/src/sap/ui/core/support/plugins/ViewInfo.js +1 -1
  300. package/src/sap/ui/core/theming/Parameters.js +6 -6
  301. package/src/sap/ui/core/theming/ThemeHelper.js +16 -13
  302. package/src/sap/ui/core/theming/ThemeManager.js +1 -1
  303. package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
  304. package/src/sap/ui/core/tmpl/DOMElement.js +1 -1
  305. package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
  306. package/src/sap/ui/core/tmpl/Template.js +1 -1
  307. package/src/sap/ui/core/tmpl/TemplateControl.js +1 -1
  308. package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
  309. package/src/sap/ui/core/util/Export.js +1 -1
  310. package/src/sap/ui/core/util/ExportCell.js +1 -1
  311. package/src/sap/ui/core/util/ExportColumn.js +1 -1
  312. package/src/sap/ui/core/util/ExportRow.js +1 -1
  313. package/src/sap/ui/core/util/ExportType.js +1 -1
  314. package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
  315. package/src/sap/ui/core/util/File.js +1 -1
  316. package/src/sap/ui/core/util/LibraryInfo.js +1 -1
  317. package/src/sap/ui/core/util/MockServer.js +1 -1
  318. package/src/sap/ui/core/util/PasteHelper.js +1 -1
  319. package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
  320. package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
  321. package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
  322. package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
  323. package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
  324. package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
  325. package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
  326. package/src/sap/ui/core/webc/WebComponent.js +1 -1
  327. package/src/sap/ui/core/webc/WebComponentMetadata.js +1 -1
  328. package/src/sap/ui/core/ws/ReadyState.js +1 -1
  329. package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
  330. package/src/sap/ui/core/ws/WebSocket.js +1 -1
  331. package/src/sap/ui/debug/ControlTree.js +1 -1
  332. package/src/sap/ui/debug/DebugEnv.js +1 -1
  333. package/src/sap/ui/debug/PropertyList.js +1 -1
  334. package/src/sap/ui/dom/findTabbable.js +10 -1
  335. package/src/sap/ui/model/ClientModel.js +1 -1
  336. package/src/sap/ui/model/ClientTreeBinding.js +32 -19
  337. package/src/sap/ui/model/CompositeDataState.js +1 -1
  338. package/src/sap/ui/model/CompositeType.js +1 -1
  339. package/src/sap/ui/model/Context.js +0 -2
  340. package/src/sap/ui/model/DataState.js +1 -1
  341. package/src/sap/ui/model/ListBinding.js +19 -0
  342. package/src/sap/ui/model/MetaModel.js +1 -1
  343. package/src/sap/ui/model/Model.js +1 -1
  344. package/src/sap/ui/model/SelectionModel.js +1 -1
  345. package/src/sap/ui/model/SimpleType.js +1 -1
  346. package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
  347. package/src/sap/ui/model/TreeBinding.js +21 -17
  348. package/src/sap/ui/model/Type.js +1 -1
  349. package/src/sap/ui/model/analytics/AnalyticalBinding.js +4 -4
  350. package/src/sap/ui/model/json/JSONModel.js +12 -1
  351. package/src/sap/ui/model/message/MessageModel.js +1 -1
  352. package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
  353. package/src/sap/ui/model/odata/ODataMessageParser.js +1 -1
  354. package/src/sap/ui/model/odata/ODataMetaModel.js +1 -1
  355. package/src/sap/ui/model/odata/ODataMetadata.js +1 -1
  356. package/src/sap/ui/model/odata/ODataModel.js +1 -1
  357. package/src/sap/ui/model/odata/ODataTreeBindingFlat.js +106 -19
  358. package/src/sap/ui/model/odata/type/Boolean.js +1 -1
  359. package/src/sap/ui/model/odata/type/Byte.js +1 -1
  360. package/src/sap/ui/model/odata/type/Currency.js +1 -1
  361. package/src/sap/ui/model/odata/type/Date.js +1 -1
  362. package/src/sap/ui/model/odata/type/DateTime.js +1 -1
  363. package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
  364. package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
  365. package/src/sap/ui/model/odata/type/DateTimeWithTimezone.js +1 -1
  366. package/src/sap/ui/model/odata/type/Decimal.js +1 -1
  367. package/src/sap/ui/model/odata/type/Double.js +1 -1
  368. package/src/sap/ui/model/odata/type/Guid.js +1 -1
  369. package/src/sap/ui/model/odata/type/Int.js +1 -1
  370. package/src/sap/ui/model/odata/type/Int16.js +1 -1
  371. package/src/sap/ui/model/odata/type/Int32.js +1 -1
  372. package/src/sap/ui/model/odata/type/Int64.js +1 -1
  373. package/src/sap/ui/model/odata/type/ODataType.js +1 -1
  374. package/src/sap/ui/model/odata/type/Raw.js +1 -1
  375. package/src/sap/ui/model/odata/type/SByte.js +1 -1
  376. package/src/sap/ui/model/odata/type/Single.js +1 -1
  377. package/src/sap/ui/model/odata/type/Stream.js +1 -1
  378. package/src/sap/ui/model/odata/type/String.js +1 -1
  379. package/src/sap/ui/model/odata/type/Time.js +1 -1
  380. package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
  381. package/src/sap/ui/model/odata/type/Unit.js +1 -1
  382. package/src/sap/ui/model/odata/v2/Context.js +1 -1
  383. package/src/sap/ui/model/odata/v2/ODataAnnotations.js +1 -1
  384. package/src/sap/ui/model/odata/v2/ODataModel.js +33 -2
  385. package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +1 -1
  386. package/src/sap/ui/model/odata/v4/Context.js +62 -13
  387. package/src/sap/ui/model/odata/v4/ODataBinding.js +4 -0
  388. package/src/sap/ui/model/odata/v4/ODataContextBinding.js +1 -1
  389. package/src/sap/ui/model/odata/v4/ODataListBinding.js +58 -81
  390. package/src/sap/ui/model/odata/v4/ODataMetaModel.js +20 -10
  391. package/src/sap/ui/model/odata/v4/ODataModel.js +65 -11
  392. package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +1 -1
  393. package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +75 -8
  394. package/src/sap/ui/model/odata/v4/lib/_AggregationHelper.js +13 -4
  395. package/src/sap/ui/model/odata/v4/lib/_Cache.js +106 -10
  396. package/src/sap/ui/model/odata/v4/lib/_Helper.js +62 -4
  397. package/src/sap/ui/model/odata/v4/lib/_MetadataRequestor.js +49 -31
  398. package/src/sap/ui/model/odata/v4/lib/_Requestor.js +22 -28
  399. package/src/sap/ui/model/odata/v4/lib/_TreeState.js +51 -30
  400. package/src/sap/ui/model/resource/ResourceModel.js +1 -1
  401. package/src/sap/ui/model/type/Boolean.js +1 -1
  402. package/src/sap/ui/model/type/Currency.js +1 -1
  403. package/src/sap/ui/model/type/Date.js +3 -2
  404. package/src/sap/ui/model/type/DateInterval.js +3 -2
  405. package/src/sap/ui/model/type/DateTime.js +1 -1
  406. package/src/sap/ui/model/type/DateTimeInterval.js +1 -1
  407. package/src/sap/ui/model/type/FileSize.js +1 -1
  408. package/src/sap/ui/model/type/Float.js +1 -1
  409. package/src/sap/ui/model/type/Integer.js +1 -1
  410. package/src/sap/ui/model/type/String.js +1 -1
  411. package/src/sap/ui/model/type/Time.js +1 -1
  412. package/src/sap/ui/model/type/TimeInterval.js +1 -1
  413. package/src/sap/ui/model/type/Unit.js +1 -1
  414. package/src/sap/ui/model/xml/XMLModel.js +1 -1
  415. package/src/sap/ui/performance/trace/FESR.js +19 -10
  416. package/src/sap/ui/performance/trace/Interaction.js +45 -659
  417. package/src/sap/ui/performance/trace/_InteractionImpl.js +705 -0
  418. package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
  419. package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +1 -1
  420. package/src/sap/ui/test/TestUtils.js +6 -5
  421. package/src/sap/ui/test/generic/TestBase.js +1 -1
  422. package/src/sap/ui/test/gherkin/opa5TestHarness.js +6 -2
  423. package/src/sap/ui/util/Storage.js +1 -1
  424. package/src/sap/ui/util/_enforceNoReturnValue.js +1 -1
  425. package/src/ui5loader.js +1 -1
@@ -66,7 +66,7 @@ sap.ui.define([
66
66
  * @extends sap.ui.model.type.Unit
67
67
  * @public
68
68
  * @since 1.63.0
69
- * @version 1.129.0
69
+ * @version 1.130.1
70
70
  */
71
71
  var Unit = BaseUnit.extend("sap.ui.model.odata.type.Unit", {
72
72
  constructor : function (oFormatOptions, oConstraints, aDynamicFormatOptionNames) {
@@ -64,7 +64,7 @@ sap.ui.define([
64
64
  * @hideconstructor
65
65
  * @public
66
66
  * @since 1.93.0
67
- * @version 1.129.0
67
+ * @version 1.130.1
68
68
  */
69
69
  var Context = BaseContext.extend("sap.ui.model.odata.v2.Context", {
70
70
  constructor : function (oModel, sPath, sDeepPath, oCreatePromise, bInactive,
@@ -36,7 +36,7 @@ sap.ui.define([
36
36
  * @class Annotation loader for OData V2 services
37
37
  *
38
38
  * @author SAP SE
39
- * @version 1.129.0
39
+ * @version 1.130.1
40
40
  *
41
41
  * @public
42
42
  * @since 1.37.0
@@ -63,6 +63,11 @@ sap.ui.define([
63
63
  ) {
64
64
 
65
65
  "use strict";
66
+ /**
67
+ * Whether the ODataModel is marked as final.
68
+ * @ui5-transform-hint replace-local true
69
+ */
70
+ const bFinal = false;
66
71
 
67
72
  var sClassName = "sap.ui.model.odata.v2.ODataModel",
68
73
  aDeepCreateParametersAllowlist = ["context", "properties"],
@@ -213,7 +218,7 @@ sap.ui.define([
213
218
  * This model is not prepared to be inherited from.
214
219
  *
215
220
  * @author SAP SE
216
- * @version 1.129.0
221
+ * @version 1.130.1
217
222
  *
218
223
  * @public
219
224
  * @alias sap.ui.model.odata.v2.ODataModel
@@ -533,7 +538,8 @@ sap.ui.define([
533
538
  "setDefaultBindingMode", "getDefaultBindingMode", "getDefaultCountMode",
534
539
  "setProperty", "getSecurityToken", "refreshSecurityToken", "setHeaders",
535
540
  "getHeaders", "setUseBatch", "setDeferredBatchGroups", "getDeferredBatchGroups",
536
- "setChangeBatchGroups", "getChangeBatchGroups"]
541
+ "setChangeBatchGroups", "getChangeBatchGroups"],
542
+ "final": bFinal
537
543
  }
538
544
  });
539
545
 
@@ -1794,6 +1800,19 @@ sap.ui.define([
1794
1800
  });
1795
1801
  };
1796
1802
 
1803
+ /**
1804
+ * Returns this model's base URI of the data service (as defined by the "serviceUrl" model parameter; see
1805
+ * {@link #constructor}), without query options.
1806
+ *
1807
+ * @returns {string} The service's base URI without query options
1808
+ *
1809
+ * @public
1810
+ * @since 1.130.0
1811
+ */
1812
+ ODataModel.prototype.getServiceUrl = function () {
1813
+ return this.sServiceUrl;
1814
+ };
1815
+
1797
1816
  /**
1798
1817
  * Invalidate the model data.
1799
1818
  *
@@ -9063,6 +9082,18 @@ sap.ui.define([
9063
9082
 
9064
9083
  return this.pAnnotationChanges;
9065
9084
  };
9085
+ /** @deprecated */
9086
+ const fnOriginalExtend = ODataModel.extend;
9087
+ /**
9088
+ * DO NOT EXTEND THIS CLASS.
9089
+ *
9090
+ * @returns {function} The created class / constructor function
9091
+ * @deprecated
9092
+ */
9093
+ ODataModel.extend = function () {
9094
+ Log.error("[FUTURE FATAL] sap.ui.model.odata.v2.ODataModel must not be extended");
9095
+ return fnOriginalExtend.apply(this, arguments);
9096
+ };
9066
9097
 
9067
9098
  return ODataModel;
9068
9099
  });
@@ -103,7 +103,7 @@ sap.ui.define([
103
103
  * @extends sap.ui.model.TreeBinding
104
104
  * @hideconstructor
105
105
  * @public
106
- * @version 1.129.0
106
+ * @version 1.130.1
107
107
  */
108
108
  var ODataTreeBinding = TreeBinding.extend("sap.ui.model.odata.v2.ODataTreeBinding", /** @lends sap.ui.model.odata.v2.ODataTreeBinding.prototype */ {
109
109
 
@@ -42,7 +42,7 @@ sap.ui.define([
42
42
  * @hideconstructor
43
43
  * @public
44
44
  * @since 1.39.0
45
- * @version 1.129.0
45
+ * @version 1.130.1
46
46
  */
47
47
  Context = BaseContext.extend("sap.ui.model.odata.v4.Context", {
48
48
  constructor : constructor
@@ -238,8 +238,8 @@ sap.ui.define([
238
238
  *
239
239
  * Since 1.105 such a pending deletion is a pending change. It causes
240
240
  * <code>hasPendingChanges</code> to return <code>true</code> for the context, the binding
241
- * containing it, and the model. The <code>resetChanges</code> method called on the context
242
- * (since 1.109.0), the binding, or the model cancels the deletion and restores the context.
241
+ * containing it, and the model. The <code>resetChanges</code> method called on the context, the
242
+ * binding, or the model cancels the deletion and restores the context.
243
243
  *
244
244
  * If the DELETE request succeeds, the context is destroyed and must not be used anymore. If it
245
245
  * fails or is canceled, the context is restored, reinserted into the list, and fully functional
@@ -322,6 +322,9 @@ sap.ui.define([
322
322
  }
323
323
  this.oBinding.checkSuspended();
324
324
  if (this.isTransient()) {
325
+ if (this.iIndex === undefined) {
326
+ return Promise.resolve(); // already deleted, nothing to do
327
+ }
325
328
  sGroupId = null;
326
329
  } else if (sGroupId === null) {
327
330
  if (!(this.isKeepAlive() && this.iIndex === undefined)) {
@@ -651,6 +654,9 @@ sap.ui.define([
651
654
  * The number of levels to expand (@experimental as of version 1.127.0),
652
655
  * <code>iLevels >= Number.MAX_SAFE_INTEGER</code> can be used to expand all levels. If a node
653
656
  * is expanded a second time, the expand state of the descendants is not changed.
657
+ * @returns {Promise<void>}
658
+ * A promise which is resolved without a defined result when the expand is successful, or
659
+ * rejected in case of an error
654
660
  * @throws {Error}
655
661
  * If the context points to a node that is not expandable or already expanded, the given
656
662
  * number of levels is not a positive number, or the given number of levels is greater than
@@ -667,8 +673,7 @@ sap.ui.define([
667
673
  }
668
674
  switch (this.isExpanded()) {
669
675
  case false:
670
- this.oBinding.expand(this, iLevels).catch(this.oModel.getReporter());
671
- break;
676
+ return Promise.resolve(this.oBinding.expand(this, iLevels)).then(() => {});
672
677
  case true:
673
678
  throw new Error("Already expanded: " + this);
674
679
  default:
@@ -845,6 +850,46 @@ sap.ui.define([
845
850
  */
846
851
  Context.prototype.getCanonicalPath = _Helper.createGetMethod("fetchCanonicalPath", true);
847
852
 
853
+ /**
854
+ * Returns a filter object corresponding to this context. For an ordinary row context of a list
855
+ * binding, the filter matches exactly the entity's key properties. For a subtotal row (see
856
+ * {@link sap.ui.model.odata.v4.ODataListBinding.setAggregation}), the filter matches exactly
857
+ * the groupable properties corresponding to this context. For a grand total, <code>null</code>
858
+ * is returned.
859
+ *
860
+ * @returns {sap.ui.model.Filter|null}
861
+ * A filter object corresponding to this context
862
+ * @throws {Error} If this context is
863
+ * <ul>
864
+ * <li> not a list binding's row context,
865
+ * <li> currently transient,
866
+ * <li> using key aliases,
867
+ * <li> using an index, not a key predicate in the last segment of its path,
868
+ * <li> just created via {@link sap.ui.model.odata.v4.ODataModel#getKeepAliveContext} and
869
+ * metadata is not yet available
870
+ * </ul>
871
+ *
872
+ * @public
873
+ * @since 1.130.0
874
+ */
875
+ Context.prototype.getFilter = function () {
876
+ if (!this.oBinding.getHeaderContext || this.isTransient()) {
877
+ throw new Error("Not a list context path to an entity: " + this);
878
+ }
879
+
880
+ const iPredicateIndex = _Helper.getPredicateIndex(this.sPath);
881
+ const sPredicate = this.sPath.slice(iPredicateIndex).replace(/,?\$isTotal=true\)$/, ")");
882
+ if (sPredicate === "()") {
883
+ return null; // grand total
884
+ }
885
+
886
+ const oMetaModel = this.oModel.getMetaModel();
887
+ const sMetaPath = _Helper.getMetaPath(this.sPath);
888
+ const oEntityType = oMetaModel.getObject(sMetaPath + "/");
889
+
890
+ return _Helper.getFilterForPredicate(sPredicate, oEntityType, oMetaModel, sMetaPath, true);
891
+ };
892
+
848
893
  /**
849
894
  * Returns the unique number of this context's generation, or <code>0</code> if it does not
850
895
  * belong to any specific generation. This number can be inherited from a parent binding.
@@ -1295,15 +1340,15 @@ sap.ui.define([
1295
1340
 
1296
1341
  /**
1297
1342
  * Tells whether this context is currently selected, but not {@link #delete deleted} on the
1298
- * client. Since 1.122.0 the selection state can also be accessed via instance annotation
1299
- * "@$ui5.context.isSelected" at the entity. Note that the annotation does not take the deletion
1300
- * state into account.
1343
+ * client. Selection was experimental as of version 1.111.0. Since 1.122.0, the selection state
1344
+ * can also be accessed via instance annotation "@$ui5.context.isSelected" at the entity. Note
1345
+ * that the annotation does not take the deletion state into account.
1301
1346
  *
1302
1347
  * @returns {boolean} Whether this context is currently selected
1303
1348
  *
1304
- * @experimental As of version 1.111.0
1305
1349
  * @public
1306
1350
  * @see #setSelected
1351
+ * @since 1.130.0
1307
1352
  */
1308
1353
  Context.prototype.isSelected = function () {
1309
1354
  return this.bSelected && !this.oDeletePromise;
@@ -2346,9 +2391,11 @@ sap.ui.define([
2346
2391
  * event is fired on the list binding which this context belongs to. While a context is
2347
2392
  * currently {@link #delete deleted} on the client, it does not appear as
2348
2393
  * {@link #isSelected selected}. If the preconditions of {@link #setKeepAlive} hold, a best
2349
- * effort is made to implicitly keep a selected context alive in order to preserve the selection
2350
- * state. Once the selection is no longer needed, for example because you perform an operation
2351
- * on this context which logically removes it from its list, you need to reset the selection.
2394
+ * effort is made to implicitly keep a (de-)selected context alive in order to preserve the
2395
+ * selection state of every exception to the "select all" state defined by the list binding's
2396
+ * {@link sap.ui.model.odata.v4.ODataListBinding#getHeaderContext header context}. Once the
2397
+ * selection is no longer needed, for example because you perform an operation on this context
2398
+ * which logically removes it from its list, you need to reset the selection.
2352
2399
  *
2353
2400
  * If this context is a header context of a list binding, the new selection state is propagated
2354
2401
  * to all row contexts. If the selection state of this header context changes, a
@@ -2360,6 +2407,8 @@ sap.ui.define([
2360
2407
  * {@link sap.ui.model.odata.v4.ODataListBinding#event:selectionChanged 'selectionChanged'}
2361
2408
  * event is nevertheless fired for this header context, but not for the row context.
2362
2409
  *
2410
+ * Selection was experimental as of version 1.111.0.
2411
+ *
2363
2412
  * <b>Note:</b> It is unsafe to keep a reference to a context instance which is not
2364
2413
  * {@link #isKeepAlive kept alive}.
2365
2414
  *
@@ -2368,9 +2417,9 @@ sap.ui.define([
2368
2417
  * If this context does not belong to a list binding, or if it is {@link #isDeleted deleted}
2369
2418
  * and <code>bSelected</code> is <code>true</code>
2370
2419
  *
2371
- * @experimental As of version 1.111.0
2372
2420
  * @public
2373
2421
  * @see #isSelected
2422
+ * @since 1.130.0
2374
2423
  */
2375
2424
  Context.prototype.setSelected = function (bSelected) {
2376
2425
  if (this.oBinding && !this.oBinding.getHeaderContext) {
@@ -1345,6 +1345,10 @@ sap.ui.define([
1345
1345
  var aPaths = [],
1346
1346
  sMetaPath = _Helper.getMetaPath(this.getResolvedPath());
1347
1347
 
1348
+ if (this.oCache === undefined) {
1349
+ return undefined; // nothing to do - looks like a refresh in progress
1350
+ }
1351
+
1348
1352
  aAbsolutePaths.some(function (sAbsolutePath) {
1349
1353
  var sRelativePath = _Helper.getRelativePath(sAbsolutePath, sMetaPath);
1350
1354
 
@@ -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.129.0
77
+ * @version 1.130.1
78
78
  *
79
79
  * @borrows sap.ui.model.odata.v4.ODataBinding#getGroupId as #getGroupId
80
80
  * @borrows sap.ui.model.odata.v4.ODataBinding#getRootBinding as #getRootBinding
@@ -13,7 +13,6 @@ sap.ui.define([
13
13
  "./lib/_Cache",
14
14
  "./lib/_GroupLock",
15
15
  "./lib/_Helper",
16
- "./lib/_Parser",
17
16
  "sap/base/Log",
18
17
  "sap/ui/base/SyncPromise",
19
18
  "sap/ui/model/Binding",
@@ -26,8 +25,8 @@ sap.ui.define([
26
25
  "sap/ui/model/Sorter",
27
26
  "sap/ui/model/odata/OperationMode"
28
27
  ], function (Context, asODataParentBinding, _AggregationCache, _AggregationHelper, _Cache,
29
- _GroupLock, _Helper, _Parser, Log, SyncPromise, Binding, ChangeReason, Filter,
30
- FilterOperator, FilterProcessor, FilterType, ListBinding, Sorter, OperationMode) {
28
+ _GroupLock, _Helper, Log, SyncPromise, Binding, ChangeReason, Filter, FilterOperator,
29
+ FilterProcessor, FilterType, ListBinding, Sorter, OperationMode) {
31
30
  "use strict";
32
31
 
33
32
  var sClassName = "sap.ui.model.odata.v4.ODataListBinding",
@@ -58,7 +57,7 @@ sap.ui.define([
58
57
  * @mixes sap.ui.model.odata.v4.ODataParentBinding
59
58
  * @public
60
59
  * @since 1.37.0
61
- * @version 1.129.0
60
+ * @version 1.130.1
62
61
  * @borrows sap.ui.model.odata.v4.ODataBinding#getGroupId as #getGroupId
63
62
  * @borrows sap.ui.model.odata.v4.ODataBinding#getRootBinding as #getRootBinding
64
63
  * @borrows sap.ui.model.odata.v4.ODataBinding#getUpdateGroupId as #getUpdateGroupId
@@ -551,7 +550,8 @@ sap.ui.define([
551
550
 
552
551
  /**
553
552
  * The 'selectionChanged' event is fired if the selection state of a context changes; for more
554
- * information see {@link sap.ui.model.odata.v4.Context#setSelected}.
553
+ * information see {@link sap.ui.model.odata.v4.Context#setSelected}. This event was
554
+ * experimental as of version 1.126.0.
555
555
  *
556
556
  * @param {sap.ui.base.Event} oEvent The event object
557
557
  * @param {sap.ui.model.odata.v4.ODataListBinding} oEvent.getSource() This binding
@@ -561,8 +561,8 @@ sap.ui.define([
561
561
  * The context for which {@link sap.ui.model.odata.v4.Context#setSelected} was called
562
562
  *
563
563
  * @event sap.ui.model.odata.v4.ODataListBinding#selectionChanged
564
- * @experimental As of version 1.126.0
565
564
  * @public
565
+ * @since 1.130.0
566
566
  */
567
567
 
568
568
  /**
@@ -706,7 +706,7 @@ sap.ui.define([
706
706
 
707
707
  iCount ??= this.oCache.collapse(
708
708
  _Helper.getRelativePath(oContext.getPath(), this.oHeaderContext.getPath()),
709
- bAll);
709
+ bAll ? this.lockGroup() : undefined);
710
710
 
711
711
  if (iCount > 0) {
712
712
  const aContexts = this.aContexts;
@@ -812,13 +812,12 @@ sap.ui.define([
812
812
  * {@link sap.ui.model.odata.v4.Context#move move} must be pending, and no other modification
813
813
  * (including collapse of some ancestor node) must happen while this creation is pending!
814
814
  *
815
- * When using the <code>createInPlace</code> parameter
816
- * (see {@link #setAggregation}, @experimental as of version 1.125.0), the new
817
- * {@link sap.ui.model.odata.v4.Context#isTransient transient} child is hidden until its
818
- * {@link sap.ui.model.odata.v4.Context#created created promise} resolves, and then it is shown
819
- * at a position determined by the back end and the current sort order. Note that the returned
820
- * context is not always part of this list binding's collection and can only be used for the
821
- * following scenarios:
815
+ * When using the <code>createInPlace</code> parameter (see {@link #setAggregation},
816
+ * since 1.130.0), the new {@link sap.ui.model.odata.v4.Context#isTransient transient} child is
817
+ * hidden until its {@link sap.ui.model.odata.v4.Context#created created promise} resolves, and
818
+ * then it is shown at a position determined by the back end and the current sort order. Note
819
+ * that the returned context is not always part of this list binding's collection and can only
820
+ * be used for the following scenarios:
822
821
  * <ul>
823
822
  * <li> The position of the new child can be retrieved by using its
824
823
  * {@link sap.ui.model.odata.v4.Context#getIndex index}. If the created child does not
@@ -1511,8 +1510,8 @@ sap.ui.define([
1511
1510
  }
1512
1511
  oCache ??= _AggregationCache.create(this.oModel.oRequestor, sResourcePath,
1513
1512
  sDeepResourcePath, mQueryOptions, this.mParameters.$$aggregation,
1514
- this.oModel.bAutoExpandSelect, this.bSharedRequest, this.isGrouped(),
1515
- this.mParameters.$$separate);
1513
+ this.oModel.bAutoExpandSelect || "$$separate" in this.mParameters,
1514
+ this.bSharedRequest, this.isGrouped(), this.mParameters.$$separate);
1516
1515
  if (mKeptElementsByPredicate) {
1517
1516
  aKeepAlivePredicates.forEach(function (sPredicate) {
1518
1517
  oCache.addKeptElement(mKeptElementsByPredicate[sPredicate]);
@@ -1865,7 +1864,8 @@ sap.ui.define([
1865
1864
  * @private
1866
1865
  */
1867
1866
  ODataListBinding.prototype.fetchFilter = function (oContext, sStaticFilter) {
1868
- var oCombinedFilter, aFilters, oMetaModel, oMetaContext;
1867
+ const oMetaModel = this.oModel.getMetaModel();
1868
+ const oMetaContext = oMetaModel.getMetaContext(this.oModel.resolve(this.sPath, oContext));
1869
1869
 
1870
1870
  /*
1871
1871
  * Returns the $filter value for the given single filter using the given Edm type to
@@ -2009,26 +2009,32 @@ sap.ui.define([
2009
2009
  return bWrap ? "(" + sFilter + ")" : sFilter;
2010
2010
  }
2011
2011
 
2012
- oCombinedFilter = FilterProcessor.combineFilters(this.aFilters, this.aApplicationFilters);
2012
+ const oCombinedFilter
2013
+ = FilterProcessor.combineFilters(this.aFilters, this.aApplicationFilters);
2013
2014
  if (!oCombinedFilter) {
2014
2015
  return SyncPromise.resolve([sStaticFilter]);
2015
2016
  }
2016
2017
  if (oCombinedFilter === Filter.NONE) {
2017
2018
  return SyncPromise.resolve(["false"]);
2018
2019
  }
2019
- aFilters = _AggregationHelper.splitFilter(oCombinedFilter, this.mParameters.$$aggregation);
2020
- oMetaModel = this.oModel.getMetaModel();
2021
- oMetaContext = oMetaModel.getMetaContext(this.oModel.resolve(this.sPath, oContext));
2022
-
2023
- return SyncPromise.all([
2024
- fetchFilter(aFilters[0], {}, /*bWithinAnd*/sStaticFilter).then(function (sFilter) {
2025
- return sFilter && sStaticFilter
2026
- ? sFilter + " and (" + sStaticFilter + ")"
2027
- : sFilter || sStaticFilter;
2028
- }),
2029
- fetchFilter(aFilters[1], {}), // $$filterBeforeAggregate
2030
- fetchFilter(aFilters[2], {}, undefined, /*bThese*/true) // $$filterOnAggregate
2031
- ]);
2020
+
2021
+ const oPromise = _Helper.isDataAggregation(this.mParameters)
2022
+ ? oMetaModel.fetchObject(oMetaContext.getPath() + "/")
2023
+ : SyncPromise.resolve();
2024
+
2025
+ return oPromise.then((oEntityType) => {
2026
+ const aFilters = _AggregationHelper.splitFilter(oCombinedFilter,
2027
+ this.mParameters.$$aggregation, oEntityType);
2028
+
2029
+ return SyncPromise.all([
2030
+ fetchFilter(aFilters[0], {}, /*bWithinAnd*/sStaticFilter)
2031
+ .then((sFilter) => (sFilter && sStaticFilter
2032
+ ? sFilter + " and (" + sStaticFilter + ")"
2033
+ : sFilter || sStaticFilter)),
2034
+ fetchFilter(aFilters[1], {}), // $$filterBeforeAggregate
2035
+ fetchFilter(aFilters[2], {}, undefined, /*bThese*/true) // $$filterOnAggregate
2036
+ ]);
2037
+ });
2032
2038
  };
2033
2039
 
2034
2040
  /**
@@ -2532,7 +2538,10 @@ sap.ui.define([
2532
2538
  * Whether this call keeps the result of {@link #getCurrentContexts} untouched; since 1.86.0.
2533
2539
  * @returns {sap.ui.model.odata.v4.Context[]}
2534
2540
  * The array of already created contexts with the first entry containing the context for
2535
- * <code>iStart</code>
2541
+ * <code>iStart</code>. Since 1.130.0, the array has an additional property
2542
+ * <code>bExpectMore</code>, which is <code>true</code> if the response is not complete, a
2543
+ * {@link #event:change 'change'} event will follow, and a busy indicator should be switched
2544
+ * on.
2536
2545
  * @throws {Error}
2537
2546
  * If the binding's root binding is suspended, if <code>iMaximumPrefetchSize</code> and
2538
2547
  * <code>bKeepCurrent</code> are set, if extended change detection is enabled and
@@ -2548,8 +2557,8 @@ sap.ui.define([
2548
2557
  bKeepCurrent) {
2549
2558
  var sChangeReason,
2550
2559
  aContexts,
2551
- bDataRequested = false,
2552
2560
  bFireChange = false,
2561
+ bFireDataReceived,
2553
2562
  bPreventBubbling,
2554
2563
  oPromise,
2555
2564
  bRefreshEvent = !!this.sChangeReason, // ignored for "*VirtualContext"
@@ -2641,8 +2650,10 @@ sap.ui.define([
2641
2650
  // make sure "refresh" is followed by async "change"
2642
2651
  oPromise = this.fetchContexts(iStart, iLength, iMaximumPrefetchSize, undefined,
2643
2652
  /*bAsync*/bRefreshEvent, function () {
2644
- bDataRequested = true;
2645
- that.fireDataRequested(bPreventBubbling);
2653
+ if (bFireDataReceived === undefined) {
2654
+ bFireDataReceived = true;
2655
+ that.fireDataRequested(bPreventBubbling);
2656
+ }
2646
2657
  });
2647
2658
  if (!bRefreshEvent && oPromise.isPending()) {
2648
2659
  this.createContextsForCachedData(iStart, iLength);
@@ -2661,12 +2672,13 @@ sap.ui.define([
2661
2672
  that.oDiff = undefined;
2662
2673
  }
2663
2674
  }
2664
- if (bDataRequested) {
2675
+ if (bFireDataReceived) {
2665
2676
  that.fireDataReceived({data : {}}, bPreventBubbling);
2666
2677
  }
2678
+ bFireDataReceived = false; // no subsequent #fireDataRequested allowed
2667
2679
  }, function (oError) {
2668
2680
  // cache shares promises for concurrent read
2669
- if (bDataRequested) {
2681
+ if (bFireDataReceived) {
2670
2682
  that.fireDataReceived(oError.canceled ? {data : {}} : {error : oError},
2671
2683
  bPreventBubbling);
2672
2684
  }
@@ -2685,6 +2697,7 @@ sap.ui.define([
2685
2697
  this.iCurrentEnd = iStart + iLength;
2686
2698
  }
2687
2699
  aContexts = this.getContextsInViewOrder(iStart, iLength);
2700
+ aContexts.bExpectMore = this._isExpectingMoreContexts(aContexts, iStart, iLength);
2688
2701
  if (this.bUseExtendedChangeDetection) {
2689
2702
  if (this.oDiff && iLength !== this.oDiff.iLength) {
2690
2703
  throw new Error("Extended change detection protocol violation: Expected "
@@ -4074,6 +4087,7 @@ sap.ui.define([
4074
4087
  }
4075
4088
  }
4076
4089
  this.aContexts.splice(iIndex, 1);
4090
+ oContext.iIndex = undefined;
4077
4091
  if (!oContext.isEffectivelyKeptAlive()) {
4078
4092
  this.destroyLater(oContext);
4079
4093
  }
@@ -4224,8 +4238,8 @@ sap.ui.define([
4224
4238
  });
4225
4239
 
4226
4240
  aFilters = Object.keys(mPredicates).map(function (sPredicate) {
4227
- return ODataListBinding.getFilterForPredicate(sPredicate, oEntityType,
4228
- oMetaModel, sMetaPath);
4241
+ return _Helper
4242
+ .getFilterForPredicate(sPredicate, oEntityType, oMetaModel, sMetaPath);
4229
4243
  });
4230
4244
 
4231
4245
  if (aFilters.length === 0) {
@@ -4305,6 +4319,9 @@ sap.ui.define([
4305
4319
  }
4306
4320
  }
4307
4321
  if (bSingle) {
4322
+ this.oModel.withUnresolvedBindings("removeCachesAndMessages",
4323
+ oContext.getPath().slice(1));
4324
+
4308
4325
  return this.refreshSingle(oContext, this.lockGroup(sGroupId), /*bAllowRemoval*/false,
4309
4326
  /*bKeepCacheOnError*/true, /*bWithMessages*/true);
4310
4327
  }
@@ -4539,7 +4556,7 @@ sap.ui.define([
4539
4556
  * </ul>
4540
4557
  * @param {boolean} [oAggregation.createInPlace]
4541
4558
  * Whether created nodes are shown in place at the position specified by the service
4542
- * (@experimental as of version 1.125.0); only the value <code>true</code> is allowed.
4559
+ * (since 1.130.0); only the value <code>true</code> is allowed.
4543
4560
  * Otherwise, created nodes are displayed out of place as the first children of their parent
4544
4561
  * or as the first roots, but not in their usual position as defined by the service and the
4545
4562
  * current sort order.
@@ -4559,7 +4576,7 @@ sap.ui.define([
4559
4576
  * <ul>
4560
4577
  * <li> <code>additionally</code>: An optional list of strings that provides the paths to
4561
4578
  * properties (like texts or attributes) related to this groupable property in a 1:1
4562
- * relation (since 1.87.0). They are requested additionally via <code>groupby<code> and
4579
+ * relation (since 1.87.0). They are requested additionally via <code>groupby</code> and
4563
4580
  * must not change the actual grouping; a <code>unit</code> for an aggregatable property
4564
4581
  * must not be repeated here.
4565
4582
  * </ul>
@@ -4999,46 +5016,6 @@ sap.ui.define([
4999
5016
  // "static" functions
5000
5017
  //*********************************************************************************************
5001
5018
 
5002
- /**
5003
- * Calculates the filter for the given key predicate.
5004
- *
5005
- * @param {string} sPredicate The key predicate of a message target
5006
- * @param {object} oEntityType The metadata for the entity type
5007
- * @param {sap.ui.model.odata.v4.ODataMetaModel} oMetaModel The meta model
5008
- * @param {string} sMetaPath The meta path
5009
- * @returns {sap.ui.model.Filter} an {@link sap.ui.model.Filter} for the given key predicate
5010
- *
5011
- * @private
5012
- */
5013
- ODataListBinding.getFilterForPredicate = function (sPredicate, oEntityType, oMetaModel,
5014
- sMetaPath) {
5015
- var aFilters,
5016
- mValueByKeyOrAlias = _Parser.parseKeyPredicate(sPredicate);
5017
-
5018
- if ("" in mValueByKeyOrAlias) {
5019
- // unnamed key e.g. {"" : ('42')} => replace it by the name of the only key property
5020
- mValueByKeyOrAlias[oEntityType.$Key[0]] = mValueByKeyOrAlias[""];
5021
- delete mValueByKeyOrAlias[""];
5022
- }
5023
-
5024
- aFilters = oEntityType.$Key.map(function (vKey) {
5025
- var sKeyOrAlias, sKeyPath;
5026
-
5027
- if (typeof vKey === "string") {
5028
- sKeyPath = sKeyOrAlias = vKey;
5029
- } else {
5030
- sKeyOrAlias = Object.keys(vKey)[0]; // alias
5031
- sKeyPath = vKey[sKeyOrAlias];
5032
- }
5033
-
5034
- return new Filter(sKeyPath, FilterOperator.EQ,
5035
- _Helper.parseLiteral(decodeURIComponent(mValueByKeyOrAlias[sKeyOrAlias]),
5036
- oMetaModel.getObject(sMetaPath + "/" + sKeyPath + "/$Type"), sKeyPath));
5037
- });
5038
-
5039
- return aFilters.length === 1 ? aFilters[0] : new Filter({and : true, filters : aFilters});
5040
- };
5041
-
5042
5019
  /**
5043
5020
  * Returns whether this binding is below an ODLB with data aggregation.
5044
5021
  *
@@ -57,9 +57,11 @@ sap.ui.define([
57
57
  }
58
58
  }
59
59
  }),
60
- oCountType,
60
+ oBooleanType,
61
61
  mCodeListUrl2Promise = new Map(),
62
62
  DEBUG = Log.Level.DEBUG,
63
+ aInt64Names = ["$count", "@$ui5.node.groupLevelCount", "@$ui5.node.level"],
64
+ oInt64Type,
63
65
  rLeftBraces = /\$\(/g,
64
66
  rNumber = /^-?\d+$/,
65
67
  sODataMetaModel = "sap.ui.model.odata.v4.ODataMetaModel",
@@ -156,7 +158,7 @@ sap.ui.define([
156
158
  * @hideconstructor
157
159
  * @public
158
160
  * @since 1.37.0
159
- * @version 1.129.0
161
+ * @version 1.130.1
160
162
  */
161
163
  ODataMetaModel = MetaModel.extend("sap.ui.model.odata.v4.ODataMetaModel", {
162
164
  constructor : constructor
@@ -1664,17 +1666,25 @@ sap.ui.define([
1664
1666
  * @see #requestUI5Type
1665
1667
  */
1666
1668
  ODataMetaModel.prototype.fetchUI5Type = function (sPath, mFormatOptions) {
1667
- var oMetaContext = this.getMetaContext(sPath),
1668
- that = this;
1669
-
1670
- if (sPath.endsWith("/$count")) {
1671
- oCountType ??= new Int64();
1672
- return SyncPromise.resolve(oCountType);
1669
+ const sLastSegment = sPath.slice(sPath.lastIndexOf("/") + 1);
1670
+ if (sLastSegment[0] === "$" || sLastSegment[0] === "@") {
1671
+ if (aInt64Names.includes(sLastSegment)) {
1672
+ oInt64Type ??= new Int64();
1673
+ return SyncPromise.resolve(oInt64Type);
1674
+ }
1675
+ if (sLastSegment.startsWith("@$ui5.context.is")
1676
+ || sLastSegment.startsWith("@$ui5.node.is")) {
1677
+ oBooleanType ??= new Boolean();
1678
+ return SyncPromise.resolve(oBooleanType);
1679
+ }
1673
1680
  }
1681
+
1682
+ const oMetaContext = this.getMetaContext(sPath);
1683
+
1674
1684
  // Note: undefined is more efficient than "" here
1675
1685
  return this.fetchObject(undefined, oMetaContext).catch(
1676
1686
  this.oModel.getReporter()
1677
- ).then(function (oProperty) {
1687
+ ).then((oProperty) => {
1678
1688
  var oType = oRawType,
1679
1689
  oTypeInfo;
1680
1690
 
@@ -1709,7 +1719,7 @@ sap.ui.define([
1709
1719
  oTypeInfo = mUi5TypeForEdmType[oProperty.$Type];
1710
1720
  if (oTypeInfo) {
1711
1721
  oType = new oTypeInfo.Type(mFormatOptions,
1712
- that.getConstraints(oProperty, oMetaContext.getPath()));
1722
+ this.getConstraints(oProperty, oMetaContext.getPath()));
1713
1723
  } else {
1714
1724
  Log.warning("Unsupported type '" + oProperty.$Type + "', using "
1715
1725
  + oType.getName(), sPath, sODataMetaModel);