splide-1.0.x-dev/js/src/splide.nav.js

js/src/splide.nav.js
/**
 * @file
 * Provides Splide loader.
 */

(function ($, Drupal, drupalSettings, _ds) {

  'use strict';

  var ID = 'splide-wrapper';
  var ID_ONCE = ID;
  var C_MOUNTED = 'is-sw-mounted';
  var S_ELEMENT = '.' + ID + ':not(.' + C_MOUNTED + ')';

  /**
   * Splide wrapper utility functions.
   *
   * @param {HTMLElement} elm
   *   The .splide-wrapper HTML element.
   */
  function process(elm) {
    // Respects nested.
    var main = $.findAll(elm, '.splide--main');
    var nav = $.findAll(elm, '.splide--nav');
    if (!main.length || !nav.length) {
      return;
    }

    var ok = false;
    var valid = main[0] && 'splide' in main[0];

    if (valid) {
      var splide = main[0].splide;
      var o = splide.options || {};
      var extensions = _ds.extensions || {};
      var fx = o.type ? _ds.getTransition(o.type) : null;

      if ($.isUnd(nav[0])) {
        splide.mount(extensions, fx);
      }
      else {
        if ('splide' in nav[0]) {
          ok = true;
          var navInstance = nav[0].splide;
          splide.sync(navInstance);
          splide.mount(extensions, fx);
          navInstance.mount(extensions, fx);
        }
      }
    }

    // Ensures sitewide option with improper synching doesn't screw up.
    if (ok) {
      $.addClass(elm, C_MOUNTED);
    }
  }

  /**
   * Attaches behavior to HTML element identified by CSS selector .splide.
   *
   * @type {Drupal~behavior}
   */
  Drupal.behaviors.splideNav = {
    attach: function (context) {
      $.once(process, ID_ONCE, S_ELEMENT, context);
    },
    detach: function (context, setting, trigger) {
      if (trigger === 'unload') {
        $.once.removeSafely(ID_ONCE, S_ELEMENT, context);
      }
    }
  };

})(dBlazy, Drupal, drupalSettings, dSplide);

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

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