@openui5/sap.ui.core 1.132.1 → 1.133.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 (376) hide show
  1. package/.dtsgenrc +5 -0
  2. package/.eslintrc.json +4 -0
  3. package/.reuse/dep5 +2 -2
  4. package/LICENSES/LicenseRef-Unicode-3.0.txt +39 -0
  5. package/THIRDPARTY.txt +54 -66
  6. package/package.json +1 -1
  7. package/src/jquery.sap.global.js +1 -1
  8. package/src/jquery.sap.properties.js +1 -1
  9. package/src/jquery.sap.resources.js +1 -1
  10. package/src/jquery.sap.script.js +1 -1
  11. package/src/jquery.sap.storage.js +3 -3
  12. package/src/sap/base/Event.js +1 -1
  13. package/src/sap/base/Eventing.js +1 -1
  14. package/src/sap/base/config.js +1 -1
  15. package/src/sap/base/i18n/LanguageTag.js +1 -1
  16. package/src/sap/base/i18n/date/TimezoneUtils.js +159 -12
  17. package/src/sap/base/util/JSTokenizer.js +25 -18
  18. package/src/sap/base/util/restricted/_CancelablePromise.js +1 -1
  19. package/src/sap/base/util/restricted/_castArray.js +1 -1
  20. package/src/sap/base/util/restricted/_compact.js +1 -1
  21. package/src/sap/base/util/restricted/_curry.js +1 -1
  22. package/src/sap/base/util/restricted/_debounce.js +1 -1
  23. package/src/sap/base/util/restricted/_difference.js +1 -1
  24. package/src/sap/base/util/restricted/_differenceBy.js +1 -1
  25. package/src/sap/base/util/restricted/_differenceWith.js +1 -1
  26. package/src/sap/base/util/restricted/_flatMap.js +1 -1
  27. package/src/sap/base/util/restricted/_flatMapDeep.js +1 -1
  28. package/src/sap/base/util/restricted/_flatMapDepth.js +1 -1
  29. package/src/sap/base/util/restricted/_flatten.js +1 -1
  30. package/src/sap/base/util/restricted/_flattenDeep.js +1 -1
  31. package/src/sap/base/util/restricted/_flattenDepth.js +1 -1
  32. package/src/sap/base/util/restricted/_intersection.js +1 -1
  33. package/src/sap/base/util/restricted/_intersectionBy.js +1 -1
  34. package/src/sap/base/util/restricted/_intersectionWith.js +1 -1
  35. package/src/sap/base/util/restricted/_isEqual.js +1 -1
  36. package/src/sap/base/util/restricted/_isEqualWith.js +1 -1
  37. package/src/sap/base/util/restricted/_isNil.js +1 -1
  38. package/src/sap/base/util/restricted/_max.js +1 -1
  39. package/src/sap/base/util/restricted/_merge.js +1 -1
  40. package/src/sap/base/util/restricted/_mergeWith.js +1 -1
  41. package/src/sap/base/util/restricted/_min.js +1 -1
  42. package/src/sap/base/util/restricted/_omit.js +1 -1
  43. package/src/sap/base/util/restricted/_pick.js +1 -1
  44. package/src/sap/base/util/restricted/_pickBy.js +1 -1
  45. package/src/sap/base/util/restricted/_throttle.js +1 -1
  46. package/src/sap/base/util/restricted/_toArray.js +1 -1
  47. package/src/sap/base/util/restricted/_union.js +1 -1
  48. package/src/sap/base/util/restricted/_unionBy.js +1 -1
  49. package/src/sap/base/util/restricted/_unionWith.js +1 -1
  50. package/src/sap/base/util/restricted/_uniq.js +1 -1
  51. package/src/sap/base/util/restricted/_uniqBy.js +1 -1
  52. package/src/sap/base/util/restricted/_uniqWith.js +1 -1
  53. package/src/sap/base/util/restricted/_without.js +1 -1
  54. package/src/sap/base/util/restricted/_xor.js +1 -1
  55. package/src/sap/base/util/restricted/_xorBy.js +1 -1
  56. package/src/sap/base/util/restricted/_xorWith.js +1 -1
  57. package/src/sap/base/util/restricted/_zipObject.js +1 -1
  58. package/src/sap/base/util/restricted/_zipObjectDeep.js +1 -1
  59. package/src/sap/ui/Device.js +3 -3
  60. package/src/sap/ui/Global.js +3 -3
  61. package/src/sap/ui/base/Event.js +1 -1
  62. package/src/sap/ui/base/EventProvider.js +1 -1
  63. package/src/sap/ui/base/Interface.js +1 -1
  64. package/src/sap/ui/base/ManagedObject.js +1 -1
  65. package/src/sap/ui/base/ManagedObjectMetadata.js +1 -1
  66. package/src/sap/ui/base/Metadata.js +1 -1
  67. package/src/sap/ui/base/Object.js +1 -1
  68. package/src/sap/ui/base/ObjectPool.js +1 -1
  69. package/src/sap/ui/base/SyncPromise.js +120 -25
  70. package/src/sap/ui/core/.library +6 -6
  71. package/src/sap/ui/core/BusyIndicator.js +1 -1
  72. package/src/sap/ui/core/Component.js +1 -1
  73. package/src/sap/ui/core/ComponentContainer.js +1 -1
  74. package/src/sap/ui/core/ComponentMetadata.js +1 -1
  75. package/src/sap/ui/core/ComponentSupport.js +1 -1
  76. package/src/sap/ui/core/Configuration.js +1 -1
  77. package/src/sap/ui/core/Control.js +1 -1
  78. package/src/sap/ui/core/Core.js +2 -2
  79. package/src/sap/ui/core/CustomData.js +1 -1
  80. package/src/sap/ui/core/DeclarativeSupport.js +1 -1
  81. package/src/sap/ui/core/Element.js +3 -1
  82. package/src/sap/ui/core/ElementMetadata.js +1 -1
  83. package/src/sap/ui/core/EnabledPropagator.js +1 -1
  84. package/src/sap/ui/core/EventBus.js +1 -1
  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 +1 -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 +96 -79
  101. package/src/sap/ui/core/Manifest.js +1 -1
  102. package/src/sap/ui/core/Message.js +1 -1
  103. package/src/sap/ui/core/RenderManager.js +1 -1
  104. package/src/sap/ui/core/Renderer.js +1 -1
  105. package/src/sap/ui/core/ResizeHandler.js +1 -1
  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 +1 -1
  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 +1 -1
  116. package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
  117. package/src/sap/ui/core/XMLTemplateProcessor.js +22 -3
  118. package/src/sap/ui/core/_IconRegistry.js +2 -0
  119. package/src/sap/ui/core/boot/_bootConfig.js +134 -105
  120. package/src/sap/ui/core/cldr/Unicode-Data-Files-LICENSE.txt +36 -24
  121. package/src/sap/ui/core/cldr/ar.json +106 -98
  122. package/src/sap/ui/core/cldr/ar_EG.json +106 -98
  123. package/src/sap/ui/core/cldr/ar_SA.json +106 -98
  124. package/src/sap/ui/core/cldr/bg.json +44 -38
  125. package/src/sap/ui/core/cldr/ca.json +65 -65
  126. package/src/sap/ui/core/cldr/cnr.json +182 -170
  127. package/src/sap/ui/core/cldr/cs.json +39 -31
  128. package/src/sap/ui/core/cldr/cy.json +319 -233
  129. package/src/sap/ui/core/cldr/da.json +36 -32
  130. package/src/sap/ui/core/cldr/de.json +134 -135
  131. package/src/sap/ui/core/cldr/de_AT.json +134 -135
  132. package/src/sap/ui/core/cldr/de_CH.json +135 -136
  133. package/src/sap/ui/core/cldr/el.json +44 -37
  134. package/src/sap/ui/core/cldr/el_CY.json +44 -37
  135. package/src/sap/ui/core/cldr/en.json +91 -53
  136. package/src/sap/ui/core/cldr/en_AU.json +108 -70
  137. package/src/sap/ui/core/cldr/en_GB.json +123 -85
  138. package/src/sap/ui/core/cldr/en_HK.json +102 -64
  139. package/src/sap/ui/core/cldr/en_IE.json +102 -64
  140. package/src/sap/ui/core/cldr/en_IN.json +207 -67
  141. package/src/sap/ui/core/cldr/en_NZ.json +102 -64
  142. package/src/sap/ui/core/cldr/en_PG.json +102 -64
  143. package/src/sap/ui/core/cldr/en_SG.json +102 -64
  144. package/src/sap/ui/core/cldr/en_ZA.json +106 -66
  145. package/src/sap/ui/core/cldr/es.json +43 -39
  146. package/src/sap/ui/core/cldr/es_AR.json +92 -64
  147. package/src/sap/ui/core/cldr/es_BO.json +92 -64
  148. package/src/sap/ui/core/cldr/es_CL.json +92 -64
  149. package/src/sap/ui/core/cldr/es_CO.json +92 -64
  150. package/src/sap/ui/core/cldr/es_MX.json +131 -83
  151. package/src/sap/ui/core/cldr/es_PE.json +69 -41
  152. package/src/sap/ui/core/cldr/es_UY.json +93 -65
  153. package/src/sap/ui/core/cldr/es_VE.json +92 -64
  154. package/src/sap/ui/core/cldr/et.json +60 -59
  155. package/src/sap/ui/core/cldr/fa.json +122 -116
  156. package/src/sap/ui/core/cldr/fi.json +186 -82
  157. package/src/sap/ui/core/cldr/fr.json +57 -56
  158. package/src/sap/ui/core/cldr/fr_BE.json +56 -55
  159. package/src/sap/ui/core/cldr/fr_CA.json +139 -89
  160. package/src/sap/ui/core/cldr/fr_CH.json +47 -46
  161. package/src/sap/ui/core/cldr/fr_LU.json +57 -56
  162. package/src/sap/ui/core/cldr/he.json +458 -381
  163. package/src/sap/ui/core/cldr/hi.json +204 -170
  164. package/src/sap/ui/core/cldr/hr.json +64 -57
  165. package/src/sap/ui/core/cldr/hu.json +145 -148
  166. package/src/sap/ui/core/cldr/id.json +72 -62
  167. package/src/sap/ui/core/cldr/it.json +76 -75
  168. package/src/sap/ui/core/cldr/it_CH.json +76 -75
  169. package/src/sap/ui/core/cldr/ja.json +62 -44
  170. package/src/sap/ui/core/cldr/kk.json +171 -146
  171. package/src/sap/ui/core/cldr/ko.json +91 -73
  172. package/src/sap/ui/core/cldr/lt.json +134 -135
  173. package/src/sap/ui/core/cldr/lv.json +119 -111
  174. package/src/sap/ui/core/cldr/mk.json +316 -314
  175. package/src/sap/ui/core/cldr/ms.json +91 -75
  176. package/src/sap/ui/core/cldr/nb.json +37 -37
  177. package/src/sap/ui/core/cldr/nl.json +45 -48
  178. package/src/sap/ui/core/cldr/nl_BE.json +45 -48
  179. package/src/sap/ui/core/cldr/pl.json +47 -42
  180. package/src/sap/ui/core/cldr/pt.json +129 -124
  181. package/src/sap/ui/core/cldr/pt_PT.json +43 -38
  182. package/src/sap/ui/core/cldr/ro.json +42 -37
  183. package/src/sap/ui/core/cldr/ru.json +59 -51
  184. package/src/sap/ui/core/cldr/ru_UA.json +59 -51
  185. package/src/sap/ui/core/cldr/sk.json +55 -46
  186. package/src/sap/ui/core/cldr/sl.json +45 -31
  187. package/src/sap/ui/core/cldr/sr.json +189 -177
  188. package/src/sap/ui/core/cldr/sr_Latn.json +189 -177
  189. package/src/sap/ui/core/cldr/sv.json +42 -41
  190. package/src/sap/ui/core/cldr/th.json +104 -90
  191. package/src/sap/ui/core/cldr/tr.json +40 -39
  192. package/src/sap/ui/core/cldr/uk.json +143 -123
  193. package/src/sap/ui/core/cldr/vi.json +136 -133
  194. package/src/sap/ui/core/cldr/zh_CN.json +47 -41
  195. package/src/sap/ui/core/cldr/zh_HK.json +47 -41
  196. package/src/sap/ui/core/cldr/zh_SG.json +47 -41
  197. package/src/sap/ui/core/cldr/zh_TW.json +163 -160
  198. package/src/sap/ui/core/date/Buddhist.js +2 -2
  199. package/src/sap/ui/core/date/CalendarUtils.js +4 -4
  200. package/src/sap/ui/core/date/Gregorian.js +2 -2
  201. package/src/sap/ui/core/date/Islamic.js +2 -2
  202. package/src/sap/ui/core/date/Japanese.js +2 -2
  203. package/src/sap/ui/core/date/Persian.js +2 -2
  204. package/src/sap/ui/core/date/UI5Date.js +1 -1
  205. package/src/sap/ui/core/date/UniversalDate.js +12 -12
  206. package/src/sap/ui/core/delegate/ItemNavigation.js +1 -1
  207. package/src/sap/ui/core/delegate/ScrollEnablement.js +7 -5
  208. package/src/sap/ui/core/dnd/DragDropBase.js +1 -1
  209. package/src/sap/ui/core/dnd/DragDropInfo.js +1 -1
  210. package/src/sap/ui/core/dnd/DragInfo.js +1 -1
  211. package/src/sap/ui/core/dnd/DropInfo.js +1 -1
  212. package/src/sap/ui/core/fieldhelp/FieldHelp.js +204 -4
  213. package/src/sap/ui/core/fieldhelp/FieldHelpUtil.js +8 -8
  214. package/src/sap/ui/core/format/DateFormat.js +18 -16
  215. package/src/sap/ui/core/format/FormatUtils.js +1 -1
  216. package/src/sap/ui/core/format/NumberFormat.js +336 -353
  217. package/src/sap/ui/core/format/TimezoneUtil.js +1 -1
  218. package/src/sap/ui/core/getCompatibilityVersion.js +1 -1
  219. package/src/sap/ui/core/hyphenation/Hyphenation.js +1 -1
  220. package/src/sap/ui/core/library.js +7 -5
  221. package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
  222. package/src/sap/ui/core/message/Message.js +1 -1
  223. package/src/sap/ui/core/message/MessageManager.js +1 -1
  224. package/src/sap/ui/core/message/MessageMixin.js +12 -4
  225. package/src/sap/ui/core/message/MessageParser.js +1 -1
  226. package/src/sap/ui/core/message/MessageProcessor.js +1 -1
  227. package/src/sap/ui/core/messagebundle_sv.properties +1 -1
  228. package/src/sap/ui/core/mvc/HTMLView.js +1 -1
  229. package/src/sap/ui/core/mvc/JSONView.js +1 -1
  230. package/src/sap/ui/core/mvc/JSView.js +1 -1
  231. package/src/sap/ui/core/mvc/TemplateView.js +1 -1
  232. package/src/sap/ui/core/mvc/View.js +1 -1
  233. package/src/sap/ui/core/mvc/XMLView.js +1 -1
  234. package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
  235. package/src/sap/ui/core/plugin/LessSupport.js +1 -1
  236. package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -1
  237. package/src/sap/ui/core/postmessage/Bus.js +1 -1
  238. package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
  239. package/src/sap/ui/core/search/OpenSearchProvider.js +1 -1
  240. package/src/sap/ui/core/search/SearchProvider.js +1 -1
  241. package/src/sap/ui/core/service/Service.js +1 -1
  242. package/src/sap/ui/core/service/ServiceFactory.js +1 -1
  243. package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
  244. package/src/sap/ui/core/support/Plugin.js +1 -1
  245. package/src/sap/ui/core/support/Support.js +1 -1
  246. package/src/sap/ui/core/support/plugins/ControlTree.js +1 -1
  247. package/src/sap/ui/core/support/plugins/Interaction.js +1 -1
  248. package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
  249. package/src/sap/ui/core/support/plugins/Performance.js +1 -1
  250. package/src/sap/ui/core/support/plugins/Selector.js +1 -1
  251. package/src/sap/ui/core/support/plugins/TechInfo.js +1 -1
  252. package/src/sap/ui/core/support/plugins/Trace.js +1 -1
  253. package/src/sap/ui/core/support/plugins/ViewInfo.js +1 -1
  254. package/src/sap/ui/core/themes/base/fonts/SAP-icons.ttf +0 -0
  255. package/src/sap/ui/core/themes/base/fonts/SAP-icons.woff2 +0 -0
  256. package/src/sap/ui/core/theming/ThemeManager.js +84 -33
  257. package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
  258. package/src/sap/ui/core/tmpl/DOMElement.js +1 -1
  259. package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
  260. package/src/sap/ui/core/tmpl/Template.js +1 -1
  261. package/src/sap/ui/core/tmpl/TemplateControl.js +1 -1
  262. package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
  263. package/src/sap/ui/core/util/Export.js +1 -1
  264. package/src/sap/ui/core/util/ExportCell.js +1 -1
  265. package/src/sap/ui/core/util/ExportColumn.js +1 -1
  266. package/src/sap/ui/core/util/ExportRow.js +1 -1
  267. package/src/sap/ui/core/util/ExportType.js +1 -1
  268. package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
  269. package/src/sap/ui/core/util/File.js +1 -1
  270. package/src/sap/ui/core/util/LibraryInfo.js +1 -1
  271. package/src/sap/ui/core/util/MockServer.js +5 -2
  272. package/src/sap/ui/core/util/PasteHelper.js +1 -1
  273. package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
  274. package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
  275. package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
  276. package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
  277. package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
  278. package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
  279. package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
  280. package/src/sap/ui/core/webc/WebComponent.js +1 -1
  281. package/src/sap/ui/core/webc/WebComponentMetadata.js +1 -1
  282. package/src/sap/ui/core/ws/ReadyState.js +1 -1
  283. package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
  284. package/src/sap/ui/core/ws/WebSocket.js +1 -1
  285. package/src/sap/ui/debug/ControlTree.js +1 -1
  286. package/src/sap/ui/debug/DebugEnv.js +1 -1
  287. package/src/sap/ui/debug/PropertyList.js +1 -1
  288. package/src/sap/ui/model/ClientModel.js +1 -1
  289. package/src/sap/ui/model/CompositeDataState.js +1 -1
  290. package/src/sap/ui/model/CompositeType.js +1 -1
  291. package/src/sap/ui/model/DataState.js +1 -1
  292. package/src/sap/ui/model/ManagedObjectBindingSupport.js +21 -12
  293. package/src/sap/ui/model/MetaModel.js +1 -1
  294. package/src/sap/ui/model/Model.js +1 -1
  295. package/src/sap/ui/model/SelectionModel.js +1 -1
  296. package/src/sap/ui/model/SimpleType.js +1 -1
  297. package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
  298. package/src/sap/ui/model/Type.js +1 -1
  299. package/src/sap/ui/model/base/ManagedObjectModel.js +5 -2
  300. package/src/sap/ui/model/json/JSONModel.js +1 -1
  301. package/src/sap/ui/model/message/MessageModel.js +1 -1
  302. package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
  303. package/src/sap/ui/model/odata/ODataMessageParser.js +1 -1
  304. package/src/sap/ui/model/odata/ODataMetaModel.js +1 -1
  305. package/src/sap/ui/model/odata/ODataMetadata.js +1 -1
  306. package/src/sap/ui/model/odata/ODataModel.js +1 -1
  307. package/src/sap/ui/model/odata/ODataUtils.js +2 -2
  308. package/src/sap/ui/model/odata/UpdateMethod.js +18 -1
  309. package/src/sap/ui/model/odata/_AnnotationHelperExpression.js +2 -2
  310. package/src/sap/ui/model/odata/type/Boolean.js +1 -1
  311. package/src/sap/ui/model/odata/type/Byte.js +1 -1
  312. package/src/sap/ui/model/odata/type/Currency.js +1 -1
  313. package/src/sap/ui/model/odata/type/Date.js +3 -3
  314. package/src/sap/ui/model/odata/type/DateTime.js +1 -1
  315. package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
  316. package/src/sap/ui/model/odata/type/DateTimeOffset.js +2 -2
  317. package/src/sap/ui/model/odata/type/DateTimeWithTimezone.js +1 -1
  318. package/src/sap/ui/model/odata/type/Decimal.js +1 -1
  319. package/src/sap/ui/model/odata/type/Double.js +1 -1
  320. package/src/sap/ui/model/odata/type/Guid.js +1 -1
  321. package/src/sap/ui/model/odata/type/Int.js +1 -1
  322. package/src/sap/ui/model/odata/type/Int16.js +1 -1
  323. package/src/sap/ui/model/odata/type/Int32.js +1 -1
  324. package/src/sap/ui/model/odata/type/Int64.js +1 -1
  325. package/src/sap/ui/model/odata/type/ODataType.js +1 -1
  326. package/src/sap/ui/model/odata/type/Raw.js +1 -1
  327. package/src/sap/ui/model/odata/type/SByte.js +1 -1
  328. package/src/sap/ui/model/odata/type/Single.js +1 -1
  329. package/src/sap/ui/model/odata/type/Stream.js +1 -1
  330. package/src/sap/ui/model/odata/type/String.js +1 -1
  331. package/src/sap/ui/model/odata/type/Time.js +1 -1
  332. package/src/sap/ui/model/odata/type/TimeOfDay.js +3 -3
  333. package/src/sap/ui/model/odata/type/Unit.js +1 -1
  334. package/src/sap/ui/model/odata/v2/Context.js +1 -1
  335. package/src/sap/ui/model/odata/v2/ODataAnnotations.js +1 -1
  336. package/src/sap/ui/model/odata/v2/ODataModel.js +39 -22
  337. package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +1 -1
  338. package/src/sap/ui/model/odata/v4/Context.js +48 -16
  339. package/src/sap/ui/model/odata/v4/ODataBinding.js +2 -0
  340. package/src/sap/ui/model/odata/v4/ODataContextBinding.js +3 -1
  341. package/src/sap/ui/model/odata/v4/ODataListBinding.js +22 -13
  342. package/src/sap/ui/model/odata/v4/ODataMetaModel.js +17 -6
  343. package/src/sap/ui/model/odata/v4/ODataModel.js +3 -3
  344. package/src/sap/ui/model/odata/v4/ODataParentBinding.js +6 -0
  345. package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +1 -1
  346. package/src/sap/ui/model/odata/v4/ODataUtils.js +1 -1
  347. package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +9 -9
  348. package/src/sap/ui/model/odata/v4/lib/_AggregationHelper.js +4 -7
  349. package/src/sap/ui/model/odata/v4/lib/_Cache.js +251 -129
  350. package/src/sap/ui/model/odata/v4/lib/_Helper.js +20 -0
  351. package/src/sap/ui/model/odata/v4/lib/_Requestor.js +8 -3
  352. package/src/sap/ui/model/odata/v4/lib/_V2Requestor.js +1 -1
  353. package/src/sap/ui/model/resource/ResourceModel.js +1 -1
  354. package/src/sap/ui/model/type/Boolean.js +1 -1
  355. package/src/sap/ui/model/type/Currency.js +1 -1
  356. package/src/sap/ui/model/type/Date.js +1 -1
  357. package/src/sap/ui/model/type/DateInterval.js +1 -1
  358. package/src/sap/ui/model/type/DateTime.js +1 -1
  359. package/src/sap/ui/model/type/DateTimeInterval.js +1 -1
  360. package/src/sap/ui/model/type/FileSize.js +1 -1
  361. package/src/sap/ui/model/type/Float.js +1 -1
  362. package/src/sap/ui/model/type/Integer.js +1 -1
  363. package/src/sap/ui/model/type/String.js +1 -1
  364. package/src/sap/ui/model/type/Time.js +1 -1
  365. package/src/sap/ui/model/type/TimeInterval.js +1 -1
  366. package/src/sap/ui/model/type/Unit.js +1 -1
  367. package/src/sap/ui/model/xml/XMLModel.js +1 -1
  368. package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
  369. package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +1 -1
  370. package/src/sap/ui/test/generic/TestBase.js +1 -1
  371. package/src/sap/ui/test/starter/_setupAndStart.js +1 -1
  372. package/src/sap/ui/thirdparty/jquery-compat.js +1 -1
  373. package/src/sap/ui/util/Storage.js +1 -1
  374. package/src/ui5loader.js +1 -1
  375. package/test/sap/ui/qunit/TestRunner.js +6 -10
  376. package/LICENSES/Unicode-DFS-2015.txt +0 -51
