gitlab-org--gitlab-foss/app/assets/javascripts/groups_select.js

74 lines
2.6 KiB
JavaScript
Raw Normal View History

/* eslint-disable func-names, space-before-function-paren, no-var, wrap-iife, one-var, camelcase, one-var-declaration-per-line, quotes, object-shorthand, prefer-arrow-callback, comma-dangle, consistent-return, yoda, prefer-rest-params, prefer-spread, no-unused-vars, prefer-template, padded-blocks, max-len */
/* global Api */
2016-07-24 16:45:11 -04:00
(function() {
var slice = [].slice;
this.GroupsSelect = (function() {
function GroupsSelect() {
$('.ajax-groups-select').each((function(_this) {
return function(i, select) {
var all_available, skip_groups;
all_available = $(select).data('all-available');
2016-09-01 13:23:39 -04:00
skip_groups = $(select).data('skip-groups') || [];
2016-07-24 16:45:11 -04:00
return $(select).select2({
placeholder: "Search for a group",
multiple: $(select).hasClass('multiselect'),
minimumInputLength: 0,
query: function(query) {
var options = { all_available: all_available, skip_groups: skip_groups };
return Api.groups(query.term, options, function(groups) {
2016-07-24 16:45:11 -04:00
var data;
data = {
results: groups
};
return query.callback(data);
});
},
initSelection: function(element, callback) {
var id;
id = $(element).val();
if (id !== "") {
return Api.group(id, callback);
}
},
formatResult: function() {
var args;
args = 1 <= arguments.length ? slice.call(arguments, 0) : [];
return _this.formatResult.apply(_this, args);
},
formatSelection: function() {
var args;
args = 1 <= arguments.length ? slice.call(arguments, 0) : [];
return _this.formatSelection.apply(_this, args);
},
dropdownCssClass: "ajax-groups-dropdown",
// we do not want to escape markup since we are displaying html in results
2016-07-24 16:45:11 -04:00
escapeMarkup: function(m) {
return m;
}
});
};
})(this));
}
GroupsSelect.prototype.formatResult = function(group) {
var avatar;
if (group.avatar_url) {
avatar = group.avatar_url;
} else {
avatar = gon.default_avatar_url;
}
return "<div class='group-result'> <div class='group-name'>" + group.name + "</div> <div class='group-path'>" + group.path + "</div> </div>";
};
GroupsSelect.prototype.formatSelection = function(group) {
return group.name;
};
return GroupsSelect;
})();
}).call(this);