intl-address-format
Version:
Lightweight address formatter with country and locale support.
2 lines (1 loc) • 10.1 kB
JavaScript
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).IntlAddressFormat={})}(this,function(e){"use strict";const t={US:"{name}\n{company}\n{houseNumber} {street}\n{street2}\n{city}, {state} {postalCode}\n{country}\nTax ID: {taxNumber}",CA:"{name}\n{company}\n{houseNumber} {street}\n{street2}\n{city}, {state} {postalCode}\n{country}\nTax Number: {taxNumber}",MX:"{name}\n{company}\n{street} {houseNumber}\n{street2}\n{postalCode} {city}, {state}\n{country}\nTax Number: {taxNumber}",DE:"{name}\n{company}\n{street} {houseNumber}\n{street2}\n{postalCode} {city}\n{country}\nUSt-IdNr.: {taxNumber}",FR:"{name}\n{company}\n{houseNumber} {street}\n{street2}\n{postalCode} {city}\n{country}\nNuméro TVA: {taxNumber}",IT:"{name}\n{company}\n{street} {houseNumber}\n{street2}\n{postalCode} {city}\n{country}\nPartita IVA: {taxNumber}",ES:"{name}\n{company}\n{street} {houseNumber}\n{street2}\n{postalCode} {city}\n{country}\nNIF: {taxNumber}",GB:"{name}\n{company}\n{houseNumber} {street}\n{street2}\n{city}\n{postalCode}\n{country}\nVAT Reg No.: {taxNumber}",NL:"{name}\n{company}\n{street} {houseNumber}\n{street2}\n{postalCode} {city}\n{country}\nTax Number: {taxNumber}",BE:"{name}\n{company}\n{street} {houseNumber}\n{street2}\n{postalCode} {city}\n{country}\nTax Number: {taxNumber}",CH:"{name}\n{company}\n{street} {houseNumber}\n{street2}\n{postalCode} {city}\n{country}\nTax Number: {taxNumber}",AT:"{name}\n{company}\n{street} {houseNumber}\n{street2}\n{postalCode} {city}\n{country}\nTax Number: {taxNumber}",PT:"{name}\n{company}\n{street} {houseNumber}\n{street2}\n{postalCode} {city}\n{country}\nTax Number: {taxNumber}",IE:"{name}\n{company}\n{houseNumber} {street}\n{street2}\n{city}\n{postalCode}\n{country}\nTax Number: {taxNumber}",SE:"{name}\n{company}\n{street} {houseNumber}\n{street2}\n{postalCode} {city}\n{country}\nTax Number: {taxNumber}",NO:"{name}\n{company}\n{street} {houseNumber}\n{street2}\n{postalCode} {city}\n{country}\nTax Number: {taxNumber}",DK:"{name}\n{company}\n{street} {houseNumber}\n{street2}\n{postalCode} {city}\n{country}\nTax Number: {taxNumber}",FI:"{name}\n{company}\n{street} {houseNumber}\n{street2}\n{postalCode} {city}\n{country}\nTax Number: {taxNumber}",IS:"{name}\n{company}\n{street} {houseNumber}\n{street2}\n{postalCode} {city}\n{country}\nTax Number: {taxNumber}",PL:"{name}\n{company}\n{street} {houseNumber}\n{street2}\n{postalCode} {city}\n{country}\nTax Number: {taxNumber}",CZ:"{name}\n{company}\n{street} {houseNumber}\n{street2}\n{postalCode} {city}\n{country}\nTax Number: {taxNumber}",SK:"{name}\n{company}\n{street} {houseNumber}\n{street2}\n{postalCode} {city}\n{country}\nTax Number: {taxNumber}",HU:"{name}\n{company}\n{city}\n{street} {houseNumber}\n{street2}\n{postalCode}\n{country}\nTax Number: {taxNumber}",RO:"{name}\n{company}\n{street} {houseNumber}\n{street2}\n{postalCode} {city}\n{country}\nTax Number: {taxNumber}",BG:"{name}\n{company}\n{street} {houseNumber}\n{street2}\n{postalCode} {city}\n{country}\nTax Number: {taxNumber}",HR:"{name}\n{company}\n{street} {houseNumber}\n{street2}\n{postalCode} {city}\n{country}\nTax Number: {taxNumber}",SI:"{name}\n{company}\n{street} {houseNumber}\n{street2}\n{postalCode} {city}\n{country}\nTax Number: {taxNumber}",RU:"{name}\n{company}\n{street} {houseNumber}\n{street2}\n{city}\n{postalCode}\n{country}\nTax Number: {taxNumber}",UA:"{name}\n{company}\n{street} {houseNumber}\n{street2}\n{postalCode} {city}\n{country}\nTax Number: {taxNumber}",BY:"{name}\n{company}\n{street} {houseNumber}\n{street2}\n{postalCode} {city}\n{country}\nTax Number: {taxNumber}",JP:"{name}\n{company}\n{postalCode}\n{state}{city}\n{street} {houseNumber}\n{street2}\n{country}\nTax Number: {taxNumber}",KR:"{name}\n{company}\n{postalCode}\n{state} {city}\n{street} {houseNumber}\n{street2}\n{country}\nTax Number: {taxNumber}",CN:"{name}\n{company}\n{state} {city}\n{street} {houseNumber}\n{street2}\n{postalCode}\n{country}\nTax Number: {taxNumber}",TW:"{name}\n{company}\n{postalCode}\n{state}{city}\n{street} {houseNumber}\n{street2}\n{country}\nTax Number: {taxNumber}",HK:"{name}\n{company}\n{houseNumber} {street}\n{street2}\n{city}\n{country}\nTax Number: {taxNumber}",SG:"{name}\n{company}\n{houseNumber} {street}\n{street2}\nSingapore {postalCode}\n{country}\nTax Number: {taxNumber}",MY:"{name}\n{company}\n{houseNumber} {street}\n{street2}\n{postalCode} {city}, {state}\n{country}\nTax Number: {taxNumber}",TH:"{name}\n{company}\n{houseNumber} {street}\n{street2}\n{city} {postalCode}\n{country}\nTax Number: {taxNumber}",VN:"{name}\n{company}\n{houseNumber} {street}\n{street2}\n{city} {postalCode}\n{country}\nTax Number: {taxNumber}",ID:"{name}\n{company}\n{street} {houseNumber}\n{street2}\n{city} {postalCode}\n{country}\nTax Number: {taxNumber}",PH:"{name}\n{company}\n{houseNumber} {street}\n{street2}\n{city} {postalCode}\n{country}\nTax Number: {taxNumber}",IN:"{name}\n{company}\n{houseNumber} {street}\n{street2}\n{city} - {postalCode}\n{state}\n{country}\nTax Number: {taxNumber}",PK:"{name}\n{company}\n{houseNumber} {street}\n{street2}\n{city} {postalCode}\n{country}\nTax Number: {taxNumber}",BD:"{name}\n{company}\n{houseNumber} {street}\n{street2}\n{city} - {postalCode}\n{country}\nTax Number: {taxNumber}",LK:"{name}\n{company}\n{houseNumber} {street}\n{street2}\n{city} {postalCode}\n{country}\nTax Number: {taxNumber}",AU:"{name}\n{company}\n{houseNumber} {street}\n{street2}\n{city} {state} {postalCode}\n{country}\nTax Number: {taxNumber}",NZ:"{name}\n{company}\n{houseNumber} {street}\n{street2}\n{city} {postalCode}\n{country}\nTax Number: {taxNumber}",TR:"{name}\n{company}\n{street} {houseNumber}\n{street2}\n{postalCode} {city}\n{country}\nTax Number: {taxNumber}",SA:"{name}\n{company}\n{houseNumber} {street}\n{street2}\n{city} {postalCode}\n{country}\nTax Number: {taxNumber}",AE:"{name}\n{company}\n{houseNumber} {street}\n{street2}\n{city}\n{country}\nTax Number: {taxNumber}",ZA:"{name}\n{company}\n{houseNumber} {street}\n{street2}\n{city} {postalCode}\n{country}\nTax Number: {taxNumber}",EG:"{name}\n{company}\n{houseNumber} {street}\n{street2}\n{city}\n{country}\nTax Number: {taxNumber}",NG:"{name}\n{company}\n{houseNumber} {street}\n{street2}\n{city}\n{country}\nTax Number: {taxNumber}",KE:"{name}\n{company}\n{houseNumber} {street}\n{street2}\n{city} {postalCode}\n{country}\nTax Number: {taxNumber}",BR:"{name}\n{company}\n{street}, {houseNumber}\n{street2}\n{city} - {state}\n{postalCode}\n{country}\nTax Number: {taxNumber}",AR:"{name}\n{company}\n{street} {houseNumber}\n{street2}\n{postalCode} {city}, {state}\n{country}\nTax Number: {taxNumber}",CL:"{name}\n{company}\n{street} {houseNumber}\n{street2}\n{postalCode} {city}\n{country}\nTax Number: {taxNumber}",CO:"{name}\n{company}\n{street} {houseNumber}\n{street2}\n{city}, {state}\n{postalCode}\n{country}\nTax Number: {taxNumber}",PE:"{name}\n{company}\n{street} {houseNumber}\n{street2}\n{city} {postalCode}\n{country}\nTax Number: {taxNumber}",default:"{name}\n{company}\n{houseNumber} {street}\n{street2}\n{postalCode} {city}\n{country}\nTax Number: {taxNumber}"};class n extends HTMLElement{static get observedAttributes(){return["data","country-code","locale"]}connectedCallback(){this.render()}attributeChangedCallback(){this.render()}render(){try{const e=this.getAddressData();if(!e)return void(this.innerHTML='<div class="intl-address-error">No address data provided</div>');const t=r({...e,output:"string"}).split("\n").map(e=>e.trim()).filter(e=>e.length>0&&!e.match(/^[:\s]*$/));this.innerHTML=`<div class="intl-address">${t.join("<br>")}</div>`,this.addStyles()}catch(e){console.error("IntlAddress error:",e),this.innerHTML='<div class="intl-address-error">Invalid address data</div>'}}getAddressData(){const e=this.getAttribute("data");if(e)try{return JSON.parse(e)}catch{}const t=this.getAttribute("country-code");if(!t)return null;const n={name:this.getAttribute("name")||void 0,company:this.getAttribute("company")||void 0,houseNumber:this.getAttribute("house-number")||void 0,street:this.getAttribute("street")||void 0,street2:this.getAttribute("street2")||void 0,city:this.getAttribute("city")||void 0,state:this.getAttribute("state")||void 0,postalCode:this.getAttribute("postal-code")||void 0,country:this.getAttribute("country")||void 0,taxNumber:this.getAttribute("tax-number")||void 0};return{countryCode:t,locale:this.getAttribute("locale")||void 0,address:n}}addStyles(){if(document.getElementById("intl-address-styles"))return;const e=document.createElement("style");e.id="intl-address-styles",e.textContent="\n intl-address {\n display: block;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n line-height: 1.4;\n }\n \n intl-address .intl-address {\n white-space: pre-line;\n }\n \n intl-address .intl-address-error {\n color: #d32f2f;\n font-style: italic;\n padding: 8px;\n background-color: #ffebee;\n border: 1px solid #ffcdd2;\n border-radius: 4px;\n }\n ",document.head.appendChild(e)}}function r({countryCode:e,locale:n,address:r,output:a="string"}){const o=(t[e.toUpperCase()]||t.default).replace("{name}",r.name||"").replace("{company}",r.company||"").replace("{houseNumber}",r.houseNumber||"").replace("{street}",r.street||"").replace("{street2}",r.street2||"").replace("{city}",r.city||"").replace("{state}",r.state||"").replace("{postalCode}",r.postalCode||"").replace("{country}",r.country||"").replace("{taxNumber}",r.taxNumber||"");if("html"===a){const e=document.createElement("div");return e.innerHTML=o.replace(/\n/g,"<br>"),e}if("webcomponent"===a){const t=document.createElement("intl-address");return t.setAttribute("data",JSON.stringify({countryCode:e,locale:n,address:r})),t}return o}customElements.define("intl-address",n),e.IntlAddress=n,e.formatAddress=r,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"})});