Skip to content

Commit d8b25b4

Browse files
FuckDoctorsujn-bin
andauthored
feat(breadcrumb): support showIcon (#48)
Co-authored-by: FuckDoctors <zhbchwin@163.com>
1 parent 28392c3 commit d8b25b4

File tree

5 files changed

+35
-3
lines changed

5 files changed

+35
-3
lines changed

src/layouts/default/LayoutBreadcrumb.tsx

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,17 @@ import { PageEnum } from '/@/enums/pageEnum';
1010
import { isBoolean } from '/@/utils/is';
1111

1212
import { compile } from 'path-to-regexp';
13+
import Icon from '/@/components/Icon';
1314

1415
export default defineComponent({
1516
name: 'BasicBreadcrumb',
16-
setup() {
17+
props: {
18+
showIcon: {
19+
type: Boolean,
20+
default: false,
21+
},
22+
},
23+
setup(props) {
1724
const itemList = ref<AppRouteRecordRaw[]>([]);
1825
const { currentRoute, push } = useRouter();
1926

@@ -78,7 +85,14 @@ export default defineComponent({
7885
isLink={isLink}
7986
onClick={handleItemClick.bind(null, item)}
8087
>
81-
{() => item.meta.title}
88+
{() => (
89+
<>
90+
{props.showIcon && item.meta.icon && item.meta.icon.trim() !== '' && (
91+
<Icon icon={item.meta.icon} class="icon mr-1 mb-1" />
92+
)}
93+
{item.meta.title}
94+
</>
95+
)}
8296
</BreadcrumbItem>
8397
);
8498
});

src/layouts/default/LayoutHeader.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ export default defineComponent({
9494
},
9595
menuSetting: { mode, type: menuType, split: splitMenu, topMenuAlign },
9696
showBreadCrumb,
97+
showBreadCrumbIcon,
9798
} = getProjectConfig;
9899

99100
const isSidebarType = menuType === MenuTypeEnum.SIDEBAR;
@@ -106,7 +107,7 @@ export default defineComponent({
106107
{showLogo && !isSidebarType && <Logo class={`layout-header__logo`} />}
107108

108109
{mode !== MenuModeEnum.HORIZONTAL && showBreadCrumb && !splitMenu && (
109-
<LayoutBreadcrumb />
110+
<LayoutBreadcrumb showIcon={showBreadCrumbIcon} />
110111
)}
111112
{unref(showTopMenu) && (
112113
<div

src/layouts/default/setting/SettingDrawer.tsx

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -343,6 +343,7 @@ export default defineComponent({
343343
menuSetting: { show: showMenu },
344344
multiTabsSetting: { show: showMultiple, showQuick, showIcon: showTabIcon },
345345
showBreadCrumb,
346+
showBreadCrumbIcon,
346347
} = unref(getProjectConfigRef);
347348
return [
348349
renderSwitchItem('面包屑', {
@@ -352,6 +353,13 @@ export default defineComponent({
352353
def: showBreadCrumb,
353354
disabled: !unref(getShowHeaderRef),
354355
}),
356+
renderSwitchItem('面包屑图标', {
357+
handler: (e) => {
358+
baseHandler('showBreadCrumbIcon', e);
359+
},
360+
def: showBreadCrumbIcon,
361+
disabled: !unref(getShowHeaderRef),
362+
}),
355363
renderSwitchItem('标签页', {
356364
handler: (e) => {
357365
baseHandler('showMultiple', e);
@@ -449,6 +457,11 @@ export default defineComponent({
449457
showBreadCrumb: value,
450458
};
451459
}
460+
if (event === 'showBreadCrumbIcon') {
461+
config = {
462+
showBreadCrumbIcon: value,
463+
};
464+
}
452465
if (event === 'collapsed') {
453466
config = {
454467
menuSetting: {

src/settings/projectSetting.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,8 @@ const setting: ProjectConfig = {
9494
lockTime: 0,
9595
// 显示面包屑
9696
showBreadCrumb: true,
97+
// 显示面包屑图标
98+
showBreadCrumbIcon: false,
9799

98100
// 使用error-handler-plugin
99101
useErrorHandle: isProdMode(),

src/types/config.d.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,8 @@ export interface ProjectConfig {
8484
lockTime: number;
8585
// 显示面包屑
8686
showBreadCrumb: boolean;
87+
// 显示面包屑图标
88+
showBreadCrumbIcon: boolean;
8789
// 使用error-handler-plugin
8890
useErrorHandle: boolean;
8991

0 commit comments

Comments
 (0)