@openui5/sap.ui.core 1.133.1 → 1.135.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (315) hide show
  1. package/.dtsgenrc +32 -0
  2. package/.reuse/dep5 +0 -7
  3. package/THIRDPARTY.txt +2 -23
  4. package/package.json +1 -1
  5. package/src/jquery.sap.global.js +1 -1
  6. package/src/jquery.sap.properties.js +1 -1
  7. package/src/jquery.sap.resources.js +1 -1
  8. package/src/jquery.sap.script.js +1 -1
  9. package/src/jquery.sap.storage.js +3 -3
  10. package/src/sap/base/Event.js +1 -1
  11. package/src/sap/base/Eventing.js +1 -1
  12. package/src/sap/base/config.js +1 -1
  13. package/src/sap/base/i18n/LanguageFallback.js +344 -0
  14. package/src/sap/base/i18n/LanguageTag.js +1 -1
  15. package/src/sap/base/i18n/Localization.js +9 -4
  16. package/src/sap/base/i18n/ResourceBundle.js +40 -313
  17. package/src/sap/base/i18n/date/TimezoneUtils.js +1 -1
  18. package/src/sap/base/util/LoaderExtensions.js +2 -8
  19. package/src/sap/base/util/mixedFetch.js +0 -1
  20. package/src/sap/base/util/restricted/_CancelablePromise.js +1 -1
  21. package/src/sap/base/util/restricted/_castArray.js +1 -1
  22. package/src/sap/base/util/restricted/_compact.js +1 -1
  23. package/src/sap/base/util/restricted/_curry.js +1 -1
  24. package/src/sap/base/util/restricted/_debounce.js +1 -1
  25. package/src/sap/base/util/restricted/_difference.js +1 -1
  26. package/src/sap/base/util/restricted/_differenceBy.js +1 -1
  27. package/src/sap/base/util/restricted/_differenceWith.js +1 -1
  28. package/src/sap/base/util/restricted/_flatMap.js +1 -1
  29. package/src/sap/base/util/restricted/_flatMapDeep.js +1 -1
  30. package/src/sap/base/util/restricted/_flatMapDepth.js +1 -1
  31. package/src/sap/base/util/restricted/_flatten.js +1 -1
  32. package/src/sap/base/util/restricted/_flattenDeep.js +1 -1
  33. package/src/sap/base/util/restricted/_flattenDepth.js +1 -1
  34. package/src/sap/base/util/restricted/_intersection.js +1 -1
  35. package/src/sap/base/util/restricted/_intersectionBy.js +1 -1
  36. package/src/sap/base/util/restricted/_intersectionWith.js +1 -1
  37. package/src/sap/base/util/restricted/_isEqual.js +1 -1
  38. package/src/sap/base/util/restricted/_isEqualWith.js +1 -1
  39. package/src/sap/base/util/restricted/_isNil.js +1 -1
  40. package/src/sap/base/util/restricted/_max.js +1 -1
  41. package/src/sap/base/util/restricted/_merge.js +1 -1
  42. package/src/sap/base/util/restricted/_mergeWith.js +1 -1
  43. package/src/sap/base/util/restricted/_min.js +1 -1
  44. package/src/sap/base/util/restricted/_omit.js +1 -1
  45. package/src/sap/base/util/restricted/_pick.js +1 -1
  46. package/src/sap/base/util/restricted/_pickBy.js +1 -1
  47. package/src/sap/base/util/restricted/_throttle.js +1 -1
  48. package/src/sap/base/util/restricted/_toArray.js +1 -1
  49. package/src/sap/base/util/restricted/_union.js +1 -1
  50. package/src/sap/base/util/restricted/_unionBy.js +1 -1
  51. package/src/sap/base/util/restricted/_unionWith.js +1 -1
  52. package/src/sap/base/util/restricted/_uniq.js +1 -1
  53. package/src/sap/base/util/restricted/_uniqBy.js +1 -1
  54. package/src/sap/base/util/restricted/_uniqWith.js +1 -1
  55. package/src/sap/base/util/restricted/_without.js +1 -1
  56. package/src/sap/base/util/restricted/_xor.js +1 -1
  57. package/src/sap/base/util/restricted/_xorBy.js +1 -1
  58. package/src/sap/base/util/restricted/_xorWith.js +1 -1
  59. package/src/sap/base/util/restricted/_zipObject.js +1 -1
  60. package/src/sap/base/util/restricted/_zipObjectDeep.js +1 -1
  61. package/src/sap/base/util/syncFetch.js +0 -1
  62. package/src/sap/ui/Device.js +3 -3
  63. package/src/sap/ui/Global.js +3 -3
  64. package/src/sap/ui/VersionInfo.js +24 -9
  65. package/src/sap/ui/base/Event.js +1 -1
  66. package/src/sap/ui/base/EventProvider.js +1 -1
  67. package/src/sap/ui/base/Interface.js +1 -1
  68. package/src/sap/ui/base/ManagedObject.js +121 -101
  69. package/src/sap/ui/base/ManagedObjectMetadata.js +1 -1
  70. package/src/sap/ui/base/Metadata.js +1 -1
  71. package/src/sap/ui/base/Object.js +1 -1
  72. package/src/sap/ui/base/ObjectPool.js +1 -1
  73. package/src/sap/ui/base/SyncPromise.js +17 -1
  74. package/src/sap/ui/core/.library +1 -6
  75. package/src/sap/ui/core/AppCacheBuster.js +4 -9
  76. package/src/sap/ui/core/BusyIndicator.js +1 -1
  77. package/src/sap/ui/core/Component.js +52 -6
  78. package/src/sap/ui/core/ComponentContainer.js +4 -2
  79. package/src/sap/ui/core/ComponentMetadata.js +1 -1
  80. package/src/sap/ui/core/ComponentSupport.js +1 -1
  81. package/src/sap/ui/core/Configuration.js +1 -1
  82. package/src/sap/ui/core/Control.js +1 -1
  83. package/src/sap/ui/core/Core.js +11 -3
  84. package/src/sap/ui/core/CustomData.js +2 -2
  85. package/src/sap/ui/core/DeclarativeSupport.js +1 -1
  86. package/src/sap/ui/core/Element.js +14 -35
  87. package/src/sap/ui/core/ElementHooks.js +35 -0
  88. package/src/sap/ui/core/ElementMetadata.js +1 -1
  89. package/src/sap/ui/core/EnabledPropagator.js +1 -1
  90. package/src/sap/ui/core/EventBus.js +1 -1
  91. package/src/sap/ui/core/Fragment.js +34 -11
  92. package/src/sap/ui/core/HTML.js +1 -1
  93. package/src/sap/ui/core/History.js +1 -1
  94. package/src/sap/ui/core/Icon.js +1 -1
  95. package/src/sap/ui/core/IconPool.js +20 -4
  96. package/src/sap/ui/core/IndicationColorSupport.js +1 -1
  97. package/src/sap/ui/core/IntervalTrigger.js +1 -1
  98. package/src/sap/ui/core/InvisibleMessage.js +1 -1
  99. package/src/sap/ui/core/InvisibleRenderer.js +1 -1
  100. package/src/sap/ui/core/InvisibleText.js +1 -1
  101. package/src/sap/ui/core/Item.js +1 -1
  102. package/src/sap/ui/core/LabelEnablement.js +1 -1
  103. package/src/sap/ui/core/LayoutData.js +1 -1
  104. package/src/sap/ui/core/Lib.js +12 -32
  105. package/src/sap/ui/core/ListItem.js +1 -1
  106. package/src/sap/ui/core/LocalBusyIndicator.js +1 -1
  107. package/src/sap/ui/core/Locale.js +1 -1
  108. package/src/sap/ui/core/LocaleData.js +67 -93
  109. package/src/sap/ui/core/Manifest.js +5 -3
  110. package/src/sap/ui/core/Message.js +1 -1
  111. package/src/sap/ui/core/RenderManager.js +1 -1
  112. package/src/sap/ui/core/Renderer.js +1 -1
  113. package/src/sap/ui/core/ResizeHandler.js +1 -1
  114. package/src/sap/ui/core/ScrollBar.js +1 -1
  115. package/src/sap/ui/core/SeparatorItem.js +1 -1
  116. package/src/sap/ui/core/ShortcutHintsMixin.js +9 -0
  117. package/src/sap/ui/core/Theming.js +98 -1
  118. package/src/sap/ui/core/Title.js +1 -1
  119. package/src/sap/ui/core/TooltipBase.js +1 -1
  120. package/src/sap/ui/core/UIArea.js +1 -1
  121. package/src/sap/ui/core/UIComponent.js +6 -3
  122. package/src/sap/ui/core/UIComponentMetadata.js +1 -1
  123. package/src/sap/ui/core/ValueStateSupport.js +1 -1
  124. package/src/sap/ui/core/VariantLayoutData.js +1 -1
  125. package/src/sap/ui/core/XMLComposite.js +1 -1
  126. package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
  127. package/src/sap/ui/core/XMLTemplateProcessor.js +5 -1
  128. package/src/sap/ui/core/_CommandPool.js +80 -0
  129. package/src/sap/ui/core/boot/KeyboardInteractionEndpoint.js +124 -0
  130. package/src/sap/ui/core/date/UI5Date.js +1 -1
  131. package/src/sap/ui/core/delegate/ItemNavigation.js +1 -1
  132. package/src/sap/ui/core/delegate/ScrollEnablement.js +1 -1
  133. package/src/sap/ui/core/dnd/DragAndDrop.js +14 -7
  134. package/src/sap/ui/core/dnd/DragDropBase.js +1 -1
  135. package/src/sap/ui/core/dnd/DragDropInfo.js +1 -1
  136. package/src/sap/ui/core/dnd/DragInfo.js +1 -1
  137. package/src/sap/ui/core/dnd/DropInfo.js +1 -1
  138. package/src/sap/ui/core/fieldhelp/FieldHelp.js +260 -116
  139. package/src/sap/ui/core/fieldhelp/FieldHelpCustomData.js +0 -4
  140. package/src/sap/ui/core/fieldhelp/FieldHelpUtil.js +2 -0
  141. package/src/sap/ui/core/format/FormatUtils.js +1 -1
  142. package/src/sap/ui/core/format/TimezoneUtil.js +1 -1
  143. package/src/sap/ui/core/getCompatibilityVersion.js +1 -1
  144. package/src/sap/ui/core/hyphenation/Hyphenation.js +1 -1
  145. package/src/sap/ui/core/i18n/interaction.xml +31 -0
  146. package/src/sap/ui/core/interaction/KeyboardInteractionDisplay.js +332 -0
  147. package/src/sap/ui/core/library.js +35 -3
  148. package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
  149. package/src/sap/ui/core/message/Message.js +1 -1
  150. package/src/sap/ui/core/message/MessageManager.js +1 -1
  151. package/src/sap/ui/core/message/MessageParser.js +1 -1
  152. package/src/sap/ui/core/message/MessageProcessor.js +1 -1
  153. package/src/sap/ui/core/messagebundle.properties +14 -0
  154. package/src/sap/ui/core/messagebundle_ko.properties +1 -1
  155. package/src/sap/ui/core/messagebundle_ro.properties +2 -2
  156. package/src/sap/ui/core/messagebundle_th.properties +1 -1
  157. package/src/sap/ui/core/messagebundle_vi.properties +2 -2
  158. package/src/sap/ui/core/mvc/Controller.js +25 -11
  159. package/src/sap/ui/core/mvc/HTMLView.js +1 -1
  160. package/src/sap/ui/core/mvc/JSONView.js +1 -1
  161. package/src/sap/ui/core/mvc/JSView.js +1 -1
  162. package/src/sap/ui/core/mvc/TemplateView.js +1 -1
  163. package/src/sap/ui/core/mvc/View.js +43 -18
  164. package/src/sap/ui/core/mvc/XMLView.js +20 -1
  165. package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
  166. package/src/sap/ui/core/plugin/LessSupport.js +1 -1
  167. package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -1
  168. package/src/sap/ui/core/postmessage/Bus.js +1 -1
  169. package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
  170. package/src/sap/ui/core/search/OpenSearchProvider.js +1 -1
  171. package/src/sap/ui/core/search/SearchProvider.js +1 -1
  172. package/src/sap/ui/core/service/Service.js +1 -1
  173. package/src/sap/ui/core/service/ServiceFactory.js +1 -1
  174. package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
  175. package/src/sap/ui/core/support/Plugin.js +1 -1
  176. package/src/sap/ui/core/support/Support.js +1 -1
  177. package/src/sap/ui/core/support/plugins/ControlTree.js +1 -1
  178. package/src/sap/ui/core/support/plugins/Interaction.js +1 -1
  179. package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
  180. package/src/sap/ui/core/support/plugins/Performance.js +1 -1
  181. package/src/sap/ui/core/support/plugins/Selector.js +1 -1
  182. package/src/sap/ui/core/support/plugins/TechInfo.js +1 -1
  183. package/src/sap/ui/core/support/plugins/Trace.js +1 -1
  184. package/src/sap/ui/core/support/plugins/ViewInfo.js +1 -1
  185. package/src/sap/ui/core/support/techinfo/moduleTreeHelper.js +12 -0
  186. package/src/sap/ui/core/support/usage/EventBroadcaster.js +5 -5
  187. package/src/sap/ui/core/themes/base/base.less +398 -23
  188. package/src/sap/ui/core/themes/base/global.less +7 -0
  189. package/src/sap/ui/core/themes/base/icons/favicon.ico +0 -0
  190. package/src/sap/ui/core/themes/base/skeleton.less +11 -4
  191. package/src/sap/ui/core/themes/sap_hcb/.theming +2 -1
  192. package/src/sap/ui/core/theming/Parameters.js +1 -6
  193. package/src/sap/ui/core/theming/ThemeHelper.js +13 -0
  194. package/src/sap/ui/core/theming/ThemeManager.js +1 -1
  195. package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
  196. package/src/sap/ui/core/tmpl/DOMElement.js +1 -1
  197. package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
  198. package/src/sap/ui/core/tmpl/Template.js +1 -1
  199. package/src/sap/ui/core/tmpl/TemplateControl.js +1 -1
  200. package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
  201. package/src/sap/ui/core/util/Export.js +1 -1
  202. package/src/sap/ui/core/util/ExportCell.js +1 -1
  203. package/src/sap/ui/core/util/ExportColumn.js +1 -1
  204. package/src/sap/ui/core/util/ExportRow.js +1 -1
  205. package/src/sap/ui/core/util/ExportType.js +1 -1
  206. package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
  207. package/src/sap/ui/core/util/File.js +1 -1
  208. package/src/sap/ui/core/util/LibraryInfo.js +1 -1
  209. package/src/sap/ui/core/util/MockServer.js +1 -1
  210. package/src/sap/ui/core/util/PasteHelper.js +1 -1
  211. package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
  212. package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
  213. package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
  214. package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
  215. package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
  216. package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
  217. package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
  218. package/src/sap/ui/core/webc/WebComponent.js +1 -1
  219. package/src/sap/ui/core/webc/WebComponentMetadata.js +1 -1
  220. package/src/sap/ui/core/ws/ReadyState.js +1 -1
  221. package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
  222. package/src/sap/ui/core/ws/WebSocket.js +1 -1
  223. package/src/sap/ui/debug/ControlTree.js +1 -1
  224. package/src/sap/ui/debug/DebugEnv.js +1 -1
  225. package/src/sap/ui/debug/PropertyList.js +1 -1
  226. package/src/sap/ui/model/ClientModel.js +1 -1
  227. package/src/sap/ui/model/ClientTreeBinding.js +5 -1
  228. package/src/sap/ui/model/CompositeDataState.js +1 -1
  229. package/src/sap/ui/model/CompositeType.js +1 -1
  230. package/src/sap/ui/model/DataState.js +1 -1
  231. package/src/sap/ui/model/MetaModel.js +1 -1
  232. package/src/sap/ui/model/Model.js +1 -1
  233. package/src/sap/ui/model/SelectionModel.js +1 -1
  234. package/src/sap/ui/model/SimpleType.js +1 -1
  235. package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
  236. package/src/sap/ui/model/Type.js +1 -1
  237. package/src/sap/ui/model/analytics/AnalyticalBinding.js +1 -1
  238. package/src/sap/ui/model/analytics/AnalyticalTreeBindingAdapter.js +51 -13
  239. package/src/sap/ui/model/json/JSONModel.js +1 -1
  240. package/src/sap/ui/model/message/MessageModel.js +1 -1
  241. package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
  242. package/src/sap/ui/model/odata/ODataMessageParser.js +1 -1
  243. package/src/sap/ui/model/odata/ODataMetaModel.js +46 -14
  244. package/src/sap/ui/model/odata/ODataMetadata.js +6 -3
  245. package/src/sap/ui/model/odata/ODataModel.js +2 -2
  246. package/src/sap/ui/model/odata/type/Boolean.js +1 -1
  247. package/src/sap/ui/model/odata/type/Byte.js +1 -1
  248. package/src/sap/ui/model/odata/type/Currency.js +1 -1
  249. package/src/sap/ui/model/odata/type/Date.js +1 -1
  250. package/src/sap/ui/model/odata/type/DateTime.js +1 -1
  251. package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
  252. package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
  253. package/src/sap/ui/model/odata/type/DateTimeWithTimezone.js +1 -1
  254. package/src/sap/ui/model/odata/type/Decimal.js +1 -1
  255. package/src/sap/ui/model/odata/type/Double.js +1 -1
  256. package/src/sap/ui/model/odata/type/Guid.js +1 -1
  257. package/src/sap/ui/model/odata/type/Int.js +1 -1
  258. package/src/sap/ui/model/odata/type/Int16.js +1 -1
  259. package/src/sap/ui/model/odata/type/Int32.js +1 -1
  260. package/src/sap/ui/model/odata/type/Int64.js +1 -1
  261. package/src/sap/ui/model/odata/type/ODataType.js +1 -1
  262. package/src/sap/ui/model/odata/type/Raw.js +1 -1
  263. package/src/sap/ui/model/odata/type/SByte.js +1 -1
  264. package/src/sap/ui/model/odata/type/Single.js +1 -1
  265. package/src/sap/ui/model/odata/type/Stream.js +1 -1
  266. package/src/sap/ui/model/odata/type/String.js +1 -1
  267. package/src/sap/ui/model/odata/type/Time.js +1 -1
  268. package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
  269. package/src/sap/ui/model/odata/type/Unit.js +1 -1
  270. package/src/sap/ui/model/odata/v2/Context.js +1 -1
  271. package/src/sap/ui/model/odata/v2/ODataAnnotations.js +4 -3
  272. package/src/sap/ui/model/odata/v2/ODataListBinding.js +2 -2
  273. package/src/sap/ui/model/odata/v2/ODataModel.js +59 -36
  274. package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +1 -1
  275. package/src/sap/ui/model/odata/v4/Context.js +92 -40
  276. package/src/sap/ui/model/odata/v4/ODataBinding.js +22 -15
  277. package/src/sap/ui/model/odata/v4/ODataContextBinding.js +6 -7
  278. package/src/sap/ui/model/odata/v4/ODataListBinding.js +197 -58
  279. package/src/sap/ui/model/odata/v4/ODataMetaModel.js +65 -6
  280. package/src/sap/ui/model/odata/v4/ODataModel.js +65 -32
  281. package/src/sap/ui/model/odata/v4/ODataParentBinding.js +9 -5
  282. package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +5 -5
  283. package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +49 -7
  284. package/src/sap/ui/model/odata/v4/lib/_AggregationHelper.js +9 -9
  285. package/src/sap/ui/model/odata/v4/lib/_Batch.js +5 -1
  286. package/src/sap/ui/model/odata/v4/lib/_Cache.js +107 -15
  287. package/src/sap/ui/model/odata/v4/lib/_Helper.js +33 -17
  288. package/src/sap/ui/model/odata/v4/lib/_Requestor.js +18 -1
  289. package/src/sap/ui/model/resource/ResourceModel.js +1 -1
  290. package/src/sap/ui/model/type/Boolean.js +1 -1
  291. package/src/sap/ui/model/type/Currency.js +1 -1
  292. package/src/sap/ui/model/type/Date.js +1 -1
  293. package/src/sap/ui/model/type/DateInterval.js +1 -1
  294. package/src/sap/ui/model/type/DateTime.js +1 -1
  295. package/src/sap/ui/model/type/DateTimeInterval.js +1 -1
  296. package/src/sap/ui/model/type/FileSize.js +1 -1
  297. package/src/sap/ui/model/type/Float.js +1 -1
  298. package/src/sap/ui/model/type/Integer.js +1 -1
  299. package/src/sap/ui/model/type/String.js +1 -1
  300. package/src/sap/ui/model/type/Time.js +1 -1
  301. package/src/sap/ui/model/type/TimeInterval.js +1 -1
  302. package/src/sap/ui/model/type/Unit.js +1 -1
  303. package/src/sap/ui/model/xml/XMLModel.js +1 -1
  304. package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
  305. package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +1 -1
  306. package/src/sap/ui/test/BranchTracking.js +1 -1
  307. package/src/sap/ui/test/TestUtils.js +82 -14
  308. package/src/sap/ui/test/actions/EnterText.js +2 -20
  309. package/src/sap/ui/test/generic/TestBase.js +1 -1
  310. package/src/sap/ui/test/starter/_setupAndStart.js +11 -2
  311. package/src/sap/ui/test/starter/_utils.js +0 -1
  312. package/src/sap/ui/util/Storage.js +1 -1
  313. package/src/ui5loader.js +22 -3
  314. package/test/sap/ui/qunit/TestRunner.js +4 -1
  315. package/LICENSES/LicenseRef-tzdata-PublicDomain.txt +0 -5
