@vraj.patel/viitorcloud-ng-utility-library-test-9
Version:
The **ViitorCloud NG Utility Library** developed with the Angular 16 framework, stands out for its exceptional adaptability and reusability within Angular projects. This comprehensive collection encompasses utility services, directives, and components str
61 lines • 7.9 kB
JavaScript
import { Directive, HostListener, Input } from "@angular/core";
import { REGEX_CONSTANTS, RegexType } from "../constants/app.constant";
import * as i0 from "@angular/core";
export class VcAllowNumberOnlyDirective {
/* The `@Input() set regexType(type: string)` is a setter method for the `regexType` input property.
It allows the value of `regexType` to be set from the outside. */
set regexType(type) {
switch (type) {
case RegexType.decimal:
this.regex = REGEX_CONSTANTS.DECIMAL_REGEX;
break;
case RegexType.integer:
this.regex = REGEX_CONSTANTS.INTEGER_REGEX;
break;
default:
this.regex = REGEX_CONSTANTS.DECIMAL_REGEX;
break;
}
}
/**
* The constructor function takes an ElementRef parameter and assigns it to the private el property.
* @param {ElementRef} el - The `el` parameter is of type `ElementRef`, which is a wrapper around a
* native element inside a View. It can be used to access properties and methods of the native
* element.
*/
constructor(el) {
this.el = el;
/* The `@Input() vcAllowNumberOnly = false;` is a decorator that allows the `vcAllowNumberOnly`
property to be set from the outside. It is initialized with a default value of `false`. */
this.vcAllowNumberOnly = false;
}
/* The `@HostListener('keypress', ['']) keyPress(event: KeyboardEvent): void` is a decorator that
listens for the 'keypress' event on the host element and triggers the `keyPress` method when the
event occurs. */
keyPress(event) {
const val = this.el.nativeElement.value + event.key;
if (this.vcAllowNumberOnly) {
if (!this.regex.test(val)) {
event.preventDefault();
event.stopPropagation();
}
}
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: VcAllowNumberOnlyDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.0", type: VcAllowNumberOnlyDirective, isStandalone: true, selector: "[vcAllowNumberOnly]", inputs: { vcAllowNumberOnly: "vcAllowNumberOnly", regexType: "regexType" }, host: { listeners: { "keypress": "keyPress($event)" } }, ngImport: i0 }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: VcAllowNumberOnlyDirective, decorators: [{
type: Directive,
args: [{
selector: '[vcAllowNumberOnly]',
standalone: true
}]
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { vcAllowNumberOnly: [{
type: Input
}], regexType: [{
type: Input
}], keyPress: [{
type: HostListener,
args: ['keypress', ['$event']]
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmMtYWxsb3ctbnVtYmVyLW9ubHkuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmlpdG9yY2xvdWQtbmctdXRpbGl0eS1saWJyYXJ5L3NyYy9saWIvZGlyZWN0aXZlcy92Yy1hbGxvdy1udW1iZXItb25seS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7O0FBTXZFLE1BQU0sT0FBTywwQkFBMEI7SUFPbkM7cUVBQ2lFO0lBQ2pFLElBQWEsU0FBUyxDQUFDLElBQVk7UUFDL0IsUUFBUSxJQUFJLEVBQUU7WUFDVixLQUFLLFNBQVMsQ0FBQyxPQUFPO2dCQUNsQixJQUFJLENBQUMsS0FBSyxHQUFHLGVBQWUsQ0FBQyxhQUFhLENBQUM7Z0JBQzNDLE1BQU07WUFDVixLQUFLLFNBQVMsQ0FBQyxPQUFPO2dCQUNsQixJQUFJLENBQUMsS0FBSyxHQUFHLGVBQWUsQ0FBQyxhQUFhLENBQUM7Z0JBQzNDLE1BQU07WUFDVjtnQkFDSSxJQUFJLENBQUMsS0FBSyxHQUFHLGVBQWUsQ0FBQyxhQUFhLENBQUM7Z0JBQzNDLE1BQU07U0FDYjtJQUNMLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFlBQ1ksRUFBYztRQUFkLE9BQUUsR0FBRixFQUFFLENBQVk7UUE1QjFCO2tHQUMwRjtRQUNqRixzQkFBaUIsR0FBRyxLQUFLLENBQUM7SUEyQi9CLENBQUM7SUFFTDs7b0JBRWdCO0lBQ3NCLFFBQVEsQ0FBQyxLQUFvQjtRQUMvRCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQztRQUNwRCxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ3ZCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDdkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO2FBQzNCO1NBQ0o7SUFDTCxDQUFDOzhHQTVDUSwwQkFBMEI7a0dBQTFCLDBCQUEwQjs7MkZBQTFCLDBCQUEwQjtrQkFKdEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUscUJBQXFCO29CQUMvQixVQUFVLEVBQUUsSUFBSTtpQkFDbkI7aUdBS1ksaUJBQWlCO3NCQUF6QixLQUFLO2dCQUtPLFNBQVM7c0JBQXJCLEtBQUs7Z0JBMkJnQyxRQUFRO3NCQUE3QyxZQUFZO3VCQUFDLFVBQVUsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBJbnB1dCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFJFR0VYX0NPTlNUQU5UUywgUmVnZXhUeXBlIH0gZnJvbSBcIi4uL2NvbnN0YW50cy9hcHAuY29uc3RhbnRcIjtcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gICAgc2VsZWN0b3I6ICdbdmNBbGxvd051bWJlck9ubHldJyxcclxuICAgIHN0YW5kYWxvbmU6IHRydWVcclxufSlcclxuZXhwb3J0IGNsYXNzIFZjQWxsb3dOdW1iZXJPbmx5RGlyZWN0aXZlIHtcclxuXHJcbiAgICAvKiBUaGUgYEBJbnB1dCgpIHZjQWxsb3dOdW1iZXJPbmx5ID0gZmFsc2U7YCBpcyBhIGRlY29yYXRvciB0aGF0IGFsbG93cyB0aGUgYHZjQWxsb3dOdW1iZXJPbmx5YFxyXG4gICAgcHJvcGVydHkgdG8gYmUgc2V0IGZyb20gdGhlIG91dHNpZGUuIEl0IGlzIGluaXRpYWxpemVkIHdpdGggYSBkZWZhdWx0IHZhbHVlIG9mIGBmYWxzZWAuICovXHJcbiAgICBASW5wdXQoKSB2Y0FsbG93TnVtYmVyT25seSA9IGZhbHNlO1xyXG4gICAgcmVnZXghOiBSZWdFeHA7XHJcblxyXG4gICAgLyogVGhlIGBASW5wdXQoKSBzZXQgcmVnZXhUeXBlKHR5cGU6IHN0cmluZylgIGlzIGEgc2V0dGVyIG1ldGhvZCBmb3IgdGhlIGByZWdleFR5cGVgIGlucHV0IHByb3BlcnR5LlxyXG4gICAgSXQgYWxsb3dzIHRoZSB2YWx1ZSBvZiBgcmVnZXhUeXBlYCB0byBiZSBzZXQgZnJvbSB0aGUgb3V0c2lkZS4gKi9cclxuICAgIEBJbnB1dCgpIHNldCByZWdleFR5cGUodHlwZTogc3RyaW5nKSB7XHJcbiAgICAgICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgUmVnZXhUeXBlLmRlY2ltYWw6XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlZ2V4ID0gUkVHRVhfQ09OU1RBTlRTLkRFQ0lNQUxfUkVHRVg7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBSZWdleFR5cGUuaW50ZWdlcjpcclxuICAgICAgICAgICAgICAgIHRoaXMucmVnZXggPSBSRUdFWF9DT05TVEFOVFMuSU5URUdFUl9SRUdFWDtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgdGhpcy5yZWdleCA9IFJFR0VYX0NPTlNUQU5UUy5ERUNJTUFMX1JFR0VYO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIGNvbnN0cnVjdG9yIGZ1bmN0aW9uIHRha2VzIGFuIEVsZW1lbnRSZWYgcGFyYW1ldGVyIGFuZCBhc3NpZ25zIGl0IHRvIHRoZSBwcml2YXRlIGVsIHByb3BlcnR5LlxyXG4gICAgICogQHBhcmFtIHtFbGVtZW50UmVmfSBlbCAtIFRoZSBgZWxgIHBhcmFtZXRlciBpcyBvZiB0eXBlIGBFbGVtZW50UmVmYCwgd2hpY2ggaXMgYSB3cmFwcGVyIGFyb3VuZCBhXHJcbiAgICAgKiBuYXRpdmUgZWxlbWVudCBpbnNpZGUgYSBWaWV3LiBJdCBjYW4gYmUgdXNlZCB0byBhY2Nlc3MgcHJvcGVydGllcyBhbmQgbWV0aG9kcyBvZiB0aGUgbmF0aXZlXHJcbiAgICAgKiBlbGVtZW50LlxyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIGVsOiBFbGVtZW50UmVmXHJcbiAgICApIHsgfVxyXG5cclxuICAgIC8qIFRoZSBgQEhvc3RMaXN0ZW5lcigna2V5cHJlc3MnLCBbJyddKSBrZXlQcmVzcyhldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWRgIGlzIGEgZGVjb3JhdG9yIHRoYXRcclxuICAgIGxpc3RlbnMgZm9yIHRoZSAna2V5cHJlc3MnIGV2ZW50IG9uIHRoZSBob3N0IGVsZW1lbnQgYW5kIHRyaWdnZXJzIHRoZSBga2V5UHJlc3NgIG1ldGhvZCB3aGVuIHRoZVxyXG4gICAgZXZlbnQgb2NjdXJzLiAqL1xyXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5cHJlc3MnLCBbJyRldmVudCddKSBrZXlQcmVzcyhldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IHZhbCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC52YWx1ZSArIGV2ZW50LmtleTtcclxuICAgICAgICBpZiAodGhpcy52Y0FsbG93TnVtYmVyT25seSkge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMucmVnZXgudGVzdCh2YWwpKSB7XHJcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG59XHJcbiJdfQ==