@sapui5/sap.suite.ui.generic.template 1.130.1 → 1.131.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 (109) hide show
  1. package/package.json +1 -1
  2. package/src/sap/suite/ui/generic/template/.library +1 -1
  3. package/src/sap/suite/ui/generic/template/AnalyticalListPage/controller/ControllerImplementation.js +5 -1
  4. package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_da.properties +2 -2
  5. package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_de.properties +2 -2
  6. package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_ko.properties +2 -2
  7. package/src/sap/suite/ui/generic/template/AnalyticalListPage/manifest.json +1 -1
  8. package/src/sap/suite/ui/generic/template/Canvas/manifest.json +1 -1
  9. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_de.properties +1 -1
  10. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_es.properties +1 -1
  11. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_hr.properties +1 -1
  12. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_ko.properties +2 -2
  13. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_sl.properties +1 -1
  14. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_th.properties +1 -1
  15. package/src/sap/suite/ui/generic/template/ListReport/manifest.json +1 -1
  16. package/src/sap/suite/ui/generic/template/ListReport/view/fragments/SmartTable.fragment.xml +6 -3
  17. package/src/sap/suite/ui/generic/template/ObjectPage/controller/RelatedAppsHandler.js +21 -9
  18. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_ar.properties +2 -2
  19. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_da.properties +1 -1
  20. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_es.properties +4 -4
  21. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_ko.properties +1 -1
  22. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_th.properties +1 -1
  23. package/src/sap/suite/ui/generic/template/ObjectPage/manifest.json +1 -1
  24. package/src/sap/suite/ui/generic/template/ObjectPage/view/fragments/Sections.fragment.xml +13 -13
  25. package/src/sap/suite/ui/generic/template/ObjectPage/view/fragments/SmartForm.fragment.xml +5 -5
  26. package/src/sap/suite/ui/generic/template/ObjectPage/view/fragments/SmartTable.fragment.xml +6 -3
  27. package/src/sap/suite/ui/generic/template/QuickCreate/i18n/i18n_fr_CA.properties +1 -1
  28. package/src/sap/suite/ui/generic/template/QuickCreate/manifest.json +1 -1
  29. package/src/sap/suite/ui/generic/template/QuickView/manifest.json +1 -1
  30. package/src/sap/suite/ui/generic/template/designtime/controls/DynamicPage.designtime.js +317 -0
  31. package/src/sap/suite/ui/generic/template/designtime/controls/SmartTable.designtime.js +121 -32
  32. package/src/sap/suite/ui/generic/template/designtime/floorplans/AnalyticalListPage.designtime.js +13 -6
  33. package/src/sap/suite/ui/generic/template/designtime/floorplans/ListReport.designtime.js +12 -5
  34. package/src/sap/suite/ui/generic/template/designtime/floorplans/ObjectPage.designtime.js +13 -5
  35. package/src/sap/suite/ui/generic/template/designtime/utils/designtimeHelper.js +53 -81
  36. package/src/sap/suite/ui/generic/template/designtime/utils/designtimeUtils.js +63 -21
  37. package/src/sap/suite/ui/generic/template/detailTemplates/i18n/i18n_es.properties +1 -1
  38. package/src/sap/suite/ui/generic/template/fragments/MessagePopover.fragment.xml +1 -1
  39. package/src/sap/suite/ui/generic/template/fragments/SmartFormDataField.fragment.xml +1 -1
  40. package/src/sap/suite/ui/generic/template/genericUtilities/controlStateWrapperFactory/SmartTableChartCommon.js +1 -1
  41. package/src/sap/suite/ui/generic/template/js/AnnotationHelper.js +6 -5
  42. package/src/sap/suite/ui/generic/template/js/AnnotationHelperStreamSupport.js +21 -8
  43. package/src/sap/suite/ui/generic/template/lib/AppComponent.js +227 -5
  44. package/src/sap/suite/ui/generic/template/lib/ComponentUtils.js +100 -67
  45. package/src/sap/suite/ui/generic/template/lib/FlexibleColumnLayoutHandler.js +9 -4
  46. package/src/sap/suite/ui/generic/template/lib/RetryAfterHandler.js +154 -54
  47. package/src/sap/suite/ui/generic/template/lib/SideEffectUtil.js +22 -7
  48. package/src/sap/suite/ui/generic/template/lib/StableIdDefinition.js +4 -1
  49. package/src/sap/suite/ui/generic/template/lib/TemplateAssembler.js +39 -41
  50. package/src/sap/suite/ui/generic/template/lib/ViewCreationHelper.js +39 -0
  51. package/src/sap/suite/ui/generic/template/lib/ai/EasyFilterBarHandler.js +2 -6
  52. package/src/sap/suite/ui/generic/template/lib/i18n/i18n.properties +20 -1
  53. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ar.properties +32 -0
  54. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_bg.properties +34 -2
  55. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ca.properties +32 -0
  56. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_cnr.properties +32 -0
  57. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_cs.properties +32 -0
  58. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_cy.properties +32 -0
  59. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_da.properties +33 -1
  60. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_de.properties +34 -2
  61. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_el.properties +32 -0
  62. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_en.properties +32 -0
  63. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_en_GB.properties +32 -0
  64. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_en_US_saprigi.properties +33 -0
  65. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_es.properties +36 -4
  66. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_es_MX.properties +32 -0
  67. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_et.properties +32 -0
  68. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_fi.properties +32 -0
  69. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_fr.properties +32 -0
  70. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_fr_CA.properties +34 -2
  71. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_hi.properties +33 -1
  72. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_hr.properties +32 -0
  73. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_hu.properties +34 -2
  74. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_id.properties +33 -1
  75. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_it.properties +32 -0
  76. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_iw.properties +33 -1
  77. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ja.properties +32 -0
  78. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_kk.properties +32 -0
  79. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ko.properties +34 -2
  80. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_lt.properties +32 -0
  81. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_lv.properties +32 -0
  82. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_mk.properties +32 -0
  83. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ms.properties +33 -1
  84. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_nl.properties +32 -0
  85. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_no.properties +32 -0
  86. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_pl.properties +32 -0
  87. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_pt.properties +32 -0
  88. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_pt_PT.properties +32 -0
  89. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ro.properties +32 -0
  90. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ru.properties +32 -0
  91. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_sh.properties +32 -0
  92. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_sk.properties +32 -0
  93. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_sl.properties +32 -0
  94. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_sr.properties +32 -0
  95. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_sv.properties +33 -1
  96. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_th.properties +32 -0
  97. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_tr.properties +32 -0
  98. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_uk.properties +32 -0
  99. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_vi.properties +32 -0
  100. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_zh_CN.properties +32 -0
  101. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_zh_TW.properties +32 -0
  102. package/src/sap/suite/ui/generic/template/lib/insights/InsightsCardHelper.js +39 -23
  103. package/src/sap/suite/ui/generic/template/lib/insights/InsightsFECardProvider.js +11 -2
  104. package/src/sap/suite/ui/generic/template/lib/multipleViews/MultipleTablesModeHelper.js +2 -1
  105. package/src/sap/suite/ui/generic/template/lib/navigation/NavigationController.js +95 -95
  106. package/src/sap/suite/ui/generic/template/library.js +1 -1
  107. package/src/sap/suite/ui/generic/template/listTemplates/fragments/DetailSmartTable.fragment.xml +6 -3
  108. package/src/sap/suite/ui/generic/template/themes/sap_horizon/ObjectPage.less +6 -0
  109. package/src/sap/suite/ui/generic/template/themes/sap_horizon_dark/ObjectPage.less +6 -0
