UNPKG

dynamic-theme-lib

Version:

A flexible and powerful theme management library for Angular applications that allows dynamic color management and theme switching.

52 lines 6.29 kB
import { Directive, Input } from '@angular/core'; import * as i0 from "@angular/core"; import * as i1 from "../services/colour.service"; export class TextColorDirective { constructor(el, colorService) { this.el = el; this.colorService = colorService; this.libTextColour = ''; // The input property for text color name this.currentColor = ''; } ngOnInit() { // Subscribe to color changes and update dynamically this.colorSubscription = this.colorService.colors$.subscribe(() => { this.applyColor(); }); // Initial color application this.applyColor(); } ngOnChanges(changes) { if (changes['libTextColour'] && !changes['libTextColour'].firstChange) { this.applyColor(); } } applyColor() { if (!this.libTextColour) { console.warn('No text color variable specified'); return; } const newColor = this.colorService.getColor(this.libTextColour); if (newColor && newColor !== this.currentColor) { this.currentColor = newColor; this.el.nativeElement.style.color = newColor; } } ngOnDestroy() { // Unsubscribe to avoid memory leaks if (this.colorSubscription) { this.colorSubscription.unsubscribe(); } } } TextColorDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TextColorDirective, deps: [{ token: i0.ElementRef }, { token: i1.ColourService }], target: i0.ɵɵFactoryTarget.Directive }); TextColorDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.17", type: TextColorDirective, selector: "[libTextColour]", inputs: { libTextColour: "libTextColour" }, usesOnChanges: true, ngImport: i0 }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TextColorDirective, decorators: [{ type: Directive, args: [{ selector: '[libTextColour]' }] }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.ColourService }]; }, propDecorators: { libTextColour: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1jb2xvdXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZHluYW1pYy10aGVtZS1saWIvc3JjL2xpYi9kaXJlY3RpdmVzL3RleHQtY29sb3VyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBK0MsTUFBTSxlQUFlLENBQUM7OztBQU8xRyxNQUFNLE9BQU8sa0JBQWtCO0lBSzdCLFlBQW9CLEVBQWMsRUFBVSxZQUEyQjtRQUFuRCxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQVUsaUJBQVksR0FBWixZQUFZLENBQWU7UUFKOUQsa0JBQWEsR0FBVyxFQUFFLENBQUMsQ0FBQyx5Q0FBeUM7UUFFdEUsaUJBQVksR0FBVyxFQUFFLENBQUM7SUFFd0MsQ0FBQztJQUUzRSxRQUFRO1FBQ04sb0RBQW9EO1FBQ3BELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2hFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNwQixDQUFDLENBQUMsQ0FBQztRQUVILDRCQUE0QjtRQUM1QixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQyxXQUFXLEVBQUU7WUFDckUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1NBQ25CO0lBQ0gsQ0FBQztJQUVPLFVBQVU7UUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDdkIsT0FBTyxDQUFDLElBQUksQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO1lBQ2pELE9BQU87U0FDUjtRQUVELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNoRSxJQUFJLFFBQVEsSUFBSSxRQUFRLEtBQUssSUFBSSxDQUFDLFlBQVksRUFBRTtZQUM5QyxJQUFJLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQztZQUM3QixJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQztTQUM5QztJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1Qsb0NBQW9DO1FBQ3BDLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQzFCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUN0QztJQUNILENBQUM7O2dIQXpDVSxrQkFBa0I7b0dBQWxCLGtCQUFrQjs0RkFBbEIsa0JBQWtCO2tCQUg5QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxpQkFBaUI7aUJBQzVCOzZIQUVVLGFBQWE7c0JBQXJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvbG91clNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9jb2xvdXIuc2VydmljZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tsaWJUZXh0Q29sb3VyXSdcbn0pXG5leHBvcnQgY2xhc3MgVGV4dENvbG9yRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIGxpYlRleHRDb2xvdXI6IHN0cmluZyA9ICcnOyAvLyBUaGUgaW5wdXQgcHJvcGVydHkgZm9yIHRleHQgY29sb3IgbmFtZVxuICBwcml2YXRlIGNvbG9yU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgY3VycmVudENvbG9yOiBzdHJpbmcgPSAnJztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsOiBFbGVtZW50UmVmLCBwcml2YXRlIGNvbG9yU2VydmljZTogQ29sb3VyU2VydmljZSkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAvLyBTdWJzY3JpYmUgdG8gY29sb3IgY2hhbmdlcyBhbmQgdXBkYXRlIGR5bmFtaWNhbGx5XG4gICAgdGhpcy5jb2xvclN1YnNjcmlwdGlvbiA9IHRoaXMuY29sb3JTZXJ2aWNlLmNvbG9ycyQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuYXBwbHlDb2xvcigpO1xuICAgIH0pO1xuICAgIFxuICAgIC8vIEluaXRpYWwgY29sb3IgYXBwbGljYXRpb25cbiAgICB0aGlzLmFwcGx5Q29sb3IoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1snbGliVGV4dENvbG91ciddICYmICFjaGFuZ2VzWydsaWJUZXh0Q29sb3VyJ10uZmlyc3RDaGFuZ2UpIHtcbiAgICAgIHRoaXMuYXBwbHlDb2xvcigpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlDb2xvcigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMubGliVGV4dENvbG91cikge1xuICAgICAgY29uc29sZS53YXJuKCdObyB0ZXh0IGNvbG9yIHZhcmlhYmxlIHNwZWNpZmllZCcpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG5ld0NvbG9yID0gdGhpcy5jb2xvclNlcnZpY2UuZ2V0Q29sb3IodGhpcy5saWJUZXh0Q29sb3VyKTtcbiAgICBpZiAobmV3Q29sb3IgJiYgbmV3Q29sb3IgIT09IHRoaXMuY3VycmVudENvbG9yKSB7XG4gICAgICB0aGlzLmN1cnJlbnRDb2xvciA9IG5ld0NvbG9yO1xuICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnN0eWxlLmNvbG9yID0gbmV3Q29sb3I7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgLy8gVW5zdWJzY3JpYmUgdG8gYXZvaWQgbWVtb3J5IGxlYWtzXG4gICAgaWYgKHRoaXMuY29sb3JTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuY29sb3JTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==