diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2022-09-23 21:12:59 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2022-09-23 21:12:59 +0300 |
commit | 3acaaf7231d0779a6ceb37fca693cd81e698ef90 (patch) | |
tree | 22a068ab03faa19008997f5bc10298282ad077ab /app/assets/javascripts/users_select | |
parent | 2cba761741967eb6baf797af2ee0a702c2ffbdfe (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/assets/javascripts/users_select')
-rw-r--r-- | app/assets/javascripts/users_select/index.js | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/app/assets/javascripts/users_select/index.js b/app/assets/javascripts/users_select/index.js index 94b4ee77e7e..2fface2729f 100644 --- a/app/assets/javascripts/users_select/index.js +++ b/app/assets/javascripts/users_select/index.js @@ -50,6 +50,7 @@ function UsersSelect(currentUser, els, options = {}) { options.iid = $dropdown.data('iid'); options.issuableType = $dropdown.data('issuableType'); options.targetBranch = $dropdown.data('targetBranch'); + options.showSuggested = $dropdown.data('showSuggested'); const showNullUser = $dropdown.data('nullUser'); const defaultNullUser = $dropdown.data('nullUserDefault'); const showMenuAbove = $dropdown.data('showMenuAbove'); @@ -340,6 +341,16 @@ function UsersSelect(currentUser, els, options = {}) { if ($dropdown.hasClass('js-multiselect')) { const selected = getSelected().filter((i) => i !== 0); + if ($dropdown.data('showSuggested')) { + const suggested = this.suggestedUsers(users); + if (suggested.length) { + users = users.filter( + (u) => !u.suggested || (u.suggested && selected.indexOf(u.id) !== -1), + ); + users.splice(showDivider + 1, 0, ...suggested); + } + } + if (selected.length > 0) { if ($dropdown.data('dropdownHeader')) { showDivider += 1; @@ -370,6 +381,21 @@ function UsersSelect(currentUser, els, options = {}) { $dropdown.data('deprecatedJQueryDropdown').positionMenuAbove(); } }, + suggestedUsers(users) { + const selected = getSelected().filter((i) => i !== 0); + const suggestedUsers = users + .filter((u) => u.suggested && selected.indexOf(u.id) === -1) + .sort((a, b) => a.name > b.name); + + if (!suggestedUsers.length) return []; + + const items = [ + { type: 'header', content: $dropdown.data('suggestedReviewersHeader') }, + ...suggestedUsers, + { type: 'header', content: $dropdown.data('allMembersHeader') }, + ]; + return items; + }, filterable: true, filterRemote: true, search: { @@ -760,6 +786,10 @@ UsersSelect.prototype.users = function (query, options, callback) { params.approval_rules = true; } + if (isMergeRequest && options.showSuggested) { + params.show_suggested = true; + } + if (isNewMergeRequest) { params.target_branch = options.targetBranch || null; } |