From da10da79b3e07d27dda80d23d0d14684ad1d52f9 Mon Sep 17 00:00:00 2001 From: Yosi Levy Date: Sun, 5 Jul 2020 06:23:35 +0300 Subject: [PATCH] RTL fixes - cloud section, ha-formfield, some missing + (mwc-fab) --- src/components/ha-dialog.ts | 6 ++ src/components/ha-formfield.ts | 4 +- .../dialog-config-entry-system-options.ts | 2 + .../config/cloud/account/cloud-account.js | 14 +++- .../config/cloud/account/cloud-alexa-pref.ts | 4 + .../config/cloud/account/cloud-google-pref.ts | 4 + .../config/cloud/account/cloud-remote-pref.ts | 4 + src/panels/config/cloud/alexa/cloud-alexa.ts | 2 + .../forgot-password/cloud-forgot-password.js | 1 - .../cloud-google-assistant.ts | 56 +++++++------- src/panels/config/cloud/login/cloud-login.js | 1 - .../config/cloud/register/cloud-register.js | 4 - .../mqtt/dialog-mqtt-device-debug-info.ts | 50 ++++++------ .../dialog-lovelace-dashboard-detail.ts | 50 ++++++------ .../ha-config-lovelace-dashboards.ts | 6 ++ src/panels/config/users/dialog-add-user.ts | 2 + src/panels/config/users/dialog-user-detail.ts | 2 + src/panels/config/zone/dialog-zone-detail.ts | 2 + src/panels/config/zone/ha-config-zone.ts | 6 ++ .../config-elements/hui-button-card-editor.ts | 51 +++++++------ .../hui-entities-card-editor.ts | 2 + .../config-elements/hui-gauge-card-editor.ts | 2 + .../config-elements/hui-glance-card-editor.ts | 76 +++++++++++-------- .../config-elements/hui-map-card-editor.ts | 2 + .../hui-picture-entity-card-editor.ts | 51 +++++++------ .../hui-weather-forecast-card-editor.ts | 2 + .../lovelace/editor/hui-dialog-save-config.ts | 2 + .../editor/view-editor/hui-view-editor.ts | 4 +- 28 files changed, 252 insertions(+), 160 deletions(-) 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(