UNPKG

mss-engine-forms

Version:

A simple typehead library developed by MSS development team to be used for dynamic forms

64 lines 9.17 kB
import { Directive, HostListener, Input } from '@angular/core'; import * as i0 from "@angular/core"; import * as i1 from "@angular/forms"; export class ReplaceCommaByDotDirective { constructor(el, control) { this.el = el; this.control = control; this.replaceCommaByDot = false; this.regex = new RegExp(/^\d+[.,]?\d{0,3}$/g); } onKeyDown(event) { let e = event; if (this.replaceCommaByDot) { if (this.control?.value?.indexOf('.') != -1 && (e.keyCode == 188 || e.keyCode == 110)) { e.preventDefault(); // return } if ([46, 8, 9, 27, 13, 110, 190].indexOf(e.keyCode) !== -1 || // Allow: Ctrl+A (e.keyCode == 65 && e.ctrlKey === true) || // Allow: Ctrl+C (e.keyCode == 67 && e.ctrlKey === true) || // Allow: Ctrl+X (e.keyCode == 88 && e.ctrlKey === true) || // Allow: home, end, left, right (e.keyCode >= 35 && e.keyCode <= 39) || (e.keyCode >= 188)) { // let it happen, don't do anything return; } const current = this.el.nativeElement.value; const position = this.el.nativeElement.selectionStart; const next = [current.slice(0, position), event.key == 'Decimal' ? '.' : event.key, current.slice(position)].join(''); if (next && !String(next).match(this.regex)) { event.preventDefault(); } // Ensure that it is a number and stop the keypress if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) { e.preventDefault(); } } } keyup() { if (this.replaceCommaByDot && this.control.value) this.control?.control?.setValue(this.control.value.replace(/,/g, '.')); } } ReplaceCommaByDotDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ReplaceCommaByDotDirective, deps: [{ token: i0.ElementRef }, { token: i1.NgControl }], target: i0.ɵɵFactoryTarget.Directive }); ReplaceCommaByDotDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: ReplaceCommaByDotDirective, selector: "[replaceCommaByDot]", inputs: { replaceCommaByDot: "replaceCommaByDot" }, host: { listeners: { "keydown": "onKeyDown($event)", "input": "keyup($event)" } }, ngImport: i0 }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ReplaceCommaByDotDirective, decorators: [{ type: Directive, args: [{ selector: '[replaceCommaByDot]', }] }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.NgControl }]; }, propDecorators: { replaceCommaByDot: [{ type: Input }], onKeyDown: [{ type: HostListener, args: ['keydown', ['$event']] }], keyup: [{ type: HostListener, args: ['input', ['$event']] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWEtcmVwbGFjZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tc3MtZm9ybXMvc3JjL2xpYi9faGVscGVycy9jb21tYS1yZXBsYWNlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUE0QixZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDOzs7QUFNakcsTUFBTSxPQUFPLDBCQUEwQjtJQUlyQyxZQUFvQixFQUFjLEVBQVUsT0FBa0I7UUFBMUMsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUFVLFlBQU8sR0FBUCxPQUFPLENBQVc7UUFGckQsc0JBQWlCLEdBQVksS0FBSyxDQUFDO1FBQ3BDLFVBQUssR0FBVyxJQUFJLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQ1MsQ0FBQztJQUU5QixTQUFTLENBQUMsS0FBVTtRQUN2RCxJQUFJLENBQUMsR0FBa0IsS0FBSyxDQUFDO1FBQzdCLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQzFCLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLE9BQU8sSUFBSSxHQUFHLENBQUMsRUFBRTtnQkFDckYsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUNuQixTQUFTO2FBQ1Y7WUFDRCxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3hELGdCQUFnQjtnQkFDaEIsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQztnQkFDdkMsZ0JBQWdCO2dCQUNoQixDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLEtBQUssSUFBSSxDQUFDO2dCQUN2QyxnQkFBZ0I7Z0JBQ2hCLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sS0FBSyxJQUFJLENBQUM7Z0JBQ3ZDLGdDQUFnQztnQkFDaEMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQztnQkFFcEMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLEdBQUcsQ0FBQyxFQUNsQjtnQkFDQSxtQ0FBbUM7Z0JBQ25DLE9BQU87YUFDUjtZQUVELE1BQU0sT0FBTyxHQUFXLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQztZQUNwRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUM7WUFDdEQsTUFBTSxJQUFJLEdBQVcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxLQUFLLENBQUMsR0FBRyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDOUgsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDM0MsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO2FBQ3hCO1lBRUQsbURBQW1EO1lBQ25ELElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMsRUFBRTtnQkFDN0YsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO2FBQ3BCO1NBRUY7SUFDSCxDQUFDO0lBR0QsS0FBSztRQUNILElBQUksSUFBSSxDQUFDLGlCQUFpQixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSztZQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBVyxDQUFDLENBQUM7SUFDckksQ0FBQzs7d0hBL0NVLDBCQUEwQjs0R0FBMUIsMEJBQTBCOzRGQUExQiwwQkFBMEI7a0JBSHRDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHFCQUFxQjtpQkFDaEM7eUhBR1UsaUJBQWlCO3NCQUF6QixLQUFLO2dCQUkrQixTQUFTO3NCQUE3QyxZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkF1Q25DLEtBQUs7c0JBREosWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ0NvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tyZXBsYWNlQ29tbWFCeURvdF0nLFxufSlcbmV4cG9ydCBjbGFzcyBSZXBsYWNlQ29tbWFCeURvdERpcmVjdGl2ZSB7XG5cbiAgQElucHV0KCkgcmVwbGFjZUNvbW1hQnlEb3Q6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSByZWdleDogUmVnRXhwID0gbmV3IFJlZ0V4cCgvXlxcZCtbLixdP1xcZHswLDN9JC9nKTtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbDogRWxlbWVudFJlZiwgcHJpdmF0ZSBjb250cm9sOiBOZ0NvbnRyb2wpIHsgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKSBvbktleURvd24oZXZlbnQ6IGFueSkge1xuICAgIGxldCBlID0gPEtleWJvYXJkRXZlbnQ+ZXZlbnQ7XG4gICAgaWYgKHRoaXMucmVwbGFjZUNvbW1hQnlEb3QpIHtcbiAgICAgIGlmICh0aGlzLmNvbnRyb2w/LnZhbHVlPy5pbmRleE9mKCcuJykgIT0gLTEgJiYgKGUua2V5Q29kZSA9PSAxODggfHwgZS5rZXlDb2RlID09IDExMCkpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAvLyByZXR1cm5cbiAgICAgIH1cbiAgICAgIGlmIChbNDYsIDgsIDksIDI3LCAxMywgMTEwLCAxOTBdLmluZGV4T2YoZS5rZXlDb2RlKSAhPT0gLTEgfHxcbiAgICAgICAgLy8gQWxsb3c6IEN0cmwrQVxuICAgICAgICAoZS5rZXlDb2RlID09IDY1ICYmIGUuY3RybEtleSA9PT0gdHJ1ZSkgfHxcbiAgICAgICAgLy8gQWxsb3c6IEN0cmwrQ1xuICAgICAgICAoZS5rZXlDb2RlID09IDY3ICYmIGUuY3RybEtleSA9PT0gdHJ1ZSkgfHxcbiAgICAgICAgLy8gQWxsb3c6IEN0cmwrWFxuICAgICAgICAoZS5rZXlDb2RlID09IDg4ICYmIGUuY3RybEtleSA9PT0gdHJ1ZSkgfHxcbiAgICAgICAgLy8gQWxsb3c6IGhvbWUsIGVuZCwgbGVmdCwgcmlnaHRcbiAgICAgICAgKGUua2V5Q29kZSA+PSAzNSAmJiBlLmtleUNvZGUgPD0gMzkpIHx8XG5cbiAgICAgICAgKGUua2V5Q29kZSA+PSAxODgpXG4gICAgICApIHtcbiAgICAgICAgLy8gbGV0IGl0IGhhcHBlbiwgZG9uJ3QgZG8gYW55dGhpbmdcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjdXJyZW50OiBzdHJpbmcgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQudmFsdWU7XG4gICAgICBjb25zdCBwb3NpdGlvbiA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydDtcbiAgICAgIGNvbnN0IG5leHQ6IHN0cmluZyA9IFtjdXJyZW50LnNsaWNlKDAsIHBvc2l0aW9uKSwgZXZlbnQua2V5ID09ICdEZWNpbWFsJyA/ICcuJyA6IGV2ZW50LmtleSwgY3VycmVudC5zbGljZShwb3NpdGlvbildLmpvaW4oJycpO1xuICAgICAgaWYgKG5leHQgJiYgIVN0cmluZyhuZXh0KS5tYXRjaCh0aGlzLnJlZ2V4KSkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgfVxuXG4gICAgICAvLyBFbnN1cmUgdGhhdCBpdCBpcyBhIG51bWJlciBhbmQgc3RvcCB0aGUga2V5cHJlc3NcbiAgICAgIGlmICgoZS5zaGlmdEtleSB8fCAoZS5rZXlDb2RlIDwgNDggfHwgZS5rZXlDb2RlID4gNTcpKSAmJiAoZS5rZXlDb2RlIDwgOTYgfHwgZS5rZXlDb2RlID4gMTA1KSkge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB9XG5cbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdpbnB1dCcsIFsnJGV2ZW50J10pXG4gIGtleXVwKCkge1xuICAgIGlmICh0aGlzLnJlcGxhY2VDb21tYUJ5RG90ICYmIHRoaXMuY29udHJvbC52YWx1ZSkgdGhpcy5jb250cm9sPy5jb250cm9sPy5zZXRWYWx1ZSh0aGlzLmNvbnRyb2wudmFsdWUucmVwbGFjZSgvLC9nLCAnLicpIGFzIG51bWJlcik7XG4gIH1cblxufSJdfQ==