Skip to content

Commit

Permalink
Merge pull request #315 from Azir-11/main
Browse files Browse the repository at this point in the history
  • Loading branch information
honghuangdc authored Feb 6, 2024
2 parents ef4af79 + 2d102a0 commit 5d75ca9
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 2 deletions.
29 changes: 28 additions & 1 deletion src/store/modules/tab/shared.ts
Original file line number Diff line number Diff line change
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
2 changes: 1 addition & 1 deletion src/typings/app.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,7 @@ declare namespace App {
};

/** Tab route */
type TabRoute = Pick<RouteLocationNormalizedLoaded, 'name' | 'path' | 'meta'> &
type TabRoute = Pick<RouteLocationNormalizedLoaded, 'name' | 'path' | 'meta' | 'matched'> &
Partial<Pick<RouteLocationNormalizedLoaded, 'fullPath' | 'query'>>;

/** The global tab */
Expand Down

0 comments on commit 5d75ca9

Please sign in to comment.