@postnord/pn-marketweb-components 1.0.36 → 1.0.37
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/cjs/{MarketWebLoginManager-8b675eb4.js → MarketWebLoginManager-859590e2.js} +8 -0
- package/cjs/loader.cjs.js +1 -1
- package/cjs/pn-language-selector_9.cjs.entry.js +6 -1
- package/cjs/pn-market-web-components.cjs.js +1 -1
- package/cjs/pn-marketweb-siteheader.cjs.entry.js +22 -7
- package/cjs/pn-profile-selector.cjs.entry.js +21 -13
- package/collection/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader-login.js +23 -0
- package/collection/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader.js +49 -8
- package/collection/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader.stories.js +44 -1
- package/collection/components/navigation/pn-profile-selector/pn-profile-selector.js +26 -18
- package/collection/globals/MarketWebLoginManager.js +8 -0
- package/custom-elements/index.js +248 -213
- package/esm/{MarketWebLoginManager-dd7ac023.js → MarketWebLoginManager-83f2e86a.js} +8 -0
- package/esm/loader.js +1 -1
- package/esm/pn-language-selector_9.entry.js +6 -1
- package/esm/pn-market-web-components.js +1 -1
- package/esm/pn-marketweb-siteheader.entry.js +22 -7
- package/esm/pn-profile-selector.entry.js +21 -13
- package/esm-es5/MarketWebLoginManager-83f2e86a.js +1 -0
- package/esm-es5/loader.js +1 -1
- package/esm-es5/pn-language-selector_9.entry.js +1 -1
- package/esm-es5/pn-market-web-components.js +1 -1
- package/esm-es5/pn-marketweb-siteheader.entry.js +1 -1
- package/esm-es5/pn-profile-selector.entry.js +1 -1
- package/package.json +1 -1
- package/pn-market-web-components/{p-ffdf87ee.entry.js → p-03fb0285.entry.js} +1 -1
- package/pn-market-web-components/p-1649b94a.entry.js +1 -0
- package/pn-market-web-components/p-25bdf3f8.system.js +1 -1
- package/pn-market-web-components/p-58cdf3a6.system.js +1 -0
- package/pn-market-web-components/p-5f256546.entry.js +1 -0
- package/pn-market-web-components/p-6db8065f.system.entry.js +1 -0
- package/pn-market-web-components/{p-6a32362d.system.entry.js → p-7b4c721f.system.entry.js} +1 -1
- package/pn-market-web-components/p-a983c263.system.entry.js +1 -0
- package/pn-market-web-components/p-c254cfdf.js +1 -0
- package/pn-market-web-components/pn-market-web-components.esm.js +1 -1
- package/types/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader-login.d.ts +2 -0
- package/types/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader.d.ts +6 -0
- package/types/components/navigation/pn-profile-selector/pn-profile-selector.d.ts +2 -1
- package/types/components.d.ts +18 -2
- package/types/globals/MarketWebLoginManager.d.ts +1 -0
- package/esm-es5/MarketWebLoginManager-dd7ac023.js +0 -1
- package/pn-market-web-components/p-37efd029.entry.js +0 -1
- package/pn-market-web-components/p-4dcea578.js +0 -1
- package/pn-market-web-components/p-4f1a53f4.entry.js +0 -1
- package/pn-market-web-components/p-51768dc0.system.js +0 -1
- package/pn-market-web-components/p-6d718a66.system.entry.js +0 -1
- package/pn-market-web-components/p-db7419be.system.entry.js +0 -1
package/custom-elements/index.js
CHANGED
|
@@ -3243,6 +3243,205 @@ const translations$3 = {
|
|
|
3243
3243
|
}
|
|
3244
3244
|
};
|
|
3245
3245
|
|
|
3246
|
+
class MarketWebLoginManager {
|
|
3247
|
+
constructor(options = null) {
|
|
3248
|
+
var _a;
|
|
3249
|
+
this.eventTarget = (window !== null && window !== void 0 ? window : document === null || document === void 0 ? void 0 : document.body);
|
|
3250
|
+
this.endpoint = "";
|
|
3251
|
+
this.storagePrefix = "pn-user";
|
|
3252
|
+
this.baseUrls = {
|
|
3253
|
+
at: 'https://atportal.postnord.com/api/unified-login/backend',
|
|
3254
|
+
prod: 'https://portal.postnord.com/api/unified-login/backend',
|
|
3255
|
+
};
|
|
3256
|
+
this.events = {
|
|
3257
|
+
loginstatechange: "loginstatechange"
|
|
3258
|
+
};
|
|
3259
|
+
this.endpoints = {
|
|
3260
|
+
authorizationEndpoint: `/authorization`,
|
|
3261
|
+
tokenExchangeEndpoint: `/token`,
|
|
3262
|
+
userInfoEndpoint: `/user`,
|
|
3263
|
+
logoutEndpoint: `/logout`,
|
|
3264
|
+
};
|
|
3265
|
+
this.keys = {
|
|
3266
|
+
token: 'token',
|
|
3267
|
+
user: 'user',
|
|
3268
|
+
expire: 'expire',
|
|
3269
|
+
expireDate: 'expiredate'
|
|
3270
|
+
};
|
|
3271
|
+
this.store = {
|
|
3272
|
+
get: (key) => {
|
|
3273
|
+
const value = window.sessionStorage.getItem(`${this.storagePrefix}-${key}`);
|
|
3274
|
+
if (!value) {
|
|
3275
|
+
return value;
|
|
3276
|
+
}
|
|
3277
|
+
if (value.indexOf('{') === 0) {
|
|
3278
|
+
try {
|
|
3279
|
+
return JSON.parse(value);
|
|
3280
|
+
}
|
|
3281
|
+
catch (e) {
|
|
3282
|
+
}
|
|
3283
|
+
}
|
|
3284
|
+
if (value.indexOf(',') !== -1) {
|
|
3285
|
+
return value.split(',');
|
|
3286
|
+
}
|
|
3287
|
+
return value;
|
|
3288
|
+
},
|
|
3289
|
+
set: (key, value) => {
|
|
3290
|
+
if (typeof value === "object" && typeof value.length === "undefined") {
|
|
3291
|
+
window.sessionStorage.setItem(`${this.storagePrefix}-${key}`, JSON.stringify(value));
|
|
3292
|
+
return;
|
|
3293
|
+
}
|
|
3294
|
+
window.sessionStorage.setItem(`${this.storagePrefix}-${key}`, value);
|
|
3295
|
+
},
|
|
3296
|
+
remove: (key) => {
|
|
3297
|
+
window.sessionStorage.removeItem(`${this.storagePrefix}-${key}`);
|
|
3298
|
+
},
|
|
3299
|
+
};
|
|
3300
|
+
if (!options) {
|
|
3301
|
+
return;
|
|
3302
|
+
}
|
|
3303
|
+
this.eventTarget = (options.eventTarget) ? options.eventTarget : this.eventTarget;
|
|
3304
|
+
this.endpoint = options.endpoint ? options.endpoint : `${window.location.protocol}//${window.location.host}`;
|
|
3305
|
+
(_a = this.storagePrefix) !== null && _a !== void 0 ? _a : (this.storagePrefix = options.storagePrefix);
|
|
3306
|
+
}
|
|
3307
|
+
init(checkParameters = true) {
|
|
3308
|
+
if (checkParameters) {
|
|
3309
|
+
this.checkParameters();
|
|
3310
|
+
this.checkExpireTime();
|
|
3311
|
+
if (this.store.get(this.keys.token) && !this.store.get(this.keys.user)) {
|
|
3312
|
+
this.fetchUserInfo();
|
|
3313
|
+
}
|
|
3314
|
+
this.loginStateChange();
|
|
3315
|
+
}
|
|
3316
|
+
}
|
|
3317
|
+
isLoggedIn() {
|
|
3318
|
+
const isLoggedIn = (this.store.get(this.keys.token) && this.store.get(this.keys.user)) ? true : false;
|
|
3319
|
+
return isLoggedIn;
|
|
3320
|
+
}
|
|
3321
|
+
registerToken(token) {
|
|
3322
|
+
if (!token || token === this.getToken()) {
|
|
3323
|
+
return;
|
|
3324
|
+
}
|
|
3325
|
+
this.clearUserData();
|
|
3326
|
+
this.store.set(this.keys.token, token);
|
|
3327
|
+
this.fetchUserInfo();
|
|
3328
|
+
}
|
|
3329
|
+
getLoginUrl(redirectPage = "") {
|
|
3330
|
+
const currentPage = window.location.href;
|
|
3331
|
+
redirectPage = redirectPage ? redirectPage : currentPage;
|
|
3332
|
+
return `${this.getBaseUrl()}${this.endpoints.authorizationEndpoint}?redirectionUrl=${redirectPage}`;
|
|
3333
|
+
}
|
|
3334
|
+
getLogoutUrl(redirectPage = "") {
|
|
3335
|
+
const currentPage = window.location.href;
|
|
3336
|
+
redirectPage = redirectPage ? redirectPage : currentPage;
|
|
3337
|
+
return `${this.getBaseUrl()}${this.endpoints.logoutEndpoint}?redirectionUrl=${redirectPage}&authorization=${this.store.get(this.keys.token)}`;
|
|
3338
|
+
}
|
|
3339
|
+
getUserInfo() {
|
|
3340
|
+
if (this.isLoggedIn()) {
|
|
3341
|
+
return this.store.get(this.keys.user);
|
|
3342
|
+
}
|
|
3343
|
+
}
|
|
3344
|
+
getEventTarget() {
|
|
3345
|
+
return this.eventTarget;
|
|
3346
|
+
}
|
|
3347
|
+
checkExpireTime() {
|
|
3348
|
+
const expire = this.store.get(this.keys.expire);
|
|
3349
|
+
if (!expire) {
|
|
3350
|
+
return;
|
|
3351
|
+
}
|
|
3352
|
+
const now = new Date();
|
|
3353
|
+
const expireDate = new Date(Math.floor(parseInt(expire, 10) * 1000));
|
|
3354
|
+
if (now > expireDate) {
|
|
3355
|
+
console.info('Login time has expired');
|
|
3356
|
+
this.clearUserData();
|
|
3357
|
+
this.loginStateChange();
|
|
3358
|
+
}
|
|
3359
|
+
}
|
|
3360
|
+
checkParameters() {
|
|
3361
|
+
if (!(window === null || window === void 0 ? void 0 : window.location)) {
|
|
3362
|
+
return;
|
|
3363
|
+
}
|
|
3364
|
+
const params = new URLSearchParams(window.location.search);
|
|
3365
|
+
if (params.get("oneTimeCode")) {
|
|
3366
|
+
const oneTimeCode = params.get("oneTimeCode");
|
|
3367
|
+
this.exchangeToken(oneTimeCode).then(() => {
|
|
3368
|
+
const currentHref = window.location.href;
|
|
3369
|
+
const paramPrefix = (currentHref.indexOf('?oneTimeCode') !== -1) ? "?" : "&";
|
|
3370
|
+
history.replaceState({}, document.querySelector('title').innerText, currentHref.replace(`${paramPrefix}oneTimeCode=${oneTimeCode}`, ''));
|
|
3371
|
+
});
|
|
3372
|
+
}
|
|
3373
|
+
}
|
|
3374
|
+
async fetchUserInfo() {
|
|
3375
|
+
const token = this.store.get(this.keys.token);
|
|
3376
|
+
const reqConfig = {
|
|
3377
|
+
method: 'GET',
|
|
3378
|
+
headers: {
|
|
3379
|
+
'Accept': 'application/json',
|
|
3380
|
+
'Content-Type': 'application/json',
|
|
3381
|
+
'Authorization': token
|
|
3382
|
+
},
|
|
3383
|
+
};
|
|
3384
|
+
const response = await fetch(`${this.getBaseUrl()}${this.endpoints.userInfoEndpoint}`, reqConfig);
|
|
3385
|
+
const data = await response.json();
|
|
3386
|
+
if (data) {
|
|
3387
|
+
try {
|
|
3388
|
+
const { idToken, expiryTime } = data;
|
|
3389
|
+
const userInfo = this.parseUserInfo(idToken);
|
|
3390
|
+
this.store.set(this.keys.user, userInfo);
|
|
3391
|
+
// 10 Min early expire
|
|
3392
|
+
this.store.set(this.keys.expire, expiryTime);
|
|
3393
|
+
this.store.set(this.keys.expireDate, new Date(Math.floor(parseInt(expiryTime, 10) * 1000)));
|
|
3394
|
+
this.loginStateChange();
|
|
3395
|
+
}
|
|
3396
|
+
catch (e) {
|
|
3397
|
+
console.error('Unable to get user information', e);
|
|
3398
|
+
}
|
|
3399
|
+
}
|
|
3400
|
+
}
|
|
3401
|
+
clearUserData() {
|
|
3402
|
+
this.store.remove(this.keys.user);
|
|
3403
|
+
this.store.remove(this.keys.token);
|
|
3404
|
+
this.store.remove(this.keys.expire);
|
|
3405
|
+
this.store.remove(this.keys.expireDate);
|
|
3406
|
+
}
|
|
3407
|
+
getToken() {
|
|
3408
|
+
return this.store.get(this.keys.token);
|
|
3409
|
+
}
|
|
3410
|
+
async exchangeToken(oneTimeCode) {
|
|
3411
|
+
this.clearUserData();
|
|
3412
|
+
const response = await fetch(`${this.getBaseUrl()}${this.endpoints.tokenExchangeEndpoint}?oneTimeCode=${oneTimeCode}`);
|
|
3413
|
+
const { token } = await response.json();
|
|
3414
|
+
if (typeof token === "string" && token) {
|
|
3415
|
+
this.store.set(this.keys.token, token);
|
|
3416
|
+
}
|
|
3417
|
+
this.fetchUserInfo();
|
|
3418
|
+
}
|
|
3419
|
+
loginStateChange() {
|
|
3420
|
+
if (!this.eventTarget) {
|
|
3421
|
+
return;
|
|
3422
|
+
}
|
|
3423
|
+
this.eventTarget.dispatchEvent(new CustomEvent(this.events.loginstatechange, {
|
|
3424
|
+
detail: this.isLoggedIn()
|
|
3425
|
+
}));
|
|
3426
|
+
}
|
|
3427
|
+
getBaseUrl() {
|
|
3428
|
+
const atEnvironments = ["localhost", "integration.", 'local.'];
|
|
3429
|
+
const useATEnv = atEnvironments.filter(x => this.endpoint.indexOf(x) !== -1).length > 0;
|
|
3430
|
+
if (useATEnv) {
|
|
3431
|
+
return this.baseUrls.at;
|
|
3432
|
+
}
|
|
3433
|
+
return this.baseUrls.prod;
|
|
3434
|
+
}
|
|
3435
|
+
parseUserInfo(idToken) {
|
|
3436
|
+
var base64Url = idToken.split('.')[1];
|
|
3437
|
+
var base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');
|
|
3438
|
+
var jsonPayload = decodeURIComponent(atob(base64).split('').map(function (c) {
|
|
3439
|
+
return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
|
|
3440
|
+
}).join(''));
|
|
3441
|
+
return JSON.parse(jsonPayload);
|
|
3442
|
+
}
|
|
3443
|
+
}
|
|
3444
|
+
|
|
3246
3445
|
const pnMarketwebSiteheaderCss = "body[data-siteheader-menuopen=true]{max-height:100vh;overflow:hidden}@media screen and (min-width: 60em){body[data-siteheader-menuopen=true]{max-height:initial;overflow:initial}}pn-marketweb-siteheader{display:block;background:#FFFFFF}pn-marketweb-siteheader header{position:relative;z-index:1000;display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;-webkit-box-shadow:0 0.06rem 0.18rem rgba(0, 0, 0, 0.1), 0 0.32rem 0.72rem rgba(0, 0, 0, 0.13);box-shadow:0 0.06rem 0.18rem rgba(0, 0, 0, 0.1), 0 0.32rem 0.72rem rgba(0, 0, 0, 0.13);-ms-flex-direction:row;flex-direction:row;-ms-flex-pack:justify;justify-content:space-between}@media screen and (min-width: 48em){pn-marketweb-siteheader header{-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:initial;justify-content:initial}}pn-marketweb-siteheader .siteheader-row{display:-ms-flexbox;display:flex;-ms-flex-flow:row;flex-flow:row;-ms-flex-align:center;align-items:center;width:100%;padding:0 1.6rem;min-height:2em}pn-marketweb-siteheader .siteheader-row:not(:last-child){border-bottom:0.1rem solid #F3F2F2}@media screen and (min-width: 48em){pn-marketweb-siteheader .siteheader-row{-ms-flex-pack:justify;justify-content:space-between;min-height:3.2em}}pn-marketweb-siteheader .siteheader-topright{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row}pn-marketweb-siteheader .siteheader-logocontainer{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;position:relative;min-height:3em;background:#FFFFFF;z-index:1}@media screen and (min-width: 48em){pn-marketweb-siteheader .siteheader-logocontainer{position:absolute;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}}pn-marketweb-siteheader .siteheader-logolink{height:100%;max-height:6.4rem;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}pn-marketweb-siteheader .siteheader-logolink:hover,pn-marketweb-siteheader .siteheader-logolink:focus,pn-marketweb-siteheader .siteheader-logolink:active{-webkit-box-shadow:none;box-shadow:none}pn-marketweb-siteheader .siteheader-row>pn-marketweb-siteheader-search{display:none}@media screen and (min-width: 48em){pn-marketweb-siteheader .siteheader-row>pn-marketweb-siteheader-search{display:block}}pn-marketweb-siteheader pn-spinner{display:none}pn-marketweb-siteheader pn-nav-dropdown:not(.hydrated) .nav-dropdown-content-container{display:none}.siteheader-topleft pn-site-selector{padding:1rem 0;display:none}@media screen and (min-width: 48em){.siteheader-topleft pn-site-selector{display:block}}@media screen and (min-width: 60em){.siteheader-topleft pn-site-selector{margin-left:1.3rem}}@media screen and (min-width: 60em){.siteheader-topright{margin-right:1.6rem}}.siteheader-topright>pn-language-selector,.siteheader-topright>pn-marketweb-siteheader-login,.siteheader-topright>a{padding:1rem 0;display:none;-ms-flex-item-align:center;align-self:center}@media screen and (min-width: 48em){.siteheader-topright>pn-language-selector,.siteheader-topright>pn-marketweb-siteheader-login,.siteheader-topright>a{display:block;margin-left:1rem}}@media screen and (min-width: 60em){.siteheader-topright>pn-language-selector,.siteheader-topright>pn-marketweb-siteheader-login,.siteheader-topright>a{margin-left:1.6rem}}.siteheader-topright>pn-language-selector .pn-nav-dropdown-label,.siteheader-topright>pn-language-selector:is(a),.siteheader-topright>pn-marketweb-siteheader-login .pn-nav-dropdown-label,.siteheader-topright>pn-marketweb-siteheader-login:is(a),.siteheader-topright>a .pn-nav-dropdown-label,.siteheader-topright>a:is(a){font-size:0}.siteheader-topright>pn-language-selector .pn-nav-dropdown-label pn-icon,.siteheader-topright>pn-language-selector:is(a) pn-icon,.siteheader-topright>pn-marketweb-siteheader-login .pn-nav-dropdown-label pn-icon,.siteheader-topright>pn-marketweb-siteheader-login:is(a) pn-icon,.siteheader-topright>a .pn-nav-dropdown-label pn-icon,.siteheader-topright>a:is(a) pn-icon{font-size:initial;margin-left:0}@media screen and (min-width: 60em){.siteheader-topright>pn-language-selector .pn-nav-dropdown-label,.siteheader-topright>pn-language-selector:is(a),.siteheader-topright>pn-marketweb-siteheader-login .pn-nav-dropdown-label,.siteheader-topright>pn-marketweb-siteheader-login:is(a),.siteheader-topright>a .pn-nav-dropdown-label,.siteheader-topright>a:is(a){font-size:initial}.siteheader-topright>pn-language-selector .pn-nav-dropdown-label pn-icon,.siteheader-topright>pn-language-selector:is(a) pn-icon,.siteheader-topright>pn-marketweb-siteheader-login .pn-nav-dropdown-label pn-icon,.siteheader-topright>pn-marketweb-siteheader-login:is(a) pn-icon,.siteheader-topright>a .pn-nav-dropdown-label pn-icon,.siteheader-topright>a:is(a) pn-icon{margin-left:0.4em}}.siteheader-menu{max-width:100%;width:100%;overflow:visible;overflow-x:clip}@media screen and (min-width: 60em){.siteheader-menu{margin-top:auto;overflow:visible}}.siteheader-menu pn-mainnav-link a[target]::after{content:none}.siteheader-menu pn-marketweb-siteheader-search{padding:0.3rem 1.6rem;width:100%}.siteheader-menu [slot=top] pn-search-field{width:100%}.siteheader-menu-footer{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:center;align-items:center}.siteheader-menu-footer>*{margin:1.6rem}";
|
|
3247
3446
|
|
|
3248
3447
|
let PnMarketwebSiteheader$1 = class extends HTMLElement {
|
|
@@ -3260,6 +3459,8 @@ let PnMarketwebSiteheader$1 = class extends HTMLElement {
|
|
|
3260
3459
|
this.language = null; //sv
|
|
3261
3460
|
/** Specifies which environment we're fetching data from. (production, preproduction, integration, localhost) */
|
|
3262
3461
|
this.environment = null; //sv
|
|
3462
|
+
/** Access token passed from backend */
|
|
3463
|
+
this.token = "";
|
|
3263
3464
|
/** Specifies which endpoint domain we should load from */
|
|
3264
3465
|
this.endpoint = null;
|
|
3265
3466
|
/** Hides the site selector if set to true*/
|
|
@@ -3291,10 +3492,14 @@ let PnMarketwebSiteheader$1 = class extends HTMLElement {
|
|
|
3291
3492
|
// Login dialog
|
|
3292
3493
|
this.loginDialog = null;
|
|
3293
3494
|
this.minimizeSearch = false;
|
|
3495
|
+
this.loggedIn = false;
|
|
3294
3496
|
// FetchHelper
|
|
3295
3497
|
this.fetchHelper = new FetchHelper("siteheader");
|
|
3498
|
+
// Login manager
|
|
3499
|
+
this.loginManager = null;
|
|
3296
3500
|
}
|
|
3297
3501
|
componentWillLoad() {
|
|
3502
|
+
this.loginManager = new MarketWebLoginManager({ eventTarget: this.hostElement });
|
|
3298
3503
|
this.setInitialValues().then(() => {
|
|
3299
3504
|
this.init();
|
|
3300
3505
|
});
|
|
@@ -3430,12 +3635,9 @@ let PnMarketwebSiteheader$1 = class extends HTMLElement {
|
|
|
3430
3635
|
return;
|
|
3431
3636
|
}
|
|
3432
3637
|
onLoginStateChange(e) {
|
|
3433
|
-
var _a, _b;
|
|
3434
|
-
if (((_a = e.detail) === null || _a === void 0 ? void 0 : _a.loggedIn) && ((_b = e.detail) === null || _b === void 0 ? void 0 : _b.token)
|
|
3435
|
-
|
|
3436
|
-
fetch('/api/userprofile/sync?token=' + e.detail.token);
|
|
3437
|
-
}
|
|
3438
|
-
catch (e) { }
|
|
3638
|
+
var _a, _b, _c;
|
|
3639
|
+
if (((_a = e.detail) === null || _a === void 0 ? void 0 : _a.loggedIn) && ((_b = e.detail) === null || _b === void 0 ? void 0 : _b.token)) {
|
|
3640
|
+
this.loggedIn = ((_c = e.detail) === null || _c === void 0 ? void 0 : _c.loggedIn) === true;
|
|
3439
3641
|
}
|
|
3440
3642
|
}
|
|
3441
3643
|
promotedItemId(item) {
|
|
@@ -3466,11 +3668,22 @@ let PnMarketwebSiteheader$1 = class extends HTMLElement {
|
|
|
3466
3668
|
this.minimizeSearch = true;
|
|
3467
3669
|
}
|
|
3468
3670
|
}
|
|
3671
|
+
adjustSiteSelectorUrl(href) {
|
|
3672
|
+
if (!this.loggedIn) {
|
|
3673
|
+
return href;
|
|
3674
|
+
}
|
|
3675
|
+
const loginDomains = ['portal.postnord.com'];
|
|
3676
|
+
const matchedHref = loginDomains.filter((domain) => { return href.indexOf(domain) !== -1; });
|
|
3677
|
+
if (matchedHref.length === 0) {
|
|
3678
|
+
return href;
|
|
3679
|
+
}
|
|
3680
|
+
return this.loginManager.getLoginUrl(href);
|
|
3681
|
+
}
|
|
3469
3682
|
render() {
|
|
3470
3683
|
var _a, _b, _c, _d, _e, _f;
|
|
3471
3684
|
return (h(Host, { language: this.language, market: this.market, environment: this.environment }, h("header", null, h("div", { class: "siteheader-row" }, h("div", { class: "siteheader-topleft" }, h("slot", { name: "topleft" }), !this.hideSiteSelector &&
|
|
3472
3685
|
h("pn-site-selector", { language: this.language, buttontext: (_b = (_a = this.siteSelector) === null || _a === void 0 ? void 0 : _a.currentSiteTitle) !== null && _b !== void 0 ? _b : 'postnord' }, (this.gotData && ((_c = this.siteSelector) === null || _c === void 0 ? void 0 : _c.currentSiteTitle)) &&
|
|
3473
|
-
h("pn-site-selector-item", { heading: this.siteSelector.currentSiteTitle + ' ', description: this.siteSelector.currentSiteDescription }), (this.gotData && ((_d = this.siteSelector) === null || _d === void 0 ? void 0 : _d.siteSelections)) && this.siteSelector.siteSelections.map((site) => h("pn-site-selector-item", { heading: site.linkText + ' ', description: site.linkDescription, url: site.href, newwindow: site.openInNewWindow })))), h("div", { class: "siteheader-logocontainer" }, h("a", { href: this.homePageLink, title: "Home", class: "siteheader-logolink" }, h("svg", { class: "siteheader-logo", xmlns: "http://www.w3.org/2000/svg", width: "12.7rem", height: "2.4rem", viewBox: "0 0 141.73 26.65" }, h("path", { d: "M108.84,13.35c0,6.34-5.17,9-10,9S89,19.76,89,13.63c0-6.28,5.08-9,10-9S108.84,7.25,108.84,13.35Zm-6.56.18a3.4,3.4,0,1,0-6.8,0,3.29,3.29,0,0,0,3.42,3.41A3.24,3.24,0,0,0,102.28,13.54Zm-83,0c0,4.83-3.32,8.82-8.49,8.82a6.54,6.54,0,0,1-4.65-1.57v5.86H0V5.16H6.17V6.8a6.43,6.43,0,0,1,5.11-2.18C16.41,4.62,19.31,8.58,19.31,13.54Zm-6.53,0A3.27,3.27,0,0,0,9.4,10,3.28,3.28,0,0,0,6,13.54,3.29,3.29,0,0,0,9.4,16.95,3.24,3.24,0,0,0,12.78,13.54Zm103.69,0.27c0-2.54,1.54-3.32,3.6-3.32a6.56,6.56,0,0,1,2.08.3L122.3,5.1a3.92,3.92,0,0,0-1.45-.18c-3.45,0-4.38,2.18-4.38,2.18V5.16H110.3V21.84h6.17v-8ZM141.73,0V21.84h-6.16V20.21a6.43,6.43,0,0,1-5.11,2.18c-5.14,0-8-4-8-8.91s3.32-8.82,8.49-8.82a6.54,6.54,0,0,1,4.65,1.57v-5Zm-6,13.48a3.28,3.28,0,0,0-3.41-3.41A3.24,3.24,0,0,0,129,13.47,3.4,3.4,0,1,0,135.75,13.47ZM81.35,4.62c-3.6,0-4.9,2.18-4.9,2.18V5.16H70.29V21.84h6.16V13.29c0-2.11.79-3.08,2.69-3.08s2.18,1.57,2.18,3.57v8.07h6.22V11.6C87.55,7,85.34,4.62,81.35,4.62ZM64.07,1.42H57.9V21.84h6.16V10.36H67l2.81-5.2H64.07V1.42ZM50.26,11.21c-2-.3-2.87-0.3-2.87-1.09s0.81-.94,2.42-0.94a16.15,16.15,0,0,1,5.11.91L56,5.41a24.56,24.56,0,0,0-6.13-.75c-5.89,0-9,2.27-9,5.89,0,2.81,1.66,4.47,6.53,5.11,2.06,0.27,2.81.39,2.81,1.15s-0.82,1-2.24,1a16.67,16.67,0,0,1-6-1.3L40.77,21.3a22.14,22.14,0,0,0,6.68,1c6.35,0,9.28-2.24,9.28-5.89C56.72,13.54,55.15,12,50.26,11.21ZM40.19,13.35c0,6.34-5.17,9-10,9s-9.82-2.6-9.82-8.73c0-6.28,5.08-9,10-9S40.19,7.25,40.19,13.35Zm-6.56.18a3.4,3.4,0,1,0-6.8,0,3.28,3.28,0,0,0,3.41,3.41A3.24,3.24,0,0,0,33.63,13.54Z", fill: "#00A0D6", transform: "translate(0 0)" })))), h("div", { class: "siteheader-topright" }, h("slot", { name: "toprightstart" }), (this.gotData && this.loginDialog && !this.hideLogin) && (h("pn-marketweb-siteheader-login", { loginDialog: this.loginDialog, endpoint: this.endpoint, i18n: this.i18n })), (this.gotData && this.languageOptions && this.languageOptions.length) && !this.hideLanguageSelector &&
|
|
3686
|
+
h("pn-site-selector-item", { heading: this.siteSelector.currentSiteTitle + ' ', description: this.siteSelector.currentSiteDescription }), (this.gotData && ((_d = this.siteSelector) === null || _d === void 0 ? void 0 : _d.siteSelections)) && this.siteSelector.siteSelections.map((site) => h("pn-site-selector-item", { heading: site.linkText + ' ', description: site.linkDescription, url: this.adjustSiteSelectorUrl(site.href), newwindow: site.openInNewWindow })))), h("div", { class: "siteheader-logocontainer" }, h("a", { href: this.homePageLink, title: "Home", class: "siteheader-logolink" }, h("svg", { class: "siteheader-logo", xmlns: "http://www.w3.org/2000/svg", width: "12.7rem", height: "2.4rem", viewBox: "0 0 141.73 26.65" }, h("path", { d: "M108.84,13.35c0,6.34-5.17,9-10,9S89,19.76,89,13.63c0-6.28,5.08-9,10-9S108.84,7.25,108.84,13.35Zm-6.56.18a3.4,3.4,0,1,0-6.8,0,3.29,3.29,0,0,0,3.42,3.41A3.24,3.24,0,0,0,102.28,13.54Zm-83,0c0,4.83-3.32,8.82-8.49,8.82a6.54,6.54,0,0,1-4.65-1.57v5.86H0V5.16H6.17V6.8a6.43,6.43,0,0,1,5.11-2.18C16.41,4.62,19.31,8.58,19.31,13.54Zm-6.53,0A3.27,3.27,0,0,0,9.4,10,3.28,3.28,0,0,0,6,13.54,3.29,3.29,0,0,0,9.4,16.95,3.24,3.24,0,0,0,12.78,13.54Zm103.69,0.27c0-2.54,1.54-3.32,3.6-3.32a6.56,6.56,0,0,1,2.08.3L122.3,5.1a3.92,3.92,0,0,0-1.45-.18c-3.45,0-4.38,2.18-4.38,2.18V5.16H110.3V21.84h6.17v-8ZM141.73,0V21.84h-6.16V20.21a6.43,6.43,0,0,1-5.11,2.18c-5.14,0-8-4-8-8.91s3.32-8.82,8.49-8.82a6.54,6.54,0,0,1,4.65,1.57v-5Zm-6,13.48a3.28,3.28,0,0,0-3.41-3.41A3.24,3.24,0,0,0,129,13.47,3.4,3.4,0,1,0,135.75,13.47ZM81.35,4.62c-3.6,0-4.9,2.18-4.9,2.18V5.16H70.29V21.84h6.16V13.29c0-2.11.79-3.08,2.69-3.08s2.18,1.57,2.18,3.57v8.07h6.22V11.6C87.55,7,85.34,4.62,81.35,4.62ZM64.07,1.42H57.9V21.84h6.16V10.36H67l2.81-5.2H64.07V1.42ZM50.26,11.21c-2-.3-2.87-0.3-2.87-1.09s0.81-.94,2.42-0.94a16.15,16.15,0,0,1,5.11.91L56,5.41a24.56,24.56,0,0,0-6.13-.75c-5.89,0-9,2.27-9,5.89,0,2.81,1.66,4.47,6.53,5.11,2.06,0.27,2.81.39,2.81,1.15s-0.82,1-2.24,1a16.67,16.67,0,0,1-6-1.3L40.77,21.3a22.14,22.14,0,0,0,6.68,1c6.35,0,9.28-2.24,9.28-5.89C56.72,13.54,55.15,12,50.26,11.21ZM40.19,13.35c0,6.34-5.17,9-10,9s-9.82-2.6-9.82-8.73c0-6.28,5.08-9,10-9S40.19,7.25,40.19,13.35Zm-6.56.18a3.4,3.4,0,1,0-6.8,0,3.28,3.28,0,0,0,3.41,3.41A3.24,3.24,0,0,0,33.63,13.54Z", fill: "#00A0D6", transform: "translate(0 0)" })))), h("div", { class: "siteheader-topright" }, h("slot", { name: "toprightstart" }), (this.gotData && this.loginDialog && !this.hideLogin) && (h("pn-marketweb-siteheader-login", { token: this.token, loginDialog: this.loginDialog, endpoint: this.endpoint, i18n: this.i18n })), (this.gotData && this.languageOptions && this.languageOptions.length) && !this.hideLanguageSelector &&
|
|
3474
3687
|
h("pn-language-selector", { value: this.language }, this.languageOptions.map(language => h("pn-language-selector-option", { name: language.nativeName, code: language.twoLetterISOLanguageName, selected: language.isCurrent, url: this.getLanguageVersionUrl(language) }))), h("slot", { name: "toprightend" }))), h("div", { class: "siteheader-row" }, h("div", { class: "siteheader-menu" }, h("pn-mainnav", { market: this.market, language: this.language, onMenuOpenChange: (e) => {
|
|
3475
3688
|
document.body.setAttribute("data-siteheader-menuopen", (e.detail + ''));
|
|
3476
3689
|
} }, h("pn-mainnav-level", null, h("pn-mainnav-list", null, this.menuItems.map((item) => {
|
|
@@ -3495,197 +3708,6 @@ let PnMarketwebSiteheader$1 = class extends HTMLElement {
|
|
|
3495
3708
|
static get style() { return pnMarketwebSiteheaderCss; }
|
|
3496
3709
|
};
|
|
3497
3710
|
|
|
3498
|
-
class MarketWebLoginManager {
|
|
3499
|
-
constructor(options = null) {
|
|
3500
|
-
var _a;
|
|
3501
|
-
this.eventTarget = (window !== null && window !== void 0 ? window : document === null || document === void 0 ? void 0 : document.body);
|
|
3502
|
-
this.endpoint = "";
|
|
3503
|
-
this.storagePrefix = "pn-user";
|
|
3504
|
-
this.baseUrls = {
|
|
3505
|
-
at: 'https://atportal.postnord.com/api/unified-login/backend',
|
|
3506
|
-
prod: 'https://portal.postnord.com/api/unified-login/backend',
|
|
3507
|
-
};
|
|
3508
|
-
this.events = {
|
|
3509
|
-
loginstatechange: "loginstatechange"
|
|
3510
|
-
};
|
|
3511
|
-
this.endpoints = {
|
|
3512
|
-
authorizationEndpoint: `/authorization`,
|
|
3513
|
-
tokenExchangeEndpoint: `/token`,
|
|
3514
|
-
userInfoEndpoint: `/user`,
|
|
3515
|
-
logoutEndpoint: `/logout`,
|
|
3516
|
-
};
|
|
3517
|
-
this.keys = {
|
|
3518
|
-
token: 'token',
|
|
3519
|
-
user: 'user',
|
|
3520
|
-
expire: 'expire',
|
|
3521
|
-
expireDate: 'expiredate'
|
|
3522
|
-
};
|
|
3523
|
-
this.store = {
|
|
3524
|
-
get: (key) => {
|
|
3525
|
-
const value = window.sessionStorage.getItem(`${this.storagePrefix}-${key}`);
|
|
3526
|
-
if (!value) {
|
|
3527
|
-
return value;
|
|
3528
|
-
}
|
|
3529
|
-
if (value.indexOf('{') === 0) {
|
|
3530
|
-
try {
|
|
3531
|
-
return JSON.parse(value);
|
|
3532
|
-
}
|
|
3533
|
-
catch (e) {
|
|
3534
|
-
}
|
|
3535
|
-
}
|
|
3536
|
-
if (value.indexOf(',') !== -1) {
|
|
3537
|
-
return value.split(',');
|
|
3538
|
-
}
|
|
3539
|
-
return value;
|
|
3540
|
-
},
|
|
3541
|
-
set: (key, value) => {
|
|
3542
|
-
if (typeof value === "object" && typeof value.length === "undefined") {
|
|
3543
|
-
window.sessionStorage.setItem(`${this.storagePrefix}-${key}`, JSON.stringify(value));
|
|
3544
|
-
return;
|
|
3545
|
-
}
|
|
3546
|
-
window.sessionStorage.setItem(`${this.storagePrefix}-${key}`, value);
|
|
3547
|
-
},
|
|
3548
|
-
remove: (key) => {
|
|
3549
|
-
window.sessionStorage.removeItem(`${this.storagePrefix}-${key}`);
|
|
3550
|
-
},
|
|
3551
|
-
};
|
|
3552
|
-
if (!options) {
|
|
3553
|
-
return;
|
|
3554
|
-
}
|
|
3555
|
-
this.eventTarget = (options.eventTarget) ? options.eventTarget : this.eventTarget;
|
|
3556
|
-
this.endpoint = options.endpoint ? options.endpoint : `${window.location.protocol}//${window.location.host}`;
|
|
3557
|
-
(_a = this.storagePrefix) !== null && _a !== void 0 ? _a : (this.storagePrefix = options.storagePrefix);
|
|
3558
|
-
}
|
|
3559
|
-
init(checkParameters = true) {
|
|
3560
|
-
if (checkParameters) {
|
|
3561
|
-
this.checkParameters();
|
|
3562
|
-
this.checkExpireTime();
|
|
3563
|
-
if (this.store.get(this.keys.token) && !this.store.get(this.keys.user)) {
|
|
3564
|
-
this.fetchUserInfo();
|
|
3565
|
-
}
|
|
3566
|
-
this.loginStateChange();
|
|
3567
|
-
}
|
|
3568
|
-
}
|
|
3569
|
-
isLoggedIn() {
|
|
3570
|
-
const isLoggedIn = (this.store.get(this.keys.token) && this.store.get(this.keys.user)) ? true : false;
|
|
3571
|
-
return isLoggedIn;
|
|
3572
|
-
}
|
|
3573
|
-
getLoginUrl(redirectPage = "") {
|
|
3574
|
-
const currentPage = window.location.href;
|
|
3575
|
-
redirectPage = redirectPage ? redirectPage : currentPage;
|
|
3576
|
-
return `${this.getBaseUrl()}${this.endpoints.authorizationEndpoint}?redirectionUrl=${redirectPage}`;
|
|
3577
|
-
}
|
|
3578
|
-
getLogoutUrl(redirectPage = "") {
|
|
3579
|
-
const currentPage = window.location.href;
|
|
3580
|
-
redirectPage = redirectPage ? redirectPage : currentPage;
|
|
3581
|
-
return `${this.getBaseUrl()}${this.endpoints.logoutEndpoint}?redirectionUrl=${redirectPage}&authorization=${this.store.get(this.keys.token)}`;
|
|
3582
|
-
}
|
|
3583
|
-
getUserInfo() {
|
|
3584
|
-
if (this.isLoggedIn()) {
|
|
3585
|
-
return this.store.get(this.keys.user);
|
|
3586
|
-
}
|
|
3587
|
-
}
|
|
3588
|
-
getEventTarget() {
|
|
3589
|
-
return this.eventTarget;
|
|
3590
|
-
}
|
|
3591
|
-
checkExpireTime() {
|
|
3592
|
-
const expire = this.store.get(this.keys.expire);
|
|
3593
|
-
if (!expire) {
|
|
3594
|
-
return;
|
|
3595
|
-
}
|
|
3596
|
-
const now = new Date();
|
|
3597
|
-
const expireDate = new Date(Math.floor(parseInt(expire, 10) * 1000));
|
|
3598
|
-
if (now > expireDate) {
|
|
3599
|
-
console.info('Login time has expired');
|
|
3600
|
-
this.clearUserData();
|
|
3601
|
-
this.loginStateChange();
|
|
3602
|
-
}
|
|
3603
|
-
}
|
|
3604
|
-
checkParameters() {
|
|
3605
|
-
if (!(window === null || window === void 0 ? void 0 : window.location)) {
|
|
3606
|
-
return;
|
|
3607
|
-
}
|
|
3608
|
-
const params = new URLSearchParams(window.location.search);
|
|
3609
|
-
if (params.get("oneTimeCode")) {
|
|
3610
|
-
const oneTimeCode = params.get("oneTimeCode");
|
|
3611
|
-
this.exchangeToken(oneTimeCode).then(() => {
|
|
3612
|
-
const currentHref = window.location.href;
|
|
3613
|
-
const paramPrefix = (currentHref.indexOf('?oneTimeCode') !== -1) ? "?" : "&";
|
|
3614
|
-
history.replaceState({}, document.querySelector('title').innerText, currentHref.replace(`${paramPrefix}oneTimeCode=${oneTimeCode}`, ''));
|
|
3615
|
-
});
|
|
3616
|
-
}
|
|
3617
|
-
}
|
|
3618
|
-
async fetchUserInfo() {
|
|
3619
|
-
const token = this.store.get(this.keys.token);
|
|
3620
|
-
const reqConfig = {
|
|
3621
|
-
method: 'GET',
|
|
3622
|
-
headers: {
|
|
3623
|
-
'Accept': 'application/json',
|
|
3624
|
-
'Content-Type': 'application/json',
|
|
3625
|
-
'Authorization': token
|
|
3626
|
-
},
|
|
3627
|
-
};
|
|
3628
|
-
const response = await fetch(`${this.getBaseUrl()}${this.endpoints.userInfoEndpoint}`, reqConfig);
|
|
3629
|
-
const data = await response.json();
|
|
3630
|
-
if (data) {
|
|
3631
|
-
try {
|
|
3632
|
-
const { idToken, expiryTime } = data;
|
|
3633
|
-
const userInfo = this.parseUserInfo(idToken);
|
|
3634
|
-
this.store.set(this.keys.user, userInfo);
|
|
3635
|
-
// 10 Min early expire
|
|
3636
|
-
this.store.set(this.keys.expire, expiryTime);
|
|
3637
|
-
this.store.set(this.keys.expireDate, new Date(Math.floor(parseInt(expiryTime, 10) * 1000)));
|
|
3638
|
-
this.loginStateChange();
|
|
3639
|
-
}
|
|
3640
|
-
catch (e) {
|
|
3641
|
-
console.error('Unable to get user information', e);
|
|
3642
|
-
}
|
|
3643
|
-
}
|
|
3644
|
-
}
|
|
3645
|
-
clearUserData() {
|
|
3646
|
-
this.store.remove(this.keys.user);
|
|
3647
|
-
this.store.remove(this.keys.token);
|
|
3648
|
-
this.store.remove(this.keys.expire);
|
|
3649
|
-
this.store.remove(this.keys.expireDate);
|
|
3650
|
-
}
|
|
3651
|
-
getToken() {
|
|
3652
|
-
return this.store.get(this.keys.token);
|
|
3653
|
-
}
|
|
3654
|
-
async exchangeToken(oneTimeCode) {
|
|
3655
|
-
this.clearUserData();
|
|
3656
|
-
const response = await fetch(`${this.getBaseUrl()}${this.endpoints.tokenExchangeEndpoint}?oneTimeCode=${oneTimeCode}`);
|
|
3657
|
-
const { token } = await response.json();
|
|
3658
|
-
if (typeof token === "string" && token) {
|
|
3659
|
-
this.store.set(this.keys.token, token);
|
|
3660
|
-
}
|
|
3661
|
-
this.fetchUserInfo();
|
|
3662
|
-
}
|
|
3663
|
-
loginStateChange() {
|
|
3664
|
-
if (!this.eventTarget) {
|
|
3665
|
-
return;
|
|
3666
|
-
}
|
|
3667
|
-
this.eventTarget.dispatchEvent(new CustomEvent(this.events.loginstatechange, {
|
|
3668
|
-
detail: this.isLoggedIn()
|
|
3669
|
-
}));
|
|
3670
|
-
}
|
|
3671
|
-
getBaseUrl() {
|
|
3672
|
-
const atEnvironments = ["localhost", "integration.", 'local.'];
|
|
3673
|
-
const useATEnv = atEnvironments.filter(x => this.endpoint.indexOf(x) !== -1).length > 0;
|
|
3674
|
-
if (useATEnv) {
|
|
3675
|
-
return this.baseUrls.at;
|
|
3676
|
-
}
|
|
3677
|
-
return this.baseUrls.prod;
|
|
3678
|
-
}
|
|
3679
|
-
parseUserInfo(idToken) {
|
|
3680
|
-
var base64Url = idToken.split('.')[1];
|
|
3681
|
-
var base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');
|
|
3682
|
-
var jsonPayload = decodeURIComponent(atob(base64).split('').map(function (c) {
|
|
3683
|
-
return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
|
|
3684
|
-
}).join(''));
|
|
3685
|
-
return JSON.parse(jsonPayload);
|
|
3686
|
-
}
|
|
3687
|
-
}
|
|
3688
|
-
|
|
3689
3711
|
const pnMarketwebSiteheaderLoginCss = "pn-marketweb-siteheader-login{padding:1rem 0;max-height:5.2rem;position:relative}pn-marketweb-siteheader-login strong{padding:0.8rem 1.6rem;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}pn-marketweb-siteheader-login ul,pn-marketweb-siteheader-login li{list-style:none;margin:0;padding:0}pn-marketweb-siteheader-login li{padding:0.8rem 1.6rem}pn-marketweb-siteheader-login li pn-button{display:block;width:100%}pn-marketweb-siteheader-login pn-nav-dropdown{display:none}pn-marketweb-siteheader-login.hydrated pn-nav-dropdown{display:block}";
|
|
3690
3712
|
|
|
3691
3713
|
let PnMarketwebSiteheaderLogin$1 = class extends HTMLElement {
|
|
@@ -3695,6 +3717,8 @@ let PnMarketwebSiteheaderLogin$1 = class extends HTMLElement {
|
|
|
3695
3717
|
this.loginStateChange = createEvent(this, "loginStateChange", 7);
|
|
3696
3718
|
/** Specifies which endpoint domain we should load from */
|
|
3697
3719
|
this.endpoint = "";
|
|
3720
|
+
/** Access token passed from backend */
|
|
3721
|
+
this.token = "";
|
|
3698
3722
|
this.emitEvents = true;
|
|
3699
3723
|
// Login dialog
|
|
3700
3724
|
this.loginDialog = null;
|
|
@@ -3706,6 +3730,9 @@ let PnMarketwebSiteheaderLogin$1 = class extends HTMLElement {
|
|
|
3706
3730
|
componentWillLoad() {
|
|
3707
3731
|
this.loginManager = new MarketWebLoginManager({ endpoint: this.endpoint, eventTarget: this.hostElement });
|
|
3708
3732
|
this.hostElement["loginmanager"] = this.loginManager;
|
|
3733
|
+
if (this.token) {
|
|
3734
|
+
this.loginManager.registerToken(this.token);
|
|
3735
|
+
}
|
|
3709
3736
|
this.hostElement.addEventListener(this.loginManager.events.loginstatechange, this.onLoginStateChange.bind(this));
|
|
3710
3737
|
this.init();
|
|
3711
3738
|
}
|
|
@@ -4187,7 +4214,8 @@ let PnProfileSelector$1 = class extends HTMLElement {
|
|
|
4187
4214
|
this.__registerHost();
|
|
4188
4215
|
this.language = null; //sv
|
|
4189
4216
|
this.returnUrl = "/"; //sv
|
|
4190
|
-
|
|
4217
|
+
// @Prop() endpoint = "/api/userprofile/sync"; // Endpoint where we send in the current user session
|
|
4218
|
+
this.spamode = false; // Endpoint where we send in the current user session
|
|
4191
4219
|
this.loginManager = null;
|
|
4192
4220
|
this.loggedIn = false;
|
|
4193
4221
|
this.i18n = translations$1["en"];
|
|
@@ -4196,9 +4224,10 @@ let PnProfileSelector$1 = class extends HTMLElement {
|
|
|
4196
4224
|
}
|
|
4197
4225
|
componentWillLoad() {
|
|
4198
4226
|
this.loginManager = new MarketWebLoginManager({ eventTarget: this.hostElement });
|
|
4199
|
-
this.loginManager.init(
|
|
4227
|
+
this.loginManager.init(this.spamode);
|
|
4200
4228
|
this.hostElement["loginmanager"] = this.loginManager;
|
|
4201
4229
|
this.hostElement.addEventListener(this.loginManager.events.loginstatechange, this.onLoginStateChange.bind(this));
|
|
4230
|
+
this.checkLoggedInState();
|
|
4202
4231
|
this.setInitialValues().then(() => {
|
|
4203
4232
|
this.init();
|
|
4204
4233
|
});
|
|
@@ -4218,19 +4247,25 @@ let PnProfileSelector$1 = class extends HTMLElement {
|
|
|
4218
4247
|
init() {
|
|
4219
4248
|
this.setTranslations();
|
|
4220
4249
|
}
|
|
4250
|
+
checkLoggedInState() {
|
|
4251
|
+
if (this.loginManager.getToken() && this.loginManager.getUserInfo()) {
|
|
4252
|
+
this.onLoginStateChange({ detail: true });
|
|
4253
|
+
}
|
|
4254
|
+
}
|
|
4221
4255
|
async onLoginStateChange(e) {
|
|
4222
4256
|
if (this.loggedIn !== e.detail) {
|
|
4223
4257
|
this.loggedIn = e.detail;
|
|
4224
|
-
|
|
4225
|
-
|
|
4226
|
-
|
|
4227
|
-
|
|
4228
|
-
|
|
4229
|
-
|
|
4230
|
-
|
|
4231
|
-
|
|
4232
|
-
|
|
4233
|
-
}
|
|
4258
|
+
this.isLoading = false;
|
|
4259
|
+
this.redirectUser();
|
|
4260
|
+
// const token = this.loginManager.getToken();
|
|
4261
|
+
// if (this.loggedIn && token) {
|
|
4262
|
+
// try {
|
|
4263
|
+
// await fetch(this.endpoint + '?token=' + token);
|
|
4264
|
+
// if (this.numberOfProfiles === 1) {
|
|
4265
|
+
// this.redirectUser();
|
|
4266
|
+
// }
|
|
4267
|
+
// } catch(e) { }
|
|
4268
|
+
// }
|
|
4234
4269
|
}
|
|
4235
4270
|
}
|
|
4236
4271
|
async onLoggedIn() {
|
|
@@ -4556,15 +4591,15 @@ const PnMainnavLevel = /*@__PURE__*/proxyCustomElement(PnMainnavLevel$1, [4,"pn-
|
|
|
4556
4591
|
const PnMainnavLink = /*@__PURE__*/proxyCustomElement(PnMainnavLink$1, [4,"pn-mainnav-link",{"name":[1],"href":[1],"target":[1],"linkid":[1],"levelId":[32],"open":[32],"hasChildren":[32]}]);
|
|
4557
4592
|
const PnMainnavList = /*@__PURE__*/proxyCustomElement(PnMainnavList$1, [4,"pn-mainnav-list",{"heading":[1],"linkCount":[32]}]);
|
|
4558
4593
|
const PnMarketwebSitefooter = /*@__PURE__*/proxyCustomElement(PnMarketwebSiteheader$2, [0,"pn-marketweb-sitefooter",{"market":[1537],"language":[1537],"environment":[1537],"endpoint":[1],"cache":[4],"siteDefinition":[32],"footerContent":[32],"i18n":[32],"gotData":[32],"fetchingData":[32]}]);
|
|
4559
|
-
const PnMarketwebSiteheader = /*@__PURE__*/proxyCustomElement(PnMarketwebSiteheader$1, [4,"pn-marketweb-siteheader",{"market":[1537],"language":[1537],"environment":[1537],"endpoint":[1],"hideSiteSelector":[1540,"hide-site-selector"],"hideLanguageSelector":[1540,"hide-language-selector"],"hideSearch":[1540,"hide-search"],"hideLogin":[1540,"hide-login"],"sessionForward":[4,"session-forward"],"cache":[4],"spaMode":[4,"spa-mode"],"i18n":[32],"gotData":[32],"fetchingData":[32],"homePageLink":[32],"menuItems":[32],"siteDefinition":[32],"search":[32],"siteSelector":[32],"languageSelector":[32],"languageOptions":[32],"loginDialog":[32],"minimizeSearch":[32]},[[0,"setLanguage","onLanguageSelectorChange"],[0,"loginStateChange","onLoginStateChange"],[9,"resize","handleResize"]]]);
|
|
4560
|
-
const PnMarketwebSiteheaderLogin = /*@__PURE__*/proxyCustomElement(PnMarketwebSiteheaderLogin$1, [0,"pn-marketweb-siteheader-login",{"endpoint":[1],"i18n":[8,"i-1-8n"],"emitEvents":[4,"emit-events"],"loginDialog":[1040],"loginManager":[32],"loggedIn":[32],"toggleButtonText":[32],"username":[32]}]);
|
|
4594
|
+
const PnMarketwebSiteheader = /*@__PURE__*/proxyCustomElement(PnMarketwebSiteheader$1, [4,"pn-marketweb-siteheader",{"market":[1537],"language":[1537],"environment":[1537],"token":[1],"endpoint":[1],"hideSiteSelector":[1540,"hide-site-selector"],"hideLanguageSelector":[1540,"hide-language-selector"],"hideSearch":[1540,"hide-search"],"hideLogin":[1540,"hide-login"],"sessionForward":[4,"session-forward"],"cache":[4],"spaMode":[4,"spa-mode"],"i18n":[32],"gotData":[32],"fetchingData":[32],"homePageLink":[32],"menuItems":[32],"siteDefinition":[32],"search":[32],"siteSelector":[32],"languageSelector":[32],"languageOptions":[32],"loginDialog":[32],"minimizeSearch":[32],"loggedIn":[32],"loginManager":[32]},[[0,"setLanguage","onLanguageSelectorChange"],[0,"loginStateChange","onLoginStateChange"],[9,"resize","handleResize"]]]);
|
|
4595
|
+
const PnMarketwebSiteheaderLogin = /*@__PURE__*/proxyCustomElement(PnMarketwebSiteheaderLogin$1, [0,"pn-marketweb-siteheader-login",{"endpoint":[1],"token":[1],"i18n":[8,"i-1-8n"],"emitEvents":[4,"emit-events"],"loginDialog":[1040],"loginManager":[32],"loggedIn":[32],"toggleButtonText":[32],"username":[32]}]);
|
|
4561
4596
|
const PnMarketwebSiteheaderSearch = /*@__PURE__*/proxyCustomElement(PnMarketwebSiteheaderSearch$1, [0,"pn-marketweb-siteheader-search",{"i18n":[8,"i-1-8n"],"showOnlyLink":[1028,"show-only-link"],"hideSearch":[1028,"hide-search"],"search":[1040]}]);
|
|
4562
4597
|
const PnProductPricelist = /*@__PURE__*/proxyCustomElement(PnFindProductPricelist, [4,"pn-product-pricelist",{"source":[1],"language":[1025],"market":[1025],"productid":[1],"filteredItems":[32],"sourceData":[32],"gotData":[32],"loading":[32],"postagetype":[32],"weight":[32],"weightvalue":[32]}]);
|
|
4563
4598
|
const PnProductPricelistResult = /*@__PURE__*/proxyCustomElement(PnFindProductPricelistResult, [0,"pn-product-pricelist-result",{"item":[1040],"shownitems":[16],"weightText":[32]}]);
|
|
4564
4599
|
const PnProductTile = /*@__PURE__*/proxyCustomElement(PnProductTile$1, [4,"pn-product-tile"]);
|
|
4565
4600
|
const PnProductTileInfo = /*@__PURE__*/proxyCustomElement(PnProductTileInfo$1, [0,"pn-product-tile-info",{"label":[1],"text":[1],"icon":[1]}]);
|
|
4566
4601
|
const PnProductTilePrice = /*@__PURE__*/proxyCustomElement(PnProductTilePrice$1, [0,"pn-product-tile-price",{"label":[1],"amount":[1],"currency":[1],"url":[1]}]);
|
|
4567
|
-
const PnProfileSelector = /*@__PURE__*/proxyCustomElement(PnProfileSelector$1, [0,"pn-profile-selector",{"language":[1537],"returnUrl":[1,"return-url"],"
|
|
4602
|
+
const PnProfileSelector = /*@__PURE__*/proxyCustomElement(PnProfileSelector$1, [0,"pn-profile-selector",{"language":[1537],"returnUrl":[1,"return-url"],"spamode":[4],"loginManager":[32],"loggedIn":[32],"i18n":[32],"isLoading":[32],"numberOfProfiles":[32]}]);
|
|
4568
4603
|
const PnSidenav = /*@__PURE__*/proxyCustomElement(PnSidenav$1, [4,"pn-sidenav",{"language":[1],"navLabel":[1,"nav-label"],"i18n":[32]},[[0,"language","setLanguage"],[0,"openSubMenuLevelChange","onOpenSubMenuLevelChange"]]]);
|
|
4569
4604
|
const PnSidenavLevel = /*@__PURE__*/proxyCustomElement(PnSidenavLevel$1, [4,"pn-sidenav-level",{"level":[32],"levelId":[32],"isOpen":[32],"parentName":[32],"parentHref":[32],"parentLinkId":[32],"alignment":[32]}]);
|
|
4570
4605
|
const PnSidenavLink = /*@__PURE__*/proxyCustomElement(PnSidenavLink$1, [4,"pn-sidenav-link",{"name":[1],"href":[1],"target":[1],"linkid":[1],"icon":[1],"current":[4],"levelId":[32],"open":[32],"hasChildren":[32]}]);
|
|
@@ -73,6 +73,14 @@ class MarketWebLoginManager {
|
|
|
73
73
|
const isLoggedIn = (this.store.get(this.keys.token) && this.store.get(this.keys.user)) ? true : false;
|
|
74
74
|
return isLoggedIn;
|
|
75
75
|
}
|
|
76
|
+
registerToken(token) {
|
|
77
|
+
if (!token || token === this.getToken()) {
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
this.clearUserData();
|
|
81
|
+
this.store.set(this.keys.token, token);
|
|
82
|
+
this.fetchUserInfo();
|
|
83
|
+
}
|
|
76
84
|
getLoginUrl(redirectPage = "") {
|
|
77
85
|
const currentPage = window.location.href;
|
|
78
86
|
redirectPage = redirectPage ? redirectPage : currentPage;
|
package/esm/loader.js
CHANGED
|
@@ -10,7 +10,7 @@ const patchEsm = () => {
|
|
|
10
10
|
const defineCustomElements = (win, options) => {
|
|
11
11
|
if (typeof window === 'undefined') return Promise.resolve();
|
|
12
12
|
return patchEsm().then(() => {
|
|
13
|
-
return bootstrapLazy([["pn-marketweb-siteheader",[[4,"pn-marketweb-siteheader",{"market":[1537],"language":[1537],"environment":[1537],"endpoint":[1],"hideSiteSelector":[1540,"hide-site-selector"],"hideLanguageSelector":[1540,"hide-language-selector"],"hideSearch":[1540,"hide-search"],"hideLogin":[1540,"hide-login"],"sessionForward":[4,"session-forward"],"cache":[4],"spaMode":[4,"spa-mode"],"i18n":[32],"gotData":[32],"fetchingData":[32],"homePageLink":[32],"menuItems":[32],"siteDefinition":[32],"search":[32],"siteSelector":[32],"languageSelector":[32],"languageOptions":[32],"loginDialog":[32],"minimizeSearch":[32]},[[0,"setLanguage","onLanguageSelectorChange"],[0,"loginStateChange","onLoginStateChange"],[9,"resize","handleResize"]]]]],["pn-find-service-and-price",[[0,"pn-find-service-and-price",{"source":[1],"language":[1025],"market":[1025],"filteredItems":[32],"postagetype":[32],"weight":[32],"weightvalue":[32],"deliveryscope":[32],"sourceData":[32]}]]],["pn-product-pricelist",[[4,"pn-product-pricelist",{"source":[1],"language":[1025],"market":[1025],"productid":[1],"filteredItems":[32],"sourceData":[32],"gotData":[32],"loading":[32],"postagetype":[32],"weight":[32],"weightvalue":[32]}]]],["pn-marketweb-sitefooter",[[0,"pn-marketweb-sitefooter",{"market":[1537],"language":[1537],"environment":[1537],"endpoint":[1],"cache":[4],"siteDefinition":[32],"footerContent":[32],"i18n":[32],"gotData":[32],"fetchingData":[32]}]]],["pn-filter-checkbox",[[1,"pn-filter-checkbox",{"value":[520],"name":[1],"checkboxid":[1],"disabled":[4],"checked":[4],"indeterminate":[1028]},[[0,"change","handlechange"]]]]],["pn-filter-search",[[1,"pn-filter-search",{"disabled":[4],"placeholder":[1],"inputid":[1],"name":[1],"autocomplete":[1],"value":[1],"label":[1],"loading":[4],"button":[1],"light":[4]},[[0,"input","inputHandler"]]]]],["pn-profile-selector",[[0,"pn-profile-selector",{"language":[1537],"returnUrl":[1,"return-url"],"
|
|
13
|
+
return bootstrapLazy([["pn-marketweb-siteheader",[[4,"pn-marketweb-siteheader",{"market":[1537],"language":[1537],"environment":[1537],"token":[1],"endpoint":[1],"hideSiteSelector":[1540,"hide-site-selector"],"hideLanguageSelector":[1540,"hide-language-selector"],"hideSearch":[1540,"hide-search"],"hideLogin":[1540,"hide-login"],"sessionForward":[4,"session-forward"],"cache":[4],"spaMode":[4,"spa-mode"],"i18n":[32],"gotData":[32],"fetchingData":[32],"homePageLink":[32],"menuItems":[32],"siteDefinition":[32],"search":[32],"siteSelector":[32],"languageSelector":[32],"languageOptions":[32],"loginDialog":[32],"minimizeSearch":[32],"loggedIn":[32],"loginManager":[32]},[[0,"setLanguage","onLanguageSelectorChange"],[0,"loginStateChange","onLoginStateChange"],[9,"resize","handleResize"]]]]],["pn-find-service-and-price",[[0,"pn-find-service-and-price",{"source":[1],"language":[1025],"market":[1025],"filteredItems":[32],"postagetype":[32],"weight":[32],"weightvalue":[32],"deliveryscope":[32],"sourceData":[32]}]]],["pn-product-pricelist",[[4,"pn-product-pricelist",{"source":[1],"language":[1025],"market":[1025],"productid":[1],"filteredItems":[32],"sourceData":[32],"gotData":[32],"loading":[32],"postagetype":[32],"weight":[32],"weightvalue":[32]}]]],["pn-marketweb-sitefooter",[[0,"pn-marketweb-sitefooter",{"market":[1537],"language":[1537],"environment":[1537],"endpoint":[1],"cache":[4],"siteDefinition":[32],"footerContent":[32],"i18n":[32],"gotData":[32],"fetchingData":[32]}]]],["pn-filter-checkbox",[[1,"pn-filter-checkbox",{"value":[520],"name":[1],"checkboxid":[1],"disabled":[4],"checked":[4],"indeterminate":[1028]},[[0,"change","handlechange"]]]]],["pn-filter-search",[[1,"pn-filter-search",{"disabled":[4],"placeholder":[1],"inputid":[1],"name":[1],"autocomplete":[1],"value":[1],"label":[1],"loading":[4],"button":[1],"light":[4]},[[0,"input","inputHandler"]]]]],["pn-profile-selector",[[0,"pn-profile-selector",{"language":[1537],"returnUrl":[1,"return-url"],"spamode":[4],"loginManager":[32],"loggedIn":[32],"i18n":[32],"isLoading":[32],"numberOfProfiles":[32]}]]],["pn-sidenav",[[4,"pn-sidenav",{"language":[1],"navLabel":[1,"nav-label"],"i18n":[32]},[[0,"language","setLanguage"],[0,"openSubMenuLevelChange","onOpenSubMenuLevelChange"]]]]],["pn-sidenav-level",[[4,"pn-sidenav-level",{"level":[32],"levelId":[32],"isOpen":[32],"parentName":[32],"parentHref":[32],"parentLinkId":[32],"alignment":[32]}]]],["pn-sidenav-link",[[4,"pn-sidenav-link",{"name":[1],"href":[1],"target":[1],"linkid":[1],"icon":[1],"current":[4],"levelId":[32],"open":[32],"hasChildren":[32]}]]],["pn-product-tile_3",[[4,"pn-product-tile"],[0,"pn-product-tile-info",{"label":[1],"text":[1],"icon":[1]}],[0,"pn-product-tile-price",{"label":[1],"amount":[1],"currency":[1],"url":[1]}]]],["pn-product-pricelist-result",[[0,"pn-product-pricelist-result",{"item":[1040],"shownitems":[16],"weightText":[32]}]]],["pn-choice-button_2",[[0,"pn-find-service-and-price-result",{"item":[1040],"shownitems":[16],"weightText":[32]}],[4,"pn-choice-button",{"value":[520],"name":[1],"choiceid":[1],"type":[1],"disabled":[4],"checked":[4],"indeterminate":[1028]},[[0,"change","handlechange"]]]]],["pn-site-footer_2",[[4,"pn-site-footer",{"url":[1]}],[4,"pn-site-footer-col"]]],["pn-mainnav-link",[[4,"pn-mainnav-link",{"name":[1],"href":[1],"target":[1],"linkid":[1],"levelId":[32],"open":[32],"hasChildren":[32]}]]],["pn-language-selector_9",[[4,"pn-mainnav-level",{"level":[32],"levelId":[32],"isOpen":[32],"parentName":[32],"parentHref":[32],"parentLinkId":[32],"listCount":[32],"alignment":[32]}],[4,"pn-language-selector",{"value":[1537],"selectedLanguageName":[32],"options":[32],"i18n":[32]}],[0,"pn-language-selector-option",{"name":[1],"code":[1],"url":[1],"selected":[4],"currentLanguage":[1,"current-language"]}],[4,"pn-mainnav",{"market":[1],"language":[1],"navigationId":[1,"navigation-id"],"openMenu":[1028,"open-menu"],"navLabel":[1,"nav-label"]},[[0,"language","setLanguage"],[0,"market","setMarket"],[0,"menuLanguageChange","onLanguageChange"],[0,"setmenuopenstate","setMenuOpenState"],[0,"openMenuLevelChange","onOpenMenuLevelChange"]]],[4,"pn-mainnav-list",{"heading":[1],"linkCount":[32]}],[0,"pn-marketweb-siteheader-login",{"endpoint":[1],"token":[1],"i18n":[8,"i-1-8n"],"emitEvents":[4,"emit-events"],"loginDialog":[1040],"loginManager":[32],"loggedIn":[32],"toggleButtonText":[32],"username":[32]}],[0,"pn-marketweb-siteheader-search",{"i18n":[8,"i-1-8n"],"showOnlyLink":[1028,"show-only-link"],"hideSearch":[1028,"hide-search"],"search":[1040]}],[4,"pn-site-selector",{"buttontext":[1537],"heading":[1537],"language":[1537],"i18n":[32]}],[0,"pn-site-selector-item",{"url":[1],"heading":[1],"description":[1],"newwindow":[4]}]]]], options);
|
|
14
14
|
});
|
|
15
15
|
};
|
|
16
16
|
|