@@ -0,0 +1,31 @@
1
+ <interaction-documentation
2
+ xmlns="http://schemas.sap.com/sapui5/extension/sap.ui.core.InteractionDocumentation/1"
3
+ library="sap.ui.core">
4
+ <control-interactions>
5
+ <control name="sap.ui.core.Control"></control>
6
+ <interaction>
7
+ <kbd>Tab</kbd>
8
+ <description>
9
+ <p>Moves focus to the next element in the tab chain.</p>
10
+ </description>
11
+ </interaction>
12
+ <interaction>
13
+ <kbd>Shift + Tab</kbd>
14
+ <description>
15
+ <p>Moves focus to the previous element in the tab chain.</p>
16
+ </description>
17
+ </interaction>
18
+ <interaction>
19
+ <kbd>F6</kbd>
20
+ <description>
21
+ <p>Moves focus to first element of the next UI group (F6 group) in the tab chain.</p>
22
+ </description>
23
+ </interaction>
24
+ <interaction>
25
+ <kbd>Shift + F6</kbd>
26
+ <description>
27
+ <p>Moves focus to first element of the previous UI group (F6 group) in the tab chain.</p>
28
+ </description>
29
+ </interaction>
30
+ </control-interactions>
31
+ </interaction-documentation>
@@ -0,0 +1,332 @@
1
+ /*!
2
+ * OpenUI5
3
+ * (c) Copyright 2009-2025 SAP SE or an SAP affiliate company.
4
+ * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
+ */
6
+ sap.ui.define([
7
+ "sap/base/Log",
8
+ "sap/base/i18n/LanguageFallback",
9
+ "sap/base/i18n/Localization",
10
+ "sap/ui/Device",
11
+ "sap/ui/core/Element",
12
+ "sap/ui/core/LabelEnablement",
13
+ "sap/ui/core/Lib",
14
+ "sap/ui/util/XMLHelper"
15
+ ], function(Log, LanguageFallback, Localization, Device, Element, LabelEnablement, Library, XMLHelper) {
16
+ "use strict";
17
+
18
+ // Endpoints for sending messages
19
+ const POST_MESSAGE_ENDPOINT_UPDATE = "sap.ui.interaction.UpdateDisplay";
20
+
21
+ // Version number for the protocol
22
+ const VERSION_NUMBER = "1.0.0";
23
+
24
+ const oProtocol = {
25
+ _version: VERSION_NUMBER,
26
+ elements: [],
27
+ docs: {}
28
+ };
29
+
30
+ // Cache to store loaded XML documents
31
+ const oInteractionXMLCache = new Map();
32
+
33
+ /**
34
+ * Retrieves the command information for a given control.
35
+ * @param {sap.ui.core.Control} oControl The control to analyze.
36
+ * @return {Array} List of command information objects.
37
+ */
38
+ const getCommandInfosFor = (oControl) => {
39
+ const aCommandInfos = [];
40
+ const aDependents = oControl.getDependents?.() || [];
41
+
42
+ for (const oDependent of aDependents) {
43
+ if (oDependent.isA("sap.ui.core.CommandExecution") && oDependent.getVisible()) {
44
+ const oCommandInfo = oDependent._getCommandInfo();
45
+
46
+ aCommandInfos.push({
47
+ name: oDependent.getCommand(),
48
+ kbd: Device.os.macintosh ? [oCommandInfo.shortcut.replace("Ctrl", "Cmd")] : [oCommandInfo.shortcut],
49
+ description: oCommandInfo.description
50
+ });
51
+ }
52
+ }
53
+ return aCommandInfos;
54
+ };
55
+
56
+ /**
57
+ * Retrieves the label text for a given control.
58
+ * @param {sap.ui.core.Control} oControl The control to analayze.
59
+ * @return {string} The label associated with the control.
60
+ */
61
+ const getLabelFor = (oControl) => {
62
+ const sDisplayControlId = oControl.getFieldHelpDisplay();
63
+ const oLabelControl = sDisplayControlId
64
+ ? Element.getElementById(sDisplayControlId)
65
+ : oControl;
66
+
67
+ let sAccessibilityInfoLabel = null;
68
+
69
+ const oAccessibilityInfo = oControl.getAccessibilityInfo?.();
70
+ if (oAccessibilityInfo) {
71
+ sAccessibilityInfoLabel = oAccessibilityInfo.description || oAccessibilityInfo.children?.[0]?.getAccessibilityInfo?.()?.description || null;
72
+ }
73
+
74
+ if (!sAccessibilityInfoLabel) {
75
+ const ARIA_LABELLED_BY_SELECTOR = "[aria-labelledby]";
76
+ const ARIA_LABELLED_BY_ATTR = "aria-labelledby";
77
+
78
+ const oDomRef = oControl.getDomRef();
79
+
80
+ let sAriaLabelledById = oDomRef.getAttribute(ARIA_LABELLED_BY_ATTR);
81
+ if (!sAriaLabelledById) {
82
+ const oFirstAriaLabelledBy = oDomRef.querySelector(ARIA_LABELLED_BY_SELECTOR);
83
+ const activeElement = document.activeElement;
84
+
85
+ if (oFirstAriaLabelledBy?.contains(activeElement)) {
86
+ sAriaLabelledById = oFirstAriaLabelledBy.getAttribute(ARIA_LABELLED_BY_ATTR);
87
+ }
88
+ }
89
+
90
+ sAccessibilityInfoLabel = sAriaLabelledById
91
+ ? document.getElementById(sAriaLabelledById)?.textContent
92
+ : null;
93
+ }
94
+
95
+ return LabelEnablement._getLabelTexts(oLabelControl)[0] || sAccessibilityInfoLabel || oControl.getMetadata().getName();
96
+ };
97
+
98
+ /**
99
+ * Load and access interaction-documentation for library
100
+ * @param {string} sLibrary The library to load the interaction document
101
+ * @return {null|XMLDocument} The library's interaction document or 'null'.
102
+ */
103
+ const loadInteractionXMLFor = async (sLibrary) => {
104
+ if (oInteractionXMLCache.has(sLibrary)) {
105
+ return oInteractionXMLCache.get(sLibrary);
106
+ }
107
+
108
+ const sLanguage = Localization.getLanguage();
109
+ const aFallbackChain = LanguageFallback.getFallbackLocales(sLanguage);
110
+ let oInteractionXML = null;
111
+
112
+ while (aFallbackChain.length) {
113
+ const sLocale = aFallbackChain.shift();
114
+ const sFileName = sLocale ? `interaction_${sLocale}.xml` : `interaction.xml`;
115
+ const sResource = sap.ui.require.toUrl(`${sLibrary.replace(/\./g, "/")}/i18n/${sFileName}`);
116
+
117
+ try {
118
+ const oResponse = await fetch(sResource);
119
+ if (!oResponse.ok) {
120
+ const statusMessage = oResponse.statusText || `HTTP status ${oResponse.status}`;
121
+ throw new Error(`Failed to load resource: ${sResource} - ${statusMessage}`);
122
+ }
123
+ const text = await oResponse.text();
124
+ oInteractionXML = XMLHelper.parse(text);
125
+
126
+ if (oInteractionXML) {
127
+ // cache the loaded interaction document
128
+ oInteractionXMLCache.set(sLibrary, oInteractionXML);
129
+ break;
130
+ }
131
+ } catch (error) {
132
+ Log.error(`Error loading interaction XML for library ${sLibrary}:`, error);
133
+ }
134
+ }
135
+
136
+ return oInteractionXML;
137
+ };
138
+
139
+ /**
140
+ * Extracts interaction nodes from the given interaction document and retrieves "kbd" and "description" tags.
141
+ *
142
+ * @param {string} sControlName The control name.
143
+ * @param {XMLDocument} oInteractionXML The interaction document containing the interaction details.
144
+ * @return {Array} An array containing the control's interaction details, including "kbd" and "description".
145
+ */
146
+ const getInteractions = (sControlName, oInteractionXML) => {
147
+ const oInteractionDoc = oInteractionXML.documentElement;
148
+ if (!oInteractionDoc) {
149
+ return [];
150
+ }
151
+
152
+ const oControlNode = Array.from(oInteractionDoc.querySelectorAll(`control[name]`)).find((oNode) => {
153
+ return oNode.getAttribute("name") === sControlName;
154
+ });
155
+
156
+ if (!oControlNode) {
157
+ return [];
158
+ }
159
+
160
+ return Array.from(oInteractionDoc.querySelectorAll("interaction")).map((oInteractionNode) => ({
161
+ kbd: Array.from(oInteractionNode.children).filter((child) => child.tagName === "kbd").map((kbd) => kbd.textContent.trim()),
162
+ description: oInteractionNode.querySelector("description")?.innerHTML || ""
163
+ }));
164
+ };
165
+
166
+ /**
167
+ * Retrieves the interaction documentation for the given control.
168
+ * @param {sap.ui.core.Control} oControl The control to analyze.
169
+ * @return {Array} List of interaction documentation.
170
+ */
171
+ const getInteractionDocFor = async (oControl) => {
172
+ let sLibrary = null;
173
+ let oCurrent = oControl;
174
+
175
+ // Traverse up the control hierarchy to find the library name
176
+ while (oCurrent && !sLibrary) {
177
+ sLibrary = oCurrent.getMetadata().getLibraryName();
178
+ oCurrent = oCurrent.getParent();
179
+ }
180
+
181
+ if (!sLibrary) {
182
+ return [];
183
+ }
184
+
185
+ const oLibrary = Library._get(sLibrary);
186
+ if (!oLibrary?.interactionDocumentation) {
187
+ return [];
188
+ }
189
+ const oInteractionXML = await loadInteractionXMLFor(sLibrary);
190
+
191
+ if (!oInteractionXML) {
192
+ return [];
193
+ }
194
+
195
+ const sControlName = oControl.getMetadata().getName();
196
+ return getInteractions(sControlName, oInteractionXML);
197
+ };
198
+
199
+ let oCurrentPort;
200
+ let bThrottled = false;
201
+
202
+ /**
203
+ * Initializes the keyboard interaction information gathering.
204
+ * @param {Event} event The 'focusin' event triggering the initialization.
205
+ */
206
+ const init = async (event) => {
207
+ if (bThrottled) {
208
+ return;
209
+ }
210
+ bThrottled = true;
211
+
212
+ setTimeout(() => {
213
+ bThrottled = false;
214
+ }, 300);
215
+
216
+ const aControlTree = [];
217
+ const elements = [];
218
+ const docs = {};
219
+ const oTargetControl = Element.closestTo(event?.target || document.activeElement);
220
+
221
+ if (!oTargetControl) {
222
+ return;
223
+ }
224
+
225
+ // get generic key interactions from sap.ui.core
226
+ const oCoreXML = await loadInteractionXMLFor("sap.ui.core");
227
+ if (oCoreXML) {
228
+ const oResourceBundle = Library.getResourceBundleFor("sap.ui.core");
229
+ docs["sap.ui.core.Control"] = {
230
+ "interactions": getInteractions("sap.ui.core.Control", oCoreXML)
231
+ };
232
+ elements.push({
233
+ "class": "sap.ui.core.Control",
234
+ "label": oResourceBundle.getText("Generic.Keyboard.Interaction.Text"),
235
+ "interactions": [{
236
+ "$ref": `docs/sap.ui.core.Control/interactions`
237
+ }]
238
+ });
239
+ }
240
+
241
+ let oCurrent = oTargetControl;
242
+ while (oCurrent) {
243
+ aControlTree.push(oCurrent);
244
+ oCurrent = oCurrent.getParent();
245
+ }
246
+
247
+ for (let i = 0; i < aControlTree.length; i++) {
248
+ const oControl = aControlTree[i];
249
+ const aInteractions = getCommandInfosFor(oControl);
250
+ const aDocs = await getInteractionDocFor(oControl);
251
+
252
+ if (!aInteractions.length && !aDocs.length) {
253
+ continue;
254
+ }
255
+
256
+ const sClassName = oControl.getMetadata().getName();
257
+
258
+ if (aDocs.length > 0) {
259
+ docs[sClassName] = {
260
+ "interactions": aDocs
261
+ };
262
+ aInteractions.push({
263
+ "$ref": `docs/${sClassName}/interactions`
264
+ });
265
+ }
266
+
267
+ elements.push({
268
+ "id": oControl.getId(),
269
+ "class": sClassName,
270
+ "label": getLabelFor(oControl),
271
+ "interactions": aInteractions
272
+ });
273
+ }
274
+
275
+ // Update protocol with gathered elements and documentation
276
+ oProtocol.elements = elements;
277
+ oProtocol.docs = docs;
278
+
279
+ // Send protocol
280
+ oCurrentPort?.postMessage(JSON.parse(JSON.stringify({
281
+ service: POST_MESSAGE_ENDPOINT_UPDATE,
282
+ type: "request",
283
+ payload: { ...oProtocol }
284
+ })));
285
+ };
286
+
287
+ /**
288
+ * Module that handles the gathering and sending of keyboard interaction information.
289
+ * When active, it starts listening for pointer and focus events to collect the keyboard interaction data.
290
+ * The gathered data is then sent via a MessagePort to a connected entity.
291
+ *
292
+ * @private
293
+ */
294
+ return {
295
+ // Indicator if the interaction information gathering is active
296
+ _isActive: false,
297
+
298
+ /**
299
+ * Activates the keyboard interaction information gathering.
300
+ * This methods starts listening for pointer and focus events to gather the keyboard interaction information.
301
+ *
302
+ * @param {MessagePort} oPort The MessagePort used to send the keyboard interaction information.
303
+ * @private
304
+ */
305
+ async activate(oPort) {
306
+ oCurrentPort = oPort;
307
+
308
+ if (this._isActive) { return; }
309
+
310
+ this._isActive = true;
311
+ await init();
312
+ document.addEventListener("pointerdown", init);
313
+ document.addEventListener("focusin", init);
314
+ },
315
+
316
+ /**
317
+ * Deactivates the keyboard interaction information gathering
318
+ * This methods stops listening for pointer and focus events, effectively stopping the collection
319
+ * of the keyboard interaction information.
320
+ *
321
+ * @private
322
+ */
323
+ deactivate() {
324
+ if (!this._isActive) {
325
+ return;
326
+ }
327
+ this._isActive = false;
328
+ document.removeEventListener("pointerdown", init);
329
+ document.removeEventListener("focusin", init);
330
+ }
331
+ };
332
+ });
@@ -27,15 +27,18 @@ sap.ui.define([
27
27
  * @namespace
28
28
  * @alias sap.ui.core
29
29
  * @author SAP SE
30
- * @version 1.133.1
30
+ * @version 1.135.0
31
31
  * @since 0.8
32
32
  * @public
33
33
  */
34
34
  var thisLib = Library.init({
35
35
  name: "sap.ui.core",
36
- version: "1.133.1",
36
+ version: "1.135.0",
37
37
  designtime: "sap/ui/core/designtime/library.designtime",
38
38
  apiVersion: 2,
39
+ ...{
40
+ interactionDocumentation: true
41
+ },
39
42
  types: [
40
43
 
41
44
  // builtin types
@@ -56,6 +59,7 @@ sap.ui.define([
56
59
  "sap.ui.core.BusyIndicatorSize",
57
60
  "sap.ui.core.CalendarType",
58
61
  "sap.ui.core.CSSColor",
62
+ "sap.ui.core.CSSGapShortHand",
59
63
  "sap.ui.core.CSSSize",
60
64
  "sap.ui.core.CSSSizeShortHand",
61
65
  "sap.ui.core.Collision",
@@ -921,6 +925,34 @@ sap.ui.define([
921
925
  DataType.getType('string')
922
926
  );
923
927
 
928
+ /**
929
+ * @classdesc A string type that represents a short hand CSS gap.
930
+ *
931
+ * @see {@link https://developer.mozilla.org/en-US/docs/Web/CSS/gap}
932
+ * @since 1.134
933
+ * @public
934
+ * @namespace
935
+ */
936
+ thisLib.CSSGapShortHand = DataType.createType("sap.ui.core.CSSGapShortHand", {
937
+ isValid: function (vValue) {
938
+ var bResult = true,
939
+ aValues = vValue.split(/\s+/);
940
+
941
+ aValues.forEach(function (sValue) {
942
+ if (!thisLib.CSSSize.isValid(sValue)) {
943
+ bResult = false;
944
+ }
945
+ });
946
+
947
+ return bResult;
948
+ },
949
+ parseValue: function (sValue) {
950
+ return sValue.trim().split(/\s+/).join(" ");
951
+ }
952
+ },
953
+ DataType.getType("string")
954
+ );
955
+
924
956
 
925
957
  /**
926
958
  * @classdesc A string type that represents CSS size values.
@@ -1611,7 +1643,7 @@ sap.ui.define([
1611
1643
  /**
1612
1644
  * Sort order of a column.
1613
1645
  *
1614
- * @version 1.133.1
1646
+ * @version 1.135.0
1615
1647
  * @enum {string}
1616
1648
  * @public
1617
1649
  * @since 1.61.0
@@ -29,7 +29,7 @@ sap.ui.define(['sap/ui/core/Element', 'sap/ui/core/message/MessageProcessor'],
29
29
  * @extends sap.ui.core.message.MessageProcessor
30
30
  *
31
31
  * @author SAP SE
32
- * @version 1.133.1
32
+ * @version 1.135.0
33
33
  *
34
34
  * @public
35
35
  * @alias sap.ui.core.message.ControlMessageProcessor
@@ -35,7 +35,7 @@ sap.ui.define([
35
35
  * @extends sap.ui.base.Object
36
36
  *
37
37
  * @author SAP SE
38
- * @version 1.133.1
38
+ * @version 1.135.0
39
39
  *
40
40
  * @param {object} [mParameters] a map which contains the following parameter properties:
41
41
  * @param {string} [mParameters.id] The message id: will be generated if no id is set
@@ -37,7 +37,7 @@ sap.ui.define([
37
37
  * @extends sap.ui.base.Object
38
38
  *
39
39
  * @author SAP SE
40
- * @version 1.133.1
40
+ * @version 1.135.0
41
41
  *
42
42
  * @public
43
43
  * @alias sap.ui.core.message.MessageManager
@@ -17,7 +17,7 @@ sap.ui.define(["sap/ui/base/Object", "sap/base/Log"],
17
17
  * @extends sap.ui.base.Object
18
18
  *
19
19
  * @author SAP SE
20
- * @version 1.133.1
20
+ * @version 1.135.0
21
21
  * @public
22
22
  * @abstract
23
23
  * @alias sap.ui.core.message.MessageParser
@@ -27,7 +27,7 @@ sap.ui.define(['sap/ui/base/EventProvider', "sap/base/util/uid"],
27
27
  * @extends sap.ui.base.EventProvider
28
28
  *
29
29
  * @author SAP SE
30
- * @version 1.133.1
30
+ * @version 1.135.0
31
31
  *
32
32
  * @public
33
33
  * @alias sap.ui.core.message.MessageProcessor
@@ -645,3 +645,17 @@ TestRecorder.SettingsDialog.IDCheckBox.Text=Prefer view ID over global ID
645
645
  TestRecorder.SettingsDialog.POMethodCheckBox.Text=Show snippets in page object methods
646
646
  #XTIT: Text for the close button
647
647
  TestRecorder.SettingsDialog.CloseButton.Text=Close
648
+
649
+ #XTIT: Title for the generic keyboard interactions that can be initiated
650
+ Generic.Keyboard.Interaction.Text=Generic Keyboard Interactions
651
+
652
+ #XCAP: A description of the keyboard interaction "sap:create" that can be initiated by pressing the "CTRL+ENTER" key combination.
653
+ SAP_CREATE=create
654
+ #XCAP: A description of the keyboard interaction "sap:delete" that can be initiated by pressing the "CTRL+D" key combination.
655
+ SAP_DELETE=delete
656
+ #XCAP: A description of the keyboard interaction "sap:edit" that can be initiated by pressing the "CTRL+E" key combination.
657
+ SAP_EDIT=edit
658
+ #XCAP: A description of the keyboard interaction "sap:save" that can be initiated by pressing the "CTRL+S" key combination.
659
+ SAP_SAVE=save
660
+ #XCAP: A description of the keyboard interaction "sap:share" that can be initiated by pressing the "CTRL+SHIFT+S" key combination.
661
+ SAP_SHARE=share
@@ -32,7 +32,7 @@ BUSY_TEXT=\uC7A0\uC2DC \uAE30\uB2E4\uB824 \uC8FC\uC2ED\uC2DC\uC624.
32
32
  BUSY_VALUE_TEXT=\uB2E4\uB978 \uC6A9\uBB34 \uC911
33
33
 
34
34
 
35
- date.placeholder=\uC608 {0}
35
+ date.placeholder=\uC608\: {0}
36
36
 
37
37
 
38
38
  FileSize.Byte={0}\uBC14\uC774\uD2B8
@@ -164,13 +164,13 @@ Icon.download=Desc\u0103rcare
164
164
  Icon.drill-down=Defalcare
165
165
  Icon.drill-up=Comprimare
166
166
  Icon.error=Eroare
167
- Icon.exit-full-screen=Terminare ecran \u00EEntreg
167
+ Icon.exit-full-screen=Ie\u0219ire din ecran \u00EEntreg
168
168
  Icon.expand=Expandare
169
169
  Icon.expand-group=Expandare grup
170
170
  Icon.filter=Filtrare
171
171
  Icon.flag=Marcator
172
172
  Icon.forward=Redirec\u0163ionare
173
- Icon.full-screen=Activare ecran \u00EEntreg
173
+ Icon.full-screen=Intrare \u00EEn ecran \u00EEntreg
174
174
  Icon.generate-shortcut=Creare shortcut
175
175
  Icon.group-2=Grupare
176
176
  Icon.hide=Mascare
@@ -172,7 +172,7 @@ Icon.flag=\u0E41\u0E1F\u0E25\u0E01
172
172
  Icon.forward=\u0E2A\u0E48\u0E07\u0E15\u0E48\u0E2D
173
173
  Icon.full-screen=\u0E40\u0E02\u0E49\u0E32\u0E2A\u0E39\u0E48\u0E42\u0E2B\u0E21\u0E14\u0E40\u0E15\u0E47\u0E21\u0E08\u0E2D\u0E20\u0E32\u0E1E
174
174
  Icon.generate-shortcut=\u0E2A\u0E23\u0E49\u0E32\u0E07\u0E17\u0E32\u0E07\u0E25\u0E31\u0E14
175
- Icon.group-2=\u0E01\u0E25\u0E38\u0E48\u0E21
175
+ Icon.group-2=\u0E08\u0E31\u0E14\u0E01\u0E25\u0E38\u0E48\u0E21
176
176
  Icon.hide=\u0E0B\u0E48\u0E2D\u0E19
177
177
  Icon.ipad=\u0E41\u0E17\u0E47\u0E1A\u0E40\u0E25\u0E47\u0E15
178
178
  Icon.ipad-2=\u0E41\u0E17\u0E47\u0E1A\u0E40\u0E25\u0E47\u0E15
@@ -4,7 +4,7 @@ SAPUI5_GM_ZSTEP=Zoom step {0}
4
4
 
5
5
  VALUE_STATE_ERROR=Mu\u0323c nh\u00E2\u0323p kh\u00F4ng h\u01A1\u0323p l\u00EA\u0323
6
6
  VALUE_STATE_WARNING=Ca\u0309nh ba\u0301o \u0111\u01B0\u01A1\u0323c pha\u0301t ha\u0300nh
7
- VALUE_STATE_SUCCESS=Mu\u0323c nh\u00E2\u0323p \u0111\u01B0\u01A1\u0323c la\u0300m cho co\u0301 hi\u00EA\u0323u l\u01B0\u0323c tha\u0300nh c\u00F4ng
7
+ VALUE_STATE_SUCCESS=Mu\u0323c nh\u00E2\u0323p \u0111\u01B0\u01A1\u0323c xa\u0301c th\u01B0\u0323c tha\u0300nh c\u00F4ng
8
8
  VALUE_STATE_INFORMATION=Mu\u0323c nh\u00E2\u0323p th\u00F4ng tin
9
9
 
10
10
  INDICATION_STATE_INDICATION01=Ma\u0300u chi\u0309 ba\u0301o 1
@@ -159,7 +159,7 @@ Icon.crop=Xe\u0301n
159
159
  Icon.decline=T\u1EEB ch\u1ED1i
160
160
  Icon.delete=Xo\u0301a
161
161
  Icon.display=Hi\u1EC3n th\u1ECB
162
- Icon.down=Down
162
+ Icon.down=Xu\u1ED1ng
163
163
  Icon.download=Ta\u0309i xu\u00F4\u0301ng
164
164
  Icon.drill-down=Chi ti\u00EA\u0301t ho\u0301a
165
165
  Icon.drill-up=T\u00F4\u0309ng quan hoa\u0301
@@ -278,8 +278,8 @@ sap.ui.define([
278
278
  * @ui5-transform-hint replace-param bAsync true
279
279
  */
280
280
  function loadControllerClass(sName, sViewId, bAsync) {
281
- if (!sName) {
282
- throw new Error("Controller name ('sName' parameter) is required");
281
+ if (typeof sName !== "string") {
282
+ throw new Error("Controller name ('sName' parameter) is required and must be typeof 'string'");
283
283
  }
284
284
 
285
285
  /**
@@ -296,7 +296,14 @@ sap.ui.define([
296
296
  }
297
297
  }
298
298
 
299
- const sControllerName = sName.replace(/\./g, "/") + ".controller";
299
+ let sControllerName;
300
+
301
+ if (sName.startsWith("module:")) {
302
+ sControllerName = sName.substring(7);
303
+ } else {
304
+ sControllerName = sName.replace(/\./g, "/") + ".controller";
305
+ }
306
+
300
307
  let ControllerClass = sap.ui.require(sControllerName);
301
308
  /** @deprecated */
302
309
  ControllerClass ??= resolveClass(ControllerClass);
@@ -481,7 +488,7 @@ sap.ui.define([
481
488
  return oController;
482
489
  });
483
490
  }, function(err){
484
- future.errorThrows("Controller Extension Provider: Error '" + err + "' thrown in " + Controller._sExtensionProvider + ".", { suffix: "Extension provider is ignored." });
491
+ future.errorThrows("Controller Extension Provider: Error '" + err + "' thrown in " + sRegisteredExtensionProvider + ".", { suffix: "Extension provider is ignored." });
485
492
  return oController;
486
493
  });
487
494
  } else {
@@ -505,7 +512,8 @@ sap.ui.define([
505
512
  *
506
513
  * @param {object} mOptions A map containing the controller configuration options.
507
514
  * @param {string} mOptions.name The controller name that corresponds to a JS module that can be loaded
508
- * via the module system (mOptions.name + suffix ".controller.js")
515
+ * via the module system (mOptions.name + suffix ".controller.js"). It can be specified either in dot notation (<code>my.sample.Controller</code>) or
516
+ * in module name syntax (<code>module:my/sample/Controller</code>).
509
517
  * @return {Promise<sap.ui.core.mvc.Controller>} the Promise resolves with a new instance of the controller
510
518
  * @public
511
519
  * @static
@@ -553,6 +561,10 @@ sap.ui.define([
553
561
  };
554
562
  });
555
563
  }
564
+ if (sName.startsWith("module:")) {
565
+ throw new Error(`sap.ui.controller(): module name syntax '${sName}' is not supported.`);
566
+ }
567
+
556
568
  return controllerFactory(sName, oControllerImpl, sViewId, bAsync);
557
569
  };
558
570
 
@@ -830,12 +842,13 @@ sap.ui.define([
830
842
  * }.bind(this));
831
843
  *
832
844
  * @param {object} mOptions Options regarding fragment loading
833
- * @param {string} mOptions.name The Fragment name, which must correspond to a Fragment which can be loaded via the module system
834
- * (fragmentName + suffix ".fragment.[typeextension]") and which contains the Fragment definition.
845
+ * @param {string} mOptions.name The fragment name, which must correspond to a fragment which can be loaded via the module system (mOptions.name + suffix ".fragment.[typeextension]") and must contain the fragment definition.
846
+ * It can be specified either in dot notation (<code>my.sample.myFragment</code>) or, for JS fragments, in module name syntax (<code>module:my/sample/myFragment</code>).
835
847
  * @param {boolean} [mOptions.addToDependents=true] Whether the fragment content should be added to the <code>dependents</code> aggregation of the view
836
848
  * @param {boolean} [mOptions.autoPrefixId=true] Whether the IDs of the fragment content will be prefixed by the view ID
837
- * @param {string} [mOptions.id] the ID of the Fragment
838
- * @param {string} [mOptions.type=XML] the Fragment type, e.g. "XML", "JS", or "HTML" (see above). Default is "XML"
849
+ * @param {string} [mOptions.id] the ID of the fragment
850
+ * @param {string} [mOptions.type=XML] the fragment type, e.g. "XML", "JS", or "HTML" (see above). Default is "XML".
851
+ * If the fragment name is given in module name syntax (e.g., <code>module:my/sample/myFragment</code>) the type must be omitted.
839
852
  * @returns {Promise<sap.ui.core.Control|sap.ui.core.Control[]>} A Promise that resolves with the fragment content
840
853
  *
841
854
  * @since 1.93
@@ -897,7 +910,7 @@ sap.ui.define([
897
910
  *
898
911
  * @private
899
912
  */
900
- Controller._sExtensionProvider = null;
913
+ let sRegisteredExtensionProvider = null;
901
914
 
902
915
 
903
916
  /**
@@ -984,7 +997,8 @@ sap.ui.define([
984
997
  * @public
985
998
  */
986
999
  Controller.registerExtensionProvider = function(sExtensionProvider) {
987
- Controller._sExtensionProvider = sExtensionProvider;
1000
+ // remember the provider name for future error messages
1001
+ sRegisteredExtensionProvider = sExtensionProvider;
988
1002
  ControllerExtensionProvider.registerExtensionProvider(sExtensionProvider);
989
1003
  };
990
1004
 
@@ -43,7 +43,7 @@ sap.ui.define([
43
43
  * @extends sap.ui.core.mvc.View
44
44
  *
45
45
  * @author SAP SE
46
- * @version 1.133.1
46
+ * @version 1.135.0
47
47
  *
48
48
  * @public
49
49
  * @since 1.9.2
@@ -43,7 +43,7 @@ sap.ui.define([
43
43
  * @class
44
44
  * A View defined using JSON.
45
45
  * @extends sap.ui.core.mvc.View
46
- * @version 1.133.1
46
+ * @version 1.135.0
47
47
  *
48
48
  * @public
49
49
  * @alias sap.ui.core.mvc.JSONView
@@ -27,7 +27,7 @@ sap.ui.define([
27
27
  * @param {object} [mSettings] initial settings for the new control
28
28
  *
29
29
  * @extends sap.ui.core.mvc.View
30
- * @version 1.133.1
30
+ * @version 1.135.0
31
31
  * @deprecated Since 1.90. Instead use {@link topic:e6bb33d076dc4f23be50c082c271b9f0 Typed Views}
32
32
  * by defining the view class with {@link sap.ui.core.mvc.View.extend View.extend} and
33
33
  * creating the view instances with {@link sap.ui.core.mvc.View.create View.create}.