123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- <!--
- <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>
- import Avatar from 'ant-design-vue/es/avatar'
- import AvatarItem from './Item'
- import { filterEmpty } from '@/components/_util/util'
- export default {
- AvatarItem,
- name: "AvatarList",
- components: {
- Avatar,
- AvatarItem
- },
- props: {
- prefixCls: {
- type: String,
- default: 'ant-pro-avatar-list'
- },
- /**
- * 头像大小 类型: large、small 、mini, default
- * 默认值: default
- */
- size: {
- type: [String, Number],
- default: 'default'
- },
- /**
- * 要显示的最大项目
- */
- maxLength: {
- type: Number,
- default: 0
- },
- /**
- * 多余的项目风格
- */
- excessItemsStyle: {
- type: Object,
- default: () => {
- return {
- color: '#f56a00',
- backgroundColor: '#fde3cf'
- }
- }
- }
- },
- data () {
- return {}
- },
- methods: {
- getItems(items) {
- const classString = {
- [`${this.prefixCls}-item`]: true,
- [`${this.size}`]: true
- }
- 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
- }
- },
- 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>
- )
- }
- }
- </script>
|