@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
@@ -10,7 +10,7 @@
10
10
  * @alias module:sap/base/util/restricted/_unionWith
11
11
  * @author SAP SE
12
12
  * @since 1.81
13
- * @version 1.93.3
13
+ * @version 1.96.2
14
14
  * @private
15
15
  * @ui5-restricted
16
16
  */
@@ -10,7 +10,7 @@
10
10
  * @alias module:sap/base/util/restricted/_uniq
11
11
  * @author SAP SE
12
12
  * @since 1.71
13
- * @version 1.93.3
13
+ * @version 1.96.2
14
14
  * @private
15
15
  * @ui5-restricted
16
16
  */
@@ -10,7 +10,7 @@
10
10
  * @alias module:sap/base/util/restricted/_uniqBy
11
11
  * @author SAP SE
12
12
  * @since 1.71
13
- * @version 1.93.3
13
+ * @version 1.96.2
14
14
  * @private
15
15
  * @ui5-restricted
16
16
  */
@@ -10,7 +10,7 @@
10
10
  * @alias module:sap/base/util/restricted/_uniqWith
11
11
  * @author SAP SE
12
12
  * @since 1.71
13
- * @version 1.93.3
13
+ * @version 1.96.2
14
14
  * @private
15
15
  * @ui5-restricted
16
16
  */
@@ -10,7 +10,7 @@
10
10
  * @alias module:sap/base/util/restricted/_without
11
11
  * @author SAP SE
12
12
  * @since 1.80
13
- * @version 1.93.3
13
+ * @version 1.96.2
14
14
  * @private
15
15
  * @ui5-restricted
16
16
  */
@@ -10,7 +10,7 @@
10
10
  * @alias module:sap/base/util/restricted/_xor
11
11
  * @author SAP SE
12
12
  * @since 1.80
13
- * @version 1.93.3
13
+ * @version 1.96.2
14
14
  * @private
15
15
  * @ui5-restricted
16
16
  */
@@ -10,7 +10,7 @@
10
10
  * @alias module:sap/base/util/restricted/_xorBy
11
11
  * @author SAP SE
12
12
  * @since 1.80
13
- * @version 1.93.3
13
+ * @version 1.96.2
14
14
  * @private
15
15
  * @ui5-restricted
16
16
  */
@@ -10,7 +10,7 @@
10
10
  * @alias module:sap/base/util/restricted/_xorWith
11
11
  * @author SAP SE
12
12
  * @since 1.80
13
- * @version 1.93.3
13
+ * @version 1.96.2
14
14
  * @private
15
15
  * @ui5-restricted
16
16
  */
@@ -10,7 +10,7 @@
10
10
  * @alias module:sap/base/util/restricted/_zipObject
11
11
  * @author SAP SE
12
12
  * @since 1.81
13
- * @version 1.93.3
13
+ * @version 1.96.2
14
14
  * @private
15
15
  * @ui5-restricted
16
16
  */
@@ -10,7 +10,7 @@
10
10
  * @alias module:sap/base/util/restricted/_zipObjectDeep
11
11
  * @author SAP SE
12
12
  * @since 1.81
13
- * @version 1.93.3
13
+ * @version 1.96.2
14
14
  * @private
15
15
  * @ui5-restricted
16
16
  */
@@ -11,7 +11,7 @@
11
11
  * This API is independent from any other part of the UI5 framework. This allows it to be loaded beforehand, if it is needed, to create the UI5 bootstrap
12
12
  * dynamically depending on the capabilities of the browser or device.
13
13
  *
14
- * @version 1.93.3
14
+ * @version 1.96.2
15
15
  * @namespace
16
16
  * @name sap.ui.Device
17
17
  * @public
