UNPKG

@cataract6545/tmui

Version:

tm-vuetify是一个新势力由主题驱动的UI组件库,相比其它优势大,组件全,设计趋势紧跟未来。具有主题生成,主题实时切换,暗黑实时切换,lottie动画,图表等新颖功能,tmui TMUI

133 lines (125 loc) 3.83 kB
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 } } }, });