Sha256: 615a1db5ea7a2d9f83b3783037a5152cf51c62fe75005308934dc3585a5e4c0f

Contents?: true

Size: 1.72 KB

Versions: 11

Compression:

Stored size: 1.72 KB

Contents

($ => {
  const COMPONENT_SELECTOR = '[data-thredded-users-select]';


  let formatUser = (user, container, query, escapeHtml) => {
    if (user.loading) return user.text;
    return "<div class='thredded--select2-user-result'>" +
      `<img class='thredded--select2-user-result__avatar' src='${escapeHtml(user.avatar_url)}' >` +
      `<span class='thredded--select2-user-result__name'>${escapeHtml(user.name)}</span>` +
      '</div>';
  };

  let formatUserSelection = (user, container, escapeHtml) => {
    return `<span class='thredded--select2-user-selection'>` +
      `<img class='thredded--select2-user-selection__avatar' src='${escapeHtml(user.avatar_url)}' >` +
      `<span class='thredded--select2-user-selection__name'>${escapeHtml(user.name)}</span>` +
      '</span>';
  };

  let initSelection = ($el, callback) => {
    let ids = ($el.val() || '').split(',');
    if (ids.length && ids[0] != '') {
      $.ajax(`${$el.data('autocompleteUrl')}?ids=${ids.join(',')}`, {dataType: 'json'}).done(data => callback(data.results));
    } else {
      callback([]);
    }
  };

  let init = $el => {
    $el.select2({
      ajax: {
        cache: true,
        data: query => ({q: query}),
        results: data => data,
        dataType: 'json',
        url: $el.data('autocompleteUrl')
      },
      containerCssClass: 'thredded--select2-container',
      dropdownCssClass: 'thredded--select2-drop',
      initSelection: initSelection,
      minimumInputLength: 2,
      multiple: true,
      formatResult: formatUser,
      formatSelection: formatUserSelection
    });
  };

  $(function() {
    var $nodes = $(COMPONENT_SELECTOR);
    if ($nodes.length) {
      $nodes.each(function() {
        init($(this));
      });
    }
  });
})(jQuery);

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
thredded-0.7.0 app/assets/javascripts/thredded/components/users_select.es6
thredded-0.6.3 app/assets/javascripts/thredded/components/users_select.es6
thredded-0.6.2 app/assets/javascripts/thredded/components/users_select.es6
thredded-0.6.1 app/assets/javascripts/thredded/components/users_select.es6
thredded-0.6.0 app/assets/javascripts/thredded/components/users_select.es6
thredded-0.5.1 app/assets/javascripts/thredded/components/users_select.es6
thredded-0.5.0 app/assets/javascripts/thredded/components/users_select.es6
thredded-0.4.0 app/assets/javascripts/thredded/components/users_select.es6
thredded-0.3.2 app/assets/javascripts/thredded/components/users_select.es6
thredded-0.3.1 app/assets/javascripts/thredded/components/users_select.es6
thredded-0.3.0 app/assets/javascripts/thredded/components/users_select.es6