@sapui5/sap.ushell_abap 1.144.1 → 1.146.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 (37) hide show
  1. package/package.json +1 -1
  2. package/src/main/js/sap/ushell_abap/.library +8 -7
  3. package/src/main/js/sap/ushell_abap/adapters/abap/AppStateAdapter.js +1 -1
  4. package/src/main/js/sap/ushell_abap/adapters/abap/ClientSideTargetResolutionAdapter.js +144 -72
  5. package/src/main/js/sap/ushell_abap/adapters/abap/CommonDataModelAdapter.js +1 -1
  6. package/src/main/js/sap/ushell_abap/adapters/abap/ConfigurationDefaultsAdapter.js +1 -1
  7. package/src/main/js/sap/ushell_abap/adapters/abap/ContainerAdapter.js +12 -1
  8. package/src/main/js/sap/ushell_abap/adapters/abap/FlpLaunchPageAdapter.js +1 -1
  9. package/src/main/js/sap/ushell_abap/adapters/abap/LaunchPageAdapter.js +1 -1
  10. package/src/main/js/sap/ushell_abap/adapters/abap/MenuAdapter.js +0 -17
  11. package/src/main/js/sap/ushell_abap/adapters/abap/NavTargetResolutionAdapter.js +1 -1
  12. package/src/main/js/sap/ushell_abap/adapters/abap/NavTargetResolutionInternalAdapter.js +1 -1
  13. package/src/main/js/sap/ushell_abap/adapters/abap/PageBuildingAdapter.js +1 -1
  14. package/src/main/js/sap/ushell_abap/adapters/abap/PagePersistenceAdapter.js +9 -10
  15. package/src/main/js/sap/ushell_abap/adapters/abap/PersonalizationAdapter.js +1 -1
  16. package/src/main/js/sap/ushell_abap/adapters/abap/PersonalizationV2Adapter.js +1 -1
  17. package/src/main/js/sap/ushell_abap/adapters/abap/SearchAdapter.js +1 -1
  18. package/src/main/js/sap/ushell_abap/adapters/abap/SupportTicketAdapter.js +1 -1
  19. package/src/main/js/sap/ushell_abap/adapters/abap/Ui5ComponentLoaderAdapter.js +1 -1
  20. package/src/main/js/sap/ushell_abap/adapters/hana/ContainerAdapter.js +1 -1
  21. package/src/main/js/sap/ushell_abap/bootstrap/evo/XhrLogonEventHandler.js +3 -3
  22. package/src/main/js/sap/ushell_abap/bootstrap/evo/abap-def-dev.js +20 -20
  23. package/src/main/js/sap/ushell_abap/bootstrap/evo/abap-def.js +22 -22
  24. package/src/main/js/sap/ushell_abap/bootstrap/evo/abap.bootstrap.utils.js +3 -3
  25. package/src/main/js/sap/ushell_abap/bootstrap/evo/abap.configure.ushell.js +9 -4
  26. package/src/main/js/sap/ushell_abap/bootstrap/evo/abap.constants.js +8 -2
  27. package/src/main/js/sap/ushell_abap/bootstrap/evo/abap.load.launchpad.js +3 -3
  28. package/src/main/js/sap/ushell_abap/bootstrap/evo/abap.request.pageset.js +9 -9
  29. package/src/main/js/sap/ushell_abap/bootstrap/evo/abap.request.startup.js +8 -8
  30. package/src/main/js/sap/ushell_abap/bootstrap/evo/abap.theme.handler.js +6 -2
  31. package/src/main/js/sap/ushell_abap/bootstrap/evo/abap.xhrlogon.LibLoader.js +2 -2
  32. package/src/main/js/sap/ushell_abap/bootstrap/evo/abap.xhrlogon.configure.js +2 -2
  33. package/src/main/js/sap/ushell_abap/bootstrap/evo/abap.xhrlogon.handler.js +7 -7
  34. package/src/main/js/sap/ushell_abap/bootstrap/evo/boottask.js +24 -28
  35. package/src/main/js/sap/ushell_abap/components/TCodeNavigation/MessageCode.js +18 -1
  36. package/src/main/js/sap/ushell_abap/components/TCodeNavigation.js +24 -13
  37. package/src/main/js/sap/ushell_abap/library.js +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sapui5/sap.ushell_abap",
3
- "version": "1.144.1",
3
+ "version": "1.146.0",
4
4
  "description": "SAPUI5 Library sap.ushell_abap",
5
5
  "homepage": "https://sap.github.io/ui5-tooling/pages/SAPUI5/",
