UNPKG

vue-ant-patterns

Version:

vue-ant-patterns

214 lines (182 loc) 6.21 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _babelHelperVueJsxMergeProps = require('babel-helper-vue-jsx-merge-props'); var _babelHelperVueJsxMergeProps2 = _interopRequireDefault(_babelHelperVueJsxMergeProps); var _extends2 = require('babel-runtime/helpers/extends'); var _extends3 = _interopRequireDefault(_extends2); var _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray'); var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2); var _antDesignVue = require('ant-design-vue'); var _dIconButton = require('../d-icon-button'); var _dIconButton2 = _interopRequireDefault(_dIconButton); var _dIcon = require('../d-icon'); var _dIcon2 = _interopRequireDefault(_dIcon); var _vueTypes = require('ant-design-vue/lib/_util/vue-types'); var _vueTypes2 = _interopRequireDefault(_vueTypes); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var SubMenu = _antDesignVue.Menu.SubMenu; function noop() {} var LogoBox = { name: 'DHeaderMenu', props: { prefixCls: _vueTypes2['default'].string.def('depot-header-menu'), menuList: _vueTypes2['default'].array.def([]), defaultOpenKeys: _vueTypes2['default'].array.def([]), defaultSelectedKeys: _vueTypes2['default'].array.def([]), selectedKeys: _vueTypes2['default'].array.def([]), overlayClassName: _vueTypes2['default'].string.def(''), theme: _vueTypes2['default'].string.def('dark'), renderKeys: _vueTypes2['default'].object.def({}) // isRoot: PropTypes.func, }, model: { prop: 'selectedKeys', event: 'select' }, data: function data() { var _$props = this.$props, selectedKeys = _$props.selectedKeys, defaultSelectedKeys = _$props.defaultSelectedKeys; return { vSelectedKeys: [].concat((0, _toConsumableArray3['default'])(defaultSelectedKeys), (0, _toConsumableArray3['default'])(selectedKeys)) }; }, watch: { selectedKeys: function selectedKeys(v) { this.vSelectedKeys = [].concat((0, _toConsumableArray3['default'])(v || [])); } }, methods: { getMenuItem: function getMenuItem(menuList) { var h = this.$createElement; var _ = this; var prefixCls = this.prefixCls, renderKeys = this.renderKeys; var subMenuTitleClass = prefixCls + '-submenu-title'; var title = renderKeys.title || 'name'; var key = renderKeys.key || 'id'; var url = renderKeys.url || 'url'; var id = renderKeys.id || 'id'; var parentId = renderKeys.parentId || 'parentId'; var funcId = renderKeys.funcId || 'funcId'; var icon = renderKeys.icon || 'icon'; return menuList.map(function (it) { if (it.children && it.children.length) { return h( SubMenu, { key: it[key], attrs: { 'data-key': it[key], url: it[url], 'func-id': it[funcId], 'parent-id': it[parentId], disabled: !!it.disabled, title: it[title] } }, [h( 'span', { slot: 'title', 'class': subMenuTitleClass, attrs: { title: it[title] } }, [it.icon ? h(_dIcon2['default'], { attrs: { type: it[icon] } }) : null, h( 'span', { 'class': 'title-box' }, [it[title]] )] ), _.getMenuItem(it.children)] ); } return h( _antDesignVue.Menu.Item, { key: it[key], attrs: { 'data-key': it[key], title: it[title], url: it[url], 'parent-id': it[parentId], 'func-id': it[funcId], disabled: !!it.disabled } }, [it[icon] ? h(_dIcon2['default'], { attrs: { type: it[icon] } }) : null, h( 'span', { 'class': 'title-box' }, [it[title]] )] ); }); }, select: function select(_ref) { var item = _ref.item, key = _ref.key, selectedKeys = _ref.selectedKeys; this.vSelectedKeys = [].concat((0, _toConsumableArray3['default'])(selectedKeys)); this.$emit('select', { item: item, key: key, selectedKeys: selectedKeys }); } }, render: function render() { var _this = this; var h = arguments[0]; var prefixCls = this.prefixCls, $listeners = this.$listeners, overlayClassName = this.overlayClassName, defaultOpenKeys = this.defaultOpenKeys, defaultSelectedKeys = this.defaultSelectedKeys, vSelectedKeys = this.vSelectedKeys, theme = this.theme; var overlayCls = ['logo-box-overlay', 'depot-header-dropdown', overlayClassName]; var divProps = { 'class': prefixCls }; var menuProps = { props: { theme: theme, defaultOpenKeys: defaultOpenKeys, defaultSelectedKeys: defaultSelectedKeys, selectedKeys: vSelectedKeys, selectable: true }, on: (0, _extends3['default'])({}, $listeners, { select: function select(arg) { _this.select(arg); }, visibleChange: function visibleChange(visible) { _this.$emit('visibleChange', visible); } }) }; var dropDownProps = { 'class': prefixCls, props: { // trigger: ['click'], overlayClassName: overlayCls.join(' ') }, on: (0, _extends3['default'])({}, $listeners) }; return h( 'div', divProps, [h( _antDesignVue.Dropdown, dropDownProps, [h(_dIconButton2['default'], [h(_dIcon2['default'], { attrs: { type: 'menu' } })]), h( _antDesignVue.Menu, (0, _babelHelperVueJsxMergeProps2['default'])([{ slot: 'overlay' }, menuProps]), [this.getMenuItem(this.menuList)] )] )] ); } }; LogoBox.install = function (Vue) { Vue.component(LogoBox.name, LogoBox); }; exports['default'] = LogoBox;