diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2023-06-14 15:09:51 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2023-06-14 15:09:51 +0300 |
commit | 9223573b85bcfdd21953f52e0d2c5cb587e366a1 (patch) | |
tree | 7dfd09536b948d560fc442014a95a221327b6567 /app/assets/javascripts/boards | |
parent | 1fc72cb8765dab466da8555b70eb744a53a74a80 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/assets/javascripts/boards')
-rw-r--r-- | app/assets/javascripts/boards/components/board_card_move_to_position.vue | 25 | ||||
-rw-r--r-- | app/assets/javascripts/boards/components/board_list.vue | 48 |
2 files changed, 63 insertions, 10 deletions
diff --git a/app/assets/javascripts/boards/components/board_card_move_to_position.vue b/app/assets/javascripts/boards/components/board_card_move_to_position.vue index f58f7838576..19eddbfdd68 100644 --- a/app/assets/javascripts/boards/components/board_card_move_to_position.vue +++ b/app/assets/javascripts/boards/components/board_card_move_to_position.vue @@ -14,6 +14,7 @@ export default { GlDisclosureDropdown, }, mixins: [Tracking.mixin()], + inject: ['isApolloBoard'], props: { item: { type: Object, @@ -83,16 +84,20 @@ export default { }); }, moveToPosition({ positionInList }) { - this.moveItem({ - itemId: this.item.id, - itemIid: this.item.iid, - itemPath: this.item.referencePath, - fromListId: this.list.id, - toListId: this.list.id, - positionInList, - atIndex: this.index, - allItemsLoadedInList: !this.listHasNextPage, - }); + if (this.isApolloBoard) { + this.$emit('moveToPosition', positionInList); + } else { + this.moveItem({ + itemId: this.item.id, + itemIid: this.item.iid, + itemPath: this.item.referencePath, + fromListId: this.list.id, + toListId: this.list.id, + positionInList, + atIndex: this.index, + allItemsLoadedInList: !this.listHasNextPage, + }); + } }, selectMoveAction({ text }) { if (text === BOARD_CARD_MOVE_TO_POSITIONS_START_OPTION) { diff --git a/app/assets/javascripts/boards/components/board_list.vue b/app/assets/javascripts/boards/components/board_list.vue index 218711346b0..af309ba9912 100644 --- a/app/assets/javascripts/boards/components/board_list.vue +++ b/app/assets/javascripts/boards/components/board_list.vue @@ -491,6 +491,53 @@ export default { }); } }, + moveToPosition(positionInList, oldIndex, item) { + this.$apollo.mutate({ + mutation: listIssuablesQueries[this.issuableType].moveMutation, + variables: { + ...moveItemVariables({ + iid: item.iid, + epicId: item.id, + fromListId: this.currentList.id, + toListId: this.currentList.id, + isIssue: !this.isEpicBoard, + boardId: this.boardId, + itemToMove: item, + }), + positionInList, + withColor: this.isEpicBoard && this.glFeatures.epicColorHighlight, + }, + optimisticResponse: { + issuableMoveList: { + issuable: item, + errors: [], + }, + }, + update: (cache, { data: { issuableMoveList } }) => { + const { issuable } = issuableMoveList; + removeItemFromList({ + query: listIssuablesQueries[this.issuableType].query, + variables: { ...this.listQueryVariables, id: this.currentList.id }, + boardType: this.boardType, + id: issuable.id, + issuableType: this.issuableType, + cache, + }); + if (positionInList === 0 || this.listItemsCount <= this.boardListItems.length) { + const newIndex = positionInList === 0 ? 0 : this.boardListItems.length - 1; + addItemToList({ + query: listIssuablesQueries[this.issuableType].query, + variables: { ...this.listQueryVariables, id: this.currentList.id }, + issuable, + newIndex, + boardType: this.boardType, + issuableType: this.issuableType, + cache, + }); + } + }, + }); + }, }, }; </script> @@ -545,6 +592,7 @@ export default { :index="index" :list="list" :list-items-length="boardListItems.length" + @moveToPosition="moveToPosition($event, index, item)" /> <gl-intersection-observer v-if="isObservableItem(index)" |