@openui5/sap.ui.rta 1.135.0 → 1.136.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 (213) hide show
  1. package/REUSE.toml +649 -0
  2. package/THIRDPARTY.txt +22 -22
  3. package/package.json +6 -6
  4. package/src/sap/ui/rta/.library +2 -2
  5. package/src/sap/ui/rta/Client.js +2 -2
  6. package/src/sap/ui/rta/RuntimeAuthoring.js +92 -19
  7. package/src/sap/ui/rta/Utils.js +19 -2
  8. package/src/sap/ui/rta/api/startAdaptation.js +1 -1
  9. package/src/sap/ui/rta/api/startKeyUserAdaptation.js +1 -1
  10. package/src/sap/ui/rta/appVariant/AppVariantDialog.js +1 -1
  11. package/src/sap/ui/rta/appVariant/AppVariantManager.js +2 -2
  12. package/src/sap/ui/rta/appVariant/AppVariantOverviewDialog.js +1 -1
  13. package/src/sap/ui/rta/appVariant/AppVariantUtils.js +1 -1
  14. package/src/sap/ui/rta/appVariant/Feature.js +1 -1
  15. package/src/sap/ui/rta/appVariant/S4HanaCloudBackend.js +1 -1
  16. package/src/sap/ui/rta/appVariant/Utils.js +8 -15
  17. package/src/sap/ui/rta/appVariant/manageApps/webapp/Component.js +1 -1
  18. package/src/sap/ui/rta/appVariant/manageApps/webapp/controller/ManageApps.controller.js +30 -44
  19. package/src/sap/ui/rta/appVariant/manageApps/webapp/index.js +1 -1
  20. package/src/sap/ui/rta/appVariant/manageApps/webapp/model/models.js +1 -1
  21. package/src/sap/ui/rta/command/AddIFrame.js +2 -2
  22. package/src/sap/ui/rta/command/AddProperty.js +2 -2
  23. package/src/sap/ui/rta/command/AddXML.js +2 -2
  24. package/src/sap/ui/rta/command/AddXMLAtExtensionPoint.js +2 -2
  25. package/src/sap/ui/rta/command/AnnotationCommand.js +2 -2
  26. package/src/sap/ui/rta/command/BaseCommand.js +2 -2
  27. package/src/sap/ui/rta/command/BindProperty.js +2 -2
  28. package/src/sap/ui/rta/command/Combine.js +2 -2
  29. package/src/sap/ui/rta/command/CommandFactory.js +2 -2
  30. package/src/sap/ui/rta/command/CompositeCommand.js +2 -2
  31. package/src/sap/ui/rta/command/ControlVariantConfigure.js +2 -2
  32. package/src/sap/ui/rta/command/ControlVariantSave.js +2 -2
  33. package/src/sap/ui/rta/command/ControlVariantSaveAs.js +2 -2
  34. package/src/sap/ui/rta/command/ControlVariantSetTitle.js +2 -2
  35. package/src/sap/ui/rta/command/ControlVariantSwitch.js +2 -2
  36. package/src/sap/ui/rta/command/CreateContainer.js +2 -2
  37. package/src/sap/ui/rta/command/CustomAdd.js +2 -2
  38. package/src/sap/ui/rta/command/ExtendControllerCommand.js +4 -3
  39. package/src/sap/ui/rta/command/FlexCommand.js +2 -2
  40. package/src/sap/ui/rta/command/LREPSerializer.js +2 -2
  41. package/src/sap/ui/rta/command/LocalReset.js +2 -2
  42. package/src/sap/ui/rta/command/ManifestCommand.js +2 -2
  43. package/src/sap/ui/rta/command/Move.js +2 -2
  44. package/src/sap/ui/rta/command/Property.js +2 -2
  45. package/src/sap/ui/rta/command/Remove.js +2 -2
  46. package/src/sap/ui/rta/command/Rename.js +2 -2
  47. package/src/sap/ui/rta/command/Resize.js +2 -2
  48. package/src/sap/ui/rta/command/Reveal.js +2 -2
  49. package/src/sap/ui/rta/command/Settings.js +2 -2
  50. package/src/sap/ui/rta/command/Split.js +2 -2
  51. package/src/sap/ui/rta/command/Stack.js +20 -5
  52. package/src/sap/ui/rta/command/compVariant/CompVariantContent.js +2 -2
  53. package/src/sap/ui/rta/command/compVariant/CompVariantSaveAs.js +2 -2
  54. package/src/sap/ui/rta/command/compVariant/CompVariantSwitch.js +2 -2
  55. package/src/sap/ui/rta/command/compVariant/CompVariantUpdate.js +2 -2
  56. package/src/sap/ui/rta/command/manifest/AddLibrary.js +2 -2
  57. package/src/sap/ui/rta/enablement/TestDelegate.js +1 -1
  58. package/src/sap/ui/rta/enablement/elementActionTest.js +2 -2
  59. package/src/sap/ui/rta/library.js +3 -3
  60. package/src/sap/ui/rta/messagebundle.properties +170 -9
  61. package/src/sap/ui/rta/messagebundle_ar.properties +104 -6
  62. package/src/sap/ui/rta/messagebundle_bg.properties +104 -6
  63. package/src/sap/ui/rta/messagebundle_ca.properties +107 -9
  64. package/src/sap/ui/rta/messagebundle_cnr.properties +105 -7
  65. package/src/sap/ui/rta/messagebundle_cs.properties +102 -4
  66. package/src/sap/ui/rta/messagebundle_cy.properties +104 -6
  67. package/src/sap/ui/rta/messagebundle_da.properties +103 -5
  68. package/src/sap/ui/rta/messagebundle_de.properties +113 -15
  69. package/src/sap/ui/rta/messagebundle_el.properties +101 -3
  70. package/src/sap/ui/rta/messagebundle_en.properties +104 -6
  71. package/src/sap/ui/rta/messagebundle_en_GB.properties +104 -6
  72. package/src/sap/ui/rta/messagebundle_en_US_saprigi.properties +2 -0
  73. package/src/sap/ui/rta/messagebundle_es.properties +108 -10
  74. package/src/sap/ui/rta/messagebundle_es_MX.properties +112 -14
  75. package/src/sap/ui/rta/messagebundle_et.properties +102 -4
  76. package/src/sap/ui/rta/messagebundle_fi.properties +105 -7
  77. package/src/sap/ui/rta/messagebundle_fr.properties +113 -15
  78. package/src/sap/ui/rta/messagebundle_fr_CA.properties +105 -7
  79. package/src/sap/ui/rta/messagebundle_hi.properties +104 -6
  80. package/src/sap/ui/rta/messagebundle_hr.properties +114 -16
  81. package/src/sap/ui/rta/messagebundle_hu.properties +103 -5
  82. package/src/sap/ui/rta/messagebundle_id.properties +112 -14
  83. package/src/sap/ui/rta/messagebundle_it.properties +102 -4
  84. package/src/sap/ui/rta/messagebundle_iw.properties +104 -6
  85. package/src/sap/ui/rta/messagebundle_ja.properties +116 -18
  86. package/src/sap/ui/rta/messagebundle_kk.properties +103 -5
  87. package/src/sap/ui/rta/messagebundle_ko.properties +104 -6
  88. package/src/sap/ui/rta/messagebundle_lt.properties +104 -6
  89. package/src/sap/ui/rta/messagebundle_lv.properties +103 -5
  90. package/src/sap/ui/rta/messagebundle_mk.properties +107 -9
  91. package/src/sap/ui/rta/messagebundle_ms.properties +114 -16
  92. package/src/sap/ui/rta/messagebundle_nl.properties +103 -5
  93. package/src/sap/ui/rta/messagebundle_no.properties +107 -9
  94. package/src/sap/ui/rta/messagebundle_pl.properties +103 -5
  95. package/src/sap/ui/rta/messagebundle_pt.properties +102 -4
  96. package/src/sap/ui/rta/messagebundle_pt_PT.properties +102 -4
  97. package/src/sap/ui/rta/messagebundle_ro.properties +102 -4
  98. package/src/sap/ui/rta/messagebundle_ru.properties +106 -8
  99. package/src/sap/ui/rta/messagebundle_sh.properties +105 -7
  100. package/src/sap/ui/rta/messagebundle_sk.properties +102 -4
  101. package/src/sap/ui/rta/messagebundle_sl.properties +102 -4
  102. package/src/sap/ui/rta/messagebundle_sr.properties +105 -7
  103. package/src/sap/ui/rta/messagebundle_sv.properties +103 -5
  104. package/src/sap/ui/rta/messagebundle_th.properties +103 -5
  105. package/src/sap/ui/rta/messagebundle_tr.properties +102 -4
  106. package/src/sap/ui/rta/messagebundle_uk.properties +104 -6
  107. package/src/sap/ui/rta/messagebundle_vi.properties +104 -6
  108. package/src/sap/ui/rta/messagebundle_zh_CN.properties +103 -5
  109. package/src/sap/ui/rta/messagebundle_zh_TW.properties +104 -6
  110. package/src/sap/ui/rta/plugin/AddXMLAtExtensionPoint.js +2 -2
  111. package/src/sap/ui/rta/plugin/AddXMLPlugin.js +54 -32
  112. package/src/sap/ui/rta/plugin/BaseCreate.js +2 -2
  113. package/src/sap/ui/rta/plugin/Combine.js +2 -2
  114. package/src/sap/ui/rta/plugin/CompVariant.js +114 -114
  115. package/src/sap/ui/rta/plugin/ControlVariant.js +37 -54
  116. package/src/sap/ui/rta/plugin/CreateContainer.js +2 -2
  117. package/src/sap/ui/rta/plugin/CutPaste.js +2 -2
  118. package/src/sap/ui/rta/plugin/DragDrop.js +2 -2
  119. package/src/sap/ui/rta/plugin/ExtendControllerPlugin.js +62 -38
  120. package/src/sap/ui/rta/plugin/LocalReset.js +4 -3
  121. package/src/sap/ui/rta/plugin/Plugin.js +30 -12
  122. package/src/sap/ui/rta/plugin/RTAElementMover.js +2 -2
  123. package/src/sap/ui/rta/plugin/Remove.js +2 -2
  124. package/src/sap/ui/rta/plugin/Resize.js +2 -2
  125. package/src/sap/ui/rta/plugin/Selection.js +2 -2
  126. package/src/sap/ui/rta/plugin/Settings.js +5 -2
  127. package/src/sap/ui/rta/plugin/Split.js +2 -2
  128. package/src/sap/ui/rta/plugin/Stretch.js +2 -2
  129. package/src/sap/ui/rta/plugin/additionalElements/ActionExtractor.js +2 -2
  130. package/src/sap/ui/rta/plugin/additionalElements/AddElementsDialog.js +2 -2
  131. package/src/sap/ui/rta/plugin/additionalElements/AdditionalElementsAnalyzer.js +1 -1
  132. package/src/sap/ui/rta/plugin/additionalElements/AdditionalElementsPlugin.js +2 -2
  133. package/src/sap/ui/rta/plugin/additionalElements/AdditionalElementsUtils.js +2 -2
  134. package/src/sap/ui/rta/plugin/additionalElements/CommandBuilder.js +2 -2
  135. package/src/sap/ui/rta/plugin/annotations/AnnotationChangeDialog.fragment.xml +4 -4
  136. package/src/sap/ui/rta/plugin/annotations/AnnotationChangeDialog.js +26 -13
  137. package/src/sap/ui/rta/plugin/annotations/AnnotationChangeDialogController.js +30 -31
  138. package/src/sap/ui/rta/plugin/annotations/AnnotationPlugin.js +13 -7
  139. package/src/sap/ui/rta/plugin/annotations/AnnotationTypes.js +1 -1
  140. package/src/sap/ui/rta/plugin/iframe/AddIFrame.js +8 -2
  141. package/src/sap/ui/rta/plugin/iframe/AddIFrameDialog.js +2 -2
  142. package/src/sap/ui/rta/plugin/iframe/AddIFrameDialogController.js +1 -1
  143. package/src/sap/ui/rta/plugin/iframe/urlCleaner.js +1 -1
  144. package/src/sap/ui/rta/plugin/{Rename.js → rename/Rename.js} +29 -67
  145. package/src/sap/ui/rta/plugin/rename/RenameDialog.fragment.xml +63 -0
  146. package/src/sap/ui/rta/plugin/rename/RenameDialog.js +140 -0
  147. package/src/sap/ui/rta/service/Action.js +2 -2
  148. package/src/sap/ui/rta/service/ControllerExtension.js +2 -2
  149. package/src/sap/ui/rta/service/Outline.js +2 -2
  150. package/src/sap/ui/rta/service/Property.js +2 -2
  151. package/src/sap/ui/rta/service/Receiver.js +1 -1
  152. package/src/sap/ui/rta/service/Selection.js +2 -2
  153. package/src/sap/ui/rta/service/SupportTools.js +2 -2
  154. package/src/sap/ui/rta/service/index.js +1 -1
  155. package/src/sap/ui/rta/themes/base/library.source.less +1 -1
  156. package/src/sap/ui/rta/themes/sap_hcb/library.source.less +1 -1
  157. package/src/sap/ui/rta/toolbar/ActionsMenu.fragment.xml +6 -0
  158. package/src/sap/ui/rta/toolbar/Adaptation.fragment.xml +1 -6
  159. package/src/sap/ui/rta/toolbar/Adaptation.js +12 -3
  160. package/src/sap/ui/rta/toolbar/AdaptationRenderer.js +1 -1
  161. package/src/sap/ui/rta/toolbar/Base.js +2 -2
  162. package/src/sap/ui/rta/toolbar/BaseRenderer.js +1 -1
  163. package/src/sap/ui/rta/toolbar/Fiori.js +20 -10
  164. package/src/sap/ui/rta/toolbar/FioriLike.js +7 -5
  165. package/src/sap/ui/rta/toolbar/OverflowToolbarButton.js +2 -2
  166. package/src/sap/ui/rta/toolbar/Standalone.js +2 -2
  167. package/src/sap/ui/rta/toolbar/contextBased/ManageAdaptations.js +1 -1
  168. package/src/sap/ui/rta/toolbar/contextBased/SaveAsAdaptation.js +2 -2
  169. package/src/sap/ui/rta/toolbar/translation/Translation.js +2 -2
  170. package/src/sap/ui/rta/toolbar/versioning/Versioning.js +2 -2
  171. package/src/sap/ui/rta/util/Animation.js +1 -1
  172. package/src/sap/ui/rta/util/BindingsExtractor.js +1 -1
  173. package/src/sap/ui/rta/util/PluginManager.js +8 -6
  174. package/src/sap/ui/rta/util/PopupManager.js +2 -2
  175. package/src/sap/ui/rta/util/ReloadManager.js +2 -2
  176. package/src/sap/ui/rta/util/ServiceEventBus.js +2 -2
  177. package/src/sap/ui/rta/util/ServiceManager.js +2 -2
  178. package/src/sap/ui/rta/util/adaptationStarter.js +1 -1
  179. package/src/sap/ui/rta/util/changeVisualization/ChangeCategories.js +1 -1
  180. package/src/sap/ui/rta/util/changeVisualization/ChangeIndicator.js +2 -2
  181. package/src/sap/ui/rta/util/changeVisualization/ChangeIndicatorRegistry.js +2 -2
  182. package/src/sap/ui/rta/util/changeVisualization/ChangeStates.js +1 -1
  183. package/src/sap/ui/rta/util/changeVisualization/ChangeVisualization.js +3 -3
  184. package/src/sap/ui/rta/util/changeVisualization/ChangeVisualizationUtils.js +1 -1
  185. package/src/sap/ui/rta/util/changeVisualization/commands/CombineVisualization.js +1 -1
  186. package/src/sap/ui/rta/util/changeVisualization/commands/CreateContainerVisualization.js +1 -1
  187. package/src/sap/ui/rta/util/changeVisualization/commands/MoveVisualization.js +1 -1
  188. package/src/sap/ui/rta/util/changeVisualization/commands/RenameVisualization.js +1 -1
  189. package/src/sap/ui/rta/util/changeVisualization/commands/SplitVisualization.js +1 -1
  190. package/src/sap/ui/rta/util/changeVisualization/commands/getCommandVisualization.js +1 -1
  191. package/src/sap/ui/rta/util/guidedTour/GuidedTour.js +242 -0
  192. package/src/sap/ui/rta/util/guidedTour/TourMarker.fragment.xml +50 -0
  193. package/src/sap/ui/rta/util/guidedTour/content/GeneralTour.js +205 -0
  194. package/src/sap/ui/rta/util/hasStableId.js +1 -1
  195. package/src/sap/ui/rta/util/isReuseComponent.js +1 -1
  196. package/src/sap/ui/rta/util/showMessageBox.js +1 -1
  197. package/src/sap/ui/rta/util/validateFlexEnabled.js +1 -1
  198. package/src/sap/ui/rta/util/validateStableIds.js +1 -1
  199. package/src/sap/ui/rta/util/validateText.js +1 -1
  200. package/src/sap/ui/rta/util/whatsNew/WhatsNew.js +8 -4
  201. package/src/sap/ui/rta/util/whatsNew/WhatsNewDialog.fragment.xml +1 -1
  202. package/src/sap/ui/rta/util/whatsNew/WhatsNewOverview.js +1 -1
  203. package/src/sap/ui/rta/util/whatsNew/WhatsNewUtils.js +1 -1
  204. package/src/sap/ui/rta/util/whatsNew/whatsNewContent/WhatsNewFeatures.js +85 -1
  205. package/src/sap/ui/rta/util/whatsNew/whatsNewContent/whatsNewImages/ChangeLabelsAction.png +0 -0
  206. package/src/sap/ui/rta/util/whatsNew/whatsNewContent/whatsNewImages/DisplayBehavior.png +0 -0
  207. package/src/sap/ui/rta/util/whatsNew/whatsNewContent/whatsNewImages/ExtendedActions.png +0 -0
  208. package/src/sap/ui/rta/util/whatsNew/whatsNewContent/whatsNewImages/GuidedTour.png +0 -0
  209. package/src/sap/ui/rta/util/whatsNew/whatsNewContent/whatsNewImages/ReloadButtonToolbar.png +0 -0
  210. package/src/sap/ui/rta/util/whatsNew/whatsNewContent/whatsNewImages/RenameDialog.png +0 -0
  211. package/ui5.yaml +1 -1
  212. package/.reuse/dep5 +0 -471
  213. package/src/sap/ui/rta/plugin/RenameHandler.js +0 -477
