element-plus
Version:
A Component Library for Vue 3
1 lines • 4.53 kB
Source Map (JSON)
{"version":3,"file":"avatar.vue2.mjs","sources":["../../../../../../packages/components/avatar/src/avatar.vue"],"sourcesContent":["<template>\n <span :class=\"avatarClass\" :style=\"sizeStyle\">\n <img\n v-if=\"(src || srcSet) && !hasLoadError\"\n :src=\"src\"\n :alt=\"alt\"\n :srcset=\"srcSet\"\n :style=\"fitStyle\"\n @error=\"handleError\"\n />\n <el-icon v-else-if=\"icon\">\n <component :is=\"icon\" />\n </el-icon>\n <slot v-else />\n </span>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, ref, watch } from 'vue'\nimport { ElIcon } from '@element-plus/components/icon'\nimport { useNamespace } from '@element-plus/hooks'\nimport { addUnit, isNumber, isString } from '@element-plus/utils'\nimport { avatarEmits } from './avatar'\nimport { avatarGroupContextKey } from './constants'\n\nimport type { AvatarProps } from './avatar'\nimport type { CSSProperties } from 'vue'\n\ndefineOptions({\n name: 'ElAvatar',\n})\n\nconst props = withDefaults(defineProps<AvatarProps>(), {\n src: '',\n fit: 'cover',\n})\n\nconst emit = defineEmits(avatarEmits)\n\nconst avatarGroupContext = inject(avatarGroupContextKey, undefined)\n\nconst ns = useNamespace('avatar')\n\nconst hasLoadError = ref(false)\n\nconst size = computed(() => props.size ?? avatarGroupContext?.size)\nconst shape = computed(\n () => props.shape ?? avatarGroupContext?.shape ?? 'circle'\n)\n\nconst avatarClass = computed(() => {\n const { icon } = props\n const classList = [ns.b()]\n if (isString(size.value)) classList.push(ns.m(size.value))\n if (icon) classList.push(ns.m('icon'))\n if (shape.value) classList.push(ns.m(shape.value))\n return classList\n})\n\nconst sizeStyle = computed(() => {\n return isNumber(size.value)\n ? (ns.cssVarBlock({\n size: addUnit(size.value)!,\n }) as CSSProperties)\n : undefined\n})\n\nconst fitStyle = computed<CSSProperties>(() => ({\n objectFit: props.fit,\n}))\n\n// need reset hasLoadError to false if src changed\nwatch(\n () => [props.src, props.srcSet],\n () => (hasLoadError.value = false)\n)\n\nfunction handleError(e: Event) {\n hasLoadError.value = true\n emit('error', e)\n}\n</script>\n"],"names":["_createElementBlock","_createBlock","_unref","_openBlock","_resolveDynamicComponent","_renderSlot"],"mappings":"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"}