@openui5/sap.ui.core 1.132.1 → 1.134.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 (393) hide show
  1. package/.dtsgenrc +5 -0
  2. package/.eslintrc.json +4 -0
  3. package/.reuse/dep5 +2 -9
  4. package/LICENSES/LicenseRef-Unicode-3.0.txt +39 -0
  5. package/THIRDPARTY.txt +45 -78
  6. package/package.json +1 -1
  7. package/src/jquery.sap.global.js +1 -1
  8. package/src/jquery.sap.properties.js +1 -1
  9. package/src/jquery.sap.resources.js +1 -1
  10. package/src/jquery.sap.script.js +1 -1
  11. package/src/jquery.sap.storage.js +3 -3
  12. package/src/sap/base/Event.js +1 -1
  13. package/src/sap/base/Eventing.js +1 -1
  14. package/src/sap/base/config.js +1 -1
  15. package/src/sap/base/i18n/LanguageTag.js +1 -1
  16. package/src/sap/base/i18n/date/TimezoneUtils.js +159 -12
  17. package/src/sap/base/util/JSTokenizer.js +25 -18
  18. package/src/sap/base/util/LoaderExtensions.js +2 -8
  19. package/src/sap/base/util/mixedFetch.js +0 -1
  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/base/util/syncFetch.js +0 -1
  62. package/src/sap/ui/Device.js +3 -3
  63. package/src/sap/ui/Global.js +3 -3
  64. package/src/sap/ui/base/Event.js +1 -1
  65. package/src/sap/ui/base/EventProvider.js +1 -1
  66. package/src/sap/ui/base/Interface.js +1 -1
  67. package/src/sap/ui/base/ManagedObject.js +14 -11
  68. package/src/sap/ui/base/ManagedObjectMetadata.js +1 -1
  69. package/src/sap/ui/base/Metadata.js +1 -1
  70. package/src/sap/ui/base/Object.js +1 -1
  71. package/src/sap/ui/base/ObjectPool.js +1 -1
  72. package/src/sap/ui/base/SyncPromise.js +136 -25
  73. package/src/sap/ui/core/.library +5 -10
  74. package/src/sap/ui/core/AppCacheBuster.js +4 -9
  75. package/src/sap/ui/core/BusyIndicator.js +1 -1
  76. package/src/sap/ui/core/Component.js +1 -1
  77. package/src/sap/ui/core/ComponentContainer.js +1 -1
  78. package/src/sap/ui/core/ComponentMetadata.js +1 -1
  79. package/src/sap/ui/core/ComponentSupport.js +1 -1
  80. package/src/sap/ui/core/Configuration.js +1 -1
  81. package/src/sap/ui/core/Control.js +1 -1
  82. package/src/sap/ui/core/Core.js +2 -2
  83. package/src/sap/ui/core/CustomData.js +1 -1
  84. package/src/sap/ui/core/DeclarativeSupport.js +1 -1
  85. package/src/sap/ui/core/Element.js +3 -1
  86. package/src/sap/ui/core/ElementMetadata.js +1 -1
  87. package/src/sap/ui/core/EnabledPropagator.js +1 -1
  88. package/src/sap/ui/core/EventBus.js +1 -1
  89. package/src/sap/ui/core/Fragment.js +1 -1
  90. package/src/sap/ui/core/HTML.js +1 -1
  91. package/src/sap/ui/core/History.js +1 -1
  92. package/src/sap/ui/core/Icon.js +1 -1
  93. package/src/sap/ui/core/IconPool.js +20 -3
  94. package/src/sap/ui/core/IndicationColorSupport.js +1 -1
  95. package/src/sap/ui/core/IntervalTrigger.js +1 -1
  96. package/src/sap/ui/core/InvisibleMessage.js +1 -1
  97. package/src/sap/ui/core/InvisibleRenderer.js +1 -1
  98. package/src/sap/ui/core/InvisibleText.js +1 -1
  99. package/src/sap/ui/core/Item.js +1 -1
  100. package/src/sap/ui/core/LabelEnablement.js +1 -1
  101. package/src/sap/ui/core/LayoutData.js +1 -1
  102. package/src/sap/ui/core/ListItem.js +1 -1
  103. package/src/sap/ui/core/LocalBusyIndicator.js +1 -1
  104. package/src/sap/ui/core/Locale.js +1 -1
  105. package/src/sap/ui/core/LocaleData.js +101 -79
  106. package/src/sap/ui/core/Manifest.js +1 -1
  107. package/src/sap/ui/core/Message.js +1 -1
  108. package/src/sap/ui/core/RenderManager.js +1 -1
  109. package/src/sap/ui/core/Renderer.js +1 -1
  110. package/src/sap/ui/core/ResizeHandler.js +1 -1
  111. package/src/sap/ui/core/ScrollBar.js +1 -1
  112. package/src/sap/ui/core/SeparatorItem.js +1 -1
  113. package/src/sap/ui/core/Title.js +1 -1
  114. package/src/sap/ui/core/TooltipBase.js +1 -1
  115. package/src/sap/ui/core/UIArea.js +1 -1
  116. package/src/sap/ui/core/UIComponent.js +1 -1
  117. package/src/sap/ui/core/UIComponentMetadata.js +1 -1
  118. package/src/sap/ui/core/ValueStateSupport.js +1 -1
  119. package/src/sap/ui/core/VariantLayoutData.js +1 -1
  120. package/src/sap/ui/core/XMLComposite.js +1 -1
  121. package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
  122. package/src/sap/ui/core/XMLTemplateProcessor.js +22 -3
  123. package/src/sap/ui/core/_IconRegistry.js +2 -0
  124. package/src/sap/ui/core/boot/_bootConfig.js +134 -105
  125. package/src/sap/ui/core/cldr/Unicode-Data-Files-LICENSE.txt +36 -24
  126. package/src/sap/ui/core/cldr/ar.json +106 -98
  127. package/src/sap/ui/core/cldr/ar_EG.json +106 -98
  128. package/src/sap/ui/core/cldr/ar_SA.json +106 -98
  129. package/src/sap/ui/core/cldr/bg.json +44 -38
  130. package/src/sap/ui/core/cldr/ca.json +65 -65
  131. package/src/sap/ui/core/cldr/cnr.json +182 -170
  132. package/src/sap/ui/core/cldr/cs.json +39 -31
  133. package/src/sap/ui/core/cldr/cy.json +319 -233
  134. package/src/sap/ui/core/cldr/da.json +36 -32
  135. package/src/sap/ui/core/cldr/de.json +134 -135
  136. package/src/sap/ui/core/cldr/de_AT.json +134 -135
  137. package/src/sap/ui/core/cldr/de_CH.json +135 -136
  138. package/src/sap/ui/core/cldr/el.json +44 -37
  139. package/src/sap/ui/core/cldr/el_CY.json +44 -37
  140. package/src/sap/ui/core/cldr/en.json +91 -53
  141. package/src/sap/ui/core/cldr/en_AU.json +108 -70
  142. package/src/sap/ui/core/cldr/en_GB.json +123 -85
  143. package/src/sap/ui/core/cldr/en_HK.json +102 -64
  144. package/src/sap/ui/core/cldr/en_IE.json +102 -64
  145. package/src/sap/ui/core/cldr/en_IN.json +207 -67
  146. package/src/sap/ui/core/cldr/en_NZ.json +102 -64
  147. package/src/sap/ui/core/cldr/en_PG.json +102 -64
  148. package/src/sap/ui/core/cldr/en_SG.json +102 -64
  149. package/src/sap/ui/core/cldr/en_ZA.json +106 -66
  150. package/src/sap/ui/core/cldr/es.json +43 -39
  151. package/src/sap/ui/core/cldr/es_AR.json +92 -64
  152. package/src/sap/ui/core/cldr/es_BO.json +92 -64
  153. package/src/sap/ui/core/cldr/es_CL.json +92 -64
  154. package/src/sap/ui/core/cldr/es_CO.json +92 -64
  155. package/src/sap/ui/core/cldr/es_MX.json +131 -83
  156. package/src/sap/ui/core/cldr/es_PE.json +69 -41
  157. package/src/sap/ui/core/cldr/es_UY.json +93 -65
  158. package/src/sap/ui/core/cldr/es_VE.json +92 -64
  159. package/src/sap/ui/core/cldr/et.json +60 -59
  160. package/src/sap/ui/core/cldr/fa.json +122 -116
  161. package/src/sap/ui/core/cldr/fi.json +186 -82
  162. package/src/sap/ui/core/cldr/fr.json +57 -56
  163. package/src/sap/ui/core/cldr/fr_BE.json +56 -55
  164. package/src/sap/ui/core/cldr/fr_CA.json +139 -89
  165. package/src/sap/ui/core/cldr/fr_CH.json +47 -46
  166. package/src/sap/ui/core/cldr/fr_LU.json +57 -56
  167. package/src/sap/ui/core/cldr/he.json +458 -381
  168. package/src/sap/ui/core/cldr/hi.json +204 -170
  169. package/src/sap/ui/core/cldr/hr.json +64 -57
  170. package/src/sap/ui/core/cldr/hu.json +145 -148
  171. package/src/sap/ui/core/cldr/id.json +72 -62
  172. package/src/sap/ui/core/cldr/it.json +76 -75
  173. package/src/sap/ui/core/cldr/it_CH.json +76 -75
  174. package/src/sap/ui/core/cldr/ja.json +62 -44
  175. package/src/sap/ui/core/cldr/kk.json +171 -146
  176. package/src/sap/ui/core/cldr/ko.json +91 -73
  177. package/src/sap/ui/core/cldr/lt.json +134 -135
  178. package/src/sap/ui/core/cldr/lv.json +119 -111
  179. package/src/sap/ui/core/cldr/mk.json +316 -314
  180. package/src/sap/ui/core/cldr/ms.json +91 -75
  181. package/src/sap/ui/core/cldr/nb.json +37 -37
  182. package/src/sap/ui/core/cldr/nl.json +45 -48
  183. package/src/sap/ui/core/cldr/nl_BE.json +45 -48
  184. package/src/sap/ui/core/cldr/pl.json +47 -42
  185. package/src/sap/ui/core/cldr/pt.json +129 -124
  186. package/src/sap/ui/core/cldr/pt_PT.json +43 -38
  187. package/src/sap/ui/core/cldr/ro.json +42 -37
  188. package/src/sap/ui/core/cldr/ru.json +59 -51
  189. package/src/sap/ui/core/cldr/ru_UA.json +59 -51
  190. package/src/sap/ui/core/cldr/sk.json +55 -46
  191. package/src/sap/ui/core/cldr/sl.json +45 -31
  192. package/src/sap/ui/core/cldr/sr.json +189 -177
  193. package/src/sap/ui/core/cldr/sr_Latn.json +189 -177
  194. package/src/sap/ui/core/cldr/sv.json +42 -41
  195. package/src/sap/ui/core/cldr/th.json +104 -90
  196. package/src/sap/ui/core/cldr/tr.json +40 -39
  197. package/src/sap/ui/core/cldr/uk.json +143 -123
  198. package/src/sap/ui/core/cldr/vi.json +136 -133
  199. package/src/sap/ui/core/cldr/zh_CN.json +47 -41
  200. package/src/sap/ui/core/cldr/zh_HK.json +47 -41
  201. package/src/sap/ui/core/cldr/zh_SG.json +47 -41
  202. package/src/sap/ui/core/cldr/zh_TW.json +163 -160
  203. package/src/sap/ui/core/date/Buddhist.js +2 -2
  204. package/src/sap/ui/core/date/CalendarUtils.js +4 -4
  205. package/src/sap/ui/core/date/Gregorian.js +2 -2
  206. package/src/sap/ui/core/date/Islamic.js +2 -2
  207. package/src/sap/ui/core/date/Japanese.js +2 -2
  208. package/src/sap/ui/core/date/Persian.js +2 -2
  209. package/src/sap/ui/core/date/UI5Date.js +1 -1
  210. package/src/sap/ui/core/date/UniversalDate.js +12 -12
  211. package/src/sap/ui/core/delegate/ItemNavigation.js +1 -1
  212. package/src/sap/ui/core/delegate/ScrollEnablement.js +7 -5
  213. package/src/sap/ui/core/dnd/DragAndDrop.js +14 -7
  214. package/src/sap/ui/core/dnd/DragDropBase.js +1 -1
  215. package/src/sap/ui/core/dnd/DragDropInfo.js +1 -1
  216. package/src/sap/ui/core/dnd/DragInfo.js +1 -1
  217. package/src/sap/ui/core/dnd/DropInfo.js +1 -1
  218. package/src/sap/ui/core/fieldhelp/FieldHelp.js +355 -53
  219. package/src/sap/ui/core/fieldhelp/FieldHelpUtil.js +10 -8
  220. package/src/sap/ui/core/format/DateFormat.js +18 -16
  221. package/src/sap/ui/core/format/FormatUtils.js +1 -1
  222. package/src/sap/ui/core/format/NumberFormat.js +346 -364
  223. package/src/sap/ui/core/format/TimezoneUtil.js +1 -1
  224. package/src/sap/ui/core/getCompatibilityVersion.js +1 -1
  225. package/src/sap/ui/core/hyphenation/Hyphenation.js +1 -1
  226. package/src/sap/ui/core/library.js +36 -5
  227. package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
  228. package/src/sap/ui/core/message/Message.js +1 -1
  229. package/src/sap/ui/core/message/MessageManager.js +1 -1
  230. package/src/sap/ui/core/message/MessageMixin.js +12 -4
  231. package/src/sap/ui/core/message/MessageParser.js +1 -1
  232. package/src/sap/ui/core/message/MessageProcessor.js +1 -1
  233. package/src/sap/ui/core/messagebundle_ko.properties +1 -1
  234. package/src/sap/ui/core/messagebundle_sv.properties +1 -1
  235. package/src/sap/ui/core/mvc/HTMLView.js +1 -1
  236. package/src/sap/ui/core/mvc/JSONView.js +1 -1
  237. package/src/sap/ui/core/mvc/JSView.js +1 -1
  238. package/src/sap/ui/core/mvc/TemplateView.js +1 -1
  239. package/src/sap/ui/core/mvc/View.js +1 -1
  240. package/src/sap/ui/core/mvc/XMLView.js +1 -1
  241. package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
  242. package/src/sap/ui/core/plugin/LessSupport.js +1 -1
  243. package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -1
  244. package/src/sap/ui/core/postmessage/Bus.js +1 -1
  245. package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
  246. package/src/sap/ui/core/search/OpenSearchProvider.js +1 -1
  247. package/src/sap/ui/core/search/SearchProvider.js +1 -1
  248. package/src/sap/ui/core/service/Service.js +1 -1
  249. package/src/sap/ui/core/service/ServiceFactory.js +1 -1
  250. package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
  251. package/src/sap/ui/core/support/Plugin.js +1 -1
  252. package/src/sap/ui/core/support/Support.js +1 -1
  253. package/src/sap/ui/core/support/plugins/ControlTree.js +1 -1
  254. package/src/sap/ui/core/support/plugins/Interaction.js +1 -1
  255. package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
  256. package/src/sap/ui/core/support/plugins/Performance.js +1 -1
  257. package/src/sap/ui/core/support/plugins/Selector.js +1 -1
  258. package/src/sap/ui/core/support/plugins/TechInfo.js +1 -1
  259. package/src/sap/ui/core/support/plugins/Trace.js +1 -1
  260. package/src/sap/ui/core/support/plugins/ViewInfo.js +1 -1
  261. package/src/sap/ui/core/themes/base/fonts/SAP-icons.ttf +0 -0
  262. package/src/sap/ui/core/themes/base/fonts/SAP-icons.woff2 +0 -0
  263. package/src/sap/ui/core/theming/Parameters.js +1 -6
  264. package/src/sap/ui/core/theming/ThemeManager.js +84 -33
  265. package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
  266. package/src/sap/ui/core/tmpl/DOMElement.js +1 -1
  267. package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
  268. package/src/sap/ui/core/tmpl/Template.js +1 -1
  269. package/src/sap/ui/core/tmpl/TemplateControl.js +1 -1
  270. package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
  271. package/src/sap/ui/core/util/Export.js +1 -1
  272. package/src/sap/ui/core/util/ExportCell.js +1 -1
  273. package/src/sap/ui/core/util/ExportColumn.js +1 -1
  274. package/src/sap/ui/core/util/ExportRow.js +1 -1
  275. package/src/sap/ui/core/util/ExportType.js +1 -1
  276. package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
  277. package/src/sap/ui/core/util/File.js +1 -1
  278. package/src/sap/ui/core/util/LibraryInfo.js +1 -1
  279. package/src/sap/ui/core/util/MockServer.js +5 -2
  280. package/src/sap/ui/core/util/PasteHelper.js +1 -1
  281. package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
  282. package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
  283. package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
  284. package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
  285. package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
  286. package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
  287. package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
  288. package/src/sap/ui/core/webc/WebComponent.js +1 -1
  289. package/src/sap/ui/core/webc/WebComponentMetadata.js +1 -1
  290. package/src/sap/ui/core/ws/ReadyState.js +1 -1
  291. package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
  292. package/src/sap/ui/core/ws/WebSocket.js +1 -1
  293. package/src/sap/ui/debug/ControlTree.js +1 -1
  294. package/src/sap/ui/debug/DebugEnv.js +1 -1
  295. package/src/sap/ui/debug/PropertyList.js +1 -1
  296. package/src/sap/ui/model/ClientModel.js +1 -1
  297. package/src/sap/ui/model/ClientTreeBinding.js +5 -1
  298. package/src/sap/ui/model/CompositeDataState.js +1 -1
  299. package/src/sap/ui/model/CompositeType.js +1 -1
  300. package/src/sap/ui/model/DataState.js +1 -1
  301. package/src/sap/ui/model/ManagedObjectBindingSupport.js +21 -12
  302. package/src/sap/ui/model/MetaModel.js +1 -1
  303. package/src/sap/ui/model/Model.js +1 -1
  304. package/src/sap/ui/model/SelectionModel.js +1 -1
  305. package/src/sap/ui/model/SimpleType.js +1 -1
  306. package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
  307. package/src/sap/ui/model/Type.js +1 -1
  308. package/src/sap/ui/model/analytics/AnalyticalBinding.js +1 -1
  309. package/src/sap/ui/model/analytics/AnalyticalTreeBindingAdapter.js +51 -13
  310. package/src/sap/ui/model/base/ManagedObjectModel.js +5 -2
  311. package/src/sap/ui/model/json/JSONModel.js +1 -1
  312. package/src/sap/ui/model/message/MessageModel.js +1 -1
  313. package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
  314. package/src/sap/ui/model/odata/ODataMessageParser.js +1 -1
  315. package/src/sap/ui/model/odata/ODataMetaModel.js +46 -14
  316. package/src/sap/ui/model/odata/ODataMetadata.js +2 -2
  317. package/src/sap/ui/model/odata/ODataModel.js +2 -2
  318. package/src/sap/ui/model/odata/ODataUtils.js +2 -2
  319. package/src/sap/ui/model/odata/UpdateMethod.js +18 -1
  320. package/src/sap/ui/model/odata/_AnnotationHelperExpression.js +2 -2
  321. package/src/sap/ui/model/odata/type/Boolean.js +1 -1
  322. package/src/sap/ui/model/odata/type/Byte.js +1 -1
  323. package/src/sap/ui/model/odata/type/Currency.js +1 -1
  324. package/src/sap/ui/model/odata/type/Date.js +3 -3
  325. package/src/sap/ui/model/odata/type/DateTime.js +1 -1
  326. package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
  327. package/src/sap/ui/model/odata/type/DateTimeOffset.js +2 -2
  328. package/src/sap/ui/model/odata/type/DateTimeWithTimezone.js +1 -1
  329. package/src/sap/ui/model/odata/type/Decimal.js +1 -1
  330. package/src/sap/ui/model/odata/type/Double.js +1 -1
  331. package/src/sap/ui/model/odata/type/Guid.js +1 -1
  332. package/src/sap/ui/model/odata/type/Int.js +1 -1
  333. package/src/sap/ui/model/odata/type/Int16.js +1 -1
  334. package/src/sap/ui/model/odata/type/Int32.js +1 -1
  335. package/src/sap/ui/model/odata/type/Int64.js +1 -1
  336. package/src/sap/ui/model/odata/type/ODataType.js +1 -1
  337. package/src/sap/ui/model/odata/type/Raw.js +1 -1
  338. package/src/sap/ui/model/odata/type/SByte.js +1 -1
  339. package/src/sap/ui/model/odata/type/Single.js +1 -1
  340. package/src/sap/ui/model/odata/type/Stream.js +1 -1
  341. package/src/sap/ui/model/odata/type/String.js +1 -1
  342. package/src/sap/ui/model/odata/type/Time.js +1 -1
  343. package/src/sap/ui/model/odata/type/TimeOfDay.js +3 -3
  344. package/src/sap/ui/model/odata/type/Unit.js +1 -1
  345. package/src/sap/ui/model/odata/v2/Context.js +1 -1
  346. package/src/sap/ui/model/odata/v2/ODataAnnotations.js +4 -3
  347. package/src/sap/ui/model/odata/v2/ODataListBinding.js +2 -2
  348. package/src/sap/ui/model/odata/v2/ODataModel.js +63 -37
  349. package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +1 -1
  350. package/src/sap/ui/model/odata/v4/Context.js +52 -23
  351. package/src/sap/ui/model/odata/v4/ODataBinding.js +9 -6
  352. package/src/sap/ui/model/odata/v4/ODataContextBinding.js +5 -4
  353. package/src/sap/ui/model/odata/v4/ODataListBinding.js +137 -56
  354. package/src/sap/ui/model/odata/v4/ODataMetaModel.js +19 -8
  355. package/src/sap/ui/model/odata/v4/ODataModel.js +54 -33
  356. package/src/sap/ui/model/odata/v4/ODataParentBinding.js +10 -3
  357. package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +3 -4
  358. package/src/sap/ui/model/odata/v4/ODataUtils.js +1 -1
  359. package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +33 -9
  360. package/src/sap/ui/model/odata/v4/lib/_AggregationHelper.js +13 -16
  361. package/src/sap/ui/model/odata/v4/lib/_Cache.js +334 -139
  362. package/src/sap/ui/model/odata/v4/lib/_Helper.js +20 -0
  363. package/src/sap/ui/model/odata/v4/lib/_Requestor.js +26 -4
  364. package/src/sap/ui/model/odata/v4/lib/_V2Requestor.js +1 -1
  365. package/src/sap/ui/model/resource/ResourceModel.js +1 -1
  366. package/src/sap/ui/model/type/Boolean.js +1 -1
  367. package/src/sap/ui/model/type/Currency.js +1 -1
  368. package/src/sap/ui/model/type/Date.js +1 -1
  369. package/src/sap/ui/model/type/DateInterval.js +1 -1
  370. package/src/sap/ui/model/type/DateTime.js +1 -1
  371. package/src/sap/ui/model/type/DateTimeInterval.js +1 -1
  372. package/src/sap/ui/model/type/FileSize.js +1 -1
  373. package/src/sap/ui/model/type/Float.js +1 -1
  374. package/src/sap/ui/model/type/Integer.js +1 -1
  375. package/src/sap/ui/model/type/String.js +1 -1
  376. package/src/sap/ui/model/type/Time.js +1 -1
  377. package/src/sap/ui/model/type/TimeInterval.js +1 -1
  378. package/src/sap/ui/model/type/Unit.js +1 -1
  379. package/src/sap/ui/model/xml/XMLModel.js +1 -1
  380. package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
  381. package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +1 -1
  382. package/src/sap/ui/test/BranchTracking.js +1 -1
  383. package/src/sap/ui/test/TestUtils.js +82 -14
  384. package/src/sap/ui/test/actions/EnterText.js +2 -20
  385. package/src/sap/ui/test/generic/TestBase.js +1 -1
  386. package/src/sap/ui/test/starter/_setupAndStart.js +12 -3
  387. package/src/sap/ui/test/starter/_utils.js +0 -1
  388. package/src/sap/ui/thirdparty/jquery-compat.js +1 -1
  389. package/src/sap/ui/util/Storage.js +1 -1
  390. package/src/ui5loader.js +4 -1
  391. package/test/sap/ui/qunit/TestRunner.js +10 -11
  392. package/LICENSES/LicenseRef-tzdata-PublicDomain.txt +0 -5
  393. package/LICENSES/Unicode-DFS-2015.txt +0 -51
