in javascript/ui/element/phonenumber.js [100:160]
element.phoneNumber.initPhoneNumberElement = function(opt_lookupTree,
opt_countryId, opt_onEnter) {
var self = this;
var phoneNumberElement = element.phoneNumber.getPhoneNumberElement.call(this);
var countrySelectorElement = element.phoneNumber.getCountrySelectorElement
.call(this);
var errorElement = element.phoneNumber.getPhoneNumberErrorElement.call(this);
var lookupTree = opt_lookupTree || firebaseui.auth.data.country.LOOKUP_TREE;
var availableCountries = lookupTree.getCountries();
if (availableCountries.length == 0) {
throw new Error('No available countries provided.');
}
// Selects the default country.
element.phoneNumber.selectDefaultCountry_.call(
self, lookupTree, opt_countryId);
// Initialize the country selector button.
element.listenForActionEvent(this, countrySelectorElement, function(e) {
element.phoneNumber.handleCountrySelectorButtonClick_.call(
self, lookupTree);
});
// Initialize the text input.
element.listenForInputEvent(this, phoneNumberElement, function(e) {
// Clear the error message.
if (element.isShown(errorElement)) {
element.setValid(phoneNumberElement, true);
element.hide(errorElement);
}
// Get national number.
var nationalNumber = goog.string.trim(
element.getInputValue(phoneNumberElement) || '');
// Get current country ID selected.
var selectedCountry = firebaseui.auth.data.country.getCountryByKey(
this.phoneNumberSelectedCountryId_);
// Get matching countries if national number countains it.
var countries = lookupTree.search(nationalNumber);
var predefinedDefaultCountryAvailable =
element.phoneNumber.isCountryAvailable_(
element.phoneNumber.DEFAULT_COUNTRY_ID,
availableCountries);
// If country code provided with national number and it does not match the
// selected one, update active selection.
if (countries.length && countries[0].e164_cc != selectedCountry.e164_cc) {
// Pick first one.
var country = countries[0];
element.phoneNumber.selectCountry.call(
self,
// For +1, use US as default.
(country.e164_cc == '1' && predefinedDefaultCountryAvailable) ?
element.phoneNumber.DEFAULT_COUNTRY_ID :
country.e164_key,
lookupTree);
}
});
if (opt_onEnter) {
element.listenForEnterEvent(this, phoneNumberElement, function(e) {
opt_onEnter();
});
}
};