@postnord/pn-marketweb-components 1.0.21 → 1.0.23

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 (34) hide show
  1. package/cjs/loader.cjs.js +1 -1
  2. package/cjs/pn-language-selector_9.cjs.entry.js +21 -9
  3. package/cjs/pn-market-web-components.cjs.js +1 -1
  4. package/cjs/pn-marketweb-siteheader.cjs.entry.js +29 -8
  5. package/collection/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader-login.js +44 -5
  6. package/collection/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader-loginmanager.js +9 -5
  7. package/collection/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader.js +77 -8
  8. package/collection/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader.stories.js +18 -3
  9. package/collection/components/navigation/pn-language-selector/pn-language-selector.js +19 -2
  10. package/custom-elements/index.js +53 -20
  11. package/esm/loader.js +1 -1
  12. package/esm/pn-language-selector_9.entry.js +22 -10
  13. package/esm/pn-market-web-components.js +1 -1
  14. package/esm/pn-marketweb-siteheader.entry.js +29 -8
  15. package/esm-es5/loader.js +1 -1
  16. package/esm-es5/pn-language-selector_9.entry.js +1 -1
  17. package/esm-es5/pn-market-web-components.js +1 -1
  18. package/esm-es5/pn-marketweb-siteheader.entry.js +1 -1
  19. package/package.json +1 -1
  20. package/pn-market-web-components/p-25bdf3f8.system.js +1 -1
  21. package/pn-market-web-components/p-8680c074.entry.js +1 -0
  22. package/pn-market-web-components/p-88ab0d91.system.entry.js +1 -0
  23. package/pn-market-web-components/p-d7441208.entry.js +1 -0
  24. package/pn-market-web-components/p-dd22803d.system.entry.js +1 -0
  25. package/pn-market-web-components/pn-market-web-components.esm.js +1 -1
  26. package/types/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader-login.d.ts +3 -0
  27. package/types/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader-loginmanager.d.ts +7 -2
  28. package/types/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader.d.ts +8 -1
  29. package/types/components/navigation/pn-language-selector/pn-language-selector.d.ts +2 -0
  30. package/types/components.d.ts +20 -0
  31. package/pn-market-web-components/p-2da203c9.system.entry.js +0 -1
  32. package/pn-market-web-components/p-363a27ff.entry.js +0 -1
  33. package/pn-market-web-components/p-582dbd9c.entry.js +0 -1
  34. package/pn-market-web-components/p-ecfabe25.system.entry.js +0 -1
@@ -2403,6 +2403,7 @@ let PnlanguageSelector = class extends HTMLElement {
2403
2403
  constructor() {
2404
2404
  super();
2405
2405
  this.__registerHost();
2406
+ this.setLanguage = createEvent(this, "setLanguage", 7);
2406
2407
  /* Current language code */
2407
2408
  this.value = "";
2408
2409
  this.selectedLanguageName = "";
@@ -2442,6 +2443,7 @@ let PnlanguageSelector = class extends HTMLElement {
2442
2443
  onSetCurrentLanguage(option) {
2443
2444
  this.value = option.code;
2444
2445
  this.selectedLanguageName = option.name;
2446
+ this.setLanguage.emit(this.value);
2445
2447
  }
2446
2448
  setTranslations() {
2447
2449
  if (translations$5[this.value]) {
@@ -3162,6 +3164,10 @@ let PnMarketwebSiteheader$1 = class extends HTMLElement {
3162
3164
  this.hideSearch = false;
3163
3165
  /** Hides the login if set to true*/
3164
3166
  this.hideLogin = false;
3167
+ /** Forward session to backend */
3168
+ this.sessionForward = false;
3169
+ /** Event based only language switch */
3170
+ this.spaMode = false;
3165
3171
  this.gotData = false;
3166
3172
  this.fetchingData = false;
3167
3173
  // Menu state
@@ -3202,11 +3208,6 @@ let PnMarketwebSiteheader$1 = class extends HTMLElement {
3202
3208
  this.endpoint = "";
3203
3209
  }
3204
3210
  }
3205
- // TODO
3206
- //* Expose market and language attributes when changed internally
3207
- //* Business logic to select market and language depending on domains / html tag.
3208
- //* Property to stop language change from changeing url, throw an event instead.
3209
- //* Fetch new data when langauge or market is changed
3210
3211
  async init() {
3211
3212
  this.setTranslations();
3212
3213
  await this.fetchData();
@@ -3217,6 +3218,9 @@ let PnMarketwebSiteheader$1 = class extends HTMLElement {
3217
3218
  this.i18n = translations$2[this.language];
3218
3219
  }
3219
3220
  }
3221
+ onLanguageSelectorChange(e) {
3222
+ this.language = e.detail;
3223
+ }
3220
3224
  onLanguageChange() {
3221
3225
  this.setTranslations();
3222
3226
  this.changeLanguage.emit(this.language);
@@ -3236,9 +3240,12 @@ let PnMarketwebSiteheader$1 = class extends HTMLElement {
3236
3240
  const fetchUrl = `${endpointBase}${this.endpointPath}?market=${this.market}&language=${this.language}`;
3237
3241
  const response = await fetch(fetchUrl);
3238
3242
  const data = await response.json();
3239
- this.setStateFromData(data);
3243
+ await this.setStateFromData(data);
3240
3244
  }
3241
3245
  getLanguageVersionUrl(item) {
3246
+ if (this.spaMode) {
3247
+ return null;
3248
+ }
3242
3249
  const alternativeTag = document.querySelector(`link[rel="alternate"][hreflang="${item.twoLetterISOLanguageName}"]`);
3243
3250
  if (alternativeTag) {
3244
3251
  return alternativeTag.getAttribute('href');
@@ -3247,7 +3254,7 @@ let PnMarketwebSiteheader$1 = class extends HTMLElement {
3247
3254
  // Add trailing slash to domain if it's missing
3248
3255
  return siteUrl + ((siteUrl.lastIndexOf("/") !== siteUrl.length - 1) ? "/" : "") + item.twoLetterISOLanguageName;
3249
3256
  }
3250
- setStateFromData(data) {
3257
+ async setStateFromData(data) {
3251
3258
  if (typeof data !== "object") {
3252
3259
  console.warn('Data was not valid', data);
3253
3260
  }
@@ -3271,10 +3278,26 @@ let PnMarketwebSiteheader$1 = class extends HTMLElement {
3271
3278
  // Set language selector
3272
3279
  this.languageSelector = data.languageSelectorViewModel;
3273
3280
  this.loginDialog = data.loginViewModel;
3281
+ await this.spaModeAdjustments();
3274
3282
  this.gotData = true;
3275
3283
  this.fetchingData = true;
3276
3284
  window.setTimeout(() => { this.checkMenuOverflow(); }, 100);
3277
3285
  }
3286
+ async spaModeAdjustments() {
3287
+ if (!this.spaMode) {
3288
+ return;
3289
+ }
3290
+ return;
3291
+ }
3292
+ onLoginStateChange(e) {
3293
+ var _a, _b;
3294
+ 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) {
3295
+ try {
3296
+ fetch('/api/userprofile/sync?token=' + e.detail.token);
3297
+ }
3298
+ catch (e) { }
3299
+ }
3300
+ }
3278
3301
  promotedItemId(item) {
3279
3302
  return "promo-" + item.linkText.replace(/[^A-Za-z0-9.\\\/]/igm, "");
3280
3303
  }
@@ -3319,7 +3342,7 @@ let PnMarketwebSiteheader$1 = class extends HTMLElement {
3319
3342
  return (h("pn-mainnav-link", { name: childitem.name, href: childitem.href, target: (_a = childitem.linkTarget) !== null && _a !== void 0 ? _a : "_self", linkid: childitem.trackingId }));
3320
3343
  })), (item.promotedMenuItems && item.promotedMenuItems.length > 0) &&
3321
3344
  h("pn-mainnav-list", { heading: item.promotedMenuItemsHeader }, item.promotedMenuItems.map((childitem) => (h("pn-mainnav-link", { href: childitem.href, name: childitem.linkText, target: childitem.openInNewWindow ? "_blank" : "_self", linkid: this.promotedItemId(childitem) })))))));
3322
- })), h("div", { slot: "footer", class: "siteheader-menu-footer" }, (this.gotData && this.loginDialog && !this.hideLogin) && (h("pn-marketweb-siteheader-login", { loginDialog: this.loginDialog, endpoint: this.endpoint, i18n: this.i18n })), (this.gotData && ((_h = this.languageSelector) === null || _h === void 0 ? void 0 : _h.languages)) && !this.hideLanguageSelector &&
3345
+ })), h("div", { slot: "footer", class: "siteheader-menu-footer" }, (this.gotData && this.loginDialog && !this.hideLogin) && (h("pn-marketweb-siteheader-login", { emitEvents: false, loginDialog: this.loginDialog, endpoint: this.endpoint, i18n: this.i18n })), (this.gotData && ((_h = this.languageSelector) === null || _h === void 0 ? void 0 : _h.languages)) && !this.hideLanguageSelector &&
3323
3346
  h("pn-language-selector", { value: this.language }, this.languageSelector.languages.map(language => h("pn-language-selector-option", { name: language.nativeName, code: language.twoLetterISOLanguageName, selected: language.isCurrent, url: this.getLanguageVersionUrl(language) }))), !this.hideSiteSelector &&
3324
3347
  h("pn-site-selector", { language: this.language }, (this.gotData && ((_j = this.siteSelector) === null || _j === void 0 ? void 0 : _j.currentSiteTitle)) &&
3325
3348
  h("pn-site-selector-item", { heading: this.siteSelector.currentSiteTitle, description: this.siteSelector.currentSiteDescription }), (this.gotData && ((_k = this.siteSelector) === null || _k === void 0 ? void 0 : _k.siteSelections)) && this.siteSelector.siteSelections.map((site) => h("pn-site-selector-item", { heading: site.linkText, description: site.linkDescription, url: site.pageLink, newwindow: site.openInNewWindow })))), h("div", { slot: "top", class: "siteheader-menu-top" }, h("pn-marketweb-siteheader-search", { search: this.search, "hide-search": this.hideSearch, i18n: this.i18n }))))), h("pn-marketweb-siteheader-search", { search: this.search, "hide-search": this.hideSearch, "show-only-link": this.minimizeSearch, i18n: this.i18n })))));
