@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.
Files changed (47) hide show
  1. package/cjs/{MarketWebLoginManager-8b675eb4.js → MarketWebLoginManager-859590e2.js} +8 -0
  2. package/cjs/loader.cjs.js +1 -1
  3. package/cjs/pn-language-selector_9.cjs.entry.js +6 -1
  4. package/cjs/pn-market-web-components.cjs.js +1 -1
  5. package/cjs/pn-marketweb-siteheader.cjs.entry.js +22 -7
  6. package/cjs/pn-profile-selector.cjs.entry.js +21 -13
  7. package/collection/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader-login.js +23 -0
  8. package/collection/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader.js +49 -8
  9. package/collection/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader.stories.js +44 -1
  10. package/collection/components/navigation/pn-profile-selector/pn-profile-selector.js +26 -18
  11. package/collection/globals/MarketWebLoginManager.js +8 -0
  12. package/custom-elements/index.js +248 -213
  13. package/esm/{MarketWebLoginManager-dd7ac023.js → MarketWebLoginManager-83f2e86a.js} +8 -0
  14. package/esm/loader.js +1 -1
  15. package/esm/pn-language-selector_9.entry.js +6 -1
  16. package/esm/pn-market-web-components.js +1 -1
  17. package/esm/pn-marketweb-siteheader.entry.js +22 -7
  18. package/esm/pn-profile-selector.entry.js +21 -13
  19. package/esm-es5/MarketWebLoginManager-83f2e86a.js +1 -0
  20. package/esm-es5/loader.js +1 -1
  21. package/esm-es5/pn-language-selector_9.entry.js +1 -1
  22. package/esm-es5/pn-market-web-components.js +1 -1
  23. package/esm-es5/pn-marketweb-siteheader.entry.js +1 -1
  24. package/esm-es5/pn-profile-selector.entry.js +1 -1
  25. package/package.json +1 -1
  26. package/pn-market-web-components/{p-ffdf87ee.entry.js → p-03fb0285.entry.js} +1 -1
  27. package/pn-market-web-components/p-1649b94a.entry.js +1 -0
  28. package/pn-market-web-components/p-25bdf3f8.system.js +1 -1
  29. package/pn-market-web-components/p-58cdf3a6.system.js +1 -0
  30. package/pn-market-web-components/p-5f256546.entry.js +1 -0
  31. package/pn-market-web-components/p-6db8065f.system.entry.js +1 -0
  32. package/pn-market-web-components/{p-6a32362d.system.entry.js → p-7b4c721f.system.entry.js} +1 -1
  33. package/pn-market-web-components/p-a983c263.system.entry.js +1 -0
  34. package/pn-market-web-components/p-c254cfdf.js +1 -0
  35. package/pn-market-web-components/pn-market-web-components.esm.js +1 -1
  36. package/types/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader-login.d.ts +2 -0
  37. package/types/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader.d.ts +6 -0
  38. package/types/components/navigation/pn-profile-selector/pn-profile-selector.d.ts +2 -1
  39. package/types/components.d.ts +18 -2
  40. package/types/globals/MarketWebLoginManager.d.ts +1 -0
  41. package/esm-es5/MarketWebLoginManager-dd7ac023.js +0 -1
  42. package/pn-market-web-components/p-37efd029.entry.js +0 -1
  43. package/pn-market-web-components/p-4dcea578.js +0 -1
  44. package/pn-market-web-components/p-4f1a53f4.entry.js +0 -1
  45. package/pn-market-web-components/p-51768dc0.system.js +0 -1
  46. package/pn-market-web-components/p-6d718a66.system.entry.js +0 -1
  47. package/pn-market-web-components/p-db7419be.system.entry.js +0 -1
@@ -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) && this.sessionForward) {
3435
- try {
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
- this.endpoint = "/api/userprofile/sync"; // Endpoint where we send in the current user session
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(true);
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
- const token = this.loginManager.getToken();
4225
- if (this.loggedIn && token) {
4226
- try {
4227
- await fetch(this.endpoint + '?token=' + token);
4228
- if (this.numberOfProfiles === 1) {
4229
- this.redirectUser();
4230
- }
4231
- }
4232
- catch (e) { }
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"],"endpoint":[1],"loginManager":[32],"loggedIn":[32],"i18n":[32],"isLoading":[32],"numberOfProfiles":[32]}]);
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"],"endpoint":[1],"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],"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);
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