Commit 0a3cafb2 authored by Rémy Coutable's avatar Rémy Coutable

Merge branch '22680-unlabel-limit-autocomplete-to-selected-items' into 'master'

Limit autocomplete to currently selected items

When using the /unlabel command the autocomplete list of labels is now
limited to the list of labels currently assigned to the issue.

Closes #22680

See merge request !6796
parents b33791d8 d54b8826
...@@ -51,6 +51,11 @@ ...@@ -51,6 +51,11 @@
if (!GitLab.GfmAutoComplete.dataLoaded) { if (!GitLab.GfmAutoComplete.dataLoaded) {
return this.at; return this.at;
} else { } else {
if (value.indexOf("unlabel") !== -1) {
GitLab.GfmAutoComplete.input.atwho('load', '~', GitLab.GfmAutoComplete.cachedData.unlabels);
} else {
GitLab.GfmAutoComplete.input.atwho('load', '~', GitLab.GfmAutoComplete.cachedData.labels);
}
return value; return value;
} }
} }
...@@ -358,3 +363,4 @@ ...@@ -358,3 +363,4 @@
}; };
}).call(this); }).call(this);
...@@ -144,13 +144,15 @@ class ProjectsController < Projects::ApplicationController ...@@ -144,13 +144,15 @@ class ProjectsController < Projects::ApplicationController
autocomplete = ::Projects::AutocompleteService.new(@project, current_user) autocomplete = ::Projects::AutocompleteService.new(@project, current_user)
participants = ::Projects::ParticipantsService.new(@project, current_user).execute(noteable) participants = ::Projects::ParticipantsService.new(@project, current_user).execute(noteable)
unlabels = autocomplete.unlabels(noteable)
@suggestions = { @suggestions = {
emojis: Gitlab::AwardEmoji.urls, emojis: Gitlab::AwardEmoji.urls,
issues: autocomplete.issues, issues: autocomplete.issues,
milestones: autocomplete.milestones, milestones: autocomplete.milestones,
mergerequests: autocomplete.merge_requests, mergerequests: autocomplete.merge_requests,
labels: autocomplete.labels, labels: autocomplete.labels - unlabels,
unlabels: unlabels,
members: participants, members: participants,
commands: autocomplete.commands(noteable, params[:type]) commands: autocomplete.commands(noteable, params[:type])
} }
......
...@@ -13,7 +13,14 @@ module Projects ...@@ -13,7 +13,14 @@ module Projects
end end
def labels def labels
LabelsFinder.new(current_user, project_id: project.id).execute.select([:title, :color]) LabelsFinder.new(current_user, project_id: project.id).execute.
pluck(:title, :color).map { |l| { title: l.first, color: l.second } }
end
def unlabels(noteable)
return [] unless noteable && noteable.respond_to?(:labels)
noteable.labels.pluck(:title, :color).map { |l| { title: l.first, color: l.second } }
end end
def commands(noteable, type) def commands(noteable, type)
......
---
title: Limit autocomplete to currently selected items for unlabel slash command
merge_request: 22680
author: Akram Fares
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment