diff --git a/cast/src/launcher/layout/hc-cast.ts b/cast/src/launcher/layout/hc-cast.ts index 02a5ed2b5b..25c1d3bdb2 100644 --- a/cast/src/launcher/layout/hc-cast.ts +++ b/cast/src/launcher/layout/hc-cast.ts @@ -158,16 +158,6 @@ class HcCast extends LitElement { protected updated(changedProps) { super.updated(changedProps); - if (this.castManager && this.castManager.status) { - const selectEl = this.shadowRoot!.querySelector("select"); - if (selectEl) { - this.shadowRoot!.querySelector("select")!.value = - this.castManager.castConnectedToOurHass && - !this.castManager.status.showDemo - ? this.castManager.status.lovelacePath || "" - : ""; - } - } this.toggleAttribute( "hide-icons", this.lovelaceConfig diff --git a/cast/src/receiver/layout/hc-lovelace.ts b/cast/src/receiver/layout/hc-lovelace.ts index 03e45d18be..d106579609 100644 --- a/cast/src/receiver/layout/hc-lovelace.ts +++ b/cast/src/receiver/layout/hc-lovelace.ts @@ -16,8 +16,10 @@ import "./hc-launch-screen"; @customElement("hc-lovelace") class HcLovelace extends LitElement { @property() public hass!: HomeAssistant; + @property() public lovelaceConfig!: LovelaceConfig; - @property() public viewPath?: string; + + @property() public viewPath?: string | number; protected render(): TemplateResult | void { const index = this._viewIndex; @@ -64,7 +66,7 @@ class HcLovelace extends LitElement { private get _viewIndex() { const selectedView = this.viewPath; - const selectedViewInt = parseInt(selectedView!, 10); + const selectedViewInt = parseInt(selectedView as string, 10); for (let i = 0; i < this.lovelaceConfig.views.length; i++) { if ( this.lovelaceConfig.views[i].path === selectedView || diff --git a/cast/src/receiver/layout/hc-main.ts b/cast/src/receiver/layout/hc-main.ts index b67bf96077..0171dae5bb 100644 --- a/cast/src/receiver/layout/hc-main.ts +++ b/cast/src/receiver/layout/hc-main.ts @@ -1,10 +1,10 @@ -import { HassElement } from "../../../../src/state/hass-element"; import { getAuth, createConnection, UnsubscribeFunc, } from "home-assistant-js-websocket"; import { customElement, TemplateResult, html, property } from "lit-element"; +import { HassElement } from "../../../../src/state/hass-element"; import { HassMessage, ConnectMessage, @@ -26,9 +26,13 @@ import { isNavigationClick } from "../../../../src/common/dom/is-navigation-clic @customElement("hc-main") export class HcMain extends HassElement { @property() private _showDemo = false; + @property() private _lovelaceConfig?: LovelaceConfig; - @property() private _lovelacePath: string | null = null; + + @property() private _lovelacePath: string | number | null = null; + @property() private _error?: string; + private _unsubLovelace?: UnsubscribeFunc; public processIncomingMessage(msg: HassMessage) { @@ -53,7 +57,7 @@ export class HcMain extends HassElement { `; } - if (!this._lovelaceConfig || !this._lovelacePath) { + if (!this._lovelaceConfig || this._lovelacePath === null) { return html` { if (cast.castConnectedToOurHass) { unsub(); resolve(); - return; } }); diff --git a/src/cast/sender_messages.ts b/src/cast/sender_messages.ts index 83e85b80bc..2dc7ab2438 100644 --- a/src/cast/sender_messages.ts +++ b/src/cast/sender_messages.ts @@ -7,7 +7,7 @@ export interface ReceiverStatusMessage extends BaseCastMessage { connected: boolean; showDemo: boolean; hassUrl?: string; - lovelacePath?: string | null; + lovelacePath?: string | number | null; } export type SenderMessage = ReceiverStatusMessage; diff --git a/src/panels/lovelace/entity-rows/types.ts b/src/panels/lovelace/entity-rows/types.ts index eada7193b5..19ba7b134f 100644 --- a/src/panels/lovelace/entity-rows/types.ts +++ b/src/panels/lovelace/entity-rows/types.ts @@ -30,7 +30,7 @@ export interface CastConfig { type: "cast"; icon: string; name: string; - view: string; + view: string | number; // Hide the row if either unsupported browser or no API available. hide_if_unavailable: boolean; } diff --git a/src/panels/lovelace/special-rows/hui-cast-row.ts b/src/panels/lovelace/special-rows/hui-cast-row.ts index 02034f8bc3..a71ae295fc 100644 --- a/src/panels/lovelace/special-rows/hui-cast-row.ts +++ b/src/panels/lovelace/special-rows/hui-cast-row.ts @@ -23,11 +23,13 @@ class HuiCastRow extends LitElement implements EntityRow { public hass!: HomeAssistant; @property() private _config?: CastConfig; + @property() private _castManager?: CastManager | null; + @property() private _noHTTPS = false; public setConfig(config: CastConfig): void { - if (!config || !config.view) { + if (!config || config.view === undefined || config.view === null) { throw new Error("Invalid Configuration: 'view' required"); } @@ -66,6 +68,8 @@ class HuiCastRow extends LitElement implements EntityRow { SHOW @@ -120,6 +124,7 @@ class HuiCastRow extends LitElement implements EntityRow { :host { display: flex; align-items: center; + overflow: visible; } ha-icon { padding: 8px; @@ -127,7 +132,6 @@ class HuiCastRow extends LitElement implements EntityRow { } .flex { flex: 1; - overflow: hidden; margin-left: 16px; display: flex; justify-content: space-between; @@ -144,6 +148,7 @@ class HuiCastRow extends LitElement implements EntityRow { align-items: center; } google-cast-launcher { + margin-right: 0.57em; cursor: pointer; display: inline-block; height: 24px;