@postnord/pn-marketweb-components 1.0.33 → 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 (71) hide show
  1. package/cjs/FetchHelper-f80943bf.js +87 -0
  2. package/cjs/{MarketWebLoginManager-8b675eb4.js → MarketWebLoginManager-859590e2.js} +8 -0
  3. package/cjs/loader.cjs.js +1 -1
  4. package/cjs/pn-language-selector_9.cjs.entry.js +6 -1
  5. package/cjs/pn-mainnav-link.cjs.entry.js +1 -1
  6. package/cjs/pn-market-web-components.cjs.js +1 -1
  7. package/cjs/pn-marketweb-sitefooter.cjs.entry.js +15 -2
  8. package/cjs/pn-marketweb-siteheader.cjs.entry.js +48 -22
  9. package/cjs/pn-profile-selector.cjs.entry.js +21 -13
  10. package/collection/components/layout-components/pn-marketweb-sitefooter/pn-marketweb-sitefooter.js +33 -2
  11. package/collection/components/layout-components/pn-marketweb-sitefooter/pn-marketweb-sitefooter.stories.js +3 -3
  12. package/collection/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader-login.js +23 -0
  13. package/collection/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader.js +96 -25
  14. package/collection/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader.stories.js +46 -2
  15. package/collection/components/navigation/pn-mainnav/pn-mainnav-link.js +1 -1
  16. package/collection/components/navigation/pn-profile-selector/pn-profile-selector.js +26 -18
  17. package/collection/globals/FetchHelper.js +84 -0
  18. package/collection/globals/MarketWebLoginManager.js +8 -0
  19. package/custom-elements/index.js +373 -232
  20. package/esm/FetchHelper-a0c8aa54.js +85 -0
  21. package/esm/{MarketWebLoginManager-dd7ac023.js → MarketWebLoginManager-83f2e86a.js} +8 -0
  22. package/esm/loader.js +1 -1
  23. package/esm/pn-language-selector_9.entry.js +6 -1
  24. package/esm/pn-mainnav-link.entry.js +1 -1
  25. package/esm/pn-market-web-components.js +1 -1
  26. package/esm/pn-marketweb-sitefooter.entry.js +15 -2
  27. package/esm/pn-marketweb-siteheader.entry.js +48 -22
  28. package/esm/pn-profile-selector.entry.js +21 -13
  29. package/esm-es5/FetchHelper-a0c8aa54.js +1 -0
  30. package/esm-es5/MarketWebLoginManager-83f2e86a.js +1 -0
  31. package/esm-es5/loader.js +1 -1
  32. package/esm-es5/pn-language-selector_9.entry.js +1 -1
  33. package/esm-es5/pn-mainnav-link.entry.js +1 -1
  34. package/esm-es5/pn-market-web-components.js +1 -1
  35. package/esm-es5/pn-marketweb-sitefooter.entry.js +1 -1
  36. package/esm-es5/pn-marketweb-siteheader.entry.js +1 -1
  37. package/esm-es5/pn-profile-selector.entry.js +1 -1
  38. package/package.json +1 -1
  39. package/pn-market-web-components/{p-ffdf87ee.entry.js → p-03fb0285.entry.js} +1 -1
  40. package/pn-market-web-components/p-1649b94a.entry.js +1 -0
  41. package/pn-market-web-components/p-25bdf3f8.system.js +1 -1
  42. package/pn-market-web-components/p-4921fcc3.entry.js +1 -0
  43. package/pn-market-web-components/p-58cdf3a6.system.js +1 -0
  44. package/pn-market-web-components/p-5f256546.entry.js +1 -0
  45. package/pn-market-web-components/p-6db8065f.system.entry.js +1 -0
  46. package/pn-market-web-components/{p-6a32362d.system.entry.js → p-7b4c721f.system.entry.js} +1 -1
  47. package/pn-market-web-components/p-97dc5687.js +1 -0
  48. package/pn-market-web-components/p-a983c263.system.entry.js +1 -0
  49. package/pn-market-web-components/p-c254cfdf.js +1 -0
  50. package/pn-market-web-components/p-d6a17042.system.js +1 -0
  51. package/pn-market-web-components/p-daa6ddb3.system.entry.js +1 -0
  52. package/pn-market-web-components/p-dc471243.entry.js +1 -0
  53. package/pn-market-web-components/{p-251d44f2.system.entry.js → p-e3fb52a6.system.entry.js} +1 -1
  54. package/pn-market-web-components/pn-market-web-components.esm.js +1 -1
  55. package/types/components/layout-components/pn-marketweb-sitefooter/pn-marketweb-sitefooter.d.ts +5 -0
  56. package/types/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader-login.d.ts +2 -0
  57. package/types/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader.d.ts +12 -0
  58. package/types/components/navigation/pn-profile-selector/pn-profile-selector.d.ts +2 -1
  59. package/types/components.d.ts +34 -2
  60. package/types/globals/FetchHelper.d.ts +17 -0
  61. package/types/globals/MarketWebLoginManager.d.ts +1 -0
  62. package/esm-es5/MarketWebLoginManager-dd7ac023.js +0 -1
  63. package/pn-market-web-components/p-031d91aa.entry.js +0 -1
  64. package/pn-market-web-components/p-134f14eb.system.entry.js +0 -1
  65. package/pn-market-web-components/p-37efd029.entry.js +0 -1
  66. package/pn-market-web-components/p-4dcea578.js +0 -1
  67. package/pn-market-web-components/p-51768dc0.system.js +0 -1
  68. package/pn-market-web-components/p-6057d70d.entry.js +0 -1
  69. package/pn-market-web-components/p-8cbd5b61.system.entry.js +0 -1
  70. package/pn-market-web-components/p-db7419be.system.entry.js +0 -1
  71. package/pn-market-web-components/p-e220ea83.entry.js +0 -1
