@postnord/pn-marketweb-components 3.4.21 → 3.4.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/cjs/loader.cjs.js +1 -1
  2. package/cjs/pn-dropdown-with-multi-input-rows-row.cjs.entry.js +2 -1
  3. package/cjs/pn-dropdown-with-multi-input-rows-row.cjs.entry.js.map +1 -1
  4. package/cjs/pn-dropdown-with-multi-input-rows.cjs.entry.js +5 -4
  5. package/cjs/pn-dropdown-with-multi-input-rows.cjs.entry.js.map +1 -1
  6. package/cjs/pn-language-selector_9.cjs.entry.js +7 -1
  7. package/cjs/pn-language-selector_9.cjs.entry.js.map +1 -1
  8. package/cjs/pn-market-web-components.cjs.js +1 -1
  9. package/cjs/pn-multi-row-connected-dropdown-row.cjs.entry.js +26 -25
  10. package/cjs/pn-multi-row-connected-dropdown-row.cjs.entry.js.map +1 -1
  11. package/cjs/pn-multi-row-connected-dropdown.cjs.entry.js +7 -6
  12. package/cjs/pn-multi-row-connected-dropdown.cjs.entry.js.map +1 -1
  13. package/cjs/pn-teaser-card.cjs.entry.js +1 -1
  14. package/cjs/pn-teaser-card.cjs.entry.js.map +1 -1
  15. package/collection/components/cards/pn-teaser-card/pn-teaser-card.css +30 -30
  16. package/collection/components/cards/pn-teaser-card/pn-teaser-card.stories.js +2 -2
  17. package/collection/components/input/pn-dropdown-with-multi-input-rows/pn-dropdown-with-multi-input-rows-row.js +20 -1
  18. package/collection/components/input/pn-dropdown-with-multi-input-rows/pn-dropdown-with-multi-input-rows-row.js.map +1 -1
  19. package/collection/components/input/pn-dropdown-with-multi-input-rows/pn-dropdown-with-multi-input-rows.js +23 -4
  20. package/collection/components/input/pn-dropdown-with-multi-input-rows/pn-dropdown-with-multi-input-rows.js.map +1 -1
  21. package/collection/components/input/pn-dropdown-with-multi-input-rows/pn-dropdown-with-multi-input-rows.stories.js +2 -0
  22. package/collection/components/input/pn-multi-row-connected-dropdown/pn-multi-row-connected-dropdown-row.js +45 -26
  23. package/collection/components/input/pn-multi-row-connected-dropdown/pn-multi-row-connected-dropdown-row.js.map +1 -1
  24. package/collection/components/input/pn-multi-row-connected-dropdown/pn-multi-row-connected-dropdown.js +25 -6
  25. package/collection/components/input/pn-multi-row-connected-dropdown/pn-multi-row-connected-dropdown.js.map +1 -1
  26. package/collection/components/input/pn-multi-row-connected-dropdown/pn-multi-row-connected-dropdown.stories.js +2 -0
  27. package/collection/components/navigation/pn-language-selector/pn-language-selector-option.js +7 -1
  28. package/collection/components/navigation/pn-language-selector/pn-language-selector-option.js.map +1 -1
  29. package/components/pn-dropdown-with-multi-input-rows-row2.js +3 -1
  30. package/components/pn-dropdown-with-multi-input-rows-row2.js.map +1 -1
  31. package/components/pn-dropdown-with-multi-input-rows.js +6 -4
  32. package/components/pn-dropdown-with-multi-input-rows.js.map +1 -1
  33. package/components/pn-language-selector-option2.js +7 -1
  34. package/components/pn-language-selector-option2.js.map +1 -1
  35. package/components/pn-multi-row-connected-dropdown-row2.js +28 -26
  36. package/components/pn-multi-row-connected-dropdown-row2.js.map +1 -1
  37. package/components/pn-multi-row-connected-dropdown.js +8 -6
  38. package/components/pn-multi-row-connected-dropdown.js.map +1 -1
  39. package/components/pn-teaser-card.js +1 -1
  40. package/components/pn-teaser-card.js.map +1 -1
  41. package/esm/loader.js +1 -1
  42. package/esm/pn-dropdown-with-multi-input-rows-row.entry.js +2 -1
  43. package/esm/pn-dropdown-with-multi-input-rows-row.entry.js.map +1 -1
  44. package/esm/pn-dropdown-with-multi-input-rows.entry.js +5 -4
  45. package/esm/pn-dropdown-with-multi-input-rows.entry.js.map +1 -1
  46. package/esm/pn-language-selector_9.entry.js +7 -1
  47. package/esm/pn-language-selector_9.entry.js.map +1 -1
  48. package/esm/pn-market-web-components.js +1 -1
  49. package/esm/pn-multi-row-connected-dropdown-row.entry.js +26 -25
  50. package/esm/pn-multi-row-connected-dropdown-row.entry.js.map +1 -1
  51. package/esm/pn-multi-row-connected-dropdown.entry.js +7 -6
  52. package/esm/pn-multi-row-connected-dropdown.entry.js.map +1 -1
  53. package/esm/pn-teaser-card.entry.js +1 -1
  54. package/esm/pn-teaser-card.entry.js.map +1 -1
  55. package/package.json +1 -1
  56. package/pn-market-web-components/p-0bf27e1a.entry.js +2 -0
  57. package/pn-market-web-components/p-0bf27e1a.entry.js.map +1 -0
  58. package/pn-market-web-components/p-0c54be24.entry.js +2 -0
  59. package/pn-market-web-components/p-0c54be24.entry.js.map +1 -0
  60. package/pn-market-web-components/p-655b1ddf.entry.js +2 -0
  61. package/pn-market-web-components/p-655b1ddf.entry.js.map +1 -0
  62. package/pn-market-web-components/p-725aba56.entry.js +2 -0
  63. package/pn-market-web-components/p-725aba56.entry.js.map +1 -0
  64. package/pn-market-web-components/p-cff67e55.entry.js +2 -0
  65. package/pn-market-web-components/p-cff67e55.entry.js.map +1 -0
  66. package/pn-market-web-components/p-fb580773.entry.js +2 -0
  67. package/pn-market-web-components/p-fb580773.entry.js.map +1 -0
  68. package/pn-market-web-components/pn-market-web-components.esm.js +1 -1
  69. package/pn-market-web-components/pn-market-web-components.esm.js.map +1 -1
  70. package/types/components/input/pn-dropdown-with-multi-input-rows/pn-dropdown-with-multi-input-rows-row.d.ts +1 -0
  71. package/types/components/input/pn-dropdown-with-multi-input-rows/pn-dropdown-with-multi-input-rows.d.ts +1 -0
  72. package/types/components/input/pn-multi-row-connected-dropdown/pn-multi-row-connected-dropdown-row.d.ts +2 -1
  73. package/types/components/input/pn-multi-row-connected-dropdown/pn-multi-row-connected-dropdown.d.ts +2 -1
  74. package/types/components/navigation/pn-language-selector/pn-language-selector-option.d.ts +2 -0
  75. package/types/components.d.ts +8 -0
  76. package/vscode-data.json +16 -0
  77. package/pn-market-web-components/p-2551b0de.entry.js +0 -2
  78. package/pn-market-web-components/p-2551b0de.entry.js.map +0 -1
  79. package/pn-market-web-components/p-6f1dd775.entry.js +0 -2
  80. package/pn-market-web-components/p-6f1dd775.entry.js.map +0 -1
  81. package/pn-market-web-components/p-88013a39.entry.js +0 -2
  82. package/pn-market-web-components/p-88013a39.entry.js.map +0 -1
  83. package/pn-market-web-components/p-8f58dac3.entry.js +0 -2
  84. package/pn-market-web-components/p-8f58dac3.entry.js.map +0 -1
  85. package/pn-market-web-components/p-daba7df2.entry.js +0 -2
  86. package/pn-market-web-components/p-daba7df2.entry.js.map +0 -1
  87. package/pn-market-web-components/p-ef182c3e.entry.js +0 -2
  88. package/pn-market-web-components/p-ef182c3e.entry.js.map +0 -1
