Fix resetting theme, only fallback to light when theme doesnt support… (#9253)

This commit is contained in:
Bram Kragten 2021-05-26 00:11:17 +02:00 committed by GitHub
parent f55e911313
commit de09e31815
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 9 additions and 18 deletions

View File

@ -39,7 +39,7 @@ export const applyThemesOnElement = (
if (themeSettings) { if (themeSettings) {
if (themeSettings.dark) { if (themeSettings.dark) {
cacheKey = `${cacheKey}__dark`; cacheKey = `${cacheKey}__dark`;
themeRules = darkStyles; themeRules = { ...darkStyles };
} }
if (selectedTheme === "default") { if (selectedTheme === "default") {

View File

@ -67,15 +67,16 @@ export default <T extends Constructor<HassBaseEl>>(superClass: T) =>
if (!this.hass) { if (!this.hass) {
return; return;
} }
const themeName =
this.hass.selectedThemeSettings?.theme ||
(darkPreferred && this.hass.themes.default_dark_theme
? this.hass.themes.default_dark_theme!
: this.hass.themes.default_theme);
let themeSettings: Partial<HomeAssistant["selectedThemeSettings"]> = this let themeSettings: Partial<HomeAssistant["selectedThemeSettings"]> = this
.hass!.selectedThemeSettings; .hass!.selectedThemeSettings;
const themeName =
themeSettings?.theme ||
(darkPreferred && this.hass.themes.default_dark_theme
? this.hass.themes.default_dark_theme!
: this.hass.themes.default_theme);
let darkMode = let darkMode =
themeSettings?.dark === undefined ? darkPreferred : themeSettings?.dark; themeSettings?.dark === undefined ? darkPreferred : themeSettings?.dark;
@ -84,18 +85,8 @@ export default <T extends Constructor<HassBaseEl>>(superClass: T) =>
? this.hass.themes.themes[themeSettings.theme] ? this.hass.themes.themes[themeSettings.theme]
: undefined; : undefined;
if (selectedTheme) { if (selectedTheme && darkMode && !selectedTheme.modes) {
// Override dark mode selection depending on what the theme actually provides.
// Leave the selection as-is if the theme supports the requested mode.
if (darkMode && !selectedTheme.modes?.dark) {
darkMode = false; darkMode = false;
} else if (
!darkMode &&
!selectedTheme.modes?.light &&
selectedTheme.modes?.dark
) {
darkMode = true;
}
} }
themeSettings = { ...this.hass.selectedThemeSettings, dark: darkMode }; themeSettings = { ...this.hass.selectedThemeSettings, dark: darkMode };