diff --git a/app/assets/javascripts/work_items/components/work_item_list_actions.vue b/app/assets/javascripts/work_items/components/work_item_list_actions.vue index a810c246e3bc18158492356feb9cd6690990d1fd..8ae810a0ee1ba865facbf1db6c58c47f4f52bcdb 100644 --- a/app/assets/javascripts/work_items/components/work_item_list_actions.vue +++ b/app/assets/javascripts/work_items/components/work_item_list_actions.vue @@ -3,20 +3,32 @@ import { GlDisclosureDropdown, GlDisclosureDropdownGroup, GlDisclosureDropdownItem, + GlModalDirective, GlTooltipDirective, } from '@gitlab/ui'; -import { __ } from '~/locale'; +import { s__, __ } from '~/locale'; +import WorkItemCsvExportModal from './work_items_csv_export_modal.vue'; export default { + exportModalId: 'work-item-export-modal', components: { GlDisclosureDropdownItem, GlDisclosureDropdown, GlDisclosureDropdownGroup, + WorkItemCsvExportModal, + }, + i18n: { + exportAsCSV: s__('WorkItem|Export as CSV'), + importFromJira: s__('WorkItem|Import from Jira'), }, directives: { + GlModal: GlModalDirective, GlTooltip: GlTooltipDirective, }, inject: { + showExportButton: { + default: false, + }, projectImportJiraPath: { default: null, }, @@ -27,13 +39,43 @@ export default { default: null, }, }, + props: { + workItemCount: { + type: Number, + required: false, + default: undefined, + }, + queryVariables: { + type: Object, + required: false, + default: () => ({}), + }, + showImportExportButtons: { + type: Boolean, + required: false, + default: false, + }, + }, + data() { + return { + showTooltip: false, + }; + }, computed: { importFromJira() { return { - text: __('Import from Jira'), + text: this.$options.i18n.importFromJira, href: this.projectImportJiraPath, }; }, + exportAsCSV() { + return { + text: this.$options.i18n.exportAsCSV, + }; + }, + dropdownTooltip() { + return !this.showTooltip ? __('Actions') : ''; + }, subscribeDropdownOptions() { return { items: [ @@ -53,8 +95,19 @@ export default { hasSubscriptionOptions() { return this.rssPath || this.calendarPath; }, + hasImportExportOptions() { + return this.showImportExportButtons && (this.projectImportJiraPath || this.showExportButton); + }, shouldShowDropdown() { - return this.projectImportJiraPath || this.hasSubscriptionOptions; + return this.hasImportExportOptions || this.hasSubscriptionOptions; + }, + }, + methods: { + showDropdown() { + this.showTooltip = true; + }, + hideDropdown() { + this.showTooltip = false; }, }, }; @@ -63,23 +116,43 @@ export default {