提交 d8b25b48 作者: ZhaoBin 提交者: GitHub

feat(breadcrumb): support showIcon (#48)

Co-authored-by: FuckDoctors <zhbchwin@163.com>
上级 28392c3d
...@@ -10,10 +10,17 @@ import { PageEnum } from '/@/enums/pageEnum'; ...@@ -10,10 +10,17 @@ import { PageEnum } from '/@/enums/pageEnum';
import { isBoolean } from '/@/utils/is'; import { isBoolean } from '/@/utils/is';
import { compile } from 'path-to-regexp'; import { compile } from 'path-to-regexp';
import Icon from '/@/components/Icon';
export default defineComponent({ export default defineComponent({
name: 'BasicBreadcrumb', name: 'BasicBreadcrumb',
setup() { props: {
showIcon: {
type: Boolean,
default: false,
},
},
setup(props) {
const itemList = ref<AppRouteRecordRaw[]>([]); const itemList = ref<AppRouteRecordRaw[]>([]);
const { currentRoute, push } = useRouter(); const { currentRoute, push } = useRouter();
...@@ -78,7 +85,14 @@ export default defineComponent({ ...@@ -78,7 +85,14 @@ export default defineComponent({
isLink={isLink} isLink={isLink}
onClick={handleItemClick.bind(null, item)} onClick={handleItemClick.bind(null, item)}
> >
{() => item.meta.title} {() => (
<>
{props.showIcon && item.meta.icon && item.meta.icon.trim() !== '' && (
<Icon icon={item.meta.icon} class="icon mr-1 mb-1" />
)}
{item.meta.title}
</>
)}
</BreadcrumbItem> </BreadcrumbItem>
); );
}); });
......
...@@ -94,6 +94,7 @@ export default defineComponent({ ...@@ -94,6 +94,7 @@ export default defineComponent({
}, },
menuSetting: { mode, type: menuType, split: splitMenu, topMenuAlign }, menuSetting: { mode, type: menuType, split: splitMenu, topMenuAlign },
showBreadCrumb, showBreadCrumb,
showBreadCrumbIcon,
} = getProjectConfig; } = getProjectConfig;
const isSidebarType = menuType === MenuTypeEnum.SIDEBAR; const isSidebarType = menuType === MenuTypeEnum.SIDEBAR;
...@@ -106,7 +107,7 @@ export default defineComponent({ ...@@ -106,7 +107,7 @@ export default defineComponent({
{showLogo && !isSidebarType && <Logo class={`layout-header__logo`} />} {showLogo && !isSidebarType && <Logo class={`layout-header__logo`} />}
{mode !== MenuModeEnum.HORIZONTAL && showBreadCrumb && !splitMenu && ( {mode !== MenuModeEnum.HORIZONTAL && showBreadCrumb && !splitMenu && (
<LayoutBreadcrumb /> <LayoutBreadcrumb showIcon={showBreadCrumbIcon} />
)} )}
{unref(showTopMenu) && ( {unref(showTopMenu) && (
<div <div
......
...@@ -343,6 +343,7 @@ export default defineComponent({ ...@@ -343,6 +343,7 @@ export default defineComponent({
menuSetting: { show: showMenu }, menuSetting: { show: showMenu },
multiTabsSetting: { show: showMultiple, showQuick, showIcon: showTabIcon }, multiTabsSetting: { show: showMultiple, showQuick, showIcon: showTabIcon },
showBreadCrumb, showBreadCrumb,
showBreadCrumbIcon,
} = unref(getProjectConfigRef); } = unref(getProjectConfigRef);
return [ return [
renderSwitchItem('面包屑', { renderSwitchItem('面包屑', {
...@@ -352,6 +353,13 @@ export default defineComponent({ ...@@ -352,6 +353,13 @@ export default defineComponent({
def: showBreadCrumb, def: showBreadCrumb,
disabled: !unref(getShowHeaderRef), disabled: !unref(getShowHeaderRef),
}), }),
renderSwitchItem('面包屑图标', {
handler: (e) => {
baseHandler('showBreadCrumbIcon', e);
},
def: showBreadCrumbIcon,
disabled: !unref(getShowHeaderRef),
}),
renderSwitchItem('标签页', { renderSwitchItem('标签页', {
handler: (e) => { handler: (e) => {
baseHandler('showMultiple', e); baseHandler('showMultiple', e);
...@@ -449,6 +457,11 @@ export default defineComponent({ ...@@ -449,6 +457,11 @@ export default defineComponent({
showBreadCrumb: value, showBreadCrumb: value,
}; };
} }
if (event === 'showBreadCrumbIcon') {
config = {
showBreadCrumbIcon: value,
};
}
if (event === 'collapsed') { if (event === 'collapsed') {
config = { config = {
menuSetting: { menuSetting: {
......
...@@ -94,6 +94,8 @@ const setting: ProjectConfig = { ...@@ -94,6 +94,8 @@ const setting: ProjectConfig = {
lockTime: 0, lockTime: 0,
// 显示面包屑 // 显示面包屑
showBreadCrumb: true, showBreadCrumb: true,
// 显示面包屑图标
showBreadCrumbIcon: false,
// 使用error-handler-plugin // 使用error-handler-plugin
useErrorHandle: isProdMode(), useErrorHandle: isProdMode(),
......
...@@ -84,6 +84,8 @@ export interface ProjectConfig { ...@@ -84,6 +84,8 @@ export interface ProjectConfig {
lockTime: number; lockTime: number;
// 显示面包屑 // 显示面包屑
showBreadCrumb: boolean; showBreadCrumb: boolean;
// 显示面包屑图标
showBreadCrumbIcon: boolean;
// 使用error-handler-plugin // 使用error-handler-plugin
useErrorHandle: boolean; useErrorHandle: boolean;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论