ionic5-international-input
Version:
An Ionic component for International Phone Number Input, that allows all countries, validation with google phone lib, limited countries, preferred countries, virtual scrolling and much more.
177 lines (171 loc) • 9.1 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Directive } from '@angular/core';
import { NG_VALIDATORS, } from '@angular/forms';
import { PhoneNumberUtil } from 'google-libphonenumber';
/* const validateInput: ValidatorFn = (
control: FormGroup
): ValidationErrors | null => {
const error = { inValid: true };
const isRequired = control.errors && control.errors.required;
let phoneNumber: PhoneNumber;
try {
phoneNumber = PhoneNumberUtil.getInstance().parse(
control.value.number,
control.value.isoCode
);
} catch (e) {
if (!isRequired) {
return error;
}
}
if (control.value) {
if (!phoneNumber) {
return error;
} else {
if (
!PhoneNumberUtil.getInstance().isValidNumberForRegion(
phoneNumber,
control.value.isoCode
)
) {
return error;
}
}
}
return;
}; */
var /* const validateInput: ValidatorFn = (
control: FormGroup
): ValidationErrors | null => {
const error = { inValid: true };
const isRequired = control.errors && control.errors.required;
let phoneNumber: PhoneNumber;
try {
phoneNumber = PhoneNumberUtil.getInstance().parse(
control.value.number,
control.value.isoCode
);
} catch (e) {
if (!isRequired) {
return error;
}
}
if (control.value) {
if (!phoneNumber) {
return error;
} else {
if (
!PhoneNumberUtil.getInstance().isValidNumberForRegion(
phoneNumber,
control.value.isoCode
)
) {
return error;
}
}
}
return;
}; */
IonIntlTelInputValidators = /** @class */ (function () {
function IonIntlTelInputValidators() {
}
/**
* @param {?} control
* @return {?}
*/
IonIntlTelInputValidators.phone = /**
* @param {?} control
* @return {?}
*/
function (control) {
/** @type {?} */
var error = { phone: true };
/** @type {?} */
var phoneNumber;
if (!control.value) {
return error;
}
try {
phoneNumber = PhoneNumberUtil.getInstance().parse(control.value.nationalNumber, control.value.isoCode);
}
catch (e) {
return error;
}
if (!phoneNumber) {
return error;
}
else {
if (!PhoneNumberUtil.getInstance().isValidNumberForRegion(phoneNumber, control.value.isoCode)) {
return error;
}
}
};
return IonIntlTelInputValidators;
}());
/* const validateInput: ValidatorFn = (
control: FormGroup
): ValidationErrors | null => {
const error = { inValid: true };
const isRequired = control.errors && control.errors.required;
let phoneNumber: PhoneNumber;
try {
phoneNumber = PhoneNumberUtil.getInstance().parse(
control.value.number,
control.value.isoCode
);
} catch (e) {
if (!isRequired) {
return error;
}
}
if (control.value) {
if (!phoneNumber) {
return error;
} else {
if (
!PhoneNumberUtil.getInstance().isValidNumberForRegion(
phoneNumber,
control.value.isoCode
)
) {
return error;
}
}
}
return;
}; */
export { IonIntlTelInputValidators };
var IonIntlTelInputValidatorDirective = /** @class */ (function () {
function IonIntlTelInputValidatorDirective() {
}
/**
* @param {?} control
* @return {?}
*/
IonIntlTelInputValidatorDirective.prototype.validate = /**
* @param {?} control
* @return {?}
*/
function (control) {
return IonIntlTelInputValidators.phone(control);
};
IonIntlTelInputValidatorDirective.decorators = [
{ type: Directive, args: [{
// tslint:disable-next-line: directive-selector
selector: '[ionIntlTelInputValid]',
providers: [
{
provide: NG_VALIDATORS,
useExisting: IonIntlTelInputValidatorDirective,
multi: true,
},
],
},] }
];
return IonIntlTelInputValidatorDirective;
}());
export { IonIntlTelInputValidatorDirective };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW9uLWludGwtdGVsLWlucHV0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2lvbmljNS1pbnRlcm5hdGlvbmFsLWlucHV0LyIsInNvdXJjZXMiOlsibGliL2lvbi1pbnRsLXRlbC1pbnB1dC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUVMLGFBQWEsR0FLZCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBZSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFxQ3JFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUFBO0lBK0JBLENBQUM7Ozs7O0lBOUJRLCtCQUFLOzs7O0lBQVosVUFBYSxPQUF3Qjs7WUFDN0IsS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTs7WUFDekIsV0FBd0I7UUFFNUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUU7WUFDbEIsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELElBQUk7WUFDRixXQUFXLEdBQUcsZUFBZSxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssQ0FDL0MsT0FBTyxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQzVCLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUN0QixDQUFDO1NBQ0g7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFRCxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2hCLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7YUFBTTtZQUNMLElBQ0UsQ0FBQyxlQUFlLENBQUMsV0FBVyxFQUFFLENBQUMsc0JBQXNCLENBQ25ELFdBQVcsRUFDWCxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FDdEIsRUFDRDtnQkFDQSxPQUFPLEtBQUssQ0FBQzthQUNkO1NBQ0Y7SUFDSCxDQUFDO0lBQ0gsZ0NBQUM7QUFBRCxDQUFDLEFBL0JELElBK0JDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFRDtJQUFBO0lBZUEsQ0FBQzs7Ozs7SUFIQyxvREFBUTs7OztJQUFSLFVBQVMsT0FBd0I7UUFDL0IsT0FBTyx5QkFBeUIsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbEQsQ0FBQzs7Z0JBZEYsU0FBUyxTQUFDOztvQkFFVCxRQUFRLEVBQUUsd0JBQXdCO29CQUNsQyxTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGFBQWE7NEJBQ3RCLFdBQVcsRUFBRSxpQ0FBaUM7NEJBQzlDLEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO2lCQUNGOztJQUtELHdDQUFDO0NBQUEsQUFmRCxJQWVDO1NBSlksaUNBQWlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBWYWxpZGF0b3JGbixcbiAgTkdfVkFMSURBVE9SUyxcbiAgVmFsaWRhdG9yLFxuICBBYnN0cmFjdENvbnRyb2wsXG4gIEZvcm1Hcm91cCxcbiAgVmFsaWRhdGlvbkVycm9ycyxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUGhvbmVOdW1iZXIsIFBob25lTnVtYmVyVXRpbCB9IGZyb20gJ2dvb2dsZS1saWJwaG9uZW51bWJlcic7XG5cbi8qIGNvbnN0IHZhbGlkYXRlSW5wdXQ6IFZhbGlkYXRvckZuID0gKFxuICBjb250cm9sOiBGb3JtR3JvdXBcbik6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgY29uc3QgZXJyb3IgPSB7IGluVmFsaWQ6IHRydWUgfTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IGNvbnRyb2wuZXJyb3JzICYmIGNvbnRyb2wuZXJyb3JzLnJlcXVpcmVkO1xuICBsZXQgcGhvbmVOdW1iZXI6IFBob25lTnVtYmVyO1xuXG4gIHRyeSB7XG4gICAgcGhvbmVOdW1iZXIgPSBQaG9uZU51bWJlclV0aWwuZ2V0SW5zdGFuY2UoKS5wYXJzZShcbiAgICAgIGNvbnRyb2wudmFsdWUubnVtYmVyLFxuICAgICAgY29udHJvbC52YWx1ZS5pc29Db2RlXG4gICAgKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGlmICghaXNSZXF1aXJlZCkge1xuICAgICAgcmV0dXJuIGVycm9yO1xuICAgIH1cbiAgfVxuXG4gIGlmIChjb250cm9sLnZhbHVlKSB7XG4gICAgaWYgKCFwaG9uZU51bWJlcikge1xuICAgICAgcmV0dXJuIGVycm9yO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoXG4gICAgICAgICFQaG9uZU51bWJlclV0aWwuZ2V0SW5zdGFuY2UoKS5pc1ZhbGlkTnVtYmVyRm9yUmVnaW9uKFxuICAgICAgICAgIHBob25lTnVtYmVyLFxuICAgICAgICAgIGNvbnRyb2wudmFsdWUuaXNvQ29kZVxuICAgICAgICApXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm47XG59OyAqL1xuXG5leHBvcnQgY2xhc3MgSW9uSW50bFRlbElucHV0VmFsaWRhdG9ycyB7XG4gIHN0YXRpYyBwaG9uZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgY29uc3QgZXJyb3IgPSB7IHBob25lOiB0cnVlIH07XG4gICAgbGV0IHBob25lTnVtYmVyOiBQaG9uZU51bWJlcjtcblxuICAgIGlmICghY29udHJvbC52YWx1ZSkge1xuICAgICAgcmV0dXJuIGVycm9yO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBwaG9uZU51bWJlciA9IFBob25lTnVtYmVyVXRpbC5nZXRJbnN0YW5jZSgpLnBhcnNlKFxuICAgICAgICBjb250cm9sLnZhbHVlLm5hdGlvbmFsTnVtYmVyLFxuICAgICAgICBjb250cm9sLnZhbHVlLmlzb0NvZGVcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGVycm9yO1xuICAgIH1cblxuICAgIGlmICghcGhvbmVOdW1iZXIpIHtcbiAgICAgIHJldHVybiBlcnJvcjtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKFxuICAgICAgICAhUGhvbmVOdW1iZXJVdGlsLmdldEluc3RhbmNlKCkuaXNWYWxpZE51bWJlckZvclJlZ2lvbihcbiAgICAgICAgICBwaG9uZU51bWJlcixcbiAgICAgICAgICBjb250cm9sLnZhbHVlLmlzb0NvZGVcbiAgICAgICAgKVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiBlcnJvcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQERpcmVjdGl2ZSh7XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogZGlyZWN0aXZlLXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnW2lvbkludGxUZWxJbnB1dFZhbGlkXScsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgICB1c2VFeGlzdGluZzogSW9uSW50bFRlbElucHV0VmFsaWRhdG9yRGlyZWN0aXZlLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgSW9uSW50bFRlbElucHV0VmFsaWRhdG9yRGlyZWN0aXZlIGltcGxlbWVudHMgVmFsaWRhdG9yIHtcbiAgdmFsaWRhdGUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIHJldHVybiBJb25JbnRsVGVsSW5wdXRWYWxpZGF0b3JzLnBob25lKGNvbnRyb2wpO1xuICB9XG59XG4iXX0=