UNPKG

@alauda-fe/common

Version:

Alauda frontend team common codes.

76 lines 7.38 kB
import { __decorate, __metadata } from "tslib"; import { coerceAttrBoolean } from '@alauda/ui'; import { Directive, Input, Optional, Self, } from '@angular/core'; import { ControlContainer, NgControl } from '@angular/forms'; import { Observable, Subject, takeUntil } from 'rxjs'; import { ObservableInput } from '../utils/decorators'; import * as i0 from "@angular/core"; import * as i1 from "@angular/forms"; /** * * Usage: * If you want to disable a formControl. * * eg: * <input formControlName="name" [aclDisabled]="true"> * */ export class DisabledDirective { constructor(ctrlContainer, ngControl) { this.ctrlContainer = ctrlContainer; this.ngControl = ngControl; this.destroy$$ = new Subject(); } ngOnInit() { this.aclDisabled$ .pipe(takeUntil(this.destroy$$)) .subscribe(disabled => this.checkStatus(disabled)); } ngOnDestroy() { this.destroy$$.next(); this.destroy$$.complete(); switch (this.destroyStrategy) { case 'check': { this.checkStatus(this.aclDisabled); break; } case 'disable': { this.checkStatus(true); break; } case 'enable': { this.checkStatus(false); break; } } } checkStatus(disabled) { (this.ngControl ?? this.ctrlContainer)?.control?.[coerceAttrBoolean(disabled) ? 'disable' : 'enable'](); } static { this.ɵfac = function DisabledDirective_Factory(t) { return new (t || DisabledDirective)(i0.ɵɵdirectiveInject(i1.ControlContainer, 10), i0.ɵɵdirectiveInject(i1.NgControl, 10)); }; } static { this.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: DisabledDirective, selectors: [["", "aclDisabled", ""]], inputs: { aclDisabled: "aclDisabled", destroyStrategy: "destroyStrategy" }, standalone: true }); } } __decorate([ ObservableInput(), __metadata("design:type", Observable) ], DisabledDirective.prototype, "aclDisabled$", void 0); (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DisabledDirective, [{ type: Directive, args: [{ selector: '[aclDisabled]', standalone: true, }] }], () => [{ type: i1.ControlContainer, decorators: [{ type: Self }, { type: Optional }] }, { type: i1.NgControl, decorators: [{ type: Self }, { type: Optional }] }], { aclDisabled: [{ type: Input }], aclDisabled$: [], destroyStrategy: [{ type: Input }] }); })(); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzYWJsZWQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL2NvcmUvZGlyZWN0aXZlcy9kaXNhYmxlZC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBZSxpQkFBaUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUM1RCxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFHTCxRQUFRLEVBQ1IsSUFBSSxHQUNMLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7QUFFdEQ7Ozs7Ozs7O0dBUUc7QUFLSCxNQUFNLE9BQU8saUJBQWlCO0lBWTVCLFlBR21CLGFBQStCLEVBRy9CLFNBQW9CO1FBSHBCLGtCQUFhLEdBQWIsYUFBYSxDQUFrQjtRQUcvQixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBUnRCLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBUzlDLENBQUM7SUFFSixRQUFRO1FBQ04sSUFBSSxDQUFDLFlBQVk7YUFDZCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQzthQUMvQixTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFMUIsUUFBUSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDN0IsS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDO2dCQUNiLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUNuQyxNQUFNO1lBQ1IsQ0FBQztZQUNELEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQztnQkFDZixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN2QixNQUFNO1lBQ1IsQ0FBQztZQUNELEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQztnQkFDZCxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN4QixNQUFNO1lBQ1IsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRU8sV0FBVyxDQUFDLFFBQXNCO1FBQ3hDLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQy9DLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FDbkQsRUFBRSxDQUFDO0lBQ04sQ0FBQztrRkFuRFUsaUJBQWlCO29FQUFqQixpQkFBaUI7O0FBSzVCO0lBREMsZUFBZSxFQUFFOzhCQUNILFVBQVU7dURBQWM7aUZBTDVCLGlCQUFpQjtjQUo3QixTQUFTO2VBQUM7Z0JBQ1QsUUFBUSxFQUFFLGVBQWU7Z0JBQ3pCLFVBQVUsRUFBRSxJQUFJO2FBQ2pCOztzQkFjSSxJQUFJOztzQkFDSixRQUFROztzQkFFUixJQUFJOztzQkFDSixRQUFRO3FCQWZYLFdBQVc7a0JBRFYsS0FBSztZQUlOLFlBQVksTUFHWixlQUFlO2tCQURkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdHRyQm9vbGVhbiwgY29lcmNlQXR0ckJvb2xlYW4gfSBmcm9tICdAYWxhdWRhL3VpJztcbmltcG9ydCB7XG4gIERpcmVjdGl2ZSxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgU2VsZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sQ29udGFpbmVyLCBOZ0NvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZUlucHV0IH0gZnJvbSAnLi4vdXRpbHMvZGVjb3JhdG9ycyc7XG5cbi8qKlxuICpcbiAqIFVzYWdlOlxuICogSWYgeW91IHdhbnQgdG8gZGlzYWJsZSBhIGZvcm1Db250cm9sLlxuICpcbiAqIGVnOlxuICogPGlucHV0IGZvcm1Db250cm9sTmFtZT1cIm5hbWVcIiBbYWNsRGlzYWJsZWRdPVwidHJ1ZVwiPlxuICpcbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2FjbERpc2FibGVkXScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIERpc2FibGVkRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKVxuICBhY2xEaXNhYmxlZDogQXR0ckJvb2xlYW47XG5cbiAgQE9ic2VydmFibGVJbnB1dCgpXG4gIGFjbERpc2FibGVkJCE6IE9ic2VydmFibGU8QXR0ckJvb2xlYW4+O1xuXG4gIEBJbnB1dCgpXG4gIGRlc3Ryb3lTdHJhdGVneT86ICdjaGVjaycgfCAnZGlzYWJsZScgfCAnZW5hYmxlJztcblxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQFNlbGYoKVxuICAgIEBPcHRpb25hbCgpXG4gICAgcHJpdmF0ZSByZWFkb25seSBjdHJsQ29udGFpbmVyOiBDb250cm9sQ29udGFpbmVyLFxuICAgIEBTZWxmKClcbiAgICBAT3B0aW9uYWwoKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgbmdDb250cm9sOiBOZ0NvbnRyb2wsXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmFjbERpc2FibGVkJFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQkKSlcbiAgICAgIC5zdWJzY3JpYmUoZGlzYWJsZWQgPT4gdGhpcy5jaGVja1N0YXR1cyhkaXNhYmxlZCkpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95JCQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQkLmNvbXBsZXRlKCk7XG5cbiAgICBzd2l0Y2ggKHRoaXMuZGVzdHJveVN0cmF0ZWd5KSB7XG4gICAgICBjYXNlICdjaGVjayc6IHtcbiAgICAgICAgdGhpcy5jaGVja1N0YXR1cyh0aGlzLmFjbERpc2FibGVkKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdkaXNhYmxlJzoge1xuICAgICAgICB0aGlzLmNoZWNrU3RhdHVzKHRydWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2VuYWJsZSc6IHtcbiAgICAgICAgdGhpcy5jaGVja1N0YXR1cyhmYWxzZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tTdGF0dXMoZGlzYWJsZWQ6IGJvb2xlYW4gfCAnJykge1xuICAgICh0aGlzLm5nQ29udHJvbCA/PyB0aGlzLmN0cmxDb250YWluZXIpPy5jb250cm9sPy5bXG4gICAgICBjb2VyY2VBdHRyQm9vbGVhbihkaXNhYmxlZCkgPyAnZGlzYWJsZScgOiAnZW5hYmxlJ1xuICAgIF0oKTtcbiAgfVxufVxuIl19