@coreui/angular
Version:
CoreUI Components Library for Angular
45 lines • 4.77 kB
JavaScript
import { booleanAttribute, Directive, ElementRef, inject, Input, Renderer2 } from '@angular/core';
import * as i0 from "@angular/core";
export class ThemeDirective {
#hostElement = inject(ElementRef);
#renderer = inject(Renderer2);
/**
* Add dark theme attribute.
* @type 'dark' | 'light' | undefined
*/
set colorScheme(scheme) {
!!scheme ? this.setTheme(scheme) : this.unsetTheme();
}
;
/**
* Add dark theme attribute.
* @type boolean
*/
set dark(darkTheme) {
darkTheme ? this.setTheme('dark') : this.unsetTheme();
}
;
setTheme(theme) {
if (theme) {
this.#renderer.setAttribute(this.#hostElement.nativeElement, 'data-coreui-theme', theme);
}
}
unsetTheme() {
this.#renderer.removeAttribute(this.#hostElement.nativeElement, 'data-coreui-theme');
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ThemeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.2.12", type: ThemeDirective, isStandalone: true, selector: "[cTheme]", inputs: { colorScheme: "colorScheme", dark: ["dark", "dark", booleanAttribute] }, ngImport: i0 }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ThemeDirective, decorators: [{
type: Directive,
args: [{
selector: '[cTheme]',
standalone: true
}]
}], propDecorators: { colorScheme: [{
type: Input
}], dark: [{
type: Input,
args: [{ transform: booleanAttribute }]
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi9zaGFyZWQvdGhlbWUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU1sRyxNQUFNLE9BQU8sY0FBYztJQUVoQixZQUFZLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2xDLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFFdkM7OztPQUdHO0lBQ0gsSUFBYSxXQUFXLENBQUMsTUFBb0M7UUFDM0QsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3ZELENBQUM7SUFBQSxDQUFDO0lBRUY7OztPQUdHO0lBQ0gsSUFDSSxJQUFJLENBQUMsU0FBa0I7UUFDekIsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDeEQsQ0FBQztJQUFBLENBQUM7SUFFRixRQUFRLENBQUMsS0FBYztRQUNyQixJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsbUJBQW1CLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDM0YsQ0FBQztJQUNILENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztJQUN2RixDQUFDOytHQTlCVSxjQUFjO21HQUFkLGNBQWMseUdBaUJMLGdCQUFnQjs7NEZBakJ6QixjQUFjO2tCQUoxQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxVQUFVO29CQUNwQixVQUFVLEVBQUUsSUFBSTtpQkFDakI7OEJBVWMsV0FBVztzQkFBdkIsS0FBSztnQkFTRixJQUFJO3NCQURQLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBib29sZWFuQXR0cmlidXRlLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIGluamVjdCwgSW5wdXQsIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbY1RoZW1lXScsXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgVGhlbWVEaXJlY3RpdmUge1xuXG4gIHJlYWRvbmx5ICNob3N0RWxlbWVudCA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgcmVhZG9ubHkgI3JlbmRlcmVyID0gaW5qZWN0KFJlbmRlcmVyMik7XG5cbiAgLyoqXG4gICAqIEFkZCBkYXJrIHRoZW1lIGF0dHJpYnV0ZS5cbiAgICogQHR5cGUgJ2RhcmsnIHwgJ2xpZ2h0JyB8IHVuZGVmaW5lZFxuICAgKi9cbiAgQElucHV0KCkgc2V0IGNvbG9yU2NoZW1lKHNjaGVtZTogJ2RhcmsnIHwgJ2xpZ2h0JyB8IHVuZGVmaW5lZCkge1xuICAgICEhc2NoZW1lID8gdGhpcy5zZXRUaGVtZShzY2hlbWUpIDogdGhpcy51bnNldFRoZW1lKCk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEFkZCBkYXJrIHRoZW1lIGF0dHJpYnV0ZS5cbiAgICogQHR5cGUgYm9vbGVhblxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIHNldCBkYXJrKGRhcmtUaGVtZTogYm9vbGVhbikge1xuICAgIGRhcmtUaGVtZSA/IHRoaXMuc2V0VGhlbWUoJ2RhcmsnKSA6IHRoaXMudW5zZXRUaGVtZSgpO1xuICB9O1xuXG4gIHNldFRoZW1lKHRoZW1lPzogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoZW1lKSB7XG4gICAgICB0aGlzLiNyZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy4jaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ2RhdGEtY29yZXVpLXRoZW1lJywgdGhlbWUpO1xuICAgIH1cbiAgfVxuXG4gIHVuc2V0VGhlbWUoKTogdm9pZCB7XG4gICAgdGhpcy4jcmVuZGVyZXIucmVtb3ZlQXR0cmlidXRlKHRoaXMuI2hvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdkYXRhLWNvcmV1aS10aGVtZScpO1xuICB9XG5cbn1cbiJdfQ==