From 1376e86fc90bdf9dc4e02bf73728696d186bfc81 Mon Sep 17 00:00:00 2001 From: FuckDoctors Date: Thu, 22 Oct 2020 09:44:43 +0800 Subject: [PATCH] feat(breadcrumb): support showIcon --- src/layouts/default/LayoutBreadcrumb.tsx | 18 ++++++++++++++++-- src/layouts/default/LayoutHeader.tsx | 3 ++- src/layouts/default/setting/SettingDrawer.tsx | 13 +++++++++++++ src/settings/projectSetting.ts | 2 ++ src/types/config.d.ts | 2 ++ 5 files changed, 35 insertions(+), 3 deletions(-) diff --git a/src/layouts/default/LayoutBreadcrumb.tsx b/src/layouts/default/LayoutBreadcrumb.tsx index 302fb79a18e..3655eedcc0b 100644 --- a/src/layouts/default/LayoutBreadcrumb.tsx +++ b/src/layouts/default/LayoutBreadcrumb.tsx @@ -10,10 +10,17 @@ import { PageEnum } from '/@/enums/pageEnum'; import { isBoolean } from '/@/utils/is'; import { compile } from 'path-to-regexp'; +import Icon from '/@/components/Icon'; export default defineComponent({ name: 'BasicBreadcrumb', - setup() { + props: { + showIcon: { + type: Boolean, + default: false, + }, + }, + setup(props) { const itemList = ref([]); const { currentRoute, push } = useRouter(); @@ -78,7 +85,14 @@ export default defineComponent({ isLink={isLink} onClick={handleItemClick.bind(null, item)} > - {() => item.meta.title} + {() => ( + <> + {props.showIcon && item.meta.icon && item.meta.icon.trim() !== '' && ( + + )} + {item.meta.title} + + )} ); }); diff --git a/src/layouts/default/LayoutHeader.tsx b/src/layouts/default/LayoutHeader.tsx index 709cda28f8a..24198dc53be 100644 --- a/src/layouts/default/LayoutHeader.tsx +++ b/src/layouts/default/LayoutHeader.tsx @@ -94,6 +94,7 @@ export default defineComponent({ }, menuSetting: { mode, type: menuType, split: splitMenu, topMenuAlign }, showBreadCrumb, + showBreadCrumbIcon, } = getProjectConfig; const isSidebarType = menuType === MenuTypeEnum.SIDEBAR; @@ -106,7 +107,7 @@ export default defineComponent({ {showLogo && !isSidebarType && } {mode !== MenuModeEnum.HORIZONTAL && showBreadCrumb && !splitMenu && ( - + )} {unref(showTopMenu) && (
{ + baseHandler('showBreadCrumbIcon', e); + }, + def: showBreadCrumbIcon, + disabled: !unref(getShowHeaderRef), + }), renderSwitchItem('标签页', { handler: (e) => { baseHandler('showMultiple', e); @@ -449,6 +457,11 @@ export default defineComponent({ showBreadCrumb: value, }; } + if (event === 'showBreadCrumbIcon') { + config = { + showBreadCrumbIcon: value, + }; + } if (event === 'collapsed') { config = { menuSetting: { diff --git a/src/settings/projectSetting.ts b/src/settings/projectSetting.ts index 1f016d71e58..307bcf4e493 100644 --- a/src/settings/projectSetting.ts +++ b/src/settings/projectSetting.ts @@ -94,6 +94,8 @@ const setting: ProjectConfig = { lockTime: 0, // 显示面包屑 showBreadCrumb: true, + // 显示面包屑图标 + showBreadCrumbIcon: false, // 使用error-handler-plugin useErrorHandle: isProdMode(), diff --git a/src/types/config.d.ts b/src/types/config.d.ts index 8684048eb5e..4a32d04147a 100644 --- a/src/types/config.d.ts +++ b/src/types/config.d.ts @@ -84,6 +84,8 @@ export interface ProjectConfig { lockTime: number; // 显示面包屑 showBreadCrumb: boolean; + // 显示面包屑图标 + showBreadCrumbIcon: boolean; // 使用error-handler-plugin useErrorHandle: boolean;