;(function ($) { if (window.__dal__initListenerIsSet) return; $(document).on('autocompleteLightInitialize', '[data-autocomplete-light-function=select2]', function() { var element = $(this); // Templating helper function template(text, is_html) { if (is_html) { var $result = $(''); $result.html(text); return $result; } else { return text; } } function result_template(item) { var text = template(item.text, element.attr('data-html') !== undefined || element.attr('data-result-html') !== undefined ); if (item.create_id) { return $('').text(text).addClass('dal-create') } else { return text } } function selected_template(item) { if (item.selected_text !== undefined) { return template(item.selected_text, element.attr('data-html') !== undefined || element.attr('data-selected-html') !== undefined ); } else { return result_template(item); } return } var ajax = null; if ($(this).attr('data-autocomplete-light-url')) { ajax = { url: $(this).attr('data-autocomplete-light-url'), dataType: 'json', delay: 250, data: function (params) { var data = { q: params.term, // search term page: params.page, create: element.attr('data-autocomplete-light-create') && !element.attr('data-tags'), forward: yl.getForwards(element) }; return data; }, processResults: function (data, page) { if (element.attr('data-tags')) { $.each(data.results, function(index, value) { value.id = value.text; }); } return data; }, cache: true }; } $(this).select2({ tokenSeparators: element.attr('data-tags') ? [','] : null, debug: true, containerCssClass: ':all:', placeholder: element.attr('data-placeholder') || '', language: element.attr('data-autocomplete-light-language'), minimumInputLength: element.attr('data-minimum-input-length') || 0, allowClear: ! $(this).is('[required]'), templateResult: result_template, templateSelection: selected_template, ajax: ajax, tags: Boolean(element.attr('data-tags')), }); $(this).on('select2:selecting', function (e) { var data = e.params.args.data; if (data.create_id !== true) return; e.preventDefault(); var select = $(this); $.ajax({ url: $(this).attr('data-autocomplete-light-url'), type: 'POST', dataType: 'json', data: { text: data.id, forward: yl.getForwards($(this)) }, beforeSend: function(xhr, settings) { xhr.setRequestHeader("X-CSRFToken", document.csrftoken); }, success: function(data, textStatus, jqXHR ) { select.append( $('