Commit d8b25b488ba4c6626d3b94ed84270e96f403d859

Authored by ZhaoBin
Committed by GitHub
1 parent 28392c3d

feat(breadcrumb): support showIcon (#48)

Co-authored-by: FuckDoctors <zhbchwin@163.com>
src/layouts/default/LayoutBreadcrumb.tsx
... ... @@ -10,10 +10,17 @@ import { PageEnum } from &#39;/@/enums/pageEnum&#39;;
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
... ... @@ -94,6 +94,8 @@ const setting: ProjectConfig = {
94 94 lockTime: 0,
95 95 // 显示面包屑
96 96 showBreadCrumb: true,
  97 + // 显示面包屑图标
  98 + showBreadCrumbIcon: false,
97 99  
98 100 // 使用error-handler-plugin
99 101 useErrorHandle: isProdMode(),
... ...
src/types/config.d.ts
... ... @@ -84,6 +84,8 @@ export interface ProjectConfig {
84 84 lockTime: number;
85 85 // 显示面包屑
86 86 showBreadCrumb: boolean;
  87 + // 显示面包屑图标
  88 + showBreadCrumbIcon: boolean;
87 89 // 使用error-handler-plugin
88 90 useErrorHandle: boolean;
89 91  
... ...