@openui5/sap.ui.core 1.125.0 → 1.126.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (464) hide show
  1. package/.dtsgenrc +76 -0
  2. package/.eslintrc.json +4 -1
  3. package/.reuse/dep5 +4 -4
  4. package/THIRDPARTY.txt +6 -6
  5. package/package.json +1 -1
  6. package/src/jquery.sap.global.js +1 -1
  7. package/src/jquery.sap.properties.js +1 -1
  8. package/src/jquery.sap.resources.js +1 -1
  9. package/src/jquery.sap.script.js +1 -1
  10. package/src/jquery.sap.storage.js +3 -3
  11. package/src/sap/base/Event.js +1 -1
  12. package/src/sap/base/Eventing.js +1 -1
  13. package/src/sap/base/Log.js +0 -16
  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 +1 -1
  17. package/src/sap/base/util/ObjectPath.js +6 -6
  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 +35 -10
  60. package/src/sap/ui/Global.js +6 -6
  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 +16 -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/core/.library +1 -8
  70. package/src/sap/ui/core/BusyIndicator.js +1 -1
  71. package/src/sap/ui/core/Component.js +17 -3
  72. package/src/sap/ui/core/ComponentContainer.js +1 -1
  73. package/src/sap/ui/core/ComponentMetadata.js +1 -1
  74. package/src/sap/ui/core/ComponentSupport.js +1 -1
  75. package/src/sap/ui/core/Configuration.js +1 -1
  76. package/src/sap/ui/core/Control.js +1 -1
  77. package/src/sap/ui/core/Core.js +14 -5
  78. package/src/sap/ui/core/CustomData.js +1 -1
  79. package/src/sap/ui/core/DeclarativeSupport.js +1 -1
  80. package/src/sap/ui/core/Element.js +1 -1
  81. package/src/sap/ui/core/ElementMetadata.js +1 -1
  82. package/src/sap/ui/core/EnabledPropagator.js +1 -1
  83. package/src/sap/ui/core/EventBus.js +1 -1
  84. package/src/sap/ui/core/Fragment.js +1 -1
  85. package/src/sap/ui/core/HTML.js +1 -1
  86. package/src/sap/ui/core/History.js +1 -1
  87. package/src/sap/ui/core/Icon.js +1 -1
  88. package/src/sap/ui/core/IndicationColorSupport.js +1 -1
  89. package/src/sap/ui/core/IntervalTrigger.js +1 -1
  90. package/src/sap/ui/core/InvisibleMessage.js +1 -1
  91. package/src/sap/ui/core/InvisibleRenderer.js +1 -1
  92. package/src/sap/ui/core/InvisibleText.js +1 -1
  93. package/src/sap/ui/core/Item.js +1 -1
  94. package/src/sap/ui/core/LabelEnablement.js +1 -1
  95. package/src/sap/ui/core/LayoutData.js +1 -1
  96. package/src/sap/ui/core/Lib.js +2 -2
  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 +148 -102
  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 +2 -2
  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/boot.js +1 -6
  118. package/src/sap/ui/core/date/UI5Date.js +1 -1
  119. package/src/sap/ui/core/delegate/ItemNavigation.js +1 -1
  120. package/src/sap/ui/core/delegate/ScrollEnablement.js +2 -2
  121. package/src/sap/ui/core/dnd/DragAndDrop.js +151 -10
  122. package/src/sap/ui/core/dnd/DragDropBase.js +13 -2
  123. package/src/sap/ui/core/dnd/DragDropInfo.js +1 -1
  124. package/src/sap/ui/core/dnd/DragInfo.js +1 -1
  125. package/src/sap/ui/core/dnd/DropInfo.js +1 -1
  126. package/src/sap/ui/{model → core/fieldhelp}/FieldHelp.js +92 -65
  127. package/src/sap/ui/core/fieldhelp/FieldHelpUtil.js +62 -0
  128. package/src/sap/ui/core/format/FormatUtils.js +1 -1
  129. package/src/sap/ui/core/format/TimezoneUtil.js +1 -1
  130. package/src/sap/ui/core/getCompatibilityVersion.js +1 -1
  131. package/src/sap/ui/core/hyphenation/Hyphenation.js +2 -1
  132. package/src/sap/ui/core/library.js +49 -9
  133. package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
  134. package/src/sap/ui/core/message/Message.js +1 -1
  135. package/src/sap/ui/core/message/MessageManager.js +1 -1
  136. package/src/sap/ui/core/message/MessageParser.js +1 -1
  137. package/src/sap/ui/core/message/MessageProcessor.js +1 -1
  138. package/src/sap/ui/core/mvc/ControllerExtension.js +16 -0
  139. package/src/sap/ui/core/mvc/HTMLView.js +1 -1
  140. package/src/sap/ui/core/mvc/JSONView.js +1 -1
  141. package/src/sap/ui/core/mvc/JSView.js +1 -1
  142. package/src/sap/ui/core/mvc/TemplateView.js +1 -1
  143. package/src/sap/ui/core/mvc/View.js +1 -1
  144. package/src/sap/ui/core/mvc/XMLView.js +1 -1
  145. package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
  146. package/src/sap/ui/core/plugin/LessSupport.js +1 -1
  147. package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -1
  148. package/src/sap/ui/core/postmessage/Bus.js +1 -1
  149. package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
  150. package/src/sap/ui/core/search/OpenSearchProvider.js +1 -1
  151. package/src/sap/ui/core/search/SearchProvider.js +1 -1
  152. package/src/sap/ui/core/service/Service.js +1 -1
  153. package/src/sap/ui/core/service/ServiceFactory.js +1 -1
  154. package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
  155. package/src/sap/ui/core/support/Plugin.js +1 -1
  156. package/src/sap/ui/core/support/Support.js +1 -1
  157. package/src/sap/ui/core/support/plugins/ControlTree.js +1 -1
  158. package/src/sap/ui/core/support/plugins/Interaction.js +1 -1
  159. package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
  160. package/src/sap/ui/core/support/plugins/Performance.js +1 -1
  161. package/src/sap/ui/core/support/plugins/Selector.js +1 -1
  162. package/src/sap/ui/core/support/plugins/TechInfo.js +1 -1
  163. package/src/sap/ui/core/support/plugins/Trace.js +1 -1
  164. package/src/sap/ui/core/support/plugins/ViewInfo.js +1 -1
  165. package/src/sap/ui/core/support/trace/E2eTraceLib.js +1 -1
  166. package/src/sap/ui/core/themes/sap_hcb/base_BlindLayer.less +37 -0
  167. package/src/sap/ui/core/themes/sap_hcb/base_BrowserScrollbar.less +36 -0
  168. package/src/sap/ui/core/themes/sap_hcb/base_BusyIndicator.less +19 -0
  169. package/src/sap/ui/core/themes/sap_hcb/base_CommandShortcutHints.less +20 -0
  170. package/src/sap/ui/core/themes/sap_hcb/base_DragAndDrop.less +76 -0
  171. package/src/sap/ui/core/themes/sap_hcb/base_Icon.less +144 -0
  172. package/src/sap/ui/core/themes/sap_hcb/base_LocalBusyIndicator.less +292 -0
  173. package/src/sap/ui/core/themes/sap_hcb/base_SAP-icons.less +10 -0
  174. package/src/sap/ui/core/themes/sap_hcb/base_ScrollBar.less +20 -0
  175. package/src/sap/ui/core/themes/sap_hcb/base_Shadow.less +3 -0
  176. package/src/sap/ui/core/themes/sap_hcb/base_TechnicalInfo.less +157 -0
  177. package/src/sap/ui/core/themes/sap_hcb/base_View.less +12 -0
  178. package/src/sap/ui/core/themes/sap_hcb/base_media.less +36 -0
  179. package/src/sap/ui/core/themes/sap_hcb/base_parameterClasses.less +83 -0
  180. package/src/sap/ui/core/themes/sap_hcb/base_shared.less +340 -0
  181. package/src/sap/ui/core/themes/sap_hcb/library.source.less +27 -1
  182. package/src/sap/ui/core/theming/Parameters.js +68 -8
  183. package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
  184. package/src/sap/ui/core/tmpl/DOMElement.js +1 -1
  185. package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
  186. package/src/sap/ui/core/tmpl/Template.js +1 -1
  187. package/src/sap/ui/core/tmpl/TemplateControl.js +1 -1
  188. package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
  189. package/src/sap/ui/core/util/Export.js +1 -1
  190. package/src/sap/ui/core/util/ExportCell.js +1 -1
  191. package/src/sap/ui/core/util/ExportColumn.js +1 -1
  192. package/src/sap/ui/core/util/ExportRow.js +1 -1
  193. package/src/sap/ui/core/util/ExportType.js +1 -1
  194. package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
  195. package/src/sap/ui/core/util/File.js +1 -1
  196. package/src/sap/ui/core/util/LibraryInfo.js +2 -2
  197. package/src/sap/ui/core/util/MockServer.js +1 -2
  198. package/src/sap/ui/core/util/PasteHelper.js +1 -1
  199. package/src/sap/ui/core/util/XMLPreprocessor.js +14 -15
  200. package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
  201. package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
  202. package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
  203. package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
  204. package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
  205. package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
  206. package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
  207. package/src/sap/ui/core/webc/WebComponent.js +1 -1
  208. package/src/sap/ui/core/webc/WebComponentMetadata.js +1 -1
  209. package/src/sap/ui/core/ws/ReadyState.js +1 -1
  210. package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
  211. package/src/sap/ui/core/ws/WebSocket.js +1 -1
  212. package/src/sap/ui/debug/ControlTree.js +1 -1
  213. package/src/sap/ui/debug/DebugEnv.js +1 -1
  214. package/src/sap/ui/debug/PropertyList.js +1 -1
  215. package/src/sap/ui/model/Binding.js +28 -0
  216. package/src/sap/ui/model/ClientModel.js +1 -1
  217. package/src/sap/ui/model/CompositeDataState.js +1 -1
  218. package/src/sap/ui/model/CompositeType.js +1 -1
  219. package/src/sap/ui/model/DataState.js +1 -1
  220. package/src/sap/ui/model/ManagedObjectBindingSupport.js +5 -0
  221. package/src/sap/ui/model/MetaModel.js +1 -1
  222. package/src/sap/ui/model/Model.js +1 -1
  223. package/src/sap/ui/model/SelectionModel.js +1 -1
  224. package/src/sap/ui/model/SimpleType.js +1 -1
  225. package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
  226. package/src/sap/ui/model/Type.js +1 -1
  227. package/src/sap/ui/model/base/ManagedObjectModel.js +12 -2
  228. package/src/sap/ui/model/json/JSONModel.js +16 -11
  229. package/src/sap/ui/model/message/MessageModel.js +1 -1
  230. package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
  231. package/src/sap/ui/model/odata/ODataMessageParser.js +1 -1
  232. package/src/sap/ui/model/odata/ODataMetaModel.js +1 -1
  233. package/src/sap/ui/model/odata/ODataMetadata.js +1 -1
  234. package/src/sap/ui/model/odata/ODataModel.js +1 -1
  235. package/src/sap/ui/model/odata/ODataTreeBindingFlat.js +7 -2
  236. package/src/sap/ui/model/odata/ODataUtils.js +22 -14
  237. package/src/sap/ui/model/odata/type/Boolean.js +1 -1
  238. package/src/sap/ui/model/odata/type/Byte.js +1 -1
  239. package/src/sap/ui/model/odata/type/Currency.js +1 -1
  240. package/src/sap/ui/model/odata/type/Date.js +1 -1
  241. package/src/sap/ui/model/odata/type/DateTime.js +1 -1
  242. package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
  243. package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
  244. package/src/sap/ui/model/odata/type/DateTimeWithTimezone.js +1 -1
  245. package/src/sap/ui/model/odata/type/Decimal.js +1 -1
  246. package/src/sap/ui/model/odata/type/Double.js +1 -1
  247. package/src/sap/ui/model/odata/type/Guid.js +1 -1
  248. package/src/sap/ui/model/odata/type/Int.js +1 -1
  249. package/src/sap/ui/model/odata/type/Int16.js +1 -1
  250. package/src/sap/ui/model/odata/type/Int32.js +1 -1
  251. package/src/sap/ui/model/odata/type/Int64.js +1 -1
  252. package/src/sap/ui/model/odata/type/ODataType.js +1 -1
  253. package/src/sap/ui/model/odata/type/Raw.js +1 -1
  254. package/src/sap/ui/model/odata/type/SByte.js +1 -1
  255. package/src/sap/ui/model/odata/type/Single.js +1 -1
  256. package/src/sap/ui/model/odata/type/Stream.js +1 -1
  257. package/src/sap/ui/model/odata/type/String.js +1 -1
  258. package/src/sap/ui/model/odata/type/Time.js +1 -1
  259. package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
  260. package/src/sap/ui/model/odata/type/Unit.js +1 -1
  261. package/src/sap/ui/model/odata/v2/Context.js +1 -1
  262. package/src/sap/ui/model/odata/v2/ODataAnnotations.js +1 -1
  263. package/src/sap/ui/model/odata/v2/ODataModel.js +1 -1
  264. package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +1 -1
  265. package/src/sap/ui/model/odata/v4/Context.js +92 -43
  266. package/src/sap/ui/model/odata/v4/ODataBinding.js +20 -20
  267. package/src/sap/ui/model/odata/v4/ODataContextBinding.js +6 -7
  268. package/src/sap/ui/model/odata/v4/ODataListBinding.js +176 -87
  269. package/src/sap/ui/model/odata/v4/ODataMetaModel.js +9 -9
  270. package/src/sap/ui/model/odata/v4/ODataModel.js +36 -9
  271. package/src/sap/ui/model/odata/v4/ODataParentBinding.js +3 -3
  272. package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +12 -11
  273. package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +176 -75
  274. package/src/sap/ui/model/odata/v4/lib/_AggregationHelper.js +48 -9
  275. package/src/sap/ui/model/odata/v4/lib/_Cache.js +15 -17
  276. package/src/sap/ui/model/odata/v4/lib/_Helper.js +49 -14
  277. package/src/sap/ui/model/odata/v4/lib/_Parser.js +3 -3
  278. package/src/sap/ui/model/odata/v4/lib/_Requestor.js +20 -12
  279. package/src/sap/ui/model/odata/v4/lib/_V2MetadataConverter.js +2 -2
  280. package/src/sap/ui/model/odata/v4/lib/_V2Requestor.js +3 -3
  281. package/src/sap/ui/model/resource/ResourceModel.js +1 -1
  282. package/src/sap/ui/model/type/Boolean.js +1 -1
  283. package/src/sap/ui/model/type/Currency.js +1 -1
  284. package/src/sap/ui/model/type/Date.js +1 -1
  285. package/src/sap/ui/model/type/DateInterval.js +1 -1
  286. package/src/sap/ui/model/type/DateTime.js +1 -1
  287. package/src/sap/ui/model/type/DateTimeInterval.js +1 -1
  288. package/src/sap/ui/model/type/FileSize.js +1 -1
  289. package/src/sap/ui/model/type/Float.js +1 -1
  290. package/src/sap/ui/model/type/Integer.js +1 -1
  291. package/src/sap/ui/model/type/String.js +1 -1
  292. package/src/sap/ui/model/type/Time.js +1 -1
  293. package/src/sap/ui/model/type/TimeInterval.js +1 -1
  294. package/src/sap/ui/model/type/Unit.js +1 -1
  295. package/src/sap/ui/model/xml/XMLModel.js +1 -1
  296. package/src/sap/ui/performance/trace/FESR.js +2 -2
  297. package/src/sap/ui/performance/trace/Interaction.js +1 -1
  298. package/src/sap/ui/performance/trace/Passport.js +1 -1
  299. package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
  300. package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +1 -1
  301. package/src/sap/ui/test/generic/TestBase.js +1 -1
  302. package/src/sap/ui/test/starter/_utils.js +18 -3
  303. package/src/sap/ui/util/Mobile.js +7 -4
  304. package/src/sap/ui/util/Storage.js +1 -1
  305. package/src/ui5loader-autoconfig.js +0 -25
  306. package/test/sap/ui/core/BindableResponseHeaders.html +1 -2
  307. package/test/sap/ui/core/ODataV2CanonicalRequests.html +8 -5
  308. package/test/sap/ui/core/ODataV2Messages.html +14 -11
  309. package/test/sap/ui/core/ODataV2MessagesPerf.html +34 -9
  310. package/test/sap/ui/core/demokit/sample/Messaging/ODataBackendMessagesComp/ui5.yaml +1 -1
  311. package/test/sap/ui/core/demokit/sample/OpaStartup/iStartMyAppInAFrame/iStartMyAppInAFrame.html +2 -1
  312. package/test/sap/ui/core/demokit/sample/OpaStartup/iStartMyAppInAFrame/iStartMyAppInAFrame.js +2 -12
  313. package/test/sap/ui/core/demokit/sample/common/Controller.js +2 -2
  314. package/test/sap/ui/core/demokit/sample/common/ValueHelp.js +2 -2
  315. package/test/sap/ui/core/demokit/sample/matcher/BindingPath/ui5.yaml +1 -1
  316. package/test/sap/ui/core/demokit/sample/matcher/Descendant/ui5.yaml +1 -1
  317. package/test/sap/ui/core/demokit/sample/matcher/I18NText/ui5.yaml +1 -1
  318. package/test/sap/ui/core/demokit/sample/matcher/LabelFor/ui5.yaml +1 -1
  319. package/test/sap/ui/core/demokit/sample/odata/v4/GridTable/SandboxModel.js +6 -6
  320. package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/Main.controller.js +110 -21
  321. package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/Main.view.xml +35 -43
  322. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/RecursiveHierarchy.controller.js +118 -26
  323. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/RecursiveHierarchy.view.xml +99 -90
  324. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/SandboxModel.js +87 -40
  325. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/pages/Main.js +4 -3
  326. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/Component.js +18 -0
  327. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/tests/CreateRelative.js +1 -8
  328. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersRTATest/Main.controller.js +1 -2
  329. package/test/sap/ui/core/demokit/tutorial/databinding/01/ui5.yaml +1 -1
  330. package/test/sap/ui/core/demokit/tutorial/databinding/02/ui5.yaml +1 -1
  331. package/test/sap/ui/core/demokit/tutorial/databinding/03/ui5.yaml +1 -1
  332. package/test/sap/ui/core/demokit/tutorial/databinding/04/ui5.yaml +1 -1
  333. package/test/sap/ui/core/demokit/tutorial/databinding/05/ui5.yaml +1 -1
  334. package/test/sap/ui/core/demokit/tutorial/databinding/06/ui5.yaml +1 -1
  335. package/test/sap/ui/core/demokit/tutorial/databinding/07/ui5.yaml +1 -1
  336. package/test/sap/ui/core/demokit/tutorial/databinding/08/ui5.yaml +1 -1
  337. package/test/sap/ui/core/demokit/tutorial/databinding/09/ui5.yaml +1 -1
  338. package/test/sap/ui/core/demokit/tutorial/databinding/10/ui5.yaml +1 -1
  339. package/test/sap/ui/core/demokit/tutorial/databinding/11/ui5.yaml +1 -1
  340. package/test/sap/ui/core/demokit/tutorial/databinding/12/ui5.yaml +1 -1
  341. package/test/sap/ui/core/demokit/tutorial/databinding/13/ui5.yaml +1 -1
  342. package/test/sap/ui/core/demokit/tutorial/databinding/14/ui5.yaml +1 -1
  343. package/test/sap/ui/core/demokit/tutorial/databinding/15/ui5.yaml +1 -1
  344. package/test/sap/ui/core/demokit/tutorial/mockserver/01/ui5.yaml +1 -1
  345. package/test/sap/ui/core/demokit/tutorial/mockserver/02/ui5.yaml +1 -1
  346. package/test/sap/ui/core/demokit/tutorial/mockserver/03/ui5.yaml +1 -1
  347. package/test/sap/ui/core/demokit/tutorial/mockserver/04/ui5.yaml +1 -1
  348. package/test/sap/ui/core/demokit/tutorial/navigation/01/ui5.yaml +1 -1
  349. package/test/sap/ui/core/demokit/tutorial/navigation/02/ui5.yaml +1 -1
  350. package/test/sap/ui/core/demokit/tutorial/navigation/03/ui5.yaml +1 -1
  351. package/test/sap/ui/core/demokit/tutorial/navigation/04/ui5.yaml +1 -1
  352. package/test/sap/ui/core/demokit/tutorial/navigation/05/ui5.yaml +1 -1
  353. package/test/sap/ui/core/demokit/tutorial/navigation/06/ui5.yaml +1 -1
  354. package/test/sap/ui/core/demokit/tutorial/navigation/07/ui5.yaml +1 -1
  355. package/test/sap/ui/core/demokit/tutorial/navigation/08/ui5.yaml +1 -1
  356. package/test/sap/ui/core/demokit/tutorial/navigation/09/ui5.yaml +1 -1
  357. package/test/sap/ui/core/demokit/tutorial/navigation/10/ui5.yaml +1 -1
  358. package/test/sap/ui/core/demokit/tutorial/navigation/11/ui5.yaml +1 -1
  359. package/test/sap/ui/core/demokit/tutorial/navigation/12/ui5.yaml +1 -1
  360. package/test/sap/ui/core/demokit/tutorial/navigation/13/ui5.yaml +1 -1
  361. package/test/sap/ui/core/demokit/tutorial/navigation/14/ui5.yaml +1 -1
  362. package/test/sap/ui/core/demokit/tutorial/navigation/15/ui5.yaml +1 -1
  363. package/test/sap/ui/core/demokit/tutorial/navigation/16/ui5.yaml +1 -1
  364. package/test/sap/ui/core/demokit/tutorial/navigation/17/ui5.yaml +1 -1
  365. package/test/sap/ui/core/demokit/tutorial/odatav4/01/ui5.yaml +1 -1
  366. package/test/sap/ui/core/demokit/tutorial/odatav4/01/webapp/localService/mockserver.js +4 -4
  367. package/test/sap/ui/core/demokit/tutorial/odatav4/02/ui5.yaml +1 -1
  368. package/test/sap/ui/core/demokit/tutorial/odatav4/02/webapp/localService/mockserver.js +4 -4
  369. package/test/sap/ui/core/demokit/tutorial/odatav4/03/ui5.yaml +1 -1
  370. package/test/sap/ui/core/demokit/tutorial/odatav4/03/webapp/localService/mockserver.js +4 -4
  371. package/test/sap/ui/core/demokit/tutorial/odatav4/04/ui5.yaml +1 -1
  372. package/test/sap/ui/core/demokit/tutorial/odatav4/04/webapp/localService/mockserver.js +4 -4
  373. package/test/sap/ui/core/demokit/tutorial/odatav4/05/ui5.yaml +1 -1
  374. package/test/sap/ui/core/demokit/tutorial/odatav4/05/webapp/localService/mockserver.js +4 -4
  375. package/test/sap/ui/core/demokit/tutorial/odatav4/06/ui5.yaml +1 -1
  376. package/test/sap/ui/core/demokit/tutorial/odatav4/06/webapp/localService/mockserver.js +4 -4
  377. package/test/sap/ui/core/demokit/tutorial/odatav4/07/ui5.yaml +1 -1
  378. package/test/sap/ui/core/demokit/tutorial/odatav4/07/webapp/localService/mockserver.js +4 -4
  379. package/test/sap/ui/core/demokit/tutorial/odatav4/08/ui5.yaml +1 -1
  380. package/test/sap/ui/core/demokit/tutorial/odatav4/08/webapp/localService/mockserver.js +4 -4
  381. package/test/sap/ui/core/demokit/tutorial/odatav4/09/ui5.yaml +1 -1
  382. package/test/sap/ui/core/demokit/tutorial/odatav4/09/webapp/localService/mockserver.js +4 -4
  383. package/test/sap/ui/core/demokit/tutorial/odatav4/10/ui5.yaml +1 -1
  384. package/test/sap/ui/core/demokit/tutorial/odatav4/10/webapp/localService/mockserver.js +4 -4
  385. package/test/sap/ui/core/demokit/tutorial/odatav4/11/ui5.yaml +1 -1
  386. package/test/sap/ui/core/demokit/tutorial/odatav4/11/webapp/localService/mockserver.js +4 -4
  387. package/test/sap/ui/core/demokit/tutorial/troubleshooting/01/ui5.yaml +1 -1
  388. package/test/sap/ui/core/internal/samples/odata/v2/TreeTable/Main.view.xml +3 -3
  389. package/test/sap/ui/core/qunit/CommandExecution.qunit.js +96 -92
  390. package/test/sap/ui/core/qunit/ManagedObjectModel.qunit.js +24 -0
  391. package/test/sap/ui/core/qunit/ThemeParameters.qunit.js +80 -0
  392. package/test/sap/ui/core/qunit/ThemeParameters_legacyAPIs.qunit.js +1 -0
  393. package/test/sap/ui/core/qunit/analytics/AnalyticalBinding.qunit.js +1 -1
  394. package/test/sap/ui/core/qunit/app/testsuite.app.qunit.js +2 -1
  395. package/test/sap/ui/core/qunit/base/Config.qunit.js +117 -114
  396. package/test/sap/ui/core/qunit/base/Config_bootstrap.qunit.html +3 -3
  397. package/test/sap/ui/core/qunit/base/Config_bootstrap.qunit.js +98 -95
  398. package/test/sap/ui/core/qunit/base/Config_cascade.qunit.js +20 -45
  399. package/test/sap/ui/core/qunit/base/Config_global.qunit.html +2 -2
  400. package/test/sap/ui/core/qunit/base/Config_meta.qunit.html +2 -2
  401. package/test/sap/ui/core/qunit/base/Config_noUrl.qunit.html +2 -2
  402. package/test/sap/ui/core/qunit/base/Config_noUrl.qunit.js +17 -16
  403. package/test/sap/ui/core/qunit/base/Config_url.qunit.html +2 -2
  404. package/test/sap/ui/core/qunit/bootstrap/BootstrapMainModule.beforeBootstrap.js +6 -0
  405. package/test/sap/ui/core/qunit/bootstrap/BootstrapMainModule.qunit.js +4 -4
  406. package/test/sap/ui/core/qunit/bootstrap/BootstrapMinimal.qunit.js +30 -10
  407. package/test/sap/ui/core/qunit/bootstrap/testsuite.bootstrap.qunit.js +5 -1
  408. package/test/sap/ui/core/qunit/dnd/DragAndDrop.qunit.js +159 -3
  409. package/test/sap/ui/core/qunit/{model → fieldhelp}/FieldHelp.qunit.js +306 -24
  410. package/test/sap/ui/core/qunit/fieldhelp/FieldHelpUtil.qunit.js +55 -0
  411. package/test/sap/ui/core/qunit/fieldhelp/testsuite.fieldhelp.qunit.html +12 -0
  412. package/test/sap/ui/core/qunit/fieldhelp/testsuite.fieldhelp.qunit.js +50 -0
  413. package/test/sap/ui/core/qunit/internal/1RingModels.qunit.html +1 -1
  414. package/test/sap/ui/core/qunit/internal/1RingModels.qunit.js +6 -1
  415. package/test/sap/ui/core/qunit/internal/testsuite.feature-odata-v4.qunit.js +1 -1
  416. package/test/sap/ui/core/qunit/jquery-mobile-custom.beforeBootstrap.js +11 -0
  417. package/test/sap/ui/core/qunit/jquery-mobile-custom.qunit.js +3 -3
  418. package/test/sap/ui/core/qunit/json/JSONModel.qunit.js +21 -0
  419. package/test/sap/ui/core/qunit/loader/asyncMode.qunit.js +2 -6
  420. package/test/sap/ui/core/qunit/loader/config.qunit.js +41 -2
  421. package/test/sap/ui/core/qunit/mvc/testsuite.mvc.qunit.js +9 -4
  422. package/test/sap/ui/core/qunit/odata/ODataUtils.qunit.js +5 -12
  423. package/test/sap/ui/core/qunit/odata/type/testsuite.odata.types.qunit.js +1 -0
  424. package/test/sap/ui/core/qunit/odata/v2/ODataModel.integration.qunit.js +202 -73
  425. package/test/sap/ui/core/qunit/odata/v2/ODataTreeBindingFlatNoFakeService.qunit.js +94 -2
  426. package/test/sap/ui/core/qunit/odata/v2/data/ZUI5_GWSAMPLE_BASIC.metadata.xml +4 -0
  427. package/test/sap/ui/core/qunit/odata/v4/Context.qunit.js +106 -103
  428. package/test/sap/ui/core/qunit/odata/v4/ODataBinding.qunit.js +3 -3
  429. package/test/sap/ui/core/qunit/odata/v4/ODataContextBinding.qunit.js +20 -20
  430. package/test/sap/ui/core/qunit/odata/v4/ODataListBinding.qunit.js +370 -109
  431. package/test/sap/ui/core/qunit/odata/v4/ODataMetaModel.qunit.js +42 -42
  432. package/test/sap/ui/core/qunit/odata/v4/ODataModel.integration.qunit.js +2260 -177
  433. package/test/sap/ui/core/qunit/odata/v4/ODataModel.qunit.js +39 -7
  434. package/test/sap/ui/core/qunit/odata/v4/ODataModel.realOData.qunit.js +7 -6
  435. package/test/sap/ui/core/qunit/odata/v4/ODataPropertyBinding.qunit.js +13 -14
  436. package/test/sap/ui/core/qunit/odata/v4/_AnnotationHelperExpression.qunit.js +3 -3
  437. package/test/sap/ui/core/qunit/odata/v4/lib/_AggregationCache.qunit.js +592 -169
  438. package/test/sap/ui/core/qunit/odata/v4/lib/_AggregationHelper.qunit.js +82 -2
  439. package/test/sap/ui/core/qunit/odata/v4/lib/_Cache.qunit.js +44 -47
  440. package/test/sap/ui/core/qunit/odata/v4/lib/_Helper.qunit.js +80 -20
  441. package/test/sap/ui/core/qunit/odata/v4/lib/_MetadataRequestor.qunit.js +2 -2
  442. package/test/sap/ui/core/qunit/odata/v4/lib/_Requestor.qunit.js +175 -69
  443. package/test/sap/ui/core/qunit/odata/v4/lib/_V2Requestor.qunit.js +3 -3
  444. package/test/sap/ui/core/qunit/odata/v4/testsuite.odatav4.qunit.js +1 -1
  445. package/test/sap/ui/core/qunit/performance/trace/FESR.qunit.js +9 -7
  446. package/test/sap/ui/core/qunit/rule/testsuite.rule.qunit.js +6 -1
  447. package/test/sap/ui/core/qunit/testdata/libraries/themeParameters/lib4/themes/sap_horizon_hcb/library.css +2 -0
  448. package/test/sap/ui/core/qunit/testsuite.qunit.js +1 -0
  449. package/test/sap/ui/core/qunit/testsuites/testsuite.browser.runtime.qunit.js +5 -1
  450. package/test/sap/ui/core/qunit/testsuites/testsuite.databinding.qunit.js +0 -3
  451. package/test/sap/ui/core/qunit/testsuites/testsuite.theming.qunit.js +4 -1
  452. package/test/sap/ui/core/qunit/ui/Device.qunit.js +68 -25
  453. package/test/sap/ui/core/qunit/ui5classes/ManagedObjectMetadata.qunit.js +3 -0
  454. package/test/sap/ui/core/qunit/util/Mobile.qunit.js +12 -7
  455. package/test/sap/ui/core/qunit/util/XMLPreprocessor.qunit.js +20 -20
  456. package/test/sap/ui/core/relnotes/changes-1.125.json +1 -6
  457. package/test/sap/ui/core/relnotes/changes-1.126.json +63 -0
  458. package/test/sap/ui/core/samples/databinding/UnitTable/ui5.yaml +1 -1
  459. package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/firstItem-contextMenu.ref.lnk +1 -1
  460. package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/initial.ref.lnk +1 -1
  461. package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/lastItem-contextMenu.ref.lnk +1 -1
  462. package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/leftDownBtn-contextMenu.ref.lnk +1 -1
  463. package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/myButtonSample-contextMenu.ref.lnk +1 -1
  464. package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/rightDownBtn-contextMenu.ref.lnk +1 -1
