@postnord/pn-marketweb-components 1.0.34 → 1.0.38

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 +54 -23
  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 +102 -26
  14. package/collection/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader.stories.js +60 -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 +379 -233
  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 +54 -23
  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-02ab0208.entry.js +1 -0
  40. package/pn-market-web-components/{p-ffdf87ee.entry.js → p-03fb0285.entry.js} +1 -1
  41. package/pn-market-web-components/p-1649b94a.entry.js +1 -0
  42. package/pn-market-web-components/p-25bdf3f8.system.js +1 -1
  43. package/pn-market-web-components/p-4921fcc3.entry.js +1 -0
  44. package/pn-market-web-components/p-58cdf3a6.system.js +1 -0
  45. package/pn-market-web-components/{p-6a32362d.system.entry.js → p-7b4c721f.system.entry.js} +1 -1
  46. package/pn-market-web-components/p-97dc5687.js +1 -0
  47. package/pn-market-web-components/p-a983c263.system.entry.js +1 -0
  48. package/pn-market-web-components/p-c254cfdf.js +1 -0
  49. package/pn-market-web-components/p-d6a17042.system.js +1 -0
  50. package/pn-market-web-components/p-daa6ddb3.system.entry.js +1 -0
  51. package/pn-market-web-components/p-dade9bdb.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-b4075f56.entry.js +0 -1
  69. package/pn-market-web-components/p-d0f1c36b.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
  });
@@ -135,7 +148,9 @@ let PnMarketwebSiteheader = class {
135
148
  }
136
149
  }
137
150
  onLanguageSelectorChange(e) {
151
+ console.log('onLanguageSelectorChange(e', e);
138
152
  this.language = e.detail;
153
+ window.dispatchEvent(new CustomEvent('marketweb-languagechange', { detail: this.language }));
139
154
  }
