feat: update theme preference handling in ThemeService and index.html
This commit is contained in:
1 parent
c8020c489e
commit
45de0cebcc
3 files changed
+44
-15
No files matched your search
@@ -3,9 +3,26 @@ import { vi } from 'vitest';
|
||||
import { ThemeService } from './theme.service';
|
||||
|
||||
describe('ThemeService', () => {
|
||||
beforeEach(() => localStorage.clear());
|
||||
|
||||
it('defaults to the operating-system preference', () => {
|
||||
vi.stubGlobal(
|
||||
'matchMedia',
|
||||
vi.fn(() => ({ matches: true, addEventListener: vi.fn() })),
|
||||
);
|
||||
const service = TestBed.inject(ThemeService);
|
||||
TestBed.tick();
|
||||
|
||||
expect(service.preference()).toBe('system');
|
||||
expect(document.documentElement.dataset['theme']).toBe('dark');
|
||||
});
|
||||
|
||||
it('persists explicit and system preferences', () => {
|
||||
const listener = vi.fn();
|
||||
vi.stubGlobal('matchMedia', vi.fn(() => ({ matches: true, addEventListener: listener })));
|
||||
vi.stubGlobal(
|
||||
'matchMedia',
|
||||
vi.fn(() => ({ matches: true, addEventListener: listener })),
|
||||
);
|
||||
localStorage.setItem('lmnp-theme', 'system');
|
||||
const service = TestBed.inject(ThemeService);
|
||||
TestBed.tick();
|
||||
|
||||
@@ -40,6 +40,6 @@ export class ThemeService {
|
||||
const storedPreference = localStorage.getItem(THEME_STORAGE_KEY);
|
||||
return storedPreference === 'dark' || storedPreference === 'system'
|
||||
? storedPreference
|
||||
: 'light';
|
||||
: 'system';
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user