summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/integrations/edit/components/jira_issues_fields.vue
diff options
context:
space:
mode:
Diffstat (limited to 'app/assets/javascripts/integrations/edit/components/jira_issues_fields.vue')
-rw-r--r--app/assets/javascripts/integrations/edit/components/jira_issues_fields.vue151
1 files changed, 151 insertions, 0 deletions
diff --git a/app/assets/javascripts/integrations/edit/components/jira_issues_fields.vue b/app/assets/javascripts/integrations/edit/components/jira_issues_fields.vue
new file mode 100644
index 00000000000..5444cd5a712
--- /dev/null
+++ b/app/assets/javascripts/integrations/edit/components/jira_issues_fields.vue
@@ -0,0 +1,151 @@
+<script>
+import eventHub from '../event_hub';
+import {
+ GlFormGroup,
+ GlFormCheckbox,
+ GlFormInput,
+ GlSprintf,
+ GlLink,
+ GlButton,
+ GlCard,
+} from '@gitlab/ui';
+
+export default {
+ name: 'JiraIssuesFields',
+ components: {
+ GlFormGroup,
+ GlFormCheckbox,
+ GlFormInput,
+ GlSprintf,
+ GlLink,
+ GlButton,
+ GlCard,
+ },
+ props: {
+ showJiraIssuesIntegration: {
+ type: Boolean,
+ required: false,
+ default: false,
+ },
+ initialEnableJiraIssues: {
+ type: Boolean,
+ required: false,
+ default: null,
+ },
+ initialProjectKey: {
+ type: String,
+ required: false,
+ default: null,
+ },
+ upgradePlanPath: {
+ type: String,
+ required: false,
+ default: null,
+ },
+ editProjectPath: {
+ type: String,
+ required: false,
+ default: null,
+ },
+ },
+ data() {
+ return {
+ enableJiraIssues: this.initialEnableJiraIssues,
+ projectKey: this.initialProjectKey,
+ validated: false,
+ };
+ },
+ computed: {
+ validProjectKey() {
+ return !this.enableJiraIssues || Boolean(this.projectKey) || !this.validated;
+ },
+ },
+ created() {
+ eventHub.$on('validateForm', this.validateForm);
+ },
+ beforeDestroy() {
+ eventHub.$off('validateForm', this.validateForm);
+ },
+ methods: {
+ validateForm() {
+ this.validated = true;
+ },
+ },
+};
+</script>
+
+<template>
+ <div>
+ <gl-form-group
+ :label="s__('JiraService|View Jira issues in GitLab')"
+ label-for="jira-issue-settings"
+ >
+ <div id="jira-issue-settings">
+ <p>
+ {{
+ s__(
+ 'JiraService|Work on Jira issues without leaving GitLab. Adds a Jira menu to access your list of Jira issues and view any issue as read-only.',
+ )
+ }}
+ </p>
+ <template v-if="showJiraIssuesIntegration">
+ <input name="service[issues_enabled]" type="hidden" :value="enableJiraIssues || false" />
+ <gl-form-checkbox v-model="enableJiraIssues">
+ {{ s__('JiraService|Enable Jira issues') }}
+ <template #help>
+ {{
+ s__(
+ 'JiraService|Warning: All GitLab users that have access to this GitLab project will be able to view all issues from the Jira project specified below.',
+ )
+ }}
+ </template>
+ </gl-form-checkbox>
+ </template>
+ <gl-card v-else class="gl-mt-7">
+ <strong>{{ __('This is a Premium feature') }}</strong>
+ <p>{{ __('Upgrade your plan to enable this feature of the Jira Integration.') }}</p>
+ <gl-button
+ v-if="upgradePlanPath"
+ category="primary"
+ variant="info"
+ :href="upgradePlanPath"
+ target="_blank"
+ >
+ {{ __('Upgrade your plan') }}
+ </gl-button>
+ </gl-card>
+ </div>
+ </gl-form-group>
+ <template v-if="showJiraIssuesIntegration">
+ <gl-form-group
+ :label="s__('JiraService|Jira project key')"
+ label-for="service_project_key"
+ :invalid-feedback="__('This field is required.')"
+ :state="validProjectKey"
+ >
+ <gl-form-input
+ id="service_project_key"
+ v-model="projectKey"
+ name="service[project_key]"
+ :placeholder="s__('JiraService|e.g. AB')"
+ :required="enableJiraIssues"
+ :state="validProjectKey"
+ :disabled="!enableJiraIssues"
+ />
+ </gl-form-group>
+ <p>
+ <gl-sprintf
+ :message="
+ s__(
+ 'JiraService|Displaying Jira issues while leaving the GitLab issue functionality enabled might be confusing. Consider %{linkStart}disabling GitLab issues%{linkEnd} if they won’t otherwise be used.',
+ )
+ "
+ >
+ <template #link="{ content }">
+ <gl-link :href="editProjectPath" target="_blank">{{ content }}</gl-link>
+ </template>
+ </gl-sprintf>
+ </p>
+ </template>
+ </div>
+</template>