@@ -0,0 +1,242 @@
1
+ /*!
2
+ * OpenUI5
3
+ * (c) Copyright 2025 SAP SE or an SAP affiliate company.
4
+ * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
+ */
6
+
7
+ sap.ui.define([
8
+ "sap/m/MessageBox",
9
+ "sap/ui/base/ManagedObject",
10
+ "sap/ui/core/Element",
11
+ "sap/ui/core/Fragment",
12
+ "sap/ui/model/json/JSONModel",
13
+ "sap/ui/model/resource/ResourceModel",
14
+ "sap/ui/rta/Utils"
15
+ ], function(
16
+ MessageBox,
17
+ ManagedObject,
18
+ Element,
19
+ Fragment,
20
+ JSONModel,
21
+ ResourceModel,
22
+ Utils
23
+ ) {
24
+ "use strict";
25
+
26
+ /**
27
+ * @class Constructor for a new sap.ui.rta.util.guidedTour.GuidedTour
28
+ * @extends sap.ui.base.ManagedObject
29
+ * @author SAP SE
30
+ * @version 1.136.1
31
+ * @constructor
32
+ * @since 1.136
33
+ * @private
34
+ * @ui5-restricted sap.ui.rta
35
+ */
36
+ const GuidedTour = ManagedObject.extend("sap.ui.rta.util.guidedTour.GuidedTour", {
37
+ metadata: {
38
+ properties: {
39
+ steps: { type: "object" },
40
+ initialStateSelectors: { type: "object" },
41
+ currentStep: { type: "int", defaultValue: 0 },
42
+ forwardDirection: { type: "boolean", defaultValue: true }
43
+ },
44
+ events: {
45
+ tourClosed: {}
46
+ }
47
+ }
48
+ });
49
+
50
+ function waitForElementVisibility(oTargetElementId) {
51
+ return new Promise((resolve, reject) => {
52
+ const oTargetElement = Element.getElementById(oTargetElementId);
53
+ const oTargetElementDomRef = oTargetElement?.getDomRef();
54
+ let bResolved = false;
55
+
56
+ if (Utils.isElementVisible(oTargetElementDomRef)) {
57
+ resolve(oTargetElement);
58
+ return;
59
+ }
60
+
61
+ const oObserver = new MutationObserver(() => {
62
+ const observedElement = Element.getElementById(oTargetElementId);
63
+ const oObservedElementDomRef = observedElement?.getDomRef();
64
+ if (Utils.isElementVisible(oObservedElementDomRef)) {
65
+ bResolved = true;
66
+ oObserver.disconnect();
67
+ resolve(observedElement);
68
+ }
69
+ });
70
+
71
+ // Start observing the document for changes
72
+ oObserver.observe(document.body, {
73
+ childList: true,
74
+ subtree: true,
75
+ attributes: true
76
+ });
77
+
78
+ // Set a timeout to reject the promise and clean up the observer if the element is not found
79
+ setTimeout(() => {
80
+ if (!bResolved) {
81
+ oObserver.disconnect();
82
+ reject(new Error(`Element with ID "${oTargetElementId}" not found`));
83
+ }
84
+ }, 700);
85
+ });
86
+ }
87
+
88
+ function skipStep() {
89
+ if (this.getProperty("forwardDirection") === true) {
90
+ this.onNextPress();
91
+ } else {
92
+ this.onPreviousPress();
93
+ }
94
+ }
95
+
96
+ function onEscKeyDown(oEvent) {
97
+ if (oEvent.key === "Escape" || oEvent.key === "Esc") {
98
+ this.onClosePress();
99
+ }
100
+ }
101
+
102
+ GuidedTour.prototype.autoStart = async function(oTourContent) {
103
+ const sResponse = await Utils.showMessageBox(
104
+ "information",
105
+ "TXT_TOUR_GENERAL_DESCRIPTION",
106
+ {
107
+ actions: [MessageBox.Action.YES, MessageBox.Action.NO],
108
+ emphasizedAction: MessageBox.Action.YES,
109
+ titleKey: "TIT_TOUR_GENERAL_TITLE",
110
+ id: "autoStartGuidedTour"
111
+ }
112
+ );
113
+ if (sResponse === MessageBox.Action.YES) {
114
+ this.start(oTourContent);
115
+ } else {
116
+ this.fireTourClosed();
117
+ }
118
+ };
119
+
120
+ GuidedTour.prototype.start = async function(oTourContent) {
121
+ this.setProperty("steps", oTourContent.steps);
122
+ this.setProperty("initialStateSelectors", oTourContent.initialStateSelectors);
123
+ const oRTAResourceModel = new ResourceModel({ bundleName: "sap.ui.rta.messagebundle" });
124
+ this._oPopover = await Fragment.load({
125
+ id: "guidedTourMarker",
126
+ name: "sap.ui.rta.util.guidedTour.TourMarker",
127
+ controller: this
128
+ });
129
+ this.oGuidedTourModel = new JSONModel();
130
+ this.updateGuidedTourModel(0);
131
+ this._oPopover.setModel(oRTAResourceModel, "i18n");
132
+ this._oPopover.setModel(this.oGuidedTourModel);
133
+
134
+ // Add the event listener to the popup's DOM element after it is rendered
135
+ this._oPopover.addEventDelegate({
136
+ onAfterRendering: function() {
137
+ const oPopupElement = this._oPopover.getDomRef();
138
+ if (oPopupElement) {
139
+ oPopupElement.addEventListener("keydown", onEscKeyDown.bind(this));
140
+ }
141
+ }.bind(this)
142
+ });
143
+
144
+ this.showMarker(0);
145
+ };
146
+
147
+ GuidedTour.prototype.showMarker = async function(nStep) {
148
+ const oStepConfig = this.getProperty("steps")[nStep];
149
+ const sSelector = oStepConfig.markerSelector;
150
+ const aActionSelectors = oStepConfig.actionSelectors || [];
151
+
152
+ try {
153
+ for (const sActionSelector of aActionSelectors) {
154
+ const oActionControl = await waitForElementVisibility.call(this, sActionSelector);
155
+ oActionControl.firePress();
156
+ }
157
+
158
+ const oAffectedControl = oStepConfig.waitForElement
159
+ ? await waitForElementVisibility.call(this, sSelector)
160
+ : Element.getElementById(sSelector);
161
+
162
+ // Open the popover if the element is visible
163
+ if (oAffectedControl && oAffectedControl.getVisible()) {
164
+ this._oPopover.openBy(oAffectedControl);
165
+ } else {
166
+ skipStep.call(this);
167
+ }
168
+ } catch (error) {
169
+ skipStep.call(this);
170
+ }
171
+ };
172
+
173
+ GuidedTour.prototype.updateGuidedTourModel = function(nStepIndex) {
174
+ const bIsLastStep = nStepIndex === this.getProperty("steps").length - 1;
175
+ const bIsFirstStep = nStepIndex === 0;
176
+
177
+ this.oGuidedTourModel.setData({
178
+ ...this.oGuidedTourModel.getData(),
179
+ ...this.getProperty("steps")[nStepIndex],
180
+ isLastStep: bIsLastStep,
181
+ isFirstStep: bIsFirstStep,
182
+ progress: 100 / this.getProperty("steps").length * (nStepIndex + 1)
183
+ });
184
+ };
185
+
186
+ GuidedTour.prototype.onNextPress = function() {
187
+ this.setProperty("forwardDirection", true);
188
+ this._oPopover.close();
189
+ const nCurrentStep = this.getCurrentStep();
190
+
191
+ if (nCurrentStep < this.getProperty("steps").length - 1) {
192
+ const nNextStep = nCurrentStep + 1;
193
+ this.updateGuidedTourModel(nNextStep);
194
+ this.setCurrentStep(nNextStep);
195
+ this.showMarker(nNextStep);
196
+ } else {
197
+ this.fireTourClosed();
198
+ this.destroy();
199
+ }
200
+ };
201
+
202
+ GuidedTour.prototype.onPreviousPress = function() {
203
+ this.setProperty("forwardDirection", false);
204
+ this._oPopover.close();
205
+ const nCurrentStep = this.getCurrentStep();
206
+ const nPreviousStep = nCurrentStep - 1;
207
+ this.updateGuidedTourModel(nPreviousStep);
208
+ this.setCurrentStep(nPreviousStep);
209
+ this.showMarker(nPreviousStep);
210
+ };
211
+
212
+ GuidedTour.prototype.returnToInitialState = async function() {
213
+ try {
214
+ const oInitialStateSelectors = this.getProperty("initialStateSelectors");
215
+ if (oInitialStateSelectors.length === 0) {
216
+ return;
217
+ }
218
+ for (const sActionSelector of oInitialStateSelectors) {
219
+ const oActionControl = await waitForElementVisibility.call(this, sActionSelector);
220
+ oActionControl.firePress();
221
+ }
222
+ } catch (error) {
223
+ this.destroy();
224
+ }
225
+ };
226
+
227
+ GuidedTour.prototype.onClosePress = async function() {
228
+ this._oPopover.close();
229
+ this.fireTourClosed();
230
+ this.destroy();
231
+ await this.returnToInitialState();
232
+ };
233
+
234
+ GuidedTour.prototype.destroy = function(...aArgs) {
235
+ ManagedObject.prototype.destroy.apply(this, aArgs);
236
+ if (this._oPopover) {
237
+ this._oPopover.destroy();
238
+ }
239
+ };
240
+
241
+ return GuidedTour;
242
+ });
@@ -0,0 +1,50 @@
1
+ <core:FragmentDefinition
2
+ xmlns="sap.m"
3
+ xmlns:core="sap.ui.core">
4
+ <Popover
5
+ id="guidedTourMarkerPopover"
6
+ title="{/title}"
7
+ class="sapUiResponsivePadding--header sapUiResponsivePadding--footer sapUiContentPadding"
8
+ placement="PreferredBottomOrFlip"
9
+ modal="true"
10
+ contentWidth="32rem"
11
+ initialFocus="continueButton">
12
+ <endButton>
13
+ <Button
14
+ id="closeButton"
15
+ icon="sap-icon://decline"
16
+ press=".onClosePress"
17
+ tooltip="{i18n>TOOLTIP_GUIDED_TOUR_END}" />
18
+ </endButton>
19
+ <content>
20
+ <VBox>
21
+ <FormattedText htmlText="{/description}" class="sapUiTinyMargin"/>
22
+ <List
23
+ visible="{= ${/listContent}.length > 0}"
24
+ items="{/listContent}"
25
+ id="navigationList">
26
+ <StandardListItem wrapping="true" title="{title}" description="{description}" icon="{icon}" />
27
+ </List>
28
+ <ProgressIndicator
29
+ id="progressIndicator"
30
+ percentValue="{/progress}"
31
+ state="None"
32
+ displayOnly="true"/>
33
+ </VBox>
34
+ </content>
35
+ <footer>
36
+ <OverflowToolbar>
37
+ <ToolbarSpacer/>
38
+ <Button
39
+ id="previewsButton"
40
+ text="{i18n>BTN_GUIDED_TOUR_PREV}"
41
+ visible="{= !${/isFirstStep}}"
42
+ press=".onPreviousPress" />
43
+ <Button
44
+ id="continueButton"
45
+ text="{= ${/isLastStep} ? ${i18n>BTN_GUIDED_TOUR_END} : ${i18n>BTN_GUIDED_TOUR_NEXT} }"
46
+ press=".onNextPress" />
47
+ </OverflowToolbar>
48
+ </footer>
49
+ </Popover>
50
+ </core:FragmentDefinition>
@@ -0,0 +1,205 @@
1
+ /*!
2
+ * OpenUI5
3
+ * (c) Copyright 2025 SAP SE or an SAP affiliate company.
4
+ * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
+ */
6
+
7
+ sap.ui.define([
8
+ "sap/ui/core/Element",
9
+ "sap/ui/core/Lib"
10
+ ], function(
11
+ Element,
12
+ Lib
13
+ ) {
14
+ "use strict";
15
+
16
+ const GeneralTour = {};
17
+
18
+ const oTextResources = Lib.getResourceBundleFor("sap.ui.rta");
19
+
20
+ function filterAvailableBurgerMenuActions(oGeneralTour) {
21
+ const oControlsModelData = Element.getElementById("sapUIRta_toolbar").getModel("controls").getData();
22
+ const aAvailableBurgerMenuActions = {
23
+ newFeaturesOverview: oControlsModelData.newFeaturesOverview.visible,
24
+ translation: oControlsModelData.translation.visible,
25
+ generalTour: true,
26
+ appVariantMenu: oControlsModelData.appVariantMenu.visible,
27
+ restore: oControlsModelData.restore.visible
28
+ };
29
+
30
+ // Find the index of the burger menu step
31
+ const nBurgerMenuStepIndex = oGeneralTour.steps.findIndex((oStep) =>
32
+ oStep.title === oTextResources.getText("TIT_TOUR_GENERAL_STEP_BURGER_MENU_TITLE")
33
+ );
34
+
35
+ // Set the available actions
36
+ oGeneralTour.steps[nBurgerMenuStepIndex].listContent = oGeneralTour.steps[nBurgerMenuStepIndex].listContent.filter((oItem) =>
37
+ aAvailableBurgerMenuActions[oItem.id]
38
+ );
39
+
40
+ return oGeneralTour;
41
+ }
42
+
43
+ /**
44
+ * The `oGeneralTourContent` object defines the steps for the Guided Tour in the RTA toolbar.
45
+ * Each step provides information about a specific feature or functionality.
46
+ *
47
+ * To add a new step, include an object in the `steps` array with the following structure:
48
+ *
49
+ * {
50
+ * title: <Title of the step>,
51
+ * description: <Description of the step>,
52
+ * listContent: [
53
+ * {
54
+ * id: <id of the action>,
55
+ * title: <Title of the action>,
56
+ * description: <Description of the action>,
57
+ * icon: <Icon representing the action>
58
+ * }
59
+ * ],
60
+ * markerSelector: <Selector for the UI element to highlight during the step>,
61
+ * actionSelectors: [<Selectors for elements to trigger actions on during the steps>],
62
+ * waitForElement: <Boolean indicating whether to wait for the element to become visible>
63
+ * }
64
+ */
65
+
66
+ const oGeneralTourContent = {
67
+ initialStateSelectors: ["sapUIRta_toolbar_fragment--sapUiRta_adaptationSwitcherButton-button"],
68
+ steps: [
69
+ {
70
+ title: oTextResources.getText("TIT_TOUR_GENERAL_STEP_UI_ADAPTATION_BUTTON_TITLE"),
71
+ description: oTextResources.getText("TXT_TOUR_GENERAL_STEP_UI_ADAPTATION_BUTTON_DESCRIPTION"),
72
+ listContent: [],
73
+ markerSelector: "sapUIRta_toolbar_fragment--sapUiRta_adaptationSwitcherButton-button",
74
+ actionSelectors: ["sapUIRta_toolbar_fragment--sapUiRta_adaptationSwitcherButton-button"]
75
+ },
76
+ {
77
+ title: oTextResources.getText("TIT_TOUR_GENERAL_STEP_NAVIGATION_BUTTON_TITLE"),
78
+ description: oTextResources.getText("TXT_TOUR_GENERAL_STEP_NAVIGATION_BUTTON_DESCRIPTION"),
79
+ listContent: [],
80
+ markerSelector: "sapUIRta_toolbar_fragment--sapUiRta_navigationSwitcherButton-button",
81
+ actionSelectors: ["sapUIRta_toolbar_fragment--sapUiRta_navigationSwitcherButton-button"]
82
+ },
83
+ {
84
+ title: oTextResources.getText("TIT_TOUR_GENERAL_STEP_VISUALIZATION_BUTTON_TITLE"),
85
+ description: oTextResources.getText("TXT_TOUR_GENERAL_STEP_VISUALIZATION_BUTTON_DESCRIPTION"),
86
+ listContent: [],
87
+ markerSelector: "sapUIRta_toolbar_fragment--sapUiRta_visualizationSwitcherButton-button",
88
+ actionSelectors: ["sapUIRta_toolbar_fragment--sapUiRta_visualizationSwitcherButton-button"]
89
+ },
90
+ {
91
+ title: oTextResources.getText("TIT_TOUR_GENERAL_STEP_CHANGE_LIST_DROPDOWN_TITLE"),
92
+ description: oTextResources.getText("TXT_TOUR_GENERAL_STEP_CHANGE_LIST_DROPDOWN_DESCRIPTION"),
93
+ listContent: [],
94
+ markerSelector:
95
+ "sapUIRta_toolbar_fragment--sapUiRta_toggleChangeVisualizationMenuButton--ChangeIndicatorCategorySelection--popover",
96
+ waitForElement: true,
97
+ actionSelectors: [
98
+ "sapUIRta_toolbar_fragment--sapUiRta_visualizationSwitcherButton-button",
99
+ "sapUIRta_toolbar_fragment--sapUiRta_toggleChangeVisualizationMenuButton"
100
+ ]
101
+ },
102
+ {
103
+ title: oTextResources.getText("TIT_TOUR_GENERAL_STEP_SAVE_BUTTON_TITLE"),
104
+ description: oTextResources.getText("TXT_TOUR_GENERAL_STEP_SAVE_BUTTON_DESCRIPTION"),
105
+ listContent: [],
106
+ markerSelector: "sapUIRta_toolbar_fragment--sapUiRta_save",
107
+ waitForElement: true,
108
+ actionSelectors: ["sapUIRta_toolbar_fragment--sapUiRta_adaptationSwitcherButton-button"]
109
+ },
110
+ {
111
+ title: oTextResources.getText("TIT_TOUR_GENERAL_STEP_UNDO_BUTTON_TITLE"),
112
+ description: oTextResources.getText("TXT_TOUR_GENERAL_STEP_UNDO_BUTTON_DESCRIPTION"),
113
+ listContent: [],
114
+ markerSelector: "sapUIRta_toolbar_fragment--sapUiRta_undo"
115
+ },
116
+ {
117
+ title: oTextResources.getText("TIT_TOUR_GENERAL_STEP_REDO_BUTTON_TITLE"),
118
+ description: oTextResources.getText("TXT_TOUR_GENERAL_STEP_REDO_BUTTON_DESCRIPTION"),
119
+ listContent: [],
120
+ markerSelector: "sapUIRta_toolbar_fragment--sapUiRta_redo"
121
+ },
122
+ {
123
+ title: oTextResources.getText("TIT_TOUR_GENERAL_STEP_ACTIVATE_VERSION_BUTTON_TITLE"),
124
+ description: oTextResources.getText("TXT_TOUR_GENERAL_STEP_ACTIVATE_VERSION_BUTTON_DESCRIPTION"),
125
+ listContent: [],
126
+ markerSelector: "sapUIRta_toolbar_fragment--sapUiRta_activate"
127
+ },
128
+ {
129
+ title: oTextResources.getText("TIT_TOUR_GENERAL_STEP_VERSIONS_DROPDOWN_TITLE"),
130
+ description: oTextResources.getText("TXT_TOUR_GENERAL_STEP_VERSIONS_DROPDOWN_DESCRIPTION"),
131
+ listContent: [],
132
+ markerSelector: "sapUIRta_toolbar_fragment--sapUiRta_versionHistoryDialog--originalVersionList",
133
+ waitForElement: true,
134
+ actionSelectors: ["sapUIRta_toolbar_fragment--sapUiRta_versionButton"]
135
+ },
136
+ {
137
+ title: oTextResources.getText("TIT_TOUR_GENERAL_STEP_PUBLISH_BUTTON_TITLE"),
138
+ description: oTextResources.getText("TXT_TOUR_GENERAL_STEP_PUBLISH_BUTTON_DESCRIPTION"),
139
+ listContent: [],
140
+ markerSelector: "sapUIRta_toolbar_fragment--sapUiRta_publishVersion"
141
+ },
142
+ {
143
+ title: oTextResources.getText("TIT_TOUR_GENERAL_STEP_BURGER_MENU_TITLE"),
144
+ description: oTextResources.getText("TXT_TOUR_GENERAL_STEP_BURGER_MENU_DESCRIPTION"),
145
+ listContent: [
146
+ {
147
+ id: "translation",
148
+ title: oTextResources.getText("BTN_TRANSLATE"),
149
+ description: oTextResources.getText("TXT_TOUR_GENERAL_STEP_BURGER_MENU_TRANSLATIONS"),
150
+ icon: "sap-icon://translate"
151
+ },
152
+ {
153
+ id: "appVariantMenu",
154
+ title: oTextResources.getText("BTN_MANAGE_APPS_TXT"),
155
+ description: oTextResources.getText("TXT_TOUR_GENERAL_STEP_BURGER_MENU_APP_VARIANTS"),
156
+ icon: "sap-icon://BusinessSuiteInAppSymbols/icon-variant-configuration"
157
+ },
158
+ {
159
+ id: "restore",
160
+ title: oTextResources.getText("BTN_RESTORE"),
161
+ description: oTextResources.getText("TXT_TOUR_GENERAL_STEP_BURGER_MENU_RESTORE"),
162
+ icon: "sap-icon://reset"
163
+ },
164
+ {
165
+ id: "newFeaturesOverview",
166
+ title: oTextResources.getText("BTN_WHATS_NEW_DIALOG_OVERVIEW"),
167
+ description: oTextResources.getText("TXT_TOUR_GENERAL_STEP_BURGER_MENU_NEW_FEATURES"),
168
+ icon: "sap-icon://newspaper"
169
+ },
170
+ {
171
+ id: "generalTour",
172
+ title: oTextResources.getText("BTN_GUIDED_TOUR_START"),
173
+ description: oTextResources.getText("TXT_TOUR_GENERAL_STEP_BURGER_MENU_GENERAL_TOUR"),
174
+ icon: "sap-icon://map-3"
175
+ }
176
+ ],
177
+ markerSelector: "sapUIRta_toolbar_fragment--sapUiRta_actionsMenu"
178
+ },
179
+ {
180
+ title: oTextResources.getText("TIT_TOUR_GENERAL_STEP_CONTEXT_BASED_ADAPTATIONS_TITLE"),
181
+ description: oTextResources.getText("TXT_TOUR_GENERAL_STEP_CONTEXT_BASED_ADAPTATIONS_DESCRIPTION"),
182
+ listContent: [],
183
+ markerSelector: "sapUIRta_toolbar_fragment--sapUiRta_contextBasedAdaptationsButton"
184
+ },
185
+ {
186
+ title: oTextResources.getText("TIT_TOUR_GENERAL_STEP_FEEDBACK_BUTTON_TITLE"),
187
+ description: oTextResources.getText("TXT_TOUR_GENERAL_STEP_FEEDBACK_BUTTON_DESCRIPTION"),
188
+ listContent: [],
189
+ markerSelector: "sapUIRta_toolbar_fragment--sapUiRta_feedback"
190
+ },
191
+ {
192
+ title: oTextResources.getText("TIT_TOUR_GENERAL_STEP_EXIT_BUTTON_TITLE"),
193
+ description: oTextResources.getText("TXT_TOUR_GENERAL_STEP_EXIT_BUTTON_DESCRIPTION"),
194
+ listContent: [],
195
+ markerSelector: "sapUIRta_toolbar_fragment--sapUiRta_exit"
196
+ }
197
+ ]
198
+ };
199
+
200
+ GeneralTour.getTourContent = function() {
201
+ return filterAvailableBurgerMenuActions(oGeneralTourContent);
202
+ };
203
+
204
+ return GeneralTour;
205
+ });
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * OpenUI5
3
- * (c) Copyright 2009-2025 SAP SE or an SAP affiliate company.
3
+ * (c) Copyright 2025 SAP SE or an SAP affiliate company.
4
4
  * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
