@openui5/sap.ui.core 1.93.3 → 1.96.2

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 (416) hide show
  1. package/.eslintrc.json +13 -2
  2. package/.reuse/dep5 +6 -11
  3. package/THIRDPARTY.txt +10 -16
  4. package/package.json +1 -1
  5. package/src/jquery.sap.global.js +5 -2
  6. package/src/jquery.sap.properties.js +1 -1
  7. package/src/jquery.sap.resources.js +1 -1
  8. package/src/jquery.sap.script.js +1 -1
  9. package/src/jquery.sap.storage.js +3 -3
  10. package/src/jquery.sap.stubs.js +2 -1
  11. package/src/jquery.sap.trace.js +2 -1
  12. package/src/sap/base/i18n/ResourceBundle.js +6 -2
  13. package/src/sap/base/strings/whitespaceReplacer.js +52 -0
  14. package/src/sap/base/util/restricted/_CancelablePromise.js +1 -1
  15. package/src/sap/base/util/restricted/_castArray.js +1 -1
  16. package/src/sap/base/util/restricted/_compact.js +1 -1
  17. package/src/sap/base/util/restricted/_curry.js +1 -1
  18. package/src/sap/base/util/restricted/_debounce.js +1 -1
  19. package/src/sap/base/util/restricted/_difference.js +1 -1
  20. package/src/sap/base/util/restricted/_differenceBy.js +1 -1
  21. package/src/sap/base/util/restricted/_differenceWith.js +1 -1
  22. package/src/sap/base/util/restricted/_flatMap.js +1 -1
  23. package/src/sap/base/util/restricted/_flatMapDeep.js +1 -1
  24. package/src/sap/base/util/restricted/_flatMapDepth.js +1 -1
  25. package/src/sap/base/util/restricted/_flatten.js +1 -1
  26. package/src/sap/base/util/restricted/_flattenDeep.js +1 -1
  27. package/src/sap/base/util/restricted/_flattenDepth.js +1 -1
  28. package/src/sap/base/util/restricted/_intersection.js +1 -1
  29. package/src/sap/base/util/restricted/_intersectionBy.js +1 -1
  30. package/src/sap/base/util/restricted/_intersectionWith.js +1 -1
  31. package/src/sap/base/util/restricted/_isEqual.js +1 -1
  32. package/src/sap/base/util/restricted/_isEqualWith.js +1 -1
  33. package/src/sap/base/util/restricted/_isNil.js +1 -1
  34. package/src/sap/base/util/restricted/_max.js +1 -1
  35. package/src/sap/base/util/restricted/_merge.js +1 -1
  36. package/src/sap/base/util/restricted/_mergeWith.js +1 -1
  37. package/src/sap/base/util/restricted/_min.js +1 -1
  38. package/src/sap/base/util/restricted/_omit.js +1 -1
  39. package/src/sap/base/util/restricted/_pick.js +1 -1
  40. package/src/sap/base/util/restricted/_pickBy.js +1 -1
  41. package/src/sap/base/util/restricted/_throttle.js +1 -1
  42. package/src/sap/base/util/restricted/_toArray.js +1 -1
  43. package/src/sap/base/util/restricted/_union.js +1 -1
  44. package/src/sap/base/util/restricted/_unionBy.js +1 -1
  45. package/src/sap/base/util/restricted/_unionWith.js +1 -1
  46. package/src/sap/base/util/restricted/_uniq.js +1 -1
  47. package/src/sap/base/util/restricted/_uniqBy.js +1 -1
  48. package/src/sap/base/util/restricted/_uniqWith.js +1 -1
  49. package/src/sap/base/util/restricted/_without.js +1 -1
  50. package/src/sap/base/util/restricted/_xor.js +1 -1
  51. package/src/sap/base/util/restricted/_xorBy.js +1 -1
  52. package/src/sap/base/util/restricted/_xorWith.js +1 -1
  53. package/src/sap/base/util/restricted/_zipObject.js +1 -1
  54. package/src/sap/base/util/restricted/_zipObjectDeep.js +1 -1
  55. package/src/sap/ui/Device.js +37 -42
  56. package/src/sap/ui/Global.js +8 -7
  57. package/src/sap/ui/base/DataType.js +14 -8
  58. package/src/sap/ui/base/Event.js +1 -1
  59. package/src/sap/ui/base/EventProvider.js +1 -1
  60. package/src/sap/ui/base/ExpressionParser.js +9 -6
  61. package/src/sap/ui/base/Interface.js +3 -49
  62. package/src/sap/ui/base/ManagedObject.js +12 -7
  63. package/src/sap/ui/base/ManagedObjectMetadata.js +1 -1
  64. package/src/sap/ui/base/Metadata.js +1 -1
  65. package/src/sap/ui/base/Object.js +49 -4
  66. package/src/sap/ui/base/ObjectPool.js +1 -1
  67. package/src/sap/ui/base/syncXHRFix.js +2 -1
  68. package/src/sap/ui/core/.library +5 -5
  69. package/src/sap/ui/core/AppCacheBuster.js +4 -4
  70. package/src/sap/ui/core/BusyIndicator.js +1 -11
  71. package/src/sap/ui/core/Component.js +300 -140
  72. package/src/sap/ui/core/ComponentContainer.js +24 -8
  73. package/src/sap/ui/core/ComponentMetadata.js +14 -3
  74. package/src/sap/ui/core/ComponentSupport.js +1 -1
  75. package/src/sap/ui/core/Configuration.js +67 -31
  76. package/src/sap/ui/core/Control.js +1 -1
  77. package/src/sap/ui/core/Core.js +103 -25
  78. package/src/sap/ui/core/CustomData.js +1 -1
  79. package/src/sap/ui/core/CustomizingConfiguration.js +35 -260
  80. package/src/sap/ui/core/DeclarativeSupport.js +3 -2
  81. package/src/sap/ui/core/Element.js +1 -1
  82. package/src/sap/ui/core/ElementMetadata.js +4 -2
  83. package/src/sap/ui/core/EnabledPropagator.js +91 -73
  84. package/src/sap/ui/core/EventBus.js +1 -1
  85. package/src/sap/ui/core/ExtensionPoint.js +7 -14
  86. package/src/sap/ui/core/Fragment.js +30 -32
  87. package/src/sap/ui/core/HTML.js +1 -1
  88. package/src/sap/ui/core/History.js +1 -1
  89. package/src/sap/ui/core/Icon.js +7 -8
  90. package/src/sap/ui/core/IconPool.js +26 -1097
  91. package/src/sap/ui/core/IconRenderer.js +6 -6
  92. package/src/sap/ui/core/IndicationColorSupport.js +1 -1
  93. package/src/sap/ui/core/IntervalTrigger.js +1 -1
  94. package/src/sap/ui/core/InvisibleMessage.js +1 -1
  95. package/src/sap/ui/core/InvisibleRenderer.js +1 -1
  96. package/src/sap/ui/core/InvisibleText.js +1 -1
  97. package/src/sap/ui/core/Item.js +1 -1
  98. package/src/sap/ui/core/LabelEnablement.js +1 -1
  99. package/src/sap/ui/core/LayoutData.js +1 -1
  100. package/src/sap/ui/core/ListItem.js +1 -1
  101. package/src/sap/ui/core/LocalBusyIndicator.js +1 -1
  102. package/src/sap/ui/core/Locale.js +26 -4
  103. package/src/sap/ui/core/LocaleData.js +1 -1
  104. package/src/sap/ui/core/Manifest.js +4 -61
  105. package/src/sap/ui/core/Message.js +1 -1
  106. package/src/sap/ui/core/Patcher.js +27 -3
  107. package/src/sap/ui/core/Placeholder.js +28 -15
  108. package/src/sap/ui/core/RenderManager.js +36 -6
  109. package/src/sap/ui/core/Renderer.js +13 -3
  110. package/src/sap/ui/core/ResizeHandler.js +1 -1
  111. package/src/sap/ui/core/ScrollBar.js +2 -2
  112. package/src/sap/ui/core/SeparatorItem.js +1 -1
  113. package/src/sap/ui/core/ShortcutHintsMixin.js +14 -7
  114. package/src/sap/ui/core/Title.js +1 -1
  115. package/src/sap/ui/core/TooltipBase.js +1 -1
  116. package/src/sap/ui/core/UIArea.js +1 -1
  117. package/src/sap/ui/core/UIComponent.js +42 -16
  118. package/src/sap/ui/core/UIComponentMetadata.js +1 -1
  119. package/src/sap/ui/core/ValueStateSupport.js +1 -1
  120. package/src/sap/ui/core/VariantLayoutData.js +1 -1
  121. package/src/sap/ui/core/XMLComposite.js +2 -2
  122. package/src/sap/ui/core/XMLCompositeMetadata.js +2 -2
  123. package/src/sap/ui/core/XMLTemplateProcessor.js +116 -41
  124. package/src/sap/ui/core/_IconRegistry.js +1148 -0
  125. package/src/sap/ui/core/delegate/ItemNavigation.js +1 -1
  126. package/src/sap/ui/core/delegate/ScrollEnablement.js +6 -3
  127. package/src/sap/ui/core/dnd/DragDropBase.js +1 -1
  128. package/src/sap/ui/core/dnd/DragDropInfo.js +1 -1
  129. package/src/sap/ui/core/dnd/DragInfo.js +2 -2
  130. package/src/sap/ui/core/dnd/DropInfo.js +1 -1
  131. package/src/sap/ui/core/format/NumberFormat.js +16 -1
  132. package/src/sap/ui/core/hyphenation/Hyphenation.js +73 -221
  133. package/src/sap/ui/core/hyphenation/HyphenationTestingWords.js +11 -10
  134. package/src/sap/ui/core/library.js +3 -3
  135. package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
  136. package/src/sap/ui/core/message/Message.js +1 -1
  137. package/src/sap/ui/core/message/MessageManager.js +13 -15
  138. package/src/sap/ui/core/message/MessageParser.js +1 -1
  139. package/src/sap/ui/core/message/MessageProcessor.js +1 -1
  140. package/src/sap/ui/core/messagebundle_de.properties +1 -1
  141. package/src/sap/ui/core/messagebundle_fr.properties +1 -1
  142. package/src/sap/ui/core/messagebundle_it.properties +1 -1
  143. package/src/sap/ui/core/messagebundle_pl.properties +1 -1
  144. package/src/sap/ui/core/messagebundle_th.properties +2 -2
  145. package/src/sap/ui/core/mvc/Controller.js +38 -19
  146. package/src/sap/ui/core/mvc/ControllerExtensionProvider.js +30 -32
  147. package/src/sap/ui/core/mvc/ControllerMetadata.js +18 -18
  148. package/src/sap/ui/core/mvc/HTMLView.js +2 -2
  149. package/src/sap/ui/core/mvc/JSONView.js +2 -2
  150. package/src/sap/ui/core/mvc/JSView.js +2 -2
  151. package/src/sap/ui/core/mvc/TemplateView.js +2 -2
  152. package/src/sap/ui/core/mvc/View.js +58 -85
  153. package/src/sap/ui/core/mvc/XMLView.js +2 -2
  154. package/src/sap/ui/core/mvc/XMLViewRenderer.js +17 -20
  155. package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
  156. package/src/sap/ui/core/plugin/LessSupport.js +1 -1
  157. package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -1
  158. package/src/sap/ui/core/postmessage/Bus.js +1 -1
  159. package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
  160. package/src/sap/ui/core/routing/History.js +10 -2
  161. package/src/sap/ui/core/routing/Router.js +8 -1
  162. package/src/sap/ui/core/routing/Target.js +13 -0
  163. package/src/sap/ui/core/routing/Targets.js +13 -2
  164. package/src/sap/ui/core/routing/async/Route.js +1 -1
  165. package/src/sap/ui/core/routing/async/Target.js +353 -259
  166. package/src/sap/ui/core/search/OpenSearchProvider.js +1 -1
  167. package/src/sap/ui/core/search/SearchProvider.js +1 -1
  168. package/src/sap/ui/core/service/Service.js +1 -1
  169. package/src/sap/ui/core/service/ServiceFactory.js +1 -1
  170. package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
  171. package/src/sap/ui/core/support/BootSupportTool.js +11 -0
  172. package/src/sap/ui/core/support/InteractionTree.css +4 -0
  173. package/src/sap/ui/core/support/Plugin.js +1 -1
  174. package/src/sap/ui/core/support/Support.js +1 -1
  175. package/src/sap/ui/core/support/ViewInfo.css +599 -0
  176. package/src/sap/ui/core/support/controls/InteractionTree.js +352 -222
  177. package/src/sap/ui/core/support/controls/ObjectViewer.js +3 -41
  178. package/src/sap/ui/core/support/controls/TimelineOverview.js +49 -24
  179. package/src/sap/ui/core/support/controls/TreeViewer.js +12 -58
  180. package/src/sap/ui/core/support/plugins/ControlTree.js +59 -68
  181. package/src/sap/ui/core/support/plugins/Debugging.js +9 -11
  182. package/src/sap/ui/core/support/plugins/Interaction.js +2 -2
  183. package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
  184. package/src/sap/ui/core/support/plugins/Performance.js +147 -75
  185. package/src/sap/ui/core/support/plugins/Selector.js +19 -24
  186. package/src/sap/ui/core/support/plugins/TechInfo.js +5 -5
  187. package/src/sap/ui/core/support/plugins/Trace.js +95 -32
  188. package/src/sap/ui/core/support/plugins/ViewInfo.js +9 -73
  189. package/src/sap/ui/core/support/support.css +109 -14
  190. package/src/sap/ui/core/support/support.html +6 -2
  191. package/src/sap/ui/core/support/techinfo/TechnicalInfo.fragment.xml +1 -0
  192. package/src/sap/ui/core/support/techinfo/TechnicalInfo.js +149 -72
  193. package/src/sap/ui/core/themes/base/Icon.less +9 -0
  194. package/src/sap/ui/core/themes/base/fonts/SAP-icons.woff2 +0 -0
  195. package/src/sap/ui/core/theming/Parameters.js +6 -4
  196. package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
  197. package/src/sap/ui/core/tmpl/DOMElement.js +1 -1
  198. package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
  199. package/src/sap/ui/core/tmpl/Template.js +10 -28
  200. package/src/sap/ui/core/tmpl/TemplateControl.js +4 -4
  201. package/src/sap/ui/core/tmpl/_parsePath.js +35 -0
  202. package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
  203. package/src/sap/ui/core/util/DraftEnabledMockServer.js +9 -4
  204. package/src/sap/ui/core/util/Export.js +1 -1
  205. package/src/sap/ui/core/util/ExportCell.js +1 -1
  206. package/src/sap/ui/core/util/ExportColumn.js +1 -1
  207. package/src/sap/ui/core/util/ExportRow.js +1 -1
  208. package/src/sap/ui/core/util/ExportType.js +1 -1
  209. package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
  210. package/src/sap/ui/core/util/File.js +1 -1
  211. package/src/sap/ui/core/util/LibraryInfo.js +1 -1
  212. package/src/sap/ui/core/util/MockServer.js +5 -5
  213. package/src/sap/ui/core/util/MockServerAnnotationsHandler.js +3 -2
  214. package/src/sap/ui/core/util/PasteHelper.js +1 -1
  215. package/src/sap/ui/core/util/XMLPreprocessor.js +11 -12
  216. package/src/sap/ui/core/util/reflection/BaseTreeModifier.js +136 -63
  217. package/src/sap/ui/core/util/reflection/JsControlTreeModifier.js +170 -153
  218. package/src/sap/ui/core/util/reflection/XmlTreeModifier.js +424 -293
  219. package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
  220. package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
  221. package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
  222. package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
  223. package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
  224. package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
  225. package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
  226. package/src/sap/ui/core/ws/ReadyState.js +1 -1
  227. package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
  228. package/src/sap/ui/core/ws/WebSocket.js +1 -1
  229. package/src/sap/ui/debug/ControlTree.js +10 -4
  230. package/src/sap/ui/debug/DebugEnv.js +3 -4
  231. package/src/sap/ui/debug/Highlighter.js +8 -2
  232. package/src/sap/ui/debug/PropertyList.css +55 -0
  233. package/src/sap/ui/debug/PropertyList.js +111 -182
  234. package/src/sap/ui/model/Binding.js +174 -118
  235. package/src/sap/ui/model/ClientContextBinding.js +1 -1
  236. package/src/sap/ui/model/ClientListBinding.js +1 -3
  237. package/src/sap/ui/model/ClientModel.js +4 -4
  238. package/src/sap/ui/model/ClientPropertyBinding.js +4 -2
  239. package/src/sap/ui/model/ClientTreeBinding.js +15 -9
  240. package/src/sap/ui/model/ClientTreeBindingAdapter.js +28 -23
  241. package/src/sap/ui/model/CompositeBinding.js +98 -77
  242. package/src/sap/ui/model/CompositeDataState.js +2 -2
  243. package/src/sap/ui/model/CompositeType.js +2 -2
  244. package/src/sap/ui/model/Context.js +4 -2
  245. package/src/sap/ui/model/ContextBinding.js +6 -14
  246. package/src/sap/ui/model/DataState.js +2 -2
  247. package/src/sap/ui/model/Filter.js +255 -53
  248. package/src/sap/ui/model/FilterOperator.js +1 -1
  249. package/src/sap/ui/model/FilterProcessor.js +27 -17
  250. package/src/sap/ui/model/FilterType.js +1 -1
  251. package/src/sap/ui/model/ListBinding.js +180 -117
  252. package/src/sap/ui/model/MetaModel.js +4 -9
  253. package/src/sap/ui/model/Model.js +345 -294
  254. package/src/sap/ui/model/PropertyBinding.js +92 -58
  255. package/src/sap/ui/model/SelectionModel.js +2 -2
  256. package/src/sap/ui/model/SimpleType.js +2 -2
  257. package/src/sap/ui/model/Sorter.js +1 -1
  258. package/src/sap/ui/model/SorterProcessor.js +1 -1
  259. package/src/sap/ui/model/StaticBinding.js +1 -1
  260. package/src/sap/ui/model/TreeAutoExpandMode.js +2 -2
  261. package/src/sap/ui/model/TreeBinding.js +1 -1
  262. package/src/sap/ui/model/TreeBindingAdapter.js +251 -100
  263. package/src/sap/ui/model/TreeBindingCompatibilityAdapter.js +16 -9
  264. package/src/sap/ui/model/TreeBindingUtils.js +1 -0
  265. package/src/sap/ui/model/Type.js +1 -1
  266. package/src/sap/ui/model/analytics/AnalyticalBinding.js +8 -4
  267. package/src/sap/ui/model/analytics/AnalyticalTreeBindingAdapter.js +1 -1
  268. package/src/sap/ui/model/analytics/AnalyticalVersionInfo.js +1 -1
  269. package/src/sap/ui/model/analytics/BatchResponseCollector.js +1 -1
  270. package/src/sap/ui/model/analytics/ODataModelAdapter.js +1 -1
  271. package/src/sap/ui/model/analytics/odata4analytics.js +34 -25
  272. package/src/sap/ui/model/base/ManagedObjectModel.js +4 -0
  273. package/src/sap/ui/model/json/JSONListBinding.js +8 -5
  274. package/src/sap/ui/model/json/JSONModel.js +24 -15
  275. package/src/sap/ui/model/json/JSONPropertyBinding.js +4 -3
  276. package/src/sap/ui/model/json/JSONTreeBinding.js +1 -1
  277. package/src/sap/ui/model/message/MessageListBinding.js +6 -3
  278. package/src/sap/ui/model/message/MessageModel.js +23 -15
  279. package/src/sap/ui/model/message/MessagePropertyBinding.js +2 -2
  280. package/src/sap/ui/model/odata/AnnotationHelper.js +1 -1
  281. package/src/sap/ui/model/odata/AnnotationParser.js +1 -1
  282. package/src/sap/ui/model/odata/CountMode.js +1 -1
  283. package/src/sap/ui/model/odata/Filter.js +1 -1
  284. package/src/sap/ui/model/odata/ODataAnnotations.js +2 -2
  285. package/src/sap/ui/model/odata/ODataContextBinding.js +1 -1
  286. package/src/sap/ui/model/odata/ODataListBinding.js +1 -1
  287. package/src/sap/ui/model/odata/ODataMessageParser.js +2 -2
  288. package/src/sap/ui/model/odata/ODataMetaModel.js +5 -3
  289. package/src/sap/ui/model/odata/ODataMetadata.js +2 -2
  290. package/src/sap/ui/model/odata/ODataModel.js +8 -7
  291. package/src/sap/ui/model/odata/ODataPropertyBinding.js +1 -1
  292. package/src/sap/ui/model/odata/ODataTreeBinding.js +65 -33
  293. package/src/sap/ui/model/odata/ODataTreeBindingAdapter.js +1 -1
  294. package/src/sap/ui/model/odata/ODataTreeBindingFlat.js +2 -2
  295. package/src/sap/ui/model/odata/ODataUtils.js +13 -11
  296. package/src/sap/ui/model/odata/OperationMode.js +1 -1
  297. package/src/sap/ui/model/odata/_AnnotationHelperExpression.js +1 -1
  298. package/src/sap/ui/model/odata/type/Boolean.js +1 -1
  299. package/src/sap/ui/model/odata/type/Byte.js +1 -1
  300. package/src/sap/ui/model/odata/type/Currency.js +1 -1
  301. package/src/sap/ui/model/odata/type/Date.js +1 -1
  302. package/src/sap/ui/model/odata/type/DateTime.js +1 -1
  303. package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
  304. package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
  305. package/src/sap/ui/model/odata/type/Decimal.js +1 -1
  306. package/src/sap/ui/model/odata/type/Double.js +1 -1
  307. package/src/sap/ui/model/odata/type/Guid.js +1 -1
  308. package/src/sap/ui/model/odata/type/Int.js +1 -1
  309. package/src/sap/ui/model/odata/type/Int16.js +1 -1
  310. package/src/sap/ui/model/odata/type/Int32.js +1 -1
  311. package/src/sap/ui/model/odata/type/Int64.js +1 -1
  312. package/src/sap/ui/model/odata/type/ODataType.js +1 -1
  313. package/src/sap/ui/model/odata/type/Raw.js +1 -1
  314. package/src/sap/ui/model/odata/type/SByte.js +1 -1
  315. package/src/sap/ui/model/odata/type/Single.js +1 -1
  316. package/src/sap/ui/model/odata/type/Stream.js +1 -1
  317. package/src/sap/ui/model/odata/type/String.js +1 -1
  318. package/src/sap/ui/model/odata/type/Time.js +1 -1
  319. package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
  320. package/src/sap/ui/model/odata/type/Unit.js +1 -1
  321. package/src/sap/ui/model/odata/v2/Context.js +81 -9
  322. package/src/sap/ui/model/odata/v2/ODataAnnotations.js +3 -3
  323. package/src/sap/ui/model/odata/v2/ODataContextBinding.js +39 -49
  324. package/src/sap/ui/model/odata/v2/ODataListBinding.js +236 -73
  325. package/src/sap/ui/model/odata/v2/ODataModel.js +314 -164
  326. package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +110 -97
  327. package/src/sap/ui/model/odata/v2/_CreatedContextsCache.js +129 -0
  328. package/src/sap/ui/model/odata/v4/Context.js +6 -3
  329. package/src/sap/ui/model/odata/v4/ODataBinding.js +5 -6
  330. package/src/sap/ui/model/odata/v4/ODataContextBinding.js +117 -40
  331. package/src/sap/ui/model/odata/v4/ODataListBinding.js +95 -15
  332. package/src/sap/ui/model/odata/v4/ODataMetaModel.js +44 -31
  333. package/src/sap/ui/model/odata/v4/ODataModel.js +86 -78
  334. package/src/sap/ui/model/odata/v4/ODataParentBinding.js +47 -28
  335. package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +11 -7
  336. package/src/sap/ui/model/odata/v4/_AnnotationHelperExpression.js +10 -3
  337. package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +8 -1
  338. package/src/sap/ui/model/odata/v4/lib/_Cache.js +24 -16
  339. package/src/sap/ui/model/odata/v4/lib/_Helper.js +32 -30
  340. package/src/sap/ui/model/odata/v4/lib/_Requestor.js +52 -17
  341. package/src/sap/ui/model/odata/v4/lib/_V2Requestor.js +2 -2
  342. package/src/sap/ui/model/resource/ResourceModel.js +6 -2
  343. package/src/sap/ui/model/resource/ResourcePropertyBinding.js +1 -1
  344. package/src/sap/ui/model/type/Boolean.js +2 -2
  345. package/src/sap/ui/model/type/Currency.js +2 -2
  346. package/src/sap/ui/model/type/Date.js +9 -3
  347. package/src/sap/ui/model/type/DateInterval.js +4 -2
  348. package/src/sap/ui/model/type/DateTime.js +2 -2
  349. package/src/sap/ui/model/type/DateTimeInterval.js +2 -2
  350. package/src/sap/ui/model/type/FileSize.js +4 -2
  351. package/src/sap/ui/model/type/Float.js +4 -2
  352. package/src/sap/ui/model/type/Integer.js +4 -2
  353. package/src/sap/ui/model/type/String.js +2 -2
  354. package/src/sap/ui/model/type/Time.js +2 -2
  355. package/src/sap/ui/model/type/TimeInterval.js +2 -2
  356. package/src/sap/ui/model/type/Unit.js +14 -7
  357. package/src/sap/ui/model/xml/XMLListBinding.js +15 -9
  358. package/src/sap/ui/model/xml/XMLModel.js +70 -41
  359. package/src/sap/ui/model/xml/XMLPropertyBinding.js +4 -4
  360. package/src/sap/ui/model/xml/XMLTreeBinding.js +5 -4
  361. package/src/sap/ui/performance/trace/Interaction.js +30 -15
  362. package/src/sap/ui/performance/trace/initTraces.js +1 -1
  363. package/src/sap/ui/qunit/QUnitUtils.js +3 -2
  364. package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
  365. package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +9 -11
  366. package/src/sap/ui/test/TestUtils.js +11 -4
  367. package/src/sap/ui/test/actions/Drag.js +6 -2
  368. package/src/sap/ui/test/actions/Drop.js +6 -2
  369. package/src/sap/ui/test/actions/EnterText.js +6 -0
  370. package/src/sap/ui/test/actions/Press.js +6 -0
  371. package/src/sap/ui/test/actions/Scroll.js +6 -0
  372. package/src/sap/ui/test/autowaiter/_resourceWaiter.js +4 -4
  373. package/src/sap/ui/test/launchers/componentLauncher.js +0 -4
  374. package/src/sap/ui/test/matchers/I18NText.js +29 -11
  375. package/src/sap/ui/test/opaQunit.js +5 -0
  376. package/src/sap/ui/thirdparty/crossroads.js +6 -4
  377. package/src/sap/ui/thirdparty/hyphenopoly/Hyphenopoly.js +1196 -0
  378. package/src/sap/ui/thirdparty/hyphenopoly/Hyphenopoly_Loader.js +797 -0
  379. package/src/sap/ui/thirdparty/hyphenopoly/hyphenEngine.asm.js +108 -127
  380. package/src/sap/ui/thirdparty/hyphenopoly/hyphenEngine.wasm +0 -0
  381. package/src/sap/ui/thirdparty/hyphenopoly/patterns/bg.hpb +0 -0
  382. package/src/sap/ui/thirdparty/hyphenopoly/patterns/ca.hpb +0 -0
  383. package/src/sap/ui/thirdparty/hyphenopoly/patterns/da.hpb +0 -0
  384. package/src/sap/ui/thirdparty/hyphenopoly/patterns/de.hpb +0 -0
  385. package/src/sap/ui/thirdparty/hyphenopoly/patterns/el-monoton.hpb +0 -0
  386. package/src/sap/ui/thirdparty/hyphenopoly/patterns/en-us.hpb +0 -0
  387. package/src/sap/ui/thirdparty/hyphenopoly/patterns/es.hpb +0 -0
  388. package/src/sap/ui/thirdparty/hyphenopoly/patterns/et.hpb +0 -0
  389. package/src/sap/ui/thirdparty/hyphenopoly/patterns/fi.hpb +0 -0
  390. package/src/sap/ui/thirdparty/hyphenopoly/patterns/fr.hpb +0 -0
  391. package/src/sap/ui/thirdparty/hyphenopoly/patterns/hi.hpb +0 -0
  392. package/src/sap/ui/thirdparty/hyphenopoly/patterns/hr.hpb +0 -0
  393. package/src/sap/ui/thirdparty/hyphenopoly/patterns/hu.hpb +0 -0
  394. package/src/sap/ui/thirdparty/hyphenopoly/patterns/it.hpb +0 -0
  395. package/src/sap/ui/thirdparty/hyphenopoly/patterns/lt.hpb +0 -0
  396. package/src/sap/ui/thirdparty/hyphenopoly/patterns/nb-no.hpb +0 -0
  397. package/src/sap/ui/thirdparty/hyphenopoly/patterns/nl.hpb +0 -0
  398. package/src/sap/ui/thirdparty/hyphenopoly/patterns/pt.hpb +0 -0
  399. package/src/sap/ui/thirdparty/hyphenopoly/patterns/ru.hpb +0 -0
  400. package/src/sap/ui/thirdparty/hyphenopoly/patterns/sl.hpb +0 -0
  401. package/src/sap/ui/thirdparty/hyphenopoly/patterns/sv.hpb +0 -0
  402. package/src/sap/ui/thirdparty/hyphenopoly/patterns/th.hpb +0 -0
  403. package/src/sap/ui/thirdparty/hyphenopoly/patterns/tr.hpb +0 -0
  404. package/src/sap/ui/thirdparty/hyphenopoly/patterns/uk.hpb +0 -0
  405. package/src/sap/ui/thirdparty/jquery.js +9 -1
  406. package/src/sap/ui/thirdparty/qunit-2.js +1 -1
  407. package/src/sap/ui/thirdparty/qunit.js +1 -1
  408. package/src/sap/ui/util/Mobile.js +2 -20
  409. package/src/sap/ui/util/Storage.js +1 -1
  410. package/src/sap/ui/util/isCrossOriginURL.js +16 -6
  411. package/src/sap-ui-core-nojQuery.js +1 -1
  412. package/src/sap-ui-core.js +1 -1
  413. package/src/sap-ui-debug.js +3 -17
  414. package/ui5.yaml +5 -2
  415. package/src/sap/ui/core/support/plugins/MessageTest.js +0 -96
  416. package/src/sap/ui/thirdparty/hyphenopoly/hyphenopoly.bundle.js +0 -860
