wninputpattern
Version:
Simple directive for your input pattern.
38 lines • 4.1 kB
JavaScript
import { Directive, EventEmitter, HostListener, Input, Output, } from '@angular/core';
import * as i0 from "@angular/core";
export class SpecialDirective {
constructor() {
this.params = '';
this.validater = new EventEmitter();
//Accept ; , . () ' : - / + # @ & _ [ ] % *
this.regEx = new RegExp(/[!${}^<>~=|"?\\]/g);
}
onKeyPress(event) {
const e = event;
if (e.key === 'Tab' || e.key === 'TAB') {
return;
}
const ch = String.fromCharCode(e.keyCode);
const regEx = new RegExp(this.regEx);
if (regEx.test(ch)) {
e.preventDefault();
}
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: SpecialDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.10", type: SpecialDirective, selector: "[Special]", inputs: { params: ["specialChar", "params"] }, outputs: { validater: "validater" }, host: { listeners: { "keypress": "onKeyPress($event)" } }, ngImport: i0 }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: SpecialDirective, decorators: [{
type: Directive,
args: [{
selector: '[Special]',
}]
}], ctorParameters: function () { return []; }, propDecorators: { params: [{
type: Input,
args: ['specialChar']
}], validater: [{
type: Output
}], onKeyPress: [{
type: HostListener,
args: ['keypress', ['$event']]
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BlY2lhbC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy93bmlucHV0cGF0dGVybi9zcmMvbGliL2RpcmVjdGl2ZXMvc3BlY2lhbC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7O0FBS3ZCLE1BQU0sT0FBTyxnQkFBZ0I7SUFDM0I7UUFFc0IsV0FBTSxHQUFXLEVBQUUsQ0FBQztRQUNoQyxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN6QywyQ0FBMkM7UUFDM0MsVUFBSyxHQUFHLElBQUksTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFMekIsQ0FBQztJQU9zQixVQUFVLENBQUMsS0FBVTtRQUN6RCxNQUFNLENBQUMsR0FBa0IsS0FBSyxDQUFDO1FBQy9CLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxLQUFLLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxLQUFLLEVBQUU7WUFDdEMsT0FBTztTQUNSO1FBRUQsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFMUMsTUFBTSxLQUFLLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JDLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUNsQixDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7U0FDcEI7SUFDSCxDQUFDOytHQXBCVSxnQkFBZ0I7bUdBQWhCLGdCQUFnQjs7NEZBQWhCLGdCQUFnQjtrQkFINUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsV0FBVztpQkFDdEI7MEVBSXVCLE1BQU07c0JBQTNCLEtBQUs7dUJBQUMsYUFBYTtnQkFDVixTQUFTO3NCQUFsQixNQUFNO2dCQUkrQixVQUFVO3NCQUEvQyxZQUFZO3VCQUFDLFVBQVUsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERpcmVjdGl2ZSxcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbU3BlY2lhbF0nLFxufSlcbmV4cG9ydCBjbGFzcyBTcGVjaWFsRGlyZWN0aXZlIHtcbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIEBJbnB1dCgnc3BlY2lhbENoYXInKSBwYXJhbXM6IHN0cmluZyA9ICcnO1xuICBAT3V0cHV0KCkgdmFsaWRhdGVyID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAvL0FjY2VwdCA7ICwgLiAoKSAnIDogLSAvICsgIyBAICYgXyBbIF0gJSAqXG4gIHJlZ0V4ID0gbmV3IFJlZ0V4cCgvWyEke31ePD5+PXxcIj9cXFxcXS9nKTtcblxuICBASG9zdExpc3RlbmVyKCdrZXlwcmVzcycsIFsnJGV2ZW50J10pIG9uS2V5UHJlc3MoZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IGUgPSA8S2V5Ym9hcmRFdmVudD5ldmVudDtcbiAgICBpZiAoZS5rZXkgPT09ICdUYWInIHx8IGUua2V5ID09PSAnVEFCJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGNoID0gU3RyaW5nLmZyb21DaGFyQ29kZShlLmtleUNvZGUpO1xuXG4gICAgY29uc3QgcmVnRXggPSBuZXcgUmVnRXhwKHRoaXMucmVnRXgpO1xuICAgIGlmIChyZWdFeC50ZXN0KGNoKSkge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfVxufVxuIl19