mui-nav-menu
Version:
Navigation menu component based on material ui
35 lines (34 loc) • 1.36 kB
JavaScript
import { createElement as _createElement } from "react";
import { jsx as _jsx } from "react/jsx-runtime";
import MenuItem from "./MenuItem";
import SubMenu from "./SubMenu";
import MenuItemGroup from "./MenuItemGroup";
import Divider from "./Divider";
export const parseItemsToNodes = (childrens) => {
return childrens && childrens.length > 0
? childrens.map((item, index) => {
const { children, type, ...rest } = item;
if ((children && children.length) || type == "group") {
if (type == "group") {
return (_jsx(MenuItemGroup, { id: rest.id, label: rest.label, children: parseItemsToNodes(children) }, rest.id));
}
return (_createElement(SubMenu, { ...rest, key: rest.id }, parseItemsToNodes(children)));
}
if (type == "divider") {
return _jsx(Divider, {}, index);
}
return _createElement(MenuItem, { ...rest, key: rest.id });
})
: undefined;
};
export const getNodeIdPaths = (node, getNodeFn) => {
const paths = [];
while (node) {
paths.unshift(node.id);
node = getNodeFn(node.parentId);
}
return paths;
};
export const ConditionalWrapper = ({ condition, wrapper, children, }) => {
return (condition ? wrapper(children) : children);
};