@@ -3,7 +3,7 @@
3
3
  * (c) Copyright 2009-2021 SAP SE or an SAP affiliate company.
4
4
  * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
5
  */
6
-
6
+ /*eslint-disable max-len */
7
7
  // Provides the OData model implementation of a tree binding
8
8
  sap.ui.define([
9
9
  "sap/base/assert",
@@ -92,7 +92,7 @@ sap.ui.define([
92
92
  * @extends sap.ui.model.TreeBinding
93
93
  * @hideconstructor
94
94
  * @public
95
- * @version 1.93.3
95
+ * @version 1.96.2
96
96
  */
97
97
  var ODataTreeBinding = TreeBinding.extend("sap.ui.model.odata.v2.ODataTreeBinding", /** @lends sap.ui.model.odata.v2.ODataTreeBinding.prototype */ {
98
98
 
@@ -1503,23 +1503,29 @@ sap.ui.define([
1503
1503
  /**
1504
1504
  * Applies the given filters to the ODataTreeBinding.
1505
1505
  *
1506
- * Please note that filters of type <code>FilterType.Control</code> are not supported for <code>OperationMode.Server</code>,
1507
- * here only filters of type <code>FilterType.Application</code> are allowed. Filters given via the constructor are always
1508
- * of type <code>Application</code> and will be sent with every backend request.
1509
- * See the constructor documentation for more information.
1506
+ * Please note that filters of type <code>FilterType.Control</code> are not supported for
1507
+ * <code>OperationMode.Server</code>,
1508
+ * here only filters of type <code>FilterType.Application</code> are allowed. Filters given via
1509
+ * {@link sap.ui.model.odata.v2.ODataModel#bindTree} are always
1510
+ * of type <code>Application</code> and will be sent with every back-end request.
1511
+ * For more information, see {@link sap.ui.model.odata.v2.ODataModel#bindTree}.
1510
1512
  *
1511
- * Since 1.34.0, complete client-side filtering is supported for <code>OperationMode.Client</code> and also in
1512
- * <code>OperationMode.Auto</code> if the backend count is lower than the threshold.
1513
+ * Since 1.34.0, complete client-side filtering is supported for
1514
+ * <code>OperationMode.Client</code> and also in <code>OperationMode.Auto</code> if the
1515
+ * back-end count is lower than the threshold.
1513
1516
  * In this case, all types of filters will be applied on the client.
1514
- * See also: {@link sap.ui.model.odata.OperationMode.Auto}, {@link sap.ui.model.FilterType}.
1515
- *
1516
- * For the <code>OperationMode.Client</code> and <code>OperationMode.Auto</code>, you may also specify the
1517
- * binding parameter <code>useServersideApplicationFilters</code> in the constructor. If it is set, the filters of type
1518
- * <code>Application</code> will always be applied on the backend and trigger an OData request.
1519
- * See the constructor documentation for more information.
1520
- *
1521
- * @param {sap.ui.model.Filter[]|sap.ui.model.Filter} aFilters Filter or array of filters to apply
1522
- * @param {sap.ui.model.FilterType} sFilterType Type of the filter which should be adjusted. If it is not given,
1517
+ * See also: {@link sap.ui.model.odata.OperationMode.Auto} and {@link sap.ui.model.FilterType}.
1518
+ *
1519
+ * For the <code>OperationMode.Client</code> and <code>OperationMode.Auto</code>, you may also
1520
+ * specify the <code>useServersideApplicationFilters</code> binding parameter when creating an
1521
+ * instance. If it is set, the filters of type <code>Application</code> will always be applied
1522
+ * on the back end and trigger an OData request.
1523
+ * For more information, see {@link sap.ui.model.odata.v2.ODataModel#bindTree}.
1524
+ *
1525
+ * @param {sap.ui.model.Filter[]|sap.ui.model.Filter} aFilters
1526
+ * Filter or array of filters to apply
1527
+ * @param {sap.ui.model.FilterType} sFilterType
1528
+ * Type of the filter which should be adjusted. If it is not given,
1523
1529
  * the type <code>FilterType.Control</code> is assumed
1524
1530
  * @return {this} Returns <code>this</code> to facilitate method chaining
1525
1531
  * @see sap.ui.model.TreeBinding.prototype.filter
@@ -1955,23 +1961,20 @@ sap.ui.define([
1955
1961
  };
1956
1962
 
1957
1963
  /**
1958
- * Initialize binding. Fires a change if data is already available ($expand) or a refresh.
1959
- * If metadata is not yet available, do nothing, method will be called again when
1960
- * metadata is loaded.
1964
+ * Initializes the binding. Fires a refresh event once initialization is completed in case the
1965
+ * binding is resolved, or immediately in case it is unresolved.
1961
1966
  *
1962
1967
  * @returns {sap.ui.model.odata.v2.ODataTreeBinding} The binding instance
1968
+ *
1963
1969
  * @public
1964
1970
  */
1965
- ODataTreeBinding.prototype.initialize = function() {
1971
+ ODataTreeBinding.prototype.initialize = function () {
1966
1972
  if (this.oModel.oMetadata && this.oModel.oMetadata.isLoaded() && this.bInitial) {
1967
-
1968
- // relative bindings will be properly initialized once the context is set
1969
- var bIsRelative = this.isRelative();
1970
- if (!bIsRelative || (bIsRelative && this.oContext)) {
1971
- this._initialize();
1973
+ if (this.isResolved()) {
1974
+ this._initialize(this._fireRefresh.bind(this, {reason : ChangeReason.Refresh}));
1975
+ } else {
1976
+ this._fireRefresh({reason : ChangeReason.Refresh});
1972
1977
  }
1973
-
1974
- this._fireRefresh({reason: ChangeReason.Refresh});
1975
1978
  }
1976
1979
  return this;
1977
1980
  };
@@ -1979,17 +1982,20 @@ sap.ui.define([
1979
1982
  /**
1980
1983
  * Private initialize.
1981
1984
  * Triggers metadata checks for annotations and applies adapters if necessary.
1985
+ *
1986
+ * @param {function} fnFireEvent
1987
+ * A function which fires an event once the adapter has been applied
1988
+ * @returns {sap.ui.model.odata.v2.ODataTreeBinding}
1989
+ * The binding instance
1990
+ *
1982
1991
  * @private
1983
1992
  */
1984
- ODataTreeBinding.prototype._initialize = function () {
1993
+ ODataTreeBinding.prototype._initialize = function (fnFireEvent) {
1985
1994
  this.bInitial = false;
1986
1995
  this.bHasTreeAnnotations = this._hasTreeAnnotations();
1987
1996
  this.oEntityType = this._getEntityType();
1988
-
1989
- // build up the $select, based on the given select-properties and the known/necessary annotated properties
1990
1997
  this._processSelectParameters();
1991
-
1992
- this._applyAdapter();
1998
+ this._applyAdapter(fnFireEvent);
1993
1999
 
1994
2000
  return this;
1995
2001
  };
@@ -1998,9 +2004,10 @@ sap.ui.define([
1998
2004
  * Sets the binding context.
1999
2005
  *
2000
2006
  * @param {sap.ui.model.Context} [oContext] The new binding context
2007
+ *
2001
2008
  * @private
2002
2009
  */
2003
- ODataTreeBinding.prototype.setContext = function(oContext) {
2010
+ ODataTreeBinding.prototype.setContext = function (oContext) {
2004
2011
  if (oContext && oContext.isPreliminary() && !this.bUsePreliminaryContext) {
2005
2012
  return;
2006
2013
  }
@@ -2013,21 +2020,17 @@ sap.ui.define([
2013
2020
 
2014
2021
  if (Context.hasChanged(this.oContext, oContext)) {
2015
2022
  this.oContext = oContext;
2016
-
2017
2023
  if (!this.isRelative()) {
2018
2024
  return;
2019
2025
  }
2020
2026
 
2021
2027
  if (this.getResolvedPath()) {
2022
2028
  this.resetData();
2023
- this._initialize(); // triggers metadata/annotation check
2024
- this._fireChange({ reason: ChangeReason.Context });
2025
- } else {
2026
- // path could not be resolved, but some data was already available, so we fire a context-change
2027
- if (!isEmptyObject(this.oAllKeys) || !isEmptyObject(this.oKeys) || !isEmptyObject(this._aNodes)) {
2028
- this.resetData();
2029
- this._fireChange({ reason: ChangeReason.Context });
2030
- }
2029
+ this._initialize(this._fireChange.bind(this, {reason : ChangeReason.Context}));
2030
+ } else if (!isEmptyObject(this.oAllKeys) || !isEmptyObject(this.oKeys)
2031
+ || !isEmptyObject(this._aNodes)) { // binding is now unresolved, but has data
2032
+ this.resetData();
2033
+ this._fireChange({reason : ChangeReason.Context});
2031
2034
  }
2032
2035
  }
2033
2036
  };
@@ -2078,57 +2081,68 @@ sap.ui.define([
2078
2081
  };
2079
2082
 
2080
2083
  /**
2081
- * Applies a TreeBindingAdapter, depending on the metadata.
2082
- * Either a hierarchical paging adapter (nav-props & annotations) or a
2083
- * flat paging adapter (magnitude) is applied.
2084
+ * Applies a TreeBindingAdapter, depending on the metadata. Either a hierarchical paging adapter
2085
+ * (nav-props & annotations) or a flat paging adapter (magnitude) is applied.
2086
+ *
2087
+ * @param {function} fnFireEvent A function which is called after the adapter has been applied
2084
2088
  * @private
2085
2089
  */
2086
- ODataTreeBinding.prototype._applyAdapter = function () {
2087
- var sMagnitudeAnnotation = "hierarchy-node-descendant-count-for";
2088
- var sSiblingRankAnnotation = "hierarchy-sibling-rank-for";
2089
- var sPreorderRankAnnotation = "hierarchy-preorder-rank-for";
2090
+ ODataTreeBinding.prototype._applyAdapter = function (fnFireEvent) {
2091
+ var sAbsolutePath, oEntityType, i, j, sKeyProperty, sName,
2092
+ sAdapterModuleName = "sap/ui/model/odata/ODataTreeBindingAdapter",
2093
+ sMagnitudeAnnotation = "hierarchy-node-descendant-count-for",
2094
+ sPreorderRankAnnotation = "hierarchy-preorder-rank-for",
2095
+ sSiblingRankAnnotation = "hierarchy-sibling-rank-for",
2096
+ that = this;
2090
2097
 
2091
- if (this.bHasTreeAnnotations) {
2098
+ if (!this.bHasTreeAnnotations && !this.oNavigationPaths) {
2099
+ Log.error("Neither hierarchy annotations, "
2100
+ + "nor navigation properties are specified to build the tree.", this);
2101
+ return;
2102
+ }
2092
2103
 
2093
- var sAbsolutePath = this.getResolvedPath();
2104
+ if (this.bHasTreeAnnotations) {
2105
+ sAbsolutePath = this.getResolvedPath();
2094
2106
  // remove url parameters if any to get correct path for entity type resolving
2095
2107
  if (sAbsolutePath.indexOf("?") !== -1) {
2096
2108
  sAbsolutePath = sAbsolutePath.split("?")[0];
2097
2109
  }
2098
- var oEntityType = this.oModel.oMetadata._getEntityTypeByPath(sAbsolutePath);
2099
- var that = this;
2100
-
2110
+ oEntityType = this.oModel.oMetadata._getEntityTypeByPath(sAbsolutePath);
2101
2111
  //Check if all required properties are available
2102
2112
  each(oEntityType.property, function(iIndex, oProperty) {
2103
2113
  if (!oProperty.extensions) {
2104
2114
  return true;
2105
2115
  }
2106
2116
  each(oProperty.extensions, function(iIndex, oExtension) {
2107
- var sName = oExtension.name;
2117
+ sName = oExtension.name;
2108
2118
  if (oExtension.namespace === that.oModel.oMetadata.mNamespaces["sap"] &&
2109
- (sName == sMagnitudeAnnotation || sName == sSiblingRankAnnotation || sName == sPreorderRankAnnotation)) {
2119
+ (sName == sMagnitudeAnnotation || sName == sSiblingRankAnnotation
2120
+ || sName == sPreorderRankAnnotation)) {
2110
2121
  that.oTreeProperties[sName] = oProperty.name;
2111
2122
  }
2112
2123
  });
2113
2124
  });
2114
-
2115
2125
  //perform magnitude annotation check
2116
- this.oTreeProperties[sMagnitudeAnnotation] = this.oTreeProperties[sMagnitudeAnnotation] ||
2117
- (this.mParameters.treeAnnotationProperties && this.mParameters.treeAnnotationProperties.hierarchyNodeDescendantCountFor);
2118
-
2119
- // apply the flat auto-expand mixin if the necessary annotations were found (in Server-Mode)
2120
- // exception: the binding runs in operation-mode "Client"
2121
- // In this case there is no need for the advanced auto expand, since everything is loaded anyway.
2122
- if (this.oTreeProperties[sMagnitudeAnnotation] && this.sOperationMode == OperationMode.Server) {
2123
- var i, j, sKeyProperty;
2126
+ this.oTreeProperties[sMagnitudeAnnotation] = this.oTreeProperties[sMagnitudeAnnotation]
2127
+ || (this.mParameters.treeAnnotationProperties
2128
+ && this.mParameters.treeAnnotationProperties.hierarchyNodeDescendantCountFor);
2129
+ // apply flat auto-expand mixin if the necessary annotations were found (in Server-Mode)
2130
+ // exception: the binding runs in operation-mode "Client". In this case, there is no
2131
+ // need for the advanced auto expand, since everything is loaded anyway.
2132
+ if (this.oTreeProperties[sMagnitudeAnnotation]
2133
+ && this.sOperationMode == OperationMode.Server) {
2124
2134
  // Add Flat-specific tree properties
2125
- this.oTreeProperties[sSiblingRankAnnotation] = this.oTreeProperties[sSiblingRankAnnotation] ||
2126
- (this.mParameters.treeAnnotationProperties && this.mParameters.treeAnnotationProperties.hierarchySiblingRankFor);
2127
- this.oTreeProperties[sPreorderRankAnnotation] = this.oTreeProperties[sPreorderRankAnnotation] ||
2128
- (this.mParameters.treeAnnotationProperties && this.mParameters.treeAnnotationProperties.hierarchyPreorderRankFor);
2129
-
2135
+ this.oTreeProperties[sSiblingRankAnnotation] =
2136
+ this.oTreeProperties[sSiblingRankAnnotation]
2137
+ || (this.mParameters.treeAnnotationProperties
2138
+ && this.mParameters.treeAnnotationProperties.hierarchySiblingRankFor);
2139
+ this.oTreeProperties[sPreorderRankAnnotation] =
2140
+ this.oTreeProperties[sPreorderRankAnnotation]
2141
+ || (this.mParameters.treeAnnotationProperties
2142
+ && this.mParameters.treeAnnotationProperties.hierarchyPreorderRankFor);
2130
2143
  if (this.mParameters.restoreTreeStateAfterChange) {
2131
- if (this.oTreeProperties[sSiblingRankAnnotation] && this.oTreeProperties[sPreorderRankAnnotation]) {
2144
+ if (this.oTreeProperties[sSiblingRankAnnotation]
2145
+ && this.oTreeProperties[sPreorderRankAnnotation]) {
2132
2146
  this._bRestoreTreeStateAfterChange = true;
2133
2147
  // Collect entity type key properties
2134
2148
  this._aTreeKeyProperties = [];
@@ -2136,21 +2150,23 @@ sap.ui.define([
2136
2150
  this._aTreeKeyProperties.push(oEntityType.key.propertyRef[i].name);
2137
2151
  }
2138
2152
  } else {
2139
- Log.warning("Tree state restoration not possible: Missing annotation \"hierarchy-sibling-rank-for\" and/or \"hierarchy-preorder-rank-for\"");
2153
+ Log.warning("Tree state restoration not possible: Missing annotation "
2154
+ + "\"hierarchy-sibling-rank-for\" and/or "
2155
+ + "\"hierarchy-preorder-rank-for\"");
2140
2156
  this._bRestoreTreeStateAfterChange = false;
2141
2157
  }
2142
2158
  } else {
2143
2159
  this._bRestoreTreeStateAfterChange = false;
2144
2160
  }
2145
-
2146
-
2147
- // make sure the magnitude is added to the $select if it was not added by the application anyway
2161
+ // make sure magnitude is added to $select if not added by the application anyway
2148
2162
  if (this.mParameters && this.mParameters.select) {
2149
- if (this.mParameters.select.indexOf(this.oTreeProperties[sMagnitudeAnnotation]) === -1) {
2163
+ if (this.mParameters.select.indexOf(this.oTreeProperties[sMagnitudeAnnotation])
2164
+ === -1) {
2150
2165
  this.mParameters.select += "," + this.oTreeProperties[sMagnitudeAnnotation];
2151
2166
  }
2152
2167
  if (this._bRestoreTreeStateAfterChange) {
2153
- // Retrieve all key properties to allow filtering on them during tree state restoration (PreorderPosition requests)
2168
+ // Retrieve all key properties to allow filtering on them during tree state
2169
+ // restoration (PreorderPosition requests)
2154
2170
  for (j = this._aTreeKeyProperties.length - 1; j >= 0; j--) {
2155
2171
  sKeyProperty = this._aTreeKeyProperties[j];
2156
2172
  if (this.mParameters.select.indexOf(sKeyProperty) === -1) {
@@ -2160,25 +2176,19 @@ sap.ui.define([
2160
2176
  }
2161
2177
  this.sCustomParams = this.oModel.createCustomParams(this.mParameters);
2162
2178
  }
2163
- // apply flat paging adapter
2164
- var ODataTreeBindingFlat = sap.ui.requireSync("sap/ui/model/odata/ODataTreeBindingFlat");
2165
- ODataTreeBindingFlat.apply(this);
2166
- } else {
2167
- // apply hierarchical paging adapter
2168
- var ODataTreeBindingAdapter = sap.ui.requireSync("sap/ui/model/odata/ODataTreeBindingAdapter");
2169
- ODataTreeBindingAdapter.apply(this);
2170
- }
2171
- } else if (this.oNavigationPaths) {
2172
- // apply hierarchical paging adapter
2173
- var ODataTreeBindingAdapter = sap.ui.requireSync("sap/ui/model/odata/ODataTreeBindingAdapter");
2174
- ODataTreeBindingAdapter.apply(this);
2175
- } else {
2176
- Log.error("Neither hierarchy annotations, nor navigation properties are specified to build the tree.", this);
2179
+ sAdapterModuleName = "sap/ui/model/odata/ODataTreeBindingFlat";
2180
+ }
2177
2181
  }
2182
+ sap.ui.require([sAdapterModuleName], function (oAdapterModule) {
2183
+ oAdapterModule.apply(that);
2184
+ fnFireEvent();
2185
+ });
2178
2186
  };
2179
2187
 
2180
2188
  /**
2181
- * Internal function to evaluate the select parameters for the binding.
2189
+ * Internal function to build up the $select, based on the select from the binding parameters
2190
+ * and the properties being the target of the tree annotations.
2191
+ *
2182
2192
  * @private
2183
2193
  */
2184
2194
  ODataTreeBinding.prototype._processSelectParameters = function () {
@@ -2313,10 +2323,13 @@ sap.ui.define([
2313
2323
  };
2314
2324
 
2315
2325
  /**
2316
- * Sets the rootLevel
2317
- * The root level is the level of the topmost tree nodes, which will be used as an entry point for OData services.
2318
- * This is only possible (and necessary) for OData services implementing the hierarchy annotation specification,
2319
- * or when providing the annotation information locally as a binding parameter. See the constructor for API documentation on this.
2326
+ * Sets the <code>rootLevel</code>.
2327
+ * The root level is the level of the topmost tree nodes that will be used as an entry point
2328
+ * for OData services.
2329
+ * This is only possible (and necessary) for OData services implementing the hierarchy
2330
+ * annotation specification,
2331
+ * or when providing the annotation information locally as a binding parameter.
2332
+ * For more information, see {@link sap.ui.model.odata.v2.ODataModel#bindTree}.
2320
2333
  * @param {int} iRootLevel
2321
2334
  *
2322
2335
  * @public
@@ -0,0 +1,129 @@
1
+ /*!
2
+ * OpenUI5
3
+ * (c) Copyright 2009-2021 SAP SE or an SAP affiliate company.
4
+ * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
+ */
6
+
7
+ //Provides class sap.ui.model.odata.v2._CreatedContextsCache
8
+ sap.ui.define([
9
+ ], function () {
10
+ "use strict";
11
+
12
+ /**
13
+ * Maps a binding path and a list ID, as given as <code>createdEntitiesKey</code> parameter to
14
+ * {@link sap.ui.model.odata.v2.ODataModel#bindList}, to a list of contexts for created
15
+ * entities, if the entities are created via
16
+ * {@link sap.ui.model.odata.v2.ODataListBinding#create}.
17
+ *
18
+ * @alias sap.ui.model.odata.v2._CreatedContextsCache
19
+ * @constructor
20
+ * @private
21
+ */
22
+ function _CreatedContextsCache() {
23
+ // binding path => { list ID => array of created OData V2 contexts }
24
+ this.mCache = {};
25
+ }
26
+
27
+ /**
28
+ * Adds a context to the list of contexts for created entities for the given path and list ID.
29
+ *
30
+ * @param {sap.ui.model.odata.v2.Context} oCreatedContext
31
+ * The context for a created entity
32
+ * @param {string} sPath
33
+ * The resolved binding path
34
+ * @param {string} sListID
35
+ * The identifier for the list showing the data
36
+ *
37
+ * @private
38
+ */
39
+ _CreatedContextsCache.prototype.addContext = function (oCreatedContext, sPath, sListID) {
40
+ var aContexts, mListIDToContexts;
41
+
42
+ mListIDToContexts = this.mCache[sPath];
43
+ if (!mListIDToContexts) {
44
+ mListIDToContexts = this.mCache[sPath] = {};
45
+ }
46
+ aContexts = mListIDToContexts[sListID];
47
+ if (!aContexts) {
48
+ aContexts = mListIDToContexts[sListID] = [];
49
+ }
50
+ // currently we support only bAtEnd === false in ODataListBinding#create
51
+ aContexts.unshift(oCreatedContext);
52
+ };
53
+
54
+ /**
55
+ * Finds and removes a context from the list of contexts for created entities.
56
+ *
57
+ * @param {sap.ui.model.odata.v2.Context} oCreatedContext
58
+ * The context for a created entity to be removed
59
+ *
60
+ * @private
61
+ */
62
+ _CreatedContextsCache.prototype.findAndRemoveContext = function (oCreatedContext) {
63
+ var that = this;
64
+
65
+ Object.keys(this.mCache).some(function (sCachePath) {
66
+ var mListIDToContexts = that.mCache[sCachePath];
67
+
68
+ return Object.keys(mListIDToContexts).some(function (sListID) {
69
+ var aContexts = that.mCache[sCachePath][sListID];
70
+
71
+ if (aContexts.includes(oCreatedContext)) {
72
+ that.removeContext(oCreatedContext, sCachePath, sListID);
73
+
74
+ return true;
75
+ }
76
+
77
+ return false;
78
+ });
79
+ });
80
+ };
81
+
82
+ /**
83
+ * Gets the contexts for created entities for the given path and list ID.
84
+ *
85
+ * @param {string} [sPath]
86
+ * The resolved binding path
87
+ * @param {string} sListID
88
+ * The identifier for the list showing the data
89
+ * @returns {sap.ui.model.odata.v2.Context[]}
90
+ * An array containing all contexts for created entities for the given path and list ID;
91
+ * returns an empty array if no path is given
92
+ *
93
+ * @private
94
+ */
95
+ _CreatedContextsCache.prototype.getContexts = function (sPath, sListID) {
96
+ var mListIDToContexts = this.mCache[sPath],
97
+ aContexts = mListIDToContexts && mListIDToContexts[sListID];
98
+
99
+ return aContexts ? aContexts.slice() : [];
100
+ };
101
+
102
+ /**
103
+ * Removes a context from the list of contexts for created entities for the given path and list
104
+ * ID.
105
+ *
106
+ * @param {sap.ui.model.odata.v2.Context} oCreatedContext
107
+ * The context for a created entity to be removed
108
+ * @param {sPath} sPath
109
+ * The resolved binding path
110
+ * @param {string} sListID
111
+ * The identifier for the list showing the data
112
+ *
113
+ * @private
114
+ */
115
+ _CreatedContextsCache.prototype.removeContext = function (oCreatedContext, sPath, sListID) {
116
+ var mListIDToContexts = this.mCache[sPath],
117
+ aContexts = mListIDToContexts[sListID];
118
+
119
+ aContexts.splice(aContexts.indexOf(oCreatedContext), 1);
120
+ if (!aContexts.length) {
121
+ delete mListIDToContexts[sListID];
122
+ if (!Object.keys(mListIDToContexts).length) {
123
+ delete this.mCache[sPath];
124
+ }
125
+ }
126
+ };
127
+
128
+ return _CreatedContextsCache;
129
+ }, /* bExport= */ false);
@@ -98,7 +98,7 @@ sap.ui.define([
98
98
  * @hideconstructor
99
99
  * @public
100
100
  * @since 1.39.0
101
- * @version 1.93.3
101
+ * @version 1.96.2
102
102
  */
103
103
  var Context = BaseContext.extend("sap.ui.model.odata.v4.Context", {
104
104
  constructor : function (oModel, oBinding, sPath, iIndex, oCreatePromise, iGeneration) {
@@ -1440,7 +1440,8 @@ sap.ui.define([
1440
1440
  * @since 1.67.0
1441
1441
  */
1442
1442
  Context.prototype.setProperty = function (sPath, vValue, sGroupId, bRetry) {
1443
- var oGroupLock = null;
1443
+ var oGroupLock = null,
1444
+ that = this;
1444
1445
 
1445
1446
  this.oBinding.checkSuspended();
1446
1447
  if (typeof vValue === "function" || (vValue && typeof vValue === "object")) {
@@ -1456,6 +1457,8 @@ sap.ui.define([
1456
1457
  if (oGroupLock) {
1457
1458
  oGroupLock.unlock(true);
1458
1459
  }
1460
+ that.oModel.reportError("Failed to update path " + that.oModel.resolve(sPath, that),
1461
+ sClassName, oError);
1459
1462
  throw oError;
1460
1463
  });
1461
1464
  };
@@ -1559,4 +1562,4 @@ sap.ui.define([
1559
1562
  Object.defineProperty(oModule, "VIRTUAL", {value : iVIRTUAL});
1560
1563
 
1561
1564
  return oModule;
1562
- }, /* bExport= */ false);
1565
+ }, /* bExport= */ false);
@@ -13,8 +13,8 @@ sap.ui.define([
13
13
  ], function (_Helper, SyncPromise, ChangeReason, OperationMode, Context) {
14
14
  "use strict";
15
15
 
16
- var aChangeReasonPrecedence = [ChangeReason.Change, ChangeReason.Refresh, ChangeReason.Sort,
17
- ChangeReason.Filter],
16
+ var aChangeReasonPrecedence = [ChangeReason.Context, ChangeReason.Change, ChangeReason.Refresh,
17
+ ChangeReason.Sort, ChangeReason.Filter],
18
18
  sClassName = "sap.ui.model.odata.v4.ODataBinding",
19
19
  // Whether a path segment is an index or contains a transient predicate
20
20
  rIndexOrTransientPredicate = /\/\d|\(\$uid=/;
@@ -155,9 +155,9 @@ sap.ui.define([
155
155
  throw new Error("Unsupported binding parameter $$inheritExpandSelect: "
156
156
  + "binding is not an operation binding");
157
157
  }
158
- if (mParameters.$expand || mParameters.$select) {
158
+ if (mParameters.$expand) {
159
159
  throw new Error("Must not set parameter $$inheritExpandSelect on a binding "
160
- + "which has a $expand or $select binding parameter");
160
+ + "which has a $expand binding parameter");
161
161
  }
162
162
  break;
163
163
  case "$$operationMode":
@@ -291,7 +291,6 @@ sap.ui.define([
291
291
  }
292
292
  oCache.$deepResourcePath = sDeepResourcePath;
293
293
  oCache.$generation = iGeneration;
294
- oCache.$resourcePath = sResourcePath;
295
294
  }
296
295
  } else { // absolute binding
297
296
  oCache = this.doCreateCache(sResourcePath, this.mCacheQueryOptions);
@@ -1306,4 +1305,4 @@ sap.ui.define([
1306
1305
  });
1307
1306
 
1308
1307
  return asODataBinding;
1309
- }, /* bExport= */ false);
1308
+ }, /* bExport= */ false);