@alauda-fe/common
Version:
Alauda frontend team common codes.
76 lines • 7.38 kB
JavaScript
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