@openui5/sap.ui.core 1.91.0 → 1.93.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 (373) hide show
  1. package/.eslintrc.json +37 -0
  2. package/.reuse/dep5 +46 -0
  3. package/THIRDPARTY.txt +59 -1
  4. package/package.json +1 -1
  5. package/src/jquery.sap.global.js +6 -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 +7 -4
  10. package/src/jquery.sap.stubs.js +0 -1
  11. package/src/sap/base/i18n/ResourceBundle.js +2 -2
  12. package/src/sap/base/security/encodeCSS.js +1 -0
  13. package/src/sap/base/security/encodeJS.js +1 -0
  14. package/src/sap/base/security/encodeURL.js +1 -0
  15. package/src/sap/base/security/encodeXML.js +2 -0
  16. package/src/sap/base/util/LoaderExtensions.js +1 -1
  17. package/src/sap/base/util/Properties.js +4 -1
  18. package/src/sap/base/util/isEmptyObject.js +1 -2
  19. package/src/sap/base/util/restricted/_CancelablePromise.js +1 -1
  20. package/src/sap/base/util/restricted/_castArray.js +1 -1
  21. package/src/sap/base/util/restricted/_compact.js +1 -1
  22. package/src/sap/base/util/restricted/_curry.js +1 -1
  23. package/src/sap/base/util/restricted/_debounce.js +1 -1
  24. package/src/sap/base/util/restricted/_difference.js +1 -1
  25. package/src/sap/base/util/restricted/_differenceBy.js +1 -1
  26. package/src/sap/base/util/restricted/_differenceWith.js +1 -1
  27. package/src/sap/base/util/restricted/_flatMap.js +1 -1
  28. package/src/sap/base/util/restricted/_flatMapDeep.js +1 -1
  29. package/src/sap/base/util/restricted/_flatMapDepth.js +1 -1
  30. package/src/sap/base/util/restricted/_flatten.js +1 -1
  31. package/src/sap/base/util/restricted/_flattenDeep.js +1 -1
  32. package/src/sap/base/util/restricted/_flattenDepth.js +1 -1
  33. package/src/sap/base/util/restricted/_intersection.js +1 -1
  34. package/src/sap/base/util/restricted/_intersectionBy.js +1 -1
  35. package/src/sap/base/util/restricted/_intersectionWith.js +1 -1
  36. package/src/sap/base/util/restricted/_isEqual.js +1 -1
  37. package/src/sap/base/util/restricted/_isEqualWith.js +1 -1
  38. package/src/sap/base/util/restricted/_isNil.js +1 -1
  39. package/src/sap/base/util/restricted/_max.js +1 -1
  40. package/src/sap/base/util/restricted/_merge.js +1 -1
  41. package/src/sap/base/util/restricted/_mergeWith.js +1 -1
  42. package/src/sap/base/util/restricted/_min.js +1 -1
  43. package/src/sap/base/util/restricted/_omit.js +1 -1
  44. package/src/sap/base/util/restricted/_pick.js +1 -1
  45. package/src/sap/base/util/restricted/_pickBy.js +1 -1
  46. package/src/sap/base/util/restricted/_throttle.js +1 -1
  47. package/src/sap/base/util/restricted/_toArray.js +1 -1
  48. package/src/sap/base/util/restricted/_union.js +1 -1
  49. package/src/sap/base/util/restricted/_unionBy.js +1 -1
  50. package/src/sap/base/util/restricted/_unionWith.js +1 -1
  51. package/src/sap/base/util/restricted/_uniq.js +1 -1
  52. package/src/sap/base/util/restricted/_uniqBy.js +1 -1
  53. package/src/sap/base/util/restricted/_uniqWith.js +1 -1
  54. package/src/sap/base/util/restricted/_without.js +1 -1
  55. package/src/sap/base/util/restricted/_xor.js +1 -1
  56. package/src/sap/base/util/restricted/_xorBy.js +1 -1
  57. package/src/sap/base/util/restricted/_xorWith.js +1 -1
  58. package/src/sap/base/util/restricted/_zipObject.js +1 -1
  59. package/src/sap/base/util/restricted/_zipObjectDeep.js +1 -1
  60. package/src/sap/ui/Device.js +10 -10
  61. package/src/sap/ui/Global.js +4 -4
  62. package/src/sap/ui/VersionInfo.js +1 -0
  63. package/src/sap/ui/base/DataType.js +1 -0
  64. package/src/sap/ui/base/Event.js +1 -1
  65. package/src/sap/ui/base/EventProvider.js +1 -1
  66. package/src/sap/ui/base/Interface.js +1 -1
  67. package/src/sap/ui/base/ManagedObject.js +121 -18
  68. package/src/sap/ui/base/ManagedObjectMetadata.js +13 -4
  69. package/src/sap/ui/base/Metadata.js +1 -1
  70. package/src/sap/ui/base/Object.js +1 -1
  71. package/src/sap/ui/base/ObjectPool.js +1 -1
  72. package/src/sap/ui/core/.library +4 -2
  73. package/src/sap/ui/core/BusyIndicator.js +1 -1
  74. package/src/sap/ui/core/BusyIndicatorUtils.js +4 -1
  75. package/src/sap/ui/core/Component.js +144 -43
  76. package/src/sap/ui/core/ComponentContainer.js +51 -2
  77. package/src/sap/ui/core/ComponentMetadata.js +1 -1
  78. package/src/sap/ui/core/ComponentSupport.js +1 -1
  79. package/src/sap/ui/core/Configuration.js +2 -1
  80. package/src/sap/ui/core/Control.js +1 -1
  81. package/src/sap/ui/core/Core.js +20 -22
  82. package/src/sap/ui/core/CustomData.js +1 -1
  83. package/src/sap/ui/core/CustomizingConfiguration.js +2 -2
  84. package/src/sap/ui/core/DeclarativeSupport.js +1 -1
  85. package/src/sap/ui/core/Element.js +1 -1
  86. package/src/sap/ui/core/ElementMetadata.js +1 -3
  87. package/src/sap/ui/core/EnabledPropagator.js +1 -1
  88. package/src/sap/ui/core/EventBus.js +1 -1
  89. package/src/sap/ui/core/ExtensionPoint.js +59 -16
  90. package/src/sap/ui/core/Fragment.js +3 -3
  91. package/src/sap/ui/core/HTML.js +1 -1
  92. package/src/sap/ui/core/History.js +1 -1
  93. package/src/sap/ui/core/Icon.js +1 -1
  94. package/src/sap/ui/core/IndicationColorSupport.js +1 -1
  95. package/src/sap/ui/core/IntervalTrigger.js +1 -1
  96. package/src/sap/ui/core/InvisibleMessage.js +9 -1
  97. package/src/sap/ui/core/InvisibleRenderer.js +1 -1
  98. package/src/sap/ui/core/InvisibleText.js +1 -1
  99. package/src/sap/ui/core/Item.js +1 -1
  100. package/src/sap/ui/core/LabelEnablement.js +1 -1
  101. package/src/sap/ui/core/LayoutData.js +1 -1
  102. package/src/sap/ui/core/ListItem.js +1 -1
  103. package/src/sap/ui/core/LocalBusyIndicator.js +1 -1
  104. package/src/sap/ui/core/Locale.js +1 -1
  105. package/src/sap/ui/core/LocaleData.js +15 -1328
  106. package/src/sap/ui/core/Manifest.js +124 -69
  107. package/src/sap/ui/core/Message.js +1 -1
  108. package/src/sap/ui/core/Patcher.js +143 -153
  109. package/src/sap/ui/core/Placeholder.js +173 -0
  110. package/src/sap/ui/core/Popup.js +29 -5
  111. package/src/sap/ui/core/RenderManager.js +344 -104
  112. package/src/sap/ui/core/Renderer.js +1 -1
  113. package/src/sap/ui/core/ResizeHandler.js +1 -1
  114. package/src/sap/ui/core/ScrollBar.js +1 -1
  115. package/src/sap/ui/core/SeparatorItem.js +1 -1
  116. package/src/sap/ui/core/ThemeCheck.js +14 -62
  117. package/src/sap/ui/core/Title.js +1 -1
  118. package/src/sap/ui/core/TooltipBase.js +1 -1
  119. package/src/sap/ui/core/UIArea.js +6 -3
  120. package/src/sap/ui/core/UIComponent.js +46 -23
  121. package/src/sap/ui/core/UIComponentMetadata.js +1 -1
  122. package/src/sap/ui/core/ValueStateSupport.js +1 -1
  123. package/src/sap/ui/core/VariantLayoutData.js +1 -1
  124. package/src/sap/ui/core/XMLComposite.js +3 -5
  125. package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
  126. package/src/sap/ui/core/XMLTemplateProcessor.js +5 -6
  127. package/src/sap/ui/core/cldr/en.json +1 -0
  128. package/src/sap/ui/core/date/UniversalDate.js +4 -2
  129. package/src/sap/ui/core/delegate/ItemNavigation.js +4 -4
  130. package/src/sap/ui/core/delegate/ScrollEnablement.js +1 -1
  131. package/src/sap/ui/core/dnd/DragAndDrop.js +1 -1
  132. package/src/sap/ui/core/dnd/DragDropBase.js +2 -9
  133. package/src/sap/ui/core/dnd/DragDropInfo.js +1 -1
  134. package/src/sap/ui/core/dnd/DragInfo.js +41 -1
  135. package/src/sap/ui/core/dnd/DropInfo.js +1 -1
  136. package/src/sap/ui/core/format/DateFormat.js +4 -2
  137. package/src/sap/ui/core/format/NumberFormat.js +3 -0
  138. package/src/sap/ui/core/hyphenation/Hyphenation.js +1 -1
  139. package/src/sap/ui/core/library.js +26 -4
  140. package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
  141. package/src/sap/ui/core/message/Message.js +1 -1
  142. package/src/sap/ui/core/message/MessageManager.js +4 -2
  143. package/src/sap/ui/core/message/MessageParser.js +1 -1
  144. package/src/sap/ui/core/message/MessageProcessor.js +1 -1
  145. package/src/sap/ui/core/messagebundle_cs.properties +1 -1
  146. package/src/sap/ui/core/messagebundle_ms.properties +1 -1
  147. package/src/sap/ui/core/messagebundle_pt.properties +6 -6
  148. package/src/sap/ui/core/messagebundle_tr.properties +1 -1
  149. package/src/sap/ui/core/mvc/Controller.js +146 -8
  150. package/src/sap/ui/core/mvc/HTMLView.js +3 -1
  151. package/src/sap/ui/core/mvc/JSONView.js +7 -5
  152. package/src/sap/ui/core/mvc/JSView.js +4 -2
  153. package/src/sap/ui/core/mvc/TemplateView.js +1 -1
  154. package/src/sap/ui/core/mvc/View.js +145 -68
  155. package/src/sap/ui/core/mvc/ViewType.js +2 -0
  156. package/src/sap/ui/core/mvc/XMLView.js +13 -9
  157. package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
  158. package/src/sap/ui/core/plugin/LessSupport.js +1 -1
  159. package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -1
  160. package/src/sap/ui/core/postmessage/Bus.js +1 -1
  161. package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
  162. package/src/sap/ui/core/routing/HashChangerBase.js +9 -2
  163. package/src/sap/ui/core/routing/History.js +188 -87
  164. package/src/sap/ui/core/routing/Route.js +10 -1
  165. package/src/sap/ui/core/routing/Router.js +8 -5
  166. package/src/sap/ui/core/routing/RouterHashChanger.js +26 -16
  167. package/src/sap/ui/core/routing/TargetCache.js +19 -8
  168. package/src/sap/ui/core/routing/Targets.js +29 -3
  169. package/src/sap/ui/core/routing/async/Route.js +9 -1
  170. package/src/sap/ui/core/routing/async/Target.js +249 -85
  171. package/src/sap/ui/core/routing/async/TargetCache.js +9 -7
  172. package/src/sap/ui/core/routing/async/Targets.js +4 -2
  173. package/src/sap/ui/core/routing/sync/Target.js +15 -0
  174. package/src/sap/ui/core/rules/App.support.js +36 -2
  175. package/src/sap/ui/core/search/OpenSearchProvider.js +1 -1
  176. package/src/sap/ui/core/search/SearchProvider.js +1 -1
  177. package/src/sap/ui/core/service/Service.js +1 -1
  178. package/src/sap/ui/core/service/ServiceFactory.js +1 -1
  179. package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
  180. package/src/sap/ui/core/support/InteractionTree.css +0 -14
  181. package/src/sap/ui/core/support/Plugin.js +1 -1
  182. package/src/sap/ui/core/support/RuleEngineOpaExtension.js +0 -2
  183. package/src/sap/ui/core/support/Support.js +1 -1
  184. package/src/sap/ui/core/support/TimelineOverview.css +0 -35
  185. package/src/sap/ui/core/support/controls/ObjectViewer.js +5 -9
  186. package/src/sap/ui/core/support/controls/TreeViewer.js +0 -1
  187. package/src/sap/ui/core/support/interactionSlider.css +0 -3
  188. package/src/sap/ui/core/support/plugins/ControlTree.js +2 -2
  189. package/src/sap/ui/core/support/plugins/Interaction.js +1 -1
  190. package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
  191. package/src/sap/ui/core/support/plugins/MessageTest.js +1 -1
  192. package/src/sap/ui/core/support/plugins/Performance.js +2 -1
  193. package/src/sap/ui/core/support/plugins/Selector.js +1 -1
  194. package/src/sap/ui/core/support/plugins/TechInfo.js +1 -1
  195. package/src/sap/ui/core/support/plugins/Trace.js +1 -1
  196. package/src/sap/ui/core/support/plugins/ViewInfo.js +1 -3
  197. package/src/sap/ui/core/support/support.css +4 -164
  198. package/src/sap/ui/core/support/trace/E2eTraceLib.js +3 -3
  199. package/src/sap/ui/core/support/usage/EventBroadcaster.js +0 -22
  200. package/src/sap/ui/core/themes/base/BlindLayer.less +0 -2
  201. package/src/sap/ui/core/themes/base/BrowserScrollbar.less +0 -9
  202. package/src/sap/ui/core/themes/base/LocalBusyIndicator.less +5 -5
  203. package/src/sap/ui/core/themes/base/SAP-icons.css +2 -0
  204. package/src/sap/ui/core/themes/base/SAP-icons.less +10 -0
  205. package/src/sap/ui/core/themes/base/TechnicalInfo.less +0 -1
  206. package/src/sap/ui/core/themes/base/base.less +569 -414
  207. package/src/sap/ui/core/themes/base/global.less +38 -0
  208. package/src/sap/ui/core/themes/base/library.source.less +1 -2
  209. package/src/sap/ui/core/themes/base/shared.less +1 -1
  210. package/src/sap/ui/core/themes/sap_hcb/global.less +34 -0
  211. package/src/sap/ui/core/theming/Parameters.js +222 -60
  212. package/src/sap/ui/core/theming/ThemeHelper.js +94 -0
  213. package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
  214. package/src/sap/ui/core/tmpl/DOMElement.js +1 -1
  215. package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
  216. package/src/sap/ui/core/tmpl/Template.js +2 -1
  217. package/src/sap/ui/core/tmpl/TemplateControl.js +1 -1
  218. package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
  219. package/src/sap/ui/core/util/Export.js +1 -1
  220. package/src/sap/ui/core/util/ExportCell.js +1 -1
  221. package/src/sap/ui/core/util/ExportColumn.js +1 -1
  222. package/src/sap/ui/core/util/ExportRow.js +1 -1
  223. package/src/sap/ui/core/util/ExportType.js +1 -1
  224. package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
  225. package/src/sap/ui/core/util/File.js +1 -1
  226. package/src/sap/ui/core/util/LibraryInfo.js +1 -1
  227. package/src/sap/ui/core/util/MockServer.js +27 -7
  228. package/src/sap/ui/core/util/PasteHelper.js +1 -1
  229. package/src/sap/ui/core/util/XMLPreprocessor.js +2 -2
  230. package/src/sap/ui/core/util/reflection/BaseTreeModifier.js +18 -0
  231. package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
  232. package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
  233. package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
  234. package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
  235. package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
  236. package/src/sap/ui/core/util/serializer/delegate/HTML.js +2 -2
  237. package/src/sap/ui/core/util/serializer/delegate/XML.js +2 -2
  238. package/src/sap/ui/core/ws/ReadyState.js +1 -1
  239. package/src/sap/ui/core/ws/SapPcpWebSocket.js +2 -1
  240. package/src/sap/ui/core/ws/WebSocket.js +1 -1
  241. package/src/sap/ui/debug/ControlTree.js +1 -1
  242. package/src/sap/ui/debug/DebugEnv.js +1 -1
  243. package/src/sap/ui/debug/PropertyList.js +1 -1
  244. package/src/sap/ui/dom/jquery/zIndex.js +3 -3
  245. package/src/sap/ui/events/jquery/EventSimulation.js +7 -6
  246. package/src/sap/ui/events/jquery/EventTriggerHook.js +1 -1
  247. package/src/sap/ui/model/Binding.js +7 -3
  248. package/src/sap/ui/model/ClientModel.js +1 -1
  249. package/src/sap/ui/model/CompositeBinding.js +1 -1
  250. package/src/sap/ui/model/CompositeDataState.js +1 -1
  251. package/src/sap/ui/model/CompositeType.js +1 -1
  252. package/src/sap/ui/model/Context.js +31 -11
  253. package/src/sap/ui/model/DataState.js +1 -1
  254. package/src/sap/ui/model/ListBinding.js +19 -0
  255. package/src/sap/ui/model/MetaModel.js +1 -1
  256. package/src/sap/ui/model/Model.js +3 -3
  257. package/src/sap/ui/model/SelectionModel.js +5 -1
  258. package/src/sap/ui/model/SimpleType.js +1 -1
  259. package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
  260. package/src/sap/ui/model/Type.js +1 -1
  261. package/src/sap/ui/model/analytics/AnalyticalBinding.js +36 -45
  262. package/src/sap/ui/model/analytics/odata4analytics.js +31 -31
  263. package/src/sap/ui/model/base/ManagedObjectModel.js +11 -1
  264. package/src/sap/ui/model/json/JSONModel.js +1 -1
  265. package/src/sap/ui/model/message/MessageModel.js +1 -1
  266. package/src/sap/ui/model/odata/AnnotationParser.js +23 -18
  267. package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
  268. package/src/sap/ui/model/odata/ODataListBinding.js +1 -0
  269. package/src/sap/ui/model/odata/ODataMessageParser.js +1 -1
  270. package/src/sap/ui/model/odata/ODataMetaModel.js +52 -40
  271. package/src/sap/ui/model/odata/ODataMetadata.js +3 -3
  272. package/src/sap/ui/model/odata/ODataModel.js +6 -6
  273. package/src/sap/ui/model/odata/ODataTreeBindingFlat.js +1 -1
  274. package/src/sap/ui/model/odata/ODataUtils.js +126 -0
  275. package/src/sap/ui/model/odata/_AnnotationHelperBasics.js +30 -27
  276. package/src/sap/ui/model/odata/type/Boolean.js +1 -1
  277. package/src/sap/ui/model/odata/type/Byte.js +1 -1
  278. package/src/sap/ui/model/odata/type/Currency.js +7 -2
  279. package/src/sap/ui/model/odata/type/Date.js +1 -1
  280. package/src/sap/ui/model/odata/type/DateTime.js +1 -1
  281. package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
  282. package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
  283. package/src/sap/ui/model/odata/type/Decimal.js +1 -1
  284. package/src/sap/ui/model/odata/type/Double.js +1 -1
  285. package/src/sap/ui/model/odata/type/Guid.js +1 -1
  286. package/src/sap/ui/model/odata/type/Int.js +1 -1
  287. package/src/sap/ui/model/odata/type/Int16.js +1 -1
  288. package/src/sap/ui/model/odata/type/Int32.js +1 -1
  289. package/src/sap/ui/model/odata/type/Int64.js +1 -1
  290. package/src/sap/ui/model/odata/type/ODataType.js +1 -1
  291. package/src/sap/ui/model/odata/type/Raw.js +1 -1
  292. package/src/sap/ui/model/odata/type/SByte.js +1 -1
  293. package/src/sap/ui/model/odata/type/Single.js +1 -1
  294. package/src/sap/ui/model/odata/type/Stream.js +1 -1
  295. package/src/sap/ui/model/odata/type/String.js +3 -1
  296. package/src/sap/ui/model/odata/type/Time.js +1 -1
  297. package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
  298. package/src/sap/ui/model/odata/type/Unit.js +7 -2
  299. package/src/sap/ui/model/odata/type/UnitMixin.js +20 -7
  300. package/src/sap/ui/model/odata/v2/Context.js +165 -0
  301. package/src/sap/ui/model/odata/v2/ODataAnnotations.js +1 -1
  302. package/src/sap/ui/model/odata/v2/ODataContextBinding.js +19 -5
  303. package/src/sap/ui/model/odata/v2/ODataListBinding.js +20 -79
  304. package/src/sap/ui/model/odata/v2/ODataModel.js +75 -53
  305. package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +55 -41
  306. package/src/sap/ui/model/odata/v4/Context.js +48 -15
  307. package/src/sap/ui/model/odata/v4/ODataBinding.js +89 -9
  308. package/src/sap/ui/model/odata/v4/ODataContextBinding.js +87 -21
  309. package/src/sap/ui/model/odata/v4/ODataListBinding.js +72 -50
  310. package/src/sap/ui/model/odata/v4/ODataMetaModel.js +8 -8
  311. package/src/sap/ui/model/odata/v4/ODataModel.js +109 -171
  312. package/src/sap/ui/model/odata/v4/ODataParentBinding.js +34 -67
  313. package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +18 -9
  314. package/src/sap/ui/model/odata/v4/ODataUtils.js +1 -1
  315. package/src/sap/ui/model/odata/v4/SubmitMode.js +3 -3
  316. package/src/sap/ui/model/odata/v4/_AnnotationHelperExpression.js +1 -1
  317. package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +17 -16
  318. package/src/sap/ui/model/odata/v4/lib/_AggregationHelper.js +5 -1
  319. package/src/sap/ui/model/odata/v4/lib/_Cache.js +86 -117
  320. package/src/sap/ui/model/odata/v4/lib/{_GrandTotalHelper.js → _ConcatHelper.js} +34 -27
  321. package/src/sap/ui/model/odata/v4/lib/_GroupLock.js +2 -2
  322. package/src/sap/ui/model/odata/v4/lib/_Helper.js +122 -7
  323. package/src/sap/ui/model/odata/v4/lib/_MetadataConverter.js +4 -4
  324. package/src/sap/ui/model/odata/v4/lib/_MetadataRequestor.js +2 -2
  325. package/src/sap/ui/model/odata/v4/lib/_MinMaxHelper.js +25 -74
  326. package/src/sap/ui/model/odata/v4/lib/_Requestor.js +49 -12
  327. package/src/sap/ui/model/odata/v4/lib/_V2Requestor.js +7 -7
  328. package/src/sap/ui/model/resource/ResourceModel.js +1 -1
  329. package/src/sap/ui/model/type/Boolean.js +1 -1
  330. package/src/sap/ui/model/type/Currency.js +1 -1
  331. package/src/sap/ui/model/type/Date.js +1 -1
  332. package/src/sap/ui/model/type/DateInterval.js +3 -3
  333. package/src/sap/ui/model/type/DateTime.js +1 -1
  334. package/src/sap/ui/model/type/DateTimeInterval.js +3 -3
  335. package/src/sap/ui/model/type/FileSize.js +1 -1
  336. package/src/sap/ui/model/type/Float.js +1 -1
  337. package/src/sap/ui/model/type/Integer.js +1 -1
  338. package/src/sap/ui/model/type/String.js +1 -1
  339. package/src/sap/ui/model/type/Time.js +1 -1
  340. package/src/sap/ui/model/type/TimeInterval.js +3 -3
  341. package/src/sap/ui/model/type/Unit.js +1 -1
  342. package/src/sap/ui/model/xml/XMLModel.js +1 -1
  343. package/src/sap/ui/performance/Measurement.js +3 -5
  344. package/src/sap/ui/performance/trace/FESR.js +2 -1
  345. package/src/sap/ui/performance/trace/Interaction.js +11 -9
  346. package/src/sap/ui/qunit/QUnitUtils.js +1 -1
  347. package/src/sap/ui/qunit/qunit-coverage.js +1 -0
  348. package/src/sap/ui/qunit/qunit-junit.js +1 -0
  349. package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
  350. package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +1 -1
  351. package/src/sap/ui/security/FrameOptions.js +2 -1
  352. package/src/sap/ui/test/Opa5.js +1 -1
  353. package/src/sap/ui/test/OpaBuilder.js +1 -0
  354. package/src/sap/ui/test/TestUtils.js +17 -30
  355. package/src/sap/ui/test/_BrowserLogCollector.js +1 -0
  356. package/src/sap/ui/test/actions/Action.js +1 -1
  357. package/src/sap/ui/test/launchers/componentLauncher.js +2 -1
  358. package/src/sap/ui/test/opaQunit.js +6 -9
  359. package/src/sap/ui/test/pipelines/MatcherPipeline.js +1 -1
  360. package/src/sap/ui/test/selectors/_ControlSelectorGenerator.js +4 -4
  361. package/src/sap/ui/test/starter/_utils.js +6 -0
  362. package/src/sap/ui/test/starter/createSuite.js +1 -1
  363. package/src/sap/ui/thirdparty/IPv6.js +2 -2
  364. package/src/sap/ui/thirdparty/SecondLevelDomains.js +2 -2
  365. package/src/sap/ui/thirdparty/URI.js +14 -5
  366. package/src/sap/ui/thirdparty/URITemplate.js +2 -2
  367. package/src/sap/ui/thirdparty/caja-html-sanitizer.js +1 -1
  368. package/src/sap/ui/thirdparty/crossroads.js +10 -2
  369. package/src/sap/ui/util/Mobile.js +10 -7
  370. package/src/sap/ui/util/Storage.js +1 -1
  371. package/src/ui5loader-autoconfig.js +1 -1
  372. package/src/ui5loader.js +24 -6
  373. package/src/sap/ui/model/odata/v4/.eslintrc +0 -6
