Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app/assets/javascripts/sidebar/mount_sidebar.js')
-rw-r--r--app/assets/javascripts/sidebar/mount_sidebar.js110
1 files changed, 67 insertions, 43 deletions
diff --git a/app/assets/javascripts/sidebar/mount_sidebar.js b/app/assets/javascripts/sidebar/mount_sidebar.js
index 662edbc4f8d..312c0c89f29 100644
--- a/app/assets/javascripts/sidebar/mount_sidebar.js
+++ b/app/assets/javascripts/sidebar/mount_sidebar.js
@@ -2,7 +2,7 @@ import $ from 'jquery';
import Vue from 'vue';
import VueApollo from 'vue-apollo';
import createFlash from '~/flash';
-import createDefaultClient from '~/lib/graphql';
+import { IssuableType } from '~/issue_show/constants';
import {
isInIssuePage,
isInDesignPage,
@@ -10,9 +10,11 @@ import {
parseBoolean,
} from '~/lib/utils/common_utils';
import { __ } from '~/locale';
+import SidebarConfidentialityWidget from '~/sidebar/components/confidential/sidebar_confidentiality_widget.vue';
+import SidebarReferenceWidget from '~/sidebar/components/reference/sidebar_reference_widget.vue';
+import { apolloProvider } from '~/sidebar/graphql';
import Translate from '../vue_shared/translate';
import SidebarAssignees from './components/assignees/sidebar_assignees.vue';
-import ConfidentialIssueSidebar from './components/confidential/confidential_issue_sidebar.vue';
import CopyEmailToClipboard from './components/copy_email_to_clipboard.vue';
import SidebarLabels from './components/labels/sidebar_labels.vue';
import IssuableLockForm from './components/lock/issuable_lock_form.vue';
@@ -54,9 +56,6 @@ function getSidebarAssigneeAvailabilityData() {
function mountAssigneesComponent(mediator) {
const el = document.getElementById('js-vue-sidebar-assignees');
- const apolloProvider = new VueApollo({
- defaultClient: createDefaultClient(),
- });
if (!el) return;
@@ -78,7 +77,9 @@ function mountAssigneesComponent(mediator) {
field: el.dataset.field,
signedIn: el.hasAttribute('data-signed-in'),
issuableType:
- isInIssuePage() || isInIncidentPage() || isInDesignPage() ? 'issue' : 'merge_request',
+ isInIssuePage() || isInIncidentPage() || isInDesignPage()
+ ? IssuableType.Issue
+ : IssuableType.MergeRequest,
assigneeAvailabilityStatus,
},
}),
@@ -87,9 +88,6 @@ function mountAssigneesComponent(mediator) {
function mountReviewersComponent(mediator) {
const el = document.getElementById('js-vue-sidebar-reviewers');
- const apolloProvider = new VueApollo({
- defaultClient: createDefaultClient(),
- });
if (!el) return;
@@ -121,10 +119,6 @@ export function mountSidebarLabels() {
return false;
}
- const apolloProvider = new VueApollo({
- defaultClient: createDefaultClient(),
- });
-
return new Vue({
el,
apolloProvider,
@@ -139,39 +133,71 @@ export function mountSidebarLabels() {
});
}
-function mountConfidentialComponent(mediator) {
+function mountConfidentialComponent() {
const el = document.getElementById('js-confidential-entry-point');
+ if (!el) {
+ return;
+ }
const { fullPath, iid } = getSidebarOptions();
-
- if (!el) return;
-
const dataNode = document.getElementById('js-confidential-issue-data');
const initialData = JSON.parse(dataNode.innerHTML);
- import(/* webpackChunkName: 'notesStore' */ '~/notes/stores')
- .then(
- ({ store }) =>
- new Vue({
- el,
- store,
- components: {
- ConfidentialIssueSidebar,
- },
- render: (createElement) =>
- createElement('confidential-issue-sidebar', {
- props: {
- iid: String(iid),
- fullPath,
- isEditable: initialData.is_editable,
- service: mediator.service,
- },
- }),
- }),
- )
- .catch(() => {
- createFlash({ message: __('Failed to load sidebar confidential toggle') });
- });
+ // eslint-disable-next-line no-new
+ new Vue({
+ el,
+ apolloProvider,
+ components: {
+ SidebarConfidentialityWidget,
+ },
+ provide: {
+ iid: String(iid),
+ fullPath,
+ canUpdate: initialData.is_editable,
+ },
+
+ render: (createElement) =>
+ createElement('sidebar-confidentiality-widget', {
+ props: {
+ issuableType:
+ isInIssuePage() || isInIncidentPage() || isInDesignPage()
+ ? IssuableType.Issue
+ : IssuableType.MergeRequest,
+ },
+ }),
+ });
+}
+
+function mountReferenceComponent() {
+ const el = document.getElementById('js-reference-entry-point');
+ if (!el) {
+ return;
+ }
+
+ const { fullPath, iid } = getSidebarOptions();
+
+ // eslint-disable-next-line no-new
+ new Vue({
+ el,
+ apolloProvider,
+ components: {
+ SidebarReferenceWidget,
+ },
+ provide: {
+ iid: String(iid),
+ fullPath,
+ },
+
+ render: (createElement) =>
+ createElement('sidebar-reference-widget', {
+ props: {
+ issuableType:
+ isInIssuePage() || isInIncidentPage() || isInDesignPage()
+ ? IssuableType.Issue
+ : IssuableType.MergeRequest,
+ },
+ }),
+ });
}
function mountLockComponent() {
@@ -280,9 +306,6 @@ function mountSeverityComponent() {
if (!severityContainerEl) {
return false;
}
- const apolloProvider = new VueApollo({
- defaultClient: createDefaultClient(),
- });
const { fullPath, iid, severity } = getSidebarOptions();
@@ -322,6 +345,7 @@ export function mountSidebar(mediator) {
mountAssigneesComponent(mediator);
mountReviewersComponent(mediator);
mountConfidentialComponent(mediator);
+ mountReferenceComponent(mediator);
mountLockComponent();
mountParticipantsComponent(mediator);
mountSubscriptionsComponent(mediator);