phone-check-egypt
Version:
its a directive that gibe validation on mobile number using regex format .. # directive requirements :
83 lines (82 loc) • 8.48 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
import { Directive, ElementRef, HostListener, Input } from "@angular/core";
import { NgForm } from "@angular/forms";
export class OnlyNumberDirective {
/**
* @param {?} el
*/
constructor(el) {
this.el = el;
//this is regex for egypt Moblie number example 010/011/012/015-11111111
this.regex = /^[0]{1}[1]{1}[1|2|5|0]{1}[0-9]{8}$/g;
this.specialKeys = ["Backspace", "Tab", "End", "Home"];
if (this.el.nativeElement.required) {
this.el.nativeElement.insertAdjacentHTML("afterend", '\n<div class="invalid-feedback">* Please Enter valid phone number.</div>');
}
}
/**
* @param {?} event
* @return {?}
*/
onKeyDown(event) {
if (this.specialKeys.indexOf(event.key) !== -1) {
return;
}
/** @type {?} */
let current = this.el.nativeElement.value;
/** @type {?} */
let next = current.concat(event.key);
if (next != "" || next != undefined || next != null) {
if (next && next.length < this.el.nativeElement.max) {
this.el.nativeElement.classList.remove("is-invalid");
}
else if (next && next.length == this.el.nativeElement.max) {
if (this.regex.test(next) == true) {
this.el.nativeElement.classList.remove("is-invalid");
}
else {
this.el.nativeElement.classList.add("is-invalid");
this.formData.form.controls[this.el.nativeElement.name].setErrors({
incorrect: true
});
}
}
else if (next && next.length > this.el.nativeElement.max) {
event.preventDefault();
}
}
else {
this.el.nativeElement.classList.add("is-invalid");
this.formData.form.controls[this.el.nativeElement.name].setErrors({
incorrect: true
});
}
}
}
OnlyNumberDirective.decorators = [
{ type: Directive, args: [{
selector: "[OnlyNumber]"
},] },
];
/** @nocollapse */
OnlyNumberDirective.ctorParameters = () => [
{ type: ElementRef }
];
OnlyNumberDirective.propDecorators = {
formData: [{ type: Input, args: ["formData",] }],
onKeyDown: [{ type: HostListener, args: ["keydown", ["$event"],] }]
};
if (false) {
/** @type {?} */
OnlyNumberDirective.prototype.formData;
/** @type {?} */
OnlyNumberDirective.prototype.regex;
/** @type {?} */
OnlyNumberDirective.prototype.specialKeys;
/** @type {?} */
OnlyNumberDirective.prototype.el;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25seS1udW1iZXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vcGhvbmUtY2hlY2stZWd5cHQvIiwic291cmNlcyI6WyJsaWIvb25seS1udW1iZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUl4QyxNQUFNOzs7O0lBUUosWUFBb0IsRUFBYztRQUFkLE9BQUUsR0FBRixFQUFFLENBQVk7O3FCQUoxQixxQ0FBcUM7MkJBRVIsQ0FBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUM7UUFHdEUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUNuQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FDdEMsVUFBVSxFQUNWLDBFQUEwRSxDQUMzRSxDQUFDO1NBQ0g7S0FDRjs7Ozs7SUFHRCxTQUFTLENBQUMsS0FBb0I7UUFDNUIsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMvQyxNQUFNLENBQUM7U0FDUjs7UUFDRCxJQUFJLE9BQU8sR0FBVyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7O1FBQ2xELElBQUksSUFBSSxHQUFXLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRTdDLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxFQUFFLElBQUksSUFBSSxJQUFJLFNBQVMsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNwRCxFQUFFLENBQUMsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUNwRCxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQ3REO1lBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQzVELEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUM7b0JBQ2xDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7aUJBQ3REO2dCQUFDLElBQUksQ0FBQyxDQUFDO29CQUNOLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7b0JBQ2xELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUM7d0JBQ2hFLFNBQVMsRUFBRSxJQUFJO3FCQUNoQixDQUFDLENBQUM7aUJBQ0o7YUFDRjtZQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUMzRCxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7YUFDeEI7U0FDRjtRQUFDLElBQUksQ0FBQyxDQUFDO1lBQ04sSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUNsRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDO2dCQUNoRSxTQUFTLEVBQUUsSUFBSTthQUNoQixDQUFDLENBQUM7U0FDSjtLQUNGOzs7WUFqREYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxjQUFjO2FBQ3pCOzs7O1lBSm1CLFVBQVU7Ozt1QkFNM0IsS0FBSyxTQUFDLFVBQVU7d0JBZ0JoQixZQUFZLFNBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIElucHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTmdGb3JtIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiBcIltPbmx5TnVtYmVyXVwiXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBPbmx5TnVtYmVyRGlyZWN0aXZlIHtcclxuICBASW5wdXQoXCJmb3JtRGF0YVwiKVxyXG4gIGZvcm1EYXRhOiBOZ0Zvcm07XHJcbiAgLy90aGlzIGlzIHJlZ2V4IGZvciAgZWd5cHQgTW9ibGllIG51bWJlciBleGFtcGxlIDAxMC8wMTEvMDEyLzAxNS0xMTExMTExMVxyXG4gIHJlZ2V4ID0gL15bMF17MX1bMV17MX1bMXwyfDV8MF17MX1bMC05XXs4fSQvZztcclxuXHJcbiAgcHJpdmF0ZSBzcGVjaWFsS2V5czogQXJyYXk8c3RyaW5nPiA9IFtcIkJhY2tzcGFjZVwiLCBcIlRhYlwiLCBcIkVuZFwiLCBcIkhvbWVcIl07XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWYpIHtcclxuICAgIGlmICh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucmVxdWlyZWQpIHtcclxuICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50Lmluc2VydEFkamFjZW50SFRNTChcclxuICAgICAgICBcImFmdGVyZW5kXCIsXHJcbiAgICAgICAgJ1xcbjxkaXYgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCI+KiBQbGVhc2UgRW50ZXIgdmFsaWQgcGhvbmUgbnVtYmVyLjwvZGl2PidcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoXCJrZXlkb3duXCIsIFtcIiRldmVudFwiXSlcclxuICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIGlmICh0aGlzLnNwZWNpYWxLZXlzLmluZGV4T2YoZXZlbnQua2V5KSAhPT0gLTEpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgbGV0IGN1cnJlbnQ6IHN0cmluZyA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC52YWx1ZTtcclxuICAgIGxldCBuZXh0OiBzdHJpbmcgPSBjdXJyZW50LmNvbmNhdChldmVudC5rZXkpO1xyXG5cclxuICAgIGlmIChuZXh0ICE9IFwiXCIgfHwgbmV4dCAhPSB1bmRlZmluZWQgfHwgbmV4dCAhPSBudWxsKSB7XHJcbiAgICAgIGlmIChuZXh0ICYmIG5leHQubGVuZ3RoIDwgdGhpcy5lbC5uYXRpdmVFbGVtZW50Lm1heCkge1xyXG4gICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFwiaXMtaW52YWxpZFwiKTtcclxuICAgICAgfSBlbHNlIGlmIChuZXh0ICYmIG5leHQubGVuZ3RoID09IHRoaXMuZWwubmF0aXZlRWxlbWVudC5tYXgpIHtcclxuICAgICAgICBpZiAodGhpcy5yZWdleC50ZXN0KG5leHQpID09IHRydWUpIHtcclxuICAgICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFwiaXMtaW52YWxpZFwiKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoXCJpcy1pbnZhbGlkXCIpO1xyXG4gICAgICAgICAgdGhpcy5mb3JtRGF0YS5mb3JtLmNvbnRyb2xzW3RoaXMuZWwubmF0aXZlRWxlbWVudC5uYW1lXS5zZXRFcnJvcnMoe1xyXG4gICAgICAgICAgICBpbmNvcnJlY3Q6IHRydWVcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmIChuZXh0ICYmIG5leHQubGVuZ3RoID4gdGhpcy5lbC5uYXRpdmVFbGVtZW50Lm1heCkge1xyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKFwiaXMtaW52YWxpZFwiKTtcclxuICAgICAgdGhpcy5mb3JtRGF0YS5mb3JtLmNvbnRyb2xzW3RoaXMuZWwubmF0aXZlRWxlbWVudC5uYW1lXS5zZXRFcnJvcnMoe1xyXG4gICAgICAgIGluY29ycmVjdDogdHJ1ZVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19