diff --git a/.rubocop_todo/layout/line_length.yml b/.rubocop_todo/layout/line_length.yml index 669ab00c976b288fb5f0365acb684a5e2b1cdf86..7e96fb47e13277f955850f228bc5eaf22e501c10 100644 --- a/.rubocop_todo/layout/line_length.yml +++ b/.rubocop_todo/layout/line_length.yml @@ -2399,7 +2399,6 @@ Layout/LineLength: - 'spec/features/boards/board_filters_spec.rb' - 'spec/features/boards/boards_spec.rb' - 'spec/features/boards/issue_ordering_spec.rb' - - 'spec/features/boards/multi_select_spec.rb' - 'spec/features/boards/sidebar_assignee_spec.rb' - 'spec/features/boards/sidebar_labels_spec.rb' - 'spec/features/boards/user_visits_board_spec.rb' diff --git a/.rubocop_todo/rspec/pending_without_reason.yml b/.rubocop_todo/rspec/pending_without_reason.yml index 8fa2271e9bd6d8f1dada58dfbcdcd5c5794311ab..0d7b9ab3d385e9a859c3e759b27c2be9ac092289 100644 --- a/.rubocop_todo/rspec/pending_without_reason.yml +++ b/.rubocop_todo/rspec/pending_without_reason.yml @@ -12,7 +12,6 @@ RSpec/PendingWithoutReason: - 'ee/spec/support/shared_examples/models/vulnerabilities/cvss_vector_validator_shared_examples.rb' - 'qa/qa/specs/features/api/8_monitor/metrics_spec.rb' - 'spec/controllers/projects/issues_controller_spec.rb' - - 'spec/features/boards/multi_select_spec.rb' - 'spec/features/issues/create_issue_for_single_discussion_in_merge_request_spec.rb' - 'spec/features/merge_request/user_merges_merge_request_spec.rb' - 'spec/features/merge_request/user_resolves_conflicts_spec.rb' diff --git a/app/assets/javascripts/boards/components/board_card.vue b/app/assets/javascripts/boards/components/board_card.vue index 36532c31e7ba227f82ca14d2b60a531b178acb01..ce990e85dd8d76d557e9e59ad4d0758132b21c3d 100644 --- a/app/assets/javascripts/boards/components/board_card.vue +++ b/app/assets/javascripts/boards/components/board_card.vue @@ -4,9 +4,6 @@ import { getIdFromGraphQLId } from '~/graphql_shared/utils'; import { visitUrl } from '~/lib/utils/url_utility'; import { sprintf, __ } from '~/locale'; import { WORK_ITEM_TYPE_ENUM_INCIDENT } from '~/work_items/constants'; -import setSelectedBoardItemsMutation from '~/boards/graphql/client/set_selected_board_items.mutation.graphql'; -import unsetSelectedBoardItemsMutation from '~/boards/graphql/client/unset_selected_board_items.mutation.graphql'; -import selectedBoardItemsQuery from '~/boards/graphql/client/selected_board_items.query.graphql'; import setActiveBoardItemMutation from 'ee_else_ce/boards/graphql/client/set_active_board_item.mutation.graphql'; import activeBoardItemQuery from 'ee_else_ce/boards/graphql/client/active_board_item.query.graphql'; import BoardCardInner from './board_card_inner.vue'; @@ -65,10 +62,6 @@ export default { }; }, }, - // eslint-disable-next-line @gitlab/vue-no-undef-apollo-properties - selectedBoardItems: { - query: selectedBoardItemsQuery, - }, }, computed: { activeItemId() { @@ -77,9 +70,6 @@ export default { isActive() { return this.item.id === this.activeItemId; }, - multiSelectVisible() { - return !this.activeItemId && this.selectedBoardItems?.includes(this.item.id); - }, isDisabled() { return this.disabled || !this.item.id || this.item.isLoading || !this.canAdmin; }, @@ -100,7 +90,7 @@ export default { }; }, showFocusBackground() { - return !this.isActive && !this.multiSelectVisible; + return !this.isActive; }, itemPrefix() { return this.isEpicBoard ? '&' : '#'; @@ -123,9 +113,8 @@ export default { // Allow Ctrl/Cmd+click to open link in new tab const isMetaKey = e.ctrlKey || e.metaKey; - const boardMultiSelectEnabled = gon?.features?.boardMultiSelect; - if (isMetaKey && !boardMultiSelectEnabled) { + if (isMetaKey) { // Let the browser handle the new tab open return; } @@ -139,18 +128,11 @@ export default { return; } - if (isMetaKey && boardMultiSelectEnabled) { - this.toggleBoardItemMultiSelection(this.item); - } else { - this.$el.querySelector('.board-card-button')?.focus(); - this.toggleItem(); - this.track('click_card', { label: 'right_sidebar' }); - } + this.$el.querySelector('.board-card-button')?.focus(); + this.toggleItem(); + this.track('click_card', { label: 'right_sidebar' }); }, async toggleItem() { - await this.$apollo.mutate({ - mutation: unsetSelectedBoardItemsMutation, - }); this.$apollo.mutate({ mutation: setActiveBoardItemMutation, variables: { @@ -160,26 +142,6 @@ export default { }, }); }, - async toggleBoardItemMultiSelection(item) { - if (this.activeItemId) { - await this.$apollo.mutate({ - mutation: setSelectedBoardItemsMutation, - variables: { - itemId: this.activeItemId, - }, - }); - await this.$apollo.mutate({ - mutation: setActiveBoardItemMutation, - variables: { boardItem: null, listId: null }, - }); - } - this.$apollo.mutate({ - mutation: setSelectedBoardItemsMutation, - variables: { - itemId: item.id, - }, - }); - }, changeFocusInColumn(currentCard, i) { // Building a list using data-col-index instead of just traversing the ul is necessary for swimlanes const columnCards = [ @@ -240,7 +202,6 @@ export default {
  • { Vue.use(VueApollo); const mockSetActiveBoardItemResolver = jest.fn(); - const mockSetSelectedBoardItemsResolver = jest.fn(); const mockApollo = createMockApollo([], { Mutation: { setActiveBoardItem: mockSetActiveBoardItemResolver, - setSelectedBoardItems: mockSetSelectedBoardItemsResolver, }, }); @@ -37,7 +33,6 @@ describe('Board card', () => { provide = {}, stubs = { BoardCardInner }, item = mockIssue, - selectedBoardItems = [], activeBoardItem = {}, mountOptions = {}, } = {}) => { @@ -47,12 +42,6 @@ describe('Board card', () => { isShowingLabels: true, }, }); - mockApollo.clients.defaultClient.cache.writeQuery({ - query: selectedBoardItemsQuery, - data: { - selectedBoardItems, - }, - }); mockApollo.clients.defaultClient.cache.writeQuery({ query: activeBoardItemQuery, data: { @@ -93,11 +82,6 @@ describe('Board card', () => { await nextTick(); }; - const multiSelectCard = async () => { - findBoardCardButton().trigger('click', { ctrlKey: true }); - await nextTick(); - }; - beforeEach(() => { window.gon = { features: {} }; }); @@ -117,33 +101,10 @@ describe('Board card', () => { }); }); - describe('when GlLabel is clicked in BoardCardInner', () => { - it("doesn't call setSelectedBoardItemsMutation", async () => { - mountComponent(); - - await wrapper.findComponent(GlLabel).trigger('mouseup'); - - expect(mockSetSelectedBoardItemsResolver).toHaveBeenCalledTimes(0); - }); - }); - - describe('when issuable title is clicked in BoardCardInner and issuesListDrawer feature is enabled', () => { - it('calls mockSetSelectedBoardItemsResolver', async () => { - mountComponent({ provide: { glFeatures: { issuesListDrawer: true } } }); - - await findBoardCardButton().trigger('click'); - - await waitForPromises(); - - expect(mockSetActiveBoardItemResolver).toHaveBeenCalledTimes(1); - }); - }); - it('should not highlight the card by default', () => { mountComponent(); expect(wrapper.classes()).not.toContain('is-active'); - expect(wrapper.classes()).not.toContain('multi-select'); }); it('should highlight the card with a correct style when selected', async () => { @@ -151,14 +112,6 @@ describe('Board card', () => { await waitForPromises(); expect(wrapper.classes()).toContain('is-active'); - expect(wrapper.classes()).not.toContain('multi-select'); - }); - - it('should highlight the card with a correct style when multi-selected', () => { - mountComponent({ selectedBoardItems: [mockIssue.id] }); - - expect(wrapper.classes()).toContain('multi-select'); - expect(wrapper.classes()).not.toContain('is-active'); }); it('render card with unique id', () => { @@ -174,43 +127,21 @@ describe('Board card', () => { mountComponent({ mountOptions: { attachTo: document.body } }); }); - describe('when not using multi-select', () => { - it('set active board item on client when clicking on card', async () => { - await selectCard(); - await waitForPromises(); - - expect(mockSetActiveBoardItemResolver).toHaveBeenCalledWith( - {}, - { - boardItem: mockIssue, - listId: 'gid://gitlab/List/2', - }, - expect.anything(), - expect.anything(), - ); - - expect(document.activeElement).toEqual(findBoardCardButton().element); - }); - }); + it('set active board item on client when clicking on card', async () => { + await selectCard(); + await waitForPromises(); - describe('when using multi-select', () => { - beforeEach(() => { - window.gon = { features: { boardMultiSelect: true } }; - }); + expect(mockSetActiveBoardItemResolver).toHaveBeenCalledWith( + {}, + { + boardItem: mockIssue, + listId: 'gid://gitlab/List/2', + }, + expect.anything(), + expect.anything(), + ); - it('should call setSelectedBoardItemsMutation with correct parameters', async () => { - await multiSelectCard(); - - expect(mockSetSelectedBoardItemsResolver).toHaveBeenCalledTimes(1); - expect(mockSetSelectedBoardItemsResolver).toHaveBeenCalledWith( - expect.any(Object), - { - itemId: mockIssue.id, - }, - expect.anything(), - expect.anything(), - ); - }); + expect(document.activeElement).toEqual(findBoardCardButton().element); }); }); diff --git a/spec/support/rspec_order_todo.yml b/spec/support/rspec_order_todo.yml index b2b39b8ddb35d898825395e29cfb11d0908ce276..3639a6b0ff96d958090a9697d85a3d4bfa5a7fca 100644 --- a/spec/support/rspec_order_todo.yml +++ b/spec/support/rspec_order_todo.yml @@ -2593,7 +2593,6 @@ - './spec/features/boards/issue_ordering_spec.rb' - './spec/features/boards/keyboard_shortcut_spec.rb' - './spec/features/boards/multiple_boards_spec.rb' -- './spec/features/boards/multi_select_spec.rb' - './spec/features/boards/new_issue_spec.rb' - './spec/features/boards/reload_boards_on_browser_back_spec.rb' - './spec/features/boards/sidebar_assignee_spec.rb'