25 changed files with 455 additions and 400 deletions
@ -0,0 +1,104 @@ |
|||
import { ContentEnum, RouterTransitionEnum } from '/@/enums/appEnum'; |
|||
import { MenuThemeEnum, TopMenuAlignEnum, TriggerEnum } from '/@/enums/menuEnum'; |
|||
|
|||
export enum HandlerEnum { |
|||
CHANGE_LAYOUT, |
|||
// menu
|
|||
MENU_HAS_DRAG, |
|||
MENU_ACCORDION, |
|||
MENU_TRIGGER, |
|||
MENU_TOP_ALIGN, |
|||
MENU_COLLAPSED, |
|||
MENU_COLLAPSED_SHOW_TITLE, |
|||
MENU_WIDTH, |
|||
MENU_SHOW_SIDEBAR, |
|||
MENU_THEME, |
|||
MENU_SPLIT, |
|||
MENU_SHOW_SEARCH, |
|||
|
|||
// header
|
|||
HEADER_SHOW, |
|||
HEADER_THEME, |
|||
HEADER_FIXED, |
|||
|
|||
TABS_SHOW_QUICK, |
|||
TABS_SHOW, |
|||
TABS_SHOW_ICON, |
|||
|
|||
OPEN_PAGE_LOADING, |
|||
OPEN_ROUTE_TRANSITION, |
|||
ROUTER_TRANSITION, |
|||
LOCK_TIME, |
|||
FULL_CONTENT, |
|||
CONTENT_MODE, |
|||
SHOW_BREADCRUMB, |
|||
SHOW_BREADCRUMB_ICON, |
|||
GRAY_MODE, |
|||
COLOR_WEAK, |
|||
SHOW_LOGO, |
|||
} |
|||
|
|||
export const themeOptions = [ |
|||
{ |
|||
value: MenuThemeEnum.LIGHT, |
|||
label: '亮色', |
|||
}, |
|||
{ |
|||
value: MenuThemeEnum.DARK, |
|||
label: '暗色', |
|||
}, |
|||
]; |
|||
|
|||
export const contentModeOptions = [ |
|||
{ |
|||
value: ContentEnum.FULL, |
|||
label: '流式', |
|||
}, |
|||
{ |
|||
value: ContentEnum.FIXED, |
|||
label: '定宽', |
|||
}, |
|||
]; |
|||
|
|||
export const topMenuAlignOptions = [ |
|||
{ |
|||
value: TopMenuAlignEnum.CENTER, |
|||
label: '居中', |
|||
}, |
|||
{ |
|||
value: TopMenuAlignEnum.START, |
|||
label: '居左', |
|||
}, |
|||
{ |
|||
value: TopMenuAlignEnum.END, |
|||
label: '居右', |
|||
}, |
|||
]; |
|||
|
|||
export const menuTriggerOptions = [ |
|||
{ |
|||
value: TriggerEnum.NONE, |
|||
label: '不显示', |
|||
}, |
|||
{ |
|||
value: TriggerEnum.FOOTER, |
|||
label: '底部', |
|||
}, |
|||
{ |
|||
value: TriggerEnum.HEADER, |
|||
label: '顶部', |
|||
}, |
|||
]; |
|||
|
|||
export const routerTransitionOptions = [ |
|||
RouterTransitionEnum.ZOOM_FADE, |
|||
RouterTransitionEnum.FADE, |
|||
RouterTransitionEnum.ZOOM_OUT, |
|||
RouterTransitionEnum.FADE_SIDE, |
|||
RouterTransitionEnum.FADE_BOTTOM, |
|||
].map((item) => { |
|||
return { |
|||
label: item, |
|||
value: item, |
|||
}; |
|||
}); |
|||
@ -0,0 +1,186 @@ |
|||
import { HandlerEnum } from './const'; |
|||
import { MenuThemeEnum, MenuTypeEnum } from '/@/enums/menuEnum'; |
|||
import { updateColorWeak, updateGrayMode } from '/@/setup/theme'; |
|||
import { appStore } from '/@/store/modules/app'; |
|||
import { ProjectConfig } from '/@/types/config'; |
|||
|
|||
export function baseHandler(event: HandlerEnum, value: any) { |
|||
const config = handler(event, value); |
|||
appStore.commitProjectConfigState(config); |
|||
} |
|||
|
|||
export function handler(event: HandlerEnum, value: any): DeepPartial<ProjectConfig> { |
|||
switch (event) { |
|||
case HandlerEnum.CHANGE_LAYOUT: |
|||
const { mode, type, split } = value; |
|||
const splitOpt = split === undefined ? { split } : {}; |
|||
let headerSetting = {}; |
|||
if (type === MenuTypeEnum.TOP_MENU) { |
|||
headerSetting = { |
|||
theme: MenuThemeEnum.DARK, |
|||
}; |
|||
} |
|||
return { |
|||
menuSetting: { |
|||
mode, |
|||
type, |
|||
collapsed: false, |
|||
show: true, |
|||
...splitOpt, |
|||
}, |
|||
headerSetting, |
|||
}; |
|||
|
|||
case HandlerEnum.MENU_HAS_DRAG: |
|||
return { |
|||
menuSetting: { |
|||
hasDrag: value, |
|||
}, |
|||
}; |
|||
|
|||
case HandlerEnum.MENU_ACCORDION: |
|||
return { |
|||
menuSetting: { |
|||
accordion: value, |
|||
}, |
|||
}; |
|||
case HandlerEnum.MENU_TRIGGER: |
|||
return { |
|||
menuSetting: { |
|||
trigger: value, |
|||
}, |
|||
}; |
|||
case HandlerEnum.MENU_TOP_ALIGN: |
|||
return { |
|||
menuSetting: { |
|||
topMenuAlign: value, |
|||
}, |
|||
}; |
|||
case HandlerEnum.MENU_COLLAPSED: |
|||
return { |
|||
menuSetting: { |
|||
collapsed: value, |
|||
}, |
|||
}; |
|||
case HandlerEnum.MENU_WIDTH: |
|||
return { |
|||
menuSetting: { |
|||
menuWidth: value, |
|||
}, |
|||
}; |
|||
case HandlerEnum.MENU_COLLAPSED_SHOW_TITLE: |
|||
return { |
|||
menuSetting: { |
|||
collapsedShowTitle: value, |
|||
}, |
|||
}; |
|||
case HandlerEnum.MENU_SHOW_SIDEBAR: |
|||
return { |
|||
menuSetting: { |
|||
show: value, |
|||
}, |
|||
}; |
|||
case HandlerEnum.MENU_THEME: |
|||
return { |
|||
menuSetting: { |
|||
theme: value, |
|||
}, |
|||
}; |
|||
case HandlerEnum.MENU_SPLIT: |
|||
return { |
|||
menuSetting: { |
|||
split: value, |
|||
}, |
|||
}; |
|||
case HandlerEnum.MENU_SHOW_SEARCH: |
|||
return { |
|||
menuSetting: { |
|||
showSearch: value, |
|||
}, |
|||
}; |
|||
case HandlerEnum.OPEN_PAGE_LOADING: |
|||
return { |
|||
openPageLoading: value, |
|||
}; |
|||
case HandlerEnum.OPEN_ROUTE_TRANSITION: |
|||
return { |
|||
openRouterTransition: value, |
|||
}; |
|||
case HandlerEnum.ROUTER_TRANSITION: |
|||
return { |
|||
routerTransition: value, |
|||
}; |
|||
case HandlerEnum.LOCK_TIME: |
|||
return { |
|||
lockTime: value, |
|||
}; |
|||
case HandlerEnum.FULL_CONTENT: |
|||
return { |
|||
fullContent: value, |
|||
}; |
|||
case HandlerEnum.CONTENT_MODE: |
|||
return { |
|||
contentMode: value, |
|||
}; |
|||
case HandlerEnum.SHOW_BREADCRUMB: |
|||
return { |
|||
showBreadCrumb: value, |
|||
}; |
|||
case HandlerEnum.SHOW_BREADCRUMB_ICON: |
|||
return { |
|||
showBreadCrumbIcon: value, |
|||
}; |
|||
case HandlerEnum.GRAY_MODE: |
|||
updateGrayMode(value); |
|||
return { |
|||
grayMode: value, |
|||
}; |
|||
case HandlerEnum.COLOR_WEAK: |
|||
updateColorWeak(value); |
|||
return { |
|||
colorWeak: value, |
|||
}; |
|||
case HandlerEnum.SHOW_LOGO: |
|||
return { |
|||
showLogo: value, |
|||
}; |
|||
case HandlerEnum.TABS_SHOW_QUICK: |
|||
return { |
|||
multiTabsSetting: { |
|||
showQuick: value, |
|||
}, |
|||
}; |
|||
case HandlerEnum.TABS_SHOW_QUICK: |
|||
return { |
|||
multiTabsSetting: { |
|||
showIcon: value, |
|||
}, |
|||
}; |
|||
case HandlerEnum.TABS_SHOW: |
|||
return { |
|||
multiTabsSetting: { |
|||
show: value, |
|||
}, |
|||
}; |
|||
case HandlerEnum.HEADER_THEME: |
|||
return { |
|||
headerSetting: { |
|||
theme: value, |
|||
}, |
|||
}; |
|||
case HandlerEnum.HEADER_FIXED: |
|||
return { |
|||
headerSetting: { |
|||
fixed: value, |
|||
}, |
|||
}; |
|||
case HandlerEnum.HEADER_SHOW: |
|||
return { |
|||
headerSetting: { |
|||
show: value, |
|||
}, |
|||
}; |
|||
default: |
|||
return {}; |
|||
} |
|||
} |
|||
Loading…
Reference in new issue