@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
@@ -24,7 +24,7 @@ sap.ui.define([
24
24
  * in the documentation.
25
25
  *
26
26
  * @extends sap.ui.core.Element
27
- * @version 1.93.3
27
+ * @version 1.96.2
28
28
  *
29
29
  * @public
30
30
  * @alias sap.ui.core.CustomData
@@ -4,268 +4,43 @@
4
4
  * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
5
  */
6
6
 
7
- sap.ui.define([
8
- './Component',
9
- 'sap/base/Log',
10
- 'sap/base/util/extend',
11
- 'sap/base/util/ObjectPath',
12
- "sap/base/util/isEmptyObject",
13
- './Core' // provides sap.ui.getCore()
14
- ],
15
- function(Component, Log, extend, ObjectPath, isEmptyObject /*, Core */) {
7
+ sap.ui.define(['sap/base/Log'], function(Log) {
16
8
  "use strict";
17
9
 
18
-
19
-
20
-
21
- // keys for configuration sections
22
- var CONFIG_VIEW_REPLACEMENTS = "sap.ui.viewReplacements",
23
- CONFIG_VIEW_EXTENSIONS = "sap.ui.viewExtensions",
24
- CONFIG_VIEW_MODIFICATIONS = "sap.ui.viewModifications",
25
- CONFIG_CONTROLLER_EXTENSIONS = "sap.ui.controllerExtensions",
26
- CONFIG_CONTROLLER_REPLACEMENTS = "sap.ui.controllerReplacements";
27
-
28
- // map of component configurations
29
- var mComponentConfigs = {};
30
-
31
- /**
32
- * Finds the config in the given type and use the check function to validate
33
- * if the correct entry has been found!
34
- * @param {string} sType Name of the config section
35
- * @param {string|sap.ui.base.ManagedObject} vObject Component ID or ManagedObject
36
- * @param {function} fnCheck Check function
37
- */
38
- function findConfig(sType, vObject, fnCheck) {
39
- var sComponentId = vObject && typeof vObject === "string" ? vObject : (vObject && Component.getOwnerIdFor(vObject));
40
- if (sComponentId) {
41
- // if a component name is given only the component customizing
42
- // configuration is checked - the customizing configuration is
43
- // merged in case of extending components - so the configuration
44
- // should be available properly
45
- var oComponent = Component.get(sComponentId);
46
- var sComponentName = oComponent && oComponent.getMetadata().getComponentName();
47
- // starting with manifest first we need to check the instance
48
- // specific configuration first and fallback to the general
49
- // customizing configuration of the component
50
- var oConfig = mComponentConfigs[sComponentName + "::" + sComponentId];
51
- if (oConfig && oConfig[sType] && fnCheck(oConfig[sType])) {
52
- return false;
53
- } else {
54
- oConfig = mComponentConfigs[sComponentName];
55
- if (oConfig && oConfig[sType] && fnCheck(oConfig[sType])) {
56
- return false;
57
- }
58
- }
59
- } else {
60
- // TODO: checking order of components?
61
- for (sComponentName in mComponentConfigs) {
62
- oConfig = mComponentConfigs[sComponentName];
63
- if (oConfig && oConfig[sType] && fnCheck(oConfig[sType])) {
64
- break;
65
- }
66
- }
67
- }
68
- }
69
-
70
- /**
71
- * The static object <code>CustomizingConfiguration</code> contains configuration
72
- * for view replacements, view extensions and custom properties. The configuration
73
- * will be added from component metadata objects once the component gets activated.
74
- * By deactivating the component the customizing configuration of the component
75
- * gets removed again.
76
- *
77
- * @author SAP SE
78
- * @version 1.93.3
79
- * @constructor
80
- * @private
81
- * @since 1.15.1
82
- * @alias sap.ui.core.CustomizingConfiguration
83
- */
84
- var CustomizingConfiguration = {
85
-
86
- /**
87
- * logging of customizing configuration
88
- * @private
89
- */
90
- log: function() {
91
- if (window.console) {
92
- window.console.log(mComponentConfigs);
93
- }
94
- },
95
-
96
- /**
97
- * Activates the Customizing of a component by registering the component
98
- * configuration in the central customizing configuration.
99
- * @param {string} sComponentName the name of the component
100
- * @private
101
- */
102
- activateForComponent: function(sComponentName) {
103
- Log.info("CustomizingConfiguration: activateForComponent('" + sComponentName + "')");
104
- var sFullComponentName = sComponentName + ".Component";
105
- sap.ui.requireSync(sFullComponentName.replace(/\./g, "/"));
106
- var oCustomizingConfig = ObjectPath.get(sFullComponentName).getMetadata().getCustomizing();
107
- mComponentConfigs[sComponentName] = oCustomizingConfig;
108
-
109
- Log.debug("CustomizingConfiguration: customizing configuration for component '" + sComponentName + "' loaded: " + JSON.stringify(oCustomizingConfig));
110
- },
111
-
112
- /**
113
- * Deactivates the Customizing of a component by removing the component
114
- * configuration in the central Customizing configuration.
115
- * @param {string} sComponentName Name of the component
116
- * @private
117
- */
118
- deactivateForComponent: function(sComponentName) {
119
- if (mComponentConfigs[sComponentName]) {
120
- Log.info("CustomizingConfiguration: deactivateForComponent('" + sComponentName + "')");
121
- delete mComponentConfigs[sComponentName];
122
- }
123
- },
124
-
125
- /**
126
- * Activates the Customizing of a component instance by registering the component
127
- * configuration in the central Customizing configuration.
128
- * @param {sap.ui.core.Component} oComponent the component instance
129
- * @private
130
- */
131
- activateForComponentInstance: function(oComponent) {
132
- Log.info("CustomizingConfiguration: activateForComponentInstance('" + oComponent.getId() + "')");
133
- var sComponentName = oComponent.getMetadata().getComponentName(),
134
- sKey = sComponentName + "::" + oComponent.getId(),
135
- oCustomizingConfig = oComponent.getManifest()["sap.ui5"] && oComponent.getManifest()["sap.ui5"]["extends"] && oComponent.getManifest()["sap.ui5"]["extends"]["extensions"];
136
- mComponentConfigs[sKey] = oCustomizingConfig;
137
-
138
- Log.debug("CustomizingConfiguration: customizing configuration for component '" + sKey + "' loaded: " + JSON.stringify(oCustomizingConfig));
139
- },
140
-
141
- /**
142
- * Deactivates the Customizing of a component instance by removing the component
143
- * configuration in the central Customizing configuration.
144
- * @param {sap.ui.core.Component} oComponent the component instance
145
- * @private
146
- */
147
- deactivateForComponentInstance: function(oComponent) {
148
- var sComponentName = oComponent.getMetadata().getComponentName(),
149
- sKey = sComponentName + "::" + oComponent.getId();
150
- if (mComponentConfigs[sKey]) {
151
- Log.info("CustomizingConfiguration: deactivateForComponent('" + sKey + "')");
152
- delete mComponentConfigs[sKey];
153
- }
154
- },
155
-
156
- /**
157
- * returns the configuration of the replacement View or undefined
158
- * @private
159
- */
160
- getViewReplacement: function(sViewName, vObject) {
161
- var oResultConfig;
162
- // TODO: checking order of components?
163
- findConfig(CONFIG_VIEW_REPLACEMENTS, vObject, function(oConfig) {
164
- oResultConfig = oConfig[sViewName];
165
- return !!oResultConfig;
166
- });
167
- return oResultConfig;
168
- },
169
-
170
- /**
171
- * returns the configuration of the given extension point or undefined
172
- * @private
173
- */
174
- getViewExtension: function(sViewName, sExtensionPointName, vObject) { // FIXME: currently ONE extension wins, but they should be somehow merged - but how to define the order?
175
- var oResultConfig;
176
- // TODO: checking order of components?
177
- findConfig(CONFIG_VIEW_EXTENSIONS, vObject, function(oConfig) {
178
- oResultConfig = oConfig[sViewName] && oConfig[sViewName][sExtensionPointName];
179
- return !!oResultConfig;
180
- });
181
- return oResultConfig;
182
- },
183
-
184
- /**
185
- * returns the configuration of the controller extensions for the given
186
- * controller name
187
- * @private
188
- */
189
- getControllerExtension: function(sControllerName, vObject) {
190
- var oResultConfig;
191
- findConfig(CONFIG_CONTROLLER_EXTENSIONS, vObject, function(oConfig) {
192
- oResultConfig = oConfig[sControllerName];
193
- return !!oResultConfig;
194
- });
195
- return oResultConfig;
196
- },
197
-
198
- /**
199
- * returns the configuration of the controller replacement for the given
200
- * controller name
201
- * @private
202
- */
203
- getControllerReplacement: function(sControllerName, vObject) {
204
- var oResultConfig;
205
- findConfig(CONFIG_CONTROLLER_REPLACEMENTS, vObject, function(oConfig) {
206
- oResultConfig = oConfig[sControllerName];
207
- return !!oResultConfig;
208
- });
209
- return oResultConfig;
210
- },
211
-
212
- /**
213
- * currently returns an object (or undefined) because we assume there is
214
- * only one property modified and only once
215
- * @private
216
- */
217
- getCustomProperties: function(sViewName, sControlId, vObject) { // TODO: Fragments and Views are mixed here
218
- var mSettings;
219
- // TODO: checking order of components?
220
- findConfig(CONFIG_VIEW_MODIFICATIONS, vObject, function(oConfig) {
221
- var oSettings = oConfig[sViewName] && oConfig[sViewName][sControlId];
222
- var oUsedSettings = {};
223
- var bValidConfigFound = false;
224
- var vValue, sName;
225
- if (oSettings) {
226
- for (sName in oSettings) {
227
- vValue = oSettings[sName];
228
- if (sName === "visible") {
229
- bValidConfigFound = true;
230
- oUsedSettings[sName] = vValue;
231
- Log.info("Customizing: custom value for property '" + sName + "' of control '" + sControlId + "' in View '" + sViewName + "' applied: " + vValue);
232
- } else {
233
- Log.warning("Customizing: custom value for property '" + sName + "' of control '" + sControlId + "' in View '" + sViewName + "' ignored: only the 'visible' property can be customized.");
234
- }
235
- }
236
- if (bValidConfigFound) { // initialize only when there is actually something to add
237
- mSettings = mSettings || {}; // merge with any previous calls to findConfig in case of multiple definition sections
238
- extend(mSettings, oUsedSettings); // FIXME: this currently overrides customizations from different components in random order
239
- }
240
- }
241
- });
242
- return mSettings;
243
- },
244
-
245
- hasCustomProperties: function(sViewName, vObject) {
246
- var mSettings = {};
247
- findConfig(CONFIG_VIEW_MODIFICATIONS, vObject, function(oConfig) {
248
- if (oConfig[sViewName]) {
249
- mSettings = oConfig[sViewName];
250
- }
251
- });
252
- return !isEmptyObject(mSettings);
253
- }
254
-
255
- };
256
-
257
- // when the customizing is disabled all the functions will be noop
258
- if (sap.ui.getCore().getConfiguration().getDisableCustomizing()) {
259
- Log.info("CustomizingConfiguration: disabling Customizing now");
260
- for (var sName in CustomizingConfiguration) {
261
- if (typeof CustomizingConfiguration[sName] === "function") {
262
- CustomizingConfiguration[sName] = function() {};
263
- }
264
- }
265
- }
266
-
267
-
268
-
10
+ Log.error(
11
+ "Since UI5 version 1.95, the private module 'sap/ui/core/CustomizingConfiguration' is functionally inactive. " +
12
+ "Please be aware that this module has always been a private API and any monkey patching on this module will have no further effect. " +
13
+ "You must remove the dependency to this file as this module will be removed in one of the following versions of UI5."
14
+ );
15
+
16
+ /**
17
+ * For now this module only exists for compatibility reasons.
18
+ *
19
+ * Since UI5 version 1.92 the majority of the CustomizingConfiguration
20
+ * has been replaced with direct look-ups into the respective Components' manifests.
21
+ * The last usages for "sap.ui.viewExtensions" have been removed with 1.95.
22
+ *
23
+ * Any existing monkey patches of the internal functions have no further effect.
24
+ *
25
+ * While this module has always been private, some applications have modeled a dependency nonetheless.
26
+ * For now, we have decided not to forcefully break these dependencies, but to keep this
27
+ * as an empty module with the above error logging.
28
+ *
29
+ * This empty module will be removed in future versions.
30
+ */
31
+ var CustomizingConfiguration = {
32
+ log: function() {},
33
+ activateForComponent: function() {},
34
+ deactivateForComponent: function() {},
35
+ activateForComponentInstance: function() {},
36
+ deactivateForComponentInstance: function() {},
37
+ getViewReplacement: function() {},
38
+ getViewExtension: function() {},
39
+ getControllerExtension: function() {},
40
+ getControllerReplacement: function() {},
41
+ getCustomProperties: function() {},
42
+ hasCustomProperties: function() {}
43
+ };
269
44
 
270
45
  return CustomizingConfiguration;
271
46
 
@@ -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.93.3
43
+ * @version 1.96.2
44
44
  * @since 1.7.0
45
45
  * @public
46
46
  * @alias sap.ui.core.DeclarativeSupport
@@ -187,7 +187,8 @@ sap.ui.define([
187
187
 
188
188
  var sType = $element.attr("data-sap-ui-type");
189
189
  if (sType) {
190
- var fnClass = sap.ui.requireSync(sType.replace(/\./g, "/")); // make sure fnClass.getMatadata() is available
190
+ // make sure fnClass.getMatadata() is available
191
+ var fnClass = sap.ui.requireSync(sType.replace(/\./g, "/")); // legacy-relevant
191
192
  fnClass = fnClass || ObjectPath.get(sType);
192
193
  assert(typeof fnClass !== "undefined", "Class not found: " + sType);
193
194
 
@@ -126,7 +126,7 @@ sap.ui.define([
126
126
  *
127
127
  * @extends sap.ui.base.ManagedObject
128
128
  * @author SAP SE
129
- * @version 1.93.3
129
+ * @version 1.96.2
130
130
  * @public
131
131
  * @alias sap.ui.core.Element
132
132
  * @ui5-metamodel This control/element also will be described in the UI5 (legacy) designtime metamodel
@@ -23,7 +23,7 @@ sap.ui.define([
23
23
  *
24
24
  * @class
25
25
  * @author SAP SE
26
- * @version 1.93.3
26
+ * @version 1.96.2
27
27
  * @since 0.8.6
28
28
  * @alias sap.ui.core.ElementMetadata
29
29
  * @extends sap.ui.base.ManagedObjectMetadata
@@ -99,8 +99,10 @@ sap.ui.define([
99
99
  name: sRendererName
100
100
  };
101
101
  });
102
+
103
+ // Relevant for all controls that don't maintain the renderer module in their dependencies
102
104
  this._oRenderer =
103
- sap.ui.requireSync(sRendererName.replace(/\./g, "/"))
105
+ sap.ui.requireSync(sRendererName.replace(/\./g, "/")) // legacy-relevant
104
106
  || ObjectPath.get(sRendererName);
105
107
 
106
108
  return this._oRenderer;
@@ -4,102 +4,78 @@
4
4
  * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
5
  */
6
6
 
7
- // Provides helper sap.ui.core.EnabledPropagator
8
- sap.ui.define(['./Control'],
9
- function(Control) {
7
+ // Provides mixin sap.ui.core.EnabledPropagator
8
+ sap.ui.define([], function() {
10
9
  "use strict";
11
10
 
12
-
13
11
  /**
14
- * <b>This constructor should be applied to the prototype of a control.</b>
12
+ * Mixin for enhancement of a control prototype with propagation of the <code>enabled</code> property.
13
+ *
14
+ * Controls that apply this mixin calculate their effective <code>enabled</code> state on read access
15
+ * as the logical OR of their own <code>enabled</code> property and the <code>enabled</code> state
16
+ * of the nearest ancestor control which has either an <code>enabled</code> property or a
17
+ * <code>getEnabled</code> method.
18
+ *
19
+ * Applying this mixin adds the <code>enabled</code> property, if it not already exists, to the control
20
+ * metadata.
21
+ *
22
+ * Also adds the <code>useEnabledPropagator(boolean)</code> helper method to the prototype of the given control.
23
+ * <code>myControlInstance.useEnabledPropagator(false)</code> can be used to prevent a single instance from using
24
+ * <code>EnabledPropagator</code>. In this case, the effective <code>enabled</code> state does not take any
25
+ * ancestors <code>enabled</code> state into account, only the control's own <code>enabled</code> property.
15
26
  *
16
- * Example:
17
- * <code>
18
- * sap.ui.core.EnabledPropagator.call(<i>Some-Control</i>.prototype, <i>Default-value, ...</i>);
19
- * </code>
20
- * e.g.
21
- * <code>
22
- * sap.ui.core.EnabledPropagator.call(sap.ui.commons.Button.prototype);
23
- * </code>
27
+ * @example <caption>Usage Example:</caption>
28
+ * sap.ui.define(["sap/ui/core/Control", "sap/ui/core/EnabledPropagator"], function(Control, EnabledPropagator) {
29
+ * "use strict";
30
+ * var MyControl = Control.extend("my.MyControl", {
31
+ * metadata : {
32
+ * //...
33
+ * }
34
+ * //...
35
+ * });
24
36
  *
25
- * @author Daniel Brinkmann
26
- * @version 1.93.3
27
- * @class Helper Class for enhancement of a Control with propagation of enabled property.
28
- * @param {boolean} [bDefault=true] the value that should be used as default value for the enhancement of the control.
29
- * @param {boolean} [bLegacy=false] whether the introduced property should use the old name 'Enabled'
37
+ * EnabledPropagator.apply(MyControl.prototype);
38
+ *
39
+ * return MyControl;
40
+ * });
41
+ *
42
+ * @param {boolean} [bDefault=true] Value that should be used as default value for the enhancement of the control.
43
+ * @param {boolean} [bLegacy=false] Whether the introduced property should use the old name <code>Enabled</code>.
44
+ * @version 1.96.2
30
45
  * @public
46
+ * @class
31
47
  * @alias sap.ui.core.EnabledPropagator
32
48
  */
33
49
  var EnabledPropagator = function(bDefault, bLegacy) {
34
50
  // Ensure only Controls are enhanced
35
- if (!(this instanceof Control)) {
36
- throw new Error("EnabledPropagator only supports subclasses of Control"); // TODO clarify why. Daniel has added this check, but it is not obvious why?
37
- }
38
-
39
- // default for the default
40
- if ( bDefault === undefined ) {
41
- bDefault = true;
51
+ if (!this.isA || !this.isA("sap.ui.core.Control")) {
52
+ throw new Error("EnabledPropagator only supports subclasses of Control");
42
53
  }
43
54
 
44
- /**
45
- * Finds the nearest parent that has the getEnabled() method implemented
46
- *
47
- * @param {sap.ui.core.Control} oControl the control itself
48
- * @return {sap.ui.core.Control} The nearest parent control that has getEnabled() method implemented
49
- * @private
50
- */
51
- function findParentWithEnabled(oControl) {
52
- var oParent = oControl.getParent();
53
- while (oParent && !oParent.getEnabled && oParent.getParent) {
54
- oParent = oParent.getParent();
55
- }
56
- return oParent;
57
- }
58
-
59
- /**
60
- * Moves the focus to the nearest parent that is focusable when the control that is going to be disabled
61
- * (bEnabled === false) currently has the focus. This is done to prevent the focus from being set to the body
62
- * tag
63
- *
64
- * @param {sap.ui.core.Control} oControl the control that is going to be enabled/disalbed
65
- * @param {boolean} bEnabled whether the control is going to be enabled
66
- * @private
67
- */
68
- function checkAndMoveFocus(oControl, bEnabled) {
69
- var oDomRef = oControl.getDomRef(),
70
- oFocusableParent;
71
-
72
- if (!bEnabled && oDomRef && oDomRef.contains(document.activeElement)) {
73
- oFocusableParent = oControl.$().parent().closest(":focusable")[0];
74
-
75
- if (oFocusableParent) {
76
- oFocusableParent.focus({
77
- preventScroll: true
78
- });
79
- }
80
- }
81
- }
55
+ // Marker for the EnabledPropagator
56
+ this._bUseEnabledPropagator = true;
82
57
 
83
58
  // Ensure not to overwrite existing implementations.
84
- if (this.getEnabled === undefined) {
59
+ var fnOrigGet = this.getEnabled;
60
+ if (fnOrigGet === undefined) {
85
61
  // set some default
86
62
  this.getEnabled = function() {
87
- var oParent = findParentWithEnabled(this);
88
- return (oParent && oParent.getEnabled && !oParent.getEnabled()) ? false : this.getProperty("enabled");
63
+ return (this._bUseEnabledPropagator && hasDisabledAncestor(this)) ? false : this.getProperty("enabled");
89
64
  };
90
65
 
66
+ // Default for the bDefault
67
+ bDefault = (bDefault === undefined) ? true : Boolean(bDefault);
68
+
91
69
  if ( bLegacy ) {
92
70
  // add Enabled with old spelling for compatibility reasons. Shares the getter and setter with new spelling.
93
- this.getMetadata().addProperty("Enabled", {type : "boolean", group : "Behavior", defaultValue : !!bDefault});
71
+ this.getMetadata().addProperty("Enabled", {type : "boolean", group : "Behavior", defaultValue : bDefault});
94
72
  }
95
- this.getMetadata().addProperty("enabled", {type : "boolean", group : "Behavior", defaultValue : !!bDefault});
96
- this.getMetadata().addPublicMethods('getEnabled');
73
+ this.getMetadata().addProperty("enabled", {type : "boolean", group : "Behavior", defaultValue : bDefault});
74
+ this.getMetadata().addPublicMethods("getEnabled");
97
75
 
98
76
  } else {
99
- var fnOrigGet = this.getEnabled;
100
77
  this.getEnabled = function() {
101
- var oParent = findParentWithEnabled(this);
102
- return (oParent && oParent.getEnabled && !oParent.getEnabled()) ? false : fnOrigGet.apply(this);
78
+ return (this._bUseEnabledPropagator && hasDisabledAncestor(this)) ? false : fnOrigGet.apply(this, arguments);
103
79
  };
104
80
  }
105
81
 
@@ -109,7 +85,7 @@ sap.ui.define(['./Control'],
109
85
  return this.setProperty("enabled", bEnabled);
110
86
  };
111
87
 
112
- this.getMetadata().addPublicMethods('setEnabled');
88
+ this.getMetadata().addPublicMethods("setEnabled");
113
89
  } else {
114
90
  var fnOrigSet = this.setEnabled;
115
91
 
@@ -118,8 +94,50 @@ sap.ui.define(['./Control'],
118
94
  return fnOrigSet.apply(this, arguments);
119
95
  };
120
96
  }
97
+
98
+ // enhance with the helper method to exclude a single instance from being use of EnabledPropagator
99
+ this.useEnabledPropagator = function(bUseEnabledPropagator) {
100
+ this._bUseEnabledPropagator = bUseEnabledPropagator;
101
+ };
102
+
103
+ this.getMetadata().addPublicMethods("useEnabledPropagator");
121
104
  };
122
105
 
106
+ /**
107
+ * Determines whether an ancestor of the provided control implements getEnabled method and that returns false
108
+ *
109
+ * @param {sap.ui.core.Control} oControl A control instance
110
+ * @returns {boolean} Whether any control implements getEnabled method and that returns false
111
+ * @private
112
+ */
113
+ function hasDisabledAncestor(oControl) {
114
+ for (var oParent = oControl.getParent(); oParent && !oParent.getEnabled && oParent.getParent; oParent = oParent.getParent()) {/* empty */}
115
+ return oParent && oParent.getEnabled && !oParent.getEnabled();
116
+ }
117
+
118
+ /**
119
+ * Moves the focus to the nearest ancestor that is focusable when the control that is going to be disabled
120
+ * (bEnabled === false) currently has the focus. This is done to prevent the focus from being set to the body
121
+ * tag
122
+ *
123
+ * @param {sap.ui.core.Control} oControl the control that is going to be enabled/disalbed
124
+ * @param {boolean} bEnabled whether the control is going to be enabled
125
+ * @private
126
+ */
127
+ function checkAndMoveFocus(oControl, bEnabled) {
128
+ var oDomRef = oControl.getDomRef();
129
+
130
+ if (!bEnabled && oDomRef && oDomRef.contains(document.activeElement)) {
131
+ var oFocusableAncestor = oControl.$().parent().closest(":focusable")[0];
132
+
133
+ if (oFocusableAncestor) {
134
+ oFocusableAncestor.focus({
135
+ preventScroll: true
136
+ });
137
+ }
138
+ }
139
+ }
140
+
123
141
  return EnabledPropagator;
124
142
 
125
143
  }, /* bExport= */ true);
@@ -30,7 +30,7 @@ sap.ui.define([
30
30
  *
31
31
  * @extends sap.ui.base.Object
32
32
  * @author SAP SE
33
- * @version 1.93.3
33
+ * @version 1.96.2
34
34
  * @public
35
35
  * @since 1.8.0
36
36
  * @alias sap.ui.core.EventBus
@@ -70,7 +70,7 @@ sap.ui.define(["sap/base/Log", "sap/base/util/ObjectPath", "sap/ui/core/mvc/View
70
70
  * @private
71
71
  */
72
72
  ExtensionPoint._factory = function(oContainer, sExtName, fnCreateDefaultContent, oTargetControl, sAggregationName, bAsync) {
73
- var oExtensionConfig, oView, vResult, sViewOrFragmentName, oOwnerComponent;
73
+ var oExtensionConfig, oView, vResult, sViewOrFragmentName;
74
74
 
75
75
  // do we have a view to check or do we need to check for configuration for a fragment?
76
76
  if (oContainer) {
@@ -83,18 +83,11 @@ sap.ui.define(["sap/base/Log", "sap/base/util/ObjectPath", "sap/ui/core/mvc/View
83
83
  }
84
84
 
85
85
  // if customizing is enabled we read the extension-point from the merged manifests of the owner component
86
- if (!sap.ui.getCore().getConfiguration().getDisableCustomizing()) {
87
- oOwnerComponent = Component.getOwnerComponentFor(oContainer);
88
- if (oOwnerComponent) {
89
- if (oOwnerComponent.getExtensionComponent) {
90
- oOwnerComponent = oOwnerComponent.getExtensionComponent();
91
- if (!oOwnerComponent) {
92
- throw new Error("getExtensionComponent() must return an instance.");
93
- }
94
- }
95
- oExtensionConfig = oOwnerComponent._getManifestEntry("/sap.ui5/extends/extensions/sap.ui.viewExtensions/" + sViewOrFragmentName + "/" + sExtName, true);
96
- }
97
- }
86
+ oExtensionConfig = Component.getCustomizing(oContainer, {
87
+ type: "sap.ui.viewExtensions",
88
+ name: sViewOrFragmentName,
89
+ extensionName: sExtName
90
+ });
98
91
  }
99
92
 
100
93
  // Extension Point - is something configured?
@@ -137,7 +130,7 @@ sap.ui.define(["sap/base/Log", "sap/base/util/ObjectPath", "sap/ui/core/mvc/View
137
130
  });
138
131
  }
139
132
  } else {
140
- Fragment = Fragment || sap.ui.requireSync("sap/ui/core/Fragment");
133
+ Fragment = Fragment || sap.ui.requireSync("sap/ui/core/Fragment"); // legacy-relevant: Sync path
141
134
  var oFragment = new Fragment(oFactoryConfig);
142
135
  // make sure vResult is at least an empty array, if a Fragment is configured, the default content is not added
143
136
  vResult = (Array.isArray(oFragment) ? oFragment : [oFragment]);