@@ -0,0 +1,87 @@
1
+ 'use strict';
2
+
3
+ class FetchHelper {
4
+ constructor(namespace = "") {
5
+ this.storagePrefix = "";
6
+ this.store = {
7
+ get: (key, permanentStorageFirst = false) => {
8
+ const firstProfider = permanentStorageFirst ? window.localStorage : window.sessionStorage;
9
+ const secondProvider = permanentStorageFirst ? window.sessionStorage : window.localStorage;
10
+ let value = firstProfider.getItem(`${this.storagePrefix}-${key}`);
11
+ if (!value) {
12
+ value = secondProvider.getItem(`${this.storagePrefix}-${key}`);
13
+ }
14
+ if (!value) {
15
+ return value;
16
+ }
17
+ if (value.indexOf('{') === 0) {
18
+ try {
19
+ return JSON.parse(value);
20
+ }
21
+ catch (e) {
22
+ }
23
+ }
24
+ if (value.indexOf(',') !== -1) {
25
+ return value.split(',');
26
+ }
27
+ return value;
28
+ },
29
+ set: (key, value, permanent = false) => {
30
+ const provider = permanent ? window.localStorage : window.sessionStorage;
31
+ if (typeof value === "object" && typeof value.length === "undefined") {
32
+ provider.setItem(`${this.storagePrefix}-${key}`, JSON.stringify(value));
33
+ return;
34
+ }
35
+ provider.setItem(`${this.storagePrefix}-${key}`, value);
36
+ },
37
+ remove: (key) => {
38
+ window.sessionStorage.removeItem(`${this.storagePrefix}-${key}`);
39
+ },
40
+ };
41
+ this.storagePrefix = namespace;
42
+ }
43
+ async fetchJson(input, init = {}, useCache = false, onCacheUpdated = null) {
44
+ const requestPromise = new Promise(async (resolve) => {
45
+ let doFetchRequest = true;
46
+ const url = (typeof input === "string") ? input : input.url;
47
+ const cacheKey = url;
48
+ let jsonData = null;
49
+ let cachedData = null;
50
+ if (useCache) {
51
+ cachedData = this.store.get(cacheKey);
52
+ // If the data was stored in session storage, then we don't need to do a full request
53
+ if (cachedData && !cachedData.permanent) {
54
+ doFetchRequest = false;
55
+ }
56
+ if (cachedData && cachedData.data) {
57
+ jsonData = cachedData.data;
58
+ resolve(jsonData);
59
+ }
60
+ }
61
+ if (doFetchRequest) {
62
+ const response = await window.fetch(input, init);
63
+ jsonData = await response.json();
64
+ resolve(jsonData);
65
+ if (useCache) {
66
+ if (typeof onCacheUpdated === "function" && cachedData != null) {
67
+ onCacheUpdated(jsonData);
68
+ }
69
+ this.store.set(cacheKey, this.wrapJson(jsonData, true), true);
70
+ this.store.set(cacheKey, this.wrapJson(jsonData, false), false);
71
+ }
72
+ }
73
+ });
74
+ return requestPromise;
75
+ }
76
+ wrapJson(data, permanent = false) {
77
+ const now = new Date();
78
+ return {
79
+ timestamp: now.getTime(),
80
+ time: now.toISOString(),
81
+ data: data,
82
+ permanent: permanent
83
+ };
84
+ }
85
+ }
86
+
87
+ exports.FetchHelper = FetchHelper;
@@ -75,6 +75,14 @@ class MarketWebLoginManager {
75
75
  const isLoggedIn = (this.store.get(this.keys.token) && this.store.get(this.keys.user)) ? true : false;
76
76
  return isLoggedIn;
77
77
  }
