@openui5/sap.ui.core 1.94.0 → 1.97.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (417) hide show
  1. package/.eslintrc.json +15 -4
  2. package/.reuse/dep5 +12 -12
  3. package/THIRDPARTY.txt +21 -17
  4. package/package.json +1 -1
  5. package/src/jquery.sap.global.js +1 -1
  6. package/src/jquery.sap.properties.js +1 -1
  7. package/src/jquery.sap.resources.js +2 -2
  8. package/src/jquery.sap.script.js +1 -1
  9. package/src/jquery.sap.storage.js +3 -3
  10. package/src/sap/base/i18n/ResourceBundle.js +6 -2
  11. package/src/sap/base/util/restricted/_CancelablePromise.js +1 -1
  12. package/src/sap/base/util/restricted/_castArray.js +1 -1
  13. package/src/sap/base/util/restricted/_compact.js +1 -1
  14. package/src/sap/base/util/restricted/_curry.js +1 -1
  15. package/src/sap/base/util/restricted/_debounce.js +1 -1
  16. package/src/sap/base/util/restricted/_difference.js +1 -1
  17. package/src/sap/base/util/restricted/_differenceBy.js +1 -1
  18. package/src/sap/base/util/restricted/_differenceWith.js +1 -1
  19. package/src/sap/base/util/restricted/_flatMap.js +1 -1
  20. package/src/sap/base/util/restricted/_flatMapDeep.js +1 -1
  21. package/src/sap/base/util/restricted/_flatMapDepth.js +1 -1
  22. package/src/sap/base/util/restricted/_flatten.js +1 -1
  23. package/src/sap/base/util/restricted/_flattenDeep.js +1 -1
  24. package/src/sap/base/util/restricted/_flattenDepth.js +1 -1
  25. package/src/sap/base/util/restricted/_intersection.js +1 -1
  26. package/src/sap/base/util/restricted/_intersectionBy.js +1 -1
  27. package/src/sap/base/util/restricted/_intersectionWith.js +1 -1
  28. package/src/sap/base/util/restricted/_isEqual.js +1 -1
  29. package/src/sap/base/util/restricted/_isEqualWith.js +1 -1
  30. package/src/sap/base/util/restricted/_isNil.js +1 -1
  31. package/src/sap/base/util/restricted/_max.js +1 -1
  32. package/src/sap/base/util/restricted/_merge.js +1 -1
  33. package/src/sap/base/util/restricted/_mergeWith.js +1 -1
  34. package/src/sap/base/util/restricted/_min.js +1 -1
  35. package/src/sap/base/util/restricted/_omit.js +1 -1
  36. package/src/sap/base/util/restricted/_pick.js +1 -1
  37. package/src/sap/base/util/restricted/_pickBy.js +1 -1
  38. package/src/sap/base/util/restricted/_throttle.js +1 -1
  39. package/src/sap/base/util/restricted/_toArray.js +1 -1
  40. package/src/sap/base/util/restricted/_union.js +1 -1
  41. package/src/sap/base/util/restricted/_unionBy.js +1 -1
  42. package/src/sap/base/util/restricted/_unionWith.js +1 -1
  43. package/src/sap/base/util/restricted/_uniq.js +1 -1
  44. package/src/sap/base/util/restricted/_uniqBy.js +1 -1
  45. package/src/sap/base/util/restricted/_uniqWith.js +1 -1
  46. package/src/sap/base/util/restricted/_without.js +1 -1
  47. package/src/sap/base/util/restricted/_xor.js +1 -1
  48. package/src/sap/base/util/restricted/_xorBy.js +1 -1
  49. package/src/sap/base/util/restricted/_xorWith.js +1 -1
  50. package/src/sap/base/util/restricted/_zipObject.js +1 -1
  51. package/src/sap/base/util/restricted/_zipObjectDeep.js +1 -1
  52. package/src/sap/ui/Device.js +15 -11
  53. package/src/sap/ui/Global.js +13 -17
  54. package/src/sap/ui/base/DataType.js +14 -8
  55. package/src/sap/ui/base/Event.js +1 -1
  56. package/src/sap/ui/base/EventProvider.js +1 -1
  57. package/src/sap/ui/base/Interface.js +1 -1
  58. package/src/sap/ui/base/ManagedObject.js +13 -8
  59. package/src/sap/ui/base/ManagedObjectMetadata.js +2 -2
  60. package/src/sap/ui/base/Metadata.js +1 -3
  61. package/src/sap/ui/base/Object.js +1 -1
  62. package/src/sap/ui/base/ObjectPool.js +1 -1
  63. package/src/sap/ui/core/.library +6 -32
  64. package/src/sap/ui/core/AppCacheBuster.js +8 -8
  65. package/src/sap/ui/core/BusyIndicator.js +1 -1
  66. package/src/sap/ui/core/Component.js +303 -135
  67. package/src/sap/ui/core/ComponentContainer.js +11 -7
  68. package/src/sap/ui/core/ComponentMetadata.js +1 -1
  69. package/src/sap/ui/core/ComponentSupport.js +1 -1
  70. package/src/sap/ui/core/Configuration.js +67 -31
  71. package/src/sap/ui/core/Control.js +2 -2
  72. package/src/sap/ui/core/Core.js +79 -15
  73. package/src/sap/ui/core/CustomData.js +1 -1
  74. package/src/sap/ui/core/DeclarativeSupport.js +1 -1
  75. package/src/sap/ui/core/Element.js +2 -6
  76. package/src/sap/ui/core/ElementMetadata.js +1 -1
  77. package/src/sap/ui/core/EnabledPropagator.js +1 -1
  78. package/src/sap/ui/core/EventBus.js +1 -1
  79. package/src/sap/ui/core/ExtensionPoint.js +6 -13
  80. package/src/sap/ui/core/Fragment.js +30 -32
  81. package/src/sap/ui/core/HTML.js +3 -3
  82. package/src/sap/ui/core/History.js +1 -1
  83. package/src/sap/ui/core/Icon.js +7 -8
  84. package/src/sap/ui/core/IconPool.js +26 -1097
  85. package/src/sap/ui/core/IconRenderer.js +6 -6
  86. package/src/sap/ui/core/IndicationColorSupport.js +1 -1
  87. package/src/sap/ui/core/IntervalTrigger.js +1 -1
  88. package/src/sap/ui/core/InvisibleMessage.js +1 -1
  89. package/src/sap/ui/core/InvisibleRenderer.js +1 -1
  90. package/src/sap/ui/core/InvisibleText.js +1 -1
  91. package/src/sap/ui/core/Item.js +1 -1
  92. package/src/sap/ui/core/LabelEnablement.js +1 -1
  93. package/src/sap/ui/core/LayoutData.js +1 -1
  94. package/src/sap/ui/core/ListItem.js +1 -1
  95. package/src/sap/ui/core/LocalBusyIndicator.js +1 -1
  96. package/src/sap/ui/core/Locale.js +26 -4
  97. package/src/sap/ui/core/LocaleData.js +3 -3
  98. package/src/sap/ui/core/Manifest.js +2 -60
  99. package/src/sap/ui/core/Message.js +1 -1
  100. package/src/sap/ui/core/Patcher.js +27 -3
  101. package/src/sap/ui/core/Placeholder.js +4 -4
  102. package/src/sap/ui/core/RenderManager.js +38 -8
  103. package/src/sap/ui/core/Renderer.js +13 -3
  104. package/src/sap/ui/core/ResizeHandler.js +1 -1
  105. package/src/sap/ui/core/ScrollBar.js +4 -3
  106. package/src/sap/ui/core/SeparatorItem.js +1 -1
  107. package/src/sap/ui/core/ShortcutHintsMixin.js +14 -7
  108. package/src/sap/ui/core/ThemeCheck.js +2 -2
  109. package/src/sap/ui/core/Title.js +1 -1
  110. package/src/sap/ui/core/TooltipBase.js +1 -1
  111. package/src/sap/ui/core/UIArea.js +3 -3
  112. package/src/sap/ui/core/UIComponent.js +19 -11
  113. package/src/sap/ui/core/UIComponentMetadata.js +1 -1
  114. package/src/sap/ui/core/ValueStateSupport.js +1 -1
  115. package/src/sap/ui/core/VariantLayoutData.js +1 -1
  116. package/src/sap/ui/core/XMLComposite.js +2 -2
  117. package/src/sap/ui/core/XMLCompositeMetadata.js +2 -2
  118. package/src/sap/ui/core/XMLTemplateProcessor.js +132 -43
  119. package/src/sap/ui/core/_IconRegistry.js +1148 -0
  120. package/src/sap/ui/core/cache/LRUPersistentCache.js +4 -2
  121. package/src/sap/ui/core/date/UniversalDateUtils.js +33 -0
  122. package/src/sap/ui/core/delegate/ItemNavigation.js +1 -1
  123. package/src/sap/ui/core/delegate/ScrollEnablement.js +1 -1
  124. package/src/sap/ui/core/dnd/DragDropBase.js +1 -1
  125. package/src/sap/ui/core/dnd/DragDropInfo.js +1 -1
  126. package/src/sap/ui/core/dnd/DragInfo.js +1 -1
  127. package/src/sap/ui/core/dnd/DropInfo.js +1 -1
  128. package/src/sap/ui/core/format/NumberFormat.js +16 -1
  129. package/src/sap/ui/core/hyphenation/Hyphenation.js +61 -80
  130. package/src/sap/ui/core/library.js +5 -5
  131. package/src/sap/ui/core/message/ControlMessageProcessor.js +5 -5
  132. package/src/sap/ui/core/message/Message.js +1 -1
  133. package/src/sap/ui/core/message/MessageManager.js +13 -15
  134. package/src/sap/ui/core/message/MessageParser.js +1 -1
  135. package/src/sap/ui/core/message/MessageProcessor.js +22 -12
  136. package/src/sap/ui/core/messagebundle_de.properties +1 -1
  137. package/src/sap/ui/core/messagebundle_fr.properties +8 -8
  138. package/src/sap/ui/core/messagebundle_it.properties +1 -1
  139. package/src/sap/ui/core/messagebundle_pl.properties +1 -1
  140. package/src/sap/ui/core/messagebundle_ru.properties +21 -21
  141. package/src/sap/ui/core/messagebundle_th.properties +2 -2
  142. package/src/sap/ui/core/mvc/Controller.js +5 -5
  143. package/src/sap/ui/core/mvc/ControllerExtensionProvider.js +30 -32
  144. package/src/sap/ui/core/mvc/ControllerMetadata.js +18 -18
  145. package/src/sap/ui/core/mvc/HTMLView.js +2 -2
  146. package/src/sap/ui/core/mvc/JSONView.js +2 -2
  147. package/src/sap/ui/core/mvc/JSView.js +2 -2
  148. package/src/sap/ui/core/mvc/TemplateView.js +2 -2
  149. package/src/sap/ui/core/mvc/View.js +58 -85
  150. package/src/sap/ui/core/mvc/XMLView.js +2 -2
  151. package/src/sap/ui/core/mvc/XMLViewRenderer.js +17 -20
  152. package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
  153. package/src/sap/ui/core/plugin/LessSupport.js +1 -1
  154. package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -1
  155. package/src/sap/ui/core/postmessage/Bus.js +1 -1
  156. package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
  157. package/src/sap/ui/core/routing/Route.js +10 -1
  158. package/src/sap/ui/core/routing/Router.js +16 -6
  159. package/src/sap/ui/core/routing/Targets.js +26 -0
  160. package/src/sap/ui/core/routing/async/Route.js +6 -3
  161. package/src/sap/ui/core/routing/async/Target.js +28 -4
  162. package/src/sap/ui/core/routing/sync/Target.js +15 -0
  163. package/src/sap/ui/core/rules/Misc.support.js +51 -1
  164. package/src/sap/ui/core/rules/Rendering.support.js +1 -4
  165. package/src/sap/ui/core/rules/View.support.js +14 -46
  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/Plugin.js +2 -2
  172. package/src/sap/ui/core/support/RuleEngineOpaExtension.js +0 -1
  173. package/src/sap/ui/core/support/Support.js +1 -1
  174. package/src/sap/ui/core/support/controls/TreeViewer.js +1 -1
  175. package/src/sap/ui/core/support/plugins/ControlTree.js +37 -43
  176. package/src/sap/ui/core/support/plugins/Interaction.js +1 -1
  177. package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
  178. package/src/sap/ui/core/support/plugins/Performance.js +1 -2
  179. package/src/sap/ui/core/support/plugins/Selector.js +1 -1
  180. package/src/sap/ui/core/support/plugins/TechInfo.js +1 -1
  181. package/src/sap/ui/core/support/plugins/Trace.js +1 -1
  182. package/src/sap/ui/core/support/plugins/ViewInfo.js +2 -2
  183. package/src/sap/ui/core/support/support.css +2 -8
  184. package/src/sap/ui/core/support/techinfo/TechnicalInfo.fragment.xml +1 -0
  185. package/src/sap/ui/core/support/techinfo/TechnicalInfo.js +150 -73
  186. package/src/sap/ui/core/support/trace/E2eTraceLib.js +3 -3
  187. package/src/sap/ui/core/themes/base/Icon.less +9 -0
  188. package/src/sap/ui/core/themes/base/SAP-icons.css +2 -0
  189. package/src/sap/ui/core/themes/base/SAP-icons.less +10 -0
  190. package/src/sap/ui/core/themes/base/base.less +543 -390
  191. package/src/sap/ui/core/themes/base/fonts/SAP-icons.woff2 +0 -0
  192. package/src/sap/ui/core/themes/base/global.less +38 -0
  193. package/src/sap/ui/core/themes/base/library.source.less +1 -2
  194. package/src/sap/ui/core/themes/sap_hcb/global.less +34 -0
  195. package/src/sap/ui/core/theming/Parameters.js +21 -0
  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 +1 -1
  200. package/src/sap/ui/core/tmpl/TemplateControl.js +1 -1
  201. package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
  202. package/src/sap/ui/core/util/Export.js +1 -1
  203. package/src/sap/ui/core/util/ExportCell.js +1 -1
  204. package/src/sap/ui/core/util/ExportColumn.js +1 -1
  205. package/src/sap/ui/core/util/ExportRow.js +1 -1
  206. package/src/sap/ui/core/util/ExportType.js +1 -1
  207. package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
  208. package/src/sap/ui/core/util/File.js +1 -1
  209. package/src/sap/ui/core/util/LibraryInfo.js +1 -1
  210. package/src/sap/ui/core/util/MockServer.js +2 -2
  211. package/src/sap/ui/core/util/PasteHelper.js +1 -1
  212. package/src/sap/ui/core/util/XMLPreprocessor.js +11 -12
  213. package/src/sap/ui/core/util/reflection/JsControlTreeModifier.js +10 -12
  214. package/src/sap/ui/core/util/reflection/XmlTreeModifier.js +6 -3
  215. package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
  216. package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
  217. package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
  218. package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
  219. package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
  220. package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
  221. package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
  222. package/src/sap/ui/core/ws/ReadyState.js +1 -1
  223. package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
  224. package/src/sap/ui/core/ws/WebSocket.js +1 -1
  225. package/src/sap/ui/debug/ControlTree.js +1 -1
  226. package/src/sap/ui/debug/DebugEnv.js +1 -1
  227. package/src/sap/ui/debug/Highlighter.js +8 -2
  228. package/src/sap/ui/debug/PropertyList.js +1 -1
  229. package/src/sap/ui/model/Binding.js +174 -118
  230. package/src/sap/ui/model/ChangeReason.js +1 -1
  231. package/src/sap/ui/model/ClientContextBinding.js +1 -1
  232. package/src/sap/ui/model/ClientListBinding.js +8 -3
  233. package/src/sap/ui/model/ClientModel.js +9 -8
  234. package/src/sap/ui/model/ClientPropertyBinding.js +4 -2
  235. package/src/sap/ui/model/ClientTreeBinding.js +15 -9
  236. package/src/sap/ui/model/ClientTreeBindingAdapter.js +28 -23
  237. package/src/sap/ui/model/CompositeBinding.js +98 -77
  238. package/src/sap/ui/model/CompositeDataState.js +2 -2
  239. package/src/sap/ui/model/CompositeType.js +2 -2
  240. package/src/sap/ui/model/Context.js +4 -2
  241. package/src/sap/ui/model/ContextBinding.js +6 -14
  242. package/src/sap/ui/model/DataState.js +2 -2
  243. package/src/sap/ui/model/Filter.js +255 -53
  244. package/src/sap/ui/model/FilterOperator.js +1 -1
  245. package/src/sap/ui/model/FilterProcessor.js +27 -17
  246. package/src/sap/ui/model/FilterType.js +1 -1
  247. package/src/sap/ui/model/ListBinding.js +200 -118
  248. package/src/sap/ui/model/MetaModel.js +4 -9
  249. package/src/sap/ui/model/Model.js +349 -303
  250. package/src/sap/ui/model/PropertyBinding.js +92 -58
  251. package/src/sap/ui/model/SelectionModel.js +2 -2
  252. package/src/sap/ui/model/SimpleType.js +2 -2
  253. package/src/sap/ui/model/Sorter.js +1 -1
  254. package/src/sap/ui/model/SorterProcessor.js +1 -1
  255. package/src/sap/ui/model/StaticBinding.js +1 -1
  256. package/src/sap/ui/model/TreeAutoExpandMode.js +2 -2
  257. package/src/sap/ui/model/TreeBinding.js +1 -1
  258. package/src/sap/ui/model/TreeBindingAdapter.js +249 -100
  259. package/src/sap/ui/model/TreeBindingCompatibilityAdapter.js +16 -9
  260. package/src/sap/ui/model/TreeBindingUtils.js +3 -0
  261. package/src/sap/ui/model/Type.js +1 -1
  262. package/src/sap/ui/model/analytics/AnalyticalBinding.js +20 -10
  263. package/src/sap/ui/model/analytics/AnalyticalTreeBindingAdapter.js +17 -19
  264. package/src/sap/ui/model/analytics/AnalyticalVersionInfo.js +1 -1
  265. package/src/sap/ui/model/analytics/BatchResponseCollector.js +1 -1
  266. package/src/sap/ui/model/analytics/ODataModelAdapter.js +1 -1
  267. package/src/sap/ui/model/analytics/odata4analytics.js +3 -2
  268. package/src/sap/ui/model/base/ManagedObjectModel.js +4 -0
  269. package/src/sap/ui/model/json/JSONListBinding.js +8 -5
  270. package/src/sap/ui/model/json/JSONModel.js +29 -20
  271. package/src/sap/ui/model/json/JSONPropertyBinding.js +5 -4
  272. package/src/sap/ui/model/json/JSONTreeBinding.js +1 -1
  273. package/src/sap/ui/model/message/MessageListBinding.js +6 -3
  274. package/src/sap/ui/model/message/MessageModel.js +25 -17
  275. package/src/sap/ui/model/message/MessagePropertyBinding.js +3 -3
  276. package/src/sap/ui/model/odata/AnnotationHelper.js +3 -3
  277. package/src/sap/ui/model/odata/AnnotationParser.js +5 -3
  278. package/src/sap/ui/model/odata/CountMode.js +1 -1
  279. package/src/sap/ui/model/odata/Filter.js +1 -1
  280. package/src/sap/ui/model/odata/ODataAnnotations.js +2 -2
  281. package/src/sap/ui/model/odata/ODataContextBinding.js +1 -1
  282. package/src/sap/ui/model/odata/ODataListBinding.js +62 -39
  283. package/src/sap/ui/model/odata/ODataMessageParser.js +3 -3
  284. package/src/sap/ui/model/odata/ODataMetaModel.js +6 -4
  285. package/src/sap/ui/model/odata/ODataMetadata.js +137 -86
  286. package/src/sap/ui/model/odata/ODataModel.js +443 -216
  287. package/src/sap/ui/model/odata/ODataPropertyBinding.js +8 -6
  288. package/src/sap/ui/model/odata/ODataTreeBinding.js +65 -33
  289. package/src/sap/ui/model/odata/ODataTreeBindingAdapter.js +28 -18
  290. package/src/sap/ui/model/odata/ODataTreeBindingFlat.js +442 -262
  291. package/src/sap/ui/model/odata/ODataUtils.js +36 -19
  292. package/src/sap/ui/model/odata/OperationMode.js +1 -1
  293. package/src/sap/ui/model/odata/_AnnotationHelperBasics.js +2 -1
  294. package/src/sap/ui/model/odata/_AnnotationHelperExpression.js +11 -9
  295. package/src/sap/ui/model/odata/_ODataMetaModelUtils.js +6 -4
  296. package/src/sap/ui/model/odata/type/Boolean.js +1 -1
  297. package/src/sap/ui/model/odata/type/Byte.js +1 -1
  298. package/src/sap/ui/model/odata/type/Currency.js +1 -1
  299. package/src/sap/ui/model/odata/type/Date.js +1 -1
  300. package/src/sap/ui/model/odata/type/DateTime.js +1 -1
  301. package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
  302. package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
  303. package/src/sap/ui/model/odata/type/Decimal.js +5 -1
  304. package/src/sap/ui/model/odata/type/Double.js +1 -1
  305. package/src/sap/ui/model/odata/type/Guid.js +1 -1
  306. package/src/sap/ui/model/odata/type/Int.js +1 -1
  307. package/src/sap/ui/model/odata/type/Int16.js +1 -1
  308. package/src/sap/ui/model/odata/type/Int32.js +1 -1
  309. package/src/sap/ui/model/odata/type/Int64.js +1 -1
  310. package/src/sap/ui/model/odata/type/ODataType.js +1 -1
  311. package/src/sap/ui/model/odata/type/Raw.js +1 -1
  312. package/src/sap/ui/model/odata/type/SByte.js +1 -1
  313. package/src/sap/ui/model/odata/type/Single.js +1 -1
  314. package/src/sap/ui/model/odata/type/Stream.js +1 -1
  315. package/src/sap/ui/model/odata/type/String.js +1 -1
  316. package/src/sap/ui/model/odata/type/Time.js +1 -1
  317. package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
  318. package/src/sap/ui/model/odata/type/Unit.js +1 -1
  319. package/src/sap/ui/model/odata/type/UnitMixin.js +0 -1
  320. package/src/sap/ui/model/odata/v2/Context.js +98 -17
  321. package/src/sap/ui/model/odata/v2/ODataAnnotations.js +2 -2
  322. package/src/sap/ui/model/odata/v2/ODataContextBinding.js +1 -1
  323. package/src/sap/ui/model/odata/v2/ODataListBinding.js +416 -132
  324. package/src/sap/ui/model/odata/v2/ODataModel.js +465 -250
  325. package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +191 -109
  326. package/src/sap/ui/model/odata/v2/_CreatedContextsCache.js +179 -0
  327. package/src/sap/ui/model/odata/v4/Context.js +48 -7
  328. package/src/sap/ui/model/odata/v4/ODataBinding.js +60 -30
  329. package/src/sap/ui/model/odata/v4/ODataContextBinding.js +177 -53
  330. package/src/sap/ui/model/odata/v4/ODataListBinding.js +304 -91
  331. package/src/sap/ui/model/odata/v4/ODataMetaModel.js +32 -20
  332. package/src/sap/ui/model/odata/v4/ODataModel.js +29 -15
  333. package/src/sap/ui/model/odata/v4/ODataParentBinding.js +83 -51
  334. package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +13 -9
  335. package/src/sap/ui/model/odata/v4/lib/_Cache.js +115 -19
  336. package/src/sap/ui/model/odata/v4/lib/_Helper.js +35 -5
  337. package/src/sap/ui/model/odata/v4/lib/_Requestor.js +50 -5
  338. package/src/sap/ui/model/resource/ResourceModel.js +6 -2
  339. package/src/sap/ui/model/resource/ResourcePropertyBinding.js +1 -1
  340. package/src/sap/ui/model/type/Boolean.js +2 -2
  341. package/src/sap/ui/model/type/Currency.js +2 -2
  342. package/src/sap/ui/model/type/Date.js +9 -3
  343. package/src/sap/ui/model/type/DateInterval.js +4 -2
  344. package/src/sap/ui/model/type/DateTime.js +2 -2
  345. package/src/sap/ui/model/type/DateTimeInterval.js +2 -2
  346. package/src/sap/ui/model/type/FileSize.js +4 -2
  347. package/src/sap/ui/model/type/Float.js +4 -2
  348. package/src/sap/ui/model/type/Integer.js +4 -2
  349. package/src/sap/ui/model/type/String.js +2 -2
  350. package/src/sap/ui/model/type/Time.js +2 -2
  351. package/src/sap/ui/model/type/TimeInterval.js +2 -2
  352. package/src/sap/ui/model/type/Unit.js +14 -7
  353. package/src/sap/ui/model/xml/XMLListBinding.js +15 -9
  354. package/src/sap/ui/model/xml/XMLModel.js +74 -45
  355. package/src/sap/ui/model/xml/XMLPropertyBinding.js +5 -5
  356. package/src/sap/ui/model/xml/XMLTreeBinding.js +5 -4
  357. package/src/sap/ui/performance/trace/Interaction.js +30 -15
  358. package/src/sap/ui/qunit/QUnitUtils.js +3 -2
  359. package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
  360. package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +9 -11
  361. package/src/sap/ui/test/TestUtils.js +11 -4
  362. package/src/sap/ui/test/actions/Action.js +9 -2
  363. package/src/sap/ui/test/actions/Press.js +28 -1
  364. package/src/sap/ui/test/generic/_EnforceSemanticRendering.js +111 -0
  365. package/src/sap/ui/test/matchers/I18NText.js +29 -11
  366. package/src/sap/ui/test/opaQunit.js +5 -0
  367. package/src/sap/ui/thirdparty/IPv6.js +2 -2
  368. package/src/sap/ui/thirdparty/SecondLevelDomains.js +2 -2
  369. package/src/sap/ui/thirdparty/URI.js +14 -5
  370. package/src/sap/ui/thirdparty/URITemplate.js +2 -2
  371. package/src/sap/ui/thirdparty/hyphenopoly/Hyphenopoly.js +1196 -0
  372. package/src/sap/ui/thirdparty/hyphenopoly/Hyphenopoly_Loader.js +797 -0
  373. package/src/sap/ui/thirdparty/hyphenopoly/hyphenEngine.asm.js +108 -127
  374. package/src/sap/ui/thirdparty/hyphenopoly/hyphenEngine.wasm +0 -0
  375. package/src/sap/ui/thirdparty/hyphenopoly/patterns/bg.hpb +0 -0
  376. package/src/sap/ui/thirdparty/hyphenopoly/patterns/ca.hpb +0 -0
  377. package/src/sap/ui/thirdparty/hyphenopoly/patterns/da.hpb +0 -0
  378. package/src/sap/ui/thirdparty/hyphenopoly/patterns/de.hpb +0 -0
  379. package/src/sap/ui/thirdparty/hyphenopoly/patterns/el-monoton.hpb +0 -0
  380. package/src/sap/ui/thirdparty/hyphenopoly/patterns/en-us.hpb +0 -0
  381. package/src/sap/ui/thirdparty/hyphenopoly/patterns/es.hpb +0 -0
  382. package/src/sap/ui/thirdparty/hyphenopoly/patterns/et.hpb +0 -0
  383. package/src/sap/ui/thirdparty/hyphenopoly/patterns/fi.hpb +0 -0
  384. package/src/sap/ui/thirdparty/hyphenopoly/patterns/fr.hpb +0 -0
  385. package/src/sap/ui/thirdparty/hyphenopoly/patterns/hi.hpb +0 -0
  386. package/src/sap/ui/thirdparty/hyphenopoly/patterns/hr.hpb +0 -0
  387. package/src/sap/ui/thirdparty/hyphenopoly/patterns/hu.hpb +0 -0
  388. package/src/sap/ui/thirdparty/hyphenopoly/patterns/it.hpb +0 -0
  389. package/src/sap/ui/thirdparty/hyphenopoly/patterns/lt.hpb +0 -0
  390. package/src/sap/ui/thirdparty/hyphenopoly/patterns/nb-no.hpb +0 -0
  391. package/src/sap/ui/thirdparty/hyphenopoly/patterns/nl.hpb +0 -0
  392. package/src/sap/ui/thirdparty/hyphenopoly/patterns/pt.hpb +0 -0
  393. package/src/sap/ui/thirdparty/hyphenopoly/patterns/ru.hpb +0 -0
  394. package/src/sap/ui/thirdparty/hyphenopoly/patterns/sl.hpb +0 -0
  395. package/src/sap/ui/thirdparty/hyphenopoly/patterns/sv.hpb +0 -0
  396. package/src/sap/ui/thirdparty/hyphenopoly/patterns/th.hpb +0 -0
  397. package/src/sap/ui/thirdparty/hyphenopoly/patterns/tr.hpb +0 -0
  398. package/src/sap/ui/thirdparty/hyphenopoly/patterns/uk.hpb +0 -0
  399. package/src/sap/ui/thirdparty/jquery.js +9 -1
  400. package/src/sap/ui/thirdparty/qunit-2.js +1 -1
  401. package/src/sap/ui/thirdparty/qunit.js +1 -1
  402. package/src/sap/ui/util/Mobile.js +30 -59
  403. package/src/sap/ui/util/Storage.js +1 -1
  404. package/src/sap/ui/util/isCrossOriginURL.js +16 -6
  405. package/src/ui5loader.js +6 -6
  406. package/ui5.yaml +248 -2
  407. package/src/sap/ui/core/CustomizingConfiguration.js +0 -272
  408. package/src/sap/ui/core/support/plugins/MessageTest.js +0 -96
  409. package/src/sap/ui/thirdparty/baseuri.js +0 -1
  410. package/src/sap/ui/thirdparty/es6-object-assign.js +0 -1
  411. package/src/sap/ui/thirdparty/es6-promise.js +0 -1
  412. package/src/sap/ui/thirdparty/es6-shim-nopromise.js +0 -1
  413. package/src/sap/ui/thirdparty/es6-string-methods.js +0 -1
  414. package/src/sap/ui/thirdparty/flexie.js +0 -1
  415. package/src/sap/ui/thirdparty/hyphenopoly/hyphenopoly.bundle.js +0 -860
  416. package/src/sap/ui/thirdparty/unorm.js +0 -1
  417. package/src/sap/ui/thirdparty/unormdata.js +0 -1
