diff --git a/public/__init__.py b/public/__init__.py
index 1debde5485..493110db57 100644
--- a/public/__init__.py
+++ b/public/__init__.py
@@ -2,6 +2,6 @@
from pathlib import Path
-def where():
+def where() -> Path:
"""Return path to the frontend."""
return Path(__file__).parent
diff --git a/public/py.typed b/public/py.typed
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/setup.cfg b/setup.cfg
index f3efcd2597..f1b3450973 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -1,6 +1,6 @@
[metadata]
name = home-assistant-frontend
-version = 20220224.0
+version = 20220226.0
author = The Home Assistant Authors
author_email = hello@home-assistant.io
license = Apache-2.0
@@ -19,3 +19,8 @@ python_requires = >= 3.4.0
[options.packages.find]
include =
hass_frontend*
+
+[mypy]
+python_version = 3.4
+show_error_codes = True
+strict = True
diff --git a/src/dialogs/more-info/controls/more-info-media_player.ts b/src/dialogs/more-info/controls/more-info-media_player.ts
index 521ea4499a..916257695a 100644
--- a/src/dialogs/more-info/controls/more-info-media_player.ts
+++ b/src/dialogs/more-info/controls/more-info-media_player.ts
@@ -52,19 +52,21 @@ class MoreInfoMediaPlayer extends LitElement {
return html`
- ${controls!.map(
- (control) => html`
-
-
- `
- )}
+ ${!controls
+ ? ""
+ : controls.map(
+ (control) => html`
+
+
+ `
+ )}
${supportsFeature(stateObj, SUPPORT_BROWSE_MEDIA)
? html`
diff --git a/src/panels/config/automation/action/types/ha-automation-action-device_id.ts b/src/panels/config/automation/action/types/ha-automation-action-device_id.ts
index c837304ea9..96bfd08fc5 100644
--- a/src/panels/config/automation/action/types/ha-automation-action-device_id.ts
+++ b/src/panels/config/automation/action/types/ha-automation-action-device_id.ts
@@ -145,7 +145,7 @@ export class HaDeviceAction extends LitElement {
static styles = css`
ha-device-picker {
display: block;
- margin-bottom: 24px;
+ margin-bottom: 16px;
}
ha-device-action-picker {
display: block;
diff --git a/src/panels/config/automation/action/types/ha-automation-action-event.ts b/src/panels/config/automation/action/types/ha-automation-action-event.ts
index ee133fa7da..e022bb5f50 100644
--- a/src/panels/config/automation/action/types/ha-automation-action-event.ts
+++ b/src/panels/config/automation/action/types/ha-automation-action-event.ts
@@ -50,7 +50,7 @@ export class HaEventAction extends LitElement implements ActionElement {
-
newValue[key] === undefined || newValue[key] === ""
diff --git a/src/panels/config/dashboard/ha-config-dashboard.ts b/src/panels/config/dashboard/ha-config-dashboard.ts
index 8c77470c7f..2f67454a9c 100644
--- a/src/panels/config/dashboard/ha-config-dashboard.ts
+++ b/src/panels/config/dashboard/ha-config-dashboard.ts
@@ -17,7 +17,7 @@ import {
PropertyValues,
TemplateResult,
} from "lit";
-import { customElement, property } from "lit/decorators";
+import { customElement, property, state } from "lit/decorators";
import { isComponentLoaded } from "../../../common/config/is_component_loaded";
import "../../../components/ha-card";
import "../../../components/ha-icon-next";
@@ -118,6 +118,8 @@ class HaConfigDashboard extends LitElement {
@property() public showAdvanced!: boolean;
+ @state() private _tip?: string;
+
private _notifyUpdates = false;
protected render(): TemplateResult {
@@ -204,7 +206,7 @@ class HaConfigDashboard extends LitElement {
Tip!
- ${randomTip(this.hass)}
+ ${this._tip}
@@ -214,6 +216,10 @@ class HaConfigDashboard extends LitElement {
protected override updated(changedProps: PropertyValues): void {
super.updated(changedProps);
+ if (!this._tip && changedProps.has("hass")) {
+ this._tip = randomTip(this.hass);
+ }
+
if (!changedProps.has("supervisorUpdates") || !this._notifyUpdates) {
return;
}
diff --git a/src/panels/developer-tools/template/developer-tools-template.ts b/src/panels/developer-tools/template/developer-tools-template.ts
index 74a5b8027d..97fa25cc84 100644
--- a/src/panels/developer-tools/template/developer-tools-template.ts
+++ b/src/panels/developer-tools/template/developer-tools-template.ts
@@ -289,6 +289,12 @@ class HaPanelDevTemplate extends LitElement {
.rendered.error {
color: var(--error-color);
}
+
+ @media all and (max-width: 870px) {
+ .render-pane {
+ max-width: 100%;
+ }
+ }
`,
];
}
diff --git a/src/panels/media-browser/browser-media-player.ts b/src/panels/media-browser/browser-media-player.ts
index 182f944e3f..bc88414a98 100644
--- a/src/panels/media-browser/browser-media-player.ts
+++ b/src/panels/media-browser/browser-media-player.ts
@@ -25,6 +25,7 @@ export class BrowserMediaPlayer {
private onChange: () => void
) {
const player = new Audio(this.resolved.url);
+ player.autoplay = true;
player.volume = volume;
player.addEventListener("play", this._handleChange);
player.addEventListener("playing", () => {
@@ -33,15 +34,7 @@ export class BrowserMediaPlayer {
});
player.addEventListener("pause", this._handleChange);
player.addEventListener("ended", this._handleChange);
- player.addEventListener("canplaythrough", () => {
- if (this._removed) {
- return;
- }
- if (this.buffering) {
- player.play();
- }
- this.onChange();
- });
+ player.addEventListener("canplaythrough", this._handleChange);
this.player = player;
}
diff --git a/src/translations/en.json b/src/translations/en.json
index d080bac456..d1ec5a56b3 100755
--- a/src/translations/en.json
+++ b/src/translations/en.json
@@ -1863,7 +1863,7 @@
"event": {
"label": "Fire event",
"event": "[%key:ui::panel::config::automation::editor::triggers::type::event::label%]",
- "service_data": "[%key:ui::components::service-control::service_data%]"
+ "event_data": "[%key:ui::panel::config::automation::editor::triggers::type::event::event_data%]"
},
"device_id": {
"label": "Device",