Sha256: bca0a155a724b315371a904329b44a48097225a6ed46eef3d93bae6261e20936

Contents?: true

Size: 1.6 KB

Versions: 33

Compression:

Stored size: 1.6 KB

Contents

//= require thredded/core/on_page_load

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

  Thredded.onPageLoad(() => {
    Array.prototype.forEach.call(document.querySelectorAll('[data-thredded-quote-post]'), (el) => {
      el.addEventListener('click', onClick);
    });
  });

  function onClick(evt) {
    // Handle only left clicks with no modifier keys
    if (evt.button !== 0 || evt.ctrlKey || evt.altKey || evt.metaKey || evt.shiftKey) return;
    evt.preventDefault();
    const target = document.getElementById('post_content');
    target.scrollIntoView();
    target.value = '...';
    fetchReply(evt.target.getAttribute('data-thredded-quote-post'), (replyText) => {
      if (!target.ownerDocument.body.contains(target)) return;
      target.focus();
      target.value = replyText;

      const autosizeUpdateEvent = document.createEvent('Event');
      autosizeUpdateEvent.initEvent('autosize:update', true, false);
      target.dispatchEvent(autosizeUpdateEvent);
      // Scroll into view again as the size might have changed.
      target.scrollIntoView();
    }, (errorMessage) => {
      target.value = errorMessage;
    });
  }

  function fetchReply(url, onSuccess, onError) {
    const request = new XMLHttpRequest();
    request.open('GET', url, /* async */ true);
    request.onload = () => {
      if (request.status >= 200 && request.status < 400) {
        onSuccess(request.responseText);
      } else {
        onError(`Error (${request.status}): ${request.statusText} ${request.responseText}`);
      }
    };
    request.onerror = () => {
      onError('Network Error');
    };
    request.send();
  }
})();

Version data entries

33 entries across 33 versions & 2 rubygems

Version Path
thredded-0.16.13 app/assets/javascripts/thredded/components/quote_post.es6
thredded-0.16.12 app/assets/javascripts/thredded/components/quote_post.es6
thredded-0.16.11 app/assets/javascripts/thredded/components/quote_post.es6
thredded-0.16.10 app/assets/javascripts/thredded/components/quote_post.es6
thredded-0.16.9 app/assets/javascripts/thredded/components/quote_post.es6
thredded-0.16.8 app/assets/javascripts/thredded/components/quote_post.es6
thredded-0.16.7 app/assets/javascripts/thredded/components/quote_post.es6
thredded-0.16.6 app/assets/javascripts/thredded/components/quote_post.es6
thredded-0.16.5 app/assets/javascripts/thredded/components/quote_post.es6
thredded-0.16.4 app/assets/javascripts/thredded/components/quote_post.es6
thredded-0.16.3 app/assets/javascripts/thredded/components/quote_post.es6
thredded-0.16.1 app/assets/javascripts/thredded/components/quote_post.es6
thredded-0.16.0 app/assets/javascripts/thredded/components/quote_post.es6
thredded-0.15.5 app/assets/javascripts/thredded/components/quote_post.es6
thredded-0.15.4 app/assets/javascripts/thredded/components/quote_post.es6
thredded-0.15.3 app/assets/javascripts/thredded/components/quote_post.es6
thredded-0.15.2 app/assets/javascripts/thredded/components/quote_post.es6
thredded-0.15.1 app/assets/javascripts/thredded/components/quote_post.es6
threddedDANIEL-0.14.5 app/assets/javascripts/thredded/components/quote_post.es6
thredded-0.14.4 app/assets/javascripts/thredded/components/quote_post.es6