UNPKG

m2-ui

Version:

The package is provided web components and utilities based on vue and element-ui.

94 lines (85 loc) 2.42 kB
'use strict'; exports.__esModule = true; var _utils = require('m2-ui/lib/utils'); var _utils2 = _interopRequireDefault(_utils); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } exports.default = { props: { showMenu: { type: Boolean, default: false }, config: { type: Object, default: function _default() { return { menus: { active: '0', map: {}, data: [] } }; } } }, mounted: function mounted() { this.handleMenuConfig(); }, data: function data() { return { menuList: [], collapseClass: '', activeIndex: '' }; }, watch: { config: { handler: function handler(val) { this.handleMenuConfig(); }, deep: true } }, methods: { handleMenuConfig: function handleMenuConfig() { var _config$menus = this.config.menus, active = _config$menus.active, map = _config$menus.map, data = _config$menus.data; this.activeIndex = active; this.menuList = this.getMenuList(map, data); }, getMenuList: function getMenuList(map, data) { var _this = this; return data.map(function (item) { var menuItem = _utils2.default.getMapItem(item, map, 'key', 'text', 'url', 'level', 'pid'); var children = item[map.children] || item.children; if (menuItem.pid === (map.root || '0')) { menuItem.icon = item.icon ? 'iconfont el-icon-' + item.icon : 'iconfont el-icon-menu'; menuItem.title = item.alias || menuItem.text; } if (menuItem.level) { menuItem.className = 'm2-menu-item-' + menuItem.level; } if (item.click) { menuItem.click = item.click; } else { menuItem.click = function () {}; } if (!!children && children.length > 0) { menuItem.hasChildren = !!children && children.length > 0; if (menuItem.hasChildren) { menuItem.slotName = 'title'; menuItem.children = _this.getMenuList(map, children); } } else { menuItem.slotName = 'default'; } return menuItem; }); }, handleToggleMenu: function handleToggleMenu(collapse) { this.collapseClass = collapse ? 'nav-collapse' : ''; } } };