feat:#20 refactored theme switch

This commit is contained in:
Elmar Kresse
2024-07-02 11:57:36 +02:00
parent 4f50f3a7c3
commit eca68ec4c2
3 changed files with 32 additions and 19 deletions

View File

@@ -15,21 +15,37 @@
//along with this program. If not, see <https://www.gnu.org/licenses/>.
import { ref } from "vue";
import { Store } from "pinia";
import { PrimeVueChangeTheme } from "primevue/config";
import { EmitFn } from "primevue/ts-helpers";
import { RemovableRef } from "@vueuse/core";
const darkTheme = ref("lara-dark-blue"),
lightTheme = ref("lara-light-blue");
lightTheme = ref("lara-light-blue");
type SettingsStore = Store<"settingsStore", { locale: RemovableRef<string>, isDark: boolean }, NonNullable<unknown>, {
setLocale(locale: string): void,
setDarkMode(isDark: boolean): void,
getDarkMode(): boolean
}>;
export function toggleTheme(store, primeVue, emit): void {
store.setDarkMode(!store.isDark);
setTheme(store, primeVue, emit);
export function toggleTheme(
store: SettingsStore,
primeVue: { changeTheme: PrimeVueChangeTheme },
emit: EmitFn<"dark-mode-toggled"[]>,
): void {
store.setDarkMode(!store.isDark);
setTheme(store, primeVue, emit);
}
export function setTheme(store, primeVue, emit, shouldBeDark: boolean) {
store.setDarkMode(shouldBeDark);
const isDark = ref(store.isDark);
const newTheme = isDark.value ? darkTheme.value : lightTheme.value,
oldTheme = isDark.value ? lightTheme.value : darkTheme.value;
primeVue.changeTheme(oldTheme, newTheme, "theme-link", () => {});
emit("dark-mode-toggled", isDark.value);
}
export function setTheme(
store: SettingsStore,
{ changeTheme }: { changeTheme: PrimeVueChangeTheme },
emit: EmitFn<"dark-mode-toggled"[]>
) {
const isDark = ref(store.isDark);
const newTheme = isDark.value ? darkTheme.value : lightTheme.value,
oldTheme = isDark.value ? lightTheme.value : darkTheme.value;
changeTheme(oldTheme, newTheme, "theme-link", () => { });
emit("dark-mode-toggled", isDark.value);
}