ng-devui
Version:
DevUI components based on Angular
67 lines • 8.81 kB
JavaScript
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