diff --git a/hassio/src/addon-view/hassio-addon-info.js b/hassio/src/addon-view/hassio-addon-info.js
index 3a987088af..80db47a5ea 100644
--- a/hassio/src/addon-view/hassio-addon-info.js
+++ b/hassio/src/addon-view/hassio-addon-info.js
@@ -12,6 +12,7 @@ import "../../../src/resources/ha-style";
import EventsMixin from "../../../src/mixins/events-mixin";
import { navigate } from "../../../src/common/navigate";
+import { showHassioMarkdownDialog } from "../dialogs/markdown/show-dialog-hassio-markdown";
import "../components/hassio-card-content";
const PERMIS_DESC = {
@@ -517,7 +518,7 @@ class HassioAddonInfo extends EventsMixin(PolymerElement) {
showMoreInfo(e) {
const id = e.target.getAttribute("id");
- this.fire("hassio-markdown-dialog", {
+ showHassioMarkdownDialog(this, {
title: PERMIS_DESC[id].title,
content: PERMIS_DESC[id].description,
});
@@ -528,7 +529,7 @@ class HassioAddonInfo extends EventsMixin(PolymerElement) {
.callApi("get", `hassio/addons/${this.addonSlug}/changelog`)
.then((resp) => resp, () => "Error getting changelog")
.then((content) => {
- this.fire("hassio-markdown-dialog", {
+ showHassioMarkdownDialog(this, {
title: "Changelog",
content: content,
});
diff --git a/hassio/src/addon-view/hassio-addon-view.js b/hassio/src/addon-view/hassio-addon-view.js
index b4f1505b4d..ae4b1b6b29 100644
--- a/hassio/src/addon-view/hassio-addon-view.js
+++ b/hassio/src/addon-view/hassio-addon-view.js
@@ -1,14 +1,11 @@
import "@polymer/app-layout/app-header-layout/app-header-layout";
import "@polymer/app-layout/app-header/app-header";
import "@polymer/app-layout/app-toolbar/app-toolbar";
-import "@polymer/app-route/app-route";
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 "../../../src/components/ha-menu-button";
import "../../../src/resources/ha-style";
-import "../hassio-markdown-dialog";
import "./hassio-addon-audio";
import "./hassio-addon-config";
import "./hassio-addon-info";
@@ -51,16 +48,9 @@ class HassioAddonView extends PolymerElement {
}
}
-
-
@@ -93,50 +83,38 @@ class HassioAddonView extends PolymerElement {
-
-
`;
}
static get properties() {
return {
hass: Object,
- route: Object,
- routeData: {
+ route: {
type: Object,
observer: "routeDataChanged",
},
- routeMatches: Boolean,
- addon: Object,
-
- markdownTitle: String,
- markdownContent: {
+ addonSlug: {
type: String,
- value: "",
+ computed: "_computeSlug(route)",
},
+ addon: Object,
};
}
ready() {
super.ready();
this.addEventListener("hass-api-called", (ev) => this.apiCalled(ev));
- this.addEventListener("hassio-markdown-dialog", (ev) =>
- this.openMarkdown(ev)
- );
}
apiCalled(ev) {
@@ -147,13 +125,13 @@ class HassioAddonView extends PolymerElement {
if (path.substr(path.lastIndexOf("/") + 1) === "uninstall") {
this.backTapped();
} else {
- this.routeDataChanged(this.routeData);
+ this.routeDataChanged(this.route);
}
}
routeDataChanged(routeData) {
- if (!this.routeMatches || !routeData || !routeData.slug) return;
- this.hass.callApi("get", `hassio/addons/${routeData.slug}/info`).then(
+ const addon = routeData.path.substr(1);
+ this.hass.callApi("get", `hassio/addons/${addon}/info`).then(
(info) => {
this.addon = info.data;
},
@@ -167,12 +145,8 @@ class HassioAddonView extends PolymerElement {
history.back();
}
- openMarkdown(ev) {
- this.setProperties({
- markdownTitle: ev.detail.title,
- markdownContent: ev.detail.content,
- });
- this.shadowRoot.querySelector("hassio-markdown-dialog").openDialog();
+ _computeSlug(route) {
+ return route.path.substr(1);
}
}
diff --git a/hassio/src/hassio-markdown-dialog.js b/hassio/src/dialogs/markdown/dialog-hassio-markdown.ts
similarity index 79%
rename from hassio/src/hassio-markdown-dialog.js
rename to hassio/src/dialogs/markdown/dialog-hassio-markdown.ts
index be7f2d000a..87eb12e765 100644
--- a/hassio/src/hassio-markdown-dialog.js
+++ b/hassio/src/dialogs/markdown/dialog-hassio-markdown.ts
@@ -4,10 +4,13 @@ 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 "../../src/components/ha-markdown";
-import "../../src/resources/ha-style";
-import "../../src/components/dialog/ha-paper-dialog";
+import "../../../../src/components/ha-markdown";
+import "../../../../src/resources/ha-style";
+import "../../../../src/components/dialog/ha-paper-dialog";
+import { customElement } from "lit-element";
+import { PaperDialogElement } from "@polymer/paper-dialog";
+@customElement("dialog-hassio-markdown")
class HassioMarkdownDialog extends PolymerElement {
static get template() {
return html`
@@ -72,8 +75,14 @@ class HassioMarkdownDialog extends PolymerElement {
};
}
- openDialog() {
- this.$.dialog.open();
+ public showDialog(params) {
+ this.setProperties(params);
+ (this.$.dialog as PaperDialogElement).open();
+ }
+}
+
+declare global {
+ interface HTMLElementTagNameMap {
+ "dialog-hassio-markdown": HassioMarkdownDialog;
}
}
-customElements.define("hassio-markdown-dialog", HassioMarkdownDialog);
diff --git a/hassio/src/dialogs/markdown/show-dialog-hassio-markdown.ts b/hassio/src/dialogs/markdown/show-dialog-hassio-markdown.ts
new file mode 100644
index 0000000000..c3e9713689
--- /dev/null
+++ b/hassio/src/dialogs/markdown/show-dialog-hassio-markdown.ts
@@ -0,0 +1,18 @@
+import { fireEvent } from "../../../../src/common/dom/fire_event";
+
+export interface HassioMarkdownDialogParams {
+ title: string;
+ content: string;
+}
+
+export const showHassioMarkdownDialog = (
+ element: HTMLElement,
+ dialogParams: HassioMarkdownDialogParams
+): void => {
+ fireEvent(element, "show-dialog", {
+ dialogTag: "dialog-hassio-markdown",
+ dialogImport: () =>
+ import(/* webpackChunkName: "dialog-hassio-markdown" */ "./dialog-hassio-markdown"),
+ dialogParams,
+ });
+};
diff --git a/hassio/src/snapshots/hassio-snapshot.js b/hassio/src/dialogs/snapshot/dialog-hassio-snapshot.ts
similarity index 73%
rename from hassio/src/snapshots/hassio-snapshot.js
rename to hassio/src/dialogs/snapshot/dialog-hassio-snapshot.ts
index 6ade909c43..a784ec21a4 100644
--- a/hassio/src/snapshots/hassio-snapshot.js
+++ b/hassio/src/dialogs/snapshot/dialog-hassio-snapshot.ts
@@ -6,12 +6,24 @@ import "@polymer/paper-icon-button/paper-icon-button";
import "@polymer/paper-input/paper-input";
import { html } from "@polymer/polymer/lib/utils/html-tag";
import { PolymerElement } from "@polymer/polymer/polymer-element";
-import { getSignedPath } from "../../../src/auth/data";
+import { getSignedPath } from "../../../../src/auth/data";
-import "../../../src/resources/ha-style";
-import "../../../src/components/dialog/ha-paper-dialog";
+import "../../../../src/resources/ha-style";
+import "../../../../src/components/dialog/ha-paper-dialog";
+import { customElement } from "lit-element";
+import { HomeAssistant } from "../../../../src/types";
+import { PaperDialogElement } from "@polymer/paper-dialog";
+import { HassioSnapshotDialogParams } from "./show-dialog-hassio-snapshot";
+
+@customElement("dialog-hassio-snapshot")
+class HassioSnapshotDialog extends PolymerElement {
+ public hass!: HomeAssistant;
+ protected error?: string;
+ private snapshot?: any;
+ private dialogParams?: HassioSnapshotDialogParams;
+ private restoreHass!: boolean;
+ private snapshotPassword!: string;
-class HassioSnapshot extends PolymerElement {
static get template() {
return html`