@@ -32,7 +32,7 @@ if (typeof window.sap.ui !== "object") {
32
32
 
33
33
  //Skip initialization if API is already available
34
34
  if (typeof window.sap.ui.Device === "object" || typeof window.sap.ui.Device === "function") {
35
- var apiVersion = "1.93.3";
35
+ var apiVersion = "1.96.2";
36
36
  window.sap.ui.Device._checkAPIVersion(apiVersion);
37
37
  return;
38
38
  }
@@ -105,7 +105,7 @@ if (typeof window.sap.ui !== "object") {
105
105
 
106
106
  //Only used internal to make clear when Device API is loaded in wrong version
107
107
  Device._checkAPIVersion = function(sVersion) {
108
- var v = "1.93.3";
108
+ var v = "1.96.2";
109
109
  if (v != sVersion) {
110
110
  oLogger.log(WARNING, "Device API version differs: " + v + " <-> " + sVersion);
111
111
  }
@@ -325,14 +325,18 @@ if (typeof window.sap.ui !== "object") {
325
325
  var rVersion = /Windows NT (\d+).(\d)/i;
326
326
  var uaResult = userAgent.match(rVersion);
327
327
  var sVersionStr = "";
328
- if (uaResult[1] == "6") {
329
- if (uaResult[2] == 1) {
330
- sVersionStr = "7";
331
- } else if (uaResult[2] > 1) {
332
- sVersionStr = "8";
328
+ // Using Lighthouse tool within chrome on windows does not provide a valid userAgent
329
+ // navigator.platform is 'Win' but navigator.userAgent indicates macOS
330
+ if (uaResult) {
331
+ if (uaResult[1] == "6") {
332
+ if (uaResult[2] == 1) {
333
+ sVersionStr = "7";
334
+ } else if (uaResult[2] > 1) {
335
+ sVersionStr = "8";
336
+ }
337
+ } else {
338
+ sVersionStr = uaResult[1];
333
339
  }
334
- } else {
335
- sVersionStr = uaResult[1];
336
340
  }
337
341
  return {
338
342
  "name": OS.WINDOWS,
@@ -1479,10 +1483,11 @@ if (typeof window.sap.ui !== "object") {
1479
1483
  /**
1480
1484
  * Provides a basic categorization of the used device based on various indicators.
1481
1485
  *
1482
- * These indicators are for example the support of touch events, the screen size, the used operation system or
1483
- * the user agent of the browser.
1486
+ * These indicators are, for example, the support of touch events, the used operating system, and the user agent of the browser.
1484
1487
  *
1485
- * <b>Note:</b> Depending on the capabilities of the device it is also possible that multiple flags are set to <code>true</code>.
1488
+ * <b>Note:</b> There is no easy way to precisely determine the used device from the information provided by the browser. We therefore rely especially on the user agent.
1489
+ * In combination with given device capabilities, it is therefore possible that multiple flags are set to <code>true</code>.
1490
+ * This is mostly the case for desktop devices with touch capability, and for mobile devices requesting web pages as desktop pages.
1486
1491
  *
1487
1492
  * @namespace
1488
1493
  * @name sap.ui.Device.system
@@ -1493,8 +1498,7 @@ if (typeof window.sap.ui !== "object") {
1493
1498
  *
1494
1499
  * Furthermore, a CSS class <code>sap-tablet</code> is added to the document root element.
1495
1500
  *
1496
- * <b>Note:</b> This flag is also true for some browsers on desktop devices running on Windows 8 or higher. Also see the
1497
- * documentation for {@link sap.ui.Device.system.combi} devices.
1501
+ * <b>Note:</b> This flag is also <code>true</code> for some browsers running on desktop devices. See the documentation for {@link sap.ui.Device.system.combi} devices.
1498
1502
  * You can use the following logic to ensure that the current device is a tablet device:
1499
1503
  *
1500
1504
  * <pre>
@@ -1512,6 +1516,10 @@ if (typeof window.sap.ui !== "object") {
1512
1516
  *
1513
1517
  * Furthermore, a CSS class <code>sap-phone</code> is added to the document root element.
1514
1518
  *
1519
+ * <b>Note:</b> In case a phone requests a web page as a "Desktop Page", it is possible
1520
+ * that all properties except <code>Device.system.phone</code> are set to <code>true</code>.
1521
+ * In this case it is not possible to differentiate between tablet and phone relying on the user agent.
1522
+ *
1515
1523
  * @name sap.ui.Device.system.phone
1516
1524
  * @type boolean
1517
1525
  * @public
@@ -1521,6 +1529,10 @@ if (typeof window.sap.ui !== "object") {
1521
1529
  *
1522
1530
  * Furthermore, a CSS class <code>sap-desktop</code> is added to the document root element.
1523
1531
  *
1532
+ * <b>Note:</b> This flag is by default also true for Safari on iPads running on iOS 13 or higher.
1533
+ * The end user can change this behavior by disabling "Request Desktop Website -> All websites" within the iOS settings.
1534
+ * See also the documentation for {@link sap.ui.Device.system.combi} devices.
1535
+ *
1524
1536
  * @name sap.ui.Device.system.desktop
1525
1537
  * @type boolean
1526
1538
  * @public
@@ -1530,8 +1542,7 @@ if (typeof window.sap.ui !== "object") {
1530
1542
  *
1531
1543
  * Furthermore, a CSS class <code>sap-combi</code> is added to the document root element.
1532
1544
  *
1533
- * <b>Note:</b> This property is mainly for Microsoft Windows 8 (and following) devices where the mouse and touch event may be supported
1534
- * natively by the browser being used. This property is set to <code>true</code> only when both mouse and touch event are natively supported.
1545
+ * <b>Note:</b> This property is set to <code>true</code> only when both a desktop and a mobile device is detected.
1535
1546
  *
1536
1547
  * @name sap.ui.Device.system.combi
1537
1548
  * @type boolean
@@ -1554,15 +1565,13 @@ if (typeof window.sap.ui !== "object") {
1554
1565
 
1555
1566
  Device.system = {};
1556
1567
 
1557
- function getSystem(simMobileOnDesktop, customUA) {
1558
- var bTabletDetected = isTablet(customUA);
1559
- var isWin8Upwards = Device.os.windows && Device.os.version >= 8;
1560
- var isWin7 = Device.os.windows && Device.os.version === 7;
1568
+ function getSystem(customUA) {
1569
+ var bTabletDetected = !!isTablet(customUA);
1561
1570
 
1562
1571
  var oSystem = {};
1563
- oSystem.tablet = !!(((Device.support.touch && !isWin7) || isWin8Upwards || simMobileOnDesktop) && bTabletDetected);
1564
- oSystem.phone = !!(((Device.support.touch && !isWin7) || simMobileOnDesktop) && !bTabletDetected);
1565
- oSystem.desktop = !!((!oSystem.tablet && !oSystem.phone) || isWin8Upwards || isWin7 || Device.os.linux || Device.os.macintosh);
1572
+ oSystem.tablet = bTabletDetected;
1573
+ oSystem.phone = Device.support.touch && !bTabletDetected;
1574
+ oSystem.desktop = !!((!oSystem.tablet && !oSystem.phone) || Device.os.windows || Device.os.linux || Device.os.macintosh);
1566
1575
  oSystem.combi = oSystem.desktop && oSystem.tablet;
1567
1576
  oSystem.SYSTEMTYPE = SYSTEMTYPE;
1568
1577
 
@@ -1576,7 +1585,7 @@ if (typeof window.sap.ui !== "object") {
1576
1585
  var sUserAgent = customUA || navigator.userAgent;
1577
1586
  if (Device.os.ios) {
1578
1587
  return /ipad/i.test(sUserAgent);
1579
- } else if (Device.os.macintosh || Device.os.linux) {
1588
+ } else if (Device.os.windows || Device.os.macintosh || Device.os.linux) {
1580
1589
  // For iOS:
1581
1590
  // With iOS 13 the string 'iPad' was removed from the user agent string through a browser setting, which is applied on all sites by default:
1582
1591
  // "Request Desktop Website -> All websites" (for more infos see: https://forums.developer.apple.com/thread/119186).
@@ -1588,11 +1597,7 @@ if (typeof window.sap.ui !== "object") {
1588
1597
  return Device.support.touch;
1589
1598
  } else {
1590
1599
  //in real mobile device
1591
- if (Device.support.touch) {
1592
- if (Device.os.windows && Device.os.version >= 8) {
1593
- return true;
1594
- }
1595
-
1600
+ if (Device.support.touch) { // eslint-disable-line no-lonely-if
1596
1601
  if (Device.browser.chrome && Device.os.android && Device.os.version >= 4.4) {
1597
1602
  // From Android version 4.4, WebView also uses Chrome as Kernel.
1598
1603
  // We can use the user agent pattern defined in Chrome to do phone/tablet detection
@@ -1641,8 +1646,8 @@ if (typeof window.sap.ui !== "object") {
1641
1646
  }
1642
1647
  }
1643
1648
 
1644
- function setSystem(simMobileOnDesktop, customUA) {
1645
- Device.system = getSystem(simMobileOnDesktop, customUA);
1649
+ function setSystem(customUA) {
1650
+ Device.system = getSystem(customUA);
1646
1651
  if (Device.system.tablet || Device.system.phone) {
1647
1652
  Device.browser.mobile = true;
1648
1653
  }
@@ -1951,16 +1956,6 @@ if (typeof window.sap.ui !== "object") {
1951
1956
  iClearFlagTimeout = null;
1952
1957
  }
1953
1958
 
1954
- //******** Update browser settings for test purposes ********
1955
-
1956
- Device._update = function(simMobileOnDesktop) {
1957
- ua = navigator.userAgent;
1958
- oLogger.log(WARNING, "Device API values manipulated: NOT PRODUCTIVE FEATURE!!! This should be only used for test purposes. Only use if you know what you are doing.");
1959
- setBrowser();
1960
- setOS();
1961
- setSystem(simMobileOnDesktop);
1962
- };
1963
-
1964
1959
  //********************************************************
1965
1960
 
1966
1961
  setResizeInfo(Device.resize);
@@ -18,7 +18,7 @@
18
18
  * sap.ui.lazyRequire("sap.ui.core.Control");
19
19
  * sap.ui.lazyRequire("sap.ui.commons.Button");
20
20
  *
21
- * @version 1.93.3
21
+ * @version 1.96.2
22
22
  * @author SAP SE
23
23
  * @public
24
24
  */
@@ -48,7 +48,7 @@ sap.ui.define([
48
48
  * The <code>sap</code> namespace is automatically registered with the
49
49
  * OpenAjax hub if it exists.
50
50
  *
51
- * @version 1.93.3
51
+ * @version 1.96.2
52
52
  * @namespace
53
53
  * @public
54
54
  * @name sap
@@ -61,7 +61,7 @@ sap.ui.define([
61
61
  * The <code>sap.ui</code> namespace is the central OpenAjax compliant entry
62
62
  * point for UI related JavaScript functionality provided by SAP.
63
63
  *
64
- * @version 1.93.3
64
+ * @version 1.96.2
65
65
  * @namespace
66
66
  * @name sap.ui
67
67
  * @public
@@ -75,8 +75,9 @@ sap.ui.define([
75
75
  * The version of the SAP UI Library
76
76
  * @type string
77
77
  */
78
- version: "1.93.3",
79
- buildinfo : { lastchange : "${lastchange}", buildtime : "${buildtime}" }
78
+ version: "1.96.2",
79
+ // buildinfo.lastchange is deprecated and is therefore defaulted to empty string
80
+ buildinfo : { lastchange : "", buildtime : "${buildtime}" }
80
81
  });
81
82
 
82
83
  var oCfgData = window["sap-ui-config"] || {};
@@ -206,7 +207,7 @@ sap.ui.define([
206
207
  } else {
207
208
  Log.debug("lazy stub for constructor '" + sFullClass + "' called.");
208
209
  }
209
- sap.ui.requireSync(sModuleName.replace(/\./g, "/"));
210
+ sap.ui.requireSync(sModuleName.replace(/\./g, "/")); // legacy-relevant: 'sap.ui.lazyRequire' is deprecated
210
211
  var oRealClass = oPackage[sClass];
211
212
  assert(typeof oRealClass === "function", "lazyRequire: oRealClass must be a function after loading");
212
213
  if ( oRealClass._sapUiLazyLoader ) {
@@ -267,7 +268,7 @@ sap.ui.define([
267
268
  } else {
268
269
  Log.debug("lazy stub for method '" + sFullClass + "." + sMethod + "' called.");
269
270
  }
270
- sap.ui.requireSync(sModuleName.replace(/\./g, "/"));
271
+ sap.ui.requireSync(sModuleName.replace(/\./g, "/")); // legacy-relevant: 'sap.ui.lazyRequire' is deprecated
271
272
  var oRealClass = oPackage[sClass];
272
273
  assert(typeof oRealClass === "function" || typeof oRealClass === "object", "lazyRequire: oRealClass must be a function or object after loading");
273
274
  assert(typeof oRealClass[sMethod] === "function", "lazyRequire: method must be a function");
@@ -4,6 +4,8 @@
4
4
  * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
5
  */
6
6
 
7
+ /* global Set */
8
+
7
9
  // Provides class sap.ui.base.DataType
8
10
  sap.ui.define([
9
11
  'sap/base/util/ObjectPath',
@@ -614,30 +616,34 @@ sap.ui.define([
614
616
 
615
617
  // ---- minimal support for interface types -------------------------------------------------------------------
616
618
 
617
- var mInterfaces = {};
619
+ var oInterfaces = new Set();
618
620
 
619
621
  /**
620
622
  * Registers the given array of type names as known interface types.
621
623
  * Only purpose is to enable the {@link #isInterfaceType} check.
622
624
  * @param {string[]} aTypes interface types to be registered
623
625
  * @private
624
- * @ui5-restricted sap.ui.base,sap.ui.core.Core
626
+ * @ui5-restricted sap.ui.core.Core
625
627
  */
626
628
  DataType.registerInterfaceTypes = function(aTypes) {
627
- for (var i = 0; i < aTypes.length; i++) {
628
- // eslint-disable-next-line no-new-wrappers
629
- ObjectPath.set(aTypes[i], mInterfaces[aTypes[i]] = new String(aTypes[i]));
630
- }
629
+ aTypes.forEach(function(sType) {
630
+ oInterfaces.add(sType);
631
+
632
+ // Defining the interface on global namespace for compatibility reasons.
633
+ // This has never been a public feature and it is strongly discouraged it be relied upon.
634
+ // An interface must always be referenced by a string literal, not via the global namespace.
635
+ ObjectPath.set(sType, sType);
636
+ });
631
637
  };
632
638
 
633
639
  /**
634
640
  * @param {string} sType name of type to check
635
641
  * @returns {boolean} whether the given type is known to be an interface type
636
642
  * @private
637
- * @ui5-restricted sap.ui.base,sap.ui.core.Core
643
+ * @ui5-restricted sap.ui.base.ManagedObject
638
644
  */
639
645
  DataType.isInterfaceType = function(sType) {
640
- return mInterfaces.hasOwnProperty(sType) && ObjectPath.get(sType) === mInterfaces[sType];
646
+ return oInterfaces.has(sType);
641
647
  };
642
648
 
643
649
 
@@ -23,7 +23,7 @@ sap.ui.define(['./Object', "sap/base/assert"],
23
23
  * @extends sap.ui.base.Object
24
24
  * @implements sap.ui.base.Poolable
25
25
  * @author SAP SE
26
- * @version 1.93.3
26
+ * @version 1.96.2
27
27
  * @alias sap.ui.base.Event
28
28
  * @public
29
29
  */
@@ -18,7 +18,7 @@ sap.ui.define(['./Event', './Object', './ObjectPool', "sap/base/assert"],
18
18
  * @abstract
19
19
  * @extends sap.ui.base.Object
20
20
  * @author SAP SE
21
- * @version 1.93.3
21
+ * @version 1.96.2
22
22
  * @public
23
23
  * @alias sap.ui.base.EventProvider
24
24
  */
@@ -46,22 +46,25 @@ sap.ui.define([
46
46
  });
47
47
  },
48
48
  "compare": function () {
49
- var ODataUtils;
49
+ var oODataUtils = sap.ui.require("sap/ui/model/odata/v4/ODataUtils")
50
+ || sap.ui.requireSync("sap/ui/model/odata/v4/ODataUtils");
50
51
 
51
- ODataUtils = sap.ui.requireSync("sap/ui/model/odata/v4/ODataUtils");
52
- return ODataUtils.compare.apply(ODataUtils, arguments);
52
+ return oODataUtils.compare.apply(oODataUtils, arguments);
53
53
  },
54
54
  "fillUriTemplate": function (sExpression, mData) {
55
55
  if (!URI.expand) {
56
+ // probing is not required since the presence of URI.expand is the indicator
57
+ // that URITemplate has been loaded already
56
58
  /* URITemplate = */ sap.ui.requireSync("sap/ui/thirdparty/URITemplate");
57
59
  }
60
+
58
61
  return URI.expand(sExpression.trim(), mData).toString();
59
62
  },
60
63
  "uriEncode": function () {
61
- var ODataUtils;
64
+ var oODataUtils = sap.ui.require("sap/ui/model/odata/ODataUtils")
65
+ || sap.ui.requireSync("sap/ui/model/odata/ODataUtils");
62
66
 
63
- ODataUtils = sap.ui.requireSync("sap/ui/model/odata/ODataUtils");
64
- return ODataUtils.formatValue.apply(ODataUtils, arguments);
67
+ return oODataUtils.formatValue.apply(oODataUtils, arguments);
65
68
  }
66
69
  },
67
70
  "parseFloat": parseFloat,
@@ -5,12 +5,9 @@
5
5
  */
6
6
 
7
7
  // Provides class sap.ui.base.Interface
8
- sap.ui.define([], function() {
8
+ sap.ui.define(['sap/ui/base/Object'], function(BaseObject) {
9
9
  "use strict";
10
10
 
11
- // lazy dependency to avoid cycle
12
- var BaseObject;
13
-
14
11
  /**
15
12
  * Constructs a facade for the given object, containing only the named methods.
16
13
  *
@@ -31,58 +28,15 @@ sap.ui.define([], function() {
31
28
  * no internals of the class can be accessed.
32
29
  *
33
30
  * @author Malte Wedel, Daniel Brinkmann
34
- * @version 1.93.3
31
+ * @version 1.96.2
35
32
  * @param {sap.ui.base.Object} oObject
36
33
  * Object for which a facade should be created
37
34
  * @param {string[]} aMethods
38
35
  * Names of the methods, that should be available in the new facade
39
- *
40
36
  * @public
41
37
  * @alias sap.ui.base.Interface
42
38
  */
43
- // _bReturnFacade: If true, the return value of a function call is this created Interface instance instead of the BaseObject interface
44
- var Interface = function(oObject, aMethods, _bReturnFacade) {
45
-
46
- // if object is null or undefined, return itself
47
- if (!oObject) {
48
- return oObject;
49
- }
50
-
51
- // resolve lazy dependency
52
- BaseObject = BaseObject || sap.ui.requireSync('sap/ui/base/Object');
53
-
54
- function fCreateDelegator(oObject, sMethodName) {
55
- return function() {
56
- // return oObject[sMethodName].apply(oObject, arguments);
57
- var tmp = oObject[sMethodName].apply(oObject, arguments);
58
- // to avoid to hide the implementation behind the interface you need
59
- // to override the getInterface function in the object or create the interface with bFacade = true
60
- if (_bReturnFacade) {
61
- return this;
62
- } else {
63
- return (tmp instanceof BaseObject) ? tmp.getInterface() : tmp;
64
- }
65
- };
66
- }
67
-
68
- // if there are no methods return
69
- if (!aMethods) {
70
- return {};
71
- }
72
-
73
- var sMethodName;
74
-
75
- // create functions for all delegated methods
76
- // PERFOPT: 'cache' length of aMethods to reduce # of resolutions
77
- for (var i = 0, ml = aMethods.length; i < ml; i++) {
78
- sMethodName = aMethods[i];
79
- //!oObject[sMethodName] for 'lazy' loading interface methods ;-)
80
- if (!oObject[sMethodName] || typeof oObject[sMethodName] === "function") {
81
- this[sMethodName] = fCreateDelegator(oObject, sMethodName);
82
- }
83
- }
84
-
85
- };
39
+ var Interface = BaseObject._Interface;
86
40
 
87
41
  return Interface;
88
42
 
@@ -266,7 +266,7 @@ sap.ui.define([
266
266
  *
267
267
  * @extends sap.ui.base.EventProvider
268
268
  * @author SAP SE
269
- * @version 1.93.3
269
+ * @version 1.96.2
270
270
  * @public
271
271
  * @alias sap.ui.base.ManagedObject
272
272
  */
@@ -1151,7 +1151,7 @@ sap.ui.define([
1151
1151
  if (oBindingInfo && typeof oBindingInfo === "object") {
1152
1152
  this.bindProperty(sKey, oBindingInfo);
1153
1153
  } else {
1154
- this[oKeyInfo._sMutator](oBindingInfo || oValue);
1154
+ this[oKeyInfo._sMutator](typeof oBindingInfo === "string" ? oBindingInfo : oValue);
1155
1155
  }
1156
1156
  break;
1157
1157
  case 1: // SINGLE_AGGREGATION
@@ -1166,7 +1166,7 @@ sap.ui.define([
1166
1166
  }
1167
1167
  oValue = oValue[0];
1168
1168
  }
1169
- this[oKeyInfo._sMutator](makeObject(oBindingInfo || oValue, oKeyInfo, oScope));
1169
+ this[oKeyInfo._sMutator](makeObject(typeof oBindingInfo === "string" ? oBindingInfo : oValue, oKeyInfo, oScope));
1170
1170
  }
1171
1171
  break;
1172
1172
  case 2: // MULTIPLE_AGGREGATION
@@ -1174,7 +1174,7 @@ sap.ui.define([
1174
1174
  if (oBindingInfo && typeof oBindingInfo === "object" ) {
1175
1175
  this.bindAggregation(sKey, oBindingInfo);
1176
1176
  } else {
1177
- oValue = oBindingInfo || oValue; // could be an unescaped string if altTypes contains 'string'
1177
+ oValue = typeof oBindingInfo === "string" ? oBindingInfo : oValue; // could be an unescaped string if altTypes contains 'string'
1178
1178
  if ( oValue ) {
1179
1179
  if ( Array.isArray(oValue) ) {
1180
1180
  addAllToAggregation(oValue); // wrap a single object as array
@@ -4292,6 +4292,7 @@ sap.ui.define([
4292
4292
  ManagedObject.prototype.updateBindings = function(bUpdateAll, sModelName) {
4293
4293
  var that = this,
4294
4294
  sName,
4295
+ bCanCreate,
4295
4296
  oBindingInfo;
4296
4297
 
4297
4298
  /*
@@ -4376,14 +4377,18 @@ sap.ui.define([
4376
4377
  // create object bindings if they don't exist yet
4377
4378
  for ( sName in this.mObjectBindingInfos ) {
4378
4379
  oBindingInfo = this.mObjectBindingInfos[sName];
4379
-
4380
+ bCanCreate = canCreate(oBindingInfo);
4380
4381
  // if there is a binding and if it became invalid through the current model change, then remove it
4381
4382
  if ( oBindingInfo.binding && becameInvalid(oBindingInfo) ) {
4382
4383
  removeBinding(oBindingInfo);
4384
+ // if model does not exists anymore, also delete the BindingContext
4385
+ if (!bCanCreate) {
4386
+ delete this.mElementBindingContexts[sName];
4387
+ }
4383
4388
  }
4384
4389
 
4385
4390
  // if there is no binding and if all required information is available, create a binding object
4386
- if ( !oBindingInfo.binding && canCreate(oBindingInfo) ) {
4391
+ if ( !oBindingInfo.binding && bCanCreate ) {
4387
4392
  this._bindObject(oBindingInfo);
4388
4393
  }
4389
4394
  }
@@ -4656,7 +4661,7 @@ sap.ui.define([
4656
4661
  * <b>Note:</b> A ManagedObject inherits binding contexts from the Core only when it is a descendant of a UIArea.
4657
4662
  *
4658
4663
  * @param {string} [sModelName] the name of the model or <code>undefined</code>
4659
- * @return {sap.ui.model.Context} The binding context of this object
4664
+ * @returns {sap.ui.model.Context|null|undefined} The binding context of this object
4660
4665
  * @public
4661
4666
  */
4662
4667
  ManagedObject.prototype.getBindingContext = function(sModelName){
@@ -73,7 +73,7 @@ function(
73
73
  *
74
74
  *
75
75
  * @author Frank Weigel
76
- * @version 1.93.3
76
+ * @version 1.96.2
77
77
  * @since 0.8.6
78
78
  * @alias sap.ui.base.ManagedObjectMetadata
79
79
  * @extends sap.ui.base.Metadata
@@ -26,7 +26,7 @@ sap.ui.define([
26
26
  *
27
27
  * @class Metadata for a class.
28
28
  * @author Frank Weigel
29
- * @version 1.93.3
29
+ * @version 1.96.2
30
30
  * @since 0.8.6
31
31
  * @public
32
32
  * @alias sap.ui.base.Metadata