6
6
  "keywords": [
@@ -2,7 +2,7 @@
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.144.1</version>
5
+ <version>1.146.0</version>
6
6
  <copyright>Copyright (c) 2009-2026 SAP SE, All Rights Reserved</copyright>
7
7
  <documentation>SAP library: sap.ushell_abap</documentation>
8
8
 
@@ -54,13 +54,14 @@
54
54
  <exclude name="sap.ushell_abap.bootstrap.evo.abap-dbg" />
55
55
  </jsdoc>
56
56
  <jscoverage xmlns="http://www.sap.com/ui5/buildext/jscoverage" >
57
- <!-- excludes for JScoverage -->
58
57
  <!-- Bundles -->
59
- <exclude name="sap.ushell_abap.bootstrap.appruntime-min*" />
60
- <exclude name="sap.ushell_abap.bootstrap.evo.abap*" />
61
- <exclude name="sap.ushell_abap.bootstrap.evo.core-min*" />
62
- <exclude name="sap.ushell_abap.bootstrap.evo.core-ext-light*" />
63
- <exclude name="sap.ushell_abap.thirdparty.sap-xhrlib-esm*" />
58
+ <exclude name="**/*-preload" />
59
+ <exclude name="**/preload-bundles/**/*" />
60
+ <exclude name="sap/ushell_abap/bootstrap/appruntime-min*" />
61
+ <exclude name="sap/ushell_abap/bootstrap/evo/abap*" />
62
+ <exclude name="sap/ushell_abap/bootstrap/evo/core-min*" />
63
+ <exclude name="sap/ushell_abap/bootstrap/evo/core-ext-light*" />
64
+ <exclude name="sap/ushell_abap/thirdparty/sap-xhrlib-esm*" />
64
65
  </jscoverage>
65
66
  <releasenotes xmlns="http://www.sap.com/ui5/buildext/releasenotes"
66
67
  url="../../../test-resources/sap/ushell_abap/relnotes/changes-{major}.{minor}.json"
@@ -2,7 +2,7 @@
2
2
 
3
3
  /**
4
4
  * @fileOverview The Unified Shell's AppStateAdapter for the ABAP platform.
5
- * @version 1.144.1
5
+ * @version 1.146.0
6
6
  */
7
7
  sap.ui.define([
8
8
  "sap/base/util/ObjectPath",
@@ -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.144.1
12
+ * @version 1.146.0
13
13
  */
14
14
  sap.ui.define([
15
15
  "sap/base/util/ObjectPath",
@@ -70,7 +70,6 @@ sap.ui.define([
70
70
  * @property {string} postParameters The post parameters of the source.
71
71
  * @property {string} url The URL of the source.
72
72
  * @property {string} systemAlias The system alias of the source.
73
- * @property {sap.ushell.services.ClientSideTargetResolution.DeviceTypes} [formfactors] The form factors of the source.
74
73
  * @property {sap.ushell.services.ClientSideTargetResolution.DeviceTypes} [formFactors] The form factors of the source.
75
74
  * @property {sap.ushell.services.ClientSideTargetResolution.Signature} signature The signature of the source.
76
75
  * @property {object} parameterMappings The parameter mappings of the source.
@@ -80,9 +79,6 @@ sap.ui.define([
80
79
  * @property {string} catalogId The catalog ID of the source.
81
80
  * @property {string} tmChipId The TM chip ID of the source.
82
81
  * @property {string} tcode The transaction code of the LADI/Target Mapping.
83
- * @property {string} isDefaultLadi Indicates whether the LADI/Target Mapping is default.
84
- * @property {string} ladiHasTiles Indicates whether the LADI/Target Mapping has tiles.
85
- * @property {string} defaultTileParams The default tile parameters of the LADI/Target Mapping.
86
82
  *
87
83
  * @since 1.135.0
88
84
  * @private
@@ -309,10 +305,10 @@ sap.ui.define([
309
305
  if (oAppDependencies.url.toUpperCase().indexOf(oUri.path().toUpperCase()) !== 0) {
310
306
  // No applicationDependencies in this case as they belong to the wrong app
311
307
  Log.debug("Component URL defined in target mapping "
312
- + "does not match the URL retrieved from application index. "
313
- + "The URL of the application index is used for further processing.",
314
- `Target mapping URL: ${oResult.url}\nApplication index URL: ${oAppDependencies.url}`,
315
- "sap.ushell_abap.bootstrap.abap");
308
+ + "does not match the URL retrieved from application index. "
309
+ + "The URL of the application index is used for further processing.",
310
+ `Target mapping URL: ${oResult.url}\nApplication index URL: ${oAppDependencies.url}`,
311
+ "sap.ushell_abap.bootstrap.abap");
316
312
  }
317
313
  oUri.path(oAppDependencies.url);
318
314
  sUrl = oUri.toString();
@@ -326,8 +322,7 @@ sap.ui.define([
326
322
  oAdjustedResult.applicationDependencies = oAppDependencies;
327
323
  } catch (oError) {
328
324
  Log.error(
329
- `Parsing of applicationDependencies attribute in resolveLink result failed for SAPUI5 component '${
330
- sComponentName}'`,
325
+ `Parsing of applicationDependencies attribute in resolveLink result failed for SAPUI5 component '${sComponentName}'`,
331
326
  oError,
332
327
  "sap.ushell_abap.bootstrap.abap"
333
328
  );
@@ -401,8 +396,8 @@ sap.ui.define([
401
396
  return new Promise((fnResolve, fnReject) => {
402
397
  this._oInitialSegmentPromise.then((aInitialSegmentAndTargetMappings) => {
403
398
  if (aInitialSegmentAndTargetMappings === null) {
404
- // When this promise resolved with null it means that target mappings won't be taken from an initial segment ever
405
- // in the future (mostly likely because this is not needed, e.g., no direct start).
399
+ // When this promise resolved with null it means that target mappings won't be taken from an initial segment ever
400
+ // in the future (mostly likely because this is not needed, e.g., no direct start).
406
401
  return;
407
402
  }
408
403
 
@@ -412,7 +407,9 @@ sap.ui.define([
412
407
  "",
413
408
  "sap.ushell_abap.adapters.abap.ClientSideTargetResolutionAdapter"
414
409
  );
415
- this._aInbounds = this._formatDirectStart(this._aTargetMappings);
410
+
411
+ ({ aResult: this._aInbounds, oResultABAP: this._oInboundsABAP } = this._formatDirectStart(this._aTargetMappings));
412
+
416
413
  fnResolve(this._aInbounds);
417
414
  } else {
418
415
  Log.debug(
@@ -432,8 +429,7 @@ sap.ui.define([
432
429
  "sap.ushell_abap.adapters.abap.ClientSideTargetResolutionAdapter"
433
430
  );
434
431
 
435
- // convert (once) when needed
436
- this._aInbounds = this._formatDirectStart(this._aTargetMappings);
432
+ ({ aResult: this._aInbounds, oResultABAP: this._oInboundsABAP } = this._formatDirectStart(this._aTargetMappings));
437
433
 
438
434
  // we don't want to check for the initial segment in the future anymore, since we've got all the inbounds now.
439
435
  this.getInbounds = function () {
@@ -447,6 +443,60 @@ sap.ui.define([
447
443
  });
448
444
  };
449
445
 
446
+ /**
447
+ * Creates a new array of inbound objects enriched with ABAP-specific properties.
448
+ *
449
+ * This method merges the ABAP-specific properties (stored in `this._oInboundsABAP`)
450
+ * into the corresponding inbound objects within the main `this._aInbounds` array.
451
+ * The merge is performed by matching the `id` of each inbound.
452
+ *
453
+ * @param {sap.ushell.services.ClientSideTargetResolution.Inbound[]} aBasicInbounds Array of basic inbound objects
454
+ * @param {object} oABAPInboundParams Object containing ABAP-specific properties indexed by inbound ID
455
+ * @returns {sap.ushell.services.NavigationDataProvider.ABAPInbound[]} Array of enriched inbound objects
456
+ * @since 1.146.0
457
+ * @private
458
+ */
459
+ ClientSideTargetResolutionAdapter.prototype._createEnhancedInbounds = function (aBasicInbounds, oABAPInboundParams) {
460
+ return aBasicInbounds.map((oInbound) => {
461
+ const sInboundId = oInbound.id;
462
+ const oMatchingAbapProps = oABAPInboundParams[sInboundId];
463
+
464
+ if (oMatchingAbapProps) {
465
+ return {
466
+ ...oInbound,
467
+ ...oMatchingAbapProps
468
+ };
469
+ }
470
+ return oInbound;
471
+ });
472
+ };
473
+
474
+ /**
475
+ * Enriches the main inbounds array with ABAP-specific properties.
476
+ *
477
+ * This function should be called after `getInbounds` has resolved, as `getInbounds`
478
+ * is responsible for initially populating both `_aInbounds` and `_oInboundsABAP`.
479
+ *
480
+ * @returns {Promise<sap.ushell.services.NavigationDataProvider.ABAPInbound[]> | Promise<sap.ushell.services.ClientSideTargetResolution.Inbound[]>}
481
+ * A Promise that resolves with the newly created array of enriched inbounds.
482
+ * @private
483
+ * @since 1.146.0
484
+ */
485
+ ClientSideTargetResolutionAdapter.prototype.getEnhancedInbounds = async function () {
486
+ if (this._aInboundsEnhanced) {
487
+ return this._aInboundsEnhanced;
488
+ }
489
+
490
+ const aBasicInbounds = await this.getInbounds();
491
+ if (this._oInboundsABAP && Object.keys(this._oInboundsABAP).length > 0) {
492
+ this._aInboundsEnhanced = this._createEnhancedInbounds(aBasicInbounds, this._oInboundsABAP);
493
+ return this._aInboundsEnhanced;
494
+ }
495
+
496
+ Log.warning("getEnhancedInbounds called but no ABAP-specific properties are available. Basic Inbounds are used.", null, S_COMPONENT);
497
+ return aBasicInbounds;
498
+ };
499
+
450
500
  /**
451
501
  * Test whether aSubSegment is completely contained in aSegment
452
502
  *
@@ -537,9 +587,6 @@ sap.ui.define([
537
587
  oTarget.title = oSrc.text;
538
588
  oTarget.permanentKey = `X-SAP-UI2-PAGE:${oSrc.catalogId}:${oSrc.tmChipId}`;
539
589
  oTarget.contentProviderId = "";
540
- oTarget.isDefaultLadi = oSrc.isDefaultLadi || false;
541
- oTarget.ladiHasTiles = oSrc.ladiHasTiles || false;
542
- oTarget.defaultTileParams = oSrc.defaultTileParams || "";
543
590
 
544
591
  // resolution result
545
592
  const oFakeResolutionResult = {};
@@ -573,7 +620,6 @@ sap.ui.define([
573
620
  // ClientSideTargetResolution will de-interpolate the URL before applying sap-system
574
621
  oTarget.resolutionResult.systemAlias = oSrc.systemAlias || ""; // NOTE: "" is the local system alias
575
622
 
576
- oTarget.deviceTypes = oSrc.formfactors;
577
623
  oTarget.resolutionResult["sap.ui"] = {};
578
624
  oTarget.resolutionResult["sap.ui"].technology = oTarget.resolutionResult.applicationType;
579
625
  if (oTarget.resolutionResult["sap.ui"].technology === "SAPUI5") {
@@ -677,29 +723,58 @@ sap.ui.define([
677
723
  oTarget.templateContext = that.getUrlTemplateContext(oSrc);
678
724
  }
679
725
 
726
+ return oTarget;
727
+ }
728
+
729
+ function mapABAPAttributes (sSrcId, oSrc) {
730
+ const oABAPAttributes = {};
731
+ const aMatch = sSrcId.match(/^([^-]+)-([^~]+)/);
732
+ if (!aMatch) {
733
+ Log.warning(
734
+ `The target mapping id ${sSrcId} is not valid`,
735
+ "this target mapping will be discarded",
736
+ "sap.ushell_abap.adapters.abap.ClientSideTargetResolutionAdapter"
737
+ );
738
+ return undefined;
739
+ }
740
+ oABAPAttributes.id = sSrcId;
741
+ oABAPAttributes.isDefaultLadi = oSrc.isDefaultLadi || false;
742
+ oABAPAttributes.ladiHasTiles = oSrc.ladiHasTiles || false;
743
+ oABAPAttributes.defaultTileParams =
744
+ oSrc.defaultTileParams || "";
680
745
  if (oSrc.tcode) {
681
- oTarget.resolutionResult.appInfo = {
682
- "abap.transaction": oSrc.tcode
746
+ oABAPAttributes.resolutionResult = { appInfo: {} };
747
+ oABAPAttributes.resolutionResult.appInfo = {
748
+ "abap.transaction": oSrc.tcode || ""
683
749
  };
684
750
  }
685
-
686
- return oTarget;
751
+ return oABAPAttributes;
687
752
  }
688
753
 
689
- const aRes = [];
754
+ // main processing of inbounds and inbounds with ABAP specific attributes returning all results
755
+ const aResult = [];
756
+ let oInbound = {};
757
+ const oResultABAP = {};
758
+ let oInboundABAP = {};
690
759
  Object.keys(oDirectStartResponse).forEach((sKey) => {
691
- const r = mapOne(sKey, oDirectStartResponse[sKey]);
692
- if (r) {
693
- aRes.push(r);
760
+ oInbound = mapOne(sKey, oDirectStartResponse[sKey]);
761
+ if (oInbound) {
762
+ aResult.push(oInbound);
763
+
764
+ oInboundABAP = mapABAPAttributes(sKey, oDirectStartResponse[sKey]);
765
+ if (oInboundABAP) {
766
+ oResultABAP[oInboundABAP.id] = oInboundABAP;
767
+ }
694
768
  }
695
769
  });
696
- return aRes;
770
+
771
+ return { aResult, oResultABAP };
697
772
  };
698
773
 
699
774
  /**
700
775
  * Extracts a valid <code>applicationType</code> field for ClientSideTargetResolution from the given object.
701
776
  *
702
- * @param {string} sTargetMappingId A unique identified
777
+ * @param {string} sTargetMappingId A unique identifier
703
778
  * @param {object} oResolutionResult The (pre-resolution) resolutionResult of the navigation target.
704
779
  * @returns {string} One of the following application types compatible with ClientSideTargetResolution service:
705
780
  * "TR", "SAPUI5", "WDA", "URL".
@@ -1104,52 +1179,49 @@ sap.ui.define([
1104
1179
  }
1105
1180
 
1106
1181
  return new Promise((fnResolve, fnReject) => {
1107
- this._oODataWrapper.read(`ResolveLink?linkId='${
1108
- encodeODataQueryParameter(sFragmentNoHash)}'&shellType='${ushellUtils.getShellType()}'${
1109
- sFormFactor ?
1110
- `&formFactor='${encodeODataQueryParameter(sFormFactor)}'` : ""}`,
1111
- (oResult) => {
1112
- let i;
1113
- let sDetails = "";
1114
- let oAdjustedResult;
1115
-
1116
- if (oResult.results.length) {
1117
- if (oResult.results.length > 1) {
1118
- // console log because of multiple targets
1119
- for (i = 0; i < oResult.results.length; i += 1) {
1120
- delete oResult.results[i].__metadata; // simplify output
1121
- sDetails += (i === 0 ? "used target: " : "\nignored target: ")
1122
- + JSON.stringify(oResult.results[i]);
1182
+ this._oODataWrapper.read(`ResolveLink?linkId='${encodeODataQueryParameter(sFragmentNoHash)}'&shellType='${ushellUtils.getShellType()}'${sFormFactor ?
1183
+ `&formFactor='${encodeODataQueryParameter(sFormFactor)}'` : ""}`,
1184
+ (oResult) => {
1185
+ let i;
1186
+ let sDetails = "";
1187
+ let oAdjustedResult;
1188
+
1189
+ if (oResult.results.length) {
1190
+ if (oResult.results.length > 1) {
1191
+ // console log because of multiple targets
1192
+ for (i = 0; i < oResult.results.length; i += 1) {
1193
+ delete oResult.results[i].__metadata; // simplify output
1194
+ sDetails += (i === 0 ? "used target: " : "\nignored target: ")
1195
+ + JSON.stringify(oResult.results[i]);
1196
+ }
1197
+ Log.error("INTEROP service's ResolveLink operation "
1198
+ + `returned ${oResult.results.length} targets for hash '#${sFragmentNoHash}', first one is used.`,
1199
+ sDetails,
1200
+ "sap.ushell_abap.adapters.abap.ClientSideTargetResolutionAdapter");
1123
1201
  }
1124
- Log.error("INTEROP service's ResolveLink operation "
1125
- + `returned ${oResult.results.length} targets for hash '#${
1126
- sFragmentNoHash}', first one is used.`,
1127
- sDetails,
1128
- "sap.ushell_abap.adapters.abap.ClientSideTargetResolutionAdapter");
1129
- }
1130
1202
 
1131
- oResult = oResult.results[0];
1132
- oAdjustedResult = ClientSideTargetResolutionAdapter.prototype._adjustNavTargetResult(oResult);
1133
- oAdjustedResult.url = _addPostParametersToNavTargetResultUrl(
1134
- oResult.postParameters, oAdjustedResult.url);
1203
+ oResult = oResult.results[0];
1204
+ oAdjustedResult = ClientSideTargetResolutionAdapter.prototype._adjustNavTargetResult(oResult);
1205
+ oAdjustedResult.url = _addPostParametersToNavTargetResultUrl(
1206
+ oResult.postParameters, oAdjustedResult.url);
1135
1207
 
1136
- // Fix application type to ensure backward compatible behavior after incompatible server-side change.
1137
- if (oAdjustedResult && oAdjustedResult.applicationType === "SAPUI5") {
1138
- oAdjustedResult.applicationType = "URL";
1139
- }
1208
+ // Fix application type to ensure backward compatible behavior after incompatible server-side change.
1209
+ if (oAdjustedResult && oAdjustedResult.applicationType === "SAPUI5") {
1210
+ oAdjustedResult.applicationType = "URL";
1211
+ }
1140
1212
 
1141
- that._compactTooLongWdaUrl(oAdjustedResult).then((oCompactedResult) => {
1142
- fnResolve(oCompactedResult);
1143
- }).catch((oError) => {
1144
- Log.error(`Could not resolve link '${sFragmentNoHash}' due to compactation failure`, oError);
1145
- fnReject(oError);
1146
- });
1147
- } else {
1148
- fnReject(new Error(`Could not resolve link '${sFragmentNoHash}'`));
1149
- }
1150
- }, (sErrorMessage) => {
1151
- fnReject(new Error(sErrorMessage));
1152
- });
1213
+ that._compactTooLongWdaUrl(oAdjustedResult).then((oCompactedResult) => {
1214
+ fnResolve(oCompactedResult);
1215
+ }).catch((oError) => {
1216
+ Log.error(`Could not resolve link '${sFragmentNoHash}' due to compactation failure`, oError);
1217
+ fnReject(oError);
1218
+ });
1219
+ } else {
1220
+ fnReject(new Error(`Could not resolve link '${sFragmentNoHash}'`));
1221
+ }
1222
+ }, (sErrorMessage) => {
1223
+ fnReject(new Error(sErrorMessage));
1224
+ });
1153
1225
 
1154
1226
  if (bBatchQueueOpened) {
1155
1227
  that._getODataWrapper().submitBatchQueue(() => { }, (sErrorMessage) => {
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * @fileOverview The Unified Shell's CommonDataModelAdapter for the ABAP platform, it is used to avoid 404 when no adapter is found
4
4
  *
5
- * @version 1.144.1
5
+ * @version 1.146.0
6
6
  */
7
7
  sap.ui.define([
8
8
  ], () => {
@@ -2,7 +2,7 @@
2
2
 
3
3
  /**
4
4
  * @fileOverview The ConfigurationDefaults adapter for the ABAP platform.
5
- * @version 1.144.1
5
+ * @version 1.146.0
6
6
  */
7
7
  sap.ui.define([
8
8
  "sap/ushell_abap/bootstrap/evo/abap.constants",
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * @fileOverview The Unified Shell's container adapter for the ABAP platform.
4
4
  *
5
- * @version 1.144.1
5
+ * @version 1.146.0
6
6
  */
7
7
  sap.ui.define([
8
8
  "sap/ui/thirdparty/jquery",
@@ -190,6 +190,7 @@ sap.ui.define([
190
190
  return;
191
191
  }
192
192
  oUserProfileIdHistory[oUserProfileParameter.id] = oUserProfileParameter.id;
193
+
193
194
  if (oUserProfileParameter.id === "CONTENT_DENSITY") {
194
195
  oStartupResult.contentDensity = oUserProfileParameter.value;
195
196
  oStartupResult.setContentDensityPermitted = (
@@ -197,6 +198,7 @@ sap.ui.define([
197
198
  oUserProfileParameter.editState === 3
198
199
  ) || false;
199
200
  }
201
+
200
202
  if (oUserProfileParameter.id === "TRACKING_USAGE_ANALYTICS") {
201
203
  if (typeof oUserProfileParameter.value === "string") {
202
204
  // check if string is 'true' OR 'false' -> if 'yes' set the explicit boolean value
@@ -213,10 +215,12 @@ sap.ui.define([
213
215
  oStartupResult.trackUsageAnalytics = undefined;
214
216
  }
215
217
  }
218
+
216
219
  // FLP Spaces MyHome - whether the user has opted not to import bookmarks from classical FLP
217
220
  if (oUserProfileParameter.id === "MYHOME_IMPORT_FROM_CLASSIC") {
218
221
  oStartupResult.importBookmarks = oUserProfileParameter.value;
219
222
  }
223
+
220
224
  // FLP Spaces MyHome - whether the user has opted not to show the My Home page
221
225
  if (oUserProfileParameter.id === "MYHOME_ENABLEMENT") {
222
226
  switch (oUserProfileParameter.value) {
@@ -231,6 +235,7 @@ sap.ui.define([
231
235
  break;
232
236
  }
233
237
  }
238
+
234
239
  // Dark Mode Auto Detection - whether the user has disabled it
235
240
  if (oUserProfileParameter.id === "THEME_DARKMODE_AUTO_DETECTION") {
236
241
  switch (oUserProfileParameter.value) {
@@ -245,6 +250,11 @@ sap.ui.define([
245
250
  break;
246
251
  }
247
252
  }
253
+
254
+ // The theme set the user has chosen
255
+ if (oUserProfileParameter.id === "THEME_SET") {
256
+ oStartupResult.bootThemeSet = oUserProfileParameter.value || "";
257
+ }
248
258
  });
249
259
  }
250
260
  };
@@ -283,6 +293,7 @@ sap.ui.define([
283
293
  "setAccessibilityPermitted",
284
294
  "bootTheme",
285
295
  "themeRoot",
296
+ "bootThemeSet",
286
297
  "ranges",
287
298
  "setThemePermitted",
288
299
  "importBookmarks",
@@ -3,7 +3,7 @@
3
3
  /**
4
4
  * @fileoverview The Unified Shell's page building adapter for the ABAP platform. Private copy. Classical home page functions are deprecated.
5
5
  * @since 1.121
6
- * @version 1.144.1
6
+ * @version 1.146.0
7
7
  */
8
8
  sap.ui.define([
9
9
  "sap/ui/thirdparty/URI",
@@ -4,7 +4,7 @@
4
4
  * @fileOverview The Unified Shell's page building adapter for the ABAP platform.
5
5
  *
6
6
  * @deprecated since 1.100
7
- * @version 1.144.1
7
+ * @version 1.146.0
8
8
  */
9
9
  sap.ui.define([
10
10
  "sap/ushell_abap/adapters/abap/FlpLaunchPageAdapter"
@@ -46,23 +46,6 @@ sap.ui.define([
46
46
  return Promise.resolve(bMenuEnabled && iAssignedSpacesCount > 0);
47
47
  };
48
48
 
49
- /**
50
- * Returns whether the side navigation is enabled.
51
- * The side navigation is enabled if there's at least one menu entry and the sideNavigation is enabled.
52
- *
53
- * @returns {Promise<boolean>} True if the side navigation is enabled.
54
- * @since 1.132.0
55
- * @private
56
- */
57
- MenuAdapter.prototype.isSideNavigationEnabled = async function () {
58
- if (!Config.last("/core/sideNavigation/enabled")) {
59
- return false;
60
- }
61
-
62
- const aMenuEntries = await this.getMenuEntries();
63
- return aMenuEntries.length > 0;
64
- };
65
-
66
49
  /**
67
50
  * Gets the menu entries for the spaces assigned to the user.
68
51
  * Handles the MyHomeSpace visibility.
@@ -8,7 +8,7 @@
8
8
  * service now calls the ClientSideTargetResolution service in the ABAP
9
9
  * platform.
10
10
  *
11
- * @version 1.144.1
11
+ * @version 1.146.0
12
12
  */
13
13
  sap.ui.define([], () => {
14
14
  "use strict";
@@ -8,7 +8,7 @@
8
8
  * service now calls the ClientSideTargetResolution service in the ABAP
9
9
  * platform.
10
10
  *
11
- * @version 1.144.1
11
+ * @version 1.146.0
12
12
  * @since 1.121
13
13
  */
14
14
  sap.ui.define([], () => {
@@ -2,7 +2,7 @@
2
2
 
3
3
  /**
4
4
  * @fileOverview The Unified Shell's page building adapter for the ABAP platform.
5
- * @version 1.144.1
5
+ * @version 1.146.0
6
6
  */
7
7
  sap.ui.define([
8
8
  "sap/base/util/ObjectPath",
@@ -2,7 +2,7 @@
2
2
 
3
3
  /**
4
4
  * @fileOverview PagePersistenceAdapter for the ABAP platform.
5
- * @version 1.144.1
5
+ * @version 1.146.0
6
6
  */
7
7
  sap.ui.define([
8
8
  "sap/base/i18n/Localization",
@@ -39,7 +39,7 @@ sap.ui.define([
39
39
  * Constructs a new instance of the PagePersistenceAdapter for the ABAP platform
40
40
  *
41
41
  * @class
42
- * @experimental Since 1.67.0
42
+ * @since 1.67.0
43
43
  * @private
44
44
  */
45
45
  function PagePersistenceAdapter () {
@@ -52,7 +52,7 @@ sap.ui.define([
52
52
  * @param {string} pageId The page ID
53
53
  * @returns {Promise<object>} Resolves to a page
54
54
  *
55
- * @experimental Since 1.67.0
55
+ * @since 1.67.0
56
56
  * @private
57
57
  */
58
58
  PagePersistenceAdapter.prototype.getPage = function (pageId) {
@@ -75,7 +75,7 @@ sap.ui.define([
75
75
  * @param {string[]} aPageId The array of page ID
76
76
  * @returns {Promise<object[]>} Resolves to array of pages
77
77
  *
78
- * @experimental Since 1.75.0
78
+ * @since 1.75.0
79
79
  * @private
80
80
  */
81
81
  PagePersistenceAdapter.prototype.getPages = function (aPageId) {
@@ -100,7 +100,7 @@ sap.ui.define([
100
100
  * @param {string} pageId The page ID
101
101
  * @returns {Promise<object>} Resolves to a page in the OData format
102
102
  *
103
- * @experimental Since 1.67.0
103
+ * @since 1.67.0
104
104
  * @private
105
105
  */
106
106
  PagePersistenceAdapter.prototype._readPage = function (pageId) {
@@ -142,7 +142,7 @@ sap.ui.define([
142
142
  * @param {string[]} aPageId The array of page ID
143
143
  * @returns {Promise<object[]>} Resolves to a array of page in the OData format
144
144
  *
145
- * @experimental Since 1.75.0
145
+ * @since 1.75.0
146
146
  * @private
147
147
  */
148
148
  PagePersistenceAdapter.prototype._readPages = function (aPageId) {
@@ -193,7 +193,7 @@ sap.ui.define([
193
193
  * @param {string[]} sPageRequest The PageSet Request
194
194
  * @returns {Promise<object[]>} Resolves to a array of page in the OData format
195
195
  *
196
- * @experimental Since 1.105.0
196
+ * @since 1.105.0
197
197
  * @private
198
198
  */
199
199
  PagePersistenceAdapter.prototype._createBatchData = function (sPageRequest) {
@@ -228,10 +228,9 @@ sap.ui.define([
228
228
  * @param {string[]} sPageBatchResponse The PageSet Request
229
229
  * @returns {Promise<object[]>} Resolves to a array of page in the OData format
230
230
  *
231
- * @experimental Since 1.75.0
231
+ * @since 1.75.0
232
232
  * @private
233
233
  */
234
-
235
234
  PagePersistenceAdapter.prototype._retrieveBatchData = function (sPageBatchResponse) {
236
235
  const lines = sPageBatchResponse.responseText.split("\r\n");
237
236
  let data = [];
@@ -392,7 +391,7 @@ sap.ui.define([
392
391
  * @param {Error} oError The error object
393
392
  * @returns {Promise<object>} A rejected promise containing the error
394
393
  *
395
- * @experimental Since 1.67.0
394
+ * @since 1.67.0
396
395
  * @private
397
396
  */
398
397
  PagePersistenceAdapter.prototype._rejectWithError = async function (oError) {
@@ -7,7 +7,7 @@
7
7
  * Container header properties transported via pseudo-items are mapped to the
8
8
  * respective header properties in setItem/getItem/delItem
9
9
  *
10
- * @version 1.144.1
10
+ * @version 1.146.0
11
11
  */
12
12
  sap.ui.define([
13
13
  "sap/ushell_abap/adapters/abap/AdapterContainer",
@@ -7,7 +7,7 @@
7
7
  * Container header properties transported via pseudo-items are mapped to the
8
8
  * respective header properties in setItem/getItem/delItem
9
9
  *
10
- * @version 1.144.1
10
+ * @version 1.146.0
11
11
  */
12
12
  sap.ui.define([
13
13
  "./PersonalizationAdapter"
@@ -2,7 +2,7 @@
2
2
 
3
3
  /**
4
4
  * @fileOverview The Search adapter for the ABAP platform.
5
- * @version 1.144.1
5
+ * @version 1.146.0
6
6
  */
7
7
  sap.ui.define([], () => {
8
8
  "use strict";
@@ -2,7 +2,7 @@
2
2
 
3
3
  /**
4
4
  * @fileOverview The SupportTicket adapter for the ABAP platform.
5
- * @version 1.144.1
5
+ * @version 1.146.0
6
6
  */
7
7
  sap.ui.define([
8
8
  "sap/base/util/isEmptyObject",