Commit fc3ffbe08d848f147041b6af8d4cdb4e48b0d997
1 parent
fd5cd823
publish 0.9.10-rc-2
publish 0.9.10-rc-2
Showing
6 changed files
with
95 additions
and
149 deletions
Show diff stats
package.json
src/components/menu/menu-group.vue
src/components/menu/menu.vue
1 | 1 | <template> |
2 | - <ul :class="classes"><slot></slot></ul> | |
2 | + <ul :class="classes" :style="styles"><slot></slot></ul> | |
3 | 3 | </template> |
4 | 4 | <script> |
5 | 5 | import { oneOf } from '../../utils/assist'; |
... | ... | @@ -32,11 +32,10 @@ |
32 | 32 | accordion: { |
33 | 33 | type: Boolean, |
34 | 34 | default: false |
35 | - } | |
36 | - }, | |
37 | - data () { | |
38 | - return { | |
39 | - | |
35 | + }, | |
36 | + width: { | |
37 | + type: String, | |
38 | + default: '240px' | |
40 | 39 | } |
41 | 40 | }, |
42 | 41 | computed: { |
... | ... | @@ -51,12 +50,21 @@ |
51 | 50 | [`${prefixCls}-${this.mode}`]: this.mode |
52 | 51 | } |
53 | 52 | ] |
53 | + }, | |
54 | + styles () { | |
55 | + let style = {}; | |
56 | + | |
57 | + if (this.mode === 'vertical') style.width = this.width; | |
58 | + | |
59 | + return style; | |
54 | 60 | } |
55 | 61 | }, |
56 | 62 | methods: { |
57 | 63 | updateActiveKey () { |
58 | 64 | this.$children.forEach((item, index) => { |
59 | - if (!this.activeKey && index === 0) this.activeKey = item.key; | |
65 | + if (!this.activeKey && index === 0) { | |
66 | + this.activeKey = -1; | |
67 | + } | |
60 | 68 | |
61 | 69 | if (item.$options.name === 'Submenu') { |
62 | 70 | item.active = false; |
... | ... | @@ -95,10 +103,18 @@ |
95 | 103 | } else { |
96 | 104 | this.openKeys.push(key); |
97 | 105 | } |
106 | + }, | |
107 | + updateOpened () { | |
108 | + this.$children.forEach(item => { | |
109 | + if (item.$options.name === 'Submenu') { | |
110 | + if (this.openKeys.indexOf(item.key) > -1) item.opened = true; | |
111 | + } | |
112 | + }) | |
98 | 113 | } |
99 | 114 | }, |
100 | 115 | compiled () { |
101 | 116 | this.updateActiveKey(); |
117 | + this.updateOpened(); | |
102 | 118 | }, |
103 | 119 | events: { |
104 | 120 | 'on-menu-item-select' (key) { | ... | ... |
src/styles/common/article.less
src/styles/components/menu.less
... | ... | @@ -29,7 +29,6 @@ |
29 | 29 | } |
30 | 30 | } |
31 | 31 | &-vertical{ |
32 | - width: 240px; | |
33 | 32 | &.@{menu-prefix-cls}-light{ |
34 | 33 | &:after{ |
35 | 34 | content: ''; |
... | ... | @@ -125,8 +124,13 @@ |
125 | 124 | padding-left: 8px; |
126 | 125 | font-size: @font-size-small; |
127 | 126 | color: @legend-color; |
128 | - height: 30px; | |
129 | - line-height: 30px; | |
127 | + height: 48px; | |
128 | + line-height: 48px; | |
129 | + } | |
130 | + | |
131 | + & > ul{ | |
132 | + padding: 0 !important; | |
133 | + list-style: none !important; | |
130 | 134 | } |
131 | 135 | } |
132 | 136 | |
... | ... | @@ -183,9 +187,15 @@ |
183 | 187 | |
184 | 188 | &-dark&-vertical &-item, &-dark&-vertical &-submenu-title{ |
185 | 189 | color: @subsidiary-color; |
186 | - &-active:not(.@{menu-prefix-cls}-submenu), &:hover{ | |
190 | + &-active:not(.@{menu-prefix-cls}-submenu), | |
191 | + &-active:not(.@{menu-prefix-cls}-submenu):hover | |
192 | + { | |
187 | 193 | background: @menu-dark-active-bg; |
188 | 194 | } |
195 | + &:hover{ | |
196 | + color: #fff; | |
197 | + background: @title-color; | |
198 | + } | |
189 | 199 | &-active:not(.@{menu-prefix-cls}-submenu){ |
190 | 200 | color: @primary-color; |
191 | 201 | border-right: 2px solid @primary-color; |
... | ... | @@ -194,16 +204,23 @@ |
194 | 204 | &-dark&-vertical &-submenu &-item{ |
195 | 205 | &:hover{ |
196 | 206 | color: #fff; |
207 | + background: transparent !important; | |
197 | 208 | } |
198 | - &-active{ | |
209 | + &-active,&-active:hover{ | |
199 | 210 | border-right: none; |
200 | 211 | color: #fff; |
201 | - background: @primary-color; | |
212 | + background: @primary-color !important; | |
202 | 213 | } |
203 | 214 | } |
215 | + &-dark&-vertical &-item-active &-submenu-title{ | |
216 | + color: #fff; | |
217 | + } | |
204 | 218 | |
205 | 219 | &-dark&-vertical &-opened{ |
206 | 220 | background: @menu-dark-active-bg; |
221 | + .@{menu-prefix-cls}-submenu-title{ | |
222 | + background: @title-color; | |
223 | + } | |
207 | 224 | } |
208 | 225 | } |
209 | 226 | .select-item(@menu-prefix-cls, @menu-dropdown-item-prefix-cls); |
210 | 227 | \ No newline at end of file | ... | ... |
test/routers/menu.vue
1 | 1 | <template> |
2 | - <div> | |
3 | - <Menu mode="horizontal" :theme="theme" active-key="1"> | |
4 | - <Menu-item key="1"> | |
5 | - <Icon type="ionic"></Icon><span>导航一</span> | |
6 | - </Menu-item> | |
7 | - <Menu-item key="2">导航二</Menu-item> | |
8 | - <Submenu key="3"> | |
9 | - <template slot="title"><Icon type="ionic"></Icon>导航三</template> | |
10 | - <Menu-group title="集合1"> | |
11 | - <Menu-item key="3-1">导航三 - 一</Menu-item> | |
12 | - <Menu-item key="3-2">导航三 - 二</Menu-item> | |
13 | - </Menu-group> | |
14 | - <Menu-group title="集合2"> | |
15 | - <Menu-item key="3-3">导航三 - 三</Menu-item> | |
16 | - <Menu-item key="3-4">导航三 - 四</Menu-item> | |
17 | - </Menu-group> | |
18 | - </Submenu> | |
19 | - <Menu-item key="4">导航四</Menu-item> | |
20 | - </Menu> | |
21 | - <br><br> | |
22 | - <Radio-group :model.sync="theme"> | |
23 | - <Radio value="light"></Radio> | |
24 | - <Radio value="dark"></Radio> | |
25 | - <Radio value="primary"></Radio> | |
26 | - </Radio-group> | |
27 | - <br><br> | |
28 | - <Menu :mode="mode" :theme="theme" active-key="1" @on-open-change="change"> | |
29 | - <Menu-item key="1"> | |
30 | - <Icon type="ionic"></Icon> | |
31 | - <span>导航一</span> | |
32 | - </Menu-item> | |
33 | - <Menu-group title="集合1"> | |
34 | - <Menu-item key="2"> | |
35 | - <Icon type="ionic"></Icon> | |
36 | - 导航二 | |
37 | - </Menu-item> | |
38 | - <Menu-item key="3">导航三</Menu-item> | |
39 | - </Menu-group> | |
40 | - <Menu-group title="集合2"> | |
41 | - <Menu-item key="4">导航四</Menu-item> | |
42 | - <Menu-item key="5">导航五</Menu-item> | |
43 | - </Menu-group> | |
44 | - <Submenu key="6"> | |
45 | - <template slot="title"><Icon type="ionic"></Icon>导航六</template> | |
46 | - <Menu-group title="集合1"> | |
47 | - <Menu-item key="3-1">导航三 - 一</Menu-item> | |
48 | - <Menu-item key="3-2">导航三 - 二</Menu-item> | |
49 | - </Menu-group> | |
50 | - <Menu-group title="集合2"> | |
51 | - <Menu-item key="3-3">导航三 - 三</Menu-item> | |
52 | - <Menu-item key="3-4">导航三 - 四</Menu-item> | |
53 | - </Menu-group> | |
54 | - </Submenu> | |
55 | - <Submenu key="7"> | |
56 | - <template slot="title"><Icon type="ionic"></Icon>导航七</template> | |
57 | - <Menu-group title="集合1"> | |
58 | - <Menu-item key="7-1">导航三 - 一</Menu-item> | |
59 | - <Menu-item key="7-2">导航三 - 二</Menu-item> | |
60 | - </Menu-group> | |
61 | - <Menu-group title="集合2"> | |
62 | - <Menu-item key="7-3">导航三 - 三</Menu-item> | |
63 | - <Menu-item key="7-4">导航三 - 四</Menu-item> | |
64 | - </Menu-group> | |
65 | - </Submenu> | |
66 | - </Menu> | |
67 | - <!--<Menu :mode="mode" active-key="1">--> | |
68 | - <!--<Menu-item key="1">--> | |
69 | - <!--<Icon type="ionic"></Icon>--> | |
70 | - <!--<span>导航一</span>--> | |
71 | - <!--</Menu-item>--> | |
72 | - <!--<Menu-item key="2">导航二</Menu-item>--> | |
73 | - <!--<Submenu key="3">--> | |
74 | - <!--<template slot="title"><Icon type="ionic"></Icon><span>导航三</span></template>--> | |
75 | - <!--<Menu-group title="集合1">--> | |
76 | - <!--<Menu-item key="3-1">导航三 - 一</Menu-item>--> | |
77 | - <!--<Menu-item key="3-2">导航三 - 二</Menu-item>--> | |
78 | - <!--</Menu-group>--> | |
79 | - <!--<Menu-group title="集合2">--> | |
80 | - <!--<Menu-item key="3-3">导航三 - 三</Menu-item>--> | |
81 | - <!--<Menu-item key="3-4">导航三 - 四</Menu-item>--> | |
82 | - <!--</Menu-group>--> | |
83 | - <!--</Submenu>--> | |
84 | - <!--<Menu-item key="4">导航四</Menu-item>--> | |
85 | - <!--</Menu>--> | |
86 | - <!--<br><br>--> | |
87 | - <!--<Menu mode="horizontal" theme="dark" active-key="1">--> | |
88 | - <!--<Menu-item key="1">--> | |
89 | - <!--<Icon type="ionic"></Icon>--> | |
90 | - <!--<span>导航一</span>--> | |
91 | - <!--</Menu-item>--> | |
92 | - <!--<Menu-item key="2">导航二</Menu-item>--> | |
93 | - <!--<Submenu key="3">--> | |
94 | - <!--<span slot="title">导航三</span>--> | |
95 | - <!--<Menu-item key="3-1">导航三 - 一</Menu-item>--> | |
96 | - <!--<Menu-item key="3-2">导航三 - 二</Menu-item>--> | |
97 | - <!--<Menu-item key="3-3">导航三 - 三</Menu-item>--> | |
98 | - <!--</Submenu>--> | |
99 | - <!--<Menu-item key="4">导航四</Menu-item>--> | |
100 | - <!--</Menu>--> | |
101 | - <!--<br><br>--> | |
102 | - <!--<Menu mode="horizontal" theme="primary" active-key="1">--> | |
103 | - <!--<Menu-item key="1">--> | |
104 | - <!--<Icon type="ionic"></Icon>--> | |
105 | - <!--<span>导航一</span>--> | |
106 | - <!--</Menu-item>--> | |
107 | - <!--<Menu-item key="2">导航二</Menu-item>--> | |
108 | - <!--<Submenu key="3">--> | |
109 | - <!--<span slot="title">导航三</span>--> | |
110 | - <!--<Menu-item key="3-1">导航三 - 一</Menu-item>--> | |
111 | - <!--<Menu-item key="3-2">导航三 - 二</Menu-item>--> | |
112 | - <!--<Menu-item key="3-3">导航三 - 三</Menu-item>--> | |
113 | - <!--</Submenu>--> | |
114 | - <!--<Menu-item key="4">导航四</Menu-item>--> | |
115 | - <!--</Menu>--> | |
116 | - </div> | |
2 | + <Row> | |
3 | + <i-col span="8"> | |
4 | + <Menu :theme="theme2"> | |
5 | + <Submenu key="1"> | |
6 | + <template slot="title"> | |
7 | + <Icon type="ios-paper"></Icon> | |
8 | + 内容管理 | |
9 | + </template> | |
10 | + <Menu-item key="1-1">文章管理</Menu-item> | |
11 | + <Menu-item key="1-2">评论管理</Menu-item> | |
12 | + <Menu-item key="1-3">举报管理</Menu-item> | |
13 | + </Submenu> | |
14 | + <Submenu key="2"> | |
15 | + <template slot="title"> | |
16 | + <Icon type="ios-people"></Icon> | |
17 | + 用户管理 | |
18 | + </template> | |
19 | + <Menu-item key="2-1">新增用户</Menu-item> | |
20 | + <Menu-item key="2-2">活跃用户</Menu-item> | |
21 | + </Submenu> | |
22 | + <Submenu key="3"> | |
23 | + <template slot="title"> | |
24 | + <Icon type="stats-bars"></Icon> | |
25 | + 统计分析 | |
26 | + </template> | |
27 | + <Menu-group title="使用"> | |
28 | + <Menu-item key="3-1">新增和启动</Menu-item> | |
29 | + <Menu-item key="3-2">活跃分析</Menu-item> | |
30 | + <Menu-item key="3-3">时段分析</Menu-item> | |
31 | + </Menu-group> | |
32 | + <Menu-group title="留存"> | |
33 | + <Menu-item key="3-4">用户留存</Menu-item> | |
34 | + <Menu-item key="3-5">流失用户</Menu-item> | |
35 | + </Menu-group> | |
36 | + </Submenu> | |
37 | + </Menu> | |
38 | + </i-col> | |
39 | + | |
40 | + </Row> | |
41 | + <br> | |
42 | + <p>切换主题</p> | |
43 | + <Radio-group :model.sync="theme2"> | |
44 | + <Radio value="light"></Radio> | |
45 | + <Radio value="dark"></Radio> | |
46 | + </Radio-group> | |
117 | 47 | </template> |
118 | 48 | <script> |
119 | 49 | export default { |
120 | - props: {}, | |
121 | 50 | data () { |
122 | 51 | return { |
123 | - mode: 'vertical', | |
124 | - theme: 'dark' | |
125 | - } | |
126 | - }, | |
127 | - computed: {}, | |
128 | - methods: { | |
129 | - toggleMode () { | |
130 | - this.mode = this.mode === 'horizontal' ? 'vertical' : 'horizontal'; | |
131 | - }, | |
132 | - change (d) { | |
133 | - console.log(d) | |
52 | + theme2: 'light' | |
134 | 53 | } |
135 | 54 | } |
136 | 55 | } |
137 | -</script> | |
138 | 56 | \ No newline at end of file |
57 | +</script> | ... | ... |