UNPKG

ngx-custom-numeric-range-form-field

Version:
50 lines 7.55 kB
import { Injectable } from '@angular/core'; import { FormControl, FormGroup } from '@angular/forms'; import { numericRangeValues } from './numeric-range.validator'; import * as i0 from "@angular/core"; export class NumericRangeFormService { constructor() { this.minimumControlName = 'minimum'; this.maximumControlName = 'maximum'; this.form = new FormGroup({}); } get minimumControl() { return this.form.get(this.minimumControlName); } get maximumControl() { return this.form.get(this.maximumControlName); } get formGroup() { return this.form; } init(minimumControlName = 'minimum', maximumControlName = 'maximum', updateOn = 'change') { this.minimumControlName = minimumControlName; this.maximumControlName = maximumControlName; this.form.addControl(this.minimumControlName, new FormControl(null, { updateOn })); this.form.addControl(this.maximumControlName, new FormControl(null, { updateOn })); this.form.setValidators(numericRangeValues(this.minimumControlName, this.maximumControlName)); return this.form; } setSyncValidators(validator) { if (!validator) { return; } this.minimumControl.addValidators(validator); // sets the validators on child control this.maximumControl.addValidators(validator); // sets the validators on child control this.formGroup.updateValueAndValidity(); } setAsyncValidators(asyncValidator) { if (!asyncValidator) { return; } this.minimumControl.addAsyncValidators(asyncValidator); this.maximumControl.addAsyncValidators(asyncValidator); this.formGroup.updateValueAndValidity(); } } NumericRangeFormService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.5", ngImport: i0, type: NumericRangeFormService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); NumericRangeFormService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.5", ngImport: i0, type: NumericRangeFormService }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.5", ngImport: i0, type: NumericRangeFormService, decorators: [{ type: Injectable }], ctorParameters: function () { return []; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtZXJpYy1yYW5nZS1mb3JtLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbnVtZXJpYy1yYW5nZS1mb3JtLWZpZWxkL3NyYy9saWIvZm9ybS9udW1lcmljLXJhbmdlLWZvcm0uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFFTixXQUFXLEVBQ1gsU0FBUyxFQUVULE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7O0FBRy9ELE1BQU0sT0FBTyx1QkFBdUI7SUFLbkM7UUFIUSx1QkFBa0IsR0FBRyxTQUFTLENBQUM7UUFDL0IsdUJBQWtCLEdBQUcsU0FBUyxDQUFDO1FBR3RDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQUksY0FBYztRQUNqQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBZ0IsQ0FBQztJQUM5RCxDQUFDO0lBRUQsSUFBSSxjQUFjO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFnQixDQUFDO0lBQzlELENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbEIsQ0FBQztJQUVELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxTQUFTLEVBQUUsa0JBQWtCLEdBQUcsU0FBUyxFQUFFLFdBQXlDLFFBQVE7UUFDckgsSUFBSSxDQUFDLGtCQUFrQixHQUFHLGtCQUFrQixDQUFDO1FBQzdDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxrQkFBa0IsQ0FBQztRQUM3QyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxXQUFXLENBQUMsSUFBSSxFQUFFLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ25GLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLFdBQVcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbkYsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7UUFDOUYsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxTQUFzQjtRQUN2QyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2YsT0FBTztTQUNQO1FBRUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyx1Q0FBdUM7UUFDckYsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyx1Q0FBdUM7UUFDckYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxjQUFnQztRQUNsRCxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3BCLE9BQU87U0FDUDtRQUVELElBQUksQ0FBQyxjQUFjLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsU0FBUyxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDekMsQ0FBQzs7b0hBaERXLHVCQUF1Qjt3SEFBdkIsdUJBQXVCOzJGQUF2Qix1QkFBdUI7a0JBRG5DLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcblx0QXN5bmNWYWxpZGF0b3JGbixcclxuXHRGb3JtQ29udHJvbCxcclxuXHRGb3JtR3JvdXAsXHJcblx0VmFsaWRhdG9yRm5cclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IG51bWVyaWNSYW5nZVZhbHVlcyB9IGZyb20gJy4vbnVtZXJpYy1yYW5nZS52YWxpZGF0b3InO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgTnVtZXJpY1JhbmdlRm9ybVNlcnZpY2Uge1xyXG5cdHByaXZhdGUgZm9ybTogRm9ybUdyb3VwO1xyXG5cdHByaXZhdGUgbWluaW11bUNvbnRyb2xOYW1lID0gJ21pbmltdW0nO1xyXG5cdHByaXZhdGUgbWF4aW11bUNvbnRyb2xOYW1lID0gJ21heGltdW0nO1xyXG5cclxuXHRjb25zdHJ1Y3RvcigpIHtcclxuXHRcdHRoaXMuZm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG5cdH1cclxuXHJcblx0Z2V0IG1pbmltdW1Db250cm9sKCk6IEZvcm1Db250cm9sIHtcclxuXHRcdHJldHVybiB0aGlzLmZvcm0uZ2V0KHRoaXMubWluaW11bUNvbnRyb2xOYW1lKSBhcyBGb3JtQ29udHJvbDtcclxuXHR9XHJcblxyXG5cdGdldCBtYXhpbXVtQ29udHJvbCgpOiBGb3JtQ29udHJvbCB7XHJcblx0XHRyZXR1cm4gdGhpcy5mb3JtLmdldCh0aGlzLm1heGltdW1Db250cm9sTmFtZSkgYXMgRm9ybUNvbnRyb2w7XHJcblx0fVxyXG5cclxuXHRnZXQgZm9ybUdyb3VwKCk6IEZvcm1Hcm91cCB7XHJcblx0XHRyZXR1cm4gdGhpcy5mb3JtO1xyXG5cdH1cclxuXHJcblx0aW5pdChtaW5pbXVtQ29udHJvbE5hbWUgPSAnbWluaW11bScsIG1heGltdW1Db250cm9sTmFtZSA9ICdtYXhpbXVtJywgdXBkYXRlT246ICdibHVyJyB8ICdjaGFuZ2UnIHwgJ3N1Ym1pdCcgPSAnY2hhbmdlJyk6IEZvcm1Hcm91cCB7XHJcblx0XHR0aGlzLm1pbmltdW1Db250cm9sTmFtZSA9IG1pbmltdW1Db250cm9sTmFtZTtcclxuXHRcdHRoaXMubWF4aW11bUNvbnRyb2xOYW1lID0gbWF4aW11bUNvbnRyb2xOYW1lO1xyXG5cdFx0dGhpcy5mb3JtLmFkZENvbnRyb2wodGhpcy5taW5pbXVtQ29udHJvbE5hbWUsIG5ldyBGb3JtQ29udHJvbChudWxsLCB7IHVwZGF0ZU9uIH0pKTtcclxuXHRcdHRoaXMuZm9ybS5hZGRDb250cm9sKHRoaXMubWF4aW11bUNvbnRyb2xOYW1lLCBuZXcgRm9ybUNvbnRyb2wobnVsbCwgeyB1cGRhdGVPbiB9KSk7XHJcblx0XHR0aGlzLmZvcm0uc2V0VmFsaWRhdG9ycyhudW1lcmljUmFuZ2VWYWx1ZXModGhpcy5taW5pbXVtQ29udHJvbE5hbWUsIHRoaXMubWF4aW11bUNvbnRyb2xOYW1lKSk7XHJcblx0XHRyZXR1cm4gdGhpcy5mb3JtO1xyXG5cdH1cclxuXHJcblx0c2V0U3luY1ZhbGlkYXRvcnModmFsaWRhdG9yOiBWYWxpZGF0b3JGbik6IHZvaWQge1xyXG5cdFx0aWYgKCF2YWxpZGF0b3IpIHtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdHRoaXMubWluaW11bUNvbnRyb2wuYWRkVmFsaWRhdG9ycyh2YWxpZGF0b3IpOyAvLyBzZXRzIHRoZSB2YWxpZGF0b3JzIG9uIGNoaWxkIGNvbnRyb2xcclxuXHRcdHRoaXMubWF4aW11bUNvbnRyb2wuYWRkVmFsaWRhdG9ycyh2YWxpZGF0b3IpOyAvLyBzZXRzIHRoZSB2YWxpZGF0b3JzIG9uIGNoaWxkIGNvbnRyb2xcclxuXHRcdHRoaXMuZm9ybUdyb3VwLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuXHR9XHJcblxyXG5cdHNldEFzeW5jVmFsaWRhdG9ycyhhc3luY1ZhbGlkYXRvcjogQXN5bmNWYWxpZGF0b3JGbik6IHZvaWQge1xyXG5cdFx0aWYgKCFhc3luY1ZhbGlkYXRvcikge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0dGhpcy5taW5pbXVtQ29udHJvbC5hZGRBc3luY1ZhbGlkYXRvcnMoYXN5bmNWYWxpZGF0b3IpO1xyXG5cdFx0dGhpcy5tYXhpbXVtQ29udHJvbC5hZGRBc3luY1ZhbGlkYXRvcnMoYXN5bmNWYWxpZGF0b3IpO1xyXG5cdFx0dGhpcy5mb3JtR3JvdXAudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG5cdH1cclxufVxyXG4iXX0=