140
155
  onLanguageChange() {
141
156
  this.setTranslations();
@@ -154,12 +169,14 @@ let PnMarketwebSiteheader = class {
154
169
  this.fetchingData = true;
155
170
  const endpointBase = (this.endpoint.lastIndexOf("/") === this.endpoint.length - 1) ? this.endpoint.substring(0, this.endpoint.length - 1) : this.endpoint;
156
171
  const fetchUrl = `${endpointBase}${this.endpointPath}?market=${this.market}&language=${this.language}`;
157
- const response = await fetch(fetchUrl, {
172
+ const data = await this.fetchHelper.fetchJson(fetchUrl, {
158
173
  'mode': 'cors'
159
- });
160
- const data = await response.json();
174
+ }, this.cache, this.onFetchRefreshed.bind(this));
161
175
  await this.setStateFromData(data);
162
176
  }
177
+ onFetchRefreshed(data) {
178
+ this.setStateFromData(data);
179
+ }
163
180
  getLanguageVersionUrl(item) {
164
181
  if (this.spaMode) {
165
182
  return null;
@@ -173,6 +190,7 @@ let PnMarketwebSiteheader = class {
173
190
  return siteUrl + ((siteUrl.lastIndexOf("/") !== siteUrl.length - 1) ? "/" : "") + item.twoLetterISOLanguageName;
174
191
  }
175
192
  async setStateFromData(data) {
193
+ var _a, _b, _c;
176
194
  if (typeof data !== "object") {
177
195
  console.warn('Data was not valid', data);
178
196
  }
@@ -181,14 +199,16 @@ let PnMarketwebSiteheader = class {
181
199
  // Set navigation information
182
200
  this.menuItems = data.mainMenu.menuItems;
183
201
  // 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
- });
202
+ if (!this.menuItems[0] || ((_a = this.menuItems[0]) === null || _a === void 0 ? void 0 : _a.name) !== this.i18n.menuHomeButton) {
203
+ this.menuItems.unshift({
204
+ href: this.siteDefinition.url,
205
+ name: this.i18n.menuHomeButton,
206
+ id: 'homelink',
207
+ open: false,
208
+ selected: false,
209
+ children: []
210
+ });
211
+ }
192
212
  // Set search
193
213
  this.search = data.search;
194
214
  // Set site selector
@@ -200,6 +220,7 @@ let PnMarketwebSiteheader = class {
200
220
  await this.spaModeAdjustments();
201
221
  this.gotData = true;
202
222
  this.fetchingData = true;
223
+ this.homePageLink = (_c = (_b = this.siteDefinition) === null || _b === void 0 ? void 0 : _b.url) !== null && _c !== void 0 ? _c : document.location.hostname;
203
224
  window.setTimeout(() => { this.checkMenuOverflow(); }, 100);
204
225
  }
205
226
  setLanguageOptions() {
@@ -209,17 +230,19 @@ let PnMarketwebSiteheader = class {
209
230
  }
210
231
  const hrefLangsTags = (_a = Array.prototype.slice.call(document.querySelectorAll('link[rel="alternate"][hreflang]'))) !== null && _a !== void 0 ? _a : [];
211
232
  const hrefLangs = hrefLangsTags.map((tag) => { return tag.getAttribute("hreflang"); });
233
+ let languageOptions = []; // Reset language options
212
234
  this.languageSelector.languages.map((languageOption) => {
213
235
  // In case there are language links present on the page we only show languages that have those tags
214
236
  if (hrefLangs && hrefLangs.length > 0) {
215
237
  if (hrefLangs.includes(languageOption.twoLetterISOLanguageName)) {
216
- this.languageOptions.push(languageOption);
238
+ languageOptions.push(languageOption);
217
239
  }
218
240
  }
219
241
  else {
220
- this.languageOptions.push(languageOption);
242
+ languageOptions.push(languageOption);
221
243
  }
222
244
  });
245
+ this.languageOptions = languageOptions; // Replace existing language options so we don't trigger a event change on every push.
223
246
  }
224
247
  async spaModeAdjustments() {
225
248
  if (!this.spaMode) {
@@ -228,12 +251,9 @@ let PnMarketwebSiteheader = class {
228
251
  return;
229
252
  }
230
253
  onLoginStateChange(e) {
231
- var _a, _b;
232
- 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) {
233
- try {
234
- fetch('/api/userprofile/sync?token=' + e.detail.token);
235
- }
236
- catch (e) { }
254
+ var _a, _b, _c;
255
+ if (((_a = e.detail) === null || _a === void 0 ? void 0 : _a.loggedIn) && ((_b = e.detail) === null || _b === void 0 ? void 0 : _b.token)) {
256
+ this.loggedIn = ((_c = e.detail) === null || _c === void 0 ? void 0 : _c.loggedIn) === true;
237
257
  }
238
258
  }
239
259
  promotedItemId(item) {
@@ -264,11 +284,22 @@ let PnMarketwebSiteheader = class {
264
284
  this.minimizeSearch = true;
265
285
  }
266
286
  }
287
+ adjustSiteSelectorUrl(href) {
288
+ if (!this.loggedIn) {
289
+ return href;
290
+ }
291
+ const loginDomains = ['portal.postnord.com'];
292
+ const matchedHref = loginDomains.filter((domain) => { return href.indexOf(domain) !== -1; });
293
+ if (matchedHref.length === 0) {
294
+ return href;
295
+ }
296
+ return this.loginManager.getLoginUrl(href);
297
+ }
267
298
  render() {
268
- var _a, _b, _c, _d, _e, _f, _g, _h;
299
+ var _a, _b, _c, _d, _e, _f;
269
300
  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 &&
270
301
  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)) &&
271
- 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 &&
302
+ 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 &&
272
303
  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) => {
273
304
  document.body.setAttribute("data-siteheader-menuopen", (e.detail + ''));
274
305
  } }, index.h("pn-mainnav-level", null, index.h("pn-mainnav-list", null, this.menuItems.map((item) => {
@@ -282,8 +313,8 @@ let PnMarketwebSiteheader = class {
282
313
  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) })))))));
283
314
  })), 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 &&
284
315
  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 &&
285
- index.h("pn-site-selector", { language: this.language }, (this.gotData && ((_g = this.siteSelector) === null || _g === void 0 ? void 0 : _g.currentSiteTitle)) &&
286
- 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 })))));
316
+ index.h("pn-site-selector", { language: this.language }, (this.gotData && ((_e = this.siteSelector) === null || _e === void 0 ? void 0 : _e.currentSiteTitle)) &&
317
+ 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 })))));
287
318
  }
288
319
  get hostElement() { return index.getElement(this); }
289
320
  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