UNPKG

@coreui/angular

Version:

CoreUI Components Library for Angular

45 lines 4.77 kB
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==