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>2021-06-16 21:25:58 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2021-06-16 21:25:58 +0300
commita5f4bba440d7f9ea47046a0a561d49adf0a1e6d4 (patch)
treefb69158581673816a8cd895f9d352dcb3c678b1e /app/assets/javascripts/issue_show/components/edit_actions.vue
parentd16b2e8639e99961de6ddc93909f3bb5c1445ba1 (diff)
Add latest changes from gitlab-org/gitlab@14-0-stable-eev14.0.0-rc42
Diffstat (limited to 'app/assets/javascripts/issue_show/components/edit_actions.vue')
-rw-r--r--app/assets/javascripts/issue_show/components/edit_actions.vue138
1 files changed, 95 insertions, 43 deletions
diff --git a/app/assets/javascripts/issue_show/components/edit_actions.vue b/app/assets/javascripts/issue_show/components/edit_actions.vue
index 7733e366c4f..5b7d232fde7 100644
--- a/app/assets/javascripts/issue_show/components/edit_actions.vue
+++ b/app/assets/javascripts/issue_show/components/edit_actions.vue
@@ -1,17 +1,24 @@
<script>
-import { GlButton } from '@gitlab/ui';
+import { GlButton, GlModal, GlModalDirective } from '@gitlab/ui';
+import { uniqueId } from 'lodash';
import { __, sprintf } from '~/locale';
import eventHub from '../event_hub';
import updateMixin from '../mixins/update';
+import getIssueStateQuery from '../queries/get_issue_state.query.graphql';
const issuableTypes = {
issue: __('Issue'),
epic: __('Epic'),
+ incident: __('Incident'),
};
export default {
components: {
GlButton,
+ GlModal,
+ },
+ directives: {
+ GlModal: GlModalDirective,
},
mixins: [updateMixin],
props: {
@@ -36,19 +43,56 @@ export default {
data() {
return {
deleteLoading: false,
+ skipApollo: false,
+ issueState: {},
+ modalId: uniqueId('delete-issuable-modal-'),
};
},
+ apollo: {
+ issueState: {
+ query: getIssueStateQuery,
+ skip() {
+ return this.skipApollo;
+ },
+ result() {
+ this.skipApollo = true;
+ },
+ },
+ },
computed: {
+ deleteIssuableButtonText() {
+ return sprintf(__('Delete %{issuableType}'), {
+ issuableType: this.typeToShow.toLowerCase(),
+ });
+ },
+ deleteIssuableModalText() {
+ return this.issuableType === 'epic'
+ ? __('Delete this epic and all descendants?')
+ : sprintf(__('%{issuableType} will be removed! Are you sure?'), {
+ issuableType: this.typeToShow,
+ });
+ },
isSubmitEnabled() {
return this.formState.title.trim() !== '';
},
+ modalActionProps() {
+ return {
+ primary: {
+ text: this.deleteIssuableButtonText,
+ attributes: [{ variant: 'danger' }, { loading: this.deleteLoading }],
+ },
+ cancel: {
+ text: __('Cancel'),
+ },
+ };
+ },
shouldShowDeleteButton() {
return this.canDestroy && this.showDeleteButton;
},
- deleteIssuableButtonText() {
- return sprintf(__('Delete %{issuableType}'), {
- issuableType: issuableTypes[this.issuableType].toLowerCase(),
- });
+ typeToShow() {
+ const { issueState, issuableType } = this;
+ const type = issueState.issueType ?? issuableType;
+ return issuableTypes[type];
},
},
methods: {
@@ -56,49 +100,57 @@ export default {
eventHub.$emit('close.form');
},
deleteIssuable() {
- const confirmMessage =
- this.issuableType === 'epic'
- ? __('Delete this epic and all descendants?')
- : sprintf(__('%{issuableType} will be removed! Are you sure?'), {
- issuableType: issuableTypes[this.issuableType],
- });
- // eslint-disable-next-line no-alert
- if (window.confirm(confirmMessage)) {
- this.deleteLoading = true;
-
- eventHub.$emit('delete.issuable', { destroy_confirm: true });
- }
+ this.deleteLoading = true;
+ eventHub.$emit('delete.issuable', { destroy_confirm: true });
},
},
};
</script>
<template>
- <div class="gl-mt-3 gl-mb-3 clearfix">
- <gl-button
- :loading="formState.updateLoading"
- :disabled="formState.updateLoading || !isSubmitEnabled"
- category="primary"
- variant="confirm"
- class="float-left qa-save-button gl-mr-3"
- type="submit"
- @click.prevent="updateIssuable"
- >
- {{ __('Save changes') }}
- </gl-button>
- <gl-button @click="closeForm">
- {{ __('Cancel') }}
- </gl-button>
- <gl-button
- v-if="shouldShowDeleteButton"
- :loading="deleteLoading"
- :disabled="deleteLoading"
- category="secondary"
- variant="danger"
- class="float-right qa-delete-button"
- @click="deleteIssuable"
- >
- {{ deleteIssuableButtonText }}
- </gl-button>
+ <div class="gl-mt-3 gl-mb-3 gl-display-flex gl-justify-content-space-between">
+ <div>
+ <gl-button
+ :loading="formState.updateLoading"
+ :disabled="formState.updateLoading || !isSubmitEnabled"
+ category="primary"
+ variant="confirm"
+ class="qa-save-button gl-mr-3"
+ data-testid="issuable-save-button"
+ type="submit"
+ @click.prevent="updateIssuable"
+ >
+ {{ __('Save changes') }}
+ </gl-button>
+ <gl-button data-testid="issuable-cancel-button" @click="closeForm">
+ {{ __('Cancel') }}
+ </gl-button>
+ </div>
+ <div v-if="shouldShowDeleteButton">
+ <gl-button
+ v-gl-modal="modalId"
+ :loading="deleteLoading"
+ :disabled="deleteLoading"
+ category="secondary"
+ variant="danger"
+ class="qa-delete-button"
+ data-testid="issuable-delete-button"
+ >
+ {{ deleteIssuableButtonText }}
+ </gl-button>
+ <gl-modal
+ ref="removeModal"
+ :modal-id="modalId"
+ size="sm"
+ :action-primary="modalActionProps.primary"
+ :action-cancel="modalActionProps.cancel"
+ @primary="deleteIssuable"
+ >
+ <template #modal-title>{{ deleteIssuableButtonText }}</template>
+ <div>
+ <p class="gl-mb-1">{{ deleteIssuableModalText }}</p>
+ </div>
+ </gl-modal>
+ </div>
</div>
</template>