update Menu

update Menu
This commit is contained in:
梁灏 2017-03-15 18:26:10 +08:00
parent ab22fd7c52
commit 67f4d8e763
4 changed files with 174 additions and 174 deletions

View file

@ -1,14 +1,85 @@
<template>
<div>
<Menu mode="horizontal" :theme="theme1" active-name="1" @on-select="s">
<Row type="flex" justify="center" align="middle">
<i-col span="12">
<Menu-item name="1">
<Icon type="ios-paper"></Icon>
内容管理
</Menu-item>
<Menu-item name="2">
<Icon type="ios-people"></Icon>
用户管理
</Menu-item>
<Submenu name="3">
<template slot="title">
<Icon type="stats-bars"></Icon>
统计分析
</template>
<Menu-group title="使用">
<Menu-item name="3-1">新增和启动</Menu-item>
<Menu-item name="3-2">活跃分析</Menu-item>
<Menu-item name="3-3">时段分析</Menu-item>
</Menu-group>
<Menu-group title="留存">
<Menu-item name="3-4">用户留存</Menu-item>
<Menu-item name="3-5">流失用户</Menu-item>
</Menu-group>
</Submenu>
<Menu-item name="4">
<Icon type="settings"></Icon>
综合设置
</Menu-item>
</i-col>
</Row>
</Menu>
<br>
<p>切换主题</p>
<Radio-group v-model="theme1">
<Radio label="light"></Radio>
<Radio label="dark"></Radio>
<Radio label="primary"></Radio>
</Radio-group>
</div>
</template>
<script>
export default {
data () {
return {
theme1: 'light'
}
},
methods: {
s (s) {
console.log(s)
}
}
}
</script>
<!--<template>--> <!--<template>-->
<!--<div>--> <!--<div>-->
<!--<Menu mode="horizontal" :theme="theme1" active-name="1" @on-select="s">--> <!--<Row>-->
<!--<Menu-item name="1">--> <!--<i-col span="8">-->
<!--<Menu :theme="theme2" @on-select="s">-->
<!--<Submenu name="1">-->
<!--<template slot="title">-->
<!--<Icon type="ios-paper"></Icon>--> <!--<Icon type="ios-paper"></Icon>-->
<!--内容管理--> <!--内容管理-->
<!--</Menu-item>--> <!--</template>-->
<!--<Menu-item name="2">--> <!--<Menu-item name="1-1">文章管理</Menu-item>-->
<!--<Menu-item name="1-2">评论管理</Menu-item>-->
<!--<Menu-item name="1-3">举报管理</Menu-item>-->
<!--</Submenu>-->
<!--<Submenu name="2">-->
<!--<template slot="title">-->
<!--<Icon type="ios-people"></Icon>--> <!--<Icon type="ios-people"></Icon>-->
<!--用户管理--> <!--用户管理-->
<!--</Menu-item>--> <!--</template>-->
<!--<Menu-item name="2-1">新增用户</Menu-item>-->
<!--<Menu-item name="2-2">活跃用户</Menu-item>-->
<!--</Submenu>-->
<!--<Submenu name="3">--> <!--<Submenu name="3">-->
<!--<template slot="title">--> <!--<template slot="title">-->
<!--<Icon type="stats-bars"></Icon>--> <!--<Icon type="stats-bars"></Icon>-->
@ -24,17 +95,86 @@
<!--<Menu-item name="3-5">流失用户</Menu-item>--> <!--<Menu-item name="3-5">流失用户</Menu-item>-->
<!--</Menu-group>--> <!--</Menu-group>-->
<!--</Submenu>--> <!--</Submenu>-->
<!--<Menu-item name="4">-->
<!--<Icon type="settings"></Icon>-->
<!--综合设置-->
<!--</Menu-item>-->
<!--</Menu>--> <!--</Menu>-->
<!--</i-col>-->
<!--<i-col span="8">-->
<!--<Menu :theme="theme2" active-name="1-2" :open-names="['1']" @on-select="s">-->
<!--<Submenu name="1">-->
<!--<template slot="title">-->
<!--<Icon type="ios-paper"></Icon>-->
<!--内容管理-->
<!--</template>-->
<!--<Menu-item name="1-1">文章管理</Menu-item>-->
<!--<Menu-item name="1-2">评论管理</Menu-item>-->
<!--<Menu-item name="1-3">举报管理</Menu-item>-->
<!--</Submenu>-->
<!--<Submenu name="2">-->
<!--<template slot="title">-->
<!--<Icon type="ios-people"></Icon>-->
<!--用户管理-->
<!--</template>-->
<!--<Menu-item name="2-1">新增用户</Menu-item>-->
<!--<Menu-item name="2-2">活跃用户</Menu-item>-->
<!--</Submenu>-->
<!--<Submenu name="3">-->
<!--<template slot="title">-->
<!--<Icon type="stats-bars"></Icon>-->
<!--统计分析-->
<!--</template>-->
<!--<Menu-group title="使用">-->
<!--<Menu-item name="3-1">新增和启动</Menu-item>-->
<!--<Menu-item name="3-2">活跃分析</Menu-item>-->
<!--<Menu-item name="3-3">时段分析</Menu-item>-->
<!--</Menu-group>-->
<!--<Menu-group title="留存">-->
<!--<Menu-item name="3-4">用户留存</Menu-item>-->
<!--<Menu-item name="3-5">流失用户</Menu-item>-->
<!--</Menu-group>-->
<!--</Submenu>-->
<!--</Menu>-->
<!--</i-col>-->
<!--<i-col span="8">-->
<!--<Menu :theme="theme2" :open-names="['1']" accordion @on-select="s">-->
<!--<Submenu name="1">-->
<!--<template slot="title">-->
<!--<Icon type="ios-paper"></Icon>-->
<!--内容管理-->
<!--</template>-->
<!--<Menu-item name="1-1">文章管理</Menu-item>-->
<!--<Menu-item name="1-2">评论管理</Menu-item>-->
<!--<Menu-item name="1-3">举报管理</Menu-item>-->
<!--</Submenu>-->
<!--<Submenu name="2">-->
<!--<template slot="title">-->
<!--<Icon type="ios-people"></Icon>-->
<!--用户管理-->
<!--</template>-->
<!--<Menu-item name="2-1">新增用户</Menu-item>-->
<!--<Menu-item name="2-2">活跃用户</Menu-item>-->
<!--</Submenu>-->
<!--<Submenu name="3">-->
<!--<template slot="title">-->
<!--<Icon type="stats-bars"></Icon>-->
<!--统计分析-->
<!--</template>-->
<!--<Menu-group title="使用">-->
<!--<Menu-item name="3-1">新增和启动</Menu-item>-->
<!--<Menu-item name="3-2">活跃分析</Menu-item>-->
<!--<Menu-item name="3-3">时段分析</Menu-item>-->
<!--</Menu-group>-->
<!--<Menu-group title="留存">-->
<!--<Menu-item name="3-4">用户留存</Menu-item>-->
<!--<Menu-item name="3-5">流失用户</Menu-item>-->
<!--</Menu-group>-->
<!--</Submenu>-->
<!--</Menu>-->
<!--</i-col>-->
<!--</Row>-->
<!--<br>--> <!--<br>-->
<!--<p>切换主题</p>--> <!--<p>切换主题</p>-->
<!--<Radio-group v-model="theme1">--> <!--<Radio-group v-model="theme2">-->
<!--<Radio label="light"></Radio>--> <!--<Radio label="light"></Radio>-->
<!--<Radio label="dark"></Radio>--> <!--<Radio label="dark"></Radio>-->
<!--<Radio label="primary"></Radio>-->
<!--</Radio-group>--> <!--</Radio-group>-->
<!--</div>--> <!--</div>-->
<!--</template>--> <!--</template>-->
@ -42,149 +182,13 @@
<!--export default {--> <!--export default {-->
<!--data () {--> <!--data () {-->
<!--return {--> <!--return {-->
<!--theme1: 'light'--> <!--theme2: 'light'-->
<!--}--> <!--}-->
<!--},--> <!--},-->
<!--methods: {--> <!--methods: {-->
<!--s (s) {--> <!--s (s) {-->
<!--console.log(s)--> <!--console.log(s);-->
<!--}--> <!--}-->
<!--}--> <!--}-->
<!--}--> <!--}-->
<!--</script>--> <!--</script>-->
<template>
<div>
<Row>
<i-col span="8">
<Menu :theme="theme2" @on-select="s">
<Submenu name="1">
<template slot="title">
<Icon type="ios-paper"></Icon>
内容管理
</template>
<Menu-item name="1-1">文章管理</Menu-item>
<Menu-item name="1-2">评论管理</Menu-item>
<Menu-item name="1-3">举报管理</Menu-item>
</Submenu>
<Submenu name="2">
<template slot="title">
<Icon type="ios-people"></Icon>
用户管理
</template>
<Menu-item name="2-1">新增用户</Menu-item>
<Menu-item name="2-2">活跃用户</Menu-item>
</Submenu>
<Submenu name="3">
<template slot="title">
<Icon type="stats-bars"></Icon>
统计分析
</template>
<Menu-group title="使用">
<Menu-item name="3-1">新增和启动</Menu-item>
<Menu-item name="3-2">活跃分析</Menu-item>
<Menu-item name="3-3">时段分析</Menu-item>
</Menu-group>
<Menu-group title="留存">
<Menu-item name="3-4">用户留存</Menu-item>
<Menu-item name="3-5">流失用户</Menu-item>
</Menu-group>
</Submenu>
</Menu>
</i-col>
<i-col span="8">
<Menu :theme="theme2" active-name="1-2" :open-names="['1']" @on-select="s">
<Submenu name="1">
<template slot="title">
<Icon type="ios-paper"></Icon>
内容管理
</template>
<Menu-item name="1-1">文章管理</Menu-item>
<Menu-item name="1-2">评论管理</Menu-item>
<Menu-item name="1-3">举报管理</Menu-item>
</Submenu>
<Submenu name="2">
<template slot="title">
<Icon type="ios-people"></Icon>
用户管理
</template>
<Menu-item name="2-1">新增用户</Menu-item>
<Menu-item name="2-2">活跃用户</Menu-item>
</Submenu>
<Submenu name="3">
<template slot="title">
<Icon type="stats-bars"></Icon>
统计分析
</template>
<Menu-group title="使用">
<Menu-item name="3-1">新增和启动</Menu-item>
<Menu-item name="3-2">活跃分析</Menu-item>
<Menu-item name="3-3">时段分析</Menu-item>
</Menu-group>
<Menu-group title="留存">
<Menu-item name="3-4">用户留存</Menu-item>
<Menu-item name="3-5">流失用户</Menu-item>
</Menu-group>
</Submenu>
</Menu>
</i-col>
<i-col span="8">
<Menu :theme="theme2" :open-names="['1']" accordion @on-select="s">
<Submenu name="1">
<template slot="title">
<Icon type="ios-paper"></Icon>
内容管理
</template>
<Menu-item name="1-1">文章管理</Menu-item>
<Menu-item name="1-2">评论管理</Menu-item>
<Menu-item name="1-3">举报管理</Menu-item>
</Submenu>
<Submenu name="2">
<template slot="title">
<Icon type="ios-people"></Icon>
用户管理
</template>
<Menu-item name="2-1">新增用户</Menu-item>
<Menu-item name="2-2">活跃用户</Menu-item>
</Submenu>
<Submenu name="3">
<template slot="title">
<Icon type="stats-bars"></Icon>
统计分析
</template>
<Menu-group title="使用">
<Menu-item name="3-1">新增和启动</Menu-item>
<Menu-item name="3-2">活跃分析</Menu-item>
<Menu-item name="3-3">时段分析</Menu-item>
</Menu-group>
<Menu-group title="留存">
<Menu-item name="3-4">用户留存</Menu-item>
<Menu-item name="3-5">流失用户</Menu-item>
</Menu-group>
</Submenu>
</Menu>
</i-col>
</Row>
<br>
<p>切换主题</p>
<Radio-group v-model="theme2">
<Radio label="light"></Radio>
<Radio label="dark"></Radio>
</Radio-group>
</div>
</template>
<script>
export default {
data () {
return {
theme2: 'light'
}
},
methods: {
s (s) {
console.log(s);
}
}
}
</script>

