diff --git a/src/components/media-player/ha-media-player-browse.ts b/src/components/media-player/ha-media-player-browse.ts
index f63f3592e4..62fe5d1236 100644
--- a/src/components/media-player/ha-media-player-browse.ts
+++ b/src/components/media-player/ha-media-player-browse.ts
@@ -26,7 +26,7 @@ import type { MediaPlayerItem } from "../../data/media-player";
import {
browseLocalMediaPlayer,
browseMediaPlayer,
- BROWSER_SOURCE,
+ BROWSER_PLAYER,
MediaClassBrowserSettings,
MediaPickedEvent,
MediaPlayerBrowseAction,
@@ -109,9 +109,11 @@ export class HaMediaPlayerBrowse extends LitElement {
text: this._renderError(this._error),
});
} else {
- return html`
- ${this._renderError(this._error)}
-
`;
+ return html`
+
+ ${this._renderError(this._error)}
+
+ `;
}
}
@@ -236,7 +238,7 @@ export class HaMediaPlayerBrowse extends LitElement {
${this._error
? html`
-
+
${this._renderError(this._error)}
`
@@ -457,7 +459,7 @@ export class HaMediaPlayerBrowse extends LitElement {
mediaContentType?: string
): Promise
{
const itemData =
- this.entityId !== BROWSER_SOURCE
+ this.entityId !== BROWSER_PLAYER
? await browseMediaPlayer(
this.hass,
this.entityId,
@@ -524,7 +526,7 @@ export class HaMediaPlayerBrowse extends LitElement {
`;
}
- return html`err.message`;
+ return html`${err.message}`;
}
static get styles(): CSSResultArray {
diff --git a/src/data/media-player.ts b/src/data/media-player.ts
index 70b29c2d63..393c06cb71 100644
--- a/src/data/media-player.ts
+++ b/src/data/media-player.ts
@@ -1,23 +1,23 @@
+import {
+ mdiAccountMusic,
+ mdiAccountMusicOutline,
+ mdiAlbum,
+ mdiApplication,
+ mdiDramaMasks,
+ mdiFileMusic,
+ mdiFolder,
+ mdiGamepadVariant,
+ mdiImage,
+ mdiMovie,
+ mdiMusic,
+ mdiPlaylistMusic,
+ mdiPodcast,
+ mdiTelevisionClassic,
+ mdiVideo,
+ mdiWeb,
+} from "@mdi/js";
import type { HassEntity } from "home-assistant-js-websocket";
import type { HomeAssistant } from "../types";
-import {
- mdiFolder,
- mdiPlaylistMusic,
- mdiFileMusic,
- mdiAlbum,
- mdiMusic,
- mdiTelevisionClassic,
- mdiMovie,
- mdiVideo,
- mdiImage,
- mdiWeb,
- mdiGamepadVariant,
- mdiAccountMusic,
- mdiPodcast,
- mdiApplication,
- mdiAccountMusicOutline,
- mdiDramaMasks,
-} from "@mdi/js";
export const SUPPORT_PAUSE = 1;
export const SUPPORT_SEEK = 2;
@@ -38,7 +38,7 @@ export const CONTRAST_RATIO = 4.5;
export type MediaPlayerBrowseAction = "pick" | "play";
-export const BROWSER_SOURCE = "browser";
+export const BROWSER_PLAYER = "browser";
export type MediaClassBrowserSetting = {
icon: string;
diff --git a/src/panels/media-browser/ha-panel-media-browser.ts b/src/panels/media-browser/ha-panel-media-browser.ts
index 8fa84cba67..32e8661d52 100644
--- a/src/panels/media-browser/ha-panel-media-browser.ts
+++ b/src/panels/media-browser/ha-panel-media-browser.ts
@@ -17,7 +17,7 @@ import { supportsFeature } from "../../common/entity/supports-feature";
import "../../components/ha-menu-button";
import "../../components/media-player/ha-media-player-browse";
import {
- BROWSER_SOURCE,
+ BROWSER_PLAYER,
MediaPickedEvent,
SUPPORT_BROWSE_MEDIA,
} from "../../data/media-player";
@@ -36,7 +36,7 @@ class PanelMediaBrowser extends LitElement {
// @ts-ignore
@LocalStorage("mediaBrowseEntityId", true)
- private _entityId = BROWSER_SOURCE;
+ private _entityId = BROWSER_PLAYER;
protected render(): TemplateResult {
const stateObj = this._entityId
@@ -44,7 +44,7 @@ class PanelMediaBrowser extends LitElement {
: undefined;
const title =
- this._entityId === BROWSER_SOURCE
+ this._entityId === BROWSER_PLAYER
? `${this.hass.localize("ui.components.media-browser.web-browser")}`
: stateObj?.attributes.friendly_name
? `${stateObj?.attributes.friendly_name}`
@@ -95,7 +95,7 @@ class PanelMediaBrowser extends LitElement {
ev: HASSDomEvent
): Promise {
const item = ev.detail.item;
- if (this._entityId === BROWSER_SOURCE) {
+ if (this._entityId === BROWSER_PLAYER) {
const resolvedUrl: any = await this.hass.callWS({
type: "media_source/resolve_media",
media_content_id: item.media_content_id,
diff --git a/src/panels/media-browser/hui-dialog-select-media-player.ts b/src/panels/media-browser/hui-dialog-select-media-player.ts
index 03b53b6a2d..46865415da 100644
--- a/src/panels/media-browser/hui-dialog-select-media-player.ts
+++ b/src/panels/media-browser/hui-dialog-select-media-player.ts
@@ -1,3 +1,5 @@
+import "@material/mwc-list/mwc-list";
+import "@material/mwc-list/mwc-list-item";
import "@polymer/paper-item/paper-item";
import "@polymer/paper-listbox/paper-listbox";
import {
@@ -13,7 +15,8 @@ import { fireEvent } from "../../common/dom/fire_event";
import { computeStateName } from "../../common/entity/compute_state_name";
import { compare } from "../../common/string/compare";
import { createCloseHeading } from "../../components/ha-dialog";
-import { BROWSER_SOURCE } from "../../data/media-player";
+import { UNAVAILABLE_STATES } from "../../data/entity";
+import { BROWSER_PLAYER } from "../../data/media-player";
import { haStyleDialog } from "../../resources/styles";
import type { HomeAssistant } from "../../types";
import type { SelectMediaPlayerDialogParams } from "./show-select-media-source-dialog";
@@ -49,30 +52,31 @@ export class HuiDialogSelectMediaPlayer extends LitElement {
)}
@closed=${this.closeDialog}
>
-
+ ${this.hass.localize(
"ui.components.media-browser.web-browser"
- )}
${this._params.mediaSources
.sort((a, b) => compare(computeStateName(a), computeStateName(b)))
.map(
(source) => html`
- ${computeStateName(source)}${computeStateName(source)}
`
)}
-
+
`;
}
- private _selectSource(ev: CustomEvent): void {
- const entityId = ev.detail.item.itemName;
+ private _selectPlayer(ev: CustomEvent): void {
+ const entityId = (ev.currentTarget as any).player;
this._params!.sourceSelectedCallback(entityId);
this.closeDialog();
}
@@ -84,8 +88,8 @@ export class HuiDialogSelectMediaPlayer extends LitElement {
ha-dialog {
--dialog-content-padding: 0 24px 20px;
}
- paper-item {
- cursor: pointer;
+ mwc-list-item[disabled] {
+ --mdc-theme-text-primary-on-background: var(--disabled-text-color);
}
`,
];