@openui5/sap.ui.integration 1.143.1 → 1.145.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 (308) hide show
  1. package/REUSE.toml +40 -16
  2. package/THIRDPARTY.txt +22 -1
  3. package/package.json +6 -6
  4. package/src/sap/ui/integration/.library +2 -2
  5. package/src/sap/ui/integration/ActionDefinition.js +2 -2
  6. package/src/sap/ui/integration/Designtime.js +2 -2
  7. package/src/sap/ui/integration/Extension.js +2 -2
  8. package/src/sap/ui/integration/Host.js +2 -2
  9. package/src/sap/ui/integration/bindingFeatures/DateRange.js +1 -1
  10. package/src/sap/ui/integration/cards/AdaptiveContent.js +2 -2
  11. package/src/sap/ui/integration/cards/AnalyticalContent.js +86 -13
  12. package/src/sap/ui/integration/cards/AnalyticalContentRenderer.js +1 -1
  13. package/src/sap/ui/integration/cards/AnalyticsCloudContent.js +2 -2
  14. package/src/sap/ui/integration/cards/AnalyticsCloudContentRenderer.js +1 -1
  15. package/src/sap/ui/integration/cards/BaseContent.js +26 -5
  16. package/src/sap/ui/integration/cards/BaseContentRenderer.js +1 -1
  17. package/src/sap/ui/integration/cards/BaseListContent.js +2 -2
  18. package/src/sap/ui/integration/cards/BaseListContentRenderer.js +1 -1
  19. package/src/sap/ui/integration/cards/CalendarContent.js +2 -2
  20. package/src/sap/ui/integration/cards/CalendarContentRenderer.js +1 -1
  21. package/src/sap/ui/integration/cards/ComponentContent.js +2 -2
  22. package/src/sap/ui/integration/cards/ComponentContentRenderer.js +1 -1
  23. package/src/sap/ui/integration/cards/Footer.js +2 -2
  24. package/src/sap/ui/integration/cards/Header.js +2 -2
  25. package/src/sap/ui/integration/cards/ListContent.js +3 -3
  26. package/src/sap/ui/integration/cards/ListContentRenderer.js +1 -1
  27. package/src/sap/ui/integration/cards/NumericHeader.js +2 -2
  28. package/src/sap/ui/integration/cards/ObjectContent.js +68 -7
  29. package/src/sap/ui/integration/cards/ObjectContentRenderer.js +1 -1
  30. package/src/sap/ui/integration/cards/TableContent.js +6 -3
  31. package/src/sap/ui/integration/cards/TableContentRenderer.js +1 -1
  32. package/src/sap/ui/integration/cards/TimelineContent.js +2 -2
  33. package/src/sap/ui/integration/cards/TimelineContentRenderer.js +1 -1
  34. package/src/sap/ui/integration/cards/WebPageContent.js +2 -2
  35. package/src/sap/ui/integration/cards/WebPageContentRenderer.js +1 -1
  36. package/src/sap/ui/integration/cards/actions/BaseAction.js +1 -1
  37. package/src/sap/ui/integration/cards/actions/CardActions.js +24 -18
  38. package/src/sap/ui/integration/cards/actions/CustomAction.js +1 -1
  39. package/src/sap/ui/integration/cards/actions/DateChangeAction.js +1 -1
  40. package/src/sap/ui/integration/cards/actions/HideCardAction.js +1 -1
  41. package/src/sap/ui/integration/cards/actions/MonthChangeAction.js +1 -1
  42. package/src/sap/ui/integration/cards/actions/NavigationAction.js +1 -1
  43. package/src/sap/ui/integration/cards/actions/ShowCardAction.js +1 -1
  44. package/src/sap/ui/integration/cards/actions/SubmitAction.js +1 -1
  45. package/src/sap/ui/integration/cards/adaptivecards/elements/UI5InputChoiceSet.js +2 -2
  46. package/src/sap/ui/integration/cards/adaptivecards/elements/UI5InputDate.js +2 -2
  47. package/src/sap/ui/integration/cards/adaptivecards/elements/UI5InputNumber.js +2 -2
  48. package/src/sap/ui/integration/cards/adaptivecards/elements/UI5InputText.js +2 -2
  49. package/src/sap/ui/integration/cards/adaptivecards/elements/UI5InputTime.js +1 -1
  50. package/src/sap/ui/integration/cards/adaptivecards/elements/UI5InputToggle.js +2 -2
  51. package/src/sap/ui/integration/cards/adaptivecards/elements/hostConfig.js +1 -1
  52. package/src/sap/ui/integration/cards/adaptivecards/overwrites/ActionRender.js +1 -1
  53. package/src/sap/ui/integration/cards/adaptivecards/overwrites/inputsGeneralOverwrites.js +1 -1
  54. package/src/sap/ui/integration/cards/data/CsrfToken.js +1 -1
  55. package/src/sap/ui/integration/cards/filters/BaseFilter.js +2 -2
  56. package/src/sap/ui/integration/cards/filters/ComboBoxFilter.js +2 -2
  57. package/src/sap/ui/integration/cards/filters/DateRangeFilter.js +2 -2
  58. package/src/sap/ui/integration/cards/filters/FilterBar.js +2 -2
  59. package/src/sap/ui/integration/cards/filters/FilterBarFactory.js +2 -2
  60. package/src/sap/ui/integration/cards/filters/SearchFilter.js +2 -2
  61. package/src/sap/ui/integration/cards/filters/SelectFilter.js +2 -2
  62. package/src/sap/ui/integration/cards/list/MicrochartsResizeHelper.js +2 -2
  63. package/src/sap/ui/integration/controls/ActionsStrip.js +2 -2
  64. package/src/sap/ui/integration/controls/ActionsToolbar.js +3 -3
  65. package/src/sap/ui/integration/controls/ActionsToolbarRenderer.js +1 -1
  66. package/src/sap/ui/integration/controls/BlockingMessage.js +2 -2
  67. package/src/sap/ui/integration/controls/ComboBox.js +2 -2
  68. package/src/sap/ui/integration/controls/HeaderInfoSectionColumn.js +2 -2
  69. package/src/sap/ui/integration/controls/HeaderInfoSectionColumnRenderer.js +1 -1
  70. package/src/sap/ui/integration/controls/HeaderInfoSectionRow.js +2 -2
  71. package/src/sap/ui/integration/controls/HeaderInfoSectionRowRenderer.js +1 -1
  72. package/src/sap/ui/integration/controls/ImageWithOverlay.js +2 -2
  73. package/src/sap/ui/integration/controls/ImageWithOverlayRenderer.js +1 -1
  74. package/src/sap/ui/integration/controls/ListContentItem.js +2 -2
  75. package/src/sap/ui/integration/controls/ListContentItemRenderer.js +1 -1
  76. package/src/sap/ui/integration/controls/Microchart.js +2 -2
  77. package/src/sap/ui/integration/controls/MicrochartLegend.js +2 -2
  78. package/src/sap/ui/integration/controls/MicrochartLegendRenderer.js +1 -1
  79. package/src/sap/ui/integration/controls/MicrochartRenderer.js +1 -1
  80. package/src/sap/ui/integration/controls/ObjectStatus.js +3 -3
  81. package/src/sap/ui/integration/customElements/CustomElementBase.js +1 -1
  82. package/src/sap/ui/integration/customElements/CustomElementCard.js +1 -1
  83. package/src/sap/ui/integration/customElements/CustomElementCardEditor.js +1 -1
  84. package/src/sap/ui/integration/customElements/CustomElementEditor.js +1 -1
  85. package/src/sap/ui/integration/delegate/OverflowHandler.js +2 -2
  86. package/src/sap/ui/integration/delegate/Paginator.js +18 -16
  87. package/src/sap/ui/integration/delegate/PreventKeyboardScrolling.js +2 -2
  88. package/src/sap/ui/integration/designtime/baseEditor/BaseEditor.js +20 -17
  89. package/src/sap/ui/integration/designtime/baseEditor/PropertyEditor.js +2 -2
  90. package/src/sap/ui/integration/designtime/baseEditor/PropertyEditors.js +10 -7
  91. package/src/sap/ui/integration/designtime/baseEditor/layout/Form.js +1 -1
  92. package/src/sap/ui/integration/designtime/baseEditor/propertyEditor/BasePropertyEditor.js +2 -2
  93. package/src/sap/ui/integration/designtime/baseEditor/propertyEditor/PropertyEditorFactory.js +2 -2
  94. package/src/sap/ui/integration/designtime/baseEditor/propertyEditor/arrayEditor/ArrayEditor.js +2 -2
  95. package/src/sap/ui/integration/designtime/baseEditor/propertyEditor/booleanEditor/BooleanEditor.js +2 -2
  96. package/src/sap/ui/integration/designtime/baseEditor/propertyEditor/codeEditor/CodeEditor.fragment.xml +0 -1
  97. package/src/sap/ui/integration/designtime/baseEditor/propertyEditor/codeEditor/CodeEditor.js +2 -2
  98. package/src/sap/ui/integration/designtime/baseEditor/propertyEditor/dateEditor/DateEditor.js +2 -2
  99. package/src/sap/ui/integration/designtime/baseEditor/propertyEditor/dateTimeEditor/DateTimeEditor.js +2 -2
  100. package/src/sap/ui/integration/designtime/baseEditor/propertyEditor/enumStringEditor/EnumStringEditor.js +2 -2
  101. package/src/sap/ui/integration/designtime/baseEditor/propertyEditor/groupEditor/GroupEditor.js +2 -2
  102. package/src/sap/ui/integration/designtime/baseEditor/propertyEditor/iconEditor/IconEditor.js +2 -2
  103. package/src/sap/ui/integration/designtime/baseEditor/propertyEditor/iconEditor/IsInIconPool.validator.js +2 -2
  104. package/src/sap/ui/integration/designtime/baseEditor/propertyEditor/integerEditor/IntegerEditor.js +2 -2
  105. package/src/sap/ui/integration/designtime/baseEditor/propertyEditor/jsonEditor/JsonEditor.js +2 -2
  106. package/src/sap/ui/integration/designtime/baseEditor/propertyEditor/listEditor/ListEditor.js +2 -2
  107. package/src/sap/ui/integration/designtime/baseEditor/propertyEditor/mapEditor/MapEditor.js +2 -2
  108. package/src/sap/ui/integration/designtime/baseEditor/propertyEditor/multiSelectEditor/MultiSelectEditor.js +2 -2
  109. package/src/sap/ui/integration/designtime/baseEditor/propertyEditor/numberEditor/NumberEditor.js +2 -2
  110. package/src/sap/ui/integration/designtime/baseEditor/propertyEditor/objectArrayEditor/ObjectArrayEditor.js +2 -2
  111. package/src/sap/ui/integration/designtime/baseEditor/propertyEditor/selectEditor/SelectEditor.js +2 -2
  112. package/src/sap/ui/integration/designtime/baseEditor/propertyEditor/separatorEditor/SeparatorEditor.js +2 -2
  113. package/src/sap/ui/integration/designtime/baseEditor/propertyEditor/stringEditor/StringEditor.js +2 -2
  114. package/src/sap/ui/integration/designtime/baseEditor/propertyEditor/textAreaEditor/TextAreaEditor.js +2 -2
  115. package/src/sap/ui/integration/designtime/baseEditor/util/BaseDefaultValidatorModules.js +1 -1
  116. package/src/sap/ui/integration/designtime/baseEditor/util/EvalUtils.js +1 -1
  117. package/src/sap/ui/integration/designtime/baseEditor/util/StylesheetManager.js +1 -1
  118. package/src/sap/ui/integration/designtime/baseEditor/util/binding/ObjectBinding.js +2 -2
  119. package/src/sap/ui/integration/designtime/baseEditor/util/binding/resolveBinding.js +1 -1
  120. package/src/sap/ui/integration/designtime/baseEditor/util/cleanupDesigntimeMetadata.js +1 -1
  121. package/src/sap/ui/integration/designtime/baseEditor/util/createPromise.js +1 -1
  122. package/src/sap/ui/integration/designtime/baseEditor/util/escapeParameter.js +1 -1
  123. package/src/sap/ui/integration/designtime/baseEditor/util/findClosestInstance.js +1 -1
  124. package/src/sap/ui/integration/designtime/baseEditor/util/hasTag.js +1 -1
  125. package/src/sap/ui/integration/designtime/baseEditor/util/isTemplate.js +1 -1
  126. package/src/sap/ui/integration/designtime/baseEditor/util/isValidBindingString.js +1 -1
  127. package/src/sap/ui/integration/designtime/baseEditor/util/unset.js +2 -2
  128. package/src/sap/ui/integration/designtime/baseEditor/validator/IsBoolean.js +2 -2
  129. package/src/sap/ui/integration/designtime/baseEditor/validator/IsDate.js +2 -2
  130. package/src/sap/ui/integration/designtime/baseEditor/validator/IsInteger.js +2 -2
  131. package/src/sap/ui/integration/designtime/baseEditor/validator/IsNumber.js +2 -2
  132. package/src/sap/ui/integration/designtime/baseEditor/validator/IsPatternMatch.js +1 -1
  133. package/src/sap/ui/integration/designtime/baseEditor/validator/IsSelectedKey.js +2 -2
  134. package/src/sap/ui/integration/designtime/baseEditor/validator/IsStringList.js +2 -2
  135. package/src/sap/ui/integration/designtime/baseEditor/validator/IsUniqueKey.js +2 -2
  136. package/src/sap/ui/integration/designtime/baseEditor/validator/IsUniqueList.js +2 -2
  137. package/src/sap/ui/integration/designtime/baseEditor/validator/IsValidBinding.js +2 -2
  138. package/src/sap/ui/integration/designtime/baseEditor/validator/MaxLength.js +2 -2
  139. package/src/sap/ui/integration/designtime/baseEditor/validator/NotABinding.js +2 -2
  140. package/src/sap/ui/integration/designtime/baseEditor/validator/ValidatorRegistry.js +2 -2
  141. package/src/sap/ui/integration/designtime/cardEditor/BASEditor.js +1 -1
  142. package/src/sap/ui/integration/designtime/cardEditor/CardEditor.js +1 -1
  143. package/src/sap/ui/integration/designtime/cardEditor/PropertyEditor.js +1 -1
  144. package/src/sap/ui/integration/designtime/cardEditor/PropertyEditors.js +1 -1
  145. package/src/sap/ui/integration/designtime/cardEditor/config/AppConfig.js +1 -1
  146. package/src/sap/ui/integration/designtime/cardEditor/config/FooterConfig.js +1 -1
  147. package/src/sap/ui/integration/designtime/cardEditor/config/HeaderConfig.js +1 -1
  148. package/src/sap/ui/integration/designtime/cardEditor/config/ListCardConfig.js +1 -1
  149. package/src/sap/ui/integration/designtime/cardEditor/config/ObjectCardConfig.js +1 -1
  150. package/src/sap/ui/integration/designtime/cardEditor/config/TableCardConfig.js +1 -1
  151. package/src/sap/ui/integration/designtime/cardEditor/config/generateActionConfig.js +1 -1
  152. package/src/sap/ui/integration/designtime/cardEditor/config/generateDataConfig.js +1 -1
  153. package/src/sap/ui/integration/designtime/cardEditor/config/generateFooterActionsStripConfig.js +1 -1
  154. package/src/sap/ui/integration/designtime/cardEditor/config/index.js +1 -1
  155. package/src/sap/ui/integration/designtime/cardEditor/i18n/i18n_fr.properties +2 -2
  156. package/src/sap/ui/integration/designtime/cardEditor/propertyEditor/complexMapEditor/ComplexMapEditor.js +2 -2
  157. package/src/sap/ui/integration/designtime/cardEditor/propertyEditor/destinationsEditor/DestinationsEditor.js +2 -2
  158. package/src/sap/ui/integration/designtime/cardEditor/propertyEditor/filtersEditor/FiltersEditor.js +2 -2
  159. package/src/sap/ui/integration/designtime/cardEditor/propertyEditor/iconEditor/IconEditor.js +2 -2
  160. package/src/sap/ui/integration/designtime/cardEditor/propertyEditor/parametersEditor/ParametersEditor.js +2 -2
  161. package/src/sap/ui/integration/designtime/cardEditor/util/CommonPatterns.js +1 -1
  162. package/src/sap/ui/integration/designtime/cardEditor/validator/IsPatternMatchList.js +1 -1
  163. package/src/sap/ui/integration/designtime/editor/Card.js +2 -2
  164. package/src/sap/ui/integration/designtime/editor/CardEditor.js +78 -22
  165. package/src/sap/ui/integration/designtime/editor/CardPreview.js +18 -11
  166. package/src/sap/ui/integration/designtime/editor/CardRenderer.js +1 -1
  167. package/src/sap/ui/integration/editor/Constants.js +1 -1
  168. package/src/sap/ui/integration/editor/Editor.js +630 -169
  169. package/src/sap/ui/integration/editor/EditorResourceBundles.js +2 -2
  170. package/src/sap/ui/integration/editor/Extension.js +2 -2
  171. package/src/sap/ui/integration/editor/Manifest.js +2 -2
  172. package/src/sap/ui/integration/editor/Merger.js +1 -1
  173. package/src/sap/ui/integration/editor/Settings.js +7 -7
  174. package/src/sap/ui/integration/editor/css/Editor.css +28 -0
  175. package/src/sap/ui/integration/editor/fields/BaseField.js +12 -12
  176. package/src/sap/ui/integration/editor/fields/BooleanField.js +2 -2
  177. package/src/sap/ui/integration/editor/fields/DateField.js +2 -2
  178. package/src/sap/ui/integration/editor/fields/DateTimeField.js +2 -2
  179. package/src/sap/ui/integration/editor/fields/DestinationField.js +2 -2
  180. package/src/sap/ui/integration/editor/fields/GroupField.js +19 -5
  181. package/src/sap/ui/integration/editor/fields/IntegerField.js +2 -2
  182. package/src/sap/ui/integration/editor/fields/NumberField.js +2 -2
  183. package/src/sap/ui/integration/editor/fields/ObjectField.js +26 -11
  184. package/src/sap/ui/integration/editor/fields/ObjectListField.js +2 -2
  185. package/src/sap/ui/integration/editor/fields/StringField.js +22 -15
  186. package/src/sap/ui/integration/editor/fields/StringListField.js +2 -2
  187. package/src/sap/ui/integration/editor/fields/fragment/Controller.js +3 -3
  188. package/src/sap/ui/integration/editor/fields/viz/ColorSelect.js +2 -2
  189. package/src/sap/ui/integration/editor/fields/viz/IconSelect.js +2 -2
  190. package/src/sap/ui/integration/editor/fields/viz/ImageSelect.js +2 -2
  191. package/src/sap/ui/integration/editor/fields/viz/ShapeSelect.js +2 -2
  192. package/src/sap/ui/integration/editor/fields/viz/VizBase.js +2 -2
  193. package/src/sap/ui/integration/extensions/OAuth3LO.js +2 -2
  194. package/src/sap/ui/integration/formatters/DateTimeFormatter.js +1 -1
  195. package/src/sap/ui/integration/formatters/IconFormatter.js +1 -1
  196. package/src/sap/ui/integration/formatters/InitialsFormatter.js +1 -1
  197. package/src/sap/ui/integration/formatters/NumberFormatter.js +1 -1
  198. package/src/sap/ui/integration/formatters/TextFormatter.js +1 -1
  199. package/src/sap/ui/integration/library-bootstrap.js +1 -1
  200. package/src/sap/ui/integration/library.js +3 -3
  201. package/src/sap/ui/integration/messagebundle.properties +3 -0
  202. package/src/sap/ui/integration/messagebundle_ar.properties +2 -0
  203. package/src/sap/ui/integration/messagebundle_bg.properties +2 -0
  204. package/src/sap/ui/integration/messagebundle_ca.properties +2 -0
  205. package/src/sap/ui/integration/messagebundle_cnr.properties +3 -1
  206. package/src/sap/ui/integration/messagebundle_cs.properties +2 -0
  207. package/src/sap/ui/integration/messagebundle_cy.properties +2 -0
  208. package/src/sap/ui/integration/messagebundle_da.properties +2 -0
  209. package/src/sap/ui/integration/messagebundle_de.properties +2 -0
  210. package/src/sap/ui/integration/messagebundle_el.properties +2 -0
  211. package/src/sap/ui/integration/messagebundle_en.properties +2 -0
  212. package/src/sap/ui/integration/messagebundle_en_GB.properties +2 -0
  213. package/src/sap/ui/integration/messagebundle_en_US_saprigi.properties +2 -0
  214. package/src/sap/ui/integration/messagebundle_es.properties +2 -0
  215. package/src/sap/ui/integration/messagebundle_es_MX.properties +2 -0
  216. package/src/sap/ui/integration/messagebundle_et.properties +2 -0
  217. package/src/sap/ui/integration/messagebundle_fi.properties +2 -0
  218. package/src/sap/ui/integration/messagebundle_fr.properties +2 -0
  219. package/src/sap/ui/integration/messagebundle_fr_CA.properties +2 -0
  220. package/src/sap/ui/integration/messagebundle_hi.properties +2 -0
  221. package/src/sap/ui/integration/messagebundle_hr.properties +2 -0
  222. package/src/sap/ui/integration/messagebundle_hu.properties +2 -0
  223. package/src/sap/ui/integration/messagebundle_id.properties +3 -1
  224. package/src/sap/ui/integration/messagebundle_it.properties +2 -0
  225. package/src/sap/ui/integration/messagebundle_iw.properties +2 -0
  226. package/src/sap/ui/integration/messagebundle_ja.properties +2 -0
  227. package/src/sap/ui/integration/messagebundle_kk.properties +2 -0
  228. package/src/sap/ui/integration/messagebundle_ko.properties +2 -0
  229. package/src/sap/ui/integration/messagebundle_lt.properties +2 -0
  230. package/src/sap/ui/integration/messagebundle_lv.properties +2 -0
  231. package/src/sap/ui/integration/messagebundle_mk.properties +2 -0
  232. package/src/sap/ui/integration/messagebundle_ms.properties +2 -0
  233. package/src/sap/ui/integration/messagebundle_nl.properties +2 -0
  234. package/src/sap/ui/integration/messagebundle_no.properties +2 -0
  235. package/src/sap/ui/integration/messagebundle_pl.properties +2 -0
  236. package/src/sap/ui/integration/messagebundle_pt.properties +2 -0
  237. package/src/sap/ui/integration/messagebundle_pt_PT.properties +2 -0
  238. package/src/sap/ui/integration/messagebundle_ro.properties +2 -0
  239. package/src/sap/ui/integration/messagebundle_ru.properties +2 -0
  240. package/src/sap/ui/integration/messagebundle_sh.properties +3 -1
  241. package/src/sap/ui/integration/messagebundle_sk.properties +2 -0
  242. package/src/sap/ui/integration/messagebundle_sl.properties +2 -0
  243. package/src/sap/ui/integration/messagebundle_sr.properties +3 -1
  244. package/src/sap/ui/integration/messagebundle_sv.properties +2 -0
  245. package/src/sap/ui/integration/messagebundle_th.properties +2 -0
  246. package/src/sap/ui/integration/messagebundle_tr.properties +2 -0
  247. package/src/sap/ui/integration/messagebundle_uk.properties +2 -0
  248. package/src/sap/ui/integration/messagebundle_vi.properties +2 -0
  249. package/src/sap/ui/integration/messagebundle_zh_CN.properties +2 -0
  250. package/src/sap/ui/integration/messagebundle_zh_TW.properties +2 -0
  251. package/src/sap/ui/integration/model/ContextModel.js +2 -2
  252. package/src/sap/ui/integration/model/ObservableModel.js +2 -2
  253. package/src/sap/ui/integration/sap-ui-integration-config.js +1 -1
  254. package/src/sap/ui/integration/sap-ui-integration-define-nojQuery.js +1 -1
  255. package/src/sap/ui/integration/schemas/sap-card.json +38 -1
  256. package/src/sap/ui/integration/services/Data.js +1 -1
  257. package/src/sap/ui/integration/services/Navigation.js +1 -1
  258. package/src/sap/ui/integration/services/Service.js +1 -1
  259. package/src/sap/ui/integration/themes/base/ListContentItem.less +7 -7
  260. package/src/sap/ui/integration/themes/base/ObjectContent.less +4 -0
  261. package/src/sap/ui/integration/themes/base/library.source.less +1 -1
  262. package/src/sap/ui/integration/themes/sap_hcb/library.source.less +1 -1
  263. package/src/sap/ui/integration/types/HeaderInfoSectionJustifyContent.js +1 -1
  264. package/src/sap/ui/integration/util/AnalyticsCloudHelper.js +2 -2
  265. package/src/sap/ui/integration/util/BaseFactory.js +2 -2
  266. package/src/sap/ui/integration/util/BindingHelper.js +2 -2
  267. package/src/sap/ui/integration/util/BindingResolver.js +2 -2
  268. package/src/sap/ui/integration/util/CacheAndRequestDataProvider.js +1 -1
  269. package/src/sap/ui/integration/util/CardMerger.js +1 -1
  270. package/src/sap/ui/integration/util/CardObserver.js +2 -2
  271. package/src/sap/ui/integration/util/ComboBoxHelper.js +2 -2
  272. package/src/sap/ui/integration/util/ContentFactory.js +2 -2
  273. package/src/sap/ui/integration/util/CsrfTokenHandler.js +2 -2
  274. package/src/sap/ui/integration/util/DataProvider.js +2 -2
  275. package/src/sap/ui/integration/util/DataProviderFactory.js +2 -2
  276. package/src/sap/ui/integration/util/DateRangeHelper.js +15 -6
  277. package/src/sap/ui/integration/util/Destinations.js +2 -2
  278. package/src/sap/ui/integration/util/DisplayVariants.js +2 -2
  279. package/src/sap/ui/integration/util/Duration.js +1 -1
  280. package/src/sap/ui/integration/util/ErrorHandler.js +2 -2
  281. package/src/sap/ui/integration/util/ExtensionDataProvider.js +2 -2
  282. package/src/sap/ui/integration/util/Form.js +50 -21
  283. package/src/sap/ui/integration/util/HeaderFactory.js +2 -2
  284. package/src/sap/ui/integration/util/JSONBindingHelper.js +2 -2
  285. package/src/sap/ui/integration/util/LoadingProvider.js +2 -2
  286. package/src/sap/ui/integration/util/Manifest.js +2 -2
  287. package/src/sap/ui/integration/util/ManifestResolver.js +1 -1
  288. package/src/sap/ui/integration/util/Measurement.js +1 -1
  289. package/src/sap/ui/integration/util/OAuth3LOHelper.js +2 -2
  290. package/src/sap/ui/integration/util/ObjectStatusFactory.js +2 -2
  291. package/src/sap/ui/integration/util/ParameterMap.js +1 -1
  292. package/src/sap/ui/integration/util/RadioButtonHelper.js +71 -0
  293. package/src/sap/ui/integration/util/RequestDataProvider.js +2 -2
  294. package/src/sap/ui/integration/util/ServiceDataProvider.js +2 -2
  295. package/src/sap/ui/integration/util/ServiceManager.js +2 -2
  296. package/src/sap/ui/integration/util/SkeletonCard.js +2 -2
  297. package/src/sap/ui/integration/util/SorterHelper.js +2 -2
  298. package/src/sap/ui/integration/util/Utils.js +3 -3
  299. package/src/sap/ui/integration/util/Validators.js +8 -2
  300. package/src/sap/ui/integration/util/loadCardEditor.js +1 -1
  301. package/src/sap/ui/integration/util/openCardDialog.js +1 -1
  302. package/src/sap/ui/integration/util/openCardShowMore.js +1 -1
  303. package/src/sap/ui/integration/util/subtitleToSubTitle.js +1 -1
  304. package/src/sap/ui/integration/widgets/Card.js +25 -10
  305. package/src/sap/ui/integration/widgets/CardRenderer.js +1 -1
  306. package/src/sap-ui-integration-card-editor.js +1 -1
  307. package/src/sap-ui-integration-editor.js +1 -1
  308. package/src/sap-ui-integration.js +2 -2
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * OpenUI5
3
- * (c) Copyright 2025 SAP SE or an SAP affiliate company.
3
+ * (c) Copyright 2026 SAP SE or an SAP affiliate company.
4
4
  * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
