@openui5/sap.ui.core 1.110.0 → 1.111.1

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 (279) hide show
  1. package/.eslintrc.json +1 -0
  2. package/package.json +1 -1
  3. package/src/jquery.sap.global.js +1 -1
  4. package/src/jquery.sap.properties.js +1 -1
  5. package/src/jquery.sap.resources.js +1 -1
  6. package/src/jquery.sap.script.js +1 -1
  7. package/src/jquery.sap.storage.js +3 -3
  8. package/src/sap/base/util/restricted/_CancelablePromise.js +1 -1
  9. package/src/sap/base/util/restricted/_castArray.js +1 -1
  10. package/src/sap/base/util/restricted/_compact.js +1 -1
  11. package/src/sap/base/util/restricted/_curry.js +1 -1
  12. package/src/sap/base/util/restricted/_debounce.js +1 -1
  13. package/src/sap/base/util/restricted/_difference.js +1 -1
  14. package/src/sap/base/util/restricted/_differenceBy.js +1 -1
  15. package/src/sap/base/util/restricted/_differenceWith.js +1 -1
  16. package/src/sap/base/util/restricted/_flatMap.js +1 -1
  17. package/src/sap/base/util/restricted/_flatMapDeep.js +1 -1
  18. package/src/sap/base/util/restricted/_flatMapDepth.js +1 -1
  19. package/src/sap/base/util/restricted/_flatten.js +1 -1
  20. package/src/sap/base/util/restricted/_flattenDeep.js +1 -1
  21. package/src/sap/base/util/restricted/_flattenDepth.js +1 -1
  22. package/src/sap/base/util/restricted/_intersection.js +1 -1
  23. package/src/sap/base/util/restricted/_intersectionBy.js +1 -1
  24. package/src/sap/base/util/restricted/_intersectionWith.js +1 -1
  25. package/src/sap/base/util/restricted/_isEqual.js +1 -1
  26. package/src/sap/base/util/restricted/_isEqualWith.js +1 -1
  27. package/src/sap/base/util/restricted/_isNil.js +1 -1
  28. package/src/sap/base/util/restricted/_max.js +1 -1
  29. package/src/sap/base/util/restricted/_merge.js +1 -1
  30. package/src/sap/base/util/restricted/_mergeWith.js +1 -1
  31. package/src/sap/base/util/restricted/_min.js +1 -1
  32. package/src/sap/base/util/restricted/_omit.js +1 -1
  33. package/src/sap/base/util/restricted/_pick.js +1 -1
  34. package/src/sap/base/util/restricted/_pickBy.js +1 -1
  35. package/src/sap/base/util/restricted/_throttle.js +1 -1
  36. package/src/sap/base/util/restricted/_toArray.js +1 -1
  37. package/src/sap/base/util/restricted/_union.js +1 -1
  38. package/src/sap/base/util/restricted/_unionBy.js +1 -1
  39. package/src/sap/base/util/restricted/_unionWith.js +1 -1
  40. package/src/sap/base/util/restricted/_uniq.js +1 -1
  41. package/src/sap/base/util/restricted/_uniqBy.js +1 -1
  42. package/src/sap/base/util/restricted/_uniqWith.js +1 -1
  43. package/src/sap/base/util/restricted/_without.js +1 -1
  44. package/src/sap/base/util/restricted/_xor.js +1 -1
  45. package/src/sap/base/util/restricted/_xorBy.js +1 -1
  46. package/src/sap/base/util/restricted/_xorWith.js +1 -1
  47. package/src/sap/base/util/restricted/_zipObject.js +1 -1
  48. package/src/sap/base/util/restricted/_zipObjectDeep.js +1 -1
  49. package/src/sap/ui/Device.js +3 -3
  50. package/src/sap/ui/Global.js +4 -4
  51. package/src/sap/ui/base/Event.js +1 -1
  52. package/src/sap/ui/base/EventProvider.js +1 -1
  53. package/src/sap/ui/base/Interface.js +1 -1
  54. package/src/sap/ui/base/ManagedObject.js +1 -1
  55. package/src/sap/ui/base/ManagedObjectMetadata.js +1 -1
  56. package/src/sap/ui/base/Metadata.js +1 -1
  57. package/src/sap/ui/base/Object.js +1 -1
  58. package/src/sap/ui/base/ObjectPool.js +1 -1
  59. package/src/sap/ui/core/.library +2 -2
  60. package/src/sap/ui/core/BusyIndicator.js +1 -1
  61. package/src/sap/ui/core/Component.js +58 -50
  62. package/src/sap/ui/core/ComponentContainer.js +1 -1
  63. package/src/sap/ui/core/ComponentMetadata.js +1 -1
  64. package/src/sap/ui/core/ComponentSupport.js +1 -1
  65. package/src/sap/ui/core/Configuration.js +4 -1
  66. package/src/sap/ui/core/Control.js +19 -7
  67. package/src/sap/ui/core/Core.js +2 -1
  68. package/src/sap/ui/core/CustomData.js +1 -1
  69. package/src/sap/ui/core/DeclarativeSupport.js +1 -1
  70. package/src/sap/ui/core/Element.js +98 -3
  71. package/src/sap/ui/core/ElementMetadata.js +1 -1
  72. package/src/sap/ui/core/EnabledPropagator.js +16 -1
  73. package/src/sap/ui/core/EventBus.js +1 -1
  74. package/src/sap/ui/core/Fragment.js +1 -1
  75. package/src/sap/ui/core/HTML.js +1 -1
  76. package/src/sap/ui/core/History.js +1 -1
  77. package/src/sap/ui/core/Icon.js +10 -6
  78. package/src/sap/ui/core/IndicationColorSupport.js +1 -1
  79. package/src/sap/ui/core/IntervalTrigger.js +1 -1
  80. package/src/sap/ui/core/InvisibleMessage.js +1 -1
  81. package/src/sap/ui/core/InvisibleRenderer.js +1 -1
  82. package/src/sap/ui/core/InvisibleText.js +1 -1
  83. package/src/sap/ui/core/Item.js +1 -1
  84. package/src/sap/ui/core/LabelEnablement.js +1 -1
  85. package/src/sap/ui/core/LayoutData.js +1 -1
  86. package/src/sap/ui/core/ListItem.js +1 -1
  87. package/src/sap/ui/core/LocalBusyIndicator.js +1 -1
  88. package/src/sap/ui/core/Locale.js +12 -11
  89. package/src/sap/ui/core/LocaleData.js +1 -1
  90. package/src/sap/ui/core/Manifest.js +1 -1
  91. package/src/sap/ui/core/Message.js +1 -1
  92. package/src/sap/ui/core/Patcher.js +35 -0
  93. package/src/sap/ui/core/Popup.js +1 -0
  94. package/src/sap/ui/core/RenderManager.js +286 -156
  95. package/src/sap/ui/core/Renderer.js +1 -1
  96. package/src/sap/ui/core/ResizeHandler.js +2 -2
  97. package/src/sap/ui/core/ScrollBar.js +1 -1
  98. package/src/sap/ui/core/SeparatorItem.js +1 -1
  99. package/src/sap/ui/core/Title.js +1 -1
  100. package/src/sap/ui/core/TooltipBase.js +1 -1
  101. package/src/sap/ui/core/UIArea.js +36 -4
  102. package/src/sap/ui/core/UIComponent.js +1 -1
  103. package/src/sap/ui/core/UIComponentMetadata.js +1 -1
  104. package/src/sap/ui/core/ValueStateSupport.js +1 -1
  105. package/src/sap/ui/core/VariantLayoutData.js +1 -1
  106. package/src/sap/ui/core/XMLComposite.js +1 -1
  107. package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
  108. package/src/sap/ui/core/_IconRegistry.js +1 -0
  109. package/src/sap/ui/core/cache/CacheManager.js +1 -1
  110. package/src/sap/ui/core/date/UI5Date.js +970 -0
  111. package/src/sap/ui/core/date/UniversalDate.js +803 -39
  112. package/src/sap/ui/core/date/UniversalDateUtils.js +170 -14
  113. package/src/sap/ui/core/delegate/ItemNavigation.js +1 -1
  114. package/src/sap/ui/core/delegate/ScrollEnablement.js +1 -1
  115. package/src/sap/ui/core/dnd/DragAndDrop.js +26 -15
  116. package/src/sap/ui/core/dnd/DragDropBase.js +1 -1
  117. package/src/sap/ui/core/dnd/DragDropInfo.js +1 -1
  118. package/src/sap/ui/core/dnd/DragInfo.js +5 -8
  119. package/src/sap/ui/core/dnd/DropInfo.js +1 -1
  120. package/src/sap/ui/core/format/DateFormat.js +39 -29
  121. package/src/sap/ui/core/format/FileSizeFormat.js +1 -0
  122. package/src/sap/ui/core/format/ListFormat.js +1 -0
  123. package/src/sap/ui/core/format/NumberFormat.js +31 -56
  124. package/src/sap/ui/core/format/TimezoneUtil.js +9 -7
  125. package/src/sap/ui/core/hyphenation/Hyphenation.js +1 -1
  126. package/src/sap/ui/core/library.js +22 -3
  127. package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
  128. package/src/sap/ui/core/message/Message.js +1 -1
  129. package/src/sap/ui/core/message/MessageManager.js +1 -1
  130. package/src/sap/ui/core/message/MessageParser.js +1 -1
  131. package/src/sap/ui/core/message/MessageProcessor.js +1 -1
  132. package/src/sap/ui/core/mvc/HTMLView.js +1 -1
  133. package/src/sap/ui/core/mvc/JSONView.js +1 -1
  134. package/src/sap/ui/core/mvc/JSView.js +1 -1
  135. package/src/sap/ui/core/mvc/TemplateView.js +1 -1
  136. package/src/sap/ui/core/mvc/View.js +1 -1
  137. package/src/sap/ui/core/mvc/XMLView.js +1 -1
  138. package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
  139. package/src/sap/ui/core/plugin/LessSupport.js +1 -1
  140. package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -1
  141. package/src/sap/ui/core/postmessage/Bus.js +1 -1
  142. package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
  143. package/src/sap/ui/core/routing/Router.js +4 -3
  144. package/src/sap/ui/core/search/OpenSearchProvider.js +1 -1
  145. package/src/sap/ui/core/search/SearchProvider.js +1 -1
  146. package/src/sap/ui/core/service/Service.js +1 -1
  147. package/src/sap/ui/core/service/ServiceFactory.js +1 -1
  148. package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
  149. package/src/sap/ui/core/support/Plugin.js +1 -1
  150. package/src/sap/ui/core/support/Support.js +1 -1
  151. package/src/sap/ui/core/support/plugins/ControlTree.js +14 -20
  152. package/src/sap/ui/core/support/plugins/Interaction.js +1 -1
  153. package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
  154. package/src/sap/ui/core/support/plugins/Performance.js +1 -1
  155. package/src/sap/ui/core/support/plugins/Selector.js +1 -1
  156. package/src/sap/ui/core/support/plugins/TechInfo.js +1 -1
  157. package/src/sap/ui/core/support/plugins/Trace.js +1 -1
  158. package/src/sap/ui/core/support/plugins/ViewInfo.js +1 -1
  159. package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
  160. package/src/sap/ui/core/tmpl/DOMElement.js +1 -1
  161. package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
  162. package/src/sap/ui/core/tmpl/Template.js +1 -1
  163. package/src/sap/ui/core/tmpl/TemplateControl.js +1 -1
  164. package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
  165. package/src/sap/ui/core/util/Export.js +1 -1
  166. package/src/sap/ui/core/util/ExportCell.js +1 -1
  167. package/src/sap/ui/core/util/ExportColumn.js +1 -1
  168. package/src/sap/ui/core/util/ExportRow.js +1 -1
  169. package/src/sap/ui/core/util/ExportType.js +1 -1
  170. package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
  171. package/src/sap/ui/core/util/File.js +1 -1
  172. package/src/sap/ui/core/util/LibraryInfo.js +1 -1
  173. package/src/sap/ui/core/util/MockServer.js +1 -1
  174. package/src/sap/ui/core/util/PasteHelper.js +1 -1
  175. package/src/sap/ui/core/util/XMLPreprocessor.js +1 -0
  176. package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
  177. package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
  178. package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
  179. package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
  180. package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
  181. package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
  182. package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
  183. package/src/sap/ui/core/ws/ReadyState.js +1 -1
  184. package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
  185. package/src/sap/ui/core/ws/WebSocket.js +2 -1
  186. package/src/sap/ui/debug/ControlTree.js +1 -1
  187. package/src/sap/ui/debug/DebugEnv.js +1 -1
  188. package/src/sap/ui/debug/PropertyList.js +1 -1
  189. package/src/sap/ui/dom/isBehindOtherElement.js +11 -3
  190. package/src/sap/ui/model/ClientModel.js +1 -1
  191. package/src/sap/ui/model/CompositeDataState.js +1 -1
  192. package/src/sap/ui/model/CompositeType.js +1 -1
  193. package/src/sap/ui/model/DataState.js +1 -1
  194. package/src/sap/ui/model/MetaModel.js +1 -1
  195. package/src/sap/ui/model/Model.js +1 -11
  196. package/src/sap/ui/model/SelectionModel.js +1 -1
  197. package/src/sap/ui/model/SimpleType.js +1 -1
  198. package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
  199. package/src/sap/ui/model/Type.js +1 -1
  200. package/src/sap/ui/model/analytics/AnalyticalBinding.js +5 -1
  201. package/src/sap/ui/model/controlhelper/TreeBindingProxy.js +29 -15
  202. package/src/sap/ui/model/json/JSONModel.js +1 -1
  203. package/src/sap/ui/model/message/MessageModel.js +1 -1
  204. package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
  205. package/src/sap/ui/model/odata/ODataMessageParser.js +1 -1
  206. package/src/sap/ui/model/odata/ODataMetaModel.js +2 -2
  207. package/src/sap/ui/model/odata/ODataMetadata.js +1 -1
  208. package/src/sap/ui/model/odata/ODataModel.js +1 -1
  209. package/src/sap/ui/model/odata/type/Boolean.js +1 -1
  210. package/src/sap/ui/model/odata/type/Byte.js +1 -1
  211. package/src/sap/ui/model/odata/type/Currency.js +1 -1
  212. package/src/sap/ui/model/odata/type/Date.js +57 -21
  213. package/src/sap/ui/model/odata/type/DateTime.js +32 -3
  214. package/src/sap/ui/model/odata/type/DateTimeBase.js +62 -25
  215. package/src/sap/ui/model/odata/type/DateTimeOffset.js +35 -5
  216. package/src/sap/ui/model/odata/type/DateTimeWithTimezone.js +6 -5
  217. package/src/sap/ui/model/odata/type/Decimal.js +1 -1
  218. package/src/sap/ui/model/odata/type/Double.js +1 -1
  219. package/src/sap/ui/model/odata/type/Guid.js +1 -1
  220. package/src/sap/ui/model/odata/type/Int.js +1 -1
  221. package/src/sap/ui/model/odata/type/Int16.js +1 -1
  222. package/src/sap/ui/model/odata/type/Int32.js +1 -1
  223. package/src/sap/ui/model/odata/type/Int64.js +1 -1
  224. package/src/sap/ui/model/odata/type/ODataType.js +1 -1
  225. package/src/sap/ui/model/odata/type/Raw.js +1 -1
  226. package/src/sap/ui/model/odata/type/SByte.js +1 -1
  227. package/src/sap/ui/model/odata/type/Single.js +1 -1
  228. package/src/sap/ui/model/odata/type/Stream.js +1 -1
  229. package/src/sap/ui/model/odata/type/String.js +1 -1
  230. package/src/sap/ui/model/odata/type/Time.js +37 -2
  231. package/src/sap/ui/model/odata/type/TimeOfDay.js +39 -4
  232. package/src/sap/ui/model/odata/type/Unit.js +1 -1
  233. package/src/sap/ui/model/odata/v2/Context.js +1 -1
  234. package/src/sap/ui/model/odata/v2/ODataAnnotations.js +1 -1
  235. package/src/sap/ui/model/odata/v2/ODataContextBinding.js +1 -0
  236. package/src/sap/ui/model/odata/v2/ODataListBinding.js +11 -1
  237. package/src/sap/ui/model/odata/v2/ODataModel.js +4 -2
  238. package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +1 -1
  239. package/src/sap/ui/model/odata/v4/AnnotationHelper.js +1 -1
  240. package/src/sap/ui/model/odata/v4/Context.js +98 -23
  241. package/src/sap/ui/model/odata/v4/ODataBinding.js +39 -9
  242. package/src/sap/ui/model/odata/v4/ODataContextBinding.js +4 -4
  243. package/src/sap/ui/model/odata/v4/ODataListBinding.js +57 -21
  244. package/src/sap/ui/model/odata/v4/ODataMetaModel.js +3 -4
  245. package/src/sap/ui/model/odata/v4/ODataModel.js +33 -8
  246. package/src/sap/ui/model/odata/v4/ODataParentBinding.js +15 -12
  247. package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +2 -2
  248. package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +43 -8
  249. package/src/sap/ui/model/odata/v4/lib/_AggregationHelper.js +92 -28
  250. package/src/sap/ui/model/odata/v4/lib/_Cache.js +74 -24
  251. package/src/sap/ui/model/odata/v4/lib/_Helper.js +14 -3
  252. package/src/sap/ui/model/odata/v4/lib/_MetadataConverter.js +12 -4
  253. package/src/sap/ui/model/odata/v4/lib/_MetadataRequestor.js +8 -3
  254. package/src/sap/ui/model/odata/v4/lib/_Requestor.js +22 -14
  255. package/src/sap/ui/model/odata/v4/lib/_V2MetadataConverter.js +8 -1
  256. package/src/sap/ui/model/resource/ResourceModel.js +1 -1
  257. package/src/sap/ui/model/type/Boolean.js +1 -1
  258. package/src/sap/ui/model/type/Currency.js +1 -1
  259. package/src/sap/ui/model/type/Date.js +1 -1
  260. package/src/sap/ui/model/type/DateInterval.js +190 -155
  261. package/src/sap/ui/model/type/DateTime.js +1 -1
  262. package/src/sap/ui/model/type/DateTimeInterval.js +1 -1
  263. package/src/sap/ui/model/type/FileSize.js +1 -1
  264. package/src/sap/ui/model/type/Float.js +1 -1
  265. package/src/sap/ui/model/type/Integer.js +1 -1
  266. package/src/sap/ui/model/type/String.js +1 -1
  267. package/src/sap/ui/model/type/Time.js +1 -1
  268. package/src/sap/ui/model/type/TimeInterval.js +1 -1
  269. package/src/sap/ui/model/type/Unit.js +1 -1
  270. package/src/sap/ui/model/xml/XMLModel.js +1 -1
  271. package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
  272. package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +1 -1
  273. package/src/sap/ui/qunit/utils/waitForThemeApplied.js +4 -5
  274. package/src/sap/ui/test/generic/TestBase.js +3 -3
  275. package/src/sap/ui/test/generic/_EnforceSemanticRendering.js +4 -4
  276. package/src/sap/ui/thirdparty/jquery-mobile-custom.js +9 -1
  277. package/src/sap/ui/util/Storage.js +1 -1
  278. package/src/ui5loader-autoconfig.js +14 -11
  279. package/src/ui5loader.js +152 -3