@@ -7,19 +7,29 @@
7
7
  xmlns:rm="sap.ui.table.rowmodes">
8
8
 
9
9
  <Table id="table" ariaLabelledBy="title"
10
- rows="{path : '/EMPLOYEES',
11
- parameters : {$count : false, $orderby : 'AGE', $$patchWithoutSideEffects : true},
12
- suspended : true}"
10
+ rows="{
11
+ path : '/EMPLOYEES',
12
+ parameters : {
13
+ $count : false,
14
+ $filter : 'STATUS ne \'Out\'',
15
+ $orderby : 'AGE',
16
+ $$patchWithoutSideEffects : true
17
+ },
18
+ suspended : true
19
+ }"
13
20
  selectionMode="None">
14
21
  <extension>
15
22
  <m:Toolbar design="Transparent" class="sapMTBHeader-CTX">
16
23
  <m:Title id="title" level="H1" text="Organizational Chart"/>
17
24
  <m:ToolbarSpacer/>
18
25
  <m:Button icon="sap-icon://create" press=".onCreateRoot" tooltip="Create New Root"/>
26
+ <m:Button icon="sap-icon://hide" press=".onCreateRoot($event, true)"
27
+ tooltip="Create New Root (filtered out)"/>
19
28
  <m:Button icon="sap-icon://synchronize" id="synchronize" press="onSynchronize"