@@ -3443,10 +3466,11 @@ class PNLoginManager {
3443
3466
  const params = new URLSearchParams(window.location.search);
3444
3467
  if (params.get("oneTimeCode")) {
3445
3468
  const oneTimeCode = params.get("oneTimeCode");
3446
- this.getToken(oneTimeCode);
3447
- const currentHref = window.location.href;
3448
- const paramPrefix = (currentHref.indexOf('?oneTimeCode') !== -1) ? "?" : "&";
3449
- history.replaceState({}, document.querySelector('title').innerText, currentHref.replace(`${paramPrefix}oneTimeCode=${oneTimeCode}`, ''));
3469
+ this.exchangeToken(oneTimeCode).then(() => {
3470
+ const currentHref = window.location.href;
3471
+ const paramPrefix = (currentHref.indexOf('?oneTimeCode') !== -1) ? "?" : "&";
3472
+ history.replaceState({}, document.querySelector('title').innerText, currentHref.replace(`${paramPrefix}oneTimeCode=${oneTimeCode}`, ''));
3473
+ });
3450
3474
  }
3451
3475
  }
3452
3476
  async fetchUserInfo() {
@@ -3482,7 +3506,10 @@ class PNLoginManager {
3482
3506
  this.store.remove(this.keys.expire);
3483
3507
  this.store.remove(this.keys.expireDate);
3484
3508
  }
3485
- async getToken(oneTimeCode) {
3509
+ getToken() {
3510
+ return this.store.get(this.keys.token);
3511
+ }
3512
+ async exchangeToken(oneTimeCode) {
3486
3513
  this.clearUserData();
3487
3514
  const response = await fetch(`${this.getBaseUrl()}${this.endpoints.tokenExchangeEndpoint}?oneTimeCode=${oneTimeCode}`);
3488
3515
  const { token } = await response.json();
@@ -3523,8 +3550,10 @@ let PnMarketwebSiteheaderLogin$1 = class extends HTMLElement {
3523
3550
  constructor() {
3524
3551
  super();
3525
3552
  this.__registerHost();
3553
+ this.loginStateChange = createEvent(this, "loginStateChange", 7);
3526
3554
  /** Specifies which endpoint domain we should load from */
3527
3555
  this.endpoint = "";
3556
+ this.emitEvents = true;
3528
3557
  // Login dialog
3529
3558
  this.loginDialog = null;
3530
3559
  this.loginManager = null;
@@ -3533,11 +3562,12 @@ let PnMarketwebSiteheaderLogin$1 = class extends HTMLElement {
3533
3562
  }
3534
3563
  componentWillLoad() {
3535
3564
  this.loginManager = new PNLoginManager({ endpoint: this.endpoint, eventTarget: this.hostElement });
3565
+ this.hostElement["loginmanager"] = this.loginManager;
3566
+ this.hostElement.addEventListener(this.loginManager.events.loginstatechange, this.onLoginStateChange.bind(this));
3536
3567
  this.init();
3537
3568
  }
3538
3569
  async init() {
3539
3570
  this.toggleButtonText = this.loginDialog.loginMenuLinkText;
3540
- this.hostElement.addEventListener(this.loginManager.events.loginstatechange, this.onLoginStateChange.bind(this));
3541
3571
  this.loginManager.init();
3542
3572
  this.setToggleButtonText();
3543
3573
  }
@@ -3556,8 +3586,11 @@ let PnMarketwebSiteheaderLogin$1 = class extends HTMLElement {
3556
3586
  }
3557
3587
  }
3558
3588
  onLoginStateChange(e) {
3559
- this.loggedIn = e.detail;
3560
- this.setToggleButtonText();
3589
+ if (this.loggedIn !== e.detail && this.emitEvents) {
3590
+ this.loggedIn = e.detail;
3591
+ this.loginStateChange.emit({ loggedIn: this.loggedIn, token: this.loginManager.getToken() });
3592
+ this.setToggleButtonText();
3593
+ }
3561
3594
  }
3562
3595
  render() {
3563
3596
  var _a, _b, _c;
@@ -3575,7 +3608,7 @@ let PnMarketwebSiteheaderLogin$1 = class extends HTMLElement {
3575
3608
  :
3576
3609
  h("div", null, h("ul", null, this.loginDialog.loggedInLinks.map((link) => {
3577
3610
  const isLogoutLink = link.href.indexOf('logout');
3578
- const href = (isLogoutLink) ? this.loginManager.getLogoutUrl(link.href.replace('logout', '')) : link.href;
3611
+ const href = (isLogoutLink) ? this.loginManager.getLogoutUrl(link.href.replace('logout', '').replace('http://window.location.href/?', '').replace('https://window.location.href/?', '')) : link.href;
3579
3612
  return (h("li", null, h("a", Object.assign({ href: href }, (link.openInNewWindow && { target: '_blank' })), h("pn-button", { appearance: (link.primaryLinkApperance ? "dark" : "light"), onClick: () => {
3580
3613
  if (isLogoutLink) {
3581
3614
  this.loginManager.clearUserData();
@@ -4227,15 +4260,15 @@ const PnFilterCheckbox = /*@__PURE__*/proxyCustomElement(PnFilterCheckbox$1, [1,
4227
4260
  const PnFilterSearch = /*@__PURE__*/proxyCustomElement(PnFilterSearch$1, [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"]]]);
4228
4261
  const PnFindServiceAndPrice = /*@__PURE__*/proxyCustomElement(PnfindServiceAndPrice, [0,"pn-find-service-and-price",{"source":[1],"language":[1025],"market":[1025],"filteredItems":[32],"postagetype":[32],"weight":[32],"weightvalue":[32],"deliveryscope":[32],"sourceData":[32]}]);
4229
4262
  const PnFindServiceAndPriceResult = /*@__PURE__*/proxyCustomElement(PnfindServiceAndPriceResult, [0,"pn-find-service-and-price-result",{"item":[1040],"shownitems":[16],"weightText":[32]}]);
4230
- const PnLanguageSelector = /*@__PURE__*/proxyCustomElement(PnlanguageSelector, [4,"pn-language-selector",{"value":[513],"selectedLanguageName":[32],"options":[32],"i18n":[32]}]);
4263
+ const PnLanguageSelector = /*@__PURE__*/proxyCustomElement(PnlanguageSelector, [4,"pn-language-selector",{"value":[1537],"selectedLanguageName":[32],"options":[32],"i18n":[32]}]);
4231
4264
  const PnLanguageSelectorOption = /*@__PURE__*/proxyCustomElement(PnlanguageSelectorOption, [0,"pn-language-selector-option",{"name":[1],"code":[1],"url":[1],"selected":[4],"currentLanguage":[1,"current-language"]}]);
4232
4265
  const PnMainnav = /*@__PURE__*/proxyCustomElement(PnMainnav$1, [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"]]]);
4233
4266
  const PnMainnavLevel = /*@__PURE__*/proxyCustomElement(PnMainnavLevel$1, [4,"pn-mainnav-level",{"level":[32],"levelId":[32],"isOpen":[32],"parentName":[32],"parentHref":[32],"parentLinkId":[32],"listCount":[32],"alignment":[32]}]);
4234
4267
  const PnMainnavLink = /*@__PURE__*/proxyCustomElement(PnMainnavLink$1, [4,"pn-mainnav-link",{"name":[1],"href":[1],"target":[1],"linkid":[1],"levelId":[32],"open":[32],"hasChildren":[32]}]);
4235
4268
  const PnMainnavList = /*@__PURE__*/proxyCustomElement(PnMainnavList$1, [4,"pn-mainnav-list",{"heading":[1],"linkCount":[32]}]);
4236
4269
  const PnMarketwebSitefooter = /*@__PURE__*/proxyCustomElement(PnMarketwebSiteheader$2, [0,"pn-marketweb-sitefooter",{"market":[1537],"language":[1537],"environment":[1537],"endpoint":[1],"siteDefinition":[32],"footerContent":[32],"i18n":[32],"gotData":[32],"fetchingData":[32]}]);
4237
- 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"],"i18n":[32],"gotData":[32],"fetchingData":[32],"menuItems":[32],"siteDefinition":[32],"search":[32],"siteSelector":[32],"languageSelector":[32],"loginDialog":[32],"minimizeSearch":[32]},[[9,"resize","handleResize"]]]);
4238
- const PnMarketwebSiteheaderLogin = /*@__PURE__*/proxyCustomElement(PnMarketwebSiteheaderLogin$1, [0,"pn-marketweb-siteheader-login",{"endpoint":[1],"i18n":[8,"i-1-8n"],"loginDialog":[1040],"loginManager":[32],"loggedIn":[32],"toggleButtonText":[32]}]);
4270
+ 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"],"spaMode":[4,"spa-mode"],"i18n":[32],"gotData":[32],"fetchingData":[32],"menuItems":[32],"siteDefinition":[32],"search":[32],"siteSelector":[32],"languageSelector":[32],"loginDialog":[32],"minimizeSearch":[32]},[[0,"setLanguage","onLanguageSelectorChange"],[0,"loginStateChange","onLoginStateChange"],[9,"resize","handleResize"]]]);
4271
+ 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]}]);
4239
4272
  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]}]);
4240
4273
  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]}]);
4241
4274
  const PnProductPricelistResult = /*@__PURE__*/proxyCustomElement(PnFindProductPricelistResult, [0,"pn-product-pricelist-result",{"item":[1040],"shownitems":[16],"weightText":[32]}]);
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"],"i18n":[32],"gotData":[32],"fetchingData":[32],"menuItems":[32],"siteDefinition":[32],"search":[32],"siteSelector":[32],"languageSelector":[32],"loginDialog":[32],"minimizeSearch":[32]},[[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],"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-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-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":[513],"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"],"loginDialog":[1040],"loginManager":[32],"loggedIn":[32],"toggleButtonText":[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]}]]],["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]}]]]], options);
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"],"spaMode":[4,"spa-mode"],"i18n":[32],"gotData":[32],"fetchingData":[32],"menuItems":[32],"siteDefinition":[32],"search":[32],"siteSelector":[32],"languageSelector":[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],"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-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-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]}],[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]}]]],["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]}]]]], options);
14
14
  });
