ng2-validators
Version:
An implementation of angular validators for Angular 2
338 lines • 6.77 kB
JavaScript
import { Util } from './../util';
import { PhoneNumberUtil } from 'google-libphonenumber';
export var regionsCode = {
// Region code for global networks (e.g. +800 numbers).
UN001: '001',
AD: 'AD',
AE: 'AE',
AF: 'AF',
AG: 'AG',
AI: 'AI',
AL: 'AL',
AM: 'AM',
AN: 'AN',
AO: 'AO',
AQ: 'AQ',
AR: 'AR',
AS: 'AS',
AT: 'AT',
AU: 'AU',
AW: 'AW',
AX: 'AX',
AZ: 'AZ',
BA: 'BA',
BB: 'BB',
BD: 'BD',
BE: 'BE',
BF: 'BF',
BG: 'BG',
BH: 'BH',
BI: 'BI',
BJ: 'BJ',
BL: 'BL',
BM: 'BM',
BN: 'BN',
BO: 'BO',
BR: 'BR',
BS: 'BS',
BT: 'BT',
BV: 'BV',
BW: 'BW',
BY: 'BY',
BZ: 'BZ',
CA: 'CA',
CC: 'CC',
CD: 'CD',
CF: 'CF',
CG: 'CG',
CH: 'CH',
CI: 'CI',
CK: 'CK',
CL: 'CL',
CM: 'CM',
CN: 'CN',
CO: 'CO',
CR: 'CR',
CU: 'CU',
CV: 'CV',
CX: 'CX',
CY: 'CY',
CZ: 'CZ',
DE: 'DE',
DJ: 'DJ',
DK: 'DK',
DM: 'DM',
DO: 'DO',
DZ: 'DZ',
EC: 'EC',
EE: 'EE',
EG: 'EG',
EH: 'EH',
ER: 'ER',
ES: 'ES',
ET: 'ET',
FI: 'FI',
FJ: 'FJ',
FK: 'FK',
FM: 'FM',
FO: 'FO',
FR: 'FR',
GA: 'GA',
GB: 'GB',
GD: 'GD',
GE: 'GE',
GF: 'GF',
GG: 'GG',
GH: 'GH',
GI: 'GI',
GL: 'GL',
GM: 'GM',
GN: 'GN',
GP: 'GP',
GQ: 'GQ',
GR: 'GR',
GS: 'GS',
GT: 'GT',
GU: 'GU',
GW: 'GW',
GY: 'GY',
HK: 'HK',
HM: 'HM',
HN: 'HN',
HR: 'HR',
HT: 'HT',
HU: 'HU',
ID: 'ID',
IE: 'IE',
IL: 'IL',
IM: 'IM',
IN: 'IN',
IO: 'IO',
IQ: 'IQ',
IR: 'IR',
IS: 'IS',
IT: 'IT',
JE: 'JE',
JM: 'JM',
JO: 'JO',
JP: 'JP',
KE: 'KE',
KG: 'KG',
KH: 'KH',
KI: 'KI',
KM: 'KM',
KN: 'KN',
KP: 'KP',
KR: 'KR',
KW: 'KW',
KY: 'KY',
KZ: 'KZ',
LA: 'LA',
LB: 'LB',
LC: 'LC',
LI: 'LI',
LK: 'LK',
LR: 'LR',
LS: 'LS',
LT: 'LT',
LU: 'LU',
LV: 'LV',
LY: 'LY',
MA: 'MA',
MC: 'MC',
MD: 'MD',
ME: 'ME',
MF: 'MF',
MG: 'MG',
MH: 'MH',
MK: 'MK',
ML: 'ML',
MM: 'MM',
MN: 'MN',
MO: 'MO',
MP: 'MP',
MQ: 'MQ',
MR: 'MR',
MS: 'MS',
MT: 'MT',
MU: 'MU',
MV: 'MV',
MW: 'MW',
MX: 'MX',
MY: 'MY',
MZ: 'MZ',
NA: 'NA',
NC: 'NC',
NE: 'NE',
NF: 'NF',
NG: 'NG',
NI: 'NI',
NL: 'NL',
NO: 'NO',
NP: 'NP',
NR: 'NR',
NU: 'NU',
NZ: 'NZ',
OM: 'OM',
PA: 'PA',
PE: 'PE',
PF: 'PF',
PG: 'PG',
PH: 'PH',
PK: 'PK',
PL: 'PL',
PM: 'PM',
PN: 'PN',
PR: 'PR',
PS: 'PS',
PT: 'PT',
PW: 'PW',
PY: 'PY',
QA: 'QA',
RE: 'RE',
RO: 'RO',
RS: 'RS',
RU: 'RU',
RW: 'RW',
SA: 'SA',
SB: 'SB',
SC: 'SC',
SD: 'SD',
SE: 'SE',
SG: 'SG',
SH: 'SH',
SI: 'SI',
SJ: 'SJ',
SK: 'SK',
SL: 'SL',
SM: 'SM',
SN: 'SN',
SO: 'SO',
SR: 'SR',
ST: 'ST',
SV: 'SV',
SY: 'SY',
SZ: 'SZ',
TC: 'TC',
TD: 'TD',
TF: 'TF',
TG: 'TG',
TH: 'TH',
TJ: 'TJ',
TK: 'TK',
TL: 'TL',
TM: 'TM',
TN: 'TN',
TO: 'TO',
TR: 'TR',
TT: 'TT',
TV: 'TV',
TW: 'TW',
TZ: 'TZ',
UA: 'UA',
UG: 'UG',
UM: 'UM',
US: 'US',
UY: 'UY',
UZ: 'UZ',
VA: 'VA',
VC: 'VC',
VE: 'VE',
VG: 'VG',
VI: 'VI',
VN: 'VN',
VU: 'VU',
WF: 'WF',
WS: 'WS',
YE: 'YE',
YT: 'YT',
ZA: 'ZA',
ZM: 'ZM',
ZW: 'ZW',
// Official code for the unknown region.
ZZ: 'ZZ'
};
var PhoneValidators = (function () {
function PhoneValidators() {
}
PhoneValidators.checkRegionCode = function (local) {
return !(regionsCode[local] === undefined);
};
;
PhoneValidators.isValidRegionCode = function (control) {
if (Util.isNotPresent(control)) {
return undefined;
}
if (!PhoneValidators.checkRegionCode(control.value)) {
return { 'noValidRegionCode': true };
}
return undefined;
};
;
PhoneValidators.isPhoneNumber = function (local) {
var validator = function (control) {
if (Util.isNotPresent(control)) {
return undefined;
}
if (!PhoneValidators.checkRegionCode(local)) {
return { 'noValidRegionCode': true };
}
var phoneParser = PhoneNumberUtil.getInstance();
var error = { 'noPhoneNumber': true };
try {
var phoneNumber = phoneParser.parse(control.value, local);
if (phoneParser.isValidNumber(phoneNumber)) {
error = undefined;
}
}
catch (err) {
error = { 'noPhoneNumber': true };
}
return error;
};
return validator;
};
;
PhoneValidators.isPossibleNumberWithReason = function (local) {
var validator = function (control) {
if (Util.isNotPresent(control)) {
return undefined;
}
if (!PhoneValidators.checkRegionCode(local)) {
return { 'noValidRegionCode': true };
}
var phoneParser = PhoneNumberUtil.getInstance();
var error = { 'noPhoneNumber': true };
try {
var phoneNumber = phoneParser.parse(control.value, local);
var reason = phoneParser.isPossibleNumberWithReason(phoneNumber);
switch (reason) {
case PhoneNumberUtil.ValidationResult.IS_POSSIBLE:
error = undefined;
break;
case PhoneNumberUtil.ValidationResult.TOO_LONG:
error = { 'phoneNumberTooLong': true };
break;
case PhoneNumberUtil.ValidationResult.TOO_SHORT:
error = { 'phoneNumberTooShort': true };
break;
case PhoneNumberUtil.ValidationResult.INVALID_COUNTRY_CODE:
error = { 'phoneNumberInvalidCountryCode': true };
break;
default:
error = { 'noPhoneNumber': true };
break;
}
}
catch (err) {
error = { 'noPhoneNumber': true };
}
return error;
};
return validator;
};
;
return PhoneValidators;
}());
export { PhoneValidators };
//# sourceMappingURL=phone-validators.js.map