20
- tooltip="Synchronize"/>
21
- <m:Button icon="sap-icon://refresh" press="onRefresh"
22
- tooltip="Refresh, while keeping tree state"/>
29
+ tooltip="Side Effect"/>
30
+ <m:Button icon="sap-icon://response" press="onRefresh" tooltip="Refresh"/>
31
+ <m:Button icon="sap-icon://refresh" press="onRefresh($event, true)"
32
+ tooltip="Refresh (keeping tree state)"/>
23
33
  </m:Toolbar>
24
34
  </extension>
25
35
  <rowMode>
@@ -31,7 +41,7 @@
31
41
  <m:Text text="{= %{@$ui5.node.level} }" wrapping="false"/>
32
42
  </template>
33
43
  </Column>
34
- <Column width="4em">
44
+ <Column width="3.14em">
35
45
  <template>
36
46
  <m:Button enabled="{= %{@$ui5.node.isExpanded} !== undefined}"
37
47
  icon="{= %{@$ui5.node.isExpanded} === true
@@ -70,52 +80,53 @@
70
80
  <m:Text text="{AGE}" wrapping="false"/>
71
81
  </template>
72
82
  </Column>
73
- <Column width="4em">
74
- <template>
75
- <m:Button enabled="{= %{@$ui5.node.isExpanded} !== false}" icon="sap-icon://create"
76
- id="create" press=".onCreate" tooltip="Create New Child"/>
77
- </template>
78
- </Column>
79
- <Column width="4em">
80
- <template>
81
- <m:Button icon="sap-icon://move" press=".onMove" tooltip="Move To Parent..."/>
82
- </template>
83
- </Column>
84
- <Column width="4em">
85
- <template>
86
- <m:Button icon="sap-icon://map" press=".onMove($event, false, '?')"
87
- tooltip="Move Just Before Sibling..."/>
88
- </template>
89
- </Column>
90
- <Column width="4em">
91
- <template>
92
- <m:Button icon="sap-icon://arrow-bottom" press=".onMove($event, false, null)"
93
- tooltip="Move As Last Child Of..."/>
94
- </template>
95
- </Column>
96
- <Column width="4em">
97
- <template>
98
- <m:Button enabled="{= %{@$ui5.node.level} > 1}" icon="sap-icon://back-to-top"
99
- press=".onMakeRoot" tooltip="Make Root"/>
100
- </template>
101
- </Column>
102
- <Column width="4em">
103
- <template>
104
- <m:Button icon="sap-icon://pull-down" press=".onMakeRoot($event, null)"
105
- tooltip="Make Last Root"/>
106
- </template>
107
- </Column>
108
- <Column width="4em">
109
- <template>
110
- <m:Button icon="sap-icon://delete" press=".onDelete" tooltip="Delete"/>
83
+ <Column>
84
+ <m:Label text="Filtered Out"/>
85
+ <template>
86
+ <m:CheckBox editable="false" selected="{= %{STATUS} === 'Out'}"/>
87
+ </template>
88
+ </Column>
89
+ <Column width="27em">
90
+ <template>
91
+ <m:FlexBox justifyContent="SpaceBetween">
92
+ <m:Button enabled="{= %{STATUS} !== 'Out' &amp;&amp; %{@$ui5.node.isExpanded} !== false}"
93
+ icon="sap-icon://create" id="create" press=".onCreate"
94
+ tooltip="Create New Child"/>
95
+ <m:Button enabled="{= %{STATUS} !== 'Out' &amp;&amp; %{@$ui5.node.isExpanded} !== false}"
96
+ icon="sap-icon://hide" press=".onCreate($event, true)"
97
+ tooltip="Create New Hidden Child"/>
98
+ <m:Button enabled="{= %{STATUS} !== 'Out'}" icon="sap-icon://up"
99
+ press=".onMoveUp" tooltip="Move Up"/>
100
+ <m:Button enabled="{= %{STATUS} !== 'Out'}" icon="sap-icon://down"
101
+ press=".onMoveDown" tooltip="Move Down"/>
102
+ <m:Button enabled="{= %{STATUS} !== 'Out'}" icon="sap-icon://move"
103
+ press=".onMove" tooltip="Move To Parent..."/>
104
+ <m:Button enabled="{= %{STATUS} !== 'Out'}" icon="sap-icon://map"
105
+ press=".onMove($event, false, '?')" tooltip="Move Just Before Sibling..."/>
106
+ <m:Button enabled="{= %{STATUS} !== 'Out'}" icon="sap-icon://arrow-bottom"
107
+ press=".onMove($event, false, null)" tooltip="Move As Last Child Of..."/>
108
+ <m:Button enabled="{= %{STATUS} !== 'Out' &amp;&amp; %{@$ui5.node.level} > 1}"
109
+ icon="sap-icon://back-to-top" press=".onMakeRoot" tooltip="Make Root"/>
110
+ <m:Button enabled="{= %{STATUS} !== 'Out'}" icon="sap-icon://pull-down"
111
+ press=".onMakeRoot($event, null)" tooltip="Make Last Root"/>
112
+ <m:Button enabled="{= %{STATUS} !== 'Out'}" icon="sap-icon://delete"
113
+ press=".onDelete" tooltip="Delete"/>
114
+ </m:FlexBox>
111
115
  </template>
