Select2 4.0.1 Multiple Tags SelectOnClose Issue

by joergensenchristoffer

HTML

<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/select2/4.0.1/css/select2.min.css">
<script src="//cdnjs.cloudflare.com/ajax/libs/select2/4.0.1/js/select2.min.js"></script>
<table width='100%'>
          <tr>
            <td width='100%'>
              <select id='select2_element' multiple='multiple' style='width:100%;'>
              </select>
            </td>
          </tr>
          <tr>
            <td align='right'>
              <button class='btn-create-repos' type='button'>Console.log all selcted data</button>
            </td>
          </tr>
        </table>

JavaScript

var createRepo, formatRepo, formatRepoSelection, selectRepos;

formatRepoSelection = function(element) {
  return element.name + ' ' + element.forks + ' ' + element.id;
};

formatRepo = function(element) {
  var markup;
  if (!element.loading) {
    return markup = element.name + ' ' + element.id;
  }
};

createRepo = function() {
  $(".btn-create-repos").off("click");
  return $(".btn-create-repos").click(function(e) {
    var el, element_ids;
    el = $(e.currentTarget);
    element_ids = $("#select2_element").select2('data');
    return console.log(element_ids);
  });
};

selectRepos = function() {
  var option, select2_element;
  select2_element = $('#select2_element');
  select2_element.select2({
  	placeholder: "Type in 'easypr-ja' to get only 1 result",
    ajax: {
      url: "https://api.github.com/search/repositories",
      dataType: 'json',
      delay: 250,
      data: function (params) {
        return {
          q: params.term,
          page: params.page
        };
      },
      processResults: function (data, params) {

				if (data.items.length === 1) {
          option = new Option("Sample text", "123", true, true);
          select2_element.append(option);
          return select2_element.trigger('change');
        } else {
          params.page = params.page || 1;

          return {
            results: data.items,
            pagination: {
              more: (params.page * 30) < data.total_count
            }
          };
        }
      },
      cache: true
    },

    escapeMarkup: function(markup) {
      return markup;
    },
    minimumInputLength: 2,
    templateResult: formatRepo,
    templateSelection: formatRepoSelection
  });
};

$(function() {
  selectRepos();
  return createRepo();
});