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:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-05-14 18:08:14 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2020-05-14 18:08:14 +0300
commit87f286558de1f5790b0b1742f10548387b5d147a (patch)
treec483d5f3542094d2123c8116ffee22430d9ad9c9 /app/assets/javascripts/integrations
parent674e7e2c3d295704bdf504dd0caa2e5a2d9b5cd2 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/assets/javascripts/integrations')
-rw-r--r--app/assets/javascripts/integrations/edit/components/integration_form.vue8
-rw-r--r--app/assets/javascripts/integrations/edit/components/trigger_fields.vue73
-rw-r--r--app/assets/javascripts/integrations/edit/index.js3
3 files changed, 83 insertions, 1 deletions
diff --git a/app/assets/javascripts/integrations/edit/components/integration_form.vue b/app/assets/javascripts/integrations/edit/components/integration_form.vue
index ab6a3f97bfd..fbe58c30b13 100644
--- a/app/assets/javascripts/integrations/edit/components/integration_form.vue
+++ b/app/assets/javascripts/integrations/edit/components/integration_form.vue
@@ -1,12 +1,14 @@
<script>
import ActiveToggle from './active_toggle.vue';
import JiraTriggerFields from './jira_trigger_fields.vue';
+import TriggerFields from './trigger_fields.vue';
export default {
name: 'IntegrationForm',
components: {
ActiveToggle,
JiraTriggerFields,
+ TriggerFields,
},
props: {
activeToggleProps: {
@@ -21,6 +23,11 @@ export default {
type: Object,
required: true,
},
+ triggerEvents: {
+ type: Array,
+ required: false,
+ default: () => [],
+ },
type: {
type: String,
required: true,
@@ -38,5 +45,6 @@ export default {
<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" />
</div>
</template>
diff --git a/app/assets/javascripts/integrations/edit/components/trigger_fields.vue b/app/assets/javascripts/integrations/edit/components/trigger_fields.vue
new file mode 100644
index 00000000000..531490ae40c
--- /dev/null
+++ b/app/assets/javascripts/integrations/edit/components/trigger_fields.vue
@@ -0,0 +1,73 @@
+<script>
+import { startCase } from 'lodash';
+import { __ } from '~/locale';
+import { GlFormGroup, GlFormCheckbox, GlFormInput } from '@gitlab/ui';
+
+const typeWithPlaceholder = {
+ SLACK: 'slack',
+ MATTERMOST: 'mattermost',
+};
+
+const placeholderForType = {
+ [typeWithPlaceholder.SLACK]: __('Slack channels (e.g. general, development)'),
+ [typeWithPlaceholder.MATTERMOST]: __('Channel handle (e.g. town-square)'),
+};
+
+export default {
+ name: 'TriggerFields',
+ components: {
+ GlFormGroup,
+ GlFormCheckbox,
+ GlFormInput,
+ },
+ props: {
+ events: {
+ type: Array,
+ required: false,
+ default: null,
+ },
+ type: {
+ type: String,
+ required: true,
+ },
+ },
+ computed: {
+ placeholder() {
+ return placeholderForType[this.type];
+ },
+ },
+ methods: {
+ checkboxName(name) {
+ return `service[${name}]`;
+ },
+ fieldName(name) {
+ return `service[${name}]`;
+ },
+ startCase,
+ },
+};
+</script>
+
+<template>
+ <gl-form-group
+ class="gl-pt-3"
+ :label="__('Trigger')"
+ label-for="trigger-fields"
+ data-testid="trigger-fields-group"
+ >
+ <div id="trigger-fields" class="gl-pt-3">
+ <gl-form-group v-for="event in events" :key="event.title" :description="event.description">
+ <input :name="checkboxName(event.name)" type="hidden" value="false" />
+ <gl-form-checkbox v-model="event.value" :name="checkboxName(event.name)">
+ {{ startCase(event.title) }}
+ </gl-form-checkbox>
+ <gl-form-input
+ v-if="event.field"
+ v-model="event.field.value"
+ :name="fieldName(event.field.name)"
+ :placeholder="placeholder"
+ />
+ </gl-form-group>
+ </div>
+ </gl-form-group>
+</template>
diff --git a/app/assets/javascripts/integrations/edit/index.js b/app/assets/javascripts/integrations/edit/index.js
index 7b476528a33..2ae1342a558 100644
--- a/app/assets/javascripts/integrations/edit/index.js
+++ b/app/assets/javascripts/integrations/edit/index.js
@@ -15,7 +15,7 @@ export default el => {
return result;
}
- const { type, commentDetail, ...booleanAttributes } = el.dataset;
+ const { type, commentDetail, triggerEvents, ...booleanAttributes } = el.dataset;
const {
showActive,
activated,
@@ -40,6 +40,7 @@ export default el => {
initialEnableComments: enableComments,
initialCommentDetail: commentDetail,
},
+ triggerEvents: JSON.parse(triggerEvents),
},
});
},