@@ -6,7 +6,7 @@
6
6
  <copyright>OpenUI5
7
7
  * (c) Copyright 2009-2023 SAP SE or an SAP affiliate company.
8
8
  * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.</copyright>
9
- <version>1.110.0</version>
9
+ <version>1.111.1</version>
10
10
 
11
11
  <documentation>The SAPUI5 Core Runtime.
12
12
 
@@ -203,7 +203,7 @@
203
203
  <copyright>OpenJS Foundation and other contributors</copyright>
204
204
  <pattern>sap/ui/thirdparty/jquery-compat.js</pattern>
205
205
  </lib>
206
- <lib name="jquery_mobile" displayName="jQuery Mobile" npmName="n/a" version="1.3.1" hash="ce7f0d13341afe624e75cf797f43192f" homepage="http://jquerymobile.com" id="73554900106100002438">
206
+ <lib name="jquery_mobile" displayName="jQuery Mobile" npmName="n/a" version="1.3.1" hash="9455e32c6b83390085754590a3d71707" homepage="http://jquerymobile.com" id="73554900106100002438">
207
207
  <license url="http://jQuery.org/license" type="MIT" />
208
208
  <copyright>2010, 2013 jQuery Foundation, Inc. and other contributors</copyright>
209
209
  <pattern>sap/ui/thirdparty/jquery-mobile-custom.js</pattern>
