25 lines
600 B
TypeScript
25 lines
600 B
TypeScript
import type { NodeModel } from "@minoru/react-dnd-treeview";
|
|
import type { TreeMenu } from "@/entities/tree-menu";
|
|
|
|
export const generateMenuTreeData = (
|
|
data: TreeMenu[],
|
|
): NodeModel<TreeMenu>[] => {
|
|
return data.reduce<NodeModel<TreeMenu>[]>((acc, menu) => {
|
|
const node: NodeModel<TreeMenu> = {
|
|
id: menu.menuCd ?? 0,
|
|
parent: menu.parentId ?? 0,
|
|
text: menu.menuSubKornNm ?? "",
|
|
droppable: true,
|
|
data: menu,
|
|
};
|
|
|
|
acc.push(node);
|
|
|
|
if (menu.children?.length) {
|
|
acc.push(...generateMenuTreeData(menu.children));
|
|
}
|
|
|
|
return acc;
|
|
}, []);
|
|
};
|