io-8.x-1.x-dev/modules/io_browser/js/src/io-browser.modal.js

modules/io_browser/js/src/io-browser.modal.js
/**
 * @file
 * Provides IO Browser utilitiy functions.
 */

(function ($, Drupal, _d, _win) {

  'use strict';

  var _isLoading = 'is-b-loading';
  var _addClass = 'addClass';
  var _removeClass = 'removeClass';
  var _cHtmlDialog = 'ib-html-dialog';
  var _eDialogOpen = 'dialogopen';
  var _eDialogClose = 'dialogclose';
  var _selUiDialog = '.ui-dialog';

  /**
   * Adds relevant context when io browser is active.
   *
   * @param {jQuery.Event} e
   *   The event triggered.
   *
   * @todo: Remove this when SB can stay at parent window.
   */
  function ibModal(e) {
    var $content = $(e.target);
    var id = $content.attr('id');
    var $iframe = $content.find('iframe[name*="io_browser"]');

    if (id.indexOf('io-browser') !== -1) {
      $('html')[e.type === _eDialogOpen ? _addClass : _removeClass](_cHtmlDialog);
      $(_selUiDialog)[e.type === _eDialogOpen ? _addClass : _removeClass]('ui-dialog--ib');

      // Remove padding for spacious window with tabs, navs and video previews.
      $content.addClass(_isLoading).css('padding', 0);

      _win.setTimeout(function () {
        if ($iframe.length) {
          $iframe.on('load', function () {
            $content.removeClass(_isLoading);
          });
        }
      }, 600);
    }

    // Anything else, after AJAX-related events such as Edit/ Remove buttons.
    if (e.type === _eDialogClose) {
      $('.' + _isLoading).removeClass(_isLoading);
    }
  }

  /**
   * Attaches IO Browser modal behavior to HTML element.
   *
   * @type {Drupal~behavior}
   */
  Drupal.behaviors.ioBrowserModal = {
    attach: function (context) {
      $(document)
        .on(_eDialogOpen, _selUiDialog, ibModal)
        .on(_eDialogClose, _selUiDialog, ibModal);
    },
    detach: function (context, setting, trigger) {
      if (trigger === 'unload') {
        $('html').removeClass(_cHtmlDialog);
      }
    }
  };

})(jQuery, Drupal, dBlazy, this);

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

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