Sha256: 65855d28cb9dbc18dd280eb51eff5fe08ded3642b575b0bf9678c62307d34267

Contents?: true

Size: 1.67 KB

Versions: 3

Compression:

Stored size: 1.67 KB

Contents

mumuki.ModalCarrousel = (() => {

  class MuModalCarrousel {
    constructor(containerSelector, onShow = () => {}) {
      this.$container = $(containerSelector);
      this.onShow = onShow;
    }

    show() {
      this.onShow();
      this._showFirstSlide();
    }

    nextSlide() {
      this._clickButton('next');
    }

    prevSlide() {
      this._clickButton('prev');
    }

    _activeSlide() {
      return this.$container.find('.active');
    }

    _clickButton(prevOrNext) {
      this._activeSlide().removeClass('active')[prevOrNext]().addClass('active');
      this.showNextOrCloseButton();
      this._hidePreviousButtonIfFirstSlide();
    }

    showNextOrCloseButton() {
      const $next = $('.mu-kids-modal-button.mu-next');
      const $close = $('.mu-kids-modal-button.mu-close');
      const $footer = $('.modal-footer');
      const isLastChild = this._activeSlide().is(':last-child');
      this._addClassIf($next, 'hidden', () => isLastChild);
      this._addClassIf($close, 'hidden', () => !isLastChild);
      this._addClassIf($footer, 'hidden', () => !isLastChild);
    }

    _hidePreviousButtonIfFirstSlide() {
      const $prev = $('.mu-kids-modal-button.mu-previous');
      this._addClassIf($prev, 'hidden', () => this._activeSlide().is(':first-child'))
    }

    _showFirstSlide() {
      this.$container.children().each((i, el) => this._addClassIf($(el), 'active', () => i === 0));
      this.showNextOrCloseButton();
      this._hidePreviousButtonIfFirstSlide();
    }

    _addClassIf(element, clazz, criteria) {
      if (criteria()) {
        element.addClass(clazz);
      } else {
        element.removeClass(clazz);
      }
    }
  }

  return MuModalCarrousel;
})();

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
mumuki-laboratory-8.1.1 app/assets/javascripts/mumuki_laboratory/application/mu-modal-carrousel.js
mumuki-laboratory-8.1.0 app/assets/javascripts/mumuki_laboratory/application/mu-modal-carrousel.js
mumuki-laboratory-7.12.3 app/assets/javascripts/mumuki_laboratory/application/mu-modal-carrousel.js