@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
@@ -23,7 +23,7 @@ sap.ui.define(['./Item', './library'],
23
23
  * @extends sap.ui.core.Item
24
24
  *
25
25
  * @author SAP SE
26
- * @version 1.93.3
26
+ * @version 1.96.2
27
27
  *
28
28
  * @public
29
29
  * @alias sap.ui.core.SeparatorItem
@@ -394,7 +394,7 @@ sap.ui.define([
394
394
  return;
395
395
  }
396
396
 
397
- oInvText = getInvisibleText();
397
+ oInvText = getInvisibleText(oControl);
398
398
  sInvTextId = oInvText.getId();
399
399
 
400
400
  oInvText.setText(_getShortcutHintText(oHintInfo.id));
@@ -502,15 +502,22 @@ sap.ui.define([
502
502
  }
503
503
 
504
504
  /**
505
- * Gets or creates an InvisibleText for the shortcut's accessiblity.
505
+ * Gets or creates an InvisibleText for the control's shortcut accessiblity.
506
+ *
507
+ * @param {sap.ui.core.Control} oControl A control that have shortcut assigned
506
508
  */
507
- function getInvisibleText() {
508
- if (!ShortcutHintsMixin._invisibleText) {
509
- ShortcutHintsMixin._invisibleText = new InvisibleText();
510
- ShortcutHintsMixin._invisibleText.toStatic();
509
+ function getInvisibleText(oControl) {
510
+ if (!oControl._shortcutInvisibleText) {
511
+ var oFunc = oControl.exit;
512
+ oControl._shortcutInvisibleText = new InvisibleText();
513
+ oControl._shortcutInvisibleText.toStatic();
514
+ oControl.exit = function() {
515
+ this._shortcutInvisibleText.destroy();
516
+ oFunc.call(this);
517
+ };
511
518
  }
512
519
 
513
- return ShortcutHintsMixin._invisibleText;
520
+ return oControl._shortcutInvisibleText;
514
521
  }
515
522
 
516
523
  /**
@@ -25,7 +25,7 @@ sap.ui.define(['./Element', './library'],
25
25
  * @extends sap.ui.core.Element
26
26
  *
27
27
  * @author SAP SE
28
- * @version 1.93.3
28
+ * @version 1.96.2
29
29
  *
30
30
  * @public
31
31
  * @since 1.16.0
@@ -31,7 +31,7 @@ sap.ui.define([
31
31
  * @class
32
32
  * Abstract class that can be extended in order to implement any extended tooltip. For example, RichTooltip Control is based on it. It provides the opening/closing behavior and the main "text" property.
33
33
  * @extends sap.ui.core.Control
34
- * @version 1.93.3
34
+ * @version 1.96.2
35
35
  *
36
36
  * @public
37
37
  * @alias sap.ui.core.TooltipBase
@@ -175,7 +175,7 @@ sap.ui.define([
175
175
  *
176
176
  * @extends sap.ui.base.ManagedObject
177
177
  * @author SAP SE
178
- * @version 1.93.3
178
+ * @version 1.96.2
179
179
  * @param {sap.ui.core.Core} oCore internal API of the <core>Core</code> that manages this UIArea
180
180
  * @param {object} [oRootNode] reference to the DOM element that should be 'hosting' the UI Area.
181
181
  * @public
@@ -13,9 +13,9 @@ sap.ui.define([
13
13
  './UIComponentMetadata',
14
14
  './mvc/Controller',
15
15
  './mvc/View',
16
- "sap/base/util/ObjectPath",
17
- "sap/base/Log",
18
- "sap/ui/core/Core" // to ensure correct behaviour of sap.ui.getCore()
16
+ 'sap/base/util/ObjectPath',
17
+ 'sap/base/Log',
18
+ 'sap/ui/core/Core' // to ensure correct behaviour of sap.ui.getCore()
19
19
  ],
20
20
  function(
21
21
  ManagedObject,
@@ -54,7 +54,7 @@ sap.ui.define([
54
54
  * @extends sap.ui.core.Component
55
55
  * @abstract
56
56
  * @author SAP SE
57
- * @version 1.93.3
57
+ * @version 1.96.2
58
58
  * @alias sap.ui.core.UIComponent
59
59
  * @since 1.9.2
60
60
  * @ui5-metamodel This control/element also will be described in the UI5 (legacy) designtime metamodel
@@ -298,7 +298,7 @@ sap.ui.define([
298
298
  }
299
299
 
300
300
  function setRootControl(vRootControl) {
301
- var fnFireInstanceCreated = function() {
301
+ var fnFireInstanceInitialized = function() {
302
302
  if (typeof UIComponent._fnOnInstanceInitialized === "function") {
303
303
  UIComponent._fnOnInstanceInitialized(that);
304
304
  }
@@ -309,19 +309,19 @@ sap.ui.define([
309
309
  if (vRootControl instanceof Promise) {
310
310
  that.pRootControlLoaded = that.pRootControlLoaded.then(function(oRootControl) {
311
311
  fnAggregateRootControl(oRootControl);
312
- fnFireInstanceCreated();
312
+ fnFireInstanceInitialized();
313
313
  return oRootControl;
314
314
  });
315
315
  } else if (vRootControl instanceof View && vRootControl.oAsyncState && vRootControl.oAsyncState.promise) {
316
316
  fnAggregateRootControl(vRootControl);
317
317
  that.pRootControlLoaded = that.pRootControlLoaded.then(function(oRootControl) {
318
318
  // notify Component initialization callback handler
319
- fnFireInstanceCreated();
319
+ fnFireInstanceInitialized();
320
320
  return oRootControl;
321
321
  });
322
322
  } else {
323
323
  fnAggregateRootControl(vRootControl);
324
- fnFireInstanceCreated();
324
+ fnFireInstanceInitialized();
325
325
  }
326
326
  }
327
327
 
@@ -359,18 +359,39 @@ sap.ui.define([
359
359
 
360
360
  // create the router for the component instance
361
361
  if (vRoutes) {
362
- var Router = sap.ui.requireSync("sap/ui/core/routing/Router");
363
- var fnRouterConstructor = getConstructorFunctionFor(this._getRouterClassName() || Router);
362
+ var fnRouterConstructor;
363
+ var sRouterClassName = this._getRouterClassName();
364
+
365
+ // if a classname is configured, the Router class MUST be loaded
366
+ if (sRouterClassName) {
367
+ fnRouterConstructor = getConstructorFunctionFor(sRouterClassName);
368
+ } else {
369
+ // require default Router class
370
+ fnRouterConstructor = sap.ui.require("sap/ui/core/routing/Router")
371
+ || sap.ui.requireSync("sap/ui/core/routing/Router"); // legacy-relevant: Sync path
372
+ }
364
373
  this._oRouter = new fnRouterConstructor(vRoutes, oRoutingConfig, this, oRoutingManifestEntry.targets, this._oRouterHashChanger);
365
374
  this._oTargets = this._oRouter.getTargets();
366
375
  this._oViews = this._oRouter.getViews();
367
376
  } else if (oRoutingManifestEntry.targets) {
368
- var Targets = sap.ui.requireSync("sap/ui/core/routing/Targets");
369
- var Views = sap.ui.requireSync("sap/ui/core/routing/Views");
377
+ // legacy-relevant: Sync path via sync component factory.
378
+ // For async, no sync request is triggered as the class is already loaded by the component factory.
379
+ var Views = sap.ui.require("sap/ui/core/routing/Views")
380
+ || sap.ui.requireSync("sap/ui/core/routing/Views"); // legacy-relevant: Sync path
381
+
370
382
  this._oViews = new Views({
371
383
  component: this
372
384
  });
373
- var fnTargetsConstructor = getConstructorFunctionFor(oRoutingConfig.targetsClass || Targets);
385
+ var fnTargetsConstructor;
386
+
387
+ // if a targets classname is configured, the Targets class MUST be loaded
388
+ if (oRoutingConfig.targetsClass) {
389
+ fnTargetsConstructor = getConstructorFunctionFor(oRoutingConfig.targetsClass);
390
+ } else {
391
+ // For async, no sync request is triggered as the class is already loaded by the component factory.
392
+ fnTargetsConstructor = sap.ui.require("sap/ui/core/routing/Targets")
393
+ || sap.ui.requireSync("sap/ui/core/routing/Targets"); // legacy-relevant: Sync path
394
+ }
374
395
  this._oTargets = new fnTargetsConstructor({
375
396
  targets: oRoutingManifestEntry.targets,
376
397
  config: oRoutingConfig,
@@ -644,7 +665,7 @@ sap.ui.define([
644
665
  *
645
666
  * A <code>sap.ui.core.UIComponent</code> subclass can additionally implement the {@link sap.ui.core.IAsyncContentCreation} interface.
646
667
  * When implementing this interface the loading and processing of an asynchronous <code>rootView</code> will be chained into
647
- * the result Promise of the {@link sap.ui.core.Component.create Component.create} factory.
668
+ * the result Promise of the {@link sap.ui.core.Component.create Component.create} factory. An additional async flag can be omitted.
648
669
  * See Sample 1 below.
649
670
  *
650
671
  * Samples 2 and 3 show how subclasses can overwrite the <code>createContent</code> function
@@ -659,8 +680,7 @@ sap.ui.define([
659
680
  * rootView: {
660
681
  * viewName: "my.sample.views.Main",
661
682
  * type: "XML",
662
- * id: "sampleMainView",
663
- * async: true
683
+ * id: "sampleMainView"
664
684
  * },
665
685
  * interfaces: ["sap.ui.core.IAsyncContentCreation"]
666
686
  * }
@@ -715,6 +735,12 @@ sap.ui.define([
715
735
  type: ViewType.XML
716
736
  });
717
737
  } else if (oRootView && typeof oRootView === "object") {
738
+
739
+ // default ViewType to XML, except for typed views
740
+ if (!oRootView.type && !View._getModuleName(oRootView)) {
741
+ oRootView.type = ViewType.XML;
742
+ }
743
+
718
744
  // make sure to prefix the ID of the rootView
719
745
  if (oRootView.id) {
720
746
  oRootView.id = this.createId(oRootView.id);
@@ -18,7 +18,7 @@ sap.ui.define(['./ComponentMetadata', 'sap/ui/core/mvc/ViewType'],
18
18
  * @experimental Since 1.15.1. The Component concept is still under construction, so some implementation details can be changed in future.
19
19
  * @class
20
20
  * @author SAP SE
21
- * @version 1.93.3
21
+ * @version 1.96.2
22
22
  * @since 1.15.1
23
23
  * @alias sap.ui.core.UIComponentMetadata
24
24
  * @extends sap.ui.core.ComponentMetadata
@@ -16,7 +16,7 @@ sap.ui.define(['./Element', './library', "sap/base/assert"],
16
16
  * Helper functionality for value state support.
17
17
  *
18
18
  * @author SAP SE
19
- * @version 1.93.3
19
+ * @version 1.96.2
20
20
  * @public
21
21
  * @namespace sap.ui.core.ValueStateSupport
22
22
  */
@@ -20,7 +20,7 @@ sap.ui.define(['./LayoutData', './library'],
20
20
  * @class
21
21
  * Allows to add multiple LayoutData to one control in case that an easy switch of layouts (e.g. in a Form) is needed.
22
22
  * @extends sap.ui.core.LayoutData
23
- * @version 1.93.3
23
+ * @version 1.96.2
24
24
  *
25
25
  * @public
26
26
  * @since 1.9.2
@@ -143,7 +143,7 @@ sap.ui.define([
143
143
  * @extends sap.ui.core.Control
144
144
  *
145
145
  * @author SAP SE
146
- * @version 1.93.3
146
+ * @version 1.96.2
147
147
  * @since 1.56.0
148
148
  * @alias sap.ui.core.XMLComposite
149
149
  * @see {@link topic:b83a4dcb7d0e46969027345b8d32fd44 XML Composite Controls}
@@ -519,7 +519,7 @@ sap.ui.define([
519
519
  var sFragment = oFragmentContent ? (new XMLSerializer()).serializeToString(oFragmentContent) : undefined;
520
520
  this.bUsesI18n = sFragment ? (sFragment.indexOf("$" + this.alias + ".i18n") != -1) : true;
521
521
 
522
- this._setCompositeAggregation(sap.ui.xmlfragment({
522
+ this._setCompositeAggregation(sap.ui.xmlfragment({ // legacy-relevant: can lead to follow-up sync XHRs for controls
523
523
  sId: this.getId(),
524
524
  fragmentContent: oFragmentContent,
525
525
  oController: this
@@ -30,7 +30,7 @@ sap.ui.define([
30
30
  * @param {object} oClassInfo static info to construct the metadata from
31
31
  *
32
32
  * @author SAP SE
33
- * @version 1.93.3
33
+ * @version 1.96.2
34
34
  * @since 1.50.0
35
35
  * @alias sap.ui.core.XMLCompositeMetadata
36
36
  * @extends sap.ui.core.ElementMetadata
@@ -170,7 +170,7 @@ sap.ui.define([
170
170
  XMLCompositeMetadata.prototype._loadFragment = function (sFragmentName, sExtension) {
171
171
  var sFragmentKey = sExtension + "$" + sFragmentName;
172
172
  if (!mFragmentCache[sFragmentKey]) {
173
- mFragmentCache[sFragmentKey] = XMLTemplateProcessor.loadTemplate(sFragmentName, sExtension);
173
+ mFragmentCache[sFragmentKey] = XMLTemplateProcessor.loadTemplate(sFragmentName, sExtension); // legacy-relevant: sync loading of XML resource
174
174
  }
175
175
 
176
176
  return mFragmentCache[sFragmentKey];
@@ -4,7 +4,7 @@
4
4
  * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
5
  */
6
6
 
7
- /*global HTMLTemplateElement, DocumentFragment, Promise*/
7
+ /*global HTMLTemplateElement, Promise */
8
8
 
9
9
  sap.ui.define([
10
10
  'sap/ui/thirdparty/jquery',
@@ -62,7 +62,7 @@ function(
62
62
  return oBindingInfo;
63
63
  }
64
64
 
65
- var vValue = sValue = oBindingInfo || sValue; // oBindingInfo could be an unescaped string
65
+ var vValue = sValue = typeof oBindingInfo === "string" ? oBindingInfo : sValue; // oBindingInfo could be an unescaped string
66
66
  var oType = DataType.getType(sType);
67
67
  if (oType) {
68
68
  if (oType instanceof DataType) {
@@ -168,6 +168,12 @@ function(
168
168
  */
169
169
  var PREPROCESSOR_NAMESPACE_PREFIX = "http://schemas.sap.com/sapui5/preprocessorextension/";
170
170
 
171
+ /**
172
+ * Pattern that matches the names of all HTML void tags.
173
+ * @private
174
+ */
175
+ var rVoidTags = /^(?:area|base|br|col|embed|hr|img|input|link|meta|param|source|track|wbr)$/;
176
+
171
177
  /**
172
178
  * Creates a function based on the passed mode and callback which applies a callback to each child of a node.
173
179
  * @param {boolean} bAsync The strategy to choose
@@ -355,7 +361,7 @@ function(
355
361
  // TODO: might be refactored into resolveResultPromises()?
356
362
  if (Array.isArray(args[0])) {
357
363
  args[0] = args[0].filter(function(e) {
358
- return !e._isExtensionPoint;
364
+ return e == null || !e._isExtensionPoint;
359
365
  });
360
366
  }
361
367
  return args[0];
@@ -452,7 +458,7 @@ function(
452
458
  });
453
459
  } else {
454
460
  Object.keys(oRequireContext).forEach(function(sKey) {
455
- oModules[sKey] = sap.ui.requireSync(oRequireContext[sKey]);
461
+ oModules[sKey] = sap.ui.requireSync(oRequireContext[sKey]); // legacy-relevant: Sync path
456
462
  });
457
463
 
458
464
  return SyncPromise.resolve(oModules);
@@ -542,10 +548,42 @@ function(
542
548
  // later this intermediate state with promises gets resolved to a flat array containing only strings and controls
543
549
  var aResult = [],
544
550
  sInternalPrefix = findNamespacePrefix(xmlNode, UI5_INTERNAL_NAMESPACE, "__ui5"),
545
- pResultChain = parseAndLoadRequireContext(xmlNode, bAsync) || SyncPromise.resolve();
546
-
547
- // define internal namespace on root node
548
- xmlNode.setAttributeNS(XMLNS_NAMESPACE, "xmlns:" + sInternalPrefix, UI5_INTERNAL_NAMESPACE);
551
+ pResultChain = parseAndLoadRequireContext(xmlNode, bAsync) || SyncPromise.resolve(),
552
+ rm = {
553
+ openStart: function(tagName, sId) {
554
+ aResult.push(["openStart", [tagName, sId]]);
555
+ },
556
+ voidStart: function(tagName, sId) {
557
+ aResult.push(["voidStart", [tagName, sId]]);
558
+ },
559
+ style: function(name, value) {
560
+ aResult.push(["style", [name, value]]);
561
+ },
562
+ "class": function(clazz) {
563
+ aResult.push(["class", [clazz]]);
564
+ },
565
+ attr: function(name, value) {
566
+ aResult.push(["attr", [name, value]]);
567
+ },
568
+ openEnd: function() {
569
+ aResult.push(["openEnd"]);
570
+ },
571
+ voidEnd: function() {
572
+ aResult.push(["voidEnd"]);
573
+ },
574
+ text: function(str) {
575
+ aResult.push(["text", [str]]);
576
+ },
577
+ unsafeHtml: function(str) {
578
+ aResult.push(["unsafeHtml", [str]]);
579
+ },
580
+ close: function(tagName) {
581
+ aResult.push(["close", [tagName]]);
582
+ },
583
+ renderControl: function(content) {
584
+ aResult.push(pResultChain);
585
+ }
586
+ };
549
587
 
550
588
  bAsync = bAsync && !!oView._sProcessingMode;
551
589
  Log.debug("XML processing mode is " + (oView._sProcessingMode || "default") + ".", "", "XMLTemplateProcessor");
@@ -578,6 +616,10 @@ function(
578
616
  // it's not <core:View>, it's <mvc:View> !!!
579
617
  Log.warning("XMLView root node must have the 'sap.ui.core.mvc' namespace, not '" + xmlNode.namespaceURI + "'" + (sCurrentName ? " (View name: " + sCurrentName + ")" : ""));
580
618
  }
619
+
620
+ // define internal namespace on root node
621
+ xmlNode.setAttributeNS(XMLNS_NAMESPACE, "xmlns:" + sInternalPrefix, UI5_INTERNAL_NAMESPACE);
622
+
581
623
  parseChildren(xmlNode, false, false, pResultChain);
582
624
  }
583
625
 
@@ -638,39 +680,79 @@ function(
638
680
  if ( xmlNode.nodeType === 1 /* ELEMENT_NODE */ ) {
639
681
 
640
682
  var sLocalName = localName(xmlNode);
641
- if (xmlNode.namespaceURI === XHTML_NAMESPACE || xmlNode.namespaceURI === SVG_NAMESPACE) {
683
+ var bXHTML = xmlNode.namespaceURI === XHTML_NAMESPACE;
684
+ if (bXHTML || xmlNode.namespaceURI === SVG_NAMESPACE) {
685
+ // determine ID
686
+ var sId = xmlNode.getAttribute("id");
687
+ if ( sId == null ) {
688
+ sId = bRoot === true ? oView.getId() : undefined;
689
+ } else {
690
+ sId = getId(oView, xmlNode);
691
+ }
692
+ if ( sLocalName === "style" ) {
693
+ // We need to remove the namespace prefix from style nodes
694
+ // otherwise the style element's content will be output as text and not evaluated as CSS
695
+ // We do this by manually 'cloning' the style without the NS prefix
696
+
697
+ // original node values
698
+ var aAttributes = xmlNode.attributes; // array-like 'NamedNodeMap'
699
+ var sTextContent = xmlNode.textContent;
700
+
701
+ // 'clone'
702
+ xmlNode = document.createElement(sLocalName);
703
+ xmlNode.textContent = sTextContent;
704
+
705
+ // copy all non-prefixed attributes
706
+ // -> prefixed attributes are invalid HTML
707
+ for (var j = 0; j < aAttributes.length; j++) {
708
+ var oAttr = aAttributes[j];
709
+ if (!oAttr.prefix) {
710
+ xmlNode.setAttribute(oAttr.name, oAttr.value);
711
+ }
712
+ }
713
+ // avoid encoding of style content by writing the whole tag as unsafeHtml
714
+ // for compatibility reasons, apply the same ID rewriting as for other tags
715
+ if ( sId != null ) {
716
+ xmlNode.setAttribute("id", sId);
717
+ }
718
+ if ( bRoot === true ) {
719
+ xmlNode.setAttribute("data-sap-ui-preserve", oView.getId());
720
+ }
721
+ rm.unsafeHtml(xmlNode.outerHTML);
722
+ return;
723
+ }
642
724
  // write opening tag
643
- aResult.push("<" + sLocalName + " ");
725
+ var bVoid = rVoidTags.test(sLocalName);
726
+ if ( bVoid ) {
727
+ rm.voidStart(sLocalName, sId);
728
+ } else {
729
+ rm.openStart(sLocalName, sId);
730
+ }
644
731
  // write attributes
645
- var bHasId = false;
646
732
  for (var i = 0; i < xmlNode.attributes.length; i++) {
647
733
  var attr = xmlNode.attributes[i];
648
- var value = attr.value;
649
- if (attr.name === "id") {
650
- bHasId = true;
651
- value = getId(oView, xmlNode);
734
+ if ( attr.name !== "id" ) {
735
+ rm.attr(bXHTML ? attr.name.toLowerCase() : attr.name, attr.value);
652
736
  }
653
- aResult.push(attr.name + "=\"" + encodeXML(value) + "\" ");
654
737
  }
655
738
  if ( bRoot === true ) {
656
- aResult.push("data-sap-ui-preserve" + "=\"" + oView.getId() + "\" ");
657
- if (!bHasId) {
658
- aResult.push("id" + "=\"" + oView.getId() + "\" ");
659
- }
739
+ rm.attr("data-sap-ui-preserve", oView.getId());
660
740
  }
661
- aResult.push(">");
741
+ if ( bVoid ) {
742
+ rm.voidEnd();
743
+ if ( xmlNode.firstChild ) {
744
+ Log.error("Content of void HTML element '" + sLocalName + "' will be ignored");
745
+ }
746
+ } else {
747
+ rm.openEnd();
662
748
 
663
- // write children
664
- var oContent = xmlNode;
665
- if (window.HTMLTemplateElement && xmlNode instanceof HTMLTemplateElement && xmlNode.content instanceof DocumentFragment) {
666
- // <template> support (HTMLTemplateElement has no childNodes, but a content node which contains the childNodes)
667
- oContent = xmlNode.content;
749
+ // write children
750
+ // For HTMLTemplateElement nodes, skip the associated DocumentFragment node
751
+ var oContent = xmlNode instanceof HTMLTemplateElement ? xmlNode.content : xmlNode;
752
+ parseChildren(oContent, false, false, pRequireContext);
753
+ rm.close(sLocalName);
668
754
  }
669
755
 
670
- parseChildren(oContent, false, false, pRequireContext);
671
- aResult.push("</" + sLocalName + ">");
672
-
673
-
674
756
  } else if (sLocalName === "FragmentDefinition" && xmlNode.namespaceURI === CORE_NAMESPACE) {
675
757
  // a Fragment element - which is not turned into a control itself. Only its content is parsed.
676
758
  parseChildren(xmlNode, false, true, pRequireContext);
@@ -720,20 +802,13 @@ function(
720
802
  return aChildControls;
721
803
  });
722
804
  });
723
- aResult.push(pResultChain);
805
+ rm.renderControl(pResultChain);
724
806
 
725
807
  }
726
808
 
727
809
  } else if (xmlNode.nodeType === 3 /* TEXT_NODE */ && !bIgnoreTopLevelTextNodes) {
728
810
 
729
- var text = xmlNode.textContent || xmlNode.text,
730
- parentName = localName(xmlNode.parentNode);
731
- if (text) {
732
- if (parentName != "style") {
733
- text = encodeXML(text);
734
- }
735
- aResult.push(text);
736
- }
811
+ rm.text(xmlNode.textContent);
737
812
 
738
813
  }
739
814
  }
@@ -798,7 +873,7 @@ function(
798
873
  }, reject);
799
874
  });
800
875
  } else {
801
- oClassObject = sap.ui.requireSync(sResourceName);
876
+ oClassObject = sap.ui.requireSync(sResourceName); // legacy-relevant: Sync path
802
877
  oClassObject = getObjectFallback(oClassObject);
803
878
  }
804
879
  }
@@ -852,7 +927,7 @@ function(
852
927
  }, reject);
853
928
  });
854
929
  } else {
855
- var XMLView = sap.ui.requireSync("sap/ui/core/mvc/XMLView");
930
+ var XMLView = sap.ui.requireSync("sap/ui/core/mvc/XMLView"); // legacy-relevant: Sync path
856
931
  return SyncPromise.resolve([fnCreateView(XMLView)]);
857
932
  }
858
933
  }