@openui5/sap.ui.core 1.92.0 → 1.95.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 (394) hide show
  1. package/{.eslintrc → .eslintrc.json} +1 -2
  2. package/.reuse/dep5 +1 -6
  3. package/THIRDPARTY.txt +4 -10
  4. package/package.json +1 -1
  5. package/src/jquery.sap.global.js +9 -2
  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 +7 -4
  10. package/src/jquery.sap.stubs.js +2 -1
  11. package/src/jquery.sap.trace.js +2 -1
  12. package/src/sap/base/i18n/ResourceBundle.js +8 -4
  13. package/src/sap/base/strings/whitespaceReplacer.js +52 -0
  14. package/src/sap/base/util/Properties.js +4 -1
  15. package/src/sap/base/util/isEmptyObject.js +1 -2
  16. package/src/sap/base/util/restricted/_CancelablePromise.js +1 -1
  17. package/src/sap/base/util/restricted/_castArray.js +1 -1
  18. package/src/sap/base/util/restricted/_compact.js +1 -1
  19. package/src/sap/base/util/restricted/_curry.js +1 -1
  20. package/src/sap/base/util/restricted/_debounce.js +1 -1
  21. package/src/sap/base/util/restricted/_difference.js +1 -1
  22. package/src/sap/base/util/restricted/_differenceBy.js +1 -1
  23. package/src/sap/base/util/restricted/_differenceWith.js +1 -1
  24. package/src/sap/base/util/restricted/_flatMap.js +1 -1
  25. package/src/sap/base/util/restricted/_flatMapDeep.js +1 -1
  26. package/src/sap/base/util/restricted/_flatMapDepth.js +1 -1
  27. package/src/sap/base/util/restricted/_flatten.js +1 -1
  28. package/src/sap/base/util/restricted/_flattenDeep.js +1 -1
  29. package/src/sap/base/util/restricted/_flattenDepth.js +1 -1
  30. package/src/sap/base/util/restricted/_intersection.js +1 -1
  31. package/src/sap/base/util/restricted/_intersectionBy.js +1 -1
  32. package/src/sap/base/util/restricted/_intersectionWith.js +1 -1
  33. package/src/sap/base/util/restricted/_isEqual.js +1 -1
  34. package/src/sap/base/util/restricted/_isEqualWith.js +1 -1
  35. package/src/sap/base/util/restricted/_isNil.js +1 -1
  36. package/src/sap/base/util/restricted/_max.js +1 -1
  37. package/src/sap/base/util/restricted/_merge.js +1 -1
  38. package/src/sap/base/util/restricted/_mergeWith.js +1 -1
  39. package/src/sap/base/util/restricted/_min.js +1 -1
  40. package/src/sap/base/util/restricted/_omit.js +1 -1
  41. package/src/sap/base/util/restricted/_pick.js +1 -1
  42. package/src/sap/base/util/restricted/_pickBy.js +1 -1
  43. package/src/sap/base/util/restricted/_throttle.js +1 -1
  44. package/src/sap/base/util/restricted/_toArray.js +1 -1
  45. package/src/sap/base/util/restricted/_union.js +1 -1
  46. package/src/sap/base/util/restricted/_unionBy.js +1 -1
  47. package/src/sap/base/util/restricted/_unionWith.js +1 -1
  48. package/src/sap/base/util/restricted/_uniq.js +1 -1
  49. package/src/sap/base/util/restricted/_uniqBy.js +1 -1
  50. package/src/sap/base/util/restricted/_uniqWith.js +1 -1
  51. package/src/sap/base/util/restricted/_without.js +1 -1
  52. package/src/sap/base/util/restricted/_xor.js +1 -1
  53. package/src/sap/base/util/restricted/_xorBy.js +1 -1
  54. package/src/sap/base/util/restricted/_xorWith.js +1 -1
  55. package/src/sap/base/util/restricted/_zipObject.js +1 -1
  56. package/src/sap/base/util/restricted/_zipObjectDeep.js +1 -1
  57. package/src/sap/ui/Device.js +37 -42
  58. package/src/sap/ui/Global.js +6 -6
  59. package/src/sap/ui/VersionInfo.js +1 -0
  60. package/src/sap/ui/base/DataType.js +14 -7
  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/ExpressionParser.js +9 -6
  64. package/src/sap/ui/base/Interface.js +3 -49
  65. package/src/sap/ui/base/ManagedObject.js +131 -24
  66. package/src/sap/ui/base/ManagedObjectMetadata.js +13 -4
  67. package/src/sap/ui/base/Metadata.js +1 -1
  68. package/src/sap/ui/base/Object.js +49 -4
  69. package/src/sap/ui/base/ObjectPool.js +1 -1
  70. package/src/sap/ui/base/syncXHRFix.js +2 -1
  71. package/src/sap/ui/core/.library +5 -5
  72. package/src/sap/ui/core/AppCacheBuster.js +4 -4
  73. package/src/sap/ui/core/BusyIndicator.js +1 -11
  74. package/src/sap/ui/core/BusyIndicatorUtils.js +4 -1
  75. package/src/sap/ui/core/Component.js +441 -179
  76. package/src/sap/ui/core/ComponentContainer.js +16 -6
  77. package/src/sap/ui/core/ComponentMetadata.js +14 -3
  78. package/src/sap/ui/core/ComponentSupport.js +1 -1
  79. package/src/sap/ui/core/Configuration.js +64 -32
  80. package/src/sap/ui/core/Control.js +1 -1
  81. package/src/sap/ui/core/Core.js +57 -40
  82. package/src/sap/ui/core/CustomData.js +1 -1
  83. package/src/sap/ui/core/CustomizingConfiguration.js +35 -260
  84. package/src/sap/ui/core/DeclarativeSupport.js +3 -2
  85. package/src/sap/ui/core/Element.js +1 -1
  86. package/src/sap/ui/core/ElementMetadata.js +4 -2
  87. package/src/sap/ui/core/EnabledPropagator.js +91 -73
  88. package/src/sap/ui/core/EventBus.js +1 -1
  89. package/src/sap/ui/core/ExtensionPoint.js +7 -14
  90. package/src/sap/ui/core/Fragment.js +30 -32
  91. package/src/sap/ui/core/HTML.js +1 -1
  92. package/src/sap/ui/core/History.js +1 -1
  93. package/src/sap/ui/core/Icon.js +5 -5
  94. package/src/sap/ui/core/IconPool.js +15 -1097
  95. package/src/sap/ui/core/IconRenderer.js +2 -2
  96. package/src/sap/ui/core/IndicationColorSupport.js +1 -1
  97. package/src/sap/ui/core/IntervalTrigger.js +1 -1
  98. package/src/sap/ui/core/InvisibleMessage.js +9 -1
  99. package/src/sap/ui/core/InvisibleRenderer.js +1 -1
  100. package/src/sap/ui/core/InvisibleText.js +1 -1
  101. package/src/sap/ui/core/Item.js +1 -1
  102. package/src/sap/ui/core/LabelEnablement.js +1 -1
  103. package/src/sap/ui/core/LayoutData.js +1 -1
  104. package/src/sap/ui/core/ListItem.js +1 -1
  105. package/src/sap/ui/core/LocalBusyIndicator.js +1 -1
  106. package/src/sap/ui/core/Locale.js +26 -4
  107. package/src/sap/ui/core/LocaleData.js +1 -1
  108. package/src/sap/ui/core/Manifest.js +124 -126
  109. package/src/sap/ui/core/Message.js +1 -1
  110. package/src/sap/ui/core/Patcher.js +53 -80
  111. package/src/sap/ui/core/Placeholder.js +25 -11
  112. package/src/sap/ui/core/Popup.js +29 -5
  113. package/src/sap/ui/core/RenderManager.js +41 -24
  114. package/src/sap/ui/core/Renderer.js +13 -3
  115. package/src/sap/ui/core/ResizeHandler.js +1 -1
  116. package/src/sap/ui/core/ScrollBar.js +2 -2
  117. package/src/sap/ui/core/SeparatorItem.js +1 -1
  118. package/src/sap/ui/core/ShortcutHintsMixin.js +14 -7
  119. package/src/sap/ui/core/ThemeCheck.js +13 -61
  120. package/src/sap/ui/core/Title.js +1 -1
  121. package/src/sap/ui/core/TooltipBase.js +1 -1
  122. package/src/sap/ui/core/UIArea.js +5 -2
  123. package/src/sap/ui/core/UIComponent.js +81 -40
  124. package/src/sap/ui/core/UIComponentMetadata.js +1 -1
  125. package/src/sap/ui/core/ValueStateSupport.js +1 -1
  126. package/src/sap/ui/core/VariantLayoutData.js +1 -1
  127. package/src/sap/ui/core/XMLComposite.js +1 -1
  128. package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
  129. package/src/sap/ui/core/XMLTemplateProcessor.js +5 -5
  130. package/src/sap/ui/core/_IconRegistry.js +1215 -0
  131. package/src/sap/ui/core/delegate/ItemNavigation.js +1 -1
  132. package/src/sap/ui/core/delegate/ScrollEnablement.js +6 -3
  133. package/src/sap/ui/core/dnd/DragDropBase.js +2 -9
  134. package/src/sap/ui/core/dnd/DragDropInfo.js +1 -1
  135. package/src/sap/ui/core/dnd/DragInfo.js +41 -1
  136. package/src/sap/ui/core/dnd/DropInfo.js +1 -1
  137. package/src/sap/ui/core/format/DateFormat.js +2 -0
  138. package/src/sap/ui/core/format/NumberFormat.js +2 -0
  139. package/src/sap/ui/core/hyphenation/Hyphenation.js +73 -221
  140. package/src/sap/ui/core/hyphenation/HyphenationTestingWords.js +11 -10
  141. package/src/sap/ui/core/library.js +3 -3
  142. package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
  143. package/src/sap/ui/core/message/Message.js +1 -1
  144. package/src/sap/ui/core/message/MessageManager.js +13 -13
  145. package/src/sap/ui/core/message/MessageParser.js +1 -1
  146. package/src/sap/ui/core/message/MessageProcessor.js +1 -1
  147. package/src/sap/ui/core/messagebundle_de.properties +1 -1
  148. package/src/sap/ui/core/messagebundle_fr.properties +1 -1
  149. package/src/sap/ui/core/messagebundle_it.properties +1 -1
  150. package/src/sap/ui/core/messagebundle_pl.properties +1 -1
  151. package/src/sap/ui/core/messagebundle_th.properties +2 -2
  152. package/src/sap/ui/core/mvc/Controller.js +166 -9
  153. package/src/sap/ui/core/mvc/ControllerExtensionProvider.js +30 -32
  154. package/src/sap/ui/core/mvc/ControllerMetadata.js +18 -18
  155. package/src/sap/ui/core/mvc/HTMLView.js +4 -2
  156. package/src/sap/ui/core/mvc/JSONView.js +8 -6
  157. package/src/sap/ui/core/mvc/JSView.js +5 -3
  158. package/src/sap/ui/core/mvc/TemplateView.js +2 -2
  159. package/src/sap/ui/core/mvc/View.js +73 -89
  160. package/src/sap/ui/core/mvc/ViewType.js +2 -0
  161. package/src/sap/ui/core/mvc/XMLView.js +14 -10
  162. package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
  163. package/src/sap/ui/core/plugin/LessSupport.js +1 -1
  164. package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -1
  165. package/src/sap/ui/core/postmessage/Bus.js +1 -1
  166. package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
  167. package/src/sap/ui/core/routing/History.js +36 -18
  168. package/src/sap/ui/core/routing/Route.js +10 -1
  169. package/src/sap/ui/core/routing/Router.js +8 -5
  170. package/src/sap/ui/core/routing/Target.js +13 -0
  171. package/src/sap/ui/core/routing/TargetCache.js +1 -1
  172. package/src/sap/ui/core/routing/Targets.js +39 -2
  173. package/src/sap/ui/core/routing/async/Route.js +7 -4
  174. package/src/sap/ui/core/routing/async/Target.js +383 -262
  175. package/src/sap/ui/core/routing/sync/Target.js +15 -0
  176. package/src/sap/ui/core/rules/App.support.js +35 -1
  177. package/src/sap/ui/core/search/OpenSearchProvider.js +1 -1
  178. package/src/sap/ui/core/search/SearchProvider.js +1 -1
  179. package/src/sap/ui/core/service/Service.js +1 -1
  180. package/src/sap/ui/core/service/ServiceFactory.js +1 -1
  181. package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
  182. package/src/sap/ui/core/support/BootSupportTool.js +11 -0
  183. package/src/sap/ui/core/support/InteractionTree.css +4 -0
  184. package/src/sap/ui/core/support/Plugin.js +1 -1
  185. package/src/sap/ui/core/support/Support.js +1 -1
  186. package/src/sap/ui/core/support/ViewInfo.css +599 -0
  187. package/src/sap/ui/core/support/controls/InteractionTree.js +352 -222
  188. package/src/sap/ui/core/support/controls/ObjectViewer.js +8 -50
  189. package/src/sap/ui/core/support/controls/TimelineOverview.js +49 -24
  190. package/src/sap/ui/core/support/controls/TreeViewer.js +12 -58
  191. package/src/sap/ui/core/support/plugins/ControlTree.js +23 -26
  192. package/src/sap/ui/core/support/plugins/Debugging.js +9 -11
  193. package/src/sap/ui/core/support/plugins/Interaction.js +2 -2
  194. package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
  195. package/src/sap/ui/core/support/plugins/Performance.js +147 -75
  196. package/src/sap/ui/core/support/plugins/Selector.js +19 -24
  197. package/src/sap/ui/core/support/plugins/TechInfo.js +5 -5
  198. package/src/sap/ui/core/support/plugins/Trace.js +95 -32
  199. package/src/sap/ui/core/support/plugins/ViewInfo.js +9 -73
  200. package/src/sap/ui/core/support/support.css +109 -14
  201. package/src/sap/ui/core/support/support.html +6 -2
  202. package/src/sap/ui/core/support/techinfo/TechnicalInfo.fragment.xml +1 -0
  203. package/src/sap/ui/core/support/techinfo/TechnicalInfo.js +149 -72
  204. package/src/sap/ui/core/support/trace/E2eTraceLib.js +3 -3
  205. package/src/sap/ui/core/themes/base/LocalBusyIndicator.less +5 -0
  206. package/src/sap/ui/core/themes/base/base.less +27 -25
  207. package/src/sap/ui/core/themes/base/shared.less +1 -0
  208. package/src/sap/ui/core/theming/Parameters.js +225 -61
  209. package/src/sap/ui/core/theming/ThemeHelper.js +94 -0
  210. package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
  211. package/src/sap/ui/core/tmpl/DOMElement.js +1 -1
  212. package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
  213. package/src/sap/ui/core/tmpl/Template.js +11 -28
  214. package/src/sap/ui/core/tmpl/TemplateControl.js +4 -4
  215. package/src/sap/ui/core/tmpl/_parsePath.js +35 -0
  216. package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
  217. package/src/sap/ui/core/util/DraftEnabledMockServer.js +9 -4
  218. package/src/sap/ui/core/util/Export.js +1 -1
  219. package/src/sap/ui/core/util/ExportCell.js +1 -1
  220. package/src/sap/ui/core/util/ExportColumn.js +1 -1
  221. package/src/sap/ui/core/util/ExportRow.js +1 -1
  222. package/src/sap/ui/core/util/ExportType.js +1 -1
  223. package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
  224. package/src/sap/ui/core/util/File.js +1 -1
  225. package/src/sap/ui/core/util/LibraryInfo.js +1 -1
  226. package/src/sap/ui/core/util/MockServer.js +24 -5
  227. package/src/sap/ui/core/util/MockServerAnnotationsHandler.js +3 -2
  228. package/src/sap/ui/core/util/PasteHelper.js +1 -1
  229. package/src/sap/ui/core/util/XMLPreprocessor.js +11 -12
  230. package/src/sap/ui/core/util/reflection/BaseTreeModifier.js +154 -63
  231. package/src/sap/ui/core/util/reflection/JsControlTreeModifier.js +171 -152
  232. package/src/sap/ui/core/util/reflection/XmlTreeModifier.js +419 -291
  233. package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
  234. package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
  235. package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
  236. package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
  237. package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
  238. package/src/sap/ui/core/util/serializer/delegate/HTML.js +2 -2
  239. package/src/sap/ui/core/util/serializer/delegate/XML.js +2 -2
  240. package/src/sap/ui/core/ws/ReadyState.js +1 -1
  241. package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
  242. package/src/sap/ui/core/ws/WebSocket.js +1 -1
  243. package/src/sap/ui/debug/ControlTree.js +10 -4
  244. package/src/sap/ui/debug/DebugEnv.js +3 -4
  245. package/src/sap/ui/debug/PropertyList.css +55 -0
  246. package/src/sap/ui/debug/PropertyList.js +111 -182
  247. package/src/sap/ui/events/jquery/EventSimulation.js +7 -6
  248. package/src/sap/ui/events/jquery/EventTriggerHook.js +1 -1
  249. package/src/sap/ui/model/ClientModel.js +1 -1
  250. package/src/sap/ui/model/ClientPropertyBinding.js +3 -1
  251. package/src/sap/ui/model/ClientTreeBinding.js +14 -8
  252. package/src/sap/ui/model/CompositeDataState.js +1 -1
  253. package/src/sap/ui/model/CompositeType.js +1 -1
  254. package/src/sap/ui/model/Context.js +31 -11
  255. package/src/sap/ui/model/DataState.js +1 -1
  256. package/src/sap/ui/model/ListBinding.js +19 -0
  257. package/src/sap/ui/model/MetaModel.js +1 -1
  258. package/src/sap/ui/model/Model.js +3 -3
  259. package/src/sap/ui/model/SelectionModel.js +5 -1
  260. package/src/sap/ui/model/SimpleType.js +1 -1
  261. package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
  262. package/src/sap/ui/model/Type.js +1 -1
  263. package/src/sap/ui/model/analytics/AnalyticalBinding.js +14 -9
  264. package/src/sap/ui/model/analytics/odata4analytics.js +31 -23
  265. package/src/sap/ui/model/base/ManagedObjectModel.js +13 -1
  266. package/src/sap/ui/model/json/JSONModel.js +4 -2
  267. package/src/sap/ui/model/message/MessageModel.js +4 -2
  268. package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
  269. package/src/sap/ui/model/odata/ODataListBinding.js +1 -0
  270. package/src/sap/ui/model/odata/ODataMessageParser.js +1 -1
  271. package/src/sap/ui/model/odata/ODataMetaModel.js +5 -2
  272. package/src/sap/ui/model/odata/ODataMetadata.js +1 -1
  273. package/src/sap/ui/model/odata/ODataModel.js +7 -6
  274. package/src/sap/ui/model/odata/ODataUtils.js +31 -10
  275. package/src/sap/ui/model/odata/_AnnotationHelperBasics.js +30 -27
  276. package/src/sap/ui/model/odata/type/Boolean.js +1 -1
  277. package/src/sap/ui/model/odata/type/Byte.js +1 -1
  278. package/src/sap/ui/model/odata/type/Currency.js +7 -2
  279. package/src/sap/ui/model/odata/type/Date.js +1 -1
  280. package/src/sap/ui/model/odata/type/DateTime.js +1 -1
  281. package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
  282. package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
  283. package/src/sap/ui/model/odata/type/Decimal.js +1 -1
  284. package/src/sap/ui/model/odata/type/Double.js +1 -1
  285. package/src/sap/ui/model/odata/type/Guid.js +1 -1
  286. package/src/sap/ui/model/odata/type/Int.js +1 -1
  287. package/src/sap/ui/model/odata/type/Int16.js +1 -1
  288. package/src/sap/ui/model/odata/type/Int32.js +1 -1
  289. package/src/sap/ui/model/odata/type/Int64.js +1 -1
  290. package/src/sap/ui/model/odata/type/ODataType.js +1 -1
  291. package/src/sap/ui/model/odata/type/Raw.js +1 -1
  292. package/src/sap/ui/model/odata/type/SByte.js +1 -1
  293. package/src/sap/ui/model/odata/type/Single.js +1 -1
  294. package/src/sap/ui/model/odata/type/Stream.js +1 -1
  295. package/src/sap/ui/model/odata/type/String.js +3 -1
  296. package/src/sap/ui/model/odata/type/Time.js +1 -1
  297. package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
  298. package/src/sap/ui/model/odata/type/Unit.js +7 -2
  299. package/src/sap/ui/model/odata/type/UnitMixin.js +20 -7
  300. package/src/sap/ui/model/odata/v2/Context.js +187 -0
  301. package/src/sap/ui/model/odata/v2/ODataAnnotations.js +2 -2
  302. package/src/sap/ui/model/odata/v2/ODataContextBinding.js +55 -51
  303. package/src/sap/ui/model/odata/v2/ODataListBinding.js +42 -106
  304. package/src/sap/ui/model/odata/v2/ODataModel.js +251 -159
  305. package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +163 -136
  306. package/src/sap/ui/model/odata/v4/Context.js +6 -3
  307. package/src/sap/ui/model/odata/v4/ODataBinding.js +3 -3
  308. package/src/sap/ui/model/odata/v4/ODataContextBinding.js +97 -25
  309. package/src/sap/ui/model/odata/v4/ODataListBinding.js +112 -24
  310. package/src/sap/ui/model/odata/v4/ODataMetaModel.js +15 -12
  311. package/src/sap/ui/model/odata/v4/ODataModel.js +85 -77
  312. package/src/sap/ui/model/odata/v4/ODataParentBinding.js +25 -15
  313. package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +21 -12
  314. package/src/sap/ui/model/odata/v4/_AnnotationHelperExpression.js +10 -3
  315. package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +13 -4
  316. package/src/sap/ui/model/odata/v4/lib/_AggregationHelper.js +5 -1
  317. package/src/sap/ui/model/odata/v4/lib/_Cache.js +28 -17
  318. package/src/sap/ui/model/odata/v4/lib/_Helper.js +47 -30
  319. package/src/sap/ui/model/odata/v4/lib/_Requestor.js +55 -19
  320. package/src/sap/ui/model/odata/v4/lib/_V2Requestor.js +2 -2
  321. package/src/sap/ui/model/resource/ResourceModel.js +5 -2
  322. package/src/sap/ui/model/type/Boolean.js +1 -1
  323. package/src/sap/ui/model/type/Currency.js +1 -1
  324. package/src/sap/ui/model/type/Date.js +1 -1
  325. package/src/sap/ui/model/type/DateInterval.js +1 -1
  326. package/src/sap/ui/model/type/DateTime.js +1 -1
  327. package/src/sap/ui/model/type/DateTimeInterval.js +1 -1
  328. package/src/sap/ui/model/type/FileSize.js +1 -1
  329. package/src/sap/ui/model/type/Float.js +1 -1
  330. package/src/sap/ui/model/type/Integer.js +1 -1
  331. package/src/sap/ui/model/type/String.js +1 -1
  332. package/src/sap/ui/model/type/Time.js +1 -1
  333. package/src/sap/ui/model/type/TimeInterval.js +1 -1
  334. package/src/sap/ui/model/type/Unit.js +1 -1
  335. package/src/sap/ui/model/xml/XMLModel.js +4 -2
  336. package/src/sap/ui/performance/Measurement.js +1 -1
  337. package/src/sap/ui/performance/trace/FESR.js +2 -1
  338. package/src/sap/ui/performance/trace/Interaction.js +42 -25
  339. package/src/sap/ui/performance/trace/initTraces.js +1 -1
  340. package/src/sap/ui/qunit/QUnitUtils.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/security/FrameOptions.js +2 -1
  344. package/src/sap/ui/test/Opa5.js +1 -1
  345. package/src/sap/ui/test/OpaBuilder.js +1 -0
  346. package/src/sap/ui/test/TestUtils.js +28 -34
  347. package/src/sap/ui/test/actions/Drag.js +6 -2
  348. package/src/sap/ui/test/actions/Drop.js +6 -2
  349. package/src/sap/ui/test/actions/EnterText.js +6 -0
  350. package/src/sap/ui/test/actions/Press.js +6 -0
  351. package/src/sap/ui/test/actions/Scroll.js +6 -0
  352. package/src/sap/ui/test/autowaiter/_resourceWaiter.js +4 -4
  353. package/src/sap/ui/test/launchers/componentLauncher.js +1 -4
  354. package/src/sap/ui/test/matchers/I18NText.js +29 -11
  355. package/src/sap/ui/test/opaQunit.js +11 -9
  356. package/src/sap/ui/test/selectors/_ControlSelectorGenerator.js +4 -4
  357. package/src/sap/ui/thirdparty/caja-html-sanitizer.js +1 -1
  358. package/src/sap/ui/thirdparty/crossroads.js +16 -6
  359. package/src/sap/ui/thirdparty/hyphenopoly/Hyphenopoly.js +1196 -0
  360. package/src/sap/ui/thirdparty/hyphenopoly/Hyphenopoly_Loader.js +797 -0
  361. package/src/sap/ui/thirdparty/hyphenopoly/hyphenEngine.asm.js +108 -127
  362. package/src/sap/ui/thirdparty/hyphenopoly/hyphenEngine.wasm +0 -0
  363. package/src/sap/ui/thirdparty/hyphenopoly/patterns/bg.hpb +0 -0
  364. package/src/sap/ui/thirdparty/hyphenopoly/patterns/ca.hpb +0 -0
  365. package/src/sap/ui/thirdparty/hyphenopoly/patterns/da.hpb +0 -0
  366. package/src/sap/ui/thirdparty/hyphenopoly/patterns/de.hpb +0 -0
  367. package/src/sap/ui/thirdparty/hyphenopoly/patterns/el-monoton.hpb +0 -0
  368. package/src/sap/ui/thirdparty/hyphenopoly/patterns/en-us.hpb +0 -0
  369. package/src/sap/ui/thirdparty/hyphenopoly/patterns/es.hpb +0 -0
  370. package/src/sap/ui/thirdparty/hyphenopoly/patterns/et.hpb +0 -0
  371. package/src/sap/ui/thirdparty/hyphenopoly/patterns/fi.hpb +0 -0
  372. package/src/sap/ui/thirdparty/hyphenopoly/patterns/fr.hpb +0 -0
  373. package/src/sap/ui/thirdparty/hyphenopoly/patterns/hi.hpb +0 -0
  374. package/src/sap/ui/thirdparty/hyphenopoly/patterns/hr.hpb +0 -0
  375. package/src/sap/ui/thirdparty/hyphenopoly/patterns/hu.hpb +0 -0
  376. package/src/sap/ui/thirdparty/hyphenopoly/patterns/it.hpb +0 -0
  377. package/src/sap/ui/thirdparty/hyphenopoly/patterns/lt.hpb +0 -0
  378. package/src/sap/ui/thirdparty/hyphenopoly/patterns/nb-no.hpb +0 -0
  379. package/src/sap/ui/thirdparty/hyphenopoly/patterns/nl.hpb +0 -0
  380. package/src/sap/ui/thirdparty/hyphenopoly/patterns/pt.hpb +0 -0
  381. package/src/sap/ui/thirdparty/hyphenopoly/patterns/ru.hpb +0 -0
  382. package/src/sap/ui/thirdparty/hyphenopoly/patterns/sl.hpb +0 -0
  383. package/src/sap/ui/thirdparty/hyphenopoly/patterns/sv.hpb +0 -0
  384. package/src/sap/ui/thirdparty/hyphenopoly/patterns/th.hpb +0 -0
  385. package/src/sap/ui/thirdparty/hyphenopoly/patterns/tr.hpb +0 -0
  386. package/src/sap/ui/thirdparty/hyphenopoly/patterns/uk.hpb +0 -0
  387. package/src/sap/ui/util/Storage.js +1 -1
  388. package/src/sap/ui/util/isCrossOriginURL.js +16 -6
  389. package/src/sap-ui-core-nojQuery.js +1 -1
  390. package/src/sap-ui-core.js +1 -1
  391. package/src/sap-ui-debug.js +3 -17
  392. package/src/ui5loader.js +5 -2
  393. package/src/sap/ui/core/support/plugins/MessageTest.js +0 -96
  394. package/src/sap/ui/thirdparty/hyphenopoly/hyphenopoly.bundle.js +0 -860
