@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
@@ -3,7 +3,7 @@
3
3
  * (c) Copyright 2009-2021 SAP SE or an SAP affiliate company.
4
4
  * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
5
  */
6
- sap.ui.define(['./IconPool', './library', "sap/base/security/encodeCSS"], function(IconPool, library, encodeCSS) {
6
+ sap.ui.define(['./_IconRegistry', './library', "sap/base/security/encodeCSS"], function(_IconRegistry, library, encodeCSS) {
7
7
  "use strict";
8
8
 
9
9
  // shortcut for enum(s)
@@ -26,7 +26,7 @@ sap.ui.define(['./IconPool', './library', "sap/base/security/encodeCSS"], functi
26
26
  */
27
27
  IconRenderer.render = function(oRm, oControl) {
28
28
  // write the HTML into the render manager
29
- var vIconInfo = IconPool.getIconInfo(oControl.getSrc(), undefined, "mixed"),
29
+ var vIconInfo = _IconRegistry.getIconInfo(oControl.getSrc(), undefined, "mixed"),
30
30
  sWidth = oControl.getWidth(),
31
31
  sHeight = oControl.getHeight(),
32
32
  sColor = oControl.getColor(),
@@ -65,10 +65,6 @@ sap.ui.define(['./IconPool', './library', "sap/base/security/encodeCSS"], functi
65
65
  }
66
66
  }
67
67
 
68
- if (sTitle) {
69
- oRm.attr("title", sTitle);
70
- }
71
-
72
68
  if (oControl.hasListeners("press")) {
73
69
  oRm.class("sapUiIconPointer");
74
70
  if (!oControl.getNoTabStop()) {
@@ -91,6 +87,10 @@ sap.ui.define(['./IconPool', './library', "sap/base/security/encodeCSS"], functi
91
87
 
92
88
  oRm.openEnd();
93
89
 
90
+ if (sTitle) {
91
+ oRm.openStart("span").class("sapUiIconTitle").attr("title", sTitle).attr("aria-hidden", true).openEnd().close("span");
92
+ }
93
+
94
94
  if (aLabelledBy && aLabelledBy.length && oInvisibleText) {
95
95
  oRm.renderControl(oInvisibleText);
96
96
  }
@@ -16,7 +16,7 @@ sap.ui.define(['./library'],
16
16
  * Helper functionality for indication color support.
17
17
  *
18
18
  * @author SAP SE
19
- * @version 1.93.3
19
+ * @version 1.96.2
20
20
  * @public
21
21
  * @namespace sap.ui.core.IndicationColorSupport
22
22
  * @since 1.66
@@ -23,7 +23,7 @@ sap.ui.define(['../base/Object', './EventBus', "sap/base/assert"],
23
23
  *
24
24
  * @extends sap.ui.base.Object
25
25
  * @author SAP SE
26
- * @version 1.93.3
26
+ * @version 1.96.2
27
27
  * @public
28
28
  * @since 1.11.0
29
29
  * @alias sap.ui.core.IntervalTrigger
@@ -32,7 +32,7 @@ function (coreLibrary, ManagedObject, Log) {
32
32
  * @extends sap.ui.base.ManagedObject
33
33
  *
34
34
  * @author SAP SE
35
- * @version 1.93.3
35
+ * @version 1.96.2
36
36
  * @hideconstructor
37
37
  * @public
38
38
  * @since 1.78
@@ -12,7 +12,7 @@ sap.ui.define([], function() {
12
12
  * Provides the default renderer for the controls that have set their <code>visible</code> property to <code>false</code>.
13
13
  *
14
14
  * @author SAP SE
15
- * @version 1.93.3
15
+ * @version 1.96.2
16
16
  * @alias module:sap/ui/core/InvisibleRenderer
17
17
  * @since 1.66.0
18
18
  * @protected
@@ -29,7 +29,7 @@ sap.ui.define([
29
29
  * @extends sap.ui.core.Control
30
30
  *
31
31
  * @author SAP SE
32
- * @version 1.93.3
32
+ * @version 1.96.2
33
33
  *
34
34
  * @public
35
35
  * @since 1.27.0
@@ -24,7 +24,7 @@ sap.ui.define(['./Element', './library'],
24
24
  * @extends sap.ui.core.Element
25
25
  *
26
26
  * @author SAP SE
27
- * @version 1.93.3
27
+ * @version 1.96.2
28
28
  *
29
29
  * @public
30
30
  * @alias sap.ui.core.Item
@@ -129,7 +129,7 @@ sap.ui.define(['../base/ManagedObject', "sap/base/assert"],
129
129
  * @see sap.ui.core.LabelEnablement#enrich
130
130
  *
131
131
  * @author SAP SE
132
- * @version 1.93.3
132
+ * @version 1.96.2
133
133
  * @protected
134
134
  * @alias sap.ui.core.LabelEnablement
135
135
  * @namespace
@@ -23,7 +23,7 @@ sap.ui.define(['./Element', "sap/ui/thirdparty/jquery", './library'],
23
23
  * @extends sap.ui.core.Element
24
24
  *
25
25
  * @author SAP SE
26
- * @version 1.93.3
26
+ * @version 1.96.2
27
27
  *
28
28
  * @public
29
29
  * @alias sap.ui.core.LayoutData
@@ -23,7 +23,7 @@ sap.ui.define(['./Item', './library'],
23
23
  * @extends sap.ui.core.Item
24
24
  *
25
25
  * @author SAP SE
26
- * @version 1.93.3
26
+ * @version 1.96.2
27
27
  *
28
28
  * @public
29
29
  * @alias sap.ui.core.ListItem
@@ -32,7 +32,7 @@ sap.ui.define([
32
32
  * @extends sap.ui.core.Control
33
33
  *
34
34
  * @author SAP SE
35
- * @version 1.93.3
35
+ * @version 1.96.2
36
36
  *
37
37
  * @public
38
38
  * @since 1.11.0
@@ -5,8 +5,8 @@
5
5
  */
6
6
 
7
7
  //Provides the locale object sap.ui.core.Locale
8
- sap.ui.define(['sap/ui/base/Object', "sap/base/assert"],
9
- function(BaseObject, assert) {
8
+ sap.ui.define(['sap/ui/base/Object', 'sap/base/assert', './CalendarType'],
9
+ function(BaseObject, assert, CalendarType) {
10
10
  "use strict";
11
11
 
12
12
 
@@ -38,7 +38,7 @@ sap.ui.define(['sap/ui/base/Object', "sap/base/assert"],
38
38
  *
39
39
  * @extends sap.ui.base.Object
40
40
  * @author SAP SE
41
- * @version 1.93.3
41
+ * @version 1.96.2
42
42
  * @public
43
43
  * @alias sap.ui.core.Locale
44
44
  */
@@ -291,8 +291,19 @@ sap.ui.define(['sap/ui/base/Object', "sap/base/assert"],
291
291
  || M_LOCALE_TO_ABAP_LANGUAGE[getPseudoLanguageTag(this.sPrivateUse)]
292
292
  || sLanguage.toUpperCase()
293
293
  );
294
- }
294
+ },
295
295
 
296
+ /**
297
+ *
298
+ * @returns {sap.ui.core.CalendarType} The preferred Calendar type.
299
+ * @private
300
+ * @ui5-restricted sap.ui.core
301
+ */
302
+ getPreferredCalendarType: function() {
303
+ return Locale._mPreferredCalendar[this.getLanguage() + "-" + this.getRegion()] ||
304
+ Locale._mPreferredCalendar[this.getLanguage()] ||
305
+ Locale._mPreferredCalendar["default"];
306
+ }
296
307
  });
297
308
 
298
309
  /*
@@ -366,6 +377,17 @@ sap.ui.define(['sap/ui/base/Object', "sap/base/assert"],
366
377
  */
367
378
  Locale._cldrLocales = getDesigntimePropertyAsArray("$cldr-locales:ar,ar_EG,ar_SA,bg,ca,cy,cs,da,de,de_AT,de_CH,el,el_CY,en,en_AU,en_GB,en_HK,en_IE,en_IN,en_NZ,en_PG,en_SG,en_ZA,es,es_AR,es_BO,es_CL,es_CO,es_MX,es_PE,es_UY,es_VE,et,fa,fi,fr,fr_BE,fr_CA,fr_CH,fr_LU,he,hi,hr,hu,id,it,it_CH,ja,kk,ko,lt,lv,ms,nb,nl,nl_BE,pl,pt,pt_PT,ro,ru,ru_UA,sk,sl,sr,sr_Latn,sv,th,tr,uk,vi,zh_CN,zh_HK,zh_SG,zh_TW$");
368
379
 
380
+ /**
381
+ * A map of preferred Calendar types according to the language.
382
+ * @private
383
+ */
384
+ Locale._mPreferredCalendar = {
385
+ "ar-SA": CalendarType.Islamic,
386
+ "fa": CalendarType.Persian,
387
+ "th": CalendarType.Buddhist,
388
+ "default": CalendarType.Gregorian
389
+ };
390
+
369
391
  /**
370
392
  * List of locales for which translated texts have been bundled with the UI5 runtime.
371
393
  * @private
@@ -18,7 +18,7 @@ sap.ui.define(['sap/base/util/extend', 'sap/ui/base/Object', './CalendarType', '
18
18
  *
19
19
  * @extends sap.ui.base.Object
20
20
  * @author SAP SE
21
- * @version 1.93.3
21
+ * @version 1.96.2
22
22
  * @public
23
23
  * @alias sap.ui.core.LocaleData
24
24
  */
@@ -137,7 +137,7 @@ sap.ui.define([
137
137
  * @class The Manifest class.
138
138
  * @extends sap.ui.base.Object
139
139
  * @author SAP SE
140
- * @version 1.93.3
140
+ * @version 1.96.2
141
141
  * @alias sap.ui.core.Manifest
142
142
  * @since 1.33.0
143
143
  */
@@ -410,7 +410,8 @@ sap.ui.define([
410
410
 
411
411
  var sComponentName = this.getComponentName();
412
412
 
413
- // load JS files
413
+ // [Deprecated since 1.94]: Load JS files.
414
+ // Standard dependencies should be used instead.
414
415
  var aJSResources = mResources["js"];
415
416
  if (aJSResources) {
416
417
  var requireAsync = function (sModule) {
@@ -437,7 +438,7 @@ sap.ui.define([
437
438
  if (bAsync) {
438
439
  oPromise = oPromise.then(requireAsync(sJsUrl));
439
440
  } else {
440
- sap.ui.requireSync(sJsUrl);
441
+ sap.ui.requireSync(sJsUrl); // legacy-relevant: Sync path
441
442
  }
442
443
  }
443
444
  }
@@ -686,19 +687,8 @@ sap.ui.define([
686
687
  */
687
688
  init: function(oInstance) {
688
689
  if (this._iInstanceCount === 0) {
689
-
690
690
  this.loadDependenciesAndIncludes();
691
-
692
- // activate the static customizing
693
- this.activateCustomizing();
694
-
695
691
  }
696
-
697
- // activate the instance customizing
698
- if (oInstance) {
699
- this.activateCustomizing(oInstance);
700
- }
701
-
702
692
  this._iInstanceCount++;
703
693
  },
704
694
 
@@ -750,16 +740,7 @@ sap.ui.define([
750
740
  // ensure that the instance count is never negative
751
741
  var iInstanceCount = Math.max(this._iInstanceCount - 1, 0);
752
742
 
753
- // deactivate the instance customizing
754
- if (oInstance) {
755
- this.deactivateCustomizing(oInstance);
756
- }
757
-
758
743
  if (iInstanceCount === 0) {
759
-
760
- // deactivcate the customizing
761
- this.deactivateCustomizing();
762
-
763
744
  // remove the custom scripts and CSS files
764
745
  this.removeIncludes();
765
746
 
@@ -768,44 +749,6 @@ sap.ui.define([
768
749
 
769
750
  this._iInstanceCount = iInstanceCount;
770
751
 
771
- },
772
-
773
- /**
774
- * Activates the customizing for the component or a dedicated component
775
- * instance when providing the component instance as parameter.
776
- * @param {sap.ui.core.Component} [oInstance] Reference to the Component instance
777
- * @private
778
- */
779
- activateCustomizing: function(oInstance) {
780
- // activate the customizing configuration
781
- var oUI5Manifest = this.getEntry("sap.ui5", true),
782
- mExtensions = oUI5Manifest && oUI5Manifest["extends"] && oUI5Manifest["extends"].extensions;
783
- if (!isEmptyObject(mExtensions)) {
784
- var CustomizingConfiguration = sap.ui.requireSync('sap/ui/core/CustomizingConfiguration');
785
- if (!oInstance) {
786
- CustomizingConfiguration.activateForComponent(this.getComponentName());
787
- } else {
788
- CustomizingConfiguration.activateForComponentInstance(oInstance);
789
- }
790
- }
791
- },
792
-
793
- /**
794
- * Deactivates the customizing for the component or a dedicated component
795
- * instance when providing the component instance as parameter.
796
- * @param {sap.ui.core.Component} [oInstance] Reference to the Component instance
797
- * @private
798
- */
799
- deactivateCustomizing: function(oInstance) {
800
- // deactivate the customizing configuration
801
- var CustomizingConfiguration = sap.ui.require('sap/ui/core/CustomizingConfiguration');
802
- if (CustomizingConfiguration) {
803
- if (!oInstance) {
804
- CustomizingConfiguration.deactivateForComponent(this.getComponentName());
805
- } else {
806
- CustomizingConfiguration.deactivateForComponentInstance(oInstance);
807
- }
808
- }
809
752
  }
810
753
 
811
754
  });
@@ -26,7 +26,7 @@ sap.ui.define(['./Element', './library', "sap/base/Log"],
26
26
  * @extends sap.ui.core.Element
27
27
  *
28
28
  * @author SAP SE
29
- * @version 1.93.3
29
+ * @version 1.96.2
30
30
  *
31
31
  * @public
32
32
  * @alias sap.ui.core.Message
@@ -5,7 +5,9 @@
5
5
  */
6
6
 
7
7
  // Provides in-place rendering module for the RenderManager
8
- sap.ui.define([], function() {
8
+ sap.ui.define([
9
+ "sap/ui/Device"
10
+ ], function(Device) {
9
11
  "use strict";
10
12
 
11
13
  // points a dummy CSSStyleDeclaration for style validation purposes
@@ -43,6 +45,22 @@ sap.ui.define([], function() {
43
45
  }
44
46
  };
45
47
 
48
+ if (Device.browser.safari) {
49
+ /*
50
+ * Safari 14ff reports calls to Element.prototype.removeAttribute("style") as CSP violations,
51
+ * if 'inline-style's are not allowed, see https://bugs.webkit.org/show_bug.cgi?id=227349#c3
52
+ *
53
+ * Assigning the empty string as style cleans up the CSS, but not the DOM, therefore we apply
54
+ * this fallback to Safari only.
55
+ */
56
+ AttributeMutators.style = function(oElement, sNewValue) {
57
+ if ( sNewValue == null ) {
58
+ oElement.style = "";
59
+ return true; // skip removeAttribute
60
+ }
61
+ };
62
+ }
63
+
46
64
  /**
47
65
  * Creates an HTML element from the given tag name and parent namespace
48
66
  */
@@ -291,6 +309,11 @@ sap.ui.define([], function() {
291
309
  * @return {this} Reference to <code>this</code> in order to allow method chaining
292
310
  */
293
311
  Patcher.prototype.attr = function(sAttr, vValue) {
312
+ if (sAttr === "style") {
313
+ this._sStyles = vValue;
314
+ return this;
315
+ }
316
+
294
317
  if (this._iTagOpenState == 1 /* Tag is Open and Created */) {
295
318
  this._oCurrent.setAttribute(sAttr, vValue);
296
319
  return this;
@@ -399,8 +422,9 @@ sap.ui.define([], function() {
399
422
 
400
423
  for (var sAttribute in this._mAttributes) {
401
424
  var fnMutator = AttributeMutators[sAttribute];
402
- fnMutator && fnMutator(this._oCurrent, null);
403
- this._oCurrent.removeAttribute(sAttribute);
425
+ if (!fnMutator || !fnMutator(this._oCurrent, null)) {
426
+ this._oCurrent.removeAttribute(sAttribute);
427
+ }
404
428
  delete this._mAttributes[sAttribute];
405
429
  }
406
430
 
@@ -5,10 +5,12 @@
5
5
  */
6
6
  sap.ui.define([
7
7
  'sap/ui/base/Object',
8
+ 'sap/base/util/Deferred',
8
9
  'sap/base/util/LoaderExtensions',
9
10
  'sap/ui/core/BlockLayerUtils'
10
11
  ], function(
11
12
  BaseObject,
13
+ Deferred,
12
14
  LoaderExtensions,
13
15
  BlockLayerUtils
14
16
  ) {
@@ -36,9 +38,9 @@ sap.ui.define([
36
38
  * @param {object} mParameters Object containing the placeholder HTML file name
37
39
  * @param {string} [mParameters.html] Name of the HTML file that provides the placeholder content
38
40
  *
39
- * @ui5-restricted sap.fe
41
+ * @private
42
+ * @ui5-restricted SAPUI5 Distribution libraries only
40
43
  * @since 1.92
41
- * @public
42
44
  */
43
45
  constructor : function(mParameters) {
44
46
  BaseObject.call(this);
@@ -62,6 +64,7 @@ sap.ui.define([
62
64
  */
63
65
  show: function(oControl, sBlockedSection) {
64
66
  this.bShow = true;
67
+
65
68
  return this._load().then(function(sPlaceholderContent) {
66
69
  // Because it's in a 'then' method the loading promise, it could happen that the 'hide' function is
67
70
  // already called. Therefore it's need to check the 'this.bShow' flag before inserting the placeholder
@@ -69,7 +72,7 @@ sap.ui.define([
69
72
  // The 'show' method can be called from a rerendering delegate of a control. It's checked here whether
70
73
  // the DOM element of the control contains the placeholder. Only when the control doesn't have the
71
74
  // placeholder, a new placeholder DOM element is generated and inserted into the control.
72
- if (this.bShow && !oControl.getDomRef().contains(this.placeholder)) {
75
+ if (sPlaceholderContent && this.bShow && !oControl.getDomRef().contains(this.placeholder)) {
73
76
  // unblock old blockstate when multiple rendering happens
74
77
  if (this.blockState) {
75
78
  BlockLayerUtils.unblock(this.blockState);
@@ -81,6 +84,7 @@ sap.ui.define([
81
84
  oDomRef.insertAdjacentHTML("beforeend", sPlaceholderContent);
82
85
  this.placeholder = oDomRef;
83
86
  }
87
+
84
88
  return sPlaceholderContent;
85
89
  }.bind(this));
86
90
  },
@@ -98,6 +102,10 @@ sap.ui.define([
98
102
  this.placeholder = undefined;
99
103
  this.blockState = undefined;
100
104
  }
105
+
106
+ if (this.pLoaded) {
107
+ this.pLoaded.resolve();
108
+ }
101
109
  },
102
110
 
103
111
  /**
@@ -107,17 +115,22 @@ sap.ui.define([
107
115
  * @private
108
116
  */
109
117
  _load: function() {
110
- if (!this.placeholderContent && this.placeholderHTML) {
111
- return LoaderExtensions.loadResource(this.placeholderHTML, {
112
- async: true,
113
- dataType: "html"
114
- }).then(function(sPlaceholder) {
115
- this.placeholderContent = sPlaceholder;
116
- return sPlaceholder;
117
- }.bind(this));
118
- } else {
119
- return Promise.resolve(this.placeholderContent);
118
+ if (!this.pLoaded) {
119
+ this.pLoaded = new Deferred();
120
+ if (this.placeholderHTML) {
121
+ LoaderExtensions.loadResource(this.placeholderHTML, {
122
+ async: true,
123
+ dataType: "html"
124
+ }).then(function(sPlaceholder) {
125
+ this.placeholderContent = sPlaceholder;
126
+ this.pLoaded.resolve(sPlaceholder);
127
+ }.bind(this));
128
+ } else {
129
+ this.pLoaded.reject();
130
+ }
120
131
  }
132
+
133
+ return this.pLoaded.promise;
121
134
  }
122
135
  });
123
136
 
@@ -127,8 +140,8 @@ sap.ui.define([
127
140
  *
128
141
  * @param {function} fnProvider Provider function which provides the placeholder HTML file name
129
142
  *
130
- * @public
131
- * @ui5-restricted sap.fe
143
+ * @private
144
+ * @ui5-restricted SAPUI5 Distribution libraries only
132
145
  * @since 1.92
133
146
  */
134
147
  Placeholder.registerProvider = function(fnProvider) {
@@ -182,7 +182,7 @@ sap.ui.define([
182
182
  *
183
183
  * @extends Object
184
184
  * @author SAP SE
185
- * @version 1.93.3
185
+ * @version 1.96.2
186
186
  * @alias sap.ui.core.RenderManager
187
187
  * @public
188
188
  */
@@ -202,7 +202,9 @@ sap.ui.define([
202
202
  oStringInterface = {}, // holds old string based rendering API and the string implementation of the new semantic rendering API
203
203
  oDomInterface = {}, // semantic rendering API for the controls whose renderer provides apiVersion=2 marker
204
204
  aRenderingStyles = [], // during string-based rendering, stores the styles that couldn't be set via style attribute due to CSP restrictions
205
- oPatcher = new Patcher(); // the Patcher instance to handle in-place DOM patching
205
+ oPatcher = new Patcher(), // the Patcher instance to handle in-place DOM patching
206
+ sLastStyleMethod,
207
+ sLastClassMethod;
206
208
 
207
209
  /**
208
210
  * Sets the focus handler to be used by the RenderManager.
@@ -219,6 +221,7 @@ sap.ui.define([
219
221
  * Reset all rendering related buffers.
220
222
  */
221
223
  function reset() {
224
+ assert(!(sLastStyleMethod = sLastClassMethod = ""));
222
225
  aBuffer = that.aBuffer = [];
223
226
  aRenderedControls = that.aRenderedControls = [];
224
227
  aStyleStack = that.aStyleStack = [{}];
@@ -247,14 +250,21 @@ sap.ui.define([
247
250
 
248
251
  function assertValidAttr(sAttr) {
249
252
  assertValidName(sAttr, "attr");
250
- assert(sAttr != "class" && sAttr != "style", "Attributes 'class' and 'style' must not be written, instead use dedicated 'class' or 'style' method");
253
+ assert((sAttr != "class" || sLastClassMethod != "class" && (sLastClassMethod = "attr"))
254
+ && (sAttr != "style" || sLastStyleMethod != "style" && (sLastStyleMethod = "attr")),
255
+ "Attributes 'class' and 'style' must not be written when the methods with the same name"
256
+ + " have been called for the same element already");
251
257
  }
252
258
 
253
259
  function assertValidClass(sClass) {
260
+ assert(sLastClassMethod != "attr" && (sLastClassMethod = "class"),
261
+ "Method class() must not be called after the 'class' attribute has been written for the same element");
254
262
  assert(typeof sClass == "string" && !/\s/.test(sClass) && arguments.length === 1, "Method 'class' must be called with exactly one class name");
255
263
  }
256
264
 
257
265
  function assertValidStyle(sStyle) {
266
+ assert(sLastStyleMethod != "attr" && (sLastStyleMethod = "style"),
267
+ "Method style() must not be called after the 'style' attribute has been written for the same element");
258
268
  assert(sStyle && typeof sStyle == "string" && !/\s/.test(sStyle), "Method 'style' must be called with a non-empty string name");
259
269
  }
260
270
 
@@ -479,6 +489,7 @@ sap.ui.define([
479
489
  this.openStart = function(sTagName, vControlOrId) {
480
490
  assertValidName(sTagName, "tag");
481
491
  assertOpenTagHasEnded();
492
+ assert(!(sLastStyleMethod = sLastClassMethod = ""));
482
493
  sOpenTag = sTagName;
483
494
 
484
495
  this.write("<" + sTagName);
@@ -641,7 +652,11 @@ sap.ui.define([
641
652
  this.attr = function(sName, vValue) {
642
653
  assertValidAttr(sName);
643
654
 
644
- this.writeAttributeEscaped(sName, vValue);
655
+ if (sName == "style") {
656
+ aStyleStack[aStyleStack.length - 1].aStyle = [vValue];
657
+ } else {
658
+ this.writeAttributeEscaped(sName, vValue);
659
+ }
645
660
  return this;
646
661
  };
647
662
 
@@ -773,6 +788,9 @@ sap.ui.define([
773
788
  * <li><code>alt: ""</code></li>
774
789
  * </ul>
775
790
  *
791
+ * <b>Note:</b> This function requires the {@link sap.ui.core.IconPool} module. Ensure that the module is
792
+ * loaded before this function is called to avoid syncXHRs.
793
+ *
776
794
  * @param {sap.ui.core.URI} sURI URI of an image or of an icon registered in {@link sap.ui.core.IconPool}
777
795
  * @param {array|string} [aClasses] Additional classes that are added to the rendered tag
778
796
  * @param {object} [mAttributes] Additional attributes that will be added to the rendered tag.
@@ -792,6 +810,7 @@ sap.ui.define([
792
810
  oDomInterface.openStart = function(sTagName, vControlOrId) {
793
811
  assertValidName(sTagName, "tag");
794
812
  assertOpenTagHasEnded();
813
+ assert(!(sLastStyleMethod = sLastClassMethod = ""));
795
814
  sOpenTag = sTagName;
796
815
 
797
816
  if (!vControlOrId) {
@@ -1866,8 +1885,19 @@ sap.ui.define([
1866
1885
  * @deprecated Since 1.92. Instead use {@link sap.ui.core.RenderManager#icon} of the {@link sap.ui.core.RenderManager Semantic Rendering API}.
1867
1886
  */
1868
1887
  RenderManager.prototype.writeIcon = function(sURI, aClasses, mAttributes){
1869
- var IconPool = sap.ui.requireSync("sap/ui/core/IconPool"),
1870
- bIconURI = IconPool.isIconURI(sURI),
1888
+ var IconPool = sap.ui.require("sap/ui/core/IconPool");
1889
+ if (!IconPool) {
1890
+ Log.warning("Synchronous loading of IconPool due to sap.ui.core.RenderManager#icon call. " +
1891
+ "Ensure that 'sap/ui/core/IconPool is loaded before this function is called" , "SyncXHR", null, function() {
1892
+ return {
1893
+ type: "SyncXHR",
1894
+ name: "rendermanager-icon"
1895
+ };
1896
+ });
1897
+ IconPool = sap.ui.requireSync("sap/ui/core/IconPool"); // legacy-relevant: Sync fallback
1898
+ }
1899
+
1900
+ var bIconURI = IconPool.isIconURI(sURI),
1871
1901
  bAriaLabelledBy = false,
1872
1902
  sProp, oIconInfo, mDefaultAttributes, sLabel, sInvTextId;
1873
1903
 
@@ -6,18 +6,19 @@
6
6
 
7
7
  // Provides (optional) base class for all renderers
8
8
  sap.ui.define([
9
+ "sap/base/Log",
9
10
  "sap/base/util/isPlainObject",
10
11
  "sap/base/util/ObjectPath",
11
12
  "sap/base/assert",
12
13
  "sap/base/util/extend"
13
- ], function(isPlainObject, ObjectPath, assert, extend) {
14
+ ], function(Log, isPlainObject, ObjectPath, assert, extend) {
14
15
  "use strict";
15
16
 
16
17
  /**
17
18
  * @classdesc Base Class for a Renderer.
18
19
  *
19
20
  * @author SAP SE
20
- * @version 1.93.3
21
+ * @version 1.96.2
21
22
  * @namespace
22
23
  * @public
23
24
  * @alias sap.ui.core.Renderer
@@ -218,8 +219,17 @@ sap.ui.define([
218
219
  */
219
220
  Renderer.getTextAlign = function(oTextAlign, oTextDirection) {
220
221
  // lazy require sap.ui.core library
222
+ sapUiCore = sap.ui.require("sap/ui/core/library");
223
+
221
224
  if (!sapUiCore) {
222
- sapUiCore = sap.ui.requireSync("sap/ui/core/library");
225
+ Log.warning("Synchronous loading of a library.js. Ensure that 'sap/ui/core/library.js' is loaded" +
226
+ " before sap.ui.core.Renderer#getTextAlign is called.", "SyncXHR", null, function() {
227
+ return {
228
+ type: "SyncXHR",
229
+ name: "renderer-getTextAlign"
230
+ };
231
+ });
232
+ sapUiCore = sap.ui.requireSync("sap/ui/core/library"); // legacy-relevant: core/library.js available via dependency in most cases
223
233
  }
224
234
 
225
235
  // create shortcuts for enums from sap.ui.core library
@@ -34,7 +34,7 @@ sap.ui.define([
34
34
  * @alias sap.ui.core.ResizeHandler
35
35
  * @extends sap.ui.base.Object
36
36
  * @author SAP SE
37
- * @version 1.93.3
37
+ * @version 1.96.2
38
38
  * @public
39
39
  */
40
40
 
@@ -44,7 +44,7 @@ sap.ui.define([
44
44
  * The ScrollBar control can be used for virtual scrolling of a certain area.
45
45
  * This means: to simulate a very large scrollable area when technically the area is small and the control takes care of displaying the respective part only. E.g. a Table control can take care of only rendering the currently visible rows and use this ScrollBar control to make the user think he actually scrolls through a long list.
46
46
  * @extends sap.ui.core.Control
47
- * @version 1.93.3
47
+ * @version 1.96.2
48
48
  *
49
49
  * @public
50
50
  * @deprecated as of version 1.56
@@ -148,7 +148,7 @@ sap.ui.define([
148
148
  this._iMaxContentDivSize = 1000000; // small value that all browsers still can render without any problems
149
149
 
150
150
  if (EventSimulation.touchEventMode === "ON") {
151
- sap.ui.requireSync("sap/ui/thirdparty/zyngascroll");
151
+ sap.ui.requireSync("sap/ui/thirdparty/zyngascroll"); // legacy-relevant: sap.ui.core.ScrollBar is deprecated
152
152
 
153
153
  // Remember last touch scroller position to prevent unneeded rendering
154
154
  this._iLastTouchScrollerPosition = null;