@wener/ui
Version:
36 lines • 1.87 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.LayoutFrameMenu = void 0;
const react_1 = __importDefault(require("react"));
const antd_1 = require("antd");
const layout_1 = require("./layout");
const useNamedTheme_1 = require("../../../hooks/useNamedTheme");
exports.LayoutFrameMenu = ({ children, ...props }) => {
const { menus, link = 'a', menuProps = {} } = layout_1.useLayoutFrameOptions();
const [theme] = useNamedTheme_1.useNamedTheme();
return (react_1.default.createElement(antd_1.Menu, Object.assign({ theme: theme === 'dark' ? 'dark' : 'light', mode: "inline" }, menuProps, props), renderMenus(menus, { link })));
};
function renderMenus(menus, opts) {
return menus.map((v) => renderMenu(v, opts));
}
function renderMenu(menu, opts) {
const { path, title, iconComponent, children = [] } = menu;
if (path || children.length === 0) {
return renderMenuItem(menu, opts);
}
return (react_1.default.createElement(antd_1.Menu.SubMenu, { key: path || title, title: react_1.default.createElement("div", null,
iconComponent,
react_1.default.createElement("span", null, title)) }, children.map((v) => renderMenuItem(v, opts))));
}
function renderMenuItem(menu, { link: Link }) {
const { path, title, iconComponent } = menu;
return (react_1.default.createElement(antd_1.Menu.Item, { key: path || title },
react_1.default.createElement(Link, { href: path },
react_1.default.createElement("div", null,
iconComponent,
react_1.default.createElement("span", { style: { ...(iconComponent ? { marginLeft: 10 } : {}) } }, title)))));
}
//# sourceMappingURL=LayoutFrameMenu.js.map