UNPKG

ng-halfmoon

Version:

Angular Library to build upon the halfmoon-framework

45 lines 5.34 kB
import { Injectable } from '@angular/core'; import { Subject } from 'rxjs'; import { distinctUntilChanged } from 'rxjs/operators'; /** * This logic with managing the control-status is adopted from Clarity Design. All props go to their team and contributors */ export var ControlStatus; (function (ControlStatus) { ControlStatus["NONE"] = "NONE"; ControlStatus["INVALID"] = "INVALID"; ControlStatus["VALID"] = "VALID"; })(ControlStatus || (ControlStatus = {})); export class ControlService { constructor() { this._currentStatus$ = new Subject(); } get currentStatus$() { return this._currentStatus$.asObservable(); } ngOnDestroy() { var _a; (_a = this.subscription) === null || _a === void 0 ? void 0 : _a.unsubscribe(); } init(control) { var _a; this.currentControl = control; this.subscription = (_a = this.currentControl.statusChanges) === null || _a === void 0 ? void 0 : _a.pipe(distinctUntilChanged()).subscribe(() => { this.triggerStatusChange(); }); } triggerStatusChange() { if ((this.currentControl.touched || this.currentControl.dirty) && [ControlStatus.INVALID, ControlStatus.VALID].includes(this.currentControl.status)) { this._currentStatus$.next(this.currentControl.status); } else { this._currentStatus$.next(ControlStatus.NONE); } } } ControlService.decorators = [ { type: Injectable } ]; ControlService.ctorParameters = () => []; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctaGFsZm1vb24vc3JjL2xpYi9mb3JtL3NlcnZpY2VzL2NvbnRyb2wuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBRXBELE9BQU8sRUFBYSxPQUFPLEVBQWUsTUFBTSxNQUFNLENBQUM7QUFDdkQsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEQ7O0dBRUc7QUFDSCxNQUFNLENBQU4sSUFBWSxhQUlYO0FBSkQsV0FBWSxhQUFhO0lBQ3ZCLDhCQUFhLENBQUE7SUFDYixvQ0FBbUIsQ0FBQTtJQUNuQixnQ0FBZSxDQUFBO0FBQ2pCLENBQUMsRUFKVyxhQUFhLEtBQWIsYUFBYSxRQUl4QjtBQUdELE1BQU0sT0FBTyxjQUFjO0lBV3pCO1FBSlEsb0JBQWUsR0FDckIsSUFBSSxPQUFPLEVBQWlCLENBQUM7SUFHaEIsQ0FBQztJQVJoQixJQUFJLGNBQWM7UUFDaEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzdDLENBQUM7SUFRRCxXQUFXOztRQUNULE1BQUEsSUFBSSxDQUFDLFlBQVksMENBQUUsV0FBVyxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVELElBQUksQ0FBQyxPQUFvQjs7UUFDdkIsSUFBSSxDQUFDLGNBQWMsR0FBRyxPQUFPLENBQUM7UUFDOUIsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFBLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSwwQ0FDakQsSUFBSSxDQUFDLG9CQUFvQixFQUFFLEVBQzVCLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxtQkFBbUI7UUFDakIsSUFDRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDO1lBQzFELENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUNuRCxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQXVCLENBQzVDLEVBQ0Q7WUFDQSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQXVCLENBQUMsQ0FBQztTQUN4RTthQUFNO1lBQ0wsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQy9DO0lBQ0gsQ0FBQzs7O1lBdENGLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGUsIE9uRGVzdHJveX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Zvcm1Db250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge09ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2Rpc3RpbmN0VW50aWxDaGFuZ2VkfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbi8qKlxuICogVGhpcyBsb2dpYyB3aXRoIG1hbmFnaW5nIHRoZSBjb250cm9sLXN0YXR1cyBpcyBhZG9wdGVkIGZyb20gQ2xhcml0eSBEZXNpZ24uIEFsbCBwcm9wcyBnbyB0byB0aGVpciB0ZWFtIGFuZCBjb250cmlidXRvcnNcbiAqL1xuZXhwb3J0IGVudW0gQ29udHJvbFN0YXR1cyB7XG4gIE5PTkUgPSAnTk9ORScsXG4gIElOVkFMSUQgPSAnSU5WQUxJRCcsXG4gIFZBTElEID0gJ1ZBTElEJ1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ29udHJvbFNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBjdXJyZW50Q29udHJvbDogRm9ybUNvbnRyb2w7XG5cbiAgZ2V0IGN1cnJlbnRTdGF0dXMkKCk6IE9ic2VydmFibGU8Q29udHJvbFN0YXR1cz4ge1xuICAgIHJldHVybiB0aGlzLl9jdXJyZW50U3RhdHVzJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2N1cnJlbnRTdGF0dXMkOiBTdWJqZWN0PENvbnRyb2xTdGF0dXM+ID1cbiAgICBuZXcgU3ViamVjdDxDb250cm9sU3RhdHVzPigpO1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIGluaXQoY29udHJvbDogRm9ybUNvbnRyb2wpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnRDb250cm9sID0gY29udHJvbDtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMuY3VycmVudENvbnRyb2wuc3RhdHVzQ2hhbmdlc1xuICAgICAgPy5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy50cmlnZ2VyU3RhdHVzQ2hhbmdlKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHRyaWdnZXJTdGF0dXNDaGFuZ2UoKSB7XG4gICAgaWYgKFxuICAgICAgKHRoaXMuY3VycmVudENvbnRyb2wudG91Y2hlZCB8fCB0aGlzLmN1cnJlbnRDb250cm9sLmRpcnR5KSAmJlxuICAgICAgW0NvbnRyb2xTdGF0dXMuSU5WQUxJRCwgQ29udHJvbFN0YXR1cy5WQUxJRF0uaW5jbHVkZXMoXG4gICAgICAgIHRoaXMuY3VycmVudENvbnRyb2wuc3RhdHVzIGFzIENvbnRyb2xTdGF0dXNcbiAgICAgIClcbiAgICApIHtcbiAgICAgIHRoaXMuX2N1cnJlbnRTdGF0dXMkLm5leHQodGhpcy5jdXJyZW50Q29udHJvbC5zdGF0dXMgYXMgQ29udHJvbFN0YXR1cyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2N1cnJlbnRTdGF0dXMkLm5leHQoQ29udHJvbFN0YXR1cy5OT05FKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==