gaoluyang
11 小时以前 cb9cd49627b65a4c0e137e08063271a8cefe1826
src/views/im/home/components/group/group-member-grid.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,50 @@
<script lang="ts" setup>
import type { GroupMemberLite } from './group-member.vue'
import { ImFriendAddSource } from '../../../utils/constants'
import { UserAvatar } from '../user'
defineOptions({ name: 'ImGroupMemberGrid' })
withDefaults(
  defineProps<{
    clickable?: boolean // å¤´åƒç‚¹å‡»æ˜¯å¦å¼¹ UserInfoCard;选择器宫格里需要保持关闭,避免和勾选交互冲突
    groupName?: string // ç¾¤åï¼šåŠ å¥½å‹æ—¶æ‹¼ã€Œæˆ‘æ˜¯ 'XX ç¾¤' çš„ YY」话术,落库 add_source=GROUP
    member: GroupMemberLite
    size?: number // å¤´åƒåƒç´ å¤§å°ï¼›é»˜è®¤ 38(兼容选择器右侧已选区),群信息抽屉传 50 å¯¹é½å¾®ä¿¡ PC
  }>(),
  {
    clickable: false,
    size: 38,
    groupName: ''
  }
)
</script>
<template>
  <!--
    ç¾¤æˆå‘˜å®«æ ¼å•å…ƒ
    - å®«æ ¼å±•示的最小单位:头像在上、名字在下;列宽 = size + 16,自适应 size ç•™å‘¼å¸ç©ºé—´
    - è¢« GroupMemberPickerPanel å³ä¾§å·²é€‰åŒºï¼ˆgrid å½¢æ€ï¼‰ã€ConversationGroupSide ç¾¤æˆå‘˜åŒºå¾ªçŽ¯ä½¿ç”¨
  -->
  <div
    class="relative flex flex-col items-center px-0.5 py-1"
    :style="{ width: `${size! + 16}px` }"
  >
    <UserAvatar
      :id="member.userId"
      :url="member.avatar"
      :name="member.nickname"
      :size="size"
      :clickable="clickable"
      :add-source="ImFriendAddSource.GROUP"
      :add-source-extra="groupName"
    />
    <div
      class="w-full mt-1 overflow-hidden text-12px leading-[18px] text-center truncate text-[var(--ant-color-text)]"
    >
      {{ member.showName }}
    </div>
    <slot></slot>
  </div>
</template>