mui-nav-menu
Version:
Navigation menu component based on material ui
42 lines (41 loc) • 1.91 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ConditionalWrapper = exports.getNodeIdPaths = exports.parseItemsToNodes = void 0;
const tslib_1 = require("tslib");
const react_1 = require("react");
const jsx_runtime_1 = require("react/jsx-runtime");
const MenuItem_1 = tslib_1.__importDefault(require("./MenuItem"));
const SubMenu_1 = tslib_1.__importDefault(require("./SubMenu"));
const MenuItemGroup_1 = tslib_1.__importDefault(require("./MenuItemGroup"));
const Divider_1 = tslib_1.__importDefault(require("./Divider"));
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 ((0, jsx_runtime_1.jsx)(MenuItemGroup_1.default, { id: rest.id, label: rest.label, children: (0, exports.parseItemsToNodes)(children) }, rest.id));
}
return ((0, react_1.createElement)(SubMenu_1.default, { ...rest, key: rest.id }, (0, exports.parseItemsToNodes)(children)));
}
if (type == "divider") {
return (0, jsx_runtime_1.jsx)(Divider_1.default, {}, index);
}
return (0, react_1.createElement)(MenuItem_1.default, { ...rest, key: rest.id });
})
: undefined;
};
exports.parseItemsToNodes = parseItemsToNodes;
const getNodeIdPaths = (node, getNodeFn) => {
const paths = [];
while (node) {
paths.unshift(node.id);
node = getNodeFn(node.parentId);
}
return paths;
};
exports.getNodeIdPaths = getNodeIdPaths;
const ConditionalWrapper = ({ condition, wrapper, children, }) => {
return (condition ? wrapper(children) : children);
};
exports.ConditionalWrapper = ConditionalWrapper;