@bimeister/pupakit.kit
Version:
PupaKit is an open source collection of Angular components based on an atomic approach to building interfaces, which guarantees better performance and greater development flexibility.
67 lines • 9.04 kB
JavaScript
import { Directive, Input } from '@angular/core';
import '@bimeister/pupakit.common';
import { filterTruthy, isNil } from '@bimeister/utilities';
import { combineLatest } from 'rxjs';
import { map, take } from 'rxjs/operators';
import '../../interfaces/tag-state-service.interface';
import '../../types/tag-kind.type';
import * as i0 from "@angular/core";
export class TagBase {
constructor(tagStateService) {
this.tagStateService = tagStateService;
this.disabled = false;
this.isDisabled$ = this.tagStateService.isDisabled$;
this.clickable = false;
this.isClickable$ = this.tagStateService.isClickable$;
this.kind = 'opacity';
this.kind$ = this.tagStateService.kind$;
this.kindClass$ = this.kind$.pipe(map((kind) => `tag_${kind}`));
this.isInteractive$ = combineLatest([
this.tagStateService.isDisabled$,
this.tagStateService.isClickable$,
]).pipe(map(([isDisabled, isClickable]) => !isDisabled && isClickable));
}
ngOnChanges(changes) {
this.processDisabledChange(changes?.disabled);
this.processClickableChange(changes?.clickable);
this.processColorChange(changes?.kind);
}
processInteraction(event) {
this.isDisabled$.pipe(take(1), filterTruthy()).subscribe(() => {
event.stopPropagation();
});
}
processDisabledChange(change) {
const updatedValue = change?.currentValue;
if (isNil(updatedValue)) {
return;
}
this.isDisabled$.next(updatedValue);
}
processClickableChange(change) {
const updatedValue = change?.currentValue;
if (isNil(updatedValue)) {
return;
}
this.isClickable$.next(updatedValue);
}
processColorChange(change) {
const updatedValue = change?.currentValue;
if (isNil(updatedValue)) {
return;
}
this.kind$.next(updatedValue);
}
}
TagBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TagBase, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
TagBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.12", type: TagBase, inputs: { disabled: "disabled", clickable: "clickable", kind: "kind" }, usesOnChanges: true, ngImport: i0 });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TagBase, decorators: [{
type: Directive
}], ctorParameters: function () { return [{ type: undefined }]; }, propDecorators: { disabled: [{
type: Input
}], clickable: [{
type: Input
}], kind: [{
type: Input
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFnLWJhc2UuYWJzdHJhY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZGVjbGFyYXRpb25zL2NsYXNzZXMvYWJzdHJhY3QvdGFnLWJhc2UuYWJzdHJhY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDNUQsT0FBa0QsMkJBQTJCLENBQUM7QUFDOUUsT0FBTyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRCxPQUFPLEVBQW1CLGFBQWEsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUNsRSxPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQTJDLDhDQUE4QyxDQUFDO0FBQzFGLE9BQXdCLDJCQUEyQixDQUFDOztBQUdwRCxNQUFNLE9BQWdCLE9BQU87SUFnQjNCLFlBQStCLGVBQTJDO1FBQTNDLG9CQUFlLEdBQWYsZUFBZSxDQUE0QjtRQWYxRCxhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLGdCQUFXLEdBQTZCLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDO1FBRXpFLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFDM0IsaUJBQVksR0FBNkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUM7UUFFM0UsU0FBSSxHQUFZLFNBQVMsQ0FBQztRQUN6QixVQUFLLEdBQTZCLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDO1FBRTlELGVBQVUsR0FBdUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBYSxFQUFFLEVBQUUsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN4RixtQkFBYyxHQUF3QixhQUFhLENBQUM7WUFDbEUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXO1lBQ2hDLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWTtTQUNsQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBcUIsRUFBRSxFQUFFLENBQUMsQ0FBQyxVQUFVLElBQUksV0FBVyxDQUFDLENBQUMsQ0FBQztJQUVmLENBQUM7SUFFdkUsV0FBVyxDQUFDLE9BQStCO1FBQ2hELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFTSxrQkFBa0IsQ0FBQyxLQUFZO1FBQ3BDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDNUQsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLHFCQUFxQixDQUFDLE1BQXNDO1FBQ2xFLE1BQU0sWUFBWSxHQUF3QixNQUFNLEVBQUUsWUFBWSxDQUFDO1FBRS9ELElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQ3ZCLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFTyxzQkFBc0IsQ0FBQyxNQUFzQztRQUNuRSxNQUFNLFlBQVksR0FBd0IsTUFBTSxFQUFFLFlBQVksQ0FBQztRQUUvRCxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUN2QixPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRU8sa0JBQWtCLENBQUMsTUFBc0M7UUFDL0QsTUFBTSxZQUFZLEdBQXdCLE1BQU0sRUFBRSxZQUFZLENBQUM7UUFFL0QsSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLEVBQUU7WUFDdkIsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDaEMsQ0FBQzs7cUdBMURtQixPQUFPO3lGQUFQLE9BQU87NEZBQVAsT0FBTztrQkFENUIsU0FBUzs2RkFFUSxRQUFRO3NCQUF2QixLQUFLO2dCQUdVLFNBQVM7c0JBQXhCLEtBQUs7Z0JBR1UsSUFBSTtzQkFBbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQsIE9uQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tcG9uZW50Q2hhbmdlLCBDb21wb25lbnRDaGFuZ2VzIH0gZnJvbSAnQGJpbWVpc3Rlci9wdXBha2l0LmNvbW1vbic7XG5pbXBvcnQgeyBmaWx0ZXJUcnV0aHksIGlzTmlsIH0gZnJvbSAnQGJpbWVpc3Rlci91dGlsaXRpZXMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBUYWdTdGF0ZVNlcnZpY2VEZWNsYXJhdGlvbiB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvdGFnLXN0YXRlLXNlcnZpY2UuaW50ZXJmYWNlJztcbmltcG9ydCB7IFRhZ0tpbmQgfSBmcm9tICcuLi8uLi90eXBlcy90YWcta2luZC50eXBlJztcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVGFnQmFzZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIHB1YmxpYyBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgcmVhZG9ubHkgaXNEaXNhYmxlZCQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IHRoaXMudGFnU3RhdGVTZXJ2aWNlLmlzRGlzYWJsZWQkO1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBjbGlja2FibGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIHJlYWRvbmx5IGlzQ2xpY2thYmxlJDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gdGhpcy50YWdTdGF0ZVNlcnZpY2UuaXNDbGlja2FibGUkO1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBraW5kOiBUYWdLaW5kID0gJ29wYWNpdHknO1xuICBwcml2YXRlIHJlYWRvbmx5IGtpbmQkOiBCZWhhdmlvclN1YmplY3Q8VGFnS2luZD4gPSB0aGlzLnRhZ1N0YXRlU2VydmljZS5raW5kJDtcblxuICBwdWJsaWMgcmVhZG9ubHkga2luZENsYXNzJDogT2JzZXJ2YWJsZTxzdHJpbmc+ID0gdGhpcy5raW5kJC5waXBlKG1hcCgoa2luZDogVGFnS2luZCkgPT4gYHRhZ18ke2tpbmR9YCkpO1xuICBwdWJsaWMgcmVhZG9ubHkgaXNJbnRlcmFjdGl2ZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLnRhZ1N0YXRlU2VydmljZS5pc0Rpc2FibGVkJCxcbiAgICB0aGlzLnRhZ1N0YXRlU2VydmljZS5pc0NsaWNrYWJsZSQsXG4gIF0pLnBpcGUobWFwKChbaXNEaXNhYmxlZCwgaXNDbGlja2FibGVdOiBbYm9vbGVhbiwgYm9vbGVhbl0pID0+ICFpc0Rpc2FibGVkICYmIGlzQ2xpY2thYmxlKSk7XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIHJlYWRvbmx5IHRhZ1N0YXRlU2VydmljZTogVGFnU3RhdGVTZXJ2aWNlRGVjbGFyYXRpb24pIHt9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IENvbXBvbmVudENoYW5nZXM8dGhpcz4pOiB2b2lkIHtcbiAgICB0aGlzLnByb2Nlc3NEaXNhYmxlZENoYW5nZShjaGFuZ2VzPy5kaXNhYmxlZCk7XG4gICAgdGhpcy5wcm9jZXNzQ2xpY2thYmxlQ2hhbmdlKGNoYW5nZXM/LmNsaWNrYWJsZSk7XG4gICAgdGhpcy5wcm9jZXNzQ29sb3JDaGFuZ2UoY2hhbmdlcz8ua2luZCk7XG4gIH1cblxuICBwdWJsaWMgcHJvY2Vzc0ludGVyYWN0aW9uKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuaXNEaXNhYmxlZCQucGlwZSh0YWtlKDEpLCBmaWx0ZXJUcnV0aHkoKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBwcm9jZXNzRGlzYWJsZWRDaGFuZ2UoY2hhbmdlOiBDb21wb25lbnRDaGFuZ2U8dGhpcywgYm9vbGVhbj4pOiB2b2lkIHtcbiAgICBjb25zdCB1cGRhdGVkVmFsdWU6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSBjaGFuZ2U/LmN1cnJlbnRWYWx1ZTtcblxuICAgIGlmIChpc05pbCh1cGRhdGVkVmFsdWUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5pc0Rpc2FibGVkJC5uZXh0KHVwZGF0ZWRWYWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIHByb2Nlc3NDbGlja2FibGVDaGFuZ2UoY2hhbmdlOiBDb21wb25lbnRDaGFuZ2U8dGhpcywgYm9vbGVhbj4pOiB2b2lkIHtcbiAgICBjb25zdCB1cGRhdGVkVmFsdWU6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSBjaGFuZ2U/LmN1cnJlbnRWYWx1ZTtcblxuICAgIGlmIChpc05pbCh1cGRhdGVkVmFsdWUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5pc0NsaWNrYWJsZSQubmV4dCh1cGRhdGVkVmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBwcm9jZXNzQ29sb3JDaGFuZ2UoY2hhbmdlOiBDb21wb25lbnRDaGFuZ2U8dGhpcywgVGFnS2luZD4pOiB2b2lkIHtcbiAgICBjb25zdCB1cGRhdGVkVmFsdWU6IFRhZ0tpbmQgfCB1bmRlZmluZWQgPSBjaGFuZ2U/LmN1cnJlbnRWYWx1ZTtcblxuICAgIGlmIChpc05pbCh1cGRhdGVkVmFsdWUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5raW5kJC5uZXh0KHVwZGF0ZWRWYWx1ZSk7XG4gIH1cbn1cbiJdfQ==