scinote-web/app/javascript/vue/shareable_links/container.vue
ajugo 6c6fc404d2
Implement task shareable modal [SCI-8651] (#5723)
* Implement task shareable modal [SCI-8651]

* Fix routes [SCI-8651]

* Clean code for vue share button initilization [SCI-8651]
2023-07-06 16:05:03 +02:00

78 lines
1.8 KiB
Vue

<template>
<div>
<button class="ml-2 btn"
id="share-button"
type="button"
:class="shareClass"
:title="shareValue"
:disabled="disabled"
@click="openModal">
<span class="sn-icon sn-icon-shared"></span>
<span class="text-sm">
{{ shareValue }}
</span>
</button>
<shareModalContainer v-if="visibleShareModal"
:shared="share"
:shareableLinkUrl="shareableLinkUrl"
:characterLimit="255"
@enable="enableShare"
@disable="disableShare"
@close="closeModal"/>
</div>
</template>
<script>
import shareModalContainer from './components/shareable_link_modal.vue'
export default {
name: "ShareLinkContainer",
components: { shareModalContainer },
props: {
shared: {
type: Boolean,
default: false
},
shareableLinkUrl: {
type: String,
required: true
},
disabled: {
type: Boolean,
defaul: true
}
},
data() {
return {
share: false,
visibleShareModal: false
};
},
created() {
this.share = this.shared;
},
computed: {
shareClass() {
return this.share ? 'btn-shared' : 'btn-secondary';
},
shareValue() {
return this.i18n.t(this.share ? 'my_modules.shareable_links.shared' : 'my_modules.shareable_links.share');
}
},
methods:{
enableShare() {
this.share = true;
},
disableShare() {
this.share = false;
},
openModal() {
this.visibleShareModal = true;
},
closeModal() {
this.visibleShareModal = false;
}
}
};
</script>