feat: login and register, style is not ready
This commit is contained in:
@@ -5,19 +5,19 @@ export type AuthDialogState = 'login' | 'register' | null;
|
||||
|
||||
@Injectable({ providedIn: 'root' })
|
||||
export class AuthDialogService {
|
||||
private readonly dialogStateSubject = new BehaviorSubject<AuthDialogState>(null);
|
||||
private readonly dialogStateSubject = new BehaviorSubject<AuthDialogState>(null);
|
||||
|
||||
readonly dialogState$ = this.dialogStateSubject.asObservable();
|
||||
readonly dialogState$ = this.dialogStateSubject.asObservable();
|
||||
|
||||
openLogin(): void {
|
||||
this.dialogStateSubject.next('login');
|
||||
}
|
||||
openLogin(): void {
|
||||
this.dialogStateSubject.next('login');
|
||||
}
|
||||
|
||||
openRegister(): void {
|
||||
this.dialogStateSubject.next('register');
|
||||
}
|
||||
openRegister(): void {
|
||||
this.dialogStateSubject.next('register');
|
||||
}
|
||||
|
||||
close(): void {
|
||||
this.dialogStateSubject.next(null);
|
||||
}
|
||||
close(): void {
|
||||
this.dialogStateSubject.next(null);
|
||||
}
|
||||
}
|
||||
@@ -3,32 +3,32 @@ import { BehaviorSubject } from 'rxjs';
|
||||
|
||||
@Injectable({ providedIn: 'root' })
|
||||
export class ThemeService {
|
||||
private readonly darkModeSubject = new BehaviorSubject<boolean>(false);
|
||||
private readonly darkModeSubject = new BehaviorSubject<boolean>(false);
|
||||
|
||||
readonly darkMode$ = this.darkModeSubject.asObservable();
|
||||
readonly darkMode$ = this.darkModeSubject.asObservable();
|
||||
|
||||
initTheme(): void {
|
||||
const savedTheme = localStorage.getItem('theme');
|
||||
this.applyDarkMode(savedTheme === 'dark');
|
||||
}
|
||||
|
||||
toggleTheme(): void {
|
||||
this.applyDarkMode(!this.darkModeSubject.value);
|
||||
}
|
||||
|
||||
setDarkMode(isDarkMode: boolean): void {
|
||||
this.applyDarkMode(isDarkMode);
|
||||
}
|
||||
|
||||
private applyDarkMode(isDarkMode: boolean): void {
|
||||
if (isDarkMode) {
|
||||
document.documentElement.setAttribute('data-theme', 'dark');
|
||||
localStorage.setItem('theme', 'dark');
|
||||
} else {
|
||||
document.documentElement.removeAttribute('data-theme');
|
||||
localStorage.removeItem('theme');
|
||||
initTheme(): void {
|
||||
const savedTheme = localStorage.getItem('theme');
|
||||
this.applyDarkMode(savedTheme === 'dark');
|
||||
}
|
||||
|
||||
this.darkModeSubject.next(isDarkMode);
|
||||
}
|
||||
toggleTheme(): void {
|
||||
this.applyDarkMode(!this.darkModeSubject.value);
|
||||
}
|
||||
|
||||
setDarkMode(isDarkMode: boolean): void {
|
||||
this.applyDarkMode(isDarkMode);
|
||||
}
|
||||
|
||||
private applyDarkMode(isDarkMode: boolean): void {
|
||||
if (isDarkMode) {
|
||||
document.documentElement.setAttribute('data-theme', 'dark');
|
||||
localStorage.setItem('theme', 'dark');
|
||||
} else {
|
||||
document.documentElement.removeAttribute('data-theme');
|
||||
localStorage.removeItem('theme');
|
||||
}
|
||||
|
||||
this.darkModeSubject.next(isDarkMode);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user