5
  */
6
6
 
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * OpenUI5
3
- * (c) Copyright 2009-2025 SAP SE or an SAP affiliate company.
3
+ * (c) Copyright 2025 SAP SE or an SAP affiliate company.
4
4
  * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
5
  */
6
6
 
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * OpenUI5
3
- * (c) Copyright 2009-2025 SAP SE or an SAP affiliate company.
3
+ * (c) Copyright 2025 SAP SE or an SAP affiliate company.
4
4
  * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
5
  */
6
6
 
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * OpenUI5
3
- * (c) Copyright 2009-2025 SAP SE or an SAP affiliate company.
3
+ * (c) Copyright 2025 SAP SE or an SAP affiliate company.
4
4
  * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
5
  */
6
6
 
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * OpenUI5
3
- * (c) Copyright 2009-2025 SAP SE or an SAP affiliate company.
3
+ * (c) Copyright 2025 SAP SE or an SAP affiliate company.
4
4
  * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
5
  */
6
6
 
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * OpenUI5
3
- * (c) Copyright 2009-2025 SAP SE or an SAP affiliate company.
3
+ * (c) Copyright 2025 SAP SE or an SAP affiliate company.
4
4
  * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
5
  */
6
6
  sap.ui.define([
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * OpenUI5
3
- * (c) Copyright 2009-2025 SAP SE or an SAP affiliate company.
3
+ * (c) Copyright 2025 SAP SE or an SAP affiliate company.
4
4
  * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
5
  */
6
6
 
@@ -33,7 +33,7 @@ sap.ui.define([
33
33
  * @class Constructor for a new sap.ui.rta.util.whatsNew.WhatsNew
34
34
  * @extends sap.ui.base.ManagedObject
35
35
  * @author SAP SE
36
- * @version 1.135.0
36
+ * @version 1.136.1
37
37
  * @constructor
38
38
  * @since 1.129
39
39
  * @private
@@ -56,14 +56,18 @@ sap.ui.define([
56
56
  this.aUnseenFeatures = await WhatsNewUtils.getFilteredFeatures(aDontShowAgainFeatureIds, this.getLayer());
57
57
  };
58
58
 
59
- WhatsNew.prototype.initializeWhatsNewDialog = async function() {
59
+ WhatsNew.prototype.initializeWhatsNewDialog = async function(aExcludeFeatureIds = []) {
60
60
  const aDontShowAgainFeatureIds = await FeaturesAPI.getSeenFeatureIds({ layer: this.getLayer() });
61
61
  await this.setDontShowAgainFeatureIds(aDontShowAgainFeatureIds);
62
62
  if (this.aUnseenFeatures.length === 0 || this.getLayer() !== "CUSTOMER") {
63
63
  return;
64
64
  }
65
65
  const oWhatsNewDialogModel = new JSONModel();
66
- oWhatsNewDialogModel.setData({ featureCollection: this.aUnseenFeatures });
66
+ const aVisibleFeatures = this.aUnseenFeatures.filter((oFeature) => !aExcludeFeatureIds.includes(oFeature.featureId));
67
+ if (aVisibleFeatures.length === 0) {
68
+ return;
69
+ }
70
+ oWhatsNewDialogModel.setData({ featureCollection: aVisibleFeatures });
67
71
  if (!this.oWhatsNewDialog) {
68
72
  await this.createWhatsNewDialog(oWhatsNewDialogModel);
69
73
  }
@@ -24,7 +24,7 @@
24
24
  <Title text="{whatsNewModel>title}" class="sapUiMediumMarginTop sapUiSmallMarginBegin sapUiTinyMarginBottom" level="H3"/>
25
25
  <f:Card width="100%" height="24rem" class="sapUiSmallMarginBottom">
26
26
  <f:content>
27
- <Page width="100%" showHeader="false" backgroundDesign="Transparent">
27
+ <Page showHeader="false" backgroundDesign="Transparent">
28
28
  <VBox items="{path: 'whatsNewModel>information', templateShareable: false}" class="sapUiSmallMargin">
29
29
  <HBox alignItems="Center" class="sapUiTinyMargin">
30
30
  <FormattedText
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * OpenUI5
3
- * (c) Copyright 2009-2025 SAP SE or an SAP affiliate company.
3
+ * (c) Copyright 2025 SAP SE or an SAP affiliate company.
4
4
  * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
5
  */
6
6
 
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * OpenUI5
3
- * (c) Copyright 2009-2025 SAP SE or an SAP affiliate company.
3
+ * (c) Copyright 2025 SAP SE or an SAP affiliate company.
4
4
  * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
5
  */
6
6