54 lines
1.1 KiB
JavaScript
54 lines
1.1 KiB
JavaScript
import { addClassIfElementExists } from '../lib/utils/dom_utils';
|
|
import DropdownAjaxFilter from './dropdown_ajax_filter';
|
|
|
|
export default class DropdownUser extends DropdownAjaxFilter {
|
|
constructor(options = {}) {
|
|
super({
|
|
...options,
|
|
endpoint: '/-/autocomplete/users.json',
|
|
symbol: '@',
|
|
});
|
|
}
|
|
|
|
ajaxFilterConfig() {
|
|
return {
|
|
...super.ajaxFilterConfig(),
|
|
params: {
|
|
active: true,
|
|
group_id: this.getGroupId(),
|
|
project_id: this.getProjectId(),
|
|
current_user: true,
|
|
...this.projectOrGroupId(),
|
|
},
|
|
onLoadingFinished: () => {
|
|
this.hideCurrentUser();
|
|
},
|
|
};
|
|
}
|
|
|
|
hideCurrentUser() {
|
|
addClassIfElementExists(this.dropdown.querySelector('.js-current-user'), 'hidden');
|
|
}
|
|
|
|
getGroupId() {
|
|
return this.input.getAttribute('data-group-id');
|
|
}
|
|
|
|
getProjectId() {
|
|
return this.input.getAttribute('data-project-id');
|
|
}
|
|
|
|
projectOrGroupId() {
|
|
const projectId = this.getProjectId();
|
|
const groupId = this.getGroupId();
|
|
if (groupId) {
|
|
return {
|
|
group_id: groupId,
|
|
};
|
|
}
|
|
return {
|
|
project_id: projectId,
|
|
};
|
|
}
|
|
}
|