112
116
  </Column>
113
117
  </Table>
114
118
 
115
119
  <TreeTable id="treeTable" ariaLabelledBy="treeTitle"
116
- rows="{path : '/EMPLOYEES',
117
- parameters : {$count : false, $orderby : 'AGE', $$patchWithoutSideEffects : true},
118
- suspended : true}"
120
+ rows="{
121
+ path : '/EMPLOYEES',
122
+ parameters : {
123
+ $count : false,
124
+ $filter : 'STATUS ne \'Out\'',
125
+ $orderby : 'AGE',
126
+ $$patchWithoutSideEffects : true
127
+ },
128
+ suspended : true
129
+ }"
119
130
  selectionMode="None">
120
131
  <extension>
121
132
  <m:Toolbar design="Transparent" class="sapMTBHeader-CTX">
@@ -123,10 +134,13 @@
123
134
  <m:ToolbarSpacer/>
124
135
  <m:Button icon="sap-icon://create" press=".onCreateRootInTreeTable"
125
136
  tooltip="Create New Root"/>
137
+ <m:Button icon="sap-icon://hide" press=".onCreateRootInTreeTable($event, true)"
138
+ tooltip="Create New Root (filtered out)"/>
126
139
  <m:Button icon="sap-icon://synchronize" id="synchronizeTreeTable"
