@openui5/sap.ui.core 1.97.1 → 1.100.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 (441) hide show
  1. package/.eslintrc.json +92 -2
  2. package/.reuse/dep5 +25 -30
  3. package/THIRDPARTY.txt +15 -22
  4. package/package.json +1 -1
  5. package/src/jquery.sap.global.js +6 -3
  6. package/src/jquery.sap.mobile.js +29 -19
  7. package/src/jquery.sap.properties.js +1 -1
  8. package/src/jquery.sap.resources.js +1 -1
  9. package/src/jquery.sap.script.js +1 -1
  10. package/src/jquery.sap.storage.js +3 -3
  11. package/src/sap/base/Log.js +1 -1
  12. package/src/sap/base/strings/whitespaceReplacer.js +1 -1
  13. package/src/sap/base/util/LoaderExtensions.js +1 -10
  14. package/src/sap/base/util/UriParameters.js +2 -2
  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 +80 -168
  57. package/src/sap/ui/Global.js +4 -4
  58. package/src/sap/ui/VersionInfo.js +13 -10
  59. package/src/sap/ui/base/BindingParser.js +34 -7
  60. package/src/sap/ui/base/Event.js +1 -1
  61. package/src/sap/ui/base/EventProvider.js +1 -1
  62. package/src/sap/ui/base/ExpressionParser.js +1 -1
  63. package/src/sap/ui/base/Interface.js +1 -1
  64. package/src/sap/ui/base/ManagedObject.js +48 -27
  65. package/src/sap/ui/base/ManagedObjectMetadata.js +1 -1
  66. package/src/sap/ui/base/ManagedObjectObserver.js +2 -0
  67. package/src/sap/ui/base/Metadata.js +1 -1
  68. package/src/sap/ui/base/Object.js +1 -1
  69. package/src/sap/ui/base/ObjectPool.js +1 -1
  70. package/src/sap/ui/core/.library +2 -2
  71. package/src/sap/ui/core/BusyIndicator.js +1 -1
  72. package/src/sap/ui/core/BusyIndicatorUtils.js +1 -1
  73. package/src/sap/ui/core/Component.js +3 -3
  74. package/src/sap/ui/core/ComponentContainer.js +1 -1
  75. package/src/sap/ui/core/ComponentMetadata.js +2 -2
  76. package/src/sap/ui/core/ComponentSupport.js +1 -1
  77. package/src/sap/ui/core/Configuration.js +82 -15
  78. package/src/sap/ui/core/Control.js +3 -2
  79. package/src/sap/ui/core/Core.js +5 -6
  80. package/src/sap/ui/core/CustomData.js +1 -1
  81. package/src/sap/ui/core/DeclarativeSupport.js +1 -1
  82. package/src/sap/ui/core/Element.js +5 -7
  83. package/src/sap/ui/core/ElementMetadata.js +1 -1
  84. package/src/sap/ui/core/EnabledPropagator.js +1 -1
  85. package/src/sap/ui/core/EventBus.js +1 -1
  86. package/src/sap/ui/core/ExtensionPoint.js +1 -1
  87. package/src/sap/ui/core/FocusHandler.js +1 -1
  88. package/src/sap/ui/core/Fragment.js +1 -1
  89. package/src/sap/ui/core/HTML.js +1 -1
  90. package/src/sap/ui/core/HTMLRenderer.js +1 -1
  91. package/src/sap/ui/core/History.js +1 -1
  92. package/src/sap/ui/core/Icon.js +18 -5
  93. package/src/sap/ui/core/IconRenderer.js +1 -1
  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 +9 -2
  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/LocalBusyIndicatorRenderer.js +2 -2
  105. package/src/sap/ui/core/LocalBusyIndicatorSupport.js +1 -1
  106. package/src/sap/ui/core/Locale.js +1 -1
  107. package/src/sap/ui/core/LocaleData.js +60 -6
  108. package/src/sap/ui/core/Manifest.js +1 -1
  109. package/src/sap/ui/core/Message.js +1 -1
  110. package/src/sap/ui/core/Patcher.js +3 -3
  111. package/src/sap/ui/core/Placeholder.js +28 -28
  112. package/src/sap/ui/core/Popup.js +12 -9
  113. package/src/sap/ui/core/RenderManager.js +1 -1
  114. package/src/sap/ui/core/Renderer.js +1 -1
  115. package/src/sap/ui/core/ResizeHandler.js +1 -1
  116. package/src/sap/ui/core/ScrollBar.js +1 -1
  117. package/src/sap/ui/core/ScrollBarRenderer.js +1 -1
  118. package/src/sap/ui/core/SeparatorItem.js +1 -1
  119. package/src/sap/ui/core/Title.js +1 -1
  120. package/src/sap/ui/core/TooltipBase.js +2 -2
  121. package/src/sap/ui/core/UIArea.js +1 -1
  122. package/src/sap/ui/core/UIComponent.js +1 -1
  123. package/src/sap/ui/core/UIComponentMetadata.js +1 -1
  124. package/src/sap/ui/core/ValueStateSupport.js +1 -1
  125. package/src/sap/ui/core/VariantLayoutData.js +1 -1
  126. package/src/sap/ui/core/XMLComposite.js +1 -1
  127. package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
  128. package/src/sap/ui/core/XMLTemplateProcessor.js +7 -6
  129. package/src/sap/ui/core/_IconRegistry.js +13 -3
  130. package/src/sap/ui/core/cache/CacheManager.js +1 -1
  131. package/src/sap/ui/core/cache/LRUPersistentCache.js +2 -1
  132. package/src/sap/ui/core/cldr/en_AU.json +1 -1
  133. package/src/sap/ui/core/date/Buddhist.js +3 -3
  134. package/src/sap/ui/core/date/Japanese.js +4 -4
  135. package/src/sap/ui/core/date/UniversalDate.js +10 -0
  136. package/src/sap/ui/core/date/UniversalDateUtils.js +175 -5
  137. package/src/sap/ui/core/delegate/ItemNavigation.js +1 -1
  138. package/src/sap/ui/core/delegate/ScrollEnablement.js +9 -6
  139. package/src/sap/ui/core/dnd/DragAndDrop.js +21 -18
  140. package/src/sap/ui/core/dnd/DragDropBase.js +1 -1
  141. package/src/sap/ui/core/dnd/DragDropInfo.js +1 -1
  142. package/src/sap/ui/core/dnd/DragInfo.js +1 -1
  143. package/src/sap/ui/core/dnd/DropInfo.js +3 -3
  144. package/src/sap/ui/core/format/DateFormat.js +654 -202
  145. package/src/sap/ui/core/format/DateFormatTimezoneDisplay.js +44 -0
  146. package/src/sap/ui/core/format/ListFormat.js +2 -2
  147. package/src/sap/ui/core/format/NumberFormat.js +502 -216
  148. package/src/sap/ui/core/format/TimezoneUtil.js +248 -0
  149. package/src/sap/ui/core/hyphenation/Hyphenation.js +1 -1
  150. package/src/sap/ui/core/library.js +126 -53
  151. package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
  152. package/src/sap/ui/core/message/Message.js +1 -1
  153. package/src/sap/ui/core/message/MessageManager.js +1 -1
  154. package/src/sap/ui/core/message/MessageMixin.js +2 -1
  155. package/src/sap/ui/core/message/MessageParser.js +1 -1
  156. package/src/sap/ui/core/message/MessageProcessor.js +1 -1
  157. package/src/sap/ui/core/messagebundle.properties +2 -0
  158. package/src/sap/ui/core/messagebundle_ar.properties +1 -0
  159. package/src/sap/ui/core/messagebundle_bg.properties +6 -5
  160. package/src/sap/ui/core/messagebundle_ca.properties +1 -0
  161. package/src/sap/ui/core/messagebundle_cs.properties +1 -0
  162. package/src/sap/ui/core/messagebundle_cy.properties +1 -0
  163. package/src/sap/ui/core/messagebundle_da.properties +1 -0
  164. package/src/sap/ui/core/messagebundle_de.properties +2 -1
  165. package/src/sap/ui/core/messagebundle_el.properties +1 -0
  166. package/src/sap/ui/core/messagebundle_en.properties +1 -0
  167. package/src/sap/ui/core/messagebundle_en_GB.properties +1 -0
  168. package/src/sap/ui/core/messagebundle_en_US_sappsd.properties +1 -0
  169. package/src/sap/ui/core/messagebundle_en_US_saprigi.properties +1 -0
  170. package/src/sap/ui/core/messagebundle_en_US_saptrc.properties +1 -0
  171. package/src/sap/ui/core/messagebundle_es.properties +1 -0
  172. package/src/sap/ui/core/messagebundle_es_MX.properties +1 -0
  173. package/src/sap/ui/core/messagebundle_et.properties +1 -0
  174. package/src/sap/ui/core/messagebundle_fi.properties +1 -0
  175. package/src/sap/ui/core/messagebundle_fr.properties +1 -0
  176. package/src/sap/ui/core/messagebundle_fr_CA.properties +1 -0
  177. package/src/sap/ui/core/messagebundle_hi.properties +1 -0
  178. package/src/sap/ui/core/messagebundle_hr.properties +1 -0
  179. package/src/sap/ui/core/messagebundle_hu.properties +1 -0
  180. package/src/sap/ui/core/messagebundle_id.properties +3 -2
  181. package/src/sap/ui/core/messagebundle_it.properties +2 -1
  182. package/src/sap/ui/core/messagebundle_iw.properties +1 -0
  183. package/src/sap/ui/core/messagebundle_ja.properties +1 -0
  184. package/src/sap/ui/core/messagebundle_kk.properties +1 -0
  185. package/src/sap/ui/core/messagebundle_ko.properties +2 -1
  186. package/src/sap/ui/core/messagebundle_lt.properties +1 -0
  187. package/src/sap/ui/core/messagebundle_lv.properties +2 -1
  188. package/src/sap/ui/core/messagebundle_ms.properties +1 -0
  189. package/src/sap/ui/core/messagebundle_nl.properties +1 -0
  190. package/src/sap/ui/core/messagebundle_no.properties +5 -4
  191. package/src/sap/ui/core/messagebundle_pl.properties +1 -0
  192. package/src/sap/ui/core/messagebundle_pt.properties +1 -0
  193. package/src/sap/ui/core/messagebundle_pt_PT.properties +1 -0
  194. package/src/sap/ui/core/messagebundle_ro.properties +1 -0
  195. package/src/sap/ui/core/messagebundle_ru.properties +1 -0
  196. package/src/sap/ui/core/messagebundle_sh.properties +1 -0
  197. package/src/sap/ui/core/messagebundle_sk.properties +1 -0
  198. package/src/sap/ui/core/messagebundle_sl.properties +1 -0
  199. package/src/sap/ui/core/messagebundle_sv.properties +1 -0
  200. package/src/sap/ui/core/messagebundle_th.properties +1 -0
  201. package/src/sap/ui/core/messagebundle_tr.properties +1 -0
  202. package/src/sap/ui/core/messagebundle_uk.properties +1 -0
  203. package/src/sap/ui/core/messagebundle_vi.properties +1 -0
  204. package/src/sap/ui/core/messagebundle_zh_CN.properties +1 -0
  205. package/src/sap/ui/core/messagebundle_zh_TW.properties +1 -0
  206. package/src/sap/ui/core/mvc/Controller.js +1 -1
  207. package/src/sap/ui/core/mvc/ControllerExtensionProvider.js +1 -1
  208. package/src/sap/ui/core/mvc/HTMLView.js +1 -1
  209. package/src/sap/ui/core/mvc/HTMLViewRenderer.js +1 -1
  210. package/src/sap/ui/core/mvc/JSONView.js +2 -1
  211. package/src/sap/ui/core/mvc/JSONViewRenderer.js +1 -1
  212. package/src/sap/ui/core/mvc/JSView.js +1 -1
  213. package/src/sap/ui/core/mvc/JSViewRenderer.js +1 -1
  214. package/src/sap/ui/core/mvc/TemplateView.js +1 -1
  215. package/src/sap/ui/core/mvc/TemplateViewRenderer.js +1 -1
  216. package/src/sap/ui/core/mvc/View.js +2 -1
  217. package/src/sap/ui/core/mvc/ViewRenderer.js +1 -1
  218. package/src/sap/ui/core/mvc/XMLView.js +24 -3
  219. package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
  220. package/src/sap/ui/core/plugin/LessSupport.js +1 -1
  221. package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -1
  222. package/src/sap/ui/core/postmessage/Bus.js +1 -1
  223. package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
  224. package/src/sap/ui/core/routing/Route.js +6 -6
  225. package/src/sap/ui/core/routing/Router.js +4 -3
  226. package/src/sap/ui/core/routing/Targets.js +17 -13
  227. package/src/sap/ui/core/rules/Misc.support.js +8 -3
  228. package/src/sap/ui/core/rules/Model.support.js +95 -8
  229. package/src/sap/ui/core/search/OpenSearchProvider.js +1 -1
  230. package/src/sap/ui/core/search/SearchProvider.js +1 -1
  231. package/src/sap/ui/core/service/Service.js +1 -1
  232. package/src/sap/ui/core/service/ServiceFactory.js +1 -1
  233. package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
  234. package/src/sap/ui/core/support/Plugin.js +1 -1
  235. package/src/sap/ui/core/support/Support.js +3 -3
  236. package/src/sap/ui/core/support/plugins/ControlTree.js +1 -1
  237. package/src/sap/ui/core/support/plugins/Interaction.js +1 -1
  238. package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
  239. package/src/sap/ui/core/support/plugins/Performance.js +1 -1
  240. package/src/sap/ui/core/support/plugins/Selector.js +1 -1
  241. package/src/sap/ui/core/support/plugins/TechInfo.js +1 -1
  242. package/src/sap/ui/core/support/plugins/Trace.js +1 -1
  243. package/src/sap/ui/core/support/plugins/ViewInfo.js +1 -1
  244. package/src/sap/ui/core/support/techinfo/TechnicalInfo.js +1 -5
  245. package/src/sap/ui/core/themes/base/CommandShortcutHints.less +1 -1
  246. package/src/sap/ui/core/themes/base/base.less +1108 -35
  247. package/src/sap/ui/core/themes/base/fonts/SAP-icons.woff2 +0 -0
  248. package/src/sap/ui/core/themes/base/global.less +158 -4
  249. package/src/sap/ui/core/themes/base/parameterClasses.less +21 -21
  250. package/src/sap/ui/core/themes/sap_hcb/global.less +157 -2
  251. package/src/sap/ui/core/theming/Parameters.js +22 -142
  252. package/src/sap/ui/core/theming/ThemeHelper.js +26 -37
  253. package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
  254. package/src/sap/ui/core/tmpl/DOMElement.js +1 -1
  255. package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
  256. package/src/sap/ui/core/tmpl/Template.js +1 -1
  257. package/src/sap/ui/core/tmpl/TemplateControl.js +1 -1
  258. package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
  259. package/src/sap/ui/core/util/DraftEnabledMockServer.js +21 -16
  260. package/src/sap/ui/core/util/Export.js +1 -1
  261. package/src/sap/ui/core/util/ExportCell.js +1 -1
  262. package/src/sap/ui/core/util/ExportColumn.js +1 -1
  263. package/src/sap/ui/core/util/ExportRow.js +1 -1
  264. package/src/sap/ui/core/util/ExportType.js +1 -1
  265. package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
  266. package/src/sap/ui/core/util/File.js +1 -1
  267. package/src/sap/ui/core/util/LibraryInfo.js +1 -1
  268. package/src/sap/ui/core/util/MockServer.js +157 -57
  269. package/src/sap/ui/core/util/PasteHelper.js +5 -5
  270. package/src/sap/ui/core/util/XMLPreprocessor.js +17 -4
  271. package/src/sap/ui/core/util/reflection/BaseTreeModifier.js +4 -0
  272. package/src/sap/ui/core/util/reflection/JsControlTreeModifier.js +26 -16
  273. package/src/sap/ui/core/util/reflection/XmlTreeModifier.js +1 -1
  274. package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
  275. package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
  276. package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
  277. package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
  278. package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
  279. package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
  280. package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
  281. package/src/sap/ui/core/ws/ReadyState.js +1 -1
  282. package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
  283. package/src/sap/ui/core/ws/WebSocket.js +1 -1
  284. package/src/sap/ui/debug/ControlTree.js +1 -1
  285. package/src/sap/ui/debug/DebugEnv.js +1 -1
  286. package/src/sap/ui/debug/LogViewer.js +2 -2
  287. package/src/sap/ui/debug/PropertyList.js +1 -1
  288. package/src/sap/ui/dom/includeStylesheet.js +8 -3
  289. package/src/sap/ui/events/jquery/EventExtension.js +1 -1
  290. package/src/sap/ui/events/jquery/EventSimulation.js +3 -13
  291. package/src/sap/ui/model/Binding.js +4 -3
  292. package/src/sap/ui/model/ClientModel.js +1 -1
  293. package/src/sap/ui/model/ClientTreeBinding.js +1 -1
  294. package/src/sap/ui/model/CompositeBinding.js +4 -1
  295. package/src/sap/ui/model/CompositeDataState.js +26 -4
  296. package/src/sap/ui/model/CompositeType.js +13 -1
  297. package/src/sap/ui/model/ContextBinding.js +1 -1
  298. package/src/sap/ui/model/DataState.js +27 -6
  299. package/src/sap/ui/model/ListBinding.js +2 -2
  300. package/src/sap/ui/model/MetaModel.js +2 -3
  301. package/src/sap/ui/model/Model.js +2 -2
  302. package/src/sap/ui/model/SelectionModel.js +1 -1
  303. package/src/sap/ui/model/SimpleType.js +1 -1
  304. package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
  305. package/src/sap/ui/model/Type.js +1 -1
  306. package/src/sap/ui/model/_Helper.js +22 -0
  307. package/src/sap/ui/model/analytics/AnalyticalBinding.js +68 -42
  308. package/src/sap/ui/model/analytics/ODataModelAdapter.js +2 -15
  309. package/src/sap/ui/model/base/ManagedObjectModel.js +9 -7
  310. package/src/sap/ui/model/json/JSONListBinding.js +1 -1
  311. package/src/sap/ui/model/json/JSONModel.js +15 -8
  312. package/src/sap/ui/model/json/JSONPropertyBinding.js +1 -1
  313. package/src/sap/ui/model/message/MessageListBinding.js +1 -1
  314. package/src/sap/ui/model/message/MessageModel.js +1 -1
  315. package/src/sap/ui/model/message/MessagePropertyBinding.js +1 -1
  316. package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
  317. package/src/sap/ui/model/odata/ODataListBinding.js +1 -1
  318. package/src/sap/ui/model/odata/ODataMessageParser.js +1 -1
  319. package/src/sap/ui/model/odata/ODataMetaModel.js +1 -1
  320. package/src/sap/ui/model/odata/ODataMetadata.js +3 -3
  321. package/src/sap/ui/model/odata/ODataModel.js +2 -2
  322. package/src/sap/ui/model/odata/ODataPropertyBinding.js +3 -1
  323. package/src/sap/ui/model/odata/ODataTreeBinding.js +1 -1
  324. package/src/sap/ui/model/odata/ODataTreeBindingFlat.js +1 -1
  325. package/src/sap/ui/model/odata/_AnnotationHelperBasics.js +1 -1
  326. package/src/sap/ui/model/odata/_AnnotationHelperExpression.js +1 -1
  327. package/src/sap/ui/model/odata/_ODataMetaModelUtils.js +1 -1
  328. package/src/sap/ui/model/odata/type/Boolean.js +1 -1
  329. package/src/sap/ui/model/odata/type/Byte.js +1 -1
  330. package/src/sap/ui/model/odata/type/Currency.js +1 -1
  331. package/src/sap/ui/model/odata/type/Date.js +1 -1
  332. package/src/sap/ui/model/odata/type/DateTime.js +1 -1
  333. package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
  334. package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
  335. package/src/sap/ui/model/odata/type/DateTimeWithTimezone.js +346 -0
  336. package/src/sap/ui/model/odata/type/Decimal.js +1 -1
  337. package/src/sap/ui/model/odata/type/Double.js +1 -1
  338. package/src/sap/ui/model/odata/type/Guid.js +1 -1
  339. package/src/sap/ui/model/odata/type/Int.js +1 -1
  340. package/src/sap/ui/model/odata/type/Int16.js +1 -1
  341. package/src/sap/ui/model/odata/type/Int32.js +1 -1
  342. package/src/sap/ui/model/odata/type/Int64.js +1 -1
  343. package/src/sap/ui/model/odata/type/ODataType.js +1 -1
  344. package/src/sap/ui/model/odata/type/Raw.js +1 -1
  345. package/src/sap/ui/model/odata/type/SByte.js +1 -1
  346. package/src/sap/ui/model/odata/type/Single.js +1 -1
  347. package/src/sap/ui/model/odata/type/Stream.js +1 -1
  348. package/src/sap/ui/model/odata/type/String.js +1 -1
  349. package/src/sap/ui/model/odata/type/Time.js +1 -1
  350. package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
  351. package/src/sap/ui/model/odata/type/Unit.js +1 -1
  352. package/src/sap/ui/model/odata/type/UnitMixin.js +1 -1
  353. package/src/sap/ui/model/odata/v2/Context.js +62 -5
  354. package/src/sap/ui/model/odata/v2/ODataAnnotations.js +1 -1
  355. package/src/sap/ui/model/odata/v2/ODataContextBinding.js +8 -4
  356. package/src/sap/ui/model/odata/v2/ODataListBinding.js +324 -112
  357. package/src/sap/ui/model/odata/v2/ODataModel.js +324 -94
  358. package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +3 -4
  359. package/src/sap/ui/model/odata/v2/_CreatedContextsCache.js +65 -5
  360. package/src/sap/ui/model/odata/v4/AnnotationHelper.js +21 -22
  361. package/src/sap/ui/model/odata/v4/Context.js +224 -101
  362. package/src/sap/ui/model/odata/v4/ODataBinding.js +99 -55
  363. package/src/sap/ui/model/odata/v4/ODataContextBinding.js +272 -210
  364. package/src/sap/ui/model/odata/v4/ODataListBinding.js +557 -258
  365. package/src/sap/ui/model/odata/v4/ODataMetaModel.js +131 -100
  366. package/src/sap/ui/model/odata/v4/ODataModel.js +503 -260
  367. package/src/sap/ui/model/odata/v4/ODataParentBinding.js +106 -138
  368. package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +87 -80
  369. package/src/sap/ui/model/odata/v4/ODataUtils.js +5 -5
  370. package/src/sap/ui/model/odata/v4/SubmitMode.js +0 -1
  371. package/src/sap/ui/model/odata/v4/ValueListType.js +0 -1
  372. package/src/sap/ui/model/odata/v4/_AnnotationHelperExpression.js +20 -20
  373. package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +3 -5
  374. package/src/sap/ui/model/odata/v4/lib/_AggregationHelper.js +5 -4
  375. package/src/sap/ui/model/odata/v4/lib/_Batch.js +21 -20
  376. package/src/sap/ui/model/odata/v4/lib/_Cache.js +322 -127
  377. package/src/sap/ui/model/odata/v4/lib/_GroupLock.js +5 -1
  378. package/src/sap/ui/model/odata/v4/lib/_Helper.js +28 -21
  379. package/src/sap/ui/model/odata/v4/lib/_MetadataConverter.js +62 -61
  380. package/src/sap/ui/model/odata/v4/lib/_MetadataRequestor.js +1 -1
  381. package/src/sap/ui/model/odata/v4/lib/_Parser.js +52 -43
  382. package/src/sap/ui/model/odata/v4/lib/_Requestor.js +216 -51
  383. package/src/sap/ui/model/odata/v4/lib/_V2MetadataConverter.js +147 -147
  384. package/src/sap/ui/model/odata/v4/lib/_V2Requestor.js +14 -13
  385. package/src/sap/ui/model/odata/v4/lib/_V4MetadataConverter.js +66 -67
  386. package/src/sap/ui/model/resource/ResourceModel.js +1 -1
  387. package/src/sap/ui/model/resource/ResourcePropertyBinding.js +1 -1
  388. package/src/sap/ui/model/type/Boolean.js +1 -1
  389. package/src/sap/ui/model/type/Currency.js +1 -1
  390. package/src/sap/ui/model/type/Date.js +1 -1
  391. package/src/sap/ui/model/type/DateInterval.js +1 -1
  392. package/src/sap/ui/model/type/DateTime.js +1 -1
  393. package/src/sap/ui/model/type/DateTimeInterval.js +1 -1
  394. package/src/sap/ui/model/type/FileSize.js +1 -1
  395. package/src/sap/ui/model/type/Float.js +1 -1
  396. package/src/sap/ui/model/type/Integer.js +1 -1
  397. package/src/sap/ui/model/type/String.js +1 -1
  398. package/src/sap/ui/model/type/Time.js +1 -1
  399. package/src/sap/ui/model/type/TimeInterval.js +1 -1
  400. package/src/sap/ui/model/type/Unit.js +1 -1
  401. package/src/sap/ui/model/xml/XMLListBinding.js +1 -1
  402. package/src/sap/ui/model/xml/XMLModel.js +1 -1
  403. package/src/sap/ui/model/xml/XMLPropertyBinding.js +1 -1
  404. package/src/sap/ui/performance/trace/FESR.js +1 -1
  405. package/src/sap/ui/performance/trace/FESRHelper.js +72 -0
  406. package/src/sap/ui/performance/trace/Interaction.js +6 -2
  407. package/src/sap/ui/performance/trace/Passport.js +3 -3
  408. package/src/sap/ui/qunit/qunit-2-css.js +4 -4
  409. package/src/sap/ui/qunit/qunit-css.js +4 -4
  410. package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
  411. package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +1 -1
  412. package/src/sap/ui/test/BlanketReporter.js +1 -1
  413. package/src/sap/ui/test/BranchTracking.js +1 -0
  414. package/src/sap/ui/test/Opa5.js +1 -1
  415. package/src/sap/ui/test/OpaBuilder.js +7 -7
  416. package/src/sap/ui/test/TestUtils.js +12 -2
  417. package/src/sap/ui/test/_LogCollector.js +1 -1
  418. package/src/sap/ui/test/_UsageReport.js +1 -1
  419. package/src/sap/ui/test/actions/Action.js +4 -2
  420. package/src/sap/ui/test/actions/Press.js +51 -2
  421. package/src/sap/ui/test/autowaiter/_XHRWaiter.js +1 -1
  422. package/src/sap/ui/test/generic/GenericTestCollection.js +176 -0
  423. package/src/sap/ui/test/generic/TestBase.js +151 -0
  424. package/src/sap/ui/test/generic/Utils.js +284 -0
  425. package/src/sap/ui/test/selectors/_ControlSelectorGenerator.js +9 -8
  426. package/src/sap/ui/test/selectors/_ControlSelectorValidator.js +1 -1
  427. package/src/sap/ui/test/starter/_setupAndStart.js +4 -0
  428. package/src/sap/ui/test/starter/createSuite.js +3 -3
  429. package/src/sap/ui/thirdparty/IPv6.js +1 -1
  430. package/src/sap/ui/thirdparty/SecondLevelDomains.js +1 -1
  431. package/src/sap/ui/thirdparty/URI.js +7 -3
  432. package/src/sap/ui/thirdparty/URITemplate.js +1 -1
  433. package/src/sap/ui/thirdparty/jquery-mobile-custom.js +3 -6
  434. package/src/sap/ui/thirdparty/jqueryui/jquery-ui-datepicker.js +143 -3
  435. package/src/sap/ui/thirdparty/jqueryui/jquery-ui-position.js +8 -1
  436. package/src/sap/ui/thirdparty/jszip.js +17 -7
  437. package/src/sap/ui/thirdparty/mobify-carousel.js +1 -1
  438. package/src/sap/ui/util/Mobile.js +17 -0
  439. package/src/sap/ui/util/Storage.js +1 -1
  440. package/src/sap/ui/util/XMLHelper.js +53 -30
  441. package/src/ui5loader.js +4 -4
