@openui5/sap.ui.core 1.99.0 → 1.100.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 (355) hide show
  1. package/THIRDPARTY.txt +2 -2
  2. package/package.json +1 -1
  3. package/src/jquery.sap.global.js +6 -3
  4. package/src/jquery.sap.properties.js +1 -1
  5. package/src/jquery.sap.resources.js +1 -1
  6. package/src/jquery.sap.script.js +1 -1
  7. package/src/jquery.sap.storage.js +3 -3
  8. package/src/sap/base/Log.js +1 -1
  9. package/src/sap/base/strings/whitespaceReplacer.js +1 -1
  10. package/src/sap/base/util/LoaderExtensions.js +1 -10
  11. package/src/sap/base/util/UriParameters.js +2 -2
  12. package/src/sap/base/util/restricted/_CancelablePromise.js +1 -1
  13. package/src/sap/base/util/restricted/_castArray.js +1 -1
  14. package/src/sap/base/util/restricted/_compact.js +1 -1
  15. package/src/sap/base/util/restricted/_curry.js +1 -1
  16. package/src/sap/base/util/restricted/_debounce.js +1 -1
  17. package/src/sap/base/util/restricted/_difference.js +1 -1
  18. package/src/sap/base/util/restricted/_differenceBy.js +1 -1
  19. package/src/sap/base/util/restricted/_differenceWith.js +1 -1
  20. package/src/sap/base/util/restricted/_flatMap.js +1 -1
  21. package/src/sap/base/util/restricted/_flatMapDeep.js +1 -1
  22. package/src/sap/base/util/restricted/_flatMapDepth.js +1 -1
  23. package/src/sap/base/util/restricted/_flatten.js +1 -1
  24. package/src/sap/base/util/restricted/_flattenDeep.js +1 -1
  25. package/src/sap/base/util/restricted/_flattenDepth.js +1 -1
  26. package/src/sap/base/util/restricted/_intersection.js +1 -1
  27. package/src/sap/base/util/restricted/_intersectionBy.js +1 -1
  28. package/src/sap/base/util/restricted/_intersectionWith.js +1 -1
  29. package/src/sap/base/util/restricted/_isEqual.js +1 -1
  30. package/src/sap/base/util/restricted/_isEqualWith.js +1 -1
  31. package/src/sap/base/util/restricted/_isNil.js +1 -1
  32. package/src/sap/base/util/restricted/_max.js +1 -1
  33. package/src/sap/base/util/restricted/_merge.js +1 -1
  34. package/src/sap/base/util/restricted/_mergeWith.js +1 -1
  35. package/src/sap/base/util/restricted/_min.js +1 -1
  36. package/src/sap/base/util/restricted/_omit.js +1 -1
  37. package/src/sap/base/util/restricted/_pick.js +1 -1
  38. package/src/sap/base/util/restricted/_pickBy.js +1 -1
  39. package/src/sap/base/util/restricted/_throttle.js +1 -1
  40. package/src/sap/base/util/restricted/_toArray.js +1 -1
  41. package/src/sap/base/util/restricted/_union.js +1 -1
  42. package/src/sap/base/util/restricted/_unionBy.js +1 -1
  43. package/src/sap/base/util/restricted/_unionWith.js +1 -1
  44. package/src/sap/base/util/restricted/_uniq.js +1 -1
  45. package/src/sap/base/util/restricted/_uniqBy.js +1 -1
  46. package/src/sap/base/util/restricted/_uniqWith.js +1 -1
  47. package/src/sap/base/util/restricted/_without.js +1 -1
  48. package/src/sap/base/util/restricted/_xor.js +1 -1
  49. package/src/sap/base/util/restricted/_xorBy.js +1 -1
  50. package/src/sap/base/util/restricted/_xorWith.js +1 -1
  51. package/src/sap/base/util/restricted/_zipObject.js +1 -1
  52. package/src/sap/base/util/restricted/_zipObjectDeep.js +1 -1
  53. package/src/sap/ui/Device.js +3 -3
  54. package/src/sap/ui/Global.js +4 -4
  55. package/src/sap/ui/base/Event.js +1 -1
  56. package/src/sap/ui/base/EventProvider.js +1 -1
  57. package/src/sap/ui/base/ExpressionParser.js +1 -1
  58. package/src/sap/ui/base/Interface.js +1 -1
  59. package/src/sap/ui/base/ManagedObject.js +1 -1
  60. package/src/sap/ui/base/ManagedObjectMetadata.js +1 -1
  61. package/src/sap/ui/base/ManagedObjectObserver.js +2 -0
  62. package/src/sap/ui/base/Metadata.js +1 -1
  63. package/src/sap/ui/base/Object.js +1 -1
  64. package/src/sap/ui/base/ObjectPool.js +1 -1
  65. package/src/sap/ui/core/.library +2 -2
  66. package/src/sap/ui/core/BusyIndicator.js +1 -1
  67. package/src/sap/ui/core/Component.js +1 -1
  68. package/src/sap/ui/core/ComponentContainer.js +1 -1
  69. package/src/sap/ui/core/ComponentMetadata.js +2 -2
  70. package/src/sap/ui/core/ComponentSupport.js +1 -1
  71. package/src/sap/ui/core/Configuration.js +3 -1
  72. package/src/sap/ui/core/Control.js +1 -1
  73. package/src/sap/ui/core/Core.js +3 -1
  74. package/src/sap/ui/core/CustomData.js +1 -1
  75. package/src/sap/ui/core/DeclarativeSupport.js +1 -1
  76. package/src/sap/ui/core/Element.js +1 -1
  77. package/src/sap/ui/core/ElementMetadata.js +1 -1
  78. package/src/sap/ui/core/EnabledPropagator.js +1 -1
  79. package/src/sap/ui/core/EventBus.js +1 -1
  80. package/src/sap/ui/core/Fragment.js +1 -1
  81. package/src/sap/ui/core/HTML.js +1 -1
  82. package/src/sap/ui/core/History.js +1 -1
  83. package/src/sap/ui/core/Icon.js +17 -3
  84. package/src/sap/ui/core/IndicationColorSupport.js +1 -1
  85. package/src/sap/ui/core/IntervalTrigger.js +1 -1
  86. package/src/sap/ui/core/InvisibleMessage.js +1 -1
  87. package/src/sap/ui/core/InvisibleRenderer.js +1 -1
  88. package/src/sap/ui/core/InvisibleText.js +1 -1
  89. package/src/sap/ui/core/Item.js +1 -1
  90. package/src/sap/ui/core/LabelEnablement.js +1 -1
  91. package/src/sap/ui/core/LayoutData.js +1 -1
  92. package/src/sap/ui/core/ListItem.js +1 -1
  93. package/src/sap/ui/core/LocalBusyIndicator.js +1 -1
  94. package/src/sap/ui/core/Locale.js +1 -1
  95. package/src/sap/ui/core/LocaleData.js +24 -5
  96. package/src/sap/ui/core/Manifest.js +1 -1
  97. package/src/sap/ui/core/Message.js +1 -1
  98. package/src/sap/ui/core/Patcher.js +3 -3
  99. package/src/sap/ui/core/Popup.js +9 -6
  100. package/src/sap/ui/core/RenderManager.js +1 -1
  101. package/src/sap/ui/core/Renderer.js +1 -1
  102. package/src/sap/ui/core/ResizeHandler.js +1 -1
  103. package/src/sap/ui/core/ScrollBar.js +1 -1
  104. package/src/sap/ui/core/SeparatorItem.js +1 -1
  105. package/src/sap/ui/core/Title.js +1 -1
  106. package/src/sap/ui/core/TooltipBase.js +1 -1
  107. package/src/sap/ui/core/UIArea.js +1 -1
  108. package/src/sap/ui/core/UIComponent.js +1 -1
  109. package/src/sap/ui/core/UIComponentMetadata.js +1 -1
  110. package/src/sap/ui/core/ValueStateSupport.js +1 -1
  111. package/src/sap/ui/core/VariantLayoutData.js +1 -1
  112. package/src/sap/ui/core/XMLComposite.js +1 -1
  113. package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
  114. package/src/sap/ui/core/XMLTemplateProcessor.js +7 -6
  115. package/src/sap/ui/core/_IconRegistry.js +3 -2
  116. package/src/sap/ui/core/cache/CacheManager.js +1 -1
  117. package/src/sap/ui/core/cache/LRUPersistentCache.js +2 -1
  118. package/src/sap/ui/core/cldr/en_AU.json +1 -1
  119. package/src/sap/ui/core/date/Buddhist.js +3 -3
  120. package/src/sap/ui/core/date/Japanese.js +3 -3
  121. package/src/sap/ui/core/date/UniversalDate.js +10 -0
  122. package/src/sap/ui/core/date/UniversalDateUtils.js +1 -1
  123. package/src/sap/ui/core/delegate/ItemNavigation.js +1 -1
  124. package/src/sap/ui/core/delegate/ScrollEnablement.js +1 -1
  125. package/src/sap/ui/core/dnd/DragAndDrop.js +19 -16
  126. package/src/sap/ui/core/dnd/DragDropBase.js +1 -1
  127. package/src/sap/ui/core/dnd/DragDropInfo.js +1 -1
  128. package/src/sap/ui/core/dnd/DragInfo.js +1 -1
  129. package/src/sap/ui/core/dnd/DropInfo.js +3 -3
  130. package/src/sap/ui/core/format/DateFormat.js +125 -61
  131. package/src/sap/ui/core/format/DateFormatTimezoneDisplay.js +1 -0
  132. package/src/sap/ui/core/format/NumberFormat.js +331 -179
  133. package/src/sap/ui/core/format/TimezoneUtil.js +1 -1
  134. package/src/sap/ui/core/hyphenation/Hyphenation.js +1 -1
  135. package/src/sap/ui/core/library.js +85 -49
  136. package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
  137. package/src/sap/ui/core/message/Message.js +1 -1
  138. package/src/sap/ui/core/message/MessageManager.js +1 -1
  139. package/src/sap/ui/core/message/MessageParser.js +1 -1
  140. package/src/sap/ui/core/message/MessageProcessor.js +1 -1
  141. package/src/sap/ui/core/messagebundle.properties +0 -2
  142. package/src/sap/ui/core/messagebundle_ar.properties +0 -1
  143. package/src/sap/ui/core/messagebundle_bg.properties +0 -1
  144. package/src/sap/ui/core/messagebundle_ca.properties +0 -1
  145. package/src/sap/ui/core/messagebundle_cs.properties +0 -1
  146. package/src/sap/ui/core/messagebundle_cy.properties +0 -1
  147. package/src/sap/ui/core/messagebundle_da.properties +0 -1
  148. package/src/sap/ui/core/messagebundle_de.properties +0 -1
  149. package/src/sap/ui/core/messagebundle_el.properties +0 -1
  150. package/src/sap/ui/core/messagebundle_en.properties +0 -1
  151. package/src/sap/ui/core/messagebundle_en_GB.properties +0 -1
  152. package/src/sap/ui/core/messagebundle_en_US_sappsd.properties +0 -1
  153. package/src/sap/ui/core/messagebundle_en_US_saptrc.properties +0 -1
  154. package/src/sap/ui/core/messagebundle_es.properties +0 -1
  155. package/src/sap/ui/core/messagebundle_es_MX.properties +0 -1
  156. package/src/sap/ui/core/messagebundle_et.properties +0 -1
  157. package/src/sap/ui/core/messagebundle_fi.properties +0 -1
  158. package/src/sap/ui/core/messagebundle_fr.properties +0 -1
  159. package/src/sap/ui/core/messagebundle_fr_CA.properties +0 -1
  160. package/src/sap/ui/core/messagebundle_hi.properties +0 -1
  161. package/src/sap/ui/core/messagebundle_hr.properties +0 -1
  162. package/src/sap/ui/core/messagebundle_hu.properties +0 -1
  163. package/src/sap/ui/core/messagebundle_id.properties +0 -1
  164. package/src/sap/ui/core/messagebundle_it.properties +0 -1
  165. package/src/sap/ui/core/messagebundle_iw.properties +0 -1
  166. package/src/sap/ui/core/messagebundle_ja.properties +0 -1
  167. package/src/sap/ui/core/messagebundle_kk.properties +0 -1
  168. package/src/sap/ui/core/messagebundle_ko.properties +1 -2
  169. package/src/sap/ui/core/messagebundle_lt.properties +0 -1
  170. package/src/sap/ui/core/messagebundle_lv.properties +0 -1
  171. package/src/sap/ui/core/messagebundle_ms.properties +0 -1
  172. package/src/sap/ui/core/messagebundle_nl.properties +0 -1
  173. package/src/sap/ui/core/messagebundle_no.properties +0 -1
  174. package/src/sap/ui/core/messagebundle_pl.properties +0 -1
  175. package/src/sap/ui/core/messagebundle_pt.properties +0 -1
  176. package/src/sap/ui/core/messagebundle_pt_PT.properties +0 -1
  177. package/src/sap/ui/core/messagebundle_ro.properties +0 -1
  178. package/src/sap/ui/core/messagebundle_ru.properties +0 -1
  179. package/src/sap/ui/core/messagebundle_sh.properties +0 -1
  180. package/src/sap/ui/core/messagebundle_sk.properties +0 -1
  181. package/src/sap/ui/core/messagebundle_sl.properties +0 -1
  182. package/src/sap/ui/core/messagebundle_sv.properties +0 -1
  183. package/src/sap/ui/core/messagebundle_th.properties +0 -1
  184. package/src/sap/ui/core/messagebundle_tr.properties +0 -1
  185. package/src/sap/ui/core/messagebundle_uk.properties +0 -1
  186. package/src/sap/ui/core/messagebundle_vi.properties +0 -1
  187. package/src/sap/ui/core/messagebundle_zh_CN.properties +0 -1
  188. package/src/sap/ui/core/messagebundle_zh_TW.properties +0 -1
  189. package/src/sap/ui/core/mvc/Controller.js +1 -1
  190. package/src/sap/ui/core/mvc/ControllerExtensionProvider.js +1 -1
  191. package/src/sap/ui/core/mvc/HTMLView.js +1 -1
  192. package/src/sap/ui/core/mvc/JSONView.js +1 -1
  193. package/src/sap/ui/core/mvc/JSView.js +1 -1
  194. package/src/sap/ui/core/mvc/TemplateView.js +1 -1
  195. package/src/sap/ui/core/mvc/View.js +1 -1
  196. package/src/sap/ui/core/mvc/XMLView.js +9 -1
  197. package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
  198. package/src/sap/ui/core/plugin/LessSupport.js +1 -1
  199. package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -1
  200. package/src/sap/ui/core/postmessage/Bus.js +1 -1
  201. package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
  202. package/src/sap/ui/core/rules/Misc.support.js +8 -3
  203. package/src/sap/ui/core/search/OpenSearchProvider.js +1 -1
  204. package/src/sap/ui/core/search/SearchProvider.js +1 -1
  205. package/src/sap/ui/core/service/Service.js +1 -1
  206. package/src/sap/ui/core/service/ServiceFactory.js +1 -1
  207. package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
  208. package/src/sap/ui/core/support/Plugin.js +1 -1
  209. package/src/sap/ui/core/support/Support.js +3 -3
  210. package/src/sap/ui/core/support/plugins/ControlTree.js +1 -1
  211. package/src/sap/ui/core/support/plugins/Interaction.js +1 -1
  212. package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
  213. package/src/sap/ui/core/support/plugins/Performance.js +1 -1
  214. package/src/sap/ui/core/support/plugins/Selector.js +1 -1
  215. package/src/sap/ui/core/support/plugins/TechInfo.js +1 -1
  216. package/src/sap/ui/core/support/plugins/Trace.js +1 -1
  217. package/src/sap/ui/core/support/plugins/ViewInfo.js +1 -1
  218. package/src/sap/ui/core/themes/base/CommandShortcutHints.less +1 -1
  219. package/src/sap/ui/core/themes/base/base.less +1108 -35
  220. package/src/sap/ui/core/themes/base/global.less +158 -4
  221. package/src/sap/ui/core/themes/sap_hcb/global.less +157 -2
  222. package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
  223. package/src/sap/ui/core/tmpl/DOMElement.js +1 -1
  224. package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
  225. package/src/sap/ui/core/tmpl/Template.js +1 -1
  226. package/src/sap/ui/core/tmpl/TemplateControl.js +1 -1
  227. package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
  228. package/src/sap/ui/core/util/Export.js +1 -1
  229. package/src/sap/ui/core/util/ExportCell.js +1 -1
  230. package/src/sap/ui/core/util/ExportColumn.js +1 -1
  231. package/src/sap/ui/core/util/ExportRow.js +1 -1
  232. package/src/sap/ui/core/util/ExportType.js +1 -1
  233. package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
  234. package/src/sap/ui/core/util/File.js +1 -1
  235. package/src/sap/ui/core/util/LibraryInfo.js +1 -1
  236. package/src/sap/ui/core/util/MockServer.js +3 -2
  237. package/src/sap/ui/core/util/PasteHelper.js +2 -2
  238. package/src/sap/ui/core/util/XMLPreprocessor.js +1 -0
  239. package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
  240. package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
  241. package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
  242. package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
  243. package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
  244. package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
  245. package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
  246. package/src/sap/ui/core/ws/ReadyState.js +1 -1
  247. package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
  248. package/src/sap/ui/core/ws/WebSocket.js +1 -1
  249. package/src/sap/ui/debug/ControlTree.js +1 -1
  250. package/src/sap/ui/debug/DebugEnv.js +1 -1
  251. package/src/sap/ui/debug/LogViewer.js +2 -2
  252. package/src/sap/ui/debug/PropertyList.js +1 -1
  253. package/src/sap/ui/model/ClientModel.js +1 -1
  254. package/src/sap/ui/model/CompositeBinding.js +3 -0
  255. package/src/sap/ui/model/CompositeDataState.js +1 -1
  256. package/src/sap/ui/model/CompositeType.js +13 -1
  257. package/src/sap/ui/model/DataState.js +1 -1
  258. package/src/sap/ui/model/MetaModel.js +1 -1
  259. package/src/sap/ui/model/Model.js +1 -1
  260. package/src/sap/ui/model/SelectionModel.js +1 -1
  261. package/src/sap/ui/model/SimpleType.js +1 -1
  262. package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
  263. package/src/sap/ui/model/Type.js +1 -1
  264. package/src/sap/ui/model/_Helper.js +22 -0
  265. package/src/sap/ui/model/analytics/AnalyticalBinding.js +28 -12
  266. package/src/sap/ui/model/base/ManagedObjectModel.js +8 -6
  267. package/src/sap/ui/model/json/JSONModel.js +15 -8
  268. package/src/sap/ui/model/message/MessageModel.js +1 -1
  269. package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
  270. package/src/sap/ui/model/odata/ODataMessageParser.js +1 -1
  271. package/src/sap/ui/model/odata/ODataMetaModel.js +1 -1
  272. package/src/sap/ui/model/odata/ODataMetadata.js +1 -1
  273. package/src/sap/ui/model/odata/ODataModel.js +1 -1
  274. package/src/sap/ui/model/odata/ODataPropertyBinding.js +3 -1
  275. package/src/sap/ui/model/odata/ODataTreeBindingFlat.js +1 -1
  276. package/src/sap/ui/model/odata/type/Boolean.js +1 -1
  277. package/src/sap/ui/model/odata/type/Byte.js +1 -1
  278. package/src/sap/ui/model/odata/type/Currency.js +1 -1
  279. package/src/sap/ui/model/odata/type/Date.js +1 -1
  280. package/src/sap/ui/model/odata/type/DateTime.js +1 -1
  281. package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
  282. package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
  283. package/src/sap/ui/model/odata/type/DateTimeWithTimezone.js +54 -46
  284. package/src/sap/ui/model/odata/type/Decimal.js +1 -1
  285. package/src/sap/ui/model/odata/type/Double.js +1 -1
  286. package/src/sap/ui/model/odata/type/Guid.js +1 -1
  287. package/src/sap/ui/model/odata/type/Int.js +1 -1
  288. package/src/sap/ui/model/odata/type/Int16.js +1 -1
  289. package/src/sap/ui/model/odata/type/Int32.js +1 -1
  290. package/src/sap/ui/model/odata/type/Int64.js +1 -1
  291. package/src/sap/ui/model/odata/type/ODataType.js +1 -1
  292. package/src/sap/ui/model/odata/type/Raw.js +1 -1
  293. package/src/sap/ui/model/odata/type/SByte.js +1 -1
  294. package/src/sap/ui/model/odata/type/Single.js +1 -1
  295. package/src/sap/ui/model/odata/type/Stream.js +1 -1
  296. package/src/sap/ui/model/odata/type/String.js +1 -1
  297. package/src/sap/ui/model/odata/type/Time.js +1 -1
  298. package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
  299. package/src/sap/ui/model/odata/type/Unit.js +1 -1
  300. package/src/sap/ui/model/odata/v2/Context.js +7 -3
  301. package/src/sap/ui/model/odata/v2/ODataAnnotations.js +1 -1
  302. package/src/sap/ui/model/odata/v2/ODataListBinding.js +109 -26
  303. package/src/sap/ui/model/odata/v2/ODataModel.js +236 -45
  304. package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +1 -1
  305. package/src/sap/ui/model/odata/v4/Context.js +20 -22
  306. package/src/sap/ui/model/odata/v4/ODataBinding.js +50 -32
  307. package/src/sap/ui/model/odata/v4/ODataContextBinding.js +33 -5
  308. package/src/sap/ui/model/odata/v4/ODataListBinding.js +183 -46
  309. package/src/sap/ui/model/odata/v4/ODataMetaModel.js +1 -1
  310. package/src/sap/ui/model/odata/v4/ODataModel.js +185 -24
  311. package/src/sap/ui/model/odata/v4/ODataParentBinding.js +25 -57
  312. package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +3 -2
  313. package/src/sap/ui/model/odata/v4/lib/_Cache.js +146 -31
  314. package/src/sap/ui/model/odata/v4/lib/_GroupLock.js +4 -0
  315. package/src/sap/ui/model/odata/v4/lib/_Helper.js +6 -3
  316. package/src/sap/ui/model/odata/v4/lib/_Requestor.js +162 -8
  317. package/src/sap/ui/model/resource/ResourceModel.js +1 -1
  318. package/src/sap/ui/model/type/Boolean.js +1 -1
  319. package/src/sap/ui/model/type/Currency.js +1 -1
  320. package/src/sap/ui/model/type/Date.js +1 -1
  321. package/src/sap/ui/model/type/DateInterval.js +1 -1
  322. package/src/sap/ui/model/type/DateTime.js +1 -1
  323. package/src/sap/ui/model/type/DateTimeInterval.js +1 -1
  324. package/src/sap/ui/model/type/FileSize.js +1 -1
  325. package/src/sap/ui/model/type/Float.js +1 -1
  326. package/src/sap/ui/model/type/Integer.js +1 -1
  327. package/src/sap/ui/model/type/String.js +1 -1
  328. package/src/sap/ui/model/type/Time.js +1 -1
  329. package/src/sap/ui/model/type/TimeInterval.js +1 -1
  330. package/src/sap/ui/model/type/Unit.js +1 -1
  331. package/src/sap/ui/model/xml/XMLModel.js +1 -1
  332. package/src/sap/ui/performance/trace/FESR.js +1 -1
  333. package/src/sap/ui/performance/trace/FESRHelper.js +72 -0
  334. package/src/sap/ui/performance/trace/Interaction.js +6 -2
  335. package/src/sap/ui/qunit/qunit-2-css.js +4 -4
  336. package/src/sap/ui/qunit/qunit-css.js +4 -4
  337. package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
  338. package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +1 -1
  339. package/src/sap/ui/test/BranchTracking.js +1 -0
  340. package/src/sap/ui/test/OpaBuilder.js +7 -7
  341. package/src/sap/ui/test/TestUtils.js +10 -0
  342. package/src/sap/ui/test/_UsageReport.js +1 -1
  343. package/src/sap/ui/test/generic/GenericTestCollection.js +176 -0
  344. package/src/sap/ui/test/generic/TestBase.js +151 -0
  345. package/src/sap/ui/test/generic/Utils.js +284 -0
  346. package/src/sap/ui/test/selectors/_ControlSelectorGenerator.js +9 -8
  347. package/src/sap/ui/test/selectors/_ControlSelectorValidator.js +1 -1
  348. package/src/sap/ui/test/starter/_setupAndStart.js +4 -0
  349. package/src/sap/ui/thirdparty/IPv6.js +1 -1
  350. package/src/sap/ui/thirdparty/SecondLevelDomains.js +1 -1
  351. package/src/sap/ui/thirdparty/URI.js +7 -3
  352. package/src/sap/ui/thirdparty/URITemplate.js +1 -1
  353. package/src/sap/ui/thirdparty/jszip.js +17 -7
  354. package/src/sap/ui/util/Mobile.js +17 -0
  355. package/src/sap/ui/util/Storage.js +1 -1