5
  */
6
6
 
@@ -45,7 +45,10 @@ sap.ui.define([
45
45
  "./Constants",
46
46
  "sap/m/FlexItemData",
47
47
  "sap/m/FlexBox",
48
- "sap/m/Button"
48
+ "sap/m/Button",
49
+ "sap/ui/core/UIArea",
50
+ "sap/m/Tree",
51
+ "sap/m/StandardTreeItem"
49
52
  ], function(
50
53
  Localization,
51
54
  Control,
@@ -81,13 +84,16 @@ sap.ui.define([
81
84
  MessageStrip,
82
85
  Separator,
83
86
  ResourceModel,
84
- EditorManifest,
87
+ Manifest,
85
88
  Merger,
86
89
  Settings,
87
90
  Constants,
88
91
  FlexItemData,
89
92
  FlexBox,
90
- Button
93
+ Button,
94
+ UIArea,
95
+ Tree,
96
+ StandardTreeItem
91
97
  ) {
92
98
  "use strict";
93
99
 
@@ -135,7 +141,7 @@ sap.ui.define([
135
141
  * @extends sap.ui.core.Control
136
142
  *
137
143
  * @author SAP SE
138
- * @version 1.143.1
144
+ * @version 1.145.0
139
145
  * @constructor
140
146
  * @since 1.94
141
147
  * @private
@@ -260,6 +266,63 @@ sap.ui.define([
260
266
  oRm.class("sapUiIntegrationEditor");
261
267
  oRm.openEnd();
262
268
  }
269
+ // render the Child editors tree
270
+ var oRef = oControl.getId() + "_childsTreeContainer";
271
+ var bChildTreeRendered;
272
+ var renderChildsTreePromise;
273
+ if (oControl.isFieldReady() && oControl._oChildTree) {
274
+ bChildTreeRendered = false;
275
+ // render the container for Child editors tree
276
+ oRm.openStart("div", oRef);
277
+ oRm.class("childsTreeContainer");
278
+ oRm.openEnd();
279
+ oRm.close("div");
280
+
281
+ // if the container is not rendered in body immediately by above codes, wait for it to be created
282
+ var waitForContainer = new Promise((resolve) => {
283
+ const observer = new MutationObserver((mutations, obs) => {
284
+ const container = document.getElementById(oRef);
285
+ if (container) {
286
+ obs.disconnect();
287
+ resolve(container);
288
+ }
289
+ });
290
+ observer.observe(document.body, {
291
+ childList: true,
292
+ subtree: true
293
+ });
294
+ });
295
+
296
+ // wait for the container to be created and then render the nodes tree
297
+ renderChildsTreePromise = waitForContainer.then((container) => {
298
+ // create a UIArea for the container and render the tree into it
299
+ var oUIArea = UIArea.create(oRef);
300
+ oUIArea.addContent(oControl._oChildTree);
301
+ // focus the selected item in the nodes tree
302
+ var expandTreeItemPromise = new Promise(function (resolve, reject) {
303
+ setTimeout(function () {
304
+ if (oControl._oChildTree._itemIndex) {
305
+ var oItem = oControl._oChildTree.getItems().find(function(item) {
306
+ return item.getBindingContext().getPath() === oControl._oChildTree._itemIndex;
307
+ });
308
+ if (oItem) {
309
+ oItem.focus();
310
+ if (!oItem.isLeaf() && !oItem.getExpanded()) {
311
+ oControl._oChildTree.expand(oControl._oChildTree.indexOfItem(oItem));
312
+ }
313
+ }
314
+ } else {
315
+ oControl._oChildTree.expand(0);
316
+ }
317
+ bChildTreeRendered = true;
318
+ setTimeout(function () {
319
+ resolve({});
320
+ }, 100);
321
+ }, 100);
322
+ });
323
+ return expandTreeItemPromise;
324
+ });
325
+ }
263
326
  if (oControl.isFieldReady()) {
264
327
  //surrounding div tag for form <div class="sapUiIntegrationEditorForm"
265
328
  oRm.openStart("div");
@@ -870,9 +933,27 @@ sap.ui.define([
870
933
  oControl._aFieldDataReadyPromise = [];
871
934
  // check ready status again since this is in async promise
872
935
  if (!oControl.isReady()) {
936
+ if (bChildTreeRendered === false && renderChildsTreePromise) {
937
+ renderChildsTreePromise.then(function() {
938
+ // add a timeout to make sure all UI updates are done before firing ready
939
+ setTimeout(function () {
940
+ oControl._ready = true;
941
+ oControl.fireReady();
942
+ }, 200);
943
+ });
944
+ } else {
945
+ oControl._ready = true;
946
+ oControl.fireReady();
947
+ }
948
+ }
949
+ });
950
+ } else if (bChildTreeRendered === false && renderChildsTreePromise) {
951
+ renderChildsTreePromise.then(function() {
952
+ // add a timeout to make sure all UI updates are done before firing ready
953
+ setTimeout(function () {
873
954
  oControl._ready = true;
874
955
  oControl.fireReady();
875
- }
956
+ }, 200);
876
957
  });
877
958
  } else {
878
959
  oControl._ready = true;
@@ -896,8 +977,9 @@ sap.ui.define([
896
977
  this._aFieldReadyPromise = [];
897
978
  this._aFieldDataReadyPromise = [];
898
979
  this._oResourceBundle = Library.getResourceBundleFor("sap.ui.integration", Utils._language);
899
- this._appliedLayerManifestChanges = [];
900
- this._currentLayerManifestChanges = {};
980
+ this._aAppliedLayerChanges = [];
981
+ this._oBeforeLayerChange = {};
982
+ this._oCurrentLayerChange = {};
901
983
  this._mDestinationDataProviders = {};
902
984
  var oMessageStrip = new MessageStrip(this.getId() + MessageStripId, {
903
985
  showIcon: false
@@ -913,7 +995,7 @@ sap.ui.define([
913
995
  * @experimental since 1.94
914
996
  * @public
915
997
  * @author SAP SE
916
- * @version 1.143.1
998
+ * @version 1.145.0
917
999
  * @borrows sap.ui.integration.editor.Editor#getParameters as getParameters
918
1000
  * @borrows sap.ui.integration.editor.Editor#resolveDestination as resolveDestination
919
1001
  * @borrows sap.ui.integration.editor.Editor#request as request
@@ -933,7 +1015,7 @@ sap.ui.define([
933
1015
  return null;
934
1016
  }
935
1017
 
936
- var oParams = this._oEditorManifest.getProcessedParameters(),
1018
+ var oParams = this._oManifest.getProcessedParameters(),
937
1019
  oResultParams = {},
938
1020
  sKey;
939
1021
 
@@ -1012,6 +1094,7 @@ sap.ui.define([
1012
1094
  };
1013
1095
 
1014
1096
  Editor.prototype.setJson = function (vIdOrSettings, bSuppress) {
1097
+ this._vIdOrSettings = deepClone(vIdOrSettings, 500);
1015
1098
  this._fieldReady = false;
1016
1099
  this._ready = false;
1017
1100
  if (deepEqual(vIdOrSettings, this._preIdOrSettings)) {
@@ -1029,10 +1112,12 @@ sap.ui.define([
1029
1112
  if (vIdOrSettings.manifestChanges) {
1030
1113
  //map translations of unmatch languages
1031
1114
  Utils.mapLanguagesInManifestChanges(vIdOrSettings.manifestChanges);
1032
- //remove the changes from the current layer
1115
+ //filter the child changes from the current layer
1116
+ this._filterChildManifestChanges(vIdOrSettings);
1117
+ //filter the changes from the current layer
1033
1118
  this._filterManifestChangesByLayer(vIdOrSettings);
1034
1119
  }
1035
- if (this._manifestModel) {
1120
+ if (this._oManifestModel) {
1036
1121
  //already created
1037
1122
  return;
1038
1123
  }
@@ -1045,7 +1130,7 @@ sap.ui.define([
1045
1130
  if (vIdOrSettings.baseUrl) {
1046
1131
  this.setProperty("baseUrl", vIdOrSettings.baseUrl);
1047
1132
  }
1048
- this._appliedLayerManifestChanges = vIdOrSettings.manifestChanges;
1133
+ this._aAppliedLayerChanges = vIdOrSettings.manifestChanges;
1049
1134
 
1050
1135
  this.createManifest(vIdOrSettings, bSuppress);
1051
1136
  }
@@ -1062,28 +1147,28 @@ sap.ui.define([
1062
1147
  vManifest = null;
1063
1148
  }
1064
1149
 
1065
- if (this._oEditorManifest) {
1066
- this._oEditorManifest.destroy();
1150
+ if (this._oManifest) {
1151
+ this._oManifest.destroy();
1067
1152
  }
1068
1153
  this.destroyAggregation("_extension");
1069
1154
  var iCurrentModeIndex = Merger.layers[this.getMode()];
1070
1155
 
1071
- this._oEditorManifest = new EditorManifest(this.getSection(), vManifest, sBaseUrl, vIdOrSettings.manifestChanges);
1072
- this._oEditorManifest
1156
+ this._oManifest = new Manifest(this.getSection(), vManifest, sBaseUrl, vIdOrSettings.manifestChanges);
1157
+ this._oManifest
1073
1158
  .load(mOptions)
1074
1159
  .then(async function () {
1075
1160
  this._registerManifestModulePath();
1076
- this._oInitialManifestModel = new JSONModel(this._oEditorManifest._oInitialJson);
1077
- this.setProperty("json", this._oEditorManifest._oInitialJson, bSuppress);
1078
- var oManifestJson = this._oEditorManifest.oJson;
1079
- var _beforeCurrentLayer = merge({}, oManifestJson);
1080
- this._beforeManifestModel = new JSONModel(_beforeCurrentLayer);
1081
- if (iCurrentModeIndex < Merger.layers[Constants.EDITOR_MODE.TRANSLATION] && this._currentLayerManifestChanges) {
1161
+ this._oInitialManifestModel = new JSONModel(this._oManifest._oInitialJson);
1162
+ this.setProperty("json", this._oManifest._oInitialJson, bSuppress);
1163
+ var oManifestJson = this._oManifest.oJson;
1164
+ var oBeforeLayerManifestJson = merge({}, oManifestJson);
1165
+ this._oBeforeLayerManifestModel = new JSONModel(oBeforeLayerManifestJson);
1166
+ if (iCurrentModeIndex < Merger.layers[Constants.EDITOR_MODE.TRANSLATION] && this._oCurrentLayerChange) {
1082
1167
  //merge if not translation
1083
- oManifestJson = Merger.mergeDelta(oManifestJson, [this._currentLayerManifestChanges], this.getSection());
1168
+ oManifestJson = Merger.mergeDelta(oManifestJson, [this._oCurrentLayerChange], this.getSection());
1084
1169
  }
1085
1170
  //create a manifest model after the changes are merged
1086
- this._manifestModel = new JSONModel(oManifestJson);
1171
+ this._oManifestModel = new JSONModel(oManifestJson);
1087
1172
  this._isManifestReady = true;
1088
1173
  this.fireManifestReady();
1089
1174
  this._initResourceBundlesForMultiTranslation();
@@ -1094,8 +1179,8 @@ sap.ui.define([
1094
1179
  }
1095
1180
  //add a context model
1096
1181
  this._createContextModel();
1097
- if (this._oEditorManifest.getResourceBundle()) {
1098
- this._enhanceI18nModel(this._oEditorManifest.getResourceBundle());
1182
+ if (this._oManifest.getResourceBundle()) {
1183
+ this._enhanceI18nModel(this._oManifest.getResourceBundle());
1099
1184
  }
1100
1185
  return this._loadExtension().then(function() {
1101
1186
  this._initInternal();
@@ -1107,7 +1192,7 @@ sap.ui.define([
1107
1192
  * Init the Resource Bundles for Multi Translation
1108
1193
  */
1109
1194
  Editor.prototype._initResourceBundlesForMultiTranslation = function () {
1110
- var vI18n = this._oEditorManifest.get("/sap.app/i18n");
1195
+ var vI18n = this._oManifest.get("/sap.app/i18n");
1111
1196
  var sResourceBundleURL;
1112
1197
  var aSupportedLocales;
1113
1198
  if (typeof vI18n === "string") {
@@ -1132,12 +1217,12 @@ sap.ui.define([
1132
1217
  * Registers the manifest ID as a module path.
1133
1218
  */
1134
1219
  Editor.prototype._registerManifestModulePath = function () {
1135
- if (!this._oEditorManifest) {
1220
+ if (!this._oManifest) {
1136
1221
  return;
1137
1222
  }
1138
- this._sAppId = this._oEditorManifest.get("/sap.app/id");
1223
+ this._sAppId = this._oManifest.get("/sap.app/id");
1139
1224
  if (this._sAppId) {
1140
- LoaderExtensions.registerResourcePath(this._sAppId.replace(/\./g, "/"), this._oEditorManifest.getUrl() || "/");
1225
+ LoaderExtensions.registerResourcePath(this._sAppId.replace(/\./g, "/"), this._oManifest.getUrl() || "/");
1141
1226
  } else {
1142
1227
  Log.error("sap.ui.integration.editor.Editor: sap.app/id entry in the manifest is mandatory");
1143
1228
  }
@@ -1168,7 +1253,7 @@ sap.ui.define([
1168
1253
  };
1169
1254
 
1170
1255
  Editor.prototype._loadExtension = function () {
1171
- var sExtensionPath = this._oEditorManifest.get(this.getConfigurationPath() + "/extension") || this._oEditorManifest.get("/" + this.getSection() + "/extension"),
1256
+ var sExtensionPath = this._oManifest.get(this.getConfigurationPath() + "/extension") || this._oManifest.get("/" + this.getSection() + "/extension"),
1172
1257
  sFullExtensionPath;
1173
1258
  if (!sExtensionPath) {
1174
1259
  Log.info("sap.ui.integration.editor.Editor: extension is not defined in manifest, do not load it.");
@@ -1223,8 +1308,8 @@ sap.ui.define([
1223
1308
  };
1224
1309
 
1225
1310
  Editor.prototype.initDestinations = function (vHost) {
1226
- this._destinationsModel = new JSONModel({});
1227
- this.setModel(this._destinationsModel, "destinations");
1311
+ this._oDestinationsModel = new JSONModel({});
1312
+ this.setModel(this._oDestinationsModel, "destinations");
1228
1313
  var oHostInstance = this.getHostInstance();
1229
1314
 
1230
1315
  if (vHost && !oHostInstance) {
@@ -1241,7 +1326,7 @@ sap.ui.define([
1241
1326
  var sConfigurationPath = this.getConfigurationPath();
1242
1327
  this._oDestinations = new Destinations({
1243
1328
  host: oHostInstance,
1244
- manifestConfig: this._manifestModel.getProperty(sConfigurationPath + "/destinations"),
1329
+ manifestConfig: this._oManifestModel.getProperty(sConfigurationPath + "/destinations"),
1245
1330
  prefix: "destinations"
1246
1331
  });
1247
1332
  }
@@ -1255,7 +1340,7 @@ sap.ui.define([
1255
1340
  this._oDataProviderFactory = new DataProviderFactory({
1256
1341
  destinations: this._oDestinations,
1257
1342
  extension: oExtension,
1258
- csrfTokensConfig: this._oEditorManifest.get(this.getConfigurationPath() + "/csrfTokens"),
1343
+ csrfTokensConfig: this._oManifest.get(this.getConfigurationPath() + "/csrfTokens"),
1259
1344
  editor: this
1260
1345
  });
1261
1346
  };
@@ -1355,6 +1440,7 @@ sap.ui.define([
1355
1440
  }
1356
1441
  return this;
1357
1442
  };
1443
+
1358
1444
  /**
1359
1445
  * Increases the zIndex to a higher value for all popups
1360
1446
  */
@@ -1364,19 +1450,81 @@ sap.ui.define([
1364
1450
  Popup.setInitialZIndex(this._iZIndex);
1365
1451
  }
1366
1452
  };
1453
+
1367
1454
  /**
1368
- * Filters the manifestChanges array in the oManifestSettings
1369
- * All changes that are done for layers > than current layer are removed (see also layers)
1370
- * The current layers changes are stored in this._currentLayerManifestChanges to be applied later in the editor code.
1371
- * All changes that are done for layers < that the current layer are kept in oManifestSettings.manifestChanges
1372
- *
1373
- * @param {*} oManifestSettings
1374
- */
1375
- Editor.prototype._filterManifestChangesByLayer = function (oManifestSettings) {
1455
+ * Filter out the manifestChanges of Child editors in the oManifestSettings
1456
+ *
1457
+ * @param {*} oManifestSettings
1458
+ */
1459
+ Editor.prototype._filterChildManifestChanges = function (oManifestSettings) {
1460
+ var that = this;
1461
+ if (that._bChildManifestChangesFiltered) {
1462
+ return;
1463
+ }
1464
+ that._aMainEditorChanges = deepClone(oManifestSettings.manifestChanges, 500);
1465
+ that._oChildEditorChanges = {};
1466
+ var processObject = function(obj, parentKey) {
1467
+ parentKey = parentKey ? (parentKey + "/") : "";
1468
+ Object.keys(obj).forEach(function(sKey) {
1469
+ if (sKey.startsWith(that.getConfigurationPath() + "/childCards/") && sKey.endsWith("_manifestChanges")) {
1470
+ var sRest = sKey.substring("/sap.card/configuration/childCards/".length);
1471
+ var sChildEditorName = sRest.split("/")[0];
1472
+ if (sChildEditorName) {
1473
+ var sChildEditorPath = parentKey + sChildEditorName;
1474
+ that._oChildEditorChanges[sChildEditorPath] = that._oChildEditorChanges[sChildEditorPath] || [];
1475
+ that._oChildEditorChanges[sChildEditorPath].push(obj[sKey]);
1476
+ if (obj[sKey] !== null) {
1477
+ processObject(obj[sKey], sChildEditorPath);
1478
+ }
1479
+ }
1480
+ }
1481
+ });
1482
+ };
1483
+
1484
+ // first process child changes
1485
+ // - move all the /sap.card/configuration/childCards/.../_manifestChanges to oChildChanges
1486
+ that._aMainEditorChanges.forEach(function(oChange) {
1487
+ processObject(oChange);
1488
+ });
1489
+
1490
+ // clean up child changes
1491
+ // - remove all /sap.card/configuration/childCards/.../_manifestChanges
1492
+ Object.keys(that._oChildEditorChanges).forEach(function(sKey) {
1493
+ that._oChildEditorChanges[sKey].forEach(function(oChange) {
1494
+ Object.keys(oChange).forEach(function(sKey1) {
1495
+ if (sKey1.startsWith(that.getConfigurationPath() + "/childCards/") && sKey1.endsWith("_manifestChanges")) {
1496
+ delete oChange[sKey1];
1497
+ }
1498
+ });
1499
+ });
1500
+ });
1501
+
1502
+ // clean up main changes
1503
+ // - remove all /sap.card/configuration/childCards/.../_manifestChanges
1504
+ that._aMainEditorChanges.forEach(function(oChange) {
1505
+ Object.keys(oChange).forEach(function(sKey1) {
1506
+ if (sKey1.startsWith(that.getConfigurationPath() + "/childCards/") && sKey1.endsWith("_manifestChanges")) {
1507
+ delete oChange[sKey1];
1508
+ }
1509
+ });
1510
+ });
1511
+
1512
+ that._bChildManifestChangesFiltered = true;
1513
+ };
1514
+
1515
+ /**
1516
+ * Filters the manifestChanges array in the oManifestSettings
1517
+ * All changes that are done for layers > than current layer are removed (see also layers)
1518
+ * The changes of current layer will be stored in this._oCurrentLayerChange to be applied later in the editor code.
1519
+ * All changes that are done for layers < that the current layer are kept in oManifestSettings.manifestChanges
1520
+ *
1521
+ * @param {*} oManifestSettings
1522
+ */
1523
+ Editor.prototype._filterManifestChangesByLayer = function (oManifestSettings) {
1376
1524
  var aChanges = [],
1377
1525
  that = this,
1378
- oBeforeLayerChanges = {},
1379
- oCurrentLayerChanges = { ":layer": Merger.layers[this.getMode()] },
1526
+ oBeforeLayerChange = {},
1527
+ oCurrentLayerChange = { ":layer": Merger.layers[this.getMode()] },
1380
1528
  iCurrentModeIndex = Merger.layers[that.getMode()];
1381
1529
  oManifestSettings.manifestChanges.forEach(function (oChange) {
1382
1530
  //filter manifest changes. only the changes before the current layer are needed
@@ -1405,16 +1553,256 @@ sap.ui.define([
1405
1553
  }
1406
1554
  if (iLayer < iCurrentModeIndex) {
1407
1555
  aChanges.push(oChange);
1408
- oBeforeLayerChanges = merge(oBeforeLayerChanges, oChange);
1556
+ oBeforeLayerChange = merge(oBeforeLayerChange, oChange);
1409
1557
  } else if (iLayer === iCurrentModeIndex) {
1410
1558
  //store the current layer changes locally for later processing
1411
- oCurrentLayerChanges = oChange;
1559
+ oCurrentLayerChange = oChange;
1412
1560
  }
1413
1561
  });
1414
1562
  oManifestSettings.manifestChanges = aChanges;
1415
- this._currentLayerManifestChanges = oCurrentLayerChanges;
1416
- this._beforeLayerManifestChanges = oBeforeLayerChanges;
1563
+ this._oCurrentLayerChange = oCurrentLayerChange;
1564
+ this._oBeforeLayerChange = oBeforeLayerChange;
1565
+ };
1566
+
1567
+ /**
1568
+ * Create the tree of Child editors
1569
+ *
1570
+ * @param {*} oChildNodes
1571
+ */
1572
+ Editor.prototype.createChildTree = function (oChildNodes) {
1573
+ var that = this;
1574
+ var sBaseUrl = this.getBaseUrl();
1575
+
1576
+ var sMainManifest = that._vIdOrSettings.manifest;
1577
+ if (typeof that._vIdOrSettings.manifest === "object") {
1578
+ sMainManifest = JSON.stringify(that._vIdOrSettings.manifest);
1579
+ }
1580
+ var mainTitle = this._oManifest.get("/sap.app/title") || this._oResourceBundle.getText("EDITOR_CHILD_TREE_MAIN_NODE_TEXT");
1581
+ // Create data model with main node
1582
+ var oData = [{
1583
+ text: mainTitle,
1584
+ baseUrl: sBaseUrl,
1585
+ manifest: sMainManifest,
1586
+ path: "",
1587
+ selected: true,
1588
+ nodes: []
1589
+ }];
1590
+ var oModel = new JSONModel(oData);
1591
+
1592
+ var loadChildNode = function (sName, oChildConfig, sPath, sBaseUrl, sParentName) {
1593
+ // calculate base url and manifest path for childs
1594
+ var sManifestPath = sBaseUrl + oChildConfig.manifest;
1595
+ sBaseUrl = sManifestPath.substring(0, sManifestPath.lastIndexOf("/") + 1);
1596
+ var oNode = {
1597
+ text: sName,
1598
+ baseUrl: sBaseUrl,
1599
+ manifest: sManifestPath,
1600
+ isChild: true,
1601
+ path: sPath,
1602
+ selected: false,
1603
+ nodes: []
1604
+ };
1605
+ if (oChildConfig.manifest) {
1606
+ try {
1607
+ var sManifestUrl = that._sAppId.replace(/\./g, "/");
1608
+ if (sParentName) {
1609
+ sManifestUrl += "/" + sParentName;
1610
+ }
1611
+ sManifestUrl += "/" + oChildConfig.manifest;
1612
+ // load child manifest to get title and sub child nodes
1613
+ LoaderExtensions.loadResource(sManifestUrl, {
1614
+ dataType: "json",
1615
+ async: true,
1616
+ failOnError: false
1617
+ }).then(function (oManifest) {
1618
+ if (oManifest && oManifest["sap.card"]?.configuration?.childCards) {
1619
+ var oSubChildNodes = oManifest["sap.card"].configuration.childCards;
1620
+ for (var sSubName in oSubChildNodes) {
1621
+ var oSubNode = loadChildNode(sSubName, oSubChildNodes[sSubName], sPath ? (sPath + "/" + sSubName) : sSubName, sBaseUrl, sName);
1622
+ oNode.nodes.push(oSubNode);
1623
+ }
1624
+ }
1625
+ if (oManifest) {
1626
+ oNode.text = oChildConfig.title || oManifest["sap.app"].title || oNode.text;
1627
+ } else if (oChildConfig.title) {
1628
+ oNode.text = oChildConfig.title;
1629
+ }
1630
+ oModel.checkUpdate(true);
1631
+ });
1632
+ } catch (e) {
1633
+ if (oChildConfig.title) {
1634
+ oNode.text = oChildConfig.title;
1635
+ }
1636
+ oModel.checkUpdate(true);
1637
+ Log.error("sap.ui.integration.editor.Editor: child edtior tree manifest load error: " + e);
1638
+ }
1639
+ } else if (oChildConfig.title) {
1640
+ oNode.text = oChildConfig.title;
1641
+ }
1642
+ return oNode;
1643
+ };
1644
+
1645
+ for (var sChildNodeName in oChildNodes) {
1646
+ var oNode = loadChildNode(sChildNodeName, oChildNodes[sChildNodeName], sChildNodeName, sBaseUrl);
1647
+ oData[0].nodes.push(oNode);
1648
+ }
1649
+ that._oChildTree = new Tree({
1650
+ items: {
1651
+ path: "/",
1652
+ template: new StandardTreeItem({
1653
+ title: "{text}",
1654
+ tooltip: "{text}",
1655
+ type: "Active",
1656
+ highlight: "{= ${selected} ? 'Information' : 'None'}"
1657
+ })
1658
+ },
1659
+ toggleOpenState: that.onToggleOpenState,
1660
+ itemPress: that.onTreeItemPress.bind(that)
1661
+ }).addStyleClass("sapUiIntegrationEditorChildTreeItem");
1662
+ that._oChildTree.setModel(oModel);
1417
1663
  };
1664
+
1665
+ Editor.prototype.onToggleOpenState = function(oEvent) {
1666
+ var oControl = oEvent.getSource();
1667
+ var bExpanded = oEvent.getParameter("expanded");
1668
+ if (bExpanded) {
1669
+ Log.info("sap.ui.integration.editor.Editor: child edtior tree item expanded: " + oEvent.getParameter("itemIndex"));
1670
+ oControl.expand([oEvent.getParameter("itemIndex")]);
1671
+ } else {
1672
+ Log.info("sap.ui.integration.editor.Editor: child edtior tree item collapsed: " + oEvent.getParameter("itemIndex"));
1673
+ oControl.collapse([oEvent.getParameter("itemIndex")]);
1674
+ }
1675
+ };
1676
+
1677
+ /**
1678
+ * process the pressed tree item event
1679
+ * @param {sap.ui.base.Event} oEvent the event object
1680
+ */
1681
+ Editor.prototype.onTreeItemPress = function(oEvent) {
1682
+ // get the pressed item
1683
+ var oItem = oEvent.getParameter("srcControl");
1684
+ if (!oItem || !oItem.getBindingContext() || !oItem.getBindingContext().getObject()) {
1685
+ Log.error("sap.ui.integration.editor.Editor: child editor tree item pressed without binding context or binding object");
1686
+ return;
1687
+ }
1688
+
1689
+ // get the binding object and the manifest
1690
+ var oItemObject = oItem.getBindingContext().getObject();
1691
+ var oManifest = oItemObject.manifest;
1692
+ if (!oManifest) {
1693
+ Log.error("sap.ui.integration.editor.Editor: child editor tree item pressed without manifest");
1694
+ return;
1695
+ }
1696
+ // check if manifest is json
1697
+ try {
1698
+ oManifest = JSON.parse(oManifest);
1699
+ } catch (e) {
1700
+ //manifest is not json
1701
+ Log.info("sap.ui.integration.editor.Editor: child editor tree item pressed with manifest not json");
1702
+ }
1703
+ // check if same item pressed, if yes do nothing
1704
+ var path = oItemObject.path || "/";
1705
+ this._oChildTree._path = this._oChildTree._path || "/";
1706
+ if (this._oChildTree._path === path) {
1707
+ Log.info("sap.ui.integration.editor.Editor: same item pressed, do nothing");
1708
+ return;
1709
+ }
1710
+
1711
+ // update current settings to manifest changes (main editor or Child editor)
1712
+ var oCurrentSettings = this.getCurrentSettings(true);
1713
+ this._oChildEditorChanges = this._oChildEditorChanges || {};
1714
+ this._aMainEditorChanges = this._aMainEditorChanges || [];
1715
+ var sLayer = oCurrentSettings[":layer"];
1716
+ var oMatchedChange, oMatchedChangeCloned;
1717
+ if (!this.isChild) {
1718
+ // find current layer change in main editor changes
1719
+ oMatchedChange = this._aMainEditorChanges.find(function(oChange) {
1720
+ return oChange[":layer"] === sLayer;
1721
+ });
1722
+ if (oMatchedChange) {
1723
+ oMatchedChangeCloned = merge({}, oMatchedChange, oCurrentSettings);
1724
+ var iIndex = this._aMainEditorChanges.indexOf(oMatchedChange);
1725
+ if (iIndex > -1) {
1726
+ this._aMainEditorChanges.splice(iIndex, 1);
1727
+ }
1728
+ oMatchedChange = oMatchedChangeCloned;
1729
+ } else {
1730
+ oMatchedChange = oCurrentSettings;
1731
+ }
1732
+ this._aMainEditorChanges.push(oMatchedChange);
1733
+ } else {
1734
+ this._oChildEditorChanges[this._oChildTree._path] = this._oChildEditorChanges[this._oChildTree._path] || [];
1735
+ var aChildChanges = this._oChildEditorChanges[this._oChildTree._path];
1736
+ // find current layer change in Child editor changes
1737
+ oMatchedChange = aChildChanges.find(function(oChange) {
1738
+ return oChange[":layer"] === sLayer;
1739
+ });
1740
+ if (oMatchedChange) {
1741
+ oMatchedChangeCloned = merge({}, oMatchedChange, oCurrentSettings);
1742
+ var iIndex = aChildChanges.indexOf(oMatchedChange);
1743
+ if (iIndex > -1) {
1744
+ aChildChanges.splice(iIndex, 1);
1745
+ }
1746
+ oMatchedChange = oMatchedChangeCloned;
1747
+ } else {
1748
+ oMatchedChange = oCurrentSettings;
1749
+ }
1750
+ aChildChanges.push(oMatchedChange);
1751
+ }
1752
+
1753
+ // clean editor and reset flags
1754
+ this.cleanAndReset();
1755
+
1756
+ // switch to the pressed editor
1757
+ this.switchToEditor(oManifest, oItemObject, path);
1758
+
1759
+ // unHighlignt the previous selected item and highlight the current selected item
1760
+ var oTreeModel = this._oChildTree.getModel();
1761
+ var sCurrentItemIndex = this._oChildTree._itemIndex || "/0";
1762
+ oTreeModel.setProperty(sCurrentItemIndex + "/selected", false);
1763
+ oItemObject.selected = true;
1764
+ oTreeModel.checkUpdate(true);
1765
+
1766
+ // update the item index and path
1767
+ this._oChildTree._itemIndex = oItem.getBindingContext().getPath();
1768
+ this._oChildTree._path = path;
1769
+ Log.info("sap.ui.integration.editor.Editor: child editor tree item pressed");
1770
+ };
1771
+
1772
+ /**
1773
+ * Switch to another editor based on the manifest and item object
1774
+ *
1775
+ * @param {*} oManifest the manifest of the editor to switch to
1776
+ * @param {*} oItemObject the binding object of the pressed tree item
1777
+ * @param {string} sPath the path of the pressed tree item
1778
+ */
1779
+ Editor.prototype.switchToEditor = function(oManifest, oItemObject, sPath) {
1780
+ // save the current settings, to avoid creating new instance when switching between child editors
1781
+ this._oChildTreeSettings = this._oChildTreeSettings || {};
1782
+ if (!this._oChildTreeSettings[this._oChildTree._path]) {
1783
+ this._oChildTreeSettings[this._oChildTree._path] = deepClone(this._vIdOrSettings, 500);
1784
+ }
1785
+
1786
+ // get settings for the pressed item
1787
+ this.isChild = oItemObject.isChild;
1788
+ var oManifestChanges;
1789
+ if (!this.isChild) {
1790
+ oManifestChanges = this._aMainEditorChanges;
1791
+ } else {
1792
+ oManifestChanges = this._oChildEditorChanges[sPath] || [];
1793
+ }
1794
+ if (this._oChildTreeSettings[sPath]) {
1795
+ this._vIdOrSettings = this._oChildTreeSettings[sPath];
1796
+ } else {
1797
+ this._vIdOrSettings.baseUrl = oItemObject.baseUrl;
1798
+ this._vIdOrSettings.manifest = oManifest;
1799
+ }
1800
+ this._vIdOrSettings.manifestChanges = oManifestChanges;
1801
+
1802
+ // switch to the pressed editor
1803
+ this.setJson(this._vIdOrSettings, true); //suppress rerendering as the editor will be rerendered anyway
1804
+ };
1805
+
1418
1806
  /**
1419
1807
  * Initializes the editor after the json is set
1420
1808
  */
@@ -1422,12 +1810,19 @@ sap.ui.define([
1422
1810
  var that = this;
1423
1811
  //handle keyword designtime removal
1424
1812
  var sConfigurationPath = that.getConfigurationPath();
1425
- var sDesigntime = that._oEditorManifest.get(sConfigurationPath + "/editor");
1813
+ var sDesigntime = that._oManifest.get(sConfigurationPath + "/editor");
1426
1814
  if (!sDesigntime) {
1427
- sDesigntime = that._oEditorManifest.get("/" + that.getSection() + "/designtime");
1815
+ sDesigntime = that._oManifest.get("/" + that.getSection() + "/designtime");
1816
+ }
1817
+ if (!that._oChildTree) {
1818
+ // create Child editors tree if Child editors are defined and tree not created yet
1819
+ var oChildEditors = that._oManifest.get(sConfigurationPath + "/childCards");
1820
+ if (oChildEditors && typeof oChildEditors === "object") {
1821
+ that.createChildTree(oChildEditors);
1822
+ }
1428
1823
  }
1429
1824
  //load the designtime control and bundles lazy
1430
- var oConfiguration = that._manifestModel.getProperty(sConfigurationPath),
1825
+ var oConfiguration = that._oManifestModel.getProperty(sConfigurationPath),
1431
1826
  oPromise,
1432
1827
  oDesigntimeConfig = that.getDesigntime();
1433
1828
  if (oDesigntimeConfig) {
@@ -1464,17 +1859,17 @@ sap.ui.define([
1464
1859
  that._oDesigntimeInstance = oDesigntime;
1465
1860
  that.initDestinations();
1466
1861
  that.initDataProviderFactory();
1467
- if (that.getMode() === Constants.EDITOR_MODE.ADMIN || that.getMode() === Constants.EDITOR_MODE.ALL) {
1468
- //always add destination settings for admin and all modes
1862
+ if (!that.isChild && (that.getMode() === Constants.EDITOR_MODE.ADMIN || that.getMode() === Constants.EDITOR_MODE.ALL)) {
1863
+ //always add destination settings for admin and all modes if not child editor
1469
1864
  that._addDestinationSettings(oConfiguration);
1470
1865
  } else {
1471
1866
  //delete destination settings in dt for other modes
1472
1867
  that._deleleDestinationSettings();
1473
1868
  }
1474
1869
  //create a settings model
1475
- that._settingsModel = new JSONModel(that._oDesigntimeInstance.getSettings());
1476
- that.setModel(that._settingsModel, "currentSettings");
1477
- that.setModel(that._settingsModel, "items");
1870
+ that._oSettingsModel = new JSONModel(that._oDesigntimeInstance.getSettings());
1871
+ that.setModel(that._oSettingsModel, "currentSettings");
1872
+ that.setModel(that._oSettingsModel, "items");
1478
1873
  return that._loadValueContextInDesigntime();
1479
1874
  }).then(function () {
1480
1875
  that._applyDesigntimeLayers(); //changes done from admin to content on the dt values
@@ -1491,7 +1886,7 @@ sap.ui.define([
1491
1886
  return Promise.resolve(this._oDesigntime);
1492
1887
  }
1493
1888
 
1494
- if (!this._oEditorManifest) {
1889
+ if (!this._oManifest) {
1495
1890
  return new Promise(function (resolve, reject) {
1496
1891
  this.attachManifestReady(function () {
1497
1892
  this.loadDesigntime().then(resolve, reject);
@@ -1506,9 +1901,9 @@ sap.ui.define([
1506
1901
  return new Promise(function (resolve, reject) {
1507
1902
  //build the module path to load as part of the widgets module path
1508
1903
  //handle keyword designtime removal
1509
- var sDesigntimePath = this._oEditorManifest.get(this.getConfigurationPath() + "/editor");
1904
+ var sDesigntimePath = this._oManifest.get(this.getConfigurationPath() + "/editor");
1510
1905
  if (!sDesigntimePath) {
1511
- sDesigntimePath = this._oEditorManifest.get("/" + this.getSection() + "/designtime");
1906
+ sDesigntimePath = this._oManifest.get("/" + this.getSection() + "/designtime");
1512
1907
  }
1513
1908
  var sFullDesigntimePath = this._sAppId.replace(/\./g, "/") + "/" + sDesigntimePath;
1514
1909
  if (sFullDesigntimePath) {
@@ -1538,9 +1933,13 @@ sap.ui.define([
1538
1933
  /**
1539
1934
  * Returns the current settings as a json with a manifest path and the current value
1540
1935
  * additionally there is a layer number added as ":layer"
1936
+ *
1937
+ * @param {boolean} bOnlyCurrentEditor If true, only the settings of the current editor are returned (without child editors)
1938
+ * @returns {object} The current settings in manifest format
1541
1939
  */
1542
- Editor.prototype.getCurrentSettings = function () {
1543
- var oSettings = this._settingsModel.getProperty("/"),
1940
+ Editor.prototype.getCurrentSettings = function (bOnlyCurrentEditor) {
1941
+ bOnlyCurrentEditor = bOnlyCurrentEditor || false;
1942
+ var oSettings = this._oSettingsModel.getProperty("/"),
1544
1943
  mResult = {},
1545
1944
  mNext;
1546
1945
  if (oSettings && oSettings.form && oSettings.form.items) {
@@ -1548,19 +1947,19 @@ sap.ui.define([
1548
1947
  var oItem = oSettings.form.items[n];
1549
1948
  if (oItem.editable && oItem.visible) {
1550
1949
  if (this.getMode() !== Constants.EDITOR_MODE.TRANSLATION) {
1551
- if (oItem.translatable && !oItem._changed && oItem._translatedPlaceholder && !this._currentLayerManifestChanges[oItem.manifestpath]) {
1950
+ if (oItem.translatable && !oItem._changed && oItem._translatedPlaceholder && !this._oCurrentLayerChange[oItem.manifestpath]) {
1552
1951
  //do not save a value that was not changed and comes from a translated default value
1553
1952
  //mResult[oItem.manifestpath] = oItem._translatedPlaceholder;
1554
1953
  //but we need to save the setting changes for the next layer, so remove the continue sentence.
1555
1954
  //continue;
1556
1955
  } else {
1557
- if (oItem.valueItems && !deepEqual(this._beforeLayerManifestChanges[oItem.manifestpath.substring(0, oItem.manifestpath.lastIndexOf("/")) + "/valueItems"], oItem.valueItems)) {
1956
+ if (oItem.valueItems && !deepEqual(this._oBeforeLayerChange[oItem.manifestpath.substring(0, oItem.manifestpath.lastIndexOf("/")) + "/valueItems"], oItem.valueItems)) {
1558
1957
  mResult[oItem.manifestpath.substring(0, oItem.manifestpath.lastIndexOf("/")) + "/valueItems"] = oItem.valueItems;
1559
1958
  }
1560
- if (oItem.valueTokens && !deepEqual(this._beforeLayerManifestChanges[oItem.manifestpath.substring(0, oItem.manifestpath.lastIndexOf("/")) + "/valueTokens"], oItem.valueTokens)) {
1959
+ if (oItem.valueTokens && !deepEqual(this._oBeforeLayerChange[oItem.manifestpath.substring(0, oItem.manifestpath.lastIndexOf("/")) + "/valueTokens"], oItem.valueTokens)) {
1561
1960
  mResult[oItem.manifestpath.substring(0, oItem.manifestpath.lastIndexOf("/")) + "/valueTokens"] = oItem.valueTokens;
1562
1961
  }
1563
- var beforeLayerChange = this._beforeLayerManifestChanges[oItem.manifestpath];
1962
+ var beforeLayerChange = this._oBeforeLayerChange[oItem.manifestpath];
1564
1963
  if (typeof oItem.value !== "undefined" && !deepEqual(beforeLayerChange, oItem.value)) {
1565
1964
  switch (oItem.type) {
1566
1965
  case "string":
@@ -1570,8 +1969,8 @@ sap.ui.define([
1570
1969
  // if value is dynamic value of a translatable parameter, save it and delete all the current translations
1571
1970
  mResult[oItem.manifestpath] = oItem.value;
1572
1971
  this.deleteAllTranslationValuesInTexts(oItem.manifestpath);
1573
- } else if (oItem._beforeValue && (oItem._beforeValue.indexOf("{context>") === 0 || oItem._beforeValue.indexOf("{{parameters") === 0)) {
1574
- // if before value is dynamic value of a translatable parameter, save it
1972
+ } else if (oItem._beforeLayerValue && (oItem._beforeLayerValue.indexOf("{context>") === 0 || oItem._beforeLayerValue.indexOf("{{parameters") === 0)) {
1973
+ // if before layer value is dynamic value or a translatable parameter, save it
1575
1974
  mResult[oItem.manifestpath] = oItem.value;
1576
1975
  }
1577
1976
  break;
@@ -1617,7 +2016,9 @@ sap.ui.define([
1617
2016
  }
1618
2017
  break;
1619
2018
  default:
1620
- mResult[oItem.manifestpath] = oItem.value;
2019
+ if (oItem.manifestpath) {
2020
+ mResult[oItem.manifestpath] = oItem.value;
2021
+ }
1621
2022
  }
1622
2023
  }
1623
2024
  }
@@ -1625,9 +2026,9 @@ sap.ui.define([
1625
2026
  if (oItem._changed) {
1626
2027
  //in translation mode create an entry if value changes
1627
2028
  mResult[oItem.manifestpath] = oItem.value;
1628
- } else if (this._currentLayerManifestChanges && this._currentLayerManifestChanges.texts && this._currentLayerManifestChanges.texts[this._language] && this._currentLayerManifestChanges.texts[this._language][oItem.manifestpath]) {
2029
+ } else if (this._oCurrentLayerChange && this._oCurrentLayerChange.texts && this._oCurrentLayerChange.texts[this._language] && this._oCurrentLayerChange.texts[this._language][oItem.manifestpath]) {
1629
2030
  //if translation layer has changed value before, save it again
1630
- mResult[oItem.manifestpath] = this._currentLayerManifestChanges.texts[this._language][oItem.manifestpath];
2031
+ mResult[oItem.manifestpath] = this._oCurrentLayerChange.texts[this._language][oItem.manifestpath];
1631
2032
  }
1632
2033
  }
1633
2034
  if (oItem._next && (this.getAllowSettings())) {
@@ -1667,7 +2068,7 @@ sap.ui.define([
1667
2068
  } else if (oSettings.texts) {
1668
2069
  mResult.texts = deepClone(oSettings.texts, 500) || {};
1669
2070
  // get the before layer translation texts
1670
- var beforeLayerTexts = merge({}, this._beforeLayerManifestChanges.texts);
2071
+ var beforeLayerTexts = merge({}, this._oBeforeLayerChange.texts);
1671
2072
  if (deepEqual(beforeLayerTexts, mResult.texts)) {
1672
2073
  // if no change, DO NOT return the transtalion texts
1673
2074
  delete mResult.texts;
@@ -1726,7 +2127,8 @@ sap.ui.define([
1726
2127
  }
1727
2128
  }
1728
2129
  }
1729
- mResult[":layer"] = Merger.layers[this.getMode()];
2130
+ var iLayer = Merger.layers[this.getMode()];
2131
+ mResult[":layer"] = iLayer;
1730
2132
  mResult[":errors"] = this.checkCurrentSettings()[":errors"];
1731
2133
  if (mNext) {
1732
2134
  mResult[":designtime"] = mNext;
@@ -1734,6 +2136,42 @@ sap.ui.define([
1734
2136
  if (oSettings[":designtime"]) {
1735
2137
  mResult[":designtime"] = merge(mResult[":designtime"], oSettings[":designtime"]);
1736
2138
  }
2139
+
2140
+ // handle child editor settings
2141
+ if (this._oChildTree) {
2142
+ this._childSettings = this._childSettings || [];
2143
+ this._mainSettings = this._mainSettings || {};
2144
+ if (this.isChild) {
2145
+ this._childSettings[this._oChildTree._path] = mResult;
2146
+ } else {
2147
+ this._mainSettings = mResult;
2148
+ }
2149
+ // return whole settings including child editors
2150
+ if (!bOnlyCurrentEditor){
2151
+ // merge main settings and child settings into one object
2152
+ var mAllSettings = deepClone(this._mainSettings, 500);
2153
+ Object.keys(this._childSettings).forEach(function (childKey) {
2154
+ var oChildSetting = this._childSettings[childKey];
2155
+ var paths = childKey.split("/");
2156
+ var oParent = mAllSettings;
2157
+ paths.forEach(function (sPath, iIndex) {
2158
+ if (sPath && oChildSetting) {
2159
+ var fullPath = this.getConfigurationPath() + "/childCards/" + sPath + "/_manifestChanges";
2160
+ if (iIndex === paths.length - 1) {
2161
+ oParent[fullPath] = oChildSetting;
2162
+ } else {
2163
+ oParent[fullPath] = oParent[fullPath] || {
2164
+ ":layer": iLayer,
2165
+ ":errors": false
2166
+ };
2167
+ oParent = oParent[fullPath];
2168
+ }
2169
+ }
2170
+ }.bind(this));
2171
+ }.bind(this));
2172
+ return mAllSettings;
2173
+ }
2174
+ }
1737
2175
  return mResult;
1738
2176
  };
1739
2177
  /**
@@ -1741,7 +2179,7 @@ sap.ui.define([
1741
2179
  * TODO: highlight issues and add states...
1742
2180
  */
1743
2181
  Editor.prototype.checkCurrentSettings = function () {
1744
- var oSettings = this._settingsModel.getProperty("/"),
2182
+ var oSettings = this._oSettingsModel.getProperty("/"),
1745
2183
  mChecks = {};
1746
2184
  if (oSettings && oSettings.form && oSettings.form.items) {
1747
2185
  for (var n in oSettings.form.items) {
@@ -2177,7 +2615,7 @@ sap.ui.define([
2177
2615
  }.bind(this)));
2178
2616
  if (oConfig.type !== "group") {
2179
2617
  // listen to value changes on the settings
2180
- oField._oValueBinding = this._settingsModel.bindProperty(oConfig._settingspath + "/value");
2618
+ oField._oValueBinding = this._oSettingsModel.bindProperty(oConfig._settingspath + "/value");
2181
2619
  oField._oValueBinding.attachChange(function () {
2182
2620
  if (!this._bIgnoreUpdates) {
2183
2621
  oConfig._changed = true;
@@ -2189,7 +2627,7 @@ sap.ui.define([
2189
2627
  }.bind(this));
2190
2628
  if (oField.isFilterBackend()) {
2191
2629
  // listen to suggest value changes on the settings if current field support filter backend feature
2192
- var oSuggestValueBinding = this._settingsModel.bindProperty(oConfig._settingspath + "/suggestValue");
2630
+ var oSuggestValueBinding = this._oSettingsModel.bindProperty(oConfig._settingspath + "/suggestValue");
2193
2631
  oSuggestValueBinding.attachChange(function () {
2194
2632
  var oConfigTemp = merge({}, oConfig);
2195
2633
  oConfigTemp._cancel = false;
@@ -2281,7 +2719,7 @@ sap.ui.define([
2281
2719
  }).then(function (oData) {
2282
2720
  if (oConfig._cancel) {
2283
2721
  oConfig._values = [];
2284
- this._settingsModel.setProperty(oConfig._settingspath + "/_loading", false);
2722
+ this._oSettingsModel.setProperty(oConfig._settingspath + "/_loading", false);
2285
2723
  return;
2286
2724
  }
2287
2725
  // filter data for page admin
@@ -2398,7 +2836,7 @@ sap.ui.define([
2398
2836
  if (oConfig.type === "object" || oConfig.type === "object[]") {
2399
2837
  oField.mergeValueWithRequestResult(tResult);
2400
2838
  }
2401
- this._settingsModel.setProperty(oConfig._settingspath + "/_loading", false);
2839
+ this._oSettingsModel.setProperty(oConfig._settingspath + "/_loading", false);
2402
2840
  oField._hideValueState(true, true);
2403
2841
  }.bind(this))
2404
2842
  .catch(function (oError) {
@@ -2443,7 +2881,7 @@ sap.ui.define([
2443
2881
  if (oConfig.type === "object" || oConfig.type === "object[]") {
2444
2882
  oField.mergeValueWithRequestResult();
2445
2883
  }
2446
- this._settingsModel.setProperty(oConfig._settingspath + "/_loading", false);
2884
+ this._oSettingsModel.setProperty(oConfig._settingspath + "/_loading", false);
2447
2885
  oField._showValueState("error", sError, true);
2448
2886
  }.bind(this));
2449
2887
 
@@ -2460,11 +2898,11 @@ sap.ui.define([
2460
2898
  }
2461
2899
  var bHasExtensionData = false;
2462
2900
  var oExtensionConfig = {};
2463
- var oExtensionProperty = this._oEditorManifest.get(this.getConfigurationPath() + "/data/extension");
2901
+ var oExtensionProperty = this._oManifest.get(this.getConfigurationPath() + "/data/extension");
2464
2902
  var sPath;
2465
2903
  if (oExtensionProperty) {
2466
2904
  bHasExtensionData = true;
2467
- sPath = this._oEditorManifest.get(this.getConfigurationPath() + "/data/path");
2905
+ sPath = this._oManifest.get(this.getConfigurationPath() + "/data/path");
2468
2906
  oExtensionConfig = {
2469
2907
  "extension": oExtensionProperty
2470
2908
  };
@@ -2472,10 +2910,10 @@ sap.ui.define([
2472
2910
  oExtensionConfig.path = sPath;
2473
2911
  }
2474
2912
  } else {
2475
- oExtensionProperty = this._oEditorManifest.get("/" + this.getSection() + "/data/extension");
2913
+ oExtensionProperty = this._oManifest.get("/" + this.getSection() + "/data/extension");
2476
2914
  if (oExtensionProperty) {
2477
2915
  bHasExtensionData = true;
2478
- sPath = this._oEditorManifest.get("/" + this.getSection() + "/data/path");
2916
+ sPath = this._oManifest.get("/" + this.getSection() + "/data/path");
2479
2917
  oExtensionConfig = {
2480
2918
  "extension": oExtensionProperty
2481
2919
  };
@@ -2551,7 +2989,7 @@ sap.ui.define([
2551
2989
  oValueModel = new JSONModel({});
2552
2990
  oField.setModel(oValueModel, undefined);
2553
2991
  }
2554
- this._settingsModel.setProperty(oConfig._settingspath + "/_loading", true);
2992
+ this._oSettingsModel.setProperty(oConfig._settingspath + "/_loading", true);
2555
2993
  if (!nTimeout) {
2556
2994
  return this._requestData(oConfig, oField);
2557
2995
  } else {
@@ -2664,22 +3102,15 @@ sap.ui.define([
2664
3102
  }
2665
3103
  };
2666
3104
 
2667
- Editor.prototype.getBeforeLayerChange = function (sManifestPath) {
2668
- if (!this._beforeLayerManifestChanges) {
2669
- this._beforeLayerManifestChanges = {};
2670
- }
2671
- return this._beforeLayerManifestChanges[sManifestPath];
2672
- };
2673
-
2674
3105
  Editor.prototype.getTranslationValueInTexts = function (sLanguage, sManifestPath) {
2675
3106
  var sTranslationPath = "/texts/" + sLanguage;
2676
- var oProperty = this._settingsModel.getProperty(sTranslationPath) || {};
3107
+ var oProperty = this._oSettingsModel.getProperty(sTranslationPath) || {};
2677
3108
  return oProperty[sManifestPath];
2678
3109
  };
2679
3110
 
2680
3111
  Editor.prototype.deleteAllTranslationValuesInTexts = function (sManifestPath) {
2681
3112
  var that = this;
2682
- var oData = that._settingsModel.getData();
3113
+ var oData = that._oSettingsModel.getData();
2683
3114
  if (!oData || !oData.texts) {
2684
3115
  return;
2685
3116
  }
@@ -2690,7 +3121,7 @@ sap.ui.define([
2690
3121
  delete oTexts[n][sManifestPath];
2691
3122
  }
2692
3123
  }
2693
- this._settingsModel.setProperty(sTranslationPath, oTexts);
3124
+ this._oSettingsModel.setProperty(sTranslationPath, oTexts);
2694
3125
  };
2695
3126
 
2696
3127
  /**
@@ -2781,7 +3212,7 @@ sap.ui.define([
2781
3212
  //even if a item is not visible or not editable by another layer for translations it should always be editable and visible
2782
3213
  oConfig.editable = oConfig.visible = oConfig.translatable;
2783
3214
  sLanguage = this._language;
2784
- if (!this.getBeforeLayerChange(oConfig.manifestpath)) {
3215
+ if (!this._oBeforeLayerChange[oConfig.manifestpath]) {
2785
3216
  oConfig.value = oConfig._translatedValue || "";
2786
3217
  }
2787
3218
  var sTranslateText = this.getTranslationValueInTexts(sLanguage, oConfig.manifestpath);
@@ -2808,14 +3239,14 @@ sap.ui.define([
2808
3239
  this.addAggregation("_formContent",
2809
3240
  oNewLabel
2810
3241
  );
2811
- var sBeforeLayerChange = this.getBeforeLayerChange(oConfig.manifestpath);
3242
+ var sBeforeLayerChange = this._oBeforeLayerChange[oConfig.manifestpath];
2812
3243
  if (sBeforeLayerChange) {
2813
3244
  oConfig._beforeLayerChange = sBeforeLayerChange;
2814
3245
  }
2815
3246
  //if there are changes for the current layer, read the already translated value from there
2816
3247
  //now merge these changes for translation into the item configs
2817
- if (this._currentLayerManifestChanges && this._currentLayerManifestChanges[oConfig.manifestpath]) {
2818
- oConfig.value = this._currentLayerManifestChanges[oConfig.manifestpath];
3248
+ if (this._oCurrentLayerChange && this._oCurrentLayerChange[oConfig.manifestpath]) {
3249
+ oConfig.value = this._oCurrentLayerChange[oConfig.manifestpath];
2819
3250
  oConfig._beforeLayerChange = oConfig.value;
2820
3251
  }
2821
3252
  //only get translations of string fields
@@ -2882,7 +3313,7 @@ sap.ui.define([
2882
3313
  if (!sLanguage) {
2883
3314
  return;
2884
3315
  }
2885
- var vI18n = this._oEditorManifest.get("/sap.app/i18n"),
3316
+ var vI18n = this._oManifest.get("/sap.app/i18n"),
2886
3317
  sResourceBundleURL,
2887
3318
  aSupportedLocales;
2888
3319
  if (!vI18n) {
@@ -2954,12 +3385,12 @@ sap.ui.define([
2954
3385
  this.destroyAggregation("_formContent");
2955
3386
  }
2956
3387
 
2957
- var oSettingsData = this._settingsModel.getData();
3388
+ var oSettingsData = this._oSettingsModel.getData();
2958
3389
  var oItems;
2959
3390
  if (oSettingsData.form && oSettingsData.form.items) {
2960
3391
  oItems = oSettingsData.form.items;
2961
3392
  // ### check if need to add general configuration group ###
2962
- // since the items had already reordered in _addDestinationSettings function according by this._destinationGroupAtTop,
3393
+ // since the items had already reordered in _addDestinationSettings function according by this._bDestinationGroupAtTop,
2963
3394
  // if destination group is at top:
2964
3395
  // a. check item from 2nd position (the 1st item is the destination group itme)
2965
3396
  // b. if item is a destination item, set iInsertPosition to current position number, then check the next item
@@ -2971,14 +3402,14 @@ sap.ui.define([
2971
3402
  // c. if item is a group and not a sub group, break, no need to add general configuration group
2972
3403
  // d. if item is not a group and visible is true, which means it is a valid item, so need to add general configuration group, or check the next item
2973
3404
  var bAddGeneralSettingsPanel = false,
2974
- iStartIndex = this._destinationGroupAtTop ? 1 : 0,
3405
+ iStartIndex = this._bDestinationGroupAtTop ? 1 : 0,
2975
3406
  aKeys = Object.keys(oItems),
2976
3407
  iLength = aKeys.length,
2977
3408
  iInsertPosition = 0;
2978
3409
  for (var i = iStartIndex; i < iLength; i++) {
2979
3410
  var oItem = oItems[aKeys[i]];
2980
3411
  if (oItem.type === "destination") {
2981
- if (!this._destinationGroupAtTop) {
3412
+ if (!this._bDestinationGroupAtTop) {
2982
3413
  break;
2983
3414
  }
2984
3415
  iInsertPosition = i;
@@ -2999,7 +3430,7 @@ sap.ui.define([
2999
3430
  _settingspath: "/form/items/generalPanel"
3000
3431
  };
3001
3432
  //insert general settings panel in position iInsertPosition
3002
- if (this._destinationGroupAtTop) {
3433
+ if (this._bDestinationGroupAtTop) {
3003
3434
  var oNewItems = {};
3004
3435
  var iPosition = 0;
3005
3436
  aKeys.forEach(function(sKey) {
@@ -3018,11 +3449,11 @@ sap.ui.define([
3018
3449
  );
3019
3450
  }
3020
3451
  oSettingsData.form.items = oItems;
3021
- this._settingsModel.setData(oSettingsData);
3452
+ this._oSettingsModel.setData(oSettingsData);
3022
3453
  }
3023
3454
  }
3024
3455
 
3025
- var oSettings = this._settingsModel.getProperty("/");
3456
+ var oSettings = this._oSettingsModel.getProperty("/");
3026
3457
  this._mItemsByPaths = {};
3027
3458
  if (oSettings.form && oSettings.form.items) {
3028
3459
  oItems = oSettings.form.items;
@@ -3048,7 +3479,7 @@ sap.ui.define([
3048
3479
  if (oItem.manifestpath) {
3049
3480
  this._mItemsByPaths[oItem.manifestpath] = oItem;
3050
3481
  if (this.getMode() !== Constants.EDITOR_MODE.TRANSLATION) {
3051
- sCurrentLayerValue = this._currentLayerManifestChanges[oItem.manifestpath];
3482
+ sCurrentLayerValue = this._oCurrentLayerChange[oItem.manifestpath];
3052
3483
  }
3053
3484
  }
3054
3485
  //if not changed it should be undefined, and ignore changes in tranlation layer
@@ -3058,13 +3489,13 @@ sap.ui.define([
3058
3489
  oItem.translatable = false;
3059
3490
  }
3060
3491
 
3061
- oItem._beforeValue = this._getManifestBeforelValue(oItem.manifestpath);
3492
+ oItem._beforeLayerValue = this._getBeforeLayerValue(oItem.manifestpath);
3062
3493
 
3063
3494
  //check if the provided value from the parameter or designtime default value is a translated value
3064
3495
  //restrict this to string types for now
3065
3496
  if (oItem.type === "string") {
3066
3497
  //check if is translatable via default value, if default value match "{{sTranslationTextKey}}" or "{i18n>sTranslationTextKey}", it is translatable
3067
- oItem._translatedDefaultPlaceholder = this._getManifestDefaultValue(oItem.manifestpath);
3498
+ oItem._translatedDefaultPlaceholder = this._getInitialValue(oItem.manifestpath);
3068
3499
  var sTranslationTextKey = null,
3069
3500
  sPlaceholder = oItem._translatedDefaultPlaceholder;
3070
3501
  if (sPlaceholder) {
@@ -3082,15 +3513,15 @@ sap.ui.define([
3082
3513
  if (sTranslationTextKey) {
3083
3514
  //force translatable, even if it was not explicitly set already
3084
3515
  oItem.translatable = true;
3085
- } else if (oItem.translatable && this.getMode() === Constants.EDITOR_MODE.TRANSLATION && !this.getBeforeLayerChange(oItem.manifestpath)) {
3516
+ } else if (oItem.translatable && this.getMode() === Constants.EDITOR_MODE.TRANSLATION && !this._oBeforeLayerChange[oItem.manifestpath]) {
3086
3517
  //if no translation key which means item defined as string value directly.
3087
3518
  //set the _translatedValue with item manifest value.
3088
3519
  oItem._translatedValue = oItem._translatedDefaultPlaceholder;
3089
3520
  oItem.value = oItem._translatedValue;
3090
3521
  }
3091
3522
  }
3092
- //check if before value still has tranlation key
3093
- oItem._translatedPlaceholder = oItem._beforeValue;
3523
+ //check if before layer value still has tranlation key
3524
+ oItem._translatedPlaceholder = oItem._beforeLayerValue;
3094
3525
  sPlaceholder = oItem._translatedPlaceholder;
3095
3526
  if (sPlaceholder) {
3096
3527
  //value with parameter syntax will not be translated
@@ -3145,13 +3576,13 @@ sap.ui.define([
3145
3576
  }
3146
3577
  } else if (oItem.type === "string[]") {
3147
3578
  var sValueItemsPath = oItem.manifestpath.substring(0, oItem.manifestpath.lastIndexOf("/")) + "/valueItems";
3148
- var oValueItems = this._manifestModel.getProperty(sValueItemsPath);
3579
+ var oValueItems = this._oManifestModel.getProperty(sValueItemsPath);
3149
3580
  if (oValueItems) {
3150
3581
  oItem.valueItems = oValueItems;
3151
3582
  }
3152
3583
  // get value tokens of MultiInput from manifest change for current item
3153
3584
  var sValueTokensPath = oItem.manifestpath.substring(0, oItem.manifestpath.lastIndexOf("/")) + "/valueTokens";
3154
- var oValueTokens = this._manifestModel.getProperty(sValueTokensPath);
3585
+ var oValueTokens = this._oManifestModel.getProperty(sValueTokensPath);
3155
3586
  if (oValueTokens) {
3156
3587
  oItem.valueTokens = oValueTokens;
3157
3588
  }
@@ -3190,9 +3621,9 @@ sap.ui.define([
3190
3621
  var oItem = oItems[n];
3191
3622
  this._addItem(oItem, n);
3192
3623
  }
3193
- // customize the size of card editor, define the size in dt.js
3194
- var editorHeight = this._settingsModel.getProperty("/form/height") !== undefined ? this._settingsModel.getProperty("/form/height") : "350px",
3195
- editorWidth = this._settingsModel.getProperty("/form/width") !== undefined ? this._settingsModel.getProperty("/form/width") : "100%";
3624
+ // customize the size of editor, define the size in dt.js
3625
+ var editorHeight = this._oSettingsModel.getProperty("/form/height") !== undefined ? this._oSettingsModel.getProperty("/form/height") : "350px",
3626
+ editorWidth = this._oSettingsModel.getProperty("/form/width") !== undefined ? this._oSettingsModel.getProperty("/form/width") : "100%";
3196
3627
  if (this.getProperty("height") === "") {
3197
3628
  this.setProperty("height", editorHeight);
3198
3629
  document.body.style.setProperty("--sapUiIntegrationEditorFormHeight", editorHeight);
@@ -3236,37 +3667,61 @@ sap.ui.define([
3236
3667
  * Destroy the editor and the internal instances that it created
3237
3668
  */
3238
3669
  Editor.prototype.destroy = function () {
3670
+ this.cleanAndReset();
3239
3671
  if (this._oPopover) {
3240
3672
  this._oPopover.destroy();
3241
3673
  }
3242
- if (this._oDesigntimeInstance) {
3243
- this._oDesigntimeInstance.destroy();
3244
- }
3245
- var oPreview = this.getAggregation("_preview");
3246
- if (oPreview && oPreview.destroy) {
3247
- oPreview.destroy();
3248
- }
3249
3674
  var oMessageStrip = Element.getElementById(MessageStripId);
3250
3675
  if (oMessageStrip) {
3251
3676
  oMessageStrip.destroy();
3252
3677
  }
3253
- this._manifestModel = null;
3254
- this._beforeManifestModel = null;
3255
- this._oInitialManifestModel = null;
3256
- this._settingsModel = null;
3257
- this._destinationsModel = null;
3678
+ this._oDestinationsModel = null;
3258
3679
  this._oEditorResourceBundles = null;
3259
3680
  document.body.style.removeProperty("--sapUiIntegrationEditorFormWidth");
3260
3681
  document.body.style.removeProperty("--sapUiIntegrationEditorFormHeight");
3261
3682
  Control.prototype.destroy.apply(this, arguments);
3262
3683
  };
3263
3684
 
3685
+ Editor.prototype.cleanAndReset = function () {
3686
+ if (this._oDesigntimeInstance) {
3687
+ this._oDesigntimeInstance.destroy();
3688
+ }
3689
+ this._oInitialManifestModel = null;
3690
+ this._oBeforeLayerManifestModel = null;
3691
+ this._oManifestModel = null;
3692
+ this._oSettingsModel = null;
3693
+ this._oDesigntime = null;
3694
+ this._aAppliedLayerChanges = [];
3695
+ this._oBeforeLayerChange = {};
3696
+ this._oCurrentLayerChange = {};
3697
+
3698
+ this.resetProperty("designtime");
3699
+ this.destroyAggregation("_formContent");
3700
+
3701
+ // destory preview
3702
+ this._destoryPreview();
3703
+
3704
+ this._ready = false;
3705
+ this._fieldReady = false;
3706
+ };
3707
+
3264
3708
  /**
3265
- * Initializes the additional content
3709
+ * Initializes the preview content
3266
3710
  */
3267
3711
  Editor.prototype._initPreview = function () {
3268
3712
  };
3269
3713
 
3714
+ /**
3715
+ * Destory the preview content
3716
+ */
3717
+ Editor.prototype._destoryPreview = function () {
3718
+ var oPreview = this.getAggregation("_preview");
3719
+ if (oPreview) {
3720
+ oPreview.destroy();
3721
+ this.setAggregation("_preview", null);
3722
+ }
3723
+ };
3724
+
3270
3725
  /**
3271
3726
  * Applies the defaults for the designtime settings
3272
3727
  */
@@ -3282,7 +3737,7 @@ sap.ui.define([
3282
3737
  continue;
3283
3738
  }
3284
3739
  if (oItem.manifestpath) {
3285
- oItem.value = this._manifestModel.getProperty(oItem.manifestpath);
3740
+ oItem.value = this._oManifestModel.getProperty(oItem.manifestpath);
3286
3741
  }
3287
3742
  if (oItem.visible === undefined || oItem.visible === null) {
3288
3743
  oItem.visible = true;
@@ -3309,7 +3764,7 @@ sap.ui.define([
3309
3764
 
3310
3765
  oItem.type = "string";
3311
3766
  }
3312
- //only if the value is undefined from the this._manifestModel.getProperty(oItem.manifestpath)
3767
+ //only if the value is undefined from the this._oManifestModel.getProperty(oItem.manifestpath)
3313
3768
  //false, "", 0... are valid values and should not apply the default
3314
3769
  if (oItem.value === undefined || oItem.value === null) {
3315
3770
  switch (oItem.type) {
@@ -3337,9 +3792,9 @@ sap.ui.define([
3337
3792
  var oTexts = {};
3338
3793
  var oDesigntime = {};
3339
3794
  //pull current values
3340
- if (this._appliedLayerManifestChanges && Array.isArray(this._appliedLayerManifestChanges)) {
3341
- for (var i = 0; i < this._appliedLayerManifestChanges.length; i++) {
3342
- var oChanges = this._appliedLayerManifestChanges[i][":designtime"];
3795
+ if (this._aAppliedLayerChanges && Array.isArray(this._aAppliedLayerChanges)) {
3796
+ for (var i = 0; i < this._aAppliedLayerChanges.length; i++) {
3797
+ var oChanges = this._aAppliedLayerChanges[i][":designtime"];
3343
3798
  if (oChanges) {
3344
3799
  var aKeys = Object.keys(oChanges);
3345
3800
  for (var j = 0; j < aKeys.length; j++) {
@@ -3351,9 +3806,9 @@ sap.ui.define([
3351
3806
  //if it is a parameter transformed from destination, add it into form/items as new parameter for this layer
3352
3807
  var oNewParameterConfig = vValue.configuration;
3353
3808
  delete oNewParameterConfig.parameterFromDestination;
3354
- oNewParameterConfig.value = this._manifestModel.getProperty(oNewParameterConfig.manifestpath);
3809
+ oNewParameterConfig.value = this._oManifestModel.getProperty(oNewParameterConfig.manifestpath);
3355
3810
  oNewParameterConfig._settingspath = "/form/items/" + vValue.parameter;
3356
- this._settingsModel.setProperty(oNewParameterConfig._settingspath, oNewParameterConfig);
3811
+ this._oSettingsModel.setProperty(oNewParameterConfig._settingspath, oNewParameterConfig);
3357
3812
  } else {
3358
3813
  // else it should for the object field/object list field
3359
3814
  // add it into designtime of settings
@@ -3361,18 +3816,18 @@ sap.ui.define([
3361
3816
  continue;
3362
3817
  }
3363
3818
  } else {
3364
- this._settingsModel.setProperty(aKeys[j], vValue);
3819
+ this._oSettingsModel.setProperty(aKeys[j], vValue);
3365
3820
  }
3366
3821
  }
3367
3822
  }
3368
- var oAppliedLayerManifestChangeTexts = this._appliedLayerManifestChanges[i]["texts"];
3823
+ var oAppliedLayerManifestChangeTexts = this._aAppliedLayerChanges[i]["texts"];
3369
3824
  if (oAppliedLayerManifestChangeTexts) {
3370
3825
  oTexts = merge(oTexts, oAppliedLayerManifestChangeTexts);
3371
3826
  }
3372
3827
  }
3373
3828
  }
3374
- if (this._currentLayerManifestChanges) {
3375
- var oChanges = this._currentLayerManifestChanges[":designtime"];
3829
+ if (this._oCurrentLayerChange) {
3830
+ var oChanges = this._oCurrentLayerChange[":designtime"];
3376
3831
  if (oChanges) {
3377
3832
  var aKeys = Object.keys(oChanges);
3378
3833
  for (var j = 0; j < aKeys.length; j++) {
@@ -3389,25 +3844,25 @@ sap.ui.define([
3389
3844
  continue;
3390
3845
  }
3391
3846
  }
3392
- if (!this._settingsModel.getProperty(sNext)) {
3847
+ if (!this._oSettingsModel.getProperty(sNext)) {
3393
3848
  //create a _next entry if it does not exist
3394
- this._settingsModel.setProperty(sNext, {});
3849
+ this._oSettingsModel.setProperty(sNext, {});
3395
3850
  }
3396
3851
  var sNext = sPath.substring(0, sPath.lastIndexOf("/") + 1) + "_next",
3397
3852
  sProp = sPath.substring(sPath.lastIndexOf("/") + 1);
3398
- this._settingsModel.setProperty(sNext + "/" + sProp, vValue);
3853
+ this._oSettingsModel.setProperty(sNext + "/" + sProp, vValue);
3399
3854
  }
3400
3855
  }
3401
- var ocurrentLayerManifestChangeTexts = this._currentLayerManifestChanges["texts"];
3856
+ var ocurrentLayerManifestChangeTexts = this._oCurrentLayerChange["texts"];
3402
3857
  if (ocurrentLayerManifestChangeTexts) {
3403
3858
  oTexts = merge(oTexts, ocurrentLayerManifestChangeTexts);
3404
3859
  }
3405
3860
  }
3406
3861
  if (!deepEqual(oTexts, {})) {
3407
- this._settingsModel.setProperty("/texts", oTexts);
3862
+ this._oSettingsModel.setProperty("/texts", oTexts);
3408
3863
  }
3409
3864
  if (!deepEqual(oDesigntime, {})) {
3410
- this._settingsModel.setProperty("/:designtime", oDesigntime);
3865
+ this._oSettingsModel.setProperty("/:designtime", oDesigntime);
3411
3866
  }
3412
3867
  };
3413
3868
  /**
@@ -3450,7 +3905,7 @@ sap.ui.define([
3450
3905
  oSettings.form = oSettings.form || {};
3451
3906
  oSettings.form.items = oSettings.form.items || {};
3452
3907
  if (oSettings && oConfiguration && oConfiguration.destinations) {
3453
- this._destinationGroupAtTop = false;
3908
+ this._bDestinationGroupAtTop = false;
3454
3909
  var oItems = oSettings.form.items,
3455
3910
  oDestinations = {},
3456
3911
  oHost = this.getHostInstance();
@@ -3462,8 +3917,8 @@ sap.ui.define([
3462
3917
  _settingspath: "/form/items/destination.group"
3463
3918
  };
3464
3919
  if (oItems["destination.group"]) {
3465
- // if the 1st item is destination group, set this._destinationGroupAtTop to true. Then render destination group at top
3466
- this._destinationGroupAtTop = Object.keys(oItems)[0] === "destination.group";
3920
+ // if the 1st item is destination group, set this._bDestinationGroupAtTop to true. Then render destination group at top
3921
+ this._bDestinationGroupAtTop = Object.keys(oItems)[0] === "destination.group";
3467
3922
  oDestinationGroup = merge(oDestinationGroup, oItems["destination.group"]);
3468
3923
  delete oItems["destination.group"];
3469
3924
  }
@@ -3491,22 +3946,22 @@ sap.ui.define([
3491
3946
  }
3492
3947
  oDestinations[n + ".destination"] = oDestination;
3493
3948
  });
3494
- // reorder the items according by this._destinationGroupAtTop
3495
- if (this._destinationGroupAtTop) {
3949
+ // reorder the items according by this._bDestinationGroupAtTop
3950
+ if (this._bDestinationGroupAtTop) {
3496
3951
  oSettings.form.items = merge(oDestinations, oItems);
3497
3952
  } else {
3498
3953
  oSettings.form.items = merge(oItems, oDestinations);
3499
3954
  }
3500
3955
  var getDestinationsDone = false;
3501
3956
  if (oHost) {
3502
- this._destinationsModel.setProperty("/_loading", true);
3503
- this._destinationsModel.checkUpdate(true);
3957
+ this._oDestinationsModel.setProperty("/_loading", true);
3958
+ this._oDestinationsModel.checkUpdate(true);
3504
3959
  this.getHostInstance().getDestinations().then(function (a) {
3505
3960
  getDestinationsDone = true;
3506
- this._destinationsModel.setProperty("/_values", a);
3507
- this._destinationsModel.setProperty("/_loading", false);
3508
- this._destinationsModel.setSizeLimit(a.length);
3509
- this._destinationsModel.checkUpdate(true);
3961
+ this._oDestinationsModel.setProperty("/_values", a);
3962
+ this._oDestinationsModel.setProperty("/_loading", false);
3963
+ this._oDestinationsModel.setSizeLimit(a.length);
3964
+ this._oDestinationsModel.checkUpdate(true);
3510
3965
  setTimeout(function () {
3511
3966
  this.fireDestinationReady();
3512
3967
  }.bind(this), 100);
@@ -3517,16 +3972,16 @@ sap.ui.define([
3517
3972
  if (getDestinationsDone) {
3518
3973
  return;
3519
3974
  }
3520
- this._destinationsModel.setProperty("/_values", b);
3521
- this._destinationsModel.setProperty("/_loading", false);
3522
- this._destinationsModel.setSizeLimit(b.length);
3523
- this._destinationsModel.checkUpdate(true);
3975
+ this._oDestinationsModel.setProperty("/_values", b);
3976
+ this._oDestinationsModel.setProperty("/_loading", false);
3977
+ this._oDestinationsModel.setSizeLimit(b.length);
3978
+ this._oDestinationsModel.checkUpdate(true);
3524
3979
  setTimeout(function () {
3525
3980
  this.fireDestinationReady();
3526
3981
  }.bind(this), 100);
3527
3982
  }.bind(this)).catch(function (e) {
3528
- this._destinationsModel.setProperty("/_loading", false);
3529
- this._destinationsModel.checkUpdate(true);
3983
+ this._oDestinationsModel.setProperty("/_loading", false);
3984
+ this._oDestinationsModel.checkUpdate(true);
3530
3985
  setTimeout(function () {
3531
3986
  this.fireDestinationReady();
3532
3987
  }.bind(this), 100);
@@ -3553,15 +4008,21 @@ sap.ui.define([
3553
4008
  };
3554
4009
 
3555
4010
  /**
3556
- * Returns the default value that was given by the developer for the given path
4011
+ * Returns the initial value that was given by the developer for the given path
3557
4012
  * @param {string} sPath
3558
4013
  */
3559
- Editor.prototype._getManifestDefaultValue = function (sPath) {
4014
+ Editor.prototype._getInitialValue = function (sPath) {
3560
4015
  return this._oInitialManifestModel.getProperty(sPath);
3561
4016
  };
3562
- Editor.prototype._getManifestBeforelValue = function (sPath) {
3563
- return this._beforeManifestModel.getProperty(sPath);
4017
+
4018
+ /**
4019
+ * Returns the value including changes in the before layer manifest model for the given path
4020
+ * @param {string} sPath
4021
+ */
4022
+ Editor.prototype._getBeforeLayerValue = function (sPath) {
4023
+ return this._oBeforeLayerManifestModel.getProperty(sPath);
3564
4024
  };
4025
+
3565
4026
  /**
3566
4027
  * Returns whether the value is translatable via the handlbars translation syntax {{KEY}}
3567
4028
  * For other than string values false is returned