@@ -40,7 +40,7 @@ sap.ui.define([
40
40
  * Provides methods to show or hide a waiting animation covering the whole
41
41
  * page and blocking user interaction.
42
42
  * @namespace
43
- * @version 1.110.0
43
+ * @version 1.111.1
44
44
  * @public
45
45
  * @alias sap.ui.core.BusyIndicator
46
46
  */
@@ -225,7 +225,7 @@ sap.ui.define([
225
225
  * @extends sap.ui.base.ManagedObject
226
226
  * @abstract
227
227
  * @author SAP SE
228
- * @version 1.110.0
228
+ * @version 1.111.1
229
229
  * @alias sap.ui.core.Component
230
230
  * @since 1.9.2
231
231
  */
@@ -1722,68 +1722,76 @@ sap.ui.define([
1722
1722
  bIsDataSourceUri = true;
1723
1723
  }
1724
1724
 
1725
- if (oDataSource.type === 'OData' && oDataSource.settings && typeof oDataSource.settings.maxAge === "number") {
1725
+ if (oDataSource.type === 'OData' && oDataSource.settings) {
1726
1726
  oModelConfig.settings = oModelConfig.settings || {};
1727
- oModelConfig.settings.headers = oModelConfig.settings.headers || {};
1728
- oModelConfig.settings.headers["Cache-Control"] = "max-age=" + oDataSource.settings.maxAge;
1729
- }
1730
1727
 
1731
- // read out OData annotations and create ODataModel settings for it
1732
- if (oDataSource.type === 'OData' && oDataSource.settings && oDataSource.settings.annotations) {
1733
- var aAnnotations = oDataSource.settings.annotations;
1728
+ if (typeof oDataSource.settings.maxAge === "number") {
1729
+ oModelConfig.settings.headers = oModelConfig.settings.headers || {};
1730
+ oModelConfig.settings.headers["Cache-Control"] = "max-age=" + oDataSource.settings.maxAge;
1731
+ }
1734
1732
 
1735
- for (var i = 0; i < aAnnotations.length; i++) {
1736
- var sAnnotation = aAnnotations[i];
1737
- var oAnnotation = mConfig.dataSources[sAnnotation];
1733
+ // The ODataModel's "ignoreAnnotationsFromMetadata" parameter only accepts <true> (see ODataModel constructor documentation)
1734
+ if (oDataSource.settings.ignoreAnnotationsFromMetadata === true) {
1735
+ oModelConfig.settings.ignoreAnnotationsFromMetadata = oDataSource.settings.ignoreAnnotationsFromMetadata;
1736
+ }
1738
1737
 
1739
- // dataSource entry should be defined!
1740
- if (!oAnnotation) {
1741
- Log.error("Component Manifest: ODataAnnotation \"" + sAnnotation + "\" for dataSource \"" + oModelConfig.dataSource + "\" could not be found in manifest", "[\"sap.app\"][\"dataSources\"][\"" + sAnnotation + "\"]", sLogComponentName);
1742
- continue;
1743
- }
1738
+ // read out OData annotations and create ODataModel settings for it
1739
+ if (oDataSource.settings.annotations) {
1740
+ var aAnnotations = oDataSource.settings.annotations;
1744
1741
 
1745
- // type should be ODataAnnotation!
1746
- if (oAnnotation.type !== 'ODataAnnotation') {
1747
- Log.error("Component Manifest: dataSource \"" + sAnnotation + "\" was expected to have type \"ODataAnnotation\" but was \"" + oAnnotation.type + "\"", "[\"sap.app\"][\"dataSources\"][\"" + sAnnotation + "\"]", sLogComponentName);
1748
- continue;
1749
- }
1742
+ for (var i = 0; i < aAnnotations.length; i++) {
1743
+ var sAnnotation = aAnnotations[i];
1744
+ var oAnnotation = mConfig.dataSources[sAnnotation];
1750
1745
 
1751
- // uri is required!
1752
- if (!oAnnotation.uri) {
1753
- Log.error("Component Manifest: Missing \"uri\" for ODataAnnotation \"" + sAnnotation + "\"", "[\"sap.app\"][\"dataSources\"][\"" + sAnnotation + "\"]", sLogComponentName);
1754
- continue;
1755
- }
1746
+ // dataSource entry should be defined!
1747
+ if (!oAnnotation) {
1748
+ Log.error("Component Manifest: ODataAnnotation \"" + sAnnotation + "\" for dataSource \"" + oModelConfig.dataSource + "\" could not be found in manifest", "[\"sap.app\"][\"dataSources\"][\"" + sAnnotation + "\"]", sLogComponentName);
1749
+ continue;
1750
+ }
1756
1751
 
1757
- var oAnnotationUri = new URI(oAnnotation.uri);
1752
+ // type should be ODataAnnotation!
1753
+ if (oAnnotation.type !== 'ODataAnnotation') {
1754
+ Log.error("Component Manifest: dataSource \"" + sAnnotation + "\" was expected to have type \"ODataAnnotation\" but was \"" + oAnnotation.type + "\"", "[\"sap.app\"][\"dataSources\"][\"" + sAnnotation + "\"]", sLogComponentName);
1755
+ continue;
1756
+ }
1758
1757
 
1759
- if (bIsV2Model || bIsV4Model) {
1760
- /* eslint-disable no-loop-func */
1761
- ["sap-language", "sap-client"].forEach(function(sName) {
1762
- if (!oAnnotationUri.hasQuery(sName) && oConfig.getSAPParam(sName)) {
1763
- oAnnotationUri.setQuery(sName, oConfig.getSAPParam(sName));
1764
- }
1765
- });
1766
- /* eslint-enable no-loop-func */
1767
-
1768
- var sCacheTokenForAnnotation = mCacheTokens.dataSources && mCacheTokens.dataSources[oAnnotation.uri];
1769
- if (sCacheTokenForAnnotation) {
1770
- Component._applyCacheToken(oAnnotationUri, {
1771
- cacheToken: sCacheTokenForAnnotation,
1772
- componentName: sLogComponentName,
1773
- dataSource: sAnnotation
1758
+ // uri is required!
1759
+ if (!oAnnotation.uri) {
1760
+ Log.error("Component Manifest: Missing \"uri\" for ODataAnnotation \"" + sAnnotation + "\"", "[\"sap.app\"][\"dataSources\"][\"" + sAnnotation + "\"]", sLogComponentName);
1761
+ continue;
1762
+ }
1763
+
1764
+ var oAnnotationUri = new URI(oAnnotation.uri);
1765
+
1766
+ if (bIsV2Model || bIsV4Model) {
1767
+ /* eslint-disable no-loop-func */
1768
+ ["sap-language", "sap-client"].forEach(function(sName) {
1769
+ if (!oAnnotationUri.hasQuery(sName) && oConfig.getSAPParam(sName)) {
1770
+ oAnnotationUri.setQuery(sName, oConfig.getSAPParam(sName));
1771
+ }
1774
1772
  });
1773
+ /* eslint-enable no-loop-func */
1774
+
1775
+ var sCacheTokenForAnnotation = mCacheTokens.dataSources && mCacheTokens.dataSources[oAnnotation.uri];
1776
+ if (sCacheTokenForAnnotation) {
1777
+ Component._applyCacheToken(oAnnotationUri, {
1778
+ cacheToken: sCacheTokenForAnnotation,
1779
+ componentName: sLogComponentName,
1780
+ dataSource: sAnnotation
1781
+ });
1782
+ }
1775
1783
  }
1776
- }
1777
1784
 
1778
- // resolve relative to component, ui5:// URLs are already resolved upfront
1779
- var oAnnotationSourceManifest = mConfig.origin.dataSources[aAnnotations[i]] || oManifest;
1780
- var sAnnotationUri = oAnnotationSourceManifest.resolveUri(oAnnotationUri.toString());
1785
+ // resolve relative to component, ui5:// URLs are already resolved upfront
1786
+ var oAnnotationSourceManifest = mConfig.origin.dataSources[aAnnotations[i]] || oManifest;
1787
+ var sAnnotationUri = oAnnotationSourceManifest.resolveUri(oAnnotationUri.toString());
1781
1788
 
1782
- // add uri to annotationURI array in settings (this parameter applies for ODataModel v1 & v2)
1783
- oModelConfig.settings = oModelConfig.settings || {};
1784
- oModelConfig.settings.annotationURI = oModelConfig.settings.annotationURI || [];
1785
- oModelConfig.settings.annotationURI.push(sAnnotationUri);
1789
+ // add uri to annotationURI array in settings (this parameter applies for ODataModel v1 & v2)
1790
+ oModelConfig.settings.annotationURI = oModelConfig.settings.annotationURI || [];
1791
+ oModelConfig.settings.annotationURI.push(sAnnotationUri);
1792
+ }
1786
1793
  }
1794
+
1787
1795
  }
1788
1796
 
1789
1797
  } else {
@@ -61,7 +61,7 @@ sap.ui.define([
61
61
  * See also {@link module:sap/ui/core/ComponentSupport}.
62
62
  *
63
63
  * @extends sap.ui.core.Control
64
- * @version 1.110.0
64
+ * @version 1.111.1
65
65
  *
66
66
  * @public
67
67
  * @alias sap.ui.core.ComponentContainer
@@ -29,7 +29,7 @@ sap.ui.define([
29
29
  * @public
30
30
  * @class
31
31
  * @author SAP SE
32
- * @version 1.110.0
32
+ * @version 1.111.1
33
33
  * @since 1.9.2
34
34
  * @alias sap.ui.core.ComponentMetadata
35
35
  * @extends sap.ui.base.ManagedObjectMetadata
@@ -97,7 +97,7 @@ sap.ui.define([
97
97
  * @author SAP SE
98
98
  * @public
99
99
  * @since 1.58.0
100
- * @version 1.110.0
100
+ * @version 1.111.1
101
101
  * @namespace
102
102
  * @alias module:sap/ui/core/ComponentSupport
103
103
  */
@@ -44,7 +44,7 @@ sap.ui.define([
44
44
  // Singleton instance for configuration
45
45
  var oConfiguration;
46
46
  var M_SETTINGS;
47
- var VERSION = "1.110.0";
47
+ var VERSION = "1.111.1";
48
48
 
49
49
  // Helper Functions
50
50
  function detectLanguage() {
@@ -270,6 +270,7 @@ sap.ui.define([
270
270
  "xx-waitForTheme" : { type : "string", defaultValue : ""}, // rendering|init
271
271
  "xx-hyphenation" : { type : "string", defaultValue : ""}, // (empty string)|native|thirdparty|disable
272
272
  "xx-flexBundleRequestForced" : { type : "boolean", defaultValue : false },
273
+ "xx-skipAutomaticFlLibLoading" : { type : "boolean", defaultValue: false },
273
274
  "xx-cssVariables" : { type : "string", defaultValue : "false" }, // false|true|additional (additional just includes the css_variables.css in addition)
274
275
  "xx-debugModuleLoading" : { type : "boolean", defaultValue: false },
275
276
  "statistics" : { type : "boolean", defaultValue : false },
@@ -568,8 +569,10 @@ sap.ui.define([
568
569
  }
569
570
 
570
571
  // in case the flexibilityServices configuration was set to a non-empty, non-default value, sap.ui.fl becomes mandatory
572
+ // if not overruled by xx-skipAutomaticFlLibLoading
571
573
  if (config.flexibilityServices
572
574
  && config.flexibilityServices !== M_SETTINGS.flexibilityServices.defaultValue
575
+ && !config['xx-skipAutomaticFlLibLoading']
573
576
  && config.modules.indexOf("sap.ui.fl.library") == -1) {
574
577
  config.modules.push("sap.ui.fl.library");
575
578
  }
@@ -79,7 +79,7 @@ sap.ui.define([
79
79
  * @extends sap.ui.core.Element
80
80
  * @abstract
81
81
  * @author SAP SE
82
- * @version 1.110.0
82
+ * @version 1.111.1
83
83
  * @alias sap.ui.core.Control
84
84
  */
85
85
  var Control = Element.extend("sap.ui.core.Control", /** @lends sap.ui.core.Control.prototype */ {
@@ -333,6 +333,12 @@ sap.ui.define([
333
333
  return;
334
334
  }
335
335
 
336
+ // Mark the control that it is in a dirty state and requires rendering.
337
+ // This flag will be used by the RenderManager to determine whether the rendering
338
+ // is necessary for the child controls while they are getting rendered with their parents.
339
+ // This will be cleared by the RenderManager when the control is rendered completely.
340
+ this._bNeedsRendering = true;
341
+
336
342
  if ( this.bOutput && (oUIArea = this.getUIArea()) ) {
337
343
  // if this control has been rendered before (bOutput)
338
344
  // and if it is contained in a UIArea (!!oUIArea)
@@ -391,6 +397,7 @@ sap.ui.define([
391
397
  * @protected
392
398
  */
393
399
  Control.prototype.rerender = function() {
400
+ this._bNeedsRendering = true;
394
401
  UIArea.rerenderControl(this);
395
402
  };
396
403
 
@@ -517,8 +524,8 @@ sap.ui.define([
517
524
  *
518
525
  * Use {@link #detachBrowserEvent} to remove the event handler(s) again.
519
526
  *
520
- * @param {string} [sEventType] A string containing one or more JavaScript event types, such as "click" or "blur".
521
- * @param {function} [fnHandler] A function to execute each time the event is triggered.
527
+ * @param {string} sEventType A string containing one or more JavaScript event types, such as "click" or "blur".
528
+ * @param {function} fnHandler A function to execute each time the event is triggered.
522
529
  * @param {object} [oListener] The object, that wants to be notified, when the event occurs
523
530
  * @returns {this} Returns <code>this</code> to allow method chaining
524
531
  * @public
@@ -558,8 +565,8 @@ sap.ui.define([
558
565
  * Note: listeners are only removed, if the same combination of event type, callback function
559
566
  * and context object is given as in the call to <code>attachBrowserEvent</code>.
560
567
  *
561
- * @param {string} [sEventType] A string containing one or more JavaScript event types, such as "click" or "blur".
562
- * @param {function} [fnHandler] The function that is to be no longer executed.
568
+ * @param {string} sEventType A string containing one or more JavaScript event types, such as "click" or "blur".
569
+ * @param {function} fnHandler The function that is to be no longer executed.
563
570
  * @param {object} [oListener] The context object that was given in the call to <code>attachBrowserEvent</code>.
564
571
  * @returns {this} Returns <code>this</code> to allow method chaining
565
572
  * @public
@@ -970,7 +977,8 @@ sap.ui.define([
970
977
 
971
978
  if (bBlocked) {
972
979
  this.addDelegate(oRenderingDelegate, false, this);
973
- } else {
980
+ } else if (!this.getBusy()) {
981
+ // only remove delegate if control is not still in "busy" state
974
982
  this.removeDelegate(oRenderingDelegate);
975
983
  }
976
984
 
@@ -1040,7 +1048,11 @@ sap.ui.define([
1040
1048
  Interaction.notifyShowBusyIndicator(this);
1041
1049
  this.addDelegate(oRenderingDelegate, false, this);
1042
1050
  } else {
1043
- this.removeDelegate(oRenderingDelegate);
1051
+ // only remove the delegate if the control is not still in "blocked" state
1052
+ if (!this.getProperty("blocked")) {
1053
+ this.removeDelegate(oRenderingDelegate);
1054
+ }
1055
+
1044
1056
  //If there is a pending delayed call we clear it
1045
1057
  if (this._busyIndicatorDelayedCallId) {
1046
1058
  clearTimeout(this._busyIndicatorDelayedCallId);
@@ -170,7 +170,7 @@ sap.ui.define([
170
170
  * @extends sap.ui.base.Object
171
171
  * @final
172
172
  * @author SAP SE
173
- * @version 1.110.0
173
+ * @version 1.111.1
174
174
  * @alias sap.ui.core.Core
175
175
  * @public
176
176
  * @hideconstructor
@@ -1647,6 +1647,7 @@ sap.ui.define([
1647
1647
  * @param {string} [sLibraryName='sap.ui.core'] Name of the library to retrieve the bundle for
1648
1648
  * @param {string} [sLocale] Locale to retrieve the resource bundle for
1649
1649
  * @param {boolean} [bAsync=false] Whether the resource bundle is loaded asynchronously
1650
+ * @ui5-omissible-params sLocale
1650
1651
  * @returns {module:sap/base/i18n/ResourceBundle|undefined|Promise<module:sap/base/i18n/ResourceBundle|undefined>} The best matching resource bundle for the given
1651
1652
  * parameters or <code>undefined</code>; in asynchronous case a Promise on that bundle is returned
1652
1653
  * @public
@@ -24,7 +24,7 @@ sap.ui.define([
24
24
  * in the documentation.
25
25
  *
26
26
  * @extends sap.ui.core.Element
27
- * @version 1.110.0
27
+ * @version 1.111.1
28
28
  *
29
29
  * @public
30
30
  * @alias sap.ui.core.CustomData
@@ -40,7 +40,7 @@ sap.ui.define([
40
40
  * @class Static class for enabling declarative UI support.
41
41
  *
42
42
  * @author Peter Muessig, Tino Butz
43
- * @version 1.110.0
43
+ * @version 1.111.1
44
44
  * @since 1.7.0
45
45
  * @public
46
46
  * @alias sap.ui.core.DeclarativeSupport
@@ -18,7 +18,8 @@ sap.ui.define([
18
18
  "sap/ui/thirdparty/jquery",
19
19
  "sap/ui/events/F6Navigation",
20
20
  "./RenderManager",
21
- "sap/ui/core/Configuration"
21
+ "./Configuration",
22
+ "./EnabledPropagator"
22
23
  ],
23
24
  function(
24
25
  DataType,
@@ -33,7 +34,8 @@ sap.ui.define([
33
34
  jQuery,
34
35
  F6Navigation,
35
36
  RenderManager,
36
- Configuration
37
+ Configuration,
38
+ EnabledPropagator
37
39
  ) {
38
40
  "use strict";
39
41
 
@@ -128,7 +130,7 @@ sap.ui.define([
128
130
  *
129
131
  * @extends sap.ui.base.ManagedObject
130
132
  * @author SAP SE
131
- * @version 1.110.0
133
+ * @version 1.111.1
132
134
  * @public
133
135
  * @alias sap.ui.core.Element
134
136
  */
@@ -199,6 +201,7 @@ sap.ui.define([
199
201
 
200
202
  constructor : function(sId, mSettings) {
201
203
  ManagedObject.apply(this, arguments);
204
+ this._iRenderingDelegateCount = 0;
202
205
  },
203
206
 
204
207
  renderer : null // Element has no renderer
@@ -509,6 +512,29 @@ sap.ui.define([
509
512
  }
510
513
  };
511
514
 
515
+ /*
516
+ * Intercept any changes for properties named "enabled".
517
+ *
518
+ * If such a change is detected, inform all descendants that use the `EnabledPropagator`
519
+ * so that they can recalculate their own, derived enabled state.
520
+ * This is required in the context of rendering V4 to make the state of controls/elements
521
+ * self-contained again when they're using the `EnabledPropagator` mixin.
522
+ */
523
+ Element.prototype.setProperty = function(sPropertyName, vValue, bSuppressInvalidate) {
524
+ if (sPropertyName != "enabled" || bSuppressInvalidate) {
525
+ return ManagedObject.prototype.setProperty.apply(this, arguments);
526
+ }
527
+
528
+ var bOldEnabled = this.mProperties.enabled;
529
+ ManagedObject.prototype.setProperty.apply(this, arguments);
530
+ if (bOldEnabled != this.mProperties.enabled) {
531
+ // the EnabledPropagator knows better which descendants to update
532
+ EnabledPropagator.updateDescendants(this);
533
+ }
534
+
535
+ return this;
536
+ };
537
+
512
538
  Element.prototype.insertDependent = function(oElement, iIndex) {
513
539
  this.insertAggregation("dependents", oElement, iIndex, true);
514
540
  return this; // explicitly return 'this' to fix controls that override insertAggregation wrongly
@@ -654,6 +680,39 @@ sap.ui.define([
654
680
  */
655
681
  Element._interceptEvent = undefined;
656
682
 
683
+ /**
684
+ * Updates the count of rendering-related delegates and if the given threshold is reached,
685
+ * informs the RenderManager` to enable/disable rendering V4 for the element.
686
+ *
687
+ * @param {sap.ui.core.Element} oElement The element instance
688
+ * @param {object} oDelegate The delegate instance
689
+ * @param {iThresholdCount} iThresholdCount Whether the delegate has been added=1 or removed=0.
690
+ * At the same time serves as threshold when to inform the `RenderManager`.
691
+ * @private
692
+ */
693
+ function updateRenderingDelegate(oElement, oDelegate, iThresholdCount) {
694
+ if (oDelegate.canSkipRendering || !(oDelegate.onAfterRendering || oDelegate.onBeforeRendering)) {
695
+ return;
696
+ }
697
+
698
+ oElement._iRenderingDelegateCount += (iThresholdCount || -1);
699
+
700
+ if (oElement.bOutput === true && oElement._iRenderingDelegateCount == iThresholdCount) {
701
+ RenderManager.canSkipRendering(oElement, 1 /* update skip-the-rendering DOM marker, only if the apiVersion is 4 */);
702
+ }
703
+ }
704
+
705
+ /**
706
+ * Returns whether the element has rendering-related delegates that might prevent skipping the rendering.
707
+ *
708
+ * @returns {boolean}
709
+ * @private
710
+ * @ui5-restricted sap.ui.core.RenderManager
711
+ */
712
+ Element.prototype.hasRenderingDelegate = function() {
713
+ return Boolean(this._iRenderingDelegateCount);
714
+ };
715
+
657
716
  /**
658
717
  * Adds a delegate that listens to the events of this element.
659
718
  *
@@ -692,6 +751,8 @@ sap.ui.define([
692
751
  }
693
752
 
694
753
  (bCallBefore ? this.aBeforeDelegates : this.aDelegates).push({oDelegate:oDelegate, bClone: !!bClone, vThis: ((oThis === this) ? true : oThis)}); // special case: if this element is the given context, set a flag, so this also works after cloning (it should be the cloned element then, not the given one)
754
+ updateRenderingDelegate(this, oDelegate, 1);
755
+
695
756
  return this;
696
757
  };
697
758
 
@@ -710,12 +771,14 @@ sap.ui.define([
710
771
  for (i = 0; i < this.aDelegates.length; i++) {
711
772
  if (this.aDelegates[i].oDelegate == oDelegate) {
712
773
  this.aDelegates.splice(i, 1);
774
+ updateRenderingDelegate(this, oDelegate, 0);
713
775
  i--; // One element removed means the next element now has the index of the current one
714
776
  }
715
777
  }
716
778
  for (i = 0; i < this.aBeforeDelegates.length; i++) {
717
779
  if (this.aBeforeDelegates[i].oDelegate == oDelegate) {
718
780
  this.aBeforeDelegates.splice(i, 1);
781
+ updateRenderingDelegate(this, oDelegate, 0);
719
782
  i--; // One element removed means the next element now has the index of the current one
720
783
  }
721
784
  }
@@ -752,6 +815,11 @@ sap.ui.define([
752
815
  * See {@link topic:bdf3e9818cd84d37a18ee5680e97e1c1 Event Handler Methods} for a general explanation of
753
816
  * event handling in controls.
754
817
  *
818
+ * <b>Note:</b> Setting the special <code>canSkipRendering</code> property to <code>true</code> for the event delegate
819
+ * object itself lets the framework know that the <code>onBeforeRendering</code> and <code>onAfterRendering</code>
820
+ * event handlers of the delegate are compatible with the contract of {@link sap.ui.core.RenderManager Renderer.apiVersion 4}.
821
+ * See example "Adding a rendering delegate...".
822
+ *
755
823
  * @example <caption>Adding a delegate for the keydown and afterRendering event</caption>
756
824
  * <pre>
757
825
  * var oDelegate = {
@@ -765,6 +833,22 @@ sap.ui.define([
765
833
  * oElement.addEventDelegate(oDelegate);
766
834
  * </pre>
767
835
  *
836
+ * @example <caption>Adding a rendering delegate that is compatible with the rendering optimization</caption>
837
+ * <pre>
838
+ * var oDelegate = {
839
+ * canSkipRendering: true,
840
+ * onBeforeRendering: function() {
841
+ * // Act when the beforeRendering event is fired on the element
842
+ * // The code here only accesses HTML elements inside the root node of the control
843
+ * },
844
+ * onAfterRendering: function(){
845
+ * // Act when the afterRendering event is fired on the element
846
+ * // The code here only accesses HTML elements inside the root node of the control
847
+ * }
848
+ * };
849
+ * oElement.addEventDelegate(oDelegate);
850
+ * </pre>
851
+ *
768
852
  * @param {object} oDelegate The delegate object which consists of the event handler names and the corresponding event handler functions
769
853
  * @param {object} [oThis=oDelegate] If given, this object will be the "this" context in the listener methods; default is the delegate object itself
770
854
  * @returns {this} Returns <code>this</code> to allow method chaining
@@ -1481,6 +1565,17 @@ sap.ui.define([
1481
1565
  * {@link sap.ui.core.RenderManager#writeAccessibilityState writeAccessibilityState} methods
1482
1566
  * for the parent of the currently rendered control - if the parent implements it.
1483
1567
  *
1568
+ * <b>Note:</b> Setting the special <code>canSkipRendering</code> property of the <code>mAriaProps</code> parameter to <code>true</code> lets the <code>RenderManager</code> know
1569
+ * that the accessibility enhancement is static and does not interfere with the child control's {@link sap.ui.core.RenderManager Renderer.apiVersion 4} rendering optimization.
1570
+ *
1571
+ * @example <caption>Setting an accessibility state that is compatible with the rendering optimization</caption>
1572
+ * <pre>
1573
+ * MyControl.prototype.enhanceAccessibilityState = function(oElement, mAriaProps) {
1574
+ * mAriaProps.label = "An appropriate label from the parent";
1575
+ * mAriaProps.canSkipRendering = true;
1576
+ * };
1577
+ * </pre>
1578
+ *
1484
1579
  * @function
1485
1580
  * @name sap.ui.core.Element.prototype.enhanceAccessibilityState
1486
1581
  * @param {sap.ui.core.Element} oElement
@@ -23,7 +23,7 @@ sap.ui.define([
23
23
  *
24
24
  * @class
25
25
  * @author SAP SE
26
- * @version 1.110.0
26
+ * @version 1.111.1
27
27
  * @since 0.8.6
28
28
  * @alias sap.ui.core.ElementMetadata
29
29
  * @extends sap.ui.base.ManagedObjectMetadata
@@ -43,7 +43,7 @@ sap.ui.define([
43
43
  *
44
44
  * @param {boolean} [bDefault=true] Value that should be used as default value for the enhancement of the control.
45
45
  * @param {boolean} [bLegacy=false] Whether the introduced property should use the old name <code>Enabled</code>.
46
- * @version 1.110.0
46
+ * @version 1.111.1
47
47
  * @public
48
48
  * @class
49
49
  * @alias sap.ui.core.EnabledPropagator
@@ -105,6 +105,21 @@ sap.ui.define([
105
105
  this.getMetadata().addPublicMethods("useEnabledPropagator");
106
106
  };
107
107
 
108
+ /**
109
+ * Invalidates the descendants of the provided root element that are implementing the EnabledPropagator mixin
110
+ *
111
+ * @param {sap.ui.core.Element} oRootElement The root element instance
112
+ * @private
113
+ * @ui5-restricted sap.ui.core
114
+ */
115
+ EnabledPropagator.updateDescendants = function(oRootElement) {
116
+ oRootElement.isActive() && oRootElement.findElements(true, function(oElement) {
117
+ if (oElement._bUseEnabledPropagator && oElement.bOutput == true) {
118
+ oElement.invalidate();
119
+ }
120
+ });
121
+ };
122
+
108
123
  /**
109
124
  * Determines whether an ancestor of the provided control implements getEnabled method and that returns false
110
125
  *
@@ -30,7 +30,7 @@ sap.ui.define([
30
30
  *
31
31
  * @extends sap.ui.base.Object
32
32
  * @author SAP SE
33
- * @version 1.110.0
33
+ * @version 1.111.1
34
34
  * @public
35
35
  * @since 1.8.0
36
36
  * @alias sap.ui.core.EventBus
@@ -60,7 +60,7 @@ function(
60
60
  * @class
61
61
  * @extends sap.ui.base.ManagedObject
62
62
  * @author SAP SE
63
- * @version 1.110.0
63
+ * @version 1.111.1
64
64
  * @public
65
65
  * @alias sap.ui.core.Fragment
66
66
  */
@@ -44,7 +44,7 @@ sap.ui.define([
44
44
  * @extends sap.ui.core.Control
45
45
  *
46
46
  * @author SAP SE
47
- * @version 1.110.0
47
+ * @version 1.111.1
48
48
  *
49
49
  * @public
50
50
  * @alias sap.ui.core.HTML
@@ -22,7 +22,7 @@ sap.ui.define(['sap/ui/base/Object', "sap/ui/util/Storage"],
22
22
  *
23
23
  * @extends sap.ui.base.Object
24
24
  * @author SAP SE
25
- * @version 1.110.0
25
+ * @version 1.111.1
26
26
  * @alias sap.ui.core.History
27
27
  * @protected
28
28
  */
@@ -75,7 +75,7 @@ sap.ui.define([
75
75
  * @implements sap.ui.core.IFormContent
76
76
  *
77
77
  * @author SAP SE
78
- * @version 1.110.0
78
+ * @version 1.111.1
79
79
  *
80
80
  * @public
81
81
  * @since 1.11.1
@@ -321,9 +321,7 @@ sap.ui.define([
321
321
  * @private
322
322
  */
323
323
  Icon.prototype.onkeydown = function(oEvent) {
324
-
325
324
  if (oEvent.which === KeyCodes.SPACE || oEvent.which === KeyCodes.ENTER) {
326
-
327
325
  // note: prevent document scrolling
328
326
  oEvent.preventDefault();
329
327
 
@@ -350,15 +348,21 @@ sap.ui.define([
350
348
  * @private
351
349
  */
352
350
  Icon.prototype.onkeyup = function(oEvent) {
353
-
354
351
  if (oEvent.which === KeyCodes.SPACE || oEvent.which === KeyCodes.ENTER) {
355
-
356
352
  this.$().removeClass("sapUiIconActive");
357
353
  this._restoreColors();
358
- this.firePress({/* no parameters */});
359
354
  }
360
355
  };
361
356
 
357
+ Icon.prototype.onsapenter = Icon.prototype.onsapspace = function(oEvent) {
358
+ if (this.hasListeners("press")) {
359
+ // mark the event for components that needs to know if the event was handled
360
+ oEvent.setMarked();
361
+ }
362
+
363
+ this.firePress({/* no parameters */});
364
+ };
365
+
362
366
  /* =========================================================== */
363
367
  /* Private methods */
364
368
  /* =========================================================== */
@@ -16,7 +16,7 @@ sap.ui.define(['./library', 'sap/ui/core/Lib'],
16
16
  * Helper functionality for indication color support.
17
17
  *
18
18
  * @author SAP SE
19
- * @version 1.110.0
19
+ * @version 1.111.1
20
20
  * @public
21
21
  * @namespace sap.ui.core.IndicationColorSupport
22
22
  * @since 1.66