@@ -52,6 +52,7 @@ sap.ui.define([
52
52
  *
53
53
  * @public
54
54
  * @hideconstructor
55
+ * @see {@link topic:91f2eba36f4d1014b6dd926db0e91070 Date Format}
55
56
  * @see http://unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table
56
57
  * @alias sap.ui.core.format.DateFormat
57
58
  */
@@ -73,6 +74,18 @@ sap.ui.define([
73
74
  // Cache for parsed CLDR DatePattern
74
75
  var mCldrDatePattern = {};
75
76
 
77
+ /**
78
+ * Timezone parameter type check
79
+ *
80
+ * @param {string} sTimezone The timezone to check
81
+ * @throws {TypeError} Thrown if the parameter <code>sTimezone</code> is provided and has the wrong type.
82
+ */
83
+ var checkTimezoneParameterType = function (sTimezone) {
84
+ if (typeof sTimezone !== "string" && !(sTimezone instanceof String) && sTimezone != null) {
85
+ throw new TypeError("The given timezone must be a string.");
86
+ }
87
+ };
88
+
76
89
  DateFormat.oDateInfo = {
77
90
  type: mDateFormatTypes.DATE,
78
91
  oDefaultFormatOptions: {
@@ -288,8 +301,10 @@ sap.ui.define([
288
301
  *
289
302
  * @param {Date} oJSDate The date to format
290
303
  * @param {string} [sTimezone] The IANA timezone ID in which the date will be calculated and
291
- * formatted e.g. "America/New_York". If omitted, the timezone will be taken from {@link sap.ui.core.Configuration#getTimezone}.
292
- * @return {string} the formatted output value. If an invalid date is given, an empty string is returned.
304
+ * formatted e.g. "America/New_York". If the parameter is omitted, <code>null</code> or an empty string, the timezone
305
+ * will be taken from {@link sap.ui.core.Configuration#getTimezone}. For an invalid IANA timezone ID, an empty string will be returned.
306
+ * @throws {TypeError} Thrown if the parameter <code>sTimezone</code> is provided and has the wrong type.
307
+ * @return {string} the formatted output value. If an invalid date or timezone is given, an empty string is returned.
293
308
  * @name sap.ui.core.format.DateFormat.DateTimeWithTimezone.format
294
309
  * @function
295
310
  * @public
@@ -322,11 +337,13 @@ sap.ui.define([
322
337
  *
323
338
  * @param {string} sValue the string containing a formatted date/time value
324
339
  * @param {string} [sTimezone] The IANA timezone ID which should be used to convert the date
325
- * e.g. "America/New_York". If omitted, the timezone will be taken from {@link sap.ui.core.Configuration#getTimezone}.
340
+ * e.g. "America/New_York". If the parameter is omitted, <code>null</code> or an empty string, the timezone will be taken
341
+ * from {@link sap.ui.core.Configuration#getTimezone}. For an invalid IANA timezone ID, <code>null</code> will be returned.
326
342
  * @param {boolean} [bStrict] Whether to be strict with regards to the value ranges of date fields,
327
343
  * e.g. for a month pattern of <code>MM</code> and a value range of [1-12]
328
344
  * <code>strict</code> ensures that the value is within the range;
329
345
  * if it is larger than <code>12</code> it cannot be parsed and <code>null</code> is returned
346
+ * @throws {TypeError} Thrown if the parameter <code>sTimezone</code> is provided and has the wrong type.
330
347
  * @return {Array} the parsed values
331
348
  * <ul>
332
349
  * <li>An array containing datetime and timezone depending on the showTimezone option
@@ -349,23 +366,6 @@ sap.ui.define([
349
366
  /**
350
367
  * Get a datetimeWithTimezone instance of the DateFormat, which can be used for formatting.
351
368
  *
352
- * @example
353
- * // Timezone difference -5 hours, UTC Zulu
354
- * var sTimezone = "America/New_York";
355
- * var oDate = new Date("2021-11-13T13:22:33Z");
356
- *
357
- * // Show (default)
358
- * DateFormat.getDateTimeWithTimezoneInstance({showTimezone: "Show"}).format(oDate, false, sTimezone);
359
- * // Result: "Nov 13, 2021, 8:22:33 AM America/New_York"
360
- *
361
- * // Hide
362
- * DateFormat.getDateTimeWithTimezoneInstance({showTimezone: "Hide"}).format(oDate, false, sTimezone);
363
- * // Result: "Nov 13, 2021, 8:22:33 AM"
364
- *
365
- * // Only
366
- * DateFormat.getDateTimeWithTimezoneInstance({showTimezone: "Only"}).format(oDate, false, sTimezone);
367
- * // Result: "America/New_York"
368
- *
369
369
  * @param {object} [oFormatOptions] An object which defines the format options
370
370
  * @param {string} [oFormatOptions.format] A string containing pattern symbols (e.g. "yMMMd" or "Hms") which will be converted into a pattern for the used locale that matches the wanted symbols best.
371
371
  * The symbols must be in canonical order, that is: Era (G), Year (y/Y), Quarter (q/Q), Month (M/L), Week (w), Day-Of-Week (E/e/c), Day (d), Hour (h/H/k/K/j/J), Minute (m), Second (s), Timezone (z/Z/v/V/O/X/x)
@@ -390,6 +390,7 @@ sap.ui.define([
390
390
  * @static
391
391
  * @public
392
392
  * @since 1.99.0
393
+ * @experimental As of 1.99.0 certain aspects of this API are not settled yet, i.e. the defaulting for the timezone parameter might change.
393
394
  */
394
395
  DateFormat.getDateTimeWithTimezoneInstance = function(oFormatOptions, oLocale) {
395
396
  return this.createInstance(oFormatOptions, oLocale, this.oDateTimeWithTimezoneInfo);
@@ -694,27 +695,87 @@ sap.ui.define([
694
695
 
695
696
  return sValue.substr(0, iLength);
696
697
  },
697
- findEntry: function (sValue, aList) {
698
+
699
+ /**
700
+ * Returns if the given string starts with another given string ignoring the case.
701
+ *
702
+ * Takes the locale into account to ensure the characters are interpreted the right way.
703
+ *
704
+ * First, an exact case check is performed to remain backward compatible, then a case-insensitive check
705
+ * based on the locale is done.
706
+ *
707
+ * When during the case conversion the length of the string changes we cannot safely match
708
+ * it and return <code>false</code>.
709
+ *
710
+ * @param {string} sValue the value to check, e.g. "März 2013"
711
+ * @param {string} sSubstring the string to compare it with, e.g. "MÄRZ"
712
+ * @param {string} sLocale the locale, e.g. "de-DE"
713
+ * @returns {boolean} true if the given string <code>sValue</code> starts with <code>sSubstring</code>
714
+ * @private
715
+ */
716
+ startsWithIgnoreCase: function (sValue, sSubstring, sLocale) {
717
+ // exact case comparison (backward compatible)
718
+ if (sValue.startsWith(sSubstring)) {
719
+ return true;
720
+ }
721
+ try {
722
+ // Use String#toLocaleUpperCase instead of String#toLocaleLowerCase because there
723
+ // are known cases where an upper case letter has 2 lower case variants, e.g. Greek sigma.
724
+ var sSubToLocaleUpperCase = sSubstring.toLocaleUpperCase(sLocale);
725
+ var sValueUpperCase = sValue.toLocaleUpperCase(sLocale);
726
+
727
+ // During the upper-case conversion there are cases where length changes, e.g. ß -> SS.
728
+ // This cannot be properly determined without probing therefore we do not support this case.
729
+ if (sSubToLocaleUpperCase.length !== sSubstring.length || sValueUpperCase.length !== sValue.length) {
730
+ return false;
731
+ }
732
+ return sValueUpperCase.startsWith(sSubToLocaleUpperCase);
733
+ } catch (e) {
734
+ // Can fail for String#toLocaleUpperCase with an invalid locale
735
+ // the API fails in the case with: Incorrect locale information provided
736
+ return false;
737
+ }
738
+ },
739
+
740
+ /**
741
+ * Finds the longest matching entry for which the following applies:
742
+ * * <code>sValue</code> starts with the found entry
743
+ *
744
+ * The index of the finding in <code>aList</code> and the length of the match is returned.
745
+ * The case is ignored and the given locale is used for the string comparison.
746
+ *
747
+ * @example
748
+ * findEntry("MÄRZ 2013", ["Januar", "Februar", "März", "April", ...], "de-DE");
749
+ * // {length: 4, index: 2}
750
+ *
751
+ * @param {string} sValue the input value, e.g. "MÄRZ 2013"
752
+ * @param {string[]} aList, the list of values to check, e.g. ["Januar", "Februar", "März", "April", ...]
753
+ * @param {string} sLocale the locale which is used for the string comparison, e.g. "de-DE"
754
+ * @returns {{length: number, index: number}} the length of the match in sValue, the index in the list of values
755
+ * e.g. length: 4, index: 2 ("MÄRZ")
756
+ * @private
757
+ */
758
+ findEntry: function (sValue, aList, sLocale) {
698
759
  var iFoundIndex = -1,
699
760
  iMatchedLength = 0;
700
-
701
761
  for (var j = 0; j < aList.length; j++) {
702
- if (aList[j] && aList[j].length > iMatchedLength && sValue.indexOf(aList[j]) === 0) {
762
+ if (aList[j] && aList[j].length > iMatchedLength && this.startsWithIgnoreCase(sValue, aList[j], sLocale)) {
703
763
  iFoundIndex = j;
704
764
  iMatchedLength = aList[j].length;
705
765
  }
706
766
  }
707
767
  return {
708
768
  index: iFoundIndex,
709
- value: iFoundIndex === -1 ? null : aList[iFoundIndex]
769
+ length: iMatchedLength
710
770
  };
711
771
  },
772
+
712
773
  /**
713
774
  * Parses a given timezone
714
775
  *
715
- * @param {string} sValue, e.g. "-0800", "-08:00", "-08"
716
- * @param {boolean} bColonSeparated whether or not the values are colon separated, e.g. "-08:00"
717
- * @returns {{tzDiff: number, length: number}} object containing the timezone difference in seconds and the length of the parsed segment
776
+ * @param {string} sValue String to parse, e.g. "-0800", "-08:00", "-08"
777
+ * @param {boolean} bColonSeparated Whether or not the values are colon separated, e.g. "-08:00"
778
+ * @returns {{tzDiff: number, length: number}} Object containing the timezone difference in seconds and the length of the parsed segment
718
779
  */
719
780
  parseTZ: function (sValue, bColonSeparated) {
720
781
  var iLength = 0;
@@ -832,11 +893,11 @@ sap.ui.define([
832
893
 
833
894
  for (var i = 0; i < aErasVariants.length; i++) {
834
895
  var aVariants = aErasVariants[i];
835
- var oFound = oParseHelper.findEntry(sValue, aVariants);
896
+ var oFound = oParseHelper.findEntry(sValue, aVariants, oFormat.oLocaleData.sCLDRLocaleId);
836
897
  if (oFound.index !== -1) {
837
898
  return {
838
899
  era: oFound.index,
839
- length: oFound.value.length
900
+ length: oFound.length
840
901
  };
841
902
  }
842
903
  }
@@ -942,7 +1003,7 @@ sap.ui.define([
942
1003
  sPart = oParseHelper.findNumbers(sValue, oPart.digits);
943
1004
  }
944
1005
  var iYear = parseInt(sPart);
945
- var iWeekYear;
1006
+ var iWeekYear = iYear;
946
1007
  // Find the right century for two-digit years
947
1008
  if (sCalendarType != CalendarType.Japanese && sPart.length <= 2) {
948
1009
  var oCurrentDate = UniversalDate.getInstance(new Date(), sCalendarType),
@@ -995,11 +1056,11 @@ sap.ui.define([
995
1056
  } else {
996
1057
  for (var i = 0; i < aMonthsVariants.length; i++) {
997
1058
  var aVariants = aMonthsVariants[i];
998
- var oFound = oParseHelper.findEntry(sValue, aVariants);
1059
+ var oFound = oParseHelper.findEntry(sValue, aVariants, oFormat.oLocaleData.sCLDRLocaleId);
999
1060
  if (oFound.index !== -1) {
1000
1061
  return {
1001
1062
  month: oFound.index,
1002
- length: oFound.value.length
1063
+ length: oFound.length
1003
1064
  };
1004
1065
  }
1005
1066
  }
@@ -1042,11 +1103,11 @@ sap.ui.define([
1042
1103
  } else {
1043
1104
  for (var i = 0; i < aMonthsVariants.length; i++) {
1044
1105
  var aVariants = aMonthsVariants[i];
1045
- var oFound = oParseHelper.findEntry(sValue, aVariants);
1106
+ var oFound = oParseHelper.findEntry(sValue, aVariants, oFormat.oLocaleData.sCLDRLocaleId);
1046
1107
  if (oFound.index !== -1) {
1047
1108
  return {
1048
1109
  month: oFound.index,
1049
- length: oFound.value.length
1110
+ length: oFound.length
1050
1111
  };
1051
1112
  }
1052
1113
  }
@@ -1174,11 +1235,11 @@ sap.ui.define([
1174
1235
  } else {
1175
1236
  for (var i = 0; i < aQuartersVariants.length; i++) {
1176
1237
  var aVariants = aQuartersVariants[i];
1177
- var oFound = oParseHelper.findEntry(sValue, aVariants);
1238
+ var oFound = oParseHelper.findEntry(sValue, aVariants, oFormat.oLocaleData.sCLDRLocaleId);
1178
1239
  if (oFound.index !== -1) {
1179
1240
  return {
1180
1241
  quarter: oFound.index,
1181
- length: oFound.value.length
1242
+ length: oFound.length
1182
1243
  };
1183
1244
  }
1184
1245
  }
@@ -1222,11 +1283,11 @@ sap.ui.define([
1222
1283
  } else {
1223
1284
  for (var i = 0; i < aQuartersVariants.length; i++) {
1224
1285
  var aVariants = aQuartersVariants[i];
1225
- var oFound = oParseHelper.findEntry(sValue, aVariants);
1286
+ var oFound = oParseHelper.findEntry(sValue, aVariants, oFormat.oLocaleData.sCLDRLocaleId);
1226
1287
  if (oFound.index !== -1) {
1227
1288
  return {
1228
1289
  quarter: oFound.index,
1229
- length: oFound.value.length
1290
+ length: oFound.length
1230
1291
  };
1231
1292
  }
1232
1293
  }
@@ -1269,12 +1330,12 @@ sap.ui.define([
1269
1330
 
1270
1331
  for (var i = 0; i < aDaysVariants.length; i++) {
1271
1332
  var aVariants = aDaysVariants[i];
1272
- var oFound = oParseHelper.findEntry(sValue, aVariants);
1333
+ var oFound = oParseHelper.findEntry(sValue, aVariants, oFormat.oLocaleData.sCLDRLocaleId);
1273
1334
  if (oFound.index !== -1) {
1274
1335
  return {
1275
1336
  // gets translated to dayOfWeek where the day of week is relative to the week
1276
1337
  dayOfWeek: oFound.index,
1277
- length: oFound.value.length
1338
+ length: oFound.length
1278
1339
  };
1279
1340
  }
1280
1341
  }
@@ -1299,11 +1360,11 @@ sap.ui.define([
1299
1360
 
1300
1361
  for (var i = 0; i < aDaysVariants.length; i++) {
1301
1362
  var aVariants = aDaysVariants[i];
1302
- var oFound = oParseHelper.findEntry(sValue, aVariants);
1363
+ var oFound = oParseHelper.findEntry(sValue, aVariants, oFormat.oLocaleData.sCLDRLocaleId);
1303
1364
  if (oFound.index !== -1) {
1304
1365
  return {
1305
1366
  day: oFound.index,
1306
- length: oFound.value.length
1367
+ length: oFound.length
1307
1368
  };
1308
1369
  }
1309
1370
  }
@@ -1804,7 +1865,10 @@ sap.ui.define([
1804
1865
  * Uses the timezone from {@link sap.ui.core.Configuration#getTimezone}, which falls back to the
1805
1866
  * browser's local timezone to convert the given date.
1806
1867
  *
1807
- * @example <caption>DateTime (with timezone "Europe/Berlin")</caption>
1868
+ * When using instances from getDateTimeWithTimezoneInstance, please see the corresponding documentation:
1869
+ * {@link sap.ui.core.format.DateFormat.getDateTimeWithTimezoneInstance#format}.
1870
+ *
1871
+ * @example <caption>DateTime (assuming timezone "Europe/Berlin")</caption>
1808
1872
  * var oDate = new Date(Date.UTC(2021, 11, 24, 13, 37));
1809
1873
  * DateFormat.getDateTimeInstance().format(oDate);
1810
1874
  * // output: "Dec 24, 2021, 2:37:00 PM"
@@ -1821,8 +1885,8 @@ sap.ui.define([
1821
1885
  sTimezone = bUTC;
1822
1886
  bUTC = false;
1823
1887
 
1824
- // timezone is required to calculate the timezone offset therefore it must be a valid IANA timezone ID
1825
- if (sTimezone != null && !TimezoneUtil.isValidTimezone(sTimezone)) {
1888
+ checkTimezoneParameterType(sTimezone);
1889
+ if (sTimezone && !TimezoneUtil.isValidTimezone(sTimezone)) {
1826
1890
  Log.error("The given timezone isn't valid.");
1827
1891
  return "";
1828
1892
  }
@@ -1849,10 +1913,7 @@ sap.ui.define([
1849
1913
  return "";
1850
1914
  }
1851
1915
  vJSDate = vJSDate.map(function(oJSDate) {
1852
- if (oJSDate && !isNaN(oJSDate.getTime())) {
1853
- return convertToTimezone(oJSDate, sTimezone, bUTC);
1854
- }
1855
- return oJSDate;
1916
+ return convertToTimezone(oJSDate, sTimezone, bUTC);
1856
1917
  });
1857
1918
 
1858
1919
  if (this.oFormatOptions.singleIntervalValue) {
@@ -1867,11 +1928,7 @@ sap.ui.define([
1867
1928
  }
1868
1929
 
1869
1930
  if (sResult === undefined) {
1870
- var bValid = vJSDate.every(function(oJSDate) {
1871
- return oJSDate && !isNaN(oJSDate.getTime());
1872
- });
1873
-
1874
- if (!bValid) {
1931
+ if (!vJSDate.every(isValidDateObject)) {
1875
1932
  Log.error("At least one date instance which is passed to the interval DateFormat isn't valid.");
1876
1933
  return "";
1877
1934
  }
@@ -1879,7 +1936,7 @@ sap.ui.define([
1879
1936
  sResult = this._formatInterval(vJSDate, bUTC);
1880
1937
  }
1881
1938
  } else {
1882
- if (!vJSDate || isNaN(vJSDate.getTime())) {
1939
+ if (!isValidDateObject(vJSDate)) {
1883
1940
  // Although an invalid date was given, the DATETIME_WITH_TIMEZONE instance might
1884
1941
  // have a pattern with the timezone (VV) inside then the IANA timezone ID is returned
1885
1942
  if (this.type === mDateFormatTypes.DATETIME_WITH_TIMEZONE && this.oFormatOptions.pattern.includes("VV")) {
@@ -2116,8 +2173,7 @@ sap.ui.define([
2116
2173
  */
2117
2174
  var convertToTimezone = function(oJSDate, sTimezone, bUTC) {
2118
2175
  // Convert to timezone if provided and a valid date is supplied
2119
- if (!bUTC
2120
- && oJSDate && !isNaN(oJSDate.getTime())) {
2176
+ if (!bUTC && isValidDateObject(oJSDate)) {
2121
2177
  // convert given date to a date in the target timezone
2122
2178
  return TimezoneUtil.convertToTimezone(oJSDate, sTimezone);
2123
2179
  }
@@ -2219,19 +2275,27 @@ sap.ui.define([
2219
2275
  return true;
2220
2276
  }
2221
2277
 
2278
+ // the expectation is that a valid Date has a getTime function which returns a valid number
2279
+ function isValidDateObject(oDate) {
2280
+ return oDate && typeof oDate.getTime === "function" && !isNaN(oDate.getTime());
2281
+ }
2282
+
2222
2283
  /**
2223
2284
  * Parse a string which is formatted according to the given format options.
2224
2285
  *
2225
2286
  * Uses the timezone from {@link sap.ui.core.Configuration#getTimezone}, which falls back to the
2226
2287
  * browser's local timezone to convert the given date.
2227
2288
  *
2228
- * @example <caption>DateTime (with timezone "Europe/Berlin")</caption>
2289
+ * When using instances from getDateTimeWithTimezoneInstance, please see the corresponding documentation:
2290
+ * {@link sap.ui.core.format.DateFormat.getDateTimeWithTimezoneInstance#parse}.
2291
+ *
2292
+ * @example <caption>DateTime (assuming timezone "Europe/Berlin")</caption>
2229
2293
  * var oDate = new Date(Date.UTC(2021, 11, 24, 13, 37));
2230
2294
  * DateFormat.getDateTimeInstance().parse("Dec 24, 2021, 2:37:00 PM");
2231
2295
  * // output: oDate
2232
2296
  *
2233
2297
  * @param {string} sValue the string containing a formatted date/time value
2234
- * @param {boolean} bUTC whether to use UTC, if no timezone is contained
2298
+ * @param {boolean} bUTC whether to use UTC
2235
2299
  * @param {boolean} bStrict whether to use strict value check
2236
2300
  * @return {Date|Date[]} the parsed value(s)
2237
2301
  * @public
@@ -2249,8 +2313,8 @@ sap.ui.define([
2249
2313
  sTimezone = bUTC;
2250
2314
  bUTC = false;
2251
2315
 
2252
- // timezone is required to calculate the timezone offset therefore it must be a valid IANA timezone ID
2253
- if (sTimezone != null && !TimezoneUtil.isValidTimezone(sTimezone)) {
2316
+ checkTimezoneParameterType(sTimezone);
2317
+ if (sTimezone && !TimezoneUtil.isValidTimezone(sTimezone)) {
2254
2318
  Log.error("The given timezone isn't valid.");
2255
2319
  return null;
2256
2320
  }
@@ -16,6 +16,7 @@ sap.ui.define([], function() {
16
16
  * @public
17
17
  * @since 1.99.0
18
18
  * @ui5-metamodel This enumeration also will be described in the UI5 (legacy) designtime metamodel
19
+ * @alias sap.ui.core.format.DateFormatTimezoneDisplay
19
20
  */
20
21
  var DateFormatTimezoneDisplay = {
21
22