Sha256: 7baa4ee97785c5ecd645faa7e69ec682322478f05918afb911b6145d13f49220

Contents?: true

Size: 1.53 KB

Versions: 5

Compression:

Stored size: 1.53 KB

Contents

(function() {
  window.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

5 entries across 5 versions & 1 rubygems

Version Path
thredded-0.12.4 app/assets/javascripts/thredded/components/quote_post.es6
thredded-0.12.3 app/assets/javascripts/thredded/components/quote_post.es6
thredded-0.12.2 app/assets/javascripts/thredded/components/quote_post.es6
thredded-0.12.1 app/assets/javascripts/thredded/components/quote_post.es6
thredded-0.12.0 app/assets/javascripts/thredded/components/quote_post.es6