@sheyxneo/angular-material-theme-switcher
Version:
This library will help you to use multiple themes and easily switch between them in your project.
92 lines • 8.26 kB
JavaScript
/**
* @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';
var ColorSwitcherComponent = /** @class */ (function () {
function ColorSwitcherComponent(amThemeService) {
this.amThemeService = amThemeService;
this.colorTheme = '';
this.themes = [];
this.isUseLibraryThemes = true;
}
/**
* @return {?}
*/
ColorSwitcherComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () {
var _this = this;
if (this.isUseLibraryThemes) {
this.amThemeService.themes.forEach((/**
* @param {?} colorTheme
* @return {?}
*/
function (colorTheme) { return _this.themes.push(colorTheme); }));
if (this.colorTheme === '') {
this.amThemeService.colorTheme$.subscribe((/**
* @param {?} colorTheme
* @return {?}
*/
function (colorTheme) { return _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 {?}
*/
ColorSwitcherComponent.prototype.setColorTheme = /**
* @param {?} colorTheme
* @return {?}
*/
function (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 = function () { return [
{ type: AmThemeService }
]; };
ColorSwitcherComponent.propDecorators = {
colorTheme: [{ type: Input }],
themes: [{ type: Input }],
isUseLibraryThemes: [{ type: Input }]
};
return ColorSwitcherComponent;
}());
export { ColorSwitcherComponent };
if (false) {
/** @type {?} */
ColorSwitcherComponent.prototype.colorTheme;
/** @type {?} */
ColorSwitcherComponent.prototype.themes;
/** @type {?} */
ColorSwitcherComponent.prototype.isUseLibraryThemes;
/**
* @type {?}
* @private
*/
ColorSwitcherComponent.prototype.amThemeService;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3Itc3dpdGNoZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNoZXl4bmVvL2FuZ3VsYXItbWF0ZXJpYWwtdGhlbWUtc3dpdGNoZXIvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50L2NvbG9yLXN3aXRjaGVyL2NvbG9yLXN3aXRjaGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBRU4sTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRWhFO0lBYUUsZ0NBQW9CLGNBQThCO1FBQTlCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQU56QyxlQUFVLEdBQVcsRUFBRSxDQUFDO1FBRXhCLFdBQU0sR0FBYSxFQUFFLENBQUM7UUFFdEIsdUJBQWtCLEdBQVksSUFBSSxDQUFDO0lBRVUsQ0FBQzs7OztJQUV2RCx5Q0FBUTs7O0lBQVI7UUFBQSxpQkFvQkM7UUFuQkMsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUU7WUFDM0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsT0FBTzs7OztZQUFDLFVBQUEsVUFBVSxJQUFJLE9BQUEsS0FBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQTVCLENBQTRCLEVBQUMsQ0FBQztZQUUvRSxJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssRUFBRSxFQUFFO2dCQUMxQixJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxTQUFTOzs7O2dCQUFDLFVBQUEsVUFBVSxJQUFJLE9BQUEsS0FBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLEVBQTVCLENBQTRCLEVBQUMsQ0FBQzthQUN2RjtTQUNGO2FBQU07WUFDTCxJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssRUFBRSxFQUFFO2dCQUMxQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDbEM7U0FDRjtRQUVELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQy9DLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUNuQztRQUVELElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxFQUFFLEVBQUU7WUFDMUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUN2RDtJQUNILENBQUM7Ozs7O0lBRUQsOENBQWE7Ozs7SUFBYixVQUFjLFVBQWtCO1FBQzlCLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztJQUMvQixDQUFDOztnQkF4Q0YsU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSx5QkFBeUI7b0JBQ25DLHc2QkFBOEM7O2lCQUUvQzs7OztnQkFOUSxjQUFjOzs7NkJBU3BCLEtBQUs7eUJBRUwsS0FBSztxQ0FFTCxLQUFLOztJQStCUiw2QkFBQztDQUFBLEFBMUNELElBMENDO1NBckNZLHNCQUFzQjs7O0lBRWpDLDRDQUFpQzs7SUFFakMsd0NBQStCOztJQUUvQixvREFBNEM7Ozs7O0lBRWhDLGdEQUFzQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uSW5pdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQW1UaGVtZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL2FtLXRoZW1lLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhbS10aGVtZS1jb2xvci1zd2l0Y2hlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb2xvci1zd2l0Y2hlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NvbG9yLXN3aXRjaGVyLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBDb2xvclN3aXRjaGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBASW5wdXQoKSBjb2xvclRoZW1lOiBzdHJpbmcgPSAnJztcblxuICBASW5wdXQoKSB0aGVtZXM6IHN0cmluZ1tdID0gW107XG5cbiAgQElucHV0KCkgaXNVc2VMaWJyYXJ5VGhlbWVzOiBib29sZWFuID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFtVGhlbWVTZXJ2aWNlOiBBbVRoZW1lU2VydmljZSkgeyB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMuaXNVc2VMaWJyYXJ5VGhlbWVzKSB7XG4gICAgICB0aGlzLmFtVGhlbWVTZXJ2aWNlLnRoZW1lcy5mb3JFYWNoKGNvbG9yVGhlbWUgPT4gdGhpcy50aGVtZXMucHVzaChjb2xvclRoZW1lKSk7XG5cbiAgICAgIGlmICh0aGlzLmNvbG9yVGhlbWUgPT09ICcnKSB7XG4gICAgICAgIHRoaXMuYW1UaGVtZVNlcnZpY2UuY29sb3JUaGVtZSQuc3Vic2NyaWJlKGNvbG9yVGhlbWUgPT4gdGhpcy5jb2xvclRoZW1lID0gY29sb3JUaGVtZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLmNvbG9yVGhlbWUgPT09ICcnKSB7XG4gICAgICAgIHRoaXMuY29sb3JUaGVtZSA9IHRoaXMudGhlbWVzWzBdO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLnRoZW1lcy5pbmRleE9mKHRoaXMuY29sb3JUaGVtZSkgPT09IC0xKSB7XG4gICAgICB0aGlzLnRoZW1lcy5wdXNoKHRoaXMuY29sb3JUaGVtZSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29sb3JUaGVtZSAhPT0gJycpIHtcbiAgICAgIHRoaXMuYW1UaGVtZVNlcnZpY2UuY29sb3JUaGVtZSQubmV4dCh0aGlzLmNvbG9yVGhlbWUpO1xuICAgIH1cbiAgfVxuXG4gIHNldENvbG9yVGhlbWUoY29sb3JUaGVtZTogc3RyaW5nKSB7XG4gICAgdGhpcy5hbVRoZW1lU2VydmljZS5jb2xvclRoZW1lJC5uZXh0KGNvbG9yVGhlbWUpO1xuICAgIHRoaXMuY29sb3JUaGVtZSA9IGNvbG9yVGhlbWU7XG4gIH1cblxufVxuIl19