1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
<script>
import { GlAvatar } from '@gitlab/ui';
import { getIdFromGraphQLId, isGid } from '~/graphql_shared/utils';
import { AVATAR_SHAPE_OPTION_RECT } from '~/vue_shared/constants';
export default {
components: {
GlAvatar,
},
props: {
projectId: {
type: [Number, String],
default: 0,
required: false,
validator(value) {
return typeof value === 'string' ? isGid(value) : true;
},
},
projectName: {
type: String,
required: true,
},
projectAvatarUrl: {
type: String,
required: false,
default: '',
},
size: {
type: Number,
default: 32,
required: false,
},
alt: {
type: String,
required: false,
default: undefined,
},
},
computed: {
avatarAlt() {
return this.alt ?? this.projectName;
},
entityId() {
return isGid(this.projectId) ? getIdFromGraphQLId(this.projectId) : this.projectId;
},
},
AVATAR_SHAPE_OPTION_RECT,
};
</script>
<template>
<gl-avatar
:shape="$options.AVATAR_SHAPE_OPTION_RECT"
:entity-id="entityId"
:entity-name="projectName"
:src="projectAvatarUrl"
:alt="avatarAlt"
:size="size"
:fallback-on-error="true"
/>
</template>
|