added loading for avatar
This commit is contained in:
@@ -1,4 +1,8 @@
|
||||
<script setup lang="ts">
|
||||
// imports
|
||||
|
||||
import { useImage } from "@vueuse/core";
|
||||
|
||||
// types
|
||||
|
||||
type Props = {
|
||||
@@ -8,25 +12,37 @@ type Props = {
|
||||
|
||||
// props
|
||||
|
||||
defineProps<Props>();
|
||||
const props = defineProps<Props>();
|
||||
|
||||
const { src } = toRefs(props);
|
||||
|
||||
// state
|
||||
|
||||
const { isLoading } = useImage({ src: src.value });
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<AvatarRoot
|
||||
class="inline-flex size-[45px] select-none items-center justify-center rounded-full align-middle"
|
||||
class="flex-center size-full select-none rounded-full align-middle overflow-hidden"
|
||||
>
|
||||
<AvatarImage
|
||||
class="h-full w-full rounded-full object-cover"
|
||||
:src="src"
|
||||
:alt="alt"
|
||||
<Skeleton
|
||||
v-if="isLoading"
|
||||
class="w-full !h-[110%] !rounded-full aspect-square"
|
||||
/>
|
||||
<AvatarFallback
|
||||
class="flex-center size-full text-sm font-medium rounded-full"
|
||||
:delay-ms="600"
|
||||
>
|
||||
<div class="size-full rounded-full flex-center">
|
||||
<Icon name="ci:profile" size="16" class="**:stroke-black" />
|
||||
</div>
|
||||
</AvatarFallback>
|
||||
<template v-else>
|
||||
<AvatarImage
|
||||
class="!size-full rounded-full object-cover"
|
||||
:src="src"
|
||||
:alt="alt"
|
||||
/>
|
||||
<AvatarFallback
|
||||
class="flex-center size-full text-sm font-medium rounded-full"
|
||||
:delay-ms="600"
|
||||
>
|
||||
<div class="size-full rounded-full flex-center">
|
||||
<Icon name="ci:profile" size="16" class="**:stroke-black" />
|
||||
</div>
|
||||
</AvatarFallback>
|
||||
</template>
|
||||
</AvatarRoot>
|
||||
</template>
|
||||
|
||||
Reference in New Issue
Block a user