1<template> 2 <span> 3 <b-link 4 v-if="value === 'export'" 5 class="align-bottom btn-icon-only py-0 btn-link" 6 :download="download" 7 :href="href" 8 :title="title" 9 :aria-label="title" 10 > 11 <slot name="icon"> 12 {{ $t('global.action.export') }} 13 </slot> 14 </b-link> 15 <b-button 16 v-else 17 variant="link" 18 class="btn-icon-only" 19 :aria-label="title" 20 :title="title" 21 :disabled="!enabled" 22 @click="$emit('click-table-action', value)" 23 > 24 <slot name="icon"> 25 {{ title }} 26 </slot> 27 </b-button> 28 </span> 29</template> 30 31<script> 32import { omit } from 'lodash'; 33 34export default { 35 name: 'TableRowAction', 36 props: { 37 value: { 38 type: String, 39 required: true, 40 }, 41 enabled: { 42 type: Boolean, 43 default: true, 44 }, 45 title: { 46 type: String, 47 default: null, 48 }, 49 rowData: { 50 type: Object, 51 default: () => {}, 52 }, 53 exportName: { 54 type: String, 55 default: 'export', 56 }, 57 }, 58 computed: { 59 dataForExport() { 60 return JSON.stringify(omit(this.rowData, 'actions')); 61 }, 62 download() { 63 return `${this.exportName}.json`; 64 }, 65 href() { 66 return `data:text/json;charset=utf-8,${this.dataForExport}`; 67 }, 68 }, 69}; 70</script> 71