15
15
  };
16
16
 
@@ -1,4 +1,4 @@
1
- import { r as registerInstance, h, a as Host, g as getElement, c as createEvent } from './index-1537f439.js';
1
+ import { r as registerInstance, c as createEvent, h, a as Host, g as getElement } from './index-1537f439.js';
2
2
  import { s as state, o as onChange } from './pn-mainnav-store-8e518460.js';
3
3
  import './index-e34aec9d.js';
4
4
 
@@ -25,6 +25,7 @@ const pnLanguageSelectorCss = ".languageselector{position:relative}.languagesele
25
25
  let PnlanguageSelector = class {
26
26
  constructor(hostRef) {
27
27
  registerInstance(this, hostRef);
28
+ this.setLanguage = createEvent(this, "setLanguage", 7);
28
29
  /* Current language code */
29
30
  this.value = "";
30
31
  this.selectedLanguageName = "";
@@ -64,6 +65,7 @@ let PnlanguageSelector = class {
64
65
  onSetCurrentLanguage(option) {
65
66
  this.value = option.code;
66
67
  this.selectedLanguageName = option.name;
68
+ this.setLanguage.emit(this.value);
67
69
  }
68
70
  setTranslations() {
69
71
  if (translations$1[this.value]) {
@@ -422,10 +424,11 @@ class PNLoginManager {
422
424
  const params = new URLSearchParams(window.location.search);
423
425
  if (params.get("oneTimeCode")) {
424
426
  const oneTimeCode = params.get("oneTimeCode");
425
- this.getToken(oneTimeCode);
426
- const currentHref = window.location.href;
427
- const paramPrefix = (currentHref.indexOf('?oneTimeCode') !== -1) ? "?" : "&";
428
- history.replaceState({}, document.querySelector('title').innerText, currentHref.replace(`${paramPrefix}oneTimeCode=${oneTimeCode}`, ''));
427
+ this.exchangeToken(oneTimeCode).then(() => {
428
+ const currentHref = window.location.href;
429
+ const paramPrefix = (currentHref.indexOf('?oneTimeCode') !== -1) ? "?" : "&";
430
+ history.replaceState({}, document.querySelector('title').innerText, currentHref.replace(`${paramPrefix}oneTimeCode=${oneTimeCode}`, ''));
431
+ });
429
432
  }
430
433
  }
431
434
  async fetchUserInfo() {
@@ -461,7 +464,10 @@ class PNLoginManager {
461
464
  this.store.remove(this.keys.expire);
462
465
  this.store.remove(this.keys.expireDate);
463
466
  }
464
- async getToken(oneTimeCode) {
467
+ getToken() {
468
+ return this.store.get(this.keys.token);
469
+ }
470
+ async exchangeToken(oneTimeCode) {
465
471
  this.clearUserData();
466
472
  const response = await fetch(`${this.getBaseUrl()}${this.endpoints.tokenExchangeEndpoint}?oneTimeCode=${oneTimeCode}`);
467
473
  const { token } = await response.json();
@@ -501,8 +507,10 @@ const pnMarketwebSiteheaderLoginCss = "pn-marketweb-siteheader-login{padding:1re
501
507
  let PnMarketwebSiteheaderLogin = class {
502
508
  constructor(hostRef) {
503
509
  registerInstance(this, hostRef);
510
+ this.loginStateChange = createEvent(this, "loginStateChange", 7);
504
511
  /** Specifies which endpoint domain we should load from */
505
512
  this.endpoint = "";
513
+ this.emitEvents = true;
506
514
  // Login dialog
507
515
  this.loginDialog = null;
508
516
  this.loginManager = null;
@@ -511,11 +519,12 @@ let PnMarketwebSiteheaderLogin = class {
511
519
  }
512
520
  componentWillLoad() {
513
521
  this.loginManager = new PNLoginManager({ endpoint: this.endpoint, eventTarget: this.hostElement });
522
+ this.hostElement["loginmanager"] = this.loginManager;
523
+ this.hostElement.addEventListener(this.loginManager.events.loginstatechange, this.onLoginStateChange.bind(this));
514
524
  this.init();
515
525
  }
516
526
  async init() {
517
527
  this.toggleButtonText = this.loginDialog.loginMenuLinkText;
518
- this.hostElement.addEventListener(this.loginManager.events.loginstatechange, this.onLoginStateChange.bind(this));
519
528
  this.loginManager.init();
520
529
  this.setToggleButtonText();
521
530
  }
@@ -534,8 +543,11 @@ let PnMarketwebSiteheaderLogin = class {
534
543
  }
535
544
  }
536
545
  onLoginStateChange(e) {
537
- this.loggedIn = e.detail;
538
- this.setToggleButtonText();
546
+ if (this.loggedIn !== e.detail && this.emitEvents) {
547
+ this.loggedIn = e.detail;
548
+ this.loginStateChange.emit({ loggedIn: this.loggedIn, token: this.loginManager.getToken() });
549
+ this.setToggleButtonText();
550
+ }
539
551
  }
540
552
  render() {
541
553
  var _a, _b, _c;
@@ -553,7 +565,7 @@ let PnMarketwebSiteheaderLogin = class {
553
565
  :
554
566
  h("div", null, h("ul", null, this.loginDialog.loggedInLinks.map((link) => {
555
567
  const isLogoutLink = link.href.indexOf('logout');
556
- const href = (isLogoutLink) ? this.loginManager.getLogoutUrl(link.href.replace('logout', '')) : link.href;
568
+ const href = (isLogoutLink) ? this.loginManager.getLogoutUrl(link.href.replace('logout', '').replace('http://window.location.href/?', '').replace('https://window.location.href/?', '')) : link.href;
557
569
  return (h("li", null, h("a", Object.assign({ href: href }, (link.openInNewWindow && { target: '_blank' })), h("pn-button", { appearance: (link.primaryLinkApperance ? "dark" : "light"), onClick: () => {
558
570
  if (isLogoutLink) {
559
571
  this.loginManager.clearUserData();
@@ -53,5 +53,5 @@ const patchCloneNodeFix = (HTMLElementPrototype) => {
53
53
  };
54
54
 
55
55
  patchBrowser().then(options => {
56
- 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"],"i18n":[32],"gotData":[32],"fetchingData":[32],"menuItems":[32],"siteDefinition":[32],"search":[32],"siteSelector":[32],"languageSelector":[32],"loginDialog":[32],"minimizeSearch":[32]},[[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],"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-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-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":[513],"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"],"loginDialog":[1040],"loginManager":[32],"loggedIn":[32],"toggleButtonText":[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]}]]],["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]}]]]], options);
56
+ 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"],"spaMode":[4,"spa-mode"],"i18n":[32],"gotData":[32],"fetchingData":[32],"menuItems":[32],"siteDefinition":[32],"search":[32],"siteSelector":[32],"languageSelector":[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],"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-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-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]}],[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]}]]],["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]}]]]], options);
57
57
  });
@@ -75,6 +75,10 @@ let PnMarketwebSiteheader = class {
75
75
  this.hideSearch = false;
76
76
  /** Hides the login if set to true*/
77
77
  this.hideLogin = false;
78
+ /** Forward session to backend */
79
+ this.sessionForward = false;
80
+ /** Event based only language switch */
81
+ this.spaMode = false;
78
82
  this.gotData = false;
79
83
  this.fetchingData = false;
80
84
  // Menu state
@@ -115,11 +119,6 @@ let PnMarketwebSiteheader = class {
115
119
  this.endpoint = "";
116
120
  }
117
121
  }
118
- // TODO
119
- //* Expose market and language attributes when changed internally
120
- //* Business logic to select market and language depending on domains / html tag.
121
- //* Property to stop language change from changeing url, throw an event instead.
122
- //* Fetch new data when langauge or market is changed
123
122
  async init() {
124
123
  this.setTranslations();
125
124
  await this.fetchData();
@@ -130,6 +129,9 @@ let PnMarketwebSiteheader = class {
130
129
  this.i18n = translations[this.language];
131
130
  }
132
131
  }
132
+ onLanguageSelectorChange(e) {
133
+ this.language = e.detail;
134
+ }
133
135
  onLanguageChange() {
134
136
  this.setTranslations();
135
137
  this.changeLanguage.emit(this.language);
@@ -149,9 +151,12 @@ let PnMarketwebSiteheader = class {
149
151
  const fetchUrl = `${endpointBase}${this.endpointPath}?market=${this.market}&language=${this.language}`;
150
152
  const response = await fetch(fetchUrl);
151
153
  const data = await response.json();
152
- this.setStateFromData(data);
154
+ await this.setStateFromData(data);
153
155
  }
154
156
  getLanguageVersionUrl(item) {
157
+ if (this.spaMode) {
158
+ return null;
159
+ }
155
160
  const alternativeTag = document.querySelector(`link[rel="alternate"][hreflang="${item.twoLetterISOLanguageName}"]`);
156
161
  if (alternativeTag) {
157
162
  return alternativeTag.getAttribute('href');
@@ -160,7 +165,7 @@ let PnMarketwebSiteheader = class {
160
165
  // Add trailing slash to domain if it's missing
161
166
  return siteUrl + ((siteUrl.lastIndexOf("/") !== siteUrl.length - 1) ? "/" : "") + item.twoLetterISOLanguageName;
162
167
  }
163
- setStateFromData(data) {
168
+ async setStateFromData(data) {
164
169
  if (typeof data !== "object") {
165
170
  console.warn('Data was not valid', data);
166
171
  }
@@ -184,10 +189,26 @@ let PnMarketwebSiteheader = class {
184
189
  // Set language selector
185
190
  this.languageSelector = data.languageSelectorViewModel;
186
191
  this.loginDialog = data.loginViewModel;
192
+ await this.spaModeAdjustments();
187
193
  this.gotData = true;
188
194
  this.fetchingData = true;
189
195
  window.setTimeout(() => { this.checkMenuOverflow(); }, 100);
190
196
  }
197
+ async spaModeAdjustments() {
198
+ if (!this.spaMode) {
199
+ return;
200
+ }
201
+ return;
202
+ }
203
+ onLoginStateChange(e) {
204
+ var _a, _b;
205
+ 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) {
206
+ try {
207
+ fetch('/api/userprofile/sync?token=' + e.detail.token);
208
+ }
209
+ catch (e) { }
210
+ }
211
+ }
191
212
  promotedItemId(item) {
192
213
  return "promo-" + item.linkText.replace(/[^A-Za-z0-9.\\\/]/igm, "");
193
214
  }
@@ -232,7 +253,7 @@ let PnMarketwebSiteheader = class {
232
253
  return (h("pn-mainnav-link", { name: childitem.name, href: childitem.href, target: (_a = childitem.linkTarget) !== null && _a !== void 0 ? _a : "_self", linkid: childitem.trackingId }));
233
254
  })), (item.promotedMenuItems && item.promotedMenuItems.length > 0) &&
234
255
  h("pn-mainnav-list", { heading: item.promotedMenuItemsHeader }, item.promotedMenuItems.map((childitem) => (h("pn-mainnav-link", { href: childitem.href, name: childitem.linkText, target: childitem.openInNewWindow ? "_blank" : "_self", linkid: this.promotedItemId(childitem) })))))));
235
- })), h("div", { slot: "footer", class: "siteheader-menu-footer" }, (this.gotData && this.loginDialog && !this.hideLogin) && (h("pn-marketweb-siteheader-login", { loginDialog: this.loginDialog, endpoint: this.endpoint, i18n: this.i18n })), (this.gotData && ((_h = this.languageSelector) === null || _h === void 0 ? void 0 : _h.languages)) && !this.hideLanguageSelector &&
256
+ })), h("div", { slot: "footer", class: "siteheader-menu-footer" }, (this.gotData && this.loginDialog && !this.hideLogin) && (h("pn-marketweb-siteheader-login", { emitEvents: false, loginDialog: this.loginDialog, endpoint: this.endpoint, i18n: this.i18n })), (this.gotData && ((_h = this.languageSelector) === null || _h === void 0 ? void 0 : _h.languages)) && !this.hideLanguageSelector &&
236
257
  h("pn-language-selector", { value: this.language }, this.languageSelector.languages.map(language => h("pn-language-selector-option", { name: language.nativeName, code: language.twoLetterISOLanguageName, selected: language.isCurrent, url: this.getLanguageVersionUrl(language) }))), !this.hideSiteSelector &&
237
258
  h("pn-site-selector", { language: this.language }, (this.gotData && ((_j = this.siteSelector) === null || _j === void 0 ? void 0 : _j.currentSiteTitle)) &&
238
259
  h("pn-site-selector-item", { heading: this.siteSelector.currentSiteTitle, description: this.siteSelector.currentSiteDescription }), (this.gotData && ((_k = this.siteSelector) === null || _k === void 0 ? void 0 : _k.siteSelections)) && this.siteSelector.siteSelections.map((site) => h("pn-site-selector-item", { heading: site.linkText, description: site.linkDescription, url: site.pageLink, newwindow: site.openInNewWindow })))), h("div", { slot: "top", class: "siteheader-menu-top" }, h("pn-marketweb-siteheader-search", { search: this.search, "hide-search": this.hideSearch, i18n: this.i18n }))))), h("pn-marketweb-siteheader-search", { search: this.search, "hide-search": this.hideSearch, "show-only-link": this.minimizeSearch, i18n: this.i18n })))));
