summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/badges/components/badge_list.vue
blob: ca7197e1e0f1bbe2dfab91eba767fc7012fbd3d2 (plain)
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
<script>
import { mapState } from 'vuex';
import LoadingIcon from '~/vue_shared/components/loading_icon.vue';
import BadgeListRow from './badge_list_row.vue';
import { GROUP_BADGE } from '../constants';

export default {
  name: 'BadgeList',
  components: {
    BadgeListRow,
    LoadingIcon,
  },
  computed: {
    ...mapState(['badges', 'isLoading', 'kind']),
    hasNoBadges() {
      return !this.isLoading && (!this.badges || !this.badges.length);
    },
    isGroupBadge() {
      return this.kind === GROUP_BADGE;
    },
  },
};
</script>

<template>
  <div class="panel panel-default">
    <div class="panel-heading">
      {{ s__('Badges|Your badges') }}
      <span
        v-show="!isLoading"
        class="badge"
      >{{ badges.length }}</span>
    </div>
    <loading-icon
      v-show="isLoading"
      class="panel-body"
      size="2"
    />
    <div
      v-if="hasNoBadges"
      class="panel-body"
    >
      <span v-if="isGroupBadge">{{ s__('Badges|This group has no badges') }}</span>
      <span v-else>{{ s__('Badges|This project has no badges') }}</span>
    </div>
    <div
      v-else
      class="panel-body"
    >
      <badge-list-row
        v-for="badge in badges"
        :key="badge.id"
        :badge="badge"
      />
    </div>
  </div>
</template>