diff --git a/src/panels/config/cloud/account/cloud-account.ts b/src/panels/config/cloud/account/cloud-account.ts index 82730ce21c..dbbf4cb611 100644 --- a/src/panels/config/cloud/account/cloud-account.ts +++ b/src/panels/config/cloud/account/cloud-account.ts @@ -204,6 +204,7 @@ export class CloudAccount extends SubscribeMixin(LitElement) { diff --git a/src/panels/config/cloud/account/cloud-tts-pref.ts b/src/panels/config/cloud/account/cloud-tts-pref.ts index 8adc58e737..59370ae919 100644 --- a/src/panels/config/cloud/account/cloud-tts-pref.ts +++ b/src/panels/config/cloud/account/cloud-tts-pref.ts @@ -1,6 +1,7 @@ import "@material/mwc-button"; import { css, html, LitElement, nothing } from "lit"; +import { mdiContentCopy } from "@mdi/js"; import { customElement, property, state } from "lit/decorators"; import memoizeOne from "memoize-one"; import { fireEvent } from "../../../../common/dom/fire_event"; @@ -20,6 +21,8 @@ import { import { showAlertDialog } from "../../../../dialogs/generic/show-dialog-box"; import type { HomeAssistant } from "../../../../types"; import { showTryTtsDialog } from "./show-dialog-cloud-tts-try"; +import { copyToClipboard } from "../../../../common/util/copy-clipboard"; +import { showToast } from "../../../../util/toast"; export const getCloudTtsSupportedVoices = ( language: string, @@ -46,6 +49,8 @@ export class CloudTTSPref extends LitElement { @property({ attribute: false }) public cloudStatus?: CloudStatusLoggedIn; + @property({ type: Boolean, reflect: true }) public narrow = false; + @state() private savingPreferences = false; @state() private ttsInfo?: CloudTTSInfo; @@ -103,6 +108,25 @@ export class CloudTTSPref extends LitElement {
+
+
+ ${this.hass.localize( + "ui.components.media-browser.tts.selected_voice_id" + )} +
+ ${defaultVoice[1]} + ${this.narrow + ? nothing + : html` + + `} +
+
${this.hass.localize("ui.panel.config.cloud.account.tts.try")} @@ -196,6 +220,14 @@ export class CloudTTSPref extends LitElement { } } + private async _copyVoiceId(ev) { + ev.preventDefault(); + await copyToClipboard(this.cloudStatus!.prefs.tts_default_voice[1]); + showToast(this, { + message: this.hass.localize("ui.common.copied_clipboard"), + }); + } + static styles = css` a { color: var(--primary-color); @@ -226,7 +258,34 @@ export class CloudTTSPref extends LitElement { } .card-actions { display: flex; - flex-direction: row-reverse; + align-items: center; + } + code { + margin-left: 6px; + font-weight: var(--ha-font-weight-bold); + } + .voice-id { + display: flex; + align-items: center; + font-size: var(--ha-font-size-s); + color: var(--secondary-text-color); + --mdc-icon-size: 14px; + --mdc-icon-button-size: 24px; + } + :host([narrow]) .voice-id { + flex-direction: column; + font-size: var(--ha-font-size-xs); + align-items: start; + align-items: left; + } + :host([narrow]) .label { + text-transform: uppercase; + } + :host([narrow]) code { + margin-left: 0; + } + .flex { + flex: 1; } `; }