diff options
Diffstat (limited to 'app/assets/javascripts/integrations/edit/components/integration_form.vue')
-rw-r--r-- | app/assets/javascripts/integrations/edit/components/integration_form.vue | 82 |
1 files changed, 49 insertions, 33 deletions
diff --git a/app/assets/javascripts/integrations/edit/components/integration_form.vue b/app/assets/javascripts/integrations/edit/components/integration_form.vue index ef7a4d44b20..5088664c3bd 100644 --- a/app/assets/javascripts/integrations/edit/components/integration_form.vue +++ b/app/assets/javascripts/integrations/edit/components/integration_form.vue @@ -1,58 +1,74 @@ <script> +import { mapState, mapActions, mapGetters } from 'vuex'; +import glFeatureFlagsMixin from '~/vue_shared/mixins/gl_feature_flags_mixin'; + +import OverrideDropdown from './override_dropdown.vue'; import ActiveToggle from './active_toggle.vue'; import JiraTriggerFields from './jira_trigger_fields.vue'; +import JiraIssuesFields from './jira_issues_fields.vue'; import TriggerFields from './trigger_fields.vue'; import DynamicField from './dynamic_field.vue'; export default { name: 'IntegrationForm', components: { + OverrideDropdown, ActiveToggle, JiraTriggerFields, + JiraIssuesFields, TriggerFields, DynamicField, }, - props: { - activeToggleProps: { - type: Object, - required: true, - }, - showActive: { - type: Boolean, - required: true, - }, - triggerFieldsProps: { - type: Object, - required: true, - }, - triggerEvents: { - type: Array, - required: false, - default: () => [], - }, - fields: { - type: Array, - required: false, - default: () => [], - }, - type: { - type: String, - required: true, - }, - }, + mixins: [glFeatureFlagsMixin()], computed: { + ...mapGetters(['currentKey', 'propsSource']), + ...mapState(['adminState', 'override']), isJira() { - return this.type === 'jira'; + return this.propsSource.type === 'jira'; }, + showJiraIssuesFields() { + return this.isJira && this.glFeatures.jiraIssuesIntegration; + }, + }, + methods: { + ...mapActions(['setOverride']), }, }; </script> <template> <div> - <active-toggle v-if="showActive" v-bind="activeToggleProps" /> - <jira-trigger-fields v-if="isJira" v-bind="triggerFieldsProps" /> - <trigger-fields v-else-if="triggerEvents.length" :events="triggerEvents" :type="type" /> - <dynamic-field v-for="field in fields" :key="field.name" v-bind="field" /> + <override-dropdown + v-if="adminState !== null" + :inherit-from-id="adminState.id" + :override="override" + @change="setOverride" + /> + <active-toggle + v-if="propsSource.showActive" + :key="`${currentKey}-active-toggle`" + v-bind="propsSource.activeToggleProps" + /> + <jira-trigger-fields + v-if="isJira" + :key="`${currentKey}-jira-trigger-fields`" + v-bind="propsSource.triggerFieldsProps" + /> + <trigger-fields + v-else-if="propsSource.triggerEvents.length" + :key="`${currentKey}-trigger-fields`" + :events="propsSource.triggerEvents" + :type="propsSource.type" + /> + <dynamic-field + v-for="field in propsSource.fields" + :key="`${currentKey}-${field.name}`" + v-bind="field" + /> + <jira-issues-fields + v-if="showJiraIssuesFields" + :key="`${currentKey}-jira-issues-fields`" + v-bind="propsSource.jiraIssuesProps" + /> </div> </template> |