|
@@ -1,18 +1,17 @@
|
|
|
-import type { ProjectConfig } from '/@/types/config';
|
|
|
-
|
|
|
-import defaultSetting from '/@/settings/projectSetting';
|
|
|
-
|
|
|
-import { defineComponent, computed, unref, FunctionalComponent } from 'vue';
|
|
|
+import { defineComponent, computed, unref } from 'vue';
|
|
|
import { BasicDrawer } from '/@/components/Drawer/index';
|
|
|
-import { Divider, Switch, Tooltip, InputNumber, Select } from 'ant-design-vue';
|
|
|
-import { Button } from '/@/components/Button';
|
|
|
-import { CopyOutlined, RedoOutlined, CheckOutlined } from '@ant-design/icons-vue';
|
|
|
+import { Divider } from 'ant-design-vue';
|
|
|
+import {
|
|
|
+ TypePicker,
|
|
|
+ ThemePicker,
|
|
|
+ SettingFooter,
|
|
|
+ SwitchItem,
|
|
|
+ SelectItem,
|
|
|
+ InputNumberItem,
|
|
|
+} from './components';
|
|
|
|
|
|
import { MenuTypeEnum } from '/@/enums/menuEnum';
|
|
|
-import { appStore } from '/@/store/modules/app';
|
|
|
|
|
|
-import { useMessage } from '/@/hooks/web/useMessage';
|
|
|
-import { useCopyToClipboard } from '/@/hooks/web/useCopyToClipboard';
|
|
|
import { useRootSetting } from '/@/hooks/setting/useRootSetting';
|
|
|
import { useMenuSetting } from '/@/hooks/setting/useMenuSetting';
|
|
|
import { useHeaderSetting } from '/@/hooks/setting/useHeaderSetting';
|
|
@@ -20,8 +19,6 @@ import { useMultipleTabSetting } from '/@/hooks/setting/useMultipleTabSetting';
|
|
|
import { useTransitionSetting } from '/@/hooks/setting/useTransitionSetting';
|
|
|
import { useI18n } from '/@/hooks/web/useI18n';
|
|
|
|
|
|
-import { updateColorWeak, updateGrayMode } from '/@/setup/theme';
|
|
|
-
|
|
|
import { baseHandler } from './handler';
|
|
|
|
|
|
import {
|
|
@@ -35,146 +32,8 @@ import {
|
|
|
|
|
|
import { HEADER_PRESET_BG_COLOR_LIST, SIDE_BAR_BG_COLOR_LIST } from '/@/settings/colorSetting';
|
|
|
|
|
|
-interface SwitchOptions {
|
|
|
- config?: DeepPartial<ProjectConfig>;
|
|
|
- def?: any;
|
|
|
- disabled?: boolean;
|
|
|
- handler?: Fn;
|
|
|
-}
|
|
|
-
|
|
|
-interface SelectConfig {
|
|
|
- options?: LabelValueOptions;
|
|
|
- def?: any;
|
|
|
- disabled?: boolean;
|
|
|
- handler?: Fn;
|
|
|
-}
|
|
|
-
|
|
|
-interface ThemePickerProps {
|
|
|
- colorList: string[];
|
|
|
- handler: Fn;
|
|
|
- def: string;
|
|
|
-}
|
|
|
-
|
|
|
-const { createSuccessModal, createMessage } = useMessage();
|
|
|
const { t } = useI18n();
|
|
|
|
|
|
-/**
|
|
|
- * Menu type Picker comp
|
|
|
- */
|
|
|
-const MenuTypePicker: FunctionalComponent = () => {
|
|
|
- const { getIsHorizontal, getMenuType } = useMenuSetting();
|
|
|
- return (
|
|
|
- <div class={`setting-drawer__siderbar`}>
|
|
|
- {menuTypeList.map((item) => {
|
|
|
- const { title, type: ItemType, mode, src } = item;
|
|
|
- return (
|
|
|
- <Tooltip title={title} placement="bottom" key={title}>
|
|
|
- {{
|
|
|
- default: () => (
|
|
|
- <div
|
|
|
- onClick={baseHandler.bind(null, HandlerEnum.CHANGE_LAYOUT, {
|
|
|
- mode: mode,
|
|
|
- type: ItemType,
|
|
|
- split: unref(getIsHorizontal) ? false : undefined,
|
|
|
- })}
|
|
|
- >
|
|
|
- <CheckOutlined
|
|
|
- class={['check-icon', unref(getMenuType) === ItemType ? 'active' : '']}
|
|
|
- />
|
|
|
- <img src={src} />
|
|
|
- </div>
|
|
|
- ),
|
|
|
- }}
|
|
|
- </Tooltip>
|
|
|
- );
|
|
|
- })}
|
|
|
- </div>
|
|
|
- );
|
|
|
-};
|
|
|
-
|
|
|
-const ThemePicker: FunctionalComponent<ThemePickerProps> = (props) => {
|
|
|
- return (
|
|
|
- <div class={`setting-drawer__theme-item`}>
|
|
|
- {props.colorList.map((color) => {
|
|
|
- return (
|
|
|
- <span
|
|
|
- onClick={() => props.handler?.(color)}
|
|
|
- key={color}
|
|
|
- class={[props.def === color ? 'active' : '']}
|
|
|
- style={{
|
|
|
- background: color,
|
|
|
- }}
|
|
|
- >
|
|
|
- <CheckOutlined class="icon" />
|
|
|
- </span>
|
|
|
- );
|
|
|
- })}
|
|
|
- </div>
|
|
|
- );
|
|
|
-};
|
|
|
-
|
|
|
-/**
|
|
|
- * FooterButton component
|
|
|
- */
|
|
|
-const FooterButton: FunctionalComponent = () => {
|
|
|
- const { getRootSetting } = useRootSetting();
|
|
|
- function handleCopy() {
|
|
|
- const { isSuccessRef } = useCopyToClipboard(JSON.stringify(unref(getRootSetting), null, 2));
|
|
|
- unref(isSuccessRef) &&
|
|
|
- createSuccessModal({
|
|
|
- title: t('layout.setting.operatingTitle'),
|
|
|
- content: t('layout.setting.operatingContent'),
|
|
|
- });
|
|
|
- }
|
|
|
- function handleResetSetting() {
|
|
|
- try {
|
|
|
- appStore.commitProjectConfigState(defaultSetting);
|
|
|
- const { colorWeak, grayMode } = defaultSetting;
|
|
|
- // updateTheme(themeColor);
|
|
|
- updateColorWeak(colorWeak);
|
|
|
- updateGrayMode(grayMode);
|
|
|
- createMessage.success(t('layout.setting.resetSuccess'));
|
|
|
- } catch (error) {
|
|
|
- createMessage.error(error);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- function handleClearAndRedo() {
|
|
|
- localStorage.clear();
|
|
|
- appStore.resumeAllState();
|
|
|
- location.reload();
|
|
|
- }
|
|
|
-
|
|
|
- return (
|
|
|
- <div class="setting-drawer__footer">
|
|
|
- <Button type="primary" block onClick={handleCopy}>
|
|
|
- {() => (
|
|
|
- <>
|
|
|
- <CopyOutlined class="mr-2" />
|
|
|
- {t('layout.setting.copyBtn')}
|
|
|
- </>
|
|
|
- )}
|
|
|
- </Button>
|
|
|
- <Button block class="mt-2" onClick={handleResetSetting} color="warning">
|
|
|
- {() => (
|
|
|
- <>
|
|
|
- <RedoOutlined class="mr-2" />
|
|
|
- {t('layout.setting.resetBtn')}
|
|
|
- </>
|
|
|
- )}
|
|
|
- </Button>
|
|
|
- <Button block class="mt-2" onClick={handleClearAndRedo} color="error">
|
|
|
- {() => (
|
|
|
- <>
|
|
|
- <RedoOutlined class="mr-2" />
|
|
|
- {t('layout.setting.clearBtn')}
|
|
|
- </>
|
|
|
- )}
|
|
|
- </Button>
|
|
|
- </div>
|
|
|
- );
|
|
|
-};
|
|
|
-
|
|
|
export default defineComponent({
|
|
|
name: 'SettingDrawer',
|
|
|
setup(_, { attrs }) {
|
|
@@ -187,6 +46,7 @@ export default defineComponent({
|
|
|
getFullContent,
|
|
|
getColorWeak,
|
|
|
getGrayMode,
|
|
|
+ getLockTime,
|
|
|
} = useRootSetting();
|
|
|
|
|
|
const {
|
|
@@ -229,38 +89,44 @@ export default defineComponent({
|
|
|
function renderSidebar() {
|
|
|
return (
|
|
|
<>
|
|
|
- <MenuTypePicker />
|
|
|
- {renderSwitchItem(t('layout.setting.splitMenu'), {
|
|
|
- handler: (e) => {
|
|
|
- baseHandler(HandlerEnum.MENU_SPLIT, e);
|
|
|
- },
|
|
|
- def: unref(getSplit),
|
|
|
- disabled: !unref(getShowMenuRef) || unref(getMenuType) !== MenuTypeEnum.MIX,
|
|
|
- })}
|
|
|
+ <TypePicker
|
|
|
+ menuTypeList={menuTypeList}
|
|
|
+ handler={(item: typeof menuTypeList[0]) => {
|
|
|
+ baseHandler(HandlerEnum.CHANGE_LAYOUT, {
|
|
|
+ mode: item.mode,
|
|
|
+ type: item.type,
|
|
|
+ split: unref(getIsHorizontal) ? false : undefined,
|
|
|
+ });
|
|
|
+ }}
|
|
|
+ def={unref(getMenuType)}
|
|
|
+ />
|
|
|
+ <SwitchItem
|
|
|
+ title={t('layout.setting.splitMenu')}
|
|
|
+ event={HandlerEnum.MENU_SPLIT}
|
|
|
+ def={unref(getSplit)}
|
|
|
+ disabled={!unref(getShowMenuRef) || unref(getMenuType) !== MenuTypeEnum.MIX}
|
|
|
+ />
|
|
|
</>
|
|
|
);
|
|
|
}
|
|
|
|
|
|
- function renderTheme() {
|
|
|
+ function renderHeaderTheme() {
|
|
|
return (
|
|
|
- <>
|
|
|
- <Divider>{() => t('layout.setting.headerTheme')}</Divider>
|
|
|
- <ThemePicker
|
|
|
- colorList={HEADER_PRESET_BG_COLOR_LIST}
|
|
|
- def={unref(getHeaderBgColor)}
|
|
|
- handler={(e) => {
|
|
|
- baseHandler(HandlerEnum.HEADER_THEME, e);
|
|
|
- }}
|
|
|
- />
|
|
|
- <Divider>{() => t('layout.setting.sidebarTheme')}</Divider>
|
|
|
- <ThemePicker
|
|
|
- colorList={SIDE_BAR_BG_COLOR_LIST}
|
|
|
- def={unref(getMenuBgColor)}
|
|
|
- handler={(e) => {
|
|
|
- baseHandler(HandlerEnum.MENU_THEME, e);
|
|
|
- }}
|
|
|
- />
|
|
|
- </>
|
|
|
+ <ThemePicker
|
|
|
+ colorList={HEADER_PRESET_BG_COLOR_LIST}
|
|
|
+ def={unref(getHeaderBgColor)}
|
|
|
+ event={HandlerEnum.HEADER_THEME}
|
|
|
+ />
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ function renderSiderTheme() {
|
|
|
+ return (
|
|
|
+ <ThemePicker
|
|
|
+ colorList={SIDE_BAR_BG_COLOR_LIST}
|
|
|
+ def={unref(getMenuBgColor)}
|
|
|
+ event={HandlerEnum.MENU_THEME}
|
|
|
+ />
|
|
|
);
|
|
|
}
|
|
|
|
|
@@ -268,264 +134,192 @@ export default defineComponent({
|
|
|
* @description:
|
|
|
*/
|
|
|
function renderFeatures() {
|
|
|
- return [
|
|
|
- renderSwitchItem(t('layout.setting.menuDrag'), {
|
|
|
- handler: (e) => {
|
|
|
- baseHandler(HandlerEnum.MENU_HAS_DRAG, e);
|
|
|
- },
|
|
|
- def: unref(getCanDrag),
|
|
|
- disabled: !unref(getShowMenuRef),
|
|
|
- }),
|
|
|
- renderSwitchItem(t('layout.setting.menuSearch'), {
|
|
|
- handler: (e) => {
|
|
|
- baseHandler(HandlerEnum.HEADER_SEARCH, e);
|
|
|
- },
|
|
|
- def: unref(getShowSearch),
|
|
|
- disabled: !unref(getShowHeader),
|
|
|
- }),
|
|
|
- renderSwitchItem(t('layout.setting.menuAccordion'), {
|
|
|
- handler: (e) => {
|
|
|
- baseHandler(HandlerEnum.MENU_ACCORDION, e);
|
|
|
- },
|
|
|
- def: unref(getAccordion),
|
|
|
- disabled: !unref(getShowMenuRef),
|
|
|
- }),
|
|
|
- renderSwitchItem(t('layout.setting.menuCollapse'), {
|
|
|
- handler: (e) => {
|
|
|
- baseHandler(HandlerEnum.MENU_COLLAPSED, e);
|
|
|
- },
|
|
|
- def: unref(getCollapsed),
|
|
|
- disabled: !unref(getShowMenuRef),
|
|
|
- }),
|
|
|
- renderSwitchItem(t('layout.setting.collapseMenuDisplayName'), {
|
|
|
- handler: (e) => {
|
|
|
- baseHandler(HandlerEnum.MENU_COLLAPSED_SHOW_TITLE, e);
|
|
|
- },
|
|
|
- def: unref(getCollapsedShowTitle),
|
|
|
- disabled: !unref(getShowMenuRef) || !unref(getCollapsed),
|
|
|
- }),
|
|
|
- renderSwitchItem(t('layout.setting.fixedHeader'), {
|
|
|
- handler: (e) => {
|
|
|
- baseHandler(HandlerEnum.HEADER_FIXED, e);
|
|
|
- },
|
|
|
- def: unref(getHeaderFixed),
|
|
|
- disabled: !unref(getShowHeader),
|
|
|
- }),
|
|
|
- renderSwitchItem(t('layout.setting.fixedSideBar'), {
|
|
|
- handler: (e) => {
|
|
|
- baseHandler(HandlerEnum.MENU_FIXED, e);
|
|
|
- },
|
|
|
- def: unref(getMenuFixed),
|
|
|
- disabled: !unref(getShowMenuRef),
|
|
|
- }),
|
|
|
- renderSelectItem(t('layout.setting.topMenuLayout'), {
|
|
|
- handler: (e) => {
|
|
|
- baseHandler(HandlerEnum.MENU_TOP_ALIGN, e);
|
|
|
- },
|
|
|
- def: unref(getTopMenuAlign),
|
|
|
- options: topMenuAlignOptions,
|
|
|
- disabled: !unref(getShowHeader) || (!unref(getIsTopMenu) && !unref(getSplit)),
|
|
|
- }),
|
|
|
- renderSelectItem(t('layout.setting.menuCollapseButton'), {
|
|
|
- handler: (e) => {
|
|
|
- baseHandler(HandlerEnum.MENU_TRIGGER, e);
|
|
|
- },
|
|
|
- disabled: !unref(getShowMenuRef),
|
|
|
- def: unref(getTrigger),
|
|
|
- options: menuTriggerOptions,
|
|
|
- }),
|
|
|
-
|
|
|
- renderSelectItem(t('layout.setting.contentMode'), {
|
|
|
- handler: (e) => {
|
|
|
- baseHandler(HandlerEnum.CONTENT_MODE, e);
|
|
|
- },
|
|
|
- def: unref(getContentMode),
|
|
|
- options: contentModeOptions,
|
|
|
- }),
|
|
|
- <div class={`setting-drawer__cell-item`}>
|
|
|
- <span>{t('layout.setting.autoScreenLock')}</span>
|
|
|
- <InputNumber
|
|
|
- style="width:126px"
|
|
|
- size="small"
|
|
|
+ return (
|
|
|
+ <>
|
|
|
+ <SwitchItem
|
|
|
+ title={t('layout.setting.menuDrag')}
|
|
|
+ event={HandlerEnum.MENU_HAS_DRAG}
|
|
|
+ def={unref(getCanDrag)}
|
|
|
+ disabled={!unref(getShowMenuRef)}
|
|
|
+ />
|
|
|
+ <SwitchItem
|
|
|
+ title={t('layout.setting.menuSearch')}
|
|
|
+ event={HandlerEnum.HEADER_SEARCH}
|
|
|
+ def={unref(getShowSearch)}
|
|
|
+ disabled={!unref(getShowHeader)}
|
|
|
+ />
|
|
|
+ <SwitchItem
|
|
|
+ title={t('layout.setting.menuAccordion')}
|
|
|
+ event={HandlerEnum.MENU_ACCORDION}
|
|
|
+ def={unref(getAccordion)}
|
|
|
+ disabled={!unref(getShowMenuRef)}
|
|
|
+ />
|
|
|
+ <SwitchItem
|
|
|
+ title={t('layout.setting.menuCollapse')}
|
|
|
+ event={HandlerEnum.MENU_COLLAPSED}
|
|
|
+ def={unref(getCollapsed)}
|
|
|
+ disabled={!unref(getShowMenuRef)}
|
|
|
+ />
|
|
|
+ <SwitchItem
|
|
|
+ title={t('layout.setting.collapseMenuDisplayName')}
|
|
|
+ event={HandlerEnum.MENU_COLLAPSED_SHOW_TITLE}
|
|
|
+ def={unref(getCollapsedShowTitle)}
|
|
|
+ disabled={!unref(getShowMenuRef) || !unref(getCollapsed)}
|
|
|
+ />
|
|
|
+ <SwitchItem
|
|
|
+ title={t('layout.setting.fixedHeader')}
|
|
|
+ event={HandlerEnum.HEADER_FIXED}
|
|
|
+ def={unref(getHeaderFixed)}
|
|
|
+ disabled={!unref(getShowHeader)}
|
|
|
+ />
|
|
|
+ <SwitchItem
|
|
|
+ title={t('layout.setting.fixedSideBar')}
|
|
|
+ event={HandlerEnum.MENU_FIXED}
|
|
|
+ def={unref(getMenuFixed)}
|
|
|
+ disabled={!unref(getShowMenuRef)}
|
|
|
+ />
|
|
|
+ <SelectItem
|
|
|
+ title={t('layout.setting.topMenuLayout')}
|
|
|
+ event={HandlerEnum.MENU_TOP_ALIGN}
|
|
|
+ def={unref(getTopMenuAlign)}
|
|
|
+ options={topMenuAlignOptions}
|
|
|
+ disabled={!unref(getShowHeader) || (!unref(getIsTopMenu) && !unref(getSplit))}
|
|
|
+ />
|
|
|
+ <SelectItem
|
|
|
+ title={t('layout.setting.menuCollapseButton')}
|
|
|
+ event={HandlerEnum.MENU_TRIGGER}
|
|
|
+ def={unref(getTrigger)}
|
|
|
+ options={menuTriggerOptions}
|
|
|
+ disabled={!unref(getShowMenuRef)}
|
|
|
+ />
|
|
|
+ <SelectItem
|
|
|
+ title={t('layout.setting.contentMode')}
|
|
|
+ event={HandlerEnum.CONTENT_MODE}
|
|
|
+ def={unref(getContentMode)}
|
|
|
+ options={contentModeOptions}
|
|
|
+ />
|
|
|
+ <InputNumberItem
|
|
|
+ title={t('layout.setting.autoScreenLock')}
|
|
|
min={0}
|
|
|
- onChange={(e: any) => {
|
|
|
- baseHandler(HandlerEnum.LOCK_TIME, e);
|
|
|
- }}
|
|
|
- defaultValue={appStore.getProjectConfig.lockTime}
|
|
|
+ event={HandlerEnum.LOCK_TIME}
|
|
|
+ defaultValue={unref(getLockTime)}
|
|
|
formatter={(value: string) => {
|
|
|
- if (parseInt(value) === 0) {
|
|
|
- return `0(${t('layout.setting.notAutoScreenLock')})`;
|
|
|
- }
|
|
|
- return `${value}${t('layout.setting.minute')}`;
|
|
|
+ return parseInt(value) === 0
|
|
|
+ ? `0(${t('layout.setting.notAutoScreenLock')})`
|
|
|
+ : `${value}${t('layout.setting.minute')}`;
|
|
|
}}
|
|
|
/>
|
|
|
- </div>,
|
|
|
- <div class={`setting-drawer__cell-item`}>
|
|
|
- <span>{t('layout.setting.expandedMenuWidth')}</span>
|
|
|
- <InputNumber
|
|
|
- style="width:126px"
|
|
|
- size="small"
|
|
|
+ <InputNumberItem
|
|
|
+ title={t('layout.setting.expandedMenuWidth')}
|
|
|
max={600}
|
|
|
min={100}
|
|
|
step={10}
|
|
|
+ event={HandlerEnum.MENU_WIDTH}
|
|
|
disabled={!unref(getShowMenuRef)}
|
|
|
defaultValue={unref(getMenuWidth)}
|
|
|
formatter={(value: string) => `${parseInt(value)}px`}
|
|
|
- onChange={(e: any) => {
|
|
|
- baseHandler(HandlerEnum.MENU_WIDTH, e);
|
|
|
- }}
|
|
|
/>
|
|
|
- </div>,
|
|
|
- ];
|
|
|
+ </>
|
|
|
+ );
|
|
|
}
|
|
|
|
|
|
function renderContent() {
|
|
|
- return [
|
|
|
- renderSwitchItem(t('layout.setting.breadcrumb'), {
|
|
|
- handler: (e) => {
|
|
|
- baseHandler(HandlerEnum.SHOW_BREADCRUMB, e);
|
|
|
- },
|
|
|
- def: unref(getShowBreadCrumb),
|
|
|
- disabled: !unref(getShowHeader),
|
|
|
- }),
|
|
|
- renderSwitchItem(t('layout.setting.breadcrumbIcon'), {
|
|
|
- handler: (e) => {
|
|
|
- baseHandler(HandlerEnum.SHOW_BREADCRUMB_ICON, e);
|
|
|
- },
|
|
|
- def: unref(getShowBreadCrumbIcon),
|
|
|
- disabled: !unref(getShowHeader),
|
|
|
- }),
|
|
|
- renderSwitchItem(t('layout.setting.tabs'), {
|
|
|
- handler: (e) => {
|
|
|
- baseHandler(HandlerEnum.TABS_SHOW, e);
|
|
|
- },
|
|
|
- def: unref(getShowMultipleTab),
|
|
|
- }),
|
|
|
- renderSwitchItem(t('layout.setting.tabsQuickBtn'), {
|
|
|
- handler: (e) => {
|
|
|
- baseHandler(HandlerEnum.TABS_SHOW_QUICK, e);
|
|
|
- },
|
|
|
- def: unref(getShowQuick),
|
|
|
- disabled: !unref(getShowMultipleTab),
|
|
|
- }),
|
|
|
-
|
|
|
- renderSwitchItem(t('layout.setting.sidebar'), {
|
|
|
- handler: (e) => {
|
|
|
- baseHandler(HandlerEnum.MENU_SHOW_SIDEBAR, e);
|
|
|
- },
|
|
|
- def: unref(getShowMenu),
|
|
|
- disabled: unref(getIsHorizontal),
|
|
|
- }),
|
|
|
- renderSwitchItem(t('layout.setting.header'), {
|
|
|
- handler: (e) => {
|
|
|
- baseHandler(HandlerEnum.HEADER_SHOW, e);
|
|
|
- },
|
|
|
- def: unref(getShowHeader),
|
|
|
- }),
|
|
|
- renderSwitchItem('Logo', {
|
|
|
- handler: (e) => {
|
|
|
- baseHandler(HandlerEnum.SHOW_LOGO, e);
|
|
|
- },
|
|
|
- def: unref(getShowLogo),
|
|
|
- }),
|
|
|
- renderSwitchItem(t('layout.setting.footer'), {
|
|
|
- handler: (e) => {
|
|
|
- baseHandler(HandlerEnum.SHOW_FOOTER, e);
|
|
|
- },
|
|
|
- def: unref(getShowFooter),
|
|
|
- }),
|
|
|
- renderSwitchItem(t('layout.setting.fullContent'), {
|
|
|
- handler: (e) => {
|
|
|
- baseHandler(HandlerEnum.FULL_CONTENT, e);
|
|
|
- },
|
|
|
- def: unref(getFullContent),
|
|
|
- }),
|
|
|
- renderSwitchItem(t('layout.setting.grayMode'), {
|
|
|
- handler: (e) => {
|
|
|
- baseHandler(HandlerEnum.GRAY_MODE, e);
|
|
|
- },
|
|
|
- def: unref(getGrayMode),
|
|
|
- }),
|
|
|
- renderSwitchItem(t('layout.setting.colorWeak'), {
|
|
|
- handler: (e) => {
|
|
|
- baseHandler(HandlerEnum.COLOR_WEAK, e);
|
|
|
- },
|
|
|
- def: unref(getColorWeak),
|
|
|
- }),
|
|
|
- ];
|
|
|
- }
|
|
|
-
|
|
|
- function renderTransition() {
|
|
|
return (
|
|
|
<>
|
|
|
- {renderSwitchItem(t('layout.setting.progress'), {
|
|
|
- handler: (e) => {
|
|
|
- baseHandler(HandlerEnum.OPEN_PROGRESS, e);
|
|
|
- },
|
|
|
- def: unref(getOpenNProgress),
|
|
|
- })}
|
|
|
- {renderSwitchItem(t('layout.setting.switchLoading'), {
|
|
|
- handler: (e) => {
|
|
|
- baseHandler(HandlerEnum.OPEN_PAGE_LOADING, e);
|
|
|
- },
|
|
|
- def: unref(getOpenPageLoading),
|
|
|
- })}
|
|
|
+ <SwitchItem
|
|
|
+ title={t('layout.setting.breadcrumb')}
|
|
|
+ event={HandlerEnum.SHOW_BREADCRUMB}
|
|
|
+ def={unref(getShowBreadCrumb)}
|
|
|
+ disabled={!unref(getShowHeader)}
|
|
|
+ />
|
|
|
+
|
|
|
+ <SwitchItem
|
|
|
+ title={t('layout.setting.breadcrumbIcon')}
|
|
|
+ event={HandlerEnum.SHOW_BREADCRUMB_ICON}
|
|
|
+ def={unref(getShowBreadCrumbIcon)}
|
|
|
+ disabled={!unref(getShowHeader)}
|
|
|
+ />
|
|
|
+
|
|
|
+ <SwitchItem
|
|
|
+ title={t('layout.setting.tabs')}
|
|
|
+ event={HandlerEnum.TABS_SHOW}
|
|
|
+ def={unref(getShowMultipleTab)}
|
|
|
+ />
|
|
|
+
|
|
|
+ <SwitchItem
|
|
|
+ title={t('layout.setting.tabsQuickBtn')}
|
|
|
+ event={HandlerEnum.TABS_SHOW_QUICK}
|
|
|
+ def={unref(getShowQuick)}
|
|
|
+ disabled={!unref(getShowMultipleTab)}
|
|
|
+ />
|
|
|
+
|
|
|
+ <SwitchItem
|
|
|
+ title={t('layout.setting.sidebar')}
|
|
|
+ event={HandlerEnum.MENU_SHOW_SIDEBAR}
|
|
|
+ def={unref(getShowMenu)}
|
|
|
+ disabled={unref(getIsHorizontal)}
|
|
|
+ />
|
|
|
+
|
|
|
+ <SwitchItem
|
|
|
+ title={t('layout.setting.header')}
|
|
|
+ event={HandlerEnum.HEADER_SHOW}
|
|
|
+ def={unref(getShowHeader)}
|
|
|
+ />
|
|
|
+ <SwitchItem title="Logo" event={HandlerEnum.SHOW_LOGO} def={unref(getShowLogo)} />
|
|
|
+ <SwitchItem
|
|
|
+ title={t('layout.setting.footer')}
|
|
|
+ event={HandlerEnum.SHOW_FOOTER}
|
|
|
+ def={unref(getShowFooter)}
|
|
|
+ />
|
|
|
+ <SwitchItem
|
|
|
+ title={t('layout.setting.fullContent')}
|
|
|
+ event={HandlerEnum.FULL_CONTENT}
|
|
|
+ def={unref(getFullContent)}
|
|
|
+ />
|
|
|
|
|
|
- {renderSwitchItem(t('layout.setting.switchAnimation'), {
|
|
|
- handler: (e) => {
|
|
|
- baseHandler(HandlerEnum.OPEN_ROUTE_TRANSITION, e);
|
|
|
- },
|
|
|
- def: unref(getEnableTransition),
|
|
|
- })}
|
|
|
+ <SwitchItem
|
|
|
+ title={t('layout.setting.grayMode')}
|
|
|
+ event={HandlerEnum.GRAY_MODE}
|
|
|
+ def={unref(getGrayMode)}
|
|
|
+ />
|
|
|
|
|
|
- {renderSelectItem(t('layout.setting.animationType'), {
|
|
|
- handler: (e) => {
|
|
|
- baseHandler(HandlerEnum.ROUTER_TRANSITION, e);
|
|
|
- },
|
|
|
- def: unref(getBasicTransition),
|
|
|
- options: routerTransitionOptions,
|
|
|
- disabled: !unref(getEnableTransition),
|
|
|
- })}
|
|
|
+ <SwitchItem
|
|
|
+ title={t('layout.setting.colorWeak')}
|
|
|
+ event={HandlerEnum.COLOR_WEAK}
|
|
|
+ def={unref(getColorWeak)}
|
|
|
+ />
|
|
|
</>
|
|
|
);
|
|
|
}
|
|
|
|
|
|
- function renderSelectItem(text: string, config?: SelectConfig) {
|
|
|
- const { handler, def, disabled = false, options } = config || {};
|
|
|
- const opt = def ? { value: def, defaultValue: def } : {};
|
|
|
+ function renderTransition() {
|
|
|
return (
|
|
|
- <div class={`setting-drawer__cell-item`}>
|
|
|
- <span>{text}</span>
|
|
|
- <Select
|
|
|
- {...opt}
|
|
|
- disabled={disabled}
|
|
|
- size="small"
|
|
|
- style={{ width: '126px' }}
|
|
|
- onChange={(e) => {
|
|
|
- handler && handler(e);
|
|
|
- }}
|
|
|
- options={options}
|
|
|
+ <>
|
|
|
+ <SwitchItem
|
|
|
+ title={t('layout.setting.progress')}
|
|
|
+ event={HandlerEnum.OPEN_PROGRESS}
|
|
|
+ def={unref(getOpenNProgress)}
|
|
|
+ />
|
|
|
+ <SwitchItem
|
|
|
+ title={t('layout.setting.switchLoading')}
|
|
|
+ event={HandlerEnum.OPEN_PAGE_LOADING}
|
|
|
+ def={unref(getOpenPageLoading)}
|
|
|
/>
|
|
|
- </div>
|
|
|
- );
|
|
|
- }
|
|
|
|
|
|
- function renderSwitchItem(text: string, options?: SwitchOptions) {
|
|
|
- const { handler, def, disabled = false } = options || {};
|
|
|
- const opt = def ? { checked: def } : {};
|
|
|
- return (
|
|
|
- <div class={`setting-drawer__cell-item`}>
|
|
|
- <span>{text}</span>
|
|
|
- <Switch
|
|
|
- {...opt}
|
|
|
- disabled={disabled}
|
|
|
- onChange={(e: any) => {
|
|
|
- handler && handler(e);
|
|
|
- }}
|
|
|
- checkedChildren={t('layout.setting.on')}
|
|
|
- unCheckedChildren={t('layout.setting.off')}
|
|
|
+ <SwitchItem
|
|
|
+ title={t('layout.setting.switchAnimation')}
|
|
|
+ event={HandlerEnum.OPEN_ROUTE_TRANSITION}
|
|
|
+ def={unref(getEnableTransition)}
|
|
|
/>
|
|
|
- </div>
|
|
|
+
|
|
|
+ <SelectItem
|
|
|
+ title={t('layout.setting.animationType')}
|
|
|
+ event={HandlerEnum.ROUTER_TRANSITION}
|
|
|
+ def={unref(getBasicTransition)}
|
|
|
+ options={routerTransitionOptions}
|
|
|
+ disabled={!unref(getEnableTransition)}
|
|
|
+ />
|
|
|
+ </>
|
|
|
);
|
|
|
}
|
|
|
|
|
@@ -541,7 +335,10 @@ export default defineComponent({
|
|
|
<>
|
|
|
<Divider>{() => t('layout.setting.navMode')}</Divider>
|
|
|
{renderSidebar()}
|
|
|
- {renderTheme()}
|
|
|
+ <Divider>{() => t('layout.setting.headerTheme')}</Divider>
|
|
|
+ {renderHeaderTheme()}
|
|
|
+ <Divider>{() => t('layout.setting.sidebarTheme')}</Divider>
|
|
|
+ {renderSiderTheme()}
|
|
|
<Divider>{() => t('layout.setting.interfaceFunction')}</Divider>
|
|
|
{renderFeatures()}
|
|
|
<Divider>{() => t('layout.setting.interfaceDisplay')}</Divider>
|
|
@@ -549,7 +346,7 @@ export default defineComponent({
|
|
|
<Divider>{() => t('layout.setting.animation')}</Divider>
|
|
|
{renderTransition()}
|
|
|
<Divider />
|
|
|
- <FooterButton />
|
|
|
+ <SettingFooter />
|
|
|
</>
|
|
|
),
|
|
|
}}
|