@@ -5,9 +5,11 @@
5
5
  */
6
6
  sap.ui.define([
7
7
  "sap/base/Log",
8
+ "sap/ui/base/ManagedObjectMetadata",
8
9
  "sap/ui/core/ComponentContainer",
10
+ "sap/ui/core/Placeholder",
9
11
  "sap/ui/core/library"
10
- ], function(Log, ComponentContainer, coreLib) {
12
+ ], function(Log, ManagedObjectMetadata, ComponentContainer, Placeholder, coreLib) {
11
13
  "use strict";
12
14
 
13
15
  // shortcut for sap.ui.core.ComponentLifecycle
@@ -49,7 +51,7 @@ sap.ui.define([
49
51
  _display: function (vData, oSequencePromise, oTargetCreateInfo) {
50
52
  if (this._oParent) {
51
53
  // replace the sync
52
- oSequencePromise = this._oParent._display(vData, oSequencePromise, oTargetCreateInfo);
54
+ oSequencePromise = this._oParent._display(vData, oSequencePromise, Object.assign({}, oTargetCreateInfo));
53
55
  }
54
56
 
55
57
  return this._place(vData, oSequencePromise, oTargetCreateInfo);
@@ -82,6 +84,32 @@ sap.ui.define([
82
84
  Log.warning("The target with name '" + this._oOptions._name + "' can't be suspended because it's being loaded or not loaded yet");
83
85
  }
84
86
 
87
+ return this;
88
+ },
89
+
90
+ /**
91
+ * Resumes the object which is loaded by the target.
92
+ *
93
+ * Currently this function initializes the router of the component without parsing the current hash when
94
+ * the object which is loaded by this target is an instance of
95
+ * UIComponent.
96
+ *
97
+ * @return {sap.ui.core.routing.Target} The 'this' to chain the call
98
+ * @private
99
+ */
100
+ resume: function() {
101
+ if (this._oParent) {
102
+ this._oParent.resume();
103
+ }
104
+
105
+ if (this._isLoaded()) {
106
+ var oObject = this._get(),
107
+ oRouter;
108
+
109
+ if (oObject.isA("sap.ui.core.UIComponent") && (oRouter = oObject.getRouter()) && oObject.hasNativeRouter()) {
110
+ oRouter.initialize(true);
111
+ }
112
+ }
85
113
 
86
114
  return this;
87
115
  },
@@ -97,23 +125,19 @@ sap.ui.define([
97
125
  },
98
126
 
99
127
  /**
100
- * Get the target instance from the TargetCache.
101
- *
102
- * The difference between this function and the "_load" function is that this function returns the target
103
- * instance directly if it's already loaded and returns a Promise during the loading of the target instance
104
- * while the "_load" function always returns a promise no matter whether the target instance is loaded or not.
128
+ * Retrieves addional target creation info based on the target type.
105
129
  *
106
- * @param {object} [oTargetCreateInfo] Additional information for the component creation. Currently the object
107
- * only contains the prefix for the routerHashChanger
108
- * @returns {sap.ui.core.mvc.View|sap.ui.core.UIComponent|Promise} The target instance when it's already loaded
109
- * or a promise which resolves with the target instance during the loading of the target instance
110
- * @private
130
+ * @param {object} oTargetCreateInfo Additional information for the target creation.
131
+ * Currently the object only contains the prefix for the routerHashChanger
132
+ * @return {object} Merged target creation info object
111
133
  */
112
- _get: function(oTargetCreateInfo) {
134
+ _getCreateOptions: function(oTargetCreateInfo) {
113
135
  var sName = this._getEffectiveObjectName(this._oOptions.name),
114
136
  oOptions = this._oOptions,
115
137
  oCreateOptions;
116
138
 
139
+ oTargetCreateInfo = oTargetCreateInfo || {};
140
+
117
141
  switch (oOptions.type) {
118
142
  case "View":
119
143
  oCreateOptions = {
@@ -138,7 +162,26 @@ sap.ui.define([
138
162
  throw new Error("The given type " + oOptions.type + " isn't support by sap.ui.core.routing.Target");
139
163
  }
140
164
 
141
- return this._oCache._get(oCreateOptions, oOptions.type,
165
+ return oCreateOptions;
166
+ },
167
+
168
+ /**
169
+ * Get the target instance from the TargetCache.
170
+ *
171
+ * The difference between this function and the "_load" function is that this function returns the target
172
+ * instance directly if it's already loaded and returns a Promise during the loading of the target instance
173
+ * while the "_load" function always returns a promise no matter whether the target instance is loaded or not.
174
+ *
175
+ * @param {object} [oTargetCreateInfo] Additional information for the component creation. Currently the object
176
+ * only contains the prefix for the routerHashChanger
177
+ * @returns {sap.ui.core.mvc.View|sap.ui.core.UIComponent|Promise} The target instance when it's already loaded
178
+ * or a promise which resolves with the target instance during the loading of the target instance
179
+ * @private
180
+ */
181
+ _get: function(oTargetCreateInfo) {
182
+ var oCreateOptions = this._getCreateOptions(oTargetCreateInfo);
183
+
184
+ return this._oCache._get(oCreateOptions, this._oOptions.type,
142
185
  // Hook in the route for deprecated global view id, it has to be supported to stay compatible
143
186
  this._bUseRawViewId, oTargetCreateInfo);
144
187
  },
@@ -193,12 +236,18 @@ sap.ui.define([
193
236
  oObject, sErrorMessage, pLoaded,
194
237
  bInstantResolve = true,
195
238
  fnResolve,
196
- pNestedRouteMatched;
239
+ pNestedRouteMatched,
240
+ bIsComponentTarget = oOptions.type === "Component";
241
+
242
+ oTargetCreateInfo = oTargetCreateInfo || {};
197
243
 
198
244
  if ((oOptions.name || oOptions.usage) && oOptions.type) {
199
245
  pNestedRouteMatched = new Promise(function(resolve) {
200
246
  fnResolve = resolve;
201
247
  });
248
+ if (bIsComponentTarget) {
249
+ oTargetCreateInfo.componentId = that._oOptions.id || ManagedObjectMetadata.uid("uicomponent");
250
+ }
202
251
  pLoaded = this._load(oTargetCreateInfo).then(function (oObject) {
203
252
  if (oObject.isA("sap.ui.core.UIComponent")) {
204
253
  var oRouter = oObject.getRouter();
@@ -208,7 +257,9 @@ sap.ui.define([
208
257
  var bIgnoreInitialHash = oTargetCreateInfo && oTargetCreateInfo.ignoreInitialHash;
209
258
 
210
259
  if (!oRouter._oConfig.async){
211
- throw new Error("The router of component '" + oObject.getId() + "' which is loaded via the target '" + that._oOptions._name + "' is defined as synchronous which is not supported using as a nested component.");
260
+ throw new Error("The router of component '" + oObject.getId() +
261
+ "' which is loaded via the target '" + that._oOptions._name +
262
+ "' is defined as synchronous which is not supported using as a nested component.");
212
263
  }
213
264
 
214
265
  if (oRouter._oOwner && oTargetCreateInfo) {
@@ -243,30 +294,9 @@ sap.ui.define([
243
294
  // when target information is given
244
295
  oSequencePromise = oSequencePromise
245
296
  .then(function(oParentInfo) {
246
- return pLoaded.then(function(oObject) {
247
- return {
248
- object: oObject,
249
- parentInfo: oParentInfo || {}
250
- };
251
- });
252
- })
253
- .then(function(oViewInfo) {
254
- // loaded and do placement
255
- var vValid = that._isValid(oViewInfo.parentInfo),
256
- oView, oRootControl;
257
-
258
- oObject = oViewInfo.object;
259
- if (oObject.isA("sap.ui.core.UIComponent")) {
260
- oRootControl = oObject.getRootControl();
261
- if (oRootControl && oRootControl.isA("sap.ui.core.mvc.View")) {
262
- oView = oRootControl;
263
- }
264
- } else {
265
- oView = oObject;
266
- }
297
+ oParentInfo = oParentInfo || {};
267
298
 
268
- that._bindTitleInTitleProvider(oView);
269
- that._addTitleProviderAsDependent(oView);
299
+ var vValid = that._isValid(oParentInfo);
270
300
 
271
301
  // validate config and log errors if necessary
272
302
  if (vValid !== true) {
@@ -274,9 +304,10 @@ sap.ui.define([
274
304
  return that._refuseInvalidTarget(oOptions._name, sErrorMessage);
275
305
  }
276
306
 
277
- var oViewContainingTheControl = oViewInfo.parentInfo.view,
278
- oControl = oViewInfo.parentInfo.control,
279
- pContainerControl = Promise.resolve(oControl);
307
+ var oViewContainingTheControl = oParentInfo.view,
308
+ oControl = oParentInfo.control,
309
+ pViewContainingTheControl,
310
+ pContainerControl;
280
311
 
281
312
  // if the parent target loads a component, the oViewContainingTheControl is an instance of
282
313
  // ComponentContainer. The root control of the component should be retrieved and set as
@@ -285,78 +316,186 @@ sap.ui.define([
285
316
  oViewContainingTheControl = oViewContainingTheControl.getComponentInstance().getRootControl();
286
317
  }
287
318
 
288
- //no parent view - see if there is a targetParent in the config
319
+ //no parent view - see if container can be found by using oOptions.controlId under oOptions.rootView
289
320
  if (!oViewContainingTheControl && oOptions.rootView) {
290
- oViewContainingTheControl = sap.ui.getCore().byId(oOptions.rootView);
321
+ // oOptions.rootView can be either an id or a promise that resolves with the id
322
+ pViewContainingTheControl = Promise.resolve(oOptions.rootView)
323
+ .then(function(oRootViewId) {
324
+ var oView;
325
+
326
+ if (oRootViewId) {
327
+ oView = sap.ui.getCore().byId(oRootViewId);
328
+ oOptions.rootView = oRootViewId;
329
+ }
291
330
 
292
- if (!oViewContainingTheControl) {
293
- sErrorMessage = "Did not find the root view with the id " + oOptions.rootView;
294
- return that._refuseInvalidTarget(oOptions._name, sErrorMessage);
295
- }
331
+ if (!oView) {
332
+ sErrorMessage = "Did not find the root view with the id " + oOptions.rootView;
333
+ return that._refuseInvalidTarget(oOptions._name, sErrorMessage);
334
+ } else {
335
+ return oView;
336
+ }
337
+ });
338
+ } else {
339
+ pViewContainingTheControl = Promise.resolve(oViewContainingTheControl);
296
340
  }
297
341
 
298
- // Find the control in the parent
299
- if (oOptions.controlId) {
300
- // The root control of a component may be any kind of control
301
- // A check of sap.ui.core.mvc.View is needed before calling the loaded method to wait
302
- // for the loading of the view
303
- if (oViewContainingTheControl && oViewContainingTheControl.isA("sap.ui.core.mvc.View")) {
304
- // controlId was specified - ask the parents view for it
305
- // wait for the parent view to be loaded in case it's loaded async
306
- pContainerControl = oViewContainingTheControl.loaded().then(function(oContainerView) {
307
- return oContainerView.byId(oOptions.controlId);
308
- });
342
+ pViewContainingTheControl = pViewContainingTheControl.then(function(oView) {
343
+ if (oView && oView.isA("sap.ui.core.mvc.View")) {
344
+ return oView.loaded();
345
+ } else {
346
+ return oView;
309
347
  }
348
+ });
349
+
350
+ if (oOptions.controlId) {
351
+ pContainerControl = pViewContainingTheControl.then(function(oContainerView) {
352
+ var oContainerControl;
353
+
354
+ if (oContainerView) {
355
+ oContainerControl = oContainerView.byId(oOptions.controlId);
356
+ }
310
357
 
311
- pContainerControl = pContainerControl.then(function(oContainerControl) {
312
358
  if (!oContainerControl) {
313
359
  //Test if control exists in core (without prefix) since it was not found in the parent or root view
314
360
  oContainerControl = sap.ui.getCore().byId(oOptions.controlId);
315
361
  }
316
362
 
317
- if (!oContainerControl) {
318
- sErrorMessage = "Control with ID " + oOptions.controlId + " could not be found";
319
- return that._refuseInvalidTarget(oOptions._name, sErrorMessage);
320
- } else {
321
- return oContainerControl;
322
- }
363
+ return oContainerControl;
323
364
  });
365
+ } else {
366
+ pContainerControl = Promise.resolve(oControl);
324
367
  }
325
368
 
326
- return pContainerControl;
369
+ return pContainerControl.then(function(oContainerControl) {
370
+ if (!oContainerControl) {
371
+ sErrorMessage = "Control with ID " + oOptions.controlId + " could not be found";
372
+ return that._refuseInvalidTarget(oOptions._name, sErrorMessage);
373
+ } else {
374
+ return oContainerControl;
375
+ }
376
+ });
327
377
  })
328
378
  .then(function(oContainerControl) {
329
- var oComponent,
330
- sComponentContainerId,
331
- fnOriginalDestroy;
379
+ var bHasPlaceholderConfig = false;
380
+ var oPlaceholderConfig = oTargetCreateInfo.placeholder || that._oOptions.placeholder || {};
381
+
382
+ if (Placeholder.hasProviders()) {
383
+ Object.assign(oPlaceholderConfig, Placeholder.getPlaceholderFromProviders({
384
+ name: that._oOptions.name,
385
+ type: that._oOptions.type
386
+ })
387
+ );
388
+ }
332
389
 
333
- if (oObject.isA("sap.ui.core.UIComponent")) {
334
- oComponent = oObject;
335
- sComponentContainerId = oComponent.getId() + "-container";
336
- oObject = sap.ui.getCore().byId(sComponentContainerId);
390
+ if (Object.keys(oPlaceholderConfig).length > 0) {
391
+ if (oPlaceholderConfig.autoClose === undefined) {
392
+ oPlaceholderConfig.autoClose = true;
393
+ }
394
+ bHasPlaceholderConfig = true;
395
+ }
396
+
397
+ if (bIsComponentTarget) {
398
+ var oOwnerComponent = that._oCache._oComponent;
399
+ var sComponentContainerId = oTargetCreateInfo.componentId + "-container";
400
+
401
+ oObject = (oOwnerComponent && oOwnerComponent.byId(sComponentContainerId))
402
+ || sap.ui.getCore().byId(sComponentContainerId);
337
403
 
338
404
  if (!oObject) {
339
405
  // defaults mixed in with configured settings
340
406
  var oContainerOptions = Object.assign({
341
- component: oComponent,
342
407
  height: "100%",
343
408
  width: "100%",
344
409
  lifecycle: ComponentLifecycle.Application
345
410
  }, oOptions.containerOptions);
346
411
 
347
- oObject = new ComponentContainer(sComponentContainerId, oContainerOptions);
412
+ if (oOwnerComponent) {
413
+ oOwnerComponent.runAsOwner(function() {
414
+ oObject = new ComponentContainer(oOwnerComponent.createId(sComponentContainerId), oContainerOptions);
415
+ });
416
+ } else {
417
+ oObject = new ComponentContainer(sComponentContainerId, oContainerOptions);
418
+ }
419
+ }
420
+
421
+ // set container object only if placeholder config is available
422
+ if (bHasPlaceholderConfig) {
423
+ oPlaceholderConfig.container = oObject;
424
+ }
425
+ }
426
+
427
+ // for view targets use container control to display placeholder
428
+ if (bHasPlaceholderConfig && oContainerControl.isA("sap.ui.core.IPlaceholderSupport")) {
429
+ oPlaceholderConfig.container = oContainerControl;
430
+ }
431
+
432
+ // Placeholder creation
433
+ if (oPlaceholderConfig.container) {
434
+ oPlaceholderConfig.aggregation = that._oOptions.controlAggregation;
435
+
436
+ if (!oTargetCreateInfo.repeatedRoute) {
437
+ var oCreateOptions = that._getCreateOptions(oTargetCreateInfo);
438
+ var oCachedObject = that._oCache.fetch(oCreateOptions, that._oOptions.type);
439
+
440
+ if (oCachedObject && bIsComponentTarget) {
441
+ // for type "Component", the object that is saved in the placeholder config should be
442
+ // the component container instead of the component
443
+ oPlaceholderConfig.object = oObject;
444
+ } else {
445
+ oPlaceholderConfig.object = oCachedObject;
446
+ }
447
+ }
448
+
449
+ if (oPlaceholderConfig.html) {
450
+ oPlaceholderConfig.placeholder = new Placeholder({
451
+ html: oPlaceholderConfig.html
452
+ });
453
+ }
454
+
455
+ if (oPlaceholderConfig.placeholder) {
456
+ that.showPlaceholder(oPlaceholderConfig);
457
+ }
458
+ }
348
459
 
349
- fnOriginalDestroy = oComponent.destroy;
350
- oComponent.destroy = function () {
460
+ return {
461
+ containerControl: oContainerControl,
462
+ object: oObject,
463
+ placeholderConfig: oPlaceholderConfig
464
+ };
465
+ })
466
+ .then(function(oViewInfo) {
467
+ return pLoaded.then(function(oObject) {
468
+ var oView, oRootControl;
469
+ if (bIsComponentTarget) {
470
+ var fnOriginalDestroy = oObject.destroy;
471
+ oObject.destroy = function () {
351
472
  if (fnOriginalDestroy) {
352
473
  fnOriginalDestroy.apply(this);
353
474
  }
354
-
355
475
  // destroy the component container when the component is destroyed
356
- oObject.destroy();
476
+ oViewInfo.object.destroy();
357
477
  };
478
+ oViewInfo.object.setComponent(oObject);
479
+
480
+ oRootControl = oObject.getRootControl();
481
+ if (oRootControl && oRootControl.isA("sap.ui.core.mvc.View")) {
482
+ oView = oRootControl;
483
+ }
484
+ } else {
485
+ // view
486
+ oViewInfo.object = oObject;
487
+ oView = oObject;
358
488
  }
359
- }
489
+
490
+ that._bindTitleInTitleProvider(oView);
491
+ that._addTitleProviderAsDependent(oView);
492
+
493
+ return oViewInfo;
494
+ });
495
+ })
496
+ .then(function(oViewInfo) {
497
+ var oContainerControl = oViewInfo.containerControl,
498
+ oObject = oViewInfo.object;
360
499
 
361
500
  // adapt the container before placing the view into it to make the rendering occur together with the next
362
501
  // aggregation modification.
@@ -369,7 +508,8 @@ sap.ui.define([
369
508
  var oAggregationInfo = oContainerControl.getMetadata().getJSONKeys()[oOptions.controlAggregation];
370
509
 
371
510
  if (!oAggregationInfo) {
372
- sErrorMessage = "Control " + oOptions.controlId + " does not have an aggregation called " + oOptions.controlAggregation;
511
+ sErrorMessage = "Control " + oOptions.controlId +
512
+ " does not have an aggregation called " + oOptions.controlAggregation;
373
513
  return that._refuseInvalidTarget(oOptions._name, sErrorMessage);
374
514
  }
375
515
 
@@ -377,13 +517,19 @@ sap.ui.define([
377
517
  oContainerControl[oAggregationInfo._sRemoveAllMutator]();
378
518
  }
379
519
 
380
- Log.info("Did place the " + oOptions.type.toLowerCase() + " target '" + (oOptions.name ? that._getEffectiveObjectName(oOptions.name) : oOptions.usage) + "' with the id '" + oObject.getId() + "' into the aggregation '" + oOptions.controlAggregation + "' of a control with the id '" + oContainerControl.getId() + "'", that);
520
+ Log.info("Did place the " + oOptions.type.toLowerCase() +
521
+ " target '" + (oOptions.name ? that._getEffectiveObjectName(oOptions.name) : oOptions.usage) +
522
+ "' with the id '" + oObject.getId() + "' into the aggregation '" + oOptions.controlAggregation +
523
+ "' of a control with the id '" + oContainerControl.getId() + "'", that);
524
+
525
+ // add oObject to oContainerControl's aggregation
381
526
  oContainerControl[oAggregationInfo._sMutator](oObject);
382
527
 
383
528
  return {
384
529
  name: oOptions._name,
385
530
  view: oObject,
386
- control: oContainerControl
531
+ control: oContainerControl,
532
+ placeholderConfig: oViewInfo.placeholderConfig
387
533
  };
388
534
  });
389
535
  } else {
@@ -405,13 +551,31 @@ sap.ui.define([
405
551
  control : oContainerControl,
406
552
  config : that._oOptions,
407
553
  data: vData,
408
- routeRelevant: that._routeRelevant
554
+ routeRelevant: oTargetCreateInfo.routeRelevant
409
555
  });
410
556
  }
557
+
558
+ if (aObjects[0].placeholderConfig && aObjects[0].placeholderConfig.container &&
559
+ that.hidePlaceholder && aObjects[0].placeholderConfig.autoClose) {
560
+ that.hidePlaceholder(aObjects[0].placeholderConfig);
561
+ }
562
+
411
563
  return aObjects[0];
412
564
  });
413
565
  },
414
566
 
567
+ showPlaceholder: function(mSettings) {
568
+ if (mSettings.container && mSettings.container.showPlaceholder) {
569
+ mSettings.container.showPlaceholder(mSettings);
570
+ }
571
+ },
572
+
573
+ hidePlaceholder: function(mSettings) {
574
+ if (mSettings.container.hidePlaceholder) {
575
+ mSettings.container.hidePlaceholder();
576
+ }
577
+ },
578
+
415
579
  /**
416
580
  * Validates the target options, will also be called from the route but route will not log errors
417
581
  *
@@ -29,7 +29,7 @@ sap.ui.define([
29
29
  * @returns {Promise | object} The desired object, if the object already exists in the cache, if not the promise is returned
30
30
  * @private
31
31
  */
32
- _getObjectWithGlobalId : function (oOptions, sType, oTargetCreateInfo, bSynchronousCreate) {
32
+ _getObjectWithGlobalId : function (oOptions, sType, oTargetCreateInfo, bSynchronousCreate, bNoCreate) {
33
33
  var that = this,
34
34
  vPromiseOrObject,
35
35
  sName,
@@ -58,12 +58,13 @@ sap.ui.define([
58
58
  oOptions.settings._routerHashChanger = oRouterHashChanger;
59
59
  }
60
60
 
61
+ oOptions.id = oOptions.id || oTargetCreateInfo.componentId;
62
+
61
63
  if (oOptions.usage) {
62
64
  return oOwnerComponent.createComponent(oOptions);
63
65
  } else {
64
66
  return Component.create(oOptions);
65
67
  }
66
- break;
67
68
  default:
68
69
  // do nothing
69
70
  }
@@ -97,9 +98,10 @@ sap.ui.define([
97
98
  this._checkName(sName, sType);
98
99
 
99
100
  oInstanceCache = this._oCache[sType.toLowerCase()][sName];
101
+
100
102
  vPromiseOrObject = oInstanceCache && oInstanceCache[oOptions.id];
101
103
 
102
- if (vPromiseOrObject) {
104
+ if (bNoCreate || vPromiseOrObject) {
103
105
  return vPromiseOrObject;
104
106
  }
105
107
 
@@ -139,11 +141,11 @@ sap.ui.define([
139
141
  * @returns {Promise | object} The desired object, if the object already exists in the cache, if not the promise is returned
140
142
  * @private
141
143
  */
142
- _getViewWithGlobalId : function (oOptions, bSynchronousCreate) {
144
+ _getViewWithGlobalId : function (oOptions, bSynchronousCreate, bNoCreate) {
143
145
  if (oOptions && !oOptions.name) {
144
146
  oOptions.name = oOptions.viewName;
145
147
  }
146
- return this._getObjectWithGlobalId(oOptions, "View", undefined, bSynchronousCreate);
148
+ return this._getObjectWithGlobalId(oOptions, "View", undefined, bSynchronousCreate, bNoCreate);
147
149
  },
148
150
 
149
151
  /**
@@ -154,8 +156,8 @@ sap.ui.define([
154
156
  * @returns {Promise | object} The desired object, if the object already exists in the cache, if not the promise is returned
155
157
  * @private
156
158
  */
157
- _getComponentWithGlobalId : function(oOptions, oTargetCreateInfo) {
158
- return this._getObjectWithGlobalId(oOptions, "Component", oTargetCreateInfo);
159
+ _getComponentWithGlobalId : function(oOptions, oTargetCreateInfo, bNoCreate) {
160
+ return this._getObjectWithGlobalId(oOptions, "Component", oTargetCreateInfo, bNoCreate);
159
161
  },
160
162
 
161
163
  /**
@@ -53,7 +53,10 @@ sap.ui.define(["sap/base/Log"], function(Log) {
53
53
  var oTargetCreateInfo = {
54
54
  prefix: oTargetInfo.prefix,
55
55
  propagateTitle: oTargetInfo.propagateTitle || false,
56
- ignoreInitialHash: oTargetInfo.ignoreInitialHash
56
+ ignoreInitialHash: oTargetInfo.ignoreInitialHash,
57
+ placeholder: oTargetInfo.placeholder,
58
+ repeatedRoute: oTargetInfo.repeatedRoute,
59
+ routeRelevant: oTargetInfo.routeRelevant || false
57
60
  };
58
61
 
59
62
  // gather view infos while processing Promise chain
@@ -111,7 +114,6 @@ sap.ui.define(["sap/base/Log"], function(Log) {
111
114
  oTarget = this.getTarget(sName);
112
115
 
113
116
  if (oTarget !== undefined) {
114
- oTarget._routeRelevant = oTargetInfo.routeRelevant || false;
115
117
  if (oTargetInfo.routeRelevant) {
116
118
  this._addDynamicTargetToRoute(oTargetInfo);
117
119
  }
@@ -50,6 +50,21 @@ sap.ui.define(["sap/base/Log"], function(Log) {
50
50
  return this;
51
51
  },
52
52
 
53
+ /**
54
+ * Resumes the object which is loaded by the target.
55
+ *
56
+ * Currently this function doesn't do anything because the sync
57
+ * version of the Target can only load Views but no Components.
58
+ *
59
+ * @return {sap.ui.core.routing.Target} The 'this' to chain the call
60
+ * @private
61
+ */
62
+ resume : function () {
63
+ // the sync target can only load view and not component
64
+ // therefore it's not needed to do anything in this function
65
+ return this;
66
+ },
67
+
53
68
  /**
54
69
  * Places the target on the screen
55
70
  *
@@ -17,7 +17,7 @@ sap.ui.define(["sap/ui/support/library", "sap/ui/core/mvc/View", "sap/ui/core/mv
17
17
  var aObsoleteFunctionNames = ["jQuery.sap.require", "$.sap.require", "sap.ui.requireSync", "jQuery.sap.sjax"];
18
18
 
19
19
  // avoid spoiling the globalAPIRule by using Object.getOwnPropertyDescriptor
20
- if (jQuery && jQuery.sap && !!Object.getOwnPropertyDescriptor(jQuery.sap, "sjax").value) {
20
+ if (jQuery && jQuery.sap && Object.getOwnPropertyDescriptor(jQuery.sap, "sjax").value) {
21
21
  aObsoleteFunctionNames.push("jQuery.sap.syncHead",
22
22
  "jQuery.sap.syncGet",
23
23
  "jQuery.sap.syncPost",
@@ -439,5 +439,39 @@ sap.ui.define(["sap/ui/support/library", "sap/ui/core/mvc/View", "sap/ui/core/mv
439
439
  }
440
440
  };
441
441
 
442
- return [oControllerSyncCodeCheckRule, oGlobalAPIRule, oJquerySapRule, oSyncFactoryLoadingRule, oGlobalSyncXhrRule, oDeprecatedAPIRule, oControllerExtensionRule, oJQueryThreeDeprecationRule, oMissingSuperInitRule, oJSViewRule];
442
+ /**
443
+ * Checks for missing super constructor calls on sap.ui.core.Component and sap.ui.core.mvc.Controller.
444
+ */
445
+ var oMissingSuperConstructorRule = {
446
+ id: "missingSuperConstructor",
447
+ audiences: [Audiences.Application, Audiences.Control, Audiences.Internal],
448
+ categories: [Categories.Functionality],
449
+ enabled: true,
450
+ minversion: "1.93",
451
+ title: "Missing super constructor call",
452
+ description: "A sub-class of sap.ui.core.Component or sap.ui.core.mvc.Controller which overrides the constructor must apply the super constructor as well.",
453
+ resolution: "A bound call to sap.ui.core.Component or sap.ui.core.mvc.Controller must be introduced in the sub-class.",
454
+ resolutionurls: [{
455
+ text: "API Documentation: sap.ui.core.mvc.Controller",
456
+ href: "https://openui5.hana.ondemand.com/api/sap.ui.core.mvc.Controller"
457
+ },
458
+ {
459
+ text: "API Documentation: sap.ui.core.Component",
460
+ href: "https://openui5.hana.ondemand.com/api/sap.ui.core.Component"
461
+ }],
462
+ check: function(oIssueManager, oCoreFacade, oScope) {
463
+ var oLoggedObjects = oScope.getLoggedObjects("missingSuperConstructor");
464
+ oLoggedObjects.forEach(function(oLoggedObject) {
465
+ oIssueManager.addIssue({
466
+ severity: Severity.High,
467
+ details: oLoggedObject.message,
468
+ context: {
469
+ id: "WEBPAGE"
470
+ }
471
+ });
472
+ });
473
+ }
474
+ };
475
+
476
+ return [oControllerSyncCodeCheckRule, oGlobalAPIRule, oJquerySapRule, oSyncFactoryLoadingRule, oGlobalSyncXhrRule, oDeprecatedAPIRule, oControllerExtensionRule, oJQueryThreeDeprecationRule, oMissingSuperInitRule, oMissingSuperConstructorRule, oJSViewRule];
443
477
  }, true);
@@ -26,7 +26,7 @@ sap.ui.define([
26
26
  * @class
27
27
  * A SearchProvider which uses the OpenSearch protocol (either JSON or XML).
28
28
  * @extends sap.ui.core.search.SearchProvider
29
- * @version 1.91.0
29
+ * @version 1.93.2
30
30
  *
31
31
  * @public
32
32
  * @alias sap.ui.core.search.OpenSearchProvider
@@ -23,7 +23,7 @@ sap.ui.define(['sap/ui/core/Element', "sap/base/Log", 'sap/ui/core/library'],
23
23
  *
24
24
  * Do not create instances of this class, but use a concrete subclass instead.
25
25
  * @extends sap.ui.core.Element
26
- * @version 1.91.0
26
+ * @version 1.93.2
27
27
  *
28
28
  * @public
29
29
  * @alias sap.ui.core.search.SearchProvider
@@ -71,7 +71,7 @@ sap.ui.define(['sap/ui/base/Object', "sap/base/assert", "sap/base/Log"],
71
71
  *
72
72
  * @extends sap.ui.base.Object
73
73
  * @author SAP SE
74
- * @version 1.91.0
74
+ * @version 1.93.2
75
75
  * @alias sap.ui.core.service.Service
76
76
  * @abstract
77
77
  * @private
@@ -83,7 +83,7 @@ sap.ui.define(['sap/ui/base/Object', 'sap/ui/core/service/Service', "sap/base/as
83
83
  *
84
84
  * @extends sap.ui.base.Object
85
85
  * @author SAP SE
86
- * @version 1.91.0
86
+ * @version 1.93.2
87
87
  * @alias sap.ui.core.service.ServiceFactory
88
88
  * @private
89
89
  * @ui5-restricted sap.ushell