Commit d8b25b488ba4c6626d3b94ed84270e96f403d859
Committed by
GitHub
1 parent
28392c3d
feat(breadcrumb): support showIcon (#48)
Co-authored-by: FuckDoctors <zhbchwin@163.com>
Showing
5 changed files
with
35 additions
and
3 deletions
src/layouts/default/LayoutBreadcrumb.tsx
@@ -10,10 +10,17 @@ import { PageEnum } from '/@/enums/pageEnum'; | @@ -10,10 +10,17 @@ import { PageEnum } from '/@/enums/pageEnum'; | ||
10 | import { isBoolean } from '/@/utils/is'; | 10 | import { isBoolean } from '/@/utils/is'; |
11 | 11 | ||
12 | import { compile } from 'path-to-regexp'; | 12 | import { compile } from 'path-to-regexp'; |
13 | +import Icon from '/@/components/Icon'; | ||
13 | 14 | ||
14 | export default defineComponent({ | 15 | export default defineComponent({ |
15 | name: 'BasicBreadcrumb', | 16 | name: 'BasicBreadcrumb', |
16 | - setup() { | 17 | + props: { |
18 | + showIcon: { | ||
19 | + type: Boolean, | ||
20 | + default: false, | ||
21 | + }, | ||
22 | + }, | ||
23 | + setup(props) { | ||
17 | const itemList = ref<AppRouteRecordRaw[]>([]); | 24 | const itemList = ref<AppRouteRecordRaw[]>([]); |
18 | const { currentRoute, push } = useRouter(); | 25 | const { currentRoute, push } = useRouter(); |
19 | 26 | ||
@@ -78,7 +85,14 @@ export default defineComponent({ | @@ -78,7 +85,14 @@ export default defineComponent({ | ||
78 | isLink={isLink} | 85 | isLink={isLink} |
79 | onClick={handleItemClick.bind(null, item)} | 86 | onClick={handleItemClick.bind(null, item)} |
80 | > | 87 | > |
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 | + )} | ||
82 | </BreadcrumbItem> | 96 | </BreadcrumbItem> |
83 | ); | 97 | ); |
84 | }); | 98 | }); |
src/layouts/default/LayoutHeader.tsx
@@ -94,6 +94,7 @@ export default defineComponent({ | @@ -94,6 +94,7 @@ export default defineComponent({ | ||
94 | }, | 94 | }, |
95 | menuSetting: { mode, type: menuType, split: splitMenu, topMenuAlign }, | 95 | menuSetting: { mode, type: menuType, split: splitMenu, topMenuAlign }, |
96 | showBreadCrumb, | 96 | showBreadCrumb, |
97 | + showBreadCrumbIcon, | ||
97 | } = getProjectConfig; | 98 | } = getProjectConfig; |
98 | 99 | ||
99 | const isSidebarType = menuType === MenuTypeEnum.SIDEBAR; | 100 | const isSidebarType = menuType === MenuTypeEnum.SIDEBAR; |
@@ -106,7 +107,7 @@ export default defineComponent({ | @@ -106,7 +107,7 @@ export default defineComponent({ | ||
106 | {showLogo && !isSidebarType && <Logo class={`layout-header__logo`} />} | 107 | {showLogo && !isSidebarType && <Logo class={`layout-header__logo`} />} |
107 | 108 | ||
108 | {mode !== MenuModeEnum.HORIZONTAL && showBreadCrumb && !splitMenu && ( | 109 | {mode !== MenuModeEnum.HORIZONTAL && showBreadCrumb && !splitMenu && ( |
109 | - <LayoutBreadcrumb /> | 110 | + <LayoutBreadcrumb showIcon={showBreadCrumbIcon} /> |
110 | )} | 111 | )} |
111 | {unref(showTopMenu) && ( | 112 | {unref(showTopMenu) && ( |
112 | <div | 113 | <div |
src/layouts/default/setting/SettingDrawer.tsx
@@ -343,6 +343,7 @@ export default defineComponent({ | @@ -343,6 +343,7 @@ export default defineComponent({ | ||
343 | menuSetting: { show: showMenu }, | 343 | menuSetting: { show: showMenu }, |
344 | multiTabsSetting: { show: showMultiple, showQuick, showIcon: showTabIcon }, | 344 | multiTabsSetting: { show: showMultiple, showQuick, showIcon: showTabIcon }, |
345 | showBreadCrumb, | 345 | showBreadCrumb, |
346 | + showBreadCrumbIcon, | ||
346 | } = unref(getProjectConfigRef); | 347 | } = unref(getProjectConfigRef); |
347 | return [ | 348 | return [ |
348 | renderSwitchItem('面包屑', { | 349 | renderSwitchItem('面包屑', { |
@@ -352,6 +353,13 @@ export default defineComponent({ | @@ -352,6 +353,13 @@ export default defineComponent({ | ||
352 | def: showBreadCrumb, | 353 | def: showBreadCrumb, |
353 | disabled: !unref(getShowHeaderRef), | 354 | disabled: !unref(getShowHeaderRef), |
354 | }), | 355 | }), |
356 | + renderSwitchItem('面包屑图标', { | ||
357 | + handler: (e) => { | ||
358 | + baseHandler('showBreadCrumbIcon', e); | ||
359 | + }, | ||
360 | + def: showBreadCrumbIcon, | ||
361 | + disabled: !unref(getShowHeaderRef), | ||
362 | + }), | ||
355 | renderSwitchItem('标签页', { | 363 | renderSwitchItem('标签页', { |
356 | handler: (e) => { | 364 | handler: (e) => { |
357 | baseHandler('showMultiple', e); | 365 | baseHandler('showMultiple', e); |
@@ -449,6 +457,11 @@ export default defineComponent({ | @@ -449,6 +457,11 @@ export default defineComponent({ | ||
449 | showBreadCrumb: value, | 457 | showBreadCrumb: value, |
450 | }; | 458 | }; |
451 | } | 459 | } |
460 | + if (event === 'showBreadCrumbIcon') { | ||
461 | + config = { | ||
462 | + showBreadCrumbIcon: value, | ||
463 | + }; | ||
464 | + } | ||
452 | if (event === 'collapsed') { | 465 | if (event === 'collapsed') { |
453 | config = { | 466 | config = { |
454 | menuSetting: { | 467 | menuSetting: { |
src/settings/projectSetting.ts
@@ -94,6 +94,8 @@ const setting: ProjectConfig = { | @@ -94,6 +94,8 @@ const setting: ProjectConfig = { | ||
94 | lockTime: 0, | 94 | lockTime: 0, |
95 | // 显示面包屑 | 95 | // 显示面包屑 |
96 | showBreadCrumb: true, | 96 | showBreadCrumb: true, |
97 | + // 显示面包屑图标 | ||
98 | + showBreadCrumbIcon: false, | ||
97 | 99 | ||
98 | // 使用error-handler-plugin | 100 | // 使用error-handler-plugin |
99 | useErrorHandle: isProdMode(), | 101 | useErrorHandle: isProdMode(), |
src/types/config.d.ts
@@ -84,6 +84,8 @@ export interface ProjectConfig { | @@ -84,6 +84,8 @@ export interface ProjectConfig { | ||
84 | lockTime: number; | 84 | lockTime: number; |
85 | // 显示面包屑 | 85 | // 显示面包屑 |
86 | showBreadCrumb: boolean; | 86 | showBreadCrumb: boolean; |
87 | + // 显示面包屑图标 | ||
88 | + showBreadCrumbIcon: boolean; | ||
87 | // 使用error-handler-plugin | 89 | // 使用error-handler-plugin |
88 | useErrorHandle: boolean; | 90 | useErrorHandle: boolean; |
89 | 91 |