goog.provide('i18n.phonenumbers.demo'); // includes goog.require('i18n.phonenumbers.PhoneNumberFormat'); goog.require('i18n.phonenumbers.PhoneNumberUtil'); goog.require('i18n.phonenumbers.Error'); // format the given number to the given format function formatNumber(number, countryCode, format) { try { var phoneUtil = i18n.phonenumbers.PhoneNumberUtil.getInstance(); var numberObj = phoneUtil.parseAndKeepRawInput(number, countryCode); if (phoneUtil.isPossibleNumber(numberObj)) { format = (typeof format == "undefined") ? i18n.phonenumbers.PhoneNumberFormat.E164 : format; return phoneUtil.format(numberObj, format); } else { return number; } } catch (e) { return number; } } // get an example number for the given country code function getExampleNumber(countryCode, national, numberType) { try { var phoneUtil = i18n.phonenumbers.PhoneNumberUtil.getInstance(); var numberObj = phoneUtil.getExampleNumberForType(countryCode, numberType); var format = (national) ? i18n.phonenumbers.PhoneNumberFormat.NATIONAL : i18n.phonenumbers.PhoneNumberFormat.INTERNATIONAL; return phoneUtil.format(numberObj, format); } catch (e) { return ""; } } // get the extension from the given number function getExtension(number, countryCode) { try { var phoneUtil = i18n.phonenumbers.PhoneNumberUtil.getInstance(); var numberObj = phoneUtil.parseAndKeepRawInput(number, countryCode); return numberObj.getExtension(); } catch (e) { return ""; } } // get the type of the given number e.g. fixed-line/mobile function getNumberType(number, countryCode) { try { var phoneUtil = i18n.phonenumbers.PhoneNumberUtil.getInstance(); var numberObj = phoneUtil.parseAndKeepRawInput(number, countryCode); return phoneUtil.getNumberType(numberObj); } catch (e) { // broken return -99; } } // get more info if the validation has failed e.g. too long/too short // NOTE that isPossibleNumberWithReason returns a i18n.phonenumbers.PhoneNumberUtil.ValidationResult function getValidationError(number, countryCode) { try { var phoneUtil = i18n.phonenumbers.PhoneNumberUtil.getInstance(); var numberObj = phoneUtil.parseAndKeepRawInput(number, countryCode); return phoneUtil.isPossibleNumberWithReason(numberObj); } catch (e) { //console.log(e); // here I convert thrown errors into ValidationResult enums (if possible) // errors are from i18n.phonenumbers.Error in the file https://github.com/googlei18n/libphonenumber/blob/master/javascript/i18n/phonenumbers/phonenumberutil.js if (e.message == i18n.phonenumbers.Error.INVALID_COUNTRY_CODE) { return i18n.phonenumbers.PhoneNumberUtil.ValidationResult.INVALID_COUNTRY_CODE; } if (e.message == i18n.phonenumbers.Error.TOO_SHORT_AFTER_IDD || e.message == i18n.phonenumbers.Error.TOO_SHORT_NSN) { return i18n.phonenumbers.PhoneNumberUtil.ValidationResult.TOO_SHORT; } if (e.message == i18n.phonenumbers.Error.TOO_LONG) { return i18n.phonenumbers.PhoneNumberUtil.ValidationResult.TOO_LONG; } // broken return -99; } } // check if given number is valid function isValidNumber(number, countryCode) { try { var phoneUtil = i18n.phonenumbers.PhoneNumberUtil.getInstance(); var numberObj = phoneUtil.parseAndKeepRawInput(number, countryCode); return phoneUtil.isValidNumber(numberObj); } catch (e) { return false; } } // copied this from i18n.phonenumbers.PhoneNumberFormat in the file https://github.com/googlei18n/libphonenumber/blob/master/javascript/i18n/phonenumbers/phonenumberutil.js var numberFormat = { "E164": 0, "INTERNATIONAL": 1, "NATIONAL": 2, "RFC3966": 3 }; // copied this from i18n.phonenumbers.PhoneNumberType in https://github.com/googlei18n/libphonenumber/blob/master/javascript/i18n/phonenumbers/phonenumberutil.js and put the keys in quotes to force closure compiler to preserve the keys // TODO: there must be a way to just tell closure compiler to preserve the keys on i18n.phonenumbers.PhoneNumberType and just export that var numberType = { "FIXED_LINE": 0, "MOBILE": 1, "FIXED_LINE_OR_MOBILE": 2, "TOLL_FREE": 3, "PREMIUM_RATE": 4, "SHARED_COST": 5, "VOIP": 6, "PERSONAL_NUMBER": 7, "PAGER": 8, "UAN": 9, "VOICEMAIL": 10, "UNKNOWN": -1 }; // copied this from i18n.phonenumbers.PhoneNumberUtil.ValidationResult in https://github.com/googlei18n/libphonenumber/blob/master/javascript/i18n/phonenumbers/phonenumberutil.js and again put the keys in quotes. var validationError = { "IS_POSSIBLE": 0, "INVALID_COUNTRY_CODE": 1, "TOO_SHORT": 2, "TOO_LONG": 3, "IS_POSSIBLE_LOCAL_ONLY": 4, "INVALID_LENGTH": 5, }; // exports goog.exportSymbol('intlTelInputUtils', {}); goog.exportSymbol('intlTelInputUtils.formatNumber', formatNumber); goog.exportSymbol('intlTelInputUtils.getExampleNumber', getExampleNumber); goog.exportSymbol('intlTelInputUtils.getExtension', getExtension); goog.exportSymbol('intlTelInputUtils.getNumberType', getNumberType); goog.exportSymbol('intlTelInputUtils.getValidationError', getValidationError); goog.exportSymbol('intlTelInputUtils.isValidNumber', isValidNumber); // enums goog.exportSymbol('intlTelInputUtils.numberFormat', numberFormat); goog.exportSymbol('intlTelInputUtils.numberType', numberType); goog.exportSymbol('intlTelInputUtils.validationError', validationError);