37 lines
894 B
TypeScript
37 lines
894 B
TypeScript
import type { MenuItem } from "../../api";
|
|
|
|
function getParentIds(menuCd: number): (menuList: MenuItem[]) => number[] {
|
|
return (menuList: MenuItem[]) => {
|
|
const parentIds: number[] = [];
|
|
let currentId = menuCd;
|
|
|
|
while (true) {
|
|
const menu = findMenuById(currentId)(menuList);
|
|
if (!menu || !menu.parentId) break;
|
|
parentIds.push(menu.parentId);
|
|
currentId = menu.parentId;
|
|
}
|
|
|
|
return parentIds;
|
|
};
|
|
}
|
|
|
|
function findMenuById(
|
|
menuCd: number,
|
|
): (menuList: MenuItem[]) => MenuItem | undefined {
|
|
function findInMenu(items: MenuItem[]): MenuItem | undefined {
|
|
for (const item of items) {
|
|
if (item.menuCd === menuCd) return item;
|
|
if (item.children) {
|
|
const found = findInMenu(item.children);
|
|
if (found) return found;
|
|
}
|
|
}
|
|
return undefined;
|
|
}
|
|
|
|
return findInMenu;
|
|
}
|
|
|
|
export { getParentIds, findMenuById };
|