feat(components): add GlobalSearch components

This commit is contained in:
燕博文
2024-03-06 10:59:40 +08:00
parent 05db8c08d5
commit 9ea878915e
8 changed files with 255 additions and 0 deletions

View File

@ -19,6 +19,7 @@ import {
getSelectedMenuKeyPathByKey,
isRouteExistByRouteName,
sortRoutesByOrder,
transformMenuToSearchMenus,
updateLocaleOfGlobalMenus
} from './shared';
@ -52,6 +53,7 @@ export const useRouteStore = defineStore(SetupStoreId.Route, () => {
/** Global menus */
const menus = ref<App.Global.Menu[]>([]);
const searchMenus = computed(() => transformMenuToSearchMenus(menus.value));
/** Get global menus */
function getGlobalMenus(routes: ElegantConstRoute[]) {
@ -275,6 +277,7 @@ export const useRouteStore = defineStore(SetupStoreId.Route, () => {
resetStore,
routeHome,
menus,
searchMenus,
updateGlobalMenusByLocale,
cacheRoutes,
reCacheRoutesByKey,

View File

@ -310,3 +310,22 @@ export function getBreadcrumbsByRoute(
return [];
}
/**
* Transform menu to searchMenus
*
* @param menus - menus
* @param treeMap
*/
export function transformMenuToSearchMenus(menus: App.Global.Menu[], treeMap: App.Global.Menu[] = []) {
if (menus && menus.length === 0) return [];
return menus.reduce((acc, cur) => {
if (!cur.children) {
acc.push(cur);
}
if (cur.children && cur.children.length > 0) {
transformMenuToSearchMenus(cur.children, treeMap);
}
return acc;
}, treeMap);
}