File tree Expand file tree Collapse file tree 5 files changed +105
-26
lines changed Expand file tree Collapse file tree 5 files changed +105
-26
lines changed Original file line number Diff line number Diff line change 1
1
<template >
2
- <div >
3
- item
4
- </div >
2
+ <li :class =" [prefixCls, size]" >
3
+ <slot >
4
+ <tooltip >
5
+ <template slot="title">{{ tips }}</template >
6
+ <avatar :size =" size !== 'mini' && size || 20" :src =" src" />
7
+ </tooltip >
8
+ </slot >
9
+ </li >
5
10
</template >
6
11
7
12
<script >
13
+ import Avatar from ' ant-design-vue/es/avatar'
14
+ import Tooltip from ' ant-design-vue/es/tooltip'
15
+
8
16
export default {
9
17
name: " AvatarItem" ,
18
+ components: {
19
+ Avatar,
20
+ Tooltip
21
+ },
10
22
props: {
23
+ prefixCls: {
24
+ type: String ,
25
+ default: ' ant-pro-avatar-list-item'
26
+ },
11
27
tips: {
12
28
type: String ,
13
29
default: ' ' ,
14
30
required: false
15
31
},
16
32
src: {
17
33
type: String ,
18
- required: true
34
+ default: ' '
35
+ }
36
+ },
37
+ data () {
38
+ return {
39
+ size: this .$parent .size
40
+ }
41
+ },
42
+ watch: {
43
+ ' $parent.size' (val) {
44
+ this .size = val
19
45
}
20
46
}
21
47
}
22
- </script >
23
-
24
- <style scoped>
25
-
26
- </style >
48
+ </script >
Original file line number Diff line number Diff line change 1
1
<template >
2
- <div >
3
-
2
+ <div :class =" [prefixCls]" >
3
+ <ul >
4
+ <slot ></slot >
5
+ <template v-if =" maxLength > 0 && slotsSize > maxLength " >
6
+ <avatar-item :size =" size" >
7
+ <avatar :size =" size !== 'mini' && size || 20" :style =" excessItemsStyle" >{{ `+${maxLength}` }}</avatar >
8
+ </avatar-item >
9
+ </template >
10
+ </ul >
4
11
</div >
5
12
</template >
6
13
7
14
<script >
8
15
import Avatar from ' ant-design-vue/es/avatar'
9
- import AvatarListItem from ' ./Item'
16
+ import AvatarItem from ' ./Item'
10
17
11
18
export default {
19
+ AvatarItem,
12
20
name: " AvatarList" ,
13
21
components: {
14
22
Avatar,
15
- AvatarListItem
23
+ AvatarItem
16
24
},
17
25
props: {
26
+ prefixCls: {
27
+ type: String ,
28
+ default: ' ant-pro-avatar-list'
29
+ },
18
30
/**
19
31
* 头像大小 类型: large、small 、mini, default
20
32
* 默认值: default
21
33
*/
22
34
size: {
23
- type: String ,
35
+ type: [ String , Number ] ,
24
36
default: ' default'
25
37
},
26
38
/**
27
39
* 要显示的最大项目
28
40
*/
29
41
maxLength: {
30
42
type: Number ,
31
- default: 3
43
+ default: 0
32
44
},
33
45
/**
34
- * 额外 CSS 风格
46
+ * 多余的项目风格
35
47
*/
36
48
excessItemsStyle: {
37
49
type: Object ,
38
- default : () => {}
50
+ default : () => {
51
+ return {
52
+ color: ' #f56a00' ,
53
+ backgroundColor: ' #fde3cf'
54
+ }
55
+ }
39
56
}
40
57
},
41
58
data () {
42
59
return {
43
-
60
+ slotsSize: 0
61
+ }
62
+ },
63
+ created () {
64
+ this .slotsSize = this .$slots .default .length
65
+ this .splitSlots ()
66
+ },
67
+ methods: {
68
+ splitSlots () {
69
+ if (this .maxLength !== 0 && this .slotsSize > this .maxLength ) {
70
+ this .$slots .default = this .$slots .default .slice (0 , this .maxLength )
71
+ }
44
72
}
45
73
}
46
74
}
47
75
</script >
48
76
49
- <style scoped>
77
+ <style lang="less" scoped>
50
78
51
79
</style >
Original file line number Diff line number Diff line change 1
1
import AvatarList from './List'
2
+ import "./index.less"
2
3
3
4
export default AvatarList
Original file line number Diff line number Diff line change 7
7
display : inline-block ;
8
8
9
9
ul {
10
+ list-style : none ;
10
11
display : inline-block ;
11
- margin-left : 8px ;
12
+ padding : 0 ;
13
+ margin : 0 0 0 8px ;
12
14
font-size : 0 ;
13
15
}
14
16
}
23
25
:global {
24
26
.ant-avatar {
25
27
border : 1px solid #fff ;
28
+ cursor : pointer ;
26
29
}
27
30
}
28
31
29
- .large {
32
+ & .large {
30
33
width : @avatar-size-lg ;
31
34
height : @avatar-size-lg ;
32
35
}
33
36
34
- .small {
37
+ & .small {
35
38
width : @avatar-size-sm ;
36
39
height : @avatar-size-sm ;
37
40
}
38
41
39
- .mini {
42
+ & .mini {
40
43
width : 20px ;
41
44
height : 20px ;
42
45
53
56
}
54
57
}
55
58
}
56
- }
59
+ }
60
+
Original file line number Diff line number Diff line change 43
43
44
44
</a-card >
45
45
46
- <a-divider > 例子 </a-divider >
46
+ <a-divider > AvatarList </a-divider >
47
47
48
+ <a-card >
49
+ <avatar-list :max-length =" 3" >
50
+ <avatar-list-item tips =" Jake" src =" https://gw.alipayobjects.com/zos/rmsportal/zOsKZmFRdUtvpqCImOVY.png" />
51
+ <avatar-list-item tips =" Andy" src =" https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png" />
52
+ <avatar-list-item tips =" Niko" src =" https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png" />
53
+ <avatar-list-item tips =" Niko" src =" https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png" />
54
+ <avatar-list-item tips =" Niko" src =" https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png" />
55
+ <avatar-list-item tips =" Niko" src =" https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png" />
56
+ <avatar-list-item tips =" Niko" src =" https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png" />
57
+ </avatar-list >
58
+
59
+ <a-divider type =" vertical" style =" margin : 0 16px " />
60
+
61
+ <avatar-list size =" mini" >
62
+ <avatar-list-item tips =" Jake" src =" https://gw.alipayobjects.com/zos/rmsportal/zOsKZmFRdUtvpqCImOVY.png" />
63
+ <avatar-list-item tips =" Andy" src =" https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png" />
64
+ <avatar-list-item tips =" Niko" src =" https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png" />
65
+ </avatar-list >
66
+ </a-card >
48
67
</div >
49
68
</template >
50
69
51
70
<script >
52
71
// @ is an alias to /src
53
72
54
73
import Trend from ' @/components/Trend'
74
+ import AvatarList from ' @/components/AvatarList'
75
+
76
+ const AvatarListItem = AvatarList .AvatarItem
55
77
56
78
export default {
57
79
name: ' Home' ,
58
80
components: {
59
- Trend
81
+ Trend,
82
+ AvatarList,
83
+ AvatarListItem
60
84
}
61
85
}
62
86
</script >
You can’t perform that action at this time.
0 commit comments