@openui5/sap.ui.core 1.93.3 → 1.96.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (416) hide show
  1. package/.eslintrc.json +13 -2
  2. package/.reuse/dep5 +6 -11
  3. package/THIRDPARTY.txt +10 -16
  4. package/package.json +1 -1
  5. package/src/jquery.sap.global.js +5 -2
  6. package/src/jquery.sap.properties.js +1 -1
  7. package/src/jquery.sap.resources.js +1 -1
  8. package/src/jquery.sap.script.js +1 -1
  9. package/src/jquery.sap.storage.js +3 -3
  10. package/src/jquery.sap.stubs.js +2 -1
  11. package/src/jquery.sap.trace.js +2 -1
  12. package/src/sap/base/i18n/ResourceBundle.js +6 -2
  13. package/src/sap/base/strings/whitespaceReplacer.js +52 -0
  14. package/src/sap/base/util/restricted/_CancelablePromise.js +1 -1
  15. package/src/sap/base/util/restricted/_castArray.js +1 -1
  16. package/src/sap/base/util/restricted/_compact.js +1 -1
  17. package/src/sap/base/util/restricted/_curry.js +1 -1
  18. package/src/sap/base/util/restricted/_debounce.js +1 -1
  19. package/src/sap/base/util/restricted/_difference.js +1 -1
  20. package/src/sap/base/util/restricted/_differenceBy.js +1 -1
  21. package/src/sap/base/util/restricted/_differenceWith.js +1 -1
  22. package/src/sap/base/util/restricted/_flatMap.js +1 -1
  23. package/src/sap/base/util/restricted/_flatMapDeep.js +1 -1
  24. package/src/sap/base/util/restricted/_flatMapDepth.js +1 -1
  25. package/src/sap/base/util/restricted/_flatten.js +1 -1
  26. package/src/sap/base/util/restricted/_flattenDeep.js +1 -1
  27. package/src/sap/base/util/restricted/_flattenDepth.js +1 -1
  28. package/src/sap/base/util/restricted/_intersection.js +1 -1
  29. package/src/sap/base/util/restricted/_intersectionBy.js +1 -1
  30. package/src/sap/base/util/restricted/_intersectionWith.js +1 -1
  31. package/src/sap/base/util/restricted/_isEqual.js +1 -1
  32. package/src/sap/base/util/restricted/_isEqualWith.js +1 -1
  33. package/src/sap/base/util/restricted/_isNil.js +1 -1
  34. package/src/sap/base/util/restricted/_max.js +1 -1
  35. package/src/sap/base/util/restricted/_merge.js +1 -1
  36. package/src/sap/base/util/restricted/_mergeWith.js +1 -1
  37. package/src/sap/base/util/restricted/_min.js +1 -1
  38. package/src/sap/base/util/restricted/_omit.js +1 -1
  39. package/src/sap/base/util/restricted/_pick.js +1 -1
  40. package/src/sap/base/util/restricted/_pickBy.js +1 -1
  41. package/src/sap/base/util/restricted/_throttle.js +1 -1
  42. package/src/sap/base/util/restricted/_toArray.js +1 -1
  43. package/src/sap/base/util/restricted/_union.js +1 -1
  44. package/src/sap/base/util/restricted/_unionBy.js +1 -1
  45. package/src/sap/base/util/restricted/_unionWith.js +1 -1
  46. package/src/sap/base/util/restricted/_uniq.js +1 -1
  47. package/src/sap/base/util/restricted/_uniqBy.js +1 -1
  48. package/src/sap/base/util/restricted/_uniqWith.js +1 -1
  49. package/src/sap/base/util/restricted/_without.js +1 -1
  50. package/src/sap/base/util/restricted/_xor.js +1 -1
  51. package/src/sap/base/util/restricted/_xorBy.js +1 -1
  52. package/src/sap/base/util/restricted/_xorWith.js +1 -1
  53. package/src/sap/base/util/restricted/_zipObject.js +1 -1
  54. package/src/sap/base/util/restricted/_zipObjectDeep.js +1 -1
  55. package/src/sap/ui/Device.js +37 -42
  56. package/src/sap/ui/Global.js +8 -7
  57. package/src/sap/ui/base/DataType.js +14 -8
  58. package/src/sap/ui/base/Event.js +1 -1
  59. package/src/sap/ui/base/EventProvider.js +1 -1
  60. package/src/sap/ui/base/ExpressionParser.js +9 -6
  61. package/src/sap/ui/base/Interface.js +3 -49
  62. package/src/sap/ui/base/ManagedObject.js +12 -7
  63. package/src/sap/ui/base/ManagedObjectMetadata.js +1 -1
  64. package/src/sap/ui/base/Metadata.js +1 -1
  65. package/src/sap/ui/base/Object.js +49 -4
  66. package/src/sap/ui/base/ObjectPool.js +1 -1
  67. package/src/sap/ui/base/syncXHRFix.js +2 -1
  68. package/src/sap/ui/core/.library +5 -5
  69. package/src/sap/ui/core/AppCacheBuster.js +4 -4
  70. package/src/sap/ui/core/BusyIndicator.js +1 -11
  71. package/src/sap/ui/core/Component.js +300 -140
  72. package/src/sap/ui/core/ComponentContainer.js +24 -8
  73. package/src/sap/ui/core/ComponentMetadata.js +14 -3
  74. package/src/sap/ui/core/ComponentSupport.js +1 -1
  75. package/src/sap/ui/core/Configuration.js +67 -31
  76. package/src/sap/ui/core/Control.js +1 -1
  77. package/src/sap/ui/core/Core.js +103 -25
  78. package/src/sap/ui/core/CustomData.js +1 -1
  79. package/src/sap/ui/core/CustomizingConfiguration.js +35 -260
  80. package/src/sap/ui/core/DeclarativeSupport.js +3 -2
  81. package/src/sap/ui/core/Element.js +1 -1
  82. package/src/sap/ui/core/ElementMetadata.js +4 -2
  83. package/src/sap/ui/core/EnabledPropagator.js +91 -73
  84. package/src/sap/ui/core/EventBus.js +1 -1
  85. package/src/sap/ui/core/ExtensionPoint.js +7 -14
  86. package/src/sap/ui/core/Fragment.js +30 -32
  87. package/src/sap/ui/core/HTML.js +1 -1
  88. package/src/sap/ui/core/History.js +1 -1
  89. package/src/sap/ui/core/Icon.js +7 -8
  90. package/src/sap/ui/core/IconPool.js +26 -1097
  91. package/src/sap/ui/core/IconRenderer.js +6 -6
  92. package/src/sap/ui/core/IndicationColorSupport.js +1 -1
  93. package/src/sap/ui/core/IntervalTrigger.js +1 -1
  94. package/src/sap/ui/core/InvisibleMessage.js +1 -1
  95. package/src/sap/ui/core/InvisibleRenderer.js +1 -1
  96. package/src/sap/ui/core/InvisibleText.js +1 -1
  97. package/src/sap/ui/core/Item.js +1 -1
  98. package/src/sap/ui/core/LabelEnablement.js +1 -1
  99. package/src/sap/ui/core/LayoutData.js +1 -1
  100. package/src/sap/ui/core/ListItem.js +1 -1
  101. package/src/sap/ui/core/LocalBusyIndicator.js +1 -1
  102. package/src/sap/ui/core/Locale.js +26 -4
  103. package/src/sap/ui/core/LocaleData.js +1 -1
  104. package/src/sap/ui/core/Manifest.js +4 -61
  105. package/src/sap/ui/core/Message.js +1 -1
  106. package/src/sap/ui/core/Patcher.js +27 -3
  107. package/src/sap/ui/core/Placeholder.js +28 -15
  108. package/src/sap/ui/core/RenderManager.js +36 -6
  109. package/src/sap/ui/core/Renderer.js +13 -3
  110. package/src/sap/ui/core/ResizeHandler.js +1 -1
  111. package/src/sap/ui/core/ScrollBar.js +2 -2
  112. package/src/sap/ui/core/SeparatorItem.js +1 -1
  113. package/src/sap/ui/core/ShortcutHintsMixin.js +14 -7
  114. package/src/sap/ui/core/Title.js +1 -1
  115. package/src/sap/ui/core/TooltipBase.js +1 -1
  116. package/src/sap/ui/core/UIArea.js +1 -1
  117. package/src/sap/ui/core/UIComponent.js +42 -16
  118. package/src/sap/ui/core/UIComponentMetadata.js +1 -1
  119. package/src/sap/ui/core/ValueStateSupport.js +1 -1
  120. package/src/sap/ui/core/VariantLayoutData.js +1 -1
  121. package/src/sap/ui/core/XMLComposite.js +2 -2
  122. package/src/sap/ui/core/XMLCompositeMetadata.js +2 -2
  123. package/src/sap/ui/core/XMLTemplateProcessor.js +116 -41
  124. package/src/sap/ui/core/_IconRegistry.js +1148 -0
  125. package/src/sap/ui/core/delegate/ItemNavigation.js +1 -1
  126. package/src/sap/ui/core/delegate/ScrollEnablement.js +6 -3
  127. package/src/sap/ui/core/dnd/DragDropBase.js +1 -1
  128. package/src/sap/ui/core/dnd/DragDropInfo.js +1 -1
  129. package/src/sap/ui/core/dnd/DragInfo.js +2 -2
  130. package/src/sap/ui/core/dnd/DropInfo.js +1 -1
  131. package/src/sap/ui/core/format/NumberFormat.js +16 -1
  132. package/src/sap/ui/core/hyphenation/Hyphenation.js +73 -221
  133. package/src/sap/ui/core/hyphenation/HyphenationTestingWords.js +11 -10
  134. package/src/sap/ui/core/library.js +3 -3
  135. package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
  136. package/src/sap/ui/core/message/Message.js +1 -1
  137. package/src/sap/ui/core/message/MessageManager.js +13 -15
  138. package/src/sap/ui/core/message/MessageParser.js +1 -1
  139. package/src/sap/ui/core/message/MessageProcessor.js +1 -1
  140. package/src/sap/ui/core/messagebundle_de.properties +1 -1
  141. package/src/sap/ui/core/messagebundle_fr.properties +1 -1
  142. package/src/sap/ui/core/messagebundle_it.properties +1 -1
  143. package/src/sap/ui/core/messagebundle_pl.properties +1 -1
  144. package/src/sap/ui/core/messagebundle_th.properties +2 -2
  145. package/src/sap/ui/core/mvc/Controller.js +38 -19
  146. package/src/sap/ui/core/mvc/ControllerExtensionProvider.js +30 -32
  147. package/src/sap/ui/core/mvc/ControllerMetadata.js +18 -18
  148. package/src/sap/ui/core/mvc/HTMLView.js +2 -2
  149. package/src/sap/ui/core/mvc/JSONView.js +2 -2
  150. package/src/sap/ui/core/mvc/JSView.js +2 -2
  151. package/src/sap/ui/core/mvc/TemplateView.js +2 -2
  152. package/src/sap/ui/core/mvc/View.js +58 -85
  153. package/src/sap/ui/core/mvc/XMLView.js +2 -2
  154. package/src/sap/ui/core/mvc/XMLViewRenderer.js +17 -20
  155. package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
  156. package/src/sap/ui/core/plugin/LessSupport.js +1 -1
  157. package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -1
  158. package/src/sap/ui/core/postmessage/Bus.js +1 -1
  159. package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
  160. package/src/sap/ui/core/routing/History.js +10 -2
  161. package/src/sap/ui/core/routing/Router.js +8 -1
  162. package/src/sap/ui/core/routing/Target.js +13 -0
  163. package/src/sap/ui/core/routing/Targets.js +13 -2
  164. package/src/sap/ui/core/routing/async/Route.js +1 -1
  165. package/src/sap/ui/core/routing/async/Target.js +353 -259
  166. package/src/sap/ui/core/search/OpenSearchProvider.js +1 -1
  167. package/src/sap/ui/core/search/SearchProvider.js +1 -1
  168. package/src/sap/ui/core/service/Service.js +1 -1
  169. package/src/sap/ui/core/service/ServiceFactory.js +1 -1
  170. package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
  171. package/src/sap/ui/core/support/BootSupportTool.js +11 -0
  172. package/src/sap/ui/core/support/InteractionTree.css +4 -0
  173. package/src/sap/ui/core/support/Plugin.js +1 -1
  174. package/src/sap/ui/core/support/Support.js +1 -1
  175. package/src/sap/ui/core/support/ViewInfo.css +599 -0
  176. package/src/sap/ui/core/support/controls/InteractionTree.js +352 -222
  177. package/src/sap/ui/core/support/controls/ObjectViewer.js +3 -41
  178. package/src/sap/ui/core/support/controls/TimelineOverview.js +49 -24
  179. package/src/sap/ui/core/support/controls/TreeViewer.js +12 -58
  180. package/src/sap/ui/core/support/plugins/ControlTree.js +59 -68
  181. package/src/sap/ui/core/support/plugins/Debugging.js +9 -11
  182. package/src/sap/ui/core/support/plugins/Interaction.js +2 -2
  183. package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
  184. package/src/sap/ui/core/support/plugins/Performance.js +147 -75
  185. package/src/sap/ui/core/support/plugins/Selector.js +19 -24
  186. package/src/sap/ui/core/support/plugins/TechInfo.js +5 -5
  187. package/src/sap/ui/core/support/plugins/Trace.js +95 -32
  188. package/src/sap/ui/core/support/plugins/ViewInfo.js +9 -73
  189. package/src/sap/ui/core/support/support.css +109 -14
  190. package/src/sap/ui/core/support/support.html +6 -2
  191. package/src/sap/ui/core/support/techinfo/TechnicalInfo.fragment.xml +1 -0
  192. package/src/sap/ui/core/support/techinfo/TechnicalInfo.js +149 -72
  193. package/src/sap/ui/core/themes/base/Icon.less +9 -0
  194. package/src/sap/ui/core/themes/base/fonts/SAP-icons.woff2 +0 -0
  195. package/src/sap/ui/core/theming/Parameters.js +6 -4
  196. package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
  197. package/src/sap/ui/core/tmpl/DOMElement.js +1 -1
  198. package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
  199. package/src/sap/ui/core/tmpl/Template.js +10 -28
  200. package/src/sap/ui/core/tmpl/TemplateControl.js +4 -4
  201. package/src/sap/ui/core/tmpl/_parsePath.js +35 -0
  202. package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
  203. package/src/sap/ui/core/util/DraftEnabledMockServer.js +9 -4
  204. package/src/sap/ui/core/util/Export.js +1 -1
  205. package/src/sap/ui/core/util/ExportCell.js +1 -1
  206. package/src/sap/ui/core/util/ExportColumn.js +1 -1
  207. package/src/sap/ui/core/util/ExportRow.js +1 -1
  208. package/src/sap/ui/core/util/ExportType.js +1 -1
  209. package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
  210. package/src/sap/ui/core/util/File.js +1 -1
  211. package/src/sap/ui/core/util/LibraryInfo.js +1 -1
  212. package/src/sap/ui/core/util/MockServer.js +5 -5
  213. package/src/sap/ui/core/util/MockServerAnnotationsHandler.js +3 -2
  214. package/src/sap/ui/core/util/PasteHelper.js +1 -1
  215. package/src/sap/ui/core/util/XMLPreprocessor.js +11 -12
  216. package/src/sap/ui/core/util/reflection/BaseTreeModifier.js +136 -63
  217. package/src/sap/ui/core/util/reflection/JsControlTreeModifier.js +170 -153
  218. package/src/sap/ui/core/util/reflection/XmlTreeModifier.js +424 -293
  219. package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
  220. package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
  221. package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
  222. package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
  223. package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
  224. package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
  225. package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
  226. package/src/sap/ui/core/ws/ReadyState.js +1 -1
  227. package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
  228. package/src/sap/ui/core/ws/WebSocket.js +1 -1
  229. package/src/sap/ui/debug/ControlTree.js +10 -4
  230. package/src/sap/ui/debug/DebugEnv.js +3 -4
  231. package/src/sap/ui/debug/Highlighter.js +8 -2
  232. package/src/sap/ui/debug/PropertyList.css +55 -0
  233. package/src/sap/ui/debug/PropertyList.js +111 -182
  234. package/src/sap/ui/model/Binding.js +174 -118
  235. package/src/sap/ui/model/ClientContextBinding.js +1 -1
  236. package/src/sap/ui/model/ClientListBinding.js +1 -3
  237. package/src/sap/ui/model/ClientModel.js +4 -4
  238. package/src/sap/ui/model/ClientPropertyBinding.js +4 -2
  239. package/src/sap/ui/model/ClientTreeBinding.js +15 -9
  240. package/src/sap/ui/model/ClientTreeBindingAdapter.js +28 -23
  241. package/src/sap/ui/model/CompositeBinding.js +98 -77
  242. package/src/sap/ui/model/CompositeDataState.js +2 -2
  243. package/src/sap/ui/model/CompositeType.js +2 -2
  244. package/src/sap/ui/model/Context.js +4 -2
  245. package/src/sap/ui/model/ContextBinding.js +6 -14
  246. package/src/sap/ui/model/DataState.js +2 -2
  247. package/src/sap/ui/model/Filter.js +255 -53
  248. package/src/sap/ui/model/FilterOperator.js +1 -1
  249. package/src/sap/ui/model/FilterProcessor.js +27 -17
  250. package/src/sap/ui/model/FilterType.js +1 -1
  251. package/src/sap/ui/model/ListBinding.js +180 -117
  252. package/src/sap/ui/model/MetaModel.js +4 -9
  253. package/src/sap/ui/model/Model.js +345 -294
  254. package/src/sap/ui/model/PropertyBinding.js +92 -58
  255. package/src/sap/ui/model/SelectionModel.js +2 -2
  256. package/src/sap/ui/model/SimpleType.js +2 -2
  257. package/src/sap/ui/model/Sorter.js +1 -1
  258. package/src/sap/ui/model/SorterProcessor.js +1 -1
  259. package/src/sap/ui/model/StaticBinding.js +1 -1
  260. package/src/sap/ui/model/TreeAutoExpandMode.js +2 -2
  261. package/src/sap/ui/model/TreeBinding.js +1 -1
  262. package/src/sap/ui/model/TreeBindingAdapter.js +251 -100
  263. package/src/sap/ui/model/TreeBindingCompatibilityAdapter.js +16 -9
  264. package/src/sap/ui/model/TreeBindingUtils.js +1 -0
  265. package/src/sap/ui/model/Type.js +1 -1
  266. package/src/sap/ui/model/analytics/AnalyticalBinding.js +8 -4
  267. package/src/sap/ui/model/analytics/AnalyticalTreeBindingAdapter.js +1 -1
  268. package/src/sap/ui/model/analytics/AnalyticalVersionInfo.js +1 -1
  269. package/src/sap/ui/model/analytics/BatchResponseCollector.js +1 -1
  270. package/src/sap/ui/model/analytics/ODataModelAdapter.js +1 -1
  271. package/src/sap/ui/model/analytics/odata4analytics.js +34 -25
  272. package/src/sap/ui/model/base/ManagedObjectModel.js +4 -0
  273. package/src/sap/ui/model/json/JSONListBinding.js +8 -5
  274. package/src/sap/ui/model/json/JSONModel.js +24 -15
  275. package/src/sap/ui/model/json/JSONPropertyBinding.js +4 -3
  276. package/src/sap/ui/model/json/JSONTreeBinding.js +1 -1
  277. package/src/sap/ui/model/message/MessageListBinding.js +6 -3
  278. package/src/sap/ui/model/message/MessageModel.js +23 -15
  279. package/src/sap/ui/model/message/MessagePropertyBinding.js +2 -2
  280. package/src/sap/ui/model/odata/AnnotationHelper.js +1 -1
  281. package/src/sap/ui/model/odata/AnnotationParser.js +1 -1
  282. package/src/sap/ui/model/odata/CountMode.js +1 -1
  283. package/src/sap/ui/model/odata/Filter.js +1 -1
  284. package/src/sap/ui/model/odata/ODataAnnotations.js +2 -2
  285. package/src/sap/ui/model/odata/ODataContextBinding.js +1 -1
  286. package/src/sap/ui/model/odata/ODataListBinding.js +1 -1
  287. package/src/sap/ui/model/odata/ODataMessageParser.js +2 -2
  288. package/src/sap/ui/model/odata/ODataMetaModel.js +5 -3
  289. package/src/sap/ui/model/odata/ODataMetadata.js +2 -2
  290. package/src/sap/ui/model/odata/ODataModel.js +8 -7
  291. package/src/sap/ui/model/odata/ODataPropertyBinding.js +1 -1
  292. package/src/sap/ui/model/odata/ODataTreeBinding.js +65 -33
  293. package/src/sap/ui/model/odata/ODataTreeBindingAdapter.js +1 -1
  294. package/src/sap/ui/model/odata/ODataTreeBindingFlat.js +2 -2
  295. package/src/sap/ui/model/odata/ODataUtils.js +13 -11
  296. package/src/sap/ui/model/odata/OperationMode.js +1 -1
  297. package/src/sap/ui/model/odata/_AnnotationHelperExpression.js +1 -1
  298. package/src/sap/ui/model/odata/type/Boolean.js +1 -1
  299. package/src/sap/ui/model/odata/type/Byte.js +1 -1
  300. package/src/sap/ui/model/odata/type/Currency.js +1 -1
  301. package/src/sap/ui/model/odata/type/Date.js +1 -1
  302. package/src/sap/ui/model/odata/type/DateTime.js +1 -1
  303. package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
  304. package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
  305. package/src/sap/ui/model/odata/type/Decimal.js +1 -1
  306. package/src/sap/ui/model/odata/type/Double.js +1 -1
  307. package/src/sap/ui/model/odata/type/Guid.js +1 -1
  308. package/src/sap/ui/model/odata/type/Int.js +1 -1
  309. package/src/sap/ui/model/odata/type/Int16.js +1 -1
  310. package/src/sap/ui/model/odata/type/Int32.js +1 -1
  311. package/src/sap/ui/model/odata/type/Int64.js +1 -1
  312. package/src/sap/ui/model/odata/type/ODataType.js +1 -1
  313. package/src/sap/ui/model/odata/type/Raw.js +1 -1
  314. package/src/sap/ui/model/odata/type/SByte.js +1 -1
  315. package/src/sap/ui/model/odata/type/Single.js +1 -1
  316. package/src/sap/ui/model/odata/type/Stream.js +1 -1
  317. package/src/sap/ui/model/odata/type/String.js +1 -1
  318. package/src/sap/ui/model/odata/type/Time.js +1 -1
  319. package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
  320. package/src/sap/ui/model/odata/type/Unit.js +1 -1
  321. package/src/sap/ui/model/odata/v2/Context.js +81 -9
  322. package/src/sap/ui/model/odata/v2/ODataAnnotations.js +3 -3
  323. package/src/sap/ui/model/odata/v2/ODataContextBinding.js +39 -49
  324. package/src/sap/ui/model/odata/v2/ODataListBinding.js +236 -73
  325. package/src/sap/ui/model/odata/v2/ODataModel.js +314 -164
  326. package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +110 -97
  327. package/src/sap/ui/model/odata/v2/_CreatedContextsCache.js +129 -0
  328. package/src/sap/ui/model/odata/v4/Context.js +6 -3
  329. package/src/sap/ui/model/odata/v4/ODataBinding.js +5 -6
  330. package/src/sap/ui/model/odata/v4/ODataContextBinding.js +117 -40
  331. package/src/sap/ui/model/odata/v4/ODataListBinding.js +95 -15
  332. package/src/sap/ui/model/odata/v4/ODataMetaModel.js +44 -31
  333. package/src/sap/ui/model/odata/v4/ODataModel.js +86 -78
  334. package/src/sap/ui/model/odata/v4/ODataParentBinding.js +47 -28
  335. package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +11 -7
  336. package/src/sap/ui/model/odata/v4/_AnnotationHelperExpression.js +10 -3
  337. package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +8 -1
  338. package/src/sap/ui/model/odata/v4/lib/_Cache.js +24 -16
  339. package/src/sap/ui/model/odata/v4/lib/_Helper.js +32 -30
  340. package/src/sap/ui/model/odata/v4/lib/_Requestor.js +52 -17
  341. package/src/sap/ui/model/odata/v4/lib/_V2Requestor.js +2 -2
  342. package/src/sap/ui/model/resource/ResourceModel.js +6 -2
  343. package/src/sap/ui/model/resource/ResourcePropertyBinding.js +1 -1
  344. package/src/sap/ui/model/type/Boolean.js +2 -2
  345. package/src/sap/ui/model/type/Currency.js +2 -2
  346. package/src/sap/ui/model/type/Date.js +9 -3
  347. package/src/sap/ui/model/type/DateInterval.js +4 -2
  348. package/src/sap/ui/model/type/DateTime.js +2 -2
  349. package/src/sap/ui/model/type/DateTimeInterval.js +2 -2
  350. package/src/sap/ui/model/type/FileSize.js +4 -2
  351. package/src/sap/ui/model/type/Float.js +4 -2
  352. package/src/sap/ui/model/type/Integer.js +4 -2
  353. package/src/sap/ui/model/type/String.js +2 -2
  354. package/src/sap/ui/model/type/Time.js +2 -2
  355. package/src/sap/ui/model/type/TimeInterval.js +2 -2
  356. package/src/sap/ui/model/type/Unit.js +14 -7
  357. package/src/sap/ui/model/xml/XMLListBinding.js +15 -9
  358. package/src/sap/ui/model/xml/XMLModel.js +70 -41
  359. package/src/sap/ui/model/xml/XMLPropertyBinding.js +4 -4
  360. package/src/sap/ui/model/xml/XMLTreeBinding.js +5 -4
  361. package/src/sap/ui/performance/trace/Interaction.js +30 -15
  362. package/src/sap/ui/performance/trace/initTraces.js +1 -1
  363. package/src/sap/ui/qunit/QUnitUtils.js +3 -2
  364. package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
  365. package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +9 -11
  366. package/src/sap/ui/test/TestUtils.js +11 -4
  367. package/src/sap/ui/test/actions/Drag.js +6 -2
  368. package/src/sap/ui/test/actions/Drop.js +6 -2
  369. package/src/sap/ui/test/actions/EnterText.js +6 -0
  370. package/src/sap/ui/test/actions/Press.js +6 -0
  371. package/src/sap/ui/test/actions/Scroll.js +6 -0
  372. package/src/sap/ui/test/autowaiter/_resourceWaiter.js +4 -4
  373. package/src/sap/ui/test/launchers/componentLauncher.js +0 -4
  374. package/src/sap/ui/test/matchers/I18NText.js +29 -11
  375. package/src/sap/ui/test/opaQunit.js +5 -0
  376. package/src/sap/ui/thirdparty/crossroads.js +6 -4
  377. package/src/sap/ui/thirdparty/hyphenopoly/Hyphenopoly.js +1196 -0
  378. package/src/sap/ui/thirdparty/hyphenopoly/Hyphenopoly_Loader.js +797 -0
  379. package/src/sap/ui/thirdparty/hyphenopoly/hyphenEngine.asm.js +108 -127
  380. package/src/sap/ui/thirdparty/hyphenopoly/hyphenEngine.wasm +0 -0
  381. package/src/sap/ui/thirdparty/hyphenopoly/patterns/bg.hpb +0 -0
  382. package/src/sap/ui/thirdparty/hyphenopoly/patterns/ca.hpb +0 -0
  383. package/src/sap/ui/thirdparty/hyphenopoly/patterns/da.hpb +0 -0
  384. package/src/sap/ui/thirdparty/hyphenopoly/patterns/de.hpb +0 -0
  385. package/src/sap/ui/thirdparty/hyphenopoly/patterns/el-monoton.hpb +0 -0
  386. package/src/sap/ui/thirdparty/hyphenopoly/patterns/en-us.hpb +0 -0
  387. package/src/sap/ui/thirdparty/hyphenopoly/patterns/es.hpb +0 -0
  388. package/src/sap/ui/thirdparty/hyphenopoly/patterns/et.hpb +0 -0
  389. package/src/sap/ui/thirdparty/hyphenopoly/patterns/fi.hpb +0 -0
  390. package/src/sap/ui/thirdparty/hyphenopoly/patterns/fr.hpb +0 -0
  391. package/src/sap/ui/thirdparty/hyphenopoly/patterns/hi.hpb +0 -0
  392. package/src/sap/ui/thirdparty/hyphenopoly/patterns/hr.hpb +0 -0
  393. package/src/sap/ui/thirdparty/hyphenopoly/patterns/hu.hpb +0 -0
  394. package/src/sap/ui/thirdparty/hyphenopoly/patterns/it.hpb +0 -0
  395. package/src/sap/ui/thirdparty/hyphenopoly/patterns/lt.hpb +0 -0
  396. package/src/sap/ui/thirdparty/hyphenopoly/patterns/nb-no.hpb +0 -0
  397. package/src/sap/ui/thirdparty/hyphenopoly/patterns/nl.hpb +0 -0
  398. package/src/sap/ui/thirdparty/hyphenopoly/patterns/pt.hpb +0 -0
  399. package/src/sap/ui/thirdparty/hyphenopoly/patterns/ru.hpb +0 -0
  400. package/src/sap/ui/thirdparty/hyphenopoly/patterns/sl.hpb +0 -0
  401. package/src/sap/ui/thirdparty/hyphenopoly/patterns/sv.hpb +0 -0
  402. package/src/sap/ui/thirdparty/hyphenopoly/patterns/th.hpb +0 -0
  403. package/src/sap/ui/thirdparty/hyphenopoly/patterns/tr.hpb +0 -0
  404. package/src/sap/ui/thirdparty/hyphenopoly/patterns/uk.hpb +0 -0
  405. package/src/sap/ui/thirdparty/jquery.js +9 -1
  406. package/src/sap/ui/thirdparty/qunit-2.js +1 -1
  407. package/src/sap/ui/thirdparty/qunit.js +1 -1
  408. package/src/sap/ui/util/Mobile.js +2 -20
  409. package/src/sap/ui/util/Storage.js +1 -1
  410. package/src/sap/ui/util/isCrossOriginURL.js +16 -6
  411. package/src/sap-ui-core-nojQuery.js +1 -1
  412. package/src/sap-ui-core.js +1 -1
  413. package/src/sap-ui-debug.js +3 -17
  414. package/ui5.yaml +5 -2
  415. package/src/sap/ui/core/support/plugins/MessageTest.js +0 -96
  416. package/src/sap/ui/thirdparty/hyphenopoly/hyphenopoly.bundle.js +0 -860
