diff --git a/hassio/src/dialogs/snapshot/dialog-hassio-snapshot.ts b/hassio/src/dialogs/snapshot/dialog-hassio-snapshot.ts index f844c22289..e9f0291280 100755 --- a/hassio/src/dialogs/snapshot/dialog-hassio-snapshot.ts +++ b/hassio/src/dialogs/snapshot/dialog-hassio-snapshot.ts @@ -10,6 +10,7 @@ import { internalProperty, LitElement, property, + query, TemplateResult, } from "lit-element"; import { fireEvent } from "../../../../src/common/dom/fire_event"; @@ -90,6 +91,8 @@ class HassioSnapshotDialog extends LitElement { @internalProperty() private _restoreHass: boolean | null | undefined = true; + @query("#download", true) private _downloadBtn!: HTMLAnchorElement; + public async showDialog(params: HassioSnapshotDialogParams) { this._snapshot = await fetchHassioSnapshotInfo(this.hass, params.slug); this._folders = _computeFolders( @@ -231,6 +234,7 @@ class HassioSnapshotDialog extends LitElement { Delete Snapshot ` : ""} + `; } @@ -269,6 +273,9 @@ class HassioSnapshotDialog extends LitElement { --mdc-theme-primary: var(--mdc-theme-surface); flex-shrink: 0; } + #download { + display: none; + } /* overrule the ha-style-dialog max-height on small screens */ @media all and (max-width: 450px), all and (max-height: 500px) { ha-header-bar { @@ -457,12 +464,10 @@ class HassioSnapshotDialog extends LitElement { } const name = this._computeName.replace(/[^a-z0-9]+/gi, "_"); - const a = document.createElement("a"); - a.href = signedPath.path; - a.download = `Hass_io_${name}.tar`; - this.shadowRoot!.appendChild(a); - a.click(); - this.shadowRoot!.removeChild(a); + + this._downloadBtn.href = signedPath.path; + this._downloadBtn.download = `Snapshot_${name}.tar`; + this._downloadBtn.click(); } private get _computeName() { @@ -487,6 +492,8 @@ class HassioSnapshotDialog extends LitElement { } private _closeDialog() { + this._downloadBtn.href = ""; + this._downloadBtn.download = ""; this._dialogParams = undefined; this._snapshot = undefined; this._snapshotPassword = "";