@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
JavaScript
/**
* @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=