UNPKG

v-phone-input

Version:

International phone field for Vuetify 3 and Vue 3.

2 lines (1 loc) 22.8 kB
(function(i,n){typeof exports=="object"&&typeof module<"u"?n(exports,require("vue"),require("awesome-phonenumber"),require("vuetify/components")):typeof define=="function"&&define.amd?define(["exports","vue","awesome-phonenumber","vuetify/components"],n):(i=typeof globalThis<"u"?globalThis:i||self,n(i.VPhoneInput={},i.Vue,i.PhoneNumber,i.components))})(this,function(i,n,O,R){"use strict";function Y(){return{country:{required:!0,type:Object},decorative:{type:Boolean,default:!1}}}function J({props:t}){const a=n.computed(()=>t.decorative?void 0:"img"),s=n.computed(()=>t.decorative?void 0:t.country.name);return{role:a,title:s}}const z=n.defineComponent({props:Y(),setup(t){const{role:a,title:s}=J({props:t});return()=>n.h("span",{role:a.value,title:s.value,class:["v-phone-input__country__icon","f32"]},n.h("span",{class:["flag",t.country.iso2.toLowerCase()]}))}}),_=n.defineComponent({props:Y(),setup(t){const{role:a,title:s}=J({props:t});return()=>n.h("span",{role:a.value,title:s.value,class:["v-phone-input__country__icon","fi",`fi-${t.country.iso2.toLowerCase()}`]})}});function $n(t){return"setPreference"in t}function A(t){return t&&typeof t=="object"?t.iso2:(t||"").toUpperCase()}function dn({props:t}){const a=O.getSupportedRegionCodes(),s=n.ref({}),r=n.ref(0),$=n.ref([]),e=n.ref([]),C=n.computed(()=>t.preferCountries.map(A)),S=n.computed(()=>t.includeCountries.map(A)),P=n.computed(()=>t.excludeCountries.map(A));n.watchEffect(()=>{const p={},N=[],V=[];t.allCountries.forEach(M=>{const f=A(M.iso2);if(a.indexOf(f)===-1||S.value.length&&S.value.indexOf(f)===-1||P.value.indexOf(f)!==-1)return;const G={...M,iso2:f};p[G.iso2]=G,C.value.indexOf(f)!==-1?N.push(G):V.push(G)}),N.sort((M,f)=>C.value.indexOf(M.iso2)-C.value.indexOf(f.iso2)),s.value=p,$.value=N,e.value=V,r.value=N.length+V.length,r.value||console.error('[v-phone-input] resulting countries from "allCountries", "includeCountries" and "excludeCountries" must be a non-empty list')});const b=n.computed(()=>{const p=$.value[0]??e.value[0];return p?s.value[p.iso2]:void 0}),L=p=>s.value[A(p)],h=n.ref(!1),v=n.computed(()=>!t.disableGuessLoading&&h.value);return{countriesCount:r,preferredCountries:$,otherCountries:e,guessingCountry:v,findCountry:L,firstCountry:b,setCountryPreference:p=>{h.value=!1,$n(t.countryGuesser)&&t.countryGuesser.setPreference(p)},guessCountry:async()=>{if(!t.guessCountry)return;h.value=!0;const p=L(await t.countryGuesser.guess());return h.value=!1,p==null?void 0:p.iso2}}}function pn({props:t}){return{countryIconComponent:n.computed(()=>{switch(t.countryIconMode){case"svg":return _;case"sprite":return z;case"text":return;default:return t.countryIconMode}})}}function Cn({props:t}){return{countrySelectComponent:n.computed(()=>t.enableSearchingCountry?{type:"VAutocomplete",props:{autocomplete:"new-password","aria-autocomplete":"off",filterKeys:["raw.name","raw.iso2","raw.dialCode"]}}:{type:"VSelect",props:{}})}}function Sn({props:t,country:a,example:s}){const r=(B,F)=>typeof B=="function"?B(F):B,$=n.computed(()=>({country:a.value,example:s.value})),e=n.computed(()=>r(t.label,$.value)),C=n.computed(()=>r(t.ariaLabel,$.value)),S=n.computed(()=>({...$.value,label:e.value||C.value})),P=n.computed(()=>r(t.countryLabel,S.value)),b=n.computed(()=>r(t.countryAriaLabel,S.value)),L=n.computed(()=>r(t.placeholder,S.value)),h=n.computed(()=>r(t.hint,S.value)),v=n.computed(()=>r(t.invalidMessage,S.value));return{label:e,ariaLabel:C,countryLabel:P,countryAriaLabel:b,placeholder:L,hint:h,invalidMessage:v,messageOptions:$}}function Mn(t,a){const s=n.ref({}),r=()=>{const $={};Object.keys(t).forEach(e=>{const[C,...S]=e.split(":");!S.length||a.indexOf(C)===-1?$.default={...$.default||{},[e]:e}:$[C]={...$[C]||{},[S.join(":")]:e}}),s.value=$};return n.onBeforeMount(r),n.onBeforeUpdate(r),{namespacedSlots:s}}const mn={AD:"Andorra",AE:"United Arab Emirates",AF:"Afghanistan",AG:"Antigua and Barbuda",AI:"Anguilla",AL:"Albania",AM:"Armenia",AO:"Angola",AQ:"Antarctica",AR:"Argentina",AS:"American Samoa",AT:"Austria",AU:"Australia",AW:"Aruba",AX:"Aland",AZ:"Azerbaijan",BA:"Bosnia and Herzegovina",BB:"Barbados",BD:"Bangladesh",BE:"Belgium",BF:"Burkina Faso",BG:"Bulgaria",BH:"Bahrain",BI:"Burundi",BJ:"Benin",BL:"Saint Barthelemy",BM:"Bermuda",BN:"Brunei",BO:"Bolivia",BQ:"Bonaire",BR:"Brazil",BS:"Bahamas",BT:"Bhutan",BV:"Bouvet Island",BW:"Botswana",BY:"Belarus",BZ:"Belize",CA:"Canada",CC:"Cocos (Keeling) Islands",CD:"Democratic Republic of the Congo",CF:"Central African Republic",CG:"Republic of the Congo",CH:"Switzerland",CI:"Ivory Coast",CK:"Cook Islands",CL:"Chile",CM:"Cameroon",CN:"China",CO:"Colombia",CR:"Costa Rica",CU:"Cuba",CV:"Cape Verde",CW:"Curacao",CX:"Christmas Island",CY:"Cyprus",CZ:"Czech Republic",DE:"Germany",DJ:"Djibouti",DK:"Denmark",DM:"Dominica",DO:"Dominican Republic",DZ:"Algeria",EC:"Ecuador",EE:"Estonia",EG:"Egypt",EH:"Western Sahara",ER:"Eritrea",ES:"Spain",ET:"Ethiopia",FI:"Finland",FJ:"Fiji",FK:"Falkland Islands",FM:"Micronesia",FO:"Faroe Islands",FR:"France",GA:"Gabon",GB:"United Kingdom",GD:"Grenada",GE:"Georgia",GF:"French Guiana",GG:"Guernsey",GH:"Ghana",GI:"Gibraltar",GL:"Greenland",GM:"Gambia",GN:"Guinea",GP:"Guadeloupe",GQ:"Equatorial Guinea",GR:"Greece",GS:"South Georgia and the South Sandwich Islands",GT:"Guatemala",GU:"Guam",GW:"Guinea-Bissau",GY:"Guyana",HK:"Hong Kong",HM:"Heard Island and McDonald Islands",HN:"Honduras",HR:"Croatia",HT:"Haiti",HU:"Hungary",ID:"Indonesia",IE:"Ireland",IL:"Israel",IM:"Isle of Man",IN:"India",IO:"British Indian Ocean Territory",IQ:"Iraq",IR:"Iran",IS:"Iceland",IT:"Italy",JE:"Jersey",JM:"Jamaica",JO:"Jordan",JP:"Japan",KE:"Kenya",KG:"Kyrgyzstan",KH:"Cambodia",KI:"Kiribati",KM:"Comoros",KN:"Saint Kitts and Nevis",KP:"North Korea",KR:"South Korea",KW:"Kuwait",KY:"Cayman Islands",KZ:"Kazakhstan",LA:"Laos",LB:"Lebanon",LC:"Saint Lucia",LI:"Liechtenstein",LK:"Sri Lanka",LR:"Liberia",LS:"Lesotho",LT:"Lithuania",LU:"Luxembourg",LV:"Latvia",LY:"Libya",MA:"Morocco",MC:"Monaco",MD:"Moldova",ME:"Montenegro",MF:"Saint Martin",MG:"Madagascar",MH:"Marshall Islands",MK:"North Macedonia",ML:"Mali",MM:"Myanmar (Burma)",MN:"Mongolia",MO:"Macao",MP:"Northern Mariana Islands",MQ:"Martinique",MR:"Mauritania",MS:"Montserrat",MT:"Malta",MU:"Mauritius",MV:"Maldives",MW:"Malawi",MX:"Mexico",MY:"Malaysia",MZ:"Mozambique",NA:"Namibia",NC:"New Caledonia",NE:"Niger",NF:"Norfolk Island",NG:"Nigeria",NI:"Nicaragua",NL:"Netherlands",NO:"Norway",NP:"Nepal",NR:"Nauru",NU:"Niue",NZ:"New Zealand",OM:"Oman",PA:"Panama",PE:"Peru",PF:"French Polynesia",PG:"Papua New Guinea",PH:"Philippines",PK:"Pakistan",PL:"Poland",PM:"Saint Pierre and Miquelon",PN:"Pitcairn Islands",PR:"Puerto Rico",PS:"Palestine",PT:"Portugal",PW:"Palau",PY:"Paraguay",QA:"Qatar",RE:"Reunion",RO:"Romania",RS:"Serbia",RU:"Russia",RW:"Rwanda",SA:"Saudi Arabia",SB:"Solomon Islands",SC:"Seychelles",SD:"Sudan",SE:"Sweden",SG:"Singapore",SH:"Saint Helena",SI:"Slovenia",SJ:"Svalbard and Jan Mayen",SK:"Slovakia",SL:"Sierra Leone",SM:"San Marino",SN:"Senegal",SO:"Somalia",SR:"Suriname",SS:"South Sudan",ST:"Sao Tome and Principe",SV:"El Salvador",SX:"Sint Maarten",SY:"Syria",SZ:"Eswatini",TC:"Turks and Caicos Islands",TD:"Chad",TF:"French Southern Territories",TG:"Togo",TH:"Thailand",TJ:"Tajikistan",TK:"Tokelau",TL:"East Timor",TM:"Turkmenistan",TN:"Tunisia",TO:"Tonga",TR:"Turkey",TT:"Trinidad and Tobago",TV:"Tuvalu",TW:"Taiwan",TZ:"Tanzania",UA:"Ukraine",UG:"Uganda",UM:"U.S. Minor Outlying Islands",US:"United States",UY:"Uruguay",UZ:"Uzbekistan",VA:"Vatican City",VC:"Saint Vincent and the Grenadines",VE:"Venezuela",VG:"British Virgin Islands",VI:"U.S. Virgin Islands",VN:"Vietnam",VU:"Vanuatu",WF:"Wallis and Futuna",WS:"Samoa",XK:"Kosovo",YE:"Yemen",YT:"Mayotte",ZA:"South Africa",ZM:"Zambia",ZW:"Zimbabwe"},H={AD:"Andorra",AE:"دولة الإمارات العربية المتحدة",AF:"افغانستان",AG:"Antigua and Barbuda",AI:"Anguilla",AL:"Shqipëria",AM:"Հայաստան",AO:"Angola",AQ:"Antarctica",AR:"Argentina",AS:"American Samoa",AT:"Österreich",AU:"Australia",AW:"Aruba",AX:"Åland",AZ:"Azərbaycan",BA:"Bosna i Hercegovina",BB:"Barbados",BD:"Bangladesh",BE:"België",BF:"Burkina Faso",BG:"България",BH:"‏البحرين",BI:"Burundi",BJ:"Bénin",BL:"Saint-Barthélemy",BM:"Bermuda",BN:"Negara Brunei Darussalam",BO:"Bolivia",BQ:"Bonaire",BR:"Brasil",BS:"Bahamas",BT:"ʼbrug-yul",BV:"Bouvetøya",BW:"Botswana",BY:"Белару́сь",BZ:"Belize",CA:"Canada",CC:"Cocos (Keeling) Islands",CD:"République démocratique du Congo",CF:"Ködörösêse tî Bêafrîka",CG:"République du Congo",CH:"Schweiz",CI:"Côte d'Ivoire",CK:"Cook Islands",CL:"Chile",CM:"Cameroon",CN:"中国",CO:"Colombia",CR:"Costa Rica",CU:"Cuba",CV:"Cabo Verde",CW:"Curaçao",CX:"Christmas Island",CY:"Κύπρος",CZ:"Česká republika",DE:"Deutschland",DJ:"Djibouti",DK:"Danmark",DM:"Dominica",DO:"República Dominicana",DZ:"الجزائر",EC:"Ecuador",EE:"Eesti",EG:"مصر‎",EH:"الصحراء الغربية",ER:"ኤርትራ",ES:"España",ET:"ኢትዮጵያ",FI:"Suomi",FJ:"Fiji",FK:"Falkland Islands",FM:"Micronesia",FO:"Føroyar",FR:"France",GA:"Gabon",GB:"United Kingdom",GD:"Grenada",GE:"საქართველო",GF:"Guyane française",GG:"Guernsey",GH:"Ghana",GI:"Gibraltar",GL:"Kalaallit Nunaat",GM:"Gambia",GN:"Guinée",GP:"Guadeloupe",GQ:"Guinea Ecuatorial",GR:"Ελλάδα",GS:"South Georgia",GT:"Guatemala",GU:"Guam",GW:"Guiné-Bissau",GY:"Guyana",HK:"香港",HM:"Heard Island and McDonald Islands",HN:"Honduras",HR:"Hrvatska",HT:"Haïti",HU:"Magyarország",ID:"Indonesia",IE:"Éire",IL:"יִשְׂרָאֵל",IM:"Isle of Man",IN:"भारत",IO:"British Indian Ocean Territory",IQ:"العراق",IR:"ایران",IS:"Ísland",IT:"Italia",JE:"Jersey",JM:"Jamaica",JO:"الأردن",JP:"日本",KE:"Kenya",KG:"Кыргызстан",KH:"Kâmpŭchéa",KI:"Kiribati",KM:"Komori",KN:"Saint Kitts and Nevis",KP:"북한",KR:"대한민국",KW:"الكويت",KY:"Cayman Islands",KZ:"Қазақстан",LA:"ສປປລາວ",LB:"لبنان",LC:"Saint Lucia",LI:"Liechtenstein",LK:"śrī laṃkāva",LR:"Liberia",LS:"Lesotho",LT:"Lietuva",LU:"Luxembourg",LV:"Latvija",LY:"‏ليبيا",MA:"المغرب",MC:"Monaco",MD:"Moldova",ME:"Црна Гора",MF:"Saint-Martin",MG:"Madagasikara",MH:"M̧ajeļ",MK:"Северна Македонија",ML:"Mali",MM:"မြန်မာ",MN:"Монгол улс",MO:"澳門",MP:"Northern Mariana Islands",MQ:"Martinique",MR:"موريتانيا",MS:"Montserrat",MT:"Malta",MU:"Maurice",MV:"Maldives",MW:"Malawi",MX:"México",MY:"Malaysia",MZ:"Moçambique",NA:"Namibia",NC:"Nouvelle-Calédonie",NE:"Niger",NF:"Norfolk Island",NG:"Nigeria",NI:"Nicaragua",NL:"Nederland",NO:"Norge",NP:"नेपाल",NR:"Nauru",NU:"Niuē",NZ:"New Zealand",OM:"عمان",PA:"Panamá",PE:"Perú",PF:"Polynésie française",PG:"Papua Niugini",PH:"Pilipinas",PK:"Pakistan",PL:"Polska",PM:"Saint-Pierre-et-Miquelon",PN:"Pitcairn Islands",PR:"Puerto Rico",PS:"فلسطين",PT:"Portugal",PW:"Palau",PY:"Paraguay",QA:"قطر",RE:"La Réunion",RO:"România",RS:"Србија",RU:"Россия",RW:"Rwanda",SA:"العربية السعودية",SB:"Solomon Islands",SC:"Seychelles",SD:"السودان",SE:"Sverige",SG:"Singapore",SH:"Saint Helena",SI:"Slovenija",SJ:"Svalbard og Jan Mayen",SK:"Slovensko",SL:"Sierra Leone",SM:"San Marino",SN:"Sénégal",SO:"Soomaaliya",SR:"Suriname",SS:"South Sudan",ST:"São Tomé e Príncipe",SV:"El Salvador",SX:"Sint Maarten",SY:"سوريا",SZ:"Eswatini",TC:"Turks and Caicos Islands",TD:"Tchad",TF:"Territoire des Terres australes et antarctiques fr",TG:"Togo",TH:"ประเทศไทย",TJ:"Тоҷикистон",TK:"Tokelau",TL:"Timor-Leste",TM:"Türkmenistan",TN:"تونس",TO:"Tonga",TR:"Türkiye",TT:"Trinidad and Tobago",TV:"Tuvalu",TW:"臺灣",TZ:"Tanzania",UA:"Україна",UG:"Uganda",UM:"United States Minor Outlying Islands",US:"United States",UY:"Uruguay",UZ:"O'zbekiston",VA:"Vaticano",VC:"Saint Vincent and the Grenadines",VE:"Venezuela",VG:"British Virgin Islands",VI:"United States Virgin Islands",VN:"Việt Nam",VU:"Vanuatu",WF:"Wallis et Futuna",WS:"Samoa",XK:"Republika e Kosovës",YE:"اليَمَن",YT:"Mayotte",ZA:"South Africa",ZM:"Zambia",ZW:"Zimbabwe"},x=Object.entries(mn).sort(([t,a],[s,r])=>a.localeCompare(r)).map(([t,a])=>({name:a!==H[t]?`${H[t]} (${a})`:H[t],iso2:A(t),dialCode:`${O.getCountryCodeForRegionCode(t)}`})),D=class D{async guess(){let a,s;try{a=await fetch(D.IP2C_URL),s=await a.text()}catch{return}const r=s.toString().split(";");if(!(!r||r[0]!=="1"))return r[1]}};D.IP2C_URL="https://ip2c.org/s";let K=D;class Q extends K{constructor(){super(...arguments),this.memoCountry=void 0}async guess(){return this.memoCountry||(this.memoCountry=await super.guess()),this.memoCountry}setPreference(a){this.memoCountry=a}}const X={label:"Phone",ariaLabel:void 0,countryLabel:void 0,countryAriaLabel:t=>`Country for ${t.label}`,placeholder:void 0,hint:void 0,invalidMessage:t=>`The "${t.label}" field is not a valid phone number (example: ${t.example}).`,example:void 0,persistentPlaceholder:void 0,persistentHint:void 0,countryIconMode:void 0,allCountries:x,preferCountries:[],includeCountries:[],excludeCountries:[],defaultCountry:void 0,countryGuesser:new Q,guessCountry:!1,disableGuessLoading:!1,enableSearchingCountry:!1,displayFormat:"national",phoneValidator:t=>t.valid},j={...X};function q(t){Object.assign(j,t)}function l(t){return j[t]}function nn(t,a){var s,r;return((s=t.number)==null?void 0:s[a])||((r=t.number)==null?void 0:r.input)||""}function tn(t){return O.getExample(t)}function U(t,a){return O.parsePhoneNumber((t||"").trim(),{regionCode:a})}const yn={key:1},fn={class:"v-phone-input__country__title"},In={class:"v-phone-input__country__append text-body-2"},on=n.defineComponent({components:{VListItem:R.VListItem,VSelect:R.VSelect,VTextField:R.VTextField},__name:"VPhoneInput",props:{label:{type:[Function,String],default:()=>l("label")},ariaLabel:{type:[Function,String],default:()=>l("ariaLabel")},countryLabel:{type:[Function,String],default:()=>l("countryLabel")},countryAriaLabel:{type:[Function,String],default:()=>l("countryAriaLabel")},placeholder:{type:[Function,String],default:()=>l("placeholder")},hint:{type:[Function,String],default:()=>l("hint")},invalidMessage:{type:[Function,String],default:()=>l("invalidMessage")},example:{type:[String,Function],default:()=>l("example")},appendIcon:{default:void 0},appendInnerIcon:{default:void 0},prependIcon:{default:void 0},prependInnerIcon:{default:void 0},rules:{default:()=>[]},validateOn:{default:void 0},phoneValidator:{type:Function,default:l("phoneValidator")},countryIconMode:{type:[String,Object,Function],default:l("countryIconMode")},allCountries:{default:()=>l("allCountries")},preferCountries:{default:()=>l("preferCountries")},includeCountries:{default:()=>l("includeCountries")},excludeCountries:{default:()=>l("excludeCountries")},defaultCountry:{default:l("defaultCountry")},countryGuesser:{default:()=>l("countryGuesser")},guessCountry:{type:Boolean,default:l("guessCountry")},disableGuessLoading:{type:Boolean,default:l("disableGuessLoading")},enableSearchingCountry:{type:Boolean,default:l("enableSearchingCountry")},displayFormat:{default:l("displayFormat")},country:{default:""},modelValue:{default:""},wrapperProps:{default:()=>({})},countryProps:{default:()=>({})},phoneProps:{default:()=>({})}},emits:["update:modelValue","update:country"],setup(t,{expose:a,emit:s}){const r=["id","class","style"],$=["variant","flat","tile","density","singleLine","hideDetails","direction","reverse","color","bgColor","theme","disabled","readonly","rounded"],e=t,C=s,S=n.useSlots(),P=n.useAttrs(),{countriesCount:b,preferredCountries:L,otherCountries:h,guessingCountry:v,findCountry:B,firstCountry:F,setCountryPreference:p,guessCountry:N}=dn({props:e}),V=n.ref(null),M=n.ref(null),{namespacedSlots:f}=Mn(S,["country"]),{countryIconComponent:G}=pn({props:e}),{countrySelectComponent:en}=Cn({props:e}),w=n.ref(!1),Z=n.ref([]),u=n.ref(e.country),m=n.ref(e.modelValue||""),y=n.ref(n.markRaw(U(""))),k=o=>Object.keys(P).reduce((c,d)=>o(d)?{...c,[d]:P[d]}:c,{}),Bn=n.computed(()=>({...k(o=>r.indexOf(o)!==-1),...e.wrapperProps})),Tn=n.computed(()=>B(e.defaultCountry)||F.value),T=n.computed(()=>B(u.value)||Tn.value),gn=n.computed(()=>[...L.value.map(c=>({...c,preferred:!0})),...h.value]),W=o=>nn(o,e.displayFormat),An=n.computed(()=>e.example!==void 0?typeof e.example=="function"?e.example(T.value):e.example:W(tn(T.value.iso2))),Pn=n.computed(()=>{var c;const o=new Set(((c=e.validateOn)==null?void 0:c.split(""))||[]);return o.size===0||o.has("input")}),I=Sn({props:e,country:T,example:An}),an=()=>{var o;Pn.value&&((o=M.value)==null||o.validate())},sn=()=>{const o=e.rules.map(c=>typeof c=="function"?()=>c(m.value??"",y.value,I.messageOptions.value):c);I.invalidMessage.value?Z.value=[...o,()=>!m.value||e.phoneValidator(y.value)||I.invalidMessage.value]:Z.value=o},Ln=()=>{e.phoneValidator(y.value)&&(m.value=W(y.value))},Nn=()=>{var o,c;e.modelValue!==(((o=y.value.number)==null?void 0:o.input)??"")&&e.modelValue!==(((c=y.value.number)==null?void 0:c.e164)??"")&&(m.value=e.modelValue||"")},Vn=()=>{e.country&&e.country!==u.value&&(u.value=e.country)};n.watch(()=>e.rules,sn,{deep:!0,immediate:!0}),n.watch(()=>e.displayFormat,Ln),n.watch(()=>e.modelValue,Nn),n.watch(()=>e.country,Vn);const En=()=>{sn(),(m.value??"")!==""&&an()};n.watch(I.invalidMessage,En);const Rn=()=>{w.value=!0},Kn=()=>{w.value=!1},cn=()=>{y.value=n.markRaw(U(m.value,u.value)),e.phoneValidator(y.value)&&(m.value=W(y.value))},bn=(o,c)=>{u.value?(C("update:country",u.value),p(u.value)):n.nextTick(()=>{u.value||(u.value=c)}),cn(),(m.value??"")!==""&&an()},rn=()=>{if((m.value||"").startsWith("+")){const c=U(m.value).regionCode;c&&u.value!==c&&B(c)&&(u.value=c)}cn()},vn=()=>{var g,E;const o=((g=y.value.number)==null?void 0:g.input)||"",c=((E=y.value.number)==null?void 0:E.e164)||o,d=e.phoneValidator(y.value);(e.modelValue!==o||e.modelValue!==c&&d)&&C("update:modelValue",d?c:o)};n.watch(u,bn),n.watch(m,rn),n.watch(y,vn,{deep:!0});const Fn=async()=>{if(u.value)return;if(b.value===1){u.value=F.value.iso2;return}const o=await N();!u.value&&o&&(u.value=o),u.value=u.value||T.value.iso2},ln=n.computed(()=>({ref:V,modelValue:u.value,label:I.countryLabel.value,"aria-label":I.countryAriaLabel.value,items:gn.value,itemTitle:"name",itemValue:"iso2",loading:v.value,prependIcon:e.prependIcon,prependInnerIcon:e.prependInnerIcon,...k(o=>r.indexOf(o)===-1&&$.indexOf(o)!==-1),class:["v-phone-input__country__input",{"v-phone-input--focused":w.value}],"onUpdate:modelValue":o=>{u.value=o},onFocus:Rn,onBlur:Kn})),un=n.computed(()=>({ref:M,modelValue:m.value,label:I.label.value,"aria-label":I.ariaLabel.value,placeholder:I.placeholder.value,hint:I.hint.value,rules:Z.value,appendIcon:e.appendIcon,appendInnerIcon:e.appendInnerIcon,...k(o=>r.indexOf(o)===-1),validateOn:e.validateOn,class:"v-phone-input__phone__input",type:"tel","onUpdate:modelValue":o=>{m.value=o}}));return n.onMounted(()=>{rn(),n.nextTick(()=>{Fn()})}),a({countryInputRef:V,phoneInputRef:M,isValid:n.computed(()=>{var o;return((o=M.value)==null?void 0:o.isValid)??!0}),errorMessages:n.computed(()=>{var o;return((o=M.value)==null?void 0:o.errorMessages)??[]}),reset:async()=>{var o;await((o=M.value)==null?void 0:o.reset())},resetValidation:async()=>{var o;await((o=M.value)==null?void 0:o.resetValidation())},validate:async o=>{var c;return await((c=M.value)==null?void 0:c.validate(o))??[]}}),(o,c)=>(n.openBlock(),n.createElementBlock("div",n.mergeProps({class:[{"v-phone-input--prepend-inner-icon":o.prependInnerIcon},"v-phone-input"]},Bn.value),[n.renderSlot(o.$slots,"country-input",n.normalizeProps(n.guardReactiveProps({props:ln.value})),()=>[(n.openBlock(),n.createBlock(n.resolveDynamicComponent(n.unref(en).type),n.normalizeProps(n.guardReactiveProps({...n.unref(en).props,...o.countryProps,menuProps:{maxHeight:300,contentClass:"v-phone-input__country__menu",closeOnContentClick:!0,...(o.countryProps?o.countryProps.menuProps:void 0)||{}},...ln.value})),n.createSlots({selection:n.withCtx(()=>[n.renderSlot(o.$slots,"country-selection",{country:T.value},()=>[n.renderSlot(o.$slots,"country-icon",{country:T.value,decorative:!1},()=>[n.unref(G)?(n.openBlock(),n.createBlock(n.resolveDynamicComponent(n.unref(G)),{key:0,country:T.value,decorative:!1},null,8,["country"])):(n.openBlock(),n.createElementBlock("span",yn,n.toDisplayString(`+${T.value.dialCode}`),1))])])]),item:n.withCtx(d=>[n.createVNode(n.unref(R.VListItem),n.normalizeProps(n.guardReactiveProps(d.props)),{prepend:n.withCtx(()=>[n.renderSlot(o.$slots,"country-icon",{country:d.item.raw,decorative:!0},()=>[n.unref(G)?(n.openBlock(),n.createBlock(n.resolveDynamicComponent(n.unref(G)),{key:0,country:d.item.raw,decorative:!0},null,8,["country"])):n.createCommentVNode("",!0)])]),title:n.withCtx(()=>[n.renderSlot(o.$slots,"country-title",{country:d.item.raw},()=>[n.createElementVNode("span",fn,n.toDisplayString(d.item.raw.name),1)])]),append:n.withCtx(()=>[n.renderSlot(o.$slots,"country-append",{country:d.item.raw},()=>[n.createElementVNode("span",In," +"+n.toDisplayString(d.item.raw.dialCode),1)])]),_:2},1040)]),_:2},[n.renderList(n.unref(f).country,(d,g)=>({name:g,fn:n.withCtx(E=>[n.renderSlot(o.$slots,d,n.normalizeProps(n.guardReactiveProps(E)))])}))]),1040))]),n.renderSlot(o.$slots,"phone-input",n.normalizeProps(n.guardReactiveProps({props:un.value})),()=>[(n.openBlock(),n.createBlock(n.resolveDynamicComponent(n.unref(R.VTextField)),n.normalizeProps(n.guardReactiveProps({...o.phoneProps,...un.value})),n.createSlots({_:2},[n.renderList(n.unref(f).default,(d,g)=>({name:g,fn:n.withCtx(E=>[n.renderSlot(o.$slots,g,n.normalizeProps(n.guardReactiveProps(E)))])}))]),1040))])],16))}});function Gn(t){return(a,s)=>{s&&console.warn("[v-phone-input] options must be passed as first argument of createVPhoneInput()"),q(t||{}),a.component("VPhoneInput",on)}}class hn extends K{constructor(a={}){super(),this.storage=a.storage||localStorage,this.key=a.key||"v_phone_input_country"}async guess(){const a=this.retrieveStoredCountry();if(a)return a;const s=await super.guess();return s&&this.saveStoredCountry(s),s}setPreference(a){this.saveStoredCountry(a)}retrieveStoredCountry(){return this.storage.getItem(this.key)||void 0}saveStoredCountry(a){this.storage.setItem(this.key,a)}getStorage(){return this.storage}getKey(){return this.key}}i.DEFAULT_OPTIONS=X,i.Ip2cCountryGuesser=K,i.MemoIp2cCountryGuesser=Q,i.StorageMemoIp2cCountryGuesser=hn,i.VCountryIconSprite=z,i.VCountryIconSvg=_,i.VPhoneInput=on,i.countries=x,i.createVPhoneInput=Gn,i.formatPhone=nn,i.getOption=l,i.makeExample=tn,i.makePhone=U,i.mergeOptions=q,Object.defineProperty(i,Symbol.toStringTag,{value:"Module"})});