Files
vue-pure-admin/src/store/modules/epTheme.ts
2024-04-16 11:49:15 +08:00

51 lines
1.2 KiB
TypeScript

import {
store,
getConfig,
defineStore,
storageLocal,
responsiveStorageNameSpace
} from "../utils";
export const useEpThemeStore = defineStore({
id: "pure-epTheme",
state: () => ({
epThemeColor:
storageLocal().getItem<StorageConfigs>(
`${responsiveStorageNameSpace()}layout`
)?.epThemeColor ?? getConfig().EpThemeColor,
epTheme:
storageLocal().getItem<StorageConfigs>(
`${responsiveStorageNameSpace()}layout`
)?.theme ?? getConfig().Theme
}),
getters: {
getEpThemeColor(state) {
return state.epThemeColor;
},
/** 用于mix导航模式下hamburger-svg的fill属性 */
fill(state) {
if (state.epTheme === "light") {
return "#409eff";
} else {
return "#fff";
}
}
},
actions: {
setEpThemeColor(newColor: string): void {
const layout = storageLocal().getItem<StorageConfigs>(
`${responsiveStorageNameSpace()}layout`
);
this.epTheme = layout?.theme;
this.epThemeColor = newColor;
if (!layout) return;
layout.epThemeColor = newColor;
storageLocal().setItem(`${responsiveStorageNameSpace()}layout`, layout);
}
}
});
export function useEpThemeStoreHook() {
return useEpThemeStore(store);
}