UNPKG

ui-lit

Version:

UI Elements on LIT

44 lines (43 loc) 1.37 kB
import { __decorate } from "tslib"; import { LitElement, html, css } from 'lit'; import { customElement, state } from 'lit/decorators.js'; let ThemeSwitcher = class ThemeSwitcher extends LitElement { constructor() { super(...arguments); this.theme = localStorage.appTheme || 'light'; this._onChanged = (e) => { this.theme = e.detail; }; } connectedCallback() { super.connectedCallback(); document.addEventListener('themeHasChanged', this._onChanged); } disconnectedCallback() { super.disconnectedCallback(); document.removeEventListener('themeHasChanged', this._onChanged); } render() { return html `<lit-button @click = "${this._themeChange}"> <slot><lit-icon icon = "${this.theme === 'dark' ? 'sun' : 'moon'}"></lit-icon></slot> </lit-button>`; } _themeChange() { this.dispatchEvent(new CustomEvent('themeSwitch', { composed: true, bubbles: true, })); } }; ThemeSwitcher.styles = css ` lit-button{ width: 100%; } `; __decorate([ state() ], ThemeSwitcher.prototype, "theme", void 0); ThemeSwitcher = __decorate([ customElement("lit-theme-switcher") ], ThemeSwitcher); export { ThemeSwitcher };