@@ -9,7 +9,6 @@ sap.ui.define([
9
9
  'sap/ui/base/ManagedObject',
10
10
  './Control',
11
11
  './Component',
12
- './Core',
13
12
  './library',
14
13
  "./ComponentContainerRenderer",
15
14
  "sap/base/Log"
@@ -18,7 +17,6 @@ sap.ui.define([
18
17
  ManagedObject,
19
18
  Control,
20
19
  Component,
21
- Core,
22
20
  library,
23
21
  ComponentContainerRenderer,
24
22
  Log
@@ -61,7 +59,7 @@ sap.ui.define([
61
59
  * See also {@link module:sap/ui/core/ComponentSupport}.
62
60
  *
63
61
  * @extends sap.ui.core.Control
64
- * @version 1.94.0
62
+ * @version 1.97.0
65
63
  *
66
64
  * @public
67
65
  * @alias sap.ui.core.ComponentContainer
@@ -220,7 +218,7 @@ sap.ui.define([
220
218
  */
221
219
  function setContainerComponent(oComponentContainer, vComponent, bSuppressInvalidate, bDestroyOldComponent) {
222
220
  // find the reference to the current component and to the old component
223
- var oComponent = typeof vComponent === "string" ? Core.getComponent(vComponent) : vComponent;
221
+ var oComponent = typeof vComponent === "string" ? Component.get(vComponent) : vComponent;
224
222
  var oOldComponent = oComponentContainer.getComponentInstance();
225
223
  // if there is no difference between the old and the new component just skip this setter
226
224
  if (oOldComponent !== oComponent) {
@@ -252,7 +250,7 @@ sap.ui.define([
252
250
  */
253
251
  ComponentContainer.prototype.getComponentInstance = function () {
254
252
  var sComponentId = this.getComponent();
255
- return sComponentId && Core.getComponent(sComponentId);
253
+ return sComponentId && Component.get(sComponentId);
256
254
  };
257
255
 
258
256
  // Delegate registered by the ComponentContainer#showPlaceholder function
@@ -272,12 +270,17 @@ sap.ui.define([
272
270
  * @param {sap.ui.core.Placeholder} mSettings.placeholder The placeholder instance
273
271
  * @return {Promise} Promise that resolves with the placeholder
274
272
  *
275
- * @public
273
+ * @private
274
+ * @ui5-restricted SAPUI5 Distribution libraries only
276
275
  * @since 1.91
277
276
  */
278
277
  ComponentContainer.prototype.showPlaceholder = function(mSettings) {
279
278
  var pLoaded;
280
279
 
280
+ if (!sap.ui.getCore().getConfiguration().getPlaceholder()) {
281
+ return;
282
+ }
283
+
281
284
  if (this._placeholder) {
282
285
  this.hidePlaceholder();
283
286
  }
@@ -302,7 +305,8 @@ sap.ui.define([
302
305
  /**
303
306
  * Hides the placeholder that is shown on the component container.
304
307
  *
305
- * @public
308
+ * @private
309
+ * @ui5-restricted SAP internal apps
306
310
  * @since 1.91
307
311
  */
308
312
  ComponentContainer.prototype.hidePlaceholder = function() {
@@ -36,7 +36,7 @@ sap.ui.define([
36
36
  * @public
37
37
  * @class
38
38
  * @author SAP SE
39
- * @version 1.94.0
39
+ * @version 1.97.0
40
40
  * @since 1.9.2
41
41
  * @alias sap.ui.core.ComponentMetadata
42
42
  * @extends sap.ui.base.ManagedObjectMetadata
@@ -97,7 +97,7 @@ sap.ui.define([
97
97
  * @author SAP SE
98
98
  * @public
99
99
  * @since 1.58.0
100
- * @version 1.94.0
100
+ * @version 1.97.0
101
101
  * @namespace
102
102
  * @alias module:sap/ui/core/ComponentSupport
103
103
  */
@@ -37,9 +37,6 @@ sap.ui.define([
37
37
  ) {
38
38
  "use strict";
39
39
 
40
- // lazy dependencies. Can't be declared as this would result in cyclic dependencies
41
- var LocaleData;
42
-
43
40
  /**
44
41
  * Creates a new Configuration object.
45
42
  *
@@ -99,7 +96,7 @@ sap.ui.define([
99
96
  }
100
97
 
101
98
  // Definition of supported settings
102
- // Valid property types are: string, boolean, string[], code, object, function.
99
+ // Valid property types are: string, boolean, string[], code, object, function, function[].
103
100
  // Objects as an enumeration list of valid values can also be provided (e.g. Configuration.AnimationMode).
104
101
  var M_SETTINGS = {
105
102
  "theme" : { type : "string", defaultValue : "base" },
@@ -141,6 +138,8 @@ sap.ui.define([
141
138
  "support" : { type : "string[]", defaultValue : null },
142
139
  "testRecorder" : { type : "string[]", defaultValue : null },
143
140
  "activeTerminologies" : { type : "string[]", defaultValue: undefined},
141
+ "securityTokenHandlers" : { type : "function[]", defaultValue: [], noUrl: true },
142
+ "xx-placeholder" : { type : "boolean", defaultValue : true },
144
143
  "xx-rootComponentNode" : { type : "string", defaultValue : "", noUrl:true },
145
144
  "xx-appCacheBusterMode" : { type : "string", defaultValue : "sync" },
146
145
  "xx-appCacheBusterHooks": { type : "object", defaultValue : undefined, noUrl:true }, // e.g.: { handleURL: fn, onIndexLoad: fn, onIndexLoaded: fn }
@@ -187,40 +186,48 @@ sap.ui.define([
187
186
  var config = this;
188
187
  /*eslint-enable consistent-this */
189
188
 
190
- function setValue(sName, sValue) {
191
- if ( typeof sValue === "undefined" || sValue === null ) {
189
+ function setValue(sName, vValue) {
190
+ if ( typeof vValue === "undefined" || vValue === null ) {
192
191
  return;
193
192
  }
194
193
  switch (M_SETTINGS[sName].type) {
195
194
  case "boolean":
196
- if ( typeof sValue === "string" ) {
195
+ if ( typeof vValue === "string" ) {
197
196
  if (M_SETTINGS[sName].defaultValue) {
198
- config[sName] = sValue.toLowerCase() != "false";
197
+ config[sName] = vValue.toLowerCase() != "false";
199
198
  } else {
200
- config[sName] = sValue.toLowerCase() === "true" || sValue.toLowerCase() === "x";
199
+ config[sName] = vValue.toLowerCase() === "true" || vValue.toLowerCase() === "x";
201
200
  }
202
201
  } else {
203
202
  // boolean etc.
204
- config[sName] = !!sValue;
203
+ config[sName] = !!vValue;
205
204
  }
206
205
  break;
207
206
  case "string":
208
- config[sName] = "" + sValue; // enforce string
207
+ config[sName] = "" + vValue; // enforce string
209
208
  break;
210
209
  case "code":
211
- config[sName] = typeof sValue === "function" ? sValue : String(sValue);
210
+ config[sName] = typeof vValue === "function" ? vValue : String(vValue);
212
211
  break;
213
212
  case "function":
214
- if ( typeof sValue !== "function" ) {
213
+ if ( typeof vValue !== "function" ) {
215
214
  throw new Error("unsupported value");
216
215
  }
217
- config[sName] = sValue;
216
+ config[sName] = vValue;
217
+ break;
218
+ case "function[]":
219
+ vValue.forEach(function(fnFunction) {
220
+ if ( typeof fnFunction !== "function" ) {
221
+ throw new Error("Not a function: " + fnFunction);
222
+ }
223
+ });
224
+ config[sName] = vValue.slice();
218
225
  break;
219
226
  case "string[]":
220
- if ( Array.isArray(sValue) ) {
221
- config[sName] = sValue;
222
- } else if ( typeof sValue === "string" ) {
223
- config[sName] = sValue.split(/[ ,;]/).map(function(s) {
227
+ if ( Array.isArray(vValue) ) {
228
+ config[sName] = vValue;
229
+ } else if ( typeof vValue === "string" ) {
230
+ config[sName] = vValue.split(/[ ,;]/).map(function(s) {
224
231
  return s.trim();
225
232
  });
226
233
  } else {
@@ -228,13 +235,13 @@ sap.ui.define([
228
235
  }
229
236
  break;
230
237
  case "object":
231
- if ( typeof sValue !== "object" ) {
238
+ if ( typeof vValue !== "object" ) {
232
239
  throw new Error("unsupported value");
233
240
  }
234
- config[sName] = sValue;
241
+ config[sName] = vValue;
235
242
  break;
236
243
  case "Locale":
237
- var oLocale = convertToLocaleOrNull(sValue);
244
+ var oLocale = convertToLocaleOrNull(vValue);
238
245
  if ( oLocale || M_SETTINGS[sName].defaultValue == null ) {
239
246
  config[sName] = oLocale;
240
247
  } else {
@@ -245,8 +252,8 @@ sap.ui.define([
245
252
  // When the type is none of the above types, check if an object as enum is provided to validate the value.
246
253
  var vType = M_SETTINGS[sName].type;
247
254
  if (typeof vType === "object") {
248
- checkEnum(vType, sValue, sName);
249
- config[sName] = sValue;
255
+ checkEnum(vType, vValue, sName);
256
+ config[sName] = vValue;
250
257
  } else {
251
258
  throw new Error("illegal state");
252
259
  }
@@ -598,6 +605,10 @@ sap.ui.define([
598
605
  return this.theme;
599
606
  },
600
607
 
608
+ getPlaceholder : function() {
609
+ return this["xx-placeholder"];
610
+ },
611
+
601
612
  /**
602
613
  * Allows setting the theme name
603
614
  * @param {string} sTheme the theme name
@@ -860,11 +871,6 @@ sap.ui.define([
860
871
  getCalendarType : function() {
861
872
  var sName;
862
873
 
863
- // lazy load of LocaleData to avoid cyclic dependencies
864
- if ( !LocaleData ) {
865
- LocaleData = sap.ui.requireSync("sap/ui/core/LocaleData");
866
- }
867
-
868
874
  if (this.calendarType) {
869
875
  for (sName in CalendarType) {
870
876
  if (sName.toLowerCase() === this.calendarType.toLowerCase()) {
@@ -896,7 +902,7 @@ sap.ui.define([
896
902
  return CalendarType.Persian;
897
903
  }
898
904
 
899
- return LocaleData.getInstance(this.getLocale()).getPreferredCalendarType();
905
+ return this.getLocale().getPreferredCalendarType();
900
906
  },
901
907
 
902
908
  /**
@@ -1216,7 +1222,7 @@ sap.ui.define([
1216
1222
  *
1217
1223
  * @returns {string} name of the application
1218
1224
  * @public
1219
- * @deprecated Since 1.15.1. Please use the rootComponent configuration option {@link sap.ui.core.Configuration#getRootComponent}.
1225
+ * @deprecated Since 1.15.1. Please use {@link module:sap/ui/core/ComponentSupport} instead. See also {@link topic:82a0fcecc3cb427c91469bc537ebdddf Declarative API for Initial Components}.
1220
1226
  */
1221
1227
  getApplication : function() {
1222
1228
  return this.application;
@@ -1227,7 +1233,7 @@ sap.ui.define([
1227
1233
  *
1228
1234
  * @returns {string} name of the root component
1229
1235
  * @public
1230
- * @experimental Since 1.15.1
1236
+ * @deprecated Since 1.95. Please use {@link module:sap/ui/core/ComponentSupport} instead. See also {@link topic:82a0fcecc3cb427c91469bc537ebdddf Declarative API for Initial Components}.
1231
1237
  */
1232
1238
  getRootComponent : function() {
1233
1239
  return this.rootComponent;
@@ -1520,6 +1526,36 @@ sap.ui.define([
1520
1526
  return this["activeTerminologies"];
1521
1527
  },
1522
1528
 
1529
+ /**
1530
+ * Returns the security token handlers of an OData V4 model.
1531
+ *
1532
+ * @returns {function[]} the security token handlers (an empty array if there are none)
1533
+ * @public
1534
+ * @since 1.95.0
1535
+ * @see #setSecurityTokenHandlers
1536
+ */
1537
+ getSecurityTokenHandlers : function () {
1538
+ return this.securityTokenHandlers.slice();
1539
+ },
1540
+
1541
+ /**
1542
+ * Sets the security token handlers for an OData V4 model. See chapter "Security Token
1543
+ * Handling" in
1544
+ * {@link topic:9613f1f2d88747cab21896f7216afdac Model Instantiation and Data Access}.
1545
+ *
1546
+ * @param {function[]} aSecurityTokenHandlers - The security token handlers
1547
+ * @public
1548
+ * @since 1.95.0
1549
+ * @see #getSecurityTokenHandlers
1550
+ */
1551
+ setSecurityTokenHandlers : function (aSecurityTokenHandlers) {
1552
+ aSecurityTokenHandlers.forEach(function (fnSecurityTokenHandler) {
1553
+ check(typeof fnSecurityTokenHandler === "function",
1554
+ "Not a function: " + fnSecurityTokenHandler);
1555
+ });
1556
+ this.securityTokenHandlers = aSecurityTokenHandlers.slice();
1557
+ },
1558
+
1523
1559
  /**
1524
1560
  * Applies multiple changes to the configuration at once.
1525
1561
  *
@@ -77,7 +77,7 @@ sap.ui.define([
77
77
  * @extends sap.ui.core.Element
78
78
  * @abstract
79
79
  * @author SAP SE
80
- * @version 1.94.0
80
+ * @version 1.97.0
81
81
  * @alias sap.ui.core.Control
82
82
  * @ui5-metamodel This control/element also will be described in the UI5 (legacy) designtime metamodel
83
83
  */
@@ -498,7 +498,7 @@ sap.ui.define([
498
498
  * <b>IMPORTANT:</b></br>
499
499
  * This should be only used as FALLBACK when the Control events do not cover a specific use-case! Always try using
500
500
  * SAPUI5 control events, as e.g. accessibility-related functionality is then provided automatically.
501
- * E.g. when working with a <code>sap.ui.commons.Button</code>, always use the Button's "press" event, not the native "click" event, because
501
+ * E.g. when working with a <code>sap.m.Button</code>, always use the Button's "press" event, not the native "click" event, because
502
502
  * "press" is also guaranteed to be fired when certain keyboard activity is supposed to trigger the Button.
503
503
  *
504
504
  * In the event handler, <code>this</code> refers to the Control - not to the root DOM element like in jQuery. While the DOM element can
@@ -210,7 +210,7 @@ sap.ui.define([
210
210
  * @extends sap.ui.base.Object
211
211
  * @final
212
212
  * @author SAP SE
213
- * @version 1.94.0
213
+ * @version 1.97.0
214
214
  * @alias sap.ui.core.Core
215
215
  * @public
216
216
  * @hideconstructor
@@ -893,6 +893,9 @@ sap.ui.define([
893
893
  this.includeLibraryTheme("sap-ui-merged", undefined, "?l=" + aCSSLibs.join(","));
894
894
  }
895
895
 
896
+ // add CalendarClass to list of modules
897
+ this.oConfiguration.modules.push("sap/ui/core/date/" + this.oConfiguration.getCalendarType());
898
+
896
899
  // load all modules now
897
900
  if ( bAsync ) {
898
901
  return this._requireModulesAsync().then(function() {
@@ -1320,7 +1323,7 @@ sap.ui.define([
1320
1323
  if (sRootComponent) {
1321
1324
 
1322
1325
  Log.info("Loading Root Component: " + sRootComponent,null,METHOD);
1323
- var oComponent = sap.ui.component({
1326
+ var oComponent = sap.ui.component({ //legacy-relevant: Deprecated rootComponent API
1324
1327
  name: sRootComponent
1325
1328
  });
1326
1329
  this.oRootComponent = oComponent;
@@ -1571,12 +1574,14 @@ sap.ui.define([
1571
1574
  "lib must be a non-empty string or an object with at least a non-empty 'name' property and an optional (boolean) property 'json'" );
1572
1575
 
1573
1576
  var fileTypeSupportedByLib = 'both';
1577
+ var lazy = false;
1574
1578
  if ( typeof lib === 'object' ) {
1575
1579
  if ( lib.json === true ) {
1576
1580
  fileTypeSupportedByLib = 'json';
1577
1581
  } else if ( lib.json === false ) {
1578
1582
  fileTypeSupportedByLib = 'js';
1579
1583
  }
1584
+ lazy = !!lib.lazy;
1580
1585
  lib = lib.name;
1581
1586
  }
1582
1587
 
@@ -1593,7 +1598,8 @@ sap.ui.define([
1593
1598
 
1594
1599
  return {
1595
1600
  name: lib,
1596
- fileType: fileType
1601
+ fileType: fileType,
1602
+ lazy: lazy
1597
1603
  };
1598
1604
 
1599
1605
  }
@@ -1630,6 +1636,15 @@ sap.ui.define([
1630
1636
  return libInfo.promise;
1631
1637
  }
1632
1638
 
1639
+ if ( libConfig.lazy ) {
1640
+ // For selected lazy dependencies, we load a library-preload-lazy module.
1641
+ // Errors are ignored and the promise is not added to the library bookkeeping
1642
+ // (but the loader avoids double loading).
1643
+ Log.debug("Lazy dependency to '" + lib + "' encountered, loading library-preload-lazy.js");
1644
+ return sap.ui.loader._.loadJSResourceAsync(
1645
+ libPackage + '/library-preload-lazy.js', /* ignoreErrors = */ true);
1646
+ }
1647
+
1633
1648
  // otherwise mark as pending
1634
1649
  libInfo.pending = true;
1635
1650
  libInfo.async = true;
@@ -1662,7 +1677,18 @@ sap.ui.define([
1662
1677
  oManifest = getManifest(lib);
1663
1678
 
1664
1679
  if ( dependencies && dependencies.length ) {
1665
- dependencies = VersionInfo._getTransitiveDependencyForLibraries(dependencies);
1680
+ var eagerDependencies = dependencies.filter(function(dep) {
1681
+ return typeof dep === "string";
1682
+ });
1683
+ var lazyDependencies = dependencies.filter(function(dep) {
1684
+ return typeof dep !== "string";
1685
+ });
1686
+ eagerDependencies = VersionInfo._getTransitiveDependencyForLibraries(eagerDependencies);
1687
+
1688
+ // combine transitive closure of eager dependencies and direct lazy dependencies,
1689
+ // the latter might be redundant
1690
+ dependencies = eagerDependencies.concat(lazyDependencies);
1691
+
1666
1692
  aPromises = dependencies.map(preloadLibraryAsync.bind(that));
1667
1693
  }
1668
1694
 
@@ -1710,6 +1736,18 @@ sap.ui.define([
1710
1736
  }
1711
1737
  }
1712
1738
 
1739
+ /**
1740
+ * Set of libraries that provide a bundle info file (library-preload-lazy.js).
1741
+ *
1742
+ * The file will be loaded, when a lazy dependency to the library is encountered.
1743
+ * @private
1744
+ */
1745
+ var oLibraryWithBundleInfo = new Set([
1746
+ "sap.suite.ui.generic.template",
1747
+ "sap.ui.comp",
1748
+ "sap.ui.layout",
1749
+ "sap.ui.unified"
1750
+ ]);
1713
1751
 
1714
1752
  function dependenciesFromManifest(lib) {
1715
1753
 
@@ -1721,6 +1759,11 @@ sap.ui.define([
1721
1759
  return Object.keys(libs).reduce(function(result, dep) {
1722
1760
  if ( !libs[dep].lazy ) {
1723
1761
  result.push(dep);
1762
+ } else if (oLibraryWithBundleInfo.has(dep)) {
1763
+ result.push({
1764
+ name: dep,
1765
+ lazy: true
1766
+ });
1724
1767
  }
1725
1768
  return result;
1726
1769
  }, []);
@@ -1823,9 +1866,11 @@ sap.ui.define([
1823
1866
  return;
1824
1867
  }
1825
1868
 
1826
- // currently loading
1827
1869
  if ( libInfo.pending ) {
1828
- if ( libInfo.async ) {
1870
+ if ( libConfig.lazy ) {
1871
+ // ignore a lazy request when an eager request is already pending
1872
+ return;
1873
+ } else if ( libInfo.async ) {
1829
1874
  Log.warning("request to load " + lib + " synchronously while async loading is pending; this causes a duplicate request and should be avoided by caller");
1830
1875
  // fall through and preload synchronously
1831
1876
  } else {
@@ -1835,6 +1880,19 @@ sap.ui.define([
1835
1880
  }
1836
1881
  }
1837
1882
 
1883
+ if ( libConfig.lazy ) {
1884
+ // For selected lazy dependencies, we load a library-preload-lazy module.
1885
+ // Errors are ignored and the library is not marked as pending in the bookkeeping
1886
+ // (but the loader avoids double loading).
1887
+ Log.debug("Lazy dependency to '" + lib + "' encountered, loading library-preload-lazy.js");
1888
+ try {
1889
+ sap.ui.requireSync(libPackage + '/library-preload-lazy');
1890
+ } catch (e) {
1891
+ Log.error("failed to load '" + libPackage + "/library-preload-lazy.js" + "' synchronously (" + (e && e.message || e) + ")");
1892
+ }
1893
+ return;
1894
+ }
1895
+
1838
1896
  libInfo.pending = true;
1839
1897
  libInfo.async = false;
1840
1898
 
@@ -1977,11 +2035,11 @@ sap.ui.define([
1977
2035
  * });
1978
2036
  * </pre>
1979
2037
  *
1980
- * @param {string} sLibrary name of the library to load
2038
+ * @param {string} sLibrary Name of the library to load
1981
2039
  * @param {string|boolean|object} [vUrl] URL to load the library from or the async flag or a complex configuration object
1982
- * @param {string} [vUrl.url] URL to load the library from
1983
2040
  * @param {boolean} [vUrl.async] Whether to load the library asynchronously
1984
- * @returns {Object|Promise} An info object for the library (sync) or a Promise (async)
2041
+ * @param {string} [vUrl.url] URL to load the library from
2042
+ * @returns {object|Promise<object>} An info object for the library (sync) or a Promise on it (async).
1985
2043
  * @public
1986
2044
  */
1987
2045
  Core.prototype.loadLibrary = function(sLibrary, vUrl) {
@@ -2000,7 +2058,9 @@ sap.ui.define([
2000
2058
  if ( vUrl.url && mLibraryPreloadBundles[sLibrary] == null ) { // only if lib has not been loaded yet
2001
2059
  registerModulePath(sLibrary, vUrl.url);
2002
2060
  }
2003
- return this.loadLibraries([sLibrary]);
2061
+ return this.loadLibraries([sLibrary]).then(function() {
2062
+ return this.mLibraries[sLibrary];
2063
+ }.bind(this));
2004
2064
  }
2005
2065
  vUrl = vUrl.url;
2006
2066
  }
@@ -2091,7 +2151,7 @@ sap.ui.define([
2091
2151
  }
2092
2152
 
2093
2153
  function requireLibsSync() {
2094
- getLibraryModuleNames().forEach(sap.ui.requireSync);
2154
+ getLibraryModuleNames().forEach(sap.ui.requireSync); // legacy-relevant: Sync path
2095
2155
  }
2096
2156
 
2097
2157
  if ( bAsync ) {
@@ -2137,6 +2197,8 @@ sap.ui.define([
2137
2197
  * @param {string} [sId] the ID for the component instance
2138
2198
  * @param {object} [mSettings] the settings object for the component
2139
2199
  * @public
2200
+ * @returns {sap.ui.core.Component} the created Component instance
2201
+ * @deprecated Since 1.95. Please use {@link sap.ui.core.Component.create Component.create} instead.
2140
2202
  */
2141
2203
  Core.prototype.createComponent = function(vComponent, sUrl, sId, mSettings) {
2142
2204
 
@@ -2166,7 +2228,7 @@ sap.ui.define([
2166
2228
  }
2167
2229
 
2168
2230
  // use deprecated factory for sync use case or when legacy options are used
2169
- return sap.ui.component(vComponent);
2231
+ return sap.ui.component(vComponent); // legacy-relevant
2170
2232
 
2171
2233
  };
2172
2234
 
@@ -2175,6 +2237,7 @@ sap.ui.define([
2175
2237
  *
2176
2238
  * @return {sap.ui.core.Component} instance of the current root component
2177
2239
  * @public
2240
+ * @deprecated Since 1.95. Please use {@link module:sap/ui/core/ComponentSupport} instead. See also {@link topic:82a0fcecc3cb427c91469bc537ebdddf Declarative API for Initial Components}.
2178
2241
  */
2179
2242
  Core.prototype.getRootComponent = function() {
2180
2243
  return this.oRootComponent;
@@ -2330,7 +2393,7 @@ sap.ui.define([
2330
2393
  Log.debug("resolve Dependencies to " + sDepLib, null, METHOD);
2331
2394
  if ( mLoadedLibraries[sDepLib] !== true ) {
2332
2395
  Log.warning("Dependency from " + sLibName + " to " + sDepLib + " has not been resolved by library itself", null, METHOD);
2333
- this.loadLibrary(sDepLib);
2396
+ this.loadLibrary(sDepLib); // legacy-relevant: Sync fallback for missing manifest/AMD dependencies
2334
2397
  }
2335
2398
  }
2336
2399
 
@@ -3307,6 +3370,7 @@ sap.ui.define([
3307
3370
  * @return {sap.ui.core.Component} the component for the given id
3308
3371
  * @function
3309
3372
  * @public
3373
+ * @deprecated Since 1.95. Please use {@link sap.ui.core.Component.get Component.get} instead.
3310
3374
  */
3311
3375
  Core.prototype.getComponent = Component.registry.get;
3312
3376
 
@@ -3766,7 +3830,7 @@ sap.ui.define([
3766
3830
  name: "core-eventbus"
3767
3831
  };
3768
3832
  });
3769
- EventBus = sap.ui.requireSync('sap/ui/core/EventBus');
3833
+ EventBus = sap.ui.requireSync('sap/ui/core/EventBus'); // legacy-relevant: fallback for missing dependency
3770
3834
  }
3771
3835
  var oEventBus = this.oEventBus = new EventBus();
3772
3836
  this._preserveHandler = function(event) {
@@ -4212,7 +4276,7 @@ sap.ui.define([
4212
4276
  * <pre>
4213
4277
  * &lt;div id="SAPUI5UiArea">&lt;/div>
4214
4278
  * &lt;script>
4215
- * var oRoot = new sap.ui.commons.Label();
4279
+ * var oRoot = new sap.m.Label();
4216
4280
  * oRoot.setText("Hello world!");
4217
4281
  * sap.ui.setRoot("SAPUI5UiArea", oRoot);
4218
4282
  * &lt;/script>
@@ -24,7 +24,7 @@ sap.ui.define([
24
24
  * in the documentation.
25
25
  *
26
26
  * @extends sap.ui.core.Element
27
- * @version 1.94.0
27
+ * @version 1.97.0
28
28
  *
29
29
  * @public
30
30
  * @alias sap.ui.core.CustomData
@@ -40,7 +40,7 @@ sap.ui.define([
40
40
  * @class Static class for enabling declarative UI support.
41
41
  *
42
42
  * @author Peter Muessig, Tino Butz
43
- * @version 1.94.0
43
+ * @version 1.97.0
44
44
  * @since 1.7.0
45
45
  * @public
46
46
  * @alias sap.ui.core.DeclarativeSupport
@@ -126,7 +126,7 @@ sap.ui.define([
126
126
  *
127
127
  * @extends sap.ui.base.ManagedObject
128
128
  * @author SAP SE
129
- * @version 1.94.0
129
+ * @version 1.97.0
130
130
  * @public
131
131
  * @alias sap.ui.core.Element
132
132
  * @ui5-metamodel This control/element also will be described in the UI5 (legacy) designtime metamodel
@@ -519,11 +519,6 @@ sap.ui.define([
519
519
  return this; // explicitly return 'this' to fix controls that override destroyAggregation wrongly
520
520
  };
521
521
 
522
-
523
- /// cyclic dependency
524
- //jQuery.sap.require("sap.ui.core.TooltipBase"); /// cyclic dependency
525
-
526
-
527
522
  /**
528
523
  * This triggers immediate rerendering of its parent and thus of itself and its children.
529
524
  *
@@ -1674,6 +1669,7 @@ sap.ui.define([
1674
1669
  *
1675
1670
  * @namespace sap.ui.core.Element.registry
1676
1671
  * @public
1672
+ * @since 1.67
1677
1673
  */
1678
1674
 
1679
1675
  /**
@@ -23,7 +23,7 @@ sap.ui.define([
23
23
  *
24
24
  * @class
25
25
  * @author SAP SE
26
- * @version 1.94.0
26
+ * @version 1.97.0
27
27
  * @since 0.8.6
28
28
  * @alias sap.ui.core.ElementMetadata
29
29
  * @extends sap.ui.base.ManagedObjectMetadata
@@ -41,7 +41,7 @@ sap.ui.define([], function() {
41
41
  *
42
42
  * @param {boolean} [bDefault=true] Value that should be used as default value for the enhancement of the control.
43
43
  * @param {boolean} [bLegacy=false] Whether the introduced property should use the old name <code>Enabled</code>.
44
- * @version 1.94.0
44
+ * @version 1.97.0
45
45
  * @public
46
46
  * @class
47
47
  * @alias sap.ui.core.EnabledPropagator
@@ -30,7 +30,7 @@ sap.ui.define([
30
30
  *
31
31
  * @extends sap.ui.base.Object
32
32
  * @author SAP SE
33
- * @version 1.94.0
33
+ * @version 1.97.0
34
34
  * @public
35
35
  * @since 1.8.0
36
36
  * @alias sap.ui.core.EventBus
@@ -70,7 +70,7 @@ sap.ui.define(["sap/base/Log", "sap/base/util/ObjectPath", "sap/ui/core/mvc/View
70
70
  * @private
71
71
  */
72
72
  ExtensionPoint._factory = function(oContainer, sExtName, fnCreateDefaultContent, oTargetControl, sAggregationName, bAsync) {
73
- var oExtensionConfig, oView, vResult, sViewOrFragmentName, oOwnerComponent;
73
+ var oExtensionConfig, oView, vResult, sViewOrFragmentName;
74
74
 
75
75
  // do we have a view to check or do we need to check for configuration for a fragment?
76
76
  if (oContainer) {
@@ -83,18 +83,11 @@ sap.ui.define(["sap/base/Log", "sap/base/util/ObjectPath", "sap/ui/core/mvc/View
83
83
  }
84
84
 
85
85
  // if customizing is enabled we read the extension-point from the merged manifests of the owner component
86
- if (!sap.ui.getCore().getConfiguration().getDisableCustomizing()) {
87
- oOwnerComponent = Component.getOwnerComponentFor(oContainer);
88
- if (oOwnerComponent) {
89
- if (oOwnerComponent.getExtensionComponent) {
90
- oOwnerComponent = oOwnerComponent.getExtensionComponent();
91
- if (!oOwnerComponent) {
92
- throw new Error("getExtensionComponent() must return an instance.");
93
- }
94
- }
95
- oExtensionConfig = oOwnerComponent._getManifestEntry("/sap.ui5/extends/extensions/sap.ui.viewExtensions/" + sViewOrFragmentName + "/" + sExtName, true);
96
- }
97
- }
86
+ oExtensionConfig = Component.getCustomizing(oContainer, {
87
+ type: "sap.ui.viewExtensions",
88
+ name: sViewOrFragmentName,
89
+ extensionName: sExtName
90
+ });
98
91
  }
99
92
 
100
93
  // Extension Point - is something configured?