@sapui5/sap.ushell_abap 1.96.1 → 1.98.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 (67) hide show
  1. package/package.json +1 -1
  2. package/src/main/js/sap/ushell_abap/.library +3 -3
  3. package/src/main/js/sap/ushell_abap/adapters/abap/AdapterContainer.js +1 -1
  4. package/src/main/js/sap/ushell_abap/adapters/abap/AppStateAdapter.js +2 -2
  5. package/src/main/js/sap/ushell_abap/adapters/abap/ClientSideTargetResolutionAdapter.js +2 -2
  6. package/src/main/js/sap/ushell_abap/adapters/abap/ConfigurationDefaultsAdapter.js +2 -2
  7. package/src/main/js/sap/ushell_abap/adapters/abap/ContainerAdapter.js +2 -2
  8. package/src/main/js/sap/ushell_abap/adapters/abap/LaunchPageAdapter.js +178 -65
  9. package/src/main/js/sap/ushell_abap/adapters/abap/MenuAdapter.js +1 -1
  10. package/src/main/js/sap/ushell_abap/adapters/abap/NavTargetResolutionAdapter.js +2 -2
  11. package/src/main/js/sap/ushell_abap/adapters/abap/PageBuildingAdapter.js +2 -2
  12. package/src/main/js/sap/ushell_abap/adapters/abap/PagePersistenceAdapter.js +35 -15
  13. package/src/main/js/sap/ushell_abap/adapters/abap/PersonalizationAdapter.js +2 -2
  14. package/src/main/js/sap/ushell_abap/adapters/abap/SearchAdapter.js +2 -2
  15. package/src/main/js/sap/ushell_abap/adapters/abap/SupportTicketAdapter.js +2 -2
  16. package/src/main/js/sap/ushell_abap/adapters/abap/Ui5ComponentLoaderAdapter.js +2 -2
  17. package/src/main/js/sap/ushell_abap/adapters/abap/UserInfoAdapter.js +1 -1
  18. package/src/main/js/sap/ushell_abap/adapters/hana/ContainerAdapter.js +2 -2
  19. package/src/main/js/sap/ushell_abap/bootstrap/evo/XhrLogonEventHandler.js +1 -1
  20. package/src/main/js/sap/ushell_abap/bootstrap/evo/abap-def-dev.js +1 -1
  21. package/src/main/js/sap/ushell_abap/bootstrap/evo/abap-def-loader.js +6 -0
  22. package/src/main/js/sap/ushell_abap/bootstrap/evo/abap-def.js +1 -1
  23. package/src/main/js/sap/ushell_abap/bootstrap/evo/abap.bootstrap.utils.js +1 -1
  24. package/src/main/js/sap/ushell_abap/bootstrap/evo/abap.configure.ushell.js +2 -2
  25. package/src/main/js/sap/ushell_abap/bootstrap/evo/abap.constants.js +1 -1
  26. package/src/main/js/sap/ushell_abap/bootstrap/evo/abap.get.server.config.Urls.js +1 -1
  27. package/src/main/js/sap/ushell_abap/bootstrap/evo/abap.js +1 -1
  28. package/src/main/js/sap/ushell_abap/bootstrap/evo/abap.load.launchpad.js +1 -1
  29. package/src/main/js/sap/ushell_abap/bootstrap/evo/abap.request.pageset.js +1 -1
  30. package/src/main/js/sap/ushell_abap/bootstrap/evo/abap.request.server.config.js +1 -1
  31. package/src/main/js/sap/ushell_abap/bootstrap/evo/abap.request.startup.js +1 -1
  32. package/src/main/js/sap/ushell_abap/bootstrap/evo/abap.theme.handler.js +1 -1
  33. package/src/main/js/sap/ushell_abap/bootstrap/evo/abap.ui5.boot.handler.js +1 -1
  34. package/src/main/js/sap/ushell_abap/bootstrap/evo/abap.validate.Url.js +1 -1
  35. package/src/main/js/sap/ushell_abap/bootstrap/evo/abap.xhr.handler.js +1 -1
  36. package/src/main/js/sap/ushell_abap/bootstrap/evo/boottask.js +4 -8
  37. package/src/main/js/sap/ushell_abap/library.js +3 -3
  38. package/src/main/js/sap/ushell_abap/pbServices/ui2/AllCatalogs.js +1 -1
  39. package/src/main/js/sap/ushell_abap/pbServices/ui2/Bag.js +15 -1
  40. package/src/main/js/sap/ushell_abap/pbServices/ui2/Catalog.js +1 -1
  41. package/src/main/js/sap/ushell_abap/pbServices/ui2/Chip.js +13 -1
  42. package/src/main/js/sap/ushell_abap/pbServices/ui2/ChipDefinition.js +1 -1
  43. package/src/main/js/sap/ushell_abap/pbServices/ui2/ChipInstance.js +19 -1
  44. package/src/main/js/sap/ushell_abap/pbServices/ui2/Error.js +1 -1
  45. package/src/main/js/sap/ushell_abap/pbServices/ui2/Factory.js +1 -1
  46. package/src/main/js/sap/ushell_abap/pbServices/ui2/ODataService.js +1 -1
  47. package/src/main/js/sap/ushell_abap/pbServices/ui2/ODataWrapper.js +1 -1
  48. package/src/main/js/sap/ushell_abap/pbServices/ui2/Page.js +1 -1
  49. package/src/main/js/sap/ushell_abap/pbServices/ui2/PageBuildingService.js +1 -1
  50. package/src/main/js/sap/ushell_abap/pbServices/ui2/PageSet.js +1 -1
  51. package/src/main/js/sap/ushell_abap/pbServices/ui2/RemoteCatalogService.js +1 -1
  52. package/src/main/js/sap/ushell_abap/pbServices/ui2/Utils.js +1 -1
  53. package/src/main/js/sap/ushell_abap/pbServices/ui2/contracts/actions.js +1 -1
  54. package/src/main/js/sap/ushell_abap/pbServices/ui2/contracts/bag.js +1 -1
  55. package/src/main/js/sap/ushell_abap/pbServices/ui2/contracts/configuration.js +1 -1
  56. package/src/main/js/sap/ushell_abap/pbServices/ui2/contracts/configurationUi.js +1 -1
  57. package/src/main/js/sap/ushell_abap/pbServices/ui2/contracts/fullscreen.js +1 -1
  58. package/src/main/js/sap/ushell_abap/pbServices/ui2/contracts/navigation.js +1 -1
  59. package/src/main/js/sap/ushell_abap/pbServices/ui2/contracts/preview.js +1 -1
  60. package/src/main/js/sap/ushell_abap/pbServices/ui2/contracts/refresh.js +1 -1
  61. package/src/main/js/sap/ushell_abap/pbServices/ui2/contracts/search.js +1 -1
  62. package/src/main/js/sap/ushell_abap/pbServices/ui2/contracts/types.js +1 -1
  63. package/src/main/js/sap/ushell_abap/pbServices/ui2/contracts/url.js +1 -1
  64. package/src/main/js/sap/ushell_abap/pbServices/ui2/contracts/visible.js +1 -1
  65. package/src/main/js/sap/ushell_abap/support/plugins/app-infra/AppInfraOnSapNetWeaverSupportPlugin.js +1 -1
  66. package/src/main/js/sap/ushell_abap/ui5appruntime/AppInfoAdapter.js +1 -1
  67. package/ui5.yaml +378 -17
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sapui5/sap.ushell_abap",
3
- "version": "1.96.1",
3
+ "version": "1.98.0",
4
4
  "description": "SAPUI5 Library sap.ushell_abap",
