react-intl-tel-input
Version:
Telephone input component. Rewrite intl-tel-input in React.js.
1,330 lines (1,316 loc) • 17 kB
JavaScript
// Tell JSHint to ignore this warning: 'character may get silently deleted by one or more browsers'
// jshint -W100
// Array of country objects for the flag dropdown.
// Each contains a name, country code (ISO 3166-1 alpha-2) and dial code.
// Originally from https://github.com/mledoze/countries
// then with a couple of manual re-arrangements to be alphabetical
// then changed Kazakhstan from +76 to +7
// and Vatican City from +379 to +39 (see issue 50)
// and Caribean Netherlands from +5997 to +599
// and Curacao from +5999 to +599
// Removed: Kosovo, Pitcairn Islands, South Georgia
// UPDATE Sept 12th 2015
// List of regions that have iso2 country codes, which I have chosen to omit:
// (based on this information: https://en.wikipedia.org/wiki/List_of_country_calling_codes)
// AQ - Antarctica - all different country codes depending on which 'base'
// BV - Bouvet Island - no calling code
// GS - South Georgia and the South Sandwich Islands -
// 'inhospitable collection of islands' - same flag and calling code as Falkland Islands
// HM - Heard Island and McDonald Islands - no calling code
// PN - Pitcairn - tiny population (56), same calling code as New Zealand
// TF - French Southern Territories - no calling code
// UM - United States Minor Outlying Islands - no calling code
// UPDATE the criteria of supported countries or territories (see issue 297)
// Have an iso2 code: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2
// Have a country calling code: https://en.wikipedia.org/wiki/List_of_country_calling_codes
// Have a flag
// Must be supported by libphonenumber: https://github.com/googlei18n/libphonenumber
// Update: converted objects to arrays to save bytes!
// Update: added 'priority' for countries with the same dialCode as others
// Update: added array of area codes for countries with the same dialCode as others
// So each country array has the following information:
// [
// Country name,
// iso2 code,
// International dial code,
// Order (if >1 country with same dial code),
// Area codes (if >1 country with same dial code)
// ]
const defaultCountriesData = [
[
'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',
'1876',
],
[
'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 (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',
'wf',
'681',
],
[
'Western Sahara (الصحراء الغربية)',
'eh',
'212',
1,
],
[
'Yemen (اليمن)',
'ye',
'967',
],
[
'Zambia',
'zm',
'260',
],
[
'Zimbabwe',
'zw',
'263',
],
[
'Åland Islands',
'ax',
'358',
1,
],
];
let countries;
function _formatCountriesData(countriesData) {
return countriesData.map((country) => ({
name: country[0],
iso2: country[1],
dialCode: country[2],
priority: country[3] || 0,
areaCodes: country[4] || null,
}));
}
function initialize(externalCountriesList) {
countries = _formatCountriesData(externalCountriesList || defaultCountriesData);
}
function getCountries() {
if (!countries) {
initialize();
}
return countries;
}
const AllCountries = {
initialize,
getCountries,
};
export default AllCountries;