import { useSettingStore } from '@/store/modules/setting'
|
import { storeToRefs } from 'pinia'
|
function useSettingsHandlers() {
|
const settingStore = useSettingStore()
|
const domOperations = {
|
// 设置HTML类名
|
setHtmlClass: (className, add) => {
|
const el = document.getElementsByTagName('html')[0]
|
if (add) {
|
el.classList.add(className)
|
} else {
|
el.classList.remove(className)
|
}
|
},
|
// 设置根元素属性
|
setRootAttribute: (attribute, value) => {
|
const el = document.documentElement
|
el.setAttribute(attribute, value)
|
},
|
// 设置body类名
|
setBodyClass: (className, add) => {
|
const el = document.getElementsByTagName('body')[0]
|
if (add) {
|
el.classList.add(className)
|
} else {
|
el.classList.remove(className)
|
}
|
}
|
}
|
const createToggleHandler = (storeMethod, callback) => {
|
return () => {
|
storeMethod()
|
callback?.()
|
}
|
}
|
const createValueHandler = (storeMethod, callback) => {
|
return (value) => {
|
if (value !== void 0 && value !== null) {
|
storeMethod(value)
|
callback?.(value)
|
}
|
}
|
}
|
const basicHandlers = {
|
// 工作台标签页
|
workTab: createToggleHandler(() => settingStore.setWorkTab(!settingStore.showWorkTab)),
|
// 菜单手风琴
|
uniqueOpened: createToggleHandler(() => settingStore.setUniqueOpened()),
|
// 显示菜单按钮
|
menuButton: createToggleHandler(() => settingStore.setButton()),
|
// 显示快速入口
|
fastEnter: createToggleHandler(() => settingStore.setFastEnter()),
|
// 显示刷新按钮
|
refreshButton: createToggleHandler(() => settingStore.setShowRefreshButton()),
|
// 显示面包屑
|
crumbs: createToggleHandler(() => settingStore.setCrumbs()),
|
// 显示语言切换
|
language: createToggleHandler(() => settingStore.setLanguage()),
|
// 显示进度条
|
nprogress: createToggleHandler(() => settingStore.setNprogress()),
|
// 色弱模式
|
colorWeak: createToggleHandler(
|
() => settingStore.setColorWeak(),
|
() => {
|
domOperations.setHtmlClass('color-weak', settingStore.colorWeak)
|
}
|
),
|
// 水印显示
|
watermark: createToggleHandler(() =>
|
settingStore.setWatermarkVisible(!settingStore.watermarkVisible)
|
),
|
// 菜单展开宽度
|
menuOpenWidth: createValueHandler((width) => settingStore.setMenuOpenWidth(width)),
|
// 标签页风格
|
tabStyle: createValueHandler((style) => settingStore.setTabStyle(style)),
|
// 页面切换动画
|
pageTransition: createValueHandler((transition) => settingStore.setPageTransition(transition)),
|
// 圆角大小
|
customRadius: createValueHandler((radius) => settingStore.setCustomRadius(radius))
|
}
|
const boxStyleHandlers = {
|
// 设置盒子模式
|
setBoxMode: (type) => {
|
const { boxBorderMode } = storeToRefs(settingStore)
|
if (
|
(type === 'shadow-mode' && boxBorderMode.value === false) ||
|
(type === 'border-mode' && boxBorderMode.value === true)
|
) {
|
return
|
}
|
setTimeout(() => {
|
domOperations.setRootAttribute('data-box-mode', type)
|
settingStore.setBorderMode()
|
}, 50)
|
}
|
}
|
const colorHandlers = {
|
// 选择主题色
|
selectColor: (theme) => {
|
settingStore.setElementTheme(theme)
|
settingStore.reload()
|
}
|
}
|
const containerHandlers = {
|
// 设置容器宽度
|
setWidth: (type) => {
|
settingStore.setContainerWidth(type)
|
settingStore.reload()
|
}
|
}
|
return {
|
domOperations,
|
basicHandlers,
|
boxStyleHandlers,
|
colorHandlers,
|
containerHandlers,
|
createToggleHandler,
|
createValueHandler
|
}
|
}
|
export { useSettingsHandlers }
|