@openui5/sap.ui.core 1.103.0 → 1.105.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 (360) hide show
  1. package/.reuse/dep5 +18 -1
  2. package/LICENSES/LicenseRef-tzdata-PublicDomain.txt +5 -0
  3. package/THIRDPARTY.txt +36 -3
  4. package/package.json +1 -1
  5. package/src/jquery.sap.global.js +1 -1
  6. package/src/jquery.sap.properties.js +1 -1
  7. package/src/jquery.sap.resources.js +1 -1
  8. package/src/jquery.sap.script.js +1 -1
  9. package/src/jquery.sap.storage.js +3 -3
  10. package/src/sap/base/util/LoaderExtensions.js +69 -61
  11. package/src/sap/base/util/fetch.js +230 -0
  12. package/src/sap/base/util/mixedFetch.js +69 -0
  13. package/src/sap/base/util/restricted/_CancelablePromise.js +1 -1
  14. package/src/sap/base/util/restricted/_castArray.js +1 -1
  15. package/src/sap/base/util/restricted/_compact.js +1 -1
  16. package/src/sap/base/util/restricted/_curry.js +1 -1
  17. package/src/sap/base/util/restricted/_debounce.js +1 -1
  18. package/src/sap/base/util/restricted/_difference.js +1 -1
  19. package/src/sap/base/util/restricted/_differenceBy.js +1 -1
  20. package/src/sap/base/util/restricted/_differenceWith.js +1 -1
  21. package/src/sap/base/util/restricted/_flatMap.js +1 -1
  22. package/src/sap/base/util/restricted/_flatMapDeep.js +1 -1
  23. package/src/sap/base/util/restricted/_flatMapDepth.js +1 -1
  24. package/src/sap/base/util/restricted/_flatten.js +1 -1
  25. package/src/sap/base/util/restricted/_flattenDeep.js +1 -1
  26. package/src/sap/base/util/restricted/_flattenDepth.js +1 -1
  27. package/src/sap/base/util/restricted/_intersection.js +1 -1
  28. package/src/sap/base/util/restricted/_intersectionBy.js +1 -1
  29. package/src/sap/base/util/restricted/_intersectionWith.js +1 -1
  30. package/src/sap/base/util/restricted/_isEqual.js +1 -1
  31. package/src/sap/base/util/restricted/_isEqualWith.js +1 -1
  32. package/src/sap/base/util/restricted/_isNil.js +1 -1
  33. package/src/sap/base/util/restricted/_max.js +1 -1
  34. package/src/sap/base/util/restricted/_merge.js +1 -1
  35. package/src/sap/base/util/restricted/_mergeWith.js +1 -1
  36. package/src/sap/base/util/restricted/_min.js +1 -1
  37. package/src/sap/base/util/restricted/_omit.js +1 -1
  38. package/src/sap/base/util/restricted/_pick.js +1 -1
  39. package/src/sap/base/util/restricted/_pickBy.js +1 -1
  40. package/src/sap/base/util/restricted/_throttle.js +1 -1
  41. package/src/sap/base/util/restricted/_toArray.js +1 -1
  42. package/src/sap/base/util/restricted/_union.js +1 -1
  43. package/src/sap/base/util/restricted/_unionBy.js +1 -1
  44. package/src/sap/base/util/restricted/_unionWith.js +1 -1
  45. package/src/sap/base/util/restricted/_uniq.js +1 -1
  46. package/src/sap/base/util/restricted/_uniqBy.js +1 -1
  47. package/src/sap/base/util/restricted/_uniqWith.js +1 -1
  48. package/src/sap/base/util/restricted/_without.js +1 -1
  49. package/src/sap/base/util/restricted/_xor.js +1 -1
  50. package/src/sap/base/util/restricted/_xorBy.js +1 -1
  51. package/src/sap/base/util/restricted/_xorWith.js +1 -1
  52. package/src/sap/base/util/restricted/_zipObject.js +1 -1
  53. package/src/sap/base/util/restricted/_zipObjectDeep.js +1 -1
  54. package/src/sap/base/util/syncFetch.js +73 -0
  55. package/src/sap/ui/Device.js +5 -5
  56. package/src/sap/ui/Global.js +4 -4
  57. package/src/sap/ui/base/Event.js +1 -1
  58. package/src/sap/ui/base/EventProvider.js +1 -1
  59. package/src/sap/ui/base/Interface.js +1 -1
  60. package/src/sap/ui/base/ManagedObject.js +1 -1
  61. package/src/sap/ui/base/ManagedObjectMetadata.js +1 -1
  62. package/src/sap/ui/base/ManagedObjectObserver.js +2 -2
  63. package/src/sap/ui/base/Metadata.js +1 -1
  64. package/src/sap/ui/base/Object.js +1 -1
  65. package/src/sap/ui/base/ObjectPool.js +1 -1
  66. package/src/sap/ui/core/.library +63 -45
  67. package/src/sap/ui/core/AccessKeysEnablement.js +173 -0
  68. package/src/sap/ui/core/AppCacheBuster.js +65 -51
  69. package/src/sap/ui/core/BusyIndicator.js +1 -1
  70. package/src/sap/ui/core/Component.js +48 -21
  71. package/src/sap/ui/core/ComponentContainer.js +1 -1
  72. package/src/sap/ui/core/ComponentMetadata.js +12 -12
  73. package/src/sap/ui/core/ComponentSupport.js +1 -1
  74. package/src/sap/ui/core/Configuration.js +77 -26
  75. package/src/sap/ui/core/Control.js +1 -1
  76. package/src/sap/ui/core/Core.js +49 -61
  77. package/src/sap/ui/core/CustomData.js +1 -1
  78. package/src/sap/ui/core/DeclarativeSupport.js +1 -1
  79. package/src/sap/ui/core/Element.js +9 -1
  80. package/src/sap/ui/core/ElementMetadata.js +6 -4
  81. package/src/sap/ui/core/EnabledPropagator.js +1 -1
  82. package/src/sap/ui/core/EventBus.js +1 -1
  83. package/src/sap/ui/core/ExtensionPoint.js +2 -2
  84. package/src/sap/ui/core/FocusHandler.js +56 -33
  85. package/src/sap/ui/core/Fragment.js +1 -1
  86. package/src/sap/ui/core/HTML.js +1 -1
  87. package/src/sap/ui/core/History.js +1 -1
  88. package/src/sap/ui/core/Icon.js +1 -1
  89. package/src/sap/ui/core/IndicationColorSupport.js +1 -1
  90. package/src/sap/ui/core/IntervalTrigger.js +1 -1
  91. package/src/sap/ui/core/InvisibleMessage.js +1 -1
  92. package/src/sap/ui/core/InvisibleRenderer.js +1 -1
  93. package/src/sap/ui/core/InvisibleText.js +4 -1
  94. package/src/sap/ui/core/Item.js +1 -1
  95. package/src/sap/ui/core/LabelEnablement.js +1 -1
  96. package/src/sap/ui/core/LayoutData.js +1 -1
  97. package/src/sap/ui/core/ListItem.js +1 -1
  98. package/src/sap/ui/core/LocalBusyIndicator.js +1 -1
  99. package/src/sap/ui/core/Locale.js +1 -1
  100. package/src/sap/ui/core/LocaleData.js +4 -47
  101. package/src/sap/ui/core/Manifest.js +3 -5
  102. package/src/sap/ui/core/Message.js +1 -1
  103. package/src/sap/ui/core/RenderManager.js +11 -21
  104. package/src/sap/ui/core/Renderer.js +1 -1
  105. package/src/sap/ui/core/ResizeHandler.js +22 -43
  106. package/src/sap/ui/core/ScrollBar.js +1 -1
  107. package/src/sap/ui/core/SeparatorItem.js +1 -1
  108. package/src/sap/ui/core/Title.js +1 -1
  109. package/src/sap/ui/core/TooltipBase.js +1 -1
  110. package/src/sap/ui/core/UIArea.js +6 -4
  111. package/src/sap/ui/core/UIComponent.js +1 -1
  112. package/src/sap/ui/core/UIComponentMetadata.js +1 -1
  113. package/src/sap/ui/core/ValueStateSupport.js +1 -1
  114. package/src/sap/ui/core/VariantLayoutData.js +1 -1
  115. package/src/sap/ui/core/XMLComposite.js +4 -1
  116. package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
  117. package/src/sap/ui/core/_IconRegistry.js +66 -55
  118. package/src/sap/ui/core/cache/CacheManager.js +18 -14
  119. package/src/sap/ui/core/cache/CacheManagerNOP.js +5 -2
  120. package/src/sap/ui/core/cache/LRUPersistentCache.js +15 -8
  121. package/src/sap/ui/core/cldr/en.json +0 -1
  122. package/src/sap/ui/core/date/Buddhist.js +15 -13
  123. package/src/sap/ui/core/date/Japanese.js +0 -6
  124. package/src/sap/ui/core/date/UniversalDate.js +144 -34
  125. package/src/sap/ui/core/delegate/ItemNavigation.js +2 -2
  126. package/src/sap/ui/core/delegate/ScrollEnablement.js +1 -1
  127. package/src/sap/ui/core/dnd/DragDropBase.js +1 -1
  128. package/src/sap/ui/core/dnd/DragDropInfo.js +3 -3
  129. package/src/sap/ui/core/dnd/DragInfo.js +1 -1
  130. package/src/sap/ui/core/dnd/DropInfo.js +1 -1
  131. package/src/sap/ui/core/format/DateFormat.js +31 -9
  132. package/src/sap/ui/core/format/NumberFormat.js +91 -25
  133. package/src/sap/ui/core/format/TimezoneUtil.js +2 -2
  134. package/src/sap/ui/core/hyphenation/Hyphenation.js +1 -1
  135. package/src/sap/ui/core/library.js +44 -3
  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 +2 -0
  142. package/src/sap/ui/core/messagebundle_ar.properties +54 -53
  143. package/src/sap/ui/core/messagebundle_bg.properties +54 -53
  144. package/src/sap/ui/core/messagebundle_ca.properties +28 -27
  145. package/src/sap/ui/core/messagebundle_cs.properties +37 -36
  146. package/src/sap/ui/core/messagebundle_cy.properties +57 -56
  147. package/src/sap/ui/core/messagebundle_da.properties +53 -52
  148. package/src/sap/ui/core/messagebundle_de.properties +54 -53
  149. package/src/sap/ui/core/messagebundle_el.properties +46 -45
  150. package/src/sap/ui/core/messagebundle_en.properties +57 -56
  151. package/src/sap/ui/core/messagebundle_en_GB.properties +57 -56
  152. package/src/sap/ui/core/messagebundle_en_US_sappsd.properties +1 -0
  153. package/src/sap/ui/core/messagebundle_en_US_saprigi.properties +1 -0
  154. package/src/sap/ui/core/messagebundle_en_US_saptrc.properties +1 -0
  155. package/src/sap/ui/core/messagebundle_es.properties +42 -41
  156. package/src/sap/ui/core/messagebundle_es_MX.properties +54 -53
  157. package/src/sap/ui/core/messagebundle_et.properties +51 -50
  158. package/src/sap/ui/core/messagebundle_fi.properties +48 -47
  159. package/src/sap/ui/core/messagebundle_fr.properties +37 -36
  160. package/src/sap/ui/core/messagebundle_fr_CA.properties +22 -21
  161. package/src/sap/ui/core/messagebundle_hi.properties +42 -41
  162. package/src/sap/ui/core/messagebundle_hr.properties +55 -54
  163. package/src/sap/ui/core/messagebundle_hu.properties +56 -55
  164. package/src/sap/ui/core/messagebundle_id.properties +55 -54
  165. package/src/sap/ui/core/messagebundle_it.properties +55 -54
  166. package/src/sap/ui/core/messagebundle_iw.properties +55 -54
  167. package/src/sap/ui/core/messagebundle_ja.properties +48 -47
  168. package/src/sap/ui/core/messagebundle_kk.properties +41 -40
  169. package/src/sap/ui/core/messagebundle_ko.properties +21 -20
  170. package/src/sap/ui/core/messagebundle_lt.properties +55 -54
  171. package/src/sap/ui/core/messagebundle_lv.properties +55 -54
  172. package/src/sap/ui/core/messagebundle_ms.properties +52 -51
  173. package/src/sap/ui/core/messagebundle_nl.properties +53 -52
  174. package/src/sap/ui/core/messagebundle_no.properties +53 -52
  175. package/src/sap/ui/core/messagebundle_pl.properties +52 -51
  176. package/src/sap/ui/core/messagebundle_pt.properties +54 -53
  177. package/src/sap/ui/core/messagebundle_pt_PT.properties +55 -54
  178. package/src/sap/ui/core/messagebundle_ro.properties +56 -55
  179. package/src/sap/ui/core/messagebundle_ru.properties +52 -51
  180. package/src/sap/ui/core/messagebundle_sh.properties +57 -56
  181. package/src/sap/ui/core/messagebundle_sk.properties +54 -53
  182. package/src/sap/ui/core/messagebundle_sl.properties +56 -55
  183. package/src/sap/ui/core/messagebundle_sv.properties +52 -51
  184. package/src/sap/ui/core/messagebundle_th.properties +25 -24
  185. package/src/sap/ui/core/messagebundle_tr.properties +56 -55
  186. package/src/sap/ui/core/messagebundle_uk.properties +55 -54
  187. package/src/sap/ui/core/messagebundle_vi.properties +56 -55
  188. package/src/sap/ui/core/messagebundle_zh_CN.properties +55 -54
  189. package/src/sap/ui/core/messagebundle_zh_TW.properties +55 -54
  190. package/src/sap/ui/core/mvc/Controller.js +12 -12
  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 +7 -7
  196. package/src/sap/ui/core/mvc/XMLView.js +1 -2
  197. package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
  198. package/src/sap/ui/core/plugin/LessSupport.js +16 -14
  199. package/src/sap/ui/core/plugin/TemplatingSupport.js +2 -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/routing/Router.js +3 -3
  203. package/src/sap/ui/core/routing/async/TargetCache.js +4 -0
  204. package/src/sap/ui/core/rules/Config.support.js +1 -1
  205. package/src/sap/ui/core/rules/View.support.js +11 -4
  206. package/src/sap/ui/core/search/OpenSearchProvider.js +25 -12
  207. package/src/sap/ui/core/search/SearchProvider.js +2 -2
  208. package/src/sap/ui/core/service/Service.js +1 -1
  209. package/src/sap/ui/core/service/ServiceFactory.js +1 -1
  210. package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
  211. package/src/sap/ui/core/support/Plugin.js +1 -1
  212. package/src/sap/ui/core/support/Support.js +3 -4
  213. package/src/sap/ui/core/support/plugins/ControlTree.js +1 -1
  214. package/src/sap/ui/core/support/plugins/Debugging.js +1 -1
  215. package/src/sap/ui/core/support/plugins/Interaction.js +1 -1
  216. package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
  217. package/src/sap/ui/core/support/plugins/Performance.js +1 -1
  218. package/src/sap/ui/core/support/plugins/Selector.js +1 -1
  219. package/src/sap/ui/core/support/plugins/TechInfo.js +46 -33
  220. package/src/sap/ui/core/support/plugins/Trace.js +1 -1
  221. package/src/sap/ui/core/support/plugins/ViewInfo.js +2 -3
  222. package/src/sap/ui/core/themes/base/Icon.less +4 -0
  223. package/src/sap/ui/core/themes/base/LocalBusyIndicator.less +1 -1
  224. package/src/sap/ui/core/themes/base/base.less +26 -26
  225. package/src/sap/ui/core/themes/base/fonts/SAP-icons.woff2 +0 -0
  226. package/src/sap/ui/core/themes/base/global.less +5 -1
  227. package/src/sap/ui/core/theming/Parameters.js +45 -39
  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 +2 -2
  232. package/src/sap/ui/core/tmpl/TemplateControl.js +1 -1
  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 +61 -42
  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/XMLPreprocessor.js +1 -1
  245. package/src/sap/ui/core/util/reflection/BaseTreeModifier.js +0 -3
  246. package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
  247. package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
  248. package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
  249. package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
  250. package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
  251. package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
  252. package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
  253. package/src/sap/ui/core/ws/ReadyState.js +1 -1
  254. package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
  255. package/src/sap/ui/core/ws/WebSocket.js +1 -1
  256. package/src/sap/ui/debug/ControlTree.js +1 -1
  257. package/src/sap/ui/debug/DebugEnv.js +1 -1
  258. package/src/sap/ui/debug/PropertyList.js +19 -9
  259. package/src/sap/ui/model/ClientModel.js +1 -1
  260. package/src/sap/ui/model/CompositeDataState.js +1 -1
  261. package/src/sap/ui/model/CompositeType.js +1 -1
  262. package/src/sap/ui/model/DataState.js +2 -2
  263. package/src/sap/ui/model/MetaModel.js +1 -1
  264. package/src/sap/ui/model/Model.js +1 -1
  265. package/src/sap/ui/model/SelectionModel.js +1 -1
  266. package/src/sap/ui/model/SimpleType.js +1 -1
  267. package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
  268. package/src/sap/ui/model/Type.js +1 -1
  269. package/src/sap/ui/model/_Helper.js +3 -1
  270. package/src/sap/ui/model/analytics/odata4analytics.js +2 -2
  271. package/src/sap/ui/model/base/ManagedObjectModel.js +2 -2
  272. package/src/sap/ui/model/json/JSONModel.js +1 -1
  273. package/src/sap/ui/model/message/MessageModel.js +1 -1
  274. package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
  275. package/src/sap/ui/model/odata/ODataMessageParser.js +4 -4
  276. package/src/sap/ui/model/odata/ODataMetaModel.js +1 -1
  277. package/src/sap/ui/model/odata/ODataMetadata.js +6 -3
  278. package/src/sap/ui/model/odata/ODataModel.js +1 -1
  279. package/src/sap/ui/model/odata/ODataTreeBindingFlat.js +437 -239
  280. package/src/sap/ui/model/odata/type/Boolean.js +1 -1
  281. package/src/sap/ui/model/odata/type/Byte.js +1 -1
  282. package/src/sap/ui/model/odata/type/Currency.js +1 -1
  283. package/src/sap/ui/model/odata/type/Date.js +1 -1
  284. package/src/sap/ui/model/odata/type/DateTime.js +1 -1
  285. package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
  286. package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
  287. package/src/sap/ui/model/odata/type/DateTimeWithTimezone.js +1 -1
  288. package/src/sap/ui/model/odata/type/Decimal.js +1 -1
  289. package/src/sap/ui/model/odata/type/Double.js +1 -1
  290. package/src/sap/ui/model/odata/type/Guid.js +1 -1
  291. package/src/sap/ui/model/odata/type/Int.js +1 -1
  292. package/src/sap/ui/model/odata/type/Int16.js +1 -1
  293. package/src/sap/ui/model/odata/type/Int32.js +1 -1
  294. package/src/sap/ui/model/odata/type/Int64.js +1 -1
  295. package/src/sap/ui/model/odata/type/ODataType.js +1 -1
  296. package/src/sap/ui/model/odata/type/Raw.js +1 -1
  297. package/src/sap/ui/model/odata/type/SByte.js +1 -1
  298. package/src/sap/ui/model/odata/type/Single.js +1 -1
  299. package/src/sap/ui/model/odata/type/Stream.js +1 -1
  300. package/src/sap/ui/model/odata/type/String.js +1 -1
  301. package/src/sap/ui/model/odata/type/Time.js +1 -1
  302. package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
  303. package/src/sap/ui/model/odata/type/Unit.js +1 -1
  304. package/src/sap/ui/model/odata/v2/Context.js +1 -1
  305. package/src/sap/ui/model/odata/v2/ODataAnnotations.js +1 -1
  306. package/src/sap/ui/model/odata/v2/ODataContextBinding.js +4 -1
  307. package/src/sap/ui/model/odata/v2/ODataListBinding.js +25 -0
  308. package/src/sap/ui/model/odata/v2/ODataModel.js +161 -122
  309. package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +18 -2
  310. package/src/sap/ui/model/odata/v4/Context.js +86 -30
  311. package/src/sap/ui/model/odata/v4/ODataBinding.js +4 -8
  312. package/src/sap/ui/model/odata/v4/ODataContextBinding.js +26 -27
  313. package/src/sap/ui/model/odata/v4/ODataListBinding.js +121 -93
  314. package/src/sap/ui/model/odata/v4/ODataMetaModel.js +1 -1
  315. package/src/sap/ui/model/odata/v4/ODataModel.js +3 -2
  316. package/src/sap/ui/model/odata/v4/ODataParentBinding.js +10 -13
  317. package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +4 -4
  318. package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +135 -28
  319. package/src/sap/ui/model/odata/v4/lib/_AggregationHelper.js +133 -16
  320. package/src/sap/ui/model/odata/v4/lib/_Cache.js +341 -161
  321. package/src/sap/ui/model/odata/v4/lib/_Helper.js +73 -9
  322. package/src/sap/ui/model/odata/v4/lib/_Requestor.js +8 -6
  323. package/src/sap/ui/model/resource/ResourceModel.js +1 -1
  324. package/src/sap/ui/model/type/Boolean.js +1 -1
  325. package/src/sap/ui/model/type/Currency.js +1 -1
  326. package/src/sap/ui/model/type/Date.js +1 -1
  327. package/src/sap/ui/model/type/DateInterval.js +1 -1
  328. package/src/sap/ui/model/type/DateTime.js +1 -1
  329. package/src/sap/ui/model/type/DateTimeInterval.js +1 -1
  330. package/src/sap/ui/model/type/FileSize.js +1 -1
  331. package/src/sap/ui/model/type/Float.js +1 -1
  332. package/src/sap/ui/model/type/Integer.js +1 -1
  333. package/src/sap/ui/model/type/String.js +1 -1
  334. package/src/sap/ui/model/type/Time.js +1 -1
  335. package/src/sap/ui/model/type/TimeInterval.js +1 -1
  336. package/src/sap/ui/model/type/Unit.js +1 -1
  337. package/src/sap/ui/model/xml/XMLModel.js +4 -2
  338. package/src/sap/ui/performance/trace/FESR.js +27 -24
  339. package/src/sap/ui/performance/trace/Interaction.js +66 -16
  340. package/src/sap/ui/qunit/sinon-qunit-bridge.js +1 -1
  341. package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
  342. package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +1 -1
  343. package/src/sap/ui/test/Opa5.js +1 -1
  344. package/src/sap/ui/test/TestUtils.js +35 -2
  345. package/src/sap/ui/test/actions/Press.js +7 -0
  346. package/src/sap/ui/test/generic/TestBase.js +1 -1
  347. package/src/sap/ui/test/matchers/AggregationContainsPropertyEqual.js +2 -3
  348. package/src/sap/ui/test/matchers/AggregationFilled.js +2 -3
  349. package/src/sap/ui/test/matchers/AggregationLengthEquals.js +2 -3
  350. package/src/sap/ui/test/matchers/Matcher.js +9 -11
  351. package/src/sap/ui/test/opaQunit.js +15 -9
  352. package/src/sap/ui/test/pipelines/ActionPipeline.js +2 -3
  353. package/src/sap/ui/test/pipelines/MatcherPipeline.js +2 -3
  354. package/src/sap/ui/test/pipelines/PipelineFactory.js +2 -3
  355. package/src/sap/ui/thirdparty/IPv6.js +1 -1
  356. package/src/sap/ui/thirdparty/SecondLevelDomains.js +1 -1
  357. package/src/sap/ui/thirdparty/URI.js +8 -2
  358. package/src/sap/ui/thirdparty/URITemplate.js +1 -1
  359. package/src/sap/ui/util/Storage.js +1 -1
  360. package/src/sap/ui/util/XMLHelper.js +1 -1