@@ -5,8 +5,8 @@
5
5
  */
6
6
 
7
7
  // Provides class sap.ui.core.date.Buddhist
8
- sap.ui.define(['./UniversalDate', '../CalendarType', './_Calendars'],
9
- function(UniversalDate, CalendarType, _Calendars) {
8
+ sap.ui.define(['./UniversalDate','./_Calendars', 'sap/base/i18n/date/CalendarType'],
9
+ function(UniversalDate, _Calendars, CalendarType) {
10
10
  "use strict";
11
11
 
12
12
  /**
@@ -7,10 +7,10 @@
7
7
  // Provides type sap.ui.core.date.CalendarUtils.
8
8
  sap.ui.define([
9
9
  "sap/base/i18n/Formatting",
10
+ "sap/base/i18n/date/CalendarWeekNumbering",
10
11
  "sap/ui/core/Locale",
11
- "sap/ui/core/date/CalendarWeekNumbering",
12
12
  "sap/ui/core/LocaleData"
13
- ], function(Formatting, Locale, CalendarWeekNumbering, LocaleData) {
13
+ ], function(Formatting, CalendarWeekNumbering, Locale, LocaleData) {
14
14
  "use strict";
15
15
 
16
16
  /**
@@ -34,7 +34,7 @@ sap.ui.define([
34
34
  * which define the first calendar week</li>
35
35
  * </ul>
36
36
  *
37
- * @param {sap.ui.core.date.CalendarWeekNumbering} [sCalendarWeekNumbering]
37
+ * @param {module:sap/base/i18n/date/CalendarWeekNumbering} [sCalendarWeekNumbering]
38
38
  * The calendar week numbering; if omitted, the calendar week numbering of the configuration
39
39
  * is used; see
40
40
  * {@link module:sap/base/i18n/Formatting.getCalendarWeekNumbering Formatting.getCalendarWeekNumbering}.
@@ -46,7 +46,7 @@ sap.ui.define([
46
46
  * Is only used when <code>sCalendarWeekNumbering</code> is set to <code>Default</code>.
47
47
  * @returns {{firstDayOfWeek: int, minimalDaysInFirstWeek: int}|undefined}
48
48
  * The calendar week configuration, or <code>undefined<code> for an invalid value of
49
- * <code>sap.ui.core.date.CalendarWeekNumbering</code>.
49
+ * <code>module:sap/base/i18n/date/CalendarWeekNumbering</code>.
50
50
  * @public
51
51
  * @since 1.108.0
52
52
  */
@@ -5,8 +5,8 @@
5
5
  */
6
6
 
7
7
  // Provides class sap.ui.core.date.Gregorian
8
- sap.ui.define(['./UniversalDate', '../CalendarType', './_Calendars'],
9
- function(UniversalDate, CalendarType, _Calendars) {
8
+ sap.ui.define(['./UniversalDate', './_Calendars', 'sap/base/i18n/date/CalendarType'],
9
+ function(UniversalDate, _Calendars, CalendarType) {
10
10
  "use strict";
11
11
 
12
12
 
@@ -7,11 +7,11 @@
7
7
  // Provides class sap.ui.core.date.Islamic
8
8
  sap.ui.define([
9
9
  './UniversalDate',
10
- '../CalendarType',
11
10
  'sap/base/Log',
12
11
  'sap/base/i18n/Formatting',
12
+ 'sap/base/i18n/date/CalendarType',
13
13
  './_Calendars'
14
- ], function(UniversalDate, CalendarType, Log, Formatting, _Calendars) {
14
+ ], function(UniversalDate, Log, Formatting, CalendarType, _Calendars) {
15
15
  "use strict";
16
16
 
17
17
 
@@ -5,8 +5,8 @@
5
5
  */
6
6
 
7
7
  // Provides class sap.ui.core.date.Japanese
8
- sap.ui.define(['./UniversalDate', '../CalendarType', './_Calendars'],
9
- function(UniversalDate, CalendarType, _Calendars) {
8
+ sap.ui.define(['./UniversalDate', './_Calendars', 'sap/base/i18n/date/CalendarType'],
9
+ function(UniversalDate, _Calendars, CalendarType) {
10
10
  "use strict";
11
11
 
12
12
 
@@ -5,8 +5,8 @@
5
5
  */
6
6
 
7
7
  // Provides class sap.ui.core.date.Persian
8
- sap.ui.define(['./UniversalDate', '../CalendarType', './_Calendars'],
9
- function(UniversalDate, CalendarType, _Calendars) {
8
+ sap.ui.define(['./UniversalDate', './_Calendars', 'sap/base/i18n/date/CalendarType'],
9
+ function(UniversalDate, _Calendars, CalendarType) {
10
10
  "use strict";
11
11
 
12
12
 
@@ -66,7 +66,7 @@ sap.ui.define([
66
66
  * @hideconstructor
67
67
  * @public
68
68
  * @since 1.111.0
69
- * @version 1.132.1
69
+ * @version 1.133.0
70
70
  */
71
71
  function UI5Date(vDateParts, sTimezoneID) {
72
72
  var oDateInstance = UI5Date._createDateInstance(vDateParts);
@@ -7,14 +7,14 @@
7
7
  // Provides class sap.ui.core.date.UniversalDate
8
8
  sap.ui.define([
9
9
  "sap/base/i18n/Formatting",
10
+ "sap/base/i18n/date/CalendarWeekNumbering",
10
11
  'sap/ui/base/Object',
11
12
  "sap/ui/core/Locale",
12
13
  'sap/ui/core/LocaleData',
13
14
  './_Calendars',
14
15
  './CalendarUtils',
15
- './CalendarWeekNumbering',
16
16
  './UI5Date'
17
- ], function(Formatting, BaseObject, Locale, LocaleData, _Calendars, CalendarUtils, CalendarWeekNumbering, UI5Date) {
17
+ ], function(Formatting, CalendarWeekNumbering, BaseObject, Locale, LocaleData, _Calendars, CalendarUtils, UI5Date) {
18
18
  "use strict";
19
19
 
20
20
  /**
@@ -784,7 +784,7 @@ sap.ui.define([
784
784
  * Retrieves the calendar week
785
785
  *
786
786
  * @param {sap.ui.core.Locale} [oLocale] the locale used to get the calendar week calculation properties, defaults to the formatLocale
787
- * @param {sap.ui.core.date.CalendarWeekNumbering|{firstDayOfWeek: int, minimalDaysInFirstWeek: int}} [vCalendarWeekNumbering]
787
+ * @param {module:sap/base/i18n/date/CalendarWeekNumbering|{firstDayOfWeek: int, minimalDaysInFirstWeek: int}} [vCalendarWeekNumbering]
788
788
  * calendar week numbering or object with fields <code>firstDayOfWeek</code> and <code>minimalDaysInFirstWeek</code>,
789
789
  * the default is derived from <code>oLocale</code> but this parameter has precedence over oLocale if both are provided.
790
790
  * In case an object is provided, both properties <code>firstDayOfWeek</code> and <code>minimalDaysInFirstWeek</code> must be set, otherwise an error is thrown.
@@ -809,7 +809,7 @@ sap.ui.define([
809
809
  * @param {{week: int, year: int}} oWeek the calendar week, note: week index starts with <code>0</code>,
810
810
  * <code>oWeek.year</code> is optional and defaults to {@link sap.ui.core.date.UniversalDate#getFullYear}
811
811
  * @param {sap.ui.core.Locale} [oLocale] the locale used to get the calendar week calculation properties, defaults to the formatLocale
812
- * @param {sap.ui.core.date.CalendarWeekNumbering|{firstDayOfWeek: int, minimalDaysInFirstWeek: int}} [vCalendarWeekNumbering]
812
+ * @param {module:sap/base/i18n/date/CalendarWeekNumbering|{firstDayOfWeek: int, minimalDaysInFirstWeek: int}} [vCalendarWeekNumbering]
813
813
  * calendar week numbering or object with fields <code>firstDayOfWeek</code> and <code>minimalDaysInFirstWeek</code>,
814
814
  * the default is derived from <code>oLocale</code> but this parameter has precedence over oLocale if both are provided.
815
815
  * In case an object is provided, both properties <code>firstDayOfWeek</code> and <code>minimalDaysInFirstWeek</code> must be set, otherwise an error is thrown.
@@ -832,7 +832,7 @@ sap.ui.define([
832
832
  * Retrieves the UTC calendar week
833
833
  *
834
834
  * @param {sap.ui.core.Locale} [oLocale] the locale used to get the calendar week calculation properties, defaults to the formatLocale
835
- * @param {sap.ui.core.date.CalendarWeekNumbering|{firstDayOfWeek: int, minimalDaysInFirstWeek: int}} [vCalendarWeekNumbering]
835
+ * @param {module:sap/base/i18n/date/CalendarWeekNumbering|{firstDayOfWeek: int, minimalDaysInFirstWeek: int}} [vCalendarWeekNumbering]
836
836
  * calendar week numbering or object with fields <code>firstDayOfWeek</code> and <code>minimalDaysInFirstWeek</code>,
837
837
  * the default is derived from <code>oLocale</code> but this parameter has precedence over oLocale if both are provided.
838
838
  * In case an object is provided, both properties <code>firstDayOfWeek</code> and <code>minimalDaysInFirstWeek</code> must be set, otherwise an error is thrown.
@@ -857,7 +857,7 @@ sap.ui.define([
857
857
  * @param {{week: int, year: int}} oWeek the calendar week, note: week index starts with <code>0</code>,
858
858
  * <code>oWeek.year</code> is optional and defaults to {@link sap.ui.core.date.UniversalDate#getFullYear}
859
859
  * @param {sap.ui.core.Locale} [oLocale] the locale used to get the calendar week calculation properties, defaults to the formatLocale
860
- * @param {sap.ui.core.date.CalendarWeekNumbering|{firstDayOfWeek: int, minimalDaysInFirstWeek: int}} [vCalendarWeekNumbering]
860
+ * @param {module:sap/base/i18n/date/CalendarWeekNumbering|{firstDayOfWeek: int, minimalDaysInFirstWeek: int}} [vCalendarWeekNumbering]
861
861
  * calendar week numbering or object with fields <code>firstDayOfWeek</code> and <code>minimalDaysInFirstWeek</code>,
862
862
  * the default is derived from <code>oLocale</code> but this parameter has precedence over oLocale if both are provided.
863
863
  * In case an object is provided, both properties <code>firstDayOfWeek</code> and <code>minimalDaysInFirstWeek</code> must be set, otherwise an error is thrown.
@@ -986,7 +986,7 @@ sap.ui.define([
986
986
  * @param {int} iDay the date, e.g. <code>3</code>
987
987
  * @param {sap.ui.core.Locale} [oLocale] the locale used for the week calculation, if oWeekConfig is not provided (falls back to the formatLocale)
988
988
  * e.g. <code>new Locale("de-DE")</code>
989
- * @param {sap.ui.core.date.CalendarWeekNumbering|{firstDayOfWeek: int, minimalDaysInFirstWeek: int}} [vCalendarWeekNumbering]
989
+ * @param {module:sap/base/i18n/date/CalendarWeekNumbering|{firstDayOfWeek: int, minimalDaysInFirstWeek: int}} [vCalendarWeekNumbering]
990
990
  * calendar week numbering or object with fields <code>firstDayOfWeek</code> and <code>minimalDaysInFirstWeek</code>,
991
991
  * the default is derived from <code>oLocale</code> but this parameter has precedence over oLocale if both are provided.
992
992
  * In case an object is provided, both properties <code>firstDayOfWeek</code> and <code>minimalDaysInFirstWeek</code> must be set, otherwise an error is thrown.
@@ -1041,7 +1041,7 @@ sap.ui.define([
1041
1041
  * @param {int} iWeek the calendar week index, e.g. <code>8</code>
1042
1042
  * @param {sap.ui.core.Locale} [oLocale] the locale used for the week calculation, if oWeekConfig is not provided (falls back to the formatLocale)
1043
1043
  * e.g. <code>new Locale("de-DE")</code>
1044
- * @param {sap.ui.core.date.CalendarWeekNumbering|{firstDayOfWeek: int, minimalDaysInFirstWeek: int}} [vCalendarWeekNumbering]
1044
+ * @param {module:sap/base/i18n/date/CalendarWeekNumbering|{firstDayOfWeek: int, minimalDaysInFirstWeek: int}} [vCalendarWeekNumbering]
1045
1045
  * calendar week numbering or object with fields <code>firstDayOfWeek</code> and <code>minimalDaysInFirstWeek</code>,
1046
1046
  * the default is derived from <code>oLocale</code> but this parameter has precedence over oLocale if both are provided.
1047
1047
  * In case an object is provided, both properties <code>firstDayOfWeek</code> and <code>minimalDaysInFirstWeek</code> must be set, otherwise an error is thrown.
@@ -1082,7 +1082,7 @@ sap.ui.define([
1082
1082
  * Determines if the split week algorithm should be applied (the first day of the first calendar
1083
1083
  * week of the year is January 1st).
1084
1084
  *
1085
- * @param {sap.ui.core.date.CalendarWeekNumbering|{firstDayOfWeek: int, minimalDaysInFirstWeek: int}} vCalendarWeekNumbering
1085
+ * @param {module:sap/base/i18n/date/CalendarWeekNumbering|{firstDayOfWeek: int, minimalDaysInFirstWeek: int}} vCalendarWeekNumbering
1086
1086
  * calendar week numbering or object with fields <code>firstDayOfWeek</code> and
1087
1087
  * <code>minimalDaysInFirstWeek</code>
1088
1088
  * @param {sap.ui.core.Locale} oLocale the locale used for the week calculation
@@ -1100,7 +1100,7 @@ sap.ui.define([
1100
1100
  /**
1101
1101
  * Checks the calendar week configuration
1102
1102
  *
1103
- * @param {sap.ui.core.date.CalendarWeekNumbering|{firstDayOfWeek: int, minimalDaysInFirstWeek: int}} vCalendarWeekNumbering
1103
+ * @param {module:sap/base/i18n/date/CalendarWeekNumbering|{firstDayOfWeek: int, minimalDaysInFirstWeek: int}} vCalendarWeekNumbering
1104
1104
  * calendar week numbering or object with fields <code>firstDayOfWeek</code> and <code>minimalDaysInFirstWeek</code>
1105
1105
  * @throws {TypeError} If:
1106
1106
  * <ul>
@@ -1122,7 +1122,7 @@ sap.ui.define([
1122
1122
  /**
1123
1123
  * Resolves the calendar week configuration
1124
1124
  *
1125
- * @param {sap.ui.core.date.CalendarWeekNumbering|{firstDayOfWeek: int, minimalDaysInFirstWeek: int}} vCalendarWeekNumbering
1125
+ * @param {module:sap/base/i18n/date/CalendarWeekNumbering|{firstDayOfWeek: int, minimalDaysInFirstWeek: int}} vCalendarWeekNumbering
1126
1126
  * calendar week numbering or object with fields <code>firstDayOfWeek</code> and <code>minimalDaysInFirstWeek</code>
1127
1127
  * @param {sap.ui.core.Locale} [oLocale] locale to be used
1128
1128
  * @returns {{firstDayOfWeek: int, minimalDaysInFirstWeek: int}} calendar week calculation configuration
@@ -1144,7 +1144,7 @@ sap.ui.define([
1144
1144
  * @param {int} iYear year, e.g. <code>2016</code>
1145
1145
  * @param {sap.ui.core.Locale} [oLocale] the locale used for the week calculation, if oWeekConfig is not provided (falls back to the formatLocale)
1146
1146
  * e.g. <code>new Locale("de-DE")</code>
1147
- * @param {sap.ui.core.date.CalendarWeekNumbering|{firstDayOfWeek: int, minimalDaysInFirstWeek: int}} vCalendarWeekNumbering
1147
+ * @param {module:sap/base/i18n/date/CalendarWeekNumbering|{firstDayOfWeek: int, minimalDaysInFirstWeek: int}} vCalendarWeekNumbering
1148
1148
  * calendar week numbering or object with fields <code>firstDayOfWeek</code> and <code>minimalDaysInFirstWeek</code>,
1149
1149
  * the default is derived from <code>oLocale</code> but this parameter has precedence over oLocale if both are provided.
1150
1150
  * e.g. <code>{firstDayOfWeek: 1, minimalDaysInFirstWeek: 4}</code>
@@ -82,7 +82,7 @@ sap.ui.define([
82
82
  * @param {Element[]} aItemDomRefs Array of DOM references representing the items for the navigation
83
83
  * @param {boolean} [bNotInTabChain=false] Whether the selected element should be in the tab chain or not
84
84
  *
85
- * @version 1.132.1
85
+ * @version 1.133.0
86
86
  * @alias sap.ui.core.delegate.ItemNavigation
87
87
  * @public
88
88
  */
@@ -18,7 +18,8 @@ sap.ui.define([
18
18
  'sap/ui/core/IntervalTrigger',
19
19
  'sap/ui/core/ResizeHandler',
20
20
  "sap/ui/thirdparty/jquery",
21
- "sap/ui/events/KeyCodes"
21
+ "sap/ui/events/KeyCodes",
22
+ 'sap/ui/core/Element'
22
23
  ],
23
24
  function(
24
25
  Localization,
@@ -27,7 +28,8 @@ sap.ui.define([
27
28
  IntervalTrigger,
28
29
  ResizeHandler,
29
30
  jQuery,
30
- KeyCodes
31
+ KeyCodes,
32
+ Element
31
33
  ) {
32
34
  "use strict";
33
35
 
@@ -59,7 +61,7 @@ sap.ui.define([
59
61
  *
60
62
  * @protected
61
63
  * @alias sap.ui.core.delegate.ScrollEnablement
62
- * @version 1.132.1
64
+ * @version 1.133.0
63
65
  * @author SAP SE
64
66
  */
65
67
  var ScrollEnablement = BaseObject.extend("sap.ui.core.delegate.ScrollEnablement", /** @lends sap.ui.core.delegate.ScrollEnablement.prototype */ {
@@ -438,8 +440,8 @@ sap.ui.define([
438
440
 
439
441
  _customScrollTo : function(left, top, oEvent) {
440
442
  var sNodeName = oEvent.target.nodeName;
441
- // do not prevent events coming from input controls
442
- if (sNodeName != "INPUT" && sNodeName != "TEXTAREA") {
443
+ // do not prevent events coming from input controls or sap.m.Select
444
+ if (sNodeName != "INPUT" && sNodeName != "TEXTAREA" && !Element.closestTo(oEvent.target)?.isA("sap.m.Select")) {
443
445
  oEvent.preventDefault();
444
446
  oEvent.setMarked();
445
447
 
@@ -37,7 +37,7 @@ sap.ui.define([
37
37
  *
38
38
  * @extends sap.ui.core.Element
39
39
  * @author SAP SE
40
- * @version 1.132.1
40
+ * @version 1.133.0
41
41
  *
42
42
  * @public
43
43
  * @since 1.52
@@ -22,7 +22,7 @@ sap.ui.define(["sap/ui/core/Element", "./DragInfo", "./DropInfo", "sap/base/Log"
22
22
  * @extends sap.ui.core.dnd.DropInfo
23
23
  *
24
24
  * @author SAP SE
25
- * @version 1.132.1
25
+ * @version 1.133.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.132.1
25
+ * @version 1.133.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.132.1
24
+ * @version 1.133.0
25
25
  *
26
26
  * @public
27
27
  * @since 1.56
@@ -107,12 +107,207 @@ sap.ui.define([
107
107
  */
108
108
  #oUpdateHotspotsPromise = null;
109
109
 
110
+ /**
111
+ * @typedef {Map<string,Map<string,string>>} sap.ui.core.fieldhelp.Text2IdByType
112
+ *
113
+ * Map of a text property path to a map of the qualified name of the type to the ID property path for the text
114
+ * property which is used with the following semantics:
115
+ * If the given text property path is used relative to a path P of the given type, the path
116
+ * for field help lookup is the ID property path appended to P.
117
+ * Sample mappings:
118
+ * "ProductName" => { "com.sap....PackagedDangerousGoodWorkItemType" => "Product" },
119
+ * "toBusinessPartner/CompanyName" => {
120
+ * "com.sap....SalesOrderType" => "BusinessPartnerID",
121
+ * "com.sap....SalesOrderItemType"=> "BusinessPartnerID"
122
+ * }
123
+ * Sample for path used to lookup field help resulting from these mappings: Binding path
124
+ * "SalesOrderSet('42')/toBusinessPartner/CompanyName" is mapped to path
125
+ * "SalesOrderSet('42')/BusinessPartnerID" to look up field help
126
+ */
127
+
128
+ // map of meta model -> promise on text to ID mapping
129
+ // Map(<string, Promise<sap.ui.core.fieldhelp.Text2IdByType>>)
130
+ static #mMetaModel2TextMappingPromise = new Map();
131
+
132
+ /**
133
+ * @interface
134
+ * @name sap.ui.core.fieldhelp.MetaModelInterface
135
+ * @description Interface for uniform access to OData V4 and OData V2 meta models to retrieve information
136
+ * required to compute text to ID property mappings.
137
+ */
138
+
139
+ /**
140
+ * Gets the array of property names for the given entity type or complex type.
141
+ * Calling this method requires that {@link #requestTypes} has been called before, so that metadata is
142
+ * loaded and can be accessed synchronously.
143
+ *
144
+ * @function
145
+ * @name sap.ui.core.fieldhelp.MetaModelInterface#getProperties
146
+ * @param {object} oType The type object
147
+ * @returns {string[]} Array of property names
148
+ */
149
+
150
+ /**
151
+ * Gets the path of the <code>com.sap.vocabulary.common.Text</code> annotation for the given property in the
152
+ * given entity type or complex type.
153
+ * Calling this method requires that {@link #requestTypes} has been called before, so that metadata is
154
+ * loaded and can be accessed synchronously.
155
+ *
156
+ * @function
157
+ * @name sap.ui.core.fieldhelp.MetaModelInterface#getTextPropertyPath
158
+ * @param {string} sType The type name
159
+ * @param {string} sProperty The property name
160
+ * @returns {string|undefined} The path value of the <code>com.sap.vocabulary.common.Text</code> annotation
161
+ * targeting the given property or <code>undefined</code> if the property has no such annotation
162
+ */
163
+
164
+ /**
165
+ * Gets the qualified name of the type for the given resolved data path.
166
+ * Calling this method requires that {@link #requestTypes} has been called before, so that metadata is
167
+ * loaded and can be accessed synchronously.
168
+ *
169
+ * @function
170
+ * @name sap.ui.core.fieldhelp.MetaModelInterface#getTypeQName
171
+ * @param {string} sResolvedPath The resolved data path
172
+ * @returns {string|undefined}
173
+ * The qualified type name for the resolved path or <code>undefined</code>, if the path does not correspond to
174
+ * a type
175
+ */
176
+
177
+ /**
178
+ * Requests the entity types and complex types for this meta model.
179
+ *
180
+ * @async
181
+ * @function
182
+ * @name sap.ui.core.fieldhelp.MetaModelInterface#requestTypes
183
+ * @returns {Promise<Array<Map<string, object>>>}
184
+ * A promise resolving with an array with two maps of the type's qualified name to the type object; the first
185
+ * map for entity types, the second for complex types. The promise rejects, if the requested metadata cannot
186
+ * be loaded.
187
+ */
188
+
189
+ /**
190
+ * Implementation of the meta model interface for OData V4.
191
+ *
192
+ * @implements {sap.ui.core.fieldhelp.MetaModelInterface}
193
+ */
194
+ static #oMetaModelInterfaceV4 = {
195
+ getProperties(oType) {
196
+ return Object.keys(oType).filter((sKey) => oType[sKey].$kind === "Property");
197
+ },
198
+
199
+ getTextPropertyPath(sType, sProperty) {
200
+ return this.oMetaModel.getObject(`/${sType}/${sProperty}@com.sap.vocabularies.Common.v1.Text/$Path`);
201
+ },
202
+
203
+ getTypeQName(sResolvedPath) {
204
+ return this.oMetaModel.getObject(this.oMetaModel.getMetaPath(sResolvedPath) + "/$Type");
205
+ },
206
+
207
+ async requestTypes() {
208
+ const mEntityTypes = new Map();
209
+ const mComplexTypes = new Map();
210
+ const mScope = await this.oMetaModel.requestObject("/$");
211
+ Object.entries(mScope).forEach(([sKey, oValue]) => {
212
+ if (oValue.$kind === "EntityType") {
213
+ mEntityTypes.set(sKey, oValue);
214
+ } else if (oValue.$kind === "ComplexType") {
215
+ mComplexTypes.set(sKey, oValue);
216
+ }
217
+ });
218
+ return [mEntityTypes, mComplexTypes];
219
+ }
220
+ };
221
+
222
+ /**
223
+ * Gets the meta model interface for the given OData meta model. If computing a text to ID property mapping is
224
+ * not supported for the given meta model, <code>undefined</code> is returned.
225
+ *
226
+ * @param {sap.ui.model.odata.ODataMetaModel|sap.ui.model.odata.v4.ODataMetaModel} oMetaModel
227
+ * The OData meta model to retrieve the meta model interface for
228
+ * @returns {sap.ui.core.fieldhelp.MetaModelInterface|undefined} The meta model interface or
229
+ * <code>undefined</code>
230
+ */
231
+ static _getMetamodelInterface(oMetaModel) {
232
+ if (oMetaModel.isA("sap.ui.model.odata.v4.ODataMetaModel")) {
233
+ const oInterface = Object.create(FieldHelp.#oMetaModelInterfaceV4);
234
+ oInterface.oMetaModel = oMetaModel;
235
+ return oInterface;
236
+ }
237
+
238
+ return undefined;
239
+ }
240
+
241
+ /**
242
+ * Requests the ID property path for the given meta model interface and the given resolved path; if the
243
+ * resolved path does not point to a text property, the resolved path itself is returned.
244
+ *
245
+ * @param {sap.ui.core.fieldhelp.MetaModelInterface} oMetaModelInterface
246
+ * The OData meta model interface
247
+ * @param {string} sResolvedPath
248
+ * The resolved path
249
+ * @returns {Promise<string>}
250
+ * A promise that resolves with the ID property path for the given resolved path, if it points to a text
251
+ * property or the given resolved path otherwise. The promise rejects, if the requested metadata cannot
252
+ * be loaded.
253
+ */
254
+ static async _requestIDPropertyPath(oMetaModelInterface, sResolvedPath) {
255
+ const mText2IdByType = await FieldHelp._requestText2IdByType(oMetaModelInterface);
256
+ const [sFirstSegment, ...aSuffixSegments] = sResolvedPath.slice(1).split("/");
257
+ const aPrefixSegments = [sFirstSegment];
258
+ while (aSuffixSegments.length) {
259
+ const sPrefixPath = "/" + aPrefixSegments.join("/");
260
+ const sTypeQName = oMetaModelInterface.getTypeQName(sPrefixPath);
261
+ const sTextPropertyPath = aSuffixSegments.join("/");
262
+ const sIDPropertyPath = mText2IdByType.get(sTextPropertyPath)?.get(sTypeQName);
263
+ if (sIDPropertyPath) {
264
+ return sPrefixPath + "/" + sIDPropertyPath;
265
+ }
266
+ aPrefixSegments.push(aSuffixSegments.shift());
267
+ }
268
+ return sResolvedPath;
269
+ }
270
+
271
+ /**
272
+ * Requests the mapping of text properties to ID properties for the given meta model interface.
273
+ *
274
+ * @param {sap.ui.core.fieldhelp.MetaModelInterface} oMetaModelInterface
275
+ * The meta model interface
276
+ * @returns {Promise<sap.ui.core.fieldhelp.Text2IdByType>}
277
+ * A promise on the mapping of text to ID properties by type. The promise rejects, if the requested metadata
278
+ * cannot be loaded.
279
+ */
280
+ static _requestText2IdByType(oMetaModelInterface) {
281
+ if (FieldHelp.#mMetaModel2TextMappingPromise.has(oMetaModelInterface.oMetaModel)) {
282
+ return FieldHelp.#mMetaModel2TextMappingPromise.get(oMetaModelInterface.oMetaModel);
283
+ }
284
+
285
+ const oTextMappingPromise = oMetaModelInterface.requestTypes().then(([mEntityTypes, mComplexTypes]) => {
286
+ const mText2IdByType = new Map();
287
+ const mAllTypes = new Map([...mEntityTypes, ...mComplexTypes]);
288
+ for (const [sType, oType] of mAllTypes) {
289
+ for (const sProperty of oMetaModelInterface.getProperties(oType)) {
290
+ const sTextPropertyPath = oMetaModelInterface.getTextPropertyPath(sType, sProperty);
291
+ if (!sTextPropertyPath) {
292
+ continue;
293
+ }
294
+ const mIdByType = mText2IdByType.get(sTextPropertyPath) ??
295
+ mText2IdByType.set(sTextPropertyPath, new Map()).get(sTextPropertyPath);
296
+ mIdByType.set(sType, sProperty);
297
+ }
298
+ }
299
+ return mText2IdByType;
300
+ });
301
+ FieldHelp.#mMetaModel2TextMappingPromise.set(oMetaModelInterface.oMetaModel, oTextMappingPromise);
302
+ return oTextMappingPromise;
303
+ }
304
+
110
305
  /**
111
306
  * Requests the <code>String</code> value of the <code>com.sap.vocabularies.Common.v1.DocumentationRef</code>
112
307
  * annotation for the given binding.
113
308
  *
114
309
  * @param {sap.ui.model.Binding} oBinding The binding
115
- * @return {Promise<string>|undefined}
310
+ * @returns {Promise<string>|undefined}
116
311
  * If the binding is destroyed, or does not belong to an OData model, or the resolved path of the binding is a
117
312
  * meta model path or referencing an annotation, then <code>undefined</code> is returned; if the binding
118
313
  * belongs to an OData model the <code>com.sap.vocabularies.Common.v1.DocumentationRef</code> annotation value
@@ -124,7 +319,7 @@ sap.ui.define([
124
319
  if (oBinding.isDestroyed()) {
125
320
  return undefined;
126
321
  }
127
- const sResolvedPath = oBinding.getResolvedPath();
322
+ let sResolvedPath = oBinding.getResolvedPath();
128
323
  if (!sResolvedPath || sResolvedPath.includes("#") /*meta model path*/
129
324
  || sResolvedPath.includes("@") /*annotation path*/) {
130
325
  return undefined;
@@ -143,8 +338,12 @@ sap.ui.define([
143
338
  ?.String;
144
339
  });
145
340
  } else { // V4 meta model
146
- oFieldHelpAnnotationPromise = oMetaModel.requestObject("@" + sDocumentationRef,
147
- oMetaModel.getMetaContext(sResolvedPath));
341
+ const oFieldHelpPathPromise = FieldHelp._requestIDPropertyPath(
342
+ FieldHelp._getMetamodelInterface(oMetaModel), sResolvedPath);
343
+ oFieldHelpAnnotationPromise = oFieldHelpPathPromise.then((sFieldHelpPropertyPath) => {
344
+ sResolvedPath = sFieldHelpPropertyPath; // for message logged in case of errors below
345
+ return oMetaModel.requestObject("@" + sDocumentationRef, oMetaModel.getMetaContext(sResolvedPath));
346
+ });
148
347
  }
149
348
  return oFieldHelpAnnotationPromise.catch((oReason) => {
150
349
  Log.error(`Failed to request '${sDocumentationRef}' annotation for path '${sResolvedPath}'`,
@@ -408,6 +607,7 @@ sap.ui.define([
408
607
  this.#bActive = false;
409
608
  this.#mDocuRefControlToFieldHelp = {};
410
609
  this.#fnUpdateHotspotsCallback = null;
610
+ FieldHelp.#mMetaModel2TextMappingPromise.clear();
411
611
  ManagedObject.prototype.updateFieldHelp = undefined; // restore the default
412
612
  }
413
613
 
@@ -9,17 +9,17 @@ sap.ui.define([
9
9
  "use strict";
10
10
 
11
11
  /**
12
- * Util class to set field help information for controls like filter fields that don't have OData property bindings.
12
+ * Utility class to set field help information for controls for which field help information cannot be deduced
13
+ * automatically from OData metadata or for which the automatically deduced field help needs to be overwritten.
14
+ * These can be controls like filter fields that don't have OData property bindings.
13
15
  *
14
16
  * @alias module:sap/ui/core/fieldhelp/FieldHelpUtil
15
17
  * @author SAP SE
16
18
  * @class
17
19
  *
18
20
  * @hideconstructor
19
- * @private
20
- * @ui5-restricted sap.ui.comp.filterbar, sap.fe.templates.ListReport
21
- * @since 1.126.0
22
- * @see module:sap/ui/core/fieldhelp/FieldHelp
21
+ * @public
22
+ * @since 1.133.0
23
23
  */
24
24
  class FieldHelpUtil {
25
25
  /**
@@ -29,13 +29,13 @@ sap.ui.define([
29
29
  * The element on which to set the field help
30
30
  * @param {string|string[]} vDocumentationRefs
31
31
  * The string value or an array of string values of
32
- * <code>com.sap.vocabularies.Common.v1.DocumentationRef</code> OData annotations
32
+ * <code>com.sap.vocabularies.Common.v1.DocumentationRef</code> OData annotations, for example
33
+ * <code>"urn:sap-com:documentation:key?=type=DE&id=MY_ID&origin=MY_ORIGIN"</code>"
33
34
  * @throws {Error}
34
35
  * If there is already a custom data with key <code>sap-ui-DocumentationRef</code> that is not of type
35
36
  * {@link module:sap/ui/core/fieldhelp/FieldHelpCustomData}
36
37
  *
37
- * @private
38
- * @ui5-restricted sap.ui.comp.filterbar, sap.fe.templates.ListReport
38
+ * @public
39
39
  */
40
40
  static setDocumentationRef(oElement, vDocumentationRefs) {
41
41
  const aValue = Array.isArray(vDocumentationRefs) ? vDocumentationRefs : [vDocumentationRefs];