@@ -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.93.3
62
+ * @version 1.96.2
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
@@ -270,27 +268,45 @@ sap.ui.define([
270
268
  *
271
269
  * @param {object} mSettings Object containing the placeholder object
272
270
  * @param {sap.ui.core.Placeholder} mSettings.placeholder The placeholder instance
273
- * @public
271
+ * @return {Promise} Promise that resolves with the placeholder
272
+ *
273
+ * @private
274
+ * @ui5-restricted SAPUI5 Distribution libraries only
274
275
  * @since 1.91
275
276
  */
276
277
  ComponentContainer.prototype.showPlaceholder = function(mSettings) {
278
+ var pLoaded;
279
+
280
+ if (!sap.ui.getCore().getConfiguration().getPlaceholder()) {
281
+ return;
282
+ }
283
+
277
284
  if (this._placeholder) {
278
285
  this.hidePlaceholder();
279
286
  }
280
287
 
281
- if (this.getDomRef() && mSettings.placeholder) {
288
+ if (mSettings.placeholder) {
282
289
  this._placeholder = mSettings.placeholder;
290
+ pLoaded = this._placeholder._load();
291
+ } else {
292
+ pLoaded = Promise.resolve();
293
+ }
294
+
295
+ if (this.getDomRef() && this._placeholder) {
283
296
  this._placeholder.show(this);
284
297
  }
285
298
 
286
299
  // Add an event delegate to reinsert the placeholder after it's removed after a rerendering
287
300
  this.addEventDelegate(oPlaceholderDelegate, this);
301
+
302
+ return pLoaded;
288
303
  };
289
304
 
290
305
  /**
291
306
  * Hides the placeholder that is shown on the component container.
292
307
  *
293
- * @public
308
+ * @private
309
+ * @ui5-restricted SAP internal apps
294
310
  * @since 1.91
295
311
  */
296
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.93.3
39
+ * @version 1.96.2
40
40
  * @since 1.9.2
41
41
  * @alias sap.ui.core.ComponentMetadata
42
42
  * @extends sap.ui.base.ManagedObjectMetadata
@@ -540,10 +540,21 @@ sap.ui.define([
540
540
  *
541
541
  * @return {string[]} Included files.
542
542
  * @public
543
- * @deprecated Since 1.27.1. Please use {@link sap.ui.core.Component#getManifestEntry}("/sap.ui5/resources")
543
+ * @deprecated Since 1.27.1. For CSS, please use {@link sap.ui.core.Component#getManifestEntry}("/sap.ui5/resources/css").
544
544
  */
545
545
  ComponentMetadata.prototype.getIncludes = function() {
546
- // Log.warning("Usage of sap.ui.core.ComponentMetadata.protoype.getIncludes is deprecated!");
546
+ Log.warning(
547
+ "Usage of sap.ui.core.ComponentMetadata.protoype.getIncludes() is deprecated. " +
548
+ "For CSS files, please use the '/sap.ui5/resources/css' section in your 'manifest.json'. ",
549
+ "Deprecation",
550
+ null,
551
+ function() {
552
+ return {
553
+ type: "sap.ui.core.ComponentMetadata",
554
+ name: this.getName()
555
+ };
556
+ }.bind(this));
557
+
547
558
  if (!this._aLegacyIncludes) {
548
559
  var aIncludes = [],
549
560
  mResources = this.getManifestEntry("/sap.ui5/resources") || {},
@@ -97,7 +97,7 @@ sap.ui.define([
97
97
  * @author SAP SE
98
98
  * @public
99
99
  * @since 1.58.0
100
- * @version 1.93.3
100
+ * @version 1.96.2
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.93.3
80
+ * @version 1.96.2
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
  */
@@ -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.93.3
213
+ * @version 1.96.2
214
214
  * @alias sap.ui.core.Core
215
215
  * @public
216
216
  * @hideconstructor
@@ -589,7 +589,7 @@ sap.ui.define([
589
589
  oSyncPoint2.finishTask(iLoadACBTask);
590
590
  });
591
591
  } else {
592
- var AppCacheBuster = sap.ui.requireSync('sap/ui/core/AppCacheBuster');
592
+ var AppCacheBuster = sap.ui.requireSync('sap/ui/core/AppCacheBuster'); // legacy-relevant: Synchronous path
593
593
  AppCacheBuster.boot(oSyncPoint2);
594
594
  }
595
595
  }
@@ -618,8 +618,8 @@ sap.ui.define([
618
618
  };
619
619
  });
620
620
  fnCallbackSupportBootstrapInfo(
621
- sap.ui.requireSync("sap/ui/core/support/Support"),
622
- sap.ui.requireSync("sap/ui/support/Bootstrap")
621
+ sap.ui.requireSync("sap/ui/core/support/Support"), // legacy-relevant: Synchronous path
622
+ sap.ui.requireSync("sap/ui/support/Bootstrap") // legacy-relevant: Synchronous path
623
623
  );
624
624
  }
625
625
  }
@@ -647,7 +647,7 @@ sap.ui.define([
647
647
  };
648
648
  });
649
649
  fnCallbackTestRecorder(
650
- sap.ui.requireSync("sap/ui/testrecorder/Bootstrap")
650
+ sap.ui.requireSync("sap/ui/testrecorder/Bootstrap") // legacy-relevant: Synchronous preloading
651
651
  );
652
652
  }
653
653
  }
@@ -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() {
@@ -914,7 +917,7 @@ sap.ui.define([
914
917
  this.loadLibrary(m[1]);
915
918
  } else {
916
919
  // data-sap-ui-modules might contain legacy jquery.sap.* modules
917
- sap.ui.requireSync( /^jquery\.sap\./.test(mod) ? mod : mod.replace(/\./g, "/"));
920
+ sap.ui.requireSync( /^jquery\.sap\./.test(mod) ? mod : mod.replace(/\./g, "/")); // legacy-relevant: Sync loading of modules and libraries
918
921
  }
919
922
  }.bind(this));
920
923
 
@@ -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;
@@ -1330,7 +1333,7 @@ sap.ui.define([
1330
1333
  var oRootNode = document.getElementById(sRootNode);
1331
1334
  if (oRootNode) {
1332
1335
  Log.info("Creating ComponentContainer for Root Component: " + sRootComponent,null,METHOD);
1333
- var ComponentContainer = sap.ui.requireSync('sap/ui/core/ComponentContainer'),
1336
+ var ComponentContainer = sap.ui.requireSync('sap/ui/core/ComponentContainer'), // legacy-relevant: Deprecated rootComponent API
1334
1337
  oContainer = new ComponentContainer({
1335
1338
  component: oComponent,
1336
1339
  propagateModel: true /* TODO: is this a configuration or do this by default? right now it behaves like the application */
@@ -1354,7 +1357,7 @@ sap.ui.define([
1354
1357
  });
1355
1358
 
1356
1359
  Log.info("Loading Application: " + sApplication,null,METHOD);
1357
- sap.ui.requireSync(sApplication.replace(/\./g, "/"));
1360
+ sap.ui.requireSync(sApplication.replace(/\./g, "/")); // legacy-relevant: deprecated
1358
1361
  var oClass = ObjectPath.get(sApplication);
1359
1362
  assert(oClass !== undefined, "The specified application \"" + sApplication + "\" could not be found!");
1360
1363
  var oApplication = new oClass();
@@ -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
 
@@ -1847,7 +1905,7 @@ sap.ui.define([
1847
1905
  if ( fileType !== 'json' /* 'js' or 'both', not forced to JSON */ ) {
1848
1906
  var sPreloadModule = libPackage + '/library-preload';
1849
1907
  try {
1850
- sap.ui.requireSync(sPreloadModule);
1908
+ sap.ui.requireSync(sPreloadModule); // legacy-relevant: Synchronous preloading
1851
1909
  dependencies = dependenciesFromManifest(lib);
1852
1910
  } catch (e) {
1853
1911
  Log.error("failed to load '" + sPreloadModule + "' (" + (e && e.message || e) + ")");
@@ -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
  }
@@ -2020,7 +2080,7 @@ sap.ui.define([
2020
2080
  }
2021
2081
 
2022
2082
  // require the library module (which in turn will call initLibrary())
2023
- sap.ui.requireSync(sModule.replace(/\./g, "/"));
2083
+ sap.ui.requireSync(sModule.replace(/\./g, "/")); // legacy-relevant
2024
2084
 
2025
2085
  // check for legacy code
2026
2086
  if ( !mLoadedLibraries[sLibrary] ) {
@@ -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
 
@@ -3325,7 +3389,7 @@ sap.ui.define([
3325
3389
  name: "Core.prototype.getTemplate"
3326
3390
  };
3327
3391
  });
3328
- var Template = sap.ui.requireSync('sap/ui/core/tmpl/Template');
3392
+ var Template = sap.ui.requireSync('sap/ui/core/tmpl/Template'); // legacy-relevant
3329
3393
  return Template.byId(sId);
3330
3394
  };
3331
3395
 
@@ -3407,8 +3471,22 @@ sap.ui.define([
3407
3471
  * @public
3408
3472
  */
3409
3473
  Core.prototype.attachIntervalTimer = function(fnFunction, oListener) {
3474
+ Log.warning(
3475
+ "Usage of sap.ui.getCore().attachIntervalTimer() is deprecated. " +
3476
+ "Please use 'IntervalTrigger.addListener()' from 'sap/ui/core/IntervalTrigger' module instead.",
3477
+ "Deprecation",
3478
+ null,
3479
+ function() {
3480
+ return {
3481
+ type: "sap.ui.core.Core",
3482
+ name: "Core"
3483
+ };
3484
+ });
3485
+
3410
3486
  if (!oIntervalTrigger) {
3411
- oIntervalTrigger = sap.ui.requireSync("sap/ui/core/IntervalTrigger");
3487
+ // IntervalTrigger should be available via transitive dependency (sap/ui/core/ResizeHandler)
3488
+ oIntervalTrigger = sap.ui.require("sap/ui/core/IntervalTrigger") ||
3489
+ sap.ui.requireSync("sap/ui/core/IntervalTrigger"); // legacy-relevant: Sync fallback;
3412
3490
  }
3413
3491
  oIntervalTrigger.addListener(fnFunction, oListener);
3414
3492
  };
@@ -3752,7 +3830,7 @@ sap.ui.define([
3752
3830
  name: "core-eventbus"
3753
3831
  };
3754
3832
  });
3755
- EventBus = sap.ui.requireSync('sap/ui/core/EventBus');
3833
+ EventBus = sap.ui.requireSync('sap/ui/core/EventBus'); // legacy-relevant: fallback for missing dependency
3756
3834
  }
3757
3835
  var oEventBus = this.oEventBus = new EventBus();
3758
3836
  this._preserveHandler = function(event) {