/* global __ */
$.fn.select2.defaults.set("allowClear", true);
$.fn.select2.defaults.set("placeholder", "");
$.fn.select2.defaults.set("width", "element" );
// Internationalization
$.fn.select2.defaults.set("language", {
errorLoading:function(){ return __("The results could not be loaded"); },
inputTooLong:function(args){
var n = args.input.length - args.maximum;
return __("Please delete %s character(s)").format(n);
},
inputTooShort:function(args){
var n = args.minimum - args.input.length;
return __("Please enter %s or more characters").format(n);
},
formatResult: function(item) {
return $('
', {title: item.element[0].title}).text(item.text);
},
loadingMore:function(){ return __("Loading more results…"); },
maximumSelected:function(args){
return __("You can only select %s item(s)").format(args.maximum);
},
noResults:function(){return __("No results found"); },
searching:function(){return __("Searching…"); },
removeAllItems:function(){return __("Remove all items"); },
removeItem:function(){return __("Remove item"); }
});
$(document).ready(function(){
$(".select2").select2();
$(".select2").on("select2:clear", function () {
$(this).on("select2:opening.cancelOpen", function (evt) {
evt.preventDefault();
$(this).off("select2:opening.cancelOpen");
});
});
});
function kohaSelect2Transport(params, success, failure) {
var read_headers = function (data, textStatus, jqXHR) {
var more = false;
var link = jqXHR.getResponseHeader('Link') || '';
if (link.search(/<([^>]+)>;\s*rel\s*=\s*['"]?next['"]?\s*(,|$)/i) > -1) {
more = true;
}
return {
results: data,
pagination: {
more: more
}
};
};
var $request = $.ajax(params);
$request.then(read_headers).then(success);
$request.fail(failure);
}
/* wrapper that nests paging information into the results object for use with koha REST apis */
(function($) {
$.fn.kohaSelect = function(config) {
if (config.hasOwnProperty('ajax')) {
config.ajax.transport = function(params, success, failure) {
var read_headers = function(data, textStatus, jqXHR) {
var more = false;
var link = jqXHR.getResponseHeader('Link') || '';
if (link.search(/<([^>]+)>;\s*rel\s*=\s*['"]?next['"]?\s*(,|$)/i) > -1) {
more = true;
}
return {
results: data,
pagination: {
more: more
}
};
};
var $request = $.ajax(params);
$request.then(read_headers).then(success);
$request.fail(failure);
};
}
$(this).select2(config);
};
})(jQuery);