@postnord/pn-marketweb-components 1.0.21 → 1.0.26

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 (51) hide show
  1. package/cjs/loader.cjs.js +1 -1
  2. package/cjs/pn-filter-checkbox.cjs.entry.js +1 -0
  3. package/cjs/pn-language-selector_9.cjs.entry.js +31 -17
  4. package/cjs/pn-market-web-components.cjs.js +1 -1
  5. package/cjs/pn-marketweb-siteheader.cjs.entry.js +29 -8
  6. package/cjs/pn-site-footer_2.cjs.entry.js +2 -2
  7. package/collection/components/input/pn-filter-checkbox/pn-filter-checkbox.js +1 -0
  8. package/collection/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader-login.js +45 -6
  9. package/collection/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader-loginmanager.js +17 -12
  10. package/collection/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader.js +77 -8
  11. package/collection/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader.stories.js +19 -4
  12. package/collection/components/navigation/pn-language-selector/pn-language-selector.js +19 -2
  13. package/collection/components/navigation/pn-mainnav/pn-mainnav-level.css +1 -0
  14. package/collection/components/navigation/pn-site-footer/pn-site-footer-col.css +6 -1
  15. package/collection/components/navigation/pn-site-footer/pn-site-footer.css +5 -0
  16. package/collection/components/navigation/pn-site-footer/site-footer.stories.js +78 -0
  17. package/custom-elements/index.js +66 -30
  18. package/esm/loader.js +1 -1
  19. package/esm/pn-filter-checkbox.entry.js +1 -0
  20. package/esm/pn-language-selector_9.entry.js +32 -18
  21. package/esm/pn-market-web-components.js +1 -1
  22. package/esm/pn-marketweb-siteheader.entry.js +29 -8
  23. package/esm/pn-site-footer_2.entry.js +2 -2
  24. package/esm-es5/loader.js +1 -1
  25. package/esm-es5/pn-filter-checkbox.entry.js +1 -1
  26. package/esm-es5/pn-language-selector_9.entry.js +1 -1
  27. package/esm-es5/pn-market-web-components.js +1 -1
  28. package/esm-es5/pn-marketweb-siteheader.entry.js +1 -1
  29. package/esm-es5/pn-site-footer_2.entry.js +1 -1
  30. package/package.json +2 -2
  31. package/pn-market-web-components/p-015a433e.entry.js +1 -0
  32. package/pn-market-web-components/p-25bdf3f8.system.js +1 -1
  33. package/pn-market-web-components/p-441c80e7.system.entry.js +1 -0
  34. package/pn-market-web-components/{p-8d62c46f.system.entry.js → p-4feb3557.system.entry.js} +1 -1
  35. package/pn-market-web-components/{p-c9e9854e.entry.js → p-68139d23.entry.js} +1 -1
  36. package/pn-market-web-components/p-88ab0d91.system.entry.js +1 -0
  37. package/pn-market-web-components/p-b27c3539.system.entry.js +1 -0
  38. package/pn-market-web-components/p-c2b8aa29.entry.js +1 -0
  39. package/pn-market-web-components/p-d7441208.entry.js +1 -0
  40. package/pn-market-web-components/pn-market-web-components.esm.js +1 -1
  41. package/types/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader-login.d.ts +3 -0
  42. package/types/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader-loginmanager.d.ts +8 -3
  43. package/types/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader.d.ts +8 -1
  44. package/types/components/navigation/pn-language-selector/pn-language-selector.d.ts +2 -0
  45. package/types/components.d.ts +20 -0
  46. package/pn-market-web-components/p-2da203c9.system.entry.js +0 -1
  47. package/pn-market-web-components/p-363a27ff.entry.js +0 -1
  48. package/pn-market-web-components/p-582dbd9c.entry.js +0 -1
  49. package/pn-market-web-components/p-6299f92f.system.entry.js +0 -1
  50. package/pn-market-web-components/p-8c072330.entry.js +0 -1
  51. package/pn-market-web-components/p-ecfabe25.system.entry.js +0 -1
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"],"i18n":[32],"gotData":[32],"fetchingData":[32],"menuItems":[32],"siteDefinition":[32],"search":[32],"siteSelector":[32],"languageSelector":[32],"loginDialog":[32],"minimizeSearch":[32]},[[9,"resize","handleResize"]]]]],["pn-find-service-and-price.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-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-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":[513],"selectedLanguageName":[32],"options":[32],"i18n":[32]}],[0,"pn-language-selector-option",{"name":[1],"code":[1],"url":[1],"selected":[4],"currentLanguage":[1,"current-language"]}],[4,"pn-mainnav",{"market":[1],"language":[1],"navigationId":[1,"navigation-id"],"openMenu":[1028,"open-menu"],"navLabel":[1,"nav-label"]},[[0,"language","setLanguage"],[0,"market","setMarket"],[0,"menuLanguageChange","onLanguageChange"],[0,"setmenuopenstate","setMenuOpenState"],[0,"openMenuLevelChange","onOpenMenuLevelChange"]]],[4,"pn-mainnav-list",{"heading":[1],"linkCount":[32]}],[0,"pn-marketweb-siteheader-login",{"endpoint":[1],"i18n":[8,"i-1-8n"],"loginDialog":[1040],"loginManager":[32],"loggedIn":[32],"toggleButtonText":[32]}],[0,"pn-marketweb-siteheader-search",{"i18n":[8,"i-1-8n"],"showOnlyLink":[1028,"show-only-link"],"hideSearch":[1028,"hide-search"],"search":[1040]}],[4,"pn-site-selector",{"buttontext":[1537],"heading":[1537],"language":[1537],"i18n":[32]}],[0,"pn-site-selector-item",{"url":[1],"heading":[1],"description":[1],"newwindow":[4]}]]],["pn-product-tile_3.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]}]]]], options);
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],"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-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-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]}],[0,"pn-marketweb-siteheader-search",{"i18n":[8,"i-1-8n"],"showOnlyLink":[1028,"show-only-link"],"hideSearch":[1028,"hide-search"],"search":[1040]}],[4,"pn-site-selector",{"buttontext":[1537],"heading":[1537],"language":[1537],"i18n":[32]}],[0,"pn-site-selector-item",{"url":[1],"heading":[1],"description":[1],"newwindow":[4]}]]],["pn-product-tile_3.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]}]]]], options);
18
18
  });
