|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
<!--
<template>
<div :class="[prefixCls]">
<ul>
<slot></slot>
<template v-for="item in filterEmpty($slots.default).slice(0, 3)"></template>
<template v-if="maxLength > 0 && filterEmpty($slots.default).length > maxLength">
<avatar-item :size="size">
<avatar :size="size !== 'mini' && size || 20" :style="excessItemsStyle">{{ `+${maxLength}` }}</avatar>
</avatar-item>
</template>
</ul>
</div>
</template>
-->
<script>
|
|
20
21
22
|
import Avatar from 'ant-design-vue/es/avatar'
import AvatarItem from './Item'
import {filterEmpty} from '@/components/_util/util'
|
|
23
|
|
|
24
25
26
27
28
29
30
31
32
33
34
|
export default {
AvatarItem,
name: "AvatarList",
components: {
Avatar,
AvatarItem
},
props: {
prefixCls: {
type: String,
default: 'ant-pro-avatar-list'
|
|
35
|
},
|
|
36
37
38
39
40
41
42
|
/**
* 头像大小 类型: large、small 、mini, default
* 默认值: default
*/
size: {
type: [String, Number],
default: 'default'
|
|
43
|
},
|
|
44
45
46
47
48
49
|
/**
* 要显示的最大项目
*/
maxLength: {
type: Number,
default: 0
|
|
50
|
},
|
|
51
52
53
54
55
56
57
58
59
|
/**
* 多余的项目风格
*/
excessItemsStyle: {
type: Object,
default: () => {
return {
color: '#f56a00',
backgroundColor: '#fde3cf'
|
|
60
61
|
}
}
|
|
62
63
64
65
66
67
68
|
}
},
data() {
return {}
},
methods: {
getItems(items) {
|
|
69
|
const classString = {
|
|
70
71
|
[`${this.prefixCls}-item`]: true,
[`${this.size}`]: true
|
|
72
73
|
}
|
|
74
75
76
77
78
79
80
81
|
if (this.maxLength > 0) {
items = items.slice(0, this.maxLength)
items.push((<Avatar size={this.size} style={this.excessItemsStyle}>{`+${this.maxLength}`}</Avatar>))
}
const itemList = items.map((item) => (
<li class={classString}>{item}</li>
))
return itemList
|
|
82
|
}
|
|
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
},
render() {
const {prefixCls, size} = this.$props
const classString = {
[`${prefixCls}`]: true,
[`${size}`]: true,
}
const items = filterEmpty(this.$slots.default)
const itemsDom = items && items.length ? <ul class={`${prefixCls}-items`}>{this.getItems(items)}</ul> : null
return (
<div class={classString}>
{itemsDom}
</div>
)
|
|
98
|
}
|
|
99
|
}
|
|
100
|
</script>
|