127
- press="onSynchronizeTreeTable" tooltip="SynchronizeTreeTable"/>
128
- <m:Button icon="sap-icon://refresh" press="onRefreshTreeTable"
129
- tooltip="Refresh, while keeping tree state"/>
140
+ press="onSynchronizeTreeTable" tooltip="Side effect"/>
141
+ <m:Button icon="sap-icon://response" press="onRefreshTreeTable" tooltip="Refresh"/>
142
+ <m:Button icon="sap-icon://refresh" press="onRefreshTreeTable($event, true)"
143
+ tooltip="Refresh (keeping tree state)"/>
130
144
  </m:Toolbar>
131
145
  </extension>
132
146
  <rowMode>
@@ -162,45 +176,38 @@
162
176
  <m:Text text="{AGE}" wrapping="false"/>
163
177
  </template>
164
178
  </Column>
165
- <Column width="4em">
166
- <template>
167
- <m:Button enabled="{= %{@$ui5.node.isExpanded} !== false}" icon="sap-icon://create"
168
- id="createInTreeTable" press=".onCreate" tooltip="Create New Child"/>
169
- </template>
170
- </Column>
171
- <Column width="4em">
172
- <template>
173
- <m:Button icon="sap-icon://move" press=".onMove($event, true)"
174
- tooltip="Move To Parent..."/>
175
- </template>
176
- </Column>
177
- <Column width="4em">
178
- <template>
179
- <m:Button icon="sap-icon://map" press=".onMove($event, true, '?')"
180
- tooltip="Move Just Before Sibling..."/>
181
- </template>
182
- </Column>
183
- <Column width="4em">
184
- <template>
185
- <m:Button icon="sap-icon://arrow-bottom" press=".onMove($event, true, null)"
186
- tooltip="Move As Last Child Of..."/>
187
- </template>
188
- </Column>
189
- <Column width="4em">
190
- <template>
191
- <m:Button enabled="{= %{@$ui5.node.level} > 1}" icon="sap-icon://back-to-top"
192
- press=".onMakeRoot" tooltip="Make Root"/>
193
- </template>
194
- </Column>
195
- <Column width="4em">
196
- <template>
197
- <m:Button icon="sap-icon://pull-down" press=".onMakeRoot($event, null)"
198
- tooltip="Make Last Root"/>
199
- </template>
200
- </Column>
201
- <Column width="4em">
202
- <template>
203
- <m:Button icon="sap-icon://delete" press=".onDelete" tooltip="Delete"/>
179
+ <Column>
180
+ <m:Label text="Filtered Out"/>
181
+ <template>
182
+ <m:CheckBox editable="false" selected="{= %{STATUS} === 'Out'}"/>
183
+ </template>
184
+ </Column>
185
+ <Column width="27em">
186
+ <template>
187
+ <m:FlexBox justifyContent="SpaceBetween">
188
+ <m:Button enabled="{= %{STATUS} !== 'Out' &amp;&amp; %{@$ui5.node.isExpanded} !== false}"
189
+ icon="sap-icon://create" id="createInTreeTable" press=".onCreate"
190
+ tooltip="Create New Child"/>
191
+ <m:Button enabled="{= %{STATUS} !== 'Out' &amp;&amp; %{@$ui5.node.isExpanded} !== false}"
192
+ icon="sap-icon://hide" press=".onCreate($event, true)"
193
+ tooltip="Create New Child (filtered out)"/>
194
+ <m:Button enabled="{= %{STATUS} !== 'Out'}" icon="sap-icon://up"
195
+ press=".onMoveUp" tooltip="Move Up"/>
196
+ <m:Button enabled="{= %{STATUS} !== 'Out'}" icon="sap-icon://down"
197
+ press=".onMoveDown" tooltip="Move Down"/>
198
+ <m:Button enabled="{= %{STATUS} !== 'Out'}" icon="sap-icon://move"
199
+ press=".onMove($event, true)" tooltip="Move To Parent..."/>
200
+ <m:Button enabled="{= %{STATUS} !== 'Out'}" icon="sap-icon://map"
201
+ press=".onMove($event, true, '?')" tooltip="Move Just Before Sibling..."/>
202
+ <m:Button enabled="{= %{STATUS} !== 'Out'}" icon="sap-icon://arrow-bottom"
203
+ press=".onMove($event, true, null)" tooltip="Move As Last Child Of..."/>
204
+ <m:Button enabled="{= %{STATUS} !== 'Out' &amp;&amp; %{@$ui5.node.level} > 1}"
205
+ icon="sap-icon://back-to-top" press=".onMakeRoot" tooltip="Make Root"/>
206
+ <m:Button enabled="{= %{STATUS} !== 'Out'}" icon="sap-icon://pull-down"
207
+ press=".onMakeRoot($event, null)" tooltip="Make Last Root"/>
208
+ <m:Button enabled="{= %{STATUS} !== 'Out'}" icon="sap-icon://delete"
209
+ press=".onDelete" tooltip="Delete"/>
210
+ </m:FlexBox>
204
211
  </template>
