77 lines
1.3 KiB
TypeScript
77 lines
1.3 KiB
TypeScript
import { defineStore } from 'pinia'
|
|
import Cache from '/admin/support/cache'
|
|
|
|
/**
|
|
* app
|
|
*/
|
|
type app = {
|
|
size: 'small' | 'medium' | 'large'
|
|
|
|
isExpand: boolean
|
|
|
|
locale: 'zh' | 'en'
|
|
|
|
isMobile: boolean
|
|
|
|
isDarkMode: boolean
|
|
|
|
activeMenu: string
|
|
}
|
|
|
|
export const useAppStore = defineStore('app', {
|
|
state: (): app => ({
|
|
size: 'small',
|
|
isExpand: true,
|
|
locale: Cache.get('language'),
|
|
isMobile: false,
|
|
isDarkMode: false,
|
|
activeMenu: '/dashboard',
|
|
}),
|
|
|
|
getters: {
|
|
getSize(): string {
|
|
return this.size
|
|
},
|
|
|
|
getLocale(): string {
|
|
return this.locale
|
|
},
|
|
|
|
getIsMobile(): boolean {
|
|
return this.isMobile
|
|
},
|
|
|
|
getIsDarkMode(): boolean {
|
|
return this.isDarkMode
|
|
},
|
|
|
|
getActiveMenu(): string {
|
|
return this.activeMenu
|
|
},
|
|
},
|
|
|
|
actions: {
|
|
changeSize(size: 'small' | 'medium' | 'large'): void {
|
|
this.size = size
|
|
},
|
|
|
|
changeLocale(locale: 'zh' | 'en'): void {
|
|
Cache.set('language', locale)
|
|
|
|
this.locale = locale
|
|
},
|
|
|
|
changeExpaned(): void {
|
|
this.isExpand = !this.isExpand
|
|
},
|
|
|
|
setDarkMode(isDarkMode: boolean): void {
|
|
this.isDarkMode = isDarkMode
|
|
},
|
|
|
|
setActiveMenu(activeMenu: string): void {
|
|
this.activeMenu = activeMenu.startsWith('/') ? activeMenu : '/' + activeMenu
|
|
},
|
|
},
|
|
})
|