78
+ registerToken(token) {
79
+ if (!token || token === this.getToken()) {
80
+ return;
81
+ }
82
+ this.clearUserData();
83
+ this.store.set(this.keys.token, token);
84
+ this.fetchUserInfo();
85
+ }
78
86
  getLoginUrl(redirectPage = "") {
79
87
  const currentPage = window.location.href;
80
88
  redirectPage = redirectPage ? redirectPage : currentPage;
package/cjs/loader.cjs.js CHANGED
@@ -14,7 +14,7 @@ const patchEsm = () => {
14
14
  const defineCustomElements = (win, options) => {
15
15
  if (typeof window === 'undefined') return Promise.resolve();
16
16
  return patchEsm().then(() => {
17
- return index.bootstrapLazy([["pn-marketweb-siteheader.cjs",[[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],"languageOptions":[32],"loginDialog":[32],"minimizeSearch":[32]},[[0,"setLanguage","onLanguageSelectorChange"],[0,"loginStateChange","onLoginStateChange"],[9,"resize","handleResize"]]]]],["pn-find-service-and-price.cjs",[[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.cjs",[[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.cjs",[[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.cjs",[[1,"pn-filter-checkbox",{"value":[520],"name":[1],"checkboxid":[1],"disabled":[4],"checked":[4],"indeterminate":[1028]},[[0,"change","handlechange"]]]]],["pn-filter-search.cjs",[[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.cjs",[[0,"pn-profile-selector",{"language":[1537],"returnUrl":[1,"return-url"],"endpoint":[1],"loginManager":[32],"loggedIn":[32],"i18n":[32],"isLoading":[32],"numberOfProfiles":[32]}]]],["pn-sidenav.cjs",[[4,"pn-sidenav",{"language":[1],"navLabel":[1,"nav-label"],"i18n":[32]},[[0,"language","setLanguage"],[0,"openSubMenuLevelChange","onOpenSubMenuLevelChange"]]]]],["pn-sidenav-level.cjs",[[4,"pn-sidenav-level",{"level":[32],"levelId":[32],"isOpen":[32],"parentName":[32],"parentHref":[32],"parentLinkId":[32],"alignment":[32]}]]],["pn-sidenav-link.cjs",[[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.cjs",[[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.cjs",[[0,"pn-product-pricelist-result",{"item":[1040],"shownitems":[16],"weightText":[32]}]]],["pn-choice-button_2.cjs",[[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.cjs",[[4,"pn-site-footer",{"url":[1]}],[4,"pn-site-footer-col"]]],["pn-mainnav-link.cjs",[[4,"pn-mainnav-link",{"name":[1],"href":[1],"target":[1],"linkid":[1],"levelId":[32],"open":[32],"hasChildren":[32]}]]],["pn-language-selector_9.cjs",[[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);
17
+ return index.bootstrapLazy([["pn-marketweb-siteheader.cjs",[[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.cjs",[[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.cjs",[[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.cjs",[[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.cjs",[[1,"pn-filter-checkbox",{"value":[520],"name":[1],"checkboxid":[1],"disabled":[4],"checked":[4],"indeterminate":[1028]},[[0,"change","handlechange"]]]]],["pn-filter-search.cjs",[[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.cjs",[[0,"pn-profile-selector",{"language":[1537],"returnUrl":[1,"return-url"],"spamode":[4],"loginManager":[32],"loggedIn":[32],"i18n":[32],"isLoading":[32],"numberOfProfiles":[32]}]]],["pn-sidenav.cjs",[[4,"pn-sidenav",{"language":[1],"navLabel":[1,"nav-label"],"i18n":[32]},[[0,"language","setLanguage"],[0,"openSubMenuLevelChange","onOpenSubMenuLevelChange"]]]]],["pn-sidenav-level.cjs",[[4,"pn-sidenav-level",{"level":[32],"levelId":[32],"isOpen":[32],"parentName":[32],"parentHref":[32],"parentLinkId":[32],"alignment":[32]}]]],["pn-sidenav-link.cjs",[[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.cjs",[[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.cjs",[[0,"pn-product-pricelist-result",{"item":[1040],"shownitems":[16],"weightText":[32]}]]],["pn-choice-button_2.cjs",[[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.cjs",[[4,"pn-site-footer",{"url":[1]}],[4,"pn-site-footer-col"]]],["pn-mainnav-link.cjs",[[4,"pn-mainnav-link",{"name":[1],"href":[1],"target":[1],"linkid":[1],"levelId":[32],"open":[32],"hasChildren":[32]}]]],["pn-language-selector_9.cjs",[[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);
18
18
  });
19
19
  };
20
20
 
@@ -4,7 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  const index = require('./index-0404c97e.js');
6
6
  const pnMainnavStore = require('./pn-mainnav-store-87a95686.js');
7
- const MarketWebLoginManager = require('./MarketWebLoginManager-8b675eb4.js');
7
+ const MarketWebLoginManager = require('./MarketWebLoginManager-859590e2.js');
8
8
  require('./index-ea886985.js');
9
9
 
10
10
  const translations$1 = {
@@ -326,6 +326,8 @@ let PnMarketwebSiteheaderLogin = class {
326
326
  this.loginStateChange = index.createEvent(this, "loginStateChange", 7);
327
327
  /** Specifies which endpoint domain we should load from */
328
328
  this.endpoint = "";
329
+ /** Access token passed from backend */
330
+ this.token = "";
329
331
  this.emitEvents = true;
330
332
  // Login dialog
331
333
  this.loginDialog = null;
@@ -337,6 +339,9 @@ let PnMarketwebSiteheaderLogin = class {
337
339
  componentWillLoad() {
338
340
  this.loginManager = new MarketWebLoginManager.MarketWebLoginManager({ endpoint: this.endpoint, eventTarget: this.hostElement });
339
341
  this.hostElement["loginmanager"] = this.loginManager;
342
+ if (this.token) {
343
+ this.loginManager.registerToken(this.token);
344
+ }
340
345
  this.hostElement.addEventListener(this.loginManager.events.loginstatechange, this.onLoginStateChange.bind(this));
341
346
  this.init();
342
347
  }
@@ -36,7 +36,7 @@ let PnMainnavLink = class {
36
36
  pnMainnavStore.state.openLevel = (pnMainnavStore.state.openLevel + "" === this.levelId + "") ? '' : this.levelId;
37
37
  }
38
38
  render() {
39
- return (index.h(index.Host, { role: "listitem", name: this.name, href: this.href, linkid: this.linkid }, this.hasChildren ? (index.h("button", { onClick: this.setOpenMenuLevel.bind(this), "aria-controls": this.levelId, "aria-pressed": "", "aria-expanded": ((pnMainnavStore.state.openLevel + "" === this.levelId + "")) + '' }, this.name, index.h("pn-icon", { class: "first-level_icon", symbol: "angle-small-down", color: "blue700" }), index.h("pn-icon", { class: "first-level_arrow", symbol: "arrow-right", color: "blue700" }))) : (index.h("a", Object.assign({ href: this.href }, (this.target ? { target: this.target } : {}), (this.linkid ? { id: this.linkid } : {})), this.name, this.target === "_blank" ? (index.h("pn-icon", { symbol: "open-in-new", color: "blue700" })) : null)), index.h("slot", null)));
39
+ return (index.h(index.Host, { role: "listitem", name: this.name, href: this.href, linkid: this.linkid }, this.hasChildren ? (index.h("button", { onClick: this.setOpenMenuLevel.bind(this), "aria-controls": this.levelId, "aria-pressed": "", "aria-expanded": ((pnMainnavStore.state.openLevel + "" === this.levelId + "")) + '' }, this.name, index.h("pn-icon", { class: "first-level_icon", symbol: "angle-small-down", color: "blue700" }), index.h("pn-icon", { class: "first-level_arrow", symbol: "arrow-right", color: "blue700" }))) : (index.h("a", Object.assign({ href: this.href }, (this.target ? { target: this.target } : {}), (this.target === "_blank" ? { rel: "nofollow noopener" } : {}), (this.linkid ? { id: this.linkid } : {})), this.name, this.target === "_blank" ? (index.h("pn-icon", { symbol: "open-in-new", color: "blue700" })) : null)), index.h("slot", null)));
40
40
  }
41
41
  get hostElement() { return index.getElement(this); }
42
42
  };
@@ -55,5 +55,5 @@ const patchCloneNodeFix = (HTMLElementPrototype) => {
55
55
  };
56
56
 
57
57
  patchBrowser().then(options => {
58
- return index.bootstrapLazy([["pn-marketweb-siteheader.cjs",[[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],"languageOptions":[32],"loginDialog":[32],"minimizeSearch":[32]},[[0,"setLanguage","onLanguageSelectorChange"],[0,"loginStateChange","onLoginStateChange"],[9,"resize","handleResize"]]]]],["pn-find-service-and-price.cjs",[[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.cjs",[[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.cjs",[[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.cjs",[[1,"pn-filter-checkbox",{"value":[520],"name":[1],"checkboxid":[1],"disabled":[4],"checked":[4],"indeterminate":[1028]},[[0,"change","handlechange"]]]]],["pn-filter-search.cjs",[[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.cjs",[[0,"pn-profile-selector",{"language":[1537],"returnUrl":[1,"return-url"],"endpoint":[1],"loginManager":[32],"loggedIn":[32],"i18n":[32],"isLoading":[32],"numberOfProfiles":[32]}]]],["pn-sidenav.cjs",[[4,"pn-sidenav",{"language":[1],"navLabel":[1,"nav-label"],"i18n":[32]},[[0,"language","setLanguage"],[0,"openSubMenuLevelChange","onOpenSubMenuLevelChange"]]]]],["pn-sidenav-level.cjs",[[4,"pn-sidenav-level",{"level":[32],"levelId":[32],"isOpen":[32],"parentName":[32],"parentHref":[32],"parentLinkId":[32],"alignment":[32]}]]],["pn-sidenav-link.cjs",[[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.cjs",[[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.cjs",[[0,"pn-product-pricelist-result",{"item":[1040],"shownitems":[16],"weightText":[32]}]]],["pn-choice-button_2.cjs",[[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.cjs",[[4,"pn-site-footer",{"url":[1]}],[4,"pn-site-footer-col"]]],["pn-mainnav-link.cjs",[[4,"pn-mainnav-link",{"name":[1],"href":[1],"target":[1],"linkid":[1],"levelId":[32],"open":[32],"hasChildren":[32]}]]],["pn-language-selector_9.cjs",[[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);
58
+ return index.bootstrapLazy([["pn-marketweb-siteheader.cjs",[[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.cjs",[[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.cjs",[[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.cjs",[[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.cjs",[[1,"pn-filter-checkbox",{"value":[520],"name":[1],"checkboxid":[1],"disabled":[4],"checked":[4],"indeterminate":[1028]},[[0,"change","handlechange"]]]]],["pn-filter-search.cjs",[[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.cjs",[[0,"pn-profile-selector",{"language":[1537],"returnUrl":[1,"return-url"],"spamode":[4],"loginManager":[32],"loggedIn":[32],"i18n":[32],"isLoading":[32],"numberOfProfiles":[32]}]]],["pn-sidenav.cjs",[[4,"pn-sidenav",{"language":[1],"navLabel":[1,"nav-label"],"i18n":[32]},[[0,"language","setLanguage"],[0,"openSubMenuLevelChange","onOpenSubMenuLevelChange"]]]]],["pn-sidenav-level.cjs",[[4,"pn-sidenav-level",{"level":[32],"levelId":[32],"isOpen":[32],"parentName":[32],"parentHref":[32],"parentLinkId":[32],"alignment":[32]}]]],["pn-sidenav-link.cjs",[[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.cjs",[[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.cjs",[[0,"pn-product-pricelist-result",{"item":[1040],"shownitems":[16],"weightText":[32]}]]],["pn-choice-button_2.cjs",[[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.cjs",[[4,"pn-site-footer",{"url":[1]}],[4,"pn-site-footer-col"]]],["pn-mainnav-link.cjs",[[4,"pn-mainnav-link",{"name":[1],"href":[1],"target":[1],"linkid":[1],"levelId":[32],"open":[32],"hasChildren":[32]}]]],["pn-language-selector_9.cjs",[[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);
59
59
  });
@@ -4,6 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  const index = require('./index-0404c97e.js');
6
6
  const MarketWebContextService = require('./MarketWebContextService-bdc46f40.js');
7
+ const FetchHelper = require('./FetchHelper-f80943bf.js');
7
8
 
8
9
  const translations = {
9
10
  'sv': {
@@ -67,8 +68,12 @@ let PnMarketwebSiteheader = class {
67
68
  this.environment = null; //sv
68
69
  /** Specifies which endpoint domain we should load from */
69
70
  this.endpoint = null;
71
+ /** If the component should use cached requests */
72
+ this.cache = false;
70
73
  this.gotData = false;
71
74
  this.fetchingData = false;
75
+ // FetchHelper
76
+ this.fetchHelper = new FetchHelper.FetchHelper("sitefooter");
72
77
  }
73
78
  componentWillLoad() {
74
79
  this.setInitialValues().then(() => {
@@ -120,8 +125,13 @@ let PnMarketwebSiteheader = class {
120
125
  this.fetchingData = true;
121
126
  const endpointBase = (this.endpoint.lastIndexOf("/") === this.endpoint.length - 1) ? this.endpoint.substring(0, this.endpoint.length - 1) : this.endpoint;
122
127
  const fetchUrl = `${endpointBase}${this.endpointPath}?market=${this.market}&language=${this.language}`;
123
- const response = await fetch(fetchUrl);
124
- const data = await response.json();
128
+ const data = await this.fetchHelper.fetchJson(fetchUrl, {
129
+ 'mode': 'cors'
130
+ }, this.cache, this.onFetchRefreshed.bind(this));
131
+ await this.setStateFromData(data);
132
+ }
133
+ onFetchRefreshed(data) {
134
+ console.log('Data was updated after request', data);
125
135
  this.setStateFromData(data);
126
136
  }
127
137
  getLinkContentByType(linkType = "") {
@@ -167,6 +177,9 @@ let PnMarketwebSiteheader = class {
167
177
  render() {
168
178
  var _a, _b, _c, _d, _e;
169
179
  return (index.h(index.Host, { language: this.language, market: this.market, environment: this.environment }, index.h("pn-site-footer", { url: (_b = (_a = this.siteDefinition) === null || _a === void 0 ? void 0 : _a.url) !== null && _b !== void 0 ? _b : "" }, (this.gotData && ((_c = this.footerContent) === null || _c === void 0 ? void 0 : _c.columns)) ? this.footerContent.columns.map((column) => (index.h("pn-site-footer-col", null, index.h("h3", null, column.heading), column.links ? (index.h("ul", Object.assign({}, ((column.links && column.links[0] && column.links[0].linkType) && { 'class': 'social-media' })), column.links.map((link) => {
180
+ if (!link.linkHref) {
181
+ return false;
182
+ }
170
183
  let linkText = link.linkText;
171
184
  if (link.linkType) {
172
185
  linkText = this.getLinkContentByType(link.linkType);
@@ -4,6 +4,8 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  const index = require('./index-0404c97e.js');
6
6
  const MarketWebContextService = require('./MarketWebContextService-bdc46f40.js');
7
+ const MarketWebLoginManager = require('./MarketWebLoginManager-859590e2.js');
8
+ const FetchHelper = require('./FetchHelper-f80943bf.js');
7
9
 
8
10
  const translations = {
9
11
  'sv': {
@@ -69,6 +71,8 @@ let PnMarketwebSiteheader = class {
69
71
  this.language = null; //sv
70
72
  /** Specifies which environment we're fetching data from. (production, preproduction, integration, localhost) */
71
73
  this.environment = null; //sv
74
+ /** Access token passed from backend */
75
+ this.token = "";
72
76
  /** Specifies which endpoint domain we should load from */
73
77
  this.endpoint = null;
74
78
  /** Hides the site selector if set to true*/
@@ -81,10 +85,13 @@ let PnMarketwebSiteheader = class {
81
85
  this.hideLogin = false;
82
86
  /** Forward session to backend */
83
87
  this.sessionForward = false;
88
+ /** If the component should use cached requests */
89
+ this.cache = false;
84
90
  /** Event based only language switch */
85
91
  this.spaMode = false;
86
92
  this.gotData = false;
87
93
  this.fetchingData = false;
94
+ this.homePageLink = "";
88
95
  // Menu state
89
96
  this.menuItems = [];
90
97
  // Search
@@ -97,8 +104,14 @@ let PnMarketwebSiteheader = class {
97
104
  // Login dialog
98
105
  this.loginDialog = null;
99
106
  this.minimizeSearch = false;
107
+ this.loggedIn = false;
108
+ // FetchHelper
109
+ this.fetchHelper = new FetchHelper.FetchHelper("siteheader");
110
+ // Login manager
111
+ this.loginManager = null;
100
112
  }
101
113
  componentWillLoad() {
114
+ this.loginManager = new MarketWebLoginManager.MarketWebLoginManager({ eventTarget: this.hostElement });
102
115
  this.setInitialValues().then(() => {
103
116
  this.init();
104
117
  });
@@ -154,12 +167,14 @@ let PnMarketwebSiteheader = class {
154
167
  this.fetchingData = true;
155
168
  const endpointBase = (this.endpoint.lastIndexOf("/") === this.endpoint.length - 1) ? this.endpoint.substring(0, this.endpoint.length - 1) : this.endpoint;
156
169
  const fetchUrl = `${endpointBase}${this.endpointPath}?market=${this.market}&language=${this.language}`;
157
- const response = await fetch(fetchUrl, {
170
+ const data = await this.fetchHelper.fetchJson(fetchUrl, {
158
171
  'mode': 'cors'
159
- });
160
- const data = await response.json();
172
+ }, this.cache, this.onFetchRefreshed.bind(this));
161
173
  await this.setStateFromData(data);
162
174
  }
175
+ onFetchRefreshed(data) {
176
+ this.setStateFromData(data);
177
+ }
163
178
  getLanguageVersionUrl(item) {
164
179
  if (this.spaMode) {
165
180
  return null;
@@ -173,6 +188,7 @@ let PnMarketwebSiteheader = class {
173
188
  return siteUrl + ((siteUrl.lastIndexOf("/") !== siteUrl.length - 1) ? "/" : "") + item.twoLetterISOLanguageName;
174
189
  }
175
190
  async setStateFromData(data) {
191
+ var _a, _b, _c;
176
192
  if (typeof data !== "object") {
177
193
  console.warn('Data was not valid', data);
178
194
  }
@@ -181,14 +197,16 @@ let PnMarketwebSiteheader = class {
181
197
  // Set navigation information
182
198
  this.menuItems = data.mainMenu.menuItems;
183
199
  // Create the "Home" link
184
- this.menuItems.unshift({
185
- href: this.siteDefinition.url,
186
- name: this.i18n.menuHomeButton,
187
- id: 'homelink',
188
- open: false,
189
- selected: false,
190
- children: []
191
- });
200
+ if (!this.menuItems[0] || ((_a = this.menuItems[0]) === null || _a === void 0 ? void 0 : _a.name) !== this.i18n.menuHomeButton) {
201
+ this.menuItems.unshift({
202
+ href: this.siteDefinition.url,
203
+ name: this.i18n.menuHomeButton,
204
+ id: 'homelink',
205
+ open: false,
206
+ selected: false,
207
+ children: []
208
+ });
209
+ }
192
210
  // Set search
193
211
  this.search = data.search;
194
212
  // Set site selector
@@ -200,6 +218,7 @@ let PnMarketwebSiteheader = class {
200
218
  await this.spaModeAdjustments();
201
219
  this.gotData = true;
202
220
  this.fetchingData = true;
221
+ this.homePageLink = (_c = (_b = this.siteDefinition) === null || _b === void 0 ? void 0 : _b.url) !== null && _c !== void 0 ? _c : document.location.hostname;
203
222
  window.setTimeout(() => { this.checkMenuOverflow(); }, 100);
204
223
  }
205
224
  setLanguageOptions() {
@@ -220,7 +239,6 @@ let PnMarketwebSiteheader = class {
220
239
  this.languageOptions.push(languageOption);
221
240
  }
222
241
  });
223
- console.log('this.languageOptions', this.languageOptions);
224
242
  }
225
243
  async spaModeAdjustments() {
226
244
  if (!this.spaMode) {
@@ -229,12 +247,9 @@ let PnMarketwebSiteheader = class {
229
247
  return;
230
248
  }
231
249
  onLoginStateChange(e) {
232
- var _a, _b;
233
- 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) {
234
- try {
235
- fetch('/api/userprofile/sync?token=' + e.detail.token);
236
- }
237
- catch (e) { }
250
+ var _a, _b, _c;
251
+ if (((_a = e.detail) === null || _a === void 0 ? void 0 : _a.loggedIn) && ((_b = e.detail) === null || _b === void 0 ? void 0 : _b.token)) {
252
+ this.loggedIn = ((_c = e.detail) === null || _c === void 0 ? void 0 : _c.loggedIn) === true;
238
253
  }
239
254
  }
240
255
  promotedItemId(item) {
@@ -265,11 +280,22 @@ let PnMarketwebSiteheader = class {
265
280
  this.minimizeSearch = true;
266
281
  }
267
282
  }
283
+ adjustSiteSelectorUrl(href) {
284
+ if (!this.loggedIn) {
285
+ return href;
286
+ }
287
+ const loginDomains = ['portal.postnord.com'];
288
+ const matchedHref = loginDomains.filter((domain) => { return href.indexOf(domain) !== -1; });
289
+ if (matchedHref.length === 0) {
290
+ return href;
291
+ }
292
+ return this.loginManager.getLoginUrl(href);
293
+ }
268
294
  render() {
269
- var _a, _b, _c, _d, _e, _f, _g, _h;
295
+ var _a, _b, _c, _d, _e, _f;
270
296
  return (index.h(index.Host, { language: this.language, market: this.market, environment: this.environment }, index.h("header", null, index.h("div", { class: "siteheader-row" }, index.h("div", { class: "siteheader-topleft" }, index.h("slot", { name: "topleft" }), !this.hideSiteSelector &&
271
297
  index.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)) &&
272
- index.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) => index.h("pn-site-selector-item", { heading: site.linkText, description: site.linkDescription, url: site.href, newwindow: site.openInNewWindow })))), index.h("div", { class: "siteheader-logocontainer" }, index.h("a", { href: (_f = (_e = this.siteDefinition) === null || _e === void 0 ? void 0 : _e.url) !== null && _f !== void 0 ? _f : document.location.hostname, title: "Home", class: "siteheader-logolink" }, index.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" }, index.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)" })))), index.h("div", { class: "siteheader-topright" }, index.h("slot", { name: "toprightstart" }), (this.gotData && this.loginDialog && !this.hideLogin) && (index.h("pn-marketweb-siteheader-login", { loginDialog: this.loginDialog, endpoint: this.endpoint, i18n: this.i18n })), (this.gotData && this.languageOptions && this.languageOptions.length) && !this.hideLanguageSelector &&
298
+ index.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) => index.h("pn-site-selector-item", { heading: site.linkText + ' ', description: site.linkDescription, url: this.adjustSiteSelectorUrl(site.href), newwindow: site.openInNewWindow })))), index.h("div", { class: "siteheader-logocontainer" }, index.h("a", { href: this.homePageLink, title: "Home", class: "siteheader-logolink" }, index.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" }, index.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)" })))), index.h("div", { class: "siteheader-topright" }, index.h("slot", { name: "toprightstart" }), (this.gotData && this.loginDialog && !this.hideLogin) && (index.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 &&
273
299
  index.h("pn-language-selector", { value: this.language }, this.languageOptions.map(language => index.h("pn-language-selector-option", { name: language.nativeName, code: language.twoLetterISOLanguageName, selected: language.isCurrent, url: this.getLanguageVersionUrl(language) }))), index.h("slot", { name: "toprightend" }))), index.h("div", { class: "siteheader-row" }, index.h("div", { class: "siteheader-menu" }, index.h("pn-mainnav", { market: this.market, language: this.language, onMenuOpenChange: (e) => {
274
300
  document.body.setAttribute("data-siteheader-menuopen", (e.detail + ''));
275
301
  } }, index.h("pn-mainnav-level", null, index.h("pn-mainnav-list", null, this.menuItems.map((item) => {
@@ -283,8 +309,8 @@ let PnMarketwebSiteheader = class {
283
309
  index.h("pn-mainnav-list", { heading: item.promotedMenuItemsHeader }, item.promotedMenuItems.map((childitem) => (index.h("pn-mainnav-link", { href: childitem.href, name: childitem.linkText, target: childitem.openInNewWindow ? "_blank" : "_self", linkid: this.promotedItemId(childitem) })))))));
284
310
  })), index.h("div", { slot: "footer", class: "siteheader-menu-footer" }, (this.gotData && this.loginDialog && !this.hideLogin) && (index.h("pn-marketweb-siteheader-login", { emitEvents: false, loginDialog: this.loginDialog, endpoint: this.endpoint, i18n: this.i18n })), (this.gotData && this.languageOptions && this.languageOptions.length) && !this.hideLanguageSelector &&
285
311
  index.h("pn-language-selector", { value: this.language }, this.languageOptions.map(language => index.h("pn-language-selector-option", { name: language.nativeName, code: language.twoLetterISOLanguageName, selected: language.isCurrent, url: this.getLanguageVersionUrl(language) }))), !this.hideSiteSelector &&
286
- index.h("pn-site-selector", { language: this.language }, (this.gotData && ((_g = this.siteSelector) === null || _g === void 0 ? void 0 : _g.currentSiteTitle)) &&
287
- index.h("pn-site-selector-item", { heading: this.siteSelector.currentSiteTitle, description: this.siteSelector.currentSiteDescription }), (this.gotData && ((_h = this.siteSelector) === null || _h === void 0 ? void 0 : _h.siteSelections)) && this.siteSelector.siteSelections.map((site) => index.h("pn-site-selector-item", { heading: site.linkText, description: site.linkDescription, url: site.pageLink, newwindow: site.openInNewWindow })))), index.h("div", { slot: "top", class: "siteheader-menu-top" }, index.h("pn-marketweb-siteheader-search", { search: this.search, "hide-search": this.hideSearch, i18n: this.i18n }))))), index.h("pn-marketweb-siteheader-search", { search: this.search, "hide-search": this.hideSearch, "show-only-link": this.minimizeSearch, i18n: this.i18n })))));
312
+ index.h("pn-site-selector", { language: this.language }, (this.gotData && ((_e = this.siteSelector) === null || _e === void 0 ? void 0 : _e.currentSiteTitle)) &&
313
+ index.h("pn-site-selector-item", { heading: this.siteSelector.currentSiteTitle, description: this.siteSelector.currentSiteDescription }), (this.gotData && ((_f = this.siteSelector) === null || _f === void 0 ? void 0 : _f.siteSelections)) && this.siteSelector.siteSelections.map((site) => index.h("pn-site-selector-item", { heading: site.linkText, description: site.linkDescription, url: site.pageLink, newwindow: site.openInNewWindow })))), index.h("div", { slot: "top", class: "siteheader-menu-top" }, index.h("pn-marketweb-siteheader-search", { search: this.search, "hide-search": this.hideSearch, i18n: this.i18n }))))), index.h("pn-marketweb-siteheader-search", { search: this.search, "hide-search": this.hideSearch, "show-only-link": this.minimizeSearch, i18n: this.i18n })))));
288
314
  }
289
315
  get hostElement() { return index.getElement(this); }
290
316
  static get watchers() { return {
@@ -4,7 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  const index = require('./index-0404c97e.js');
6
6
  const MarketWebContextService = require('./MarketWebContextService-bdc46f40.js');
7
- const MarketWebLoginManager = require('./MarketWebLoginManager-8b675eb4.js');
7
+ const MarketWebLoginManager = require('./MarketWebLoginManager-859590e2.js');
8
8
 
9
9
  const translations = {
10
10
  'sv': {
@@ -31,7 +31,8 @@ let PnProfileSelector = class {
31
31
  index.registerInstance(this, hostRef);
32
32
  this.language = null; //sv
33
33
  this.returnUrl = "/"; //sv
34
- this.endpoint = "/api/userprofile/sync"; // Endpoint where we send in the current user session
34
+ // @Prop() endpoint = "/api/userprofile/sync"; // Endpoint where we send in the current user session
35
+ this.spamode = false; // Endpoint where we send in the current user session
35
36
  this.loginManager = null;
36
37
  this.loggedIn = false;
37
38
  this.i18n = translations["en"];
@@ -40,9 +41,10 @@ let PnProfileSelector = class {
40
41
  }
41
42
  componentWillLoad() {
42
43
  this.loginManager = new MarketWebLoginManager.MarketWebLoginManager({ eventTarget: this.hostElement });
43
- this.loginManager.init(true);
44
+ this.loginManager.init(this.spamode);
44
45
  this.hostElement["loginmanager"] = this.loginManager;
45
46
  this.hostElement.addEventListener(this.loginManager.events.loginstatechange, this.onLoginStateChange.bind(this));
47
+ this.checkLoggedInState();
46
48
  this.setInitialValues().then(() => {
47
49
  this.init();
48
50
  });
@@ -62,19 +64,25 @@ let PnProfileSelector = class {
62
64
  init() {
63
65
  this.setTranslations();
64
66
  }
67
+ checkLoggedInState() {
68
+ if (this.loginManager.getToken() && this.loginManager.getUserInfo()) {
69
+ this.onLoginStateChange({ detail: true });
70
+ }
71
+ }
65
72
  async onLoginStateChange(e) {
66
73
  if (this.loggedIn !== e.detail) {
67
74
  this.loggedIn = e.detail;
68
- const token = this.loginManager.getToken();
69
- if (this.loggedIn && token) {
70
- try {
71
- await fetch(this.endpoint + '?token=' + token);
72
- if (this.numberOfProfiles === 1) {
73
- this.redirectUser();
74
- }
75
- }
76
- catch (e) { }
77
- }
75
+ this.isLoading = false;
76
+ this.redirectUser();
77
+ // const token = this.loginManager.getToken();
78
+ // if (this.loggedIn && token) {
79
+ // try {
80
+ // await fetch(this.endpoint + '?token=' + token);
81
+ // if (this.numberOfProfiles === 1) {
82
+ // this.redirectUser();
83
+ // }
84
+ // } catch(e) { }
85
+ // }
78
86
  }
79
87
  }
80
88
  async onLoggedIn() {
@@ -1,6 +1,7 @@
1
1
  import { Component, Prop, h, State, Element, Host, Watch } from "@stencil/core";
2
2
  import { translations } from "./translations";
3
3
  import { MarketWebContextService } from "../../../globals/MarketWebContextService";
4
+ import { FetchHelper } from "../../../globals/FetchHelper";
4
5
  export class PnMarketwebSiteheader {
5
6
  constructor() {
6
7
  this.endpointPath = "/api/footer/footer";
@@ -12,8 +13,12 @@ export class PnMarketwebSiteheader {
12
13
  this.environment = null; //sv
13
14
  /** Specifies which endpoint domain we should load from */
14
15
  this.endpoint = null;
16
+ /** If the component should use cached requests */
17
+ this.cache = false;
15
18
  this.gotData = false;
16
19
  this.fetchingData = false;
20
+ // FetchHelper
21
+ this.fetchHelper = new FetchHelper("sitefooter");
17
22
  }
18
23
  componentWillLoad() {
19
24
  this.setInitialValues().then(() => {
@@ -65,8 +70,13 @@ export class PnMarketwebSiteheader {
65
70
  this.fetchingData = true;
66
71
  const endpointBase = (this.endpoint.lastIndexOf("/") === this.endpoint.length - 1) ? this.endpoint.substring(0, this.endpoint.length - 1) : this.endpoint;
67
72
  const fetchUrl = `${endpointBase}${this.endpointPath}?market=${this.market}&language=${this.language}`;
68
- const response = await fetch(fetchUrl);
69
- const data = await response.json();
73
+ const data = await this.fetchHelper.fetchJson(fetchUrl, {
74
+ 'mode': 'cors'
75
+ }, this.cache, this.onFetchRefreshed.bind(this));
76
+ await this.setStateFromData(data);
77
+ }
78
+ onFetchRefreshed(data) {
79
+ console.log('Data was updated after request', data);
70
80
  this.setStateFromData(data);
71
81
  }
72
82
  getLinkContentByType(linkType = "") {
@@ -116,6 +126,9 @@ export class PnMarketwebSiteheader {
116
126
  (this.gotData && ((_c = this.footerContent) === null || _c === void 0 ? void 0 : _c.columns)) ? this.footerContent.columns.map((column) => (h("pn-site-footer-col", null,
117
127
  h("h3", null, column.heading),
118
128
  column.links ? (h("ul", Object.assign({}, ((column.links && column.links[0] && column.links[0].linkType) && { 'class': 'social-media' })), column.links.map((link) => {
129
+ if (!link.linkHref) {
130
+ return false;
131
+ }
119
132
  let linkText = link.linkText;
120
133
  if (link.linkType) {
121
134
  linkText = this.getLinkContentByType(link.linkType);
@@ -214,6 +227,24 @@ export class PnMarketwebSiteheader {
214
227
  "attribute": "endpoint",
215
228
  "reflect": false,
216
229
  "defaultValue": "null"
230
+ },
231
+ "cache": {
232
+ "type": "boolean",
233
+ "mutable": false,
234
+ "complexType": {
235
+ "original": "boolean",
236
+ "resolved": "boolean",
237
+ "references": {}
238
+ },
239
+ "required": false,
240
+ "optional": false,
241
+ "docs": {
242
+ "tags": [],
243
+ "text": "If the component should use cached requests"
244
+ },
245
+ "attribute": "cache",
246
+ "reflect": false,
247
+ "defaultValue": "false"
217
248
  }
218
249
  }; }
219
250
  static get states() { return {
@@ -50,10 +50,10 @@ const Template = ({ ...args }) => {
50
50
 
51
51
  export const Primary = Template.bind({});
52
52
  Primary.args = {
53
- market : "com",
54
- language: 'en',
53
+ market : "se",
54
+ language: 'sv',
55
55
  environment: "production",
56
- endpoint: "",// 'https://www.postnord.se'
56
+ endpoint: "https://com-production.postnord.com",// 'https://www.postnord.se'
57
57
  };
58
58
 
59
59
 
@@ -4,6 +4,8 @@ export class PnMarketwebSiteheaderLogin {
4
4
  constructor() {
5
5
  /** Specifies which endpoint domain we should load from */
6
6
  this.endpoint = "";
7
+ /** Access token passed from backend */
8
+ this.token = "";
7
9
  this.emitEvents = true;
8
10
  // Login dialog
9
11
  this.loginDialog = null;
@@ -15,6 +17,9 @@ export class PnMarketwebSiteheaderLogin {
15
17
  componentWillLoad() {
16
18
  this.loginManager = new MarketWebLoginManager({ endpoint: this.endpoint, eventTarget: this.hostElement });
17
19
  this.hostElement["loginmanager"] = this.loginManager;
20
+ if (this.token) {
21
+ this.loginManager.registerToken(this.token);
22
+ }
18
23
  this.hostElement.addEventListener(this.loginManager.events.loginstatechange, this.onLoginStateChange.bind(this));
19
24
  this.init();
20
25
  }
@@ -160,6 +165,24 @@ export class PnMarketwebSiteheaderLogin {
160
165
  "reflect": false,
161
166
  "defaultValue": "\"\""
162
167
  },
168
+ "token": {
169
+ "type": "string",
170
+ "mutable": false,
171
+ "complexType": {
172
+ "original": "string",
173
+ "resolved": "string",
174
+ "references": {}
175
+ },
176
+ "required": false,
177
+ "optional": false,
178
+ "docs": {
179
+ "tags": [],
180
+ "text": "Access token passed from backend"
181
+ },
182
+ "attribute": "token",
183
+ "reflect": false,
184
+ "defaultValue": "\"\""
185
+ },
163
186
  "i18n": {
164
187
  "type": "any",
165
188
  "mutable": false,