package/esm-es5/loader.js CHANGED
@@ -1 +1 @@
1
- import{p as promiseResolve,b as bootstrapLazy}from"./index-1537f439.js";var patchEsm=function(){return promiseResolve()};var defineCustomElements=function(e,n){if(typeof window==="undefined")return Promise.resolve();return patchEsm().then((function(){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"],i18n:[32],gotData:[32],fetchingData:[32],menuItems:[32],siteDefinition:[32],search:[32],siteSelector:[32],languageSelector:[32],loginDialog:[32],minimizeSearch:[32]},[[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],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-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-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:[513],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"],loginDialog:[1040],loginManager:[32],loggedIn:[32],toggleButtonText:[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]}]]],["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]}]]]],n)}))};export{defineCustomElements};
1
+ import{p as promiseResolve,b as bootstrapLazy}from"./index-1537f439.js";var patchEsm=function(){return promiseResolve()};var defineCustomElements=function(e,n){if(typeof window==="undefined")return Promise.resolve();return patchEsm().then((function(){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"],spaMode:[4,"spa-mode"],i18n:[32],gotData:[32],fetchingData:[32],menuItems:[32],siteDefinition:[32],search:[32],siteSelector:[32],languageSelector:[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],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-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-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]}],[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]}]]],["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]}]]]],n)}))};export{defineCustomElements};