Fix downloads on mobile (#9375)

This commit is contained in:
Joakim Sørensen 2021-06-07 10:15:43 +02:00 committed by GitHub
parent 1e6e99e3c7
commit 342020b420
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 26 additions and 15 deletions

View File

@ -22,6 +22,7 @@ import {
import { HassDialog } from "../../../../src/dialogs/make-dialog-manager";
import { haStyle, haStyleDialog } from "../../../../src/resources/styles";
import { HomeAssistant } from "../../../../src/types";
import { fileDownload } from "../../../../src/util/file_download";
import "../../components/supervisor-snapshot-content";
import type { SupervisorSnapshotContent } from "../../components/supervisor-snapshot-content";
import { HassioSnapshotDialogParams } from "./show-dialog-hassio-snapshot";
@ -288,12 +289,11 @@ class HassioSnapshotDialog
}
}
const a = document.createElement("a");
a.href = signedPath.path;
a.download = `home_assistant_snapshot_${slugify(this._computeName)}.tar`;
this.shadowRoot!.appendChild(a);
a.click();
this.shadowRoot!.removeChild(a);
fileDownload(
this,
signedPath.path,
`home_assistant_snapshot_${slugify(this._computeName)}.tar`
);
}
private get _computeName() {

View File

@ -7,14 +7,14 @@ import { afterNextRender } from "../common/util/render-status";
import { FrontendLocaleData } from "../data/translation";
import { getValueInPercentage, normalize } from "../util/calculate";
// Workaround for https://github.com/home-assistant/frontend/issues/6467
const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
const getAngle = (value: number, min: number, max: number) => {
const percentage = getValueInPercentage(normalize(value, min, max), min, max);
return (percentage * 180) / 100;
};
// Workaround for https://github.com/home-assistant/frontend/issues/6467
const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
@customElement("ha-gauge")
export class Gauge extends LitElement {
@property({ type: Number }) public min = 0;

View File

@ -24,6 +24,7 @@ import {
import "../../../../../layouts/hass-tabs-subpage";
import { haStyle } from "../../../../../resources/styles";
import type { HomeAssistant, Route } from "../../../../../types";
import { fileDownload } from "../../../../../util/file_download";
import "../../../ha-config-section";
import { showZWaveJSAddNodeDialog } from "./show-dialog-zwave_js-add-node";
import { showZWaveJSRemoveNodeDialog } from "./show-dialog-zwave_js-remove-node";
@ -312,12 +313,7 @@ class ZWaveJSConfigDashboard extends LitElement {
return;
}
const a = document.createElement("a");
a.href = signedPath.path;
a.download = `zwave_js_dump.jsonl`;
this.shadowRoot!.appendChild(a);
a.click();
this.shadowRoot!.removeChild(a);
fileDownload(this, signedPath.path, `zwave_js_dump.jsonl`);
}
static get styles(): CSSResultGroup {

View File

@ -2,6 +2,7 @@
const isSafari14 = /^((?!chrome|android).)*version\/14\.0\s.*safari/i.test(
navigator.userAgent
);
if (isSafari14) {
const origAttachShadow = window.Element.prototype.attachShadow;
window.Element.prototype.attachShadow = function (init) {

14
src/util/file_download.ts Normal file
View File

@ -0,0 +1,14 @@
export const fileDownload = (
element: HTMLElement,
href: string,
filename: string
): void => {
const a = document.createElement("a");
a.target = "_blank";
a.href = href;
a.download = filename;
element.shadowRoot!.appendChild(a);
a.dispatchEvent(new MouseEvent("click"));
element.shadowRoot!.removeChild(a);
};

0
src/util/is_safari.ts Normal file
View File