205
212
  </Column>
206
213
  </TreeTable>
@@ -215,7 +222,9 @@
215
222
 
216
223
  <m:FormattedText htmlText="&lt;em>Available URL parameters:&lt;/em>
217
224
  &lt;ul>
225
+ &lt;li> &lt;code>createInPlace&lt;/code> Either set or unset; default unset
218
226
  &lt;li> &lt;code>expandTo&lt;/code> Either * for &lt;em>expand all&lt;/em> or a number; default 3
227
+ &lt;li> &lt;code>firstVisibleRow&lt;/code> A number; default 0
219
228
  &lt;li> &lt;code>threshold&lt;/code> A number; default 0
220
229
  &lt;li> &lt;code>visibleRowCount&lt;/code> A number; default 5
221
230
  &lt;li> &lt;code>TreeTable&lt;/code> Y for yes, N for no; default is both tables"/>
@@ -168,9 +168,9 @@ sap.ui.define([
168
168
  Name : "Omega"
169
169
  }];
170
170
 
171
- let aAllNodes; // in preorder
172
- let mChildrenByParentId; // no entry for leaves!
173
- let mNodeById;
171
+ let aAllNodes; // in preorder, does not contain nodes that are filtered out
172
+ let mChildrenByParentId; // no entry for leaves! Does not contain nodes that are filtered out
173
+ let mNodeById; // contains all nodes incl. those filtered out
174
174
  let iRevision;
175
175
  let mRevisionOfAgeById;
176
176
 
