ruoyi-plus-soybean/src/store/modules/app/index.ts

74 lines
2.1 KiB
TypeScript
Raw Normal View History

import { defineStore } from 'pinia';
2021-08-18 12:02:59 +08:00
import type { GlobalThemeOverrides } from 'naive-ui';
import { store } from '../../index';
2021-08-18 12:02:59 +08:00
import { themeSettings } from '@/settings';
import type { ThemeSettings } from '@/interface';
2021-08-27 12:00:09 +08:00
import { getHoverAndPressedColor } from './helpers';
interface AppState {
2021-08-18 12:02:59 +08:00
/** 主题配置 */
themeSettings: ThemeSettings;
/** 侧边栏折叠 */
asideCollapse: boolean;
}
const appStore = defineStore({
id: 'app-store',
state: (): AppState => ({
2021-08-18 12:02:59 +08:00
themeSettings,
asideCollapse: false
}),
2021-08-18 12:02:59 +08:00
getters: {
/** naive UI主题配置 */
themeOverrids(): GlobalThemeOverrides {
2021-08-27 12:00:09 +08:00
const {
themeColor: primaryColor,
otherColor: { info: infoColor, success: successColor, warning: warningColor, error: errorColor }
} = this.themeSettings;
const { hover: primaryColorHover, pressed: primaryColorPressed } = getHoverAndPressedColor(primaryColor);
const { hover: infoColorHover, pressed: infoColorPressed } = getHoverAndPressedColor(infoColor);
const { hover: successColorHover, pressed: successColorPressed } = getHoverAndPressedColor(successColor);
const { hover: warningColorHover, pressed: warningColorPressed } = getHoverAndPressedColor(warningColor);
const { hover: errorColorHover, pressed: errorColorPressed } = getHoverAndPressedColor(errorColor);
2021-08-18 12:02:59 +08:00
const colorLoading = primaryColor;
return {
common: {
primaryColor,
primaryColorHover,
2021-08-27 12:00:09 +08:00
primaryColorPressed,
infoColor,
infoColorHover,
infoColorPressed,
successColor,
successColorHover,
successColorPressed,
warningColor,
warningColorHover,
warningColorPressed,
errorColor,
errorColorHover,
errorColorPressed
2021-08-18 12:02:59 +08:00
},
LoadingBar: {
colorLoading
}
};
}
},
actions: {
handleAsideCollapse(collapse: boolean) {
this.asideCollapse = collapse;
},
toggleAside() {
this.asideCollapse = !this.asideCollapse;
}
}
});
export default function useAppStore() {
return appStore(store);
}