import {Module} from "vuex";
|
import Cookies from "js-cookie";
|
import {State} from "@/store";
|
|
export interface AppState {
|
sidebar: {
|
opened: boolean,
|
withoutAnimation: boolean
|
},
|
device: string,
|
size: string
|
}
|
|
const app: Module<AppState, State> = {
|
namespaced: true,
|
state: (): AppState => ({
|
sidebar: {
|
opened: Cookies.get('sidebarStatus') ? !!Cookies.get('sidebarStatus') : true,
|
withoutAnimation: false
|
},
|
device: 'desktop',
|
size: Cookies.get('size') || 'default'
|
}),
|
mutations: {
|
TOGGLE_SIDEBAR: (state) => {
|
state.sidebar.opened = !state.sidebar.opened
|
state.sidebar.withoutAnimation = false
|
if (state.sidebar.opened) {
|
Cookies.set('sidebarStatus', '1')
|
} else {
|
Cookies.set('sidebarStatus', '0')
|
}
|
},
|
CLOSE_SIDEBAR: (state, withoutAnimation) => {
|
Cookies.set('sidebarStatus', '0')
|
state.sidebar.opened = false
|
state.sidebar.withoutAnimation = withoutAnimation
|
},
|
TOGGLE_DEVICE: (state, device) => {
|
state.device = device
|
},
|
SET_SIZE: (state, size) => {
|
state.size = size
|
Cookies.set('size', size)
|
}
|
},
|
actions: {
|
toggleSideBar({commit}) {
|
commit('TOGGLE_SIDEBAR')
|
},
|
closeSideBar({commit}, {withoutAnimation}: { withoutAnimation: boolean }) {
|
commit('CLOSE_SIDEBAR', withoutAnimation)
|
},
|
toggleDevice({commit}, device) {
|
commit('TOGGLE_DEVICE', device)
|
},
|
setSize({commit}, size) {
|
commit('SET_SIZE', size)
|
}
|
}
|
}
|
|
export default app
|