UNPKG

ngx-phone-validators

Version:

An implementation of angular validators for Angular 2 and higher

79 lines 7.72 kB
import { Directive, Input, forwardRef } from "@angular/core"; import { NG_VALIDATORS, } from "@angular/forms"; import { PhoneValidators } from "./phone-validators"; export class PossiblePhoneValidatorDirective { constructor() { this.possiblePhone = "US"; } ngOnInit() { this.validator = PhoneValidators.isPossibleNumberWithReason(this.possiblePhone); } validate(c) { return this.validator(c); } } PossiblePhoneValidatorDirective.decorators = [ { type: Directive, args: [{ selector: "[possiblePhone][formControlName],[possiblePhone][formControl],[possiblePhone][ngModel]", providers: [ { provide: NG_VALIDATORS, // tslint:disable-next-line:no-forward-ref useExisting: forwardRef(() => PossiblePhoneValidatorDirective), multi: true, }, ], },] } ]; PossiblePhoneValidatorDirective.propDecorators = { possiblePhone: [{ type: Input }] }; export class PhoneValidatorDirective { constructor() { this.phone = "US"; } ngOnInit() { this.validator = PhoneValidators.isPhoneNumber(this.phone); } validate(c) { return this.validator(c); } } PhoneValidatorDirective.decorators = [ { type: Directive, args: [{ selector: "[phone][formControlName],[phone][formControl],[phone][ngModel]", providers: [ { provide: NG_VALIDATORS, // tslint:disable-next-line:no-forward-ref useExisting: forwardRef(() => PhoneValidatorDirective), multi: true, }, ], },] } ]; PhoneValidatorDirective.propDecorators = { phone: [{ type: Input }] }; export class CountryCodeValidatorDirective { ngOnInit() { this.validator = PhoneValidators.isValidRegionCode; } validate(c) { return this.validator(c); } } CountryCodeValidatorDirective.decorators = [ { type: Directive, args: [{ selector: "[countryCode][formControlName],[countryCode][formControl],[countryCode][ngModel]", providers: [ { provide: NG_VALIDATORS, // tslint:disable-next-line:no-forward-ref useExisting: forwardRef(() => CountryCodeValidatorDirective), multi: true, }, ], },] } ]; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvcGhvbmUvcGhvbmUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQ0wsYUFBYSxHQUtkLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBY3JELE1BQU0sT0FBTywrQkFBK0I7SUFaNUM7UUFhVyxrQkFBYSxHQUFHLElBQUksQ0FBQztJQWFoQyxDQUFDO0lBVEMsUUFBUTtRQUNOLElBQUksQ0FBQyxTQUFTLEdBQUcsZUFBZSxDQUFDLDBCQUEwQixDQUN6RCxJQUFJLENBQUMsYUFBYSxDQUNuQixDQUFDO0lBQ0osQ0FBQztJQUVELFFBQVEsQ0FBQyxDQUFrQjtRQUN6QixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0IsQ0FBQzs7O1lBekJGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQ04sd0ZBQXdGO2dCQUMxRixTQUFTLEVBQUU7b0JBQ1Q7d0JBQ0UsT0FBTyxFQUFFLGFBQWE7d0JBQ3RCLDBDQUEwQzt3QkFDMUMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQywrQkFBK0IsQ0FBQzt3QkFDOUQsS0FBSyxFQUFFLElBQUk7cUJBQ1o7aUJBQ0Y7YUFDRjs7OzRCQUVFLEtBQUs7O0FBMEJSLE1BQU0sT0FBTyx1QkFBdUI7SUFYcEM7UUFZVyxVQUFLLEdBQUcsSUFBSSxDQUFDO0lBV3hCLENBQUM7SUFQQyxRQUFRO1FBQ04sSUFBSSxDQUFDLFNBQVMsR0FBRyxlQUFlLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsUUFBUSxDQUFDLENBQWtCO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQixDQUFDOzs7WUF0QkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxnRUFBZ0U7Z0JBQzFFLFNBQVMsRUFBRTtvQkFDVDt3QkFDRSxPQUFPLEVBQUUsYUFBYTt3QkFDdEIsMENBQTBDO3dCQUMxQyxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHVCQUF1QixDQUFDO3dCQUN0RCxLQUFLLEVBQUUsSUFBSTtxQkFDWjtpQkFDRjthQUNGOzs7b0JBRUUsS0FBSzs7QUF5QlIsTUFBTSxPQUFPLDZCQUE2QjtJQUd4QyxRQUFRO1FBQ04sSUFBSSxDQUFDLFNBQVMsR0FBRyxlQUFlLENBQUMsaUJBQWlCLENBQUM7SUFDckQsQ0FBQztJQUVELFFBQVEsQ0FBQyxDQUFrQjtRQUN6QixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0IsQ0FBQzs7O1lBckJGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQ04sa0ZBQWtGO2dCQUNwRixTQUFTLEVBQUU7b0JBQ1Q7d0JBQ0UsT0FBTyxFQUFFLGFBQWE7d0JBQ3RCLDBDQUEwQzt3QkFDMUMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyw2QkFBNkIsQ0FBQzt3QkFDNUQsS0FBSyxFQUFFLElBQUk7cUJBQ1o7aUJBQ0Y7YUFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQsIGZvcndhcmRSZWYsIE9uSW5pdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge1xuICBOR19WQUxJREFUT1JTLFxuICBWYWxpZGF0b3IsXG4gIFZhbGlkYXRvckZuLFxuICBBYnN0cmFjdENvbnRyb2wsXG4gIFZhbGlkYXRpb25FcnJvcnMsXG59IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuXG5pbXBvcnQgeyBQaG9uZVZhbGlkYXRvcnMgfSBmcm9tIFwiLi9waG9uZS12YWxpZGF0b3JzXCI7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjpcbiAgICBcIltwb3NzaWJsZVBob25lXVtmb3JtQ29udHJvbE5hbWVdLFtwb3NzaWJsZVBob25lXVtmb3JtQ29udHJvbF0sW3Bvc3NpYmxlUGhvbmVdW25nTW9kZWxdXCIsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tZm9yd2FyZC1yZWZcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFBvc3NpYmxlUGhvbmVWYWxpZGF0b3JEaXJlY3RpdmUpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgUG9zc2libGVQaG9uZVZhbGlkYXRvckRpcmVjdGl2ZSBpbXBsZW1lbnRzIFZhbGlkYXRvciwgT25Jbml0IHtcbiAgQElucHV0KCkgcG9zc2libGVQaG9uZSA9IFwiVVNcIjtcblxuICBwcml2YXRlIHZhbGlkYXRvcjogVmFsaWRhdG9yRm47XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy52YWxpZGF0b3IgPSBQaG9uZVZhbGlkYXRvcnMuaXNQb3NzaWJsZU51bWJlcldpdGhSZWFzb24oXG4gICAgICB0aGlzLnBvc3NpYmxlUGhvbmVcbiAgICApO1xuICB9XG5cbiAgdmFsaWRhdGUoYzogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB7XG4gICAgcmV0dXJuIHRoaXMudmFsaWRhdG9yKGMpO1xuICB9XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogXCJbcGhvbmVdW2Zvcm1Db250cm9sTmFtZV0sW3Bob25lXVtmb3JtQ29udHJvbF0sW3Bob25lXVtuZ01vZGVsXVwiLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWZvcndhcmQtcmVmXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBQaG9uZVZhbGlkYXRvckRpcmVjdGl2ZSksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBQaG9uZVZhbGlkYXRvckRpcmVjdGl2ZSBpbXBsZW1lbnRzIFZhbGlkYXRvciwgT25Jbml0IHtcbiAgQElucHV0KCkgcGhvbmUgPSBcIlVTXCI7XG5cbiAgcHJpdmF0ZSB2YWxpZGF0b3I6IFZhbGlkYXRvckZuO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMudmFsaWRhdG9yID0gUGhvbmVWYWxpZGF0b3JzLmlzUGhvbmVOdW1iZXIodGhpcy5waG9uZSk7XG4gIH1cblxuICB2YWxpZGF0ZShjOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHtcbiAgICByZXR1cm4gdGhpcy52YWxpZGF0b3IoYyk7XG4gIH1cbn1cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOlxuICAgIFwiW2NvdW50cnlDb2RlXVtmb3JtQ29udHJvbE5hbWVdLFtjb3VudHJ5Q29kZV1bZm9ybUNvbnRyb2xdLFtjb3VudHJ5Q29kZV1bbmdNb2RlbF1cIixcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1mb3J3YXJkLXJlZlxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQ291bnRyeUNvZGVWYWxpZGF0b3JEaXJlY3RpdmUpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQ291bnRyeUNvZGVWYWxpZGF0b3JEaXJlY3RpdmUgaW1wbGVtZW50cyBWYWxpZGF0b3IsIE9uSW5pdCB7XG4gIHByaXZhdGUgdmFsaWRhdG9yOiBWYWxpZGF0b3JGbjtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnZhbGlkYXRvciA9IFBob25lVmFsaWRhdG9ycy5pc1ZhbGlkUmVnaW9uQ29kZTtcbiAgfVxuXG4gIHZhbGlkYXRlKGM6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMge1xuICAgIHJldHVybiB0aGlzLnZhbGlkYXRvcihjKTtcbiAgfVxufVxuIl19