m2-webui
Version:
The package is provided web components and utilities based on vue and element-ui.
70 lines (62 loc) • 1.9 kB
JavaScript
;
exports.__esModule = true;
var _main = require('../utils/main');
exports.default = {
data: function data() {
return {
menuList: [],
collapseClass: '',
activeIndex: ''
};
},
watch: {
menus: {
handler: function handler(val) {
this.handleMenus();
},
deep: true
}
},
mounted: function mounted() {
this.handleMenus();
},
methods: {
handleMenus: function handleMenus() {
var _menus = this.menus,
active = _menus.active,
_menus$map = _menus.map,
map = _menus$map === undefined ? {} : _menus$map,
_menus$data = _menus.data,
data = _menus$data === undefined ? [] : _menus$data;
this.activeIndex = active;
this.menuList = this.getMenuList(map, data, 1);
},
getMenuList: function getMenuList(map, data, level) {
var _this = this;
return data.map(function (item) {
var menuItem = (0, _main.getMapItem)(item, map, 'key', 'text', 'icon', 'url', 'target', 'click', 'badge', 'badgeMax');
var children = item[map.children] || item.children;
menuItem.level = level;
if (level === 1) {
// 第一级目录
menuItem.icon = menuItem.icon || 'el-icon-menu';
menuItem.title = item.alias || menuItem.text;
}
if (menuItem.level) {
menuItem.className = 'm2-menu-item-' + menuItem.level;
}
if (!!children && children.length > 0) {
menuItem.slotName = 'title';
menuItem.children = _this.getMenuList(map, children, level + 1);
} else {
menuItem.slotName = 'default';
}
return menuItem;
});
},
handleToggleMenu: function handleToggleMenu(collapse) {
this.collapseClass = collapse ? 'nav-collapse' : '';
this.$emit('toggleCollapse', collapse);
}
}
};