Sha256: 8447b506b7367a6e60f4ded79564bd68c975309c33bc294478c56f0a4ba10c04

Contents?: true

Size: 1.83 KB

Versions: 6

Compression:

Stored size: 1.83 KB

Contents

//= require thredded/core/thredded
//= require thredded/core/escape_html
//= require thredded/dependencies/textcomplete

(() => {
  const Thredded = window.Thredded;

  Thredded.UserTextcomplete = {
    DROPDOWN_CLASS_NAME: 'thredded--textcomplete-dropdown',

    formatUser({avatar_url, name, display_name}) {
      return "<div class='thredded--textcomplete-user-result'>" +
        `<img class='thredded--textcomplete-user-result__avatar' src='${Thredded.escapeHtml(avatar_url)}' >` +
        `<span class='thredded--textcomplete-user-result__name'>${Thredded.escapeHtml(name)}</span>` +
        (name !== display_name && display_name ?
          `<span class='thredded--textcomplete-user-result__display_name'>${Thredded.escapeHtml(display_name)}</span>` :
          '') +
        '</div>';
    },

    searchFn({url, autocompleteMinLength}) {
      return function search(term, callback, match) {
        if (term.length < autocompleteMinLength) {
          callback([]);
          return;
        }
        const request = new XMLHttpRequest();
        request.open('GET', `${url}?q=${term}`, /* async */ true);
        request.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
        request.onload = () => {
          // Ignore errors
          if (request.status < 200 || request.status >= 400) {
            callback([]);
            return;
          }
          callback(JSON.parse(request.responseText).results.map(({avatar_url, id, display_name, name}) => {
            return {avatar_url, id, name, display_name, match};
          }));
        };
        request.send();
      }
    }
  };

  document.addEventListener('turbolinks:before-cache', () => {
    Array.prototype.forEach.call(
      document.getElementsByClassName(Thredded.UserTextcomplete.DROPDOWN_CLASS_NAME), (node) => {
        node.parentNode.removeChild(node);
      });
  });
})();

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
thredded-1.1.0 app/assets/javascripts/thredded/components/user_textcomplete.es6
thredded-1.0.1 app/assets/javascripts/thredded/components/user_textcomplete.es6
thredded-1.0.0 app/assets/javascripts/thredded/components/user_textcomplete.es6
thredded-0.16.16 app/assets/javascripts/thredded/components/user_textcomplete.es6
thredded-0.16.15 app/assets/javascripts/thredded/components/user_textcomplete.es6
thredded-0.16.14 app/assets/javascripts/thredded/components/user_textcomplete.es6