maycur-business
Version:
maycur business react components of web
111 lines (91 loc) • 3.3 kB
JSX
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
require("maycur-antd/lib/menu/style/css");
var _menu = _interopRequireDefault(require("maycur-antd/lib/menu"));
require("maycur-antd/lib/layout/style/css");
var _layout = _interopRequireDefault(require("maycur-antd/lib/layout"));
var _react = _interopRequireDefault(require("react"));
var _lodash = _interopRequireDefault(require("lodash"));
var _utils = _interopRequireDefault(require("../../utils/utils"));
var _ScrollBar = _interopRequireDefault(require("../../ScrollBar"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var prefix = _utils["default"].prefixCls;
var Sider = _layout["default"].Sider;
var SubMenu = _menu["default"].SubMenu;
function loopPath(menus, pathArr) {
var matchedMenu;
if (!pathArr) return;
_lodash["default"].forEach(menus, function (menu) {
var pathReg = new RegExp('^' + menu.path);
if (menu.routes) {
var childMenu = loopPath(menu.routes, pathArr);
if (childMenu) matchedMenu = childMenu;
} else {
if (pathReg.test(pathArr.join('/'))) matchedMenu = menu;
}
});
return matchedMenu;
}
var MkSider = function MkSider(props) {
var menus = props.menus,
pathArr = props.pathArr,
collapsed = props.collapsed,
onToggleCollapsed = props.onToggleCollapsed,
renderSiderExtra = props.renderSiderExtra;
var matchedMenu = loopPath(menus, pathArr);
var selectedKeys = matchedMenu ? [matchedMenu.path] : [];
var defaultOpenKeys = pathArr.length > 2 ? [pathArr.slice(0, pathArr.length - 1).join('/')] : [];
return _react["default"].createElement(_ScrollBar["default"], {
className: "".concat(prefix, "-sider-scroll")
}, renderSiderExtra && renderSiderExtra(), _react["default"].createElement(Sider, {
breakpoint: "xl",
theme: "light",
className: "".concat(prefix, "-sider"),
width: 220,
trigger: null,
collapsible: true,
collapsed: collapsed,
collapsedWidth: 56,
onCollapse: onToggleCollapsed
}, _react["default"].createElement(_menu["default"], {
theme: "light",
mode: "inline",
inlineIndent: "44",
selectedKeys: selectedKeys,
defaultOpenKeys: defaultOpenKeys,
style: {
height: '100%',
borderRight: 0
}
}, menus.map(function (menu, index) {
/*TODO: 设置菜单根据功能块划分*/
if (menu.split) {
return _react["default"].createElement(_menu["default"].Divider, {
key: index
});
}
var MenuContent;
menu.menuName = menu.meta.name;
var content = props.renderMenu(menu);
if (!content) {
return null;
}
MenuContent = menu.hasSub ? _react["default"].createElement(SubMenu, {
key: menu.path,
title: props.renderMenu(menu)
}, menu.routes.map(function (route, index) {
route.menuName = route.meta.name;
return props.renderMenu(route) && _react["default"].createElement(_menu["default"].Item, {
key: route.path
}, props.renderMenu(route));
})) : _react["default"].createElement(_menu["default"].Item, {
key: menu.path
}, content);
return MenuContent;
}))));
};
var _default = MkSider;
exports["default"] = _default;