@junte/ui
Version:
Quality Angular UI components kit
67 lines • 7.64 kB
JavaScript
var ThemeSwitcherComponent_1;
import { __decorate, __metadata } from "tslib";
import { Component, forwardRef, HostBinding, HostListener } from '@angular/core';
import { ControlValueAccessor, FormBuilder, FormControl, NG_VALUE_ACCESSOR } from '@angular/forms';
import { NGXLogger } from 'ngx-logger';
import { Theme } from '../../core/enums/theme';
import { UI } from '../../core/enums/ui';
let ThemeSwitcherComponent = ThemeSwitcherComponent_1 = class ThemeSwitcherComponent {
constructor(logger, fb) {
this.logger = logger;
this.fb = fb;
this.host = 'jnt-theme-switcher-host';
this.theme = Theme.light;
this.ui = UI;
this.themeControl = new FormControl();
this.switcher = this.fb.group({
theme: this.themeControl
});
this.onChange = () => this.logger.error('value accessor is not registered');
this.onTouched = () => this.logger.error('value accessor is not registered');
this.registerOnChange = fn => this.onChange = fn;
this.registerOnTouched = fn => this.onTouched = fn;
this.onBlur = () => this.onTouched();
}
ngOnInit() {
this.themeControl.valueChanges.subscribe(checked => {
this.theme = checked ? Theme.light : Theme.dark;
this.onChange(this.theme);
});
}
writeValue(value) {
this.themeControl.setValue(!value || value === Theme.light, { emitEvent: false });
}
};
ThemeSwitcherComponent.ctorParameters = () => [
{ type: NGXLogger },
{ type: FormBuilder }
];
__decorate([
HostBinding('attr.host'),
__metadata("design:type", Object)
], ThemeSwitcherComponent.prototype, "host", void 0);
__decorate([
HostBinding('attr.theme'),
__metadata("design:type", Object)
], ThemeSwitcherComponent.prototype, "theme", void 0);
__decorate([
HostListener('blur'),
__metadata("design:type", Object)
], ThemeSwitcherComponent.prototype, "onBlur", void 0);
ThemeSwitcherComponent = ThemeSwitcherComponent_1 = __decorate([
Component({
selector: 'jnt-theme-switcher',
template: "<form child-of=\"jnt-theme-switcher-host\" [formGroup]=\"switcher\">\n <jnt-switch child-of=\"jnt-theme-switcher-host\" data-switch formControlName=\"theme\"\n [icons]=\"{on: ui.icons.solar, off: ui.icons.moon}\"\n [tags]=\"{on: 'Light', off: 'Dark'}\">\n\n </jnt-switch>\n</form>",
providers: [
{
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef(() => ThemeSwitcherComponent_1),
multi: true
}
]
}),
__metadata("design:paramtypes", [NGXLogger,
FormBuilder])
], ThemeSwitcherComponent);
export { ThemeSwitcherComponent };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWUtc3dpdGNoZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGp1bnRlL3VpLyIsInNvdXJjZXMiOlsibGliL3NoYXJlZC90aGVtZS1zd2l0Y2hlci90aGVtZS1zd2l0Y2hlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkcsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN2QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDL0MsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBYXpDLElBQWEsc0JBQXNCLDhCQUFuQyxNQUFhLHNCQUFzQjtJQWtCakMsWUFBb0IsTUFBaUIsRUFDakIsRUFBZTtRQURmLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDakIsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQWpCQSxTQUFJLEdBQUcseUJBQXlCLENBQUM7UUFFekMsVUFBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFFL0MsT0FBRSxHQUFHLEVBQUUsQ0FBQztRQUNSLGlCQUFZLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUNqQyxhQUFRLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDdkIsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZO1NBQ3pCLENBQUMsQ0FBQztRQUVILGFBQVEsR0FBeUIsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsa0NBQWtDLENBQUMsQ0FBQztRQUM3RixjQUFTLEdBQWUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsa0NBQWtDLENBQUMsQ0FBQztRQUNwRixxQkFBZ0IsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQzVDLHNCQUFpQixHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDeEIsV0FBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUl0RCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNqRCxJQUFJLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztZQUNoRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxVQUFVLENBQUMsS0FBSztRQUNkLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxJQUFJLEtBQUssS0FBSyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUM7SUFDbEYsQ0FBQztDQUNGLENBQUE7O1lBZDZCLFNBQVM7WUFDYixXQUFXOztBQWpCVDtJQUF6QixXQUFXLENBQUMsV0FBVyxDQUFDOztvREFBMkM7QUFFekM7SUFBMUIsV0FBVyxDQUFDLFlBQVksQ0FBQzs7cURBQXFCO0FBWXpCO0lBQXJCLFlBQVksQ0FBQyxNQUFNLENBQUM7O3NEQUFpQztBQWhCM0Msc0JBQXNCO0lBWGxDLFNBQVMsQ0FBQztRQUNULFFBQVEsRUFBRSxvQkFBb0I7UUFDOUIsZ1VBQWlEO1FBQ2pELFNBQVMsRUFBRTtZQUNUO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsd0JBQXNCLENBQUM7Z0JBQ3JELEtBQUssRUFBRSxJQUFJO2FBQ1o7U0FDRjtLQUNGLENBQUM7cUNBbUI0QixTQUFTO1FBQ2IsV0FBVztHQW5CeEIsc0JBQXNCLENBZ0NsQztTQWhDWSxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGZvcndhcmRSZWYsIEhvc3RCaW5kaW5nLCBIb3N0TGlzdGVuZXIsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBOR1hMb2dnZXIgfSBmcm9tICduZ3gtbG9nZ2VyJztcbmltcG9ydCB7IFRoZW1lIH0gZnJvbSAnLi4vLi4vY29yZS9lbnVtcy90aGVtZSc7XG5pbXBvcnQgeyBVSSB9IGZyb20gJy4uLy4uL2NvcmUvZW51bXMvdWknO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdqbnQtdGhlbWUtc3dpdGNoZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vdGhlbWUtc3dpdGNoZXIuZW5jYXBzdWxhdGVkLmh0bWwnLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFRoZW1lU3dpdGNoZXJDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgVGhlbWVTd2l0Y2hlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuXG4gIEBIb3N0QmluZGluZygnYXR0ci5ob3N0JykgcmVhZG9ubHkgaG9zdCA9ICdqbnQtdGhlbWUtc3dpdGNoZXItaG9zdCc7XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLnRoZW1lJykgdGhlbWUgPSBUaGVtZS5saWdodDtcblxuICB1aSA9IFVJO1xuICB0aGVtZUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcbiAgc3dpdGNoZXIgPSB0aGlzLmZiLmdyb3VwKHtcbiAgICB0aGVtZTogdGhpcy50aGVtZUNvbnRyb2xcbiAgfSk7XG5cbiAgb25DaGFuZ2U6ICh2YWx1ZTogYW55KSA9PiB2b2lkID0gKCkgPT4gdGhpcy5sb2dnZXIuZXJyb3IoJ3ZhbHVlIGFjY2Vzc29yIGlzIG5vdCByZWdpc3RlcmVkJyk7XG4gIG9uVG91Y2hlZDogKCkgPT4gdm9pZCA9ICgpID0+IHRoaXMubG9nZ2VyLmVycm9yKCd2YWx1ZSBhY2Nlc3NvciBpcyBub3QgcmVnaXN0ZXJlZCcpO1xuICByZWdpc3Rlck9uQ2hhbmdlID0gZm4gPT4gdGhpcy5vbkNoYW5nZSA9IGZuO1xuICByZWdpc3Rlck9uVG91Y2hlZCA9IGZuID0+IHRoaXMub25Ub3VjaGVkID0gZm47XG4gIEBIb3N0TGlzdGVuZXIoJ2JsdXInKSBvbkJsdXIgPSAoKSA9PiB0aGlzLm9uVG91Y2hlZCgpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbG9nZ2VyOiBOR1hMb2dnZXIsXG4gICAgICAgICAgICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyKSB7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnRoZW1lQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKGNoZWNrZWQgPT4ge1xuICAgICAgdGhpcy50aGVtZSA9IGNoZWNrZWQgPyBUaGVtZS5saWdodCA6IFRoZW1lLmRhcms7XG4gICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudGhlbWUpO1xuICAgIH0pO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZSkge1xuICAgIHRoaXMudGhlbWVDb250cm9sLnNldFZhbHVlKCF2YWx1ZSB8fCB2YWx1ZSA9PT0gVGhlbWUubGlnaHQsIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gIH1cbn1cbiJdfQ==