App.ts 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. /**
  2. * Application configuration
  3. */
  4. import type { ProjectConfig } from '/@/types/config';
  5. import { computed, ref } from 'vue';
  6. import { ThemeModeEnum } from '/@/enums/appEnum';
  7. import { PROJ_CFG_KEY } from '/@/enums/cacheEnum';
  8. import projectSetting from '/@/settings/projectSetting';
  9. import { getLocal } from '/@/utils/helper/persistent';
  10. import {
  11. updateGrayMode,
  12. updateColorWeak,
  13. updateHeaderBgColor,
  14. updateSidebarBgColor,
  15. } from '/@/logics/theme';
  16. import { appStore } from '/@/store/modules/app';
  17. import { deepMerge } from '/@/utils';
  18. // TODO Theme switching
  19. export function useThemeMode(mode: ThemeModeEnum) {
  20. const modeRef = ref(mode);
  21. const html = document.documentElement;
  22. const clsList = html.classList;
  23. const change = () => {
  24. clsList.contains(mode) ? clsList.remove(mode) : clsList.add(mode);
  25. };
  26. return {
  27. runChangeThemeMode: change,
  28. mode: computed(() => modeRef.value),
  29. };
  30. }
  31. // Initial project configuration
  32. export function initAppConfigStore() {
  33. let projCfg: ProjectConfig = getLocal(PROJ_CFG_KEY) as ProjectConfig;
  34. projCfg = deepMerge(projectSetting, projCfg || {});
  35. try {
  36. const {
  37. colorWeak,
  38. grayMode,
  39. headerSetting: { bgColor: headerBgColor } = {},
  40. menuSetting: { bgColor } = {},
  41. } = projCfg;
  42. // if (
  43. // themeColor !== primaryColor &&
  44. // themeColor &&
  45. // process.env.VUE_APP_USE_THEME_REPLACER !== 'TRUE'
  46. // ) {
  47. // updateTheme(themeColor);
  48. // }
  49. headerBgColor && updateHeaderBgColor(headerBgColor);
  50. bgColor && updateSidebarBgColor(bgColor);
  51. grayMode && updateGrayMode(grayMode);
  52. colorWeak && updateColorWeak(colorWeak);
  53. } catch (error) {
  54. console.log(error);
  55. }
  56. appStore.commitProjectConfigState(projCfg);
  57. }