diff --git a/src/components/ha-dialog.ts b/src/components/ha-dialog.ts
index 76e1efc245..31691ed8d7 100644
--- a/src/components/ha-dialog.ts
+++ b/src/components/ha-dialog.ts
@@ -5,6 +5,7 @@ import "./ha-icon-button";
import { css, CSSResult, customElement, html } from "lit-element";
import type { Constructor, HomeAssistant } from "../types";
import { mdiClose } from "@mdi/js";
+import { computeRTL } from "../common/util/compute_rtl";
const MwcDialog = customElements.get("mwc-dialog") as Constructor
`}
+ .dir=${computeRTLDirection(this.hass)}
>
@@ -163,6 +167,10 @@ class CloudAccount extends EventsMixin(LocalizeMixin(PolymerElement)) {
type: Object,
value: null,
},
+ _rtlDirection: {
+ type: Boolean,
+ computed: "_computeRTLDirection(hass)",
+ },
};
}
@@ -215,6 +223,10 @@ class CloudAccount extends EventsMixin(LocalizeMixin(PolymerElement)) {
return description;
}
+
+ _computeRTLDirection(hass) {
+ return computeRTLDirection(hass);
+ }
}
customElements.define("cloud-account", CloudAccount);
diff --git a/src/panels/config/cloud/account/cloud-alexa-pref.ts b/src/panels/config/cloud/account/cloud-alexa-pref.ts
index bedd66fe3e..8fae8a1895 100644
--- a/src/panels/config/cloud/account/cloud-alexa-pref.ts
+++ b/src/panels/config/cloud/account/cloud-alexa-pref.ts
@@ -167,6 +167,10 @@ export class CloudAlexaPref extends LitElement {
right: 24px;
top: 32px;
}
+ :host([dir="rtl"]) .switch {
+ right: auto;
+ left: 24px;
+ }
.card-actions {
display: flex;
}
diff --git a/src/panels/config/cloud/account/cloud-google-pref.ts b/src/panels/config/cloud/account/cloud-google-pref.ts
index f701a27e8c..ed9db0a768 100644
--- a/src/panels/config/cloud/account/cloud-google-pref.ts
+++ b/src/panels/config/cloud/account/cloud-google-pref.ts
@@ -205,6 +205,10 @@ export class CloudGooglePref extends LitElement {
right: 24px;
top: 32px;
}
+ :host([dir="rtl"]) .switch {
+ right: auto;
+ left: 24px;
+ }
ha-call-api-button {
color: var(--primary-color);
font-weight: 500;
diff --git a/src/panels/config/cloud/account/cloud-remote-pref.ts b/src/panels/config/cloud/account/cloud-remote-pref.ts
index 7455d1d9bc..c2c72c1ed7 100644
--- a/src/panels/config/cloud/account/cloud-remote-pref.ts
+++ b/src/panels/config/cloud/account/cloud-remote-pref.ts
@@ -150,6 +150,10 @@ export class CloudRemotePref extends LitElement {
right: 24px;
top: 32px;
}
+ :host([dir="rtl"]) .switch {
+ right: auto;
+ left: 24px;
+ }
.card-actions {
display: flex;
}
diff --git a/src/panels/config/cloud/alexa/cloud-alexa.ts b/src/panels/config/cloud/alexa/cloud-alexa.ts
index e0218135b6..5a3ae1ebd2 100644
--- a/src/panels/config/cloud/alexa/cloud-alexa.ts
+++ b/src/panels/config/cloud/alexa/cloud-alexa.ts
@@ -34,6 +34,7 @@ import "../../../../layouts/hass-loading-screen";
import "../../../../layouts/hass-subpage";
import type { HomeAssistant } from "../../../../types";
import "../../../../components/ha-formfield";
+import { computeRTLDirection } from "../../../../common/util/compute_rtl";
const DEFAULT_CONFIG_EXPOSE = true;
const IGNORE_INTERFACES = ["Alexa.EndpointHealth"];
@@ -132,6 +133,7 @@ class CloudAlexa extends LitElement {
.label=${this.hass!.localize(
"ui.panel.config.cloud.alexa.expose"
)}
+ .dir=${computeRTLDirection(this.hass!)}
>
.content {
padding-bottom: 24px;
- direction: ltr;
}
ha-card {
diff --git a/src/panels/config/cloud/google-assistant/cloud-google-assistant.ts b/src/panels/config/cloud/google-assistant/cloud-google-assistant.ts
index a6738488cc..84e3c77d1c 100644
--- a/src/panels/config/cloud/google-assistant/cloud-google-assistant.ts
+++ b/src/panels/config/cloud/google-assistant/cloud-google-assistant.ts
@@ -39,6 +39,7 @@ import "../../../../layouts/hass-subpage";
import type { HomeAssistant } from "../../../../types";
import { showToast } from "../../../../util/toast";
import "../../../../components/ha-formfield";
+import { computeRTLDirection } from "../../../../common/util/compute_rtl";
const DEFAULT_CONFIG_EXPOSE = true;
@@ -83,6 +84,7 @@ class CloudGoogleAssistant extends LitElement {
const filterFunc = this._getEntityFilterFunc(
this.cloudStatus.google_entities
);
+ const dir = computeRTLDirection(this.hass!);
// We will only generate `isInitialExposed` during first render.
// On each subsequent render we will use the same set so that cards
@@ -128,32 +130,38 @@ class CloudGoogleAssistant extends LitElement {
.map((trait) => trait.substr(trait.lastIndexOf(".") + 1))
.join(", ")}
-
-
+
-
-
+
+
+
+
${entity.might_2fa
? html`
-
-
-
+
+
+
+
+
`
: ""}
@@ -377,9 +385,6 @@ class CloudGoogleAssistant extends LitElement {
state-info {
cursor: pointer;
}
- ha-formfield {
- display: block;
- }
ha-switch {
padding: 8px 0;
}
diff --git a/src/panels/config/cloud/login/cloud-login.js b/src/panels/config/cloud/login/cloud-login.js
index c251be6ffe..c5ac31c43d 100644
--- a/src/panels/config/cloud/login/cloud-login.js
+++ b/src/panels/config/cloud/login/cloud-login.js
@@ -30,7 +30,6 @@ class CloudLogin extends LocalizeMixin(