diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-01-13 03:10:50 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-01-13 03:10:50 +0300 |
commit | 033182c9f14e10ed6a45632054336a92f5d88af9 (patch) | |
tree | a42fbf836fa3b1517ee7af79a65be0daffe0bfde /app/assets/javascripts/sidebar | |
parent | eb489ab3e7e208a136ea47b3589cc5e3a41ed5d5 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/assets/javascripts/sidebar')
-rw-r--r-- | app/assets/javascripts/sidebar/components/copy_email_to_clipboard.vue | 43 | ||||
-rw-r--r-- | app/assets/javascripts/sidebar/mount_sidebar.js | 17 |
2 files changed, 60 insertions, 0 deletions
diff --git a/app/assets/javascripts/sidebar/components/copy_email_to_clipboard.vue b/app/assets/javascripts/sidebar/components/copy_email_to_clipboard.vue new file mode 100644 index 00000000000..8c8241cf6a4 --- /dev/null +++ b/app/assets/javascripts/sidebar/components/copy_email_to_clipboard.vue @@ -0,0 +1,43 @@ +<script> +import { s__, __, sprintf } from '~/locale'; +import ClipboardButton from '~/vue_shared/components/clipboard_button.vue'; + +export default { + i18n: { + copyEmail: __('Copy email address'), + }, + components: { + ClipboardButton, + }, + props: { + copyText: { + type: String, + required: true, + }, + }, + computed: { + emailText() { + return sprintf(s__('RightSidebar|Issue email: %{copyText}'), { copyText: this.copyText }); + }, + }, +}; +</script> + +<template> + <div + data-qa-selector="copy-forward-email" + class="copy-email-address gl-display-flex gl-align-items-center gl-justify-content-space-between" + > + <span + class="gl-overflow-hidden gl-text-overflow-ellipsis gl-white-space-nowrap hide-collapsed gl-w-85p" + >{{ emailText }}</span + > + <clipboard-button + class="copy-email-button gl-bg-none!" + category="tertiary" + :title="$options.i18n.copyEmail" + :text="copyText" + tooltip-placement="left" + /> + </div> +</template> diff --git a/app/assets/javascripts/sidebar/mount_sidebar.js b/app/assets/javascripts/sidebar/mount_sidebar.js index 3e8ccc6e177..2760bf431ea 100644 --- a/app/assets/javascripts/sidebar/mount_sidebar.js +++ b/app/assets/javascripts/sidebar/mount_sidebar.js @@ -12,6 +12,7 @@ import sidebarParticipants from './components/participants/sidebar_participants. import sidebarSubscriptions from './components/subscriptions/sidebar_subscriptions.vue'; import SidebarSeverity from './components/severity/sidebar_severity.vue'; import Translate from '../vue_shared/translate'; +import CopyEmailToClipboard from './components/copy_email_to_clipboard.vue'; import createDefaultClient from '~/lib/graphql'; import { isInIssuePage, isInIncidentPage, parseBoolean } from '~/lib/utils/common_utils'; import createFlash from '~/flash'; @@ -272,6 +273,21 @@ function mountSeverityComponent() { }); } +function mountCopyEmailComponent() { + const el = document.getElementById('issuable-copy-email'); + + if (!el) return; + + const { createNoteEmail } = getSidebarOptions(); + + // eslint-disable-next-line no-new + new Vue({ + el, + render: (createElement) => + createElement(CopyEmailToClipboard, { props: { copyText: createNoteEmail } }), + }); +} + export function mountSidebar(mediator) { mountAssigneesComponent(mediator); mountReviewersComponent(mediator); @@ -279,6 +295,7 @@ export function mountSidebar(mediator) { mountLockComponent(); mountParticipantsComponent(mediator); mountSubscriptionsComponent(mediator); + mountCopyEmailComponent(); new SidebarMoveIssue( mediator, |