You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
import { store } from "@/store"; import { appType } from "./types"; import { defineStore } from "pinia"; import { getConfig, responsiveStorageNameSpace } from "@/config"; import { deviceDetection, storageLocal } from "@pureadmin/utils";
export const useAppStore = defineStore({ id: "pure-app", state: (): appType => ({ sidebar: { opened: storageLocal().getItem<StorageConfigs>( `${responsiveStorageNameSpace()}layout` )?.sidebarStatus ?? getConfig().SidebarStatus, withoutAnimation: false, isClickCollapse: false }, // 这里的layout用于监听容器拖拉后恢复对应的导航模式
layout: storageLocal().getItem<StorageConfigs>( `${responsiveStorageNameSpace()}layout` )?.layout ?? getConfig().Layout, device: deviceDetection() ? "mobile" : "desktop" }), getters: { getSidebarStatus(state) { return state.sidebar.opened; }, getDevice(state) { return state.device; } }, actions: { TOGGLE_SIDEBAR(opened?: boolean, resize?: string) { const layout = storageLocal().getItem<StorageConfigs>( `${responsiveStorageNameSpace()}layout` ); if (opened && resize) { this.sidebar.withoutAnimation = true; this.sidebar.opened = true; layout.sidebarStatus = true; } else if (!opened && resize) { this.sidebar.withoutAnimation = true; this.sidebar.opened = false; layout.sidebarStatus = false; } else if (!opened && !resize) { this.sidebar.withoutAnimation = false; this.sidebar.opened = !this.sidebar.opened; this.sidebar.isClickCollapse = !this.sidebar.opened; layout.sidebarStatus = this.sidebar.opened; } storageLocal().setItem(`${responsiveStorageNameSpace()}layout`, layout); }, async toggleSideBar(opened?: boolean, resize?: string) { await this.TOGGLE_SIDEBAR(opened, resize); }, toggleDevice(device: string) { this.device = device; }, setLayout(layout) { this.layout = layout; } } });
export function useAppStoreHook() { return useAppStore(store); }
|