1
0
mirror of https://github.com/home-assistant/frontend.git synced 2025-12-20 02:38:53 +00:00

Fix auth language picker styles (#27805)

This commit is contained in:
Wendelin
2025-11-05 10:54:36 +01:00
committed by GitHub
parent b60dd7f15d
commit 06475382e8
3 changed files with 68 additions and 62 deletions

View File

@@ -1,22 +1,25 @@
import "@material/mwc-linear-progress"; import "@material/mwc-linear-progress";
import { type PropertyValues, css, html, nothing } from "lit"; import { mdiOpenInNew } from "@mdi/js";
import { css, html, nothing, type PropertyValues } from "lit";
import { customElement, property, state } from "lit/decorators"; import { customElement, property, state } from "lit/decorators";
import { extractSearchParam } from "../../src/common/url/search-params";
import "../../src/components/ha-alert"; import "../../src/components/ha-alert";
import "../../src/components/ha-button";
import "../../src/components/ha-fade-in"; import "../../src/components/ha-fade-in";
import "../../src/components/ha-spinner"; import "../../src/components/ha-spinner";
import { haStyle } from "../../src/resources/styles"; import "../../src/components/ha-svg-icon";
import "../../src/onboarding/onboarding-welcome-links";
import "./components/landing-page-network";
import "./components/landing-page-logs";
import { extractSearchParam } from "../../src/common/url/search-params";
import { onBoardingStyles } from "../../src/onboarding/styles";
import { makeDialogManager } from "../../src/dialogs/make-dialog-manager"; import { makeDialogManager } from "../../src/dialogs/make-dialog-manager";
import { LandingPageBaseElement } from "./landing-page-base-element"; import "../../src/onboarding/onboarding-welcome-links";
import { onBoardingStyles } from "../../src/onboarding/styles";
import { haStyle } from "../../src/resources/styles";
import "./components/landing-page-logs";
import "./components/landing-page-network";
import { import {
getSupervisorNetworkInfo, getSupervisorNetworkInfo,
pingSupervisor, pingSupervisor,
type NetworkInfo, type NetworkInfo,
} from "./data/supervisor"; } from "./data/supervisor";
import { LandingPageBaseElement } from "./landing-page-base-element";
export const ASSUME_CORE_START_SECONDS = 60; export const ASSUME_CORE_START_SECONDS = 60;
const SCHEDULE_CORE_CHECK_SECONDS = 1; const SCHEDULE_CORE_CHECK_SECONDS = 1;
@@ -94,16 +97,21 @@ class HaLandingPage extends LandingPageBaseElement {
<ha-language-picker <ha-language-picker
.value=${this.language} .value=${this.language}
.label=${""} .label=${""}
button-style
native-name native-name
@value-changed=${this._languageChanged} @value-changed=${this._languageChanged}
inline-arrow inline-arrow
></ha-language-picker> ></ha-language-picker>
<a <ha-button
appearance="plain"
variant="neutral"
href="https://www.home-assistant.io/getting-started/onboarding/" href="https://www.home-assistant.io/getting-started/onboarding/"
target="_blank" target="_blank"
rel="noreferrer noopener" rel="noreferrer noopener"
>${this.localize("ui.panel.page-onboarding.help")}</a
> >
${this.localize("ui.panel.page-onboarding.help")}
<ha-svg-icon slot="end" .path=${mdiOpenInNew}></ha-svg-icon>
</ha-button>
</div> </div>
`; `;
} }
@@ -218,26 +226,8 @@ class HaLandingPage extends LandingPageBaseElement {
ha-alert p { ha-alert p {
text-align: unset; text-align: unset;
} }
ha-language-picker { .footer ha-svg-icon {
display: block; --mdc-icon-size: var(--ha-space-5);
width: 200px;
border-radius: var(--ha-border-radius-sm);
overflow: hidden;
--ha-select-height: 40px;
--mdc-select-fill-color: none;
--mdc-select-label-ink-color: var(--primary-text-color, #212121);
--mdc-select-ink-color: var(--primary-text-color, #212121);
--mdc-select-idle-line-color: transparent;
--mdc-select-hover-line-color: transparent;
--mdc-select-dropdown-icon-color: var(--primary-text-color, #212121);
--mdc-shape-small: 0;
}
a {
text-decoration: none;
color: var(--primary-text-color);
margin-right: 16px;
margin-inline-end: 16px;
margin-inline-start: initial;
} }
ha-fade-in { ha-fade-in {
min-height: calc(100vh - 64px - 88px); min-height: calc(100vh - 64px - 88px);

View File

@@ -1,4 +1,5 @@
/* eslint-disable lit/prefer-static-styles */ /* eslint-disable lit/prefer-static-styles */
import { mdiOpenInNew } from "@mdi/js";
import type { PropertyValues } from "lit"; import type { PropertyValues } from "lit";
import { html, LitElement, nothing } from "lit"; import { html, LitElement, nothing } from "lit";
import { customElement, property, state } from "lit/decorators"; import { customElement, property, state } from "lit/decorators";
@@ -6,6 +7,8 @@ import punycode from "punycode";
import { applyThemesOnElement } from "../common/dom/apply_themes_on_element"; import { applyThemesOnElement } from "../common/dom/apply_themes_on_element";
import { extractSearchParamsObject } from "../common/url/search-params"; import { extractSearchParamsObject } from "../common/url/search-params";
import "../components/ha-alert"; import "../components/ha-alert";
import "../components/ha-button";
import "../components/ha-svg-icon";
import type { AuthProvider, AuthUrlSearchParams } from "../data/auth"; import type { AuthProvider, AuthUrlSearchParams } from "../data/auth";
import { fetchAuthProviders } from "../data/auth"; import { fetchAuthProviders } from "../data/auth";
import { litLocalizeLiteMixin } from "../mixins/lit-localize-lite-mixin"; import { litLocalizeLiteMixin } from "../mixins/lit-localize-lite-mixin";
@@ -133,25 +136,8 @@ export class HaAuthorize extends litLocalizeLiteMixin(LitElement) {
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
} }
ha-language-picker { .footer ha-svg-icon {
width: 200px; --mdc-icon-size: var(--ha-space-5);
border-radius: var(--ha-border-radius-sm);
overflow: hidden;
--ha-select-height: 40px;
--mdc-select-fill-color: none;
--mdc-select-label-ink-color: var(--primary-text-color, #212121);
--mdc-select-ink-color: var(--primary-text-color, #212121);
--mdc-select-idle-line-color: transparent;
--mdc-select-hover-line-color: transparent;
--mdc-select-dropdown-icon-color: var(--primary-text-color, #212121);
--mdc-shape-small: 0;
}
.footer a {
text-decoration: none;
color: var(--primary-text-color);
margin-right: 16px;
margin-inline-end: 16px;
margin-inline-start: initial;
} }
h1 { h1 {
font-size: var(--ha-font-size-3xl); font-size: var(--ha-font-size-3xl);
@@ -205,16 +191,21 @@ export class HaAuthorize extends litLocalizeLiteMixin(LitElement) {
<ha-language-picker <ha-language-picker
.value=${this.language} .value=${this.language}
.label=${""} .label=${""}
button-style
native-name native-name
@value-changed=${this._languageChanged} @value-changed=${this._languageChanged}
inline-arrow inline-arrow
></ha-language-picker> ></ha-language-picker>
<a <ha-button
appearance="plain"
variant="neutral"
href="https://www.home-assistant.io/docs/authentication/" href="https://www.home-assistant.io/docs/authentication/"
target="_blank" target="_blank"
rel="noreferrer noopener" rel="noreferrer noopener"
>${this.localize("ui.panel.page-authorize.help")}</a
> >
${this.localize("ui.panel.page-authorize.help")}
<ha-svg-icon slot="end" .path=${mdiOpenInNew}></ha-svg-icon>
</ha-button>
</div> </div>
`; `;
} }

View File

@@ -1,6 +1,7 @@
import { mdiMenuDown } from "@mdi/js";
import type { PropertyValues } from "lit"; import type { PropertyValues } from "lit";
import { css, html, LitElement } from "lit"; import { css, html, LitElement, nothing } from "lit";
import { customElement, property, state } from "lit/decorators"; import { customElement, property, query, state } from "lit/decorators";
import memoizeOne from "memoize-one"; import memoizeOne from "memoize-one";
import { fireEvent } from "../common/dom/fire_event"; import { fireEvent } from "../common/dom/fire_event";
import { formatLanguageCode } from "../common/language/format_language"; import { formatLanguageCode } from "../common/language/format_language";
@@ -8,10 +9,10 @@ import { caseInsensitiveStringCompare } from "../common/string/compare";
import type { FrontendLocaleData } from "../data/translation"; import type { FrontendLocaleData } from "../data/translation";
import { translationMetadata } from "../resources/translations-metadata"; import { translationMetadata } from "../resources/translations-metadata";
import type { HomeAssistant, ValueChangedEvent } from "../types"; import type { HomeAssistant, ValueChangedEvent } from "../types";
import "./ha-button";
import "./ha-generic-picker"; import "./ha-generic-picker";
import "./ha-list-item"; import type { HaGenericPicker } from "./ha-generic-picker";
import type { PickerComboBoxItem } from "./ha-picker-combo-box"; import type { PickerComboBoxItem } from "./ha-picker-combo-box";
import "./ha-select";
export const getLanguageOptions = ( export const getLanguageOptions = (
languages: string[], languages: string[],
@@ -75,6 +76,9 @@ export class HaLanguagePicker extends LitElement {
@property({ attribute: "native-name", type: Boolean }) @property({ attribute: "native-name", type: Boolean })
public nativeName = false; public nativeName = false;
@property({ type: Boolean, attribute: "button-style" })
public buttonStyle = false;
@property({ attribute: "no-sort", type: Boolean }) public noSort = false; @property({ attribute: "no-sort", type: Boolean }) public noSort = false;
@property({ attribute: "inline-arrow", type: Boolean }) @property({ attribute: "inline-arrow", type: Boolean })
@@ -82,6 +86,8 @@ export class HaLanguagePicker extends LitElement {
@state() _defaultLanguages: string[] = []; @state() _defaultLanguages: string[] = [];
@query("ha-generic-picker", true) public genericPicker!: HaGenericPicker;
protected firstUpdated(changedProps: PropertyValues) { protected firstUpdated(changedProps: PropertyValues) {
super.firstUpdated(changedProps); super.firstUpdated(changedProps);
this._computeDefaultLanguageOptions(); this._computeDefaultLanguageOptions();
@@ -101,12 +107,13 @@ export class HaLanguagePicker extends LitElement {
this.hass?.locale this.hass?.locale
); );
private _valueRenderer = (value) => { private _getLanguageName = (lang?: string) =>
const language = this._getItems().find( this._getItems().find((language) => language.id === lang)?.primary;
(lang) => lang.id === value
)?.primary; private _valueRenderer = (value) =>
return html`<span slot="headline">${language ?? value}</span> `; html`<span slot="headline"
}; >${this._getLanguageName(value) ?? value}</span
> `;
protected render() { protected render() {
const value = const value =
@@ -130,10 +137,28 @@ export class HaLanguagePicker extends LitElement {
.getItems=${this._getItems} .getItems=${this._getItems}
@value-changed=${this._changed} @value-changed=${this._changed}
hide-clear-icon hide-clear-icon
></ha-generic-picker> >
${this.buttonStyle
? html`<ha-button
slot="field"
.disabled=${this.disabled}
@click=${this._openPicker}
appearance="plain"
variant="neutral"
>
${this._getLanguageName(value)}
<ha-svg-icon slot="end" .path=${mdiMenuDown}></ha-svg-icon>
</ha-button>`
: nothing}
</ha-generic-picker>
`; `;
} }
private _openPicker(ev: Event) {
ev.stopPropagation();
this.genericPicker.open();
}
static styles = css` static styles = css`
ha-generic-picker { ha-generic-picker {
width: 100%; width: 100%;