splide-1.0.x-dev/js/src/components/splide.pagination.js

js/src/components/splide.pagination.js
/**
 * @file
 * Provides thumbnail grid/ hover on dot pagination as asnavfor alternative.
 */

(function ($, Drupal, _ds) {

  'use strict';

  var ThumbPagination = function (Splide, Components) {
    var root = Splide.root;
    var o = Splide.options;
    var _pagination = o.pagination;
    var _fx = 'is-paginated--fx';
    // @todo remove data-thumb for data-b-thumb at 3.x.
    var _dataThumb = 'data-thumb';
    var _dataBThumb = 'data-b-thumb';
    var _thumbed = _pagination === 'thumb'
      || $.hasClass(root, _fx + '-grid')
      || $.hasClass(root, _fx + '-hover');

    return {
      mount: function () {
        var me = this;

        if (_pagination && _thumbed) {
          Splide.on('pagination:mounted.tnp', me.thumbify.bind(me));
        }
      },

      thumbify: function (data) {
        $.each(data.items, function (item, i) {
          var btn = item.button;
          if (btn && btn.nextElementSibling === null) {
            var obj = Components.Slides.getAt(i);

            if (obj) {
              var slide = obj.slide;
              var media = $.find(slide, '[' + _dataThumb + ']');
              var dThumb = _dataThumb;

              if (!$.isElm(media)) {
                media = $.find(slide, '[' + _dataBThumb + ']');
                dThumb = _dataBThumb;
              }

              if ($.isElm(media)) {
                var url = $.attr(media, dThumb);
                var stage = $.find(slide, 'img');
                var alt = $.isElm(stage) ? $.attr(stage, 'alt') : 'Preview';

                alt = Drupal.checkPlain(alt);

                var img = '<img alt="' + Drupal.t(alt) + '" src="' + url + '" loading="lazy" decoding="async" />';
                var el = document.createElement('span');
                el.innerHTML = img;
                el.className = 'splide__pagination__tn';
                btn.insertAdjacentElement('afterend', el);
              }
            }
          }
        });
      }

    };
  };

  _ds.listen({
    ThumbPagination: ThumbPagination
  });

})(dBlazy, Drupal, dSplide);

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc