vexip-ui
Version:
A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good
1 lines • 8.95 kB
Source Map (JSON)
{"version":3,"file":"avatar-group.vue2.cjs","sources":["../../../components/avatar/avatar-group.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { Avatar } from '@/components/avatar'\nimport { Renderer } from '@/components/renderer'\nimport { Tooltip } from '@/components/tooltip'\n\nimport { computed, provide, ref, watchEffect } from 'vue'\n\nimport { useNameHelper, useProps } from '@vexip-ui/config'\nimport { avatarGroupProps } from './props'\nimport { GROUP_STATE } from './symbol'\n\nimport type { ComponentSize } from '@vexip-ui/config'\nimport type { AvatarGroupSlots, AvatarOption } from './symbol'\n\ndefineOptions({ name: 'AvatarGroup' })\n\nconst _props = defineProps(avatarGroupProps)\nconst props = useProps('avatarGroup', _props, {\n size: 'default',\n options: {\n default: () => [],\n static: true,\n },\n circle: false,\n max: null,\n showTip: false,\n tipTrigger: 'hover',\n vertical: false,\n offset: null,\n restColor: null,\n restBackground: null,\n slots: () => ({}),\n})\n\ndefineSlots<AvatarGroupSlots>()\n\nconst nh = useNameHelper('avatar-group')\n\nconst renderAvatars = ref<AvatarOption[]>([])\nconst restAvatars = ref<AvatarOption[]>([])\n\nwatchEffect(() => {\n const size = props.options.length\n\n if (props.max > 0 && size > props.max) {\n renderAvatars.value = props.options.slice(0, props.max - 1)\n restAvatars.value = props.options.slice(props.max - 1)\n } else {\n renderAvatars.value = Array.from(props.options)\n restAvatars.value = []\n }\n})\n\nprovide(GROUP_STATE, props)\n\nconst className = computed(() => {\n return {\n [nh.b()]: true,\n [nh.ns('avatar-vars')]: true,\n [nh.bm('inherit')]: props.inherit,\n [nh.bm(props.size as ComponentSize)]:\n typeof props.size !== 'number' && props.size !== 'default',\n [nh.bm('circle')]: props.circle,\n [nh.bm('vertical')]: props.vertical,\n }\n})\nconst style = computed(() => {\n const style: Record<string, string> = {}\n\n if (typeof props.offset === 'number') {\n style[nh.cv('offset')] = `${props.offset}px`\n }\n\n return style\n})\n</script>\n\n<template>\n <div :class=\"className\" role=\"group\" :style=\"style\">\n <div v-for=\"(option, index) in renderAvatars\" :key=\"index\" :class=\"nh.be('item')\">\n <slot :option=\"option\" :index=\"index\">\n <Renderer :renderer=\"props.slots.default\" :data=\"{ option, index }\">\n <Avatar\n inherit\n :src=\"option.src\"\n :icon=\"option.icon\"\n :alt=\"option.alt\"\n :fit=\"option.fit\"\n :src-set=\"option.srcSet\"\n :gap=\"option.gap\"\n :icon-scale=\"option.iconScale\"\n :fallback-src=\"option.fallbackSrc\"\n >\n {{ option.text }}\n </Avatar>\n </Renderer>\n </slot>\n </div>\n <div v-if=\"restAvatars.length\" :class=\"[nh.be('item'), nh.bem('item', 'rest')]\">\n <Tooltip\n v-if=\"props.showTip\"\n inherit\n :trigger=\"props.tipTrigger\"\n :tip-class=\"nh.be('rest')\"\n >\n <template #trigger>\n <slot name=\"rest\" :options=\"restAvatars\" :count=\"restAvatars.length\">\n <Renderer\n :renderer=\"props.slots.rest\"\n :data=\"{ options: restAvatars, count: restAvatars.length }\"\n >\n <Avatar inherit :color=\"props.restColor\" :background=\"props.restBackground\">\n {{ `+${restAvatars.length}` }}\n </Avatar>\n </Renderer>>\n </slot>\n </template>\n <slot name=\"tip\" :options=\"restAvatars\" :count=\"restAvatars.length\">\n <Renderer\n :renderer=\"props.slots.tip\"\n :data=\"{ options: restAvatars, count: restAvatars.length }\"\n >\n <Avatar\n v-for=\"(option, index) in restAvatars\"\n :key=\"index\"\n inherit\n :src=\"option.src\"\n :icon=\"option.icon\"\n :alt=\"option.alt\"\n :fit=\"option.fit\"\n :src-set=\"option.srcSet\"\n :gap=\"option.gap\"\n :icon-scale=\"option.iconScale\"\n :fallback-src=\"option.fallbackSrc\"\n >\n {{ option.text }}\n </Avatar>\n </Renderer>\n </slot>\n </Tooltip>\n <slot\n v-else\n name=\"rest\"\n :options=\"restAvatars\"\n :count=\"restAvatars.length\"\n >\n <Renderer\n :renderer=\"props.slots.rest\"\n :data=\"{ options: restAvatars, count: restAvatars.length }\"\n >\n <Avatar inherit :color=\"props.restColor\" :background=\"props.restBackground\">\n {{ `+${restAvatars.length}` }}\n </Avatar>\n </Renderer>\n </slot>\n </div>\n </div>\n</template>\n"],"names":["_props","__props","props","useProps","nh","useNameHelper","renderAvatars","ref","restAvatars","watchEffect","size","provide","GROUP_STATE","className","computed","style","_createElementBlock","_openBlock","_Fragment","_renderList","option","index","_normalizeClass","_unref","_renderSlot","_ctx","_createVNode","Renderer","Avatar","_createTextVNode","_toDisplayString","_createBlock","Tooltip"],"mappings":"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"}