@@ -4,14 +4,14 @@
4
4
  * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
5
  */
6
6
 
7
- sap.ui.define(["sap/base/Log", "sap/ui/performance/Measurement"],
8
- function(Log, Measurement) {
7
+ sap.ui.define(["sap/base/Log", "sap/ui/performance/Measurement", "sap/ui/Global"],
8
+ function(Log, Measurement, Global) {
9
9
  "use strict";
10
10
 
11
11
  /**
12
12
  * @classdesc
13
13
  * This object provides cache functionality with persistence in IndexedDB.
14
- * The component is an experimental and private.
14
+ * The component is private and restricted to the factory class sap.ui.core.cache.CacheManager.
15
15
  * Do not use outside UI5 framework itself.
16
16
  * This implementation works with entries corresponding to a single ui5 version.
17
17
  * If the cache is loaded with different ui5 version, all previous entries will be deleted. The latter behavior is about of a further changes (feature requests)
@@ -20,7 +20,7 @@ sap.ui.define(["sap/base/Log", "sap/ui/performance/Measurement"],
20
20
  *
21
21
  * Do not use it directly, use {@link sap.ui.core.cache.CacheManager} instead
22
22
  * @private
23
- * @experimental
23
+ * @ui5-restricted sap.ui.core.cache.CacheManager, sap.ui.core.Configuration
24
24
  * @since 1.40.0
25
25
  * @namespace
26
26
  * @alias sap.ui.core.cache.LRUPersistentCache
@@ -28,6 +28,9 @@ sap.ui.define(["sap/base/Log", "sap/ui/performance/Measurement"],
28
28
 
29
29
  var LRUPersistentCache = {
30
30
  name: "LRUPersistentCache",
31
+ logResolved: function(sFnName) {
32
+ Log.debug("Cache Manager: " + sFnName + " completed successfully.");
33
+ },
31
34
 
32
35
  defaultOptions: {
33
36
  databaseName: "ui5-cachemanager-db",
@@ -166,8 +169,12 @@ sap.ui.define(["sap/base/Log", "sap/ui/performance/Measurement"],
166
169
  Log.warning("Cache Manager ignored 'has' for key [" + key + "]");
167
170
  return Promise.resolve(false);
168
171
  }
169
- return this.get(key).then(function (value) {
170
- return typeof value !== "undefined";
172
+ return this.get(key).then(function(value) {
173
+ var result = typeof value !== "undefined";
174
+
175
+ Log.debug("Cache Manager: has key [" + key + "] returned " + result);
176
+
177
+ return result;
171
178
  });
172
179
  },
173
180
 
@@ -366,7 +373,7 @@ sap.ui.define(["sap/base/Log", "sap/ui/performance/Measurement"],
366
373
  transaction.abort();
367
374
  };
368
375
  clearMetadataStoreReq.onsuccess = function () {
369
- self._metadata = initMetadata(sap.ui.version);
376
+ self._metadata = initMetadata(Global.version);
370
377
  assignRUCounters(self);
371
378
  };
372
379
  };
@@ -664,7 +671,7 @@ sap.ui.define(["sap/base/Log", "sap/ui/performance/Measurement"],
664
671
  }
665
672
 
666
673
  function initIndexedDB(instance) {
667
- instance._ui5version = sap.ui.version;
674
+ instance._ui5version = Global.version;
668
675
  return new Promise(function executorInitIndexedDB(resolve, reject) {
669
676
  var DBOpenRequest;
670
677
 
@@ -5393,7 +5393,6 @@
5393
5393
  "weekData-firstDay": 0,
5394
5394
  "weekData-weekendStart": 6,
5395
5395
  "weekData-weekendEnd": 0,
5396
- "weekData-algorithm": "FIRSTDAY_STARTS_FIRSTWEEK",
5397
5396
  "timeData": {
5398
5397
  "_allowed": "h hb H hB",
5399
5398
  "_preferred": "h"
@@ -9,13 +9,21 @@ sap.ui.define(['./UniversalDate', '../CalendarType', './_Calendars'],
9
9
  function(UniversalDate, CalendarType, _Calendars) {
10
10
  "use strict";
11
11
 
12
-
13
12
  /**
14
13
  * The Buddhist date class
15
14
  *
16
15
  * @class
17
- * The Buddhist date implements the Thai solar calendar (BE). In this calendar the year is offset by 543 compared to the
18
- * Gregorian calendar. Before 1941 the year start was 1st of April, so Januar to March belong to the previous year.
16
+ * The Buddhist date implements the Thai solar calendar (BE - Buddhist Era). In this calendar
17
+ * the year is offset by 543 compared to the Gregorian calendar.
18
+ * e.g. Year 2022 CE corresponds to 2565 BE
19
+ *
20
+ *
21
+ * Before 1941 CE the year start was 1st of April, so Januar to March belong to the previous year.
22
+ * <pre>
23
+ * Month | 1-3 | 4-6 | 7-9 | 10-12 | 1-3 | 4-6 | 7-9 | 10-12 | 1-3 | 4-6 | 7-9 | 10-12 | 1-3 | 4-6 | 7-9 | 10-12 |
24
+ * CE | 1939 | 1940 | 1941 | 1942 |
25
+ * BE 2481 | 2482 | 2483 | 2484 | 2485 |
26
+ * </pre>
19
27
  *
20
28
  * @private
21
29
  * @alias sap.ui.core.date.Buddhist
@@ -44,8 +52,8 @@ sap.ui.define(['./UniversalDate', '../CalendarType', './_Calendars'],
44
52
  /**
45
53
  * Find the matching Buddhist date for the given gregorian date
46
54
  *
47
- * @param {object} oGregorian
48
- * @return {object}
55
+ * @param {{year: int, month: int, day: int}} oGregorian Gregorian date
56
+ * @return {{year: int, month: int, day: int}} the resulting Buddhist date
49
57
  */
50
58
  function toBuddhist(oGregorian) {
51
59
  var iEraStartYear = UniversalDate.getEraStartDate(CalendarType.Buddhist, 0).year,
@@ -67,8 +75,8 @@ sap.ui.define(['./UniversalDate', '../CalendarType', './_Calendars'],
67
75
  /**
68
76
  * Calculate gregorian year from Buddhist year and month
69
77
  *
70
- * @param {object} oBuddhist
71
- * @return {int}
78
+ * @param {{year: int, month: int, day: int}} oBuddhist Buddhist date
79
+ * @return {{year: int, month: int, day: int}} the resulting Gregorian date
72
80
  */
73
81
  function toGregorian(oBuddhist) {
74
82
  var iEraStartYear = UniversalDate.getEraStartDate(CalendarType.Buddhist, 0).year,
@@ -188,12 +196,6 @@ sap.ui.define(['./UniversalDate', '../CalendarType', './_Calendars'],
188
196
  }
189
197
  return this._setUTCBuddhist(oBuddhist);
190
198
  };
191
- Buddhist.prototype.getWeek = function() {
192
- return UniversalDate.getWeekByDate(this.sCalendarType, this.oDate.getFullYear(), this.getMonth(), this.getDate());
193
- };
194
- Buddhist.prototype.getUTCWeek = function() {
195
- return UniversalDate.getWeekByDate(this.sCalendarType, this.oDate.getUTCFullYear(), this.getUTCMonth(), this.getUTCDate());
196
- };
197
199
 
198
200
  _Calendars.set(CalendarType.Buddhist, Buddhist);
199
201
 
@@ -230,12 +230,6 @@ sap.ui.define(['./UniversalDate', '../CalendarType', './_Calendars'],
230
230
  }
231
231
  return this._setUTCJapanese(oJapanese);
232
232
  };
233
- Japanese.prototype.getWeek = function() {
234
- return UniversalDate.getWeekByDate(this.sCalendarType, this.oDate.getFullYear(), this.getMonth(), this.getDate());
235
- };
236
- Japanese.prototype.getUTCWeek = function() {
237
- return UniversalDate.getWeekByDate(this.sCalendarType, this.oDate.getUTCFullYear(), this.getUTCMonth(), this.getUTCDate());
238
- };
239
233
 
240
234
  _Calendars.set(CalendarType.Japanese, Japanese);
241
235
 
@@ -153,18 +153,64 @@ sap.ui.define(['sap/ui/base/Object', 'sap/ui/core/LocaleData', './_Calendars'],
153
153
  UniversalDate.prototype.setUTCEra = function(iEra) {
154
154
  // The default implementation does not support setting the era
155
155
  };
156
- UniversalDate.prototype.getWeek = function() {
157
- return UniversalDate.getWeekByDate(this.sCalendarType, this.getFullYear(), this.getMonth(), this.getDate());
156
+
157
+ /**
158
+ * Retrieves the calendar week
159
+ *
160
+ * @param {sap.ui.core.Locale} oLocale the locale used to get the calendar week calculation properties, defaults to the formatLocale
161
+ * @param {{firstDayOfWeek: int, minimalDaysInFirstWeek: int}} oWeekConfig calendar week calculation parameters,
162
+ * defaults to oLocale but has precedence over oLocale if both are provided.
163
+ * @returns {{week: number, year: number}} resulting calendar week, note: week index starts with <code>0</code>
164
+ * @private
165
+ */
166
+ UniversalDate.prototype.getWeek = function(oLocale, oWeekConfig) {
167
+ checkWeekConfig(oWeekConfig);
168
+ return UniversalDate.getWeekByDate(this.sCalendarType, this.getFullYear(), this.getMonth(), this.getDate(), oLocale, oWeekConfig);
158
169
  };
159
- UniversalDate.prototype.setWeek = function(oWeek) {
160
- var oDate = UniversalDate.getFirstDateOfWeek(this.sCalendarType, oWeek.year || this.getFullYear(), oWeek.week);
170
+
171
+ /**
172
+ * Sets the calendar week
173
+ *
174
+ * @param {{week: number, year: number}} oWeek the calendar week, note: week index starts with <code>0</code>,
175
+ * <code>oWeek.year</code> is optional and defaults to {@link sap.ui.core.date.UniversalDate#getFullYear}
176
+ * @param {sap.ui.core.Locale} oLocale the locale used to get the calendar week calculation properties, defaults to the formatLocale
177
+ * @param {{firstDayOfWeek: int, minimalDaysInFirstWeek: int}} oWeekConfig calendar week calculation parameters,
178
+ * defaults to oLocale but has precedence over oLocale if both are provided.
179
+ * @private
180
+ */
181
+ UniversalDate.prototype.setWeek = function(oWeek, oLocale, oWeekConfig) {
182
+ checkWeekConfig(oWeekConfig);
183
+ var oDate = UniversalDate.getFirstDateOfWeek(this.sCalendarType, oWeek.year || this.getFullYear(), oWeek.week, oLocale, oWeekConfig);
161
184
  this.setFullYear(oDate.year, oDate.month, oDate.day);
162
185
  };
163
- UniversalDate.prototype.getUTCWeek = function() {
164
- return UniversalDate.getWeekByDate(this.sCalendarType, this.getUTCFullYear(), this.getUTCMonth(), this.getUTCDate());
186
+
187
+ /**
188
+ * Retrieves the UTC calendar week
189
+ *
190
+ * @param {sap.ui.core.Locale} oLocale the locale used to get the calendar week calculation properties, defaults to the formatLocale
191
+ * @param {{firstDayOfWeek: int, minimalDaysInFirstWeek: int}} oWeekConfig calendar week calculation parameters,
192
+ * defaults to oLocale but has precedence over oLocale if both are provided.
193
+ * @returns {{week: number, year: number}} resulting calendar week, note: week index starts with <code>0</code>
194
+ * @private
195
+ */
196
+ UniversalDate.prototype.getUTCWeek = function(oLocale, oWeekConfig) {
197
+ checkWeekConfig(oWeekConfig);
198
+ return UniversalDate.getWeekByDate(this.sCalendarType, this.getUTCFullYear(), this.getUTCMonth(), this.getUTCDate(), oLocale, oWeekConfig);
165
199
  };
166
- UniversalDate.prototype.setUTCWeek = function(oWeek) {
167
- var oDate = UniversalDate.getFirstDateOfWeek(this.sCalendarType, oWeek.year || this.getFullYear(), oWeek.week);
200
+
201
+ /**
202
+ * Sets the UTC calendar week
203
+ *
204
+ * @param {{week: number, year: number}} oWeek the calendar week, note: week index starts with <code>0</code>,
205
+ * <code>oWeek.year</code> is optional and defaults to {@link sap.ui.core.date.UniversalDate#getFullYear}
206
+ * @param {sap.ui.core.Locale} oLocale the locale used to get the calendar week calculation properties, defaults to the formatLocale
207
+ * @param {{firstDayOfWeek: int, minimalDaysInFirstWeek: int}} oWeekConfig calendar week calculation parameters,
208
+ * defaults to oLocale but has precedence over oLocale if both are provided.
209
+ * @private
210
+ */
211
+ UniversalDate.prototype.setUTCWeek = function(oWeek, oLocale, oWeekConfig) {
212
+ checkWeekConfig(oWeekConfig);
213
+ var oDate = UniversalDate.getFirstDateOfWeek(this.sCalendarType, oWeek.year || this.getFullYear(), oWeek.week, oLocale, oWeekConfig);
168
214
  this.setUTCFullYear(oDate.year, oDate.month, oDate.day);
169
215
  };
170
216
  UniversalDate.prototype.getQuarter = function() {
@@ -207,22 +253,40 @@ sap.ui.define(['sap/ui/base/Object', 'sap/ui/core/LocaleData', './_Calendars'],
207
253
  */
208
254
  var iMillisecondsInWeek = 7 * 24 * 60 * 60 * 1000;
209
255
 
210
- UniversalDate.getWeekByDate = function(sCalendarType, iYear, iMonth, iDay) {
211
- var oLocale = sap.ui.getCore().getConfiguration().getFormatSettings().getFormatLocale(),
212
- oLocaleData = LocaleData.getInstance(oLocale),
213
- clDate = this.getClass(sCalendarType),
214
- oFirstDay = getFirstDayOfFirstWeek(clDate, iYear),
215
- oDate = new clDate(clDate.UTC(iYear, iMonth, iDay)),
216
- iWeek, iLastYear, iNextYear, oLastFirstDay, oNextFirstDay;
256
+ /**
257
+ * Retrieves the calendar week for a given date, specified by year, month, and day.
258
+ *
259
+ * @param {string} sCalendarType the calendar type, e.g. <code>"Gregorian"</code>
260
+ * @param {int} iYear year, e.g. <code>2016</code>
261
+ * @param {int} iMonth the month, e.g. <code>2</code>
262
+ * @param {int} iDay the date, e.g. <code>3</code>
263
+ * @param {sap.ui.core.Locale} [oLocale] the locale used for the week calculation, if oWeekConfig is not provided (falls back to the formatLocale)
264
+ * e.g. <code>new Locale("de-DE")</code>
265
+ * @param {{firstDayOfWeek: int, minimalDaysInFirstWeek: int}} [oWeekConfig] calendar week calculation parameters,
266
+ * defaults to oLocale but has precedence over oLocale if both are provided.
267
+ * Both properties firstDayOfWeek and minimalDaysInFirstWeek must be provided, otherwise it will be ignored.
268
+ * If provided US split week is ignored.
269
+ * e.g. <code>{firstDayOfWeek: 1, minimalDaysInFirstWeek: 4}</code>
270
+ * @returns {{week: number, year: number}} resulting calendar week, note: week index starts with <code>0</code>, e.g. <code>{year: 2016, week: 8}</code>
271
+ * @private
272
+ */
273
+ UniversalDate.getWeekByDate = function(sCalendarType, iYear, iMonth, iDay, oLocale, oWeekConfig) {
274
+ oLocale = oLocale || sap.ui.getCore().getConfiguration().getFormatSettings().getFormatLocale();
275
+ var oLocaleData = LocaleData.getInstance(oLocale);
276
+ var clDate = this.getClass(sCalendarType);
277
+ var oFirstDay = getFirstDayOfFirstWeek(clDate, iYear, oLocale, oWeekConfig);
278
+ var oDate = new clDate(clDate.UTC(iYear, iMonth, iDay));
279
+ var iWeek, iLastYear, iNextYear, oLastFirstDay, oNextFirstDay;
217
280
  // If region is US, always calculate the week for the current year, otherwise
218
281
  // the week might be the last week of the previous year or first week of next year
219
- if (oLocaleData.firstDayStartsFirstWeek()) {
282
+ var bSplitWeek = (!oWeekConfig || oWeekConfig.minimalDaysInFirstWeek === undefined || oWeekConfig.firstDayOfWeek === undefined) && oLocaleData.firstDayStartsFirstWeek();
283
+ if (bSplitWeek) {
220
284
  iWeek = calculateWeeks(oFirstDay, oDate);
221
285
  } else {
222
286
  iLastYear = iYear - 1;
223
287
  iNextYear = iYear + 1;
224
- oLastFirstDay = getFirstDayOfFirstWeek(clDate, iLastYear);
225
- oNextFirstDay = getFirstDayOfFirstWeek(clDate, iNextYear);
288
+ oLastFirstDay = getFirstDayOfFirstWeek(clDate, iLastYear, oLocale, oWeekConfig);
289
+ oNextFirstDay = getFirstDayOfFirstWeek(clDate, iNextYear, oLocale, oWeekConfig);
226
290
  if (oDate >= oNextFirstDay) {
227
291
  iYear = iNextYear;
228
292
  iWeek = 0;
@@ -239,17 +303,32 @@ sap.ui.define(['sap/ui/base/Object', 'sap/ui/core/LocaleData', './_Calendars'],
239
303
  };
240
304
  };
241
305
 
242
- UniversalDate.getFirstDateOfWeek = function(sCalendarType, iYear, iWeek) {
243
- var oLocale = sap.ui.getCore().getConfiguration().getFormatSettings().getFormatLocale(),
244
- oLocaleData = LocaleData.getInstance(oLocale),
245
- clDate = this.getClass(sCalendarType),
246
- oFirstDay = getFirstDayOfFirstWeek(clDate, iYear),
247
- oDate = new clDate(oFirstDay.valueOf() + iWeek * iMillisecondsInWeek),
248
- bIsRegionUS = oLocaleData.firstDayStartsFirstWeek();
306
+ /**
307
+ * Retrieves the first day's date of the given week in the given year.
308
+ *
309
+ * @param {string} sCalendarType the calendar type, e.g. <code>"Gregorian"</code>
310
+ * @param {int} iYear year, e.g. <code>2016</code>
311
+ * @param {int} iWeek the calendar week index, e.g. <code>8</code>
312
+ * @param {sap.ui.core.Locale} [oLocale] the locale used for the week calculation, if oWeekConfig is not provided (falls back to the formatLocale)
313
+ * e.g. <code>new Locale("de-DE")</code>
314
+ * @param {{firstDayOfWeek: int, minimalDaysInFirstWeek: int}} [oWeekConfig] calendar week calculation parameters,
315
+ * defaults to oLocale but has precedence over oLocale if both are provided.
316
+ * Both properties firstDayOfWeek and minimalDaysInFirstWeek must be provided, otherwise it will be ignored.
317
+ * If provided US split week is ignored.
318
+ * e.g. <code>{firstDayOfWeek: 1, minimalDaysInFirstWeek: 4}</code>
319
+ * @returns {{month: number, year: number, day: number}} the resulting date, e.g. <code>{year: 2016, month: 1, day: 29}</code>
320
+ * @private
321
+ */
322
+ UniversalDate.getFirstDateOfWeek = function(sCalendarType, iYear, iWeek, oLocale, oWeekConfig) {
323
+ oLocale = oLocale || sap.ui.getCore().getConfiguration().getFormatSettings().getFormatLocale();
324
+ var oLocaleData = LocaleData.getInstance(oLocale);
325
+ var clDate = this.getClass(sCalendarType);
326
+ var oFirstDay = getFirstDayOfFirstWeek(clDate, iYear, oLocale, oWeekConfig);
327
+ var oDate = new clDate(oFirstDay.valueOf() + iWeek * iMillisecondsInWeek);
249
328
  //If first day of week is in last year and region is US, return the
250
329
  //1st of January instead for symmetric behaviour
251
-
252
- if (bIsRegionUS && iWeek === 0 && oFirstDay.getUTCFullYear() < iYear) {
330
+ var bSplitWeek = (!oWeekConfig || oWeekConfig.minimalDaysInFirstWeek === undefined || oWeekConfig.firstDayOfWeek === undefined) && oLocaleData.firstDayStartsFirstWeek();
331
+ if (bSplitWeek && iWeek === 0 && oFirstDay.getUTCFullYear() < iYear) {
253
332
  return {
254
333
  year: iYear,
255
334
  month: 0,
@@ -263,13 +342,44 @@ sap.ui.define(['sap/ui/base/Object', 'sap/ui/core/LocaleData', './_Calendars'],
263
342
  };
264
343
  };
265
344
 
266
- function getFirstDayOfFirstWeek(clDate, iYear) {
267
- var oLocale = sap.ui.getCore().getConfiguration().getFormatSettings().getFormatLocale(),
268
- oLocaleData = LocaleData.getInstance(oLocale),
269
- iMinDays = oLocaleData.getMinimalDaysInFirstWeek(),
270
- iFirstDayOfWeek = oLocaleData.getFirstDayOfWeek(),
271
- oFirstDay = new clDate(clDate.UTC(iYear, 0, 1)),
272
- iDayCount = 7;
345
+ function checkWeekConfig(oWeekConfig) {
346
+ if (oWeekConfig) {
347
+ if (oWeekConfig.firstDayOfWeek === undefined && oWeekConfig.minimalDaysInFirstWeek !== undefined
348
+ || oWeekConfig.firstDayOfWeek !== undefined && oWeekConfig.minimalDaysInFirstWeek === undefined) {
349
+ throw new Error("Week config requires both firstDayOfWeek and minimalDaysInFirstWeek to be set");
350
+ }
351
+ }
352
+ }
353
+
354
+ /**
355
+ * Returns the first day of the first week in the given year.
356
+ *
357
+ * @param {UniversalDate} clDate the date class
358
+ * @param {int} iYear year, e.g. <code>2016</code>
359
+ * @param {sap.ui.core.Locale} [oLocale] the locale used for the week calculation, if oWeekConfig is not provided (falls back to the formatLocale)
360
+ * e.g. <code>new Locale("de-DE")</code>
361
+ * @param {{firstDayOfWeek: int, minimalDaysInFirstWeek: int}} [oWeekConfig] calendar week calculation parameters,
362
+ * defaults to oLocale but has precedence over oLocale if both are provided.
363
+ * Both properties firstDayOfWeek and minimalDaysInFirstWeek must be provided, otherwise it will be ignored.
364
+ * If provided US split week is ignored.
365
+ * e.g. <code>{firstDayOfWeek: 1, minimalDaysInFirstWeek: 4}</code>
366
+ * @returns {Date} first day of the first week in the given year, e.g. <code>Mon Jan 04 2016 01:00:00 GMT+0100</code>
367
+ * @private
368
+ */
369
+ function getFirstDayOfFirstWeek(clDate, iYear, oLocale, oWeekConfig) {
370
+ oLocale = oLocale || sap.ui.getCore().getConfiguration().getFormatSettings().getFormatLocale();
371
+ var oLocaleData = LocaleData.getInstance(oLocale);
372
+ var iMinDays;
373
+ var iFirstDayOfWeek;
374
+ if (oWeekConfig && oWeekConfig.minimalDaysInFirstWeek !== undefined && oWeekConfig.firstDayOfWeek !== undefined) {
375
+ iMinDays = oWeekConfig.minimalDaysInFirstWeek;
376
+ iFirstDayOfWeek = oWeekConfig.firstDayOfWeek;
377
+ } else {
378
+ iMinDays = oLocaleData.getMinimalDaysInFirstWeek();
379
+ iFirstDayOfWeek = oLocaleData.getFirstDayOfWeek();
380
+ }
381
+ var oFirstDay = new clDate(clDate.UTC(iYear, 0, 1));
382
+ var iDayCount = 7;
273
383
 
274
384
  if (isNaN(oFirstDay.getTime())) {
275
385
  throw new Error("Could not determine the first day of the week, because the date " +
@@ -81,7 +81,7 @@ sap.ui.define([
81
81
  * @param {Element[]} aItemDomRefs Array of DOM references representing the items for the navigation
82
82
  * @param {boolean} [bNotInTabChain=false] Whether the selected element should be in the tab chain or not
83
83
  *
84
- * @version 1.103.0
84
+ * @version 1.105.0
85
85
  * @alias sap.ui.core.delegate.ItemNavigation
86
86
  * @public
87
87
  */
@@ -257,7 +257,7 @@ sap.ui.define([
257
257
  /**
258
258
  * Sets the root DOM reference surrounding the items
259
259
  *
260
- * @param {object} oDomRef Root DOM reference
260
+ * @param {Element} oDomRef Root DOM reference
261
261
  * @return {this} <code>this</code> to allow method chaining
262
262
  * @public
263
263
  */
@@ -58,7 +58,7 @@ sap.ui.define([
58
58
  *
59
59
  * @protected
60
60
  * @alias sap.ui.core.delegate.ScrollEnablement
61
- * @version 1.103.0
61
+ * @version 1.105.0
62
62
  * @author SAP SE
63
63
  */
64
64
  var ScrollEnablement = BaseObject.extend("sap.ui.core.delegate.ScrollEnablement", /** @lends sap.ui.core.delegate.ScrollEnablement.prototype */ {
@@ -37,7 +37,7 @@ sap.ui.define([
37
37
  *
38
38
  * @extends sap.ui.core.Element
39
39
  * @author SAP SE
40
- * @version 1.103.0
40
+ * @version 1.105.0
41
41
  *
42
42
  * @public
43
43
  * @since 1.52
@@ -4,8 +4,8 @@
4
4
  * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
5
  */
6
6
 
7
- sap.ui.define(["./DragInfo", "./DropInfo", "sap/ui/Device", "sap/base/Log"],
8
- function(DragInfo, DropInfo, Device, Log) {
7
+ sap.ui.define(["./DragInfo", "./DropInfo", "sap/base/Log"],
8
+ function(DragInfo, DropInfo, Log) {
9
9
  "use strict";
10
10
 
11
11
  /**
@@ -22,7 +22,7 @@ sap.ui.define(["./DragInfo", "./DropInfo", "sap/ui/Device", "sap/base/Log"],
22
22
  * @extends sap.ui.core.dnd.DropInfo
23
23
  *
24
24
  * @author SAP SE
25
- * @version 1.103.0
25
+ * @version 1.105.0
26
26
  *
27
27
  * @public
28
28
  * @since 1.52
@@ -22,7 +22,7 @@ sap.ui.define(["./DragDropBase"],
22
22
  * @extends sap.ui.core.dnd.DragDropBase
23
23
  *
24
24
  * @author SAP SE
25
- * @version 1.103.0
25
+ * @version 1.105.0
26
26
  *
27
27
  * @public
28
28
  * @since 1.56
@@ -21,7 +21,7 @@ sap.ui.define(["./DragDropBase"],
21
21
  * @extends sap.ui.core.dnd.DragDropBase
22
22
  *
23
23
  * @author SAP SE
24
- * @version 1.103.0
24
+ * @version 1.105.0
25
25
  *
26
26
  * @public
27
27
  * @since 1.56
@@ -222,6 +222,8 @@ sap.ui.define([
222
222
  * Get a date instance of the DateFormat, which can be used for formatting.
223
223
  *
224
224
  * @param {object} [oFormatOptions] Object which defines the format options
225
+ * @param {int} [oFormatOptions.firstDayOfWeek] @since 1.105.0 specifies the first day of the week starting with <code>0</code> (which is Sunday); if not defined, the value taken from the locale is used
226
+ * @param {int} [oFormatOptions.minimalDaysInFirstWeek] @since 1.105.0 minimal days at the beginning of the year which define the first calendar week; if not defined, the value taken from the locale is used
225
227
  * @param {string} [oFormatOptions.format] @since 1.34.0 contains pattern symbols (e.g. "yMMMd" or "Hms") which will be converted into the pattern in the used locale, which matches the wanted symbols best.
226
228
  * 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)
227
229
  * See {@link http://unicode.org/reports/tr35/tr35-dates.html#availableFormats_appendItems}
@@ -250,6 +252,8 @@ sap.ui.define([
250
252
  * Get a datetime instance of the DateFormat, which can be used for formatting.
251
253
  *
252
254
  * @param {object} [oFormatOptions] Object which defines the format options
255
+ * @param {int} [oFormatOptions.firstDayOfWeek] @since 1.105.0 specifies the first day of the week starting with <code>0</code> (which is Sunday); if not defined, the value taken from the locale is used
256
+ * @param {int} [oFormatOptions.minimalDaysInFirstWeek] @since 1.105.0 minimal days at the beginning of the year which define the first calendar week; if not defined, the value taken from the locale is used
253
257
  * @param {string} [oFormatOptions.format] @since 1.34.0 contains pattern symbols (e.g. "yMMMd" or "Hms") which will be converted into the pattern in the used locale, which matches the wanted symbols best.
254
258
  * 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)
255
259
  * See http://unicode.org/reports/tr35/tr35-dates.html#availableFormats_appendItems
@@ -379,6 +383,8 @@ sap.ui.define([
379
383
  * Get a datetimeWithTimezone instance of the DateFormat, which can be used for formatting.
380
384
  *
381
385
  * @param {object} [oFormatOptions] An object which defines the format options
386
+ * @param {int} [oFormatOptions.firstDayOfWeek] @since 1.105.0 specifies the first day of the week starting with <code>0</code> (which is Sunday); if not defined, the value taken from the locale is used
387
+ * @param {int} [oFormatOptions.minimalDaysInFirstWeek] @since 1.105.0 minimal days at the beginning of the year which define the first calendar week; if not defined, the value taken from the locale is used
382
388
  * @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.
383
389
  * 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)
384
390
  * See http://unicode.org/reports/tr35/tr35-dates.html#availableFormats_appendItems
@@ -435,6 +441,8 @@ sap.ui.define([
435
441
  * Get a time instance of the DateFormat, which can be used for formatting.
436
442
  *
437
443
  * @param {object} [oFormatOptions] Object which defines the format options
444
+ * @param {int} [oFormatOptions.firstDayOfWeek] @since 1.105.0 specifies the first day of the week starting with <code>0</code> (which is Sunday); if not defined, the value taken from the locale is used
445
+ * @param {int} [oFormatOptions.minimalDaysInFirstWeek] @since 1.105.0 minimal days at the beginning of the year which define the first calendar week; if not defined, the value taken from the locale is used
438
446
  * @param {string} [oFormatOptions.format] @since 1.34.0 contains pattern symbols (e.g. "yMMMd" or "Hms") which will be converted into the pattern in the used locale, which matches the wanted symbols best.
439
447
  * 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)
440
448
  * See http://unicode.org/reports/tr35/tr35-dates.html#availableFormats_appendItems
@@ -517,6 +525,11 @@ sap.ui.define([
517
525
  oFormat.oFormatOptions.calendarType = sap.ui.getCore().getConfiguration().getCalendarType();
518
526
  }
519
527
 
528
+ if (oFormat.oFormatOptions.firstDayOfWeek === undefined && oFormat.oFormatOptions.minimalDaysInFirstWeek !== undefined
529
+ || oFormat.oFormatOptions.firstDayOfWeek !== undefined && oFormat.oFormatOptions.minimalDaysInFirstWeek === undefined) {
530
+ throw new Error("Format options firstDayOfWeek and minimalDaysInFirstWeek need both to be set, but only one was provided.");
531
+ }
532
+
520
533
  if (!oFormat.oFormatOptions.pattern) {
521
534
  if (oFormat.oFormatOptions.format) {
522
535
  oFormat.oFormatOptions.pattern = oFormat.oLocaleData.getCustomDateTimePattern(oFormat.oFormatOptions.format, oFormat.oFormatOptions.calendarType);
@@ -1019,7 +1032,10 @@ sap.ui.define([
1019
1032
  "Y": {
1020
1033
  name: "weekYear",
1021
1034
  format: function(oField, oDate, bUTC, oFormat) {
1022
- var oWeek = oDate.getUTCWeek();
1035
+ var oWeek = oDate.getUTCWeek(oFormat.oLocale, {
1036
+ firstDayOfWeek: oFormat.oFormatOptions.firstDayOfWeek,
1037
+ minimalDaysInFirstWeek: oFormat.oFormatOptions.minimalDaysInFirstWeek
1038
+ });
1023
1039
  var iWeekYear = oWeek.year;
1024
1040
  var sWeekYear = String(iWeekYear);
1025
1041
  var sCalendarType = oFormat.oFormatOptions.calendarType;
@@ -1165,7 +1181,10 @@ sap.ui.define([
1165
1181
  "w": {
1166
1182
  name: "weekInYear",
1167
1183
  format: function(oField, oDate, bUTC, oFormat) {
1168
- var oWeek = oDate.getUTCWeek();
1184
+ var oWeek = oDate.getUTCWeek(oFormat.oLocale, {
1185
+ firstDayOfWeek: oFormat.oFormatOptions.firstDayOfWeek,
1186
+ minimalDaysInFirstWeek: oFormat.oFormatOptions.minimalDaysInFirstWeek
1187
+ });
1169
1188
  var iWeek = oWeek.week;
1170
1189
  var sWeek = String(iWeek + 1);
1171
1190
  if (oField.digits < 3) {
@@ -2241,7 +2260,7 @@ sap.ui.define([
2241
2260
 
2242
2261
  // recreate javascript date object from the given oDateValues.
2243
2262
  // In case of oDateValue.valid == false, null value will be returned
2244
- var fnCreateDate = function(oDateValue, sCalendarType, bUTC, bStrict, sTimezone) {
2263
+ var fnCreateDate = function(oDateValue, sCalendarType, bUTC, bStrict, sTimezone, oFormatOptions, oLocale) {
2245
2264
  if (!oDateValue.valid) {
2246
2265
  return null;
2247
2266
  }
@@ -2267,9 +2286,12 @@ sap.ui.define([
2267
2286
  oDate.setUTCWeek({
2268
2287
  year: oDateValue.weekYear || oDateValue.year,
2269
2288
  week: oDateValue.week
2289
+ }, oLocale, {
2290
+ firstDayOfWeek: oFormatOptions.firstDayOfWeek,
2291
+ minimalDaysInFirstWeek: oFormatOptions.minimalDaysInFirstWeek
2270
2292
  });
2271
2293
 
2272
- //add the dayNumberOfWeek to the current day
2294
+ // add the dayNumberOfWeek to the current day
2273
2295
  if (oDateValue.dayNumberOfWeek !== undefined) {
2274
2296
  oDate.setUTCDate(oDate.getUTCDate() + oDateValue.dayNumberOfWeek - 1);
2275
2297
  }
@@ -2296,7 +2318,7 @@ sap.ui.define([
2296
2318
  // tzDiff is in seconds for a higher precision (historical timezone might have differences in seconds)
2297
2319
  // e.g. new Date(Date.UTC(1730, 0, 1))
2298
2320
  // is in Berlin: Sun Jan 01 1730 00:53:28 GMT+0053 (Central European Standard Time)
2299
- oDate.setUTCSeconds((oDateValue.second || 0) + oDateValue.tzDiff);
2321
+ oDate.setUTCSeconds(oDate.getUTCSeconds() + oDateValue.tzDiff);
2300
2322
  }
2301
2323
  return oDate;
2302
2324
  };
@@ -2419,7 +2441,7 @@ sap.ui.define([
2419
2441
  oDateValue.valid = false;
2420
2442
  }
2421
2443
 
2422
- oJSDate = fnCreateDate(oDateValue, sCalendarType, bUTC, bStrict, sTimezone);
2444
+ oJSDate = fnCreateDate(oDateValue, sCalendarType, bUTC, bStrict, sTimezone, this.oFormatOptions, this.oLocale);
2423
2445
 
2424
2446
  if (oJSDate) {
2425
2447
  if (this.type === mDateFormatTypes.DATETIME_WITH_TIMEZONE) {
@@ -2443,8 +2465,8 @@ sap.ui.define([
2443
2465
  var oDateValue1 = mergeWithoutOverwrite(aDateValues[0], aDateValues[1]);
2444
2466
  var oDateValue2 = mergeWithoutOverwrite(aDateValues[1], aDateValues[0]);
2445
2467
 
2446
- oJSDate1 = fnCreateDate(oDateValue1, sCalendarType, bUTC, bStrict, sTimezone);
2447
- oJSDate2 = fnCreateDate(oDateValue2, sCalendarType, bUTC, bStrict, sTimezone);
2468
+ oJSDate1 = fnCreateDate(oDateValue1, sCalendarType, bUTC, bStrict, sTimezone, this.oFormatOptions, this.oLocale);
2469
+ oJSDate2 = fnCreateDate(oDateValue2, sCalendarType, bUTC, bStrict, sTimezone, this.oFormatOptions, this.oLocale);
2448
2470
 
2449
2471
  if (oJSDate1 && oJSDate2) {
2450
2472
 
@@ -2862,7 +2884,7 @@ sap.ui.define([
2862
2884
  DateFormat.prototype._adaptDayOfWeek = function(iDayOfWeek) {
2863
2885
  // day of week depends on the format locale
2864
2886
  // the DateFormat's locale is independent
2865
- var iFirstDayOfWeek = LocaleData.getInstance(sap.ui.getCore().getConfiguration().getFormatSettings().getFormatLocale()).getFirstDayOfWeek();
2887
+ var iFirstDayOfWeek = this.oFormatOptions.firstDayOfWeek !== undefined ? this.oFormatOptions.firstDayOfWeek : LocaleData.getInstance(this.oLocale).getFirstDayOfWeek();
2866
2888
  var iDayNumberOfWeek = iDayOfWeek - (iFirstDayOfWeek - 1);
2867
2889
 
2868
2890
  if (iDayNumberOfWeek <= 0) {