diff --git a/packages/app-shell/src/app-shell.js b/packages/app-shell/src/app-shell.js index 07b325bb3b592cf7b3a1ad13bf2fd4f637a33ba7..10f0b66481bdd2a3dbe7f0904b95a54b1369967a 100644 --- a/packages/app-shell/src/app-shell.js +++ b/packages/app-shell/src/app-shell.js @@ -75,7 +75,6 @@ export class AppShell extends ScopedElementsMixin(DBPLitElement) { this.auth = {}; this.themes = ""; - this.themesDisableDetectBrowserMode = false; } static get scopedElements() { @@ -262,7 +261,7 @@ export class AppShell extends ScopedElementsMixin(DBPLitElement) { env: { type: String }, auth: { type: Object }, themes: { type: String, attribute: "themes" }, - themesDisableDetectBrowserMode: {type: Boolean, attribute: "themes-disable-detect-browser-mode"} + darkModeThemeOverride: {type: String, attribute: "dark-mode-theme-override"} }; } @@ -911,7 +910,11 @@ export class AppShell extends ScopedElementsMixin(DBPLitElement) { for (let routingName of this.visibleRoutes) { menuTemplates.push(html`<li><a @click="${(e) => this.onMenuItemClick(e)}" href="${this.router.getPathname({component: routingName})}" data-nav class="${getSelectClasses(routingName)}" title="${this.metaDataText(routingName, "description")}">${this.metaDataText(routingName, "short_name")}</a></li>`); } - + + const colorModeButton = this.darkModeThemeOverride !== undefined ? + html`<dbp-color-mode-button themes="${this.themes}" dark-mode-theme-override=${this.darkModeThemeOverride} lang="${this.lang}"></dbp-color-mode-button>` : + html`<dbp-color-mode-button themes="${this.themes}" lang="${this.lang}"></dbp-color-mode-button>`; + const kc = this.keycloakConfig; return html` <slot class="${slotClassMap}"></slot> @@ -923,8 +926,7 @@ export class AppShell extends ScopedElementsMixin(DBPLitElement) { <header> <slot name="header"> <div class="hd1-left"> - <dbp-color-mode-button themes="${this.themes}" ?themes-disable-detect-browser-mode="${this.themesDisableDetectBrowserMode}" lang="${this.lang}"></dbp-color-mode-button> - + ${colorModeButton} <dbp-language-select id="lang-select" lang="${this.lang}"></dbp-language-select> </div> <div class="hd1-middle"> diff --git a/packages/app-shell/src/color-mode.js b/packages/app-shell/src/color-mode.js index 4da8b40b1fd23d1f0906bb15e7fdb50be5c683de..34dea211d5c07de434d259c801bd56abe949606b 100644 --- a/packages/app-shell/src/color-mode.js +++ b/packages/app-shell/src/color-mode.js @@ -14,8 +14,9 @@ export class ColorMode extends ScopedElementsMixin(DBPLitElement) { this._i18n = createInstance(); this.lang = this._i18n.language; this.themes = []; - this.disableDetectBrowserMode = false; this.boundCloseAdditionalMenuHandler = this.hideModeMenu.bind(this); + this.detectBrowserDarkMode = false; + this.darkModeClass = "dark-theme"; } static get properties() { @@ -23,7 +24,7 @@ export class ColorMode extends ScopedElementsMixin(DBPLitElement) { ...super.properties, lang: { type: String }, themes: { type: Array, attribute: "themes" }, - disableDetectBrowserMode: {type: Boolean, attribute: "themes-disable-detect-browser-mode"} + darkModeThemeOverride: {type: String, attribute: "dark-mode-theme-override"} }; } @@ -46,6 +47,17 @@ export class ColorMode extends ScopedElementsMixin(DBPLitElement) { connectedCallback() { super.connectedCallback(); this.updateComplete.then(() => { + console.log("------", this.darkModeThemeOverride); + if (typeof this.darkModeThemeOverride === "undefined") { + this.detectBrowserDarkMode = true; + console.log("darkMode on"); + } else if ( this.darkModeThemeOverride === "") { + this.detectBrowserDarkMode = false; + console.log("darkMode off"); + } else { + this.detectBrowserDarkMode = true; + this.darkModeClass = this.darkModeThemeOverride; + } this.loadTheme("light-theme"); this.detectInitialMode(); }); @@ -65,12 +77,12 @@ export class ColorMode extends ScopedElementsMixin(DBPLitElement) { return; } - if (!this.disableDetectBrowserMode) { + if (this.detectBrowserDarkMode) { //look for browser mode const useDark = window.matchMedia("(prefers-color-scheme: dark)"); if (useDark.matches) { // search for dark mode - const theme = this.themes.find(theme => theme.class === "dark-theme"); + const theme = this.themes.find(theme => theme.class === this.darkModeClass); if (theme) { this.loadTheme(theme.class); @@ -145,7 +157,7 @@ export class ColorMode extends ScopedElementsMixin(DBPLitElement) { if (themeName === "light-theme" && browserModeLight.matches) { localStorage.removeItem('prefered-color-mode'); - } else if (themeName === "dark-theme" && browserModeDark.matches) { + } else if (themeName === this.darkModeClass && browserModeDark.matches) { localStorage.removeItem('prefered-color-mode'); } else { localStorage.setItem('prefered-color-mode', themeName);