58 lines
1.7 KiB
JavaScript
58 lines
1.7 KiB
JavaScript
(function ($) {
|
|
var init = function ($element, options) {
|
|
$element.select2(options);
|
|
};
|
|
|
|
var initHeavy = function ($element, options) {
|
|
var settings = $.extend({
|
|
ajax: {
|
|
data: function (params) {
|
|
return {
|
|
term: params.term,
|
|
page: params.page,
|
|
field_id: $element.data('field_id')
|
|
};
|
|
},
|
|
processResults: function (data, page) {
|
|
return {
|
|
results: data.results,
|
|
pagination: {
|
|
more: data.more
|
|
}
|
|
};
|
|
}
|
|
}
|
|
}, options);
|
|
|
|
$element.select2(settings);
|
|
};
|
|
|
|
$.fn.djangoSelect2 = function (options) {
|
|
var settings = $.extend({}, options);
|
|
$.each(this, function (i, element) {
|
|
var $element = $(element);
|
|
if ($element.hasClass('django-select2-heavy')) {
|
|
initHeavy($element, settings);
|
|
} else {
|
|
init($element, settings);
|
|
}
|
|
});
|
|
return this;
|
|
};
|
|
|
|
$(function () {
|
|
$('.django-select2:not([id*=__prefix__])').djangoSelect2({
|
|
dropdownAutoWidth: true
|
|
});
|
|
});
|
|
|
|
if ('django' in window && 'jQuery' in window.django)
|
|
django.jQuery(document).on('formset:added', function(event, $row) {
|
|
$row.find('.django-select2').each(function () {
|
|
// Notice how we are passing it into a different jQuery.
|
|
$(this).djangoSelect2({
|
|
dropdownAutoWidth: true
|
|
})
|
|
});
|
|
});
|
|
}(jQuery));
|