@@ -186,6 +186,7 @@ sap.ui.define([
186
186
  mRevisionOfAgeById = {};
187
187
 
188
188
  aAllNodes.forEach((oNode) => {
189
+ oNode.STATUS = "";
189
190
  // oNode.DescendantCount = 0; // @see computeDescendantCount
190
191
  oNode.DistanceFromRoot = oNode.ID === "0"
191
192
  ? 0
@@ -279,7 +280,6 @@ sap.ui.define([
279
280
  const aSpliced = aAllNodes.splice(aAllNodes.indexOf(oNode), oNode.DescendantCount + 1);
280
281
  aAllNodes.splice(aAllNodes.indexOf(oNextSibling), 0, ...aSpliced);
281
282
  }
282
-
283
283
  // no response required
284
284
  }
285
285
 
@@ -309,8 +309,12 @@ sap.ui.define([
309
309
  if (oNode.MANAGER_ID) {
310
310
  const aChildren = mChildrenByParentId[oNode.MANAGER_ID];
311
311
  aChildren.splice(aChildren.indexOf(oNode), 1);
312
+ if (!aChildren.length) {
313
+ delete mChildrenByParentId[oNode.MANAGER_ID];
314
+ }
312
315
  adjustDescendantCount(oNode.MANAGER_ID, -(oNode.DescendantCount + 1));
313
316
  }
317
+ // no response required
314
318
  }
315
319
 
316
320
  /**
@@ -340,36 +344,63 @@ sap.ui.define([
340
344
  : Infinity;
341
345
  let aRows = topLevels(iLevels - 1, getExpandLevels()); // Note: already cloned
342
346
  if ("$filter" in mQueryOptions) {
343
- // ID%20eq%20'1'
344
- const aIDs = mQueryOptions.$filter.split("%20or%20")
345
- .map((sID_Predicate) => sID_Predicate.split("%20eq%20")[1].slice(1, -1));
346
- if (aIDs.length !== 1) {
347
- throw new Error("Unexpected ID filter length");
348
- }
349
- aRows = aRows.filter((oNode, i) => {
350
- if (oNode.ID === aIDs[0]) {
347
+ if (mQueryOptions.$filter.includes("LimitedRank")) {
348
+ // e.g. LimitedRank lt 5 and DistanceFromRoot lt 2
349
+ // e.g. LimitedRank gt 4 and DistanceFromRoot lt 2
350
+ const aFilterMatches = mQueryOptions.$filter.match(
351
+ /LimitedRank%20(gt|lt)%20(\d+)%20and%20DistanceFromRoot%20lt%20(\d+)/);
352
+ const bGreater = aFilterMatches[1] === "gt";
353
+ const iLimitedRank = parseInt(aFilterMatches[2]);
354
+ const iDistanceFromRoot = parseInt(aFilterMatches[3]);
355
+ aRows = aRows.filter((oNode, i) => {
351
356
  oNode.LimitedRank = "" + i; // Edm.Int64
352
- return true;
357
+ return (bGreater ? i > iLimitedRank : i < iLimitedRank)
358
+ && oNode.DistanceFromRoot < iDistanceFromRoot;
359
+ });
360
+ if (mQueryOptions.$orderby === "LimitedRank%20desc") {
361
+ aRows = aRows.reverse();
353
362
  }
354
- return false;
355
- });
363
+ } else { // ID%20eq%20'1'
364
+ const aIDs = mQueryOptions.$filter.split("%20or%20").map(
365
+ (sID_Predicate) => sID_Predicate.split("%20eq%20")[1].slice(1, -1));
366
+ aRows = aRows.filter((oNode, i) => {
367
+ oNode.LimitedRank = "" + i; // Edm.Int64
368
+ return aIDs.includes(oNode.ID);
369
+ });
370
+ }
356
371
  }
357
372
  selectCountSkipTop(aRows, mQueryOptions, oResponse);
358
373
  return;
359
374
  }
360
- // "EMPLOYEES?$apply=descendants($root/EMPLOYEES,OrgChart,ID"
361
- // + ",filter(ID%20eq%20'" + sParentId + "'),1)/orderby(AGE)"
362
- const sParentId = mQueryOptions.$apply.match(/,filter\(ID%20eq%20'([^']*)'\)/)[1];
363
- let aChildren = mChildrenByParentId[sParentId];
364
- if ("$filter" in mQueryOptions) {
365
- // not%20(ID%20eq%20'5.1.10'%20or%20ID%20eq%20'5.1.11')
366
- const aIDs = mQueryOptions.$filter
367
- .slice("not%20(".length, -")".length)
368
- .split("%20or%20")
369
- .map((sID_Predicate) => sID_Predicate.split("%20eq%20")[1].slice(1, -1));
370
- aChildren = aChildren.filter((oChild) => !aIDs.includes(oChild.ID));
375
+
376
+ if (mQueryOptions.$apply.includes("descendants")) {
377
+ // "EMPLOYEES?$apply=ancestors($root/EMPLOYEES,OrgChart,ID
378
+ // + ",filter(STATUS%20ne%20'Out'),keep%20start)"
379
+ // + "/descendants($root/EMPLOYEES,OrgChart,ID,filter(ID%20eq%20'" + sParentId
380
+ // + "'),1)/orderby(AGE)"
381
+ const sParentId = mQueryOptions.$apply.match(/,filter\(ID%20eq%20'([^']*)'\)/)[1];
382
+ let aChildren = mChildrenByParentId[sParentId];
383
+ if ("$filter" in mQueryOptions) {
384
+ const bNot = mQueryOptions.$filter.startsWith("not%20(");
385
+ if (bNot) {
386
+ // not%20(ID%20eq%20'5.1.10'%20or%20ID%20eq%20'5.1.11')
387
+ mQueryOptions.$filter
388
+ = mQueryOptions.$filter.slice("not%20(".length, -")".length);
389
+ }
390
+ const aIDs = mQueryOptions.$filter
391
+ .split("%20or%20")
392
+ .map((sID_Predicate) => sID_Predicate.split("%20eq%20")[1].slice(1, -1));
393
+ aChildren = aChildren.filter((oChild) => aIDs.includes(oChild.ID) !== bNot);
394
+ }
395
+ selectCountSkipTop(aChildren, mQueryOptions, oResponse);
396
+ return;
371
397
  }
372
- selectCountSkipTop(aChildren, mQueryOptions, oResponse);
398
+
399
+ // "$orderby=AGE&$select=ID,MANAGER_ID,Name,AGE"
400
+ // + "&$apply=ancestors($root/EMPLOYEES,OrgChart,ID,filter(ID%20eq%20'3'),1)"
401
+ const sChildId = mQueryOptions.$apply.match(/,filter\(ID%20eq%20'([^']*)'\)/)[1];
402
+ const sParentId = mNodeById[sChildId].MANAGER_ID;
403
+ selectCountSkipTop([mNodeById[sParentId]], mQueryOptions, oResponse);
373
404
  return;
374
405
  }
375
406
 
@@ -545,13 +576,14 @@ sap.ui.define([
545
576
  function isChildID(sChildID, sParentId) {
546
577
  return sChildID !== sParentId
547
578
  && (sParentId === "0"
548
- ? !sChildID.includes(".")
579
+ ? /^\d+$/.test(sChildID) // Note: letters denote other roots!
549
580
  : sChildID.startsWith(sParentId)
550
581
  && !sChildID.slice(sParentId.length + 1).includes("."));
551
582
  }
552
583
 
553
584
  // {"EMPLOYEE_2_MANAGER@odata.bind" : "EMPLOYEES('0')"}
554
585
  const oBody = JSON.parse(oRequest.requestBody);
586
+ const bFilteredOut = oBody.STATUS === "Out";
555
587
  const sParentId = oBody["EMPLOYEE_2_MANAGER@odata.bind"]
556
588
  ?.slice("EMPLOYEES('".length, -"')".length);
557
589
  const oParent = mNodeById[sParentId];
@@ -566,7 +598,8 @@ sap.ui.define([
566
598
  DistanceFromRoot : oParent ? oParent.DistanceFromRoot + 1 : 0,
567
599
  DrillState : "leaf",
568
600
  MANAGER_ID : sParentId ?? null,
569
- DescendantCount : 0
601
+ DescendantCount : 0,
602
+ STATUS : bFilteredOut ? "Out" : ""
570
603
  };
571
604
 
572
605
  if (sParentId) {
@@ -575,12 +608,11 @@ sap.ui.define([
575
608
  oNewChild.AGE = mChildrenByParentId[sParentId][0].AGE - 1;
576
609
  } else { // parent not a leaf anymore
577
610
  oParent.DrillState = "collapsed"; // @see #reset
578
- mChildrenByParentId[sParentId] = [];
579
611
  oNewChild.AGE = oParent.AGE - 1;
580
612
  }
581
613
 
582
614
  // use "largest" child ID which is hierarchical to parent
583
- const sLastChildID = aAllNodes
615
+ const sLastChildID = Object.values(mNodeById)
584
616
  .filter((oChild) => isChildID(oChild.ID, sParentId))
585
617
  .sort(compareByID)
586
618
  .at(-1)?.ID;
@@ -592,24 +624,37 @@ sap.ui.define([
592
624
  oNewChild.ID = sParentId + "." + (parseLastSegment(sLastChildID) + 1);
593
625
  }
594
626
  } else { // new root
595
- const iRootCount = aAllNodes.filter((oNode) => oNode.MANAGER_ID === null).length;
627
+ const iRootCount = Object.values(mNodeById)
628
+ .filter((oNode) => oNode.MANAGER_ID === null)
629
+ .length;
596
630
  oNewChild.AGE = 60 + iRootCount;
597
- oNewChild.ID = "0ABCDEFGHIJKLMNOPQRSTUVWXYZ"[iRootCount];
631
+ oNewChild.ID = "0ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"[iRootCount];
598
632
  }
599
633
 
600
634
  if (oNewChild.ID in mNodeById) {
601
635
  throw new Error("Illegal state: duplicate node ID " + oNewChild.ID);
602
636
  }
603
- aAllNodes.push(oNewChild); //TODO not good enough once we need "refresh"
604
637
  mNodeById[oNewChild.ID] = oNewChild;
605
638
  mRevisionOfAgeById[oNewChild.ID] = 0;
606
- if (sParentId) {
607
- // Note: server's insert position must not affect UI (until refresh!)
608
- mChildrenByParentId[sParentId].push(oNewChild);
609
- adjustDescendantCount(sParentId, +1);
639
+ if (!bFilteredOut) {
640
+ if (sParentId) {
641
+ // Note: server's insert position must not affect UI (until refresh!)
642
+ mChildrenByParentId[sParentId] ??= [];
643
+ mChildrenByParentId[sParentId].push(oNewChild);
644
+ adjustDescendantCount(sParentId, +1);
645
+ aAllNodes.splice(aAllNodes.indexOf(oParent) + oParent.DescendantCount, 0,
646
+ oNewChild);
647
+ } else {
648
+ aAllNodes.push(oNewChild);
649
+ }
610
650
  }
611
651
 
612
- oResponse.message = JSON.stringify(SandboxModel.update([oNewChild])[0]);
652
+ const oCopy = SandboxModel.update([oNewChild])[0];
653
+ // RAP would not respond w/ DescendantCount,DistanceFromRoot,DrillState!
654
+ delete oCopy.DescendantCount;
655
+ delete oCopy.DistanceFromRoot;
656
+ delete oCopy.DrillState;
657
+ oResponse.message = JSON.stringify(oCopy);
613
658
  }
614
659
 
615
660
  /**
@@ -642,7 +687,9 @@ sap.ui.define([
642
687
  function select(oNode) {
643
688
  const oResult = {};
644
689
  for (const sSelect of aSelect) {
645
- oResult[sSelect] = oNode[sSelect];
690
+ oResult[sSelect] = sSelect === "DescendantCount" || sSelect === "DistanceFromRoot"
691
+ ? "" + oNode[sSelect] // Edm.Int64
692
+ : oNode[sSelect];
646
693
  }
647
694
  return oResult;
648
695
  }
@@ -31,9 +31,10 @@ sap.ui.define([
31
31
  aCells = aRows[iRowIndex].getCells();
32
32
  if (oExpected === null) {
33
33
  aCells.forEach(function (oCell, i) {
34
- // Note: don't care about invisible icon in 2nd column here
35
- strictEqual(oCell.getText ? oCell.getText() : oCell.getValue(), "",
36
- "Row " + iRowIndex + ", cell " + i + " is empty");
34
+ if (oCell.getText || oCell.getValue) {
35
+ strictEqual(oCell.getText?.() ?? oCell.getValue(), "",
36
+ "Row " + iRowIndex + ", cell " + i + " is empty");
37
+ } // else: don't care about invisible icon in 2nd column here (or button column)
37
38
  });
38
39
  return;
39
40
  }
@@ -44,6 +44,24 @@ sap.ui.define([
44
44
  "sap.ui.core.sample.odata.v4.SalesOrders.Component");
45
45
  });
46
46
 
47
+ oModel.setHttpListener((oInterface) => {
48
+ const mHeaders = oInterface.responseHeaders;
49
+ Log.debug("HttpListener", JSON.stringify(mHeaders),
50
+ "sap.ui.core.sample.odata.v4.SalesOrders.Component");
51
+ const mNewHeaders = {};
52
+ if ("date" in mHeaders) {
53
+ mNewHeaders["X-Y-Z-myDate"] = mHeaders["date"];
54
+ }
55
+ if ("etag" in mHeaders) {
56
+ mNewHeaders["X-Y-Z-myETag"] = mHeaders["etag"];
57
+ }
58
+ try {
59
+ oModel.changeHttpHeaders(mNewHeaders);
60
+ } catch (e) {
61
+ // Ever tried. Ever failed. No matter.
62
+ }
63
+ });
64
+
47
65
  // the same model can be accessed via two names to allow for different binding contexts
48
66
  this.setModel(oModel, "headerContext");
49
67
  this.setModel(oModel, "parameterContext");
@@ -10,13 +10,7 @@ sap.ui.define([
10
10
 
11
11
  return {
12
12
  createRelative : function (Given, When, Then, sUIComponent) {
13
- var oDrillDownErrorLog = {
14
- component : "sap.ui.model.odata.v4.lib._Cache",
15
- level : Log.Level.ERROR,
16
- message :
17
- /Failed to drill-down into \('[0-9]*'\), invalid segment: \('[0-9]*'\)/
18
- },
19
- aExpectedLogs = [],
13
+ var aExpectedLogs = [],
20
14
  oReadSchedulesFailLog = {
21
15
  component : "sap.ui.model.odata.v4.ODataListBinding",
22
16
  level : Log.Level.ERROR,
@@ -180,7 +174,6 @@ sap.ui.define([
180
174
  When.onTheMainPage.pressConfirmSalesOrderButton();
181
175
  aExpectedLogs.push(oStrictModeFailLog);
182
176
  When.onTheMainPage.pressConfirmStrictModeButton();
183
- aExpectedLogs.push(oDrillDownErrorLog); // obsolete with CPOUI5ODATAV4-288
184
177
 
185
178
  // test refresh single row
186
179
  // preparation
@@ -70,7 +70,6 @@ sap.ui.define([
70
70
  var aContainedControls,
71
71
  oEntityType,
72
72
  aProperties = [],
73
- sPropertyName,
74
73
  oView = this.getView(),
75
74
  oItemsBinding = oControl.getBinding("items"),
76
75
  oBinding = oItemsBinding // list binding
@@ -127,7 +126,7 @@ sap.ui.define([
127
126
  enabled : !sPropertyName.includes("/") && !sPropertyName.startsWith("<Not")
128
127
  });
129
128
  });
130
- for (sPropertyName in oEntityType) {
129
+ for (const sPropertyName in oEntityType) {
131
130
  if (oEntityType[sPropertyName].$kind === "Property"
132
131
  && oEntityType[sPropertyName].$Type.startsWith("Edm.")) {
133
132
  if (!this.aDisplayedProperties.includes(sPropertyName)) {
@@ -4,7 +4,7 @@ metadata:
4
4
  type: application
5
5
  framework:
6
6
  name: OpenUI5
7
- version: "1.125.0" #MainVersion#
7
+ version: "1.126.1" #MainVersion#
8
8
  libraries:
9
9
  - name: sap.m
10
10
  - name: sap.ui.layout
@@ -4,7 +4,7 @@ metadata:
4
4
  type: application
5
5
  framework:
6
6
  name: OpenUI5
7
- version: "1.125.0" #MainVersion#
7
+ version: "1.126.1" #MainVersion#
8
8
  libraries:
9
9
  - name: sap.m
10
10
  - name: sap.ui.layout
@@ -4,7 +4,7 @@ metadata:
4
4
  type: application
5
5
  framework:
6
6
  name: OpenUI5
7
- version: "1.125.0" #MainVersion#
7
+ version: "1.126.1" #MainVersion#
8
8
  libraries:
9
9
  - name: sap.m
10
10
  - name: sap.ui.layout
@@ -4,7 +4,7 @@ metadata:
4
4
  type: application
5
5
  framework:
6
6
  name: OpenUI5
7
- version: "1.125.0" #MainVersion#
7
+ version: "1.126.1" #MainVersion#
8
8
  libraries:
9
9
  - name: sap.m
10
10
  - name: sap.ui.layout
@@ -4,7 +4,7 @@ metadata:
4
4
  type: application
5
5
  framework:
6
6
  name: OpenUI5
7
- version: "1.125.0" #MainVersion#
7
+ version: "1.126.1" #MainVersion#
8
8
  libraries:
9
9
  - name: sap.m
10
10
  - name: sap.ui.layout
@@ -4,7 +4,7 @@ metadata:
4
4
  type: application
5
5
  framework:
6
6
  name: OpenUI5
7
- version: "1.125.0" #MainVersion#
7
+ version: "1.126.1" #MainVersion#
8
8
  libraries:
9
9
  - name: sap.m
10
10
  - name: sap.ui.layout
@@ -4,7 +4,7 @@ metadata:
4
4
  type: application
5
5
  framework:
6
6
  name: OpenUI5
7
- version: "1.125.0" #MainVersion#
7
+ version: "1.126.1" #MainVersion#
8
8
  libraries:
9
9
  - name: sap.m
10
10
  - name: sap.ui.layout
@@ -4,7 +4,7 @@ metadata:
4
4
  type: application
5
5
  framework:
6
6
  name: OpenUI5
7
- version: "1.125.0" #MainVersion#
7
+ version: "1.126.1" #MainVersion#
8
8
  libraries:
9
9
  - name: sap.m
10
10
  - name: sap.ui.layout
@@ -4,7 +4,7 @@ metadata:
4
4
  type: application
5
5
  framework:
6
6
  name: OpenUI5
7
- version: "1.125.0" #MainVersion#
7
+ version: "1.126.1" #MainVersion#
8
8
  libraries:
9
9
  - name: sap.m
10
10
  - name: sap.ui.layout