@sapui5/sap.suite.ui.generic.template 1.136.20 → 1.136.21

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sapui5/sap.suite.ui.generic.template",
3
- "version": "1.136.20",
3
+ "version": "1.136.21",
4
4
  "description": "SAPUI5 Library sap.suite.ui.generic.template",
5
5
  "keywords": [
6
6
  "sapui5",
@@ -7,7 +7,7 @@
7
7
 
8
8
  (c) Copyright 2009-2015 SAP SE. All rights reserved
9
9
  </copyright>
10
- <version>1.136.20</version>
10
+ <version>1.136.21</version>
11
11
 
12
12
  <documentation>Library with generic Suite UI templates.</documentation>
13
13
 
@@ -8,7 +8,7 @@
8
8
  "i18n": "i18n/i18n.properties",
9
9
  "applicationVersion": {
10
10
  "__comment": "applicationVersion oder componentversion??",
11
- "version": "1.136.20"
11
+ "version": "1.136.21"
12
12
  },
13
13
  "title": "{{TITLE}}",
14
14
  "description": "{{DESCRIPTION}}",
@@ -8,7 +8,7 @@
8
8
  "i18n": "i18n/i18n.properties",
9
9
  "applicationVersion": {
10
10
  "__comment": "applicationVersion oder componentversion??",
11
- "version": "1.136.20"
11
+ "version": "1.136.21"
12
12
  },
13
13
  "title": "Canvas",
14
14
  "description": "Canvas Page",
@@ -108,7 +108,7 @@ sap.ui.define([
108
108
  aCollection.sort(function (oFirstData, oSecondData) {
109
109
  var iFirstDataImportance = getImportance(oFirstData);
110
110
  var iSecondDataImportance = getImportance(oSecondData);
111
- return iFirstDataImportance < iSecondDataImportance ? -1 : 1;
111
+ return iFirstDataImportance < iSecondDataImportance ? -1 : iFirstDataImportance > iSecondDataImportance ? 1 : 0;
112
112
  });
113
113
  }
114
114
 
@@ -70,7 +70,7 @@ CANCEL_AND_DISCARD=F\u00F6rkasta utkast?
70
70
 
71
71
  DISCARD_EDIT=F\u00F6rkasta alla \u00E4ndringar?
72
72
 
73
- DISCARD=F\u00F6rkasta
73
+ DISCARD=Kasta
74
74
 
75
75
  DELETE=Radera
76
76
 
@@ -8,7 +8,7 @@
8
8
  "i18n": "i18n/i18n.properties",
9
9
  "applicationVersion": {
10
10
  "__comment": "applicationVersion oder componentversion??",
11
- "version": "1.136.20"
11
+ "version": "1.136.21"
12
12
  },
13
13
  "title": "{{TITLE}}",
14
14
  "description": "{{DESCRIPTION}}",
@@ -2581,9 +2581,11 @@ sap.ui.define([
2581
2581
  onDataFieldForIntentBasedNavigation: function (oEvent) {
2582
2582
  oEvent = merge({}, oEvent);
2583
2583
  oTemplateUtils.oServices.oApplication.performAfterSideEffectExecution(function () {
2584
+ var oCustomData = oTemplateUtils.oCommonUtils.getCustomDataFromEvent(oEvent);
2585
+ var oTarget = { semanticObject: oCustomData.SemanticObject, action: oCustomData.Action };
2584
2586
  oTemplateUtils.oCommonUtils.fnProcessDataLossOrDraftDiscardConfirmation(function () {
2585
2587
  oTemplateUtils.oCommonEventHandlers.onDataFieldForIntentBasedNavigation(oEvent, oBase.state);
2586
- }, Function.prototype, "LeaveApp");
2588
+ }, Function.prototype, "LeaveApp", false, oTarget);
2587
2589
  }, true);
2588
2590
  },
2589
2591
  onDataFieldWithIntentBasedNavigation: function (oEvent) {
@@ -25,7 +25,7 @@ sap.ui.define([
25
25
  oTemplateUtils.oCommonUtils.fnProcessDataLossOrDraftDiscardConfirmation(function () {
26
26
  var oContext = oController.getView().getBindingContext();
27
27
  oTemplateUtils.oCommonEventHandlers.onRelatedAppNavigation(oTarget, oContext);
28
- }, Function.prototype, "LeaveApp");
28
+ }, Function.prototype, "LeaveApp", false, oTarget);
29
29
  }
30
30
  }, "buttons");
