UNPKG

@postnord/web-components

Version:

PostNord Web Components

6 lines 3.56 kB
/*! * Built with Stencil * By PostNord. */ import{r as s,c as t,g as e,h as i,a}from"./p-43660913.js";import{u as h,j as r,s as n}from"./p-c511b4fb.js";const o={CLOSEST_DELIVERY_DATE:{en:"Closest delivery date:",sv:"Nästa utdelningsdag:"},NEXT_DELIVERY_DATE:{en:"Next delivery date:",sv:"Kommande utdelningsdag:"},ZIP_CODE:{en:"Zip code:",sv:"Postnummer:"},VALIDATION_ERROR_MESSAGE:{en:"Zip code not valid",sv:"Postnumret är inte giltigt"},SERVER_ERROR_MESSAGE:{en:"Could not find zip code",sv:"Kan inte hitta postnumret"},PLACEHOLDER_TEXT:{en:"Search for a zip code",sv:"Sök på ett postnummer"},SEARCH:{en:"Search",sv:"Sök"}};const c="pn-zipcode-search{display:block;color:#5e554a}pn-zipcode-search .pn-search-results{display:flex;flex-direction:column;gap:1em;padding:0 0.75em}pn-zipcode-search .pn-search-results span{color:#5e554a}pn-zipcode-search .pn-search-results h3{color:#2d2013}pn-zipcode-search .pn-error-text{color:#a70707;padding:0 0.75em}pn-zipcode-search>pn-search-field{width:100%;margin-bottom:1em}";const l=c;const d=class{constructor(e){s(this,e);this.searchsuccessful=t(this,"searchsuccessful",7);this.validZipCode=undefined;this.loading=false;this.showResult=false;this.zipCodeSearchResult={delivery:"",upcoming:"",city:"",postalCode:""};this.error=false;this.errorMessage=undefined;this.language=null;this.value=undefined}searchId=`pn-zipcode-${h()}`;get hostElement(){return e(this)}searchsuccessful;async componentWillLoad(){if(this.language===null)await r(this.hostElement);if(!!this.value)this.handleSearch(this.value)}translation(s){return o[s][this.language||n]}handleSearch(s){this.value=s;this.validateZipCode();if(this.error){this.errorMessage="VALIDATION_ERROR_MESSAGE";return}this.zipCodeSearch()}async zipCodeSearch(){this.loading=true;await fetch(`https://portal.postnord.com/api/sendoutarrival/closest?postalCode=${this.validZipCode}`).then((s=>s.json())).then((s=>{this.showResult=true;this.zipCodeSearchResult=s;this.searchsuccessful.emit(true)})).catch((()=>{this.error=true;this.errorMessage="SERVER_ERROR_MESSAGE";this.searchsuccessful.emit(false)})).finally((()=>{this.loading=false}))}validateZipCode(){const s=this.value?this.value.replace(/[ -]/gi,""):"";const t=/^\d{5}$/;const e=t.test(s);this.error=!e;if(e){this.validZipCode=s}}renderSearchResult(){if(!this.loading&&!this.error&&this.showResult){return i("output",{class:"pn-search-results",htmlFor:this.searchId},i("p",{class:"text-row"},i("span",null,this.translation("CLOSEST_DELIVERY_DATE")),i("h3",{class:"delivery-date"},this.zipCodeSearchResult.delivery)),i("p",{class:"text-row"},i("span",null,this.translation("NEXT_DELIVERY_DATE")),i("h3",{class:"delivery-date"},this.zipCodeSearchResult.upcoming)),i("p",{class:"text-row"},i("span",null,this.translation("ZIP_CODE")),i("h3",null,this.zipCodeSearchResult.postalCode,", ",this.zipCodeSearchResult.city||"N/A")))}}renderErrorMessage(){if(this.error&&!this.loading){return i("p",{class:"pn-error-text",role:"alert"},i("small",null,this.translation(this.errorMessage)))}}render(){return i(a,{key:"6ced0525306ff0ec238e08786e482e8101bff4eb"},i("pn-search-field",{key:"3dd3987230908a344c0535497a0f957c02873c7a",label:this.translation("PLACEHOLDER_TEXT"),value:this.value,searchid:this.searchId,loading:this.loading,button:"icon",buttonLabel:this.translation("SEARCH"),placeholder:this.translation("PLACEHOLDER_TEXT"),onSearch:s=>this.handleSearch(s.detail)}),this.renderSearchResult(),this.renderErrorMessage())}};d.style=l;export{d as pn_zipcode_search}; //# sourceMappingURL=p-a60d9117.entry.js.map