@@ -165,6 +165,19 @@ sap.ui.define([
165
165
  throw new Error("Unsupported operation mode: " + vValue);
166
166
  }
167
167
  break;
168
+ case "$$getKeepAliveContext":
169
+ if (that.isRelative() && !mParameters.$$ownRequest) {
170
+ throw new Error(
171
+ "$$getKeepAliveContext requires $$ownRequest in a relative binding");
172
+ }
173
+ ["$$aggregation", "$$canonicalPath", "$$sharedRequest"]
174
+ .forEach(function (sForbidden) {
175
+ if (sForbidden in mParameters) {
176
+ throw new Error("Cannot combine $$getKeepAliveContext and "
177
+ + sForbidden);
178
+ }
179
+ });
180
+ // falls through
168
181
  case "$$canonicalPath":
169
182
  case "$$noPatch":
170
183
  case "$$ownRequest":
@@ -214,15 +227,13 @@ sap.ui.define([
214
227
  */
215
228
  // @override sap.ui.model.Binding#checkUpdate
216
229
  ODataBinding.prototype.checkUpdate = function (bForceUpdate) {
217
- var that = this;
218
-
219
230
  if (arguments.length > 1) {
220
231
  throw new Error("Only the parameter bForceUpdate is supported");
221
232
  }
222
233
 
223
- this.checkUpdateInternal(bForceUpdate).catch(function (oError) {
224
- that.oModel.reportError("Failed to update " + that, sClassName, oError);
225
- });
234
+ this.checkUpdateInternal(bForceUpdate).catch(this.oModel.getReporter());
235
+ // do not rethrow, ManagedObject doesn't react on this either
236
+ // throwing an error would cause "Uncaught (in promise)" in Chrome
226
237
  };
227
238
 
228
239
  /**
@@ -234,7 +245,7 @@ sap.ui.define([
234
245
  * Whether the change event is fired in any case (only allowed for property bindings)
235
246
  * @returns {sap.ui.base.SyncPromise}
236
247
  * A promise resolving without a defined result when the check is finished, or rejecting in
237
- * case of an error (e.g. thrown by the change event handler of a control)
248
+ * case of an error
238
249
  * @throws {Error} If called with illegal parameters
239
250
  *
240
251
  * @abstract
@@ -255,17 +266,18 @@ sap.ui.define([
255
266
  * The resource path
256
267
  * @param {sap.ui.model.Context} [oContext]
257
268
  * The context instance to be used, undefined for absolute bindings
258
- * @param {boolean} [bOldCacheReadOnly]
259
- * Whether the old cache is read-only and must be kept intact - not reset and reused!
269
+ * @param {boolean} [bKeepCreated]
270
+ * Whether created persisted elements shall be kept in place
260
271
  * @param {sap.ui.model.odata.v4.lib._Cache} [oOldCache]
261
272
  * The old cache, in case it may be reused
262
273
  * @returns {sap.ui.model.odata.v4.lib._Cache}
263
- * The cache
274
+ * The cache or <code>null</code> if the binding is relative and the given context is
275
+ * transient
264
276
  *
265
277
  * @private
266
278
  */
267
279
  ODataBinding.prototype.createAndSetCache = function (mQueryOptions, sResourcePath, oContext,
268
- bOldCacheReadOnly, oOldCache) {
280
+ bKeepCreated, oOldCache) {
269
281
  var oCache, sDeepResourcePath, iGeneration;
270
282
 
271
283
  this.mCacheQueryOptions = Object.assign({}, this.oModel.mUriParameters, mQueryOptions);
@@ -287,9 +299,9 @@ sap.ui.define([
287
299
  if (oCache && oCache.$generation >= iGeneration) {
288
300
  oCache.setActive(true);
289
301
  } else {
290
- sDeepResourcePath = _Helper.buildPath(oContext.getPath(), this.sPath).slice(1);
302
+ sDeepResourcePath = this.oModel.resolve(this.sPath, oContext).slice(1);
291
303
  oCache = this.doCreateCache(sResourcePath, this.mCacheQueryOptions, oContext,
292
- sDeepResourcePath, bOldCacheReadOnly, oOldCache);
304
+ sDeepResourcePath, bKeepCreated, oOldCache);
293
305
  if (!(this.mParameters && this.mParameters.$$sharedRequest)) {
294
306
  this.mCacheByResourcePath = this.mCacheByResourcePath || {};
295
307
  this.mCacheByResourcePath[sResourcePath] = oCache;
@@ -299,15 +311,13 @@ sap.ui.define([
299
311
  }
300
312
  } else { // absolute binding
301
313
  oCache = this.doCreateCache(sResourcePath, this.mCacheQueryOptions, undefined,
302
- undefined, bOldCacheReadOnly, oOldCache);
314
+ undefined, bKeepCreated, oOldCache);
303
315
  }
304
- if (oOldCache !== oCache) {
305
- if (oOldCache) {
306
- oOldCache.setActive(false);
307
- }
308
- if (this.mLateQueryOptions) {
309
- oCache.setLateQueryOptions(this.mLateQueryOptions);
310
- }
316
+ if (oOldCache && oOldCache !== oCache) {
317
+ oOldCache.setActive(false);
318
+ }
319
+ if (this.mLateQueryOptions) {
320
+ oCache.setLateQueryOptions(this.mLateQueryOptions);
311
321
  }
312
322
  this.oCache = oCache;
313
323
 
@@ -348,8 +358,8 @@ sap.ui.define([
348
358
  * The context instance to be used, must be <code>undefined</code> for absolute bindings
349
359
  * @param {string} [sDeepResourcePath=sResourcePath]
350
360
  * The deep resource path to be used to build the target path for bound messages
351
- * @param {boolean} [bOldCacheReadOnly]
352
- * Whether the old cache is read-only and must be kept intact - not reset and reused!
361
+ * @param {boolean} [bKeepCreated]
362
+ * Whether created persisted elements shall be kept in place
353
363
  * @param {sap.ui.model.odata.v4.lib._Cache} [oOldCache]
354
364
  * The old cache, in case it may be reused
355
365
  * @returns {sap.ui.model.odata.v4.lib._Cache}
@@ -402,9 +412,8 @@ sap.ui.define([
402
412
  * @param {boolean} [bKeepQueryOptions]
403
413
  * Whether to keep existing (late) query options and not to run auto-$expand/$select again
404
414
  * (cannot be combined with <code>bIgnoreParentCache</code>!)
405
- * @param {boolean} [bKeepCacheOnError]
406
- * If <code>true</code>, the binding data remains unchanged if the refresh fails. This implies
407
- * that the old cache must be kept intact - not reset and reused!
415
+ * @param {boolean} [bKeepCreated]
416
+ * Whether created persisted elements shall be kept in place
408
417
  * @throws {Error}
409
418
  * If auto-$expand/$select is still running and query options shall be kept (this case is just
410
419
  * not yet implemented and should not be needed)
@@ -412,7 +421,7 @@ sap.ui.define([
412
421
  * @private
413
422
  */
414
423
  ODataBinding.prototype.fetchCache = function (oContext, bIgnoreParentCache, bKeepQueryOptions,
415
- bKeepCacheOnError) {
424
+ bKeepCreated) {
416
425
  var oCache = this.oCache,
417
426
  oCallToken = {
418
427
  // propagate old cache from first call of fetchCache to the latest call
@@ -435,10 +444,10 @@ sap.ui.define([
435
444
  this.oCache = undefined;
436
445
  this.oFetchCacheCallToken = oCallToken;
437
446
  if (bKeepQueryOptions) {
438
- // asynchronously re-create an equivalent cache
447
+ // asynchronously re-create an equivalent cache, but skip auto-$expand/$select
439
448
  this.oCachePromise = SyncPromise.resolve(Promise.resolve()).then(function () {
440
449
  return that.createAndSetCache(that.mCacheQueryOptions, oCache.getResourcePath(),
441
- oContext, bKeepCacheOnError, oCache);
450
+ oContext, bKeepCreated, oCache);
442
451
  });
443
452
  return;
444
453
  }
@@ -465,7 +474,7 @@ sap.ui.define([
465
474
  throw oError;
466
475
  }
467
476
  return that.createAndSetCache(mQueryOptions, sResourcePath, oContext,
468
- bKeepCacheOnError, oCallToken.oOldCache);
477
+ bKeepCreated, oCallToken.oOldCache);
469
478
  });
470
479
  }
471
480
  that.oCache = null;
@@ -534,7 +543,7 @@ sap.ui.define([
534
543
  // With $$aggregation, no auto-$expand/$select is needed
535
544
  oQueryOptionsPromise = this.doFetchQueryOptions(oContext);
536
545
  if (this.oModel.bAutoExpandSelect && this.aChildCanUseCachePromises
537
- && !(this.mParameters && this.mParameters.$$aggregation)) {
546
+ && !this.mParameters.$$aggregation) {
538
547
  // For auto-$expand/$select, wait for query options of dependent bindings:
539
548
  // Promise.resolve() ensures all dependent bindings are created and have sent their
540
549
  // query options promise to this binding via fetchIfChildCanUseCache.
@@ -553,7 +562,7 @@ sap.ui.define([
553
562
  }
554
563
 
555
564
  // parent cache is ignored or (quasi-)absolute binding
556
- if (bIgnoreParentCache || !this.bRelative || !oContext.fetchValue) {
565
+ if (bIgnoreParentCache || !this.bRelative || !oContext.fetchValue) {
557
566
  // the binding shall create its own cache
558
567
  return wrapQueryOptions(oQueryOptionsPromise);
559
568
  }
@@ -568,7 +577,8 @@ sap.ui.define([
568
577
  return wrapQueryOptions(oQueryOptionsPromise);
569
578
  }
570
579
  return oContext.getBinding()
571
- .fetchIfChildCanUseCache(oContext, that.sPath, oQueryOptionsPromise)
580
+ .fetchIfChildCanUseCache(oContext, that.sPath, oQueryOptionsPromise,
581
+ !this.mParameters) // duck typing for property binding
572
582
  .then(function (sReducedPath) {
573
583
  return wrapQueryOptions(sReducedPath ? undefined : oQueryOptionsPromise,
574
584
  sReducedPath);
@@ -679,7 +689,7 @@ sap.ui.define([
679
689
  *
680
690
  * @param {string} sPath
681
691
  * A path (absolute or relative to this binding)
682
- * @returns {string}
692
+ * @returns {string|undefined}
683
693
  * The given path, if it is already relative; otherwise the path relative to the binding's
684
694
  * resolved path or return value context path; <code>undefined</code> if the path does not
685
695
  * start with either of these paths.
@@ -707,7 +717,7 @@ sap.ui.define([
707
717
  * Returns the "strongest" change reason that {@link #resume} would fire for this binding or any
708
718
  * of its dependents.
709
719
  *
710
- * @returns {sap.ui.model.ChangeReason}
720
+ * @returns {sap.ui.model.ChangeReason|undefined}
711
721
  * The "strongest" change reason, or <code>undefined</code>
712
722
  *
713
723
  * @private
@@ -732,7 +742,7 @@ sap.ui.define([
732
742
  /**
733
743
  * Returns a promise which resolves as soon as this binding is resumed.
734
744
  *
735
- * @returns {sap.ui.base.SyncPromise}
745
+ * @returns {sap.ui.base.SyncPromise|undefined}
736
746
  * This binding's current promise for {@link sap.ui.model.odata.v4.ODataParentBinding#resume},
737
747
  * or <code>undefined</code> in case it is not currently suspended.
738
748
  *
@@ -747,7 +757,8 @@ sap.ui.define([
747
757
  * Returns the root binding of this binding's hierarchy, see binding
748
758
  * {@link topic:54e0ddf695af4a6c978472cecb01c64d Initialization and Read Requests}.
749
759
  *
750
- * @returns {sap.ui.model.odata.v4.ODataContextBinding|sap.ui.model.odata.v4.ODataListBinding|sap.ui.model.odata.v4.ODataPropertyBinding}
760
+ * @returns {sap.ui.model.odata.v4.ODataContextBinding|sap.ui.model.odata.v4.ODataListBinding|
761
+ * sap.ui.model.odata.v4.ODataPropertyBinding|undefined}
751
762
  * The root binding or <code>undefined</code> if this binding is unresolved (see
752
763
  * {@link sap.ui.model.Binding#isResolved}).
753
764
  *
@@ -814,7 +825,8 @@ sap.ui.define([
814
825
  * changes or created entities which have not been sent successfully to the server. This
815
826
  * function does not take into account the deletion of entities (see
816
827
  * {@link sap.ui.model.odata.v4.Context#delete}) and the execution of OData operations
817
- * (see {@link sap.ui.model.odata.v4.ODataContextBinding#execute}).
828
+ * (see {@link sap.ui.model.odata.v4.ODataContextBinding#execute}). Since 1.98.0,
829
+ * {@link sap.ui.model.odata.v4.Context#isInactive inactive} contexts are ignored.
818
830
  *
819
831
  * Note: If this binding is relative, its data is cached separately for each parent context
820
832
  * path. This method returns <code>true</code> if there are pending changes for the current
@@ -823,11 +835,16 @@ sap.ui.define([
823
835
  *
824
836
  * @param {boolean} [bIgnoreKeptAlive]
825
837
  * Whether to ignore changes which will not be lost by APIs like
826
- * {@link sap.ui.model.odata.v4.ODataListBinding#changeParameters changeParameters},
827
- * {@link sap.ui.model.odata.v4.ODataListBinding#filter filter},
828
- * {@link sap.ui.model.odata.v4.ODataListBinding#sort sort}, or
829
- * {@link sap.ui.model.odata.v4.ODataListBinding#suspend suspend} because they relate to a
830
- * {@link sap.ui.model.odata.v4.Context#setKeepAlive kept-alive} context of this binding.
838
+ * {@link sap.ui.model.odata.v4.ODataListBinding#changeParameters changeParameters},
839
+ * {@link sap.ui.model.odata.v4.ODataListBinding#filter filter},
840
+ * {@link sap.ui.model.odata.v4.ODataListBinding#refresh refresh} (since 1.100.0),
841
+ * {@link sap.ui.model.odata.v4.ODataListBinding#sort sort}, or
842
+ * {@link sap.ui.model.odata.v4.ODataListBinding#suspend suspend} because they relate to a
843
+ * {@link sap.ui.model.odata.v4.Context#setKeepAlive kept-alive} context of this binding
844
+ * (since 1.97.0). Since 1.98.0, {@link sap.ui.model.odata.v4.Context#isTransient transient}
845
+ * contexts of a {@link #getRootBinding root binding} are treated as kept-alive by this flag.
846
+ * Since 1.99.0, the same happens for bindings using the <code>$$ownRequest</code> parameter
847
+ * (see {@link sap.ui.model.odata.v4.ODataModel#bindList}).
831
848
  * @returns {boolean}
832
849
  * <code>true</code> if the binding is resolved and has pending changes
833
850
  *
@@ -855,8 +872,9 @@ sap.ui.define([
855
872
  * @private
856
873
  */
857
874
  ODataBinding.prototype.hasPendingChangesForPath = function (sPath, bIgnoreKeptAlive) {
858
- return this.withCache(function (oCache, sCachePath) {
859
- return oCache.hasPendingChangesForPath(sCachePath, bIgnoreKeptAlive);
875
+ return this.withCache(function (oCache, sCachePath, oBinding) {
876
+ return oCache.hasPendingChangesForPath(sCachePath, bIgnoreKeptAlive,
877
+ bIgnoreKeptAlive && (oBinding.isRoot() || oBinding.mParameters.$$ownRequest));
860
878
  }, sPath, true).unwrap();
861
879
  };
862
880
 
@@ -888,11 +906,11 @@ sap.ui.define([
888
906
  /**
889
907
  * Returns whether any dependent binding of this binding has pending changes
890
908
  *
891
- * @returns {boolean}
892
- * <code>true</code> if this binding has pending changes
893
909
  * @param {boolean} [bIgnoreKeptAlive]
894
910
  * Whether to ignore changes which will not be lost by APIs like sort or filter because they
895
911
  * relate to a context which is kept alive.
912
+ * @returns {boolean}
913
+ * <code>true</code> if this binding has pending changes
896
914
  *
897
915
  * @abstract
898
916
  * @function
@@ -982,8 +1000,8 @@ sap.ui.define([
982
1000
  * the last call determines the binding's data; it is <b>independent</b> of the order of calls
983
1001
  * to {@link sap.ui.model.odata.v4.ODataModel#submitBatch} with the given group ID.
984
1002
  *
985
- * If there are pending changes, an error is thrown. Use {@link #hasPendingChanges} to check if
986
- * there are pending changes. If there are changes, call
1003
+ * If there are pending changes that cannot be ignored, an error is thrown. Use
1004
+ * {@link #hasPendingChanges} to check if there are such pending changes. If there are, call
987
1005
  * {@link sap.ui.model.odata.v4.ODataModel#submitBatch} to submit the changes or
988
1006
  * {@link sap.ui.model.odata.v4.ODataModel#resetChanges} to reset the changes before calling
989
1007
  * {@link #refresh}.
@@ -998,10 +1016,18 @@ sap.ui.define([
998
1016
  *
999
1017
  * Valid values are <code>undefined</code>, '$auto', '$auto.*', '$direct' or application group
1000
1018
  * IDs as specified in {@link sap.ui.model.odata.v4.ODataModel}.
1001
- * @throws {Error}
1002
- * If the given group ID is invalid, the binding has pending changes, refresh on this
1003
- * binding is not supported, a group ID different from the binding's group ID is specified
1004
- * for a suspended binding, or a value of type boolean is given.
1019
+ * @throws {Error} If
1020
+ * <ul>
1021
+ * <li> the given group ID is invalid,
1022
+ * <li> there are pending changes that cannot be ignored,
1023
+ * <li> refresh on this binding is not supported,
1024
+ * <li> a group ID different from the binding's group ID is specified for a suspended
1025
+ * binding,
1026
+ * <li> or a value of type boolean is given.
1027
+ * </ul> Since 1.100.0, pending changes are ignored if they relate to a
1028
+ * {@link sap.ui.model.odata.v4.Context#setKeepAlive kept-alive} context of this binding, and
1029
+ * {@link sap.ui.model.odata.v4.Context#isTransient transient} contexts of a
1030
+ * {@link #getRootBinding root binding} do not count as pending changes.
1005
1031
  *
1006
1032
  * @public
1007
1033
  * @see sap.ui.model.Binding#refresh
@@ -1044,6 +1070,24 @@ sap.ui.define([
1044
1070
  * @private
1045
1071
  */
1046
1072
 
1073
+ /**
1074
+ * Refreshes the binding; expects it to be suspended.
1075
+ *
1076
+ * @param {string} sGroupId
1077
+ * The group ID to be used for the refresh
1078
+ * @throws {Error}
1079
+ * If a group ID different from the binding's group ID is given
1080
+
1081
+ * @private
1082
+ */
1083
+ ODataBinding.prototype.refreshSuspended = function (sGroupId) {
1084
+ if (sGroupId && sGroupId !== this.getGroupId()) {
1085
+ throw new Error(this + ": Cannot refresh a suspended binding with group ID '"
1086
+ + sGroupId + "' (own group ID is '" + this.getGroupId() + "')");
1087
+ }
1088
+ this.setResumeChangeReason(ChangeReason.Refresh);
1089
+ };
1090
+
1047
1091
  /**
1048
1092
  * Remove this binding's caches and non-persistent messages. The binding's active cache removes
1049
1093
  * only its own messages. Inactive caches with a deep resource path starting with the given
@@ -1084,7 +1128,7 @@ sap.ui.define([
1084
1128
  * The effective group ID
1085
1129
  * @param {string[]} aAbsolutePaths
1086
1130
  * The absolute paths to request side effects for
1087
- * @returns {sap.ui.base.SyncPromise}
1131
+ * @returns {sap.ui.base.SyncPromise|undefined}
1088
1132
  * A promise resolving without a defined result, or rejecting with an error if loading of side
1089
1133
  * effects fails, or <code>undefined</code> if there is nothing to do
1090
1134
  *
@@ -1133,7 +1177,7 @@ sap.ui.define([
1133
1177
  if (!this.isRoot()) {
1134
1178
  throw new Error("Refresh on this binding is not supported");
1135
1179
  }
1136
- if (this.hasPendingChanges()) {
1180
+ if (this.hasPendingChanges(true)) {
1137
1181
  throw new Error("Cannot refresh due to pending changes");
1138
1182
  }
1139
1183
  this.oModel.checkGroupId(sGroupId);
@@ -1235,7 +1279,7 @@ sap.ui.define([
1235
1279
  * @since 1.37.0
1236
1280
  */
1237
1281
  ODataBinding.prototype.toString = function () {
1238
- return this.getMetadata().getName() + ": " + (this.bRelative ? this.oContext + "|" : "")
1282
+ return this.getMetadata().getName() + ": " + (this.bRelative ? this.oContext + "|" : "")
1239
1283
  + this.sPath;
1240
1284
  };
1241
1285