UNPKG

vue-antd-ui

Version:

An enterprise-class UI design language and Vue-based implementation

210 lines (189 loc) 6.33 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _extends2 = require('babel-runtime/helpers/extends'); var _extends3 = _interopRequireDefault(_extends2); var _vueTypes = require('../_util/vue-types'); var _vueTypes2 = _interopRequireDefault(_vueTypes); var _MenuMixin = require('./MenuMixin'); var _MenuMixin2 = _interopRequireDefault(_MenuMixin); var _BaseMixin = require('../_util/BaseMixin'); var _BaseMixin2 = _interopRequireDefault(_BaseMixin); var _propsUtil = require('../_util/props-util'); var _propsUtil2 = _interopRequireDefault(_propsUtil); var _commonPropsType = require('./commonPropsType'); var _commonPropsType2 = _interopRequireDefault(_commonPropsType); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var Menu = { name: 'Menu', props: (0, _extends3['default'])({}, _commonPropsType2['default'], { selectable: _vueTypes2['default'].bool.def(true) }), mixins: [_BaseMixin2['default'], _MenuMixin2['default']], data: function data() { var props = this.$props; var sSelectedKeys = props.defaultSelectedKeys; var sOpenKeys = props.defaultOpenKeys; if ((0, _propsUtil2['default'])(this, 'selectedKeys')) { sSelectedKeys = props.selectedKeys || []; } if ((0, _propsUtil2['default'])(this, 'openKeys')) { sOpenKeys = props.openKeys || []; } // this.isRootMenu = true return { sSelectedKeys: sSelectedKeys, sOpenKeys: sOpenKeys }; }, watch: { '$props': { handler: function handler(nextProps) { if ((0, _propsUtil2['default'])(this, 'selectedKeys')) { this.setState({ sSelectedKeys: nextProps.selectedKeys || [] }); } if ((0, _propsUtil2['default'])(this, 'openKeys')) { this.setState({ sOpenKeys: nextProps.openKeys || [] }); } }, deep: true } }, methods: { // onDestroy (key) { // const state = this.$data // const sSelectedKeys = state.sSelectedKeys // const sOpenKeys = state.sOpenKeys // let index = sSelectedKeys.indexOf(key) // if (!hasProp(this, 'selectedKeys') && index !== -1) { // sSelectedKeys.splice(index, 1) // } // index = sOpenKeys.indexOf(key) // if (!hasProp(this, 'openKeys') && index !== -1) { // sOpenKeys.splice(index, 1) // } // }, onSelect: function onSelect(selectInfo) { var props = this.$props; if (props.selectable) { // root menu var sSelectedKeys = this.$data.sSelectedKeys; var selectedKey = selectInfo.key; if (props.multiple) { sSelectedKeys = sSelectedKeys.concat([selectedKey]); } else { sSelectedKeys = [selectedKey]; } if (!(0, _propsUtil2['default'])(this, 'selectedKeys')) { this.setState({ sSelectedKeys: sSelectedKeys }); } this.__emit('select', (0, _extends3['default'])({}, selectInfo, { selectedKeys: sSelectedKeys })); } }, onClick: function onClick(e) { this.__emit('click', e); }, onOpenChange: function onOpenChange(event) { var sOpenKeys = this.$data.sOpenKeys.concat(); var changed = false; var processSingle = function processSingle(e) { var oneChanged = false; if (e.open) { oneChanged = sOpenKeys.indexOf(e.key) === -1; if (oneChanged) { sOpenKeys.push(e.key); } } else { var index = sOpenKeys.indexOf(e.key); oneChanged = index !== -1; if (oneChanged) { sOpenKeys.splice(index, 1); } } changed = changed || oneChanged; }; if (Array.isArray(event)) { // batch change call event.forEach(processSingle); } else { processSingle(event); } if (changed) { if (!(0, _propsUtil2['default'])(this, 'openKeys')) { this.setState({ sOpenKeys: sOpenKeys }); } this.__emit('openChange', sOpenKeys); } }, onDeselect: function onDeselect(selectInfo) { var props = this.$props; if (props.selectable) { var sSelectedKeys = this.$data.sSelectedKeys.concat(); var selectedKey = selectInfo.key; var index = sSelectedKeys.indexOf(selectedKey); if (index !== -1) { sSelectedKeys.splice(index, 1); } if (!(0, _propsUtil2['default'])(this, 'selectedKeys')) { this.setState({ sSelectedKeys: sSelectedKeys }); } this.__emit('deselect', (0, _extends3['default'])({}, selectInfo, { selectedKeys: sSelectedKeys })); } }, getOpenTransitionName: function getOpenTransitionName() { var props = this.$props; var transitionName = props.openTransitionName; var animationName = props.openAnimation; if (!transitionName && typeof animationName === 'string') { transitionName = props.prefixCls + '-open-' + animationName; } return transitionName; }, isInlineMode: function isInlineMode() { return this.$props.mode === 'inline'; }, lastOpenSubMenu: function lastOpenSubMenu() { var lastOpen = []; var sOpenKeys = this.$data.sOpenKeys; if (sOpenKeys.length) { lastOpen = this.getFlatInstanceArray().filter(function (c) { return c && sOpenKeys.indexOf(c.eventKey) !== -1; }); } return lastOpen[0]; }, renderMenuItem: function renderMenuItem(c, i, subIndex) { if (!c) { return null; } var state = this.$data; var extraProps = { openKeys: state.sOpenKeys, selectedKeys: state.sSelectedKeys, triggerSubMenuAction: this.$props.triggerSubMenuAction, isRootMenu: this.isRootMenu }; return this.renderCommonMenuItem(c, i, subIndex, extraProps); } }, render: function render() { var props = (0, _extends3['default'])({}, this.$props); props['class'] = ' ' + props.prefixCls + '-root'; return this.renderRoot(props, this.$slots['default']); } }; exports['default'] = Menu; module.exports = exports['default'];