@@ -103,6 +103,9 @@ sap.ui.define(['sap/ui/base/Object', "sap/base/util/isPlainObject"],
103
103
  /**
104
104
  * Sets the force refresh flag of the context. If this is set, the context will force a refresh of dependent
105
105
  * bindings, when the context is propagated.
106
+ *
107
+ * @deprecated since 1.93.0; only supported by the OData V2 Model; use V2 specific Context
108
+ * instead
106
109
  * @private
107
110
  * @param {boolean} bForceRefresh the force refresh flag
108
111
  */
@@ -112,6 +115,9 @@ sap.ui.define(['sap/ui/base/Object', "sap/base/util/isPlainObject"],
112
115
 
113
116
  /**
114
117
  * This method returns, whether dependent bindings need to be refreshed.
118
+ *
119
+ * @deprecated since 1.93.0; only supported by the OData V2 Model; use V2 specific Context
120
+ * instead
115
121
  * @private
116
122
  * @return {boolean} the force refresh flag
117
123
  */
@@ -123,6 +129,9 @@ sap.ui.define(['sap/ui/base/Object', "sap/base/util/isPlainObject"],
123
129
  * Sets the preliminary flag of the context. If this is set, the context is not yet linked to actual model
124
130
  * data, but does just contain path information. This can be used by dependent bindings to send their request
125
131
  * in parallel to the request of the context binding.
132
+ *
133
+ * @deprecated since 1.93.0; only supported by the OData V2 Model; use V2 specific Context
134
+ * instead
126
135
  * @private
127
136
  * @param {boolean} bPreliminary the preliminary flag
128
137
  */
@@ -132,6 +141,9 @@ sap.ui.define(['sap/ui/base/Object', "sap/base/util/isPlainObject"],
132
141
 
133
142
  /**
134
143
  * This method returns, whether the context is preliminary.
144
+ *
145
+ * @deprecated since 1.93.0; only supported by the OData V2 Model; use V2 specific Context
146
+ * instead
135
147
  * @private
136
148
  * @ui5-restricted sap.suite.ui.generic
137
149
  * @return {boolean} the preliminary flag
@@ -143,6 +155,9 @@ sap.ui.define(['sap/ui/base/Object', "sap/base/util/isPlainObject"],
143
155
  /**
144
156
  * Sets the updated flag of the context. If this is set, the context was updated. E.g. the path changed from
145
157
  * a preliminary path to the canonical one.
158
+ *
159
+ * @deprecated since 1.93.0; only supported by the OData V2 Model; use V2 specific Context
160
+ * instead
146
161
  * @private
147
162
  * @param {boolean} bUpdated the preliminary flag
148
163
  */
@@ -152,6 +167,9 @@ sap.ui.define(['sap/ui/base/Object', "sap/base/util/isPlainObject"],
152
167
 
153
168
  /**
154
169
  * This method returns, whether the context is updated.
170
+ *
171
+ * @deprecated since 1.93.0; only supported by the OData V2 Model; use V2 specific Context
172
+ * instead
155
173
  * @private
156
174
  * @return {boolean} the updated flag
157
175
  */
@@ -159,6 +177,17 @@ sap.ui.define(['sap/ui/base/Object', "sap/base/util/isPlainObject"],
159
177
  return this.bUpdated;
160
178
  };
161
179
 
180
+ /**
181
+ * Whether this context has changed. By default this context cannot be changed but subclasses
182
+ * can override this behaviour.
183
+ *
184
+ * @return {boolean} Whether this context has changed
185
+ * @private
186
+ */
187
+ Context.prototype.hasChanged = function() {
188
+ return this.isUpdated() || this.isRefreshForced();
189
+ };
190
+
162
191
  /**
163
192
  * Compares the two given Contexts. Returns true if the context instances are not equal,
164
193
  * if the new context is updated or if the new context is refreshed.
@@ -169,17 +198,8 @@ sap.ui.define(['sap/ui/base/Object', "sap/base/util/isPlainObject"],
169
198
  * @private
170
199
  */
171
200
  Context.hasChanged = function(oOldContext, oNewContext) {
172
- var bChanged = false;
173
-
174
- if (oOldContext !== oNewContext) {
175
- bChanged = true;
176
- } else if (oNewContext && oNewContext.isUpdated()) {
177
- bChanged = true;
178
- } else if (oNewContext && oNewContext.isRefreshForced()) {
179
- bChanged = true;
180
- }
181
-
182
- return bChanged;
201
+ return oOldContext !== oNewContext
202
+ || !!oNewContext && !!oNewContext.hasChanged();
183
203
  };
184
204
 
185
205
  /**
@@ -65,7 +65,7 @@ sap.ui.define([
65
65
  * @extends sap.ui.base.Object
66
66
  *
67
67
  * @author SAP SE
68
- * @version 1.92.0
68
+ * @version 1.95.0
69
69
  *
70
70
  * @public
71
71
  * @alias sap.ui.model.DataState
@@ -168,6 +168,25 @@ sap.ui.define(['./Binding', './Filter', './Sorter', 'sap/base/util/array/diff'],
168
168
  return this.getContexts();
169
169
  };
170
170
 
171
+ /**
172
+ * Returns the count of entries in the list, or <code>undefined</code> if it is unknown.
173
+ * The count is by default identical to the list length if it is final. Concrete subclasses may,
174
+ * however, override the method, for example:
175
+ * <ul>
176
+ * <li> for server-side models where lists are not completely read by the client,
177
+ * <li> for lists representing hierarchical data.
178
+ * </ul>
179
+ *
180
+ * @returns {number|undefined} The count of entries
181
+ * @public
182
+ * @see #getLength
183
+ * @see #isLengthFinal
184
+ * @since 1.93.0
185
+ */
186
+ ListBinding.prototype.getCount = function() {
187
+ return this.isLengthFinal() ? this.getLength() : undefined;
188
+ };
189
+
171
190
  /**
172
191
  * Returns the number of entries in the list.
173
192
  *
@@ -16,7 +16,7 @@ sap.ui.define(['./Model'],
16
16
  * @extends sap.ui.model.Model
17
17
  *
18
18
  * @author SAP SE
19
- * @version 1.92.0
19
+ * @version 1.95.0
20
20
  *
21
21
  * @public
22
22
  * @alias sap.ui.model.MetaModel
@@ -46,7 +46,7 @@ sap.ui.define([
46
46
  * @extends sap.ui.core.message.MessageProcessor
47
47
  *
48
48
  * @author SAP SE
49
- * @version 1.92.0
49
+ * @version 1.95.0
50
50
  *
51
51
  * @public
52
52
  * @alias sap.ui.model.Model
@@ -739,7 +739,7 @@ sap.ui.define([
739
739
  * is automatically converted into an absolute path.
740
740
  *
741
741
  * @param {string} sPath path to resolve
742
- * @param {sap.ui.core.Context} [oContext] context to resolve a relative path against
742
+ * @param {sap.ui.model.Context} [oContext] context to resolve a relative path against
743
743
  * @return {string} resolved path or undefined
744
744
  */
745
745
  Model.prototype.resolve = function(sPath, oContext) {
@@ -1104,7 +1104,7 @@ sap.ui.define([
1104
1104
  * data was accepted or rejected
1105
1105
  *
1106
1106
  * @param {string} sPath Path to resolve
1107
- * @param {sap.ui.core.Context} [oContext] Context to resolve a relative path against
1107
+ * @param {sap.ui.model.Context} [oContext] Context to resolve a relative path against
1108
1108
  * @returns {boolean} true if the data in this path is laundering
1109
1109
  */
1110
1110
  Model.prototype.isLaundering = function(sPath, oContext) {
@@ -20,7 +20,7 @@ sap.ui.define(['sap/ui/base/EventProvider', "sap/base/assert"],
20
20
  * @extends sap.ui.base.EventProvider
21
21
  *
22
22
  * @author SAP SE
23
- * @version 1.92.0
23
+ * @version 1.95.0
24
24
  *
25
25
  * @param {int} iSelectionMode <code>sap.ui.model.SelectionModel.SINGLE_SELECTION</code> or <code>sap.ui.model.SelectionModel.MULTI_SELECTION</code>
26
26
  *
@@ -51,12 +51,16 @@ sap.ui.define(['sap/ui/base/EventProvider', "sap/base/assert"],
51
51
  /**
52
52
  * SelectionMode: Single Selection
53
53
  * @public
54
+ * @readonly
55
+ * @type {int}
54
56
  */
55
57
  SelectionModel.SINGLE_SELECTION = 0;
56
58
 
57
59
  /**
58
60
  * SelectionMode: Multi Selection
59
61
  * @public
62
+ * @readonly
63
+ * @type {int}
60
64
  */
61
65
  SelectionModel.MULTI_SELECTION = 1;
62
66
 
@@ -46,7 +46,7 @@ sap.ui.define([
46
46
  *
47
47
  * @extends sap.ui.model.Type
48
48
  * @public
49
- * @version 1.92.0
49
+ * @version 1.95.0
50
50
  */
51
51
  var SimpleType = Type.extend("sap.ui.model.SimpleType", /** @lends sap.ui.model.SimpleType.prototype */ {
52
52
 
@@ -12,7 +12,7 @@ sap.ui.define([],
12
12
  /**
13
13
  * Different modes for setting the auto expand mode on tree or analytical bindings.
14
14
  *
15
- * @version 1.92.0
15
+ * @version 1.95.0
16
16
  * @enum {string}
17
17
  * @alias sap.ui.model.TreeAutoExpandMode
18
18
  * @protected
@@ -19,7 +19,7 @@ sap.ui.define(['sap/ui/base/Object'],
19
19
  *
20
20
  * @extends sap.ui.base.Object
21
21
  * @public
22
- * @version 1.92.0
22
+ * @version 1.95.0
23
23
  */
24
24
  var Type = BaseObject.extend("sap.ui.model.Type", /** @lends sap.ui.model.Type.prototype */ {
25
25
 
@@ -335,13 +335,16 @@ sap.ui.define([
335
335
 
336
336
  // considering different count mode settings
337
337
  if (mParameters && mParameters.countMode == CountMode.None) {
338
- oLogger.fatal("requested count mode is ignored; OData requests will include $inlinecout options");
338
+ oLogger.fatal("requested count mode is ignored; OData requests will include"
339
+ + " $inlinecount options");
339
340
  } else if (mParameters
340
341
  && (mParameters.countMode == CountMode.Request
341
342
  || mParameters.countMode == CountMode.Both)) {
342
- oLogger.warning("default count mode is ignored; OData requests will include $inlinecout options");
343
+ oLogger.warning("default count mode is ignored; OData requests will include"
344
+ + " $inlinecount options");
343
345
  } else if (this.oModel.sDefaultCountMode == CountMode.Request) {
344
- oLogger.warning("default count mode is ignored; OData requests will include $inlinecout options");
346
+ oLogger.warning("default count mode is ignored; OData requests will include"
347
+ + " $inlinecount options");
345
348
  }
346
349
 
347
350
  // detect ODataModel version
@@ -3494,17 +3497,19 @@ sap.ui.define([
3494
3497
  AnalyticalBinding.prototype._calculateRequiredGroupSection = function (sGroupId, iStartIndex,
3495
3498
  iLength, iThreshold) {
3496
3499
  var aElements = this.mKeyIndex[sGroupId] || [],
3497
- iLimit = this.mFinalLength[sGroupId] && this.mLength[sGroupId],
3500
+ iLimit = this.mFinalLength[sGroupId] ? this.mLength[sGroupId] : undefined,
3498
3501
  aIntervals = ODataUtils._getReadIntervals(aElements, iStartIndex, iLength, iThreshold,
3499
- iLimit);
3502
+ iLimit),
3503
+ oInterval = ODataUtils._mergeIntervals(aIntervals);
3500
3504
 
3501
- if (aIntervals.length) {
3505
+ if (oInterval) {
3502
3506
  return {
3503
- startIndex : aIntervals[0].start,
3504
- length : aIntervals[aIntervals.length - 1].end - aIntervals[0].start
3507
+ startIndex : oInterval.start,
3508
+ length : oInterval.end - oInterval.start
3505
3509
  };
3506
3510
  }
3507
- return {startIndex : 0, length : iLength > 0 ? 0 : iLength};
3511
+
3512
+ return {startIndex : 0, length : Math.min(0, iLength)};
3508
3513
  };
3509
3514
 
3510
3515
  /**
@@ -146,18 +146,20 @@ sap.ui.define([
146
146
  /**
147
147
  * Create a representation of the analytical semantics of OData service metadata
148
148
  *
149
- * @param {object}
150
- * oModelReference An instance of ReferenceByURI, ReferenceByModel or
151
- * ReferenceWithWorkaround for locating the OData service.
152
- * @param {object}
153
- * [mParameter] Additional parameters for controlling the model construction. Currently supported are:
154
- * <li> sAnnotationJSONDoc - A JSON document providing extra annotations to the elements of the
155
- * structure of the given service
156
- * </li>
157
- * <li> modelVersion - Parameter to define which ODataModel version should be used, in you use
158
- * 'odata4analytics.Model.ReferenceByURI': 1 (default), 2
159
- * see also: AnalyticalVersionInfo constants
160
- * </li>
149
+ * @param {object} oModelReference
150
+ * An instance of {@link sap.ui.model.analytics.odata4analytics.Model.ReferenceByModel} or
151
+ * {@link sap.ui.model.analytics.odata4analytics.Model.ReferenceWithWorkaround} for locating
152
+ * the OData service. {@link sap.ui.model.analytics.odata4analytics.Model.ReferenceByURI} is
153
+ * deprecated.
154
+ * @param {object} [mParameter]
155
+ * Additional parameters for controlling the model construction. Currently supported are:
156
+ * <li> sAnnotationJSONDoc - A JSON document providing extra annotations to the elements of
157
+ * the structure of the given service
158
+ * </li>
159
+ * <li> modelVersion (deprecated) - Parameter to define which ODataModel version should be
160
+ * used if you use {@link sap.ui.model.analytics.odata4analytics.Model.ReferenceByURI};
161
+ * supported values are: 1 (default), 2
162
+ * </li>
161
163
  *
162
164
  * @class Representation of an OData model with analytical annotations defined
163
165
  * by OData4SAP.
@@ -177,6 +179,8 @@ sap.ui.define([
177
179
  *
178
180
  * @class Handle to an OData model by the URI pointing to it.
179
181
  * @name sap.ui.model.analytics.odata4analytics.Model.ReferenceByURI
182
+ * @deprecated Since 1.94 use
183
+ * {@link sap.ui.model.analytics.odata4analytics.Model.ReferenceByModel} instead
180
184
  * @public
181
185
  */
182
186
  odata4analytics.Model.ReferenceByURI = function(sURI) {
@@ -219,12 +223,12 @@ sap.ui.define([
219
223
  * exists, they are linked via annotation.</li>
220
224
  *
221
225
  *
222
- * @param {object}
223
- * oModel holding a reference to the OData model, obtained
224
- * by odata4analytics.Model.ReferenceByModel or by
225
- * sap.odata4analytics.Model.ReferenceByURI.
226
- * @param {string[]}
227
- * aWorkaroundID listing all workarounds to be applied.
226
+ * @param {object} oModel
227
+ * Holds a reference to the OData model, obtained by
228
+ * {@link sap.ui.model.analytics.odata4analytics.Model.ReferenceByModel}, or by
229
+ * {@link sap.ui.model.analytics.odata4analytics.Model.ReferenceByURI} which is deprecated.
230
+ * @param {string[]} aWorkaroundID
231
+ * All workarounds to be applied.
228
232
  *
229
233
  * @class Handle to an already instantiated SAPUI5 OData model.
230
234
  * @name sap.ui.model.analytics.odata4analytics.Model.ReferenceWithWorkaround
@@ -245,12 +249,14 @@ sap.ui.define([
245
249
  * @private
246
250
  */
247
251
  _init : function(oModelReference, mParameter) {
252
+ var ODataModelClass,
253
+ that = this;
254
+
248
255
  if (typeof mParameter == "string") {
249
256
  throw "Deprecated second argument: Adjust your invocation by passing an object with a property sAnnotationJSONDoc as a second argument instead";
250
257
  }
251
258
  this._mParameter = mParameter;
252
259
 
253
- var that = this;
254
260
  /*
255
261
  * get access to OData model
256
262
  */
@@ -277,14 +283,16 @@ sap.ui.define([
277
283
  checkForMetadata();
278
284
  } else if (mParameter && mParameter.modelVersion === AnalyticalVersionInfo.V2) {
279
285
  // Check if the user wants a V2 model
280
- var V2ODataModel = sap.ui.requireSync("sap/ui/model/odata/v2/ODataModel");
281
- this._oModel = new V2ODataModel(oModelReference.sServiceURI);
286
+ ODataModelClass = sap.ui.require("sap/ui/model/odata/v2/ODataModel") ||
287
+ sap.ui.requireSync("sap/ui/model/odata/v2/ODataModel");
288
+ this._oModel = new ODataModelClass(oModelReference.sServiceURI);
282
289
  this._iVersion = AnalyticalVersionInfo.V2;
283
290
  checkForMetadata();
284
291
  } else {
285
292
  //default is V1 Model
286
- var ODataModel = sap.ui.requireSync("sap/ui/model/odata/ODataModel");
287
- this._oModel = new ODataModel(oModelReference.sServiceURI);
293
+ ODataModelClass = sap.ui.require("sap/ui/model/odata/ODataModel") ||
294
+ sap.ui.requireSync("sap/ui/model/odata/ODataModel");
295
+ this._oModel = new ODataModelClass(oModelReference.sServiceURI);
288
296
  this._iVersion = AnalyticalVersionInfo.V1;
289
297
  checkForMetadata();
290
298
  }
@@ -23,6 +23,10 @@ sap.ui.define([
23
23
  function _adaptDeepChildObservation(caller, oControl, oAggregation, bObserve) {
24
24
  var aChildren = oAggregation.get(oControl) || [], oChild, bRecord;
25
25
 
26
+ if (aChildren && !Array.isArray(aChildren) && !oAggregation.multiple) {
27
+ aChildren = [aChildren];
28
+ }
29
+
26
30
  for (var i = 0; i < aChildren.length; i++) {
27
31
  oChild = aChildren[i];
28
32
  if (!(oChild instanceof ManagedObject)) {
@@ -990,17 +994,25 @@ sap.ui.define([
990
994
  */
991
995
  ManagedObjectModel.prototype.checkUpdate = function (bForceUpdate, bAsync, fnFilter) {
992
996
  if (bAsync) {
997
+ this.bForceUpdate = this.bForceUpdate || bForceUpdate;
993
998
  if (!this.sUpdateTimer) {
999
+ this.fnFilter = this.fnFilter || fnFilter;
994
1000
  this.sUpdateTimer = setTimeout(function () {
995
- this.checkUpdate(bForceUpdate, false, fnFilter);
1001
+ this.checkUpdate(this.bForceUpdate, false, this.fnFilter);
996
1002
  }.bind(this), 0);
1003
+ } else if (this.fnFilter && this.fnFilter !== fnFilter) {
1004
+ this.fnFilter = undefined; // if different filter set use no filter
997
1005
  }
998
1006
  return;
999
1007
  }
1008
+ bForceUpdate = this.bForceUpdate || bForceUpdate;
1009
+ fnFilter = !this.fnFilter || this.fnFilter === fnFilter ? fnFilter : undefined; // if different filter set use no filter
1000
1010
 
1001
1011
  if (this.sUpdateTimer) {
1002
1012
  clearTimeout(this.sUpdateTimer);
1003
1013
  this.sUpdateTimer = null;
1014
+ this.bForceUpdate = undefined;
1015
+ this.fnFilter = undefined;
1004
1016
  }
1005
1017
  var aBindings = this.aBindings.slice(0);
1006
1018
  aBindings.forEach(function (oBinding) {
@@ -37,12 +37,14 @@ sap.ui.define([
37
37
  * @param {boolean} [bObserve] Whether to observe the JSON data for property changes (experimental)
38
38
  *
39
39
  * @class
40
- * Model implementation for JSON format
40
+ * Model implementation for the JSON format.
41
+ *
42
+ * This model is not prepared to be inherited from.
41
43
  *
42
44
  * @extends sap.ui.model.ClientModel
43
45
  *
44
46
  * @author SAP SE
45
- * @version 1.92.0
47
+ * @version 1.95.0
46
48
  * @public
47
49
  * @alias sap.ui.model.json.JSONModel
48
50
  */
@@ -22,12 +22,14 @@ sap.ui.define(['sap/ui/model/BindingMode', 'sap/ui/model/ClientModel', 'sap/ui/m
22
22
  * Constructor for a new JSONModel.
23
23
  *
24
24
  * @class
25
- * Model implementation for Messages
25
+ * Model implementation for Messages.
26
+ *
27
+ * This model is not prepared to be inherited from.
26
28
  *
27
29
  * @extends sap.ui.model.ClientModel
28
30
  *
29
31
  * @author SAP SE
30
- * @version 1.92.0
32
+ * @version 1.95.0
31
33
  *
32
34
  * @param {sap.ui.core.message.MessageManager} oMessageManager The MessageManager instance
33
35
  * @public
@@ -25,7 +25,7 @@ sap.ui.define([
25
25
  *
26
26
  * @author SAP SE
27
27
  * @version
28
- * 1.92.0
28
+ * 1.95.0
29
29
  *
30
30
  * @public
31
31
  * @deprecated As of version 1.66, please use {@link sap.ui.model.odata.v2.ODataAnnotations} instead.
@@ -336,6 +336,7 @@ sap.ui.define([
336
336
  // TODO: what if nested list is not complete, because it was too large?
337
337
  var oRef = this.oModel._getObject(this.sPath, this.oContext);
338
338
  this.aExpandRefs = oRef;
339
+ // eslint-disable-next-line no-unsafe-negation
339
340
  if (Array.isArray(oRef) && !this.aSorters.length > 0 && !this.aFilters.length > 0) {
340
341
  this.aKeys = oRef;
341
342
  this.iLength = oRef.length;
@@ -84,7 +84,7 @@ var sClassName = "sap.ui.model.odata.ODataMessageParser",
84
84
  * @extends sap.ui.core.message.MessageParser
85
85
  *
86
86
  * @author SAP SE
87
- * @version 1.92.0
87
+ * @version 1.95.0
88
88
  * @public
89
89
  * @alias sap.ui.model.odata.ODataMessageParser
90
90
  */
@@ -89,6 +89,8 @@ sap.ui.define([
89
89
  * as a foundation and merges V4 annotations from the existing
90
90
  * {@link sap.ui.model.odata.ODataAnnotations} directly into the corresponding model element.
91
91
  *
92
+ * This model is not prepared to be inherited from.
93
+ *
92
94
  * Also, annotations from the "http://www.sap.com/Protocols/SAPData" namespace are lifted up
93
95
  * from the <code>extensions</code> array and transformed from objects into simple properties
94
96
  * with an "sap:" prefix for their name. Note that this happens in addition, thus the
@@ -206,7 +208,7 @@ sap.ui.define([
206
208
  * {@link #loaded loaded} has been resolved!
207
209
  *
208
210
  * @author SAP SE
209
- * @version 1.92.0
211
+ * @version 1.95.0
210
212
  * @alias sap.ui.model.odata.ODataMetaModel
211
213
  * @extends sap.ui.model.MetaModel
212
214
  * @public
@@ -588,7 +590,8 @@ sap.ui.define([
588
590
  oReadPromise = new SyncPromise(function (fnResolve, fnReject) {
589
591
  oCodeListModel.read("/" + sCollectionPath, {
590
592
  error : fnReject,
591
- success : fnResolve
593
+ success : fnResolve,
594
+ urlParameters : {$skip : 0, $top : 5000} // avoid server-driven paging
592
595
  });
593
596
  });
594
597
  oMappingPromise = new SyncPromise(function (fnResolve, fnReject) {
@@ -44,7 +44,7 @@ sap.ui.define([
44
44
  * Implementation to access OData metadata
45
45
  *
46
46
  * @author SAP SE
47
- * @version 1.92.0
47
+ * @version 1.95.0
48
48
  *
49
49
  * @public
50
50
  * @alias sap.ui.model.odata.ODataMetadata
@@ -34,13 +34,14 @@ sap.ui.define([
34
34
  "sap/ui/model/Context",
35
35
  "sap/ui/model/FilterProcessor",
36
36
  "sap/ui/model/Model",
37
+ "sap/ui/model/odata/ODataAnnotations",
37
38
  "sap/ui/model/odata/ODataMetaModel",
38
39
  "sap/ui/thirdparty/datajs",
39
40
  "sap/ui/thirdparty/URI"
40
41
  ], function(CountMode, ODataContextBinding, ODataListBinding, ODataMetadata, ODataPropertyBinding,
41
42
  ODataTreeBinding, ODataUtils, assert, Log, encodeURL, each, extend, isEmptyObject,
42
- isPlainObject, merge, uid, BindingMode, Context, FilterProcessor, Model, ODataMetaModel,
43
- OData, URI) {
43
+ isPlainObject, merge, uid, BindingMode, Context, FilterProcessor, Model, ODataAnnotations,
44
+ ODataMetaModel, OData, URI) {
44
45
  "use strict";
45
46
 
46
47
  /**
@@ -75,7 +76,7 @@ sap.ui.define([
75
76
  *
76
77
  *
77
78
  * @author SAP SE
78
- * @version 1.92.0
79
+ * @version 1.95.0
79
80
  *
80
81
  * @public
81
82
  * @deprecated As of version 1.48, please use {@link sap.ui.model.odata.v2.ODataModel} instead.
@@ -3441,13 +3442,13 @@ sap.ui.define([
3441
3442
  };
3442
3443
 
3443
3444
  /**
3444
- * Singleton Lazy loading of the annotation parser on demand
3445
+ * Get or create the annotation parser instance.
3446
+ * @param {object} mAnnotationData The annotation data
3445
3447
  *
3446
- * @return {sap.ui.model.odata.Annotations} The annotation parser instance
3448
+ * @return {sap.ui.model.odata.ODataAnnotations} The annotation parser instance
3447
3449
  */
3448
3450
  ODataModel.prototype._getAnnotationParser = function(mAnnotationData) {
3449
3451
  if (!this.oAnnotations) {
3450
- var ODataAnnotations = sap.ui.requireSync("sap/ui/model/odata/ODataAnnotations");
3451
3452
  this.oAnnotations = new ODataAnnotations({
3452
3453
  annotationData: mAnnotationData,
3453
3454
  url: null,
@@ -107,7 +107,8 @@ sap.ui.define([
107
107
  * same path are ORed and filters on different paths are ANDed with each other
108
108
  * @see ODataUtils._createFilterParams
109
109
  * @param {sap.ui.model.Filter|sap.ui.model.Filter[]} vFilter the root filter or filter array
110
- * @param {object} oEntityType the entity metadata object
110
+ * @param {object} oMetadata the entity metadata object
111
+ * @param {object} oEntityType the entity type object
111
112
  * @return {string} the URL encoded filter parameters
112
113
  * @private
113
114
  */
@@ -130,7 +131,8 @@ sap.ui.define([
130
131
  * Creates a string of logically (or/and) linked filter options,
131
132
  * which will be used as URL query parameters for filtering.
132
133
  * @param {sap.ui.model.Filter|sap.ui.model.Filter[]} vFilter the root filter or filter array
133
- * @param {object} oEntityType the entity metadata object
134
+ * @param {object} oMetadata the entity metadata object
135
+ * @param {object} oEntityType the entity type object
134
136
  * @return {string} the URL encoded filter parameters
135
137
  * @private
136
138
  */
@@ -189,7 +191,7 @@ sap.ui.define([
189
191
  * If vParams is an object map, it will be also encoded properly.
190
192
  *
191
193
  * @private
192
- * @param {string|object|array} vParams
194
+ * @param {string|object|array} vParams parameters
193
195
  */
194
196
  ODataUtils._createUrlParamsArray = function(vParams) {
195
197
  var aUrlParams, sType = typeof vParams, sParams;
@@ -369,9 +371,9 @@ sap.ui.define([
369
371
  sFinalAnnotationURL = sAnnotationWithOrigin + sAnnotationUrlRest;
370
372
  }
371
373
  } else if (iHanaXsSegmentIndex >= 0) {
372
- // Hana XS case: the Hana XS engine can provide static Annotation files for its services.
373
- // The services can be identifed by their URL segment ".xsodata"; if such a service uses the origin feature
374
- // the Annotation URLs need also adaption.
374
+ // Hana XS case: the Hana XS engine can provide static Annotation files for its
375
+ // services. The services can be identified by their URL segment ".xsodata"; if such a
376
+ // service uses the origin feature the Annotation URLs need also adaption.
375
377
  sFinalAnnotationURL = ODataUtils.setOrigin(sAnnotationURL, vParameters);
376
378
 
377
379
  } else {
@@ -489,10 +491,10 @@ sap.ui.define([
489
491
  * <a href="http://www.odata.org/documentation/odata-version-2-0/overview#AbstractTypeSystem">
490
492
  * EDM type</a>.
491
493
  *
492
- * @param {any} vValue the value to format
493
- * @param {string} sType the EDM type (e.g. Edm.Decimal)
494
- * @param {boolean} bCaseSensitive Wether strings gets compared case sensitive or not
495
- * @return {string} the formatted value
494
+ * @param {any} vValue The value to format
495
+ * @param {string} sType The EDM type (e.g. Edm.Decimal)
496
+ * @param {boolean} bCaseSensitive Whether strings gets compared case sensitive or not
497
+ * @return {string} The formatted value
496
498
  * @public
497
499
  */
498
500
  ODataUtils.formatValue = function(vValue, sType, bCaseSensitive) {
@@ -800,6 +802,25 @@ sap.ui.define([
800
802
  return sKey.replace(rNormalizeString, fnNormalizeString).replace(rNormalizeCase, fnNormalizeCase).replace(rNormalizeBinary, fnNormalizeBinary);
801
803
  };
802
804
 
805
+ /**
806
+ * Merges the given intervals into a single interval. The start and end of the resulting
807
+ * interval are the start of the first interval and the end of the last interval.
808
+ *
809
+ * @param {object[]} aIntervals
810
+ * The array of available intervals
811
+ * @returns {object|undefined}
812
+ * The merged interval with a member <code>start</code> and <code>end</code>, or
813
+ * <code>undefined</code> if no intervals are given.
814
+ *
815
+ * @private
816
+ */
817
+ ODataUtils._mergeIntervals = function (aIntervals) {
818
+ if (aIntervals.length) {
819
+ return {start : aIntervals[0].start, end : aIntervals[aIntervals.length - 1].end};
820
+ }
821
+ return undefined;
822
+ };
823
+
803
824
  /**
804
825
  * Returns the array of gaps in the given array of elements, taking the given start index,
805
826
  * length, and prefetch length into consideration.