diff --git a/src/components/ha-dialog.ts b/src/components/ha-dialog.ts index 6a6d35a031..d341cf2b8c 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; @@ -13,6 +14,7 @@ export const createCloseHeading = (hass: HomeAssistant, title: string) => html` @@ -48,6 +50,10 @@ export class HaDialog extends MwcDialog { text-decoration: none; color: inherit; } + mwc-icon-button[rtl].header_button { + right: auto; + left: 16px; + } `, ]; } diff --git a/src/components/ha-formfield.ts b/src/components/ha-formfield.ts index 45462d0689..211ee8d0b0 100644 --- a/src/components/ha-formfield.ts +++ b/src/components/ha-formfield.ts @@ -17,9 +17,9 @@ export class HaFormfield extends MwcFormfield { ::slotted(ha-switch) { margin-right: 10px; } - [dir="rtl"] ::slotted(ha-switch), - ::slotted(ha-switch)[dir="rtl"] { + :host([dir="rtl"]:not([alignEnd])) ::slotted(ha-switch) { margin-left: 10px; + margin-right: auto; } `, ]; diff --git a/src/dialogs/config-entry-system-options/dialog-config-entry-system-options.ts b/src/dialogs/config-entry-system-options/dialog-config-entry-system-options.ts index cb2f95a287..04055aeefa 100644 --- a/src/dialogs/config-entry-system-options/dialog-config-entry-system-options.ts +++ b/src/dialogs/config-entry-system-options/dialog-config-entry-system-options.ts @@ -22,6 +22,7 @@ import type { PolymerChangedEvent } from "../../polymer-types"; import { haStyleDialog } from "../../resources/styles"; import type { HomeAssistant } from "../../types"; import { ConfigEntrySystemOptionsDialogParams } from "./show-dialog-config-entry-system-options"; +import { computeRTLDirection } from "../../common/util/compute_rtl"; @customElement("dialog-config-entry-system-options") class DialogConfigEntrySystemOptions extends LitElement { @@ -99,6 +100,7 @@ class DialogConfigEntrySystemOptions extends LitElement { ) || this._params.entry.domain )}

`} + .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..69332699a7 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..e96500a6a7 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; @@ -128,32 +129,38 @@ class CloudGoogleAssistant extends LitElement { .map((trait) => trait.substr(trait.lastIndexOf(".") + 1)) .join(", ")} - - + - - + + + + ${entity.might_2fa ? html` - - - +
+ + + +
` : ""} @@ -377,9 +384,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(