@openui5/sap.ui.core 1.118.0 → 1.119.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (673) hide show
  1. package/.eslintrc.json +9 -0
  2. package/THIRDPARTY.txt +2 -2
  3. package/package.json +1 -1
  4. package/src/jquery.sap.global.js +1 -1
  5. package/src/jquery.sap.properties.js +1 -1
  6. package/src/jquery.sap.resources.js +1 -1
  7. package/src/jquery.sap.script.js +1 -1
  8. package/src/jquery.sap.storage.js +3 -3
  9. package/src/sap/base/Event.js +1 -1
  10. package/src/sap/base/Eventing.js +1 -1
  11. package/src/sap/base/config.js +1 -1
  12. package/src/sap/base/i18n/LanguageTag.js +1 -1
  13. package/src/sap/base/i18n/Localization.js +16 -1
  14. package/src/sap/base/i18n/ResourceBundle.js +5 -0
  15. package/src/sap/base/i18n/date/TimezoneUtils.js +1 -1
  16. package/src/sap/base/util/UriParameters.js +26 -19
  17. package/src/sap/base/util/restricted/_CancelablePromise.js +1 -1
  18. package/src/sap/base/util/restricted/_castArray.js +1 -1
  19. package/src/sap/base/util/restricted/_compact.js +1 -1
  20. package/src/sap/base/util/restricted/_curry.js +1 -1
  21. package/src/sap/base/util/restricted/_debounce.js +1 -1
  22. package/src/sap/base/util/restricted/_difference.js +1 -1
  23. package/src/sap/base/util/restricted/_differenceBy.js +1 -1
  24. package/src/sap/base/util/restricted/_differenceWith.js +1 -1
  25. package/src/sap/base/util/restricted/_flatMap.js +1 -1
  26. package/src/sap/base/util/restricted/_flatMapDeep.js +1 -1
  27. package/src/sap/base/util/restricted/_flatMapDepth.js +1 -1
  28. package/src/sap/base/util/restricted/_flatten.js +1 -1
  29. package/src/sap/base/util/restricted/_flattenDeep.js +1 -1
  30. package/src/sap/base/util/restricted/_flattenDepth.js +1 -1
  31. package/src/sap/base/util/restricted/_intersection.js +1 -1
  32. package/src/sap/base/util/restricted/_intersectionBy.js +1 -1
  33. package/src/sap/base/util/restricted/_intersectionWith.js +1 -1
  34. package/src/sap/base/util/restricted/_isEqual.js +1 -1
  35. package/src/sap/base/util/restricted/_isEqualWith.js +1 -1
  36. package/src/sap/base/util/restricted/_isNil.js +1 -1
  37. package/src/sap/base/util/restricted/_max.js +1 -1
  38. package/src/sap/base/util/restricted/_merge.js +1 -1
  39. package/src/sap/base/util/restricted/_mergeWith.js +1 -1
  40. package/src/sap/base/util/restricted/_min.js +1 -1
  41. package/src/sap/base/util/restricted/_omit.js +1 -1
  42. package/src/sap/base/util/restricted/_pick.js +1 -1
  43. package/src/sap/base/util/restricted/_pickBy.js +1 -1
  44. package/src/sap/base/util/restricted/_throttle.js +1 -1
  45. package/src/sap/base/util/restricted/_toArray.js +1 -1
  46. package/src/sap/base/util/restricted/_union.js +1 -1
  47. package/src/sap/base/util/restricted/_unionBy.js +1 -1
  48. package/src/sap/base/util/restricted/_unionWith.js +1 -1
  49. package/src/sap/base/util/restricted/_uniq.js +1 -1
  50. package/src/sap/base/util/restricted/_uniqBy.js +1 -1
  51. package/src/sap/base/util/restricted/_uniqWith.js +1 -1
  52. package/src/sap/base/util/restricted/_without.js +1 -1
  53. package/src/sap/base/util/restricted/_xor.js +1 -1
  54. package/src/sap/base/util/restricted/_xorBy.js +1 -1
  55. package/src/sap/base/util/restricted/_xorWith.js +1 -1
  56. package/src/sap/base/util/restricted/_zipObject.js +1 -1
  57. package/src/sap/base/util/restricted/_zipObjectDeep.js +1 -1
  58. package/src/sap/ui/Device.js +3 -3
  59. package/src/sap/ui/Global.js +4 -4
  60. package/src/sap/ui/base/BindingInfo.js +25 -3
  61. package/src/sap/ui/base/Event.js +1 -1
  62. package/src/sap/ui/base/EventProvider.js +1 -1
  63. package/src/sap/ui/base/Interface.js +1 -1
  64. package/src/sap/ui/base/ManagedObject.js +2 -2
  65. package/src/sap/ui/base/ManagedObjectMetadata.js +4 -3
  66. package/src/sap/ui/base/Metadata.js +3 -3
  67. package/src/sap/ui/base/Object.js +1 -1
  68. package/src/sap/ui/base/ObjectPool.js +1 -1
  69. package/src/sap/ui/core/.library +1 -1
  70. package/src/sap/ui/core/AccessKeysEnablement.js +2 -2
  71. package/src/sap/ui/core/BusyIndicator.js +1 -1
  72. package/src/sap/ui/core/Component.js +68 -51
  73. package/src/sap/ui/core/ComponentContainer.js +1 -1
  74. package/src/sap/ui/core/ComponentMetadata.js +1 -1
  75. package/src/sap/ui/core/ComponentSupport.js +1 -1
  76. package/src/sap/ui/core/Configuration.js +15 -167
  77. package/src/sap/ui/core/Control.js +2 -2
  78. package/src/sap/ui/core/Core.js +162 -93
  79. package/src/sap/ui/core/CustomData.js +1 -1
  80. package/src/sap/ui/core/CustomStyleClassSupport.js +3 -3
  81. package/src/sap/ui/core/DeclarativeSupport.js +1 -1
  82. package/src/sap/ui/core/Element.js +40 -4
  83. package/src/sap/ui/core/ElementMetadata.js +1 -1
  84. package/src/sap/ui/core/EnabledPropagator.js +1 -1
  85. package/src/sap/ui/core/EventBus.js +19 -2
  86. package/src/sap/ui/core/FocusHandler.js +3 -24
  87. package/src/sap/ui/core/Fragment.js +2 -2
  88. package/src/sap/ui/core/HTML.js +1 -1
  89. package/src/sap/ui/core/History.js +1 -1
  90. package/src/sap/ui/core/Icon.js +1 -1
  91. package/src/sap/ui/core/IndicationColorSupport.js +1 -1
  92. package/src/sap/ui/core/IntervalTrigger.js +1 -1
  93. package/src/sap/ui/core/InvisibleMessage.js +1 -1
  94. package/src/sap/ui/core/InvisibleRenderer.js +1 -1
  95. package/src/sap/ui/core/InvisibleText.js +2 -2
  96. package/src/sap/ui/core/Item.js +1 -1
  97. package/src/sap/ui/core/LabelEnablement.js +11 -4
  98. package/src/sap/ui/core/LayoutData.js +1 -1
  99. package/src/sap/ui/core/Lib.js +42 -42
  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 +1 -1
  103. package/src/sap/ui/core/LocaleData.js +1 -1
  104. package/src/sap/ui/core/Manifest.js +1 -1
  105. package/src/sap/ui/core/Message.js +4 -4
  106. package/src/sap/ui/core/Messaging.js +4 -5
  107. package/src/sap/ui/core/Popup.js +3 -3
  108. package/src/sap/ui/core/RenderManager.js +15 -10
  109. package/src/sap/ui/core/Renderer.js +1 -1
  110. package/src/sap/ui/core/Rendering.js +1 -0
  111. package/src/sap/ui/core/ResizeHandler.js +15 -20
  112. package/src/sap/ui/core/ScrollBar.js +1 -1
  113. package/src/sap/ui/core/SeparatorItem.js +1 -1
  114. package/src/sap/ui/core/ShortcutHintsMixin.js +5 -5
  115. package/src/sap/ui/core/StashedControlSupport.js +4 -4
  116. package/src/sap/ui/core/StaticArea.js +66 -74
  117. package/src/sap/ui/core/Theming.js +71 -8
  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 +10 -9
  121. package/src/sap/ui/core/UIComponent.js +2 -2
  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 +4 -2
  126. package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
  127. package/src/sap/ui/core/_IconRegistry.js +2 -0
  128. package/src/sap/ui/core/cache/CacheManager.js +22 -16
  129. package/src/sap/ui/core/cache/LRUPersistentCache.js +13 -7
  130. package/src/sap/ui/core/date/UI5Date.js +1 -1
  131. package/src/sap/ui/core/delegate/ItemNavigation.js +3 -3
  132. package/src/sap/ui/core/delegate/ScrollEnablement.js +1 -1
  133. package/src/sap/ui/core/dnd/DragDropBase.js +1 -1
  134. package/src/sap/ui/core/dnd/DragDropInfo.js +6 -6
  135. package/src/sap/ui/core/dnd/DragInfo.js +4 -4
  136. package/src/sap/ui/core/dnd/DropInfo.js +6 -6
  137. package/src/sap/ui/core/format/TimezoneUtil.js +1 -1
  138. package/src/sap/ui/core/getCompatibilityVersion.js +64 -0
  139. package/src/sap/ui/core/hyphenation/Hyphenation.js +1 -1
  140. package/src/sap/ui/core/library.js +14 -9
  141. package/src/sap/ui/core/message/ControlMessageProcessor.js +4 -4
  142. package/src/sap/ui/core/message/Message.js +14 -13
  143. package/src/sap/ui/core/message/MessageManager.js +12 -13
  144. package/src/sap/ui/core/message/MessageMixin.js +2 -2
  145. package/src/sap/ui/core/message/MessageParser.js +1 -1
  146. package/src/sap/ui/core/message/MessageProcessor.js +2 -2
  147. package/src/sap/ui/core/message/MessageType.js +4 -4
  148. package/src/sap/ui/core/messagebundle_ar.properties +2 -2
  149. package/src/sap/ui/core/messagebundle_bg.properties +3 -3
  150. package/src/sap/ui/core/messagebundle_ca.properties +1 -1
  151. package/src/sap/ui/core/messagebundle_cs.properties +4 -4
  152. package/src/sap/ui/core/messagebundle_cy.properties +1 -1
  153. package/src/sap/ui/core/messagebundle_da.properties +3 -3
  154. package/src/sap/ui/core/messagebundle_de.properties +2 -2
  155. package/src/sap/ui/core/messagebundle_el.properties +10 -10
  156. package/src/sap/ui/core/messagebundle_en.properties +4 -4
  157. package/src/sap/ui/core/messagebundle_es.properties +17 -17
  158. package/src/sap/ui/core/messagebundle_fi.properties +1 -1
  159. package/src/sap/ui/core/messagebundle_fr.properties +21 -21
  160. package/src/sap/ui/core/messagebundle_hi.properties +2 -2
  161. package/src/sap/ui/core/messagebundle_hr.properties +6 -6
  162. package/src/sap/ui/core/messagebundle_hu.properties +10 -10
  163. package/src/sap/ui/core/messagebundle_id.properties +5 -5
  164. package/src/sap/ui/core/messagebundle_it.properties +57 -57
  165. package/src/sap/ui/core/messagebundle_iw.properties +5 -5
  166. package/src/sap/ui/core/messagebundle_kk.properties +1 -1
  167. package/src/sap/ui/core/messagebundle_ko.properties +6 -6
  168. package/src/sap/ui/core/messagebundle_lv.properties +5 -5
  169. package/src/sap/ui/core/messagebundle_ms.properties +5 -5
  170. package/src/sap/ui/core/messagebundle_nl.properties +12 -12
  171. package/src/sap/ui/core/messagebundle_no.properties +8 -8
  172. package/src/sap/ui/core/messagebundle_pl.properties +2 -2
  173. package/src/sap/ui/core/messagebundle_pt.properties +8 -8
  174. package/src/sap/ui/core/messagebundle_ro.properties +2 -2
  175. package/src/sap/ui/core/messagebundle_ru.properties +7 -7
  176. package/src/sap/ui/core/messagebundle_sk.properties +2 -2
  177. package/src/sap/ui/core/messagebundle_sl.properties +9 -9
  178. package/src/sap/ui/core/messagebundle_sv.properties +8 -8
  179. package/src/sap/ui/core/messagebundle_th.properties +18 -18
  180. package/src/sap/ui/core/messagebundle_tr.properties +5 -5
  181. package/src/sap/ui/core/messagebundle_uk.properties +8 -8
  182. package/src/sap/ui/core/messagebundle_vi.properties +1 -1
  183. package/src/sap/ui/core/messagebundle_zh_CN.properties +2 -2
  184. package/src/sap/ui/core/messagebundle_zh_TW.properties +24 -24
  185. package/src/sap/ui/core/mvc/HTMLView.js +1 -1
  186. package/src/sap/ui/core/mvc/JSONView.js +1 -1
  187. package/src/sap/ui/core/mvc/JSView.js +1 -1
  188. package/src/sap/ui/core/mvc/TemplateView.js +1 -1
  189. package/src/sap/ui/core/mvc/View.js +3 -3
  190. package/src/sap/ui/core/mvc/XMLView.js +1 -1
  191. package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
  192. package/src/sap/ui/core/plugin/LessSupport.js +3 -3
  193. package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -1
  194. package/src/sap/ui/core/postmessage/Bus.js +1 -1
  195. package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
  196. package/src/sap/ui/core/routing/async/Target.js +5 -4
  197. package/src/sap/ui/core/routing/sync/Target.js +3 -3
  198. package/src/sap/ui/core/rules/App.support.js +30 -1
  199. package/src/sap/ui/core/rules/Config.support.js +4 -0
  200. package/src/sap/ui/core/rules/CoreHelper.support.js +3 -3
  201. package/src/sap/ui/core/rules/Theming.support.js +4 -0
  202. package/src/sap/ui/core/search/OpenSearchProvider.js +1 -1
  203. package/src/sap/ui/core/search/SearchProvider.js +1 -1
  204. package/src/sap/ui/core/service/Service.js +1 -1
  205. package/src/sap/ui/core/service/ServiceFactory.js +1 -1
  206. package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
  207. package/src/sap/ui/core/support/Plugin.js +1 -1
  208. package/src/sap/ui/core/support/Support.js +5 -3
  209. package/src/sap/ui/core/support/ToolsAPI.js +8 -4
  210. package/src/sap/ui/core/support/plugins/Breakpoint.js +4 -4
  211. package/src/sap/ui/core/support/plugins/ControlTree.js +31 -13
  212. package/src/sap/ui/core/support/plugins/Interaction.js +1 -1
  213. package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
  214. package/src/sap/ui/core/support/plugins/Performance.js +1 -1
  215. package/src/sap/ui/core/support/plugins/Selector.js +2 -2
  216. package/src/sap/ui/core/support/plugins/TechInfo.js +1 -1
  217. package/src/sap/ui/core/support/plugins/Trace.js +1 -1
  218. package/src/sap/ui/core/support/plugins/ViewInfo.js +6 -4
  219. package/src/sap/ui/core/support/techinfo/TechnicalInfo.js +4 -2
  220. package/src/sap/ui/core/support/usage/EventBroadcaster.js +1 -1
  221. package/src/sap/ui/core/themes/base/base.less +275 -269
  222. package/src/sap/ui/core/themes/base/fonts/SAP-icons.ttf +0 -0
  223. package/src/sap/ui/core/themes/base/fonts/SAP-icons.woff2 +0 -0
  224. package/src/sap/ui/core/themes/base/global.less +8 -8
  225. package/src/sap/ui/core/theming/Parameters.js +4 -5
  226. package/src/sap/ui/core/theming/ThemeHelper.js +0 -1
  227. package/src/sap/ui/core/theming/ThemeManager.js +15 -14
  228. package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
  229. package/src/sap/ui/core/tmpl/DOMElement.js +1 -1
  230. package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
  231. package/src/sap/ui/core/tmpl/Template.js +1 -1
  232. package/src/sap/ui/core/tmpl/TemplateControl.js +4 -2
  233. package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
  234. package/src/sap/ui/core/util/Export.js +1 -1
  235. package/src/sap/ui/core/util/ExportCell.js +1 -1
  236. package/src/sap/ui/core/util/ExportColumn.js +1 -1
  237. package/src/sap/ui/core/util/ExportRow.js +1 -1
  238. package/src/sap/ui/core/util/ExportType.js +1 -1
  239. package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
  240. package/src/sap/ui/core/util/File.js +1 -1
  241. package/src/sap/ui/core/util/LibraryInfo.js +1 -1
  242. package/src/sap/ui/core/util/MockServer.js +1 -1
  243. package/src/sap/ui/core/util/PasteHelper.js +1 -1
  244. package/src/sap/ui/core/util/reflection/BaseTreeModifier.js +27 -4
  245. package/src/sap/ui/core/util/reflection/JsControlTreeModifier.js +55 -30
  246. package/src/sap/ui/core/util/reflection/XmlTreeModifier.js +54 -48
  247. package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +2 -2
  248. package/src/sap/ui/core/util/serializer/Serializer.js +3 -3
  249. package/src/sap/ui/core/util/serializer/ViewSerializer.js +27 -10
  250. package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +2 -2
  251. package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
  252. package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
  253. package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
  254. package/src/sap/ui/core/webc/WebComponent.js +3 -3
  255. package/src/sap/ui/core/webc/WebComponentMetadata.js +1 -1
  256. package/src/sap/ui/core/ws/ReadyState.js +1 -1
  257. package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
  258. package/src/sap/ui/core/ws/WebSocket.js +1 -1
  259. package/src/sap/ui/debug/ControlTree.js +5 -5
  260. package/src/sap/ui/debug/DebugEnv.js +15 -6
  261. package/src/sap/ui/debug/PropertyList.js +3 -3
  262. package/src/sap/ui/dom/jquery/control.js +3 -4
  263. package/src/sap/ui/events/F6Navigation.js +2 -1
  264. package/src/sap/ui/model/ClientModel.js +33 -1
  265. package/src/sap/ui/model/ClientPropertyBinding.js +17 -1
  266. package/src/sap/ui/model/CompositeDataState.js +1 -1
  267. package/src/sap/ui/model/CompositeType.js +1 -1
  268. package/src/sap/ui/model/DataState.js +1 -1
  269. package/src/sap/ui/model/Filter.js +1 -1
  270. package/src/sap/ui/model/MetaModel.js +1 -1
  271. package/src/sap/ui/model/Model.js +1 -1
  272. package/src/sap/ui/model/SelectionModel.js +1 -1
  273. package/src/sap/ui/model/SimpleType.js +1 -1
  274. package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
  275. package/src/sap/ui/model/Type.js +1 -1
  276. package/src/sap/ui/model/json/JSONModel.js +2 -3
  277. package/src/sap/ui/model/message/MessageModel.js +3 -7
  278. package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
  279. package/src/sap/ui/model/odata/ODataMessageParser.js +1 -1
  280. package/src/sap/ui/model/odata/ODataMetaModel.js +1 -1
  281. package/src/sap/ui/model/odata/ODataMetadata.js +1 -1
  282. package/src/sap/ui/model/odata/ODataModel.js +1 -1
  283. package/src/sap/ui/model/odata/type/Boolean.js +1 -1
  284. package/src/sap/ui/model/odata/type/Byte.js +1 -1
  285. package/src/sap/ui/model/odata/type/Currency.js +1 -1
  286. package/src/sap/ui/model/odata/type/Date.js +1 -1
  287. package/src/sap/ui/model/odata/type/DateTime.js +1 -1
  288. package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
  289. package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
  290. package/src/sap/ui/model/odata/type/DateTimeWithTimezone.js +1 -2
  291. package/src/sap/ui/model/odata/type/Decimal.js +1 -1
  292. package/src/sap/ui/model/odata/type/Double.js +1 -1
  293. package/src/sap/ui/model/odata/type/Guid.js +1 -1
  294. package/src/sap/ui/model/odata/type/Int.js +1 -1
  295. package/src/sap/ui/model/odata/type/Int16.js +1 -1
  296. package/src/sap/ui/model/odata/type/Int32.js +1 -1
  297. package/src/sap/ui/model/odata/type/Int64.js +1 -1
  298. package/src/sap/ui/model/odata/type/ODataType.js +2 -3
  299. package/src/sap/ui/model/odata/type/Raw.js +1 -1
  300. package/src/sap/ui/model/odata/type/SByte.js +1 -1
  301. package/src/sap/ui/model/odata/type/Single.js +1 -1
  302. package/src/sap/ui/model/odata/type/Stream.js +1 -1
  303. package/src/sap/ui/model/odata/type/String.js +1 -1
  304. package/src/sap/ui/model/odata/type/Time.js +1 -1
  305. package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
  306. package/src/sap/ui/model/odata/type/Unit.js +1 -1
  307. package/src/sap/ui/model/odata/v2/Context.js +13 -5
  308. package/src/sap/ui/model/odata/v2/ODataAnnotations.js +1 -1
  309. package/src/sap/ui/model/odata/v2/ODataListBinding.js +85 -56
  310. package/src/sap/ui/model/odata/v2/ODataModel.js +20 -15
  311. package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +1 -1
  312. package/src/sap/ui/model/odata/v4/Context.js +60 -10
  313. package/src/sap/ui/model/odata/v4/ODataBinding.js +13 -4
  314. package/src/sap/ui/model/odata/v4/ODataContextBinding.js +159 -34
  315. package/src/sap/ui/model/odata/v4/ODataListBinding.js +94 -24
  316. package/src/sap/ui/model/odata/v4/ODataMetaModel.js +1 -1
  317. package/src/sap/ui/model/odata/v4/ODataModel.js +10 -10
  318. package/src/sap/ui/model/odata/v4/ODataParentBinding.js +4 -2
  319. package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +10 -13
  320. package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +105 -25
  321. package/src/sap/ui/model/odata/v4/lib/_AggregationHelper.js +3 -5
  322. package/src/sap/ui/model/odata/v4/lib/_Cache.js +83 -24
  323. package/src/sap/ui/model/odata/v4/lib/_Helper.js +6 -20
  324. package/src/sap/ui/model/odata/v4/lib/_Requestor.js +3 -3
  325. package/src/sap/ui/model/odata/v4/lib/_V2MetadataConverter.js +1 -1
  326. package/src/sap/ui/model/resource/ResourceModel.js +1 -1
  327. package/src/sap/ui/model/type/Boolean.js +1 -1
  328. package/src/sap/ui/model/type/Currency.js +1 -1
  329. package/src/sap/ui/model/type/Date.js +1 -2
  330. package/src/sap/ui/model/type/DateInterval.js +1 -2
  331. package/src/sap/ui/model/type/DateTime.js +1 -1
  332. package/src/sap/ui/model/type/DateTimeInterval.js +1 -1
  333. package/src/sap/ui/model/type/FileSize.js +1 -1
  334. package/src/sap/ui/model/type/Float.js +1 -1
  335. package/src/sap/ui/model/type/Integer.js +1 -1
  336. package/src/sap/ui/model/type/String.js +1 -1
  337. package/src/sap/ui/model/type/Time.js +1 -1
  338. package/src/sap/ui/model/type/TimeInterval.js +1 -1
  339. package/src/sap/ui/model/type/Unit.js +1 -1
  340. package/src/sap/ui/model/xml/XMLModel.js +2 -2
  341. package/src/sap/ui/model/xml/XMLPropertyBinding.js +4 -2
  342. package/src/sap/ui/performance/BeaconRequest.js +8 -10
  343. package/src/sap/ui/qunit/qunit-coverage-istanbul.js +60 -6
  344. package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
  345. package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +1 -1
  346. package/src/sap/ui/qunit/utils/waitForThemeApplied.js +16 -14
  347. package/src/sap/ui/test/BlanketReporterUI.view.xml +5 -2
  348. package/src/sap/ui/test/OpaPlugin.js +3 -3
  349. package/src/sap/ui/test/TestUtils.js +3 -3
  350. package/src/sap/ui/test/generic/TestBase.js +1 -1
  351. package/src/sap/ui/test/matchers/Descendant.js +1 -1
  352. package/src/sap/ui/test/matchers/Sibling.js +1 -1
  353. package/src/sap/ui/test/selectors/_LabelFor.js +3 -2
  354. package/src/sap/ui/test/starter/_setupAndStart.js +35 -11
  355. package/src/sap/ui/util/Storage.js +1 -1
  356. package/test/sap/ui/core/HTMLControl.html +94 -93
  357. package/test/sap/ui/core/HyphenationPlayground.html +10 -9
  358. package/test/sap/ui/core/Strings.view.xml +5 -1
  359. package/test/sap/ui/core/ThemeParameters.html +31 -30
  360. package/test/sap/ui/core/ValidateURL.html +10 -10
  361. package/test/sap/ui/core/demokit/sample/BusyIndicator/manifest.json +2 -1
  362. package/test/sap/ui/core/demokit/sample/Commands/manifest.json +2 -2
  363. package/test/sap/ui/core/demokit/sample/ControlBusyIndicator/manifest.json +2 -1
  364. package/test/sap/ui/core/demokit/sample/ControllerExtension/manifest.json +1 -0
  365. package/test/sap/ui/core/demokit/sample/FieldGroup/manifest.json +1 -0
  366. package/test/sap/ui/core/demokit/sample/Html/manifest.json +1 -0
  367. package/test/sap/ui/core/demokit/sample/Html/preserveDOM/manifest.json +1 -0
  368. package/test/sap/ui/core/demokit/sample/Html/static/manifest.json +1 -0
  369. package/test/sap/ui/core/demokit/sample/HyphenationAPI/C.controller.js +3 -3
  370. package/test/sap/ui/core/demokit/sample/Icon/manifest.json +2 -1
  371. package/test/sap/ui/core/demokit/sample/InvisibleMessage/InvisibleMessage.controller.js +4 -4
  372. package/test/sap/ui/core/demokit/sample/InvisibleMessage/manifest.json +2 -1
  373. package/test/sap/ui/core/demokit/sample/InvisibleText/manifest.json +2 -1
  374. package/test/sap/ui/core/demokit/sample/MessageManager/BasicODataMessages/manifest.json +1 -0
  375. package/test/sap/ui/core/demokit/sample/OpaAction/manifest.json +1 -0
  376. package/test/sap/ui/core/demokit/sample/OpaAutoWaitParams/OpaAutoWaitParams.js +1 -1
  377. package/test/sap/ui/core/demokit/sample/OpaAutoWaitParams/applicationUnderTest/manifest.json +2 -2
  378. package/test/sap/ui/core/demokit/sample/OpaAutoWaitParams/manifest.json +2 -1
  379. package/test/sap/ui/core/demokit/sample/OpaBusyIndicator/applicationUnderTest/manifest.json +2 -2
  380. package/test/sap/ui/core/demokit/sample/OpaBusyIndicator/manifest.json +2 -1
  381. package/test/sap/ui/core/demokit/sample/OpaById/applicationUnderTest/manifest.json +2 -2
  382. package/test/sap/ui/core/demokit/sample/OpaById/manifest.json +2 -1
  383. package/test/sap/ui/core/demokit/sample/OpaDynamicWait/applicationUnderTest/manifest.json +2 -2
  384. package/test/sap/ui/core/demokit/sample/OpaDynamicWait/manifest.json +2 -1
  385. package/test/sap/ui/core/demokit/sample/OpaGetStarted/manifest.json +2 -1
  386. package/test/sap/ui/core/demokit/sample/OpaMatchers/applicationUnderTest/manifest.json +2 -2
  387. package/test/sap/ui/core/demokit/sample/OpaMatchers/manifest.json +2 -1
  388. package/test/sap/ui/core/demokit/sample/OpaPageObject/applicationUnderTest/manifest.json +2 -2
  389. package/test/sap/ui/core/demokit/sample/OpaPageObject/manifest.json +2 -1
  390. package/test/sap/ui/core/demokit/sample/OpaStartup/iStartMyAppInAFrame/applicationUnderTest/manifest.json +2 -2
  391. package/test/sap/ui/core/demokit/sample/OpaStartup/iStartMyAppInAFrame/manifest.json +2 -1
  392. package/test/sap/ui/core/demokit/sample/OpaStartup/iStartMyUIComponent/applicationUnderTest/manifest.json +2 -2
  393. package/test/sap/ui/core/demokit/sample/OpaStartup/iStartMyUIComponent/manifest.json +2 -1
  394. package/test/sap/ui/core/demokit/sample/OpaStaticAreaControls/applicationUnderTest/manifest.json +2 -2
  395. package/test/sap/ui/core/demokit/sample/OpaStaticAreaControls/manifest.json +2 -1
  396. package/test/sap/ui/core/demokit/sample/OpaTestLibrary/applicationUnderTest/manifest.json +2 -2
  397. package/test/sap/ui/core/demokit/sample/OpaTestLibrary/manifest.json +2 -1
  398. package/test/sap/ui/core/demokit/sample/OpaURLParameters/iStartMyAppInAFrameWithURLParameters/applicationUnderTest/manifest.json +2 -2
  399. package/test/sap/ui/core/demokit/sample/OpaURLParameters/iStartMyAppInAFrameWithURLParameters/manifest.json +2 -1
  400. package/test/sap/ui/core/demokit/sample/OpaURLParameters/iStartMyUIComponentWithURLParameters/applicationUnderTest/manifest.json +2 -2
  401. package/test/sap/ui/core/demokit/sample/OpaURLParameters/iStartMyUIComponentWithURLParameters/manifest.json +2 -1
  402. package/test/sap/ui/core/demokit/sample/OpaWithSupportAssistant/manifest.json +2 -1
  403. package/test/sap/ui/core/demokit/sample/PatternMatching/manifest.json +2 -1
  404. package/test/sap/ui/core/demokit/sample/PatternMatching/patternApp/manifest.json +2 -2
  405. package/test/sap/ui/core/demokit/sample/RoutingFullscreen/manifest.json +2 -1
  406. package/test/sap/ui/core/demokit/sample/RoutingMasterDetail/manifest.json +2 -1
  407. package/test/sap/ui/core/demokit/sample/RoutingNestedComponent/manifest.json +2 -2
  408. package/test/sap/ui/core/demokit/sample/RoutingNestedComponent/reuse/categories/manifest.json +2 -1
  409. package/test/sap/ui/core/demokit/sample/RoutingNestedComponent/reuse/products/manifest.json +2 -1
  410. package/test/sap/ui/core/demokit/sample/RoutingNestedComponent/reuse/suppliers/manifest.json +2 -1
  411. package/test/sap/ui/core/demokit/sample/TargetsStandalone/manifest.json +2 -1
  412. package/test/sap/ui/core/demokit/sample/ThemeCustomClasses/ThemeCustomClasses.controller.js +3 -3
  413. package/test/sap/ui/core/demokit/sample/ThemeCustomClasses/manifest.json +1 -0
  414. package/test/sap/ui/core/demokit/sample/TypeCurrency/manifest.json +1 -0
  415. package/test/sap/ui/core/demokit/sample/TypeDateAsDate/manifest.json +1 -0
  416. package/test/sap/ui/core/demokit/sample/TypeDateAsString/manifest.json +1 -0
  417. package/test/sap/ui/core/demokit/sample/TypeDateTime/manifest.json +1 -0
  418. package/test/sap/ui/core/demokit/sample/TypeFileSize/manifest.json +1 -0
  419. package/test/sap/ui/core/demokit/sample/TypeFloat/manifest.json +1 -0
  420. package/test/sap/ui/core/demokit/sample/TypeInteger/manifest.json +1 -0
  421. package/test/sap/ui/core/demokit/sample/TypeTimeAsTime/manifest.json +1 -0
  422. package/test/sap/ui/core/demokit/sample/View/async/manifest.json +2 -1
  423. package/test/sap/ui/core/demokit/sample/View/preprocessor/manifest.json +2 -1
  424. package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/manifest.json +2 -1
  425. package/test/sap/ui/core/demokit/sample/XMLComposite/02/manifest.json +1 -0
  426. package/test/sap/ui/core/demokit/sample/common/Controller.js +3 -2
  427. package/test/sap/ui/core/demokit/sample/common/Helper.js +15 -2
  428. package/test/sap/ui/core/demokit/sample/common/pages/Any.js +3 -0
  429. package/test/sap/ui/core/demokit/sample/gherkin/GherkinWithPageObjects/applicationUnderTest/manifest.json +1 -0
  430. package/test/sap/ui/core/demokit/sample/gherkin/GherkinWithPageObjects/manifest.json +2 -1
  431. package/test/sap/ui/core/demokit/sample/matcher/BindingPath/manifest.json +2 -1
  432. package/test/sap/ui/core/demokit/sample/matcher/BindingPath/webapp/manifest.json +2 -2
  433. package/test/sap/ui/core/demokit/sample/matcher/Descendant/manifest.json +2 -1
  434. package/test/sap/ui/core/demokit/sample/matcher/Descendant/webapp/manifest.json +2 -2
  435. package/test/sap/ui/core/demokit/sample/matcher/I18NText/manifest.json +2 -1
  436. package/test/sap/ui/core/demokit/sample/matcher/I18NText/webapp/manifest.json +2 -2
  437. package/test/sap/ui/core/demokit/sample/matcher/LabelFor/manifest.json +2 -1
  438. package/test/sap/ui/core/demokit/sample/matcher/LabelFor/webapp/manifest.json +2 -2
  439. package/test/sap/ui/core/demokit/sample/odata/types/v2/DateTimeOffset/manifest.json +1 -0
  440. package/test/sap/ui/core/demokit/sample/odata/types/v4/Date/manifest.json +1 -0
  441. package/test/sap/ui/core/demokit/sample/odata/types/v4/TimeOfDay/manifest.json +1 -0
  442. package/test/sap/ui/core/demokit/sample/odata/v2/AutoExpand/AutoExpand.view.xml +6 -2
  443. package/test/sap/ui/core/demokit/sample/odata/v4/Ancestry/Main.view.xml +7 -3
  444. package/test/sap/ui/core/demokit/sample/odata/v4/DataAggregation/DataAggregation.controller.js +2 -2
  445. package/test/sap/ui/core/demokit/sample/odata/v4/DataAggregation/DataAggregation.view.xml +7 -4
  446. package/test/sap/ui/core/demokit/sample/odata/v4/DataAggregation/tests/expandPageCollapse.js +1 -1
  447. package/test/sap/ui/core/demokit/sample/odata/v4/DataAggregation/tests/filter.js +1 -1
  448. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/Opa.qunit.js +1 -1
  449. package/test/sap/ui/core/demokit/sample/odata/v4/Draft/Opa.qunit.js +3 -5
  450. package/test/sap/ui/core/demokit/sample/odata/v4/FieldGroups/Opa.qunit.js +4 -2
  451. package/test/sap/ui/core/demokit/sample/odata/v4/FlatDataAggregation/FlatDataAggregation.controller.js +6 -4
  452. package/test/sap/ui/core/demokit/sample/odata/v4/FlatDataAggregation/FlatDataAggregation.view.xml +6 -2
  453. package/test/sap/ui/core/demokit/sample/odata/v4/FlexibleColumnLayout/Opa.qunit.js +9 -16
  454. package/test/sap/ui/core/demokit/sample/odata/v4/GridTable/GridTable.view.xml +6 -2
  455. package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/Main.view.xml +7 -3
  456. package/test/sap/ui/core/demokit/sample/odata/v4/LateProperties/Opa.qunit.js +1 -1
  457. package/test/sap/ui/core/demokit/sample/odata/v4/ListBinding/Opa.qunit.js +1 -1
  458. package/test/sap/ui/core/demokit/sample/odata/v4/MultipleInlineCreationRowsGrid/Main.view.xml +5 -2
  459. package/test/sap/ui/core/demokit/sample/odata/v4/MultipleInlineCreationRowsGrid/Opa.qunit.js +4 -2
  460. package/test/sap/ui/core/demokit/sample/odata/v4/Products/Opa.qunit.js +1 -1
  461. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/RecursiveHierarchy.controller.js +29 -4
  462. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/RecursiveHierarchy.view.xml +30 -5
  463. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/SandboxModel.js +33 -6
  464. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/tests/createEdit.js +1 -1
  465. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/tests/pageExpandCollapse.js +1 -1
  466. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrderTP100_V2/Opa.qunit.js +1 -1
  467. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrderTP100_V4/Opa.qunit.js +1 -1
  468. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/pages/Main.js +9 -8
  469. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/tests/ChangeContext.js +1 -1
  470. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/tests/Create.js +1 -1
  471. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/tests/CreateMultiple.js +1 -1
  472. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/tests/CreateRelative.js +1 -1
  473. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/tests/MessageHandling.js +1 -1
  474. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/tests/TypeDeterminationAndDelete.js +8 -9
  475. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/tests/WriteNonDeferredGroup.js +1 -1
  476. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/tests/additionalTargets.js +1 -1
  477. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersRTATest/tests/AdaptSalesOrdersTable.js +1 -1
  478. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersTemplate/Opa.qunit.js +1 -1
  479. package/test/sap/ui/core/demokit/sample/odata/v4/ServerDrivenPaging/Main.view.xml +5 -2
  480. package/test/sap/ui/core/demokit/sample/odata/v4/ServerDrivenPaging/pages/Main.js +4 -2
  481. package/test/sap/ui/core/demokit/sample/odata/v4/Sticky/Opa.qunit.js +1 -1
  482. package/test/sap/ui/core/demokit/tutorial/mockserver/01/webapp/manifest.json +1 -1
  483. package/test/sap/ui/core/demokit/tutorial/mockserver/02/webapp/manifest.json +1 -1
  484. package/test/sap/ui/core/demokit/tutorial/mockserver/03/webapp/manifest.json +1 -1
  485. package/test/sap/ui/core/demokit/tutorial/mockserver/04/webapp/manifest.json +1 -1
  486. package/test/sap/ui/core/demokit/tutorial/troubleshooting/01/webapp/manifest.json +1 -1
  487. package/test/sap/ui/core/internal/samples/composite/xmlcomposite/exTableWrapperOuterBinding/Test.controller.js +3 -2
  488. package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/Main.controller.js +1 -1
  489. package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/Main.view.xml +6 -3
  490. package/test/sap/ui/core/internal/samples/odata/v2/TreeTable/Main.view.xml +1 -1
  491. package/test/sap/ui/core/qunit/ControlDefinition.qunit.js +40 -20
  492. package/test/sap/ui/core/qunit/ControlRenderer.qunit.js +1 -1
  493. package/test/sap/ui/core/qunit/Core.qunit.js +5 -4
  494. package/test/sap/ui/core/qunit/Core_libraryTerminologies_integration.qunit.js +12 -11
  495. package/test/sap/ui/core/qunit/CustomStyleClassSupport.qunit.js +119 -117
  496. package/test/sap/ui/core/qunit/CustomThemeFallback.qunit.js +5 -17
  497. package/test/sap/ui/core/qunit/Declarative.qunit.js +37 -37
  498. package/test/sap/ui/core/qunit/Element_base.qunit.js +1 -1
  499. package/test/sap/ui/core/qunit/EventBus.qunit.js +4 -3
  500. package/test/sap/ui/core/qunit/FastNavigation.qunit.js +3 -2
  501. package/test/sap/ui/core/qunit/FieldGroup.qunit.js +9 -8
  502. package/test/sap/ui/core/qunit/FocusHandler.qunit.js +5 -4
  503. package/test/sap/ui/core/qunit/Fragment.qunit.js +12 -12
  504. package/test/sap/ui/core/qunit/Fragment_legacyAPIs.qunit.js +13 -12
  505. package/test/sap/ui/core/qunit/HTML.qunit.js +35 -35
  506. package/test/sap/ui/core/qunit/IconPool.qunit.js +6 -6
  507. package/test/sap/ui/core/qunit/InvisibleText.qunit.js +5 -4
  508. package/test/sap/ui/core/qunit/ManagedObject.qunit.js +3 -3
  509. package/test/sap/ui/core/qunit/PlaceAt.qunit.js +2 -2
  510. package/test/sap/ui/core/qunit/ScrollBar.qunit.js +3 -3
  511. package/test/sap/ui/core/qunit/StashedControlSupport.qunit.js +9 -9
  512. package/test/sap/ui/core/qunit/ThemeHelper.qunit.js +5 -4
  513. package/test/sap/ui/core/qunit/ThemeManager.qunit.js +47 -79
  514. package/test/sap/ui/core/qunit/ThemeParameters.qunit.js +40 -372
  515. package/test/sap/ui/core/qunit/ThemeParameters_legacyAPIs.qunit.js +686 -0
  516. package/test/sap/ui/core/qunit/TooltipBase.qunit.js +3 -2
  517. package/test/sap/ui/core/qunit/UIArea.qunit.js +10 -10
  518. package/test/sap/ui/core/qunit/analytics/testsuite4analytics.qunit.html +3 -3
  519. package/test/sap/ui/core/qunit/base/i18n/Localization.qunit.js +4 -3
  520. package/test/sap/ui/core/qunit/base/i18n/ResourceBundle.qunit.js +13 -3
  521. package/test/sap/ui/core/qunit/base/util/UriParameters.qunit.js +27 -1
  522. package/test/sap/ui/core/qunit/bootstrap/BootstrapCustomBootTaskPreloadCss.qunit.js +4 -4
  523. package/test/sap/ui/core/qunit/bootstrap/BootstrapWithCustomBootTask.beforeBootstrap.qunit.js +22 -21
  524. package/test/sap/ui/core/qunit/bootstrap/BootstrapWithCustomBootTask.qunit.js +4 -9
  525. package/test/sap/ui/core/qunit/bootstrap/CalendarClassLoadingWithCustomBootTaskAndPreload.qunit.js +19 -4
  526. package/test/sap/ui/core/qunit/bootstrap/CfgDefaults.qunit.js +3 -2
  527. package/test/sap/ui/core/qunit/bootstrap/CfgFromConfigAttribute.qunit.js +4 -3
  528. package/test/sap/ui/core/qunit/bootstrap/CfgFromGlobalObject.qunit.js +4 -3
  529. package/test/sap/ui/core/qunit/bootstrap/CfgFromTagAttributes.qunit.js +4 -3
  530. package/test/sap/ui/core/qunit/bootstrap/Configuration.qunit.js +2 -198
  531. package/test/sap/ui/core/qunit/bootstrap/Configuration_language_via_URL.qunit.js +210 -0
  532. package/test/sap/ui/core/qunit/bootstrap/ThemeVersion.qunit.js +33 -30
  533. package/test/sap/ui/core/qunit/bootstrap/testsuite.bootstrap.qunit.js +6 -0
  534. package/test/sap/ui/core/qunit/component/Component.qunit.js +12 -0
  535. package/test/sap/ui/core/qunit/component/ComponentSupport.qunit.js +6 -5
  536. package/test/sap/ui/core/qunit/component/Component_dependencyLoading.qunit.js +15 -9
  537. package/test/sap/ui/core/qunit/component/Component_dependencyLoading_unavoidablySync.qunit.js +10 -6
  538. package/test/sap/ui/core/qunit/component/Customizing.qunit.js +8 -7
  539. package/test/sap/ui/core/qunit/component/Customizing_disabled.qunit.js +6 -5
  540. package/test/sap/ui/core/qunit/component/Customizing_legacyAPIs.qunit.js +8 -7
  541. package/test/sap/ui/core/qunit/component/Customizing_multi.qunit.js +7 -6
  542. package/test/sap/ui/core/qunit/component/Customizing_unavoidablySync.qunit.js +5 -4
  543. package/test/sap/ui/core/qunit/component/Metadata.qunit.js +3 -3
  544. package/test/sap/ui/core/qunit/component/Models.qunit.js +103 -44
  545. package/test/sap/ui/core/qunit/component/UIComponent.qunit.js +20 -4
  546. package/test/sap/ui/core/qunit/component/UIComponent_unavoidablySync.qunit.js +5 -4
  547. package/test/sap/ui/core/qunit/component/testdata/dependencyLoading/component1/manifest.json +2 -1
  548. package/test/sap/ui/core/qunit/component/testdata/dependencyLoading/component2/manifest.json +1 -0
  549. package/test/sap/ui/core/qunit/component/testdata/dependencyLoading/component3/manifest.json +2 -1
  550. package/test/sap/ui/core/qunit/component/testdata/dependencyLoading/component4/manifest.json +1 -0
  551. package/test/sap/ui/core/qunit/component/testdata/dependencyLoading/component5/manifest.json +1 -1
  552. package/test/sap/ui/core/qunit/component/testdata/dependencyLoading/component6/manifest.json +1 -0
  553. package/test/sap/ui/core/qunit/component/testdata/dependencyLoading/componentVariant/manifest.json +1 -0
  554. package/test/sap/ui/core/qunit/component/testdata/v2asyncRootView/manifest.json +1 -1
  555. package/test/sap/ui/core/qunit/component/testdata/v2inline/Component.js +1 -1
  556. package/test/sap/ui/core/qunit/composite/XMLComposite.qunit.js +5 -5
  557. package/test/sap/ui/core/qunit/internal/1RingModels.qunit.html +4 -5
  558. package/test/sap/ui/core/qunit/internal/1RingModels.qunit.js +1 -0
  559. package/test/sap/ui/core/qunit/internal/AnnotationParser.qunit.html +4 -4
  560. package/test/sap/ui/core/qunit/internal/testsuite.models.qunit.js +19 -9
  561. package/test/sap/ui/core/qunit/jquery.sap.global-config.qunit.js +2 -4
  562. package/test/sap/ui/core/qunit/jquery.sap.ui.qunit.js +5 -4
  563. package/test/sap/ui/core/qunit/json/JSONModel.qunit.js +5 -9
  564. package/test/sap/ui/core/qunit/messages/Messaging.qunit.js +10 -5
  565. package/test/sap/ui/core/qunit/messages/messagesGeneral.qunit.js +6 -0
  566. package/test/sap/ui/core/qunit/messages/messagesGeneral_legacyAPIs.qunit.js +158 -0
  567. package/test/sap/ui/core/qunit/messages/messagesUsage.qunit.js +5 -4
  568. package/test/sap/ui/core/qunit/messages/testsuite.messaging.base.qunit.js +7 -0
  569. package/test/sap/ui/core/qunit/model/ClientPropertyBinding.qunit.js +47 -0
  570. package/test/sap/ui/core/qunit/mvc/AsyncXMLView.qunit.js +5 -3
  571. package/test/sap/ui/core/qunit/mvc/Controller.qunit.js +3 -3
  572. package/test/sap/ui/core/qunit/mvc/View.qunit.js +5 -1
  573. package/test/sap/ui/core/qunit/mvc/XMLView.qunit.js +6 -5
  574. package/test/sap/ui/core/qunit/mvc/testdata/TypedViewWithRendererRenderer.js +2 -2
  575. package/test/sap/ui/core/qunit/mvc/testdata/stashed/manifest.json +2 -1
  576. package/test/sap/ui/core/qunit/mvc/viewprocessing/ViewProcessing.qunit.js +4 -3
  577. package/test/sap/ui/core/qunit/mvc/viewprocessing/ViewProcessing_legacyAPIs.qunit.js +4 -3
  578. package/test/sap/ui/core/qunit/mvc_legacyAPIs/AsyncXMLView_legacyAPIs.qunit.js +5 -3
  579. package/test/sap/ui/core/qunit/mvc_legacyAPIs/XMLView_legacyAPIs.qunit.js +6 -5
  580. package/test/sap/ui/core/qunit/odata/ODataMessageParserNoFakeService.qunit.js +11 -7
  581. package/test/sap/ui/core/qunit/odata/ODataMetaModel.qunit.js +35 -0
  582. package/test/sap/ui/core/qunit/odata/_AnnotationHelperBasics.qunit.js +10 -4
  583. package/test/sap/ui/core/qunit/odata/data/ODataModelFakeService.js +1 -1
  584. package/test/sap/ui/core/qunit/odata/type/DateTimeBase.qunit.js +5 -0
  585. package/test/sap/ui/core/qunit/odata/type/ODataType.qunit.js +9 -0
  586. package/test/sap/ui/core/qunit/odata/v2/Context.qunit.js +12 -0
  587. package/test/sap/ui/core/qunit/odata/v2/ODataListBindingNoFakeService.qunit.js +422 -9
  588. package/test/sap/ui/core/qunit/odata/v2/ODataModel.integration.qunit.js +483 -33
  589. package/test/sap/ui/core/qunit/odata/v2/ODataModelNoFakeService.qunit.js +121 -2
  590. package/test/sap/ui/core/qunit/odata/v4/Context.qunit.js +95 -8
  591. package/test/sap/ui/core/qunit/odata/v4/ODataBinding.qunit.js +59 -13
  592. package/test/sap/ui/core/qunit/odata/v4/ODataContextBinding.qunit.js +355 -75
  593. package/test/sap/ui/core/qunit/odata/v4/ODataListBinding.qunit.js +152 -19
  594. package/test/sap/ui/core/qunit/odata/v4/ODataModel.integration.qunit.js +1253 -130
  595. package/test/sap/ui/core/qunit/odata/v4/ODataParentBinding.qunit.js +19 -9
  596. package/test/sap/ui/core/qunit/odata/v4/ODataPropertyBinding.qunit.js +6 -27
  597. package/test/sap/ui/core/qunit/odata/v4/data/metadata.json +3 -1
  598. package/test/sap/ui/core/qunit/odata/v4/data/metadata.xml +2 -2
  599. package/test/sap/ui/core/qunit/odata/v4/lib/_AggregationCache.qunit.js +172 -17
  600. package/test/sap/ui/core/qunit/odata/v4/lib/_AggregationHelper.qunit.js +7 -8
  601. package/test/sap/ui/core/qunit/odata/v4/lib/_Cache.qunit.js +185 -84
  602. package/test/sap/ui/core/qunit/odata/v4/lib/_Helper.qunit.js +2 -22
  603. package/test/sap/ui/core/qunit/opa/OpaPlugin.qunit.js +6 -4
  604. package/test/sap/ui/core/qunit/opa/selectors/_Selector.js +3 -2
  605. package/test/sap/ui/core/qunit/opa/selectors/_TableRowItem.js +4 -3
  606. package/test/sap/ui/core/qunit/rule/app/deprecatedJSViewUsage.qunit.js +4 -0
  607. package/test/sap/ui/core/qunit/rule/app/globalApiUsage.qunit.js +4 -0
  608. package/test/sap/ui/core/qunit/rule/app/jquerySapUsage.qunit.js +4 -0
  609. package/test/sap/ui/core/qunit/rule/app/syncXHR.qunit.js +4 -0
  610. package/test/sap/ui/core/qunit/rule/app/syncXHRBootstrap.qunit.js +4 -0
  611. package/test/sap/ui/core/qunit/rule/app/syncXHRBootstrapDebug.qunit.js +4 -0
  612. package/test/sap/ui/core/qunit/rule/app/syncXHRBootstrapDebugBeforeBootstrap.js +4 -0
  613. package/test/sap/ui/core/qunit/rule/config/asynchronousXMLViews.qunit.js +4 -1
  614. package/test/sap/ui/core/qunit/rule/misc/silentEventBus.qunit.js +8 -7
  615. package/test/sap/ui/core/qunit/rule/model/modelSupport.qunit.js +11 -2
  616. package/test/sap/ui/core/qunit/rule/testsuite.rule.qunit.js +18 -0
  617. package/test/sap/ui/core/qunit/test/starter/find/main.js +11 -8
  618. package/test/sap/ui/core/qunit/testsuites/testsuite.databinding.qunit.js +6 -0
  619. package/test/sap/ui/core/qunit/testsuites/testsuite.foundation.enablement.qunit.js +7 -1
  620. package/test/sap/ui/core/qunit/testsuites/testsuite.theming.qunit.js +21 -2
  621. package/test/sap/ui/core/qunit/util/XMLPreprocessor.qunit.js +26 -4
  622. package/test/sap/ui/core/qunit/util/jQuery.sap.Version.qunit.js +5 -5
  623. package/test/sap/ui/core/qunit/util/reflection/JsControlTreeModifier.qunit.js +30 -13
  624. package/test/sap/ui/core/qunit/util/reflection/XmlTreeModifier.qunit.js +40 -16
  625. package/test/sap/ui/core/qunit/util/support/TechnicalInfo.qunit.js +11 -10
  626. package/test/sap/ui/core/qunit/xml/XMLPropertyBinding.qunit.js +69 -8
  627. package/test/sap/ui/core/relnotes/changes-1.118.json +1 -34
  628. package/test/sap/ui/core/relnotes/changes-1.119.json +217 -0
  629. package/test/sap/ui/core/resources/fastnav.js +3 -2
  630. package/test/sap/ui/core/samples/ResponsiveDemo.html +3 -3
  631. package/test/sap/ui/core/samples/components/commands/manifest.json +2 -2
  632. package/test/sap/ui/core/samples/components/sample/manifest.json +2 -1
  633. package/test/sap/ui/core/samples/databinding/DatabindingMessages.html +1 -1
  634. package/test/sap/ui/core/samples/databinding/ODatabindingMessages.html +3 -3
  635. package/test/sap/ui/core/samples/databinding/UnitTable.view.xml +9 -2
  636. package/test/sap/ui/core/samples/formatting/manifest.json +2 -2
  637. package/test/sap/ui/core/samples/mvc/XMLViewAsync.html +62 -61
  638. package/test/sap/ui/core/samples/routing_legacyAPIs/AsyncViews.html +124 -123
  639. package/test/sap/ui/core/terminologies/App.controller.js +3 -2
  640. package/test/sap/ui/core/terminologies/App.view.xml +64 -64
  641. package/test/sap/ui/core/tmpl_legacyAPIs/TemplateSimple.html +38 -37
  642. package/test/sap/ui/core/util/PasteHelper.html +5 -4
  643. package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/firstItem-contextMenu.ref.lnk +1 -1
  644. package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/initial.ref.lnk +1 -1
  645. package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/lastItem-contextMenu.ref.lnk +1 -1
  646. package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/leftDownBtn-contextMenu.ref.lnk +1 -1
  647. package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/myButtonSample-contextMenu.ref.lnk +1 -1
  648. package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/rightDownBtn-contextMenu.ref.lnk +1 -1
  649. package/test/sap/ui/core/samples/databinding/DataBinding.html +0 -135
  650. package/test/sap/ui/core/samples/databinding/DataBindingCalculatedFields.html +0 -229
  651. package/test/sap/ui/core/samples/databinding/DataBindingCompositeTypes.html +0 -273
  652. package/test/sap/ui/core/samples/databinding/DataBindingFormat.html +0 -294
  653. package/test/sap/ui/core/samples/databinding/DataBindingList.html +0 -290
  654. package/test/sap/ui/core/samples/databinding/DataBindingListNamedModel.html +0 -290
  655. package/test/sap/ui/core/samples/databinding/DataBindingListXML.html +0 -280
  656. package/test/sap/ui/core/samples/databinding/DataBindingMasterDetail.html +0 -117
  657. package/test/sap/ui/core/samples/databinding/DataBindingMultiModel.html +0 -154
  658. package/test/sap/ui/core/samples/databinding/DataBindingResourceModel.html +0 -119
  659. package/test/sap/ui/core/samples/databinding/DataBindingSortingFiltering.html +0 -103
  660. package/test/sap/ui/core/samples/databinding/DataBindingTree.html +0 -166
  661. package/test/sap/ui/core/samples/databinding/DataBindingTreeFilter.html +0 -117
  662. package/test/sap/ui/core/samples/databinding/DataBindingTreeFilterXML.html +0 -103
  663. package/test/sap/ui/core/samples/databinding/DataBindingTreeLarge.html +0 -128
  664. package/test/sap/ui/core/samples/databinding/DataBindingTreeWithArrays.html +0 -132
  665. package/test/sap/ui/core/samples/databinding/DataBindingTwoWay.html +0 -158
  666. package/test/sap/ui/core/samples/databinding/DataBindingTwoWayTable.html +0 -141
  667. package/test/sap/ui/core/samples/databinding/DataBindingTypes.html +0 -265
  668. package/test/sap/ui/core/samples/databinding/DataBindingValidation.html +0 -195
  669. package/test/sap/ui/core/samples/databinding/DataBindingXML.html +0 -148
  670. package/test/sap/ui/core/samples/databinding/DataBindingXMLView.html +0 -53
  671. package/test/sap/ui/core/samples/databinding/testdata/ListBinding.view.xml +0 -9
  672. package/test/sap/ui/core/samples/databinding/testdata/test.view.json +0 -15
  673. package/test/sap/ui/core/samples/databinding/testdata/test.view.xml +0 -8
