UNPKG

ng-devui

Version:

DevUI components based on Angular

67 lines 8.81 kB
import { Injectable } from '@angular/core'; import * as i0 from "@angular/core"; function resolvedPromiseFunc() { return Promise.resolve(null); } const resolvedPromise = resolvedPromiseFunc(); export class DValidateSyncService { constructor() { this.controlsMap = new Map(); this.controlsSubMap = new Map(); } addControl(key, cd) { if (!this.controlsMap.get(key)) { this.controlsMap.set(key, []); } this.controlsMap.get(key).push(cd); this._addControlSubscription(key, cd); } removeControl(key, cd) { if (this.controlsMap.get(key)) { const controls = this.controlsMap.get(key); const index = controls.indexOf(cd); if (index !== -1) { controls.splice(index, 1); } } this._removeControlSubscription(cd); } validateControlsSync(key, cd) { const controls = this.controlsMap.get(key); if (controls) { controls.forEach(control => { this._removeControlSubscription(control); }); controls.forEach(control => { if (control !== cd) { resolvedPromise.then(() => { control.updateValueAndValidity(); }); } }); controls.forEach(control => { resolvedPromise.then(() => { this._addControlSubscription(key, control); }); }); } } _addControlSubscription(key, cd) { this._removeControlSubscription(cd); const sub = cd.valueChanges.subscribe(() => { this.validateControlsSync(key, cd); }); this.controlsSubMap.set(cd, sub); } _removeControlSubscription(cd) { if (this.controlsSubMap.get(cd)) { this.controlsSubMap.get(cd).unsubscribe(); this.controlsSubMap.delete(cd); } } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DValidateSyncService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); } static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DValidateSyncService, providedIn: 'root' }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DValidateSyncService, decorators: [{ type: Injectable, args: [{ providedIn: 'root' }] }], ctorParameters: () => [] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZC12YWxpZGF0ZS1zeW5jLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9kZXZ1aS9mb3JtL3NlcnZpY2VzL2QtdmFsaWRhdGUtc3luYy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBSTNDLFNBQVMsbUJBQW1CLEtBQUssT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoRSxNQUFNLGVBQWUsR0FBRyxtQkFBbUIsRUFBRSxDQUFDO0FBRTlDLE1BQU0sT0FBTyxvQkFBb0I7SUFLL0I7UUFDRSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxVQUFVLENBQUMsR0FBVyxFQUFFLEVBQW1CO1FBQ3pDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNoQyxDQUFDO1FBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELGFBQWEsQ0FBQyxHQUFXLEVBQUUsRUFBbUI7UUFDNUMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzlCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzNDLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDbkMsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDakIsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDNUIsQ0FBQztRQUNILENBQUM7UUFDRCxJQUFJLENBQUMsMEJBQTBCLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELG9CQUFvQixDQUFDLEdBQVcsRUFBRSxFQUFtQjtRQUNuRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUUzQyxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ2IsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDekIsSUFBSSxDQUFDLDBCQUEwQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzNDLENBQUMsQ0FBQyxDQUFDO1lBRUgsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDekIsSUFBSSxPQUFPLEtBQUssRUFBRSxFQUFFLENBQUM7b0JBQ25CLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO3dCQUN4QixPQUFPLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztvQkFDbkMsQ0FBQyxDQUFDLENBQUM7Z0JBQ0wsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1lBRUgsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDekIsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7b0JBQ3hCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBQzdDLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQUVELHVCQUF1QixDQUFDLEdBQVcsRUFBRSxFQUFtQjtRQUN0RCxJQUFJLENBQUMsMEJBQTBCLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDcEMsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3pDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDckMsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELDBCQUEwQixDQUFDLEVBQW1CO1FBQzVDLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUMxQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNqQyxDQUFDO0lBQ0gsQ0FBQzsrR0FsRVUsb0JBQW9CO21IQUFwQixvQkFBb0IsY0FEUCxNQUFNOzs0RkFDbkIsb0JBQW9CO2tCQURoQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5mdW5jdGlvbiByZXNvbHZlZFByb21pc2VGdW5jKCkgeyByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG51bGwpOyB9XG5jb25zdCByZXNvbHZlZFByb21pc2UgPSByZXNvbHZlZFByb21pc2VGdW5jKCk7XG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIERWYWxpZGF0ZVN5bmNTZXJ2aWNlIHtcblxuICBjb250cm9sc01hcDogTWFwPHN0cmluZywgQWJzdHJhY3RDb250cm9sW10+O1xuICBjb250cm9sc1N1Yk1hcDogTWFwPEFic3RyYWN0Q29udHJvbCwgU3Vic2NyaXB0aW9uPjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmNvbnRyb2xzTWFwID0gbmV3IE1hcCgpO1xuICAgIHRoaXMuY29udHJvbHNTdWJNYXAgPSBuZXcgTWFwKCk7XG4gIH1cblxuICBhZGRDb250cm9sKGtleTogc3RyaW5nLCBjZDogQWJzdHJhY3RDb250cm9sKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNvbnRyb2xzTWFwLmdldChrZXkpKSB7XG4gICAgICB0aGlzLmNvbnRyb2xzTWFwLnNldChrZXksIFtdKTtcbiAgICB9XG4gICAgdGhpcy5jb250cm9sc01hcC5nZXQoa2V5KS5wdXNoKGNkKTtcbiAgICB0aGlzLl9hZGRDb250cm9sU3Vic2NyaXB0aW9uKGtleSwgY2QpO1xuICB9XG5cbiAgcmVtb3ZlQ29udHJvbChrZXk6IHN0cmluZywgY2Q6IEFic3RyYWN0Q29udHJvbCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNvbnRyb2xzTWFwLmdldChrZXkpKSB7XG4gICAgICBjb25zdCBjb250cm9scyA9IHRoaXMuY29udHJvbHNNYXAuZ2V0KGtleSk7XG4gICAgICBjb25zdCBpbmRleCA9IGNvbnRyb2xzLmluZGV4T2YoY2QpO1xuICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICBjb250cm9scy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLl9yZW1vdmVDb250cm9sU3Vic2NyaXB0aW9uKGNkKTtcbiAgfVxuXG4gIHZhbGlkYXRlQ29udHJvbHNTeW5jKGtleTogc3RyaW5nLCBjZDogQWJzdHJhY3RDb250cm9sKTogdm9pZCB7XG4gICAgY29uc3QgY29udHJvbHMgPSB0aGlzLmNvbnRyb2xzTWFwLmdldChrZXkpO1xuXG4gICAgaWYgKGNvbnRyb2xzKSB7XG4gICAgICBjb250cm9scy5mb3JFYWNoKGNvbnRyb2wgPT4geyAvLyDpppblhYjmuIXpmaTlvZPliY3lkajmnJ/nm5HlkKzvvIzpgb/lhY3lvqrnjq/nm5HlkKxcbiAgICAgICAgdGhpcy5fcmVtb3ZlQ29udHJvbFN1YnNjcmlwdGlvbihjb250cm9sKTtcbiAgICAgIH0pO1xuXG4gICAgICBjb250cm9scy5mb3JFYWNoKGNvbnRyb2wgPT4ge1xuICAgICAgICBpZiAoY29udHJvbCAhPT0gY2QpIHtcbiAgICAgICAgICByZXNvbHZlZFByb21pc2UudGhlbigoKSA9PiB7IC8vIOWcqOS4i+S4gOS4quinhuWbvuabtOaWsOWRqOacn+aJp+ihjFxuICAgICAgICAgICAgY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBjb250cm9scy5mb3JFYWNoKGNvbnRyb2wgPT4ge1xuICAgICAgICByZXNvbHZlZFByb21pc2UudGhlbigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5fYWRkQ29udHJvbFN1YnNjcmlwdGlvbihrZXksIGNvbnRyb2wpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIF9hZGRDb250cm9sU3Vic2NyaXB0aW9uKGtleTogc3RyaW5nLCBjZDogQWJzdHJhY3RDb250cm9sKTogdm9pZCB7XG4gICAgdGhpcy5fcmVtb3ZlQ29udHJvbFN1YnNjcmlwdGlvbihjZCk7XG4gICAgY29uc3Qgc3ViID0gY2QudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnZhbGlkYXRlQ29udHJvbHNTeW5jKGtleSwgY2QpO1xuICAgIH0pO1xuICAgIHRoaXMuY29udHJvbHNTdWJNYXAuc2V0KGNkLCBzdWIpO1xuICB9XG5cbiAgX3JlbW92ZUNvbnRyb2xTdWJzY3JpcHRpb24oY2Q6IEFic3RyYWN0Q29udHJvbCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNvbnRyb2xzU3ViTWFwLmdldChjZCkpIHtcbiAgICAgIHRoaXMuY29udHJvbHNTdWJNYXAuZ2V0KGNkKS51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5jb250cm9sc1N1Yk1hcC5kZWxldGUoY2QpO1xuICAgIH1cbiAgfVxufVxuIl19