Sha256: 5666f3c02c91c1e4ea6073a44ca1bb609676634d29aca892086cd8a5d00d4e66

Contents?: true

Size: 1.21 KB

Versions: 6

Compression:

Stored size: 1.21 KB

Contents

//= require thredded/core/thredded
//= require thredded/core/on_page_load

(() => {
  const Thredded = window.Thredded;
  const COMPONENT_SELECTOR = '.thredded--post--content--spoiler';
  const OPEN_CLASS = 'thredded--post--content--spoiler--is-open';

  Thredded.spoilers = {
    init(root) {
      Array.prototype.forEach.call(root.querySelectorAll(COMPONENT_SELECTOR), (node) => {
        node.addEventListener('mousedown', (evt) => {
          evt.stopPropagation();
          this.toggle(evt.currentTarget);
        });
        node.addEventListener('keypress', (evt) => {
          if (event.key === ' ' || event.key === 'Enter') {
            evt.preventDefault();
            evt.stopPropagation();
            this.toggle(evt.currentTarget);
          }
        });
      });
    },

    toggle(node) {
      const isOpen = node.classList.contains(OPEN_CLASS);
      node.classList.toggle(OPEN_CLASS);
      node.setAttribute('aria-expanded', isOpen ? 'false' : 'true');
      node.firstElementChild.setAttribute('aria-hidden', isOpen ? 'false' : 'true');
      node.lastElementChild.setAttribute('aria-hidden', isOpen ? 'true' : 'false');
    }
  };

  Thredded.onPageLoad(() => {
    Thredded.spoilers.init(document);
  });
})();

Version data entries

6 entries across 6 versions & 1 rubygems

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