UNPKG

@sheyxneo/angular-material-theme-switcher

Version:

This library will help you to use multiple themes and easily switch between them in your project.

85 lines 7.75 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Component, Input } from '@angular/core'; import { AmThemeService } from '../../service/am-theme.service'; export class ColorSwitcherComponent { /** * @param {?} amThemeService */ constructor(amThemeService) { this.amThemeService = amThemeService; this.colorTheme = ''; this.themes = []; this.isUseLibraryThemes = true; } /** * @return {?} */ ngOnInit() { if (this.isUseLibraryThemes) { this.amThemeService.themes.forEach((/** * @param {?} colorTheme * @return {?} */ colorTheme => this.themes.push(colorTheme))); if (this.colorTheme === '') { this.amThemeService.colorTheme$.subscribe((/** * @param {?} colorTheme * @return {?} */ colorTheme => this.colorTheme = colorTheme)); } } else { if (this.colorTheme === '') { this.colorTheme = this.themes[0]; } } if (this.themes.indexOf(this.colorTheme) === -1) { this.themes.push(this.colorTheme); } if (this.colorTheme !== '') { this.amThemeService.colorTheme$.next(this.colorTheme); } } /** * @param {?} colorTheme * @return {?} */ setColorTheme(colorTheme) { this.amThemeService.colorTheme$.next(colorTheme); this.colorTheme = colorTheme; } } ColorSwitcherComponent.decorators = [ { type: Component, args: [{ selector: 'am-theme-color-switcher', template: "<button *ngIf=\"themes.length > 1\" mat-icon-button [mat-menu-trigger-for]=\"themeSwitcher\" matTooltip=\"Switch themes\"\n tabindex=\"-1\">\n <mat-icon class=\"auto-flip\">format_color_fill</mat-icon>\n</button>\n\n<mat-menu #themeSwitcher=\"matMenu\">\n <mat-grid-list cols=\"2\" class=\"switcher-container\">\n <mat-grid-tile *ngFor=\"let theme of themes\">\n <button mat-button class=\"switcher\" (click)=\"$event.stopPropagation(); setColorTheme(theme)\">\n <div [attr.class]=\"'switcher-primary ' + theme\">\n <div [attr.class]=\"'switcher-accent ' + theme\"></div>\n <div [attr.class]=\"'switcher-warn ' + theme\"></div>\n <mat-icon *ngIf=\"colorTheme===theme\" class=\"center switcher-check\">brush</mat-icon>\n </div>\n </button>\n </mat-grid-tile>\n </mat-grid-list>\n</mat-menu>", styles: [".switcher-container{width:96px;height:96px;margin:0 8px;padding:0!important}.switcher{width:48px;min-width:48px!important;height:48px;padding:0!important;position:relative}.switcher-primary{width:38px;height:38px;margin:5px;border-radius:50%;position:absolute;top:0;left:0}.switcher-accent{width:20px;height:20px;border-radius:50%;position:absolute;top:10%;left:10%}.switcher-warn{width:15px;height:15px;border-radius:50%;position:absolute;top:0;left:0}.switcher-check{color:#fff;font-size:28px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}"] }] } ]; /** @nocollapse */ ColorSwitcherComponent.ctorParameters = () => [ { type: AmThemeService } ]; ColorSwitcherComponent.propDecorators = { colorTheme: [{ type: Input }], themes: [{ type: Input }], isUseLibraryThemes: [{ type: Input }] }; if (false) { /** @type {?} */ ColorSwitcherComponent.prototype.colorTheme; /** @type {?} */ ColorSwitcherComponent.prototype.themes; /** @type {?} */ ColorSwitcherComponent.prototype.isUseLibraryThemes; /** * @type {?} * @private */ ColorSwitcherComponent.prototype.amThemeService; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3Itc3dpdGNoZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNoZXl4bmVvL2FuZ3VsYXItbWF0ZXJpYWwtdGhlbWUtc3dpdGNoZXIvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50L2NvbG9yLXN3aXRjaGVyL2NvbG9yLXN3aXRjaGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBRU4sTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBT2hFLE1BQU0sT0FBTyxzQkFBc0I7Ozs7SUFRakMsWUFBb0IsY0FBOEI7UUFBOUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBTnpDLGVBQVUsR0FBVyxFQUFFLENBQUM7UUFFeEIsV0FBTSxHQUFhLEVBQUUsQ0FBQztRQUV0Qix1QkFBa0IsR0FBWSxJQUFJLENBQUM7SUFFVSxDQUFDOzs7O0lBRXZELFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtZQUMzQixJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxPQUFPOzs7O1lBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBQyxDQUFDO1lBRS9FLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxFQUFFLEVBQUU7Z0JBQzFCLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLFNBQVM7Ozs7Z0JBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsRUFBQyxDQUFDO2FBQ3ZGO1NBQ0Y7YUFBTTtZQUNMLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxFQUFFLEVBQUU7Z0JBQzFCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNsQztTQUNGO1FBRUQsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDL0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ25DO1FBRUQsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLEVBQUUsRUFBRTtZQUMxQixJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ3ZEO0lBQ0gsQ0FBQzs7Ozs7SUFFRCxhQUFhLENBQUMsVUFBa0I7UUFDOUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO0lBQy9CLENBQUM7OztZQXhDRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHlCQUF5QjtnQkFDbkMsdzZCQUE4Qzs7YUFFL0M7Ozs7WUFOUSxjQUFjOzs7eUJBU3BCLEtBQUs7cUJBRUwsS0FBSztpQ0FFTCxLQUFLOzs7O0lBSk4sNENBQWlDOztJQUVqQyx3Q0FBK0I7O0lBRS9CLG9EQUE0Qzs7Ozs7SUFFaEMsZ0RBQXNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25Jbml0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBBbVRoZW1lU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvYW0tdGhlbWUuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FtLXRoZW1lLWNvbG9yLXN3aXRjaGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbG9yLXN3aXRjaGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY29sb3Itc3dpdGNoZXIuY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIENvbG9yU3dpdGNoZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIEBJbnB1dCgpIGNvbG9yVGhlbWU6IHN0cmluZyA9ICcnO1xuXG4gIEBJbnB1dCgpIHRoZW1lczogc3RyaW5nW10gPSBbXTtcblxuICBASW5wdXQoKSBpc1VzZUxpYnJhcnlUaGVtZXM6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYW1UaGVtZVNlcnZpY2U6IEFtVGhlbWVTZXJ2aWNlKSB7IH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy5pc1VzZUxpYnJhcnlUaGVtZXMpIHtcbiAgICAgIHRoaXMuYW1UaGVtZVNlcnZpY2UudGhlbWVzLmZvckVhY2goY29sb3JUaGVtZSA9PiB0aGlzLnRoZW1lcy5wdXNoKGNvbG9yVGhlbWUpKTtcblxuICAgICAgaWYgKHRoaXMuY29sb3JUaGVtZSA9PT0gJycpIHtcbiAgICAgICAgdGhpcy5hbVRoZW1lU2VydmljZS5jb2xvclRoZW1lJC5zdWJzY3JpYmUoY29sb3JUaGVtZSA9PiB0aGlzLmNvbG9yVGhlbWUgPSBjb2xvclRoZW1lKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuY29sb3JUaGVtZSA9PT0gJycpIHtcbiAgICAgICAgdGhpcy5jb2xvclRoZW1lID0gdGhpcy50aGVtZXNbMF07XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudGhlbWVzLmluZGV4T2YodGhpcy5jb2xvclRoZW1lKSA9PT0gLTEpIHtcbiAgICAgIHRoaXMudGhlbWVzLnB1c2godGhpcy5jb2xvclRoZW1lKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb2xvclRoZW1lICE9PSAnJykge1xuICAgICAgdGhpcy5hbVRoZW1lU2VydmljZS5jb2xvclRoZW1lJC5uZXh0KHRoaXMuY29sb3JUaGVtZSk7XG4gICAgfVxuICB9XG5cbiAgc2V0Q29sb3JUaGVtZShjb2xvclRoZW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLmFtVGhlbWVTZXJ2aWNlLmNvbG9yVGhlbWUkLm5leHQoY29sb3JUaGVtZSk7XG4gICAgdGhpcy5jb2xvclRoZW1lID0gY29sb3JUaGVtZTtcbiAgfVxuXG59XG4iXX0=