mirror of
https://github.com/home-assistant/frontend.git
synced 2025-07-29 12:16:39 +00:00
Convert ha-menu-button to TS (#2825)
* Convert ha-menu-button to TS * Address comments * Fix icon searcher
This commit is contained in:
parent
6d2e480ed5
commit
3e28b6f2e2
@ -1,50 +0,0 @@
|
||||
import "@polymer/paper-icon-button/paper-icon-button";
|
||||
import { html } from "@polymer/polymer/lib/utils/html-tag";
|
||||
import { PolymerElement } from "@polymer/polymer/polymer-element";
|
||||
|
||||
import EventsMixin from "../mixins/events-mixin";
|
||||
|
||||
/*
|
||||
* @appliesMixin EventsMixin
|
||||
*/
|
||||
class HaMenuButton extends EventsMixin(PolymerElement) {
|
||||
static get template() {
|
||||
return html`
|
||||
<paper-icon-button
|
||||
icon="[[_getIcon(hassio)]]"
|
||||
on-click="toggleMenu"
|
||||
></paper-icon-button>
|
||||
`;
|
||||
}
|
||||
|
||||
static get properties() {
|
||||
return {
|
||||
narrow: {
|
||||
type: Boolean,
|
||||
value: false,
|
||||
},
|
||||
|
||||
showMenu: {
|
||||
type: Boolean,
|
||||
value: false,
|
||||
},
|
||||
|
||||
hassio: {
|
||||
type: Boolean,
|
||||
value: false,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
toggleMenu(ev) {
|
||||
ev.stopPropagation();
|
||||
this.fire(this.showMenu ? "hass-close-menu" : "hass-open-menu");
|
||||
}
|
||||
|
||||
_getIcon(hassio) {
|
||||
// hass:menu
|
||||
return `${hassio ? "hassio" : "hass"}:menu`;
|
||||
}
|
||||
}
|
||||
|
||||
customElements.define("ha-menu-button", HaMenuButton);
|
44
src/components/ha-menu-button.ts
Normal file
44
src/components/ha-menu-button.ts
Normal file
@ -0,0 +1,44 @@
|
||||
import "@polymer/paper-icon-button/paper-icon-button";
|
||||
import {
|
||||
property,
|
||||
TemplateResult,
|
||||
LitElement,
|
||||
html,
|
||||
customElement,
|
||||
} from "lit-element";
|
||||
|
||||
import { fireEvent } from "../common/dom/fire_event";
|
||||
|
||||
@customElement("ha-menu-button")
|
||||
class HaMenuButton extends LitElement {
|
||||
@property({ type: Boolean })
|
||||
public showMenu = false;
|
||||
|
||||
@property({ type: Boolean })
|
||||
public hassio = false;
|
||||
|
||||
protected render(): TemplateResult | void {
|
||||
return html`
|
||||
<paper-icon-button
|
||||
.icon=${this.hassio ? "hassio:menu" : "hass:menu"}
|
||||
@click=${this._toggleMenu}
|
||||
></paper-icon-button>
|
||||
`;
|
||||
}
|
||||
|
||||
// We are not going to use ShadowDOM as we're rendering a single element
|
||||
// without any CSS used.
|
||||
protected createRenderRoot(): Element | ShadowRoot {
|
||||
return this;
|
||||
}
|
||||
|
||||
private _toggleMenu(): void {
|
||||
fireEvent(this, this.showMenu ? "hass-close-menu" : "hass-open-menu");
|
||||
}
|
||||
}
|
||||
|
||||
declare global {
|
||||
interface HTMLElementTagNameMap {
|
||||
"ha-menu-button": HaMenuButton;
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user