diff --git a/.rubocop_manual_todo.yml b/.rubocop_manual_todo.yml index 0541a788c67..d0079ae650e 100644 --- a/.rubocop_manual_todo.yml +++ b/.rubocop_manual_todo.yml @@ -1640,9 +1640,6 @@ Gitlab/NamespacedClass: - 'app/models/project_pages_metadatum.rb' - 'app/models/project_repository.rb' - 'app/models/project_repository_storage_move.rb' - - 'app/models/project_services/mock_monitoring_service.rb' - - 'app/models/project_services/monitoring_service.rb' - - 'app/models/project_services/prometheus_service.rb' - 'app/models/project_setting.rb' - 'app/models/project_snippet.rb' - 'app/models/project_statistics.rb' diff --git a/app/assets/javascripts/issuable_bulk_update_sidebar/components/status_select.vue b/app/assets/javascripts/issuable_bulk_update_sidebar/components/status_select.vue new file mode 100644 index 00000000000..9509399e91d --- /dev/null +++ b/app/assets/javascripts/issuable_bulk_update_sidebar/components/status_select.vue @@ -0,0 +1,58 @@ + + diff --git a/app/assets/javascripts/issuable_bulk_update_sidebar/constants.js b/app/assets/javascripts/issuable_bulk_update_sidebar/constants.js new file mode 100644 index 00000000000..ad15b25f9cf --- /dev/null +++ b/app/assets/javascripts/issuable_bulk_update_sidebar/constants.js @@ -0,0 +1,17 @@ +import { __ } from '~/locale'; + +export const ISSUE_STATUS_MODIFIERS = { + REOPEN: 'reopen', + CLOSE: 'close', +}; + +export const ISSUE_STATUS_SELECT_OPTIONS = [ + { + value: ISSUE_STATUS_MODIFIERS.REOPEN, + text: __('Open'), + }, + { + value: ISSUE_STATUS_MODIFIERS.CLOSE, + text: __('Closed'), + }, +]; diff --git a/app/assets/javascripts/issuable_bulk_update_sidebar/init_issue_status_select.js b/app/assets/javascripts/issuable_bulk_update_sidebar/init_issue_status_select.js new file mode 100644 index 00000000000..43179a86d70 --- /dev/null +++ b/app/assets/javascripts/issuable_bulk_update_sidebar/init_issue_status_select.js @@ -0,0 +1,17 @@ +import Vue from 'vue'; +import StatusSelect from './components/status_select.vue'; + +export default function initIssueStatusSelect() { + const el = document.querySelector('.js-issue-status'); + + if (!el) { + return null; + } + + return new Vue({ + el, + render(h) { + return h(StatusSelect); + }, + }); +} diff --git a/app/assets/javascripts/issuable_bulk_update_actions.js b/app/assets/javascripts/issuable_bulk_update_sidebar/issuable_bulk_update_actions.js similarity index 97% rename from app/assets/javascripts/issuable_bulk_update_actions.js rename to app/assets/javascripts/issuable_bulk_update_sidebar/issuable_bulk_update_actions.js index 911533457ac..463e0e5837e 100644 --- a/app/assets/javascripts/issuable_bulk_update_actions.js +++ b/app/assets/javascripts/issuable_bulk_update_sidebar/issuable_bulk_update_actions.js @@ -1,8 +1,8 @@ import $ from 'jquery'; import { difference, intersection, union } from 'lodash'; -import createFlash from './flash'; -import axios from './lib/utils/axios_utils'; -import { __ } from './locale'; +import createFlash from '~/flash'; +import axios from '~/lib/utils/axios_utils'; +import { __ } from '~/locale'; export default { init({ form, issues, prefixId } = {}) { diff --git a/app/assets/javascripts/issuable_bulk_update_sidebar.js b/app/assets/javascripts/issuable_bulk_update_sidebar/issuable_bulk_update_sidebar.js similarity index 94% rename from app/assets/javascripts/issuable_bulk_update_sidebar.js rename to app/assets/javascripts/issuable_bulk_update_sidebar/issuable_bulk_update_sidebar.js index 97d50dde9f7..a9d4548f8cf 100644 --- a/app/assets/javascripts/issuable_bulk_update_sidebar.js +++ b/app/assets/javascripts/issuable_bulk_update_sidebar/issuable_bulk_update_sidebar.js @@ -2,11 +2,12 @@ import $ from 'jquery'; import { property } from 'lodash'; + +import issueableEventHub from '~/issues_list/eventhub'; +import LabelsSelect from '~/labels_select'; +import MilestoneSelect from '~/milestone_select'; +import initIssueStatusSelect from './init_issue_status_select'; import IssuableBulkUpdateActions from './issuable_bulk_update_actions'; -import issueStatusSelect from './issue_status_select'; -import issueableEventHub from './issues_list/eventhub'; -import LabelsSelect from './labels_select'; -import MilestoneSelect from './milestone_select'; import subscriptionSelect from './subscription_select'; const HIDDEN_CLASS = 'hidden'; @@ -29,7 +30,7 @@ export default class IssuableBulkUpdateSidebar { this.$sidebar = $('.right-sidebar'); this.$sidebarInnerContainer = this.$sidebar.find('.issuable-sidebar'); this.$bulkEditCancelBtn = $('.js-bulk-update-menu-hide'); - this.$bulkEditSubmitBtn = $('.update-selected-issues'); + this.$bulkEditSubmitBtn = $('.js-update-selected-issues'); this.$bulkUpdateEnableBtn = $('.js-bulk-update-toggle'); this.$otherFilters = $('.issues-other-filters'); this.$checkAllContainer = $('.check-all-holder'); @@ -56,7 +57,7 @@ export default class IssuableBulkUpdateSidebar { initDropdowns() { new LabelsSelect(); new MilestoneSelect(); - issueStatusSelect(); + initIssueStatusSelect(); subscriptionSelect(); if (IS_EE) { diff --git a/app/assets/javascripts/issuable_init_bulk_update_sidebar.js b/app/assets/javascripts/issuable_bulk_update_sidebar/issuable_init_bulk_update_sidebar.js similarity index 100% rename from app/assets/javascripts/issuable_init_bulk_update_sidebar.js rename to app/assets/javascripts/issuable_bulk_update_sidebar/issuable_init_bulk_update_sidebar.js diff --git a/app/assets/javascripts/subscription_select.js b/app/assets/javascripts/issuable_bulk_update_sidebar/subscription_select.js similarity index 96% rename from app/assets/javascripts/subscription_select.js rename to app/assets/javascripts/issuable_bulk_update_sidebar/subscription_select.js index 4a688d819b0..b12ac776b4f 100644 --- a/app/assets/javascripts/subscription_select.js +++ b/app/assets/javascripts/issuable_bulk_update_sidebar/subscription_select.js @@ -1,6 +1,6 @@ import $ from 'jquery'; import initDeprecatedJQueryDropdown from '~/deprecated_jquery_dropdown'; -import { __ } from './locale'; +import { __ } from '~/locale'; export default function subscriptionSelect() { $('.js-subscription-event').each((i, element) => { diff --git a/app/assets/javascripts/issuable_index.js b/app/assets/javascripts/issuable_index.js index cdeee68b762..5a57da292a0 100644 --- a/app/assets/javascripts/issuable_index.js +++ b/app/assets/javascripts/issuable_index.js @@ -1,4 +1,4 @@ -import issuableInitBulkUpdateSidebar from './issuable_init_bulk_update_sidebar'; +import issuableInitBulkUpdateSidebar from '~/issuable_bulk_update_sidebar/issuable_init_bulk_update_sidebar'; export default class IssuableIndex { constructor(pagePrefix = 'issuable_') { diff --git a/app/assets/javascripts/issue_status_select.js b/app/assets/javascripts/issue_status_select.js deleted file mode 100644 index 2ede0837930..00000000000 --- a/app/assets/javascripts/issue_status_select.js +++ /dev/null @@ -1,27 +0,0 @@ -import $ from 'jquery'; -import initDeprecatedJQueryDropdown from '~/deprecated_jquery_dropdown'; -import { __ } from './locale'; - -export default function issueStatusSelect() { - $('.js-issue-status').each((i, el) => { - const fieldName = $(el).data('fieldName'); - initDeprecatedJQueryDropdown($(el), { - selectable: true, - fieldName, - toggleLabel(selected, element, instance) { - let label = __('Author'); - const $item = instance.dropdown.find('.is-active'); - if ($item.length) { - label = $item.text(); - } - return label; - }, - clicked(options) { - return options.e.preventDefault(); - }, - id(obj, element) { - return $(element).data('id'); - }, - }); - }); -} diff --git a/app/assets/javascripts/issues_list/components/issues_list_app.vue b/app/assets/javascripts/issues_list/components/issues_list_app.vue index dbf7717b248..921af766796 100644 --- a/app/assets/javascripts/issues_list/components/issues_list_app.vue +++ b/app/assets/javascripts/issues_list/components/issues_list_app.vue @@ -450,7 +450,9 @@ export default { }, async handleBulkUpdateClick() { if (!this.hasInitBulkEdit) { - const initBulkUpdateSidebar = await import('~/issuable_init_bulk_update_sidebar'); + const initBulkUpdateSidebar = await import( + '~/issuable_bulk_update_sidebar/issuable_init_bulk_update_sidebar' + ); initBulkUpdateSidebar.default.init('issuable_'); const usersSelect = await import('~/users_select'); diff --git a/app/assets/javascripts/labels_select.js b/app/assets/javascripts/labels_select.js index 3df806161f7..a62ab301227 100644 --- a/app/assets/javascripts/labels_select.js +++ b/app/assets/javascripts/labels_select.js @@ -5,11 +5,11 @@ import $ from 'jquery'; import { difference, isEqual, escape, sortBy, template, union } from 'lodash'; import initDeprecatedJQueryDropdown from '~/deprecated_jquery_dropdown'; +import IssuableBulkUpdateActions from '~/issuable_bulk_update_sidebar/issuable_bulk_update_actions'; import { isScopedLabel } from '~/lib/utils/common_utils'; import boardsStore from './boards/stores/boards_store'; import CreateLabelDropdown from './create_label'; import createFlash from './flash'; -import IssuableBulkUpdateActions from './issuable_bulk_update_actions'; import axios from './lib/utils/axios_utils'; import { sprintf, __ } from './locale'; diff --git a/app/assets/javascripts/pages/groups/issues/index.js b/app/assets/javascripts/pages/groups/issues/index.js index 76db578f6f9..342c054471d 100644 --- a/app/assets/javascripts/pages/groups/issues/index.js +++ b/app/assets/javascripts/pages/groups/issues/index.js @@ -1,5 +1,5 @@ import IssuableFilteredSearchTokenKeys from 'ee_else_ce/filtered_search/issuable_filtered_search_token_keys'; -import issuableInitBulkUpdateSidebar from '~/issuable_init_bulk_update_sidebar'; +import issuableInitBulkUpdateSidebar from '~/issuable_bulk_update_sidebar/issuable_init_bulk_update_sidebar'; import { mountIssuablesListApp } from '~/issues_list'; import initManualOrdering from '~/manual_ordering'; import { FILTERED_SEARCH } from '~/pages/constants'; diff --git a/app/assets/javascripts/pages/groups/merge_requests/index.js b/app/assets/javascripts/pages/groups/merge_requests/index.js index 2f6f9bb16e1..02a0a50f984 100644 --- a/app/assets/javascripts/pages/groups/merge_requests/index.js +++ b/app/assets/javascripts/pages/groups/merge_requests/index.js @@ -1,6 +1,6 @@ import addExtraTokensForMergeRequests from 'ee_else_ce/filtered_search/add_extra_tokens_for_merge_requests'; import IssuableFilteredSearchTokenKeys from '~/filtered_search/issuable_filtered_search_token_keys'; -import issuableInitBulkUpdateSidebar from '~/issuable_init_bulk_update_sidebar'; +import issuableInitBulkUpdateSidebar from '~/issuable_bulk_update_sidebar/issuable_init_bulk_update_sidebar'; import { FILTERED_SEARCH } from '~/pages/constants'; import initFilteredSearch from '~/pages/search/init_filtered_search'; import projectSelect from '~/project_select'; diff --git a/app/assets/javascripts/vue_shared/security_reports/components/artifact_downloads/merge_request_artifact_download.vue b/app/assets/javascripts/vue_shared/security_reports/components/artifact_downloads/merge_request_artifact_download.vue index 8fdc5ca78db..f3dd26b02cb 100644 --- a/app/assets/javascripts/vue_shared/security_reports/components/artifact_downloads/merge_request_artifact_download.vue +++ b/app/assets/javascripts/vue_shared/security_reports/components/artifact_downloads/merge_request_artifact_download.vue @@ -76,6 +76,7 @@ export default {