@@ -93,7 +93,7 @@ sap.ui.define([
93
93
  serviceUrl : true,
94
94
  sharedRequests : true,
95
95
  supportReferences : true,
96
- /** @deprecated As of Version 1.110.0 */
96
+ /** @deprecated As of version 1.110.0 */
97
97
  synchronizationMode : true,
98
98
  updateGroupId : true,
99
99
  withCredentials : true
@@ -240,7 +240,7 @@ sap.ui.define([
240
240
  * @extends sap.ui.model.Model
241
241
  * @public
242
242
  * @since 1.37.0
243
- * @version 1.132.1
243
+ * @version 1.134.0
244
244
  */
245
245
  ODataModel = Model.extend("sap.ui.model.odata.v4.ODataModel",
246
246
  /** @lends sap.ui.model.odata.v4.ODataModel.prototype */{
@@ -278,7 +278,7 @@ sap.ui.define([
278
278
  // do not pass any parameters to Model
279
279
  Model.call(this);
280
280
 
281
- /** @deprecated As of Version 1.110.0 */
281
+ /** @deprecated As of version 1.110.0 */
282
282
  if ("synchronizationMode" in mParameters && mParameters.synchronizationMode !== "None") {
283
283
  throw new Error("Synchronization mode must be 'None'");
284
284
  }
@@ -774,8 +774,8 @@ sap.ui.define([
774
774
  * @param {string|string[]} [mParameters.$select]
775
775
  * A comma separated list or an array of items which determine the value for the
776
776
  * "5.1.3 System Query Option $select". Since 1.75.0, when using the "autoExpandSelect" model
777
- * parameter (see {@link sap.ui.model.odata.v4.ODataModel#constructor}), paths with navigation
778
- * properties can be included and will contribute to the "5.1.2 System Query Option $expand".
777
+ * parameter (see {@link #constructor}), paths with navigation properties can be included and
778
+ * will contribute to the "5.1.2 System Query Option $expand".
779
779
  * @param {boolean} [mParameters.$$canonicalPath]
780
780
  * Whether a binding relative to an {@link sap.ui.model.odata.v4.Context} uses the canonical
781
781
  * path computed from its context's path for data service requests; only the value
@@ -783,7 +783,7 @@ sap.ui.define([
783
783
  * @param {string} [mParameters.$$groupId]
784
784
  * The group ID to be used for <b>read</b> requests initiated by this binding; if not
785
785
  * specified, either the parent binding's group ID (if the binding is relative) or the
786
- * model's group ID is used, see {@link sap.ui.model.odata.v4.ODataModel#constructor}.
786
+ * model's group ID is used, see {@link #constructor}.
787
787
  * Valid values are <code>undefined</code>, '$auto', '$auto.*', '$direct' or application group
788
788
  * IDs as specified in {@link sap.ui.model.odata.v4.ODataModel}.
789
789
  * @param {boolean} [mParameters.$$inheritExpandSelect]
@@ -802,8 +802,7 @@ sap.ui.define([
802
802
  * @param {string} [mParameters.$$updateGroupId]
803
803
  * The group ID to be used for <b>update</b> requests initiated by this binding;
804
804
  * if not specified, either the parent binding's update group ID (if the binding is relative)
805
- * or the model's update group ID is used, see
806
- * {@link sap.ui.model.odata.v4.ODataModel#constructor}.
805
+ * or the model's update group ID is used, see {@link #constructor}.
807
806
  * For valid values, see parameter "$$groupId".
808
807
  * @returns {sap.ui.model.odata.v4.ODataContextBinding}
809
808
  * The context binding
@@ -917,8 +916,8 @@ sap.ui.define([
917
916
  * @param {string|string[]} [mParameters.$select]
918
917
  * A comma separated list or an array of items which determine the value for the
919
918
  * "5.1.3 System Query Option $select". Since 1.75.0, when using the "autoExpandSelect" model
920
- * parameter (see {@link sap.ui.model.odata.v4.ODataModel#constructor}), paths with navigation
921
- * properties can be included and will contribute to the "5.1.2 System Query Option $expand".
919
+ * parameter (see {@link #constructor}), paths with navigation properties can be included and
920
+ * will contribute to the "5.1.2 System Query Option $expand".
922
921
  * @param {object} [mParameters.$$aggregation]
923
922
  * An object holding the information needed for data aggregation, see
924
923
  * {@link sap.ui.model.odata.v4.ODataListBinding#setAggregation} for details.
@@ -940,7 +939,7 @@ sap.ui.define([
940
939
  * @param {string} [mParameters.$$groupId]
941
940
  * The group ID to be used for <b>read</b> requests initiated by this binding; if not
942
941
  * specified, either the parent binding's group ID (if the binding is relative) or the
943
- * model's group ID is used, see {@link sap.ui.model.odata.v4.ODataModel#constructor}.
942
+ * model's group ID is used, see {@link #constructor}.
944
943
  * Valid values are <code>undefined</code>, '$auto', '$auto.*', '$direct' or application group
945
944
  * IDs as specified in {@link sap.ui.model.odata.v4.ODataModel}.
946
945
  * @param {sap.ui.model.odata.OperationMode} [mParameters.$$operationMode]
@@ -964,13 +963,13 @@ sap.ui.define([
964
963
  * the main list becoming available faster, while the separate properties are merged as soon
965
964
  * as the data is received. Note that the separate properties must be single valued and part
966
965
  * of the '$expand' system query option, either automatically via the "autoExpandSelect" model
967
- * parameter (see {@link sap.ui.model.odata.v4.ODataModel#constructor}) or manually. The
968
- * <code>$$separate</code> parameter must not be combined with <code>$$aggregation</code>.
966
+ * parameter (see {@link #constructor}) or manually. The <code>$$separate</code> parameter
967
+ * must not be combined with <code>$$aggregation</code>.
969
968
  * @param {boolean} [mParameters.$$sharedRequest]
970
969
  * Whether multiple bindings for the same resource path share the data, so that it is
971
970
  * requested only once.
972
971
  * This parameter can be inherited from the model's parameter "sharedRequests", see
973
- * {@link sap.ui.model.odata.v4.ODataModel#constructor}. Supported since 1.80.0
972
+ * {@link #constructor}. Supported since 1.80.0
974
973
  * <b>Note:</b> These bindings are read-only, so they may be especially useful for value
975
974
  * lists; state messages (since 1.108.0) and the following APIs are <b>not</b> allowed
976
975
  * <ul>
@@ -1005,8 +1004,7 @@ sap.ui.define([
1005
1004
  * @param {string} [mParameters.$$updateGroupId]
1006
1005
  * The group ID to be used for <b>update</b> requests initiated by this binding;
1007
1006
  * if not specified, either the parent binding's update group ID (if the binding is relative)
1008
- * or the model's update group ID is used,
1009
- * see {@link sap.ui.model.odata.v4.ODataModel#constructor}.
1007
+ * or the model's update group ID is used, see {@link #constructor}.
1010
1008
  * For valid values, see parameter "$$groupId".
1011
1009
  * @returns {sap.ui.model.odata.v4.ODataListBinding}
1012
1010
  * The list binding
@@ -1081,7 +1079,7 @@ sap.ui.define([
1081
1079
  * @param {string} [mParameters.$$groupId]
1082
1080
  * The group ID to be used for <b>read</b> requests initiated by this binding; if not
1083
1081
  * specified, either the parent binding's group ID (if the binding is relative) or the
1084
- * model's group ID is used, see {@link sap.ui.model.odata.v4.ODataModel#constructor}.
1082
+ * model's group ID is used, see {@link #constructor}.
1085
1083
  * Valid values are <code>undefined</code>, '$auto', '$auto.*', '$direct' or application group
1086
1084
  * IDs as specified in {@link sap.ui.model.odata.v4.ODataModel}.
1087
1085
  * @param {boolean} [mParameters.$$ignoreMessages]
@@ -1842,7 +1840,7 @@ sap.ui.define([
1842
1840
  * The group ID
1843
1841
  *
1844
1842
  * @public
1845
- * @see sap.ui.model.odata.v4.ODataModel#constructor
1843
+ * @see #constructor
1846
1844
  * @since 1.41.0
1847
1845
  */
1848
1846
  ODataModel.prototype.getGroupId = function () {
@@ -1861,7 +1859,7 @@ sap.ui.define([
1861
1859
  * @throws {Error} If the name of the group property is not 'submit'
1862
1860
  *
1863
1861
  * @private
1864
- * @see sap.ui.model.odata.v4.ODataModel#constructor
1862
+ * @see #constructor
1865
1863
  */
1866
1864
  ODataModel.prototype.getGroupProperty = function (sGroupId, sPropertyName) {
1867
1865
  switch (sPropertyName) {
@@ -1883,16 +1881,16 @@ sap.ui.define([
1883
1881
  /**
1884
1882
  * Returns a map of HTTP headers used for data and metadata requests. While the "X-CSRF-Token"
1885
1883
  * header is not used for metadata requests, it is still included here if available. The
1886
- * "SAP-ContextId" header is only included if requested explicitly (@since 1.86.0).
1884
+ * "SAP-ContextId" header is only included if requested explicitly (since 1.86.0).
1887
1885
  *
1888
1886
  * @param {boolean} [bIncludeContextId]
1889
- * Whether to include the "SAP-ContextId" header (@since 1.86.0)
1887
+ * Whether to include the "SAP-ContextId" header (since 1.86.0)
1890
1888
  * @returns {Object<string>}
1891
1889
  * The map of HTTP headers
1892
1890
  *
1893
1891
  * @public
1894
1892
  * @see #changeHttpHeaders
1895
- * @since 1.71
1893
+ * @since 1.71.0
1896
1894
  */
1897
1895
  ODataModel.prototype.getHttpHeaders = function (bIncludeContextId) {
1898
1896
  var mHeadersCopy = Object.assign({}, this.mHeaders);
@@ -2173,8 +2171,7 @@ sap.ui.define([
2173
2171
 
2174
2172
  /**
2175
2173
  * Returns this model's root URL of the service to request data from (as defined by the
2176
- * "serviceUrl" model parameter, see {@link sap.ui.model.odata.v4.ODataModel#constructor}),
2177
- * without query options.
2174
+ * "serviceUrl" model parameter, see {@link #constructor}), without query options.
2178
2175
  *
2179
2176
  * @returns {string} The service URL
2180
2177
  *
@@ -2192,7 +2189,7 @@ sap.ui.define([
2192
2189
  * The update group ID
2193
2190
  *
2194
2191
  * @public
2195
- * @see sap.ui.model.odata.v4.ODataModel#constructor
2192
+ * @see #constructor
2196
2193
  * @since 1.41.0
2197
2194
  */
2198
2195
  ODataModel.prototype.getUpdateGroupId = function () {
@@ -2692,7 +2689,7 @@ sap.ui.define([
2692
2689
  * in case of success, or rejected with an instance of <code>Error</code> in case of failure,
2693
2690
  * e.g. when the given context does not point to an entity
2694
2691
  *
2695
- * @deprecated since 1.39.0
2692
+ * @deprecated As of version 1.39.0
2696
2693
  * Use {@link sap.ui.model.odata.v4.Context#requestCanonicalPath} instead.
2697
2694
  * @public
2698
2695
  * @since 1.37.0
@@ -2770,7 +2767,7 @@ sap.ui.define([
2770
2767
  * given group ID are running.
2771
2768
  *
2772
2769
  * @public
2773
- * @see sap.ui.model.odata.v4.ODataModel#constructor
2770
+ * @see #constructor
2774
2771
  * @see #hasPendingChanges
2775
2772
  * @since 1.39.0
2776
2773
  */
@@ -2857,6 +2854,31 @@ sap.ui.define([
2857
2854
  this.oAnnotationChangePromise = oAnnotationChangePromise;
2858
2855
  };
2859
2856
 
2857
+ /**
2858
+ * Sets the "odata.continue-on-error" preference once for the <b>current</b> batch request
2859
+ * associated with the given group ID. This method can be called early on, when that batch queue
2860
+ * is still empty, or even synchronously after {@link #submitBatch} - just as long as the $batch
2861
+ * request is not already being sent to the server. It needs to be called again for future
2862
+ * batch requests with the same group ID.
2863
+ *
2864
+ * @param {string} sGroupId
2865
+ * A valid group ID as specified in {@link sap.ui.model.odata.v4.ODataModel}. Note that
2866
+ * '$auto' should be avoided to control exactly which requests are affected by this
2867
+ * preference. Using a {@link module:sap/base/util/uid UID} may be one way to achieve this,
2868
+ * but take care to replace dashes with underscores.
2869
+ * @throws {Error}
2870
+ * If the given group ID is not a valid group ID or has
2871
+ * {@link sap.ui.model.odata.v4.SubmitMode.Direct}
2872
+ *
2873
+ * @private
2874
+ * @since 1.134.0
2875
+ * @ui5-restricted sap.fe
2876
+ */
2877
+ ODataModel.prototype.setContinueOnError = function (sGroupId) {
2878
+ this.checkBatchGroupId(sGroupId);
2879
+ this.oRequestor.setContinueOnError(sGroupId);
2880
+ };
2881
+
2860
2882
  /**
2861
2883
  * Sets a listener for HTTP responses which is called every time with the full set of headers
2862
2884
  * received.
@@ -2923,7 +2945,7 @@ sap.ui.define([
2923
2945
  * There are several preconditions on the usage of this API:
2924
2946
  * <ul>
2925
2947
  * <li> Optimistic batch handling requires the "earlyRequests" model parameter; see
2926
- * {@link sap.ui.model.odata.v4.ODataModel#constructor},
2948
+ * {@link #constructor},
2927
2949
  * <li> the setter has to be called before the first $batch request is sent,
2928
2950
  * <li> the setter may only be called once for an OData model,
2929
2951
  * <li> the callback has to return a boolean, or a <code>Promise</code> resolving with a
@@ -2979,9 +3001,8 @@ sap.ui.define([
2979
3001
  * @param {function(Error):Promise<undefined>} fnRetryAfter
2980
3002
  * A "Retry-After" handler
2981
3003
  *
2982
- * @private
2983
- * @ui5-restricted sap.fe
2984
- * @since 1.129.0
3004
+ * @public
3005
+ * @since 1.134.0
2985
3006
  */
2986
3007
  ODataModel.prototype.setRetryAfterHandler = function (fnRetryAfter) {
2987
3008
  this.fnRetryAfter = fnRetryAfter;
@@ -3110,14 +3131,14 @@ sap.ui.define([
3110
3131
  });
3111
3132
  };
3112
3133
 
3113
- /** @deprecated */
3134
+ /** @deprecated As of version 1.120.0 */
3114
3135
  (() => {
3115
3136
  const fnOriginalExtend = ODataModel.extend;
3116
3137
  /**
3117
3138
  * DO NOT EXTEND THIS CLASS.
3118
3139
  *
3119
3140
  * @returns {function} The created class / constructor function
3120
- * @deprecated
3141
+ * @deprecated As of version 1.120.0
3121
3142
  */
3122
3143
  ODataModel.extend = function () {
3123
3144
  Log.error("[FUTURE FATAL] sap.ui.model.odata.v4.ODataModel must not be extended");
@@ -294,8 +294,9 @@ sap.ui.define([
294
294
  * @throws {Error} If
295
295
  * <ul>
296
296
  * <li> there are pending changes that cannot be ignored,
297
- * <li> the binding is {@link #isTransient transient} (part of a
298
- * {@link sap.ui.model.odata.v4.ODataListBinding#create deep create}),
297
+ * <li> the binding is part of a
298
+ * {@link sap.ui.model.odata.v4.ODataListBinding#create deep create} because it is
299
+ * relative to a {@link sap.ui.model.odata.v4.Context#isTransient transient} context,
299
300
  * <li> <code>mParameters</code> is missing, contains binding-specific or unsupported
300
301
  * parameters, contains unsupported values, or contains the property "$expand" or
301
302
  * "$select" when the model is in auto-$expand/$select mode.
@@ -599,6 +600,8 @@ sap.ui.define([
599
600
  * @throws {Error}
600
601
  * If the cache promise for this binding is not yet fulfilled, or if the cache is shared
601
602
  *
603
+ * @abstract
604
+ * @function
602
605
  * @name sap.ui.model.odata.v4.ODataParentBinding#delete
603
606
  * @private
604
607
  */
@@ -642,7 +645,7 @@ sap.ui.define([
642
645
  * Destroys the object. The object must not be used anymore after this function was called.
643
646
  *
644
647
  * @public
645
- * @since 1.61
648
+ * @since 1.61.0
646
649
  */
647
650
  ODataParentBinding.prototype.destroy = function () {
648
651
  this.mAggregatedQueryOptions = undefined;
@@ -1020,6 +1023,7 @@ sap.ui.define([
1020
1023
  * @returns {sap.ui.model.odata.v4.Context}
1021
1024
  * A matching context or <code>undefined</code> if there is none
1022
1025
  *
1026
+ * @abstract
1023
1027
  * @function
1024
1028
  * @name sap.ui.model.odata.v4.ODataParentBinding#findContextForCanonicalPath
1025
1029
  * @private
@@ -1029,6 +1033,7 @@ sap.ui.define([
1029
1033
  * Fire event 'patchCompleted' to attached listeners, if the last PATCH request is completed.
1030
1034
  *
1031
1035
  * @param {boolean} bSuccess Whether the current PATCH request has been processed successfully
1036
+ *
1032
1037
  * @private
1033
1038
  */
1034
1039
  ODataParentBinding.prototype.firePatchCompleted = function (bSuccess) {
@@ -1257,6 +1262,8 @@ sap.ui.define([
1257
1262
  * @param {string} sName - The parameter's name
1258
1263
  * @param {any} vOtherValue - The parameter's other value
1259
1264
  * @returns {boolean} Whether the parameter is "unchanged"
1265
+ *
1266
+ * @private
1260
1267
  */
1261
1268
  ODataParentBinding.prototype.isUnchangedParameter = function (sName, vOtherValue) {
1262
1269
  return this.mParameters[sName] === vOtherValue;
@@ -42,7 +42,7 @@ sap.ui.define([
42
42
  * @mixes sap.ui.model.odata.v4.ODataBinding
43
43
  * @public
44
44
  * @since 1.37.0
45
- * @version 1.132.1
45
+ * @version 1.134.0
46
46
  * @borrows sap.ui.model.odata.v4.ODataBinding#getGroupId as #getGroupId
47
47
  * @borrows sap.ui.model.odata.v4.ODataBinding#getRootBinding as #getRootBinding
48
48
  * @borrows sap.ui.model.odata.v4.ODataBinding#getUpdateGroupId as #getUpdateGroupId
@@ -136,8 +136,7 @@ sap.ui.define([
136
136
  * when it gets a new type via {@link #setType}, or when the data state is reset via
137
137
  * {@link sap.ui.model.odata.v4.ODataModel#resetChanges},
138
138
  * {@link sap.ui.model.odata.v4.ODataContextBinding#resetChanges},
139
- * {@link sap.ui.model.odata.v4.ODataListBinding#resetChanges} or
140
- * {@link sap.ui.model.odata.v4.ODataPropertyBinding#resetChanges},
139
+ * {@link sap.ui.model.odata.v4.ODataListBinding#resetChanges} or {@link #resetChanges},
141
140
  * <li> {@link sap.ui.model.ChangeReason.Refresh Refresh} when the binding is refreshed,
142
141
  * <li> {@link sap.ui.model.ChangeReason.Context Context} when the parent context is
143
142
  * changed.
@@ -560,7 +559,7 @@ sap.ui.define([
560
559
  * determined, or rejected in case of an error
561
560
  *
562
561
  * @public
563
- * @since 1.69
562
+ * @since 1.69.0
564
563
  */
565
564
  ODataPropertyBinding.prototype.requestValue = function () {
566
565
  var that = this;
@@ -6,7 +6,7 @@
6
6
 
7
7
  //Provides class sap.ui.model.odata.v4.ODataUtils
8
8
  sap.ui.define([
9
- "sap/ui/core/CalendarType",
9
+ "sap/base/i18n/date/CalendarType",
10
10
  "sap/ui/core/format/DateFormat",
11
11
  "sap/ui/model/odata/ODataUtils",
12
12
  "sap/ui/model/odata/v4/lib/_Batch",
@@ -251,7 +251,13 @@ sap.ui.define([
251
251
  if (oKeptElement && oKeptElement !== oElement
252
252
  && !(oKeptElement instanceof SyncPromise)) {
253
253
  if (!sHierarchyQualifier || aElements.includes(oKeptElement)) {
254
- throw new Error("Duplicate predicate: " + sPredicate);
254
+ const sNewPredicate = oCache.fixDuplicatePredicate(oElement, sPredicate);
255
+ if (sNewPredicate) {
256
+ sPredicate = sNewPredicate;
257
+ oKeptElement = oElement; // leads to no-op for _Helper.updateNonExisting
258
+ } else {
259
+ throw new Error("Duplicate key predicate: " + sPredicate);
260
+ }
255
261
  }
256
262
  if (!oKeptElement["@odata.etag"]
257
263
  || oElement["@odata.etag"] === oKeptElement["@odata.etag"]) {
@@ -381,6 +387,8 @@ sap.ui.define([
381
387
  * @param {sap.ui.model.odata.v4.lib._GroupLock} [oGroupLock]
382
388
  * An unlocked lock for the group to associate the clean-up request with; this indicates
383
389
  * whether to collapse the node and all its descendants
390
+ * @param {boolean} [bSilent]
391
+ * Whether no ("change") events should be fired
384
392
  * @param {boolean} [bNested]
385
393
  * Whether the "collapse all" was performed at an ancestor
386
394
  * @returns {number}
@@ -389,10 +397,11 @@ sap.ui.define([
389
397
  * @public
390
398
  * @see #expand
391
399
  */
392
- _AggregationCache.prototype.collapse = function (sGroupNodePath, oGroupLock, bNested) {
400
+ _AggregationCache.prototype.collapse = function (sGroupNodePath, oGroupLock, bSilent, bNested) {
393
401
  const oGroupNode = this.getValue(sGroupNodePath);
394
402
  const oCollapsed = _AggregationHelper.getCollapsedObject(oGroupNode);
395
- _Helper.updateAll(this.mChangeListeners, sGroupNodePath, oGroupNode, oCollapsed);
403
+ _Helper.updateAll(bSilent ? {} : this.mChangeListeners, sGroupNodePath, oGroupNode,
404
+ oCollapsed);
396
405
  const bAll = !!oGroupLock;
397
406
  this.oTreeState.collapse(oGroupNode, bAll, bNested);
398
407
 
@@ -415,7 +424,7 @@ sap.ui.define([
415
424
  }
416
425
  if (bAll && oElement["@$ui5.node.isExpanded"]) {
417
426
  iRemaining -= this.collapse(
418
- _Helper.getPrivateAnnotation(oElement, "predicate"), oGroupLock, true);
427
+ _Helper.getPrivateAnnotation(oElement, "predicate"), oGroupLock, bSilent, true);
419
428
  }
420
429
  // exceptions of selection are effectively kept alive (with recursive hierarchy)
421
430
  if (!this.isSelectionDifferent(oElement)) {
@@ -703,6 +712,9 @@ sap.ui.define([
703
712
  if (sParentFilter) {
704
713
  oCache.$parentFilter = sParentFilter;
705
714
  }
715
+ if (!oAggregation.hierarchyQualifier) {
716
+ oCache.fixDuplicatePredicate = _AggregationCache.fixDuplicatePredicate.bind(oCache);
717
+ }
706
718
 
707
719
  return oCache;
708
720
  };
@@ -2681,8 +2693,6 @@ sap.ui.define([
2681
2693
  * error.
2682
2694
  * @param {boolean} [bIsGrouped]
2683
2695
  * Whether the list binding is grouped via its first sorter
2684
- * @param {string[]} [aSeparateProperties]
2685
- * An array of properties which are requested separately
2686
2696
  * @returns {sap.ui.model.odata.v4.lib._Cache}
2687
2697
  * The cache
2688
2698
  * @throws {Error}
@@ -2697,8 +2707,7 @@ sap.ui.define([
2697
2707
  * @public
2698
2708
  */
2699
2709
  _AggregationCache.create = function (oRequestor, sResourcePath, sDeepResourcePath,
2700
- mQueryOptions, oAggregation, bSortExpandSelect, bSharedRequest, bIsGrouped,
2701
- aSeparateProperties) {
2710
+ mQueryOptions, oAggregation, bSortExpandSelect, bSharedRequest, bIsGrouped) {
2702
2711
  var bHasGrandTotal, bHasGroupLevels;
2703
2712
 
2704
2713
  function checkExpandSelect() {
@@ -2768,7 +2777,22 @@ sap.ui.define([
2768
2777
  }
2769
2778
 
2770
2779
  return _Cache.create(oRequestor, sResourcePath, mQueryOptions, bSortExpandSelect,
2771
- sDeepResourcePath, bSharedRequest, aSeparateProperties);
2780
+ sDeepResourcePath, bSharedRequest);
2781
+ };
2782
+
2783
+ // @override sap.ui.model.odata.v4.lib._Cache#fixDuplicatePredicate
2784
+ _AggregationCache.fixDuplicatePredicate = function (oElement, sPredicate) {
2785
+ if (sPredicate === "('')" || sPredicate.includes("=''")) {
2786
+ Log.warning("Duplicate key predicate: " + sPredicate, this.toString(),
2787
+ "sap.ui.model.odata.v4.lib._AggregationCache");
2788
+ const sNewPredicate = sPredicate.slice(0, -1) + ",$duplicate=" + _Helper.uid() + ")";
2789
+ _Helper.setPrivateAnnotation(oElement, "predicate", sNewPredicate);
2790
+ if (this.aElements.$byPredicate[sPredicate] === oElement) {
2791
+ delete this.aElements.$byPredicate[sPredicate];
2792
+ this.aElements.$byPredicate[sNewPredicate] = oElement;
2793
+ }
2794
+ return sNewPredicate;
2795
+ }
2772
2796
  };
2773
2797
 
2774
2798
  return _AggregationCache;
@@ -25,6 +25,7 @@ sap.ui.define([
25
25
  with : "string"
26
26
  }
27
27
  },
28
+ /** @deprecated As of version 1.89.0 */
28
29
  "grandTotal like 1.84" : "boolean",
29
30
  grandTotalAtBottomOnly : "boolean",
30
31
  group : {
@@ -882,15 +883,12 @@ sap.ui.define([
882
883
  });
883
884
 
884
885
  aGroups.forEach(function (sGroup) {
885
- var aAdditionally = oAggregation.group[sGroup].additionally;
886
-
887
- if (aAdditionally) {
888
- aAdditionally.forEach(function (sAdditionally) {
886
+ oAggregation.group[sGroup].additionally
887
+ ?.forEach(function (sAdditionally) {
889
888
  aAllProperties.push(sAdditionally.includes("/")
890
889
  ? sAdditionally.split("/")
891
890
  : sAdditionally);
892
891
  });
893
- }
894
892
  });
895
893
 
896
894
  return aAllProperties;
@@ -977,8 +975,7 @@ sap.ui.define([
977
975
  */
978
976
  function isUsedFor(sName, sGroup) {
979
977
  return sName === sGroup
980
- || oAggregation.group[sGroup].additionally
981
- && oAggregation.group[sGroup].additionally.includes(sName);
978
+ || oAggregation.group[sGroup].additionally?.includes(sName);
982
979
  }
983
980
 
984
981
  if (sOrderby) {
@@ -1193,9 +1190,9 @@ sap.ui.define([
1193
1190
  // returns true if the array contains a filter affected by the side effect path
1194
1191
  function hasAffectedFilter(aFilters0) {
1195
1192
  return aFilters0.some(function (oFilter) {
1196
- return oFilter.aFilters
1197
- ? hasAffectedFilter(oFilter.aFilters)
1198
- : isAffected(oFilter.sPath);
1193
+ return oFilter.getFilters()
1194
+ ? hasAffectedFilter(oFilter.getFilters())
1195
+ : isAffected(oFilter.getPath());
1199
1196
  });
1200
1197
  }
1201
1198
 
@@ -1333,9 +1330,9 @@ sap.ui.define([
1333
1330
  * Whether the filter relates to an aggregate
1334
1331
  */
1335
1332
  function isRelatedToAggregate(oFilter0) {
1336
- return oFilter0.aFilters
1337
- ? oFilter0.aFilters.some(isRelatedToAggregate)
1338
- : oFilter0.sPath in oAggregation.aggregate;
1333
+ return oFilter0.getFilters()
1334
+ ? oFilter0.getFilters().some(isRelatedToAggregate)
1335
+ : oFilter0.getPath() in oAggregation.aggregate;
1339
1336
  }
1340
1337
 
1341
1338
  /*
@@ -1360,9 +1357,9 @@ sap.ui.define([
1360
1357
  * A filter
1361
1358
  */
1362
1359
  function split(oFilter0) {
1363
- if (oFilter0.aFilters && oFilter0.bAnd) {
1364
- oFilter0.aFilters.forEach(split);
1365
- } else if (oFilter0.sPath && isRelatedToUnit(oFilter0.sPath)) {
1360
+ if (oFilter0.getFilters() && oFilter0.isAnd()) {
1361
+ oFilter0.getFilters().forEach(split);
1362
+ } else if (oFilter0.getPath() && isRelatedToUnit(oFilter0.getPath())) {
1366
1363
  aFiltersNoAggregate.push(oFilter0);
1367
1364
  aFiltersNoThese.push(oFilter0); // avoid "$these/..." here
1368
1365
  aFiltersOnAggregate.push(oFilter0);