@openui5/sap.ui.rta 1.117.1 → 1.119.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 (177) hide show
  1. package/.eslintrc.json +25 -1
  2. package/THIRDPARTY.txt +2 -2
  3. package/package.json +6 -6
  4. package/src/sap/ui/rta/.library +1 -1
  5. package/src/sap/ui/rta/Client.js +32 -21
  6. package/src/sap/ui/rta/RuntimeAuthoring.js +107 -97
  7. package/src/sap/ui/rta/Utils.js +10 -16
  8. package/src/sap/ui/rta/api/startAdaptation.js +0 -1
  9. package/src/sap/ui/rta/api/startKeyUserAdaptation.js +0 -1
  10. package/src/sap/ui/rta/appVariant/AppVariantDialog.js +24 -26
  11. package/src/sap/ui/rta/appVariant/AppVariantManager.js +1 -3
  12. package/src/sap/ui/rta/appVariant/AppVariantOverviewDialog.js +5 -4
  13. package/src/sap/ui/rta/appVariant/AppVariantUtils.js +21 -21
  14. package/src/sap/ui/rta/appVariant/Feature.js +20 -30
  15. package/src/sap/ui/rta/appVariant/S4HanaCloudBackend.js +21 -17
  16. package/src/sap/ui/rta/appVariant/Utils.js +4 -3
  17. package/src/sap/ui/rta/appVariant/manageApps/webapp/Component.js +8 -7
  18. package/src/sap/ui/rta/appVariant/manageApps/webapp/controller/ManageApps.controller.js +17 -17
  19. package/src/sap/ui/rta/appVariant/manageApps/webapp/manifest.json +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 +10 -7
  22. package/src/sap/ui/rta/command/AddProperty.js +1 -3
  23. package/src/sap/ui/rta/command/AddXML.js +7 -7
  24. package/src/sap/ui/rta/command/AddXMLAtExtensionPoint.js +5 -5
  25. package/src/sap/ui/rta/command/AppDescriptorCommand.js +1 -3
  26. package/src/sap/ui/rta/command/BaseCommand.js +1 -3
  27. package/src/sap/ui/rta/command/BindProperty.js +4 -5
  28. package/src/sap/ui/rta/command/Combine.js +1 -3
  29. package/src/sap/ui/rta/command/CommandFactory.js +7 -11
  30. package/src/sap/ui/rta/command/CompositeCommand.js +2 -6
  31. package/src/sap/ui/rta/command/ControlVariantConfigure.js +2 -2
  32. package/src/sap/ui/rta/command/ControlVariantSave.js +1 -1
  33. package/src/sap/ui/rta/command/ControlVariantSaveAs.js +4 -4
  34. package/src/sap/ui/rta/command/ControlVariantSetTitle.js +1 -1
  35. package/src/sap/ui/rta/command/ControlVariantSwitch.js +4 -3
  36. package/src/sap/ui/rta/command/CreateContainer.js +1 -3
  37. package/src/sap/ui/rta/command/CustomAdd.js +1 -2
  38. package/src/sap/ui/rta/command/FlexCommand.js +2 -7
  39. package/src/sap/ui/rta/command/LREPSerializer.js +1 -3
  40. package/src/sap/ui/rta/command/LocalReset.js +1 -1
  41. package/src/sap/ui/rta/command/Move.js +1 -3
  42. package/src/sap/ui/rta/command/Property.js +1 -3
  43. package/src/sap/ui/rta/command/Remove.js +1 -3
  44. package/src/sap/ui/rta/command/Rename.js +1 -3
  45. package/src/sap/ui/rta/command/Resize.js +1 -1
  46. package/src/sap/ui/rta/command/Reveal.js +1 -3
  47. package/src/sap/ui/rta/command/Settings.js +5 -7
  48. package/src/sap/ui/rta/command/Split.js +1 -3
  49. package/src/sap/ui/rta/command/Stack.js +3 -5
  50. package/src/sap/ui/rta/command/appDescriptor/AddLibrary.js +1 -3
  51. package/src/sap/ui/rta/command/compVariant/CompVariantContent.js +1 -1
  52. package/src/sap/ui/rta/command/compVariant/CompVariantSaveAs.js +1 -1
  53. package/src/sap/ui/rta/command/compVariant/CompVariantSwitch.js +4 -3
  54. package/src/sap/ui/rta/command/compVariant/CompVariantUpdate.js +1 -1
  55. package/src/sap/ui/rta/enablement/TestDelegate.js +7 -8
  56. package/src/sap/ui/rta/enablement/elementActionTest.js +25 -29
  57. package/src/sap/ui/rta/library.js +2 -3
  58. package/src/sap/ui/rta/messagebundle.properties +13 -7
  59. package/src/sap/ui/rta/messagebundle_ar.properties +8 -8
  60. package/src/sap/ui/rta/messagebundle_bg.properties +20 -20
  61. package/src/sap/ui/rta/messagebundle_ca.properties +7 -7
  62. package/src/sap/ui/rta/messagebundle_cs.properties +10 -10
  63. package/src/sap/ui/rta/messagebundle_cy.properties +8 -8
  64. package/src/sap/ui/rta/messagebundle_da.properties +7 -7
  65. package/src/sap/ui/rta/messagebundle_de.properties +9 -9
  66. package/src/sap/ui/rta/messagebundle_el.properties +7 -7
  67. package/src/sap/ui/rta/messagebundle_en.properties +11 -8
  68. package/src/sap/ui/rta/messagebundle_en_GB.properties +8 -8
  69. package/src/sap/ui/rta/messagebundle_en_US_sappsd.properties +8 -8
  70. package/src/sap/ui/rta/messagebundle_en_US_saprigi.properties +7 -7
  71. package/src/sap/ui/rta/messagebundle_en_US_saptrc.properties +8 -8
  72. package/src/sap/ui/rta/messagebundle_es.properties +8 -8
  73. package/src/sap/ui/rta/messagebundle_es_MX.properties +13 -13
  74. package/src/sap/ui/rta/messagebundle_et.properties +6 -6
  75. package/src/sap/ui/rta/messagebundle_fi.properties +9 -9
  76. package/src/sap/ui/rta/messagebundle_fr.properties +9 -9
  77. package/src/sap/ui/rta/messagebundle_fr_CA.properties +9 -9
  78. package/src/sap/ui/rta/messagebundle_hi.properties +12 -12
  79. package/src/sap/ui/rta/messagebundle_hr.properties +9 -9
  80. package/src/sap/ui/rta/messagebundle_hu.properties +10 -10
  81. package/src/sap/ui/rta/messagebundle_id.properties +10 -10
  82. package/src/sap/ui/rta/messagebundle_it.properties +9 -9
  83. package/src/sap/ui/rta/messagebundle_iw.properties +8 -8
  84. package/src/sap/ui/rta/messagebundle_ja.properties +21 -21
  85. package/src/sap/ui/rta/messagebundle_kk.properties +9 -9
  86. package/src/sap/ui/rta/messagebundle_ko.properties +7 -7
  87. package/src/sap/ui/rta/messagebundle_lt.properties +8 -8
  88. package/src/sap/ui/rta/messagebundle_lv.properties +8 -8
  89. package/src/sap/ui/rta/messagebundle_ms.properties +11 -11
  90. package/src/sap/ui/rta/messagebundle_nl.properties +8 -8
  91. package/src/sap/ui/rta/messagebundle_no.properties +9 -9
  92. package/src/sap/ui/rta/messagebundle_pl.properties +9 -9
  93. package/src/sap/ui/rta/messagebundle_pt.properties +9 -9
  94. package/src/sap/ui/rta/messagebundle_pt_PT.properties +8 -8
  95. package/src/sap/ui/rta/messagebundle_ro.properties +9 -9
  96. package/src/sap/ui/rta/messagebundle_ru.properties +8 -8
  97. package/src/sap/ui/rta/messagebundle_sh.properties +8 -8
  98. package/src/sap/ui/rta/messagebundle_sk.properties +9 -9
  99. package/src/sap/ui/rta/messagebundle_sl.properties +9 -9
  100. package/src/sap/ui/rta/messagebundle_sv.properties +8 -8
  101. package/src/sap/ui/rta/messagebundle_th.properties +14 -14
  102. package/src/sap/ui/rta/messagebundle_tr.properties +8 -8
  103. package/src/sap/ui/rta/messagebundle_uk.properties +10 -10
  104. package/src/sap/ui/rta/messagebundle_vi.properties +8 -8
  105. package/src/sap/ui/rta/messagebundle_zh_CN.properties +9 -9
  106. package/src/sap/ui/rta/messagebundle_zh_TW.properties +8 -8
  107. package/src/sap/ui/rta/plugin/AddXMLAtExtensionPoint.js +1 -2
  108. package/src/sap/ui/rta/plugin/BaseCreate.js +2 -3
  109. package/src/sap/ui/rta/plugin/Combine.js +1 -2
  110. package/src/sap/ui/rta/plugin/ControlVariant.js +12 -8
  111. package/src/sap/ui/rta/plugin/CreateContainer.js +1 -2
  112. package/src/sap/ui/rta/plugin/CutPaste.js +13 -13
  113. package/src/sap/ui/rta/plugin/DragDrop.js +17 -16
  114. package/src/sap/ui/rta/plugin/EasyAdd.js +12 -10
  115. package/src/sap/ui/rta/plugin/EasyRemove.js +11 -9
  116. package/src/sap/ui/rta/plugin/LocalReset.js +4 -2
  117. package/src/sap/ui/rta/plugin/Plugin.js +6 -10
  118. package/src/sap/ui/rta/plugin/RTAElementMover.js +3 -6
  119. package/src/sap/ui/rta/plugin/Remove.js +8 -9
  120. package/src/sap/ui/rta/plugin/Rename.js +9 -9
  121. package/src/sap/ui/rta/plugin/RenameHandler.js +21 -22
  122. package/src/sap/ui/rta/plugin/Resize.js +11 -10
  123. package/src/sap/ui/rta/plugin/Selection.js +33 -14
  124. package/src/sap/ui/rta/plugin/Settings.js +11 -11
  125. package/src/sap/ui/rta/plugin/Split.js +1 -2
  126. package/src/sap/ui/rta/plugin/Stretch.js +18 -20
  127. package/src/sap/ui/rta/plugin/additionalElements/ActionExtractor.js +4 -9
  128. package/src/sap/ui/rta/plugin/additionalElements/AddElementsDialog.js +5 -9
  129. package/src/sap/ui/rta/plugin/additionalElements/AdditionalElementsAnalyzer.js +4 -4
  130. package/src/sap/ui/rta/plugin/additionalElements/AdditionalElementsPlugin.js +41 -43
  131. package/src/sap/ui/rta/plugin/additionalElements/AdditionalElementsUtils.js +2 -3
  132. package/src/sap/ui/rta/plugin/additionalElements/CommandBuilder.js +5 -6
  133. package/src/sap/ui/rta/plugin/iframe/AddIFrame.js +9 -7
  134. package/src/sap/ui/rta/plugin/iframe/AddIFrameDialog.fragment.xml +45 -3
  135. package/src/sap/ui/rta/plugin/iframe/AddIFrameDialog.js +22 -23
  136. package/src/sap/ui/rta/plugin/iframe/AddIFrameDialogController.js +58 -30
  137. package/src/sap/ui/rta/service/Action.js +5 -6
  138. package/src/sap/ui/rta/service/ControllerExtension.js +8 -9
  139. package/src/sap/ui/rta/service/Outline.js +13 -11
  140. package/src/sap/ui/rta/service/Property.js +3 -4
  141. package/src/sap/ui/rta/service/Receiver.js +2 -2
  142. package/src/sap/ui/rta/service/Selection.js +2 -3
  143. package/src/sap/ui/rta/service/SupportTools.js +2 -3
  144. package/src/sap/ui/rta/themes/base/AddIFrame.less +6 -1
  145. package/src/sap/ui/rta/themes/base/Toolbar.base.less +4 -0
  146. package/src/sap/ui/rta/toolbar/Adaptation.js +26 -19
  147. package/src/sap/ui/rta/toolbar/Base.js +25 -11
  148. package/src/sap/ui/rta/toolbar/BaseRenderer.js +2 -2
  149. package/src/sap/ui/rta/toolbar/FeedbackDialog.fragment.xml +4 -4
  150. package/src/sap/ui/rta/toolbar/Fiori.js +20 -20
  151. package/src/sap/ui/rta/toolbar/FioriLike.js +1 -2
  152. package/src/sap/ui/rta/toolbar/OverflowToolbarButton.js +5 -6
  153. package/src/sap/ui/rta/toolbar/Personalization.js +4 -4
  154. package/src/sap/ui/rta/toolbar/Standalone.js +1 -2
  155. package/src/sap/ui/rta/toolbar/contextBased/ManageAdaptations.js +43 -20
  156. package/src/sap/ui/rta/toolbar/contextBased/SaveAsAdaptation.js +16 -7
  157. package/src/sap/ui/rta/toolbar/translation/Translation.js +13 -14
  158. package/src/sap/ui/rta/toolbar/versioning/Versioning.js +31 -28
  159. package/src/sap/ui/rta/util/Animation.js +1 -3
  160. package/src/sap/ui/rta/util/PluginManager.js +1 -3
  161. package/src/sap/ui/rta/util/PopupManager.js +23 -19
  162. package/src/sap/ui/rta/util/ReloadManager.js +4 -4
  163. package/src/sap/ui/rta/util/ServiceEventBus.js +1 -1
  164. package/src/sap/ui/rta/util/changeVisualization/ChangeIndicator.js +18 -16
  165. package/src/sap/ui/rta/util/changeVisualization/ChangeIndicatorRegistry.js +6 -9
  166. package/src/sap/ui/rta/util/changeVisualization/ChangeVisualization.js +9 -10
  167. package/src/sap/ui/rta/util/changeVisualization/ChangeVisualizationUtils.js +1 -1
  168. package/src/sap/ui/rta/util/changeVisualization/commands/CombineVisualization.js +1 -1
  169. package/src/sap/ui/rta/util/changeVisualization/commands/CreateContainerVisualization.js +2 -2
  170. package/src/sap/ui/rta/util/changeVisualization/commands/MoveVisualization.js +4 -4
  171. package/src/sap/ui/rta/util/changeVisualization/commands/SplitVisualization.js +2 -2
  172. package/src/sap/ui/rta/util/hasStableId.js +1 -1
  173. package/src/sap/ui/rta/util/showMessageBox.js +2 -1
  174. package/src/sap/ui/rta/util/validateStableIds.js +1 -1
  175. package/src/sap/ui/rta/util/validateText.js +1 -1
  176. package/src/sap/ui/rta/util/StylesLoader.js +0 -31
  177. package/src/sap/ui/rta/util/UrlParser.js +0 -51