@@ -5,8 +5,6 @@ sap.ui.define([
5
5
  'sap/ui/core/Core',
6
6
  'sap/ui/core/date/CalendarWeekNumbering',
7
7
  'sap/ui/core/format/TimezoneUtil',
8
- 'sap/ui/core/Locale',
9
- 'sap/ui/base/Interface',
10
8
  'sap/ui/core/Theming',
11
9
  'sap/base/config',
12
10
  'sap/base/Log',
@@ -14,7 +12,7 @@ sap.ui.define([
14
12
  '../routing/HistoryUtils',
15
13
  'sap/ui/base/config/URLConfigurationProvider',
16
14
  'sap/ui/core/LocaleData' // only used indirectly via Configuration.getCalendarType
17
- ], function(CalendarType, Configuration, Core, CalendarWeekNumbering, TimezoneUtil, Locale, Interface, Theming, BaseConfig, Log,
15
+ ], function(CalendarType, Configuration, Core, CalendarWeekNumbering, TimezoneUtil, Theming, BaseConfig, Log,
18
16
  GlobalConfigurationProvider, HistoryUtils, URLConfigurationProvider/*, LocaleData*/) {
19
17
  "use strict";
20
18
 
@@ -68,7 +66,7 @@ sap.ui.define([
68
66
  });
69
67
 
70
68
  QUnit.test("Settings", function(assert) {
71
- assert.equal(Configuration.getTheme(), "SapSampleTheme2", "tag config should override global config");
69
+ assert.equal(Theming.getTheme(), "SapSampleTheme2", "tag config should override global config");
72
70
  assert.deepEqual(Configuration.getValue("modules"), ["sap.ui.core.library"], "Module List in configuration matches configured modules/libraries");
73
71
  });
74
72
 
@@ -476,200 +474,6 @@ sap.ui.define([
476
474
  assert.equal(oConfig.getSAPLogonLanguage(), "6N", "setting only BCP47 language again must reset the knowledge about SAP Language");
477
475
  });
478
476
 
479
- QUnit.module("SAP Logon Language (via url)", {
480
- before: function() {
481
- this.oConfig = Configuration;
482
- },
483
- beforeEach: function(assert) {
484
- this.setupConfig = function(sLanguage, data) {
485
- var oCoreMock = {
486
- fireLocalizationChanged: function() {}
487
- };
488
- data = data ? data : {};
489
- this.oStub && this.oStub.restore();
490
- this.oStub = sinon.stub(BaseConfig, "get");
491
- this.oStub.callsFake(function(mParameters) {
492
- if (mParameters.name === "sapUiLanguage") {
493
- return data["sap-ui-language"] || sLanguage || "";
494
- } else if (mParameters.name === "sapLanguage") {
495
- return data["sap-language"] || this.oStub.wrappedMethod.call(this, mParameters);
496
- } else if (mParameters.name === "sapLocale") {
497
- return data["sap-locale"] || this.oStub.wrappedMethod.call(this, mParameters);
498
- } else if (mParameters.name === "sapUiFormatLocale") {
499
- return data["sap-ui-formatLocale"] ? new Locale(data["sap-ui-formatLocale"]) : this.oStub.wrappedMethod.call(this, mParameters);
500
- } else {
501
- return this.oStub.wrappedMethod.call(this, mParameters);
502
- }
503
- }.bind(this));
504
-
505
- // reset sapLogonLanguage
506
- this.oConfig.setCalendarWeekNumbering(CalendarWeekNumbering.Default);
507
- Configuration.setCore(oCoreMock);
508
- return Configuration;
509
- };
510
- },
511
- afterEach: function() {
512
- this.oStub && this.oStub.restore();
513
- }
514
- });
515
-
516
- [
517
- /* URL parameter language languageTag SAP-L Caption */
518
- [ {"sap-language": "en"}, "en", "en", "EN", "sap-language is the valid ISO language EN"],
519
- [ {"sap-language": "EN"}, "EN", "en", "EN", "sap-language is the valid ISO language EN"],
520
- [ {"sap-language": "ZH"}, "zh-Hans", "zh-Hans", "ZH", "sap-language is the known SAP language ZN"],
521
- [ {"sap-language": "ZF"}, "zh-Hant", "zh-Hant", "ZF", "sap-language is the known SAP language ZF"],
522
- [ {"sap-language": "1Q"}, "en-US-x-saptrc", "en-US-x-saptrc", "1Q", "sap-language is the known SAP language 1Q"],
523
- [ {"sap-language": "2Q"}, "en-US-x-sappsd", "en-US-x-sappsd", "2Q", "sap-language is the known SAP language 2Q"],
524
- [ {"sap-language": "3Q"}, "en-US-x-saprigi", "en-US-x-saprigi", "3Q", "sap-language is the known SAP language 3Q"],
525
- [ {"sap-language": "6N"}, "en-GB", "en-GB", "6N", "sap-language is the unknown SAP language 6N"],
526
- [ {"sap-language": "SH"}, "sr-Latn", "sh", "SH", "sap-language is the unknown SAP language 6N"],
527
- [ {"sap-locale": "fr_CH"}, "fr_CH", "fr-CH", "FR", "sap-locale is the accepted BCP47 tag fr_CH"],
528
- [ {"sap-locale": "En_gb", "sap-language": "6N"}, "En_gb", "en-GB", "6N", "valid combination of sap-locale and sap-language (En_gb, 6N)"],
529
- [ {"sap-ui-language":"en_GB", "sap-language": "6N"}, "en-GB", "en-GB", "6N", "valid combination of sap-ui-language and sap-language (en_GB, 6N)"],
530
- [ {"sap-language": "EN", "sap-locale": "en_GB"}, "en_GB", "en-GB", "EN", "valid combination of sap-language and sap-locale, both as BCP47 tag (EN, en_GB)"]
531
- ].forEach(function( data ) {
532
-
533
- QUnit.test(data[4], function(assert) {
534
-
535
- var oConfig = this.setupConfig("de", data[0]);
536
- assert.equal(oConfig.getLanguage(), data[1], "the effective language should be '" + data[1] + "'");
537
- assert.equal(oConfig.getLanguageTag(), data[2], "the effective language tag should be '" + data[2] + "'");
538
- assert.equal(oConfig.getSAPLogonLanguage(), data[3], "the SAP Logon language should be '" + data[3] + "'");
539
-
540
- });
541
-
542
- });
543
-
544
- // url: sap-language=en
545
- // window: language=de
546
- // ==> en
547
- // url: sap-language=en&sap-ui-language=de
548
- // ==> de
549
-
550
- QUnit.test("language via url, locale+language via API", function(assert) {
551
- var oConfig = this.setupConfig("de", {"sap-language": "6N"});
552
- assert.equal(oConfig.getLanguage(), "en-GB", "the effective language still should be 'en-GB'");
553
- assert.equal(oConfig.getLanguageTag(), "en-GB", "the effective language tag still should be 'en-GB'");
554
- assert.equal(oConfig.getSAPLogonLanguage(), "6N", "the SAP Logon language should be '6N' already");
555
- oConfig = this.setupConfig("de", {"sap-language":"1E"});
556
- assert.equal(oConfig.getLanguage(), "de", "the effective language still should be 'de'");
557
- assert.equal(oConfig.getLanguageTag(), "de", "the effective language tag still should be 'de'");
558
- assert.equal(oConfig.getSAPLogonLanguage(), "1E", "the SAP Logon language should be '6N' already");
559
- });
560
-
561
- QUnit.test("language via url, locale+language via API", function(assert) {
562
- // without the second parameter, the sap language now would be 'EN' only
563
- this.oConfig.setLanguage("en-GB");
564
- assert.equal(this.oConfig.getLanguage(), "en-GB", "the effective language should be 'en-GB'");
565
- assert.equal(this.oConfig.getLanguageTag(), "en-GB", "the effective language tag should be 'en-GB'");
566
- assert.equal(this.oConfig.getSAPLogonLanguage(), "6N", "the SAP Logon language should be 'EN'");
567
-
568
- // but with the second parameter, everything should be fine
569
- this.oConfig.setLanguage("en-GB", "6N");
570
- assert.equal(this.oConfig.getLanguage(), "en-GB", "the effective language should be 'en-GB'");
571
- assert.equal(this.oConfig.getLanguageTag(), "en-GB", "the effective language tag should be 'en-GB'");
572
- assert.equal(this.oConfig.getSAPLogonLanguage(), "6N", "the SAP Logon language should be '6N'");
573
-
574
- this.oConfig.setLanguage("en-GB", "1E");
575
- assert.equal(this.oConfig.getLanguage(), "en-GB", "the effective language should be 'en-GB'");
576
- assert.equal(this.oConfig.getLanguageTag(), "en-GB", "the effective language tag should be 'en-GB'");
577
- assert.equal(this.oConfig.getSAPLogonLanguage(), "1E", "the SAP Logon language should be '1E'");
578
-
579
- });
580
-
581
- QUnit.test("error reporting", function(assert) {
582
- this.stub(Log, 'warning').callThrough();
583
- this.setupConfig("de", {"sap-language":"1E", "sap-locale": "en-GB"});
584
- this.oConfig.getLanguage();
585
- assert.strictEqual(Log.warning.called, false, "no warning should be written if accompanied by sap-locale");
586
- this.setupConfig("de", {"sap-language":"1E", "sap-ui-language":"en-GB"});
587
- this.oConfig.getLanguage();
588
- assert.strictEqual(Log.warning.called, false, "no warning should be written if accompanied by sap-ui-language");
589
- this.setupConfig(null, {"sap-language" :"1E"});
590
- this.oConfig.getLanguage();
591
- assert.ok(Log.warning.calledWith(sinon.match(/1E/).and(sinon.match(/BCP-?47/i))), "warning must have been written");
592
- assert.throws(function() {
593
- this.setupConfig("de", {"sap-locale":"1E","sap-language":"1E"});
594
- this.oConfig.getLanguage();
595
- }, "setting an invalid (non-BCP-47) sap-locale should cause an error");
596
- assert.throws(function() {
597
- this.setupConfig("de", {"sap-ui-language":"1E", "sap-language":"1E"});
598
- this.oConfig.getLanguage();
599
- }, "setting an invalid (non-BCP-47) sap-ui-language should cause an error");
600
- });
601
-
602
- QUnit.test("Format Locale", function(assert) {
603
- var rMethodsToIgnore = /^(_|destroy|getInterface$|getMetadata$|isA$)/;
604
-
605
- // Checks via duck-typing whether the given object is an instance of Locale
606
- // The check should work with facades (1.x) as well as with instances (2.x)
607
- function assertCoreLocale(oObject) {
608
- var aMethodNames = Object.keys(Locale.prototype).filter(function(sKey) {
609
- return !rMethodsToIgnore.test(sKey) && typeof Locale.prototype[sKey] === "function";
610
- });
611
-
612
- aMethodNames.forEach(function(sMethodName) {
613
- assert.strictEqual(typeof oObject[sMethodName], "function",
614
- "expected interface method should actually exist: " + sMethodName);
615
- });
616
-
617
- for ( var sMethodName in oObject ) {
618
- if ( !rMethodsToIgnore.test(sMethodName) && typeof oObject[sMethodName] === "function" ) {
619
- assert.ok(aMethodNames.includes(sMethodName),
620
- "actual method should be part of expected interface: " + sMethodName);
621
- }
622
- }
623
- }
624
-
625
- var oConfig;
626
-
627
- //window['sap-ui-config'].formatlocale = 'fr-CH'; // Note: Configuration expects sap-ui-config names converted to lowercase (done by bootstrap)
628
- oConfig = this.setupConfig("fr-FR", {});
629
- oConfig.setFormatLocale("fr-CH");
630
- assert.equal(oConfig.getLanguageTag(), "fr-FR", "language should be fr-FR");
631
- assert.equal(oConfig.getFormatLocale(), "fr-CH", "format locale string should be fr-CH");
632
- assert.ok(oConfig.getFormatSettings().getFormatLocale(), "format locale should exist");
633
- assertCoreLocale(oConfig.getFormatSettings().getFormatLocale());
634
- assert.equal(oConfig.getFormatSettings().getFormatLocale().toString(), "fr-CH", "format locale should be fr-CH");
635
-
636
- //window['sap-ui-config'].formatlocale = null;
637
- oConfig = this.setupConfig("fr-FR", {});
638
- oConfig.setFormatLocale(null);
639
- assert.equal(oConfig.getLanguageTag(), "fr-FR", "language should be fr-FR");
640
- assert.equal(oConfig.getFormatLocale(), "fr-FR", "format locale string should be fr-CH");
641
- assert.ok(oConfig.getFormatSettings().getFormatLocale(), "format locale should exist");
642
- assert.equal(oConfig.getFormatSettings().getFormatLocale().toString(), "fr-FR", "format locale should be fr-CH");
643
- delete window['sap-ui-config'].formatlocale;
644
-
645
- oConfig = this.setupConfig("de", {"sap-language": "EN", "sap-ui-formatLocale": "en-AU"});
646
- assert.equal(oConfig.getLanguageTag(), "en", "language should be en");
647
- assert.equal(oConfig.getFormatLocale(), "en-AU", "format locale string should be en-AU");
648
- assert.ok(oConfig.getFormatSettings().getFormatLocale(), "format locale should exist");
649
- assert.equal(oConfig.getFormatSettings().getFormatLocale().toString(), "en-AU", "format locale should be en-AU");
650
-
651
- oConfig = this.setupConfig();
652
- oConfig.setFormatLocale("en-CA");
653
- assert.equal(oConfig.getFormatLocale(), "en-CA", "format locale string should be en-CA");
654
- assert.ok(oConfig.getFormatSettings().getFormatLocale(), "format locale should exist");
655
- assert.equal(oConfig.getFormatSettings().getFormatLocale().toString(), "en-CA", "format locale should be en-CA");
656
-
657
- oConfig = this.setupConfig("de", {"sap-language": "EN"});
658
- oConfig.setFormatLocale();
659
- assert.equal(oConfig.getFormatLocale(), "en", "format locale string should be en");
660
- assert.ok(oConfig.getFormatSettings().getFormatLocale(), "format locale should exist");
661
- assert.equal(oConfig.getFormatSettings().getFormatLocale().toString(), "en", "format locale should be en");
662
-
663
- assert.throws(function() {
664
- oConfig.setFormatLocale('6N');
665
- }, "setting an invalid (non-BCP-47) format locale should cause an error");
666
- assert.throws(function() {
667
- oConfig.setFormatLocale(new Date());
668
- }, "setting a non-string value as format locale should cause an error");
669
- });
670
-
671
-
672
-
673
477
  QUnit.module("Format settings", {
674
478
  afterEach: function() {
675
479
  browserUrl.reset();
@@ -0,0 +1,210 @@
1
+ /*global QUnit, sinon */
2
+ sap.ui.define([
3
+ "sap/base/Log",
4
+ "sap/base/config",
5
+ "sap/base/config/GlobalConfigurationProvider",
6
+ "sap/ui/base/config/URLConfigurationProvider",
7
+ "sap/ui/core/Configuration",
8
+ "sap/ui/core/Locale",
9
+ "sap/ui/core/date/CalendarWeekNumbering"
10
+ ], (
11
+ Log,
12
+ BaseConfig,
13
+ GlobalConfigurationProvider,
14
+ URLConfigurationProvider,
15
+ Configuration,
16
+ Locale,
17
+ CalendarWeekNumbering
18
+ ) => {
19
+ "use strict";
20
+
21
+ QUnit.module("SAP Logon Language (via url)", {
22
+ beforeEach: (assert) => {
23
+ this.setupConfig = (sLanguage, data) => {
24
+ data = data ? data : {};
25
+ this.oURLProviderStub && this.oURLProviderStub.restore();
26
+ this.oURLProviderStub = sinon.stub(URLConfigurationProvider, "get");
27
+ this.oURLProviderStub.callsFake((sKey) => {
28
+ if (sKey === "sapUiLanguage") {
29
+ return data["sap-ui-language"] || undefined;
30
+ } else if (sKey === "sapLanguage") {
31
+ return data["sap-language"] || this.oURLProviderStub.wrappedMethod.call(this, sKey);
32
+ } else if (sKey === "sapLocale") {
33
+ return data["sap-locale"] || this.oURLProviderStub.wrappedMethod.call(this, sKey);
34
+ } else if (sKey === "sapUiFormatLocale") {
35
+ return data["sap-ui-formatLocale"] || this.oURLProviderStub.wrappedMethod.call(this, sKey);
36
+ } else {
37
+ return this.oURLProviderStub.wrappedMethod.call(this, sKey);
38
+ }
39
+ });
40
+
41
+ this.oGlobalProviderStub && this.oGlobalProviderStub.restore();
42
+ this.oGlobalProviderStub = sinon.stub(GlobalConfigurationProvider, "get");
43
+ this.oGlobalProviderStub.callsFake((sKey) => {
44
+ if (sKey === "sapUiLanguage") {
45
+ return sLanguage || "";
46
+ } else {
47
+ return this.oGlobalProviderStub.wrappedMethod.call(this, sKey);
48
+ }
49
+ });
50
+
51
+ // reset sapLogonLanguage
52
+ Configuration.setCalendarWeekNumbering(CalendarWeekNumbering.Default);
53
+ BaseConfig._.invalidate();
54
+ Configuration.setCore({
55
+ fireLocalizationChanged: () => {}
56
+ });
57
+ return Configuration;
58
+ };
59
+ },
60
+ afterEach: () => {
61
+ this.oURLProviderStub && this.oURLProviderStub.restore();
62
+ this.oGlobalProviderStub && this.oGlobalProviderStub.restore();
63
+ }
64
+ });
65
+
66
+ [
67
+ /* URL parameter language languageTag SAP-L Caption */
68
+ [ {"sap-language": "en"}, "en", "en", "EN", "sap-language is the valid ISO language EN"],
69
+ [ {"sap-language": "EN"}, "EN", "en", "EN", "sap-language is the valid ISO language EN"],
70
+ [ {"sap-language": "ZH"}, "zh-Hans", "zh-Hans", "ZH", "sap-language is the known SAP language ZN"],
71
+ [ {"sap-language": "ZF"}, "zh-Hant", "zh-Hant", "ZF", "sap-language is the known SAP language ZF"],
72
+ [ {"sap-language": "1Q"}, "en-US-x-saptrc", "en-US-x-saptrc", "1Q", "sap-language is the known SAP language 1Q"],
73
+ [ {"sap-language": "2Q"}, "en-US-x-sappsd", "en-US-x-sappsd", "2Q", "sap-language is the known SAP language 2Q"],
74
+ [ {"sap-language": "3Q"}, "en-US-x-saprigi", "en-US-x-saprigi", "3Q", "sap-language is the known SAP language 3Q"],
75
+ [ {"sap-language": "6N"}, "en-GB", "en-GB", "6N", "sap-language is the unknown SAP language 6N"],
76
+ [ {"sap-language": "SH"}, "sr-Latn", "sh", "SH", "sap-language is the unknown SAP language 6N"],
77
+ [ {"sap-locale": "fr_CH"}, "fr_CH", "fr-CH", "FR", "sap-locale is the accepted BCP47 tag fr_CH"],
78
+ [ {"sap-locale": "En_gb", "sap-language": "6N"}, "En_gb", "en-GB", "6N", "valid combination of sap-locale and sap-language (En_gb, 6N)"],
79
+ [ {"sap-ui-language":"en_GB", "sap-language": "6N"}, "en-GB", "en-GB", "6N", "valid combination of sap-ui-language and sap-language (en_GB, 6N)"],
80
+ [ {"sap-language": "EN", "sap-locale": "en_GB"}, "en_GB", "en-GB", "EN", "valid combination of sap-language and sap-locale, both as BCP47 tag (EN, en_GB)"]
81
+ ].forEach((data) => {
82
+ QUnit.test(data[4], (assert) => {
83
+ this.setupConfig("de", data[0]);
84
+ assert.equal(Configuration.getLanguage(), data[1], "the effective language should be '" + data[1] + "'");
85
+ assert.equal(Configuration.getLanguageTag(), data[2], "the effective language tag should be '" + data[2] + "'");
86
+ assert.equal(Configuration.getSAPLogonLanguage(), data[3], "the SAP Logon language should be '" + data[3] + "'");
87
+ });
88
+ });
89
+
90
+ QUnit.test("error reporting", (assert) => {
91
+ sinon.stub(Log, 'warning').callThrough();
92
+ this.setupConfig("de", {"sap-language":"1E", "sap-locale": "en-GB"});
93
+ Configuration.getLanguage();
94
+ assert.strictEqual(Log.warning.called, false, "no warning should be written if accompanied by sap-locale");
95
+ this.setupConfig("de", {"sap-language":"1E", "sap-ui-language":"en-GB"});
96
+ Configuration.getLanguage();
97
+ assert.strictEqual(Log.warning.called, false, "no warning should be written if accompanied by sap-ui-language");
98
+ this.setupConfig(null, {"sap-language" :"1E"});
99
+ Configuration.getLanguage();
100
+ assert.ok(Log.warning.calledWith(sinon.match(/1E/).and(sinon.match(/BCP-?47/i))), "warning must have been written");
101
+ assert.throws(() => {
102
+ this.setupConfig("de", {"sap-locale":"1E","sap-language":"1E"});
103
+ Configuration.getLanguage();
104
+ }, "setting an invalid (non-BCP-47) sap-locale should cause an error");
105
+ assert.throws(() => {
106
+ this.setupConfig("de", {"sap-ui-language":"1E", "sap-language":"1E"});
107
+ Configuration.getLanguage();
108
+ }, "setting an invalid (non-BCP-47) sap-ui-language should cause an error");
109
+ });
110
+
111
+ QUnit.test("Format Locale", (assert) => {
112
+ var rMethodsToIgnore = /^(_|destroy|getInterface$|getMetadata$|isA$)/;
113
+
114
+ // Checks via duck-typing whether the given object is an instance of Locale
115
+ // The check should work with facades (1.x) as well as with instances (2.x)
116
+ const assertCoreLocale = (oObject) => {
117
+ var aMethodNames = Object.keys(Locale.prototype).filter((sKey) => {
118
+ return !rMethodsToIgnore.test(sKey) && typeof Locale.prototype[sKey] === "function";
119
+ });
120
+
121
+ aMethodNames.forEach((sMethodName) => {
122
+ assert.strictEqual(typeof oObject[sMethodName], "function",
123
+ "expected interface method should actually exist: " + sMethodName);
124
+ });
125
+
126
+ for (var sMethodName in oObject) {
127
+ if (!rMethodsToIgnore.test(sMethodName) && typeof oObject[sMethodName] === "function") {
128
+ assert.ok(aMethodNames.includes(sMethodName),
129
+ "actual method should be part of expected interface: " + sMethodName);
130
+ }
131
+ }
132
+ };
133
+
134
+ //window['sap-ui-config'].formatlocale = 'fr-CH'; // Note: Configuration expects sap-ui-config names converted to lowercase (done by bootstrap)
135
+ this.setupConfig("fr-FR", {});
136
+ Configuration.setFormatLocale("fr-CH");
137
+ assert.equal(Configuration.getLanguageTag(), "fr-FR", "language should be fr-FR");
138
+ assert.equal(Configuration.getFormatLocale(), "fr-CH", "format locale string should be fr-CH");
139
+ assert.ok(Configuration.getFormatSettings().getFormatLocale(), "format locale should exist");
140
+ assertCoreLocale(Configuration.getFormatSettings().getFormatLocale());
141
+ assert.equal(Configuration.getFormatSettings().getFormatLocale().toString(), "fr-CH", "format locale should be fr-CH");
142
+
143
+ //window['sap-ui-config'].formatlocale = null;
144
+ this.setupConfig("fr-FR", {});
145
+ Configuration.setFormatLocale(null);
146
+ assert.equal(Configuration.getLanguageTag(), "fr-FR", "language should be fr-FR");
147
+ assert.equal(Configuration.getFormatLocale(), "fr-FR", "format locale string should be fr-CH");
148
+ assert.ok(Configuration.getFormatSettings().getFormatLocale(), "format locale should exist");
149
+ assert.equal(Configuration.getFormatSettings().getFormatLocale().toString(), "fr-FR", "format locale should be fr-CH");
150
+
151
+ this.setupConfig("de", {"sap-language": "EN", "sap-ui-formatLocale": "en-AU"});
152
+ assert.equal(Configuration.getLanguageTag(), "en", "language should be en");
153
+ assert.equal(Configuration.getFormatLocale(), "en-AU", "format locale string should be en-AU");
154
+ assert.ok(Configuration.getFormatSettings().getFormatLocale(), "format locale should exist");
155
+ assert.equal(Configuration.getFormatSettings().getFormatLocale().toString(), "en-AU", "format locale should be en-AU");
156
+
157
+ this.setupConfig();
158
+ Configuration.setFormatLocale("en-CA");
159
+ assert.equal(Configuration.getFormatLocale(), "en-CA", "format locale string should be en-CA");
160
+ assert.ok(Configuration.getFormatSettings().getFormatLocale(), "format locale should exist");
161
+ assert.equal(Configuration.getFormatSettings().getFormatLocale().toString(), "en-CA", "format locale should be en-CA");
162
+
163
+ this.setupConfig("de", {"sap-language": "EN"});
164
+ Configuration.setFormatLocale();
165
+ assert.equal(Configuration.getFormatLocale(), "en", "format locale string should be en");
166
+ assert.ok(Configuration.getFormatSettings().getFormatLocale(), "format locale should exist");
167
+ assert.equal(Configuration.getFormatSettings().getFormatLocale().toString(), "en", "format locale should be en");
168
+
169
+ assert.throws(() => {
170
+ Configuration.setFormatLocale('6N');
171
+ }, "setting an invalid (non-BCP-47) format locale should cause an error");
172
+ assert.throws(() => {
173
+ Configuration.setFormatLocale(new Date());
174
+ }, "setting a non-string value as format locale should cause an error");
175
+ });
176
+
177
+ // url: sap-language=en
178
+ // window: language=de
179
+ // ==> en
180
+ // url: sap-language=en&sap-ui-language=de
181
+ // ==> de
182
+
183
+ QUnit.test("language via url, locale+language via API", (assert) => {
184
+ this.setupConfig("de", {"sap-language": "6N"});
185
+ assert.equal(Configuration.getLanguage(), "en-GB", "the effective language still should be 'en-GB'");
186
+ assert.equal(Configuration.getLanguageTag(), "en-GB", "the effective language tag still should be 'en-GB'");
187
+ assert.equal(Configuration.getSAPLogonLanguage(), "6N", "the SAP Logon language should be '6N' already");
188
+ this.setupConfig("de", {"sap-language":"1E"});
189
+ assert.equal(Configuration.getLanguage(), "de", "the effective language still should be 'de'");
190
+ assert.equal(Configuration.getLanguageTag(), "de", "the effective language tag still should be 'de'");
191
+ assert.equal(Configuration.getSAPLogonLanguage(), "1E", "the SAP Logon language should be '6N' already");
192
+
193
+ // without the second parameter, the sap language now would be 'EN' only
194
+ Configuration.setLanguage("en-GB");
195
+ assert.equal(Configuration.getLanguage(), "en-GB", "the effective language should be 'en-GB'");
196
+ assert.equal(Configuration.getLanguageTag(), "en-GB", "the effective language tag should be 'en-GB'");
197
+ assert.equal(Configuration.getSAPLogonLanguage(), "6N", "the SAP Logon language should be '6N'");
198
+
199
+ // but with the second parameter, everything should be fine
200
+ Configuration.setLanguage("en-GB", "6N");
201
+ assert.equal(Configuration.getLanguage(), "en-GB", "the effective language should be 'en-GB'");
202
+ assert.equal(Configuration.getLanguageTag(), "en-GB", "the effective language tag should be 'en-GB'");
203
+ assert.equal(Configuration.getSAPLogonLanguage(), "6N", "the SAP Logon language should be '6N'");
204
+
205
+ Configuration.setLanguage("en-GB", "1E");
206
+ assert.equal(Configuration.getLanguage(), "en-GB", "the effective language should be 'en-GB'");
207
+ assert.equal(Configuration.getLanguageTag(), "en-GB", "the effective language tag should be 'en-GB'");
208
+ assert.equal(Configuration.getSAPLogonLanguage(), "1E", "the SAP Logon language should be '1E'");
209
+ });
210
+ });
@@ -1,10 +1,11 @@
1
1
  /*global QUnit */
2
2
  sap.ui.define([
3
3
  "sap/ui/thirdparty/URI",
4
+ "sap/ui/core/Theming",
4
5
  "sap/ui/core/theming/Parameters",
5
6
  "sap/ui/qunit/utils/waitForThemeApplied",
6
7
  "sap/ui/core/Configuration"
7
- ], function(URI, Parameters, waitForThemeApplied, Configuration) {
8
+ ], function(URI, Theming, Parameters, waitForThemeApplied, Configuration) {
8
9
  "use strict";
9
10
 
10
11
  // use options and version info as determined by ThemeVersion.beforeBootstrap.qunit.js
@@ -43,7 +44,7 @@ sap.ui.define([
43
44
  } else {
44
45
  sExpectedHref = sap.ui.require.toUrl("sap/ui/core/themes/");
45
46
  }
46
- sExpectedHref += Configuration.getTheme() + "/library.css";
47
+ sExpectedHref += Theming.getTheme() + "/library.css";
47
48
  sExpectedHref = new URL(sExpectedHref, document.baseURI);
48
49
 
49
50
  if (mOptions.versionedLibCss) {
@@ -72,7 +73,7 @@ sap.ui.define([
72
73
  var sHref = oLink.href;
73
74
  var sCoreVersion = sap.ui.getCore().getLoadedLibraries()["sap.ui.core"].version;
74
75
 
75
- var sExpectedHref = new URL("test-resources/sap/ui/core/qunit/testdata/customcss/sap/ui/core/themes/" + Configuration.getTheme() + "/custom.css", document.baseURI);
76
+ var sExpectedHref = new URL("test-resources/sap/ui/core/qunit/testdata/customcss/sap/ui/core/themes/" + Theming.getTheme() + "/custom.css", document.baseURI);
76
77
 
77
78
  assert.equal(
78
79
  sHref,
@@ -91,7 +92,7 @@ sap.ui.define([
91
92
  // trigger loading library-parameters.json files
92
93
  Parameters.get();
93
94
 
94
- if (Configuration.getTheme() === "customcss") {
95
+ if (Theming.getTheme() === "customcss") {
95
96
  // the following asserts are relevant for the 'withCredentials' probing.
96
97
  // Since the requests goes against the UI5 bootstrap origin, the first request is done without credentials.
97
98
  // The second request re-tries with credentials.
@@ -126,33 +127,35 @@ sap.ui.define([
126
127
  QUnit.test("Theme Change", function(assert) {
127
128
  var done = assert.async();
128
129
 
129
- function fnThemeChanged() {
130
- sap.ui.getCore().detachThemeChanged(fnThemeChanged);
131
-
132
- var oLink = document.getElementById("sap-ui-theme-sap.ui.core");
133
- var sHref = oLink.href;
134
- var sCoreVersion = sap.ui.getCore().getLoadedLibraries()["sap.ui.core"].version;
135
-
136
- var sExpectedHref = new URL(sap.ui.require.toUrl("sap/ui/core/themes/sap_bluecrystal/library.css"), document.baseURI);
137
-
138
- if (mOptions.versionedLibCss) {
139
- assert.equal(
140
- sHref,
141
- sExpectedHref + "?version=" + sCoreVersion + "&sap-ui-dist-version=" + oVersionInfo.version,
142
- "'sap.ui.core' library.css URL should contain version parameters."
143
- );
144
- } else {
145
- assert.equal(
146
- sHref,
147
- sExpectedHref,
148
- "'sap.ui.core' library.css URL should not contain version parameters."
149
- );
130
+ function fnApplied(oEvent) {
131
+ if (oEvent.theme === "sap_bluecrystal") {
132
+ Theming.detachApplied(fnApplied);
133
+
134
+ var oLink = document.getElementById("sap-ui-theme-sap.ui.core");
135
+ var sHref = oLink.href;
136
+ var sCoreVersion = sap.ui.getCore().getLoadedLibraries()["sap.ui.core"].version;
137
+
138
+ var sExpectedHref = new URL(sap.ui.require.toUrl("sap/ui/core/themes/sap_bluecrystal/library.css"), document.baseURI);
139
+
140
+ if (mOptions.versionedLibCss) {
141
+ assert.equal(
142
+ sHref,
143
+ sExpectedHref + "?version=" + sCoreVersion + "&sap-ui-dist-version=" + oVersionInfo.version,
144
+ "'sap.ui.core' library.css URL should contain version parameters."
145
+ );
146
+ } else {
147
+ assert.equal(
148
+ sHref,
149
+ sExpectedHref,
150
+ "'sap.ui.core' library.css URL should not contain version parameters."
151
+ );
152
+ }
153
+
154
+ done();
150
155
  }
151
-
152
- done();
153
156
  }
154
- sap.ui.getCore().attachThemeChanged(fnThemeChanged);
155
- sap.ui.getCore().applyTheme("sap_bluecrystal");
157
+ Theming.attachApplied(fnApplied);
158
+ Theming.setTheme("sap_bluecrystal");
156
159
  });
157
160
 
158
161
  QUnit.test("RTL Change", function(assert) {
@@ -162,7 +165,7 @@ sap.ui.define([
162
165
  var sHref = oLink.href;
163
166
  var sCoreVersion = sap.ui.getCore().getLoadedLibraries()["sap.ui.core"].version;
164
167
 
165
- var sExpectedHref = new URL(sap.ui.require.toUrl("sap/ui/core/themes/" + Configuration.getTheme() + "/library-RTL.css"), document.baseURI);
168
+ var sExpectedHref = new URL(sap.ui.require.toUrl("sap/ui/core/themes/" + Theming.getTheme() + "/library-RTL.css"), document.baseURI);
166
169
 
167
170
  if (mOptions.versionedLibCss) {
168
171
  assert.equal(
@@ -367,6 +367,12 @@ sap.ui.define(function() {
367
367
  reorder: false
368
368
  }
369
369
  },
370
+ "Configuration_language_via_URL": {
371
+ group: "Configuration",
372
+ qunit: {
373
+ reorder: false
374
+ }
375
+ },
370
376
  "PreloadCfg-optimized-ui5loader-async": {
371
377
  group: "Configuration",
372
378
  loader: {
@@ -1741,6 +1741,9 @@ sap.ui.define([
1741
1741
  });
1742
1742
 
1743
1743
 
1744
+ /**
1745
+ * @deprecated Since 1.119
1746
+ */
1744
1747
  QUnit.module("Window Event Handler", {
1745
1748
  beforeEach: function() {
1746
1749
 
@@ -1753,6 +1756,9 @@ sap.ui.define([
1753
1756
  }
1754
1757
  });
1755
1758
 
1759
+ /**
1760
+ * @deprecated Since 1.119
1761
+ */
1756
1762
  QUnit.test("onWindowError", function(assert) {
1757
1763
  var MyOnWindowErrorComponent = Component.extend("test.onWindowError.Component");
1758
1764
 
@@ -1786,6 +1792,9 @@ sap.ui.define([
1786
1792
  assert.equal(this.removeEventListenerSpy.getCall(0).thisValue, window, "removeEventListener has been called on the window object");
1787
1793
  });
1788
1794
 
1795
+ /**
1796
+ * @deprecated Since 1.119
1797
+ */
1789
1798
  QUnit.test("onWindowBeforeUnload", function(assert) {
1790
1799
  var MyOnWindowBeforeUnloadComponent = Component.extend("test.onWindowBeforeUnload.Component");
1791
1800
 
@@ -1812,6 +1821,9 @@ sap.ui.define([
1812
1821
  assert.equal(this.removeEventListenerSpy.getCall(0).thisValue, window, "removeEventListener has been called on the window object");
1813
1822
  });
1814
1823
 
1824
+ /**
1825
+ * @deprecated Since 1.119
1826
+ */
1815
1827
  QUnit.test("onWindowUnload", function(assert) {
1816
1828
  var MyOnWindowUnloadComponent = Component.extend("test.onWindowUnload.Component");
1817
1829
 
@@ -4,8 +4,9 @@ sap.ui.define([
4
4
  'sap/ui/core/UIComponent',
5
5
  'sap/ui/core/ComponentContainer',
6
6
  'sap/ui/core/ComponentSupport',
7
+ "sap/ui/core/Element",
7
8
  'sap/ui/core/library'
8
- ], function(Log, hyphenate, UIComponent, ComponentContainer, ComponentSupport, library) {
9
+ ], function(Log, hyphenate, UIComponent, ComponentContainer, ComponentSupport, Element, library) {
9
10
 
10
11
  "use strict";
11
12
  /*global QUnit, sinon, Promise*/
@@ -197,10 +198,10 @@ sap.ui.define([
197
198
  assert.ok(document.getElementById("container3"), "ComponentContainer element for third Component found!");
198
199
  assert.ok(document.getElementById("container4"), "ComponentContainer element for fourth Component found!");
199
200
 
200
- var oContainer1 = sap.ui.getCore().byId("container1");
201
- var oContainer2 = sap.ui.getCore().byId("container2");
202
- var oContainer3 = sap.ui.getCore().byId("container3");
203
- var oContainer4 = sap.ui.getCore().byId("container4");
201
+ var oContainer1 = Element.getElementById("container1");
202
+ var oContainer2 = Element.getElementById("container2");
203
+ var oContainer3 = Element.getElementById("container3");
204
+ var oContainer4 = Element.getElementById("container4");
204
205
  assert.ok(oContainer1 instanceof ComponentContainer, "ComponentContainer for first Component found!");
205
206
  assert.ok(oContainer2 instanceof ComponentContainer, "ComponentContainer for second Component found!");
206
207
  assert.ok(oContainer3 instanceof ComponentContainer, "ComponentContainer for third Component found!");