@postnord/web-components
Version:
PostNord Web Components
6 lines • 3.35 kB
JavaScript
/*!
* Built with Stencil
* By PostNord.
*/
import{r as e,c as s,g as t,h as i,a}from"./p-c2c6299e.js";import{u as r,j as o,s as n}from"./p-c511b4fb.js";const l={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"}};const c="pn-zipcode-search{display:block;color:#5e554a}pn-zipcode-search .search-results{display:flex;flex-direction:column;gap:1em;padding:0 0.75em}pn-zipcode-search .search-results span{color:#5e554a}pn-zipcode-search .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 h=c;const d=class{constructor(t){e(this,t);this.searchsuccessful=s(this,"searchsuccessful",7)}get hostElement(){return t(this)}zipcodeId=`pn-zipcode-${r()}`;validZipCode;loading=false;showResult=false;zipCodeSearchResult={delivery:"",upcoming:"",city:"",postalCode:""};error=false;errorMessage="";language=null;searchsuccessful;async componentWillLoad(){if(this.language===null)return await o(this.hostElement)}getTranslation(e){return l[e][this.language||n]}handleSearch({detail:e}){this.validateZipCode(e);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((e=>e.json())).then((e=>{this.showResult=true;this.zipCodeSearchResult=e;this.searchsuccessful.emit(true)})).catch((()=>{this.error=true;this.errorMessage="SERVER_ERROR_MESSAGE";this.searchsuccessful.emit(false)})).finally((()=>{this.loading=false}))}validateZipCode(e){const s=e?e.replace(/[ -]/gi,""):"";const t=/^\d{5}$/;const i=t.test(s);this.error=!i;if(i){this.validZipCode=s}}renderSearchResult(){if(!this.loading&&!this.error&&this.showResult){return i("output",{class:"search-results",htmlFor:this.zipcodeId},i("p",{class:"text-row"},i("span",null,this.getTranslation("CLOSEST_DELIVERY_DATE")),i("h3",{class:"delivery-date"},this.zipCodeSearchResult.delivery)),i("p",{class:"text-row"},i("span",null,this.getTranslation("NEXT_DELIVERY_DATE")),i("h3",{class:"delivery-date"},this.zipCodeSearchResult.upcoming)),i("p",{class:"text-row"},i("span",null,this.getTranslation("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.getTranslation(this.errorMessage)))}}render(){return i(a,{key:"517f6030331e323f2e70aec9c29c1acd4f426b49"},i("pn-search-field",{key:"ceffe972b39e168f1ecd86f78eea95329a899d0a",label:this.getTranslation("PLACEHOLDER_TEXT"),searchid:this.zipcodeId,loading:this.loading,button:"none",placeholder:this.getTranslation("PLACEHOLDER_TEXT"),onSearch:e=>this.handleSearch(e)}),this.renderSearchResult(),this.renderErrorMessage())}};d.style=h;export{d as pn_zipcode_search};
//# sourceMappingURL=p-6b9cfc60.entry.js.map