19
19
  };
20
20
 
@@ -37,6 +37,7 @@ let PnFilterCheckbox = class {
37
37
  let outsideInput = this.hostElement.querySelector("input.hidden-" + this.checkboxid);
38
38
  if (outsideInput) {
39
39
  outsideInput.value = (checkboxInput.checked) ? this.value : "";
40
+ outsideInput.dispatchEvent(new CustomEvent("change", { detail: outsideInput }));
40
41
  }
41
42
  }
42
43
  checkAndSetIndeterminateState() {
@@ -29,6 +29,7 @@ const pnLanguageSelectorCss = ".languageselector{position:relative}.languagesele
29
29
  let PnlanguageSelector = class {
30
30
  constructor(hostRef) {
31
31
  index.registerInstance(this, hostRef);
32
+ this.setLanguage = index.createEvent(this, "setLanguage", 7);
32
33
  /* Current language code */
33
34
  this.value = "";
34
35
  this.selectedLanguageName = "";
@@ -68,6 +69,7 @@ let PnlanguageSelector = class {
68
69
  onSetCurrentLanguage(option) {
69
70
  this.value = option.code;
70
71
  this.selectedLanguageName = option.name;
72
+ this.setLanguage.emit(this.value);
71
73
  }
72
74
  setTranslations() {
73
75
  if (translations$1[this.value]) {
@@ -223,7 +225,7 @@ let PnMainnav = class {
223
225
  };
224
226
  PnMainnav.style = pnMainnavCss;
225
227
 
226
- const pnMainnavLevelCss = "pn-mainnav-level{display:block}pn-mainnav-level[data-level=\"1\"]{width:100%;right:0;overflow-y:scroll;overflow-x:hidden;-ms-flex:1;flex:1}@media screen and (min-width: 64em){pn-mainnav-level[data-level=\"1\"]{width:auto;overflow:initial}pn-mainnav-level[data-level=\"1\"]::-webkit-scrollbar{display:none}}pn-mainnav-level[data-level=\"2\"]{position:absolute;top:0;bottom:0;left:0;width:100vw;padding:0;background-color:#FFFFFF;z-index:1;-webkit-transform:translateX(100vw);transform:translateX(100vw);-webkit-transition:-webkit-transform 0.2s 0s;transition:-webkit-transform 0.2s 0s;transition:transform 0.2s 0s;transition:transform 0.2s 0s, -webkit-transform 0.2s 0s;-webkit-transition-property:visibility, -webkit-transform;transition-property:visibility, -webkit-transform;transition-property:transform, visibility;transition-property:transform, visibility, -webkit-transform;overflow:scroll;visibility:hidden}@media screen and (min-width: 64em){pn-mainnav-level[data-level=\"2\"]{left:0;top:calc(100% + 1rem);bottom:auto;border-radius:1.6rem;width:auto;padding:1.6rem 1.6rem 0 1.6rem;-webkit-box-shadow:0 0.06rem 0.18rem rgba(0, 0, 0, 0.1), 0 0.32rem 0.72rem rgba(0, 0, 0, 0.13);-moz-box-shadow:0 0.06rem 0.18rem rgba(0, 0, 0, 0.1), 0 0.32rem 0.72rem rgba(0, 0, 0, 0.13);box-shadow:0 0.06rem 0.18rem rgba(0, 0, 0, 0.1), 0 0.32rem 0.72rem rgba(0, 0, 0, 0.13);height:auto;z-index:3;display:none}pn-mainnav-level[data-level=\"2\"][data-menuitem-rightaligned=true]{right:0;left:unset}}@media screen and (max-height: 33.125em){pn-mainnav-level[data-level=\"2\"]{-ms-overflow-style:none;scrollbar-width:none}pn-mainnav-level[data-level=\"2\"]::-webkit-scrollbar{display:none}}pn-mainnav-level[data-level=\"2\"][aria-hidden=false]{-webkit-transform:translateX(0);transform:translateX(0);visibility:visible}@media screen and (min-width: 64em){pn-mainnav-level[data-level=\"2\"][aria-hidden=false]{display:block;overflow:visible}pn-mainnav-level[data-level=\"2\"][aria-hidden=false]:not([data-level-listcount=\"1\"]){display:grid;grid-template-columns:minmax(12em, 20em) 1fr;grid-template-rows:auto auto;gap:0px 1.6rem;grid-template-areas:\"top top\" \"left right\"}}@media screen and (min-width: 64em){pn-mainnav-level[data-level=\"2\"][data-level-alignment=left]{right:0;left:unset}}@media screen and (min-width: 64em){pn-mainnav-level[data-level=\"2\"][data-level-alignment=center]{left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}}pn-mainnav-level[data-level=\"2\"] a{color:#005D92;text-decoration:none}pn-mainnav-level [slot=top]{display:-ms-flexbox;display:flex}@media screen and (min-width: 48em){pn-mainnav-level [slot=top]{display:none}}[data-menu-currentlevel=\"2\"] pn-mainnav-level [slot=footer]{display:none}.mainnav-level-header{grid-area:top}.mainnav-level-header>label{position:absolute;width:0.1rem;height:0.1rem;padding:0;margin:-0.1rem;overflow:hidden;clip:rect(0, 0, 0, 0);border:0;white-space:nowrap}.mainnav-level-header>button{display:block;position:relative;border:none;background-color:transparent;color:#005D92;padding:2.4rem 0 2.4rem 6.2rem;width:100%;text-align:left}@media screen and (min-width: 64em){.mainnav-level-header>button{display:none;speak:none}}.mainnav-level-header>button>pn-icon{speak:none;position:absolute;height:2.4rem;width:2.4rem;left:3rem;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}[data-level=\"2\"] .mainnav-level-header>pn-mainnav-link>a{font-size:2.4rem}";
228
+ const pnMainnavLevelCss = "pn-mainnav-level{display:block}pn-mainnav-level[data-level=\"1\"]{width:100%;right:0;overflow-y:scroll;overflow-x:hidden;-ms-flex:1;flex:1}@media screen and (min-width: 64em){pn-mainnav-level[data-level=\"1\"]{width:auto;overflow:initial}pn-mainnav-level[data-level=\"1\"]::-webkit-scrollbar{display:none}}pn-mainnav-level[data-level=\"2\"]{position:absolute;top:0;bottom:0;left:0;width:100vw;padding:0;background-color:#FFFFFF;z-index:1;-webkit-transform:translateX(100vw);transform:translateX(100vw);-webkit-transition:-webkit-transform 0.2s 0s;transition:-webkit-transform 0.2s 0s;transition:transform 0.2s 0s;transition:transform 0.2s 0s, -webkit-transform 0.2s 0s;-webkit-transition-property:visibility, -webkit-transform;transition-property:visibility, -webkit-transform;transition-property:transform, visibility;transition-property:transform, visibility, -webkit-transform;overflow:scroll;visibility:hidden}@media screen and (min-width: 64em){pn-mainnav-level[data-level=\"2\"]{left:0;top:calc(100% + 1rem);bottom:auto;border-radius:1.6rem;width:auto;padding:1.6rem 1.6rem 0 1.6rem;-webkit-box-shadow:0 0.06rem 0.18rem rgba(0, 0, 0, 0.1), 0 0.32rem 0.72rem rgba(0, 0, 0, 0.13);-moz-box-shadow:0 0.06rem 0.18rem rgba(0, 0, 0, 0.1), 0 0.32rem 0.72rem rgba(0, 0, 0, 0.13);box-shadow:0 0.06rem 0.18rem rgba(0, 0, 0, 0.1), 0 0.32rem 0.72rem rgba(0, 0, 0, 0.13);height:auto;z-index:3;display:none}pn-mainnav-level[data-level=\"2\"][data-menuitem-rightaligned=true]{right:0;left:unset}}@media screen and (max-height: 33.125em){pn-mainnav-level[data-level=\"2\"]{-ms-overflow-style:none;scrollbar-width:none}pn-mainnav-level[data-level=\"2\"]::-webkit-scrollbar{display:none}}pn-mainnav-level[data-level=\"2\"][aria-hidden=false]{-webkit-transform:translateX(0);transform:translateX(0);visibility:visible}@media screen and (min-width: 64em){pn-mainnav-level[data-level=\"2\"][aria-hidden=false]{display:block;overflow:visible}pn-mainnav-level[data-level=\"2\"][aria-hidden=false]:not([data-level-listcount=\"1\"]){display:grid;grid-template-columns:minmax(12em, 20em) 1fr;grid-template-rows:auto auto;gap:0px 1.6rem;grid-template-areas:\"top top\" \"left right\"}}@media screen and (min-width: 64em){pn-mainnav-level[data-level=\"2\"][data-level-alignment=left]{right:0;left:unset}}@media screen and (min-width: 64em){pn-mainnav-level[data-level=\"2\"][data-level-alignment=center]{left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}}pn-mainnav-level[data-level=\"2\"] a{color:#005D92;text-decoration:none}pn-mainnav-level [slot=top]{display:-ms-flexbox;display:flex}@media screen and (min-width: 48em){pn-mainnav-level [slot=top]{display:none}}[data-menu-currentlevel=\"2\"] pn-mainnav-level [slot=footer]{display:none;-ms-scroll-chaining:none;overscroll-behavior:contain}.mainnav-level-header{grid-area:top}.mainnav-level-header>label{position:absolute;width:0.1rem;height:0.1rem;padding:0;margin:-0.1rem;overflow:hidden;clip:rect(0, 0, 0, 0);border:0;white-space:nowrap}.mainnav-level-header>button{display:block;position:relative;border:none;background-color:transparent;color:#005D92;padding:2.4rem 0 2.4rem 6.2rem;width:100%;text-align:left}@media screen and (min-width: 64em){.mainnav-level-header>button{display:none;speak:none}}.mainnav-level-header>button>pn-icon{speak:none;position:absolute;height:2.4rem;width:2.4rem;left:3rem;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}[data-level=\"2\"] .mainnav-level-header>pn-mainnav-link>a{font-size:2.4rem}";
227
229
 
228
230
  let PnMainnavLevel = class {
229
231
  constructor(hostRef) {
@@ -376,13 +378,15 @@ class PNLoginManager {
376
378
  this.endpoint = options.endpoint ? options.endpoint : `${window.location.protocol}//${window.location.host}`;
377
379
  (_a = this.storagePrefix) !== null && _a !== void 0 ? _a : (this.storagePrefix = options.storagePrefix);
378
380
  }
379
- init() {
380
- this.checkParameters();
381
- this.checkExpireTime();
382
- if (this.store.get(this.keys.token) && !this.store.get(this.keys.user)) {
383
- this.fetchUserInfo();
381
+ init(checkParameters = true) {
382
+ if (checkParameters) {
383
+ this.checkParameters();
384
+ this.checkExpireTime();
385
+ if (this.store.get(this.keys.token) && !this.store.get(this.keys.user)) {
386
+ this.fetchUserInfo();
387
+ }
388
+ this.loginStateChange();
384
389
  }
385
- this.loginStateChange();
386
390
  }
387
391
  isLoggedIn() {
388
392
  const isLoggedIn = (this.store.get(this.keys.token) && this.store.get(this.keys.user)) ? true : false;
@@ -426,10 +430,11 @@ class PNLoginManager {
426
430
  const params = new URLSearchParams(window.location.search);
427
431
  if (params.get("oneTimeCode")) {
428
432
  const oneTimeCode = params.get("oneTimeCode");
429
- this.getToken(oneTimeCode);
430
- const currentHref = window.location.href;
431
- const paramPrefix = (currentHref.indexOf('?oneTimeCode') !== -1) ? "?" : "&";
432
- history.replaceState({}, document.querySelector('title').innerText, currentHref.replace(`${paramPrefix}oneTimeCode=${oneTimeCode}`, ''));
433
+ this.exchangeToken(oneTimeCode).then(() => {
434
+ const currentHref = window.location.href;
435
+ const paramPrefix = (currentHref.indexOf('?oneTimeCode') !== -1) ? "?" : "&";
436
+ history.replaceState({}, document.querySelector('title').innerText, currentHref.replace(`${paramPrefix}oneTimeCode=${oneTimeCode}`, ''));
437
+ });
433
438
  }
434
439
  }
435
440
  async fetchUserInfo() {
@@ -465,7 +470,10 @@ class PNLoginManager {
465
470
  this.store.remove(this.keys.expire);
466
471
  this.store.remove(this.keys.expireDate);
467
472
  }
468
- async getToken(oneTimeCode) {
473
+ getToken() {
474
+ return this.store.get(this.keys.token);
475
+ }
476
+ async exchangeToken(oneTimeCode) {
469
477
  this.clearUserData();
470
478
  const response = await fetch(`${this.getBaseUrl()}${this.endpoints.tokenExchangeEndpoint}?oneTimeCode=${oneTimeCode}`);
471
479
  const { token } = await response.json();
@@ -505,8 +513,10 @@ const pnMarketwebSiteheaderLoginCss = "pn-marketweb-siteheader-login{padding:1re
505
513
  let PnMarketwebSiteheaderLogin = class {
506
514
  constructor(hostRef) {
507
515
  index.registerInstance(this, hostRef);
516
+ this.loginStateChange = index.createEvent(this, "loginStateChange", 7);
508
517
  /** Specifies which endpoint domain we should load from */
509
518
  this.endpoint = "";
519
+ this.emitEvents = true;
510
520
  // Login dialog
511
521
  this.loginDialog = null;
512
522
  this.loginManager = null;
@@ -515,12 +525,13 @@ let PnMarketwebSiteheaderLogin = class {
515
525
  }
516
526
  componentWillLoad() {
517
527
  this.loginManager = new PNLoginManager({ endpoint: this.endpoint, eventTarget: this.hostElement });
528
+ this.hostElement["loginmanager"] = this.loginManager;
529
+ this.hostElement.addEventListener(this.loginManager.events.loginstatechange, this.onLoginStateChange.bind(this));
518
530
  this.init();
519
531
  }
520
532
  async init() {
521
533
  this.toggleButtonText = this.loginDialog.loginMenuLinkText;
522
- this.hostElement.addEventListener(this.loginManager.events.loginstatechange, this.onLoginStateChange.bind(this));
523
- this.loginManager.init();
534
+ this.loginManager.init(this.emitEvents);
524
535
  this.setToggleButtonText();
525
536
  }
526
537
  setToggleButtonText() {
@@ -538,8 +549,11 @@ let PnMarketwebSiteheaderLogin = class {
538
549
  }
539
550
  }
540
551
  onLoginStateChange(e) {
541
- this.loggedIn = e.detail;
542
- this.setToggleButtonText();
552
+ if (this.loggedIn !== e.detail && this.emitEvents) {
553
+ this.loggedIn = e.detail;
554
+ this.loginStateChange.emit({ loggedIn: this.loggedIn, token: this.loginManager.getToken() });
555
+ this.setToggleButtonText();
556
+ }
543
557
  }
544
558
  render() {
545
559
  var _a, _b, _c;
@@ -557,7 +571,7 @@ let PnMarketwebSiteheaderLogin = class {
557
571
  :
558
572
  index.h("div", null, index.h("ul", null, this.loginDialog.loggedInLinks.map((link) => {
559
573
  const isLogoutLink = link.href.indexOf('logout');
560
- const href = (isLogoutLink) ? this.loginManager.getLogoutUrl(link.href.replace('logout', '')) : link.href;
574
+ const href = (isLogoutLink) ? this.loginManager.getLogoutUrl(link.href.replace('logout', '').replace('http://window.location.href/?', '').replace('https://window.location.href/?', '')) : link.href;
561
575
  return (index.h("li", null, index.h("a", Object.assign({ href: href }, (link.openInNewWindow && { target: '_blank' })), index.h("pn-button", { appearance: (link.primaryLinkApperance ? "dark" : "light"), onClick: () => {
562
576
  if (isLogoutLink) {
563
577
  this.loginManager.clearUserData();
@@ -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"],"i18n":[32],"gotData":[32],"fetchingData":[32],"menuItems":[32],"siteDefinition":[32],"search":[32],"siteSelector":[32],"languageSelector":[32],"loginDialog":[32],"minimizeSearch":[32]},[[9,"resize","handleResize"]]]]],["pn-find-service-and-price.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-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-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":[513],"selectedLanguageName":[32],"options":[32],"i18n":[32]}],[0,"pn-language-selector-option",{"name":[1],"code":[1],"url":[1],"selected":[4],"currentLanguage":[1,"current-language"]}],[4,"pn-mainnav",{"market":[1],"language":[1],"navigationId":[1,"navigation-id"],"openMenu":[1028,"open-menu"],"navLabel":[1,"nav-label"]},[[0,"language","setLanguage"],[0,"market","setMarket"],[0,"menuLanguageChange","onLanguageChange"],[0,"setmenuopenstate","setMenuOpenState"],[0,"openMenuLevelChange","onOpenMenuLevelChange"]]],[4,"pn-mainnav-list",{"heading":[1],"linkCount":[32]}],[0,"pn-marketweb-siteheader-login",{"endpoint":[1],"i18n":[8,"i-1-8n"],"loginDialog":[1040],"loginManager":[32],"loggedIn":[32],"toggleButtonText":[32]}],[0,"pn-marketweb-siteheader-search",{"i18n":[8,"i-1-8n"],"showOnlyLink":[1028,"show-only-link"],"hideSearch":[1028,"hide-search"],"search":[1040]}],[4,"pn-site-selector",{"buttontext":[1537],"heading":[1537],"language":[1537],"i18n":[32]}],[0,"pn-site-selector-item",{"url":[1],"heading":[1],"description":[1],"newwindow":[4]}]]],["pn-product-tile_3.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]}]]]], 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],"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-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-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]}],[0,"pn-marketweb-siteheader-search",{"i18n":[8,"i-1-8n"],"showOnlyLink":[1028,"show-only-link"],"hideSearch":[1028,"hide-search"],"search":[1040]}],[4,"pn-site-selector",{"buttontext":[1537],"heading":[1537],"language":[1537],"i18n":[32]}],[0,"pn-site-selector-item",{"url":[1],"heading":[1],"description":[1],"newwindow":[4]}]]],["pn-product-tile_3.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]}]]]], options);
59
59
  });
@@ -79,6 +79,10 @@ let PnMarketwebSiteheader = class {
79
79
  this.hideSearch = false;
80
80
  /** Hides the login if set to true*/
81
81
  this.hideLogin = false;
82
+ /** Forward session to backend */
83
+ this.sessionForward = false;
84
+ /** Event based only language switch */
85
+ this.spaMode = false;
82
86
  this.gotData = false;
83
87
  this.fetchingData = false;
84
88
  // Menu state
@@ -119,11 +123,6 @@ let PnMarketwebSiteheader = class {
119
123
  this.endpoint = "";
120
124
  }
121
125
  }
122
- // TODO
123
- //* Expose market and language attributes when changed internally
124
- //* Business logic to select market and language depending on domains / html tag.
125
- //* Property to stop language change from changeing url, throw an event instead.
126
- //* Fetch new data when langauge or market is changed
127
126
  async init() {
128
127
  this.setTranslations();
129
128
  await this.fetchData();
@@ -134,6 +133,9 @@ let PnMarketwebSiteheader = class {
134
133
  this.i18n = translations[this.language];
135
134
  }
136
135
  }
136
+ onLanguageSelectorChange(e) {
137
+ this.language = e.detail;
138
+ }
137
139
  onLanguageChange() {
138
140
  this.setTranslations();
139
141
  this.changeLanguage.emit(this.language);
@@ -153,9 +155,12 @@ let PnMarketwebSiteheader = class {
153
155
  const fetchUrl = `${endpointBase}${this.endpointPath}?market=${this.market}&language=${this.language}`;
154
156
  const response = await fetch(fetchUrl);
155
157
  const data = await response.json();
156
- this.setStateFromData(data);
158
+ await this.setStateFromData(data);
157
159
  }
158
160
  getLanguageVersionUrl(item) {
161
+ if (this.spaMode) {
162
+ return null;
163
+ }
159
164
  const alternativeTag = document.querySelector(`link[rel="alternate"][hreflang="${item.twoLetterISOLanguageName}"]`);
160
165
  if (alternativeTag) {
161
166
  return alternativeTag.getAttribute('href');
@@ -164,7 +169,7 @@ let PnMarketwebSiteheader = class {
164
169
  // Add trailing slash to domain if it's missing
165
170
  return siteUrl + ((siteUrl.lastIndexOf("/") !== siteUrl.length - 1) ? "/" : "") + item.twoLetterISOLanguageName;
166
171
  }
167
- setStateFromData(data) {
172
+ async setStateFromData(data) {
168
173
  if (typeof data !== "object") {
169
174
  console.warn('Data was not valid', data);
170
175
  }
@@ -188,10 +193,26 @@ let PnMarketwebSiteheader = class {
188
193
  // Set language selector
189
194
  this.languageSelector = data.languageSelectorViewModel;
190
195
  this.loginDialog = data.loginViewModel;
196
+ await this.spaModeAdjustments();
191
197
  this.gotData = true;
192
198
  this.fetchingData = true;
193
199
  window.setTimeout(() => { this.checkMenuOverflow(); }, 100);
194
200
  }
201
+ async spaModeAdjustments() {
202
+ if (!this.spaMode) {
203
+ return;
204
+ }
205
+ return;
206
+ }
207
+ onLoginStateChange(e) {
208
+ var _a, _b;
209
+ 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) {
210
+ try {
211
+ fetch('/api/userprofile/sync?token=' + e.detail.token);
212
+ }
213
+ catch (e) { }
214
+ }
215
+ }
195
216
  promotedItemId(item) {
196
217
  return "promo-" + item.linkText.replace(/[^A-Za-z0-9.\\\/]/igm, "");
197
218
  }
@@ -236,7 +257,7 @@ let PnMarketwebSiteheader = class {
236
257
  return (index.h("pn-mainnav-link", { name: childitem.name, href: childitem.href, target: (_a = childitem.linkTarget) !== null && _a !== void 0 ? _a : "_self", linkid: childitem.trackingId }));
237
258
  })), (item.promotedMenuItems && item.promotedMenuItems.length > 0) &&
238
259
  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) })))))));
239
- })), index.h("div", { slot: "footer", class: "siteheader-menu-footer" }, (this.gotData && this.loginDialog && !this.hideLogin) && (index.h("pn-marketweb-siteheader-login", { loginDialog: this.loginDialog, endpoint: this.endpoint, i18n: this.i18n })), (this.gotData && ((_h = this.languageSelector) === null || _h === void 0 ? void 0 : _h.languages)) && !this.hideLanguageSelector &&
260
+ })), 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 && ((_h = this.languageSelector) === null || _h === void 0 ? void 0 : _h.languages)) && !this.hideLanguageSelector &&
240
261
  index.h("pn-language-selector", { value: this.language }, this.languageSelector.languages.map(language => index.h("pn-language-selector-option", { name: language.nativeName, code: language.twoLetterISOLanguageName, selected: language.isCurrent, url: this.getLanguageVersionUrl(language) }))), !this.hideSiteSelector &&
241
262
  index.h("pn-site-selector", { language: this.language }, (this.gotData && ((_j = this.siteSelector) === null || _j === void 0 ? void 0 : _j.currentSiteTitle)) &&
242
263
  index.h("pn-site-selector-item", { heading: this.siteSelector.currentSiteTitle, description: this.siteSelector.currentSiteDescription }), (this.gotData && ((_k = this.siteSelector) === null || _k === void 0 ? void 0 : _k.siteSelections)) && this.siteSelector.siteSelections.map((site) => 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 })))));
@@ -4,7 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  const index = require('./index-0404c97e.js');
6
6
 
7
- const pnSiteFooterCss = "pn-site-footer{display:block;line-height:1.5}pn-site-footer a{color:#005D92}pn-site-footer a:hover{color:#0D234B;text-decoration:underline}pn-site-footer h3{font-size:2.4rem;margin-bottom:0.5rem;line-height:1.2}pn-site-footer p{font-size:1.6rem}pn-site-footer ul.social-media{display:-ms-flexbox;display:flex;-ms-flex-flow:row;flex-flow:row}pn-site-footer ul.social-media li{margin-right:1.6rem}pn-site-footer>svg{display:block}pn-site-footer>div{background:#F3F2F2}.pn-sitefooter-cols{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;margin:0 auto;max-width:90em}.pn-sitefooter-bottom [slot=bottom]{max-width:90em;margin:0 auto;padding:1.6rem 0;display:-ms-flexbox;display:flex;-ms-flex-flow:row;flex-flow:row;-ms-flex-pack:center;justify-content:center;-ms-flex-wrap:wrap;flex-wrap:wrap;border-top:1px solid #D3CECB;border-bottom:1px solid #D3CECB}.pn-sitefooter-bottom [slot=bottom] span,.pn-sitefooter-bottom [slot=bottom] a{line-height:2;margin:0 1.6rem;text-decoration:none}.pn-sitefooter-bottom [slot=bottom] li{line-height:2em;margin:0 1.6rem}.pn-sitefooter-logo{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:center;justify-content:center;padding:3rem}.pn-sitefooter-logo svg{display:block;width:13.3rem;height:2.6rem}";
7
+ const pnSiteFooterCss = "pn-site-footer{display:block;line-height:1.5}pn-site-footer a{color:#005D92}pn-site-footer a:hover{color:#0D234B;text-decoration:underline}pn-site-footer h3{font-size:2.4rem;margin-bottom:0.5rem;line-height:1.2}pn-site-footer p{font-size:1.6rem}pn-site-footer ul.social-media{display:-ms-flexbox;display:flex;-ms-flex-flow:row;flex-flow:row}pn-site-footer ul.social-media li{margin-right:1.6rem}pn-site-footer>svg{display:block}pn-site-footer>div{background:#F3F2F2}.pn-sitefooter-top{display:-ms-flexbox;display:flex}.pn-sitefooter-cols{-ms-flex-item-align:center;align-self:center;display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;margin:0 auto;max-width:90em}.pn-sitefooter-bottom [slot=bottom]{max-width:90em;margin:0 auto;padding:1.6rem 0;display:-ms-flexbox;display:flex;-ms-flex-flow:row;flex-flow:row;-ms-flex-pack:center;justify-content:center;-ms-flex-wrap:wrap;flex-wrap:wrap;border-top:1px solid #D3CECB;border-bottom:1px solid #D3CECB}.pn-sitefooter-bottom [slot=bottom] span,.pn-sitefooter-bottom [slot=bottom] a{line-height:2;margin:0 1.6rem;text-decoration:none}.pn-sitefooter-bottom [slot=bottom] li{line-height:2em;margin:0 1.6rem}.pn-sitefooter-logo{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:center;justify-content:center;padding:3rem}.pn-sitefooter-logo svg{display:block;width:13.3rem;height:2.6rem}";
8
8
 
