diff --git a/public/app/core/services/keybindingSrv.ts b/public/app/core/services/keybindingSrv.ts index 3920e53eb619..39d935f07fc7 100644 --- a/public/app/core/services/keybindingSrv.ts +++ b/public/app/core/services/keybindingSrv.ts @@ -24,7 +24,7 @@ import { AppChromeService } from '../components/AppChrome/AppChromeService'; import { HelpModal } from '../components/help/HelpModal'; import { contextSrv } from '../core'; -import { toggleTheme } from './toggleTheme'; +import { toggleTheme } from './theme'; import { withFocusedPanel } from './withFocusedPanelId'; export class KeybindingSrv { diff --git a/public/app/core/services/toggleTheme.ts b/public/app/core/services/theme.ts similarity index 90% rename from public/app/core/services/toggleTheme.ts rename to public/app/core/services/theme.ts index ee274847ce91..98d91b3837d3 100644 --- a/public/app/core/services/toggleTheme.ts +++ b/public/app/core/services/theme.ts @@ -7,11 +7,10 @@ import { contextSrv } from '../core'; import { PreferencesService } from './PreferencesService'; -export async function toggleTheme(runtimeOnly: boolean) { - const currentTheme = config.theme2; +export async function changeTheme(mode: 'dark' | 'light', runtimeOnly?: boolean) { const newTheme = createTheme({ colors: { - mode: currentTheme.isDark ? 'light' : 'dark', + mode: mode, }, }); @@ -55,3 +54,8 @@ export async function toggleTheme(runtimeOnly: boolean) { theme: newTheme.colors.mode, }); } + +export async function toggleTheme(runtimeOnly: boolean) { + const currentTheme = config.theme2; + changeTheme(currentTheme.isDark ? 'light' : 'dark', runtimeOnly); +} diff --git a/public/app/features/commandPalette/actions/global.static.actions.tsx b/public/app/features/commandPalette/actions/global.static.actions.tsx index 505b89fb798b..d376a93b4610 100644 --- a/public/app/features/commandPalette/actions/global.static.actions.tsx +++ b/public/app/features/commandPalette/actions/global.static.actions.tsx @@ -4,6 +4,7 @@ import React from 'react'; import { isIconName, NavModelItem } from '@grafana/data'; import { locationService } from '@grafana/runtime'; import { Icon } from '@grafana/ui'; +import { changeTheme } from 'app/core/services/theme'; const SECTION_PAGES = 'Pages'; const SECTION_ACTIONS = 'Actions'; @@ -82,10 +83,7 @@ export default (navBarTree: NavModelItem[]) => { name: 'Dark', keywords: 'dark theme', section: '', - perform: () => { - locationService.push({ search: '?theme=dark' }); - location.reload(); - }, + perform: () => changeTheme('dark'), parent: 'preferences/theme', }, { @@ -93,10 +91,7 @@ export default (navBarTree: NavModelItem[]) => { name: 'Light', keywords: 'light theme', section: '', - perform: () => { - locationService.push({ search: '?theme=light' }); - location.reload(); - }, + perform: () => changeTheme('light'), parent: 'preferences/theme', }, ];