@@ -1,2 +0,0 @@
1
- import{r as e,c as t,g as n,h as i,d as o}from"./p-bb1c965e.js";import{s as a,o as s}from"./p-e09a907b.js";import{b as r}from"./p-7e3afa8c.js";import{a as l}from"./p-575f557a.js";import{s as h}from"./p-13190b30.js";import{c as d}from"./p-2509d18d.js";import{s as c}from"./p-66d71724.js";import{a as u}from"./p-3fdca5bd.js";const m='<svg class="pn-icon-svg" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" fill-rule="evenodd" d="M16.707 11.293a1 1 0 0 1 0 1.414l-6 6a1 1 0 0 1-1.414-1.414L14.586 12 9.293 6.707a1 1 0 0 1 1.414-1.414z" clip-rule="evenodd"/></svg>';const p=m;const g='<svg class="pn-icon-svg" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" fill-rule="evenodd" d="M4.293 4.293a1 1 0 0 1 1.414 0L12 10.586l6.293-6.293a1 1 0 1 1 1.414 1.414L13.414 12l6.293 6.293a1 1 0 0 1-1.414 1.414L12 13.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L10.586 12 4.293 5.707a1 1 0 0 1 0-1.414" clip-rule="evenodd"/></svg>';const f=g;const b='<svg class="pn-icon-svg" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" fill-rule="evenodd" d="M4.252 10A8 8 0 0 0 4 12c0 .69.088 1.36.252 2h3.166a13.8 13.8 0 0 1 0-4zm.818-2h2.795a13.6 13.6 0 0 1 1.719-3.629A8.02 8.02 0 0 0 5.07 8M12 4.48A11.7 11.7 0 0 0 9.972 8h4.056A11.7 11.7 0 0 0 12 4.48M14.557 10H9.443a11.8 11.8 0 0 0 0 4h5.114a11.8 11.8 0 0 0 0-4m2.025 4a13.8 13.8 0 0 0 0-4h3.166c.165.64.252 1.31.252 2s-.087 1.36-.252 2zm-2.554 2H9.972A11.7 11.7 0 0 0 12 19.52 11.7 11.7 0 0 0 14.028 16m-4.444 3.629A13.6 13.6 0 0 1 7.864 16H5.07a8.02 8.02 0 0 0 4.514 3.629m4.832 0A13.6 13.6 0 0 0 16.136 16h2.794a8.02 8.02 0 0 1-4.514 3.629M18.93 8h-2.795a13.6 13.6 0 0 0-1.719-3.629A8.02 8.02 0 0 1 18.93 8M2 12C2 6.477 6.477 2 12 2s10 4.477 10 10-4.477 10-10 10S2 17.523 2 12" clip-rule="evenodd"/></svg>';const v=b;const w='<svg class="pn-icon-svg" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" fill-rule="evenodd" d="M7.5 7.5a4.5 4.5 0 1 1 9 0 4.5 4.5 0 0 1-9 0M12 5a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5M4.928 20.372a1 1 0 0 1-1.856-.743l.883.353a82 82 0 0 1-.883-.354v-.002l.001-.002.003-.007.008-.018a4 4 0 0 1 .114-.25c.078-.161.193-.383.35-.645.315-.523.8-1.217 1.495-1.911C6.444 15.39 8.688 14 12 14s5.556 1.391 6.957 2.793a10 10 0 0 1 1.494 1.911 8 8 0 0 1 .44.837q.016.036.025.058l.008.018.003.007.001.004-.883.354.883-.353a1 1 0 0 1-1.856.744v.001l.001.001v-.002a2 2 0 0 0-.07-.15 6 6 0 0 0-.267-.49 8 8 0 0 0-1.193-1.526C16.444 17.11 14.688 16 12 16s-4.444 1.109-5.543 2.207a8 8 0 0 0-1.193 1.526 6 6 0 0 0-.336.64m0 0-.001.003zm14.144.001" clip-rule="evenodd"/></svg>';const k=w;const y={sv:{heading:"Språk"},en:{heading:"Language"},da:{heading:"Sprog"},no:{heading:"Språk"},fi:{heading:"Kieli"},de:{heading:"Sprache"},zh:{heading:"语言"},fr:{heading:"Langue"},es:{heading:"Idioma"},nl:{heading:"Spraak"},it:{heading:"Idioma"},tr:{heading:"Dil"},pl:{heading:"Język"},pt:{heading:"Linguagem"},"pt-BR":{heading:"Linguagem"}};const x="pn-button-dropdown .pn-button-dropdown>pn-button>.pn-button{min-height:initial}pn-button-dropdown .pn-button-dropdown>pn-button>.pn-button{min-height:initial}pn-language-selector{max-height:5.2rem}.languageselector{position:relative}.languageselector-togglebtn{cursor:pointer;border:0;padding:0.64rem 0;background-color:#ffffff;color:#005d92;font-size:1.6rem}.languageselector-togglebtn:hover,.languageselector-togglebtn:focus,.languageselector-togglebtn:active{color:#0d234b;text-decoration:underline}.languageselector-togglebtn svg{width:1.9rem;height:1.9rem}.languageselector-title{padding:0.8rem 1.6rem;display:flex;align-items:center}.languageselector-list{margin:0;padding:0;list-style:none}";const B=x;const L=class{constructor(n){e(this,n);this.setLanguage=t(this,"setLanguage",7);this.value="";this.selectedLanguageName="";this.options=[];this.i18n=undefined}get hostElement(){return n(this)}setLanguage;componentWillLoad(){this.setInitialSelectedLanguageName();this.setTranslations()}componentDidLoad(){this.initialize()}initialize(){this.setSelectedLanguageName();this.addEventBindingsToOptions()}setInitialSelectedLanguageName(){if(!window.Intl||!this.value){return}const e=new Intl.DisplayNames([this.value],{type:"language"});if(!e){return}const t=e.of(this.value);if(!t){return}this.selectedLanguageName=t.charAt(0).toUpperCase()+t.slice(1)}addEventBindingsToOptions(){const e=[].slice.apply(this.hostElement.querySelectorAll("pn-language-selector-option"));e.map((e=>{e.removeEventListener("setCurrentLanguage",(e=>{this.onSetCurrentLanguage(e.detail)}));e.addEventListener("setCurrentLanguage",(e=>{this.onSetCurrentLanguage(e.detail)}))}))}setSelectedLanguageName(){const e=[].slice.apply(this.hostElement.querySelectorAll("pn-language-selector-option"));e.map((e=>{if(e.getAttribute("code")==this.value){this.selectedLanguageName=e.getAttribute("name")}}))}onSetCurrentLanguage(e){this.value=e.code;this.selectedLanguageName=e.name;this.setLanguage.emit(this.value)}setTranslations(){if(y[this.value]){this.i18n=y[this.value]}}onValueChange(){const e=this.hostElement.querySelectorAll("pn-language-selector-option")??[];e.forEach((e=>{const t=(e.getAttribute("code")===this.value)+"";if(e.getAttribute("selected")+""!==t){e.setAttribute("selected",t)}}))}render(){return i(o,{key:"c7cdab6eeccbc93bcc4f0d286bdefa17495b0349",value:this.value},i("pn-button-dropdown",{key:"71e193acb636f6e3bd03101473e59d371064f178",label:this.selectedLanguageName,icon:v,appearance:"light",variant:"borderless"},i("nav",{key:"67a65ae2feec9cc7448099bd2a6b70e15886d0b5",class:"languageselector-nav","aria-label":this.i18n.heading},i("strong",{key:"2befcaf1993606e5ae2cbff52338a4568b1098ca",class:"languageselector-title"},this.i18n.heading),i("div",{key:"afc6903faca9f225355def10f9e41521d7570987",class:"languageselector-list",role:"list"},i("slot",{key:"904a906437fe780ac728d23fb031dd0ff265221f"})))))}static get watchers(){return{value:["setSelectedLanguageName","setTranslations","onValueChange"]}}};L.style=B;const S="pn-button-dropdown .pn-button-dropdown>pn-button>.pn-button{min-height:initial}pn-button-dropdown .pn-button-dropdown>pn-button>.pn-button{min-height:initial}pn-language-selector-option{margin:0;padding:0;list-style:none}.languageselector-button,.languageselector-link{width:100%;padding:1.1rem 1.6rem 1.1rem 1.4rem;display:flex;align-items:center;position:relative;text-decoration:none;border:0;cursor:pointer;background-color:#ffffff;color:#005d92;font-size:1.6rem;font-weight:bold;border-radius:0}.languageselector-button:hover,.languageselector-button:focus,.languageselector-button:active,.languageselector-link:hover,.languageselector-link:focus,.languageselector-link:active{color:#0d234b;text-decoration:underline;box-shadow:none;background-color:#f3f2f2;color:#005d92;outline:none}.languageselector-itemtext{display:inline-block;margin-left:1rem}.languageselector-radio-outer{background:#fff;border:0.1em solid #d3cecb;border-radius:50%;height:1.5em;width:1.5em;display:flex;justify-content:center;align-items:center;transition:border 0.2s ease-in-out, background-color 0.2s ease-in-out, box-shadow 0.1s;cursor:pointer}.languageselector-radio-outer:focus>.languageselector-radio-outer,.languageselector-radio-outer:active>.languageselector-radio-outer{box-shadow:0 0 0 0.1rem white, 0 0 0 0.3rem #005d92}.languageselector-radio-outer:hover>.languageselector-radio-outer{border:0.1rem solid #005d92;background:#e0f8ff}[selected=true] .languageselector-radio-outer{border:0.1rem solid #005d92}.languageselector-radio-inner{transform:scale(0);height:1em;width:1em;background-color:#005d92;border-radius:50%;transform-origin:center center;transition:transform 0.1s cubic-bezier(0.64, 0.01, 0.67, 0.92)}[selected=true] .languageselector-radio-inner{transform:scale(1)}";const C=S;const M=class{constructor(n){e(this,n);this.setCurrentLanguage=t(this,"setCurrentLanguage",7);this.name="";this.code="";this.url="";this.selected=false;this.currentLanguage=undefined}setCurrentLanguage;onOptionClick(){const e={name:this.name,code:this.code,url:this.url,current:true};this.setCurrentLanguage.emit(e)}render(){return i(o,{key:"b737287248d1361aa6ca765d1bc688918166408c",role:"listitem",selected:this.selected+"",code:this.code,name:this.name},!this.url?i("button",{class:"languageselector-button","data-langcode":this.code,onClick:this.onOptionClick.bind(this)},i("span",{class:"languageselector-radio-outer"},i("span",{class:"languageselector-radio-inner"})),i("span",{class:"languageselector-itemtext"},this.name," - ",this.code)):i("a",{href:this.url,target:"_self",class:"languageselector-link","data-langcode":this.code},i("span",{class:"languageselector-radio-outer"},i("span",{class:"languageselector-radio-inner"})),i("span",{class:"languageselector-itemtext"},this.name," - ",this.code)))}};M.style=C;const $={sv:{menuHomeButton:"Hem",menuGoBackButton:"Gå tillbaka",mainMenuButton:"Meny",menuStartButton:"Start",navLabel:"Huvudnavigation"},en:{menuHomeButton:"Home",menuGoBackButton:"Go back",mainMenuButton:"Menu",menuStartButton:"Start",navLabel:"Main navigation"},da:{menuHomeButton:"Hjem",menuGoBackButton:"Gå tilbage",mainMenuButton:"Menu",menuStartButton:"Start",navLabel:"Hovednavigation"},no:{menuHomeButton:"Hjem",menuGoBackButton:"Gå tilbake",mainMenuButton:"Meny",menuStartButton:"Start",navLabel:"Hovednavigasjon"},de:{menuHomeButton:"Home",menuGoBackButton:"Geh zurück",mainMenuButton:"Menü",menuStartButton:"Start",navLabel:"Hauptnavigation"},zh:{menuHomeButton:"Home",menuGoBackButton:"Go back",mainMenuButton:"Menu",menuStartButton:"Start",navLabel:"Main navigation"},it:{menuHomeButton:"Home",menuGoBackButton:"Go back",mainMenuButton:"Menu",menuStartButton:"Start",navLabel:"Main navigation"},nl:{menuHomeButton:"Home",menuGoBackButton:"Go back",mainMenuButton:"Menu",menuStartButton:"Start",navLabel:"Main navigation"},tr:{menuHomeButton:"Anasayfa",menuGoBackButton:"Geri git",mainMenuButton:"Menü",menuStartButton:"Başlat",navLabel:"Ana gezinme"},pt:{menuHomeButton:"Página inicial",menuGoBackButton:"Go back",mainMenuButton:"Menu",menuStartButton:"Start",navLabel:"Main navigation"},pl:{menuHomeButton:"Strona główna",menuGoBackButton:"Powrót",mainMenuButton:"Menu",menuStartButton:"Początek",navLabel:"Menu główne systemu"},"pt-BR":{menuHomeButton:"Página inicial",menuGoBackButton:"Voltar",mainMenuButton:"Menu",menuStartButton:"Iniciar",navLabel:"Navegação principal"}};const T="pn-button-dropdown .pn-button-dropdown>pn-button>.pn-button{min-height:initial}pn-mainnav{display:flex;flex-flow:row-reverse;position:relative;width:100%;min-height:5.1rem}@media screen and (min-width: 48em){pn-mainnav{flex-flow:row}}@media screen and (min-width: 64em){pn-mainnav{flex-flow:column}}@media screen and (min-width: 64em){pn-mainnav [slot=footer]{display:none}}pn-mainnav>nav{height:auto;width:100vw;background-color:#ffffff;z-index:2;transform:translateX(100vw);transition:transform 0.2s 0s;transition-property:transform, visibility;display:flex;flex-flow:column;visibility:hidden;position:fixed;top:3em;bottom:0;left:0}@media screen and (min-width: 48em){pn-mainnav>nav{top:6.5em}}pn-mainnav>nav[data-menu-open=true]{visibility:visible;transform:translateX(0)}@media screen and (min-width: 64em){pn-mainnav>nav{flex-flow:row-reverse;top:0;position:static;height:auto;width:100%;justify-content:space-between;visibility:visible;transform:translateX(0)}}pn-mainnav>nav a{text-decoration:none}pn-mainnav>nav button{cursor:pointer}.mainnav-toggle{display:flex;align-items:center;align-self:center}@media screen and (min-width: 64em){.mainnav-toggle{display:none}}.mainnav-toggle>button{display:flex;align-items:center;background-color:#005d92;color:#ffffff;border-radius:2.4rem;border:none;padding:0.6rem 1.6rem;cursor:pointer;font-size:1.6rem}.mainnav-toggle>button:focus{outline:0}.mainnav-toggle>button pn-icon{margin-left:0.8rem;display:block}.mainnav-toggle>button svg{display:block;margin:-0.2rem -0.5rem -0.2rem 0;height:1.9rem;width:1.9rem}";const H=T;const z=class{constructor(n){e(this,n);this.menuLanguageChange=t(this,"menuLanguageChange",7);this.marketChange=t(this,"marketChange",7);this.menuOpenChange=t(this,"menuOpenChange",7);this.market="se";this.language="sv";this.navigationId="mainnav";this.openMenu=false;this.navLabel=""}get hostElement(){return n(this)}menuLanguageChange;marketChange;menuOpenChange;componentWillLoad(){this.init();document.removeEventListener("mousedown",this._onClickOutside.bind(this));document.addEventListener("mousedown",this._onClickOutside.bind(this))}async init(){this.setLanguage();this.setMarket()}_onClickOutside(e){const t=!this.hostElement.contains(e.target);if(t){a.openLevel=""}}setLanguage(){this.menuLanguageChange.emit(this.language)}setMarket(){this.marketChange.emit(this.market)}onLanguageChange(e){if($[e.detail]){a.i18n=$[e.detail];if(!this.navLabel){this.navLabel=a.i18n.navLabel}}}setMenuOpenState(){a.openMenu=!a.openMenu;this.menuOpenChange.emit(a.openMenu)}onOpenMenuLevelChange(e){a.openLevel=e.detail}render(){return i(o,{key:"910f0a551b6c6b86df0aa04c291c0b8deceac12a"},i("div",{key:"0a764c1d5ab3f09e10960c1648cebbb1f783be4e",class:"mainnav-toggle"},i("button",{key:"3cea0b2660e01d5049b0799339ce0ebd73a1dc8a","aria-controls":this.navigationId,"aria-expanded":a.openMenu+"",onClick:this.setMenuOpenState.bind(this)},a.i18n.mainMenuButton,i("pn-icon",{key:"705297573ebe108584e9edc61cadc71771aa79b4",icon:a.openMenu?f:r,color:"white"}))),i("nav",{key:"3c017fb27d53da0740736bdaeb13dd86d2576c32",class:"mainnav","aria-label":this.navLabel,"data-menu-open":a.openMenu+"","data-menu-currentlevel":a.currentLevel,id:this.navigationId},i("slot",{key:"b94c6dc92bb5c246035412def657829022794a3d"})))}};z.style=H;const U='pn-button-dropdown .pn-button-dropdown>pn-button>.pn-button{min-height:initial}pn-mainnav-level{display:block}pn-mainnav-level:not(.hydrated){max-height:5.6rem;overflow:hidden}pn-mainnav-level[data-level="1"]{width:100%;right:0;overflow-y:scroll;overflow-x:hidden;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;transform:translateX(100vw);transition:transform 0.2s 0s;transition-property:transform, visibility;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]{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%;transform:translateX(-50%)}}pn-mainnav-level[data-level="2"] a{color:#005d92;text-decoration:none}pn-mainnav-level [slot=top]{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;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%;transform:translateY(-50%)}[data-level="2"] .mainnav-level-header>pn-mainnav-link>a{font-size:2.4rem}';const I=U;const _=class{constructor(t){e(this,t);this.label="";this.level=1;this.levelId="";this.isOpen=false;this.parentName="";this.parentHref="";this.parentLinkId="";this.listCount=0;this.alignment="right"}get hostElement(){return n(this)}async componentWillLoad(){this.setState();s("openLevel",(()=>{this.onChangeOpenLevel()}))}setState(){this.listCount=this.hostElement.querySelectorAll(":scope > pn-mainnav-list").length;const e=this.hostElement.parentElement;if(e.tagName.toLowerCase()!=="nav"){this.level=2}if(e.tagName.toLowerCase()==="pn-mainnav-link"){this.parentName=e.getAttribute("name")+"";if(!this.label&&this.parentName||this.label!==this.parentName){this.label=this.parentName}this.parentHref=e.getAttribute("href")+"";this.parentLinkId=e.getAttribute("linkid")+"";const t=this.parentName.toLowerCase().replace(/\W/gi,"_");this.levelId=`mainnav-lvl${this.level}-${t}`}}onOpen(){if(this.level===2){requestAnimationFrame((()=>{const e=this.hostElement.getClientRects()[0];if(!e){return}const t=this.hostElement.parentElement.parentElement.parentElement.parentElement;if(t&&t.tagName.toLowerCase()==="nav"){const n=t.getClientRects()[0];if(!n){return}if(e.right>window.innerWidth){const t=this.hostElement.parentElement.getClientRects()[0];if(t.left-e.width<0){this.alignment="center"}else{this.alignment="left"}}}}))}}onChangeOpenLevel(){this.isOpen=a.openLevel===this.levelId;a.currentLevel=this.level}render(){return i(o,{key:"b17f6289b08e866eae25c354328c8caa2aab90e8",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?i("div",{class:"mainnav-level-header"},i("label",{htmlFor:this.levelId},a.i18n.menuGoBackButton),i("button",{class:"secondlevel-backbtn",onClick:()=>{a.openLevel="";a.currentLevel=1},"aria-expanded":(a.openLevel===this.levelId)+""},i("pn-icon",{icon:l,color:"blue700"}),a.i18n.menuStartButton),this.parentHref&&this.label?i("pn-mainnav-link",{href:this.parentHref,name:this.label,linkid:this.parentLinkId}):null):null,i("slot",{key:"91dc3e2fb54c04b3421e77dc2da775e30bd16ed3",name:"top"}),i("slot",{key:"a5559d56167e3a63c9ee4409d7a9b8f572c016ab"}),i("slot",{key:"370e3749baa8d846a2b46ef530d193052357834a",name:"additional"}),i("slot",{key:"8990d0eccc05be615e57af1fb4dfcd5ecfab442a",name:"footer"}))}static get watchers(){return{label:["setState"],isOpen:["onOpen"]}}};_.style=I;const G='pn-button-dropdown .pn-button-dropdown>pn-button>.pn-button{min-height:initial}pn-mainnav-list{display:block;overflow:visible;list-style:none;margin:0;padding:0;grid-area:right}@media screen and (min-width: 64em){pn-mainnav-list+pn-mainnav-list{grid-area:left;border-right:0.1rem solid #d3cecb;margin-bottom:1.6rem;margin-right:-0.7rem;padding-right:0.7rem}}[data-level="1"]>pn-mainnav-list{overflow:scroll;-webkit-overflow-scrolling:touch}@media screen and (min-width: 64em){[data-level="1"]>pn-mainnav-list{height:100%;display:flex;flex-flow:row;overflow:visible;padding:0}}@media screen and (min-width: 64em){[data-level="2"]>pn-mainnav-list[data-navlist-showcolumns=true]{column-count:2;column-gap:1.6rem;padding-bottom:1.6rem}}.mainnav-list-heading{display:none;font-weight:bold;column-span:all;font-size:1.8rem;padding:1.4rem 1.4rem 1.4rem 4.8rem}@media screen and (min-width: 64em){.mainnav-list-heading{display:block;padding:0 1.4rem 1.4rem 1.4rem}}';const A=G;const j=class{constructor(t){e(this,t);this.heading="";this.linkCount=0}get hostElement(){return n(this)}componentWillLoad(){this.linkCount=this.hostElement.querySelectorAll(":scope > pn-mainnav-link").length}render(){return i(o,{key:"5cef1764640843570d240aeda1f1a3a2f365064c",class:"mainnav-list",role:"list","data-navlist-itemcount":this.linkCount+"","data-navlist-showcolumns":(this.linkCount>=8)+""},this.heading?i("div",{class:"mainnav-list-heading"},this.heading):null,i("slot",{key:"63a60869af810fe9da3013e7c95a7c99b9078ab8"}))}};j.style=A;class E{eventTarget=window??document?.body;endpoint="";storagePrefix="pn-user";checkUserLoggedInStateInterval=0;baseUrls={at:"https://atportal.postnord.com/api/unified-login/backend",prod:"https://portal.postnord.com/api/unified-login/backend"};events={loginstatechange:"loginstatechange"};endpoints={authorizationEndpoint:`/authorization`,tokenExchangeEndpoint:`/token`,userInfoEndpoint:`/user`,logoutEndpoint:`/logout`};keys={tokensource:"tokensource",token:"token",accessToken:"accessToken",user:"user",expire:"expire",expireDate:"expiredate"};overridetokenValue="overridetokenValue";siteUrl=window.location.origin;abortSignalForLoginCheck=null;loginCheckInProgress=false;loginCheckTimer=null;constructor(e=null){if(!e){return}this.eventTarget=e.eventTarget?e.eventTarget:this.eventTarget;this.endpoint=e.endpoint?e.endpoint:`${window.location.protocol}//${window.location.host}`;this.storagePrefix??=e.storagePrefix;this.checkUserLoggedInStateInterval=e.checkUserLoggedInStateInterval&&e.checkUserLoggedInStateInterval>0?parseInt(e.checkUserLoggedInStateInterval+"",10):0;if(e.userInfo){this.store.set(this.keys.user,e.userInfo);this.registerToken(this.overridetokenValue,"override")}}init(e=true){if(e){this.checkParameters();this.checkPNTopbar();this.checkExpireTime();if(this.store.get(this.keys.token)&&!this.store.get(this.keys.user)){this.fetchUserInfo()}this.loginStateChange();if(this.checkUserLoggedInStateInterval>0){this.initiateLoggedInCheck()}}}setSiteUrl(e){if(e){this.siteUrl=e}}initiateLoggedInCheck(){if(this.isLoggedIn()){if(window&&window["AbortController"]){this.abortSignalForLoginCheck=new AbortController}this.loginCheckTimer=window.setInterval((()=>{this.doExternalLoggedInCheck().then((()=>{})).catch((()=>{}))}),this.checkUserLoggedInStateInterval)}}async doExternalLoggedInCheck(){if(!window.navigator.onLine){return}if(!this.getToken()){window.clearInterval(this.checkUserLoggedInStateInterval);return}if(this.loginCheckInProgress&&this.abortSignalForLoginCheck){this.abortSignalForLoginCheck.abort();this.abortSignalForLoginCheck=new AbortController}this.loginCheckInProgress=true;const e={method:"GET",headers:{Accept:"application/json","Content-Type":"application/json",Authorization:this.getToken()}};if(this.abortSignalForLoginCheck&&this.abortSignalForLoginCheck["signal"]){e["signal"]=this.abortSignalForLoginCheck["signal"]}const t=await fetch(`${this.getBaseUrl()}${this.endpoints.userInfoEndpoint}`,e);if(t.status===409){window.clearInterval(this.checkUserLoggedInStateInterval);console.log("Cleared out user data due to bad response from authentication endpoint");this.LogoutUser();return}if(!t.ok){return}const n=await t.json();if(!n||!n["accessToken"]){window.clearInterval(this.checkUserLoggedInStateInterval);console.log("Cleared out user data due to bad response from authentication endpoint");this.LogoutUser()}this.loginCheckInProgress=false}LogoutUser(){this.clearUserData();if(this.eventTarget){const e=this.eventTarget.querySelector("#pn-marketweb-header-logoutlink");if(e){e.click();return}}this.loginStateChange();const e=window.location.href;window.location.href=this.getLogoutUrl(e)}isLoggedIn(e=false){if(e){return e}let t=this.store.get(this.keys.token)&&this.store.get(this.keys.user)?true:false;if(!t&&this.store.get(this.keys.token)===this.overridetokenValue){t=true}return t}registerToken(e="",t="frontend"){if(!e||e===this.getToken()){return}this.clearUserData();this.store.set(this.keys.tokensource,t);this.store.set(this.keys.token,e);this.fetchUserInfo()}invalidateTokenOfType(e="frontend"){const t=this.store.get(this.keys.token);if(!t){return}const n=this.store.get(this.keys.tokensource);if(n!==e){return}this.clearUserData()}getLoginUrl(e=""){const t=window.location.href;e=e?e:t;return`${this.getBaseUrl()}${this.endpoints.authorizationEndpoint}?redirectionUrl=${e}`}getLogoutUrl(e=""){if(e.indexOf("logout?logoutUrl")!==-1){return e}let t=e.replace("logout","").replace("http://window.location.href/?",window.location.href).replace("https://window.location.href/?",window.location.href);let n=this.siteUrl;try{const e=new URL(this.siteUrl+"");n=e.origin}catch(e){}const i=n.lastIndexOf("/")!==n.length-1;const o=n+(i?"/":"")+"logout";const a=`${this.getBaseUrl()}${this.endpoints.logoutEndpoint}?authorization=${this.store.get(this.keys.token)}%26redirectionUrl=${t}`;const s=`${o}?logoutUrl=${a}`;return s}getUserInfo(){if(this.isLoggedIn()){return this.store.get(this.keys.user)}}getEventTarget(){return this.eventTarget}checkExpireTime(){const e=this.store.get(this.keys.expire);if(!e){return}const t=new Date;const n=new Date(Math.floor(parseInt(e,10)*1e3));if(t>n){console.info("Login time has expired");this.clearUserData();this.loginStateChange()}}checkPNTopbar(){if(this.isLoggedIn()||!window["pnTopbar"]||!window["pnTopbar"]["session_id"]){return}this.store.set(this.keys.token,window["pnTopbar"]["session_id"]);this.fetchUserInfo()}checkParameters(){if(!window?.location){return}const e=new URLSearchParams(window.location.search);if(e.get("oneTimeCode")){const t=e.get("oneTimeCode");this.exchangeToken(t).then((()=>{const e=window.location.href;const n=e.indexOf("?oneTimeCode")!==-1?"?":"&";const i=e.replace(`${n}oneTimeCode=${t}`,"");history.replaceState({},document.querySelector("title").innerText,i)}))}}async fetchUserInfo(){const e=this.store.get(this.keys.token);if(this.store.get(this.keys.token)===this.overridetokenValue){console.info("Did not fetch user data since it was set by an override");return}const t={method:"GET",headers:{Accept:"application/json","Content-Type":"application/json",Authorization:e}};const n=await fetch(`${this.getBaseUrl()}${this.endpoints.userInfoEndpoint}`,t);const i=await n.json();if(i&&i["idToken"]){try{const{idToken:e,expiryTime:t,accessToken:n}=i;const o=this.parseUserInfo(e);if(!o){console.error("Userdata is not valid");this.clearUserData();return}this.store.set(this.keys.user,o);this.store.set(this.keys.accessToken,n);this.store.set(this.keys.expire,t);this.store.set(this.keys.expireDate,new Date(Math.floor(parseInt(t,10)*1e3)));this.loginStateChange()}catch(e){console.error("Unable to get user information",e)}}else{console.error("Unable to get user information. Clearing login state");this.clearUserData()}}clearUserData(){this.store.remove(this.keys.user);this.store.remove(this.keys.tokensource);this.store.remove(this.keys.accessToken);this.store.remove(this.keys.token);this.store.remove(this.keys.expire);this.store.remove(this.keys.expireDate)}getToken(){return this.store.get(this.keys.token)}getAccessToken(){return this.store.get(this.keys.accessToken)}async exchangeToken(e){this.clearUserData();const t=await fetch(`${this.getBaseUrl()}${this.endpoints.tokenExchangeEndpoint}?oneTimeCode=${e}`);const{token:n}=await t.json();if(typeof n==="string"&&n){this.store.set(this.keys.token,n)}this.fetchUserInfo()}loginStateChange(){if(!this.eventTarget){return}this.eventTarget.dispatchEvent(new CustomEvent(this.events.loginstatechange,{detail:this.isLoggedIn()}))}getBaseUrl(){const e=["localhost","integration.","inte.","local."];let t=e.filter((e=>this.endpoint.indexOf(e)!==-1)).length>0;if(["devportal.postnord.com","atportal.postnord.com"].indexOf(window.location.hostname)!==-1){t=true}if(t){return this.baseUrls.at}return this.baseUrls.prod}parseUserInfo(e){if(!e){return null}var t=e.split(".")[1];var n=t.replace(/-/g,"+").replace(/_/g,"/");var i=decodeURIComponent(atob(n).split("").map((function(e){return"%"+("00"+e.charCodeAt(0).toString(16)).slice(-2)})).join(""));return JSON.parse(i)}store={get:e=>{const t=window.localStorage.getItem(`${this.storagePrefix}-${e}`);if(!t){return t}if(t.indexOf("{")===0){try{return JSON.parse(t)}catch(e){}}if(t.indexOf(",")!==-1){return t.split(",")}return t},set:(e,t)=>{if(typeof t==="object"&&typeof t.length==="undefined"){window.localStorage.setItem(`${this.storagePrefix}-${e}`,JSON.stringify(t));return}window.localStorage.setItem(`${this.storagePrefix}-${e}`,t)},remove:e=>{window.localStorage.removeItem(`${this.storagePrefix}-${e}`)}}}const N='pn-button-dropdown .pn-button-dropdown>pn-button>.pn-button{min-height:initial}pn-marketweb-siteheader-login{padding:1rem 0;max-height:5.2rem;position:relative}pn-marketweb-siteheader-login pn-button-dropdown .pn-button-dropdown-container .pn-button-dropdown-content{max-width:350px;display:flex;flex-direction:column;gap:2.4rem;padding:4rem}pn-marketweb-siteheader-login pn-button-dropdown .pn-button-dropdown-container .pn-button-dropdown-content pn-button{width:100%}pn-marketweb-siteheader-login pn-button-dropdown .pn-button-dropdown-container .pn-button-dropdown-content pn-marketweb-siteheader-unified-login::after{display:block;content:"";height:2px;background:#f9f8f8;width:100%;margin-top:2.4rem}pn-marketweb-siteheader-login pn-button-dropdown .pn-button-dropdown-container .pn-button-dropdown-content span::before{display:block;content:"";height:2px;background:#f9f8f8;width:100%;margin-bottom:2.4rem}pn-marketweb-siteheader-login pn-button-dropdown .pn-button-dropdown-container .pn-button-dropdown-content span{font-size:1.4rem;color:#2d2013}pn-marketweb-siteheader-login pn-button-dropdown .pn-button-dropdown-container .pn-button-dropdown-content span a{text-decoration:none;color:#005d92}pn-marketweb-siteheader-login pn-button-dropdown .pn-button-dropdown-container .pn-button-dropdown-content span a:hover{text-decoration:underline}pn-marketweb-siteheader-login pn-button-dropdown .pn-button-dropdown-container .pn-button-dropdown-content span *{margin-bottom:0}pn-marketweb-siteheader-login pn-button-dropdown{display:none}pn-marketweb-siteheader-login.hydrated pn-button-dropdown{display:block}';const O=N;const W=class{constructor(n){e(this,n);this.loginStateChange=t(this,"loginStateChange",7);this.endpoint="";this.token="";this.i18n={searchlabel:"",searchplaceholder:"",searchbuttontext:"",menuHomeButton:"",menuGoBackButton:"",mainMenuButton:"",menuStartButton:"",profileSelectionFlyoutHeading:"",unifiedLoginButton:"",unifiedMyPagesButton:""};this.siteUrl="";this.emitEvents=true;this.loginDialog=null;this.fullname="";this.loggedin=false;this.showProfileSelection=false;this.showUnifiedLogin=false;this.checkUserLoggedInStateInterval=0;this.environment=undefined;this.loginLinks=undefined;this.toggleButtonText=this.loginDialog?.loginMenuLinkText?this.loginDialog.loginMenuLinkText:"";this.username=this.fullname}get hostElement(){return n(this)}loginStateChange;componentWillLoad(){const e=this.loggedin&&this.fullname?{given_name:this.fullname}:null;h.loginManager=new E({endpoint:this.endpoint,eventTarget:this.hostElement,checkUserLoggedInStateInterval:this.checkUserLoggedInStateInterval,userInfo:e});h.loginManager.setSiteUrl(this.siteUrl);this.hostElement["loginmanager"]=h.loginManager;if(this.token){h.loginManager.registerToken(this.token,"backend")}else if(this.emitEvents){h.loginManager.invalidateTokenOfType("backend")}this.hostElement.addEventListener(h.loginManager.events.loginstatechange,this.onLoginStateChange.bind(this));this.init();this.setUserName();this.setToggleButtonText()}async init(){h.loginManager.init(this.emitEvents);this.setToggleButtonText();this.adjustLoginLinks()}adjustLoginLinks(){if(!this.loginDialog?.loginMenuLinks){return}const e=(e,t)=>{if(!e.isLogoutLink){e.isLogoutLink=e.pageLink.indexOf("location.href")!==-1&&e.pageLink.indexOf("logout")!==-1}if(e.isLogoutLink){e.href=h.loginManager.getLogoutUrl(e.pageLink)}if(t===0&&!e.href){e.href=h.loginManager.getLoginUrl();e.linkType="primary"}if(e.primaryLinkApperance&&!e.linkType){e.linkType="primary"}return e};if(this.loginDialog){this.loginDialog.loginMenuLinks=this.loginDialog.loginMenuLinks.map(e);this.loginDialog.loggedInLinks=this.loginDialog.loggedInLinks.map(e)}this.loginDialog.legacyLoginLinks=[{href:h.loginManager.getLoginUrl(this.loginDialog.loginUrl),linkText:this.loginDialog.loginLinkText,openInNewWindow:false,isLogoutLink:false,pageLink:null,linkType:"primary",primaryLinkApperance:true},{href:h.loginManager.getLoginUrl(this.loginDialog.registerUrl),linkText:this.loginDialog.createLoginLinkText,openInNewWindow:false,isLogoutLink:false,pageLink:null,primaryLinkApperance:false}]}setUserName(){const e=h.loginManager.getUserInfo();let t="";if(!this.loggedin||!e){this.username=t}if(e&&e.given_name){t=e.given_name+(e?.family_name?` ${e?.family_name}`:"")}if(!t&&e&&e.email){t=e.email}if(!t&&this.fullname){t=this.fullname}this.username=t;this.adjustLoginLinks()}setToggleButtonText(){if(this.loggedin){this.toggleButtonText=this.username;if(!this.toggleButtonText){this.toggleButtonText=this.loginDialog.loggedInButtonText}}else{this.toggleButtonText=this.loginDialog.loginMenuLinkText}}onLoginStateChange(e){if(this.loggedin!==e.detail&&this.emitEvents){this.loggedin=e.detail;this.loginStateChange.emit({loggedIn:this.loggedin,token:h.loginManager.getToken()});this.setUserName();this.setToggleButtonText()}}render(){if(!this.loginDialog){return}let e={username:null,loggedin:"false"};if(this.username){e.username=this.username;e.loggedin=this.loggedin+""}return i(o,{...e},i("pn-button-dropdown",{label:this.toggleButtonText,icon:k,appearance:"light",variant:"borderless",class:"siteheader-logindialog"},this.showUnifiedLogin&&i("pn-marketweb-siteheader-unified-login",{loggedIn:this.loggedin,myPageLabel:this.i18n.unifiedMyPagesButton,myPageUrl:"https://account.postnord.com/secure/profile",logInLabel:this.i18n.unifiedLoginButton}),this.loggedin&&this.showProfileSelection?i("pn-marketweb-siteheader-login-profileselection",{loginDialog:this.loginDialog,loggedin:this.loggedin,i18n:this.i18n,idNamespace:this.emitEvents?"1":"2",endpoint:this.endpoint}):i("pn-marketweb-siteheader-login-links",{loginDialog:this.loginDialog,loggedin:this.loggedin,idNamespace:this.emitEvents?"1":"2",username:this.username,showUnifiedLogin:this.showUnifiedLogin}),!this.loggedin&&this.loginDialog?.loginInfo&&i("span",{innerHTML:`${this.loginDialog.loginInfo}`})))}static get watchers(){return{i18n:["init"],loginDialog:["init"]}}};W.style=O;const{state:P,onChange:D}=d({searchValue:"",autocompleteSuggestions:{},requestAbortController:new AbortController});const V="pn-button-dropdown .pn-button-dropdown>pn-button>.pn-button{min-height:initial}.siteheader-search a{display:none}@media screen and (min-width: 48em){.siteheader-search a{display:block}}.siteheader-search pn-search-field>.input-container button{background:#ffffff}.siteheader-search pn-search-field.button-icon pn-button,.siteheader-search pn-button{display:inline-flex}.siteheader-search pn-search-field.button-icon pn-button button,.siteheader-search pn-button button{align-self:center;padding:0;height:2.3em;width:2.4em;line-height:0;min-height:unset;min-width:initial}.siteheader-search pn-search-field.button-icon pn-button pn-icon,.siteheader-search pn-button pn-icon{margin-left:0}.siteheader-search pn-search-field.button-icon pn-button .pn-button-tooltip,.siteheader-search pn-button .pn-button-tooltip{line-height:initial !important}.siteheader-search form{justify-content:flex-end;align-items:stretch;width:auto;flex:none;display:flex;padding:0;margin:0 0 0 0.4rem;position:relative;flex-direction:column}@media screen and (min-width: 60em){.siteheader-search form{margin-right:1.6rem}}.siteheader-search form pn-search-field{min-width:13.5em}.siteheader-search form pn-search-field .input-container{align-self:center}.siteheader-search form pn-search-field input{height:auto;min-height:1em;padding:0.6em 0.75em}";const R=V;const X=class{constructor(t){e(this,t);this.i18n=undefined;this.showOnlyLink=false;this.hideSearch=false;this.language=null;this.siteid=null;this.search={};this.primary=false;this.icononly=true;this.autoCompleteOptions=[]}get hostElement(){return n(this)}onSearchValueUpdate(){this.getAutocomplete(P.searchValue)}async getAutocomplete(e){if(!this.search.AutocompleteEndpoint||e.length<2){this.autoCompleteOptions=[];return}if(P.autocompleteSuggestions[e]){this.setAutocompleteSuggestions(P.autocompleteSuggestions[e]);return}let t=`${this.search.AutocompleteEndpoint}?prefix=${e}&size=10`;if(this.language||this.siteid){t+=`&tags=`;if(this.language){t+=`language:${this.language}`}if(this.language&&this.siteid){t+=`,`}if(this.siteid){t+=`siteid:${this.siteid}`}}const n=await fetch(t,{signal:P.requestAbortController.signal}).catch((e=>{console.warn("Unable to fetch autocomplete suggestions",e)}));if(!n){return}const i=await n.json();if(!i||!i.hits||!i.hits.length){return}const o=i.hits.filter((e=>e.type==="editorial")).map((e=>e.query));P.autocompleteSuggestions[e]=o;this.setAutocompleteSuggestions(o)}setAutocompleteSuggestions(e){if(typeof e!=="object"||typeof e.length!=="number"||e.length===0){return}this.autoCompleteOptions=e}componentWillLoad(){D("searchValue",(()=>{this.onSearchValueUpdate()}))}componentDidRender(){const e=this.hostElement.querySelector("pn-search-field input:not([list])");if(e&&this.search.AutocompleteEndpoint){e.setAttribute("list","siteheader-search-autocomplete")}}render(){if(!this.search.formActionUrl||this.hideSearch){return}const e=this.search.AutocompleteEndpoint?{list:"siteheader-search-autocomplete"}:{};return i("div",{class:"siteheader-search"},this.showOnlyLink?i("pn-button",{href:this.search.formActionUrl,appearance:"light",icon:c,tooltip:this.i18n.searchlabel}):i("form",{method:"get",action:this.search.formActionUrl,role:"search"},i("pn-search-field",{...e,label:this.i18n.searchlabel,name:"q",button:this.icononly?"icon":null,"button-label":"Search",placeholder:this.i18n.searchplaceholder,onUpdate:e=>{P.searchValue=e.detail},onSearch:()=>{const e=this.hostElement.querySelector("form");if(e){e.submit()}}}),this.primary&&this.search.AutocompleteEndpoint?i("datalist",{id:"siteheader-search-autocomplete"},this.autoCompleteOptions.map((e=>i("option",null,e)))):null))}};X.style=R;const q={sv:{navlabel:"Webbplatsväljare"},en:{navlabel:"Website selector"},da:{navlabel:"Webstedsvælger"},no:{navlabel:"Nettstedsvelger"},fi:{navlabel:"Verkkosivun valitsin"},de:{navlabel:"Website-Selektor"}};const F="pn-button-dropdown .pn-button-dropdown>pn-button>.pn-button{min-height:initial}pn-site-selector{display:flex;position:relative;justify-content:center;max-height:5.2rem}@media screen and (min-width: 75em){pn-site-selector{display:block}}.siteselector-heading{display:block;padding:0;margin-bottom:1.6rem}@media screen and (min-width: 75em){.siteselector-heading{display:flex;align-items:center;margin-top:0.8rem}}.siteselector-list{list-style:none;margin:0;padding:0}";const J=F;const K=class{constructor(t){e(this,t);this.buttontext="postnord";this.heading="PostNord";this.language="sv";this.i18n={navlabel:"Site selector"}}get hostElement(){return n(this)}componentWillLoad(){this.setLanguage()}setLanguage(){if(q[this.language]){this.i18n=q[this.language]}}render(){return i(o,{key:"e7f2afb9152823c342d400159df9250b8077f5e4"},i("pn-button-dropdown",{key:"cf7772fb94bc00f0e34f2224de5801087b1b4bdc",label:this.buttontext,icon:u,appearance:"light",variant:"borderless"},i("nav",{key:"a9aa62af98725a2ae8c9ee3c8763b1657b686b3b",class:"siteselector-nav","aria-label":this.i18n.navlabel},this.heading?i("strong",{class:"siteselector-heading"},this.heading):null,i("ul",{key:"e39b42302acdcbde9513b0886ba689a2dd15ba53",class:"siteselector-list"},i("slot",{key:"2f653ff81c6b0cdf631aab20e6730251c4929f4f"})))))}};K.style=J;const Y="pn-button-dropdown .pn-button-dropdown>pn-button>.pn-button{min-height:initial}pn-site-selector-item{display:block}pn-site-selector-item>div,pn-site-selector-item>a{padding:0.8rem 0;display:flex;flex-flow:column;position:relative}.siteselector-item-link{border-radius:0;text-decoration:none;color:#005d92;flex-direction:row}.siteselector-item-link:hover,.siteselector-item-link:focus{background-color:#f3f2f2;color:#005d92;text-decoration:underline;outline:none;box-shadow:none}.siteselector-item-link:active{background-color:#f3f2f2;color:#00a0d6;outline:none}.siteselector-item-link>span{flex-grow:1}.siteselector-item-link pn-icon{right:3.2rem;height:1.9rem;width:1.9rem;align-self:center}.siteselector-item-link pn-icon svg{width:100%;height:auto}.siteselector-item-title{display:block}.siteselector-item-description{color:#2d2013;font-size:1.28rem}a:hover>.siteselector-item-description,a:focus>.siteselector-item-description{background-color:#f3f2f2;color:#005d92;text-decoration:underline;outline:none}a:active>.siteselector-item-description{background-color:#f3f2f2;color:#00a0d6;outline:none}";const Q=Y;const Z=class{constructor(t){e(this,t);this.url="";this.heading="";this.description="";this.newwindow=false}render(){return i(o,{key:"5b5d779730b32cd1e510f6a484a79be67933b6d2",role:"listitem"},this.url?i("a",{class:"siteselector-item-link",href:this.url,target:this.newwindow?"_blank":"self",rel:this.newwindow?"nofollow noopener":""},i("span",null,this.heading&&i("span",{class:"siteselector-item-title"},this.heading),this.description&&i("small",{class:"siteselector-item-description"},this.description)),i("pn-icon",{icon:p,color:"blue700"})):i("div",null,this.heading&&i("span",{class:"siteselector-item-title"},this.heading),this.description&&i("small",{class:"siteselector-item-description"},this.description)))}};Z.style=Q;export{L as pn_language_selector,M as pn_language_selector_option,z as pn_mainnav,_ as pn_mainnav_level,j as pn_mainnav_list,W as pn_marketweb_siteheader_login,X as pn_marketweb_siteheader_search,K as pn_site_selector,Z as pn_site_selector_item};
2
- //# sourceMappingURL=p-8f58dac3.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["icon","angle_small_right","close","globe","user","translations","sv","heading","en","da","no","fi","de","zh","fr","es","nl","it","tr","pl","pt","pnLanguageSelectorCss","PnLanguageSelectorStyle0","PnlanguageSelector","setLanguage","componentWillLoad","this","setInitialSelectedLanguageName","setTranslations","componentDidLoad","initialize","setSelectedLanguageName","addEventBindingsToOptions","window","Intl","value","langs","DisplayNames","type","languageName","of","selectedLanguageName","charAt","toUpperCase","slice","options","apply","hostElement","querySelectorAll","map","option","removeEventListener","event","onSetCurrentLanguage","detail","addEventListener","getAttribute","code","name","emit","i18n","onValueChange","components","forEach","component","isSelected","setAttribute","render","h","Host","key","label","appearance","variant","class","role","pnLanguageSelectorOptionCss","PnLanguageSelectorOptionStyle0","PnlanguageSelectorOption","setCurrentLanguage","onOptionClick","currentlanguage","url","current","selected","onClick","bind","href","target","menuHomeButton","menuGoBackButton","mainMenuButton","menuStartButton","navLabel","pnMainnavCss","PnMainnavStyle0","PnMainnav","menuLanguageChange","marketChange","menuOpenChange","init","document","_onClickOutside","setMarket","clickedOutside","contains","state","openLevel","language","market","onLanguageChange","setMenuOpenState","openMenu","onOpenMenuLevelChange","navigationId","bars","color","currentLevel","id","pnMainnavLevelCss","PnMainnavLevelStyle0","PnMainnavLevel","setState","onChange","onChangeOpenLevel","listCount","length","parentElm","parentElement","tagName","toLowerCase","level","parentName","parentHref","parentLinkId","parentLinkName","replace","levelId","onOpen","requestAnimationFrame","levelClientRect","getClientRects","navElm","navClientRect","right","innerWidth","levelParentRect","left","width","alignment","isOpen","htmlFor","arrow_left","linkid","pnMainnavListCss","PnMainnavListStyle0","PnMainnavList","linkCount","MarketWebLoginManager","eventTarget","body","endpoint","storagePrefix","checkUserLoggedInStateInterval","baseUrls","at","prod","events","loginstatechange","endpoints","authorizationEndpoint","tokenExchangeEndpoint","userInfoEndpoint","logoutEndpoint","keys","tokensource","token","accessToken","expire","expireDate","overridetokenValue","siteUrl","location","origin","abortSignalForLoginCheck","loginCheckInProgress","loginCheckTimer","constructor","protocol","host","parseInt","userInfo","store","set","registerToken","checkParameters","checkPNTopbar","checkExpireTime","get","fetchUserInfo","loginStateChange","initiateLoggedInCheck","setSiteUrl","isLoggedIn","AbortController","setInterval","doExternalLoggedInCheck","then","catch","navigator","onLine","getToken","clearInterval","abort","reqConfig","method","headers","Accept","Authorization","response","fetch","getBaseUrl","status","console","log","LogoutUser","ok","data","json","clearUserData","logoutLink","querySelector","click","currentPageHref","getLogoutUrl","override","tokenSource","invalidateTokenOfType","currentToken","currentTokenSource","getLoginUrl","redirectPage","currentPage","linkHref","indexOf","rootUrl","URL","e","addSlash","lastIndexOf","secondLogoutUrl","logoutUrl","getUserInfo","getEventTarget","now","Date","Math","floor","info","params","URLSearchParams","search","oneTimeCode","exchangeToken","currentHref","paramPrefix","newUrl","history","replaceState","innerText","idToken","expiryTime","parseUserInfo","error","remove","getAccessToken","dispatchEvent","CustomEvent","atEnvironments","useATEnv","filter","x","hostname","base64Url","split","base64","jsonPayload","decodeURIComponent","atob","c","charCodeAt","toString","join","JSON","parse","localStorage","getItem","setItem","stringify","removeItem","pnMarketwebSiteheaderLoginCss","PnMarketwebSiteheaderLoginStyle0","PnMarketwebSiteheaderLogin","searchlabel","searchplaceholder","searchbuttontext","profileSelectionFlyoutHeading","unifiedLoginButton","unifiedMyPagesButton","loginDialog","loginMenuLinkText","fullname","loggedin","given_name","headerState","loginManager","emitEvents","onLoginStateChange","setUserName","setToggleButtonText","adjustLoginLinks","loginMenuLinks","adjustLink","link","i","isLogoutLink","pageLink","linkType","primaryLinkApperance","loggedInLinks","legacyLoginLinks","loginUrl","linkText","loginLinkText","openInNewWindow","registerUrl","createLoginLinkText","username","family_name","email","toggleButtonText","loggedInButtonText","loggedIn","hostElementAttribute","showUnifiedLogin","myPageLabel","myPageUrl","logInLabel","showProfileSelection","idNamespace","loginInfo","innerHTML","createStore","searchValue","autocompleteSuggestions","requestAbortController","pnMarketwebSiteheaderSearchCss","PnMarketwebSiteheaderSearchStyle0","PnMarketwebSiteheaderSearch","onSearchValueUpdate","getAutocomplete","prefix","AutocompleteEndpoint","autoCompleteOptions","setAutocompleteSuggestions","autocompleteUrl","siteid","req","signal","warn","hits","suggestions","item","query","componentDidRender","inputSearchElm","formActionUrl","hideSearch","autocompleteAttribute","list","showOnlyLink","tooltip","action","button","icononly","placeholder","onUpdate","onSearch","form","submit","primary","languageData","navlabel","pnSiteSelectorCss","PnSiteSelectorStyle0","PnSiteSelector","buttontext","angle_small_down","pnSiteSelectorItemCss","PnSiteSelectorItemStyle0","PnSiteSelectorItem","newwindow","rel","description"],"sources":["node_modules/pn-design-assets/pn-assets/icons/angle_small_right.js","node_modules/pn-design-assets/pn-assets/icons/close.js","node_modules/pn-design-assets/pn-assets/icons/globe.js","node_modules/pn-design-assets/pn-assets/icons/user.js","src/components/navigation/pn-language-selector/translations.ts","src/components/navigation/pn-language-selector/pn-language-selector.scss?tag=pn-language-selector","src/components/navigation/pn-language-selector/pn-language-selector.tsx","src/components/navigation/pn-language-selector/pn-language-selector-option.scss?tag=pn-language-selector-option","src/components/navigation/pn-language-selector/pn-language-selector-option.tsx","src/components/navigation/pn-mainnav/translations.ts","src/components/navigation/pn-mainnav/pn-mainnav.scss?tag=pn-mainnav","src/components/navigation/pn-mainnav/pn-mainnav.tsx","src/components/navigation/pn-mainnav/pn-mainnav-level.scss?tag=pn-mainnav-level","src/components/navigation/pn-mainnav/pn-mainnav-level.tsx","src/components/navigation/pn-mainnav/pn-mainnav-list.scss?tag=pn-mainnav-list","src/components/navigation/pn-mainnav/pn-mainnav-list.tsx","src/globals/MarketWebLoginManager.ts","src/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader-login.scss?tag=pn-marketweb-siteheader-login","src/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader-login.tsx","src/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader-search-store.tsx","src/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader-search.scss?tag=pn-marketweb-siteheader-search","src/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader-search.tsx","src/components/navigation/pn-site-selector/pn-site-selector-i18n.js","src/components/navigation/pn-site-selector/pn-site-selector.scss?tag=pn-site-selector","src/components/navigation/pn-site-selector/pn-site-selector.tsx","src/components/navigation/pn-site-selector/pn-site-selector-item.scss?tag=pn-site-selector-item","src/components/navigation/pn-site-selector/pn-site-selector-item.tsx"],"sourcesContent":["const icon = '<svg class=\"pn-icon-svg\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\"><path fill=\"#000\" fill-rule=\"evenodd\" d=\"M16.707 11.293a1 1 0 0 1 0 1.414l-6 6a1 1 0 0 1-1.414-1.414L14.586 12 9.293 6.707a1 1 0 0 1 1.414-1.414z\" clip-rule=\"evenodd\"/></svg>';\nexport const angle_small_right = icon;\nexport const angleSmallRight = icon;\n","const icon = '<svg class=\"pn-icon-svg\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\"><path fill=\"#000\" fill-rule=\"evenodd\" d=\"M4.293 4.293a1 1 0 0 1 1.414 0L12 10.586l6.293-6.293a1 1 0 1 1 1.414 1.414L13.414 12l6.293 6.293a1 1 0 0 1-1.414 1.414L12 13.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L10.586 12 4.293 5.707a1 1 0 0 1 0-1.414\" clip-rule=\"evenodd\"/></svg>';\nexport const close = icon;\n","const icon = '<svg class=\"pn-icon-svg\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\"><path fill=\"#000\" fill-rule=\"evenodd\" d=\"M4.252 10A8 8 0 0 0 4 12c0 .69.088 1.36.252 2h3.166a13.8 13.8 0 0 1 0-4zm.818-2h2.795a13.6 13.6 0 0 1 1.719-3.629A8.02 8.02 0 0 0 5.07 8M12 4.48A11.7 11.7 0 0 0 9.972 8h4.056A11.7 11.7 0 0 0 12 4.48M14.557 10H9.443a11.8 11.8 0 0 0 0 4h5.114a11.8 11.8 0 0 0 0-4m2.025 4a13.8 13.8 0 0 0 0-4h3.166c.165.64.252 1.31.252 2s-.087 1.36-.252 2zm-2.554 2H9.972A11.7 11.7 0 0 0 12 19.52 11.7 11.7 0 0 0 14.028 16m-4.444 3.629A13.6 13.6 0 0 1 7.864 16H5.07a8.02 8.02 0 0 0 4.514 3.629m4.832 0A13.6 13.6 0 0 0 16.136 16h2.794a8.02 8.02 0 0 1-4.514 3.629M18.93 8h-2.795a13.6 13.6 0 0 0-1.719-3.629A8.02 8.02 0 0 1 18.93 8M2 12C2 6.477 6.477 2 12 2s10 4.477 10 10-4.477 10-10 10S2 17.523 2 12\" clip-rule=\"evenodd\"/></svg>';\nexport const globe = icon;\n","const icon = '<svg class=\"pn-icon-svg\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\"><path fill=\"#000\" fill-rule=\"evenodd\" d=\"M7.5 7.5a4.5 4.5 0 1 1 9 0 4.5 4.5 0 0 1-9 0M12 5a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5M4.928 20.372a1 1 0 0 1-1.856-.743l.883.353a82 82 0 0 1-.883-.354v-.002l.001-.002.003-.007.008-.018a4 4 0 0 1 .114-.25c.078-.161.193-.383.35-.645.315-.523.8-1.217 1.495-1.911C6.444 15.39 8.688 14 12 14s5.556 1.391 6.957 2.793a10 10 0 0 1 1.494 1.911 8 8 0 0 1 .44.837q.016.036.025.058l.008.018.003.007.001.004-.883.354.883-.353a1 1 0 0 1-1.856.744v.001l.001.001v-.002a2 2 0 0 0-.07-.15 6 6 0 0 0-.267-.49 8 8 0 0 0-1.193-1.526C16.444 17.11 14.688 16 12 16s-4.444 1.109-5.543 2.207a8 8 0 0 0-1.193 1.526 6 6 0 0 0-.336.64m0 0-.001.003zm14.144.001\" clip-rule=\"evenodd\"/></svg>';\nexport const user = icon;\n","export const translations = {\n 'sv': {\n heading: 'Språk',\n },\n 'en': {\n heading: 'Language',\n },\n 'da': {\n heading: 'Sprog',\n },\n 'no': {\n heading: 'Språk',\n },\n 'fi': {\n heading: 'Kieli',\n },\n 'de': {\n heading: 'Sprache',\n },\n 'zh': {\n heading: '语言',\n },\n 'fr': {\n heading: 'Langue',\n },\n 'es': {\n heading: 'Idioma',\n },\n 'nl': {\n heading: 'Spraak',\n },\n 'it': {\n heading: 'Idioma',\n },\n 'tr': {\n heading: 'Dil',\n },\n 'pl': {\n heading: 'Język',\n },\n 'pt': {\n heading: 'Linguagem',\n },\n 'pt-BR': {\n heading: 'Linguagem',\n },\n};\n","@import '../../../globals/main.scss';\n@import './pn-language-common.scss';\npn-language-selector {\n max-height: 5.2rem;\n}\n.languageselector {\n position: relative;\n}\n\n.languageselector-togglebtn {\n cursor: pointer;\n border: 0;\n padding: 0.64rem 0;\n background-color: $white;\n color: $blue700;\n font-size: 1.6rem;\n &:hover,\n &:focus,\n &:active {\n color: $blue900;\n text-decoration: underline;\n }\n svg {\n width: 1.9rem;\n height: 1.9rem;\n }\n}\n\n.languageselector-nav {\n}\n\n.languageselector-title {\n padding: 0.8rem 1.6rem;\n display: flex;\n align-items: center;\n}\n\n.languageselector-list {\n margin: 0;\n padding: 0;\n list-style: none;\n}\n","import { Component, Prop, h, State, Host, Watch, Element, Event, EventEmitter } from '@stencil/core';\nimport { LanguageSelectori18n, LanguageSelectorOption } from './pn-language-selector-types';\nimport { translations } from './translations';\nimport { globe } from 'pn-design-assets/pn-assets/icons.js';\n\n@Component({\n tag: 'pn-language-selector',\n styleUrl: 'pn-language-selector.scss',\n})\nexport class PnlanguageSelector {\n @Element() hostElement: HTMLElement;\n /* Current language code */\n @Prop({ reflect: true, mutable: true }) value: string = '';\n\n @State() selectedLanguageName = '';\n @State() options: LanguageSelectorOption[] = [];\n @State() i18n: LanguageSelectori18n;\n\n // Events\n @Event() setLanguage: EventEmitter;\n\n componentWillLoad() {\n this.setInitialSelectedLanguageName();\n this.setTranslations();\n }\n\n componentDidLoad() {\n this.initialize();\n }\n\n initialize() {\n this.setSelectedLanguageName();\n this.addEventBindingsToOptions();\n }\n\n setInitialSelectedLanguageName() {\n if (!window.Intl || !this.value) {\n return;\n }\n const langs = new (Intl as any).DisplayNames([this.value], { type: 'language' });\n if (!langs) {\n return;\n }\n const languageName = langs.of(this.value);\n if (!languageName) {\n return;\n }\n this.selectedLanguageName = languageName.charAt(0).toUpperCase() + languageName.slice(1);\n }\n\n addEventBindingsToOptions() {\n const options = [].slice.apply(this.hostElement.querySelectorAll('pn-language-selector-option')) as HTMLElement[];\n options.map((option: HTMLElement) => {\n option.removeEventListener('setCurrentLanguage', (event: CustomEvent) => {\n this.onSetCurrentLanguage(event.detail as LanguageSelectorOption);\n });\n // Bind event listener for when a user change language\n option.addEventListener('setCurrentLanguage', (event: CustomEvent) => {\n this.onSetCurrentLanguage(event.detail as LanguageSelectorOption);\n });\n });\n }\n\n @Watch('value')\n setSelectedLanguageName() {\n const options = [].slice.apply(this.hostElement.querySelectorAll('pn-language-selector-option')) as HTMLElement[];\n options.map((option: HTMLElement) => {\n // Set current label of language selector\n if (option.getAttribute('code') == this.value) {\n // || option.getAttribute(\"selected\") == \"true\"\n this.selectedLanguageName = option.getAttribute('name');\n }\n });\n }\n\n onSetCurrentLanguage(option: LanguageSelectorOption) {\n this.value = option.code;\n this.selectedLanguageName = option.name;\n this.setLanguage.emit(this.value);\n }\n\n @Watch('value')\n setTranslations() {\n if (translations[this.value]) {\n this.i18n = translations[this.value] as LanguageSelectori18n;\n }\n }\n\n @Watch('value')\n onValueChange() {\n const components = this.hostElement.querySelectorAll('pn-language-selector-option') ?? [];\n components.forEach(component => {\n // Pass values as props into slotted components\n // component.setAttribute(\"current-language\", this.value);\n const isSelected = (component.getAttribute('code') === this.value) + '';\n if (component.getAttribute('selected') + '' !== isSelected) {\n component.setAttribute('selected', isSelected);\n }\n });\n }\n\n render() {\n return (\n <Host value={this.value}>\n <pn-button-dropdown label={this.selectedLanguageName} icon={globe} appearance=\"light\" variant=\"borderless\">\n <nav class=\"languageselector-nav\" aria-label={this.i18n.heading}>\n <strong class=\"languageselector-title\">{this.i18n.heading}</strong>\n <div class=\"languageselector-list\" role=\"list\">\n <slot />\n </div>\n </nav>\n </pn-button-dropdown>\n </Host>\n );\n }\n}\n","@import '../../../globals/main.scss';\n@import './pn-language-common.scss';\n\npn-language-selector-option {\n margin: 0;\n padding: 0;\n list-style: none;\n}\n\n.languageselector-button,\n.languageselector-link {\n width: 100%;\n padding: 1.1rem 1.6rem 1.1rem 1.4rem;\n display: flex;\n align-items: center;\n position: relative;\n text-decoration: none;\n border: 0;\n cursor: pointer;\n background-color: $white;\n color: $blue700;\n font-size: 1.6rem;\n font-weight: bold;\n border-radius: 0;\n &:hover,\n &:focus,\n &:active {\n color: $blue900;\n text-decoration: underline;\n box-shadow: none;\n background-color: $gray50;\n color: $blue700;\n outline: none;\n }\n}\n\n.languageselector-itemtext {\n display: inline-block;\n margin-left: 1rem;\n}\n\n.languageselector-radio-outer {\n background: #fff;\n border: 0.1em solid $gray200;\n border-radius: 50%;\n height: 1.5em;\n width: 1.5em;\n display: flex;\n justify-content: center;\n align-items: center;\n transition:\n border 0.2s ease-in-out,\n background-color 0.2s ease-in-out,\n box-shadow 0.1s;\n cursor: pointer;\n\n &:focus > &,\n &:active > & {\n box-shadow:\n 0 0 0 0.1rem white,\n 0 0 0 0.3rem $blue700;\n }\n &:hover > & {\n border: 0.1rem solid $blue700;\n background: $blue50;\n }\n [selected='true'] & {\n border: 0.1rem solid $blue700;\n }\n}\n\n.languageselector-radio-inner {\n transform: scale(0);\n height: 1em;\n width: 1em;\n background-color: $blue700;\n border-radius: 50%;\n transform-origin: center center;\n transition: transform 0.1s cubic-bezier(0.64, 0.01, 0.67, 0.92);\n\n [selected='true'] & {\n transform: scale(1);\n }\n}\n","import { Component, Prop, h, Host, Event, EventEmitter } from '@stencil/core';\nimport { LanguageSelectorOption } from './pn-language-selector-types';\n\n@Component({\n tag: 'pn-language-selector-option',\n styleUrl: 'pn-language-selector-option.scss',\n})\nexport class PnlanguageSelectorOption {\n /** What you write in the comment block above each prop is what ends up in the description fields in the prop table in the documentation */\n @Prop() name: string = '';\n @Prop() code: string = '';\n @Prop() url: string = '';\n @Prop() selected: boolean = false;\n @Prop() currentLanguage: string;\n\n @Event() setCurrentLanguage: EventEmitter;\n onOptionClick() {\n const currentlanguage: LanguageSelectorOption = {\n name: this.name,\n code: this.code,\n url: this.url,\n current: true,\n };\n this.setCurrentLanguage.emit(currentlanguage);\n }\n\n render() {\n return (\n <Host role=\"listitem\" selected={this.selected + ''} code={this.code} name={this.name}>\n {!this.url ? (\n <button class=\"languageselector-button\" data-langcode={this.code} onClick={this.onOptionClick.bind(this)}>\n <span class=\"languageselector-radio-outer\">\n <span class=\"languageselector-radio-inner\"></span>\n </span>\n <span class=\"languageselector-itemtext\">\n {this.name} - {this.code}\n </span>\n </button>\n ) : (\n <a href={this.url} target=\"_self\" class=\"languageselector-link\" data-langcode={this.code}>\n <span class=\"languageselector-radio-outer\">\n <span class=\"languageselector-radio-inner\"></span>\n </span>\n <span class=\"languageselector-itemtext\">\n {this.name} - {this.code}\n </span>\n </a>\n )}\n </Host>\n );\n }\n}\n","export const translations = {\n 'sv': {\n menuHomeButton: 'Hem',\n menuGoBackButton: 'Gå tillbaka',\n mainMenuButton: 'Meny',\n menuStartButton: 'Start',\n navLabel: 'Huvudnavigation',\n },\n 'en': {\n menuHomeButton: 'Home',\n menuGoBackButton: 'Go back',\n mainMenuButton: 'Menu',\n menuStartButton: 'Start',\n navLabel: 'Main navigation',\n },\n 'da': {\n menuHomeButton: 'Hjem',\n menuGoBackButton: 'Gå tilbage',\n mainMenuButton: 'Menu',\n menuStartButton: 'Start',\n navLabel: 'Hovednavigation',\n },\n 'no': {\n menuHomeButton: 'Hjem',\n menuGoBackButton: 'Gå tilbake',\n mainMenuButton: 'Meny',\n menuStartButton: 'Start',\n navLabel: 'Hovednavigasjon',\n },\n 'de': {\n menuHomeButton: 'Home',\n menuGoBackButton: 'Geh zurück',\n mainMenuButton: 'Menü',\n menuStartButton: 'Start',\n navLabel: 'Hauptnavigation',\n },\n 'zh': {\n menuHomeButton: 'Home',\n menuGoBackButton: 'Go back',\n mainMenuButton: 'Menu',\n menuStartButton: 'Start',\n navLabel: 'Main navigation',\n },\n 'it': {\n menuHomeButton: 'Home',\n menuGoBackButton: 'Go back',\n mainMenuButton: 'Menu',\n menuStartButton: 'Start',\n navLabel: 'Main navigation',\n },\n 'nl': {\n menuHomeButton: 'Home',\n menuGoBackButton: 'Go back',\n mainMenuButton: 'Menu',\n menuStartButton: 'Start',\n navLabel: 'Main navigation',\n },\n 'tr': {\n menuHomeButton: 'Anasayfa',\n menuGoBackButton: 'Geri git',\n mainMenuButton: 'Menü',\n menuStartButton: 'Başlat',\n navLabel: 'Ana gezinme',\n },\n 'pt': {\n menuHomeButton: 'Página inicial',\n menuGoBackButton: 'Go back',\n mainMenuButton: 'Menu',\n menuStartButton: 'Start',\n navLabel: 'Main navigation',\n },\n 'pl': {\n menuHomeButton: 'Strona główna',\n menuGoBackButton: 'Powrót',\n mainMenuButton: 'Menu',\n menuStartButton: 'Początek',\n navLabel: 'Menu główne systemu',\n },\n 'pt-BR': {\n menuHomeButton: 'Página inicial',\n menuGoBackButton: 'Voltar',\n mainMenuButton: 'Menu',\n menuStartButton: 'Iniciar',\n navLabel: 'Navegação principal',\n },\n};\n","@import './pn-mainnav-common.scss';\n@import '../../../globals/main.scss';\n\npn-mainnav {\n display: flex;\n flex-flow: row-reverse;\n position: relative;\n width: 100%;\n min-height: 5.1rem;\n\n @media screen and (min-width: $mobilenav-media-tablet) {\n flex-flow: row;\n }\n @media screen and (min-width: $mobilenav-media-abovemobilemode) {\n flex-flow: column;\n }\n\n [slot='footer'] {\n @media screen and (min-width: $mobilenav-media-abovemobilemode) {\n display: none;\n }\n }\n > nav {\n height: auto;\n width: 100vw;\n background-color: $white;\n z-index: 2;\n transform: translateX(100vw);\n transition: transform 0.2s 0s;\n transition-property: transform, visibility;\n display: flex;\n flex-flow: column;\n visibility: hidden;\n position: fixed;\n top: 3em;\n bottom: 0;\n left: 0;\n @media screen and (min-width: $mobilenav-media-tablet) {\n top: 6.5em;\n }\n\n &[data-menu-open='true'] {\n visibility: visible;\n transform: translateX(0);\n }\n\n @media screen and (min-width: $mobilenav-media-abovemobilemode) {\n flex-flow: row-reverse;\n top: 0;\n position: static;\n // overflow: visible;\n height: auto;\n width: 100%;\n justify-content: space-between;\n visibility: visible;\n transform: translateX(0);\n }\n\n a {\n text-decoration: none;\n }\n\n button {\n cursor: pointer;\n }\n }\n}\n\n.mainnav-toggle {\n display: flex;\n align-items: center;\n align-self: center;\n // @media screen and (min-width: $mobilenav-media-tablet) {\n // align-self: center;\n // }\n // @media screen and (min-width: $mobilenav-media-smalldesktop) {\n // align-self: center;\n // }\n\n @media screen and (min-width: $mobilenav-media-abovemobilemode) {\n display: none;\n }\n > button {\n display: flex;\n align-items: center;\n background-color: $blue700;\n color: $white;\n border-radius: 2.4rem;\n border: none;\n padding: 0.6rem 1.6rem;\n cursor: pointer;\n font-size: 1.6rem;\n\n &:focus {\n outline: 0;\n }\n\n pn-icon {\n margin-left: 0.8rem;\n display: block;\n }\n\n svg {\n display: block;\n margin: -0.2rem -0.5rem -0.2rem 0;\n height: 1.9rem;\n width: 1.9rem;\n }\n }\n}\n","import { Component, Prop, h, Host, Listen, Event, EventEmitter, Element } from '@stencil/core';\nimport { translations } from './translations';\nimport { Menui18n } from './types';\nimport state from './pn-mainnav-store';\nimport { close, bars } from 'pn-design-assets/pn-assets/icons.js';\n\n@Component({\n tag: 'pn-mainnav',\n styleUrl: 'pn-mainnav.scss',\n shadow: false,\n})\nexport class PnMainnav {\n @Element() hostElement: HTMLElement;\n /** Specifies which market we want to fetch navigation for (se,dk,fi,no,com) */\n @Prop() market: string = 'se';\n /** Specifies which language we want to show navigation in (sv,da,fi,no,en) */\n @Prop() language: string = 'sv';\n /** Specifies which endpoint we should read information from */\n @Prop() navigationId: string = 'mainnav';\n /** Specifies which endpoint we should read information from */\n @Prop({ mutable: true }) openMenu: boolean = false;\n /** Sets the label of the navigation (Required if multiple nav elements are on a page) */\n @Prop() navLabel: string = '';\n\n @Event() menuLanguageChange: EventEmitter; // Could not use language change since it's a existing window event\n @Event() marketChange: EventEmitter;\n @Event() menuOpenChange: EventEmitter;\n\n componentWillLoad() {\n this.init();\n document.removeEventListener('mousedown', this._onClickOutside.bind(this));\n document.addEventListener('mousedown', this._onClickOutside.bind(this));\n }\n\n async init() {\n this.setLanguage();\n this.setMarket();\n }\n\n private _onClickOutside(event) {\n const clickedOutside = !this.hostElement.contains(event.target);\n if (clickedOutside) {\n state.openLevel = '';\n }\n }\n\n @Listen('language')\n setLanguage() {\n this.menuLanguageChange.emit(this.language);\n }\n\n @Listen('market')\n setMarket() {\n this.marketChange.emit(this.market);\n }\n\n @Listen('menuLanguageChange')\n onLanguageChange(event) {\n if (translations[event.detail]) {\n state.i18n = translations[event.detail] as Menui18n;\n if (!this.navLabel) {\n this.navLabel = state.i18n.navLabel;\n }\n }\n }\n\n @Listen('setmenuopenstate')\n setMenuOpenState() {\n state.openMenu = !state.openMenu;\n this.menuOpenChange.emit(state.openMenu);\n }\n\n @Listen('openMenuLevelChange')\n onOpenMenuLevelChange(event) {\n state.openLevel = event.detail;\n }\n\n render() {\n return (\n <Host>\n <div class=\"mainnav-toggle\">\n <button aria-controls={this.navigationId} aria-expanded={state.openMenu + ''} onClick={this.setMenuOpenState.bind(this)}>\n {state.i18n.mainMenuButton}\n <pn-icon icon={state.openMenu ? close : bars} color=\"white\"></pn-icon>\n </button>\n </div>\n <nav class=\"mainnav\" aria-label={this.navLabel} data-menu-open={state.openMenu + ''} data-menu-currentlevel={state.currentLevel} id={this.navigationId}>\n <slot></slot>\n </nav>\n </Host>\n );\n }\n}\n","@import './pn-mainnav-common.scss';\n@import '../../../globals/main.scss';\n\npn-mainnav-level {\n display: block;\n &:not(.hydrated) {\n max-height: 5.6rem;\n overflow: hidden;\n }\n &[data-level='1'] {\n width: 100%;\n right: 0;\n overflow-y: scroll;\n overflow-x: hidden;\n flex: 1;\n\n @media screen and (min-width: $mobilenav-media-abovemobilemode) {\n width: auto;\n overflow: initial;\n\n // Only works for blink/webkit\n &::-webkit-scrollbar {\n display: none;\n }\n }\n }\n &[data-level='2'] {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n width: 100vw;\n padding: 0;\n background-color: $white;\n z-index: 1;\n transform: translateX(100vw);\n transition: transform 0.2s 0s;\n transition-property: transform, visibility;\n overflow: scroll;\n visibility: hidden;\n\n @media screen and (min-width: $mobilenav-media-abovemobilemode) {\n left: 0;\n top: calc(100% + 1rem);\n bottom: auto;\n border-radius: 1.6rem;\n width: auto;\n padding: 1.6rem 1.6rem 0 1.6rem;\n -webkit-box-shadow: $mainmenu-shadow-elevation8;\n -moz-box-shadow: $mainmenu-shadow-elevation8;\n box-shadow: $mainmenu-shadow-elevation8;\n height: auto;\n z-index: 3;\n display: none;\n\n &[data-menuitem-rightaligned='true'] {\n // right-align next-to-last menu-pop-up on desktop (last is hidden mobile-action-menu)\n right: 0;\n left: unset;\n }\n }\n\n @media screen and (max-height: $mobilenav-media-phoneheight) {\n -ms-overflow-style: none; // IE and Edge\n scrollbar-width: none; // Firefox\n\n &::-webkit-scrollbar {\n // Chrome, Safari and Opera\n display: none;\n }\n }\n\n &[aria-hidden='false'] {\n transform: translateX(0);\n visibility: visible;\n\n @media screen and (min-width: $mobilenav-media-abovemobilemode) {\n display: block;\n overflow: visible;\n\n &:not([data-level-listcount='1']) {\n display: grid;\n grid-template-columns: minmax(12em, 20em) 1fr;\n grid-template-rows: auto auto;\n gap: 0px 1.6rem;\n grid-template-areas:\n 'top top'\n 'left right';\n }\n }\n }\n &[data-level-alignment='left'] {\n @media screen and (min-width: $mobilenav-media-abovemobilemode) {\n right: 0;\n left: unset;\n }\n }\n &[data-level-alignment='center'] {\n @media screen and (min-width: $mobilenav-media-abovemobilemode) {\n left: 50%;\n transform: translateX(-50%);\n }\n }\n a {\n color: $blue700;\n text-decoration: none;\n }\n }\n [slot='top'] {\n display: flex;\n @media screen and (min-width: $mobilenav-media-tablet) {\n display: none;\n }\n }\n\n [slot='footer'] {\n [data-menu-currentlevel='2'] & {\n display: none;\n overscroll-behavior: contain;\n }\n }\n}\n\n.mainnav-level-header {\n grid-area: top;\n > label {\n position: absolute;\n width: 0.1rem;\n height: 0.1rem;\n padding: 0;\n margin: -0.1rem;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n border: 0;\n white-space: nowrap;\n }\n > button {\n display: block;\n position: relative;\n border: none;\n background-color: transparent;\n color: $blue700;\n padding: 2.4rem 0 2.4rem 6.2rem;\n width: 100%;\n text-align: left;\n\n @media screen and (min-width: $mobilenav-media-abovemobilemode) {\n display: none;\n speak: none;\n }\n\n > pn-icon {\n speak: none;\n position: absolute;\n height: 2.4rem;\n width: 2.4rem;\n left: 3rem;\n top: 50%;\n transform: translateY(-50%);\n }\n }\n\n [data-level='2'] & {\n > pn-mainnav-link > a {\n font-size: 2.4rem;\n }\n }\n}\n","import { Component, State, h, Host, Element, Watch, Prop } from '@stencil/core';\nimport { state, onChange } from './pn-mainnav-store';\nimport { arrow_left } from 'pn-design-assets/pn-assets/icons.js';\n\n@Component({\n tag: 'pn-mainnav-level',\n styleUrl: 'pn-mainnav-level.scss',\n shadow: false,\n})\nexport class PnMainnavLevel {\n @Element() hostElement: HTMLElement;\n @Prop({ reflect: true, mutable: true }) label: string = '';\n @State() level: number = 1;\n @State() levelId: string = '';\n @State() isOpen: boolean = false;\n @State() parentName: string = '';\n @State() parentHref: string = '';\n @State() parentLinkId: string = '';\n @State() listCount: number = 0;\n @State() alignment: string = 'right';\n\n async componentWillLoad() {\n this.setState();\n onChange('openLevel', () => {\n this.onChangeOpenLevel();\n });\n }\n\n @Watch('label')\n setState() {\n this.listCount = this.hostElement.querySelectorAll(':scope > pn-mainnav-list').length;\n const parentElm = this.hostElement.parentElement;\n if (parentElm.tagName.toLowerCase() !== 'nav') {\n this.level = 2;\n }\n if (parentElm.tagName.toLowerCase() === 'pn-mainnav-link') {\n this.parentName = parentElm.getAttribute('name') + '';\n if ((!this.label && this.parentName) || this.label !== this.parentName) {\n this.label = this.parentName;\n }\n this.parentHref = parentElm.getAttribute('href') + '';\n this.parentLinkId = parentElm.getAttribute('linkid') + '';\n const parentLinkName = this.parentName.toLowerCase().replace(/\\W/gi, '_');\n this.levelId = `mainnav-lvl${this.level}-${parentLinkName}`;\n }\n }\n\n @Watch('isOpen')\n onOpen() {\n if (this.level === 2) {\n requestAnimationFrame(() => {\n const levelClientRect = this.hostElement.getClientRects()[0];\n if (!levelClientRect) {\n return;\n }\n\n const navElm = this.hostElement.parentElement.parentElement.parentElement.parentElement;\n if (navElm && navElm.tagName.toLowerCase() === 'nav') {\n const navClientRect = navElm.getClientRects()[0];\n if (!navClientRect) {\n return;\n }\n\n if (levelClientRect.right > window.innerWidth) {\n const levelParentRect = this.hostElement.parentElement.getClientRects()[0];\n if (levelParentRect.left - levelClientRect.width < 0) {\n this.alignment = 'center';\n } else {\n this.alignment = 'left';\n }\n }\n }\n });\n }\n }\n onChangeOpenLevel() {\n this.isOpen = state.openLevel === this.levelId;\n state.currentLevel = this.level;\n }\n\n render() {\n return (\n <Host\n role=\"navigation\"\n {...(this.level > 1 && this.levelId ? { 'aria-hidden': !this.isOpen + '' } : {})}\n data-level-listcount={this.listCount + ''}\n data-level-alignment={this.alignment}\n data-level={this.level + ''}\n {...(this.levelId ? { id: this.levelId } : {})}\n >\n {this.level > 1 ? (\n <div class=\"mainnav-level-header\">\n <label htmlFor={this.levelId}>{state.i18n.menuGoBackButton}</label>\n <button\n class=\"secondlevel-backbtn\"\n onClick={() => {\n state.openLevel = '';\n state.currentLevel = 1;\n }}\n aria-expanded={(state.openLevel === this.levelId) + ''}\n >\n <pn-icon icon={arrow_left} color=\"blue700\" />\n {state.i18n.menuStartButton}\n </button>\n {this.parentHref && this.label ? <pn-mainnav-link href={this.parentHref} name={this.label} linkid={this.parentLinkId}></pn-mainnav-link> : null}\n </div>\n ) : null}\n <slot name=\"top\"></slot>\n <slot></slot>\n <slot name=\"additional\"></slot>\n <slot name=\"footer\"></slot>\n </Host>\n );\n }\n}\n","@import './pn-mainnav-common.scss';\n@import '../../../globals/main.scss';\n\npn-mainnav-list {\n display: block;\n overflow: visible;\n list-style: none;\n margin: 0;\n padding: 0;\n grid-area: right;\n\n + pn-mainnav-list {\n @media screen and (min-width: $mobilenav-media-abovemobilemode) {\n grid-area: left;\n border-right: 0.1rem solid $gray200;\n margin-bottom: 1.6rem;\n margin-right: -0.7rem;\n padding-right: 0.7rem;\n }\n }\n\n [data-level='1'] > & {\n // height: 100%;\n overflow: scroll;\n -webkit-overflow-scrolling: touch;\n @media screen and (min-width: $mobilenav-media-abovemobilemode) {\n height: 100%;\n display: flex;\n flex-flow: row;\n overflow: visible;\n padding: 0;\n }\n }\n\n &[data-navlist-showcolumns='true'] {\n [data-level='2'] > & {\n @media screen and (min-width: $mobilenav-media-abovemobilemode) {\n column-count: 2;\n column-gap: 1.6rem;\n padding-bottom: 1.6rem;\n }\n }\n }\n}\n\n.mainnav-list-heading {\n display: none;\n font-weight: bold;\n column-span: all;\n font-size: 1.8rem;\n padding: 1.4rem 1.4rem 1.4rem 4.8rem;\n @media screen and (min-width: $mobilenav-media-abovemobilemode) {\n display: block;\n padding: 0 1.4rem 1.4rem 1.4rem;\n }\n}\n","import { Component, h, Host, State, Element, Prop } from '@stencil/core';\n\n@Component({\n tag: 'pn-mainnav-list',\n styleUrl: 'pn-mainnav-list.scss',\n shadow: false,\n})\nexport class PnMainnavList {\n @Element() hostElement: HTMLElement;\n\n @Prop() heading: string = '';\n @State() linkCount: number = 0;\n\n componentWillLoad() {\n this.linkCount = this.hostElement.querySelectorAll(':scope > pn-mainnav-link').length;\n }\n\n render() {\n return (\n <Host class=\"mainnav-list\" role=\"list\" data-navlist-itemcount={this.linkCount + ''} data-navlist-showcolumns={(this.linkCount >= 8) + ''}>\n {this.heading ? <div class=\"mainnav-list-heading\">{this.heading}</div> : null}\n <slot></slot>\n </Host>\n );\n }\n}\n","class MarketWebLoginManager {\n eventTarget: EventTarget = window ?? document?.body;\n endpoint: String = '';\n storagePrefix: String = 'pn-user';\n checkUserLoggedInStateInterval: number = 0;\n baseUrls = {\n at: 'https://atportal.postnord.com/api/unified-login/backend',\n prod: 'https://portal.postnord.com/api/unified-login/backend',\n };\n events = {\n loginstatechange: 'loginstatechange',\n };\n endpoints = {\n authorizationEndpoint: `/authorization`,\n tokenExchangeEndpoint: `/token`,\n userInfoEndpoint: `/user`,\n logoutEndpoint: `/logout`,\n };\n keys = {\n tokensource: 'tokensource',\n token: 'token',\n accessToken: 'accessToken',\n user: 'user',\n expire: 'expire',\n expireDate: 'expiredate',\n };\n overridetokenValue = 'overridetokenValue';\n siteUrl: String = window.location.origin;\n abortSignalForLoginCheck = null;\n loginCheckInProgress = false;\n loginCheckTimer = null;\n\n constructor(options: IMarketWebLoginManagerOptions = null) {\n if (!options) {\n return;\n }\n this.eventTarget = options.eventTarget ? options.eventTarget : this.eventTarget;\n this.endpoint = options.endpoint ? options.endpoint : `${window.location.protocol}//${window.location.host}`;\n this.storagePrefix ??= options.storagePrefix;\n this.checkUserLoggedInStateInterval =\n options.checkUserLoggedInStateInterval && options.checkUserLoggedInStateInterval > 0 ? parseInt(options.checkUserLoggedInStateInterval + '', 10) : 0;\n\n if (options.userInfo) {\n this.store.set(this.keys.user, options.userInfo);\n this.registerToken(this.overridetokenValue, 'override');\n }\n }\n init(checkParameters: boolean = true) {\n if (checkParameters) {\n this.checkParameters();\n this.checkPNTopbar();\n this.checkExpireTime();\n\n if (this.store.get(this.keys.token) && !this.store.get(this.keys.user)) {\n this.fetchUserInfo();\n }\n\n this.loginStateChange();\n\n if (this.checkUserLoggedInStateInterval > 0) {\n this.initiateLoggedInCheck();\n }\n }\n }\n setSiteUrl(siteUrl) {\n if (siteUrl) {\n this.siteUrl = siteUrl;\n }\n }\n initiateLoggedInCheck() {\n if (this.isLoggedIn()) {\n if (window && window['AbortController']) {\n this.abortSignalForLoginCheck = new AbortController();\n }\n this.loginCheckTimer = window.setInterval(() => {\n this.doExternalLoggedInCheck()\n .then(() => {})\n .catch(() => {});\n }, this.checkUserLoggedInStateInterval);\n }\n }\n\n async doExternalLoggedInCheck() {\n if (!window.navigator.onLine) {\n // Don't check if the user is not online\n return;\n }\n if (!this.getToken()) {\n window.clearInterval(this.checkUserLoggedInStateInterval);\n return;\n }\n if (this.loginCheckInProgress && this.abortSignalForLoginCheck) {\n this.abortSignalForLoginCheck.abort();\n this.abortSignalForLoginCheck = new AbortController();\n }\n this.loginCheckInProgress = true;\n const reqConfig: RequestInit = {\n method: 'GET',\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': this.getToken(),\n },\n };\n if (this.abortSignalForLoginCheck && this.abortSignalForLoginCheck['signal']) {\n reqConfig['signal'] = this.abortSignalForLoginCheck['signal'];\n }\n const response = await fetch(`${this.getBaseUrl()}${this.endpoints.userInfoEndpoint}`, reqConfig);\n if (response.status === 409) {\n // This is a status the API returns if a user has been logged out\n window.clearInterval(this.checkUserLoggedInStateInterval);\n console.log('Cleared out user data due to bad response from authentication endpoint');\n this.LogoutUser();\n return;\n }\n if (!response.ok) {\n // The response was \"bad\". This could be due to bad connectivity or something else.\n // We'll ignore it so we don't unecessarily log users out or have them loose state if they're switching connection\n return;\n }\n const data = await response.json();\n if (!data || !data['accessToken']) {\n window.clearInterval(this.checkUserLoggedInStateInterval);\n console.log('Cleared out user data due to bad response from authentication endpoint');\n this.LogoutUser();\n }\n this.loginCheckInProgress = false;\n }\n LogoutUser() {\n this.clearUserData();\n\n // Log out user\n if (this.eventTarget) {\n const logoutLink = (this.eventTarget as HTMLElement).querySelector('#pn-marketweb-header-logoutlink');\n if (logoutLink) {\n (logoutLink as HTMLAnchorElement).click();\n return;\n }\n }\n\n this.loginStateChange();\n \n // If no logout link was found, attempt to change URL to redirect link\n const currentPageHref = window.location.href;\n window.location.href = this.getLogoutUrl(currentPageHref);\n }\n\n isLoggedIn(override = false) {\n if (override) {\n return override;\n }\n\n let isLoggedIn = this.store.get(this.keys.token) && this.store.get(this.keys.user) ? true : false;\n if (!isLoggedIn && this.store.get(this.keys.token) === this.overridetokenValue) {\n isLoggedIn = true;\n }\n return isLoggedIn;\n }\n\n registerToken(token: string = '', tokenSource = 'frontend') {\n if (!token || token === this.getToken()) {\n return;\n }\n this.clearUserData();\n this.store.set(this.keys.tokensource, tokenSource);\n this.store.set(this.keys.token, token);\n this.fetchUserInfo();\n }\n\n invalidateTokenOfType(tokenSource: string = 'frontend') {\n const currentToken = this.store.get(this.keys.token);\n if (!currentToken) {\n return;\n }\n const currentTokenSource = this.store.get(this.keys.tokensource);\n if (currentTokenSource !== tokenSource) {\n return;\n }\n // If we have a token and the source is set then we will invalidate the user data\n this.clearUserData();\n }\n\n getLoginUrl(redirectPage = '') {\n const currentPage = window.location.href;\n redirectPage = redirectPage ? redirectPage : currentPage;\n return `${this.getBaseUrl()}${this.endpoints.authorizationEndpoint}?redirectionUrl=${redirectPage}`;\n }\n\n getLogoutUrl(linkHref = '') {\n if (linkHref.indexOf('logout?logoutUrl') !== -1) {\n // Link has already been formatted.\n return linkHref;\n }\n let redirectPage = linkHref\n .replace('logout', '')\n .replace('http://window.location.href/?', window.location.href)\n .replace('https://window.location.href/?', window.location.href);\n let rootUrl = this.siteUrl;\n try {\n const url = new URL(this.siteUrl + '');\n rootUrl = url.origin;\n } catch (e) {}\n const addSlash = rootUrl.lastIndexOf('/') !== rootUrl.length - 1;\n const siteUrl = rootUrl + (addSlash ? '/' : '') + 'logout';\n const secondLogoutUrl = `${this.getBaseUrl()}${this.endpoints.logoutEndpoint}?authorization=${this.store.get(this.keys.token)}%26redirectionUrl=${redirectPage}`;\n const logoutUrl = `${siteUrl}?logoutUrl=${secondLogoutUrl}`;\n\n return logoutUrl;\n }\n\n getUserInfo() {\n if (this.isLoggedIn()) {\n return this.store.get(this.keys.user) as IUserInfo;\n }\n }\n\n getEventTarget() {\n return this.eventTarget;\n }\n\n private checkExpireTime() {\n const expire = this.store.get(this.keys.expire);\n if (!expire) {\n return;\n }\n const now = new Date();\n const expireDate = new Date(Math.floor(parseInt(expire, 10) * 1000));\n if (now > expireDate) {\n console.info('Login time has expired');\n this.clearUserData();\n this.loginStateChange();\n }\n }\n private checkPNTopbar() {\n if (this.isLoggedIn() || !window['pnTopbar'] || !window['pnTopbar']['session_id']) {\n return;\n }\n\n this.store.set(this.keys.token, window['pnTopbar']['session_id']);\n this.fetchUserInfo();\n }\n\n private checkParameters() {\n if (!window?.location) {\n return;\n }\n\n const params = new URLSearchParams(window.location.search);\n if (params.get('oneTimeCode')) {\n const oneTimeCode = params.get('oneTimeCode');\n\n this.exchangeToken(oneTimeCode).then(() => {\n const currentHref = window.location.href;\n const paramPrefix = currentHref.indexOf('?oneTimeCode') !== -1 ? '?' : '&';\n const newUrl = currentHref.replace(`${paramPrefix}oneTimeCode=${oneTimeCode}`, '');\n history.replaceState({}, document.querySelector('title').innerText, newUrl);\n });\n }\n }\n\n private async fetchUserInfo() {\n const token = this.store.get(this.keys.token);\n if (this.store.get(this.keys.token) === this.overridetokenValue) {\n console.info('Did not fetch user data since it was set by an override');\n return;\n }\n const reqConfig: RequestInit = {\n method: 'GET',\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': token,\n },\n };\n const response = await fetch(`${this.getBaseUrl()}${this.endpoints.userInfoEndpoint}`, reqConfig);\n const data = await response.json();\n if (data && data['idToken']) {\n try {\n const { idToken, expiryTime, accessToken } = data;\n const userInfo = this.parseUserInfo(idToken);\n if (!userInfo) {\n console.error('Userdata is not valid');\n this.clearUserData();\n return;\n }\n this.store.set(this.keys.user, userInfo);\n // 10 Min early expire\n this.store.set(this.keys.accessToken, accessToken);\n this.store.set(this.keys.expire, expiryTime);\n this.store.set(this.keys.expireDate, new Date(Math.floor(parseInt(expiryTime, 10) * 1000)));\n this.loginStateChange();\n } catch (e) {\n console.error('Unable to get user information', e);\n }\n } else {\n console.error('Unable to get user information. Clearing login state');\n this.clearUserData();\n }\n }\n clearUserData() {\n this.store.remove(this.keys.user);\n this.store.remove(this.keys.tokensource);\n this.store.remove(this.keys.accessToken);\n this.store.remove(this.keys.token);\n this.store.remove(this.keys.expire);\n this.store.remove(this.keys.expireDate);\n }\n getToken() {\n return this.store.get(this.keys.token);\n }\n getAccessToken() {\n return this.store.get(this.keys.accessToken);\n }\n async exchangeToken(oneTimeCode) {\n this.clearUserData();\n const response = await fetch(`${this.getBaseUrl()}${this.endpoints.tokenExchangeEndpoint}?oneTimeCode=${oneTimeCode}`);\n const { token } = await response.json();\n if (typeof token === 'string' && token) {\n this.store.set(this.keys.token, token);\n }\n this.fetchUserInfo();\n }\n private loginStateChange() {\n if (!this.eventTarget) {\n return;\n }\n this.eventTarget.dispatchEvent(\n new CustomEvent(this.events.loginstatechange, {\n detail: this.isLoggedIn(),\n }),\n );\n }\n private getBaseUrl() {\n const atEnvironments = ['localhost', 'integration.', 'inte.', 'local.'];\n let useATEnv = atEnvironments.filter(x => this.endpoint.indexOf(x) !== -1).length > 0;\n if (['devportal.postnord.com', 'atportal.postnord.com'].indexOf(window.location.hostname) !== -1) {\n useATEnv = true;\n }\n if (useATEnv) {\n return this.baseUrls.at;\n }\n return this.baseUrls.prod;\n }\n\n private parseUserInfo(idToken: string) {\n if (!idToken) {\n return null;\n }\n var base64Url = idToken.split('.')[1];\n var base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\n var jsonPayload = decodeURIComponent(\n atob(base64)\n .split('')\n .map(function (c) {\n return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);\n })\n .join(''),\n );\n return JSON.parse(jsonPayload);\n }\n\n store = {\n get: (key: string) => {\n const value = window.localStorage.getItem(`${this.storagePrefix}-${key}`);\n if (!value) {\n return value;\n }\n if (value.indexOf('{') === 0) {\n try {\n return JSON.parse(value);\n } catch (e) {}\n }\n if (value.indexOf(',') !== -1) {\n return value.split(',');\n }\n return value;\n },\n set: (key: string, value: any) => {\n if (typeof value === 'object' && typeof value.length === 'undefined') {\n window.localStorage.setItem(`${this.storagePrefix}-${key}`, JSON.stringify(value));\n return;\n }\n window.localStorage.setItem(`${this.storagePrefix}-${key}`, value);\n },\n remove: (key: string) => {\n window.localStorage.removeItem(`${this.storagePrefix}-${key}`);\n },\n };\n}\n\ninterface IMarketWebLoginManagerOptions {\n eventTarget?: EventTarget;\n endpoint?: String;\n storagePrefix?: String;\n userInfo?: IUserInfo;\n checkUserLoggedInStateInterval?: number;\n}\n\ninterface IUserInfo {\n acr?: string;\n ams?: string[];\n at_hash?: string;\n aud?: string;\n auth_time?: number;\n created_at?: number;\n email?: string;\n email_verifier?: true;\n emails?: IUserInfoEmail[];\n exp?: number;\n family_name?: string;\n given_name?: string;\n iat?: number;\n iss?: string;\n jti?: string;\n nonce?: string;\n phone_number?: string;\n phone_number_verified?: boolean;\n phone_number_verified_at?: string;\n phone_numbers?: IUserInfoPhonenumber[];\n rat?: number;\n sid?: string;\n sub?: string;\n uas_status?: number;\n userId?: string;\n username?: string;\n}\n\ninterface IUserInfoEmail {\n email: string;\n verifiet_at: number;\n}\ninterface IUserInfoPhonenumber {\n phone_number: string;\n verifiet_at: string;\n}\n\nexport { MarketWebLoginManager, IMarketWebLoginManagerOptions, IUserInfo };\n","@import '../../../globals/main.scss';\n\n@import './pn-marketweb-siteheader-common.scss';\n\npn-marketweb-siteheader-login {\n padding: 1rem 0;\n max-height: 5.2rem;\n position: relative;\n // Example of how we could indicate username in smaller viewports\n // .siteheader-topright & {\n // &[username] {\n // &:hover {\n // &::after {\n // content:attr(username);\n // display: block;\n // position:absolute;\n // z-index: 4;\n // background:$white;\n // border:.1rem solid $blue700;\n // border-radius: .8rem;\n // padding:0.5rem 0.9rem;\n // margin-top: 0.8rem;\n // left: 50%;\n // transform: translateX(-50%);\n // @media screen and (min-width: $siteheader-media-smalldesktop) {\n // content:\"\";\n // display:none;\n // }\n // }\n // }\n // }\n // }\n\n pn-button-dropdown {\n .pn-button-dropdown-container {\n .pn-button-dropdown-content {\n max-width: 350px;\n display: flex;\n flex-direction: column;\n gap: 2.4rem;\n padding: 4rem;\n\n pn-button {\n width: 100%;\n }\n\n pn-marketweb-siteheader-unified-login {\n &::after {\n display: block;\n content: '';\n height: 2px;\n background: $gray25;\n width: 100%;\n margin-top: 2.4rem;\n }\n }\n\n span {\n &::before {\n display: block;\n content: '';\n height: 2px;\n background: $gray25;\n width: 100%;\n\n margin-bottom: 2.4rem;\n }\n }\n\n span {\n font-size: 1.4rem;\n color: $gray900;\n\n a {\n text-decoration: none;\n color: $blue700;\n &:hover {\n text-decoration: underline;\n }\n }\n\n * {\n margin-bottom: 0;\n }\n }\n }\n }\n }\n\n pn-button-dropdown {\n display: none;\n }\n &.hydrated {\n pn-button-dropdown {\n display: block;\n }\n }\n}\n","import { Component, Element, Event, EventEmitter, h, Host, Prop, State, Watch } from '@stencil/core';\n\nimport { IUserInfo, MarketWebLoginManager } from '../../../globals/MarketWebLoginManager';\nimport { state as headerState } from './pn-marketweb-siteheader-store';\nimport { LoginDialog, SiteHeaderI18N } from './pn-marketweb-siteheader-types';\nimport { user } from 'pn-design-assets/pn-assets/icons.js';\n\n@Component({\n tag: 'pn-marketweb-siteheader-login',\n styleUrl: 'pn-marketweb-siteheader-login.scss',\n})\nexport class PnMarketwebSiteheaderLogin {\n @Element() hostElement: HTMLElement;\n /** Specifies which endpoint domain we should load from */\n @Prop() endpoint: string = '';\n /** Access token passed from backend */\n @Prop() token: string = '';\n @Prop() i18n: SiteHeaderI18N = {\n searchlabel: '',\n searchplaceholder: '',\n searchbuttontext: '',\n menuHomeButton: '',\n menuGoBackButton: '',\n mainMenuButton: '',\n menuStartButton: '',\n profileSelectionFlyoutHeading: '',\n unifiedLoginButton: '',\n unifiedMyPagesButton: '',\n } as SiteHeaderI18N;\n\n @Prop() siteUrl: string = '';\n @Prop() emitEvents: boolean = true;\n\n // Login dialog\n @Prop({ mutable: true }) loginDialog: LoginDialog = null;\n\n /** User Fullname */\n @Prop() fullname: string = '';\n @Prop() loggedin: boolean = false;\n\n /** If this is selected we will show the new profile selection dropdown instead of the login version */\n @Prop({ mutable: true }) showProfileSelection: boolean = false;\n\n /** if this is selected we will show the unifiedlogin button along with new look for dropdown */\n @Prop() showUnifiedLogin: boolean = false;\n\n /** Continiously check if a user is logged in **/\n @Prop({}) checkUserLoggedInStateInterval: number = 0;\n\n @Prop() environment?: string;\n\n @State() loginLinks: [];\n\n @State() toggleButtonText: string = this.loginDialog?.loginMenuLinkText ? this.loginDialog.loginMenuLinkText : '';\n\n @State() username: string = this.fullname;\n\n // Events\n @Event() loginStateChange: EventEmitter;\n\n componentWillLoad() {\n const userInfo: IUserInfo = this.loggedin && this.fullname ? { given_name: this.fullname } : null;\n headerState.loginManager = new MarketWebLoginManager({\n endpoint: this.endpoint,\n eventTarget: this.hostElement as EventTarget,\n checkUserLoggedInStateInterval: this.checkUserLoggedInStateInterval,\n userInfo,\n });\n headerState.loginManager.setSiteUrl(this.siteUrl);\n this.hostElement['loginmanager'] = headerState.loginManager;\n if (this.token) {\n headerState.loginManager.registerToken(this.token, 'backend');\n } else if (this.emitEvents) {\n // The primary login instance\n headerState.loginManager.invalidateTokenOfType('backend');\n }\n this.hostElement.addEventListener(headerState.loginManager.events.loginstatechange, this.onLoginStateChange.bind(this));\n this.init();\n this.setUserName();\n this.setToggleButtonText();\n }\n\n @Watch('i18n')\n @Watch('loginDialog')\n async init() {\n headerState.loginManager.init(this.emitEvents);\n this.setToggleButtonText();\n this.adjustLoginLinks();\n }\n adjustLoginLinks() {\n if (!this.loginDialog?.loginMenuLinks) {\n return;\n }\n\n const adjustLink = (link, i) => {\n if (!link.isLogoutLink) {\n link.isLogoutLink = link.pageLink.indexOf('location.href') !== -1 && link.pageLink.indexOf('logout') !== -1;\n }\n if (link.isLogoutLink) {\n link.href = headerState.loginManager.getLogoutUrl(link.pageLink);\n }\n\n if (i === 0 && !link.href) {\n link.href = headerState.loginManager.getLoginUrl();\n link.linkType = 'primary';\n }\n if (link.primaryLinkApperance && !link.linkType) {\n link.linkType = 'primary';\n }\n return link;\n };\n if (this.loginDialog) {\n this.loginDialog.loginMenuLinks = this.loginDialog.loginMenuLinks.map(adjustLink);\n this.loginDialog.loggedInLinks = this.loginDialog.loggedInLinks.map(adjustLink);\n }\n this.loginDialog.legacyLoginLinks = [\n {\n href: headerState.loginManager.getLoginUrl(this.loginDialog.loginUrl),\n linkText: this.loginDialog.loginLinkText,\n openInNewWindow: false,\n isLogoutLink: false,\n pageLink: null,\n linkType: 'primary',\n primaryLinkApperance: true,\n },\n {\n href: headerState.loginManager.getLoginUrl(this.loginDialog.registerUrl),\n linkText: this.loginDialog.createLoginLinkText,\n openInNewWindow: false,\n isLogoutLink: false,\n pageLink: null,\n primaryLinkApperance: false,\n },\n ];\n }\n\n setUserName() {\n const userInfo = headerState.loginManager.getUserInfo();\n let name = '';\n if (!this.loggedin || !userInfo) {\n this.username = name;\n }\n if (userInfo && userInfo.given_name) {\n name = userInfo.given_name + (userInfo?.family_name ? ` ${userInfo?.family_name}` : '');\n }\n\n if (!name && userInfo && userInfo.email) {\n name = userInfo.email;\n }\n if (!name && this.fullname) {\n name = this.fullname;\n }\n\n this.username = name;\n\n this.adjustLoginLinks();\n }\n\n setToggleButtonText() {\n if (this.loggedin) {\n this.toggleButtonText = this.username;\n if (!this.toggleButtonText) {\n this.toggleButtonText = this.loginDialog.loggedInButtonText;\n }\n } else {\n this.toggleButtonText = this.loginDialog.loginMenuLinkText;\n }\n }\n\n onLoginStateChange(e: CustomEvent) {\n if (this.loggedin !== e.detail && this.emitEvents) {\n this.loggedin = e.detail;\n this.loginStateChange.emit({ loggedIn: this.loggedin, token: headerState.loginManager.getToken() });\n this.setUserName();\n this.setToggleButtonText();\n }\n }\n\n render() {\n if (!this.loginDialog) {\n return;\n }\n\n let hostElementAttribute = {\n username: null,\n loggedin: 'false',\n };\n if (this.username) {\n hostElementAttribute.username = this.username;\n hostElementAttribute.loggedin = this.loggedin + '';\n }\n return (\n <Host {...hostElementAttribute}>\n <pn-button-dropdown label={this.toggleButtonText} icon={user} appearance=\"light\" variant=\"borderless\" class=\"siteheader-logindialog\">\n {this.showUnifiedLogin && (\n <pn-marketweb-siteheader-unified-login\n loggedIn={this.loggedin}\n myPageLabel={this.i18n.unifiedMyPagesButton}\n myPageUrl=\"https://account.postnord.com/secure/profile\"\n logInLabel={this.i18n.unifiedLoginButton}\n />\n )}\n {this.loggedin && this.showProfileSelection ? (\n <pn-marketweb-siteheader-login-profileselection\n loginDialog={this.loginDialog}\n loggedin={this.loggedin}\n i18n={this.i18n}\n idNamespace={this.emitEvents ? '1' : '2'}\n endpoint={this.endpoint}\n ></pn-marketweb-siteheader-login-profileselection>\n ) : (\n <pn-marketweb-siteheader-login-links\n loginDialog={this.loginDialog}\n loggedin={this.loggedin}\n idNamespace={this.emitEvents ? '1' : '2'}\n username={this.username}\n showUnifiedLogin={this.showUnifiedLogin}\n ></pn-marketweb-siteheader-login-links>\n )}\n {!this.loggedin && this.loginDialog?.loginInfo && ( <span innerHTML={`${this.loginDialog.loginInfo}`} />)}\n </pn-button-dropdown>\n </Host>\n );\n }\n}\n","import { createStore } from '@stencil/store';\n// Read more about how stencil stores work here: https://stenciljs.com/docs/stencil-store\n\nconst { state, onChange } = createStore({\n searchValue: '',\n autocompleteSuggestions: {},\n requestAbortController: new AbortController(),\n});\n\nexport { state, onChange };\nexport default state;\n","@import '../../../globals/main.scss';\n@import './pn-marketweb-siteheader-common.scss';\n\n.siteheader-search {\n a {\n display: none;\n @media screen and (min-width: $siteheader-media-tablet) {\n display: block;\n }\n }\n pn-search-field > .input-container button {\n background: $white;\n }\n pn-search-field.button-icon pn-button,\n pn-button {\n display: inline-flex;\n button {\n align-self: center;\n padding: 0;\n height: 2.3em;\n width: 2.4em;\n line-height: 0;\n min-height: unset;\n min-width: initial;\n }\n pn-icon {\n margin-left: 0;\n }\n .pn-button-tooltip {\n line-height: initial !important;\n }\n }\n form {\n justify-content: flex-end;\n align-items: stretch;\n width: auto;\n flex: none;\n display: flex;\n padding: 0;\n margin: 0 0 0 0.4rem;\n position: relative;\n flex-direction: column;\n @media screen and (min-width: $siteheader-media-tablet) {\n }\n @media screen and (min-width: $siteheader-media-smalldesktop) {\n margin-right: 1.6rem;\n }\n pn-search-field {\n min-width: 13.5em;\n .input-container {\n align-self: center;\n }\n input {\n height: auto;\n min-height: 1em;\n padding: 0.6em 0.75em;\n }\n }\n }\n}\n","import { Component, Prop, h, Element, State } from '@stencil/core';\nimport { SiteHeaderSearch } from './pn-marketweb-siteheader-types';\nimport { state, onChange } from './pn-marketweb-siteheader-search-store';\nimport { search } from 'pn-design-assets/pn-assets/icons.js';\n\n@Component({\n tag: 'pn-marketweb-siteheader-search',\n styleUrl: 'pn-marketweb-siteheader-search.scss',\n})\nexport class PnMarketwebSiteheaderSearch {\n @Element() hostElement: Element;\n\n // Language options\n @Prop() i18n: any;\n\n // Display option, show only link\n @Prop({ mutable: true }) showOnlyLink: boolean = false;\n // Hide search option\n @Prop({ mutable: true }) hideSearch: boolean = false;\n /** Specifies which language we want to show (sv,da,fi,no,en) */\n @Prop({ mutable: true, reflect: true }) language: string = null;\n\n /** Specifies the current site id (guid)*/\n @Prop() siteid: string = null;\n\n // Search data\n @Prop({ mutable: true }) search: SiteHeaderSearch = {};\n\n // Is this the primary instance?\n @Prop() primary: boolean = false;\n\n // Only Show icon as search button?\n @Prop() icononly: boolean = true;\n\n // Autocomplete options\n @State() autoCompleteOptions: string[] = [];\n\n onSearchValueUpdate() {\n this.getAutocomplete(state.searchValue);\n }\n\n async getAutocomplete(prefix) {\n if (!this.search.AutocompleteEndpoint || prefix.length < 2) {\n this.autoCompleteOptions = [];\n return;\n }\n if (state.autocompleteSuggestions[prefix]) {\n this.setAutocompleteSuggestions(state.autocompleteSuggestions[prefix]);\n return;\n }\n\n let autocompleteUrl = `${this.search.AutocompleteEndpoint}?prefix=${prefix}&size=10`;\n if (this.language || this.siteid) {\n autocompleteUrl += `&tags=`;\n if (this.language) {\n autocompleteUrl += `language:${this.language}`;\n }\n if (this.language && this.siteid) {\n autocompleteUrl += `,`;\n }\n if (this.siteid) {\n autocompleteUrl += `siteid:${this.siteid}`;\n }\n }\n const req = await fetch(autocompleteUrl, { signal: state.requestAbortController.signal }).catch(e => {\n console.warn('Unable to fetch autocomplete suggestions', e);\n });\n if (!req) {\n return;\n }\n const data = await req.json();\n if (!data || !data.hits || !data.hits.length) {\n return;\n }\n const suggestions = data.hits\n .filter(item => item.type === 'editorial')\n .map(item => {\n return item.query;\n });\n\n // Store query in store\n state.autocompleteSuggestions[prefix] = suggestions;\n this.setAutocompleteSuggestions(suggestions);\n }\n\n setAutocompleteSuggestions(suggestions) {\n if (typeof suggestions !== 'object' || typeof suggestions.length !== 'number' || suggestions.length === 0) {\n return;\n }\n this.autoCompleteOptions = suggestions;\n }\n componentWillLoad() {\n onChange('searchValue', () => {\n this.onSearchValueUpdate();\n });\n }\n\n componentDidRender() {\n const inputSearchElm = this.hostElement.querySelector('pn-search-field input:not([list])');\n if (inputSearchElm && this.search.AutocompleteEndpoint) {\n inputSearchElm.setAttribute('list', 'siteheader-search-autocomplete');\n }\n }\n\n render() {\n if (!this.search.formActionUrl || this.hideSearch) {\n return;\n }\n const autocompleteAttribute = this.search.AutocompleteEndpoint ? { list: 'siteheader-search-autocomplete' } : {};\n return (\n <div class=\"siteheader-search\">\n {this.showOnlyLink ? (\n <pn-button href={this.search.formActionUrl} appearance=\"light\" icon={search} tooltip={this.i18n.searchlabel} />\n ) : (\n <form method=\"get\" action={this.search.formActionUrl} role=\"search\">\n <pn-search-field\n {...autocompleteAttribute}\n label={this.i18n.searchlabel}\n name=\"q\"\n button={this.icononly ? 'icon' : null}\n button-label={'Search'}\n placeholder={this.i18n.searchplaceholder}\n onUpdate={(e: CustomEvent) => {\n state.searchValue = e.detail;\n }}\n onSearch={() => {\n const form = this.hostElement.querySelector('form') as HTMLFormElement;\n if (form) {\n form.submit();\n }\n }}\n />\n\n {this.primary && this.search.AutocompleteEndpoint ? (\n <datalist id=\"siteheader-search-autocomplete\">\n {this.autoCompleteOptions.map(item => (\n <option>{item}</option>\n ))}\n </datalist>\n ) : null}\n </form>\n )}\n </div>\n );\n }\n}\n","export default {\n sv: {\n navlabel: 'Webbplatsväljare',\n },\n en: {\n navlabel: 'Website selector',\n },\n da: {\n navlabel: 'Webstedsvælger',\n },\n no: {\n navlabel: 'Nettstedsvelger',\n },\n fi: {\n navlabel: 'Verkkosivun valitsin',\n },\n de: {\n navlabel: 'Website-Selektor',\n },\n};\n","@import '../../../globals/main.scss';\n@import './pn-site-selector-common.scss';\n\npn-site-selector {\n display: flex;\n position: relative;\n justify-content: center;\n max-height: 5.2rem;\n\n @media screen and (min-width: $siteselector-media-desktop) {\n display: block;\n }\n}\n\n.siteselector-heading {\n display: block;\n padding: 0;\n margin-bottom: 1.6rem;\n\n @media screen and (min-width: $siteselector-media-desktop) {\n display: flex;\n align-items: center;\n margin-top: 0.8rem;\n }\n}\n\n.siteselector-list {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n","import { Component, Prop, h, State, Element, Host } from '@stencil/core';\nimport { SiteSelectori18n } from './pn-site-selector-types';\nimport languageData from './pn-site-selector-i18n';\nimport { angle_small_down } from 'pn-design-assets/pn-assets/icons.js';\n@Component({\n tag: 'pn-site-selector',\n styleUrl: 'pn-site-selector.scss',\n})\nexport class PnSiteSelector {\n @Element() hostElement: HTMLElement;\n\n /* Site selector Button text */\n @Prop({ mutable: true, reflect: true }) buttontext: string = 'postnord';\n /* Site selector flyout title */\n @Prop({ mutable: true, reflect: true }) heading: string = 'PostNord';\n /** Specifies which language we want to show navigation in (sv,da,fi,no,en) */\n @Prop({ mutable: true, reflect: true }) language: string = 'sv';\n @State() i18n: SiteSelectori18n = { navlabel: 'Site selector' };\n\n componentWillLoad() {\n this.setLanguage();\n }\n\n setLanguage() {\n if (languageData[this.language]) {\n this.i18n = languageData[this.language] as SiteSelectori18n;\n }\n }\n\n render() {\n return (\n <Host>\n <pn-button-dropdown label={this.buttontext} icon={angle_small_down} appearance=\"light\" variant=\"borderless\">\n <nav class=\"siteselector-nav\" aria-label={this.i18n.navlabel}>\n {this.heading ? <strong class=\"siteselector-heading\">{this.heading}</strong> : null}\n <ul class=\"siteselector-list\">\n <slot />\n </ul>\n </nav>\n </pn-button-dropdown>\n </Host>\n );\n }\n}\n","@import '../../../globals/main.scss';\n@import './pn-site-selector-common.scss';\n\npn-site-selector-item {\n display: block;\n > div,\n > a {\n padding: 0.8rem 0;\n display: flex;\n flex-flow: column;\n position: relative;\n }\n}\n\n.siteselector-item-link {\n border-radius: 0;\n text-decoration: none;\n color: $blue700;\n flex-direction: row;\n\n &:hover,\n &:focus {\n background-color: $gray50;\n color: $blue700;\n text-decoration: underline;\n outline: none;\n box-shadow: none;\n }\n\n &:active {\n background-color: $gray50;\n color: $blue400;\n outline: none;\n }\n > span {\n flex-grow: 1;\n }\n pn-icon {\n right: 3.2rem;\n height: 1.9rem;\n width: 1.9rem;\n align-self: center;\n\n svg {\n width: 100%;\n height: auto;\n }\n }\n}\n.siteselector-item-title {\n display: block;\n}\n\n.siteselector-item-description {\n color: $gray900;\n font-size: 1.28rem;\n\n a:hover > &,\n a:focus > & {\n background-color: $gray50;\n color: $blue700;\n text-decoration: underline;\n outline: none;\n }\n\n a:active > & {\n background-color: $gray50;\n color: $blue400;\n outline: none;\n }\n}\n","import { Component, Prop, h, Host } from '@stencil/core';\nimport { angle_small_right } from 'pn-design-assets/pn-assets/icons.js';\n\n@Component({\n tag: 'pn-site-selector-item',\n styleUrl: 'pn-site-selector-item.scss',\n})\nexport class PnSiteSelectorItem {\n /* Link URL */\n @Prop() url: string = '';\n\n /* Link title */\n @Prop() heading: string = '';\n\n /* Link description */\n @Prop() description: string = '';\n\n /* Open link in new window */\n @Prop() newwindow: boolean = false;\n\n render() {\n return (\n <Host role=\"listitem\">\n {this.url ? (\n <a class=\"siteselector-item-link\" href={this.url} target={this.newwindow ? '_blank' : 'self'} rel={this.newwindow ? 'nofollow noopener' : ''}>\n <span>\n {this.heading && <span class=\"siteselector-item-title\">{this.heading}</span>}\n {this.description && <small class=\"siteselector-item-description\">{this.description}</small>}\n </span>\n <pn-icon icon={angle_small_right} color=\"blue700\" />\n </a>\n ) : (\n <div>\n {this.heading && <span class=\"siteselector-item-title\">{this.heading}</span>}\n {this.description && <small class=\"siteselector-item-description\">{this.description}</small>}\n </div>\n )}\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,2 +0,0 @@
1
- import{g as t,r as i,c as e,h as s,d as n}from"./p-bb1c965e.js";import{d as l}from"./p-aed52bc1.js";import{p as o}from"./p-df8bfe03.js";import{v as h}from"./p-4ed69de7.js";const d="pn-button-dropdown .pn-button-dropdown>pn-button>.pn-button{min-height:initial}pn-dropdown-with-multi-input-rows .dropdown-with-multi-input-element__row{margin-bottom:1rem}pn-dropdown-with-multi-input-rows .dropdown-with-multi-input-element__delete{display:flex;gap:1rem;margin-bottom:1rem;padding:1rem;background-color:#f9f8f8}pn-dropdown-with-multi-input-rows .dropdown-with-multi-input-element__delete pn-button{margin-top:0.9rem}pn-dropdown-with-multi-input-rows .dropdown-with-multi-input-element__label-row{display:flex;gap:1rem}pn-dropdown-with-multi-input-rows .dropdown-with-multi-input-element__label{width:30%;font-size:0.875em;color:#5e554a}pn-dropdown-with-multi-input-rows .sum-row{display:flex;justify-content:space-between}pn-dropdown-with-multi-input-rows .dropdown-with-multi-input-element__dropdown{display:inline-flex;align-items:center}pn-dropdown-with-multi-input-rows small{max-width:70%;margin:1rem;align-self:center;position:relative;top:1rem}pn-dropdown-with-multi-input-rows .dropdown-with-multi-input-element__row .dropdown-with-multi-input-element__dropdown .pn-row-select-dropdown .pn-select .pn-select-input .pn-select-content{width:18rem}";const r=d;const u=class{get hostElement(){return t(this)}pnFirstDropdown=null;pnSecondDropdown=null;pnSumField=null;pnConfirmDeleteButton=null;pnAbortDeleteButton=null;allFormValues;_firstDropdownSelection=null;_secondDropdownSelection=null;_defaultRow;constructor(t){i(this,t);this.allFormValues=e(this,"allFormValues",7);this.dropdownData=null;this.languageCode=null;this.firstDropdownLabel=null;this.firstDropdownHelperText=null;this.secondDropdownLabel=null;this.secondDropdownHelperText=null;this.secondDropdownMax=null;this.deleteMultipleRowsWarningText=null;this.confirmDeleteButtonText=null;this.abortDeleteButtonText=null;this.fristInputLabel=null;this.fristInputPlaceholder=null;this.firstInputMin=null;this.firstInputMax=null;this.firstInputWarning=null;this.firstInputWarningText=null;this.firstInputLowErrorText=null;this.firstInputHighErrorText=null;this.secondInputLabel=null;this.secondInputPlaceholder=null;this.secondInputMin=null;this.secondInputMax=null;this.secondInputWarning=null;this.secondInputWarningText=null;this.secondInputLowErrorText=null;this.secondInputHighErrorText=null;this.dateLabel=null;this.datePlaceholder=null;this.dateDaysFromToday=1;this.yearsToAddToEndDate=null;this.sumFieldLabel=null;this.addRowText=null;this.elementHelperText=null;this.dropdownDataRoot=null;this.secondDropdownArr=[];this.rowData=null;this.formValues=null;this.firstValidDateString="";this.lastValidDateString="";this.rowSum=null;this.minRowCount=null;this.showDelteConfirm=false;this._defaultRow={id:this.generateUniqueId(),firstInput:"",secondInput:this.secondInputWarning!==null?this.secondInputWarning.toString():"",date:""}}componentWillLoad(){this.formValues=[];this.setDropDownData();this.updateSecondDropdown();this.setRowData();this.setFirstValidDate()}componentDidLoad(){this.updateSum()}setDropDownData(){if(typeof this.dropdownData==="string"){this.dropdownDataRoot=JSON.parse(this.dropdownData)}else{this.dropdownDataRoot=this.dropdownData}if(this.dropdownDataRoot?.length){this.dropdownDataRoot.forEach((t=>{if(!t.value){t.value=0}}))}if(this.dropdownDataRoot.length>0){this.dropdownDataRoot[0].checked=true;this._firstDropdownSelection=this.dropdownDataRoot[0].label;this._secondDropdownSelection=this.dropdownDataRoot[0].value;this.minRowCount=this.dropdownDataRoot[0].value}}updateSecondDropdown(){const t=this.dropdownDataRoot.find((t=>t.checked===true));this.secondDropdownArr=[];for(let i=t.value;i<=this.secondDropdownMax;i++){this.secondDropdownArr.push(i)}}updateSelectItemArr(t,i){t.forEach((t=>{if(t.label===i){t.checked=!t.checked}else{t.checked=false}}));return t}setRowData(){this.rowData=[];for(let t=0;t<this._secondDropdownSelection;t++){const t=Object.assign({},this._defaultRow);t.id=this.generateUniqueId();this.rowData=[...this.rowData,t]}}generateUniqueId(){return h()}setFirstValidDate(){const t=this.yearsToAddToEndDate?this.yearsToAddToEndDate:2;const i=new Date;i.setDate(i.getDate()+this.dateDaysFromToday??0);const e=i.getFullYear();const s=(i.getMonth()+1).toString().padStart(2,"0");const n=i.getDate().toString().padStart(2,"0");const l=e+t;this.firstValidDateString=`${e.toString()}-${s}-${n}`;this.lastValidDateString=`${l.toString()}-${s}-${n}`}addRow(t){const i=Object.assign({},this.rowData[0]);i.id=t?t:this.generateUniqueId();i.date="";this.rowData=[...this.rowData,i];this.secondDropdownArr=[...this.secondDropdownArr];this.updateSum();this.emitValuesIfValid()}handleFirstDropdown(){const t=this.pnFirstDropdown.querySelector("[aria-selected=true]");const i=t?.textContent;if(!i?.length){return}this.dropdownDataRoot.forEach((t=>{t.checked=false}));const e=this.dropdownDataRoot.find((t=>t.label===i));e.checked=true;this._firstDropdownSelection=e.label;this.minRowCount=e.value;if(e.value>this._secondDropdownSelection){this.dropdownDataRoot=[...this.dropdownDataRoot];for(let t=this.rowData?.length;t<e.value;t++){this.addRow(this.generateUniqueId())}}this.updateSecondDropdown();this.updateSum();this.emitValuesIfValid()}handleSecondDropdown=l((t=>{const i=t.target;const e=i?.closest("pn-option");if(!e){console.error("Selected option is null");return}const s=e.textContent?.trim();if(!s?.length){return}const n=parseInt(s);if(n<this._secondDropdownSelection){this.showDelteConfirm=true}else{for(let t=this.rowData?.length;t<n;t++){this.addRow(this.generateUniqueId())}}this.updateSum();this.emitValuesIfValid()}));predefinedValueChange(t){const i=this.rowData?.findIndex((i=>i.id===t.detail.id));const e=t.detail;this.rowData[i]={...this.rowData[i],firstInput:e.firstInput,secondInput:e.secondInput,date:e.date};if(t.type==="firstInputChange"&&i===0){this.updateFirstInputOfRows(e.firstInput)}if(t.type==="secondInputChange"&&i===0){this.updateSecondInputOfRows(e.secondInput)}this.rowData=[...this.rowData];this.emitValuesIfValid();this.updateSum()}updateFirstInputOfRows(t){for(let i=1;i<this.rowData?.length;i++){this.rowData[i]={...this.rowData[i],firstInput:t}}}updateSecondInputOfRows(t){for(let i=1;i<this.rowData?.length;i++){this.rowData[i]={...this.rowData[i],secondInput:t}}}deleteRowEvent(t){const i=this.rowData?.findIndex((i=>i.id===t.detail));if(i<0){return}this.rowData?.splice(i,1);this.rowData=[...this.rowData];this.secondDropdownArr=[...this.secondDropdownArr];this.emitValuesIfValid();this.updateSum()}updateSum(){this.rowSum="";let t=0;this.rowData?.forEach((i=>{if(i?.firstInput?.length){t+=parseInt(i.firstInput)}}));this._secondDropdownSelection=this.rowData?.length;this.rowSum=t.toString()}deleteExcessRows(){const t=this.pnSecondDropdown.querySelector("button span");const i=t?.textContent?.trim();if(!i?.length){return}const e=this.rowData?.length-parseInt(i);for(let t=0;t<e;t++){this.rowData?.pop()}this.rowData=[...this.rowData];this.showDelteConfirm=false;this.updateSum()}abortDeleteRows(){this.showDelteConfirm=false}emitValuesIfValid(){this.formValues=[];this.rowData?.forEach((t=>{const i={row:[]};if(this._firstDropdownSelection?.length){const t={name:this.firstDropdownLabel,value:this._firstDropdownSelection};i.row.push(t)}if(t.firstInput?.length){const e={name:this.fristInputLabel,value:t.firstInput};i.row.push(e)}if(t.secondInput?.length){const e={name:this.secondInputLabel,value:t.secondInput};i.row.push(e)}if(t.date){const e={name:this.dateLabel,value:t.date};i.row.push(e)}if(i.row.length===4){this.formValues.push(i)}}));if(this.formValues.length===this.rowData?.length){const t=JSON.stringify(this.formValues);this.allFormValues.emit(t)}else{this.allFormValues.emit("")}}render(){return s(n,{key:"e9dc9f749ae4365e501772d12fed36d5a729b16d",class:"dropdown-with-multi-input-element"},s("div",{key:"dc0a0e5504932241119532c874353916ffdf50f5",class:"dropdown-with-multi-input-element__row"},s("div",{key:"b4bfbf9ba001ed5f58f3586453025d19acb429b2",class:"dropdown-with-multi-input-element__dropdown"},s("pn-select",{key:"0c66a027bc5bae8d52765abb3ba28dabbf7c52bc",ref:t=>this.pnFirstDropdown=t,class:"pn-row-select-dropdown dropDown1-dropdown",label:this.firstDropdownLabel,"empty-option":"true",language:this.languageCode},this.dropdownDataRoot?.map(((t,i)=>s("pn-option",{index:i,label:t.label,value:t.value,selected:t.checked,onClick:l(this.handleFirstDropdown.bind(this),500)})))),this.firstDropdownHelperText?.length?s("small",null,this.firstDropdownHelperText):null)),s("div",{key:"9513d9d71061e56898af9d989804980602570b00",class:"dropdown-with-multi-input-element__row"},s("div",{key:"e44eda7ca5bde14ff34ef765a38e774f5e6dd0c1",class:"dropdown-with-multi-input-element__dropdown"},s("pn-select",{key:"deaad3fcac4be739c2c3892a4bf7c7539c346bd8",ref:t=>this.pnSecondDropdown=t,class:"pn-row-select-dropdown dropDown2-dropdown",label:this.secondDropdownLabel,"empty-option":"true",language:this.languageCode},this.secondDropdownArr?.map(((t,i)=>s("pn-option",{index:i,label:t,value:t,selected:t===this._secondDropdownSelection,onClick:l(this.handleSecondDropdown.bind(this),500)})))),this.secondDropdownHelperText?.length?s("small",null,this.secondDropdownHelperText):null)),this.showDelteConfirm?s("div",{class:"dropdown-with-multi-input-element__delete"},s("p",null,this.deleteMultipleRowsWarningText),s("pn-button",{ref:t=>this.pnConfirmDeleteButton=t,small:"true",appearance:"warning",onClick:this.deleteExcessRows.bind(this)},this.confirmDeleteButtonText),s("pn-button",{ref:t=>this.pnAbortDeleteButton=t,small:"true",appearance:"light",onClick:this.abortDeleteRows.bind(this)},this.abortDeleteButtonText)):null,s("div",{key:"b355ce1daff342ea82fdb6f4a2f521b4deb32377",class:"dropdown-with-multi-input-element__label-row"},s("div",{key:"8163d255875440e2ea95710593fd9419252342d9",class:"dropdown-with-multi-input-element__label"},s("label",{key:"c87304fe159f377f0e989a69ddfed40f54d48de0"},this.fristInputLabel)),s("div",{key:"b40c19154d80a4999ef24ca9a405263ef94a63e4",class:"dropdown-with-multi-input-element__label"},s("label",{key:"e5745a6965290972d81b897cfc95b0742747cab4"},this.secondInputLabel)),s("div",{key:"b64a92fe13a9bf4894b0a2bdd225649297b2db8c",class:"dropdown-with-multi-input-element__label"},s("label",{key:"91f12cd1acaefacf37c83062810e159b0be153a3"},this.dateLabel))),this.rowData?.map(((t,i)=>s("div",{class:"dropdown-with-multi-input-element__row generated-row-"+i,id:"generated-row-"+i},s("pn-dropdown-with-multi-input-rows-row",{"language-code":this.languageCode,"frist-input-placeholder":this.fristInputPlaceholder,"first-input-min":this.firstInputMin,"first-input-max":this.firstInputMax,"first-input-warning":this.firstInputWarning,"first-input-warning-text":this.firstInputWarningText,"first-input-low-error-text":this.firstInputLowErrorText,"first-input-high-error-text":this.firstInputHighErrorText,"second-input-placeholder":this.secondInputPlaceholder,"second-input-min":this.secondInputMin,"second-input-max":this.secondInputMax,"second-input-warning":this.secondInputWarning,"second-input-warning-text":this.secondInputWarningText,"second-input-low-error-text":this.secondInputLowErrorText,"second-input-high-error-text":this.secondInputHighErrorText,datePlaceholder:this.datePlaceholder,firstValidDate:this.firstValidDateString,lastValidDate:this.lastValidDateString,"predefined-value":JSON.stringify(t),"min-row-count":this.minRowCount,"row-index":i})))),s("div",{key:"5e61626feb6744e7fea1520e0fccd6a5db887b3b",class:"dropdown-with-multi-input-element__row sum-row"},s("pn-marketweb-input",{key:"7b5ec2dc448af5a420cda2df9b886b7302065380",disabled:true,ref:t=>this.pnSumField=t,type:"number",value:this.rowSum,label:this.sumFieldLabel}),s("pn-button",{key:"ed7bd68e74de062f0c09ae055f1d6f7b6728d828",tooltip:this.addRowText?this.addRowText:null,"left-icon":"true",arialabel:"Add",icon:o,appearance:"light",variant:"borderless",class:"connected-dropdown__button-right",onClick:()=>{this.addRow(this.generateUniqueId())}},this.addRowText)),this.elementHelperText?.length?s("div",{class:"dropdown-with-multi-input-element__row"},this.elementHelperText):null)}};u.style=r;export{u as pn_dropdown_with_multi_input_rows};
2
- //# sourceMappingURL=p-daba7df2.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["pnDropdownWithMultiInputRowsCss","PnDropdownWithMultiInputRowsStyle0","PnDropdownWithMultiInputRows","pnFirstDropdown","pnSecondDropdown","pnSumField","pnConfirmDeleteButton","pnAbortDeleteButton","allFormValues","_firstDropdownSelection","_secondDropdownSelection","_defaultRow","constructor","hostRef","this","id","generateUniqueId","firstInput","secondInput","secondInputWarning","toString","date","componentWillLoad","formValues","setDropDownData","updateSecondDropdown","setRowData","setFirstValidDate","componentDidLoad","updateSum","dropdownData","dropdownDataRoot","JSON","parse","length","forEach","element","value","checked","label","minRowCount","selectedItem","find","arr","secondDropdownArr","index","secondDropdownMax","push","updateSelectItemArr","caption","item","rowData","row","Object","assign","uuidv4","yearsToadd","yearsToAddToEndDate","Date","setDate","getDate","dateDaysFromToday","year","getFullYear","month","getMonth","padStart","day","endYear","firstValidDateString","lastValidDateString","addRow","newRowId","newRow","emitValuesIfValid","handleFirstDropdown","selected","querySelector","selectedValue","textContent","selectionRoot","x","handleSecondDropdown","debounce","e","target","selectedOption","closest","console","error","trim","parseInt","showDelteConfirm","predefinedValueChange","indexToUpdate","findIndex","data","detail","val","type","updateFirstInputOfRows","updateSecondInputOfRows","deleteRowEvent","indexToRemove","splice","rowSum","sum","deleteExcessRows","selectedButton","rowsToDelete","pop","abortDeleteRows","rowValue","dropDownValue","name","firstDropdownLabel","firstInputValue","fristInputLabel","secondInputValue","secondInputLabel","dateValue","dateLabel","valueJsonString","stringify","emit","render","h","Host","key","class","ref","el","language","languageCode","map","i","onClick","bind","firstDropdownHelperText","secondDropdownLabel","secondDropdownHelperText","deleteMultipleRowsWarningText","small","appearance","confirmDeleteButtonText","abortDeleteButtonText","fristInputPlaceholder","firstInputMin","firstInputMax","firstInputWarning","firstInputWarningText","firstInputLowErrorText","firstInputHighErrorText","secondInputPlaceholder","secondInputMin","secondInputMax","secondInputWarningText","secondInputLowErrorText","secondInputHighErrorText","datePlaceholder","firstValidDate","lastValidDate","disabled","sumFieldLabel","tooltip","addRowText","arialabel","icon","plus","variant","elementHelperText"],"sources":["src/components/input/pn-dropdown-with-multi-input-rows/pn-dropdown-with-multi-input-rows.scss?tag=pn-dropdown-with-multi-input-rows","src/components/input/pn-dropdown-with-multi-input-rows/pn-dropdown-with-multi-input-rows.tsx"],"sourcesContent":["@import '../../../globals/main.scss';\n\npn-dropdown-with-multi-input-rows {\n .dropdown-with-multi-input-element {\n &__row {\n margin-bottom: 1rem;\n }\n\n &__delete {\n display: flex;\n gap: 1rem;\n margin-bottom: 1rem;\n padding: 1rem;\n background-color: $gray25;\n\n pn-button {\n margin-top: 0.9rem;\n }\n }\n\n &__label-row {\n display: flex;\n gap: 1rem;\n }\n\n &__label {\n width: 30%;\n font-size: 0.875em;\n color: #5e554a;\n }\n }\n\n \n .sum-row {\n display: flex;\n justify-content: space-between;\n }\n \n .dropdown-with-multi-input-element__dropdown {\n display: inline-flex;\n align-items: center;\n }\n \n small {\n max-width: 70%;\n margin: 1rem;\n align-self: center;\n position: relative;\n top: 1rem;\n }\n \n .dropdown-with-multi-input-element__row \n .dropdown-with-multi-input-element__dropdown \n .pn-row-select-dropdown \n .pn-select \n .pn-select-input\n .pn-select-content {\n width: 18rem;\n }\n\n}\n","import { Component, Prop, h, Element, State, Host, Watch, Event, EventEmitter, Listen } from '@stencil/core';\nimport { FormValue, RowValue, Root, PredefinedValues } from './types';\nimport { v4 as uuidv4 } from 'uuid';\nimport debounce from 'debounce';\nimport { plus } from 'pn-design-assets/pn-assets/icons.js';\n\n@Component({\n tag: 'pn-dropdown-with-multi-input-rows',\n styleUrl: 'pn-dropdown-with-multi-input-rows.scss',\n})\nexport class PnDropdownWithMultiInputRows {\n @Element() hostElement: Element;\n pnFirstDropdown: HTMLElement = null;\n pnSecondDropdown: HTMLElement = null;\n pnSumField: HTMLElement = null;\n pnConfirmDeleteButton: HTMLElement = null;\n pnAbortDeleteButton: HTMLElement = null;\n\n @Prop() dropdownData: string | Root[] = null;\n @Prop() languageCode: string = null;\n @Prop() firstDropdownLabel: string = null;\n @Prop() firstDropdownHelperText: string = null;\n @Prop() secondDropdownLabel: string = null;\n @Prop() secondDropdownHelperText: string = null;\n @Prop() secondDropdownMax: number = null;\n @Prop() deleteMultipleRowsWarningText: string = null;\n @Prop() confirmDeleteButtonText: string = null;\n @Prop() abortDeleteButtonText: string = null;\n @Prop() fristInputLabel: string = null;\n @Prop() fristInputPlaceholder: string = null;\n @Prop() firstInputMin: number = null;\n @Prop() firstInputMax: number = null;\n @Prop() firstInputWarning: number = null;\n @Prop() firstInputWarningText: string = null;\n @Prop() firstInputLowErrorText: string = null;\n @Prop() firstInputHighErrorText: string = null;\n @Prop() secondInputLabel: string = null;\n @Prop() secondInputPlaceholder: string = null;\n @Prop() secondInputMin: number = null;\n @Prop() secondInputMax: number = null;\n @Prop() secondInputWarning: number = null;\n @Prop() secondInputWarningText: string = null;\n @Prop() secondInputLowErrorText: string = null;\n @Prop() secondInputHighErrorText: string = null;\n @Prop() dateLabel: string = null;\n @Prop() datePlaceholder: string = null;\n @Prop() dateDaysFromToday: number = 1;\n @Prop() yearsToAddToEndDate: number = null;\n @Prop() sumFieldLabel: string = null;\n @Prop() addRowText: string = null;\n @Prop() elementHelperText: string = null;\n\n @State() dropdownDataRoot: Root[] = null;\n @State() secondDropdownArr: number[] = [];\n @State() rowData: PredefinedValues[] = null;\n @State() formValues: FormValue[] = null;\n @State() firstValidDateString: string = '';\n @State() lastValidDateString: string = '';\n @State() rowSum: string = null;\n @State() minRowCount: number = null;\n @State() showDelteConfirm: boolean = false;\n\n @Event() allFormValues: EventEmitter<string>;\n\n private _firstDropdownSelection: string = null;\n private _secondDropdownSelection: number = null;\n\n private _defaultRow: PredefinedValues;\n\n constructor() {\n this._defaultRow = {\n id: this.generateUniqueId(),\n firstInput: '',\n secondInput: this.secondInputWarning !== null ? this.secondInputWarning.toString() : '',\n date: '',\n };\n }\n\n componentWillLoad() {\n this.formValues = [];\n this.setDropDownData();\n this.updateSecondDropdown();\n this.setRowData();\n this.setFirstValidDate();\n }\n\n componentDidLoad() {\n this.updateSum();\n }\n\n setDropDownData() {\n if (typeof this.dropdownData === 'string') {\n this.dropdownDataRoot = JSON.parse(this.dropdownData);\n } else {\n this.dropdownDataRoot = this.dropdownData;\n }\n\n if (this.dropdownDataRoot?.length) {\n this.dropdownDataRoot.forEach(element => {\n if (!element.value) {\n element.value = 0;\n }\n });\n }\n\n if (this.dropdownDataRoot.length > 0) {\n this.dropdownDataRoot[0].checked = true;\n this._firstDropdownSelection = this.dropdownDataRoot[0].label;\n this._secondDropdownSelection = this.dropdownDataRoot[0].value;\n this.minRowCount = this.dropdownDataRoot[0].value;\n }\n }\n\n updateSecondDropdown() {\n const selectedItem = this.dropdownDataRoot.find(arr => arr.checked === true);\n this.secondDropdownArr = [];\n\n for (let index = selectedItem.value; index <= this.secondDropdownMax; index++) {\n this.secondDropdownArr.push(index);\n }\n }\n\n updateSelectItemArr(arr: Root[], caption: string) {\n arr.forEach(item => {\n if (item.label === caption) {\n item.checked = !item.checked;\n } else {\n item.checked = false;\n }\n });\n return arr;\n }\n\n setRowData() {\n this.rowData = [];\n for (let index = 0; index < this._secondDropdownSelection; index++) {\n const row = Object.assign({}, this._defaultRow);\n row.id = this.generateUniqueId();\n this.rowData = [...this.rowData, row];\n }\n }\n\n generateUniqueId() {\n return uuidv4();\n }\n\n setFirstValidDate() {\n const yearsToadd = this.yearsToAddToEndDate ? this.yearsToAddToEndDate : 2;\n const date = new Date();\n date.setDate(date.getDate() + this.dateDaysFromToday ?? 0);\n\n const year = date.getFullYear();\n const month = (date.getMonth() + 1).toString().padStart(2, '0');\n const day = date.getDate().toString().padStart(2, '0');\n const endYear = year + yearsToadd;\n\n this.firstValidDateString = `${year.toString()}-${month}-${day}`;\n this.lastValidDateString = `${endYear.toString()}-${month}-${day}`;\n }\n\n addRow(newRowId: string) {\n const newRow = Object.assign({}, this.rowData[0]);\n newRow.id = newRowId ? newRowId : this.generateUniqueId();\n newRow.date = '';\n this.rowData = [...this.rowData, newRow];\n\n this.secondDropdownArr = [...this.secondDropdownArr];\n this.updateSum();\n this.emitValuesIfValid();\n }\n\n handleFirstDropdown() {\n const selected = this.pnFirstDropdown.querySelector('[aria-selected=true]');\n const selectedValue = selected?.textContent;\n if (!selectedValue?.length) {\n return;\n }\n\n this.dropdownDataRoot.forEach(element => {\n element.checked = false;\n });\n const selectionRoot = this.dropdownDataRoot.find(x => x.label === selectedValue);\n selectionRoot.checked = true;\n this._firstDropdownSelection = selectionRoot.label;\n this.minRowCount = selectionRoot.value;\n\n if (selectionRoot.value > this._secondDropdownSelection) {\n this.dropdownDataRoot = [...this.dropdownDataRoot];\n\n for (let index = this.rowData?.length; index < selectionRoot.value; index++) {\n this.addRow(this.generateUniqueId());\n }\n }\n\n this.updateSecondDropdown();\n this.updateSum();\n this.emitValuesIfValid();\n }\n\n handleSecondDropdown = debounce((e: Event) => {\n const target = e.target as HTMLElement | null;\n const selectedOption = target?.closest('pn-option') as HTMLElement | null;\n \n if (!selectedOption) {\n console.error('Selected option is null');\n return;\n }\n \n const selectedValue = selectedOption.textContent?.trim();\n\n if (!selectedValue?.length) {\n return;\n }\n\n const value = parseInt(selectedValue);\n if (value < this._secondDropdownSelection) {\n this.showDelteConfirm = true;\n } else {\n for (let index = this.rowData?.length; index < value; index++) {\n this.addRow(this.generateUniqueId());\n }\n }\n this.updateSum();\n this.emitValuesIfValid();\n })\n\n @Listen('rowValueChange')\n @Listen('firstInputChange')\n @Listen('secondInputChange')\n predefinedValueChange(e) {\n const indexToUpdate = this.rowData?.findIndex(data => data.id === e.detail.id);\n const val: PredefinedValues = e.detail;\n this.rowData[indexToUpdate] = {\n ...this.rowData[indexToUpdate],\n firstInput: val.firstInput,\n secondInput: val.secondInput,\n date: val.date,\n };\n\n if (e.type === 'firstInputChange' && indexToUpdate === 0) {\n this.updateFirstInputOfRows(val.firstInput);\n }\n\n if (e.type === 'secondInputChange' && indexToUpdate === 0) {\n this.updateSecondInputOfRows(val.secondInput);\n }\n\n this.rowData = [...this.rowData];\n this.emitValuesIfValid();\n this.updateSum();\n }\n\n updateFirstInputOfRows(value: string) {\n for (let index = 1; index < this.rowData?.length; index++) {\n this.rowData[index] = {\n ...this.rowData[index],\n firstInput: value,\n };\n }\n }\n\n updateSecondInputOfRows(value: string) {\n for (let index = 1; index < this.rowData?.length; index++) {\n this.rowData[index] = {\n ...this.rowData[index],\n secondInput: value,\n };\n }\n }\n\n @Listen('deleteRowEvent')\n deleteRowEvent(e) {\n const indexToRemove = this.rowData?.findIndex(data => data.id === e.detail);\n if (indexToRemove < 0) {\n return;\n }\n\n this.rowData?.splice(indexToRemove, 1);\n this.rowData = [...this.rowData];\n\n this.secondDropdownArr = [...this.secondDropdownArr];\n this.emitValuesIfValid();\n this.updateSum();\n }\n\n updateSum() {\n this.rowSum = '';\n let sum = 0;\n this.rowData?.forEach(element => {\n if (element?.firstInput?.length) {\n sum += parseInt(element.firstInput);\n }\n });\n\n this._secondDropdownSelection = this.rowData?.length;\n this.rowSum = sum.toString();\n }\n\n deleteExcessRows() {\n const selectedButton = this.pnSecondDropdown.querySelector('button span');\n const selectedValue = selectedButton?.textContent?.trim();\n\n if (!selectedValue?.length) {\n return;\n }\n const rowsToDelete = this.rowData?.length - parseInt(selectedValue);\n for (let index = 0; index < rowsToDelete; index++) {\n this.rowData?.pop();\n }\n this.rowData = [...this.rowData];\n this.showDelteConfirm = false;\n this.updateSum();\n }\n\n abortDeleteRows() {\n this.showDelteConfirm = false;\n }\n\n emitValuesIfValid() {\n this.formValues = [];\n this.rowData?.forEach(item => {\n const rowValue: FormValue = { row: [] };\n if (this._firstDropdownSelection?.length) {\n const dropDownValue: RowValue = { name: this.firstDropdownLabel, value: this._firstDropdownSelection };\n rowValue.row.push(dropDownValue);\n }\n \n if (item.firstInput?.length) {\n const firstInputValue: RowValue = { name: this.fristInputLabel, value: item.firstInput };\n rowValue.row.push(firstInputValue);\n }\n \n if (item.secondInput?.length) {\n const secondInputValue: RowValue = { name: this.secondInputLabel, value: item.secondInput };\n rowValue.row.push(secondInputValue);\n }\n\n if (item.date) {\n const dateValue: RowValue = { name: this.dateLabel, value: item.date };\n rowValue.row.push(dateValue);\n }\n \n if (rowValue.row.length === 4) {\n this.formValues.push(rowValue);\n }\n });\n \n if (this.formValues.length === this.rowData?.length) {\n const valueJsonString = JSON.stringify(this.formValues);\n this.allFormValues.emit(valueJsonString);\n } else {\n this.allFormValues.emit('');\n }\n }\n\n render() {\n return (\n <Host class=\"dropdown-with-multi-input-element\">\n <div class=\"dropdown-with-multi-input-element__row\">\n <div class=\"dropdown-with-multi-input-element__dropdown\">\n <pn-select ref={el => (this.pnFirstDropdown = el as HTMLElement)} class=\"pn-row-select-dropdown dropDown1-dropdown\" label={this.firstDropdownLabel} empty-option=\"true\" language={this.languageCode}>\n {this.dropdownDataRoot?.map((item, i) => (\n <pn-option index={i} label={item.label} value={item.value} selected={item.checked} onClick={debounce(this.handleFirstDropdown.bind(this), 500)}></pn-option>\n ))}\n </pn-select>\n {this.firstDropdownHelperText?.length ? <small>{this.firstDropdownHelperText}</small> : null}\n </div>\n </div>\n\n <div class=\"dropdown-with-multi-input-element__row\">\n <div class=\"dropdown-with-multi-input-element__dropdown\">\n <pn-select ref={el => (this.pnSecondDropdown = el as HTMLElement)} class=\"pn-row-select-dropdown dropDown2-dropdown\" label={this.secondDropdownLabel} empty-option=\"true\" language={this.languageCode}>\n {this.secondDropdownArr?.map((item, i) => (\n <pn-option index={i} label={item} value={item} selected={item === this._secondDropdownSelection} onClick={debounce(this.handleSecondDropdown.bind(this), 500)}></pn-option>\n ))}\n </pn-select>\n {this.secondDropdownHelperText?.length ? <small>{this.secondDropdownHelperText}</small> : null}\n </div>\n </div>\n\n {this.showDelteConfirm ? (\n <div class=\"dropdown-with-multi-input-element__delete\">\n <p>{this.deleteMultipleRowsWarningText}</p>\n <pn-button ref={el => (this.pnConfirmDeleteButton = el as HTMLElement)} small=\"true\" appearance=\"warning\" onClick={this.deleteExcessRows.bind(this)}>\n {this.confirmDeleteButtonText}\n </pn-button>\n <pn-button ref={el => (this.pnAbortDeleteButton = el as HTMLElement)} small=\"true\" appearance=\"light\" onClick={this.abortDeleteRows.bind(this)}>\n {this.abortDeleteButtonText}\n </pn-button>\n </div>\n ) : null}\n\n <div class=\"dropdown-with-multi-input-element__label-row\">\n <div class=\"dropdown-with-multi-input-element__label\">\n <label>{this.fristInputLabel}</label>\n </div>\n <div class=\"dropdown-with-multi-input-element__label\">\n <label>{this.secondInputLabel}</label>\n </div>\n <div class=\"dropdown-with-multi-input-element__label\">\n <label>{this.dateLabel}</label>\n </div>\n </div>\n\n {this.rowData?.map((data, i) => {\n return (\n <div class={'dropdown-with-multi-input-element__row generated-row-' + i} id={'generated-row-' + i}>\n <pn-dropdown-with-multi-input-rows-row\n language-code={this.languageCode}\n frist-input-placeholder={this.fristInputPlaceholder}\n first-input-min={this.firstInputMin}\n first-input-max={this.firstInputMax}\n first-input-warning={this.firstInputWarning}\n first-input-warning-text={this.firstInputWarningText}\n first-input-low-error-text={this.firstInputLowErrorText}\n first-input-high-error-text={this.firstInputHighErrorText}\n second-input-placeholder={this.secondInputPlaceholder}\n second-input-min={this.secondInputMin}\n second-input-max={this.secondInputMax}\n second-input-warning={this.secondInputWarning}\n second-input-warning-text={this.secondInputWarningText}\n second-input-low-error-text={this.secondInputLowErrorText}\n second-input-high-error-text={this.secondInputHighErrorText}\n datePlaceholder={this.datePlaceholder}\n firstValidDate={this.firstValidDateString}\n lastValidDate={this.lastValidDateString}\n predefined-value={JSON.stringify(data)}\n min-row-count={this.minRowCount}\n row-index={i}\n ></pn-dropdown-with-multi-input-rows-row>\n </div>\n );\n })}\n\n <div class=\"dropdown-with-multi-input-element__row sum-row\">\n <pn-marketweb-input disabled={true} ref={el => (this.pnSumField = el as HTMLElement)} type=\"number\" value={this.rowSum} label={this.sumFieldLabel}></pn-marketweb-input>\n\n <pn-button\n tooltip={this.addRowText ? this.addRowText : null}\n left-icon=\"true\"\n arialabel=\"Add\"\n icon={plus}\n appearance=\"light\"\n variant=\"borderless\"\n class=\"connected-dropdown__button-right\"\n onClick={() => {\n this.addRow(this.generateUniqueId());\n }}\n >\n {this.addRowText}\n </pn-button>\n </div>\n\n {this.elementHelperText?.length ? <div class=\"dropdown-with-multi-input-element__row\">{this.elementHelperText}</div> : null}\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,2 +0,0 @@
1
- import{r as t,c as e,g as n,h as o,d as s}from"./p-bb1c965e.js";import{d as i}from"./p-aed52bc1.js";import{m as d}from"./p-b2f2fbb6.js";import{v as l}from"./p-4ed69de7.js";const r="pn-button-dropdown .pn-button-dropdown>pn-button>.pn-button{min-height:initial}pn-multi-row-connected-dropdown-row{gap:1rem}pn-multi-row-connected-dropdown-row .connected-dropdown__row.input-row pn-select,pn-multi-row-connected-dropdown-row .connected-dropdown__row.input-row pn-input{width:25%}pn-multi-row-connected-dropdown-row .connected-dropdown-parent-element{margin-bottom:0.5rem}pn-multi-row-connected-dropdown-row pn-select{width:35%}pn-multi-row-connected-dropdown-row pn-marketweb-input{width:10%}pn-multi-row-connected-dropdown-row pn-marketweb-input input{height:4.3rem}pn-multi-row-connected-dropdown-row .connected-dropdown{padding:1rem;border-left:0.2rem solid #005d92}pn-multi-row-connected-dropdown-row .connected-dropdown:hover{background-color:#f9f8f8}pn-multi-row-connected-dropdown-row .connected-dropdown__toggle-date-button{width:20%;margin-bottom:0.5rem}pn-multi-row-connected-dropdown-row .connected-dropdown__row{display:flex;align-items:flex-start;gap:1rem;margin-bottom:1rem;justify-content:space-between}pn-multi-row-connected-dropdown-row .connected-dropdown__row__no-margin{margin:0}pn-multi-row-connected-dropdown-row .connected-dropdown__multi-date-row{display:flex;align-items:center;gap:1rem;margin-bottom:1rem}pn-multi-row-connected-dropdown-row .connected-dropdown__button-container{display:flex;align-items:flex-end;gap:1rem}pn-multi-row-connected-dropdown-row .connected-dropdown__button{background-color:#ffffff;border:solid;border-width:0.1rem;border-radius:0.8rem;border-color:#005d92;padding:0.4rem 0.8rem;color:#005d92;font-size:1.4rem;text-align:center;text-decoration:none;cursor:pointer}pn-multi-row-connected-dropdown-row .connected-dropdown__button:hover,pn-multi-row-connected-dropdown-row .connected-dropdown__button.active{background-color:#0d234b;border-color:#0d234b;color:#ffffff}pn-multi-row-connected-dropdown-row .connected-dropdown__buttom-container-right{display:flex}pn-multi-row-connected-dropdown-row .connected-dropdown__button-right{margin-left:auto}pn-multi-row-connected-dropdown-row .connected-dropdown__label-container{margin-bottom:0.4rem;color:#5e554a;font-size:0.875em;justify-content:space-between;align-items:flex-end}pn-multi-row-connected-dropdown-row .connected-dropdown__checkbox{display:flex;gap:0.5rem}pn-multi-row-connected-dropdown-row .connected-dropdown__date-slot{border:0.1rem solid #005d92;margin-bottom:1rem;padding:1rem}pn-multi-row-connected-dropdown-row .generated-date-row{border-bottom:0.1rem solid #005d92}";const c=r;const h=class{constructor(n){t(this,n);this.rowValueChange=e(this,"rowValueChange",7);this.deleteRowEvent=e(this,"deleteRowEvent",7);this.dropdownData=null;this.languageCode=null;this.label=null;this.firstDropdownLabel=null;this.secondDropdownLabel=null;this.dropdownPlaceholder=null;this.addRowText=null;this.inputFildLabel=null;this.inputFildPlaceholder=null;this.dateButtonText=null;this.datePlaceholder=null;this.dateDaysFromToday=1;this.allowMultipleDates=null;this.startDateLabel=null;this.endDateLabel=null;this.multiDateHelperText=null;this.generateDatesButtonText=null;this.saveDateButtonText=null;this.noDatesText=null;this.index=null;this.predefinedValue=null;this.yearsToAddToEndDate=null;this.minAmount=null;this.errorMessageEmpty=undefined;this.errorMessageMinAmount=undefined;this.minWarningAmount=null;this.warningMessageMinAmount=undefined;this.buttonsArray=null;this.firstDropdownArr=null;this.secondDropdownArr=[];this.firstDropdownClass=null;this.secondDropdownClass=null;this.firstValidDateString="";this.lastValidDateString="";this.firstDropdownPlaceholder="-";this.secondDropdownPlaceholder="-";this.starDateValue="";this.endDateValue="";this.generatedDatesArr=[];this.selectedButtonValue="";this.inputFieldValue="";this.dateValue="";this.daysArr=null}get hostElement(){return n(this)}_dropdownData;_predefinedValue;pnConnectedDropdown=null;pnConnectedDropdownSlotElement=null;pnAddFieldButton=null;pnFirstDropdown=null;pnSecondDropdown=null;pnInputField=null;pnSingleDatePicker=null;pnStartDate=null;pnEndDate=null;pnShowDateRangeFiledButton=null;pnDateRangeContainer=null;pnGenerateDatesButton=null;pnDaysRow=null;pnGeneratedDatesSlot=null;pnSaveGeneratedDatesButton=null;pnDeleteRowButton=null;rowValueChange;deleteRowEvent;componentWillLoad(){this.getPredefinedValues();this.setDropDownData();this.setFirstValidDate()}componentDidLoad(){this.setInitialValues();this.addEventHandlers();this.emitRowValues()}setDropDownData(){if(typeof this.dropdownData==="string"){this._dropdownData=JSON.parse(this.dropdownData)}else{this._dropdownData=this.dropdownData}}getPredefinedValues(){this._predefinedValue=JSON.parse(this.predefinedValue)}applyPredefinedValue(){this.getPredefinedValues();this.setInitialValues()}setInitialValues(){this.setButtonsValue();this.setFirstDropdownValues();this.setSecondDropdownValues();this.setInputField();this.setDateValue();this.setDateRangeDefaults();this.firstDropdownClass=this.firstDropdownLabel.replace(" ","_")+"-dropdown";this.secondDropdownClass=this.secondDropdownLabel.replace(" ","_")+"-dropdown"}setButtonsValue(){this.buttonsArray=[];if(this._predefinedValue.buttons?.length){this.buttonsArray=this._predefinedValue.buttons;this.buttonsArray.forEach((t=>{if(t.selected){this.selectedButtonValue=t.value}}))}else{this._dropdownData.forEach((t=>{const e={selected:false,value:t.label,label:t.label};this.buttonsArray.push(e)}))}}setFirstDropdownValues(){this.firstDropdownArr=[];if(this._predefinedValue.firstDropdown?.length){this.firstDropdownArr=[...this._predefinedValue.firstDropdown]}}setSecondDropdownValues(){this.secondDropdownArr=[];if(this._predefinedValue.secondDropdown?.length){this.secondDropdownArr=[...this._predefinedValue.secondDropdown]}}setInputField(){this.inputFieldValue=this._predefinedValue.input?.length?this._predefinedValue.input:""}setDateValue(){if(this.allowMultipleDates){this.pnDateRangeContainer.style.display=this._predefinedValue.dates["start"]?.length?"":"none";this.generatedDatesArr=this._predefinedValue.dates["start"]?.length?this._predefinedValue.dates["start"].split(","):[];this.saveGeneratedDates()}else{this.dateValue=this._predefinedValue.dates["start"]?.length?this._predefinedValue.dates["start"]:""}}setDateRangeDefaults(){this.daysArr=this._predefinedValue.dateRange.days;this.starDateValue=this._predefinedValue.dateRange.startDate?.length?this._predefinedValue.dateRange.startDate:"";this.endDateValue=this._predefinedValue.dateRange.endDate?.length?this._predefinedValue.dateRange.endDate:""}setFirstValidDate(){const t=this.yearsToAddToEndDate?this.yearsToAddToEndDate:2;const e=new Date;e.setDate(e.getDate()+this.dateDaysFromToday);const n=e.getFullYear();const o=(e.getMonth()+1).toString().padStart(2,"0");const s=e.getDate().toString().padStart(2,"0");const i=n+t;this.firstValidDateString=`${n.toString()}-${o}-${s}`;this.lastValidDateString=`${i.toString()}-${o}-${s}`}addEventHandlers(){const t=i(this.emitRowValues.bind(this),500);this.pnInputField.addEventListener("keyup",this.handleInput.bind(this));this.pnInputField.addEventListener("change",this.handleInput.bind(this));this.pnInputField.addEventListener("input",this.handleInput.bind(this));this.pnInputField.addEventListener("keyup",t);this.pnInputField.addEventListener("change",t);this.pnInputField.addEventListener("input",t);if(this.allowMultipleDates){this.pnShowDateRangeFiledButton.addEventListener("click",this.showDateRangeRow.bind(this));this.pnStartDate.addEventListener("dateselection",this.HandleRangeDatePickers.bind(this));this.pnEndDate.addEventListener("dateselection",this.HandleRangeDatePickers.bind(this));this.pnGenerateDatesButton.addEventListener("click",this.generateDates.bind(this));this.pnSaveGeneratedDatesButton.addEventListener("click",this.saveGeneratedDates.bind(this));this.pnSaveGeneratedDatesButton.addEventListener("click",t)}else{this.pnSingleDatePicker.addEventListener("dateselection",this.setSingleDateValue.bind(this));this.pnSingleDatePicker.addEventListener("dateselection",t)}if(this.index>0){this.pnDeleteRowButton.addEventListener("click",this.deleteRow.bind(this))}}generateUniqueId(){return l()}updateSelectItemArr(t,e){t.forEach((t=>{if(t.value===e){t.selected=!t.selected}else{t.selected=false}}));return t}handleOptionButtonClick(t){t.preventDefault();const e=t.target.innerHTML;this.buttonsArray=[...this.updateSelectItemArr(this.buttonsArray,e)];this.selectedButtonValue=this.buttonsArray.filter((t=>t.selected===true)).length>0?e:"";if(this.selectedButtonValue?.length){this.firstDropdownArr=[];const t=this._dropdownData.find((t=>t.label===e));t.values.forEach((t=>{this.firstDropdownArr.push({selected:false,value:t.label,label:t.label})}));this.firstDropdownArr=[...this.firstDropdownArr];this.firstDropdownPlaceholder=this.dropdownPlaceholder;const n=this.pnFirstDropdown.querySelector(".pn-select-content span");n.innerHTML=this.dropdownPlaceholder;this.secondDropdownArr=[];this.secondDropdownPlaceholder="-";const o=this.pnSecondDropdown.querySelector(".pn-select-content span");o.innerHTML=this.secondDropdownPlaceholder}else{this.firstDropdownArr=[];this.firstDropdownPlaceholder="-";const t=this.pnFirstDropdown.querySelector(".pn-select-content span");t.innerHTML=this.firstDropdownPlaceholder;this.secondDropdownArr=[];this.secondDropdownPlaceholder="-";const e=this.pnSecondDropdown.querySelector(".pn-select-content span");e.innerHTML=this.secondDropdownPlaceholder}this.emitRowValues()}handleFirstDropdownChange(){const t=this.pnFirstDropdown.querySelector("[aria-selected=true]");const e=t?.textContent;this.firstDropdownArr=[...this.updateSelectItemArr(this.firstDropdownArr,e)];const n=this.pnFirstDropdown.querySelector(".pn-select-content span");n.innerHTML=e;this.secondDropdownArr=[];const o=this.buttonsArray.findIndex((t=>t.selected===true));const s=this._dropdownData.find((t=>t.label===this.buttonsArray[o].value));const i=s.values.find((t=>t.label===e));i.values.forEach((t=>{this.secondDropdownArr.push({selected:false,value:t.label,label:t.label})}));this.secondDropdownPlaceholder=this.dropdownPlaceholder;const d=this.pnSecondDropdown.querySelector(".pn-select-content span");d.innerHTML=this.secondDropdownPlaceholder;this.emitRowValues()}handleSecondDropdownChange(){const t=this.pnSecondDropdown.querySelector("[aria-selected=true]");const e=t?.textContent;this.secondDropdownArr=[...this.updateSelectItemArr(this.secondDropdownArr,e)];const n=this.pnSecondDropdown.querySelector(".pn-select-content span");n.innerHTML=e;this.emitRowValues()}handleInput(t){const e=t.target.value;const n=t.target.closest(".input-amount");if(!n){return}if(Number(e)===0){n.setAttribute("error",this.errorMessageEmpty||"Cannot be empty");n.removeAttribute("helpertext");this.inputFieldValue="";return}n.removeAttribute("error");n.removeAttribute("helpertext");if(Number(e)<this.minAmount){n.setAttribute("error",this.errorMessageMinAmount||"Amount too low");this.inputFieldValue="";return}if(Number(e)<this.minWarningAmount){n.setAttribute("helpertext",this.warningMessageMinAmount||"Amount too low")}this.inputFieldValue=e}showDateRangeRow(){if(this.pnDateRangeContainer.style.display==="none"){this.pnDateRangeContainer.style.display=""}else{this.pnDateRangeContainer.style.display="none"}}HandleRangeDatePickers(t){const e=t.target;if(e===this.pnStartDate){this.starDateValue=t.detail}if(e===this.pnEndDate){this.endDateValue=t.detail}}generateDates(t){t.preventDefault();const e=this.pnDaysRow.querySelectorAll("pn-filter-checkbox");const n=[];this.generatedDatesArr=[];e.forEach((t=>{const e=t.querySelector("input");if(e.value){n.push(e.value)}}));if(n.length&&this.starDateValue&&this.endDateValue){this.daysArr.forEach((t=>{if(n.some((e=>e===t.value))){t.selected=true}else{t.selected=false}}));const t=new Date(Date.parse(this.starDateValue));const e=new Date(Date.parse(this.endDateValue));for(var o=t;o<=e;o.setDate(o.getDate()+1)){const t=this.daysArr.findIndex((t=>parseInt(t.value)===o.getDay()));if(this.daysArr[t]?.selected){const t=o.getFullYear();const e=(o.getMonth()+1).toString().padStart(2,"0");const n=o.getDate().toString().padStart(2,"0");this.generatedDatesArr.push(`${t}-${e}-${n}`)}}}}deleteGeneratedDateRow(t){this.generatedDatesArr.splice(t,1);this.generatedDatesArr=[...this.generatedDatesArr]}saveGeneratedDates(){if(this.generatedDatesArr?.length){this.dateValue=String(this.generatedDatesArr);const t=this.generatedDatesArr.length;const e=this.pnShowDateRangeFiledButton.querySelector(".pn-button-content");e.innerHTML=t>0?`${this.dateButtonText} (${t})`:this.dateButtonText;this.showDateRangeRow()}}setSingleDateValue(t){const e=t.target;if(e===this.pnSingleDatePicker){this.dateValue=t.detail}}emitRowValues(){this.rowValueChange.emit({id:this._predefinedValue.id,buttons:this.buttonsArray,firstDropdown:this.firstDropdownArr,secondDropdown:this.secondDropdownArr,input:this.inputFieldValue,dates:this.dateValue,dateRange:{days:this.daysArr,startDate:this.starDateValue,endDate:this.endDateValue}})}deleteRow(){this.deleteRowEvent.emit(this._predefinedValue.id)}setActive(t){return t?"connected-dropdown__button active":"connected-dropdown__button"}render(){return o(s,{key:"72832117806a110d0ba86492311e2418530eb0a5"},o("div",{key:"6f7512d0e3695d453b0ec30d8bc8cbeb02b978ca",ref:t=>this.pnConnectedDropdownSlotElement=t,class:"connected-dropdown-slot-element"},o("div",{key:"cfb559b1bcad5fd812535d5a2d9449e8f6edcd4f",class:"connected-dropdown-parent-element connected-dropdown"},o("div",{key:"2d43ba4715ce4faa32eefe19ddaea8d3fcf26dc8",class:"connected-dropdown__row__no-margin"},o("label",{key:"8ca3249dfcf6899cd1e32ca735993e14a33c3588"},this.label)),o("div",{key:"73e253a8f08af5fe4490dd2f97a61a350ea7ff17",class:"connected-dropdown__row button-row"},o("div",{key:"a35172579cbbbc13ac5aedab1fbcb88027105401",class:"connected-dropdown__button-container option-buttons"},this.buttonsArray?.map((t=>o("button",{class:`${this.setActive(t.selected)}`,id:this.generateUniqueId(),onClick:this.handleOptionButtonClick.bind(this)},t.value)))),o("div",{key:"3f0b3b8a7f987838b9a655d71ba534b0dfa84dc4",class:"connected-dropdown__button-container delete-button"},this.index>0?o("pn-button",{ref:t=>this.pnDeleteRowButton=t,small:"true",icon:d,appearance:"warning",index:this.index},"Delete"):null)),o("div",{key:"17df2ebee6da9b23005b47c029cf2f8e607b69df",class:"connected-dropdown__row input-row"},o("pn-select",{key:"ce5f63a367824f60ecee9d1bd00b10c9a296ad48",ref:t=>this.pnFirstDropdown=t,class:"pn-row-select-dropdown dropDown1-dropdown",placeholder:this.firstDropdownPlaceholder,label:this.firstDropdownLabel,"empty-option":"true",language:this.languageCode},this.firstDropdownArr?.map(((t,e)=>o("pn-option",{index:e,label:t.label,value:t.value,selected:t.selected,onClick:i(this.handleFirstDropdownChange.bind(this),500)})))),o("pn-select",{key:"91f19baa47a696058bbddf9372fc28911bbc6047",ref:t=>this.pnSecondDropdown=t,class:"pn-row-select-dropdown dropDown2-dropdown",placeholder:this.secondDropdownPlaceholder,label:this.secondDropdownLabel,"empty-option":"true",language:this.languageCode},this.secondDropdownArr?.map(((t,e)=>o("pn-option",{index:e,label:t.label,value:t.value,selected:t.selected,onClick:i(this.handleSecondDropdownChange.bind(this),500)})))),o("pn-input",{key:"a1b3e4d58f068f07233fe5e04ed3742f6cc08b2f",ref:t=>this.pnInputField=t,class:"input-amount",type:"number",placeholder:"0",label:this.inputFildLabel,value:this.inputFieldValue,min:this.minAmount}),this.allowMultipleDates?o("pn-button",{ref:t=>this.pnShowDateRangeFiledButton=t,class:"connected-dropdown__toggle-date-button",small:"true",appearance:"light"},this.dateButtonText):o("div",{class:"connected-dropdown__date-container"},o("div",{class:"connected-dropdown__label-container"},o("label",null,this.dateButtonText)),o("pn-date-picker",{ref:t=>this.pnSingleDatePicker=t,range:"false","disable-weekends":true,"min-date":this.firstValidDateString,language:this.languageCode,placeholder:this.datePlaceholder,class:"connected-dropdown__date-picker",start:this.dateValue?.length?this.dateValue:null}))),this.allowMultipleDates?o("div",{ref:t=>this.pnDateRangeContainer=t,class:"connected-dropdown__date-container",style:{display:"none"}},this.multiDateHelperText?o("div",{class:"connected-dropdown__row"},o("p",null,this.multiDateHelperText)):null,o("div",{class:"connected-dropdown__multi-date-row"},o("div",{class:"connected-dropdown__date-container"},o("div",{class:"connected-dropdown__label-container"},o("label",null,this.startDateLabel)),o("pn-date-picker",{ref:t=>this.pnStartDate=t,range:"false","disable-weekends":true,class:"connected-dropdown__date-picker","min-date":this.firstValidDateString,"max-date":this.lastValidDateString,language:this.languageCode,placeholder:this.datePlaceholder,start:this.starDateValue?.length?this.starDateValue:null})),o("div",{class:"connected-dropdown__date-container"},o("div",{class:"connected-dropdown__label-container"},o("label",null,this.endDateLabel)),o("pn-date-picker",{ref:t=>this.pnEndDate=t,range:"false","disable-weekends":true,class:"connected-dropdown__date-picker","min-date":this.firstValidDateString,"max-date":this.lastValidDateString,language:this.languageCode,placeholder:this.datePlaceholder,start:this.endDateValue?.length?this.endDateValue:null}))),o("div",{ref:t=>this.pnDaysRow=t,class:"connected-dropdown__multi-date-row"},this.daysArr?.map((t=>o("div",{class:"connected-dropdown__checkbox"},o("pn-filter-checkbox",{checkboxid:"day-"+t.value,name:"__"+t.label,value:t.value,checked:t.selected}),o("label",{htmlFor:"day-"+t.value},t.label))))),o("div",{class:"connected-dropdown__row"},o("pn-button",{ref:t=>this.pnGenerateDatesButton=t,small:"true"},this.generateDatesButtonText)),o("div",{ref:t=>this.pnGeneratedDatesSlot=t,class:"connected-dropdown__date-slot"},this.generatedDatesArr?.map(((t,e)=>o("div",{class:"connected-dropdown__row generated-date-row"},o("p",null,t),o("pn-button",{index:e,small:"true",icon:d,appearance:"warning",id:"delete-date-"+e,onClick:this.deleteGeneratedDateRow.bind(this,e)},t)))),!this.generatedDatesArr?.length?o("p",null,this.noDatesText):null),o("div",{class:"connected-dropdown__row"},o("pn-button",{ref:t=>this.pnSaveGeneratedDatesButton=t,class:"connected-dropdown__button-right",small:"true"},this.saveDateButtonText))):null)))}static get watchers(){return{predefinedValue:["applyPredefinedValue"]}}};h.style=c;export{h as pn_multi_row_connected_dropdown_row};
2
- //# sourceMappingURL=p-ef182c3e.entry.js.map