summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/integrations
diff options
context:
space:
mode:
Diffstat (limited to 'app/assets/javascripts/integrations')
-rw-r--r--app/assets/javascripts/integrations/edit/components/integration_form.vue41
-rw-r--r--app/assets/javascripts/integrations/edit/components/jira_issues_fields.vue145
-rw-r--r--app/assets/javascripts/integrations/edit/components/jira_trigger_fields.vue19
-rw-r--r--app/assets/javascripts/integrations/edit/index.js7
4 files changed, 66 insertions, 146 deletions
diff --git a/app/assets/javascripts/integrations/edit/components/integration_form.vue b/app/assets/javascripts/integrations/edit/components/integration_form.vue
index 6e89872ff68..661299920c7 100644
--- a/app/assets/javascripts/integrations/edit/components/integration_form.vue
+++ b/app/assets/javascripts/integrations/edit/components/integration_form.vue
@@ -4,7 +4,6 @@ import axios from 'axios';
import * as Sentry from '@sentry/browser';
import { mapState, mapActions, mapGetters } from 'vuex';
-import glFeatureFlagsMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';
import {
I18N_FETCH_TEST_SETTINGS_DEFAULT_ERROR_MESSAGE,
I18N_DEFAULT_ERROR_MESSAGE,
@@ -18,8 +17,6 @@ import { testIntegrationSettings } from '../api';
import ActiveCheckbox from './active_checkbox.vue';
import ConfirmationModal from './confirmation_modal.vue';
import DynamicField from './dynamic_field.vue';
-import JiraIssuesFields from './jira_issues_fields.vue';
-import JiraTriggerFields from './jira_trigger_fields.vue';
import OverrideDropdown from './override_dropdown.vue';
import ResetConfirmationModal from './reset_confirmation_modal.vue';
import TriggerFields from './trigger_fields.vue';
@@ -29,8 +26,6 @@ export default {
components: {
OverrideDropdown,
ActiveCheckbox,
- JiraTriggerFields,
- JiraIssuesFields,
TriggerFields,
DynamicField,
ConfirmationModal,
@@ -54,12 +49,6 @@ export default {
GlModal: GlModalDirective,
SafeHtml,
},
- mixins: [glFeatureFlagsMixin()],
- provide() {
- return {
- hasSections: this.hasSections,
- };
- },
inject: {
helpHtml: {
default: '',
@@ -80,9 +69,6 @@ export default {
isEditable() {
return this.propsSource.editable;
},
- isJira() {
- return this.propsSource.type === 'jira';
- },
isInstanceOrGroupLevel() {
return (
this.customState.integrationLevel === integrationLevels.INSTANCE ||
@@ -98,14 +84,11 @@ export default {
disableButtons() {
return Boolean(this.isSaving || this.isResetting || this.isTesting);
},
- sectionsEnabled() {
- return this.glFeatures.integrationFormSections;
- },
hasSections() {
- return this.sectionsEnabled && this.customState.sections.length !== 0;
+ return this.customState.sections.length !== 0;
},
fieldsWithoutSection() {
- return this.sectionsEnabled
+ return this.hasSections
? this.propsSource.fields.filter((field) => !field.section)
: this.propsSource.fields;
},
@@ -184,6 +167,9 @@ export default {
this.integrationActive = integrationActive;
},
},
+ descriptionHtmlConfig: {
+ ADD_ATTR: ['target'], // allow external links, can be removed after https://gitlab.com/gitlab-org/gitlab-ui/-/issues/1427 is implemented
+ },
helpHtmlConfig: {
ADD_ATTR: ['target'], // allow external links, can be removed after https://gitlab.com/gitlab-org/gitlab-ui/-/issues/1427 is implemented
ADD_TAGS: ['use'], // to support icon SVGs
@@ -229,7 +215,7 @@ export default {
<div class="row">
<div class="col-lg-4">
<h4 class="gl-mt-0">{{ section.title }}</h4>
- <p v-safe-html="section.description"></p>
+ <p v-safe-html:[$options.descriptionHtmlConfig]="section.description"></p>
</div>
<div class="col-lg-8">
@@ -257,14 +243,8 @@ export default {
:key="`${currentKey}-active-checkbox`"
@toggle-integration-active="onToggleIntegrationState"
/>
- <jira-trigger-fields
- v-if="isJira && !hasSections"
- :key="`${currentKey}-jira-trigger-fields`"
- v-bind="propsSource.triggerFieldsProps"
- :is-validated="isValidated"
- />
<trigger-fields
- v-else-if="propsSource.triggerEvents.length && !hasSections"
+ v-if="propsSource.triggerEvents.length && !hasSections"
:key="`${currentKey}-trigger-fields`"
:events="propsSource.triggerEvents"
:type="propsSource.type"
@@ -275,13 +255,6 @@ export default {
v-bind="field"
:is-validated="isValidated"
/>
- <jira-issues-fields
- v-if="isJira && !isInstanceOrGroupLevel && !hasSections"
- :key="`${currentKey}-jira-issues-fields`"
- v-bind="propsSource.jiraIssuesProps"
- :is-validated="isValidated"
- @request-jira-issue-types="onRequestJiraIssueTypes"
- />
</div>
</div>
diff --git a/app/assets/javascripts/integrations/edit/components/jira_issues_fields.vue b/app/assets/javascripts/integrations/edit/components/jira_issues_fields.vue
index 7cf8e11f162..f00339c92fa 100644
--- a/app/assets/javascripts/integrations/edit/components/jira_issues_fields.vue
+++ b/app/assets/javascripts/integrations/edit/components/jira_issues_fields.vue
@@ -1,5 +1,5 @@
<script>
-import { GlFormGroup, GlFormCheckbox, GlFormInput, GlSprintf, GlLink } from '@gitlab/ui';
+import { GlFormGroup, GlFormCheckbox, GlFormInput } from '@gitlab/ui';
import { mapGetters } from 'vuex';
import { s__, __ } from '~/locale';
import JiraUpgradeCta from './jira_upgrade_cta.vue';
@@ -10,17 +10,10 @@ export default {
GlFormGroup,
GlFormCheckbox,
GlFormInput,
- GlSprintf,
- GlLink,
JiraUpgradeCta,
JiraIssueCreationVulnerabilities: () =>
import('ee_component/integrations/edit/components/jira_issue_creation_vulnerabilities.vue'),
},
- inject: {
- hasSections: {
- default: false,
- },
- },
props: {
showJiraIssuesIntegration: {
type: Boolean,
@@ -52,21 +45,11 @@ export default {
required: false,
default: null,
},
- gitlabIssuesEnabled: {
- type: Boolean,
- required: false,
- default: true,
- },
upgradePlanPath: {
type: String,
required: false,
default: '',
},
- editProjectPath: {
- type: String,
- required: false,
- default: '',
- },
isValidated: {
type: Boolean,
required: false,
@@ -86,7 +69,6 @@ export default {
},
},
i18n: {
- sectionTitle: s__('JiraService|View Jira issues in GitLab'),
sectionDescription: s__(
'JiraService|Work on Jira issues without leaving GitLab. Add a Jira menu to access a read-only list of your Jira issues.',
),
@@ -97,89 +79,70 @@ export default {
projectKeyLabel: s__('JiraService|Jira project key'),
projectKeyPlaceholder: s__('JiraService|For example, AB'),
requiredFieldFeedback: __('This field is required.'),
- issueTrackerConflictWarning: s__(
- 'JiraService|Displaying Jira issues while leaving GitLab issues also enabled might be confusing. Consider %{linkStart}disabling GitLab issues%{linkEnd} if they won’t otherwise be used.',
- ),
},
};
</script>
<template>
<div>
- <gl-form-group
- :label="hasSections ? null : $options.i18n.sectionTitle"
- label-for="jira-issue-settings"
- >
- <div id="jira-issue-settings">
- <p v-if="!hasSections">
- {{ $options.i18n.sectionDescription }}
- </p>
- <template v-if="showJiraIssuesIntegration">
- <input name="service[issues_enabled]" type="hidden" :value="enableJiraIssues || false" />
- <gl-form-checkbox
- v-model="enableJiraIssues"
- :disabled="isInheriting"
- data-qa-selector="service_jira_issues_enabled_checkbox"
- >
- {{ $options.i18n.enableCheckboxLabel }}
- <template #help>
- {{ $options.i18n.enableCheckboxHelp }}
- </template>
- </gl-form-checkbox>
- <template v-if="enableJiraIssues">
- <jira-issue-creation-vulnerabilities
- :project-key="projectKey"
- :initial-is-enabled="initialEnableJiraVulnerabilities"
- :initial-issue-type-id="initialVulnerabilitiesIssuetype"
- :show-full-feature="showJiraVulnerabilitiesIntegration"
- data-testid="jira-for-vulnerabilities"
- @request-jira-issue-types="$emit('request-jira-issue-types')"
- />
- <jira-upgrade-cta
- v-if="!showJiraVulnerabilitiesIntegration"
- class="gl-mt-2 gl-ml-6"
- data-testid="ultimate-upgrade-cta"
- show-ultimate-message
- :upgrade-plan-path="upgradePlanPath"
- />
- </template>
+ <template v-if="showJiraIssuesIntegration">
+ <input name="service[issues_enabled]" type="hidden" :value="enableJiraIssues || false" />
+ <gl-form-checkbox
+ v-model="enableJiraIssues"
+ :disabled="isInheriting"
+ data-qa-selector="service_jira_issues_enabled_checkbox"
+ >
+ {{ $options.i18n.enableCheckboxLabel }}
+ <template #help>
+ {{ $options.i18n.enableCheckboxHelp }}
</template>
+ </gl-form-checkbox>
+
+ <div v-if="enableJiraIssues" class="gl-pl-6 gl-mt-3">
+ <gl-form-group
+ :label="$options.i18n.projectKeyLabel"
+ label-for="service_project_key"
+ :invalid-feedback="$options.i18n.requiredFieldFeedback"
+ :state="validProjectKey"
+ class="gl-max-w-26"
+ data-testid="project-key-form-group"
+ >
+ <gl-form-input
+ id="service_project_key"
+ v-model="projectKey"
+ name="service[project_key]"
+ data-qa-selector="service_jira_project_key_field"
+ :placeholder="$options.i18n.projectKeyPlaceholder"
+ :required="enableJiraIssues"
+ :state="validProjectKey"
+ :readonly="isInheriting"
+ />
+ </gl-form-group>
+
+ <jira-issue-creation-vulnerabilities
+ :project-key="projectKey"
+ :initial-is-enabled="initialEnableJiraVulnerabilities"
+ :initial-issue-type-id="initialVulnerabilitiesIssuetype"
+ :show-full-feature="showJiraVulnerabilitiesIntegration"
+ class="gl-mt-6"
+ data-testid="jira-for-vulnerabilities"
+ @request-jira-issue-types="$emit('request-jira-issue-types')"
+ />
<jira-upgrade-cta
- v-else
- class="gl-mt-2"
- data-testid="premium-upgrade-cta"
- show-premium-message
+ v-if="!showJiraVulnerabilitiesIntegration"
+ class="gl-mt-2 gl-ml-6"
+ data-testid="ultimate-upgrade-cta"
+ show-ultimate-message
:upgrade-plan-path="upgradePlanPath"
/>
</div>
- </gl-form-group>
- <template v-if="showJiraIssuesIntegration">
- <gl-form-group
- :label="$options.i18n.projectKeyLabel"
- label-for="service_project_key"
- :invalid-feedback="$options.i18n.requiredFieldFeedback"
- :state="validProjectKey"
- data-testid="project-key-form-group"
- >
- <gl-form-input
- id="service_project_key"
- v-model="projectKey"
- name="service[project_key]"
- data-qa-selector="service_jira_project_key_field"
- :placeholder="$options.i18n.projectKeyPlaceholder"
- :required="enableJiraIssues"
- :state="validProjectKey"
- :disabled="!enableJiraIssues"
- :readonly="isInheriting"
- />
- </gl-form-group>
- <p v-if="gitlabIssuesEnabled" data-testid="conflict-warning-text">
- <gl-sprintf :message="$options.i18n.issueTrackerConflictWarning">
- <template #link="{ content }">
- <gl-link :href="editProjectPath" target="_blank">{{ content }}</gl-link>
- </template>
- </gl-sprintf>
- </p>
</template>
+
+ <jira-upgrade-cta
+ v-else
+ data-testid="premium-upgrade-cta"
+ show-premium-message
+ :upgrade-plan-path="upgradePlanPath"
+ />
</div>
</template>
diff --git a/app/assets/javascripts/integrations/edit/components/jira_trigger_fields.vue b/app/assets/javascripts/integrations/edit/components/jira_trigger_fields.vue
index 3c06660e7c5..c7cbdff72e3 100644
--- a/app/assets/javascripts/integrations/edit/components/jira_trigger_fields.vue
+++ b/app/assets/javascripts/integrations/edit/components/jira_trigger_fields.vue
@@ -62,11 +62,6 @@ export default {
GlLink,
GlSprintf,
},
- inject: {
- hasSections: {
- default: false,
- },
- },
props: {
initialTriggerCommit: {
type: Boolean,
@@ -138,17 +133,7 @@ export default {
<template>
<div>
- <gl-form-group
- :label="hasSections ? null : __('Trigger')"
- label-for="service[trigger]"
- :description="
- hasSections
- ? null
- : s__(
- 'JiraService|When a Jira issue is mentioned in a commit or merge request, a remote link and comment (if enabled) will be created.',
- )
- "
- >
+ <div class="gl-mb-5">
<input name="service[commit_events]" type="hidden" :value="triggerCommit || false" />
<gl-form-checkbox v-model="triggerCommit" :disabled="isInheriting">
{{ __('Commit') }}
@@ -162,7 +147,7 @@ export default {
<gl-form-checkbox v-model="triggerMergeRequest" :disabled="isInheriting">
{{ __('Merge request') }}
</gl-form-checkbox>
- </gl-form-group>
+ </div>
<gl-form-group
v-show="showTriggerSettings"
diff --git a/app/assets/javascripts/integrations/edit/index.js b/app/assets/javascripts/integrations/edit/index.js
index 3e58dd0be99..9a9aae36657 100644
--- a/app/assets/javascripts/integrations/edit/index.js
+++ b/app/assets/javascripts/integrations/edit/index.js
@@ -1,9 +1,12 @@
import Vue from 'vue';
+import { GlToast } from '@gitlab/ui';
import { convertObjectPropsToCamelCase, parseBoolean } from '~/lib/utils/common_utils';
import IntegrationForm from './components/integration_form.vue';
import { createStore } from './store';
+Vue.use(GlToast);
+
function parseBooleanInData(data) {
const result = {};
Object.entries(data).forEach(([key, value]) => {
@@ -19,7 +22,6 @@ function parseDatasetToProps(data) {
commentDetail,
projectKey,
upgradePlanPath,
- editProjectPath,
learnMorePath,
triggerEvents,
sections,
@@ -49,7 +51,6 @@ function parseDatasetToProps(data) {
showJiraVulnerabilitiesIntegration,
enableJiraIssues,
enableJiraVulnerabilities,
- gitlabIssuesEnabled,
} = parseBooleanInData(booleanAttributes);
return {
@@ -78,9 +79,7 @@ function parseDatasetToProps(data) {
initialEnableJiraVulnerabilities: enableJiraVulnerabilities,
initialVulnerabilitiesIssuetype: vulnerabilitiesIssuetype,
initialProjectKey: projectKey,
- gitlabIssuesEnabled,
upgradePlanPath,
- editProjectPath,
},
learnMorePath,
triggerEvents: JSON.parse(triggerEvents),