ngx-mat-intl-tel-input
Version:
An Angular Material package for entering and validating international telephone numbers. It adds a flag dropdown to any input, detects the user's country, displays a relevant placeholder and provides formatting/validation methods.
1,014 lines (1,010 loc) • 177 kB
JavaScript
import * as i0 from '@angular/core';
import { Injectable, Pipe, EventEmitter, Component, ChangeDetectionStrategy, Optional, Self, Input, ViewChild, HostBinding, Output } from '@angular/core';
import { MatFormFieldControl } from '@angular/material/form-field';
import * as i3 from '@angular/forms';
import { NG_VALIDATORS, FormsModule, ReactiveFormsModule } from '@angular/forms';
import { parsePhoneNumber, getExampleNumber, parsePhoneNumberFromString, AsYouType } from 'libphonenumber-js';
import { coerceBooleanProperty } from '@angular/cdk/coercion';
import * as i5 from '@angular/common';
import { CommonModule } from '@angular/common';
import * as i8 from '@angular/material/button';
import { MatButtonModule } from '@angular/material/button';
import * as i4 from '@angular/material/core';
import { mixinErrorState, ErrorStateMatcher } from '@angular/material/core';
import * as i9 from '@angular/material/divider';
import { MatDividerModule } from '@angular/material/divider';
import * as i6 from '@angular/material/input';
import { MatInputModule } from '@angular/material/input';
import * as i7 from '@angular/material/menu';
import { MatMenu, MatMenuModule } from '@angular/material/menu';
import { Subject } from 'rxjs';
import * as i2 from '@angular/cdk/a11y';
/* eslint-disable */
class CountryCode {
constructor() {
this.allCountries = [
['Afghanistan (افغانستان)', 'af', '93'],
['Albania (Shqipëri)', 'al', '355'],
['Algeria (الجزائر)', 'dz', '213'],
['American Samoa', 'as', '1684'],
['Andorra', 'ad', '376'],
['Angola', 'ao', '244'],
['Anguilla', 'ai', '1264'],
['Antigua and Barbuda', 'ag', '1268'],
['Argentina', 'ar', '54'],
['Armenia (Հայաստան)', 'am', '374'],
['Aruba', 'aw', '297'],
['Australia', 'au', '61', 0],
['Austria (Österreich)', 'at', '43'],
['Azerbaijan (Azərbaycan)', 'az', '994'],
['Bahamas', 'bs', '1242'],
['Bahrain (البحرين)', 'bh', '973'],
['Bangladesh (বাংলাদেশ)', 'bd', '880'],
['Barbados', 'bb', '1246'],
['Belarus (Беларусь)', 'by', '375'],
['Belgium (België)', 'be', '32'],
['Belize', 'bz', '501'],
['Benin (Bénin)', 'bj', '229'],
['Bermuda', 'bm', '1441'],
['Bhutan (འབྲུག)', 'bt', '975'],
['Bolivia', 'bo', '591'],
['Bosnia and Herzegovina (Босна и Херцеговина)', 'ba', '387'],
['Botswana', 'bw', '267'],
['Brazil (Brasil)', 'br', '55'],
['British Indian Ocean Territory', 'io', '246'],
['British Virgin Islands', 'vg', '1284'],
['Brunei', 'bn', '673'],
['Bulgaria (България)', 'bg', '359'],
['Burkina Faso', 'bf', '226'],
['Burundi (Uburundi)', 'bi', '257'],
['Cambodia (កម្ពុជា)', 'kh', '855'],
['Cameroon (Cameroun)', 'cm', '237'],
['Canada', 'ca', '1', 1, ['204', '226', '236', '249', '250', '289', '306', '343', '365', '387', '403', '416', '418', '431', '437',
'438', '450', '506', '514', '519', '548', '579', '581', '587', '604', '613', '639', '647', '672', '705', '709', '742',
'778', '780', '782', '807', '819', '825', '867', '873', '902', '905']],
['Cape Verde (Kabu Verdi)', 'cv', '238'],
['Caribbean Netherlands', 'bq', '599', 1],
['Cayman Islands', 'ky', '1345'],
['Central African Republic (République centrafricaine)', 'cf', '236'],
['Chad (Tchad)', 'td', '235'],
['Chile', 'cl', '56'],
['China (中国)', 'cn', '86'],
['Christmas Island', 'cx', '61', 2],
['Cocos (Keeling) Islands', 'cc', '61', 1],
['Colombia', 'co', '57'],
['Comoros (جزر القمر)', 'km', '269'],
['Congo (DRC) (Jamhuri ya Kidemokrasia ya Kongo)', 'cd', '243'],
['Congo (Republic) (Congo-Brazzaville)', 'cg', '242'],
['Cook Islands', 'ck', '682'],
['Costa Rica', 'cr', '506'],
['Côte d’Ivoire', 'ci', '225'],
['Croatia (Hrvatska)', 'hr', '385'],
['Cuba', 'cu', '53'],
['Curaçao', 'cw', '599', 0],
['Cyprus (Κύπρος)', 'cy', '357'],
['Czech Republic (Česká republika)', 'cz', '420'],
['Denmark (Danmark)', 'dk', '45'],
['Djibouti', 'dj', '253'],
['Dominica', 'dm', '1767'],
['Dominican Republic (República Dominicana)', 'do', '1', 2, ['809', '829', '849']], ['Ecuador', 'ec', '593'],
['Egypt (مصر)', 'eg', '20'],
['El Salvador', 'sv', '503'],
['Equatorial Guinea (Guinea Ecuatorial)', 'gq', '240'],
['Eritrea', 'er', '291'],
['Estonia (Eesti)', 'ee', '372'],
['Ethiopia', 'et', '251'],
['Falkland Islands (Islas Malvinas)', 'fk', '500'],
['Faroe Islands (Føroyar)', 'fo', '298'],
['Fiji', 'fj', '679'],
['Finland (Suomi)', 'fi', '358', 0],
['France', 'fr', '33'],
['French Guiana (Guyane française)', 'gf', '594'],
['French Polynesia (Polynésie française)', 'pf', '689'],
['Gabon', 'ga', '241'],
['Gambia', 'gm', '220'],
['Georgia (საქართველო)', 'ge', '995'],
['Germany (Deutschland)', 'de', '49'],
['Ghana (Gaana)', 'gh', '233'],
['Gibraltar', 'gi', '350'],
['Greece (Ελλάδα)', 'gr', '30'],
['Greenland (Kalaallit Nunaat)', 'gl', '299'],
['Grenada', 'gd', '1473'],
['Guadeloupe', 'gp', '590', 0],
['Guam', 'gu', '1671'],
['Guatemala', 'gt', '502'],
['Guernsey', 'gg', '44', 1],
['Guinea (Guinée)', 'gn', '224'],
['Guinea-Bissau (Guiné Bissau)', 'gw', '245'],
['Guyana', 'gy', '592'],
['Haiti', 'ht', '509'],
['Honduras', 'hn', '504'],
['Hong Kong (香港)', 'hk', '852'],
['Hungary (Magyarország)', 'hu', '36'],
['Iceland (Ísland)', 'is', '354'],
['India (भारत)', 'in', '91'],
['Indonesia', 'id', '62'],
['Iran (ایران)', 'ir', '98'],
['Iraq (العراق)', 'iq', '964'],
['Ireland', 'ie', '353'],
['Isle of Man', 'im', '44', 2],
['Israel (ישראל)', 'il', '972'],
['Italy (Italia)', 'it', '39', 0],
['Jamaica', 'jm', '1', 4, ['876', '658']], ['Japan (日本)', 'jp', '81'],
['Jersey', 'je', '44', 3],
['Jordan (الأردن)', 'jo', '962'],
['Kazakhstan (Казахстан)', 'kz', '7', 1],
['Kenya', 'ke', '254'],
['Kiribati', 'ki', '686'],
['Kosovo', 'xk', '383'],
['Kuwait (الكويت)', 'kw', '965'],
['Kyrgyzstan (Кыргызстан)', 'kg', '996'],
['Laos (ລາວ)', 'la', '856'],
['Latvia (Latvija)', 'lv', '371'],
['Lebanon (لبنان)', 'lb', '961'],
['Lesotho', 'ls', '266'],
['Liberia', 'lr', '231'],
['Libya (ليبيا)', 'ly', '218'],
['Liechtenstein', 'li', '423'],
['Lithuania (Lietuva)', 'lt', '370'],
['Luxembourg', 'lu', '352'],
['Macau (澳門)', 'mo', '853'],
['Macedonia (FYROM) (Македонија)', 'mk', '389'],
['Madagascar (Madagasikara)', 'mg', '261'],
['Malawi', 'mw', '265'],
['Malaysia', 'my', '60'],
['Maldives', 'mv', '960'],
['Mali', 'ml', '223'],
['Malta', 'mt', '356'],
['Marshall Islands', 'mh', '692'],
['Martinique', 'mq', '596'],
['Mauritania (موريتانيا)', 'mr', '222'],
['Mauritius (Moris)', 'mu', '230'],
['Mayotte', 'yt', '262', 1],
['Mexico (México)', 'mx', '52'],
['Micronesia', 'fm', '691'],
['Moldova (Republica Moldova)', 'md', '373'],
['Monaco', 'mc', '377'],
['Mongolia (Монгол)', 'mn', '976'],
['Montenegro (Crna Gora)', 'me', '382'],
['Montserrat', 'ms', '1664'],
['Morocco (المغرب)', 'ma', '212', 0],
['Mozambique (Moçambique)', 'mz', '258'],
['Myanmar (Burma) (မြန်မာ)', 'mm', '95'],
['Namibia (Namibië)', 'na', '264'],
['Nauru', 'nr', '674'],
['Nepal (नेपाल)', 'np', '977'],
['Netherlands (Nederland)', 'nl', '31'],
['New Caledonia (Nouvelle-Calédonie)', 'nc', '687'],
['New Zealand', 'nz', '64'],
['Nicaragua', 'ni', '505'],
['Niger (Nijar)', 'ne', '227'],
['Nigeria', 'ng', '234'],
['Niue', 'nu', '683'],
['Norfolk Island', 'nf', '672'],
['North Korea (조선 민주주의 인민 공화국)', 'kp', '850'],
['Northern Mariana Islands', 'mp', '1670'],
['Norway (Norge)', 'no', '47', 0],
['Oman (عُمان)', 'om', '968'],
['Pakistan (پاکستان)', 'pk', '92'],
['Palau', 'pw', '680'],
['Palestine (فلسطين)', 'ps', '970'],
['Panama (Panamá)', 'pa', '507'],
['Papua New Guinea', 'pg', '675'],
['Paraguay', 'py', '595'],
['Peru (Perú)', 'pe', '51'],
['Philippines', 'ph', '63'],
['Poland (Polska)', 'pl', '48'],
['Portugal', 'pt', '351'],
['Puerto Rico', 'pr', '1', 3, ['787', '939']], ['Qatar (قطر)', 'qa', '974'],
['Réunion (La Réunion)', 're', '262', 0],
['Romania (România)', 'ro', '40'],
['Russia (Россия)', 'ru', '7', 0],
['Rwanda', 'rw', '250'],
['Saint Barthélemy', 'bl', '590', 1],
['Saint Helena', 'sh', '290'],
['Saint Kitts and Nevis', 'kn', '1869'],
['Saint Lucia', 'lc', '1758'],
['Saint Martin (Saint-Martin (partie française))', 'mf', '590', 2],
['Saint Pierre and Miquelon (Saint-Pierre-et-Miquelon)', 'pm', '508'],
['Saint Vincent and the Grenadines', 'vc', '1784'],
['Samoa', 'ws', '685'],
['San Marino', 'sm', '378'],
['São Tomé and Príncipe (São Tomé e Príncipe)', 'st', '239'],
['Saudi Arabia (المملكة العربية السعودية)', 'sa', '966'],
['Senegal (Sénégal)', 'sn', '221'],
['Serbia (Србија)', 'rs', '381'],
['Seychelles', 'sc', '248'],
['Sierra Leone', 'sl', '232'],
['Singapore', 'sg', '65'],
['Sint Maarten', 'sx', '1721'],
['Slovakia (Slovensko)', 'sk', '421'],
['Slovenia (Slovenija)', 'si', '386'],
['Solomon Islands', 'sb', '677'],
['Somalia (Soomaaliya)', 'so', '252'],
['South Africa', 'za', '27'],
['South Korea (대한민국)', 'kr', '82'],
['South Sudan (جنوب السودان)', 'ss', '211'],
['Spain (España)', 'es', '34'],
['Sri Lanka (ශ්රී ලංකාව)', 'lk', '94'],
['Sudan (السودان)', 'sd', '249'],
['Suriname', 'sr', '597'],
['Svalbard and Jan Mayen', 'sj', '47', 1],
['Swaziland', 'sz', '268'],
['Sweden (Sverige)', 'se', '46'],
['Switzerland (Schweiz)', 'ch', '41'],
['Syria (سوريا)', 'sy', '963'],
['Taiwan (台灣)', 'tw', '886'],
['Tajikistan', 'tj', '992'],
['Tanzania', 'tz', '255'],
['Thailand (ไทย)', 'th', '66'],
['Timor-Leste', 'tl', '670'],
['Togo', 'tg', '228'],
['Tokelau', 'tk', '690'],
['Tonga', 'to', '676'],
['Trinidad and Tobago', 'tt', '1868'],
['Tunisia (تونس)', 'tn', '216'],
['Turkey (Türkiye)', 'tr', '90'],
['Turkmenistan', 'tm', '993'],
['Turks and Caicos Islands', 'tc', '1649'],
['Tuvalu', 'tv', '688'],
['U.S. Virgin Islands', 'vi', '1340'],
['Uganda', 'ug', '256'],
['Ukraine (Україна)', 'ua', '380'],
['United Arab Emirates (الإمارات العربية المتحدة)', 'ae', '971'],
['United Kingdom', 'gb', '44', 0],
['United States', 'us', '1', 0],
['Uruguay', 'uy', '598'],
['Uzbekistan (Oʻzbekiston)', 'uz', '998'],
['Vanuatu', 'vu', '678'],
['Vatican City (Città del Vaticano)', 'va', '39', 1],
['Venezuela', 've', '58'],
['Vietnam (Việt Nam)', 'vn', '84'],
['Wallis and Futuna (Wallis-et-Futuna)', 'wf', '681'],
['Western Sahara (الصحراء الغربية)', 'eh', '212', 1],
['Yemen (اليمن)', 'ye', '967'],
['Zambia', 'zm', '260'],
['Zimbabwe', 'zw', '263'],
['Åland Islands', 'ax', '358', 1]
];
}
}
CountryCode.ɵfac = function CountryCode_Factory(t) { return new (t || CountryCode)(); };
CountryCode.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: CountryCode, factory: CountryCode.ɵfac });
(function () {
(typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CountryCode, [{
type: Injectable
}], null, null);
})();
const Examples = {
'001': '001',
AC: '40123',
AD: '312345',
AE: '501234567',
AF: '701234567',
AG: '2684641234',
AI: '2642351234',
AL: '662123456',
AM: '77123456',
AO: '923123456',
AR: '91123456789',
AS: '6847331234',
AT: '664123456',
AU: '412345678',
AW: '5601234',
AX: '412345678',
AZ: '401234567',
BA: '61123456',
BB: '2462501234',
BD: '1812345678',
BE: '470123456',
BF: '70123456',
BG: '48123456',
BH: '36001234',
BI: '79561234',
BJ: '90011234',
BL: '690001234',
BM: '4413701234',
BN: '7123456',
BO: '71234567',
BQ: '3181234',
BR: '11961234567',
BS: '2423591234',
BT: '17123456',
BW: '71123456',
BY: '294911911',
BZ: '6221234',
CA: '5062345678',
CC: '412345678',
CD: '991234567',
CF: '70012345',
CG: '061234567',
CH: '781234567',
CI: '01234567',
CK: '71234',
CL: '221234567',
CM: '671234567',
CN: '13123456789',
CO: '3211234567',
CR: '83123456',
CU: '51234567',
CV: '9911234',
CW: '95181234',
CX: '412345678',
CY: '96123456',
CZ: '601123456',
DE: '15123456789',
DJ: '77831001',
DK: '32123456',
DM: '7672251234',
DO: '8092345678',
DZ: '551234567',
EC: '991234567',
EE: '51234567',
EG: '1001234567',
EH: '650123456',
ER: '7123456',
ES: '612345678',
ET: '911234567',
FI: '412345678',
FJ: '7012345',
FK: '51234',
FM: '3501234',
FO: '211234',
FR: '612345678',
GA: '06031234',
GB: '7400123456',
GD: '4734031234',
GE: '555123456',
GF: '694201234',
GG: '7781123456',
GH: '231234567',
GI: '57123456',
GL: '221234',
GM: '3012345',
GN: '601123456',
GP: '690001234',
GQ: '222123456',
GR: '6912345678',
GT: '51234567',
GU: '6713001234',
GW: '955012345',
GY: '6091234',
HK: '51234567',
HN: '91234567',
HR: '921234567',
HT: '34101234',
HU: '201234567',
ID: '812345678',
IE: '850123456',
IL: '502345678',
IM: '7924123456',
IN: '8123456789',
IO: '3801234',
IQ: '7912345678',
IR: '9123456789',
IS: '6111234',
IT: '3123456789',
JE: '7797712345',
JM: '8762101234',
JO: '790123456',
JP: '9012345678',
KE: '712123456',
KG: '700123456',
KH: '91234567',
KI: '72001234',
KM: '3212345',
KN: '8697652917',
KP: '1921234567',
KR: '1000000000',
KW: '50012345',
KY: '3453231234',
KZ: '7710009998',
LA: '2023123456',
LB: '71123456',
LC: '7582845678',
LI: '660234567',
LK: '712345678',
LR: '770123456',
LS: '50123456',
LT: '61234567',
LU: '628123456',
LV: '21234567',
LY: '912345678',
MA: '650123456',
MC: '612345678',
MD: '62112345',
ME: '67622901',
MF: '690001234',
MG: '321234567',
MH: '2351234',
MK: '72345678',
ML: '65012345',
MM: '92123456',
MN: '88123456',
MO: '66123456',
MP: '6702345678',
MQ: '696201234',
MR: '22123456',
MS: '6644923456',
MT: '96961234',
MU: '52512345',
MV: '7712345',
MW: '991234567',
MX: '12221234567',
MY: '123456789',
MZ: '821234567',
NA: '811234567',
NC: '751234',
NE: '93123456',
NF: '381234',
NG: '8021234567',
NI: '81234567',
NL: '612345678',
NO: '40612345',
NP: '9841234567',
NR: '5551234',
NU: '8884012',
NZ: '211234567',
OM: '92123456',
PA: '61234567',
PE: '912345678',
PF: '87123456',
PG: '70123456',
PH: '9051234567',
PK: '3012345678',
PL: '512345678',
PM: '551234',
PR: '7872345678',
PS: '599123456',
PT: '912345678',
PW: '6201234',
PY: '961456789',
QA: '33123456',
RE: '692123456',
RO: '712034567',
RS: '601234567',
RU: '9123456789',
RW: '720123456',
SA: '512345678',
SB: '7421234',
SC: '2510123',
SD: '911231234',
SE: '701234567',
SG: '81234567',
SH: '51234',
SI: '31234567',
SJ: '41234567',
SK: '912123456',
SL: '25123456',
SM: '66661212',
SN: '701234567',
SO: '71123456',
SR: '7412345',
SS: '977123456',
ST: '9812345',
SV: '70123456',
SX: '7215205678',
SY: '944567890',
SZ: '76123456',
TA: '8999',
TC: '6492311234',
TD: '63012345',
TG: '90112345',
TH: '812345678',
TJ: '917123456',
TK: '7290',
TL: '77212345',
TM: '66123456',
TN: '20123456',
TO: '7715123',
TR: '5012345678',
TT: '8682911234',
TV: '901234',
TW: '912345678',
TZ: '621234567',
UA: '501234567',
UG: '712345678',
US: '2015550123',
UY: '94231234',
UZ: '912345678',
VA: '3123456789',
VC: '7844301234',
VE: '4121234567',
VG: '2843001234',
VI: '3406421234',
VN: '912345678',
VU: '5912345',
WF: '501234',
WS: '7212345',
XK: '43201234',
YE: '712345678',
YT: '639012345',
ZA: '711234567',
ZM: '955123456',
ZW: '712345678'
};
const phoneNumberValidator = (control) => {
const error = { validatePhoneNumber: true };
let numberInstance;
if (control.value) {
try {
numberInstance = parsePhoneNumber(control.value);
}
catch (e) {
control.setValue(null);
return error;
}
if (numberInstance && !numberInstance.isValid()) {
control.setValue(null);
if (!control.touched) {
control.markAsTouched();
}
return error;
}
}
return null;
};
class SearchPipe {
// country | search:'searchCriteria'
transform(country, searchCriteria) {
if (!searchCriteria || searchCriteria === '') {
return true;
}
return `${country.name}+${country.dialCode}`
.toLowerCase()
.includes(searchCriteria.toLowerCase());
}
}
SearchPipe.ɵfac = function SearchPipe_Factory(t) { return new (t || SearchPipe)(); };
SearchPipe.ɵpipe = /*@__PURE__*/ i0.ɵɵdefinePipe({ name: "search", type: SearchPipe, pure: true, standalone: true });
(function () {
(typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SearchPipe, [{
type: Pipe,
args: [{
name: 'search',
standalone: true,
}]
}], null, null);
})();
/* eslint-disable @typescript-eslint/member-ordering, no-underscore-dangle, id-blacklist,
id-match, @typescript-eslint/naming-convention */
function NgxMatIntlTelInputComponent_span_3_Template(rf, ctx) {
if (rf & 1) {
i0.ɵɵelementStart(0, "span", 12);
i0.ɵɵtext(1);
i0.ɵɵelementEnd();
}
if (rf & 2) {
const ctx_r0 = i0.ɵɵnextContext();
i0.ɵɵadvance(1);
i0.ɵɵtextInterpolate1("+", ctx_r0.selectedCountry.dialCode, "");
}
}
function NgxMatIntlTelInputComponent_input_6_Template(rf, ctx) {
if (rf & 1) {
const _r8 = i0.ɵɵgetCurrentView();
i0.ɵɵelementStart(0, "input", 13);
i0.ɵɵlistener("ngModelChange", function NgxMatIntlTelInputComponent_input_6_Template_input_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r7 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r7.searchCriteria = $event); })("click", function NgxMatIntlTelInputComponent_input_6_Template_input_click_0_listener($event) { return $event.stopPropagation(); });
i0.ɵɵelementEnd();
}
if (rf & 2) {
const ctx_r2 = i0.ɵɵnextContext();
i0.ɵɵproperty("ngModel", ctx_r2.searchCriteria)("placeholder", ctx_r2.searchPlaceholder);
}
}
function NgxMatIntlTelInputComponent_button_7_span_5_Template(rf, ctx) {
if (rf & 1) {
i0.ɵɵelementStart(0, "span");
i0.ɵɵtext(1);
i0.ɵɵelementEnd();
}
if (rf & 2) {
const country_r10 = i0.ɵɵnextContext().$implicit;
i0.ɵɵadvance(1);
i0.ɵɵtextInterpolate1("+", country_r10.dialCode, "");
}
}
function NgxMatIntlTelInputComponent_button_7_Template(rf, ctx) {
if (rf & 1) {
const _r14 = i0.ɵɵgetCurrentView();
i0.ɵɵelementStart(0, "button", 14);
i0.ɵɵlistener("click", function NgxMatIntlTelInputComponent_button_7_Template_button_click_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r14); const country_r10 = restoredCtx.$implicit; const ctx_r13 = i0.ɵɵnextContext(); const _r6 = i0.ɵɵreference(11); return i0.ɵɵresetView(ctx_r13.onCountrySelect(country_r10, _r6)); });
i0.ɵɵelementStart(1, "div", 15);
i0.ɵɵelement(2, "div", 16);
i0.ɵɵelementEnd();
i0.ɵɵelementStart(3, "div", 17);
i0.ɵɵtext(4);
i0.ɵɵtemplate(5, NgxMatIntlTelInputComponent_button_7_span_5_Template, 2, 1, "span", 8);
i0.ɵɵelementEnd()();
}
if (rf & 2) {
const country_r10 = ctx.$implicit;
i0.ɵɵadvance(2);
i0.ɵɵproperty("ngClass", country_r10.flagClass);
i0.ɵɵadvance(2);
i0.ɵɵtextInterpolate1(" ", country_r10.name, " ");
i0.ɵɵadvance(1);
i0.ɵɵproperty("ngIf", country_r10 == null ? null : country_r10.dialCode);
}
}
function NgxMatIntlTelInputComponent_mat_divider_8_Template(rf, ctx) {
if (rf & 1) {
i0.ɵɵelement(0, "mat-divider");
}
}
function NgxMatIntlTelInputComponent_ng_container_9_button_1_Template(rf, ctx) {
if (rf & 1) {
const _r19 = i0.ɵɵgetCurrentView();
i0.ɵɵelementStart(0, "button", 14);
i0.ɵɵlistener("click", function NgxMatIntlTelInputComponent_ng_container_9_button_1_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r19); const country_r15 = i0.ɵɵnextContext().$implicit; const ctx_r17 = i0.ɵɵnextContext(); const _r6 = i0.ɵɵreference(11); return i0.ɵɵresetView(ctx_r17.onCountrySelect(country_r15, _r6)); });
i0.ɵɵelementStart(1, "div", 15);
i0.ɵɵelement(2, "div", 16);
i0.ɵɵelementEnd();
i0.ɵɵelementStart(3, "div", 17);
i0.ɵɵtext(4);
i0.ɵɵelementEnd()();
}
if (rf & 2) {
const country_r15 = i0.ɵɵnextContext().$implicit;
i0.ɵɵadvance(2);
i0.ɵɵproperty("ngClass", country_r15.flagClass);
i0.ɵɵadvance(2);
i0.ɵɵtextInterpolate2(" ", country_r15.name, " +", country_r15.dialCode, " ");
}
}
function NgxMatIntlTelInputComponent_ng_container_9_Template(rf, ctx) {
if (rf & 1) {
i0.ɵɵelementContainerStart(0);
i0.ɵɵtemplate(1, NgxMatIntlTelInputComponent_ng_container_9_button_1_Template, 5, 3, "button", 18);
i0.ɵɵpipe(2, "search");
i0.ɵɵelementContainerEnd();
}
if (rf & 2) {
const country_r15 = ctx.$implicit;
const ctx_r5 = i0.ɵɵnextContext();
i0.ɵɵadvance(1);
i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind2(2, 1, country_r15, ctx_r5.searchCriteria));
}
}
class NgxMatIntlTelInputBase {
constructor(_defaultErrorStateMatcher, _parentForm, _parentFormGroup,
/** @docs-private */
ngControl) {
this._defaultErrorStateMatcher = _defaultErrorStateMatcher;
this._parentForm = _parentForm;
this._parentFormGroup = _parentFormGroup;
this.ngControl = ngControl;
this.stateChanges = new Subject();
}
}
const _NgxMatIntlTelInputMixinBase = mixinErrorState(NgxMatIntlTelInputBase);
class NgxMatIntlTelInputComponent extends _NgxMatIntlTelInputMixinBase {
constructor(_changeDetectorRef, countryCodeData, fm, elRef, ngControl, _parentForm, _parentFormGroup, _defaultErrorStateMatcher) {
super(_defaultErrorStateMatcher, _parentForm, _parentFormGroup, ngControl);
this._changeDetectorRef = _changeDetectorRef;
this.countryCodeData = countryCodeData;
this.fm = fm;
this.elRef = elRef;
this.ngControl = ngControl;
this.preferredCountries = [];
this.enablePlaceholder = true;
this.onlyCountries = [];
this.errorStateMatcher = new ErrorStateMatcher();
this.enableSearch = false;
this.describedBy = '';
this._required = false;
this._disabled = false;
this.stateChanges = new Subject();
this.focused = false;
this.id = `ngx-mat-intl-tel-input-${NgxMatIntlTelInputComponent.nextId++}`;
this.allCountries = [];
this.preferredCountriesInDropDown = [];
this.countryChanged = new EventEmitter();
this._format = 'default';
this.onTouched = () => { };
this.propagateChange = (_) => { };
fm.monitor(elRef, true).subscribe((origin) => {
if (this.focused && !origin) {
this.onTouched();
}
this.focused = !!origin;
this.stateChanges.next(undefined);
});
this.fetchCountryData();
if (this.ngControl != null) {
this.ngControl.valueAccessor = this;
}
}
get format() {
return this._format;
}
set format(value) {
this._format = value;
this.phoneNumber = this.formattedPhoneNumber;
this.stateChanges.next(undefined);
}
static getPhoneNumberPlaceHolder(countryISOCode) {
const result = getExampleNumber(countryISOCode, Examples);
return !!result ? result.number.toString() : undefined;
}
ngOnInit() {
if (!this.searchPlaceholder) {
this.searchPlaceholder = 'Search ...';
}
if (this.preferredCountries.length) {
this.preferredCountries.forEach((iso2) => {
const preferredCountry = this.allCountries
.filter((c) => c.iso2 === iso2)
.shift();
if (preferredCountry) {
this.preferredCountriesInDropDown.push(preferredCountry);
}
});
}
if (this.onlyCountries.length) {
this.allCountries = this.allCountries.filter((c) => this.onlyCountries.includes(c.iso2));
}
if (this.numberInstance && this.numberInstance.country) {
// If an existing number is present, we use it to determine selectedCountry
this.selectedCountry = this.getCountry(this.numberInstance.country);
}
else {
if (this.preferredCountriesInDropDown.length) {
this.selectedCountry = this.preferredCountriesInDropDown[0];
}
else {
this.selectedCountry = this.allCountries[0];
}
}
this.countryChanged.emit(this.selectedCountry);
this._changeDetectorRef.markForCheck();
this.stateChanges.next(undefined);
}
ngDoCheck() {
if (this.ngControl) {
this.updateErrorState();
}
}
onPhoneNumberChange() {
var _a, _b, _c, _d, _e;
try {
this.numberInstance = parsePhoneNumberFromString(((_a = this.phoneNumber) === null || _a === void 0 ? void 0 : _a.toString()) || '', (_b = this.selectedCountry) === null || _b === void 0 ? void 0 : _b.iso2.toUpperCase());
this.formatAsYouTypeIfEnabled();
this.value = (_c = this.numberInstance) === null || _c === void 0 ? void 0 : _c.number;
if (this.numberInstance && this.numberInstance.isValid()) {
if (this.phoneNumber !== this.formattedPhoneNumber) {
this.phoneNumber = this.formattedPhoneNumber;
}
if (((_d = this.selectedCountry) === null || _d === void 0 ? void 0 : _d.iso2) !== this.numberInstance.country &&
!!this.numberInstance.country) {
this.selectedCountry = this.getCountry(this.numberInstance.country);
this.countryChanged.emit(this.selectedCountry);
}
}
}
catch (e) {
// if no possible numbers are there,
// then the full number is passed so that validator could be triggered and proper error could be shown
this.value = (_e = this.phoneNumber) === null || _e === void 0 ? void 0 : _e.toString();
}
this.propagateChange(this.value);
this._changeDetectorRef.markForCheck();
}
onCountrySelect(country, el) {
var _a;
if (this.phoneNumber) {
this.phoneNumber = (_a = this.numberInstance) === null || _a === void 0 ? void 0 : _a.nationalNumber;
}
this.selectedCountry = country;
this.countryChanged.emit(this.selectedCountry);
this.onPhoneNumberChange();
el.focus();
}
getCountry(code) {
return (this.allCountries.find((c) => c.iso2 === code.toLowerCase()) || {
name: 'UN',
iso2: 'UN',
dialCode: '',
priority: 0,
areaCodes: undefined,
flagClass: 'UN',
placeHolder: '',
});
}
onInputKeyPress(event) {
const pattern = /[0-9+\- ]/;
if (!pattern.test(event.key)) {
event.preventDefault();
}
}
fetchCountryData() {
this.countryCodeData.allCountries.forEach((c) => {
const country = {
name: c[0].toString(),
iso2: c[1].toString(),
dialCode: c[2].toString(),
priority: +c[3] || 0,
areaCodes: c[4] || undefined,
flagClass: c[1].toString().toUpperCase(),
placeHolder: '',
};
if (this.enablePlaceholder) {
country.placeHolder =
NgxMatIntlTelInputComponent.getPhoneNumberPlaceHolder(country.iso2.toUpperCase());
}
this.allCountries.push(country);
});
}
registerOnChange(fn) {
this.propagateChange = fn;
}
registerOnTouched(fn) {
this.onTouched = fn;
}
setDisabledState(isDisabled) {
this.disabled = isDisabled;
this._changeDetectorRef.markForCheck();
this.stateChanges.next(undefined);
}
writeValue(value) {
if (value) {
this.numberInstance = parsePhoneNumberFromString(value);
if (this.numberInstance) {
const countryCode = this.numberInstance.country;
this.phoneNumber = this.formattedPhoneNumber;
if (!countryCode) {
return;
}
setTimeout(() => {
this.selectedCountry = this.getCountry(countryCode);
if (this.selectedCountry.dialCode &&
!this.preferredCountries.includes(this.selectedCountry.iso2)) {
this.preferredCountriesInDropDown.push(this.selectedCountry);
}
this.countryChanged.emit(this.selectedCountry);
// Initial value is set
this._changeDetectorRef.markForCheck();
this.stateChanges.next(undefined);
}, 1);
}
else {
this.phoneNumber = value;
}
}
// Value is set from outside using setValue()
this._changeDetectorRef.markForCheck();
this.stateChanges.next(undefined);
}
get empty() {
return !this.phoneNumber;
}
get shouldLabelFloat() {
return this.focused || !this.empty;
}
get placeholder() {
return this._placeholder || '';
}
set placeholder(value) {
this._placeholder = value;
this.stateChanges.next(undefined);
}
get required() {
return this._required;
}
set required(value) {
this._required = coerceBooleanProperty(value);
this.stateChanges.next(undefined);
}
get disabled() {
return this._disabled;
}
set disabled(value) {
this._disabled = coerceBooleanProperty(value);
this.stateChanges.next(undefined);
}
setDescribedByIds(ids) {
this.describedBy = ids.join(' ');
}
onContainerClick(event) {
if (event.target.tagName.toLowerCase() !== 'input') {
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
this.elRef.nativeElement.querySelector('input').focus();
}
}
reset() {
this.phoneNumber = '';
this.propagateChange(null);
this._changeDetectorRef.markForCheck();
this.stateChanges.next(undefined);
}
ngOnDestroy() {
this.stateChanges.complete();
this.fm.stopMonitoring(this.elRef);
}
get formattedPhoneNumber() {
var _a;
if (!this.numberInstance) {
return ((_a = this.phoneNumber) === null || _a === void 0 ? void 0 : _a.toString()) || '';
}
switch (this.format) {
case 'national':
return this.numberInstance.formatNational();
case 'international':
return this.numberInstance.formatInternational();
default:
return this.numberInstance.nationalNumber.toString();
}
}
formatAsYouTypeIfEnabled() {
var _a, _b, _c;
if (this.format === 'default') {
return;
}
const asYouType = new AsYouType((_a = this.selectedCountry) === null || _a === void 0 ? void 0 : _a.iso2.toUpperCase());
// To avoid caret positioning we apply formatting only if the caret is at the end:
if ((_b = this.phoneNumber) === null || _b === void 0 ? void 0 : _b.toString().startsWith(this.previousFormattedNumber || '')) {
this.phoneNumber = asYouType.input(this.phoneNumber.toString());
}
this.previousFormattedNumber = (_c = this.phoneNumber) === null || _c === void 0 ? void 0 : _c.toString();
}
}
NgxMatIntlTelInputComponent.nextId = 0;
NgxMatIntlTelInputComponent.ɵfac = function NgxMatIntlTelInputComponent_Factory(t) { return new (t || NgxMatIntlTelInputComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(CountryCode), i0.ɵɵdirectiveInject(i2.FocusMonitor), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i3.NgControl, 10), i0.ɵɵdirectiveInject(i3.NgForm, 8), i0.ɵɵdirectiveInject(i3.FormGroupDirective, 8), i0.ɵɵdirectiveInject(i4.ErrorStateMatcher)); };
NgxMatIntlTelInputComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: NgxMatIntlTelInputComponent, selectors: [["ngx-mat-intl-tel-input"]], viewQuery: function NgxMatIntlTelInputComponent_Query(rf, ctx) {
if (rf & 1) {
i0.ɵɵviewQuery(MatMenu, 5);
}
if (rf & 2) {
let _t;
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.matMenu = _t.first);
}
}, hostVars: 3, hostBindings: function NgxMatIntlTelInputComponent_HostBindings(rf, ctx) {
if (rf & 2) {
i0.ɵɵhostProperty("id", ctx.id);
i0.ɵɵclassProp("ngx-floating", ctx.shouldLabelFloat);
}
}, inputs: { preferredCountries: "preferredCountries", enablePlaceholder: "enablePlaceholder", inputPlaceholder: "inputPlaceholder", cssClass: "cssClass", name: "name", onlyCountries: "onlyCountries", errorStateMatcher: "errorStateMatcher", enableSearch: "enableSearch", searchPlaceholder: "searchPlaceholder", describedBy: "describedBy", format: "format", placeholder: "placeholder", required: "required", disabled: "disabled" }, outputs: { countryChanged: "countryChanged" }, standalone: true, features: [i0.ɵɵProvidersFeature([
CountryCode,
{ provide: MatFormFieldControl, useExisting: NgxMatIntlTelInputComponent },
{
provide: NG_VALIDATORS,
useValue: phoneNumberValidator,
multi: true,
},
]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature], decls: 12, vars: 14, consts: [[1, "ngx-mat-tel-input-container"], ["type", "button", "mat-button", "", 1, "country-selector", 3, "matMenuTriggerFor", "disabled"], [1, "country-selector-flag", "flag", 3, "ngClass"], ["class", "country-selector-code", 4, "ngIf"], ["backdropClass", "ngx-mat-tel-input-overlay-backdrop", "overlayPanelClass", "ngx-mat-tel-input-overlay-pane", 1, "ngx-mat-tel-input-mat-menu-panel"], ["menu", "matMenu"], ["class", "country-search", "type", "text", 3, "ngModel", "placeholder", "ngModelChange", "click", 4, "ngIf"], ["type", "button", "mat-menu-item", "", "class", "country-list-button", 3, "click", 4, "ngFor", "ngForOf"], [4, "ngIf"], [4, "ngFor", "ngForOf"], ["matInput", "", "type", "tel", "autocomplete", "off", 3, "ngClass", "ngModel", "errorStateMatcher", "placeholder", "disabled", "aria-describedby", "blur", "keypress", "ngModelChange"], ["focusable", ""], [1, "country-selector-code"], ["type", "text", 1, "country-search", 3, "ngModel", "placeholder", "ngModelChange", "click"], ["type", "button", "mat-menu-item", "", 1, "country-list-button", 3, "click"], [1, "icon-wrapper"], [1, "flag", 3, "ngClass"], [1, "label-wrapper"], ["type", "button", "mat-menu-item", "", "class", "country-list-button", 3, "click", 4, "ngIf"]], template: function NgxMatIntlTelInputComponent_Template(rf, ctx) {
if (rf & 1) {
i0.ɵɵelementStart(0, "div", 0)(1, "button", 1);
i0.ɵɵelement(2, "span", 2);
i0.ɵɵtemplate(3, NgxMatIntlTelInputComponent_span_3_Template, 2, 1, "span", 3);
i0.ɵɵelementEnd();
i0.ɵɵelementStart(4, "mat-menu", 4, 5);
i0.ɵɵtemplate(6, NgxMatIntlTelInputComponent_input_6_Template, 1, 2, "input", 6);
i0.ɵɵtemplate(7, NgxMatIntlTelInputComponent_button_7_Template, 6, 3, "button", 7);
i0.ɵɵtemplate(8, NgxMatIntlTelInputComponent_mat_divider_8_Template, 1, 0, "mat-divider", 8);
i0.ɵɵtemplate(9, NgxMatIntlTelInputComponent_ng_container_9_Template, 3, 4, "ng-container", 9);
i0.ɵɵelementEnd();
i0.ɵɵelementStart(10, "input", 10, 11);
i0.ɵɵlistener("blur", function NgxMatIntlTelInputComponent_Template_input_blur_10_listener() { return ctx.onTouched(); })("keypress", function NgxMatIntlTelInputComponent_Template_input_keypress_10_listener($event) { return ctx.onInputKeyPress($event); })("ngModelChange", function NgxMatIntlTelInputComponent_Template_input_ngModelChange_10_listener($event) { return ctx.phoneNumber = $event; })("ngModelChange", function NgxMatIntlTelInputComponent_Template_input_ngModelChange_10_listener() { return ctx.onPhoneNumberChange(); });
i0.ɵɵelementEnd()();
}
if (rf & 2) {
const _r1 = i0.ɵɵreference(5);
i0.ɵɵadvance(1);
i0.ɵɵproperty("matMenuTriggerFor", _r1)("disabled", ctx.disabled);
i0.ɵɵadvance(1);
i0.ɵɵproperty("ngClass", ctx.selectedCountry == null ? null : ctx.selectedCountry.flagClass);
i0.ɵɵadvance(1);
i0.ɵɵproperty("ngIf", ctx.selectedCountry == null ? null : ctx.selectedCountry.dialCode);
i0.ɵɵadvance(3);
i0.ɵɵproperty("ngIf", ctx.enableSearch);
i0.ɵɵadvance(1);
i0.ɵɵproperty("ngForOf", ctx.preferredCountriesInDropDown);
i0.ɵɵadvance(1);
i0.ɵɵproperty("ngIf", ctx.preferredCountriesInDropDown == null ? null : ctx.preferredCountriesInDropDown.length);
i0.ɵɵadvance(1);
i0.ɵɵproperty("ngForOf", ctx.allCountries);
i0.ɵɵadvance(1);
i0.ɵɵproperty("ngClass", ctx.cssClass)("ngModel", ctx.phoneNumber)("errorStateMatcher", ctx.errorStateMatcher)("placeholder", ctx.inputPlaceholder)("disabled", ctx.disabled)("aria-describedby", ctx.describedBy);
}
}, dependencies: [CommonModule, i5.NgClass, i5.NgForOf, i5.NgIf, FormsModule, i3.DefaultValueAccessor, i3.NgControlStatus, i3.NgModel, MatInputModule, i6.MatInput, MatMenuModule, i7.MatMenu, i7.MatMenuItem, i7.MatMenuTrigger, MatButtonModule, i8.MatButton, MatDividerModule, i9.MatDivider, ReactiveFormsModule,
SearchPipe], styles: ["input[_ngcontent-%COMP%]:not(.country-search){border:none;background:none;outline:none;font:inherit;width:100%;box-sizing:border-box;padding:0 6px 0 90px;position:relative;z-index:0;margin-top:0!important;margin-bottom:0!important;margin-right:0;margin-left:0}input.country-search[_ngcontent-%COMP%]{width:100%;height:34px;border:none;border-bottom:1px solid #ddd;font-size:14px;padding:20px 20px 24px}.icon-wrapper[_ngcontent-%COMP%]{padding-right:24px}.flag[_ngcontent-%COMP%]{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAABw4CAMAAAAs8X1iAAADAFBMVEUAAAD////OESYAJH0AAAAAK3/80RbtKTn/ywDRETPQFCvYJx7/AAAAejkAI5UANpV0rt0AZTTvKy3BAQPCJy1Bid3eKg8AnUkAlETgGx3VAQD93QXtHCQAeF8AN6YBhU0AakLeChcAAIzKLzwAKWb91AActTr94wAAo17209YAbcsCrsnHDR/kABLoES0AcsEiRY1LktoAak4DJ4s6ecn38/ABHqERSK8DaacBod3GDDDYFDsAgAASrSsDlsAHiTBpuuYCKKYAmzpKrdYAP4j9zyT1s7YAZgAAV6VmzP8ormbeFh4EUZkkSaX630X0rgG6CC6eLzoPPHytHSX33xYZigABPppKl88BPxw6gj3WZHTe5/DZECNbl7H6uBEAlWcBS6joKDoAAGYaRJHlAjb1xsrZJBEAXbsCf/3gUmEjnkLNDCwANrKdqsrVJyftHSjjPDIvmzAMBwTnbnKMGj3mqK/B0eT8OjKyIjQhXDNAWInzlpX950kNXq8ei0M+bU3////c29r/cgDsho3idQnsAAD9TRQ+XrivDgv2gwFLqFZeteMWFpbgACXuxQmakKswVpmnp6X+xh3PSFB/rY8AUbrgTwf+mjIjXEI7eCgAmQDasjM/mQEiG1ASiAeozbbGvcOLJyqNqdbPf4ejyuxRfMB/msPelZ0NrS00sjBtg7hLaaPxK0IZIG0/PnEwkAngUCWwigqxxNpTSgfCHhp/teHG0rzk7uYOdCjy3roAUPBNL2rSuhy1uAglMXTHujMxLRHFpV59CRBvjTp4YmiUsjy1oyHqkBdguI3CdyFtaZFHlHNUWlWLgyqOh4ZyhnMpd2XseCNnXDOmUzh7awhLiKQzDw2yNFDvQ02RqGZagyxpoKt6tB5PaIWRxZrFQBxDTEB5flJsOE9SCxp6MBimuIf24p3sf0nltl5Ds5PYw4DPrJzAfVf22XudPyMSOTn///8CNwPAGTilUGUCi0b////MECjvKiwAMoze8+gABhCSwecEfcgAOJTnESwetTri0eK2AAABAHRSTlMA/////////////////////////////////////////////////////////////////v////3///7///////////7//f/////+///////////+//////7//////////f/////////////9/vz//////////v3//f///////////vz///7////////////////+//7/////////////////+////v/9/v7///////////7//v///v////7//////f///////v///////v////7//////v/+///+//v//////////v/////+//3//v/////U/9f7pY6kfJrKwsC2SaOqKyxZfwAAjiFJREFUeJzsvQ1cVNe97z0bBgRiG6MkPY3JPecTYsy0NiGtu/Ym57WN0z5pDBGbkyvTcNpL6DnkdIgZyphAm2QufKIxdhyETxIfkjIRHW+GlPLmTPhkVEDlRWEIiESivImgAtLTa3uf89zzfO591tovM/tlrb3XShyc0P1Thz17/7/r//uvtfaW2TOzt8kUcxXkM/bMRChLWpqFW8jck1OQn4iRCW7kEQHI5NdggcQ8EeEAITwPFw+ARBGBADo8SQpYIipOSyuOPotG14Xn9niiQBpGkYjMudkrs35yIOn06a1bR0owlqwIS+dvA+qXFZ1pZ/ILcvbAovmlTGnBdadPv316NCkKCOF5fLfmKZCk2pz5+fnrBbURQAyPDJyAiEBOz/x8T09PjpjCJIZLpgaHRIAz85U9GZW1ESBRW0kuS9AC/rpIgUT/5Etnz740GRkI3QxNI/uczn0jTYRAUu11T93x43We62IR2kB9uL3dxe77lHW1t4frCYCS+dnZPb66Ot+e2dn5EhJL4enp2VnuX0WYqAagURA/PRp5qg8oFI/AUtAX9NgqA3SPrUpA99iamHjvvZTA229jLamOrUl1nqTstyeOJkWyaB9bk0r8Z79ZMnqqxPf2X5UkCYD2sTXz42zPKPhXEjmQ6RxbR0vqTo2+fVtJnfg/hM6x9eipUX/JaP3vR0f7j0ZrwOvomVMlTU32Jqf91IkzRwmAE/MnRnfUeTx1nlMnLl/UB949c+ZEid3+d39n31PfP7/5t7rAxfcmj2b/4O8ef/xL/5h9dHL+I13goxOj9W9/s9vpOv3NV97uPXNRFzh66tSpV9721NVt+viU/9RovS6QXT9aUn80Me/WxLrRU/X12boASksCWApaLtGXCGQAsQcYfb1qANTAqwSSAWYCGUBsgEWRPOcqmf5vmQzg8wHrWuiAlkqgjBZiID0DEC3p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