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 | import { isBoolean } from '/@/utils/is'; |
11 | 11 | |
12 | 12 | import { compile } from 'path-to-regexp'; |
13 | +import Icon from '/@/components/Icon'; | |
13 | 14 | |
14 | 15 | export default defineComponent({ |
15 | 16 | name: 'BasicBreadcrumb', |
16 | - setup() { | |
17 | + props: { | |
18 | + showIcon: { | |
19 | + type: Boolean, | |
20 | + default: false, | |
21 | + }, | |
22 | + }, | |
23 | + setup(props) { | |
17 | 24 | const itemList = ref<AppRouteRecordRaw[]>([]); |
18 | 25 | const { currentRoute, push } = useRouter(); |
19 | 26 | |
... | ... | @@ -78,7 +85,14 @@ export default defineComponent({ |
78 | 85 | isLink={isLink} |
79 | 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 | 96 | </BreadcrumbItem> |
83 | 97 | ); |
84 | 98 | }); | ... | ... |
src/layouts/default/LayoutHeader.tsx
... | ... | @@ -94,6 +94,7 @@ export default defineComponent({ |
94 | 94 | }, |
95 | 95 | menuSetting: { mode, type: menuType, split: splitMenu, topMenuAlign }, |
96 | 96 | showBreadCrumb, |
97 | + showBreadCrumbIcon, | |
97 | 98 | } = getProjectConfig; |
98 | 99 | |
99 | 100 | const isSidebarType = menuType === MenuTypeEnum.SIDEBAR; |
... | ... | @@ -106,7 +107,7 @@ export default defineComponent({ |
106 | 107 | {showLogo && !isSidebarType && <Logo class={`layout-header__logo`} />} |
107 | 108 | |
108 | 109 | {mode !== MenuModeEnum.HORIZONTAL && showBreadCrumb && !splitMenu && ( |
109 | - <LayoutBreadcrumb /> | |
110 | + <LayoutBreadcrumb showIcon={showBreadCrumbIcon} /> | |
110 | 111 | )} |
111 | 112 | {unref(showTopMenu) && ( |
112 | 113 | <div | ... | ... |
src/layouts/default/setting/SettingDrawer.tsx
... | ... | @@ -343,6 +343,7 @@ export default defineComponent({ |
343 | 343 | menuSetting: { show: showMenu }, |
344 | 344 | multiTabsSetting: { show: showMultiple, showQuick, showIcon: showTabIcon }, |
345 | 345 | showBreadCrumb, |
346 | + showBreadCrumbIcon, | |
346 | 347 | } = unref(getProjectConfigRef); |
347 | 348 | return [ |
348 | 349 | renderSwitchItem('面包屑', { |
... | ... | @@ -352,6 +353,13 @@ export default defineComponent({ |
352 | 353 | def: showBreadCrumb, |
353 | 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 | 363 | renderSwitchItem('标签页', { |
356 | 364 | handler: (e) => { |
357 | 365 | baseHandler('showMultiple', e); |
... | ... | @@ -449,6 +457,11 @@ export default defineComponent({ |
449 | 457 | showBreadCrumb: value, |
450 | 458 | }; |
451 | 459 | } |
460 | + if (event === 'showBreadCrumbIcon') { | |
461 | + config = { | |
462 | + showBreadCrumbIcon: value, | |
463 | + }; | |
464 | + } | |
452 | 465 | if (event === 'collapsed') { |
453 | 466 | config = { |
454 | 467 | menuSetting: { | ... | ... |
src/settings/projectSetting.ts