import { defineStore } from 'pinia'; import { useStorage } from '@vueuse/core'; import { ref, reactive, computed } from 'vue'; export const useAppStore = defineStore('app', () => { const sidebarStatus = useStorage('sidebarStatus', '1'); const sidebar = reactive({ opened: sidebarStatus.value ? !!+sidebarStatus.value : true, withoutAnimation: false, hide: false }); const device = ref('desktop'); const size = useStorage<'large' | 'default' | 'small'>('size', 'default'); const toggleSideBar = (withoutAnimation: boolean) => { if (sidebar.hide) { return false; } sidebar.opened = !sidebar.opened; sidebar.withoutAnimation = withoutAnimation; if (sidebar.opened) { sidebarStatus.value = '1'; } else { sidebarStatus.value = '0'; } }; const closeSideBar = ({ withoutAnimation }: any): void => { sidebarStatus.value = '0'; sidebar.opened = false; sidebar.withoutAnimation = withoutAnimation; }; const toggleDevice = (d: string): void => { device.value = d; }; const setSize = (s: 'large' | 'default' | 'small'): void => { size.value = s; }; const toggleSideBarHide = (status: boolean): void => { sidebar.hide = status; }; return { device, sidebar, size, toggleSideBar, closeSideBar, toggleDevice, setSize, toggleSideBarHide }; });