Files
penracourses/static/select2/js/select2.jquery_ready.js
Ross cbe23859bf .
2021-10-20 18:05:55 +01:00

74 lines
2.6 KiB
JavaScript

var DjangoSelect2 = window.DjangoSelect2 || {};
(function() {
var $ = DjangoSelect2.jQuery;
if (!$) {
$ = DjangoSelect2.jQuery = (window.django || {}).jQuery || window.jQuery;
}
DjangoSelect2.init = function(input) {
var $input = $(input);
var ajaxOptions = {
ajax: {
data: function(term, page) {
return {
q: term,
page: page,
page_limit: 10
};
},
results: function(data, page) {
return data;
}
},
initSelection: function (element, callback) {
var inputVal = $input.val();
if (!inputVal) {
return;
}
var data = {
q: inputVal
};
var select2 = $input.data('select2') || {};
if (typeof select2.opts == 'object' && select2.opts !== null) {
data.multiple = (select2.opts.multiple) ? 1 : 0;
}
$.ajax({
url: $input.data('initSelectionUrl'),
dataType: 'json',
data: data,
success: function(data) {
if (typeof(data) == 'object' && typeof(data.results) == 'object' && data.results) {
callback(data.results);
}
}
});
}
};
var options = $input.data('select2Options') || {};
if (typeof options.ajax == 'object') {
options = $.extend(true, ajaxOptions, options);
}
$input.select2(options);
if ($input.data('sortable') && typeof $.fn.djs2sortable == 'function') {
$input.select2("container").find("ul.select2-choices").djs2sortable({
containment: 'parent',
start: function() { $input.select2("onSortStart"); },
update: function() { $input.select2("onSortEnd"); }
});
}
$input.data('select2').selection.addClass('vTextField');
};
$(document).ready(function() {
$('.django-select2:not([name*="__prefix__"])').each(function() {
DjangoSelect2.init(this);
});
$(document).on('formset:added', function(event, $form) {
$form.find('.django-select2:not([name*="__prefix__"])').each(function() {
DjangoSelect2.init(this);
});
});
});
})();