diff options
Diffstat (limited to 'app/assets/javascripts/integrations/edit')
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), |