UNPKG

@asoftwareworld/form-builder

Version:

ASW Form Builder helps you with rapid development and designed web forms which includes several controls. The key feature of Form Builder is to make your content attractive and effective. We can customize our control at run time and preview the same befor

89 lines 10 kB
/** * @license * Copyright ASW (A Software World) All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file */ import { Directive, HostListener, Input } from '@angular/core'; import * as i0 from "@angular/core"; export class AswNumberDirective { el; // tslint:disable-next-line:no-input-rename decimals = 0; // tslint:disable-next-line:no-input-rename negative = 0; checkAllowNegative(value) { if (this.decimals <= 0) { return String(value).match(new RegExp(/^-?\d+$/)); } else { const regExpString = '^-?\\s*((\\d+(\\.\\d{0,' + this.decimals + '})?)|((\\d*(\\.\\d{1,' + this.decimals + '}))))\\s*$'; return String(value).match(new RegExp(regExpString)); } } check(value) { if (this.decimals <= 0) { return String(value).match(new RegExp(/^\d+$/)); } else { const regExpString = '^\\s*((\\d+(\\.\\d{0,' + this.decimals + '})?)|((\\d*(\\.\\d{1,' + this.decimals + '}))))\\s*$'; return String(value).match(new RegExp(regExpString)); } } run(oldValue) { setTimeout(() => { const currentValue = this.el.nativeElement.value; const allowNegative = this.negative > 0 ? true : false; if (allowNegative) { if (!['', '-'].includes(currentValue) && !this.checkAllowNegative(currentValue)) { this.el.nativeElement.value = oldValue; } } else { if (currentValue !== '' && !this.check(currentValue)) { this.el.nativeElement.value = oldValue; } } }); } constructor(el) { this.el = el; } onKeyDown(event) { this.run(this.el.nativeElement.value); } onPaste(event) { this.run(this.el.nativeElement.value); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: AswNumberDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.11", type: AswNumberDirective, selector: "[aswNumbersOnly]", inputs: { decimals: "decimals", negative: "negative" }, host: { listeners: { "keydown": "onKeyDown($event)", "paste": "onPaste($event)" } }, ngImport: i0 }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: AswNumberDirective, decorators: [{ type: Directive, args: [{ selector: '[aswNumbersOnly]' }] }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { decimals: [{ type: Input, args: ['decimals'] }], negative: [{ type: Input, args: ['negative'] }], onKeyDown: [{ type: HostListener, args: ['keydown', ['$event']] }], onPaste: [{ type: HostListener, args: ['paste', ['$event']] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVycy1vbmx5LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2Zvcm0tY29udHJvbC9udW1iZXIvbnVtYmVycy1vbmx5LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBSzNFLE1BQU0sT0FBTyxrQkFBa0I7SUFzRFA7SUFyRHBCLDJDQUEyQztJQUN4QixRQUFRLEdBQUcsQ0FBQyxDQUFDO0lBQ2hDLDJDQUEyQztJQUN4QixRQUFRLEdBQUcsQ0FBQyxDQUFDO0lBRXhCLGtCQUFrQixDQUFDLEtBQWE7UUFDcEMsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3JCLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ3RELENBQUM7YUFBTSxDQUFDO1lBQ0osTUFBTSxZQUFZLEdBQ2QseUJBQXlCO2dCQUN6QixJQUFJLENBQUMsUUFBUTtnQkFDYix1QkFBdUI7Z0JBQ3ZCLElBQUksQ0FBQyxRQUFRO2dCQUNiLFlBQVksQ0FBQztZQUNqQixPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztRQUN6RCxDQUFDO0lBQ0wsQ0FBQztJQUVPLEtBQUssQ0FBQyxLQUFhO1FBQ3ZCLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNyQixPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUNwRCxDQUFDO2FBQU0sQ0FBQztZQUNKLE1BQU0sWUFBWSxHQUNkLHVCQUF1QjtnQkFDdkIsSUFBSSxDQUFDLFFBQVE7Z0JBQ2IsdUJBQXVCO2dCQUN2QixJQUFJLENBQUMsUUFBUTtnQkFDYixZQUFZLENBQUM7WUFDakIsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7UUFDekQsQ0FBQztJQUNMLENBQUM7SUFFTyxHQUFHLENBQUMsUUFBYTtRQUNyQixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ1osTUFBTSxZQUFZLEdBQVcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDO1lBQ3pELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztZQUV2RCxJQUFJLGFBQWEsRUFBRSxDQUFDO2dCQUNoQixJQUNJLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQztvQkFDakMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxDQUFDLEVBQ3hDLENBQUM7b0JBQ0MsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQztnQkFDM0MsQ0FBQztZQUNMLENBQUM7aUJBQU0sQ0FBQztnQkFDSixJQUFJLFlBQVksS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7b0JBQ25ELElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUM7Z0JBQzNDLENBQUM7WUFDTCxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsWUFBb0IsRUFBYztRQUFkLE9BQUUsR0FBRixFQUFFLENBQVk7SUFBSSxDQUFDO0lBR3ZDLFNBQVMsQ0FBQyxLQUFvQjtRQUMxQixJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFHRCxPQUFPLENBQUMsS0FBcUI7UUFDekIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQyxDQUFDO3dHQWhFUSxrQkFBa0I7NEZBQWxCLGtCQUFrQjs7NEZBQWxCLGtCQUFrQjtrQkFIOUIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsa0JBQWtCO2lCQUMvQjsrRUFHc0IsUUFBUTtzQkFBMUIsS0FBSzt1QkFBQyxVQUFVO2dCQUVFLFFBQVE7c0JBQTFCLEtBQUs7dUJBQUMsVUFBVTtnQkFxRGpCLFNBQVM7c0JBRFIsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBTW5DLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQGxpY2Vuc2VcclxuICogQ29weXJpZ2h0IEFTVyAoQSBTb2Z0d2FyZSBXb3JsZCkgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cclxuICpcclxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcclxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZVxyXG4gKi9cclxuXHJcbmltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgICBzZWxlY3RvcjogJ1thc3dOdW1iZXJzT25seV0nXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBc3dOdW1iZXJEaXJlY3RpdmUge1xyXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWlucHV0LXJlbmFtZVxyXG4gICAgQElucHV0KCdkZWNpbWFscycpIGRlY2ltYWxzID0gMDtcclxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1pbnB1dC1yZW5hbWVcclxuICAgIEBJbnB1dCgnbmVnYXRpdmUnKSBuZWdhdGl2ZSA9IDA7XHJcblxyXG4gICAgcHJpdmF0ZSBjaGVja0FsbG93TmVnYXRpdmUodmFsdWU6IHN0cmluZyk6IGFueSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZGVjaW1hbHMgPD0gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKS5tYXRjaChuZXcgUmVnRXhwKC9eLT9cXGQrJC8pKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCByZWdFeHBTdHJpbmcgPVxyXG4gICAgICAgICAgICAgICAgJ14tP1xcXFxzKigoXFxcXGQrKFxcXFwuXFxcXGR7MCwnICtcclxuICAgICAgICAgICAgICAgIHRoaXMuZGVjaW1hbHMgK1xyXG4gICAgICAgICAgICAgICAgJ30pPyl8KChcXFxcZCooXFxcXC5cXFxcZHsxLCcgK1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kZWNpbWFscyArXHJcbiAgICAgICAgICAgICAgICAnfSkpKSlcXFxccyokJztcclxuICAgICAgICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSkubWF0Y2gobmV3IFJlZ0V4cChyZWdFeHBTdHJpbmcpKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBjaGVjayh2YWx1ZTogc3RyaW5nKTogYW55IHtcclxuICAgICAgICBpZiAodGhpcy5kZWNpbWFscyA8PSAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBTdHJpbmcodmFsdWUpLm1hdGNoKG5ldyBSZWdFeHAoL15cXGQrJC8pKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCByZWdFeHBTdHJpbmcgPVxyXG4gICAgICAgICAgICAgICAgJ15cXFxccyooKFxcXFxkKyhcXFxcLlxcXFxkezAsJyArXHJcbiAgICAgICAgICAgICAgICB0aGlzLmRlY2ltYWxzICtcclxuICAgICAgICAgICAgICAgICd9KT8pfCgoXFxcXGQqKFxcXFwuXFxcXGR7MSwnICtcclxuICAgICAgICAgICAgICAgIHRoaXMuZGVjaW1hbHMgK1xyXG4gICAgICAgICAgICAgICAgJ30pKSkpXFxcXHMqJCc7XHJcbiAgICAgICAgICAgIHJldHVybiBTdHJpbmcodmFsdWUpLm1hdGNoKG5ldyBSZWdFeHAocmVnRXhwU3RyaW5nKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcnVuKG9sZFZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgY3VycmVudFZhbHVlOiBzdHJpbmcgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQudmFsdWU7XHJcbiAgICAgICAgICAgIGNvbnN0IGFsbG93TmVnYXRpdmUgPSB0aGlzLm5lZ2F0aXZlID4gMCA/IHRydWUgOiBmYWxzZTtcclxuXHJcbiAgICAgICAgICAgIGlmIChhbGxvd05lZ2F0aXZlKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgIVsnJywgJy0nXS5pbmNsdWRlcyhjdXJyZW50VmFsdWUpICYmXHJcbiAgICAgICAgICAgICAgICAgICAgIXRoaXMuY2hlY2tBbGxvd05lZ2F0aXZlKGN1cnJlbnRWYWx1ZSlcclxuICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC52YWx1ZSA9IG9sZFZhbHVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRWYWx1ZSAhPT0gJycgJiYgIXRoaXMuY2hlY2soY3VycmVudFZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC52YWx1ZSA9IG9sZFZhbHVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBlbDogRWxlbWVudFJlZikgeyB9XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXHJcbiAgICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnJ1bih0aGlzLmVsLm5hdGl2ZUVsZW1lbnQudmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoJ3Bhc3RlJywgWyckZXZlbnQnXSlcclxuICAgIG9uUGFzdGUoZXZlbnQ6IENsaXBib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5ydW4odGhpcy5lbC5uYXRpdmVFbGVtZW50LnZhbHVlKTtcclxuICAgIH1cclxufVxyXG4iXX0=