9
9
  let PnSiteFooter = class {
10
10
  constructor(hostRef) {
@@ -20,7 +20,7 @@ let PnSiteFooter = class {
20
20
  };
21
21
  PnSiteFooter.style = pnSiteFooterCss;
22
22
 
23
- const pnSiteFooterColCss = "pn-site-footer-col{min-width:25%;padding:2.5em 1.5rem 0}pn-site-footer-col ul{list-style-type:none;padding:0;margin:0}pn-site-footer-col li{margin-bottom:1.6rem}pn-site-footer-col a{text-decoration:none;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}pn-site-footer-col p{margin-top:0;margin-bottom:1rem}";
23
+ const pnSiteFooterColCss = "pn-site-footer-col{min-width:20%;padding:2.5em 1.5rem 0}@media screen and (min-width: 48em){pn-site-footer-col{max-width:25%}}pn-site-footer-col ul{list-style-type:none;padding:0;margin:0}pn-site-footer-col li{margin-bottom:1.6rem}pn-site-footer-col a{text-decoration:none;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}pn-site-footer-col p{margin-top:0;margin-bottom:1rem}";
24
24
 
25
25
  let PnSiteFooterCol = class {
26
26
  constructor(hostRef) {
@@ -29,6 +29,7 @@ export class PnFilterCheckbox {
29
29
  let outsideInput = this.hostElement.querySelector("input.hidden-" + this.checkboxid);
30
30
  if (outsideInput) {
31
31
  outsideInput.value = (checkboxInput.checked) ? this.value : "";
32
+ outsideInput.dispatchEvent(new CustomEvent("change", { detail: outsideInput }));
32
33
  }
33
34
  }
34
35
  checkAndSetIndeterminateState() {
@@ -1,9 +1,10 @@
1
- import { Component, Prop, h, State, Element, Watch } from "@stencil/core";
1
+ import { Component, Prop, h, State, Element, Watch, Event } from "@stencil/core";
2
2
  import { PNLoginManager } from "./pn-marketweb-siteheader-loginmanager";
3
3
  export class PnMarketwebSiteheaderLogin {
4
4
  constructor() {
5
5
  /** Specifies which endpoint domain we should load from */
6
6
  this.endpoint = "";
7
+ this.emitEvents = true;
7
8
  // Login dialog
8
9
  this.loginDialog = null;
9
10
  this.loginManager = null;
@@ -12,12 +13,13 @@ export class PnMarketwebSiteheaderLogin {
12
13
  }
13
14
  componentWillLoad() {
14
15
  this.loginManager = new PNLoginManager({ endpoint: this.endpoint, eventTarget: this.hostElement });
16
+ this.hostElement["loginmanager"] = this.loginManager;
17
+ this.hostElement.addEventListener(this.loginManager.events.loginstatechange, this.onLoginStateChange.bind(this));
15
18
  this.init();
16
19
  }
17
20
  async init() {
18
21
  this.toggleButtonText = this.loginDialog.loginMenuLinkText;
19
- this.hostElement.addEventListener(this.loginManager.events.loginstatechange, this.onLoginStateChange.bind(this));
20
- this.loginManager.init();
22
+ this.loginManager.init(this.emitEvents);
21
23
  this.setToggleButtonText();
22
24
  }
23
25
  setToggleButtonText() {
@@ -35,8 +37,11 @@ export class PnMarketwebSiteheaderLogin {
35
37
  }
36
38
  }
37
39
  onLoginStateChange(e) {
38
- this.loggedIn = e.detail;
39
- this.setToggleButtonText();
40
+ if (this.loggedIn !== e.detail && this.emitEvents) {
41
+ this.loggedIn = e.detail;
42
+ this.loginStateChange.emit({ loggedIn: this.loggedIn, token: this.loginManager.getToken() });
43
+ this.setToggleButtonText();
44
+ }
40
45
  }
41
46
  render() {
42
47
  var _a, _b, _c;
@@ -64,7 +69,7 @@ export class PnMarketwebSiteheaderLogin {
64
69
  h("div", null,
65
70
  h("ul", null, this.loginDialog.loggedInLinks.map((link) => {
66
71
  const isLogoutLink = link.href.indexOf('logout');
67
- const href = (isLogoutLink) ? this.loginManager.getLogoutUrl(link.href.replace('logout', '')) : link.href;
72
+ const href = (isLogoutLink) ? this.loginManager.getLogoutUrl(link.href.replace('logout', '').replace('http://window.location.href/?', '').replace('https://window.location.href/?', '')) : link.href;
68
73
  return (h("li", null,
69
74
  h("a", Object.assign({ href: href }, (link.openInNewWindow && { target: '_blank' })),
70
75
  h("pn-button", { appearance: (link.primaryLinkApperance ? "dark" : "light"), onClick: () => { if (isLogoutLink) {
@@ -119,6 +124,24 @@ export class PnMarketwebSiteheaderLogin {
119
124
  "attribute": "i-1-8n",
120
125
  "reflect": false
121
126
  },
127
+ "emitEvents": {
128
+ "type": "boolean",
129
+ "mutable": false,
130
+ "complexType": {
131
+ "original": "boolean",
132
+ "resolved": "boolean",
133
+ "references": {}
134
+ },
135
+ "required": false,
136
+ "optional": false,
137
+ "docs": {
138
+ "tags": [],
139
+ "text": ""
140
+ },
141
+ "attribute": "emit-events",
142
+ "reflect": false,
143
+ "defaultValue": "true"
144
+ },
122
145
  "loginDialog": {
123
146
  "type": "unknown",
124
147
  "mutable": true,
@@ -146,6 +169,22 @@ export class PnMarketwebSiteheaderLogin {
146
169
  "loggedIn": {},
147
170
  "toggleButtonText": {}
148
171
  }; }
172
+ static get events() { return [{
173
+ "method": "loginStateChange",
174
+ "name": "loginStateChange",
175
+ "bubbles": true,
176
+ "cancelable": true,
177
+ "composed": true,
178
+ "docs": {
179
+ "tags": [],
180
+ "text": ""
181
+ },
182
+ "complexType": {
183
+ "original": "any",
184
+ "resolved": "any",
185
+ "references": {}
186
+ }
187
+ }]; }
149
188
  static get elementRef() { return "hostElement"; }
150
189
  static get watchers() { return [{
151
190
  "propName": "i18n",
@@ -59,14 +59,15 @@ class PNLoginManager {
59
59
  this.endpoint = options.endpoint ? options.endpoint : `${window.location.protocol}//${window.location.host}`;
60
60
  (_a = this.storagePrefix) !== null && _a !== void 0 ? _a : (this.storagePrefix = options.storagePrefix);
61
61
  }
62
- init() {
63
- window.addEventListener;
64
- this.checkParameters();
65
- this.checkExpireTime();
66
- if (this.store.get(this.keys.token) && !this.store.get(this.keys.user)) {
67
- this.fetchUserInfo();
62
+ init(checkParameters = true) {
63
+ if (checkParameters) {
64
+ this.checkParameters();
65
+ this.checkExpireTime();
66
+ if (this.store.get(this.keys.token) && !this.store.get(this.keys.user)) {
67
+ this.fetchUserInfo();
68
+ }
69
+ this.loginStateChange();
68
70
  }
69
- this.loginStateChange();
70
71
  }
71
72
  isLoggedIn() {
72
73
  const isLoggedIn = (this.store.get(this.keys.token) && this.store.get(this.keys.user)) ? true : false;
@@ -110,10 +111,11 @@ class PNLoginManager {
110
111
  const params = new URLSearchParams(window.location.search);
111
112
  if (params.get("oneTimeCode")) {
112
113
  const oneTimeCode = params.get("oneTimeCode");
113
- this.getToken(oneTimeCode);
114
- const currentHref = window.location.href;
115
- const paramPrefix = (currentHref.indexOf('?oneTimeCode') !== -1) ? "?" : "&";
116
- history.replaceState({}, document.querySelector('title').innerText, currentHref.replace(`${paramPrefix}oneTimeCode=${oneTimeCode}`, ''));
114
+ this.exchangeToken(oneTimeCode).then(() => {
115
+ const currentHref = window.location.href;
116
+ const paramPrefix = (currentHref.indexOf('?oneTimeCode') !== -1) ? "?" : "&";
117
+ history.replaceState({}, document.querySelector('title').innerText, currentHref.replace(`${paramPrefix}oneTimeCode=${oneTimeCode}`, ''));
118
+ });
117
119
  }
118
120
  }
119
121
  async fetchUserInfo() {
@@ -149,7 +151,10 @@ class PNLoginManager {
149
151
  this.store.remove(this.keys.expire);
150
152
  this.store.remove(this.keys.expireDate);
151
153
  }
152
- async getToken(oneTimeCode) {
154
+ getToken() {
155
+ return this.store.get(this.keys.token);
156
+ }
157
+ async exchangeToken(oneTimeCode) {
153
158
  this.clearUserData();
154
159
  const response = await fetch(`${this.getBaseUrl()}${this.endpoints.tokenExchangeEndpoint}?oneTimeCode=${oneTimeCode}`);
155
160
  const { token } = await response.json();
@@ -22,6 +22,10 @@ export class PnMarketwebSiteheader {
22
22
  this.hideSearch = false;
23
23
  /** Hides the login if set to true*/
24
24
  this.hideLogin = false;
25
+ /** Forward session to backend */
26
+ this.sessionForward = false;
27
+ /** Event based only language switch */
28
+ this.spaMode = false;
25
29
  this.gotData = false;
26
30
  this.fetchingData = false;
27
31
  // Menu state
@@ -62,11 +66,6 @@ export class PnMarketwebSiteheader {
62
66
  this.endpoint = "";
63
67
  }
64
68
  }
65
- // TODO
66
- //* Expose market and language attributes when changed internally
67
- //* Business logic to select market and language depending on domains / html tag.
68
- //* Property to stop language change from changeing url, throw an event instead.
69
- //* Fetch new data when langauge or market is changed
70
69
  async init() {
71
70
  this.setTranslations();
72
71
  await this.fetchData();
@@ -77,6 +76,9 @@ export class PnMarketwebSiteheader {
77
76
  this.i18n = translations[this.language];
78
77
  }
79
78
  }
79
+ onLanguageSelectorChange(e) {
80
+ this.language = e.detail;
81
+ }
80
82
  onLanguageChange() {
81
83
  this.setTranslations();
82
84
  this.changeLanguage.emit(this.language);
@@ -96,9 +98,12 @@ export class PnMarketwebSiteheader {
96
98
  const fetchUrl = `${endpointBase}${this.endpointPath}?market=${this.market}&language=${this.language}`;
97
99
  const response = await fetch(fetchUrl);
98
100
  const data = await response.json();
99
- this.setStateFromData(data);
101
+ await this.setStateFromData(data);
100
102
  }
101
103
  getLanguageVersionUrl(item) {
104
+ if (this.spaMode) {
105
+ return null;
106
+ }
102
107
  const alternativeTag = document.querySelector(`link[rel="alternate"][hreflang="${item.twoLetterISOLanguageName}"]`);
103
108
  if (alternativeTag) {
104
109
  return alternativeTag.getAttribute('href');
@@ -107,7 +112,7 @@ export class PnMarketwebSiteheader {
107
112
  // Add trailing slash to domain if it's missing
108
113
  return siteUrl + ((siteUrl.lastIndexOf("/") !== siteUrl.length - 1) ? "/" : "") + item.twoLetterISOLanguageName;
109
114
  }
110
- setStateFromData(data) {
115
+ async setStateFromData(data) {
111
116
  if (typeof data !== "object") {
112
117
  console.warn('Data was not valid', data);
113
118
  }
@@ -131,10 +136,26 @@ export class PnMarketwebSiteheader {
131
136
  // Set language selector
132
137
  this.languageSelector = data.languageSelectorViewModel;
133
138
  this.loginDialog = data.loginViewModel;
139
+ await this.spaModeAdjustments();
134
140
  this.gotData = true;
135
141
  this.fetchingData = true;
136
142
  window.setTimeout(() => { this.checkMenuOverflow(); }, 100);
137
143
  }
144
+ async spaModeAdjustments() {
145
+ if (!this.spaMode) {
146
+ return;
147
+ }
148
+ return;
149
+ }
150
+ onLoginStateChange(e) {
151
+ var _a, _b;
152
+ 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) {
153
+ try {
154
+ fetch('/api/userprofile/sync?token=' + e.detail.token);
155
+ }
156
+ catch (e) { }
157
+ }
158
+ }
138
159
  promotedItemId(item) {
139
160
  return "promo-" + item.linkText.replace(/[^A-Za-z0-9.\\\/]/igm, "");
140
161
  }
@@ -204,7 +225,7 @@ export class PnMarketwebSiteheader {
204
225
  h("pn-mainnav-list", { heading: item.promotedMenuItemsHeader }, item.promotedMenuItems.map((childitem) => (h("pn-mainnav-link", { href: childitem.href, name: childitem.linkText, target: childitem.openInNewWindow ? "_blank" : "_self", linkid: this.promotedItemId(childitem) })))))));
205
226
  })),
206
227
  h("div", { slot: "footer", class: "siteheader-menu-footer" },
207
- (this.gotData && this.loginDialog && !this.hideLogin) && (h("pn-marketweb-siteheader-login", { loginDialog: this.loginDialog, endpoint: this.endpoint, i18n: this.i18n })),
228
+ (this.gotData && this.loginDialog && !this.hideLogin) && (h("pn-marketweb-siteheader-login", { emitEvents: false, loginDialog: this.loginDialog, endpoint: this.endpoint, i18n: this.i18n })),
208
229
  (this.gotData && ((_h = this.languageSelector) === null || _h === void 0 ? void 0 : _h.languages)) && !this.hideLanguageSelector &&
209
230
  h("pn-language-selector", { value: this.language }, this.languageSelector.languages.map(language => h("pn-language-selector-option", { name: language.nativeName, code: language.twoLetterISOLanguageName, selected: language.isCurrent, url: this.getLanguageVersionUrl(language) }))),
210
231
  !this.hideSiteSelector &&
@@ -367,6 +388,42 @@ export class PnMarketwebSiteheader {
367
388
  "attribute": "hide-login",
368
389
  "reflect": true,
369
390
  "defaultValue": "false"
391
+ },
392
+ "sessionForward": {
393
+ "type": "boolean",
394
+ "mutable": false,
395
+ "complexType": {
396
+ "original": "boolean",
397
+ "resolved": "boolean",
398
+ "references": {}
399
+ },
400
+ "required": false,
401
+ "optional": false,
402
+ "docs": {
403
+ "tags": [],
404
+ "text": "Forward session to backend"
405
+ },
406
+ "attribute": "session-forward",
407
+ "reflect": false,
408
+ "defaultValue": "false"
409
+ },
410
+ "spaMode": {
411
+ "type": "boolean",
412
+ "mutable": false,
413
+ "complexType": {
414
+ "original": "boolean",
415
+ "resolved": "boolean",
416
+ "references": {}
417
+ },
418
+ "required": false,
419
+ "optional": false,
420
+ "docs": {
421
+ "tags": [],
422
+ "text": "Event based only language switch"
423
+ },
424
+ "attribute": "spa-mode",
425
+ "reflect": false,
426
+ "defaultValue": "false"
370
427
  }
371
428
  }; }
372
429
  static get states() { return {
@@ -421,6 +478,18 @@ export class PnMarketwebSiteheader {
421
478
  "methodName": "onMarketChange"
422
479
  }]; }
423
480
  static get listeners() { return [{
481
+ "name": "setLanguage",
482
+ "method": "onLanguageSelectorChange",
483
+ "target": undefined,
484
+ "capture": false,
485
+ "passive": false
486
+ }, {
487
+ "name": "loginStateChange",
488
+ "method": "onLoginStateChange",
489
+ "target": undefined,
490
+ "capture": false,
491
+ "passive": false
492
+ }, {
424
493
  "name": "resize",
425
494
  "method": "handleResize",
426
495
  "target": "window",