31
31
  }
@@ -109,7 +109,7 @@ sap.ui.define([
109
109
  if (bHasRelatedAppSettings) {
110
110
  // Iterate through oRelatedAppSettings and add all related apps into the set
111
111
  for (const sKey in oRelatedAppsSettings) {
112
- if (oRelatedAppsSettings.hasOwnProperty(sKey)) {
112
+ if (sKey && oRelatedAppsSettings.hasOwnProperty(sKey)) {
113
113
  const sSemanticObject = oRelatedAppsSettings[sKey].semanticObject;
114
114
  aSemanticObjects.push(sSemanticObject);
115
115
  }
@@ -6,7 +6,7 @@
6
6
  "type": "component",
7
7
  "i18n": "i18n/i18n.properties",
8
8
  "applicationVersion": {
9
- "version": "1.136.20"
9
+ "version": "1.136.21"
10
10
  },
11
11
  "title": "{{TITLE}}",
12
12
  "description": "{{DESCRIPTION}}",
@@ -6,7 +6,7 @@
6
6
  "type": "component",
7
7
  "i18n": "i18n/i18n.properties",
8
8
  "applicationVersion": {
9
- "version": "1.136.20"
9
+ "version": "1.136.21"
10
10
  },
11
11
  "title": "{{TITLE}}",
12
12
  "description": "{{DESCRIPTION}}",
@@ -6,7 +6,7 @@
6
6
  "type": "component",
7
7
  "i18n": "i18n/i18n.properties",
8
8
  "applicationVersion": {
9
- "version": "1.136.20"
9
+ "version": "1.136.21"
10
10
  },
11
11
  "title": "{{TITLE}}",
12
12
  "description": "{{DESCRIPTION}}",
@@ -666,6 +666,7 @@ sap.ui.define([
666
666
 
667
667
  function restore(){
668
668
  oTemplateContract.oBusyHelper.setBusyReason("exiting", false);
669
+ oTemplateContract.oApplicationProxy.resetExternalNavigation();
669
670
  for (var sComponentId in oTemplateContract.componentRegistry){
670
671
  var oRegistryEntry = oTemplateContract.componentRegistry[sComponentId];
671
672
  if (oRegistryEntry.methods.onRestore) {
@@ -947,6 +948,7 @@ sap.ui.define([
947
948
  var fnNormalizePagesMapToArray = testableHelper.testable(fnNormalizePagesMapToArray, "fnNormalizePagesMapToArray");
948
949
  getConfig = testableHelper.testable(getConfig, "getConfig");
949
950
  testableHelper.testable(setLeaveAppPromise, "AppComponent_setLeaveAppPromise");
951
+ testableHelper.testable(restore, "AppComponent_restore");
950
952
  /* eslint-enable */
951
953
 
952
954
  return oMethods;
@@ -964,7 +966,7 @@ sap.ui.define([
964
966
  * @public
965
967
  * @extends sap.ui.core.UIComponent
966
968
  * @author SAP SE
967
- * @version 1.136.20
969
+ * @version 1.136.21
968
970
  * @name sap.suite.ui.generic.template.lib.AppComponent
969
971
  */
970
972
  var oAppComponent = UIComponent.extend("sap.suite.ui.generic.template.lib.AppComponent", {
@@ -82,6 +82,11 @@ sap.ui.define(["sap/ui/base/Object",
82
82
  */
83
83
  function getMethods(oTemplateContract) {
84
84
 
85
+ // Set on first fnNavigateExternal call; blocks re-entry until reset. NavigationHandler.navigate() calls fnOnError
86
+ // on all failure paths and does not call it on the success path (app is leaving). The two valid reset points are
87
+ // therefore fnOnErrorWrapper (navigation failed) and AppComponent.restore() (FLP re-activated this app).
88
+ var bExternalNavigationTriggered = false;
89
+
85
90
  var oFocusHelper = new FocusHelper(oTemplateContract);
86
91
  var oContextBookkeeping = new ContextBookkeeping(oTemplateContract);
87
92
  var mEntitySetToETagInfo = Object.create(null); // maps the name of the entity sets which have been already checked for eTag
@@ -671,8 +676,13 @@ sap.ui.define(["sap/ui/base/Object",
671
676
  if (oCurrentNavigationHandler === GHOSTNAVIGATIONHANDLER){
672
677
  return;
673
678
  }
679
+ if (bExternalNavigationTriggered){
680
+ return;
681
+ }
682
+ bExternalNavigationTriggered = true;
674
683
  oTemplateContract.oNavigationControllerProxy.leave();
675
- var fnOnErrorWrapper = function(){
684
+ var fnOnErrorWrapper = function () {
685
+ bExternalNavigationTriggered = false;
676
686
  oFocusHelper.setNextFocus(Function.prototype); // Do not change focus in case exiting the application fails
677
687
  oTemplateContract.oBusyHelper.setBusyReason("exiting", false); // in error case we are not navigating away
678
688
  if (fnOnError){
@@ -834,7 +844,10 @@ sap.ui.define(["sap/ui/base/Object",
834
844
  removeTransientMessages: fnRemoveTransientMessages,
835
845
  getTransientMessages: getTransientMessages,
836
846
  setNextFocus: oFocusHelper.setNextFocus,
837
- setStates: setStates
847
+ setStates: setStates,
848
+ resetExternalNavigation: function() {
849
+ bExternalNavigationTriggered = false;
850
+ }
838
851
  };
839
852
 
840
853
  return {
@@ -714,7 +714,16 @@ sap.ui.define(["sap/ui/base/Object",
714
714
  }
715
715
 
716
716
  // null object has to be passed as the fourth argument (i.e. for oInnerAppData) to the navigate method as an indicator that the state should not be overwritten
717
- oServices.oApplication.navigateExternal(oOutbound.semanticObject, oOutbound.action, oSelectionVariant.toJSONString(), null, oCommonUtils.handleError);
717
+ // Explace outbounds must bypass fnNavigateExternal to avoid setting the app busy and consuming the re-entry guard.
718
+ // getNavigationHandler() returns a ghost stub (no .navigate) when ghostapp=true — guard before calling.
719
+ if (oOutbound.parameters && oOutbound.parameters["sap-ushell-navmode"] === "explace") {
720
+ var oNavHandler = oServices.oApplication.getNavigationHandler();
721
+ if (oNavHandler.navigate) {
722
+ oNavHandler.navigate(oOutbound.semanticObject, oOutbound.action, oSelectionVariant.toJSONString(), null, oCommonUtils.handleError, null, "explace");
723
+ }
724
+ } else {
725
+ oServices.oApplication.navigateExternal(oOutbound.semanticObject, oOutbound.action, oSelectionVariant.toJSONString(), null, oCommonUtils.handleError);
726
+ }
718
727
  }
719
728
 
720
729
  function fnNavigateIntentSmartLink(oOutbound, oEventSource) {
@@ -797,9 +806,10 @@ sap.ui.define(["sap/ui/base/Object",
797
806
 
798
807
  function fnOnSemanticObjectLinkNavigationPressed(oEventSource, oEventParameters){
799
808
  var oEventObject = deepExtend({}, oEventSource);
809
+ var sSemanticObject = oEventObject.data('SemanticObject');
810
+ var sAction = oEventObject.data('Action');
811
+ var oTarget = (sSemanticObject && sAction) ? { semanticObject: sSemanticObject, action: sAction } : undefined;
800
812
  oCommonUtils.fnProcessDataLossOrDraftDiscardConfirmation(function() {
801
- var sSemanticObject = oEventObject.data('SemanticObject');
802
- var sAction = oEventObject.data('Action');
803
813
  var sSemanticAttributes = oEventObject.data('SemanticAttributes');
804
814
  if (sSemanticObject && sAction){
805
815
  var oOutbound = {
@@ -812,7 +822,7 @@ sap.ui.define(["sap/ui/base/Object",
812
822
  }
813
823
  fnNavigateIntentSmartLink(oOutbound, oEventObject);
814
824
  }
815
- }, Function.prototype, "LeaveApp");
825
+ }, Function.prototype, "LeaveApp", false, oTarget);
816
826
  }
817
827
 
818
828
  function fnOnSemanticObjectLinkNavigationTargetObtained(sEntitySet, mFieldSemanticObjects, oEventParameters, oState, sTitle) {
@@ -1901,6 +1911,7 @@ sap.ui.define(["sap/ui/base/Object",
1901
1911
  var oContext = oEventSource.getParent().getBindingContext();
1902
1912
  var sSemanticObject = oEventSource.data("SemanticObject");
1903
1913
  var sAction = oEventSource.data("Action");
1914
+ var oTarget = { semanticObject: sSemanticObject, action: sAction };
1904
1915
 
1905
1916
  oCommonUtils.fnProcessDataLossOrDraftDiscardConfirmation(function() {
1906
1917
  var oOutbound = {
@@ -1908,7 +1919,7 @@ sap.ui.define(["sap/ui/base/Object",
1908
1919
  semanticObject: sSemanticObject
1909
1920
  };
1910
1921
  fnNavigateIntent(oOutbound, [oContext], oState.oSmartFilterbar || undefined);
1911
- }, Function.prototype, "LeaveApp");
1922
+ }, Function.prototype, "LeaveApp", false, oTarget);
1912
1923
  }
1913
1924
 
1914
1925
  /*
@@ -1938,13 +1949,15 @@ sap.ui.define(["sap/ui/base/Object",
1938
1949
  if (bRequiresContext && !aSelectedContexts.length) { // not consistent, since contexts missing
1939
1950
  fnShowMessageForInvalidNumberOfSelects(aSelectedContexts.length);
1940
1951
  } else {
1952
+ var oTarget = { semanticObject: oCustomData.SemanticObject, action: oCustomData.Action };
1941
1953
  oCommonUtils.fnProcessDataLossOrDraftDiscardConfirmation(function () {
1942
1954
  onDataFieldForIntentBasedNavigationSelectedContext(oCustomData, aSelectedContexts, oSmartFilterbar);
1943
- }, Function.prototype, "LeaveApp");
1955
+ }, Function.prototype, "LeaveApp", false, oTarget);
1944
1956
  }
1945
1957
  }
1946
1958
 
1947
1959
  function onInlineDataFieldForIntentBasedNavigation(oEventSource, oState){
1960
+ var oTarget = { semanticObject: oEventSource.data("SemanticObject"), action: oEventSource.data("Action") };
1948
1961
  oCommonUtils.fnProcessDataLossOrDraftDiscardConfirmation(function() {
1949
1962
  var oOutbound = {
1950
1963
  semanticObject: oEventSource.data("SemanticObject"),
@@ -1952,7 +1965,7 @@ sap.ui.define(["sap/ui/base/Object",
1952
1965
  };
1953
1966
  var oContext = oEventSource.getParent().getBindingContext();
1954
1967
  fnNavigateIntent(oOutbound, [oContext], oState.oSmartFilterbar);
1955
- }, Function.prototype, "LeaveApp");
1968
+ }, Function.prototype, "LeaveApp", false, oTarget);
1956
1969
  }
1957
1970
 
1958
1971
  function onInlineDataFieldForAction(oEvent) {
@@ -2620,7 +2633,16 @@ sap.ui.define(["sap/ui/base/Object",
2620
2633
  var oSelectionVariant = fnBuildSelectionVariantForNavigation(oOutbound, [], oContext);
2621
2634
  oController.adaptNavigationParameterExtension(oSelectionVariant, oOutbound);
2622
2635
  oCommonUtils.setComponentRefreshBehaviour(oOutbound);
2623
- oServices.oApplication.navigateExternal(oOutbound.semanticObject, oOutbound.action, oSelectionVariant.toJSONString(), null, oCommonUtils.handleError);
2636
+ // Explace outbounds must bypass fnNavigateExternal to avoid setting the app busy and consuming the re-entry guard.
2637
+ // getNavigationHandler() returns a ghost stub (no .navigate) when ghostapp=true — guard before calling.
2638
+ if (oOutbound.parameters && oOutbound.parameters["sap-ushell-navmode"] === "explace") {
2639
+ var oNavHandler = oServices.oApplication.getNavigationHandler();
2640
+ if (oNavHandler.navigate) {
2641
+ oNavHandler.navigate(oOutbound.semanticObject, oOutbound.action, oSelectionVariant.toJSONString(), null, oCommonUtils.handleError, null, "explace");
2642
+ }
2643
+ } else {
2644
+ oServices.oApplication.navigateExternal(oOutbound.semanticObject, oOutbound.action, oSelectionVariant.toJSONString(), null, oCommonUtils.handleError);
2645
+ }
2624
2646
  }
2625
2647
 
2626
2648
  function onSmartFieldInitialise(oEvent,sViewId){
@@ -798,7 +798,7 @@ sap.ui.define(["sap/ui/base/Object",
798
798
  //indicator that the state should not be overwritten
799
799
  //if draft enabled then passing NavigateExternal else on back button passing LeavePage
800
800
  }
801
- }, Function.prototype, "LeaveApp");
801
+ }, Function.prototype, "LeaveApp", false, { semanticObject: oOutbound.semanticObject, action: oOutbound.action });
802
802
  }
803
803
 
804
804
  function fnGetNavigationKeyProperties(sTargetEntitySet) {
@@ -1313,10 +1313,10 @@ sap.ui.define(["sap/ui/base/Object",
1313
1313
  // "LeaveApp": leave the app via a forward navigation
1314
1314
  // "LeavePage": leave the page via an internal navigation or a backward navigation (which may or may not be internal)
1315
1315
  // Note: if sMode is faulty it will be considered as "LeavePage"
1316
- function fnProcessDataLossOrDraftDiscardConfirmation(fnProcessFunction, fnCancelFunction, sMode, bNoBusyCheck){
1316
+ function fnProcessDataLossOrDraftDiscardConfirmation(fnProcessFunction, fnCancelFunction, sMode, bNoBusyCheck, oTarget){
1317
1317
  sMode = sMode || "LeavePage";
1318
1318
  if (oComponentUtils.isDraftEnabled()){
1319
- return oServices.oPageLeaveHandler.performAfterDiscardOrKeepDraft(fnProcessFunction, fnCancelFunction, sMode, bNoBusyCheck, false);
1319
+ return oServices.oPageLeaveHandler.performAfterDiscardOrKeepDraft(fnProcessFunction, fnCancelFunction, sMode, bNoBusyCheck, false, oTarget);
1320
1320
  } else {
1321
1321
  return oServices.oDataLossHandler.performIfNoDataLoss(fnProcessFunction, fnCancelFunction, sMode, bNoBusyCheck, false);
1322
1322
  }
@@ -22,19 +22,24 @@ sap.ui.define(["sap/ui/base/Object",
22
22
  firstListItemOption.focus();
23
23
  }
24
24
 
25
- function checkIfNavigationIsExplace() {
25
+ function checkIfNavigationIsExplace(oTarget) {
26
26
  var UShellContainer = sap.ui.require("sap/ushell/Container");
27
27
  if (!UShellContainer) {
28
- return Promise.resolve(false); // No UShell container, assume inplace navigation
28
+ return Promise.resolve(false);
29
29
  }
30
30
 
31
- return UShellContainer.getServiceAsync("FioriElements").then(function(oFioriElementsService) {
32
- if (oFioriElementsService && typeof oFioriElementsService.isExplaceNavigation === "function") {
33
- return oFioriElementsService.isExplaceNavigation();
34
- }
35
- return false; // API not available, default to inplace behavior
36
- }).catch(function() {
37
- return false; // Service not available or error, default to inplace behavior
31
+ return new Promise(function(resolve) {
32
+ sap.ui.require(["sap/ushell/api/FioriElements"], function(FioriElements) {
33
+ FioriElements.isExplaceNavigation(oTarget ? { target: oTarget } : undefined)
34
+ .then(function(bExplace) {
35
+ resolve(bExplace);
36
+ })
37
+ .catch(function() {
38
+ resolve(false);
39
+ });
40
+ }, function() {
41
+ resolve(false);
42
+ });
38
43
  });
39
44
  }
40
45
 
@@ -147,7 +152,7 @@ sap.ui.define(["sap/ui/base/Object",
147
152
  return oDiscardPromise;
148
153
  }
149
154
 
150
- function fnPerformAfterDiscardOrKeepDraftImpl(fnPositive, fnNegative, sMode, bIsTechnical) {
155
+ function fnPerformAfterDiscardOrKeepDraftImpl(fnPositive, fnNegative, sMode, bIsTechnical, oTarget) {
151
156
  var sEnableDiscardDraftConfirmation = oTemplateContract.oNavigationControllerProxy.isDiscardDraftConfirmationNeeded();
152
157
  var bNeedsPopup = ((sEnableDiscardDraftConfirmation === "always" && sMode.startsWith("Leave")) || (sEnableDiscardDraftConfirmation === "restricted" && sMode === "LeavePage")) && isObjectEditable();
153
158
 
@@ -157,7 +162,7 @@ sap.ui.define(["sap/ui/base/Object",
157
162
  }
158
163
 
159
164
  // Check if navigation will be explace and skip popup if so
160
- checkIfNavigationIsExplace().then(function(bIsExplace) {
165
+ checkIfNavigationIsExplace(oTarget).then(function(bIsExplace) {
161
166
  if (bIsExplace) {
162
167
  fnPositive(); // Skip popup for explace navigation
163
168
  } else {
@@ -195,7 +200,7 @@ sap.ui.define(["sap/ui/base/Object",
195
200
  }
196
201
 
197
202
  // Parameter sMode has same possible values as fnProcessDataLossOrDraftDiscardConfirmation in CommonUtils
198
- function fnPerformAfterDiscardOrKeepDraft(fnProcessFunction, fnCancelFunction, sMode, bNoBusyCheck, bIsTechnical) {
203
+ function fnPerformAfterDiscardOrKeepDraft(fnProcessFunction, fnCancelFunction, sMode, bNoBusyCheck, bIsTechnical, oTarget) {
199
204
  var oRet = new Promise(function (fnResolve, fnReject) {
200
205
  var fnPositive = function () {
201
206
  var oRet = fnProcessFunction();
@@ -206,9 +211,9 @@ sap.ui.define(["sap/ui/base/Object",
206
211
  fnReject();
207
212
  };
208
213
  if (bNoBusyCheck) {
209
- fnPerformAfterDiscardOrKeepDraftImpl(fnPositive, fnNegative, sMode, bIsTechnical);
214
+ fnPerformAfterDiscardOrKeepDraftImpl(fnPositive, fnNegative, sMode, bIsTechnical, oTarget);
210
215
  } else {
211
- oTemplateContract.oApplicationProxy.performAfterSideEffectExecution(fnPerformAfterDiscardOrKeepDraftImpl.bind(null, fnPositive, fnNegative, sMode, bIsTechnical), true);
216
+ oTemplateContract.oApplicationProxy.performAfterSideEffectExecution(fnPerformAfterDiscardOrKeepDraftImpl.bind(null, fnPositive, fnNegative, sMode, bIsTechnical, oTarget), true);
212
217
  }
213
218
  });
214
219
  return oRet;
@@ -182,7 +182,7 @@ ST_GENERIC_ERROR_NAVIGATION_PROPERTY_NOT_CORRECT=Lastnost navigacije {0} v pripo
182
182
 
183
183
  ST_GENERIC_FCL_FULLSCREEN=Celotni ekran
184
184
 
185
- ST_GENERIC_FCL_EXIT_FULLSCREEN=Izhod iz modusa celotnega ekrana
185
+ ST_GENERIC_FCL_EXIT_FULLSCREEN=Izhod iz celozaslonskega na\u010Dina
186
186
 
187
187
  ST_GENERIC_FCL_CLOSE_COLUMN=Zapri
188
188
 
@@ -3206,7 +3206,7 @@ sap.ui.define(["sap/ui/base/Object",
3206
3206
  * @param {sap.suite.ui.generic.template.lib.AppComponent} oAppComponent The AppComponent instance
3207
3207
  * @public
3208
3208
  * @extends sap.ui.base.Object
3209
- * @version 1.136.20
3209
+ * @version 1.136.21
3210
3210
  * @since 1.30.0
3211
3211
  * @alias sap.suite.ui.generic.template.lib.NavigationController
3212
3212
  */
@@ -66,7 +66,7 @@ sap.ui.define([
66
66
  interfaces: [],
67
67
  controls: [],
68
68
  elements: [],
69
- version: "1.136.20",
69
+ version: "1.136.21",
70
70
  extensions: {
71
71
  //Configuration used for rule loading of Support Assistant
72
72
  "sap.ui.support": {