@postnord/pn-marketweb-components 1.0.20 → 1.0.25

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 (59) 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 +38 -20
  4. package/cjs/pn-mainnav-link.cjs.entry.js +1 -1
  5. package/cjs/{pn-mainnav-store-661b0b11.js → pn-mainnav-store-87a95686.js} +1 -0
  6. package/cjs/pn-market-web-components.cjs.js +1 -1
  7. package/cjs/pn-marketweb-siteheader.cjs.entry.js +29 -8
  8. package/collection/components/input/pn-filter-checkbox/pn-filter-checkbox.js +1 -0
  9. package/collection/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader-login.js +45 -6
  10. package/collection/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader-loginmanager.js +17 -12
  11. package/collection/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader.js +77 -8
  12. package/collection/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader.stories.js +19 -4
  13. package/collection/components/navigation/pn-language-selector/pn-language-selector.js +19 -2
  14. package/collection/components/navigation/pn-mainnav/pn-mainnav-level.css +4 -0
  15. package/collection/components/navigation/pn-mainnav/pn-mainnav-level.js +5 -1
  16. package/collection/components/navigation/pn-mainnav/pn-mainnav-store.js +1 -0
  17. package/collection/components/navigation/pn-mainnav/pn-mainnav.js +1 -1
  18. package/custom-elements/index.js +71 -30
  19. package/esm/loader.js +1 -1
  20. package/esm/pn-filter-checkbox.entry.js +1 -0
  21. package/esm/pn-language-selector_9.entry.js +39 -21
  22. package/esm/pn-mainnav-link.entry.js +1 -1
  23. package/esm/{pn-mainnav-store-4b030e31.js → pn-mainnav-store-8e518460.js} +1 -0
  24. package/esm/pn-market-web-components.js +1 -1
  25. package/esm/pn-marketweb-siteheader.entry.js +29 -8
  26. package/esm-es5/loader.js +1 -1
  27. package/esm-es5/pn-filter-checkbox.entry.js +1 -1
  28. package/esm-es5/pn-language-selector_9.entry.js +1 -1
  29. package/esm-es5/pn-mainnav-link.entry.js +1 -1
  30. package/esm-es5/pn-mainnav-store-8e518460.js +1 -0
  31. package/esm-es5/pn-market-web-components.js +1 -1
  32. package/esm-es5/pn-marketweb-siteheader.entry.js +1 -1
  33. package/package.json +1 -1
  34. package/pn-market-web-components/p-015a433e.entry.js +1 -0
  35. package/pn-market-web-components/{p-facf4ecb.system.entry.js → p-251d44f2.system.entry.js} +1 -1
  36. package/pn-market-web-components/p-25bdf3f8.system.js +1 -1
  37. package/pn-market-web-components/{p-8d62c46f.system.entry.js → p-4feb3557.system.entry.js} +1 -1
  38. package/pn-market-web-components/p-86a9f853.system.js +1 -0
  39. package/pn-market-web-components/p-88ab0d91.system.entry.js +1 -0
  40. package/pn-market-web-components/p-8dad5ed9.js +1 -0
  41. package/pn-market-web-components/p-b27c3539.system.entry.js +1 -0
  42. package/pn-market-web-components/p-c2b8aa29.entry.js +1 -0
  43. package/pn-market-web-components/p-d7441208.entry.js +1 -0
  44. package/pn-market-web-components/{p-f7d60229.entry.js → p-e220ea83.entry.js} +1 -1
  45. package/pn-market-web-components/pn-market-web-components.esm.js +1 -1
  46. package/types/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader-login.d.ts +3 -0
  47. package/types/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader-loginmanager.d.ts +8 -3
  48. package/types/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader.d.ts +8 -1
  49. package/types/components/navigation/pn-language-selector/pn-language-selector.d.ts +2 -0
  50. package/types/components/navigation/pn-mainnav/pn-mainnav-store.d.ts +2 -0
  51. package/types/components.d.ts +20 -0
  52. package/esm-es5/pn-mainnav-store-4b030e31.js +0 -1
  53. package/pn-market-web-components/p-14f9acfd.entry.js +0 -1
  54. package/pn-market-web-components/p-2da203c9.system.entry.js +0 -1
  55. package/pn-market-web-components/p-582dbd9c.entry.js +0 -1
  56. package/pn-market-web-components/p-6b735c44.system.js +0 -1
  57. package/pn-market-web-components/p-7f853b67.system.entry.js +0 -1
  58. package/pn-market-web-components/p-8c072330.entry.js +0 -1
  59. package/pn-market-web-components/p-a74e5481.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() {
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  const index = require('./index-0404c97e.js');
6
- const pnMainnavStore = require('./pn-mainnav-store-661b0b11.js');
6
+ const pnMainnavStore = require('./pn-mainnav-store-87a95686.js');
7
7
  require('./index-ea886985.js');
8
8
 
9
9
  const translations$1 = {
@@ -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]) {
@@ -217,13 +219,13 @@ let PnMainnav = class {
217
219
  pnMainnavStore.state.openLevel = event.detail;
218
220
  }
219
221
  render() {
220
- return (index.h(index.Host, null, index.h("div", { class: "mainnav-toggle" }, index.h("button", { "aria-controls": this.navigationId, "aria-expanded": pnMainnavStore.state.openMenu + '', onClick: this.setMenuOpenState.bind(this) }, pnMainnavStore.state.i18n.mainMenuButton, index.h("pn-icon", { symbol: pnMainnavStore.state.openMenu ? "close" : "bars", color: "white" }))), index.h("nav", { class: "mainnav", "aria-label": this.navLabel, "data-menu-open": pnMainnavStore.state.openMenu + '', id: this.navigationId }, index.h("slot", null))));
222
+ return (index.h(index.Host, null, index.h("div", { class: "mainnav-toggle" }, index.h("button", { "aria-controls": this.navigationId, "aria-expanded": pnMainnavStore.state.openMenu + '', onClick: this.setMenuOpenState.bind(this) }, pnMainnavStore.state.i18n.mainMenuButton, index.h("pn-icon", { symbol: pnMainnavStore.state.openMenu ? "close" : "bars", color: "white" }))), index.h("nav", { class: "mainnav", "aria-label": this.navLabel, "data-menu-open": pnMainnavStore.state.openMenu + '', "data-menu-currentlevel": pnMainnavStore.state.currentLevel, id: this.navigationId }, index.h("slot", null))));
221
223
  }
222
224
  get hostElement() { return index.getElement(this); }
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}}.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) {
@@ -282,9 +284,13 @@ let PnMainnavLevel = class {
282
284
  }
283
285
  onChangeOpenLevel() {
284
286
  this.isOpen = pnMainnavStore.state.openLevel === this.levelId;
287
+ pnMainnavStore.state.currentLevel = this.level;
285
288
  }
286
289
  render() {
287
- return (index.h(index.Host, Object.assign({ role: "navigation" }, ((this.level > 1 && this.levelId) ? { 'aria-hidden': (!this.isOpen) + '' } : {}), { "data-level-listcount": this.listCount + '', "data-level-alignment": this.alignment, "data-level": this.level + '' }, (this.levelId ? { id: this.levelId } : {})), (this.level > 1) ? (index.h("div", { class: "mainnav-level-header" }, index.h("label", { htmlFor: this.levelId }, pnMainnavStore.state.i18n.menuGoBackButton), index.h("button", { class: "secondlevel-backbtn", onClick: () => pnMainnavStore.state.openLevel = '', "aria-expanded": (pnMainnavStore.state.openLevel === this.levelId) + '' }, index.h("pn-icon", { symbol: "arrow-left", color: "blue700" }), pnMainnavStore.state.i18n.menuStartButton), (this.parentHref && this.parentName) ? index.h("pn-mainnav-link", { href: this.parentHref, name: this.parentName, linkid: this.parentLinkId }) : null)) : null, index.h("slot", { name: "top" }), index.h("slot", null), index.h("slot", { name: "additional" }), index.h("slot", { name: "footer" })));
290
+ return (index.h(index.Host, Object.assign({ role: "navigation" }, ((this.level > 1 && this.levelId) ? { 'aria-hidden': (!this.isOpen) + '' } : {}), { "data-level-listcount": this.listCount + '', "data-level-alignment": this.alignment, "data-level": this.level + '' }, (this.levelId ? { id: this.levelId } : {})), (this.level > 1) ? (index.h("div", { class: "mainnav-level-header" }, index.h("label", { htmlFor: this.levelId }, pnMainnavStore.state.i18n.menuGoBackButton), index.h("button", { class: "secondlevel-backbtn", onClick: () => {
291
+ pnMainnavStore.state.openLevel = '';
292
+ pnMainnavStore.state.currentLevel = 1;
293
+ }, "aria-expanded": (pnMainnavStore.state.openLevel === this.levelId) + '' }, index.h("pn-icon", { symbol: "arrow-left", color: "blue700" }), pnMainnavStore.state.i18n.menuStartButton), (this.parentHref && this.parentName) ? index.h("pn-mainnav-link", { href: this.parentHref, name: this.parentName, linkid: this.parentLinkId }) : null)) : null, index.h("slot", { name: "top" }), index.h("slot", null), index.h("slot", { name: "additional" }), index.h("slot", { name: "footer" })));
288
294
  }
289
295
  get hostElement() { return index.getElement(this); }
290
296
  static get watchers() { return {
@@ -372,13 +378,15 @@ class PNLoginManager {
372
378
  this.endpoint = options.endpoint ? options.endpoint : `${window.location.protocol}//${window.location.host}`;
373
379
  (_a = this.storagePrefix) !== null && _a !== void 0 ? _a : (this.storagePrefix = options.storagePrefix);
374
380
  }
375
- init() {
376
- this.checkParameters();
377
- this.checkExpireTime();
378
- if (this.store.get(this.keys.token) && !this.store.get(this.keys.user)) {
379
- 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();
380
389
  }
381
- this.loginStateChange();
382
390
  }
383
391
  isLoggedIn() {
384
392
  const isLoggedIn = (this.store.get(this.keys.token) && this.store.get(this.keys.user)) ? true : false;
@@ -422,10 +430,11 @@ class PNLoginManager {
422
430
  const params = new URLSearchParams(window.location.search);
423
431
  if (params.get("oneTimeCode")) {
424
432
  const oneTimeCode = params.get("oneTimeCode");
425
- this.getToken(oneTimeCode);
426
- const currentHref = window.location.href;
427
- const paramPrefix = (currentHref.indexOf('?oneTimeCode') !== -1) ? "?" : "&";
428
- history.replaceState({}, document.querySelector('title').innerText, currentHref.replace(`${paramPrefix}oneTimeCode=${oneTimeCode}`, ''));
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
+ });
429
438
  }
430
439
  }
431
440
  async fetchUserInfo() {
@@ -461,7 +470,10 @@ class PNLoginManager {
461
470
  this.store.remove(this.keys.expire);
462
471
  this.store.remove(this.keys.expireDate);
463
472
  }
464
- async getToken(oneTimeCode) {
473
+ getToken() {
474
+ return this.store.get(this.keys.token);
475
+ }
476
+ async exchangeToken(oneTimeCode) {
465
477
  this.clearUserData();
466
478
  const response = await fetch(`${this.getBaseUrl()}${this.endpoints.tokenExchangeEndpoint}?oneTimeCode=${oneTimeCode}`);
467
479
  const { token } = await response.json();
@@ -501,8 +513,10 @@ const pnMarketwebSiteheaderLoginCss = "pn-marketweb-siteheader-login{padding:1re
501
513
  let PnMarketwebSiteheaderLogin = class {
502
514
  constructor(hostRef) {
503
515
  index.registerInstance(this, hostRef);
516
+ this.loginStateChange = index.createEvent(this, "loginStateChange", 7);
504
517
  /** Specifies which endpoint domain we should load from */
505
518
  this.endpoint = "";
519
+ this.emitEvents = true;
506
520
  // Login dialog
507
521
  this.loginDialog = null;
508
522
  this.loginManager = null;
@@ -511,12 +525,13 @@ let PnMarketwebSiteheaderLogin = class {
511
525
  }
512
526
  componentWillLoad() {
513
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));
514
530
  this.init();
515
531
  }
516
532
  async init() {
517
533
  this.toggleButtonText = this.loginDialog.loginMenuLinkText;
518
- this.hostElement.addEventListener(this.loginManager.events.loginstatechange, this.onLoginStateChange.bind(this));
519
- this.loginManager.init();
534
+ this.loginManager.init(this.emitEvents);
520
535
  this.setToggleButtonText();
521
536
  }
522
537
  setToggleButtonText() {
@@ -534,8 +549,11 @@ let PnMarketwebSiteheaderLogin = class {
534
549
  }
535
550
  }
536
551
  onLoginStateChange(e) {
537
- this.loggedIn = e.detail;
538
- 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
+ }
539
557
  }
540
558
  render() {
541
559
  var _a, _b, _c;
@@ -553,7 +571,7 @@ let PnMarketwebSiteheaderLogin = class {
553
571
  :
554
572
  index.h("div", null, index.h("ul", null, this.loginDialog.loggedInLinks.map((link) => {
555
573
  const isLogoutLink = link.href.indexOf('logout');
556
- 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;
557
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: () => {
558
576
  if (isLogoutLink) {
559
577
  this.loginManager.clearUserData();
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  const index = require('./index-0404c97e.js');
6
- const pnMainnavStore = require('./pn-mainnav-store-661b0b11.js');
6
+ const pnMainnavStore = require('./pn-mainnav-store-87a95686.js');
7
7
  require('./index-ea886985.js');
8
8
 
9
9
  const pnMainnavLinkCss = "pn-mainnav-link{display:block}pn-mainnav-link button,pn-mainnav-link a{font-weight:normal;position:relative;border:0 none;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;background-color:transparent;color:#005D92}pn-mainnav-link button:hover,pn-mainnav-link button:focus,pn-mainnav-link a:hover,pn-mainnav-link a:focus{background-color:#FFFFFF;color:#005D92;outline:0;-webkit-box-shadow:none;box-shadow:none}pn-mainnav-link button:active,pn-mainnav-link a:active{background-color:#F3F2F2;color:#00A0D6;-webkit-box-shadow:none;box-shadow:none}@media screen and (min-width: 64em){[data-level=\"1\"] pn-mainnav-link{height:100%;padding-left:0;position:relative;scroll-snap-align:center}}[data-level=\"1\"] pn-mainnav-link:first-child{border-top:0.1rem solid #F3F2F2}@media screen and (min-width: 64em){[data-level=\"1\"] pn-mainnav-link:first-child{border:0}}[data-level=\"1\"] pn-mainnav-link>button,[data-level=\"1\"] pn-mainnav-link>a{font-size:2rem;width:100%;border-bottom:0.1rem solid #F3F2F2;height:auto;padding:1.9rem 0 1.9rem 3rem}@media screen and (min-width: 64em){[data-level=\"1\"] pn-mainnav-link>button,[data-level=\"1\"] pn-mainnav-link>a{height:100%;border:0;font-size:1.6rem;font-weight:normal;position:relative;outline:0;overflow:hidden;padding:1.6rem 1.6rem;white-space:nowrap}[data-level=\"1\"] pn-mainnav-link>button::before,[data-level=\"1\"] pn-mainnav-link>a::before{content:\"\";background-color:#00A0D6;position:absolute;bottom:0;left:0;width:100%;height:0.5em;border-radius:0.5em 0.5em 0 0;-webkit-transform:translateY(100%);transform:translateY(100%);-webkit-transition:-webkit-transform 0.1s cubic-bezier(0.64, 0.01, 0.67, 0.92);transition:-webkit-transform 0.1s cubic-bezier(0.64, 0.01, 0.67, 0.92);transition:transform 0.1s cubic-bezier(0.64, 0.01, 0.67, 0.92);transition:transform 0.1s cubic-bezier(0.64, 0.01, 0.67, 0.92), -webkit-transform 0.1s cubic-bezier(0.64, 0.01, 0.67, 0.92)}[data-level=\"1\"] pn-mainnav-link>button:hover::before,[data-level=\"1\"] pn-mainnav-link>button:focus::before,[data-level=\"1\"] pn-mainnav-link>a:hover::before,[data-level=\"1\"] pn-mainnav-link>a:focus::before{-webkit-transform:translateY(0);transform:translateY(0)}[data-level=\"1\"] pn-mainnav-link>button:active,[data-level=\"1\"] pn-mainnav-link>a:active{outline:0;-webkit-box-shadow:none;box-shadow:none;color:#005D92}[data-level=\"1\"] pn-mainnav-link>button:active::before,[data-level=\"1\"] pn-mainnav-link>a:active::before{background-color:#8EDDF9;-webkit-transform:translateY(0);transform:translateY(0)}}@media screen and (min-width: 64em){[data-level=\"1\"] pn-mainnav-link>button:hover,[data-level=\"1\"] pn-mainnav-link>button:focus,[data-level=\"1\"] pn-mainnav-link>a:hover,[data-level=\"1\"] pn-mainnav-link>a:focus{text-decoration:none}}@media screen and (min-width: 64em){[data-level=\"1\"] pn-mainnav-link>button[aria-expanded=true]::before,[data-level=\"1\"] pn-mainnav-link>a[aria-expanded=true]::before{content:\"\";background-color:#00A0D6;position:absolute;bottom:0;left:0;width:100%;height:0.5em;border-radius:0.5em 0.5em 0 0;-webkit-transform:translateY(0);transform:translateY(0);-webkit-transition:-webkit-transform 0.1s cubic-bezier(0.64, 0.01, 0.67, 0.92);transition:-webkit-transform 0.1s cubic-bezier(0.64, 0.01, 0.67, 0.92);transition:transform 0.1s cubic-bezier(0.64, 0.01, 0.67, 0.92);transition:transform 0.1s cubic-bezier(0.64, 0.01, 0.67, 0.92), -webkit-transform 0.1s cubic-bezier(0.64, 0.01, 0.67, 0.92)}}[data-level=\"1\"] pn-mainnav-link [aria-expanded=true] .first-level_icon{-webkit-transform:rotateX(180deg);transform:rotateX(180deg)}[data-level=\"1\"] pn-mainnav-link pn-icon.first-level_icon{-webkit-transition:0.25s linear transform;transition:0.25s linear transform;width:1.92rem;height:1.92rem;display:none}@media screen and (min-width: 64em){[data-level=\"1\"] pn-mainnav-link pn-icon.first-level_icon{display:block}}[data-level=\"1\"] pn-mainnav-link pn-icon.first-level_arrow{display:block;position:absolute;height:2.4rem;width:2.4rem;right:2.4rem;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}@media screen and (min-width: 64em){[data-level=\"1\"] pn-mainnav-link pn-icon.first-level_arrow{display:none}}[data-level=\"1\"] pn-mainnav-link pn-icon svg{pointer-events:none;speak:none;width:100%;height:100%}@media screen and (min-width: 64em){pn-mainnav-level[data-level=\"2\"]:not([data-level-listcount=\"1\"]) pn-mainnav-list:last-child pn-mainnav-link>a{min-width:unset}}[data-level=\"2\"] pn-mainnav-link{position:static;display:inline-block;width:100%;height:auto}@media screen and (min-width: 64em){[data-level=\"2\"] pn-mainnav-link{padding-left:0;margin-bottom:1.6rem}}[data-level=\"2\"] pn-mainnav-link>a{font-size:1.6rem;border-bottom:0.1rem solid #F3F2F2;padding:2.2rem 0 2.2rem 3rem;white-space:normal}@media screen and (min-width: 64em){[data-level=\"2\"] pn-mainnav-link>a{min-width:16em;border:0;border-radius:1rem;padding:1.4rem 1.6rem}}[data-level=\"2\"] pn-mainnav-link>a:hover{background-color:#FFFFFF;color:#005D92}[data-level=\"2\"] pn-mainnav-link>a:hover,[data-level=\"2\"] pn-mainnav-link>a:focus{-webkit-box-shadow:none;box-shadow:none}@media screen and (min-width: 64em){[data-level=\"2\"] pn-mainnav-link>a:hover,[data-level=\"2\"] pn-mainnav-link>a:focus{background-color:#F3F2F2;color:#005D92;text-decoration:underline;outline:0}}[data-level=\"2\"] pn-mainnav-link>a:hover::before,[data-level=\"2\"] pn-mainnav-link>a:focus::before{content:none}[data-level=\"2\"] pn-mainnav-link>a:active{-webkit-box-shadow:none;box-shadow:none}@media screen and (min-width: 64em){[data-level=\"2\"] pn-mainnav-link>a:active{background-color:#F3F2F2;color:#00A0D6;outline:0}}[data-level=\"2\"] pn-mainnav-link>a:active::before{content:none}[data-level=\"2\"] pn-mainnav-link pn-icon{display:inline-block;margin-left:0.2em;min-width:1.5rem;width:1.5rem;height:1.5rem}";
@@ -5,6 +5,7 @@ const index = require('./index-ea886985.js');
5
5
  // Read more about how stencil stores work here: https://stenciljs.com/docs/stencil-store
6
6
  const { state, onChange } = index.createStore({
7
7
  openLevel: '',
8
+ currentLevel: 1,
8
9
  openMenu: false,
9
10
  i18n: {
10
11
  menuHomeButton: '',
@@ -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 })))));
@@ -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();