@@ -228,7 +228,7 @@ sap.ui.define(["sap/ui/base/Object",
228
228
  // - followUpNeeded: is truthy if the current navigation may not be sufficient to reach the target
229
229
  // In this case there are two options for the follow-up navigation:
230
230
  // oRoutingOptions.identity is set. Then we need to do the follow-up navigation if we have not yet reached the desired identity. It will be done as replace navigation.
231
- // oRoutingOptions.identity is not set. In this case oRoutingOptions.followUpNeeded should contain the full specification for the navigation.
231
+ // oRoutingOptions.identity is not set. In this case oRoutingOptions.followUpNeeded should contain the full specification for the navigation.
232
232
  var bUserHasAcceptedDataLoss; // This flag indicates whether the user has already acknowledgeed a possible data loss for the current (internal or external) navigation
233
233
 
234
234
  var mMessagePageParams; // Is used as a buffer for input for the message page in case that we still need to find out in which column the error needs to be displayed.
@@ -298,7 +298,7 @@ sap.ui.define(["sap/ui/base/Object",
298
298
  } else {
299
299
  var oInitialNavigationPromise = oCrossAppNavigatorPromise.then(function(oCrossAppNavigator){
300
300
  return oCrossAppNavigator.isInitialNavigation().then(function(bIsInitialNavigation){
301
- isInitialNavigation = bIsInitialNavigation;
301
+ isInitialNavigation = bIsInitialNavigation;
302
302
  });
303
303
  });
304
304
  aStartupPromises.push(oInitialNavigationPromise);
@@ -322,7 +322,7 @@ sap.ui.define(["sap/ui/base/Object",
322
322
  }
323
323
  });
324
324
  });
325
-
325
+
326
326
  oMyIntentPromise = oIntentFromShellPromise ? Promise.all([oIntentFromShellPromise, UShellContainer && UShellContainer.getServiceAsync("URLParsing")]).then(function(aResult){
327
327
  var oIntent = extend({}, aResult[0]);
328
328
  var oURLParsing = aResult[1];
@@ -330,14 +330,14 @@ sap.ui.define(["sap/ui/base/Object",
330
330
  var sUrl = oURLParsing.constructShellHash(oIntent);
331
331
  return "#" + sUrl;
332
332
  }) : Promise.resolve("");
333
-
333
+
334
334
  var oComponentData = oTemplateContract.oAppComponent.getComponentData();
335
-
335
+
336
336
  oTemplateContract.myIntentPromise = (oComponentData && oComponentData.feEnvironment && oComponentData.feEnvironment.getIntent && Promise.resolve(oComponentData.feEnvironment.getIntent())) || oIntentFromShellPromise || Promise.resolve({
337
337
  semanticObject: "",
338
338
  action: ""
339
339
  });
340
-
340
+
341
341
  fnInitializeHistory();
342
342
  var fnInitializeRouter = bIsFirst ? oNavigationControllerProxy.initialize : Function.prototype;
343
343
  var oData = !bIsRestoring && !oNavigationControllerProxy.oHashChanger.getHash() && oComponentData;
@@ -355,9 +355,9 @@ sap.ui.define(["sap/ui/base/Object",
355
355
  fnInitializeRouter(!!oMessageParameters);
356
356
  });
357
357
  } else {
358
- fnInitializeRouter();
358
+ fnInitializeRouter();
359
359
  }
360
-
360
+
361
361
  return Promise.all(aStartupPromises);
362
362
  }
363
363
 
@@ -387,7 +387,7 @@ sap.ui.define(["sap/ui/base/Object",
387
387
  oLinksToUpperLayer = null;
388
388
  mMessagePageParams = null;
389
389
  }
390
-
390
+
391
391
  function fnStoreFocusAndGetHistoryObject(sControlId){
392
392
  var oHistoryObject = oHistoryState.getData() || {};
393
393
  if (oHistoryObject.focus){ // focus already set
@@ -400,11 +400,11 @@ sap.ui.define(["sap/ui/base/Object",
400
400
  if (sControlId){
401
401
  oHistoryObject.focus = sControlId;
402
402
  oHistoryState.setData(oHistoryObject);
403
- oHistoryState.save();
404
- }
403
+ oHistoryState.save();
404
+ }
405
405
  return oHistoryObject;
406
406
  }
407
-
407
+
408
408
  function fnInitializeHistory(bKeepCurrentIdentity){
409
409
  oCurrentHash = { // The initial instance represents the time before the app was started.
410
410
  iHashChangeCount: 0,
@@ -423,7 +423,7 @@ sap.ui.define(["sap/ui/base/Object",
423
423
  return fnPrepareHostView(oTemplateContract.mRoutingTree.root.sRouteName).then(function () {
424
424
  // Make sure that the loading of the root component starts
425
425
  return oTemplateContract.mRoutingTree.root.componentCreated;
426
- });
426
+ });
427
427
  }
428
428
 
429
429
  function getAppTitle(){
@@ -431,7 +431,7 @@ sap.ui.define(["sap/ui/base/Object",
431
431
  }
432
432
 
433
433
  function isDiscardDraftConfirmationNeeded(){
434
- return oNavigationControllerProxy.oAppComponent.getProperty('draftDiscardConfirmationSettings').enabled;
434
+ return oNavigationControllerProxy.oAppComponent.getProperty('draftDiscardConfirmationSettings').enabled;
435
435
  }
436
436
 
437
437
  // returns a promise from FLP shell which can be resolved to get information such as semantic object, action of the application
@@ -451,11 +451,11 @@ sap.ui.define(["sap/ui/base/Object",
451
451
  return Promise.resolve();
452
452
  }
453
453
  var oComponentRegistryEntry = sComponentId && oTemplateContract.componentRegistry[sComponentId];
454
-
454
+
455
455
  // preliminary: LR now uses appState implementation via statepreserver and has no own implementation of getUrlParameterInfo
456
456
  // but ALP still has an own implementation
457
457
  var aPromises = [];
458
-
458
+
459
459
  var getUrlParameterInfo = oComponentRegistryEntry && oComponentRegistryEntry.methods.getUrlParameterInfo;
460
460
  if (getUrlParameterInfo) { // own implementation of component
461
461
  aPromises.push(oComponentRegistryEntry.viewRegistered.then(function(){
@@ -472,7 +472,7 @@ sap.ui.define(["sap/ui/base/Object",
472
472
  return oStatePreserver.getUrlParameterInfo(sPathNormalized, oCurrentHash.componentsDisplayed[oComponentRegistryEntry.route] === 1).then(function(mNewPars){
473
473
  extend(mAppStates, mNewPars);
474
474
  });
475
-
475
+
476
476
  }));
477
477
  return Promise.all(aPromises);
478
478
  }
@@ -483,7 +483,7 @@ sap.ui.define(["sap/ui/base/Object",
483
483
  var mAppStates = oTargetIdentity.appStates;
484
484
  return getApplicableStateForComponentAddedPromise(sComponentId, sPath, mAppStates);
485
485
  }
486
-
486
+
487
487
  // return a Promise that is resolved after the following has happened:
488
488
  // The appStates part of oTargetIdentity is taken over from oIdentity but adapted to oTargetIdentity
489
489
  function fnAdaptAppStates(oIdentity, oTargetIdentity){
@@ -491,7 +491,7 @@ sap.ui.define(["sap/ui/base/Object",
491
491
  oTargetIdentity.appStates = oIdentity.appStates;
492
492
  return Promise.resolve(); // no adaptation needed, if both identities belong to the same tree node
493
493
  }
494
- // tree nodes of both identities are different -> build new appStates for target identity and check what can be taken over.
494
+ // tree nodes of both identities are different -> build new appStates for target identity and check what can be taken over.
495
495
  oTargetIdentity.appStates = Object.create(null);
496
496
  if (oTargetIdentity.treeNode.fCLLevel === 0 || oTargetIdentity.treeNode.fCLLevel === 3){
497
497
  return getApplicableStateForIdentityAddedPromise(oTargetIdentity);
@@ -545,7 +545,7 @@ sap.ui.define(["sap/ui/base/Object",
545
545
  if (oTreeNode.isDraft){
546
546
  aActiveDraftDetailTemplatePrivateModels.push(oTemplatePrivateModel);
547
547
  }
548
- }
548
+ }
549
549
  aPageDataLoadedPromises.push(oRegistryEntry.oViewRenderedPromise);
550
550
  if (oRegistryEntry.viewLevel > iMaxActiveViewLevel){
551
551
  iMaxActiveViewLevel = oRegistryEntry.viewLevel;
@@ -621,7 +621,7 @@ sap.ui.define(["sap/ui/base/Object",
621
621
  }
622
622
  return vValue2 === vValue1;
623
623
  }
624
-
624
+
625
625
  function isIdentityEqualToHistoricIdentity(oHistoricIdentity, oIdentity){
626
626
  // 1. check for treeNode
627
627
  if (!oHistoricIdentity || oHistoricIdentity.treeNode !== oIdentity.treeNode){
@@ -644,7 +644,7 @@ sap.ui.define(["sap/ui/base/Object",
644
644
  return false;
645
645
  }
646
646
  }
647
- return true;
647
+ return true;
648
648
  }
649
649
 
650
650
  // Checks whether the specified identity is reached or another navitaion to this identity is necessary
@@ -700,7 +700,7 @@ sap.ui.define(["sap/ui/base/Object",
700
700
  }
701
701
  }
702
702
  }
703
-
703
+
704
704
  // This method is called whenever a back navigation by -iMode steps is going to be triggered.
705
705
  // It returns a Promise that resolves to a possibly higher number of steps back (as the mode is negative it is consequently possibly lower) which really should be taken.
706
706
  // The number is decreased in case that the number of steps that are defined will take the user back to the same page where he already is, as a zero navigation would be considered as an error.
@@ -721,7 +721,7 @@ sap.ui.define(["sap/ui/base/Object",
721
721
  if (oHash.backTarget === 0){ // back navigation will take us out of the app
722
722
  return Promise.resolve(oRoutingOptions.mode);
723
723
  }
724
- oHash = aPreviousHashes[oHash.backTarget];
724
+ oHash = aPreviousHashes[oHash.backTarget];
725
725
  }
726
726
  if (oHash.identity.treeNode.level === 0){
727
727
  oRoutingOptions.identity = oHash.identity;
@@ -730,11 +730,11 @@ sap.ui.define(["sap/ui/base/Object",
730
730
  return getAlternativeIdentityPromise(oHash.identity).then(function(oAlternativeIdentityInfo){
731
731
  if (!oAlternativeIdentityInfo){
732
732
  oRoutingOptions.identity = oHash.identity; // denote that we know where we want to navigate to -> no need to check this in routeMatched once more
733
- return Promise.resolve(oRoutingOptions.mode);
733
+ return Promise.resolve(oRoutingOptions.mode);
734
734
  }
735
735
  if (isIdentityReached(oAlternativeIdentityInfo.identity)){ // back navigation would take us to the current page -> navigate one step more
736
736
  oRoutingOptions.mode--;
737
- return getBackNavigationPromise(oRoutingOptions.mode);
737
+ return getBackNavigationPromise(oRoutingOptions.mode);
738
738
  }
739
739
  oRoutingOptions.identity = oAlternativeIdentityInfo.identity; // denote that we know where we want to navigate to -> no need to check this is routeMatched once more
740
740
  oRoutingOptions.followUpNeeded = true; // make sure that follow-up navigation will be done to navigate to the alternative page
@@ -803,7 +803,7 @@ sap.ui.define(["sap/ui/base/Object",
803
803
  fnNavigateToRouteImpl(iMode === 1);
804
804
  } else if (!oTemplateContract.ghostapp){
805
805
  return getBackNavigationPromise(iMode).then(function(iRealMode){
806
- window.history.go(iRealMode);
806
+ window.history.go(iRealMode);
807
807
  });
808
808
  }
809
809
  }
@@ -907,7 +907,7 @@ sap.ui.define(["sap/ui/base/Object",
907
907
  function getLinksToUpperLayers(){
908
908
  return oLinksToUpperLayer.linkInfos;
909
909
  }
910
-
910
+
911
911
  function fnRouteConfigToIdentity(sRouteName, mArguments){
912
912
  var oRet = Object.create(null);
913
913
  var sRoute = removeQueryInRouteName(sRouteName);
@@ -953,7 +953,7 @@ sap.ui.define(["sap/ui/base/Object",
953
953
  oOptions.identity.appStates[sQueryParam] = vValue;
954
954
  } else {
955
955
  delete oOptions.identity.appStates[sQueryParam];
956
- }
956
+ }
957
957
  var oNavPromise = oRouterBusyObserver.getProcessFinished(true).then(function(){
958
958
  fnNavigateToRoute(oOptions);
959
959
  });
@@ -962,7 +962,7 @@ sap.ui.define(["sap/ui/base/Object",
962
962
  }
963
963
 
964
964
  var oSpecialDraftCancellationInfo;
965
-
965
+
966
966
  function fnNavigateToPartialIdentity(oTargetPromise, bReplace, iDisplayMode, oContext, oContextInfo, mAppStates){
967
967
  var oRet = oTargetPromise.then(function(oTargetIdentity){
968
968
  oTargetIdentity.appStates = mAppStates || Object.create(null);
@@ -986,7 +986,7 @@ sap.ui.define(["sap/ui/base/Object",
986
986
  });
987
987
  });
988
988
  oTemplateContract.oBusyHelper.setBusy(oRet, undefined, undefined, true);
989
- return oRet;
989
+ return oRet;
990
990
  }
991
991
 
992
992
  // This method navigates to the specified context. Thereby, the entity specified by this context must either belong to a root level entity set or its parent must be part of the
@@ -1000,7 +1000,7 @@ sap.ui.define(["sap/ui/base/Object",
1000
1000
  return fnNavigateToRoot(bReplace);
1001
1001
  }
1002
1002
  var aContext = Array.isArray(vContext) ? vContext : [vContext];
1003
-
1003
+
1004
1004
  // If there is only one context we can try to derive the target directly. Do not do that in case we are currently at the root level, since in this case the navigation
1005
1005
  // via the forward navigation property might apply.
1006
1006
  var oNavigationInfo = (aContext.length === 1 && (!oCurrentIdentity || oCurrentIdentity.treeNode.level > 0)) && oDataModelHelper.analyseContext(aContext[0]);
@@ -1031,7 +1031,7 @@ sap.ui.define(["sap/ui/base/Object",
1031
1031
  oTemplateContract.oBusyHelper.setBusy(oTargetPromise, undefined, undefined, bWillShowPlaceholder);
1032
1032
  return fnNavigateToPartialIdentity(oTargetPromise, bReplace, iDisplayMode, aContext[0], oContextInfo, mAppStates);
1033
1033
  }
1034
-
1034
+
1035
1035
  // This function navigates to the detail page represented by the given context if such a detail page exists. Otherwise it does nothing.
1036
1036
  function fnNavigateToDetailContextIfPossible(oContext, bReplace, iDisplayMode, oContextInfo){
1037
1037
  var oTargetInfo = getTargetIdentityInfoForContext(null, oContext, true, true);
@@ -1051,18 +1051,18 @@ sap.ui.define(["sap/ui/base/Object",
1051
1051
  var oTargetIdentity = {
1052
1052
  treeNode: oCurrentIdentity.treeNode,
1053
1053
  keys: ["", oDataModelHelper.analyseContext(oSiblingContext).key],
1054
- appStates: oCurrentIdentity.appStates
1054
+ appStates: oCurrentIdentity.appStates
1055
1055
  };
1056
1056
  return {
1057
1057
  identity: oTargetIdentity,
1058
1058
  mode: 1,
1059
1059
  displayMode: 1
1060
- };
1060
+ };
1061
1061
  }, function(){
1062
1062
  var oTargetIdentity = {
1063
1063
  treeNode: oTemplateContract.mRoutingTree.root,
1064
1064
  keys: [""],
1065
- appStates: Object.create(null)
1065
+ appStates: Object.create(null)
1066
1066
  };
1067
1067
  var oAppStatePromise = getApplicableStateForIdentityAddedPromise(oTargetIdentity);
1068
1068
  return oAppStatePromise.then(function(){
@@ -1083,7 +1083,7 @@ sap.ui.define(["sap/ui/base/Object",
1083
1083
  };
1084
1084
  for (var i = oSpecialDraftCancellationInfo.index + 1; i < aPreviousHashes.length; i++){
1085
1085
  oTestHash = aPreviousHashes[i]; // one navigation step in between
1086
- if (!oTestHash.identity.treeNode || oTestHash.identity.treeNode.level < oSpecialDraftCancellationInfo.identity.treeNode.level || oSpecialDraftCancellationInfo.identity.keys.some(fnDiffer)){
1086
+ if (!oTestHash.identity || !oTestHash.identity.treeNode || oTestHash.identity.treeNode.level < oSpecialDraftCancellationInfo.identity.treeNode.level || oSpecialDraftCancellationInfo.identity.keys.some(fnDiffer)){
1087
1087
  return null; // this was a navigation step which was not a child of the cancelled draft
1088
1088
  }
1089
1089
  }
@@ -1113,12 +1113,12 @@ sap.ui.define(["sap/ui/base/Object",
1113
1113
  return oRet;
1114
1114
  });
1115
1115
  }
1116
-
1116
+
1117
1117
  // Translates an option object (which can be passed to fnNavigateToRoute to a function that performs the corresponding navigation)
1118
1118
  function getNavigationFunction(oNavigationOptions){
1119
1119
  return fnNavigateToRoute.bind(null, oNavigationOptions);
1120
1120
  }
1121
-
1121
+
1122
1122
  // This function can be called before the app is being left by a forward navigation. If oOption is truthy it ensures that the navigation described by oOption will be executed if
1123
1123
  // the app is reached again via back navigation.
1124
1124
  // The function may also be called with a faulty oOption in order to reset the serializedBackOption.
@@ -1150,23 +1150,23 @@ sap.ui.define(["sap/ui/base/Object",
1150
1150
  return {
1151
1151
  treeNode: oTargetNode,
1152
1152
  keys: aSiblingKeys,
1153
- appStates: mAppStates
1153
+ appStates: mAppStates
1154
1154
  };
1155
1155
  });
1156
- });
1156
+ });
1157
1157
  }
1158
-
1158
+
1159
1159
  function getSwitchToSiblingFunctionPromise(bIsTargetEdit, sBatchGroup){
1160
1160
  var iDisplayMode = 1 + bIsTargetEdit;
1161
1161
  return getSiblingIdentityPromise(sBatchGroup).then(function(oTargetIdentity){
1162
1162
  return oNavigationQueue.makeQueuable(fnNavigateToIdentity.bind(null, oTargetIdentity, true, iDisplayMode, false));
1163
1163
  });
1164
1164
  }
1165
-
1165
+
1166
1166
  // This method is called, when we switch from active to inactive or the other way around
1167
1167
  // oSiblingContext is the target context. It is assumed that we are currently displaying its sibling (and in FCL possibly descendants of that).
1168
1168
  // oTargetInfo holds information about target treeNode and the known target keys, these keys are used to complete the final array of targetIdentity keys
1169
- // The method returns a Promise that resolves to
1169
+ // The method returns a Promise that resolves to
1170
1170
  // a) a function that should be used for navigating to the sibling (if bAsIdentity is faulty)
1171
1171
  // b) an identity that should be used for navigating to the sibling (if bAsIdentity is truthy)
1172
1172
  function getSwitchToSiblingPromise(oSiblingContext, iDisplayMode, oTargetInfo, bAsIdentity){
@@ -1296,7 +1296,7 @@ sap.ui.define(["sap/ui/base/Object",
1296
1296
  text: oDataLoadFailedTexts.dataLoadFailedText,
1297
1297
  description: "",
1298
1298
  viewLevel: oFailedNode.fCLLevel,
1299
- messageType: IllustratedMessageType.NoData
1299
+ messageType: IllustratedMessageType.NoData
1300
1300
  });
1301
1301
  return Promise.resolve();
1302
1302
  }
@@ -1362,7 +1362,7 @@ sap.ui.define(["sap/ui/base/Object",
1362
1362
  return getTargetTreeNodeInfoForContext(oParentNode, oNavigationContext, bWithNavProperty, true);
1363
1363
  }
1364
1364
  }
1365
-
1365
+
1366
1366
  function getTargetIdentityPromiseForContext(oSourceNode, aSourceKeys, oNavigationContext, oTreeNodeInfo){
1367
1367
  if (oTreeNodeInfo.navigationProperty){
1368
1368
  return new Promise(function(fnResolve, fnReject){
@@ -1387,7 +1387,7 @@ sap.ui.define(["sap/ui/base/Object",
1387
1387
  keys: aTargetKeys
1388
1388
  });
1389
1389
  }
1390
-
1390
+
1391
1391
  // This function returns the information whether navigation to oTreeNode will result in a placeholder to be shown
1392
1392
  function fnWillNavigationToNodeShowPlaceholder(oTreeNode){
1393
1393
  return oTemplateContract.bEnablePlaceholder &&
@@ -1454,7 +1454,7 @@ sap.ui.define(["sap/ui/base/Object",
1454
1454
  identity: oTargetIdentity,
1455
1455
  mode: 1,
1456
1456
  displayMode: 1
1457
- };
1457
+ };
1458
1458
  if (bAsNavigationOptions){
1459
1459
  return oOptions;
1460
1460
  }
@@ -1716,7 +1716,7 @@ sap.ui.define(["sap/ui/base/Object",
1716
1716
  }
1717
1717
  //Encode the route
1718
1718
  sTargetAppSpecificRoute = encodeURI(sTargetAppSpecificRoute);
1719
-
1719
+
1720
1720
  var oUrlParsingPromise = UShellContainer.getServiceAsync("URLParsing");
1721
1721
  var oFLPUrlPromise = UShellContainer.getFLPUrlAsync(true);
1722
1722
  return Promise.all([oUrlParsingPromise, oFLPUrlPromise]).then(function (aResults) {
@@ -1737,7 +1737,7 @@ sap.ui.define(["sap/ui/base/Object",
1737
1737
  return oFLPUrl.toString();
1738
1738
  });
1739
1739
  }
1740
-
1740
+
1741
1741
  // This function is called when only tables could be found as focus target for the message oMessage.
1742
1742
  // sFullTarget is one of the full targets defined for this message.
1743
1743
  // The function tries to identify a child page of the current page which is a better match for the message.
@@ -1755,12 +1755,12 @@ sap.ui.define(["sap/ui/base/Object",
1755
1755
  if (iLastSlash > 0){
1756
1756
  var sTail = sFullTarget.substring(iLastSlash);
1757
1757
  if (sTail.indexOf("(") < 0){
1758
- sAssumedBindingPath = sFullTarget.substring(0, iLastSlash);
1758
+ sAssumedBindingPath = sFullTarget.substring(0, iLastSlash);
1759
1759
  } else {
1760
1760
  sAssumedBindingPath = sFullTarget;
1761
1761
  }
1762
1762
  } else {
1763
- sAssumedBindingPath = sFullTarget;
1763
+ sAssumedBindingPath = sFullTarget;
1764
1764
  }
1765
1765
  var aKeys = []; // the keys for navigation (will be filled in reverse order one by one)
1766
1766
  var oTargetNode, oTreeNode; // oTargetNode will be the candidate for navigation. oTreeNode will be used to run up the hierarchy starting at oTargetNode.
@@ -1809,7 +1809,7 @@ sap.ui.define(["sap/ui/base/Object",
1809
1809
  var oOptions = {
1810
1810
  identity: oTargetIdentity,
1811
1811
  mode: 0,
1812
- displayMode: 6
1812
+ displayMode: 6
1813
1813
  };
1814
1814
  var oAppStatePromise;
1815
1815
  if (oTargetNode === oCurrentIdentity.treeNode){ // we are already on the target page
@@ -1819,19 +1819,19 @@ sap.ui.define(["sap/ui/base/Object",
1819
1819
  return null; // and the keys are also already correct -> no navigation
1820
1820
  }
1821
1821
  // we have already reached the target page but need to exchange the keys
1822
- extend(oTargetIdentity.appStates, oCurrentIdentity.appStates);
1822
+ extend(oTargetIdentity.appStates, oCurrentIdentity.appStates);
1823
1823
  oAppStatePromise = Promise.resolve();
1824
1824
  } else { // navigate to another page
1825
1825
  oAppStatePromise = getApplicableStateForIdentityAddedPromise(oTargetIdentity).then(function(){ // determine app state
1826
1826
  if (oTemplateContract.oFlexibleColumnLayoutHandler){ // in case of FCL make sure that navigation target is full screen
1827
- oTemplateContract.oFlexibleColumnLayoutHandler.adaptBreadCrumbUrlParameters(oTargetIdentity.appStates, oTargetNode);
1827
+ oTemplateContract.oFlexibleColumnLayoutHandler.adaptBreadCrumbUrlParameters(oTargetIdentity.appStates, oTargetNode);
1828
1828
  }
1829
1829
  });
1830
1830
  }
1831
1831
  // Define a function that will focus on the control that belongs to oMessage after navigation to the corresponding page has happened
1832
1832
  var fnFocusFunction = function(oBeforeData, fnFallback){
1833
1833
  // oMessage is probably already removed from the message model. But there should be a replacement now, which has the same targets
1834
- var oMessageManager = sap.ui.getCore().getMessageManager();
1834
+ var oMessageManager = sap.ui.getCore().getMessageManager();
1835
1835
  var oMessageModel = oMessageManager.getMessageModel();
1836
1836
  var oMessageBinding = oMessageModel.bindList("/"); // This binding needs to recreated every time, since UI5 will not update such an instance
1837
1837
  var aTargets = oMessage.aTargets;
@@ -1854,7 +1854,7 @@ sap.ui.define(["sap/ui/base/Object",
1854
1854
  return;
1855
1855
  }
1856
1856
  fnFallback();
1857
- };
1857
+ };
1858
1858
  var oRet = oAppStatePromise.then(function(){
1859
1859
  fnNavigateToRoute(oOptions);
1860
1860
  return true;
@@ -1862,7 +1862,7 @@ sap.ui.define(["sap/ui/base/Object",
1862
1862
  oTemplateContract.oBusyHelper.setBusy(Promise.all([oRet, oTargetNode.componentCreated]));
1863
1863
  oTemplateContract.oApplicationProxy.setNextFocus(fnFocusFunction);
1864
1864
  return oRet;
1865
- }
1865
+ }
1866
1866
 
1867
1867
  // returns the information whether the app has started a navigation which is not yet finished.
1868
1868
  // Note: Only navigation using the fnNavigateToRoute option will be considered
@@ -1942,7 +1942,7 @@ sap.ui.define(["sap/ui/base/Object",
1942
1942
  index: oCurrentHash.backTarget
1943
1943
  };
1944
1944
  }
1945
-
1945
+
1946
1946
  // Returns a Promise that resolves to an identity which can currently be used to navigate to the root
1947
1947
  function getRootIdentityPromise(){
1948
1948
  var oTargetIdentity = {
@@ -2087,7 +2087,7 @@ sap.ui.define(["sap/ui/base/Object",
2087
2087
  function fnNavigateToMessagePage(mParameters) {
2088
2088
  if (oTemplateContract.oAppComponent.isDestroyed()){
2089
2089
  return; // do not try to navigate to Message page if app is already exited
2090
- }
2090
+ }
2091
2091
  if (oTemplateContract.oFlexibleColumnLayoutHandler){
2092
2092
  oTemplateContract.oFlexibleColumnLayoutHandler.hidePlaceholder();
2093
2093
  mParameters.viewLevel = mParameters.viewLevel || 0;
@@ -2125,7 +2125,7 @@ sap.ui.define(["sap/ui/base/Object",
2125
2125
  }
2126
2126
  }
2127
2127
  return aRet.sort(function(sId1, sId2){
2128
- return oTemplateContract.componentRegistry[sId1].viewLevel - oTemplateContract.componentRegistry[sId2].viewLevel;
2128
+ return oTemplateContract.componentRegistry[sId1].viewLevel - oTemplateContract.componentRegistry[sId2].viewLevel;
2129
2129
  });
2130
2130
  }
2131
2131
 
@@ -2157,7 +2157,7 @@ sap.ui.define(["sap/ui/base/Object",
2157
2157
  function getAncestralNode(iTargetLevel){
2158
2158
  return oTemplateContract.oApplicationProxy.getAncestralNode(oCurrentIdentity.treeNode, iTargetLevel);
2159
2159
  }
2160
-
2160
+
2161
2161
  // returns a Promise that resolves to the data which have been stored with the given key if this data could be retrieved. Otherwise it is rejected to null.
2162
2162
  // The following edge cases are also rejected: sAppStateKey is faulty, or undefined has been stored with the key (note that CrossAppNav service also might provide undefined when it cannot retrieve the data).
2163
2163
  function getAppStateFromShell(sAppStateKey, bApplyDeStringify){
@@ -2239,7 +2239,7 @@ sap.ui.define(["sap/ui/base/Object",
2239
2239
  for (var sRouteName in oTemplateContract.mRoutingTree) {
2240
2240
  if (!mAncestors[sRouteName]) {
2241
2241
  var oOtherTreeNode = oTemplateContract.mRoutingTree[sRouteName];
2242
- oOtherTreeNode.unbindElement(oTemplateContract.oNavigationHost, true);
2242
+ oOtherTreeNode.unbindElement(oTemplateContract.oNavigationHost, true);
2243
2243
  // Temporary solution (AncestorFeature)
2244
2244
  if (oOtherTreeNode.contextTargets) {
2245
2245
  oOtherTreeNode.contextTargets.forEach(oOtherTreeNode.unbindElement);
@@ -2261,8 +2261,8 @@ sap.ui.define(["sap/ui/base/Object",
2261
2261
  if (oReactivationPromise){
2262
2262
  delete oRegistryEntry.reactivate;
2263
2263
  oReactivationPromise.then(function(fnReactivate){
2264
- fnReactivate();
2265
- });
2264
+ fnReactivate();
2265
+ });
2266
2266
  }
2267
2267
  });
2268
2268
  };
@@ -2322,7 +2322,7 @@ sap.ui.define(["sap/ui/base/Object",
2322
2322
  function getAlternativeIdentityPromise(oIdentity){
2323
2323
  return oTemplateContract.oApplicationProxy.getAlternativeIdentityPromise(oIdentity);
2324
2324
  }
2325
-
2325
+
2326
2326
 
2327
2327
  var mRoutesToHostViews = Object.create(null);
2328
2328
  function fnPrepareHostView(oTreeNode, isComponentPreloaded, bOnlyComponent){
@@ -2337,7 +2337,7 @@ sap.ui.define(["sap/ui/base/Object",
2337
2337
  if (mRoutesToHostViews[oTreeNode.sRouteName] || oTemplateContract.oAppComponent.isDestroyed()){
2338
2338
  return Promise.resolve();
2339
2339
  }
2340
-
2340
+
2341
2341
  oLogger.debug("Prepare host view for route " + oTreeNode.sRouteName);
2342
2342
  var oHostViewPromise = oNavigationControllerProxy.createHostView();
2343
2343
  var oViews = oNavigationControllerProxy.oRouter.getViews();
@@ -2352,7 +2352,7 @@ sap.ui.define(["sap/ui/base/Object",
2352
2352
  if (bOnlyComponent) {
2353
2353
  oTreeNode.createComponent = fnCreateTemplateComponent.bind(null, oComponentContainer, oTreeNode.sRouteName, isComponentPreloaded);
2354
2354
  } else {
2355
- fnCreateTemplateComponent(oComponentContainer, oTreeNode.sRouteName, isComponentPreloaded);
2355
+ fnCreateTemplateComponent(oComponentContainer, oTreeNode.sRouteName, isComponentPreloaded);
2356
2356
  }
2357
2357
  });
2358
2358
  }
@@ -2365,14 +2365,14 @@ sap.ui.define(["sap/ui/base/Object",
2365
2365
  }
2366
2366
  return Promise.resolve();
2367
2367
  }
2368
-
2368
+
2369
2369
  function fnHandleBeforeRouteMatched(oEvent){
2370
2370
  bUserHasAcceptedDataLoss = false;
2371
2371
  oNavigationQueue.stop(); // hold back any other navigation until this navigation is finished (redundant if navigation was triggered via fnNavigateToRoute)
2372
2372
  oRouterBusyObserver.startProcess();
2373
2373
  fnFillCurrentIdentity(oEvent);
2374
2374
  fnPrepareHostView(oCurrentIdentity.treeNode);
2375
- oCurrentIdentity.treeNode.display();
2375
+ oCurrentIdentity.treeNode.display();
2376
2376
  if (oTemplateContract.oFlexibleColumnLayoutHandler){
2377
2377
  oBeforeRouteMatchedPromise = oTemplateContract.oFlexibleColumnLayoutHandler.handleBeforeRouteMatched(oCurrentIdentity);
2378
2378
  }
@@ -2449,7 +2449,7 @@ sap.ui.define(["sap/ui/base/Object",
2449
2449
  };
2450
2450
  oRoutingOptions = null; // indicate that there is no pending navigation
2451
2451
  fnNavigateToRoute(oFollowUpOptions); // execute the follow-up navigation
2452
- return;
2452
+ return;
2453
2453
  }
2454
2454
  }
2455
2455
  oTemplateContract.oBusyHelper.setBusyReason("HashChange", false, undefined, undefined, true);
@@ -2597,7 +2597,7 @@ sap.ui.define(["sap/ui/base/Object",
2597
2597
  oTargetIdentity = oAlternativeIdentityInfo.identity;
2598
2598
  var oBackIdentity = oCurrentHash.backTarget && aPreviousHashes[oCurrentHash.backTarget];
2599
2599
  iMode = (oBackIdentity && oBackIdentity.treeNode === oTargetIdentity.treeNode) ? -1 : 1;
2600
- }
2600
+ }
2601
2601
  var oOptions = {
2602
2602
  identity: oTargetIdentity,
2603
2603
  mode: iMode,
@@ -2686,7 +2686,7 @@ sap.ui.define(["sap/ui/base/Object",
2686
2686
  function fnHandleRouteMatched() {
2687
2687
  // When target reached is indicated by the routematched event, UI5 sets a placeholder on the container of target(i.e NavContainer or FlexibleColumLayoutHandler).
2688
2688
  // When the page is reached via back navigation this placeholder is unwanted.
2689
- if (isBackwards()){
2689
+ if (isBackwards()){
2690
2690
  fnHidePlaceholder();
2691
2691
  }
2692
2692
  if (bIsRestoring && !aPreviousHashes.length){ // restarted this app via back navigation without direct access to the history we have returned to
@@ -2743,11 +2743,11 @@ sap.ui.define(["sap/ui/base/Object",
2743
2743
  // Define a function that is passed to the application to reset the property /generic/currentActiveChildContex
2744
2744
  // Note that oTreeNode, oSelectionInfo, and oTemplatePrivateModel will be set by the framework.
2745
2745
  var fnSetPath = function(oTreeNode, oSelectionInfo, oTemplatePrivateModel, sPath){
2746
- if (oTreeNode.selectionInfo === oSelectionInfo){ // is the child node still valid?
2746
+ if (oTreeNode.selectionInfo === oSelectionInfo){ // is the child node still valid?
2747
2747
  oTemplatePrivateModel.setProperty("/generic/currentActiveChildContext", sPath);
2748
- }
2748
+ }
2749
2749
  };
2750
- // Traverse the node hierarchy from the current identity node to the root node and
2750
+ // Traverse the node hierarchy from the current identity node to the root node and
2751
2751
  // - inform each parent about the selected child
2752
2752
  // - set the property /generic/currentActiveChildContext to the context path of the last selected child node
2753
2753
  for (var oParentNode, oWorkingNode = oCurrentIdentity.treeNode; oWorkingNode; oWorkingNode = oParentNode){
@@ -2765,7 +2765,7 @@ sap.ui.define(["sap/ui/base/Object",
2765
2765
  // Note: For the current page the selectionInfo will have been set by earlier calls of fnUpdateParentModelsWithContext. For all other
2766
2766
  // pages in the hierarchy it will be set within this call.
2767
2767
  var oRegistryEntry = oWorkingNode.componentId && oTemplateContract.componentRegistry[oWorkingNode.componentId];
2768
- if (oRegistryEntry){
2768
+ if (oRegistryEntry){
2769
2769
  var oTemplatePrivateModel = oRegistryEntry.utils.getTemplatePrivateModel();
2770
2770
  if (isSelectionInfoApplicableForNode(oWorkingNode)){ // did this node ever have a child instance and was this instance a child of the current one?
2771
2771
  var oSelectionInfo = oWorkingNode.selectionInfo;
@@ -2801,7 +2801,7 @@ sap.ui.define(["sap/ui/base/Object",
2801
2801
  });
2802
2802
  oNavigationControllerProxy.routerInitialized = Function.prototype;
2803
2803
  }
2804
-
2804
+
2805
2805
  // This method is called when the routing target corresponding to the TreeNode is displayed in the sense of the router.
2806
2806
  // It checks whether this is really correct (In FCL fullscreen mode the call would also happen for the preceeding columns which are actually not displayed).
2807
2807
  // If this turns out to be true oTemplateComponentsAvailablePromise will be modified that it also waits for the corresponding component to be ready.
@@ -2820,11 +2820,11 @@ sap.ui.define(["sap/ui/base/Object",
2820
2820
  var mModels = oSourceObject.getOwnModels();
2821
2821
  for (var sModelName in mModels) {
2822
2822
  var oModel = mModels[sModelName];
2823
- var sTargetModelName = sModelName === "undefined" ? undefined : sModelName; // default model is contained with name "undefined" in mModels but should be set without name.
2823
+ var sTargetModelName = sModelName === "undefined" ? undefined : sModelName; // default model is contained with name "undefined" in mModels but should be set without name.
2824
2824
  oTargetObject.setModel(oModel, sTargetModelName);
2825
2825
  }
2826
2826
  }
2827
-
2827
+
2828
2828
  function fnCreateTemplateComponent(oComponentContainer, sRoute, isComponentPreloaded){
2829
2829
  oLogger.debug("Create TemplateComponent for route " + sRoute);
2830
2830
  var oTreeNode = oTemplateContract.mRoutingTree[sRoute];
@@ -2874,7 +2874,7 @@ sap.ui.define(["sap/ui/base/Object",
2874
2874
  return oComponentPromise.then(function(oComponent) {
2875
2875
  oLogger.debug("Component for route " + sRoute + " was created");
2876
2876
  if (isComponentPreloaded) {
2877
- // UI5 does the Model propogation when the control is being rendered. When the
2877
+ // UI5 does the Model propogation when the control is being rendered. When the
2878
2878
  // component is preloaded the Component container is not added to rendering queue
2879
2879
  // therefore manually propogating the model.
2880
2880
  fnPropogateModels(oComponentContainer, oTemplateContract.oAppComponent);
@@ -2886,7 +2886,7 @@ sap.ui.define(["sap/ui/base/Object",
2886
2886
  });
2887
2887
  });
2888
2888
  }
2889
-
2889
+
2890
2890
  // This function should be called EXACTLY in the following situation:
2891
2891
  // Some user action triggers an EXTERNAL navigation which is controlled by FE code.
2892
2892
  // FE code has already checked whether this external navigation results in a dataloss.
@@ -2896,7 +2896,7 @@ sap.ui.define(["sap/ui/base/Object",
2896
2896
  function fnUserHasAcceptedDataLoss(){
2897
2897
  bUserHasAcceptedDataLoss = true;
2898
2898
  }
2899
-
2899
+
2900
2900
  // This method can be called while the shell is performing a navigation.
2901
2901
  // If this method returns false no additional data loss handling should be performed.
2902
2902
  // If this method returns true it needs to be checked whether the user has any unchanged changes and, if yes,
@@ -2926,9 +2926,9 @@ sap.ui.define(["sap/ui/base/Object",
2926
2926
  /**
2927
2927
  * From the given app route hash, returns the route information.
2928
2928
  * Also takes nested app route hash as input
2929
- * @param {sap.m.routing.Router|sap.f.routing.Router} oRouter
2930
- * @param {string} sHash
2931
- * @returns {sap.ui.core.routing.RouteInfo|undefined} An object containing the route <code>name</code> and the <code>arguments</code>
2929
+ * @param {sap.m.routing.Router|sap.f.routing.Router} oRouter
2930
+ * @param {string} sHash
2931
+ * @returns {sap.ui.core.routing.RouteInfo|undefined} An object containing the route <code>name</code> and the <code>arguments</code>
2932
2932
  * or <code>undefined</code>
2933
2933
  */
2934
2934
  function fnGetRouteInfoByHash(oRouter, sHash) {
@@ -2953,19 +2953,19 @@ sap.ui.define(["sap/ui/base/Object",
2953
2953
 
2954
2954
  function getEditScopeHeaderNode(oTreeNode){
2955
2955
  var oMainNode = oTemplateContract.oApplicationProxy.getAncestralNode(oTreeNode, 1);
2956
- return oMainNode.isDraft ? oMainNode : oTreeNode;
2956
+ return oMainNode.isDraft ? oMainNode : oTreeNode;
2957
2957
  }
2958
-
2958
+
2959
2959
  function isBackLeavingTheEditScope(){
2960
2960
  if (oCurrentIdentity.treeNode.level === 0){
2961
2961
  return false; // We are currently not on a detail page
2962
- }
2962
+ }
2963
2963
  var aHistoricalEntries = oHistoryState.getData().historicalEntries;
2964
2964
  if (aHistoricalEntries.length === 1 || aHistoricalEntries[1].sRouteName === "root"){
2965
2965
  return true; // back leaves the app resp. goes back to list page
2966
2966
  }
2967
2967
 
2968
- /* Case where the user navigates between main object pages of the same entity set such as an instance is copied to
2968
+ /* Case where the user navigates between main object pages of the same entity set such as an instance is copied to
2969
2969
  create another instance and then moves back from the newly created instance to the previous/original instance. */
2970
2970
  if (aHistoricalEntries[0].keys.length === 2 && aHistoricalEntries[1].keys.length === 2) {
2971
2971
  // navigation is between main object pages
@@ -2981,7 +2981,7 @@ sap.ui.define(["sap/ui/base/Object",
2981
2981
  }
2982
2982
  }
2983
2983
 
2984
- // Check whether back leads to another main object node
2984
+ // Check whether back leads to another main object node
2985
2985
  var oCurrentEditScopeNode = getEditScopeHeaderNode(oCurrentIdentity.treeNode);
2986
2986
  var oPreviousNode = oTemplateContract.mRoutingTree[aHistoricalEntries[1].sRouteName];
2987
2987
  var oPreviousEditScopeNode = getEditScopeHeaderNode(oPreviousNode);
@@ -3004,7 +3004,7 @@ sap.ui.define(["sap/ui/base/Object",
3004
3004
  }
3005
3005
  return oTemplateContract.oFlexibleColumnLayoutHandler.willBeOpenedInFullscreen(oTargetNode);
3006
3006
  }
3007
-
3007
+
3008
3008
  // Expose methods via NavigationController proxy
3009
3009
  oNavigationControllerProxy.routerInitialized = fnRouterInitialized;
3010
3010
  oNavigationControllerProxy.treeNodeFirstDisplay = fnTreeNodeFirstDisplay;
@@ -3058,7 +3058,7 @@ sap.ui.define(["sap/ui/base/Object",
3058
3058
  oNavigationControllerProxy.preloadComponent = fnPreloadComponent;
3059
3059
  oNavigationControllerProxy.navigateToMessagePage = fnNavigateToMessagePage;
3060
3060
  oNavigationControllerProxy.getAppStateFromShell = getAppStateFromShell;
3061
-
3061
+
3062
3062
  oNavigationControllerProxy.userHasAcceptedDataLoss = fnUserHasAcceptedDataLoss;
3063
3063
  oNavigationControllerProxy.unwantedDataLossPossible = fnUnwantedDataLossPossible;
3064
3064
  oNavigationControllerProxy.isBackLeavingTheEditScope = isBackLeavingTheEditScope;
@@ -3082,7 +3082,7 @@ sap.ui.define(["sap/ui/base/Object",
3082
3082
  }, "setPrepareHostView");
3083
3083
  /* eslint-enable */
3084
3084
 
3085
-
3085
+
3086
3086
  oTemplateContract.oBusyHelper.setBusy((getParsedShellHashFromFLP() || Promise.resolve()).then(function(oResults){
3087
3087
  var oParsedUrl = oResults && oResults.parseParameters(document.location.search);
3088
3088
  oTemplateContract.bEnablePlaceholder = oTemplateContract.bEnablePlaceholder && !(oParsedUrl && oParsedUrl["sap-ui-xx-placeholder"] && oParsedUrl["sap-ui-xx-placeholder"][0] === "false");
@@ -3167,7 +3167,7 @@ sap.ui.define(["sap/ui/base/Object",
3167
3167
  * @param {sap.suite.ui.generic.template.lib.AppComponent} oAppComponent The AppComponent instance
3168
3168
  * @public
3169
3169
  * @extends sap.ui.base.Object
3170
- * @version 1.130.1
3170
+ * @version 1.131.0
3171
3171
  * @since 1.30.0
3172
3172
  * @alias sap.suite.ui.generic.template.lib.NavigationController
3173
3173
  */