View file

@ -2,7 +2,7 @@
<ul :class="classes" :style="styles"><slot></slot></ul> <ul :class="classes" :style="styles"><slot></slot></ul>
</template> </template>
<script> <script>
import { oneOf } from '../../utils/assist'; import { oneOf, findComponentsDownward } from '../../utils/assist';
import Emitter from '../../mixins/emitter'; import Emitter from '../../mixins/emitter';
const prefixCls = 'ivu-menu'; const prefixCls = 'ivu-menu';
@ -84,12 +84,14 @@
} }
}, },
updateOpened () { updateOpened () {
this.$children.forEach(item => { const items = findComponentsDownward(this, 'Submenu');
if (item.$options.name === 'Submenu') {
if (items.length) {
items.forEach(item => {
if (this.openNames.indexOf(item.name) > -1) item.opened = true; if (this.openNames.indexOf(item.name) > -1) item.opened = true;
}
}); });
} }
}
}, },
mounted () { mounted () {
this.updateActiveName(); this.updateActiveName();

View file

@ -17,7 +17,7 @@
<script> <script>
import Drop from '../select/dropdown.vue'; import Drop from '../select/dropdown.vue';
import Icon from '../icon/icon.vue'; import Icon from '../icon/icon.vue';
import { getStyle } from '../../utils/assist'; import { getStyle, findComponentUpward } from '../../utils/assist';
import Emitter from '../../mixins/emitter'; import Emitter from '../../mixins/emitter';
const prefixCls = 'ivu-menu'; const prefixCls = 'ivu-menu';
@ -41,7 +41,8 @@
prefixCls: prefixCls, prefixCls: prefixCls,
active: false, active: false,
opened: false, opened: false,
dropWidth: parseFloat(getStyle(this.$el, 'width')) dropWidth: parseFloat(getStyle(this.$el, 'width')),
parent: findComponentUpward(this, 'Menu')
}; };
}, },
computed: { computed: {
@ -56,12 +57,10 @@
]; ];
}, },
mode () { mode () {
// todo while return this.parent.mode;
return this.$parent.mode;
}, },
accordion () { accordion () {
// todo while return this.parent.accordion;
return this.$parent.accordion;
}, },
dropStyle () { dropStyle () {
let style = {}; let style = {};
@ -77,8 +76,7 @@
clearTimeout(this.timeout); clearTimeout(this.timeout);
this.timeout = setTimeout(() => { this.timeout = setTimeout(() => {
// todo while this.parent.updateOpenKeys(this.name);
this.$parent.updateOpenKeys(this.name);
this.opened = true; this.opened = true;
}, 250); }, 250);
}, },
@ -88,8 +86,7 @@
clearTimeout(this.timeout); clearTimeout(this.timeout);
this.timeout = setTimeout(() => { this.timeout = setTimeout(() => {
// todo while this.parent.updateOpenKeys(this.name);
this.$parent.updateOpenKeys(this.name);
this.opened = false; this.opened = false;
}, 150); }, 150);
}, },
@ -98,14 +95,12 @@
if (this.mode === 'horizontal') return; if (this.mode === 'horizontal') return;
const opened = this.opened; const opened = this.opened;
if (this.accordion) { if (this.accordion) {
// todo while this.parent.$children.forEach(item => {
this.$parent.$children.forEach(item => {
if (item.$options.name === 'Submenu') item.opened = false; if (item.$options.name === 'Submenu') item.opened = false;
}); });
} }
this.opened = !opened; this.opened = !opened;
// todo while this.parent.updateOpenKeys(this.name);
this.$parent.updateOpenKeys(this.name);
} }
}, },
watch: { watch: {

View file

@ -68,7 +68,6 @@
} }
}, },
mounted () { mounted () {
this.parent = findComponentUpward(this, 'RadioGroup');
if (this.parent) this.group = true; if (this.parent) this.group = true;
if (!this.group) { if (!this.group) {
this.updateValue(); this.updateValue();