first init
This commit is contained in:
@@ -0,0 +1,76 @@
|
||||
import { defineStore } from 'pinia'
|
||||
import EnigmaSideMenu from '@/themes/Enigma/SideMenu'
|
||||
|
||||
export const themes = [
|
||||
{
|
||||
name: 'enigma',
|
||||
layout: 'side-menu',
|
||||
component: EnigmaSideMenu,
|
||||
},
|
||||
] as const
|
||||
|
||||
export type Themes = (typeof themes)[number]
|
||||
|
||||
interface ThemeState {
|
||||
themeValue: {
|
||||
name: Themes['name']
|
||||
layout: Themes['layout']
|
||||
}
|
||||
}
|
||||
|
||||
export const getTheme = (search?: { name: Themes['name']; layout: Themes['layout'] }) => {
|
||||
const searchValues =
|
||||
search === undefined
|
||||
? {
|
||||
name: localStorage.getItem('theme'),
|
||||
layout: localStorage.getItem('layout'),
|
||||
}
|
||||
: search
|
||||
return (
|
||||
themes.filter((item, key) => {
|
||||
return item.name === searchValues.name && item.layout === searchValues.layout
|
||||
})[0] || themes[0]
|
||||
)
|
||||
}
|
||||
|
||||
export const useThemeStore = defineStore('theme', {
|
||||
state: (): ThemeState => ({
|
||||
themeValue: {
|
||||
name: localStorage.getItem('theme') === null ? themes[0].name : getTheme().name,
|
||||
layout: localStorage.getItem('layout') === null ? themes[0].layout : getTheme().layout,
|
||||
},
|
||||
}),
|
||||
getters: {
|
||||
theme(state) {
|
||||
if (localStorage.getItem('theme') === null) {
|
||||
localStorage.setItem('theme', 'enigma')
|
||||
}
|
||||
|
||||
if (localStorage.getItem('layout') === null) {
|
||||
localStorage.setItem('layout', 'side-menu')
|
||||
}
|
||||
|
||||
return state.themeValue
|
||||
},
|
||||
},
|
||||
actions: {
|
||||
// Theme
|
||||
setTheme(theme: Themes['name']) {
|
||||
this.themeValue = {
|
||||
name: theme,
|
||||
layout: this.themeValue.layout,
|
||||
}
|
||||
|
||||
localStorage.setItem('theme', theme)
|
||||
},
|
||||
// Layout
|
||||
setLayout(layout: Themes['layout']) {
|
||||
this.themeValue = {
|
||||
name: this.themeValue.name,
|
||||
layout: layout,
|
||||
}
|
||||
|
||||
localStorage.setItem('layout', layout)
|
||||
},
|
||||
},
|
||||
})
|
||||
Reference in New Issue
Block a user