blob: 342bf98cf3f7fde6a0de947283abb4144f00695a [file] [log] [blame]
<template>
<b-card bg-variant="light" border-variant="light" class="mb-4">
<div class="justify-content-between align-items-center d-flex flex-wrap">
<h3 class="h5 mb-0">{{ title }}</h3>
<div class="card-buttons">
<b-button
v-if="exportButton || downloadButton"
:disabled="disabled"
:download="download"
:href="href"
class="p-0"
variant="link"
>
<span v-if="downloadButton">{{ $t('global.action.download') }}</span>
<span v-if="exportButton">{{ $t('global.action.exportAll') }}</span>
</b-button>
<span v-if="exportButton || downloadButton" class="pl-2 pr-2">|</span>
<b-link :to="to">{{ $t('pageOverview.viewMore') }}</b-link>
</div>
</div>
<slot></slot>
</b-card>
</template>
<script>
import { useI18n } from 'vue-i18n';
export default {
name: 'OverviewCard',
props: {
data: {
type: Array,
default: () => [],
},
disabled: {
type: Boolean,
default: true,
},
downloadButton: {
type: Boolean,
default: false,
},
exportButton: {
type: Boolean,
default: false,
},
fileName: {
type: String,
default: 'data',
},
title: {
type: String,
default: '',
},
to: {
type: String,
default: '/',
},
},
data() {
return {
$t: useI18n().t,
};
},
computed: {
dataForExport() {
return JSON.stringify(this.data);
},
download() {
return `${this.fileName}.json`;
},
href() {
return `data:text/json;charset=utf-8,${this.dataForExport}`;
},
},
};
</script>
<style lang="scss" scoped>
@import '@/assets/styles/bmc/helpers/_index.scss';
@import '@/assets/styles/bootstrap/_helpers.scss';
a {
vertical-align: middle;
font-size: 14px;
}
.card {
min-width: 310px;
}
</style>