feat: improve user component
continuous-integration/drone/pr Build is passing Details

This commit is contained in:
Dominik Pschenitschni 2022-11-11 22:17:55 +01:00
parent 163d9366d3
commit 5ec86486b0
Signed by: dpschen
GPG Key ID: B257AC0149F43A77
1 changed files with 17 additions and 12 deletions

View File

@ -1,23 +1,27 @@
<template> <template>
<div :class="{'is-inline': isInline}" class="user"> <div
class="user"
:class="{'is-inline': isInline}"
>
<img <img
:height="avatarSize" :height="avatarSize"
:src="getAvatarUrl(user, avatarSize)" :src="getAvatarUrl(user, avatarSize)"
:width="avatarSize" :width="avatarSize"
alt="" :alt="'Avatar of ' + displayName"
class="avatar" class="avatar"
v-tooltip="getDisplayName(user)"/> v-tooltip="displayName"
<span class="username" v-if="showUsername">{{ getDisplayName(user) }}</span> />
<span class="username" v-if="showUsername">{{ displayName }}</span>
</div> </div>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import type {PropType} from 'vue' import {computed, type PropType} from 'vue'
import {getAvatarUrl, getDisplayName} from '@/models/user' import {getAvatarUrl, getDisplayName} from '@/models/user'
import type {IUser} from '@/modelTypes/IUser' import type {IUser} from '@/modelTypes/IUser'
defineProps({ const props = defineProps({
user: { user: {
type: Object as PropType<IUser>, type: Object as PropType<IUser>,
required: true, required: true,
@ -38,6 +42,8 @@ defineProps({
default: false, default: false,
}, },
}) })
const displayName = computed(() => getDisplayName(props.user))
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@ -47,12 +53,11 @@ defineProps({
&.is-inline { &.is-inline {
display: inline; display: inline;
} }
}
img { .avatar {
border-radius: 100%; border-radius: 100%;
vertical-align: middle;
vertical-align: middle; margin-right: .5rem;
margin-right: .5rem;
}
} }
</style> </style>