Skip to content

Commit

Permalink
fix(projects): Fix the issue of tab error displaying parent localIcon
Browse files Browse the repository at this point in the history
Fix the issue of abnormal tab display when the parent menu has a localIcon and the child menu does not have one
  • Loading branch information
Azir-11 committed Feb 6, 2024
1 parent ef4af79 commit a9c98d9
Showing 1 changed file with 28 additions and 1 deletion.
29 changes: 28 additions & 1 deletion src/store/modules/tab/shared.ts
Expand Up @@ -50,7 +50,11 @@ export function getTabIdByRoute(route: App.Global.TabRoute) {
*/
export function getTabByRoute(route: App.Global.TabRoute) {
const { name, path, fullPath = path, meta } = route;
const { title, i18nKey, fixedIndexInTab, icon = import.meta.env.VITE_MENU_ICON, localIcon } = meta;

const { title, i18nKey, fixedIndexInTab } = meta;

// Get icon and localIcon from getRouteIcons function
const { icon, localIcon } = getRouteIcons(route);

const label = i18nKey ? $t(i18nKey) : title;

Expand All @@ -69,6 +73,29 @@ export function getTabByRoute(route: App.Global.TabRoute) {
return tab;
}

/**
* The vue router will automatically merge the metas of all matched items, and the icons here may be affected by other
* matching items, so they need to be processed separately
*
* @param route
*/
export function getRouteIcons(route: App.Global.TabRoute) {
// Set default value for icon at the beginning
let icon: string = import.meta.env.VITE_MENU_ICON;
let localIcon: string | undefined;

// Route.matched only appears when there are multiple matches,so check if route.matched exists
if (route.matched) {
// Find the meta of the current route from matched
const currentRoute = route.matched.find(r => r.name === route.name);
// If icon exists in currentRoute.meta, it will overwrite the default value
icon = currentRoute?.meta?.icon || icon;
localIcon = currentRoute?.meta?.localIcon;
}

return { icon, localIcon };
}

/**
* Get default home tab
*
Expand Down

0 comments on commit a9c98d9

Please sign in to comment.