2020-09-17 09:09:32 +00:00
|
|
|
<script>
|
|
|
|
import { GlTabs, GlTab, GlBadge } from '@gitlab/ui';
|
|
|
|
|
|
|
|
export default {
|
|
|
|
components: {
|
|
|
|
GlTabs,
|
|
|
|
GlTab,
|
|
|
|
GlBadge,
|
|
|
|
},
|
|
|
|
props: {
|
|
|
|
tabs: {
|
|
|
|
type: Array,
|
|
|
|
required: true,
|
|
|
|
},
|
|
|
|
tabCounts: {
|
|
|
|
type: Object,
|
2020-10-23 09:08:41 +00:00
|
|
|
required: false,
|
|
|
|
default: null,
|
2020-09-17 09:09:32 +00:00
|
|
|
},
|
|
|
|
currentTab: {
|
|
|
|
type: String,
|
|
|
|
required: true,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
methods: {
|
|
|
|
isTabActive(tabName) {
|
|
|
|
return tabName === this.currentTab;
|
|
|
|
},
|
2021-04-01 18:13:56 +00:00
|
|
|
isTabCountNumeric(tab) {
|
|
|
|
return Number.isInteger(this.tabCounts[tab.name]);
|
|
|
|
},
|
2020-09-17 09:09:32 +00:00
|
|
|
},
|
|
|
|
};
|
|
|
|
</script>
|
|
|
|
|
|
|
|
<template>
|
|
|
|
<div class="top-area">
|
2021-01-28 15:09:06 +00:00
|
|
|
<gl-tabs
|
2021-06-15 12:10:11 +00:00
|
|
|
class="gl-display-flex gl-flex-grow-1 gl-p-0 gl-m-0 mobile-separator issuable-state-filters"
|
2021-01-28 15:09:06 +00:00
|
|
|
nav-class="gl-border-b-0"
|
|
|
|
>
|
2020-09-17 09:09:32 +00:00
|
|
|
<gl-tab
|
|
|
|
v-for="tab in tabs"
|
|
|
|
:key="tab.id"
|
|
|
|
:active="isTabActive(tab.name)"
|
|
|
|
@click="$emit('click', tab.name)"
|
|
|
|
>
|
|
|
|
<template #title>
|
2021-12-13 06:14:51 +00:00
|
|
|
<span :title="tab.titleTooltip" :data-qa-selector="`${tab.name}_issuables_tab`">
|
|
|
|
{{ tab.title }}
|
|
|
|
</span>
|
2021-04-01 18:13:56 +00:00
|
|
|
<gl-badge
|
2021-05-04 06:10:20 +00:00
|
|
|
v-if="tabCounts && isTabCountNumeric(tab)"
|
2021-07-23 03:10:00 +00:00
|
|
|
variant="muted"
|
2021-04-01 18:13:56 +00:00
|
|
|
size="sm"
|
|
|
|
class="gl-tab-counter-badge"
|
|
|
|
>
|
2021-05-04 06:10:20 +00:00
|
|
|
{{ tabCounts[tab.name] }}
|
|
|
|
</gl-badge>
|
2020-09-17 09:09:32 +00:00
|
|
|
</template>
|
|
|
|
</gl-tab>
|
|
|
|
</gl-tabs>
|
|
|
|
<div class="nav-controls">
|
|
|
|
<slot name="nav-actions"></slot>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</template>
|