summaryrefslogtreecommitdiff
path: root/src/components
diff options
context:
space:
mode:
Diffstat (limited to 'src/components')
-rw-r--r--src/components/Global/TableRowAction.vue66
1 files changed, 48 insertions, 18 deletions
diff --git a/src/components/Global/TableRowAction.vue b/src/components/Global/TableRowAction.vue
index d41fd50c..f86bce22 100644
--- a/src/components/Global/TableRowAction.vue
+++ b/src/components/Global/TableRowAction.vue
@@ -1,18 +1,36 @@
<template>
- <b-button
- :aria-label="title"
- :title="title"
- variant="link"
- :disabled="!enabled"
- @click="$emit('click:tableAction', value)"
- >
- <slot name="icon">
- {{ title }}
- </slot>
- </b-button>
+ <span>
+ <b-link
+ v-if="value === 'export'"
+ class="align-bottom btn-link py-0"
+ :download="download"
+ :href="href"
+ :title="title"
+ :aria-label="title"
+ >
+ <slot name="icon">
+ {{ $t('global.action.export') }}
+ </slot>
+ </b-link>
+ <b-button
+ v-else
+ variant="link"
+ class="py-0"
+ :aria-label="title"
+ :title="title"
+ :disabled="!enabled"
+ @click="$emit('click:tableAction', value)"
+ >
+ <slot name="icon">
+ {{ title }}
+ </slot>
+ </b-button>
+ </span>
</template>
<script>
+import { omit } from 'lodash';
+
export default {
name: 'TableRowAction',
props: {
@@ -27,14 +45,26 @@ export default {
title: {
type: String,
default: null
+ },
+ rowData: {
+ type: Object,
+ default: () => {}
+ },
+ exportName: {
+ type: String,
+ default: 'export'
+ }
+ },
+ computed: {
+ dataForExport() {
+ return JSON.stringify(omit(this.rowData, 'actions'));
+ },
+ download() {
+ return `${this.exportName}.json`;
+ },
+ href() {
+ return `data:text/json;charset=utf-8,${this.dataForExport}`;
}
}
};
</script>
-
-<style lang="scss" scoped>
-.btn.btn-link {
- padding-top: 0;
- padding-bottom: 0;
-}
-</style>