@sapui5/sap.ushell_abap 1.149.0 → 1.150.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.
- package/package.json +1 -1
- package/src/main/js/sap/ushell_abap/.library +1 -1
- package/src/main/js/sap/ushell_abap/adapters/abap/AppStateAdapter.js +1 -1
- package/src/main/js/sap/ushell_abap/adapters/abap/ClientSideTargetResolutionAdapter.js +1 -1
- package/src/main/js/sap/ushell_abap/adapters/abap/CommonDataModelAdapter.js +1 -1
- package/src/main/js/sap/ushell_abap/adapters/abap/ConfigurationDefaultsAdapter.js +1 -1
- package/src/main/js/sap/ushell_abap/adapters/abap/ContainerAdapter.js +1 -1
- package/src/main/js/sap/ushell_abap/adapters/abap/FlpLaunchPageAdapter.js +1 -1
- package/src/main/js/sap/ushell_abap/adapters/abap/LaunchPageAdapter.js +1 -1
- package/src/main/js/sap/ushell_abap/adapters/abap/MenuAdapter.js +1 -1
- package/src/main/js/sap/ushell_abap/adapters/abap/NavTargetResolutionAdapter.js +1 -1
- package/src/main/js/sap/ushell_abap/adapters/abap/NavTargetResolutionInternalAdapter.js +1 -1
- package/src/main/js/sap/ushell_abap/adapters/abap/PageBuildingAdapter.js +1 -1
- package/src/main/js/sap/ushell_abap/adapters/abap/PagePersistenceAdapter.js +1 -1
- package/src/main/js/sap/ushell_abap/adapters/abap/PersonalizationAdapter.js +1 -1
- package/src/main/js/sap/ushell_abap/adapters/abap/PersonalizationV2Adapter.js +1 -1
- package/src/main/js/sap/ushell_abap/adapters/abap/SearchAdapter.js +1 -1
- package/src/main/js/sap/ushell_abap/adapters/abap/SupportTicketAdapter.js +1 -1
- package/src/main/js/sap/ushell_abap/adapters/abap/Ui5ComponentLoaderAdapter.js +1 -1
- package/src/main/js/sap/ushell_abap/adapters/hana/ContainerAdapter.js +1 -1
- package/src/main/js/sap/ushell_abap/bootstrap/LoadLaunchpad/InitXhrLogon.js +17 -25
- package/src/main/js/sap/ushell_abap/bootstrap/ThemeHandler.js +34 -2
- package/src/main/js/sap/ushell_abap/bootstrap/abapConstants.js +1 -1
- package/src/main/js/sap/ushell_abap/library.js +2 -3
- package/src/main/js/sap/ushell_abap/messagebundle.properties +7 -0
- package/src/main/js/sap/ushell_abap/themes/base/.theming +4 -0
- package/src/main/js/sap/ushell_abap/themes/base/LogonFrameProvider.less +27 -0
- package/src/main/js/sap/ushell_abap/themes/base/library.source.less +5 -0
- package/src/main/js/sap/ushell_abap/themes/sap_fiori_3/.theming +6 -0
- package/src/main/js/sap/ushell_abap/themes/sap_fiori_3/library.source.less +2 -0
- package/src/main/js/sap/ushell_abap/themes/sap_fiori_3_dark/.theming +6 -0
- package/src/main/js/sap/ushell_abap/themes/sap_fiori_3_dark/library.source.less +2 -0
- package/src/main/js/sap/ushell_abap/themes/sap_fiori_3_hcb/.theming +6 -0
- package/src/main/js/sap/ushell_abap/themes/sap_fiori_3_hcb/library.source.less +2 -0
- package/src/main/js/sap/ushell_abap/themes/sap_horizon/.theming +6 -0
- package/src/main/js/sap/ushell_abap/themes/sap_horizon/library.source.less +2 -0
- package/src/main/js/sap/ushell_abap/themes/sap_horizon_dark/.theming +6 -0
- package/src/main/js/sap/ushell_abap/themes/sap_horizon_dark/library.source.less +2 -0
- package/src/main/js/sap/ushell_abap/themes/sap_horizon_hcb/.theming +6 -0
- package/src/main/js/sap/ushell_abap/themes/sap_horizon_hcb/library.source.less +2 -0
- package/src/main/js/sap/ushell_abap/ui/logon/LogonFrameProvider.js +92 -0
- package/ui5.yaml +1 -1
package/package.json
CHANGED
|
@@ -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.
|
|
5
|
+
<version>1.150.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
|
|
|
@@ -199,7 +199,7 @@ sap.ui.define([
|
|
|
199
199
|
if (aSubMenuEntries.length > 1) {
|
|
200
200
|
oTopMenuEntry.menuEntries = aSubMenuEntries;
|
|
201
201
|
|
|
202
|
-
if (Config.last("/abap/spaces/spaceOverview/enabled")) {
|
|
202
|
+
if (Config.last("/abap/spaces/spaceOverview/enabled") && oSpace.hasWorkarea) {
|
|
203
203
|
oTopMenuEntry.target.semanticObject = "Launchpad";
|
|
204
204
|
oTopMenuEntry.target.action = "openSpaceOverview";
|
|
205
205
|
oTopMenuEntry.target.parameters = [
|
|
@@ -5,13 +5,15 @@
|
|
|
5
5
|
sap.ui.define([
|
|
6
6
|
"sap/base/Log",
|
|
7
7
|
"sap/ushell_abap/bootstrap/XhrLogonEventHandler",
|
|
8
|
-
"sap/ushell_abap/bootstrap/XhrLogonLibLoader",
|
|
8
|
+
"sap/ushell_abap/bootstrap/XhrLogonLibLoader", // triggers loading of the XHR logon lib, once required
|
|
9
|
+
"sap/ushell_abap/ui/logon/LogonFrameProvider",
|
|
9
10
|
"sap/ushell/Container",
|
|
10
11
|
"sap/ushell/Config"
|
|
11
12
|
], (
|
|
12
13
|
Log,
|
|
13
14
|
XhrLogonEventHandler,
|
|
14
15
|
XhrLogonLibLoader,
|
|
16
|
+
LogonFrameProvider,
|
|
15
17
|
Container,
|
|
16
18
|
Config
|
|
17
19
|
) => {
|
|
@@ -34,10 +36,7 @@ sap.ui.define([
|
|
|
34
36
|
* @private
|
|
35
37
|
*/
|
|
36
38
|
async run () {
|
|
37
|
-
await
|
|
38
|
-
this.#initXhrLogon(),
|
|
39
|
-
this.#initFrameLogonManager()
|
|
40
|
-
]);
|
|
39
|
+
await this.#initXhrLogon();
|
|
41
40
|
}
|
|
42
41
|
|
|
43
42
|
/**
|
|
@@ -78,32 +77,25 @@ sap.ui.define([
|
|
|
78
77
|
|
|
79
78
|
oXhrLogonLib.start(oXhrLibConfig);
|
|
80
79
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
80
|
+
switch (sLogonMode) {
|
|
81
|
+
case "frame":
|
|
82
|
+
oXhrLogonLib.FrameLogonManager.getInstance().logonFrameProvider = LogonFrameProvider;
|
|
83
|
+
break;
|
|
84
|
+
case "reload": // same as "logoffAndRedirect"
|
|
85
|
+
case "logoffAndRedirect":
|
|
86
|
+
oLogonManager.unregisterAllHandlers();
|
|
87
|
+
oLogonManager.registerAuthHandler("*", (oEvent) => {
|
|
88
|
+
oXhrLogonEventHandler.handleEvent(oEvent);
|
|
89
|
+
});
|
|
90
|
+
break;
|
|
91
|
+
default:
|
|
92
|
+
Log.warning(`Unknown setting for xhrLogonMode: '${sLogonMode}'. Using default mode 'frame'.`, null, "sap.ushell_abap.bootstrap.XhrLogon");
|
|
88
93
|
}
|
|
89
94
|
|
|
90
95
|
oXhrLogonLib.Log.set(this.#createUi5ConnectedXhrLogger());
|
|
91
96
|
this.#initXhrLogonIgnoreList(oXHRLogonManager);
|
|
92
97
|
}
|
|
93
98
|
|
|
94
|
-
/**
|
|
95
|
-
* Initializes the XHR logon lib by storing the instance of the logon manager in the Container.
|
|
96
|
-
* This is later used to have indirect access to the logon manager.
|
|
97
|
-
*
|
|
98
|
-
* @since 1.147.0
|
|
99
|
-
* @private
|
|
100
|
-
*/
|
|
101
|
-
async #initFrameLogonManager () {
|
|
102
|
-
const oXhrLogonLib = await XhrLogonLibLoader.getLib();
|
|
103
|
-
const oFrameLogonManager = oXhrLogonLib.FrameLogonManager.getInstance();
|
|
104
|
-
Container.oFrameLogonManager = oFrameLogonManager;
|
|
105
|
-
}
|
|
106
|
-
|
|
107
99
|
/**
|
|
108
100
|
* Creates a logger for XMLHttpRequest(s) that logs errors, warnings, info and debug messages via Log.
|
|
109
101
|
* @returns {object} A logger that can be assigned to XMLHttpRequest.
|
|
@@ -55,9 +55,11 @@ sap.ui.define([
|
|
|
55
55
|
if (!sThemeRoot && oStartupConfig.client) {
|
|
56
56
|
sThemeRoot = `/sap/public/bc/themes/~client-${oStartupConfig.client}`;
|
|
57
57
|
}
|
|
58
|
+
|
|
59
|
+
// when providing theme root to UI5 we need to add the technology specific ending
|
|
58
60
|
if (sThemeRoot && !sTheme.startsWith("sap_")) { // set the theme root for the custom theme only
|
|
59
61
|
oThemeRoots = {};
|
|
60
|
-
oThemeRoots[sTheme] = sThemeRoot.replace(/\/?$/, "/UI5/");
|
|
62
|
+
oThemeRoots[sTheme] = sThemeRoot.replace(/\/?$/, "/UI5/");
|
|
61
63
|
}
|
|
62
64
|
return {
|
|
63
65
|
theme: sTheme,
|
|
@@ -189,6 +191,36 @@ sap.ui.define([
|
|
|
189
191
|
}
|
|
190
192
|
}
|
|
191
193
|
|
|
194
|
+
/**
|
|
195
|
+
* Sanitizes a configured theme root.
|
|
196
|
+
*
|
|
197
|
+
* The theme root is technology agnostic: the UI5 specific ending is stripped if present, and any single trailing slash
|
|
198
|
+
* is removed so the value can be safely concatenated with a technology specific
|
|
199
|
+
* ending.
|
|
200
|
+
*
|
|
201
|
+
* @param {string} [sThemeRoot] the configured theme root
|
|
202
|
+
* @returns {string} the sanitized theme root, never <code>undefined</code>
|
|
203
|
+
* @private
|
|
204
|
+
*/
|
|
205
|
+
#sanitizeThemeRoot (sThemeRoot) {
|
|
206
|
+
if (!sThemeRoot) {
|
|
207
|
+
return "";
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
// first ensure no trailing slash
|
|
211
|
+
if (sThemeRoot.endsWith("/")) {
|
|
212
|
+
sThemeRoot = sThemeRoot.substring(0, sThemeRoot.length - 1);
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
// second ensure no trailing technology
|
|
216
|
+
if (sThemeRoot.endsWith("/UI5")) {
|
|
217
|
+
Log.error("Configured ThemeRoot contained technology specific ending. Removing it for further processing.", null, "sap.ushell_abap.bootstrap");
|
|
218
|
+
sThemeRoot = sThemeRoot.substring(0, sThemeRoot.length - "/UI5".length);
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
return sThemeRoot;
|
|
222
|
+
}
|
|
223
|
+
|
|
192
224
|
/**
|
|
193
225
|
* Determines the theme root for a given theme, based on the container adapter config or fallback logic.
|
|
194
226
|
* @param {string} sTheme The name of the theme for which to determine the theme root
|
|
@@ -225,7 +257,7 @@ sap.ui.define([
|
|
|
225
257
|
Log.error("extractSystemThemeRoot: Could not determine system theme root");
|
|
226
258
|
}
|
|
227
259
|
|
|
228
|
-
return sSystemThemeRoot;
|
|
260
|
+
return this.#sanitizeThemeRoot(sSystemThemeRoot);
|
|
229
261
|
}
|
|
230
262
|
|
|
231
263
|
/**
|
|
@@ -32,13 +32,12 @@ sap.ui.define([
|
|
|
32
32
|
const ushellAbapLib = Library.init({
|
|
33
33
|
name: "sap.ushell_abap",
|
|
34
34
|
apiVersion: 2,
|
|
35
|
-
version: "1.
|
|
35
|
+
version: "1.150.0",
|
|
36
36
|
dependencies: [
|
|
37
37
|
"sap.ui.core",
|
|
38
38
|
"sap.m",
|
|
39
39
|
"sap.ushell"
|
|
40
|
-
]
|
|
41
|
-
noLibraryCSS: true
|
|
40
|
+
]
|
|
42
41
|
});
|
|
43
42
|
|
|
44
43
|
return ushellAbapLib;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
#This is the resource bundle for the sap.ushell_abap library
|
|
2
|
+
#__ldi.translation.uuid=865e4af1-8cca-465c-8b85-97f19b98ef6a
|
|
3
|
+
|
|
4
|
+
#XBUT: Close button for the SAML authentication dialog
|
|
5
|
+
samlCloseBtn=Close
|
|
6
|
+
#XTIT: Title of the SAML authentication dialog
|
|
7
|
+
samlDialogTitle=Authentication Information
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/* Copyright (c) 2009-2026 SAP SE, All Rights Reserved */
|
|
2
|
+
/* CSS for the LogonFrameProvider*/
|
|
3
|
+
|
|
4
|
+
.sapUshellIframeDialog .sapMDialogScrollCont {
|
|
5
|
+
height: 100%;
|
|
6
|
+
overflow: hidden;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.sapUshellSamlDialogHidden {
|
|
10
|
+
visibility: hidden !important;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
#SAMLDialog #SAMLDialog-scrollCont {
|
|
14
|
+
position: absolute;
|
|
15
|
+
top: 0;
|
|
16
|
+
left: 0;
|
|
17
|
+
right: 0;
|
|
18
|
+
bottom: 0;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
#SAMLDialogFrame {
|
|
22
|
+
box-sizing: border-box;
|
|
23
|
+
height: 100%;
|
|
24
|
+
width: 100%;
|
|
25
|
+
position: absolute;
|
|
26
|
+
border: none;
|
|
27
|
+
}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
// Copyright (c) 2009-2026 SAP SE, All Rights Reserved
|
|
2
|
+
|
|
3
|
+
// Create logon dialog with iFrame window as contents for SAML2 scenarios
|
|
4
|
+
sap.ui.define([
|
|
5
|
+
"sap/m/Button",
|
|
6
|
+
"sap/m/Dialog",
|
|
7
|
+
"sap/ui/core/Element",
|
|
8
|
+
"sap/ui/core/HTML",
|
|
9
|
+
"sap/ui/core/Lib",
|
|
10
|
+
"sap/ushell/Config",
|
|
11
|
+
"sap/ushell/ui/footerbar/ContactSupportButton",
|
|
12
|
+
"sap/ushell_abap/bootstrap/XhrLogonLibLoader"
|
|
13
|
+
], (
|
|
14
|
+
Button,
|
|
15
|
+
Dialog,
|
|
16
|
+
Element,
|
|
17
|
+
HTML,
|
|
18
|
+
Lib,
|
|
19
|
+
Config,
|
|
20
|
+
ContactSupportButton,
|
|
21
|
+
XhrLogonLibLoader
|
|
22
|
+
) => {
|
|
23
|
+
"use strict";
|
|
24
|
+
|
|
25
|
+
function toggleBlockLayerCSS (bHidden) {
|
|
26
|
+
const oBlockLayer = document.getElementById("sap-ui-blocklayer-popup");
|
|
27
|
+
if (oBlockLayer) {
|
|
28
|
+
if (bHidden) {
|
|
29
|
+
oBlockLayer.classList.add("sapUshellSamlDialogHidden");
|
|
30
|
+
} else {
|
|
31
|
+
oBlockLayer.classList.remove("sapUshellSamlDialogHidden");
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
function destroyIFrameDialog () {
|
|
37
|
+
const oDialog = Element.getElementById("SAMLDialog");
|
|
38
|
+
if (oDialog) {
|
|
39
|
+
oDialog.destroy();
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
function createIFrameDialog () {
|
|
44
|
+
// A new dialog wrapper with a new inner iframe will be created each time.
|
|
45
|
+
destroyIFrameDialog();
|
|
46
|
+
|
|
47
|
+
// create new iframe and add it to the Dialog HTML control
|
|
48
|
+
const oBundle = Lib.getResourceBundleFor("sap.ushell_abap");
|
|
49
|
+
const oDialog = new Dialog({
|
|
50
|
+
id: "SAMLDialog",
|
|
51
|
+
title: oBundle.getText("samlDialogTitle"),
|
|
52
|
+
contentWidth: "50%",
|
|
53
|
+
contentHeight: "50%",
|
|
54
|
+
content: new HTML("SAMLDialogFrame", {content: "<iframe id=SAMLDialogFrame src=\"\" allow=\"local-network-access *\"></iframe>"}),
|
|
55
|
+
endButton: new Button({
|
|
56
|
+
id: "SAMLDialogCloseBtn",
|
|
57
|
+
text: oBundle.getText("samlCloseBtn"),
|
|
58
|
+
press: () => { XhrLogonLibLoader.getLib().then((oXhrLogonLib) => { oXhrLogonLib.FrameLogonManager.getInstance().abortLogon(); }); }
|
|
59
|
+
})
|
|
60
|
+
}).addStyleClass("sapUshellIframeDialog sapContrastPlus sapUshellSamlDialogHidden");
|
|
61
|
+
|
|
62
|
+
if (Config.last("/core/extension/SupportTicket")) { // Contact Support button
|
|
63
|
+
const oContactSupportBtn = new ContactSupportButton();
|
|
64
|
+
oContactSupportBtn.setWidth("150px");
|
|
65
|
+
oContactSupportBtn.setIcon("");
|
|
66
|
+
oDialog.setBeginButton(oContactSupportBtn);
|
|
67
|
+
}
|
|
68
|
+
oDialog.open();
|
|
69
|
+
|
|
70
|
+
// Make sure to manipulate css properties after the dialog is rendered.
|
|
71
|
+
toggleBlockLayerCSS(true);
|
|
72
|
+
|
|
73
|
+
return document.getElementById("SAMLDialogFrame"); // returns the iframe element so that the logonManager can set src
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
function showIFrameDialog () {
|
|
77
|
+
// remove css class of dialog
|
|
78
|
+
const oDialog = Element.getElementById("SAMLDialog");
|
|
79
|
+
if (oDialog) {
|
|
80
|
+
oDialog.removeStyleClass("sapUshellSamlDialogHidden");
|
|
81
|
+
toggleBlockLayerCSS(true);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
const LogonFrameProvider = {
|
|
86
|
+
create: createIFrameDialog,
|
|
87
|
+
show: showIFrameDialog,
|
|
88
|
+
destroy: destroyIFrameDialog
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
return LogonFrameProvider;
|
|
92
|
+
});
|
package/ui5.yaml
CHANGED
|
@@ -454,7 +454,7 @@ builder:
|
|
|
454
454
|
- sap/ushell/renderer/Shell.controller.js
|
|
455
455
|
- sap/ushell/renderer/Shell.view.js
|
|
456
456
|
- sap/ushell/renderer/shellHeader/ShellHeader.fragment.xml
|
|
457
|
-
- sap/
|
|
457
|
+
- sap/ushell_abap/ui/logon/LogonFrameProvider.js
|
|
458
458
|
- sap/ushell/renderers/fiori2/Renderer.js
|
|
459
459
|
- sap/ushell/renderers/fiori2/RendererExtensions.js
|
|
460
460
|
- sap/ushell/renderers/fiori2/Shell.controller.js
|