diff options
Diffstat (limited to 'app/assets/javascripts/sidebar/components/copy/sidebar_reference_widget.vue')
-rw-r--r-- | app/assets/javascripts/sidebar/components/copy/sidebar_reference_widget.vue | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/app/assets/javascripts/sidebar/components/copy/sidebar_reference_widget.vue b/app/assets/javascripts/sidebar/components/copy/sidebar_reference_widget.vue new file mode 100644 index 00000000000..3287539e502 --- /dev/null +++ b/app/assets/javascripts/sidebar/components/copy/sidebar_reference_widget.vue @@ -0,0 +1,59 @@ +<script> +import { __ } from '~/locale'; +import { referenceQueries } from '../../constants'; +import CopyableField from './copyable_field.vue'; + +export default { + components: { + CopyableField, + }, + inject: ['fullPath', 'iid'], + props: { + issuableType: { + required: true, + type: String, + }, + }, + data() { + return { + reference: '', + }; + }, + apollo: { + reference: { + query() { + return referenceQueries[this.issuableType].query; + }, + variables() { + return { + fullPath: this.fullPath, + iid: this.iid, + }; + }, + update(data) { + return data.workspace?.issuable?.reference || ''; + }, + error(error) { + this.$emit('fetch-error', { + message: __('An error occurred while fetching reference'), + error, + }); + }, + }, + }, + computed: { + isLoading() { + return this.$apollo.queries.reference.loading; + }, + }, +}; +</script> + +<template> + <copyable-field + class="sub-block" + :is-loading="isLoading" + :name="__('Reference')" + :value="reference" + /> +</template> |