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

57 lines
1.6 KiB
JavaScript
Raw Normal View History

/* eslint-disable func-names, space-before-function-paren, no-var, comma-dangle, object-shorthand, no-else-return, prefer-template, quotes, prefer-arrow-callback, max-len */
import Api from './api';
2017-10-26 11:03:44 +00:00
export default class NamespaceSelect {
constructor(opts) {
const isFilter = opts.dropdown.dataset.isFilter === 'true';
var fieldName;
2017-10-26 11:03:44 +00:00
this.dropdown = $(opts.dropdown);
fieldName = 'namespace_id';
if (this.dropdown.attr('data-field-name')) {
fieldName = this.dropdown.data('fieldName');
2016-07-24 20:45:11 +00:00
}
2017-10-26 11:03:44 +00:00
this.dropdown.glDropdown({
filterable: true,
selectable: true,
filterRemote: true,
search: {
fields: ['path']
},
fieldName: fieldName,
toggleLabel: function(selected) {
if (selected.id == null) {
return selected.text;
} else {
return selected.kind + ": " + selected.full_path;
}
},
data: function(term, dataCallback) {
return Api.namespaces(term, function(namespaces) {
var anyNamespace;
if (isFilter) {
2017-10-26 11:03:44 +00:00
anyNamespace = {
text: 'Any namespace',
id: null
};
namespaces.unshift(anyNamespace);
namespaces.splice(1, 0, 'divider');
}
return dataCallback(namespaces);
});
},
text: function(namespace) {
if (namespace.id == null) {
return namespace.text;
} else {
return namespace.kind + ": " + namespace.full_path;
}
},
renderRow: this.renderRow,
2017-10-26 11:04:42 +00:00
clicked(options) {
const { e } = options;
return e.preventDefault();
},
2017-10-26 11:03:44 +00:00
});
}
}