@@ -120,19 +120,19 @@ sap.ui.define([
120
120
  * @class The runtime authoring allows to adapt the fields of a running application.
121
121
  * @extends sap.ui.base.ManagedObject
122
122
  * @author SAP SE
123
- * @version 1.117.1
123
+ * @version 1.119.0
124
124
  * @constructor
125
125
  * @private
126
126
  * @since 1.30
127
127
  * @alias sap.ui.rta.RuntimeAuthoring
128
- * @experimental This class is experimental and provides only limited functionality. Also the API might be changed in future.
129
128
  */
130
129
  var RuntimeAuthoring = ManagedObject.extend("sap.ui.rta.RuntimeAuthoring", {
131
130
  metadata: {
132
131
  // ---- control specific ----
133
132
  library: "sap.ui.rta",
134
133
  associations: {
135
- /** The root control which the runtime authoring should handle. Can only be sap.ui.core.Control or sap.ui.core.UIComponent */
134
+ /** The root control which the runtime authoring should handle.
135
+ * Can only be sap.ui.core.Control or sap.ui.core.UIComponent */
136
136
  rootControl: {
137
137
  type: "sap.ui.base.ManagedObject"
138
138
  }
@@ -163,7 +163,6 @@ sap.ui.define([
163
163
 
164
164
  /**
165
165
  * Map with flex-related settings
166
- * @experimental
167
166
  */
168
167
  flexSettings: {
169
168
  type: "object",
@@ -232,9 +231,10 @@ sap.ui.define([
232
231
  _dependents: null,
233
232
  _sStatus: STOPPED,
234
233
  _bNavigationModeWarningShown: false,
235
- constructor: function() {
234
+ // eslint-disable-next-line object-shorthand
235
+ constructor: function(...aArgs) {
236
236
  // call parent constructor
237
- ManagedObject.apply(this, arguments);
237
+ ManagedObject.apply(this, aArgs);
238
238
 
239
239
  this._dependents = {};
240
240
  this._mServices = {};
@@ -318,13 +318,13 @@ sap.ui.define([
318
318
  bCreateGetter = typeof bCreateGetter === "undefined" ? true : !!bCreateGetter;
319
319
  if (!(sName in this._dependents)) {
320
320
  if (sName && bCreateGetter) {
321
- this["get" + capitalize(sName, 0)] = this.getDependent.bind(this, sName);
321
+ this[`get${capitalize(sName, 0)}`] = this.getDependent.bind(this, sName);
322
322
  }
323
323
  this._dependents[sName || oObject.getId()] = oObject;
324
324
  } else {
325
325
  throw DtUtil.createError(
326
326
  "RuntimeAuthoring#addDependent",
327
- DtUtil.printf("Can't add dependency with same key '{0}'", sName),
327
+ `Can't add dependency with same key '${sName}'`,
328
328
  "sap.ui.rta"
329
329
  );
330
330
  }
@@ -402,11 +402,16 @@ sap.ui.define([
402
402
  mFlexSettings.layer = sUriLayer.toUpperCase();
403
403
  }
404
404
 
405
- // TODO: this will lead to incorrect information if this function is first called with scenario or baseId and then called again without.
405
+ // TODO: this will lead to incorrect information if this function is first called
406
+ // with scenario or baseId and then called again without.
406
407
  if (mFlexSettings.scenario || mFlexSettings.baseId) {
407
- var sLRepRootNamespace = FlexUtils.buildLrepRootNamespace(mFlexSettings.baseId, mFlexSettings.scenario, mFlexSettings.projectId);
408
+ var sLRepRootNamespace = FlexUtils.buildLrepRootNamespace(
409
+ mFlexSettings.baseId,
410
+ mFlexSettings.scenario,
411
+ mFlexSettings.projectId
412
+ );
408
413
  mFlexSettings.rootNamespace = sLRepRootNamespace;
409
- mFlexSettings.namespace = sLRepRootNamespace + "changes/";
414
+ mFlexSettings.namespace = `${sLRepRootNamespace}changes/`;
410
415
  }
411
416
 
412
417
  Utils.setRtaStyleClassName(mFlexSettings.layer);
@@ -414,7 +419,8 @@ sap.ui.define([
414
419
  };
415
420
 
416
421
  /**
417
- * Checks the uri parameters for "sap-ui-layer" and returns either the current layer or the layer from the uri parameter, if there is one
422
+ * Checks the uri parameters for "sap-ui-layer" and returns either the current layer
423
+ * or the layer from the uri parameter, if there is one
418
424
  *
419
425
  * @returns {string} The layer after checking the uri parameters
420
426
  * @private
@@ -424,9 +430,7 @@ sap.ui.define([
424
430
  };
425
431
 
426
432
  RuntimeAuthoring.prototype.getRootControlInstance = function() {
427
- if (!this._oRootControl) {
428
- this._oRootControl = ElementUtil.getElementInstance(this.getRootControl());
429
- }
433
+ this._oRootControl ||= ElementUtil.getElementInstance(this.getRootControl());
430
434
  return this._oRootControl;
431
435
  };
432
436
 
@@ -539,8 +543,14 @@ sap.ui.define([
539
543
  .then(onStackModified.bind(this))
540
544
  .then(function() {
541
545
  // Resolve the CSS variable set in themes/base/OverlayWithScrollbar.css
542
- Overlay.getOverlayContainer().get(0).style.setProperty("--sap-ui-rta-scrollbar-scrollWidth", DOMUtil.getScrollbarWidth() + "px");
543
- Overlay.getOverlayContainer().get(0).style.setProperty("--sap-ui-rta-scrollbar-scrollWidthPlusTwo", DOMUtil.getScrollbarWidth() + 2 + "px");
546
+ Overlay.getOverlayContainer().get(0).style.setProperty(
547
+ "--sap-ui-rta-scrollbar-scrollWidth",
548
+ `${DOMUtil.getScrollbarWidth()}px`
549
+ );
550
+ Overlay.getOverlayContainer().get(0).style.setProperty(
551
+ "--sap-ui-rta-scrollbar-scrollWidthPlusTwo",
552
+ `${DOMUtil.getScrollbarWidth() + 2}px`
553
+ );
544
554
  return oDesignTimePromise;
545
555
  })
546
556
  .then(function() {
@@ -792,7 +802,7 @@ sap.ui.define([
792
802
  *
793
803
  * @protected
794
804
  */
795
- RuntimeAuthoring.prototype.destroy = function() {
805
+ RuntimeAuthoring.prototype.destroy = function(...aArgs) {
796
806
  var aDependentKeys = Object.keys(this._dependents);
797
807
  aDependentKeys.forEach(function(sDependentKey) {
798
808
  // Destroy should be called with suppress invalidate = true here to prevent static UI Area invalidation
@@ -835,7 +845,7 @@ sap.ui.define([
835
845
 
836
846
  window.onbeforeunload = this._oldUnloadHandler;
837
847
 
838
- ManagedObject.prototype.destroy.apply(this, arguments);
848
+ ManagedObject.prototype.destroy.apply(this, aArgs);
839
849
  };
840
850
 
841
851
  // ---- API ----
@@ -934,9 +944,10 @@ sap.ui.define([
934
944
  * @private
935
945
  * @ui5-restricted Visual Editor
936
946
  */
937
- RuntimeAuthoring.prototype.condenseAndSaveChanges = function(/* aChanges */) {
938
- // for now there is no functionality to only consider passed changes during condensing, so the standard save functionality is triggered
939
- return this._serializeToLrep.apply(this, arguments);
947
+ RuntimeAuthoring.prototype.condenseAndSaveChanges = function(...aArgs/* aChanges */) {
948
+ // for now there is no functionality to only consider passed changes during condensing,
949
+ // so the standard save functionality is triggered
950
+ return this._serializeToLrep(...aArgs);
940
951
  };
941
952
 
942
953
  /**
@@ -1008,9 +1019,11 @@ sap.ui.define([
1008
1019
  }
1009
1020
 
1010
1021
  /**
1011
- * Checks the publish button, draft buttons(activate and delete) and app variant support (i.e. Save As and Overview of App Variants) availability
1012
- * The publish button shall not be available if the system is productive and if a merge error occurred during merging changes into the view on startup
1013
- * The app variant support shall not be available if the system is productive and if the platform is not enabled (See Feature.js) to show the app variant tooling
1022
+ * Checks the publish button, draft buttons(activate and delete) and app variant support (i.e.
1023
+ * Save As and Overview of App Variants) availability. The publish button shall not be available
1024
+ * if the system is productive and if a merge error occurred during merging changes into the view on startup
1025
+ * The app variant support shall not be available if the system is productive and if the platform is not enabled
1026
+ * (See Feature.js) to show the app variant tooling.
1014
1027
  * The app variant support shall also not be available if the current app is a home page
1015
1028
  * isProductiveSystem should only return true if it is a test or development system with the provision of custom catalog extensions
1016
1029
  *
@@ -1052,8 +1065,8 @@ sap.ui.define([
1052
1065
  var sErrorMessage = vError.userMessage || vError.stack || vError.message || vError.status || vError;
1053
1066
  var oTextResources = sap.ui.getCore().getLibraryResourceBundle("sap.ui.rta");
1054
1067
  Log.error("Failed to transfer changes", sErrorMessage);
1055
- var sMsg = oTextResources.getText("MSG_LREP_TRANSFER_ERROR") + "\n"
1056
- + oTextResources.getText("MSG_ERROR_REASON", sErrorMessage);
1068
+ var sMsg = `${oTextResources.getText("MSG_LREP_TRANSFER_ERROR")}
1069
+ ${oTextResources.getText("MSG_ERROR_REASON", [sErrorMessage])}`;
1057
1070
  MessageBox.error(sMsg, {
1058
1071
  styleClass: Utils.getRtaStyleClassName()
1059
1072
  });
@@ -1061,56 +1074,36 @@ sap.ui.define([
1061
1074
 
1062
1075
  /**
1063
1076
  * Adapt the enablement of undo/redo/reset button
1064
- *
1065
- * @returns {Promise} Resolves as soon as the MessageBox is closed
1066
1077
  */
1067
1078
  function onStackModified() {
1068
- var oCommandStack = this.getCommandStack();
1069
- var bCanUndo = oCommandStack.canUndo();
1070
-
1071
- // FIXME Missing check whether action is saveable e.g. switching a view should not trigger this
1072
- // bCanUndo and _bUserDiscardedDraft seem to be redundant logic,
1073
- // because displayedVersion would be draft already
1074
- if (
1075
- !this.getShowToolbars() ||
1076
- !bCanUndo ||
1077
- this._bUserDiscardedDraft
1078
- ) {
1079
- modifyStack.call(this);
1080
- return;
1081
- }
1082
-
1083
1079
  // warn the user: the existing draft would be discarded in case the user saves
1084
1080
  Utils.checkDraftOverwrite(this._oVersionsModel)
1085
- .then(function(bDialogShown) {
1086
- if (bDialogShown) {
1087
- this._bUserDiscardedDraft = true;
1081
+ .then(() => {
1082
+ if (this.getShowToolbars()) {
1083
+ var oCommandStack = this.getCommandStack();
1084
+ var bCanUndo = oCommandStack.canUndo();
1085
+ var bCanRedo = oCommandStack.canRedo();
1086
+ var bCanSave = oCommandStack.canSave();
1087
+ var bWasSaved = oCommandStack.getSaved();
1088
+ var bTranslationRelevantDirtyChange = this._oToolbarControlsModel.getProperty("/translation/visible") &&
1089
+ TranslationAPI.hasTranslationRelevantDirtyChanges({layer: Layer.CUSTOMER, selector: this.getRootControlInstance()});
1090
+
1091
+ // TODO: move to the setter to the ChangesState
1092
+ this._oVersionsModel.setDirtyChanges(PersistenceWriteAPI.hasDirtyChanges({selector: this.getRootControlInstance()}));
1093
+ this._oToolbarControlsModel.setProperty("/undo/enabled", bCanUndo);
1094
+ this._oToolbarControlsModel.setProperty("/redo/enabled", bCanRedo);
1095
+ this._oToolbarControlsModel.setProperty("/save/enabled", bCanSave);
1096
+ this._oToolbarControlsModel.setProperty("/restore/enabled", this.bInitialResetEnabled || bCanSave || bWasSaved);
1097
+ this._oToolbarControlsModel.setProperty(
1098
+ "/translation/enabled",
1099
+ this.bPersistedDataTranslatable || bTranslationRelevantDirtyChange
1100
+ );
1088
1101
  }
1089
- modifyStack.call(this);
1090
- }.bind(this), function() {
1102
+ this.fireUndoRedoStackModified();
1103
+ })
1104
+ .catch(() => {
1091
1105
  this.undo();
1092
- }.bind(this));
1093
- }
1094
-
1095
- function modifyStack() {
1096
- if (this.getShowToolbars()) {
1097
- var oCommandStack = this.getCommandStack();
1098
- var bCanUndo = oCommandStack.canUndo();
1099
- var bCanRedo = oCommandStack.canRedo();
1100
- var bCanSave = oCommandStack.canSave();
1101
- var bWasSaved = oCommandStack.getSaved();
1102
- var bTranslationRelevantDirtyChange = this._oToolbarControlsModel.getProperty("/translation/visible") &&
1103
- TranslationAPI.hasTranslationRelevantDirtyChanges({layer: Layer.CUSTOMER, selector: this.getRootControlInstance()});
1104
-
1105
- // TODO: move to the setter to the ChangesState
1106
- this._oVersionsModel.setDirtyChanges(PersistenceWriteAPI.hasDirtyChanges({selector: this.getRootControlInstance()}));
1107
- this._oToolbarControlsModel.setProperty("/undo/enabled", bCanUndo);
1108
- this._oToolbarControlsModel.setProperty("/redo/enabled", bCanRedo);
1109
- this._oToolbarControlsModel.setProperty("/save/enabled", bCanSave);
1110
- this._oToolbarControlsModel.setProperty("/restore/enabled", this.bInitialResetEnabled || bCanSave || bWasSaved);
1111
- this._oToolbarControlsModel.setProperty("/translation/enabled", this.bPersistedDataTranslatable || bTranslationRelevantDirtyChange);
1112
- }
1113
- this.fireUndoRedoStackModified();
1106
+ });
1114
1107
  }
1115
1108
 
1116
1109
  function checkToolbarAndExecuteFunction(sName, vValue) {
@@ -1202,9 +1195,7 @@ sap.ui.define([
1202
1195
  var sVersion = bActivateVersion ? this._oVersionsModel.getProperty("/displayedVersion") : undefined;
1203
1196
 
1204
1197
  // If a draft is being processed, saving without exiting must retrieve the updated state of the draft version
1205
- if (!sVersion) {
1206
- sVersion = bIsExit ? undefined : Version.Number.Draft;
1207
- }
1198
+ sVersion ||= bIsExit ? undefined : Version.Number.Draft;
1208
1199
  mPropertyBag.version = sVersion;
1209
1200
 
1210
1201
  // Save changes on the current layer and discard dirty changes on other layers
@@ -1289,7 +1280,8 @@ sap.ui.define([
1289
1280
  var sLayer = this.getLayer();
1290
1281
  var oReloadInfo = {
1291
1282
  layer: sLayer,
1292
- removeDraft: true
1283
+ removeDraft: true,
1284
+ selector: this.getRootControlInstance()
1293
1285
  };
1294
1286
  RuntimeAuthoring.enableRestart(sLayer, this.getRootControlInstance());
1295
1287
  this.getCommandStack().removeAllCommands();
@@ -1321,6 +1313,7 @@ sap.ui.define([
1321
1313
  }
1322
1314
 
1323
1315
  function deleteAdaptation() {
1316
+ Measurement.start("onCBADeleteAdaptation", "Measurement of deleting a context-based adaptation");
1324
1317
  ContextBasedAdaptationsAPI.remove({
1325
1318
  control: this.getRootControlInstance(),
1326
1319
  layer: this.getLayer(),
@@ -1329,6 +1322,10 @@ sap.ui.define([
1329
1322
  BusyIndicator.hide();
1330
1323
  var sAdaptationId = this._oContextBasedAdaptationsModel.deleteAdaptation();
1331
1324
  switchAdaptation.call(this, sAdaptationId);
1325
+ Measurement.end("onCBADeleteAdaptation");
1326
+ if (Measurement.getActive()) {
1327
+ Log.info(`onCBADeleteAdaptation: ${Measurement.getMeasurement("onCBADeleteAdaptation").time} ms`);
1328
+ }
1332
1329
  }.bind(this)).catch(function(oError) {
1333
1330
  BusyIndicator.hide();
1334
1331
  Log.error(oError.stack);
@@ -1362,6 +1359,7 @@ sap.ui.define([
1362
1359
  }
1363
1360
 
1364
1361
  function onSwitchAdaptation(oEvent) {
1362
+ Measurement.start("onCBASwitchAdaptation", "Measurement of switching a context-based adaptation");
1365
1363
  var fnCallback = oEvent.getParameter("callback") || function() {};
1366
1364
  if (oEvent.getParameter("trigger") === "SaveAs") {
1367
1365
  // remove all changes from command stack when triggered from saveAs dialog as they are already saved in a new adaptation
@@ -1371,10 +1369,16 @@ sap.ui.define([
1371
1369
  this._sSwitchToAdaptationId = sAdaptationId;
1372
1370
  return handleDataLoss.call(this, "MSG_SWITCH_VERSION_DIALOG", "BTN_SWITCH_ADAPTATIONS",
1373
1371
  switchAdaptation.bind(this, this._sSwitchToAdaptationId))
1374
- .then(fnCallback)
1372
+ .then(function() {
1373
+ fnCallback();
1374
+ Measurement.end("onCBASwitchAdaptation");
1375
+ if (Measurement.getActive()) {
1376
+ Log.info(`onCBASwitchAdaptation: ${Measurement.getMeasurement("onCBASwitchAdaptation").time} ms`);
1377
+ }
1378
+ })
1375
1379
  .catch(function(oError) {
1376
1380
  Utils.showMessageBox("error", "MSG_SWITCH_ADAPTATION_FAILED", {error: oError});
1377
- Log.error("sap.ui.rta: " + oError.stack || oError.message || oError);
1381
+ Log.error(`sap.ui.rta: ${oError.stack || oError.message || oError}`);
1378
1382
  });
1379
1383
  }
1380
1384
 
@@ -1399,7 +1403,7 @@ sap.ui.define([
1399
1403
  .then(fnCallback)
1400
1404
  .catch(function(oError) {
1401
1405
  Utils.showMessageBox("error", "MSG_SWITCH_VERSION_FAILED", {error: oError});
1402
- Log.error("sap.ui.rta: " + oError.stack || oError.message || oError);
1406
+ Log.error(`sap.ui.rta: ${oError.stack || oError.message || oError}`);
1403
1407
  });
1404
1408
  }
1405
1409
 
@@ -1414,10 +1418,11 @@ sap.ui.define([
1414
1418
  }).then(function() {
1415
1419
  var oReloadInfo = {
1416
1420
  versionSwitch: true,
1417
- version: sVersion
1421
+ version: sVersion,
1422
+ selector: this.getRootControlInstance()
1418
1423
  };
1419
1424
  ReloadManager.triggerReload(oReloadInfo);
1420
- });
1425
+ }.bind(this));
1421
1426
  }
1422
1427
 
1423
1428
  function onPublishVersion() {
@@ -1530,8 +1535,11 @@ sap.ui.define([
1530
1535
  var oUriParameters = UriParameters.fromURL(window.location.href);
1531
1536
  // the "Visualization" tab should not be visible if the "fiori-tools-rta-mode" URL-parameter is set to any value but "false"
1532
1537
  var bVisualizationButtonVisible;
1533
- bVisualizationButtonVisible = !oUriParameters.has("fiori-tools-rta-mode") || oUriParameters.get("fiori-tools-rta-mode") === "false";
1534
- var bFeedbackButtonVisible = Core.getConfiguration().getFlexibilityServices()[0].connector !== "LocalStorageConnector";
1538
+ bVisualizationButtonVisible = !oUriParameters.has("fiori-tools-rta-mode")
1539
+ || oUriParameters.get("fiori-tools-rta-mode") === "false";
1540
+ var bFeedbackButtonVisible = Core.getConfiguration().getFlexibilityServices().some(function(oFlexibilityService) {
1541
+ return oFlexibilityService.connector !== "LocalStorageConnector";
1542
+ });
1535
1543
  this.bPersistedDataTranslatable = false;
1536
1544
 
1537
1545
  this._oToolbarControlsModel = new JSONModel({
@@ -1628,8 +1636,9 @@ sap.ui.define([
1628
1636
 
1629
1637
  /**
1630
1638
  * Delete all changes for current layer and root control's component.
1631
- * In case of Base Applications (no App Variants) the App Descriptor Changes and UI Changes are saved in different Flex Persistence instances,
1632
- * the changes for both places will be deleted. For App Variants all the changes are saved in one place.
1639
+ * In case of Base Applications (no App Variants) the App Descriptor Changes and UI Changes are saved
1640
+ * in different Flex Persistence instances, the changes for both places will be deleted. For App Variants
1641
+ * all the changes are saved in one place.
1633
1642
  *
1634
1643
  * @returns {Promise} Resolves when change persistence is reset
1635
1644
  */
@@ -1727,7 +1736,10 @@ sap.ui.define([
1727
1736
 
1728
1737
  scheduleOnCreatedAndVisible.call(this, sNewControlID, function(oElementOverlay) {
1729
1738
  // get container of the new control for rename
1730
- var sNewContainerID = this.getPluginManager().getPlugin("createContainer").getCreatedContainerId(vAction, oElementOverlay.getElement().getId());
1739
+ var sNewContainerID = this.getPluginManager().getPlugin("createContainer").getCreatedContainerId(
1740
+ vAction,
1741
+ oElementOverlay.getElement().getId()
1742
+ );
1731
1743
  var oContainerElementOverlay = OverlayRegistry.getOverlay(sNewContainerID);
1732
1744
  if (oContainerElementOverlay) {
1733
1745
  if (sNewContainerName) {
@@ -1777,7 +1789,7 @@ sap.ui.define([
1777
1789
  return this.getCommandStack().pushAndExecute(oCommand)
1778
1790
  // Error handling when a command fails is done in the Stack
1779
1791
  .catch(function(oError) {
1780
- if (oError && oError.message && oError.message.indexOf("The following Change cannot be applied because of a dependency") > -1) {
1792
+ if (oError?.message?.indexOf?.("The following Change cannot be applied because of a dependency") > -1) {
1781
1793
  Utils.showMessageBox("error", "MSG_DEPENDENCY_ERROR", {error: oError});
1782
1794
  }
1783
1795
  Log.error("sap.ui.rta:", oError.message, oError.stack);
@@ -1818,7 +1830,7 @@ sap.ui.define([
1818
1830
  return Promise.reject(
1819
1831
  DtUtil.createError(
1820
1832
  "RuntimeAuthoring#startService",
1821
- DtUtil.printf("Can't start the service '{0}' while RTA has been failed during a startup", sName),
1833
+ `Can't start the service '${sName}' because RTA startup failed`,
1822
1834
  "sap.ui.rta"
1823
1835
  )
1824
1836
  );
@@ -1833,7 +1845,7 @@ sap.ui.define([
1833
1845
  return Promise.reject(
1834
1846
  DtUtil.createError(
1835
1847
  "RuntimeAuthoring#startService",
1836
- DtUtil.printf("Unknown service. Can't find any registered service by name '{0}'", sName),
1848
+ `Unknown service. Can't find any registered service by name '${sName}'`,
1837
1849
  "sap.ui.rta"
1838
1850
  )
1839
1851
  );
@@ -1855,7 +1867,7 @@ sap.ui.define([
1855
1867
  return Promise.reject(
1856
1868
  DtUtil.createError(
1857
1869
  "RuntimeAuthoring#startService",
1858
- DtUtil.printf("Unknown service status. Service name = '{0}'", sName),
1870
+ `Unknown service status. Service name = '${sName}'`,
1859
1871
  "sap.ui.rta"
1860
1872
  )
1861
1873
  );
@@ -1871,9 +1883,7 @@ sap.ui.define([
1871
1883
  function(fnServiceFactory) {
1872
1884
  mService.factory = fnServiceFactory;
1873
1885
 
1874
- if (!this._oServiceEventBus) {
1875
- this._oServiceEventBus = new ServiceEventBus();
1876
- }
1886
+ this._oServiceEventBus ||= new ServiceEventBus();
1877
1887
 
1878
1888
  DtUtil.wrapIntoPromise(fnServiceFactory)(
1879
1889
  this,
@@ -1883,14 +1893,14 @@ sap.ui.define([
1883
1893
  if (this.bIsDestroyed) {
1884
1894
  throw DtUtil.createError(
1885
1895
  "RuntimeAuthoring#startService",
1886
- DtUtil.printf("RuntimeAuthoring instance is destroyed while initializing the service '{0}'", sName),
1896
+ `RuntimeAuthoring instance is destroyed while initializing the service '${sName}'`,
1887
1897
  "sap.ui.rta"
1888
1898
  );
1889
1899
  }
1890
1900
  if (!isPlainObject(oService)) {
1891
1901
  throw DtUtil.createError(
1892
1902
  "RuntimeAuthoring#startService",
1893
- DtUtil.printf("Invalid service format. Service should return simple javascript object after initialization. Service name = '{0}'", sName),
1903
+ `Invalid service format. Service should return simple javascript object after initialization. Service name = '${sName}'`,
1894
1904
  "sap.ui.rta"
1895
1905
  );
1896
1906
  }
@@ -1931,7 +1941,7 @@ sap.ui.define([
1931
1941
  DtUtil.propagateError(
1932
1942
  vError,
1933
1943
  "RuntimeAuthoring#startService",
1934
- DtUtil.printf("Can't load service '{0}' by its name: {1}", sName, sServiceLocation),
1944
+ `Can't load service '${sName}' by its name: ${sServiceLocation}`,
1935
1945
  "sap.ui.rta"
1936
1946
  )
1937
1947
  );
@@ -1944,7 +1954,7 @@ sap.ui.define([
1944
1954
  DtUtil.propagateError(
1945
1955
  vError,
1946
1956
  "RuntimeAuthoring#startService",
1947
- DtUtil.printf("Error during service '{0}' initialization.", sName),
1957
+ `Error initializing service '${sName}'`,
1948
1958
  "sap.ui.rta"
1949
1959
  )
1950
1960
  );
@@ -1971,7 +1981,7 @@ sap.ui.define([
1971
1981
  } else {
1972
1982
  throw DtUtil.createError(
1973
1983
  "RuntimeAuthoring#stopService",
1974
- DtUtil.printf("Can't destroy service: unable to find service with name '{0}'", sName),
1984
+ `Can't destroy service: unable to find service with name '${sName}'`,
1975
1985
  "sap.ui.rta"
1976
1986
  );
1977
1987
  }
@@ -47,13 +47,11 @@ function(
47
47
  *
48
48
  * @namespace
49
49
  * @author SAP SE
50
- * @version 1.117.1
50
+ * @version 1.119.0
51
51
  *
52
52
  * @private
53
53
  * @since 1.30
54
54
  * @alias sap.ui.rta.Utils
55
- * @experimental Since 1.30. This class is experimental and provides only limited functionality.
56
- * API of this class might be changed in the future.
57
55
  */
58
56
 
59
57
  var Utils = {};
@@ -146,11 +144,11 @@ function(
146
144
 
147
145
  // create a controller for the action in the Dialog
148
146
  var oFragmentController = {
149
- removeField: function() {
147
+ removeField() {
150
148
  fnCleanUp();
151
149
  resolve(true);
152
150
  },
153
- closeDialog: function() {
151
+ closeDialog() {
154
152
  fnCleanUp();
155
153
  resolve(false);
156
154
  }
@@ -287,9 +285,7 @@ function(
287
285
  while (oNextFocusableSiblingOverlay && !this.isOverlaySelectable(oNextFocusableSiblingOverlay)) {
288
286
  oNextFocusableSiblingOverlay = OverlayUtil.getNextSiblingOverlay(oNextFocusableSiblingOverlay);
289
287
  }
290
- if (!oNextFocusableSiblingOverlay) {
291
- oNextFocusableSiblingOverlay = this._findSiblingOverlay(oOverlay, NEXT);
292
- }
288
+ oNextFocusableSiblingOverlay ||= this._findSiblingOverlay(oOverlay, NEXT);
293
289
  return oNextFocusableSiblingOverlay;
294
290
  };
295
291
 
@@ -308,9 +304,7 @@ function(
308
304
  oPreviousFocusableSiblingOverlay = OverlayUtil
309
305
  .getPreviousSiblingOverlay(oPreviousFocusableSiblingOverlay);
310
306
  }
311
- if (!oPreviousFocusableSiblingOverlay) {
312
- oPreviousFocusableSiblingOverlay = this._findSiblingOverlay(oOverlay, PREVIOUS);
313
- }
307
+ oPreviousFocusableSiblingOverlay ||= this._findSiblingOverlay(oOverlay, PREVIOUS);
314
308
  return oPreviousFocusableSiblingOverlay;
315
309
  };
316
310
 
@@ -379,7 +373,7 @@ function(
379
373
  * @private
380
374
  */
381
375
  Utils.createFieldLabelId = function(oParentControl, sEntityType, sBindingPath) {
382
- return (oParentControl.getId() + "_" + sEntityType + "_" + sBindingPath).replace("/", "_");
376
+ return (`${oParentControl.getId()}_${sEntityType}_${sBindingPath}`).replace("/", "_");
383
377
  };
384
378
 
385
379
  /**
@@ -491,7 +485,7 @@ function(
491
485
  Utils.showMessageBox = function(sMessageType, sMessageKey, mPropertyBag) {
492
486
  return Core.getLibraryResourceBundle("sap.ui.rta", true)
493
487
  .then(function(oResourceBundle) {
494
- mPropertyBag = mPropertyBag || {};
488
+ mPropertyBag ||= {};
495
489
  var sMessage = oResourceBundle.getText(sMessageKey, mPropertyBag.error ? [mPropertyBag.error.userMessage || mPropertyBag.error.message || mPropertyBag.error] : undefined);
496
490
  var sTitle = mPropertyBag.titleKey && oResourceBundle.getText(mPropertyBag.titleKey);
497
491
  var vActionTexts =
@@ -505,7 +499,7 @@ function(
505
499
  var mOptions = _omit(mPropertyBag, ["titleKey", "error", "actionKeys", "emphasizedAction", "emphasizedActionKey", "showCancel"]);
506
500
  mOptions.title = sTitle;
507
501
  mOptions.styleClass = Utils.getRtaStyleClassName();
508
- mOptions.actions = mOptions.actions || vActionTexts;
502
+ mOptions.actions ||= vActionTexts;
509
503
  mOptions.emphasizedAction = sEmphasizedAction || mPropertyBag.emphasizedAction;
510
504
  if (bShowCancel) {
511
505
  mOptions.actions.push(MessageBox.Action.CANCEL);
@@ -531,7 +525,7 @@ function(
531
525
  * @returns{boolean} <code>true</code> when the controls have compatible bindings.
532
526
  */
533
527
  Utils.checkSourceTargetBindingCompatibility = function(oSource, oTarget, oModel) {
534
- oModel = oModel || oSource.getModel();
528
+ oModel ||= oSource.getModel();
535
529
  var mSourceBindings = BindingsExtractor.collectBindingPaths(oSource, oModel);
536
530
  var sSourceContextBindingPath;
537
531
  var sTargetContextBindingPath;
@@ -620,7 +614,7 @@ function(
620
614
 
621
615
  // determine target relevantContainer
622
616
  var vTargetRelevantContainerAfterMove = MetadataPropagationUtil.getRelevantContainerForPropagation(oAggregationDtMetadata.getData(), oMovedElement);
623
- vTargetRelevantContainerAfterMove = vTargetRelevantContainerAfterMove || oTargetElement;
617
+ vTargetRelevantContainerAfterMove ||= oTargetElement;
624
618
 
625
619
  // check for same relevantContainer
626
620
  if (
@@ -27,7 +27,6 @@ sap.ui.define([
27
27
  * With this API you are also able to modify the UI adaptation plugins list and or add some event handler functions to be called on start, failed and stop events.
28
28
  *
29
29
  * @function
30
- * @experimental since 1.83
31
30
  * @since 1.83
32
31
  * @alias module:sap/ui/rta/api/startAdaptation
33
32
  *
@@ -17,7 +17,6 @@ sap.ui.define([
17
17
  * It subsequently extends to all valid child controls.
18
18
  *
19
19
  * @function
20
- * @experimental since 1.71
21
20
  * @since 1.71
22
21
  * @alias module:sap/ui/rta/api/startKeyUserAdaptation
23
22
  *