5
5
  "homepage": "https://sap.github.io/ui5-tooling/pages/SAPUI5/",
6
6
  "keywords": [
@@ -2,8 +2,8 @@
2
2
  <library xmlns="http://www.sap.com/sap.ui.library.xsd">
3
3
  <name>sap.ushell_abap</name>
4
4
  <vendor>SAP SE</vendor>
5
- <version>1.96.1</version>
6
- <copyright>Copyright (c) 2009-2021 SAP SE. All rights reserved.</copyright>
5
+ <version>1.98.0</version>
6
+ <copyright>Copyright (c) 2009-2022 SAP SE. All rights reserved.</copyright>
7
7
  <documentation>SAP library: sap.ushell_abap</documentation>
8
8
 
9
9
  <dependencies>
@@ -42,7 +42,7 @@
42
42
  <exclude name="sap.ushell_abap.bootstrap.evo.core-*" />
43
43
  </jsdoc>
44
44
  <releasenotes xmlns="http://www.sap.com/ui5/buildext/releasenotes"
45
- url="../../../../test-resources/js/sap/ushell_abap/relnotes/changes-{major}.{minor}.json"
45
+ url="../../../test-resources/sap/ushell_abap/relnotes/changes-{major}.{minor}.json"
46
46
  resolve="lib" />
47
47
  <ownership xmlns="http://www.sap.com/ui5/buildext/ownership">
48
48
  <!-- default component for this library -->
@@ -1,4 +1,4 @@
1
- // Copyright (c) 2009-2021 SAP SE. All rights reserved.
1
+ // Copyright (c) 2009-2022 SAP SE. All rights reserved.
2
2
 
3
3
  sap.ui.define([
4
4
  "sap/base/util/ObjectPath",
@@ -1,8 +1,8 @@
1
- // Copyright (c) 2009-2021 SAP SE. All rights reserved.
1
+ // Copyright (c) 2009-2022 SAP SE. All rights reserved.
2
2
 
3
3
  /**
4
4
  * @fileOverview The Unified Shell's AppStateAdapter for the ABAP platform.
5
- * @version 1.96.1
5
+ * @version 1.98.0
6
6
  */
7
7
  sap.ui.define([
8
8
  "sap/base/util/ObjectPath",
@@ -1,4 +1,4 @@
1
- // Copyright (c) 2009-2021 SAP SE. All rights reserved.
1
+ // Copyright (c) 2009-2022 SAP SE. All rights reserved.
2
2
 
3
3
  /**
4
4
  * @fileOverview ClientSideTargetResolutionAdapter for the abap platform.
@@ -9,7 +9,7 @@
9
9
  * <li>provide the resolveHashFragmentFallback function, a fallback method called by ClientSideTargetResolution service.</li>
10
10
  * </ul>
11
11
  *
12
- * @version 1.96.1
12
+ * @version 1.98.0
13
13
  */
14
14
  sap.ui.define([
15
15
  "sap/ui/thirdparty/jquery",
@@ -1,8 +1,8 @@
1
- // Copyright (c) 2009-2021 SAP SE. All rights reserved.
1
+ // Copyright (c) 2009-2022 SAP SE. All rights reserved.
2
2
 
3
3
  /**
4
4
  * @fileOverview The ConfigurationDefaults adapter for the ABAP platform.
5
- * @version 1.96.1
5
+ * @version 1.98.0
6
6
  */
7
7
  sap.ui.define([
8
8
  "sap/ushell_abap/bootstrap/evo/abap.constants",
@@ -1,8 +1,8 @@
1
- // Copyright (c) 2009-2021 SAP SE. All rights reserved.
1
+ // Copyright (c) 2009-2022 SAP SE. All rights reserved.
2
2
  /**
3
3
  * @fileOverview The Unified Shell's container adapter for the ABAP platform.
4
4
  *
5
- * @version 1.96.1
5
+ * @version 1.98.0
6
6
  */
7
7
  sap.ui.define([
8
8
  "sap/ui/thirdparty/jquery",
@@ -1,8 +1,8 @@
1
- // Copyright (c) 2009-2021 SAP SE. All rights reserved.
1
+ // Copyright (c) 2009-2022 SAP SE. All rights reserved.
2
2
 
3
3
  /**
4
4
  * @fileOverview The Unified Shell's page building adapter for the ABAP platform.
5
- * @version 1.96.1
5
+ * @version 1.98.0
6
6
  */
7
7
  sap.ui.define([
8
8
  "sap/ui/thirdparty/URI",
@@ -19,7 +19,10 @@ sap.ui.define([
19
19
  "sap/ushell_abap/pbServices/ui2/ChipDefinition",
20
20
  "sap/ushell_abap/pbServices/ui2/Utils",
21
21
  "sap/ushell_abap/pbServices/ui2/Page",
22
- "sap/ushell_abap/pbServices/ui2/Error"
22
+ "sap/ushell_abap/pbServices/ui2/Error",
23
+ "sap/base/Log",
24
+ "sap/m/library",
25
+ "sap/ushell/ui/tile/StaticTile"
23
26
  ], function (
24
27
  URI,
25
28
  ManifestPropertyHelper,
@@ -35,10 +38,15 @@ sap.ui.define([
35
38
  ChipDefinition,
36
39
  Utils,
37
40
  Page,
38
- SrvcError
41
+ SrvcError,
42
+ Log,
43
+ mobileLibrary,
44
+ StaticTile
39
45
  ) {
40
46
  "use strict";
41
47
 
48
+ var LoadState = mobileLibrary.LoadState;
49
+
42
50
  var sCOMPONENT = "sap.ushell_abap.adapters.abap.LaunchPageAdapter",
43
51
  sDEFAULT_PAGE_ID = "/UI2/Fiori2LaunchpadHome",
44
52
  sDEFAULT_CATALOG_ID = "/UI2/FLPD_CATALOG",
@@ -115,8 +123,7 @@ sap.ui.define([
115
123
  return oTile.getImplementationAsSapui5();
116
124
  } catch (ex) {
117
125
  // log errors, but do not fail
118
- jQuery.sap.log.error(sMessage + ": " + (ex.message || ex),
119
- ex.stack, sCOMPONENT);
126
+ Log.error(sMessage + ": " + (ex.message || ex), ex.stack, sCOMPONENT);
120
127
  return new sap.ushell.ui.tile.StaticTile({ // TODO remove as soon as RT has a own // TODO: pending dependency migration
121
128
  icon: "sap-icon://error",
122
129
  info: "",
@@ -427,7 +434,7 @@ sap.ui.define([
427
434
 
428
435
  function fnFailure (sMessage) {
429
436
  // log errors, but do not fail
430
- jQuery.sap.log.error("Failed to load tile: " + sMessage, oChipInstance.toString(), sCOMPONENT);
437
+ Log.error("Failed to load tile: " + sMessage, oChipInstance.toString(), sCOMPONENT);
431
438
  if (oChipInstance._loadingDeferred) {
432
439
  oChipInstance._loadingDeferred.reject();
433
440
  }
@@ -485,7 +492,7 @@ sap.ui.define([
485
492
  LaunchPageAdapter.prototype._triggerChipInstanceLoad(oChipInstance);
486
493
  oCoreResourcesComplementEvent.off();
487
494
  } else {
488
- jQuery.sap.log.error("Did not load custom tile as core resources where not loaded", null, sCOMPONENT);
495
+ Log.error("Did not load custom tile as core resources where not loaded", null, sCOMPONENT);
489
496
  }
490
497
  });
491
498
  });
@@ -504,8 +511,7 @@ sap.ui.define([
504
511
  iPendingRequests += 1;
505
512
  oChipInstance.load(onLoad, function (sMessage) {
506
513
  // log errors, but do not fail
507
- jQuery.sap.log.error("Failed to load tile: " + sMessage,
508
- oChipInstance.toString(), sCOMPONENT);
514
+ Log.error("Failed to load tile: " + sMessage, oChipInstance.toString(), sCOMPONENT);
509
515
  onLoad();
510
516
  });
511
517
  }
@@ -756,7 +762,7 @@ sap.ui.define([
756
762
  try {
757
763
  oParsedTileConfiguration = JSON.parse(sConfigParam || "{}");
758
764
  } catch (oEx) {
759
- jQuery.sap.log.error("Tile with ID '" + oChipInstance.getId() +
765
+ Log.error("Tile with ID '" + oChipInstance.getId() +
760
766
  "' has a corrupt configuration containing a 'tileConfiguration' value '" + sConfigParam +
761
767
  "' which could not be parsed. If present, a (stringified) JSON is expected as value.",
762
768
  oEx.message,
@@ -926,7 +932,7 @@ sap.ui.define([
926
932
  sReferenceLostSafe = sReferenceLost || Object.prototype.toString.apply(sReferenceLostSafe);
927
933
 
928
934
  if (!sReferenceLostSafe.match(/^Reference lost: Note \d+ Page.+\s,\sInstance ID.+$/)) {
929
- jQuery.sap.log.warning(
935
+ Log.warning(
930
936
  "The string that describes a lost reference is in an unexpected format",
931
937
  "This is expected to be a string exactly like 'Reference lost: Note <#> Page <CATALOG_ID> , Instance ID <CHIP_ID>' instead of the given '" + sReferenceLost + "'",
932
938
  "sap.ushell_abap.adapters.abap.LaunchPageAdapter"
@@ -1215,12 +1221,12 @@ sap.ui.define([
1215
1221
 
1216
1222
  if (aErrorMessage.length > 0) {
1217
1223
  aErrorMessage.unshift("Tile error(s) were detected:");
1218
- jQuery.sap.log.error(aErrorMessage.join("\n"), null, "sap.ushell_abap.adapters.abap.LaunchPageAdapter");
1224
+ Log.error(aErrorMessage.join("\n"), null, "sap.ushell_abap.adapters.abap.LaunchPageAdapter");
1219
1225
  }
1220
1226
 
1221
1227
  if (aWarningMessage.length > 0) {
1222
1228
  aWarningMessage.unshift("Tile warning(s) were detected:");
1223
- jQuery.sap.log.warning(aWarningMessage.join("\n"), null, "sap.ushell_abap.adapters.abap.LaunchPageAdapter");
1229
+ Log.warning(aWarningMessage.join("\n"), null, "sap.ushell_abap.adapters.abap.LaunchPageAdapter");
1224
1230
  }
1225
1231
  };
1226
1232
 
@@ -1343,7 +1349,7 @@ sap.ui.define([
1343
1349
  .done(function (oTargetMappings, oPageSet) {
1344
1350
  this._bPageSetFullyLoaded = true;
1345
1351
 
1346
- if (jQuery.sap.log.getLevel() >= jQuery.sap.log.Level.DEBUG) { // sap-ui-debug = true
1352
+ if (Log.getLevel() >= Log.Level.DEBUG) { // sap-ui-debug = true
1347
1353
  this._findAndReportTileErrors(oPageSet.getPages(), oTargetMappingSupport);
1348
1354
  }
1349
1355
 
@@ -1413,7 +1419,7 @@ sap.ui.define([
1413
1419
  try {
1414
1420
  oLayout = JSON.parse(oGroup.getLayout());
1415
1421
  } catch (e) {
1416
- jQuery.sap.log.warning("Group " + oGroup.getId() + ": invalid layout: " + oGroup.getLayout(), null, sCOMPONENT);
1422
+ Log.warning("Group " + oGroup.getId() + ": invalid layout: " + oGroup.getLayout(), null, sCOMPONENT);
1417
1423
  // no valid layout
1418
1424
  }
1419
1425
  return this._orderBasedOnConfiguration(oLayout, oGroup.getChipInstances());
@@ -1573,7 +1579,7 @@ sap.ui.define([
1573
1579
 
1574
1580
  // This error is already logged in an aggregated log message by _reportTileErrors, but we keep it because
1575
1581
  // tiles may be added to the FLP home at a later point of time within the session (not covered by the other log).
1576
- jQuery.sap.log.warning("Group tile with ID '" + oTile.getId() + "' is filtered out as the current user has no target mapping assigned for the intent '" +
1582
+ Log.warning("Group tile with ID '" + oTile.getId() + "' is filtered out as the current user has no target mapping assigned for the intent '" +
1577
1583
  sIntent + "'",
1578
1584
  "\nGroup Tile ID: '" + oTile.getId() + "'\n" +
1579
1585
  "Title: '" + sTitle + "'\n" +
@@ -1863,7 +1869,7 @@ sap.ui.define([
1863
1869
 
1864
1870
  iSourceIndex = removeFromLayout(oSourceLayout, oTile, sOldTileType);
1865
1871
  if (iSourceIndex < 0) {
1866
- jQuery.sap.log.error("moveTile: tile not found in source group", null, sCOMPONENT);
1872
+ Log.error("moveTile: tile not found in source group", null, sCOMPONENT);
1867
1873
  fnFailure();
1868
1874
  return oDeferred.promise();
1869
1875
  }
@@ -1921,7 +1927,7 @@ sap.ui.define([
1921
1927
  oCurrentBag.save(function () {
1922
1928
  // don't wait for the save operation for performance reasons
1923
1929
  }, function () {
1924
- jQuery.sap.log.error("Bag " + sBagId + ": could not be saved", null, sCOMPONENT);
1930
+ Log.error("Bag " + sBagId + ": could not be saved", null, sCOMPONENT);
1925
1931
  });
1926
1932
  }
1927
1933
  });
@@ -1971,8 +1977,7 @@ sap.ui.define([
1971
1977
  return "link";
1972
1978
  }
1973
1979
  } catch (e) {
1974
- jQuery.sap.log.warning("Group " + oGroup.getId() + ": invalid layout: "
1975
- + oGroup.getLayout(), null, sCOMPONENT);
1980
+ Log.warning("Group " + oGroup.getId() + ": invalid layout: " + oGroup.getLayout(), null, sCOMPONENT);
1976
1981
  }
1977
1982
 
1978
1983
  // Cards can never be a stub at this point
@@ -2007,7 +2012,7 @@ sap.ui.define([
2007
2012
 
2008
2013
  return oManifest;
2009
2014
  } catch (error) {
2010
- jQuery.sap.log.error("Manifest of card with id '" + card.getId() + "' could not be read. " + error.message);
2015
+ Log.error("Manifest of card with id '" + card.getId() + "' could not be read. " + error.message);
2011
2016
  }
2012
2017
  };
2013
2018
 
@@ -2034,54 +2039,54 @@ sap.ui.define([
2034
2039
  * @since 1.11.0
2035
2040
  */
2036
2041
  this.getTileView = function (oTile) {
2037
- var that = this,
2038
- oDeferred = new jQuery.Deferred(),
2039
- oTypesContract;
2042
+ var that = this;
2043
+ var oDeferred = new jQuery.Deferred();
2044
+ var oTypesContract;
2040
2045
 
2041
2046
  function doResolve () {
2042
- var sTileType,
2043
- oView;
2047
+ var sTileType;
2044
2048
 
2045
2049
  // if needed, notify the tile in which way it shall display itself
2046
2050
  oTypesContract = oTile.getContract("types");
2047
-
2048
2051
  if (oTypesContract) {
2049
2052
  // set the tile type before getting the view
2050
2053
  // note: the contract caches the new type until the handler is attached
2051
2054
  sTileType = that.getTileType(oTile);
2052
2055
  oTypesContract.setType(sTileType);
2053
2056
  }
2054
- oView = oTile.getImplementationAsSapui5();
2055
2057
 
2056
- if (sTileType === "link") {
2057
- var oViewModel,
2058
- oViewController,
2059
- sUrl,
2060
- oLinkTile;
2058
+ oTile.getImplementationAsSapui5Async().then(function (oView) {
2059
+ if (sTileType === "link") {
2060
+ var oViewModel,
2061
+ oViewController,
2062
+ sUrl,
2063
+ oLinkTile;
2061
2064
 
2062
- if (!oView.hasModel()) {
2063
- oView = oView.getComponentInstance().getRootControl();
2064
- }
2065
- oViewModel = oView.getModel();
2066
- oViewController = oView.getController();
2067
-
2068
- sUrl = oViewModel && oViewModel.getProperty ? oViewModel.getProperty("/nav/navigation_target_url") : undefined;
2069
- oLinkTile = new GenericTile({
2070
- mode: "{view>/mode}",
2071
- header: "{view>/config/display_title_text}",
2072
- subheader: "{view>/config/display_subtitle_text}",
2073
- sizeBehavior: "{view>/sizeBehavior}",
2074
- size: "Auto",
2075
- url: oViewController.formatters && oViewController.formatters.leanURL(sUrl),
2076
- press: [oViewController.onPress, oViewController]
2077
- });
2065
+ if (!oView.hasModel()) {
2066
+ oView = oView.getComponentInstance().getRootControl();
2067
+ }
2068
+ oViewModel = oView.getModel();
2069
+ oViewController = oView.getController();
2070
+
2071
+ sUrl = oViewModel && oViewModel.getProperty ? oViewModel.getProperty("/nav/navigation_target_url") : undefined;
2072
+ oLinkTile = new GenericTile({
2073
+ mode: "{view>/mode}",
2074
+ header: "{view>/config/display_title_text}",
2075
+ subheader: "{view>/config/display_subtitle_text}",
2076
+ sizeBehavior: "{view>/sizeBehavior}",
2077
+ size: "Auto",
2078
+ url: oViewController.formatters && oViewController.formatters.leanURL(sUrl),
2079
+ press: [oViewController.onPress, oViewController]
2080
+ });
2078
2081
 
2079
- oLinkTile.setModel(oViewModel, "view");
2080
- oDeferred.resolve(oLinkTile);
2081
- return;
2082
- }
2082
+ oLinkTile.setModel(oViewModel, "view");
2083
+ oDeferred.resolve(oLinkTile);
2084
+ return;
2085
+ }
2083
2086
 
2084
- oDeferred.resolve(oView);
2087
+ oDeferred.resolve(oView);
2088
+ })
2089
+ .catch(doReject);
2085
2090
  }
2086
2091
 
2087
2092
  function doReject (sMessage) {
@@ -2093,10 +2098,10 @@ sap.ui.define([
2093
2098
 
2094
2099
  if (!oTile.$loadingPromise) { // loading resolved or failed
2095
2100
  if (!oTile.isStub()) { // success
2096
- // call getImplementationAsSapui5 async for non-AppLaunchers and resolves.
2101
+ // call getImplementationAsSapui5Async async for non-AppLaunchers and resolves.
2097
2102
  // For AppLaunchers, there is an optimization (requested by RT) to call it sync
2098
2103
  // as the resources are already bundled and loaded at startup.
2099
- // As a result, the Home will initially at least display app launchers.
2104
+ // Although they are called sync the view creation is still async
2100
2105
  Utils.callHandler(doResolve, doReject, /*async*/!isAppLauncher(oTile));
2101
2106
  } else { // failed
2102
2107
  doReject();
@@ -2341,7 +2346,7 @@ sap.ui.define([
2341
2346
  }
2342
2347
  }, function (sMessage) {
2343
2348
  // log errors, but do not fail
2344
- jQuery.sap.log.error("Failed to load catalog: " + sMessage, oCatalog.toString(), sCOMPONENT);
2349
+ Log.error("Failed to load catalog: " + sMessage, oCatalog.toString(), sCOMPONENT);
2345
2350
  oWrappedCatalog.errorMessage = sMessage || "Error"; // not undefined!
2346
2351
 
2347
2352
  oDeferred.notify(oWrappedCatalog);
@@ -2538,8 +2543,7 @@ sap.ui.define([
2538
2543
 
2539
2544
  function onFailure (oCatalogTile, sMessage) {
2540
2545
  // log errors, but do not fail
2541
- jQuery.sap.log.error("Failed to load catalog tile: " + sMessage,
2542
- oCatalogTile.toString(), sCOMPONENT);
2546
+ Log.error("Failed to load catalog tile: " + sMessage, oCatalogTile.toString(), sCOMPONENT);
2543
2547
  onLoaded();
2544
2548
  }
2545
2549
 
@@ -2590,6 +2594,31 @@ sap.ui.define([
2590
2594
  return sId;
2591
2595
  };
2592
2596
 
2597
+ /**
2598
+ * Returns the stable id of the catalog tile.
2599
+ * Note: If no stable id can be retrieved (For example for technical catalog tiles) or the reference is broken
2600
+ * a fallback to the normal id is in place.
2601
+ *
2602
+ * @param {sap.ui2.ChipInstance} oTile the tile or the catalog tile
2603
+ * @returns {string} the stable id
2604
+ * @private
2605
+ * @since 1.98.0
2606
+ */
2607
+ this.getStableCatalogTileId = function (oTile) {
2608
+ var oChip = oTile.getChip();
2609
+ var sStableId = oChip.getReferenceChipId();
2610
+
2611
+ if (sStableId === "O") {
2612
+ // The reference is broken. We do not want to return the value indicating that
2613
+ sStableId = null;
2614
+ }
2615
+ if (!sStableId) {
2616
+ sStableId = this.getCatalogTileId(oTile);
2617
+ }
2618
+
2619
+ return sStableId;
2620
+ };
2621
+
2593
2622
  /**
2594
2623
  * Returns the catalog tile's title. May be called for a catalog tile or (since 1.32.0) for a group tile.
2595
2624
  *
@@ -2627,8 +2656,7 @@ sap.ui.define([
2627
2656
  // TODO cache the view for later re-use - might not work cause view can get destroyed and is not reusable!
2628
2657
  // Needs further investigation - don't implement cache for now
2629
2658
  if (oCatalogTile.isStub()) {
2630
- jQuery.sap.log.warning("CHIP (instance) is just a stub!", oCatalogTile.toString(true),
2631
- sCOMPONENT);
2659
+ Log.warning("CHIP (instance) is just a stub!", oCatalogTile.toString(true), sCOMPONENT);
2632
2660
  return new sap.ushell.ui.tile.StaticTile({ // TODO remove as soon as RT has a own // TODO: pending dependency migration
2633
2661
  icon: "sap-icon://hide",
2634
2662
  info: "",
@@ -2656,6 +2684,83 @@ sap.ui.define([
2656
2684
  return getImplementationAsSapui5(oCatalogTile, sTitle, "Cannot get catalog tile view as SAPUI5");
2657
2685
  };
2658
2686
 
2687
+ /**
2688
+ * A function which returns UI5 view / control of the catalog tile
2689
+ *
2690
+ * @param {sap.ui2.ChipInstance} oCatalogTile the catalog tile
2691
+ * @param {boolean} bPreview return the tile in preview mode, default is true
2692
+ * @returns {jQuery.Promise<sap.ui.core.Control>} the UI5 representation of the catalog tile
2693
+ * @since 1.97.0
2694
+ * @private
2695
+ */
2696
+ this.getCatalogTileViewControl = function (oCatalogTile, bPreview) {
2697
+ var oDeferred = new jQuery.Deferred();
2698
+ bPreview = typeof bPreview !== "undefined" ? bPreview : true;
2699
+ var sTitle = this.getCatalogTileTitle(oCatalogTile);
2700
+
2701
+ if (oCatalogTile.isStub()) {
2702
+ Log.warning("CHIP (instance) is just a stub!", oCatalogTile.toString(true), sCOMPONENT);
2703
+ oDeferred.resolve(this._createErrorTile(sTitle, "CHIP was just a stub!"));
2704
+ return oDeferred.promise();
2705
+ }
2706
+
2707
+ if (bPreview) {
2708
+ var oPreviewContract = oCatalogTile.getContract("preview");
2709
+ if (oPreviewContract) {
2710
+ oPreviewContract.setEnabled(true);
2711
+ } else {
2712
+ oDeferred.resolve(this._createPreviewTile(sTitle));
2713
+ return oDeferred.promise();
2714
+ }
2715
+ }
2716
+
2717
+ oCatalogTile.getImplementationAsSapui5Async()
2718
+ .catch(function (oError) {
2719
+ Log.error("Cannot get catalog tile view as SAPUI5: " + (oError.message || oError), oError.stack, sCOMPONENT);
2720
+ return this._createErrorTile(sTitle, (oError.message || oError));
2721
+ }.bind(this))
2722
+ .then(oDeferred.resolve);
2723
+
2724
+ return oDeferred.promise();
2725
+ };
2726
+
2727
+ /**
2728
+ * Returns an error tile
2729
+ * @param {string} sTitle The tile title
2730
+ * @param {string} [sMessage] A message which gets added to the tile as subtitle
2731
+ * @returns {sap.m.GenericTile} The error tile
2732
+ *
2733
+ * @private
2734
+ * @since 1.97.0
2735
+ */
2736
+ this._createErrorTile = function (sTitle, sMessage) {
2737
+ var oErrorTile = new GenericTile({
2738
+ state: LoadState.Failed,
2739
+ header: sTitle,
2740
+ subheader: sMessage || ""
2741
+ }).addStyleClass("sapUshellTileError");
2742
+ return oErrorTile;
2743
+ };
2744
+
2745
+ /**
2746
+ * Returns a Tile for preview purposes
2747
+ * @param {string} sTitle The title
2748
+ * @returns {sap.ushell.ui.tile.StaticTile} a Preview Tile
2749
+ *
2750
+ * @private
2751
+ * @since 1.97.0
2752
+ */
2753
+ this._createPreviewTile = function (sTitle) {
2754
+ // TODO remove as soon as RT has an own // TODO: pending dependency migration
2755
+ return new StaticTile({
2756
+ title: sTitle,
2757
+ subtitle: "",
2758
+ info: "",
2759
+ infoState: "Neutral",
2760
+ icon: "sap-icon://folder-full"
2761
+ });
2762
+ };
2763
+
2659
2764
  /**
2660
2765
  * Get navigation target URL for a catalog tile.
2661
2766
  *
@@ -3055,7 +3160,7 @@ sap.ui.define([
3055
3160
  resolve();
3056
3161
  } catch (oError) {
3057
3162
  var sMessage = "Chip configuration check failed: " + oError.toString();
3058
- jQuery.sap.log.error(sMessage, oChipInstance.getId(), sCOMPONENT);
3163
+ Log.error(sMessage, oChipInstance.getId(), sCOMPONENT);
3059
3164
  reject(sMessage);
3060
3165
  }
3061
3166
  }.bind(this));
@@ -3585,8 +3690,16 @@ sap.ui.define([
3585
3690
 
3586
3691
  oResponse.results.forEach(function (oCatalog) {
3587
3692
  oCatalog.Chips.results.forEach(function (oChip) {
3588
- if (!oCatalogTileIndex[oChip.id]) {
3589
- oCatalogTileIndex[oChip.id] = oChip;
3693
+ var sChipId;
3694
+
3695
+ if (Config.last("/core/stableIDs/enabled") && oChip.referenceChipId) {
3696
+ sChipId = oChip.referenceChipId;
3697
+ } else {
3698
+ sChipId = oChip.id;
3699
+ }
3700
+
3701
+ if (!oCatalogTileIndex[sChipId]) {
3702
+ oCatalogTileIndex[sChipId] = oChip;
3590
3703
  }
3591
3704
  });
3592
3705
  });
@@ -1,4 +1,4 @@
1
- // Copyright (c) 2009-2021 SAP SE. All rights reserved.
1
+ // Copyright (c) 2009-2022 SAP SE. All rights reserved.
2
2
 
3
3
  /**
4
4
  * @fileOverview MenuAdapter for the ABAP platform.
@@ -1,4 +1,4 @@
1
- // Copyright (c) 2009-2021 SAP SE. All rights reserved.
1
+ // Copyright (c) 2009-2022 SAP SE. All rights reserved.
2
2
 
3
3
  /**
4
4
  * @fileOverview The NavTargetResolution adapter for the ABAP platform.
@@ -8,7 +8,7 @@
8
8
  * service now calls the ClientSideTargetResolution service in the abap
9
9
  * platform.
10
10
  *
11
- * @version 1.96.1
11
+ * @version 1.98.0
12
12
  */
13
13
  sap.ui.define([], function () {
14
14
  "use strict";
@@ -1,8 +1,8 @@
1
- // Copyright (c) 2009-2021 SAP SE. All rights reserved.
1
+ // Copyright (c) 2009-2022 SAP SE. All rights reserved.
2
2
 
3
3
  /**
4
4
  * @fileOverview The Unified Shell's page building adapter for the ABAP platform.
5
- * @version 1.96.1
5
+ * @version 1.98.0
6
6
  */
7
7
  sap.ui.define([
8
8
  "sap/base/util/ObjectPath",