@cataract6545/tmui
Version:
tm-vuetify是一个新势力由主题驱动的UI组件库,相比其它优势大,组件全,设计趋势紧跟未来。具有主题生成,主题实时切换,暗黑实时切换,lottie动画,图表等新颖功能,tmui TMUI
133 lines (125 loc) • 3.83 kB
text/typescript
import { defineStore} from 'pinia';
import themeColor from '../theme/theme'
import * as u from '../function/util'
import type { tmVuetify,wxshareConfig,colorThemeType } from './interface'
let pdefault_cookies_color = u.getCookie('setTmVuetifyColor')||"";
let pdefault_cookies_black = u.getCookie('setTmVuetifyBlack')
let pdefault_cookies_local = u.getCookie('setTmVuetifyLocal')||'zh-Hans';
let pdefault_cookies_colorArrayList = u.getCookie('colorArrayList');
let dark = typeof pdefault_cookies_black === 'boolean' ? pdefault_cookies_black : false;
let themeObj = new themeColor.themeColors()
if(pdefault_cookies_colorArrayList){
const result2 = pdefault_cookies_colorArrayList.filter((item:colorThemeType) => themeObj.colors.every(subItem => subItem.name !== item.name));
themeObj = new themeColor.themeColors([...themeObj.colors,...result2])
}
const colorArray = themeObj.colors;
const os = uni.getSystemInfoSync()?.osName??""
u.setCookie('colorArrayList', colorArray)
// 为 store state 声明类型
export interface State {
tmVuetify: tmVuetify
}
export const useTmpiniaStore = defineStore('tmpinia', {
state: () => {
return {
tmStore: {
color: pdefault_cookies_color,
dark: dark,
tmVueTifly_pages: '',
tmVueTifly_pagesIndex: '',
os:os,
//这里是微信小程序和微信H5的配置资料。
wxshareConfig_miniMp: {
title: '', // 分享标题
desc: '', // 描述
imageUrl: '', // 分享图片
path: '', // 分享路径
copyLink: '', // 复制链接
query: {}, // 分享参数
},
//当前存储存的主题对象。
colorList: colorArray,
//当前的语言
local:pdefault_cookies_local
}
}
},
actions: {
setPageNow(url:string) {
this.tmStore = {
...this.tmStore,
tmVueTifly_pages: url
}
},
setPageNowIndex( index:string) {
this.tmStore = {
...this.tmStore,
tmVueTifly_pagesIndex: index
}
},
setTmVuetifyDark(dark:boolean) {
dark = typeof dark !=='boolean'?false:dark;
u.setCookie('setTmVuetifyBlack', dark)
this.tmStore = {
...this.tmStore,
dark: dark
}
},
setTmAutoDark(autoDark=false){
u.setCookie('setTmVuetifyAutoDark',autoDark)
this.tmuiConfig.autoDark = autoDark
if(autoDark){
let nowstrdark = ''
// #ifdef H5
if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
nowstrdark = 'dark'
} else {
nowstrdark = 'light'
}
// #endif
// #ifndef H5
nowstrdark = uni.getSystemInfoSync()?.osTheme??''
// #endif
this.setTmVuetifyDark(nowstrdark=='dark'?true:false)
}
},
setWxShare(cfg:wxshareConfig) {
let pcf = cfg || {};
if (typeof pcf !== 'object' || Array.isArray(cfg)) pcf = {};
this.tmStore = {
...this.tmStore,
wxshareConfig_miniMp: {
...this.tmStore.wxshareConfig_miniMp,
...pcf
}
}
},
setTmVuetifyTheme(color:string) {
let defaultColorName = color
if (!defaultColorName || defaultColorName == ""||themeColor.isCssColor(defaultColorName)) {
defaultColorName = '';
}
u.setCookie('setTmVuetifyColor', defaultColorName)
this.tmStore = {...this.tmStore,color:defaultColorName};
},
//添加一个主题
setTmVuetifyAddTheme(colorName:string,color:string,isSet=true) {
this.tmStore = {
...this.tmStore,
colorList: themeObj.add(colorName,color)
}
u.setCookie('colorArrayList', this.tmStore.colorList);
if(isSet){
this.setTmVuetifyTheme(colorName)
}
},
setTmLocal(language:string){
language = language || 'zh-Hans';
u.setCookie('setTmVuetifyLocal', language);
this.tmStore = {
...this.tmStore,
local: language
}
}
},
});