2022-04-05 06:08:25 +00:00
|
|
|
<script>
|
2022-08-12 18:11:09 +00:00
|
|
|
import {
|
|
|
|
GlDropdown,
|
|
|
|
GlDropdownItem,
|
|
|
|
GlDropdownDivider,
|
|
|
|
GlModal,
|
|
|
|
GlModalDirective,
|
|
|
|
} from '@gitlab/ui';
|
2022-04-05 06:08:25 +00:00
|
|
|
import { s__ } from '~/locale';
|
2022-05-11 15:07:26 +00:00
|
|
|
import Tracking from '~/tracking';
|
2022-08-25 06:11:18 +00:00
|
|
|
import {
|
|
|
|
sprintfWorkItem,
|
|
|
|
I18N_WORK_ITEM_DELETE,
|
|
|
|
I18N_WORK_ITEM_ARE_YOU_SURE_DELETE,
|
|
|
|
} from '../constants';
|
2022-04-05 06:08:25 +00:00
|
|
|
|
|
|
|
export default {
|
|
|
|
i18n: {
|
2022-08-12 18:11:09 +00:00
|
|
|
enableTaskConfidentiality: s__('WorkItem|Turn on confidentiality'),
|
|
|
|
disableTaskConfidentiality: s__('WorkItem|Turn off confidentiality'),
|
2022-04-05 06:08:25 +00:00
|
|
|
},
|
|
|
|
components: {
|
|
|
|
GlDropdown,
|
|
|
|
GlDropdownItem,
|
2022-08-12 18:11:09 +00:00
|
|
|
GlDropdownDivider,
|
2022-04-05 06:08:25 +00:00
|
|
|
GlModal,
|
|
|
|
},
|
|
|
|
directives: {
|
|
|
|
GlModal: GlModalDirective,
|
|
|
|
},
|
2022-05-11 15:07:26 +00:00
|
|
|
mixins: [Tracking.mixin({ label: 'actions_menu' })],
|
2022-04-05 06:08:25 +00:00
|
|
|
props: {
|
|
|
|
workItemId: {
|
|
|
|
type: String,
|
|
|
|
required: false,
|
|
|
|
default: null,
|
|
|
|
},
|
2022-08-25 06:11:18 +00:00
|
|
|
workItemType: {
|
|
|
|
type: String,
|
|
|
|
required: false,
|
|
|
|
default: null,
|
|
|
|
},
|
2022-08-12 18:11:09 +00:00
|
|
|
canUpdate: {
|
|
|
|
type: Boolean,
|
|
|
|
required: false,
|
|
|
|
default: false,
|
|
|
|
},
|
2022-04-28 09:08:26 +00:00
|
|
|
canDelete: {
|
2022-04-05 06:08:25 +00:00
|
|
|
type: Boolean,
|
|
|
|
required: false,
|
|
|
|
default: false,
|
|
|
|
},
|
2022-08-12 18:11:09 +00:00
|
|
|
isConfidential: {
|
|
|
|
type: Boolean,
|
|
|
|
required: false,
|
|
|
|
default: false,
|
|
|
|
},
|
|
|
|
isParentConfidential: {
|
|
|
|
type: Boolean,
|
|
|
|
required: false,
|
|
|
|
default: false,
|
|
|
|
},
|
2022-04-05 06:08:25 +00:00
|
|
|
},
|
2022-08-12 18:11:09 +00:00
|
|
|
emits: ['deleteWorkItem', 'toggleWorkItemConfidentiality'],
|
2022-08-25 06:11:18 +00:00
|
|
|
computed: {
|
|
|
|
i18n() {
|
|
|
|
return {
|
|
|
|
deleteWorkItem: sprintfWorkItem(I18N_WORK_ITEM_DELETE, this.workItemType),
|
|
|
|
areYouSureDelete: sprintfWorkItem(I18N_WORK_ITEM_ARE_YOU_SURE_DELETE, this.workItemType),
|
|
|
|
};
|
|
|
|
},
|
|
|
|
},
|
2022-04-05 06:08:25 +00:00
|
|
|
methods: {
|
2022-08-12 18:11:09 +00:00
|
|
|
handleToggleWorkItemConfidentiality() {
|
|
|
|
this.track('click_toggle_work_item_confidentiality');
|
|
|
|
this.$emit('toggleWorkItemConfidentiality', !this.isConfidential);
|
|
|
|
},
|
2022-05-11 15:07:26 +00:00
|
|
|
handleDeleteWorkItem() {
|
|
|
|
this.track('click_delete_work_item');
|
|
|
|
this.$emit('deleteWorkItem');
|
|
|
|
},
|
|
|
|
handleCancelDeleteWorkItem({ trigger }) {
|
|
|
|
if (trigger !== 'ok') {
|
|
|
|
this.track('cancel_delete_work_item');
|
|
|
|
}
|
2022-04-05 06:08:25 +00:00
|
|
|
},
|
|
|
|
},
|
|
|
|
};
|
|
|
|
</script>
|
|
|
|
|
|
|
|
<template>
|
2022-08-12 18:11:09 +00:00
|
|
|
<div>
|
2022-04-05 06:08:25 +00:00
|
|
|
<gl-dropdown
|
|
|
|
icon="ellipsis_v"
|
2022-08-25 06:11:18 +00:00
|
|
|
data-testid="work-item-actions-dropdown"
|
2022-04-05 06:08:25 +00:00
|
|
|
text-sr-only
|
|
|
|
:text="__('More actions')"
|
|
|
|
category="tertiary"
|
|
|
|
no-caret
|
|
|
|
right
|
|
|
|
>
|
2022-08-12 18:11:09 +00:00
|
|
|
<template v-if="canUpdate && !isParentConfidential">
|
|
|
|
<gl-dropdown-item
|
|
|
|
data-testid="confidentiality-toggle-action"
|
|
|
|
@click="handleToggleWorkItemConfidentiality"
|
|
|
|
>{{
|
|
|
|
isConfidential
|
|
|
|
? $options.i18n.disableTaskConfidentiality
|
|
|
|
: $options.i18n.enableTaskConfidentiality
|
|
|
|
}}</gl-dropdown-item
|
|
|
|
>
|
2022-08-16 21:12:07 +00:00
|
|
|
<gl-dropdown-divider v-if="canDelete" />
|
2022-08-12 18:11:09 +00:00
|
|
|
</template>
|
|
|
|
<gl-dropdown-item
|
|
|
|
v-if="canDelete"
|
|
|
|
v-gl-modal="'work-item-confirm-delete'"
|
|
|
|
data-testid="delete-action"
|
2022-08-25 06:11:18 +00:00
|
|
|
>{{ i18n.deleteWorkItem }}</gl-dropdown-item
|
2022-08-12 18:11:09 +00:00
|
|
|
>
|
2022-04-05 06:08:25 +00:00
|
|
|
</gl-dropdown>
|
|
|
|
<gl-modal
|
|
|
|
modal-id="work-item-confirm-delete"
|
2022-08-25 06:11:18 +00:00
|
|
|
:title="i18n.deleteWorkItem"
|
|
|
|
:ok-title="i18n.deleteWorkItem"
|
2022-04-05 06:08:25 +00:00
|
|
|
ok-variant="danger"
|
2022-05-11 15:07:26 +00:00
|
|
|
@ok="handleDeleteWorkItem"
|
|
|
|
@hide="handleCancelDeleteWorkItem"
|
2022-04-05 06:08:25 +00:00
|
|
|
>
|
2022-08-25 06:11:18 +00:00
|
|
|
{{ i18n.areYouSureDelete }}
|
2022-04-05 06:08:25 +00:00
|
|
|
</gl-modal>
|
|
|
|
</div>
|
|
|
|
</template>
|