Вход Регистрация
Файл: style/js/umd/dropdown.js
Строк: 325
<?php
(function (global, factory) {
  if (
typeof define === 'function' && define.amd) {
    
define(['exports''module''./util'], factory);
  } else if (
typeof exports !== 'undefined' && typeof module !== 'undefined') {
    
factory(exportsmodule, require('./util'));
  } else {
    var 
mod = {
      
exports: {}
    };
    
factory(mod.exportsmod, global.Util);
    global.
dropdown mod.exports;
  }
})(
this, function (exportsmodule_util) {
  
'use strict';

  var 
_createClass = (function () { function defineProperties(targetprops) { for (var 0props.lengthi++) { var descriptor props[i]; descriptor.enumerable descriptor.enumerable || falsedescriptor.configurable true; if ('value' in descriptordescriptor.writable trueObject.defineProperty(targetdescriptor.keydescriptor); } } return function (ConstructorprotoPropsstaticProps) { if (protoPropsdefineProperties(Constructor.prototypeprotoProps); if (staticPropsdefineProperties(ConstructorstaticProps); return Constructor; }; })();

  function 
_interopRequireDefault(obj) { return obj && obj.__esModule obj : { 'default'obj }; }

  function 
_classCallCheck(instanceConstructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }

  var 
_Util _interopRequireDefault(_util);

  
/**
   * --------------------------------------------------------------------------
   * Bootstrap (v4.0.0): dropdown.js
   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
   * --------------------------------------------------------------------------
   */

  
var Dropdown = (function ($) {

    
/**
     * ------------------------------------------------------------------------
     * Constants
     * ------------------------------------------------------------------------
     */

    
var NAME 'dropdown';
    var 
VERSION '4.0.0';
    var 
DATA_KEY 'bs.dropdown';
    var 
EVENT_KEY '.' DATA_KEY;
    var 
DATA_API_KEY '.data-api';
    var 
JQUERY_NO_CONFLICT = $.fn[NAME];

    var 
Event = {
      
HIDE'hide' EVENT_KEY,
      
HIDDEN'hidden' EVENT_KEY,
      
SHOW'show' EVENT_KEY,
      
SHOWN'shown' EVENT_KEY,
      
CLICK'click' EVENT_KEY,
      
CLICK_DATA_API'click' EVENT_KEY DATA_API_KEY,
      
KEYDOWN_DATA_API'keydown' EVENT_KEY DATA_API_KEY
    
};

    var 
ClassName = {
      
BACKDROP'dropdown-backdrop',
      
DISABLED'disabled',
      
OPEN'open'
    
};

    var 
Selector = {
      
BACKDROP'.dropdown-backdrop',
      
DATA_TOGGLE'[data-toggle="dropdown"]',
      
FORM_CHILD'.dropdown form',
      
ROLE_MENU'[role="menu"]',
      
ROLE_LISTBOX'[role="listbox"]',
      
NAVBAR_NAV'.navbar-nav',
      
VISIBLE_ITEMS'[role="menu"] li:not(.disabled) a, ' '[role="listbox"] li:not(.disabled) a'
    
};

    
/**
     * ------------------------------------------------------------------------
     * Class Definition
     * ------------------------------------------------------------------------
     */

    
var Dropdown = (function () {
      function 
Dropdown(element) {
        
_classCallCheck(thisDropdown);

        
this._element element;

        
this._addEventListeners();
      }

      
/**
       * ------------------------------------------------------------------------
       * Data Api implementation
       * ------------------------------------------------------------------------
       */

      // getters

      
_createClass(Dropdown, [{
        
key'toggle',

        
// public

        
value: function toggle() {
          if (
this.disabled || $(this).hasClass(ClassName.DISABLED)) {
            return 
false;
          }

          var 
parent Dropdown._getParentFromElement(this);
          var 
isActive = $(parent).hasClass(ClassName.OPEN);

          
Dropdown._clearMenus();

          if (
isActive) {
            return 
false;
          }

          if (
'ontouchstart' in document.documentElement && !$(parent).closest(Selector.NAVBAR_NAV).length) {

            
// if mobile we use a backdrop because click events don't delegate
            
var dropdown document.createElement('div');
            
dropdown.className ClassName.BACKDROP;
            $(
dropdown).insertBefore(this);
            $(
dropdown).on('click'Dropdown._clearMenus);
          }

          var 
relatedTarget = { relatedTargetthis };
          var 
showEvent = $.Event(Event.SHOWrelatedTarget);

          $(
parent).trigger(showEvent);

          if (
showEvent.isDefaultPrevented()) {
            return 
false;
          }

          
this.focus();
          
this.setAttribute('aria-expanded''true');

          $(
parent).toggleClass(ClassName.OPEN);
          $(
parent).trigger($.Event(Event.SHOWNrelatedTarget));

          return 
false;
        }
      }, {
        
key'dispose',
        
value: function dispose() {
          $.
removeData(this._elementDATA_KEY);
          $(
this._element).off(EVENT_KEY);
          
this._element null;
        }

        
// private

      
}, {
        
key'_addEventListeners',
        
value: function _addEventListeners() {
          $(
this._element).on(Event.CLICKthis.toggle);
        }

        
// static

      
}], [{
        
key'_jQueryInterface',
        
value: function _jQueryInterface(config) {
          return 
this.each(function () {
            var 
data = $(this).data(DATA_KEY);

            if (!
data) {
              $(
this).data(DATA_KEYdata = new Dropdown(this));
            }

            if (
typeof config === 'string') {
              
data[config].call(this);
            }
          });
        }
      }, {
        
key'_clearMenus',
        
value: function _clearMenus(event) {
          if (
event && event.which === 3) {
            return;
          }

          var 
backdrop = $(Selector.BACKDROP)[0];
          if (
backdrop) {
            
backdrop.parentNode.removeChild(backdrop);
          }

          var 
toggles = $.makeArray($(Selector.DATA_TOGGLE));

          for (var 
0toggles.lengthi++) {
            var 
_parent Dropdown._getParentFromElement(toggles[i]);
            var 
relatedTarget = { relatedTargettoggles[i] };

            if (!$(
_parent).hasClass(ClassName.OPEN)) {
              continue;
            }

            if (
event && event.type === 'click' && /input|textarea/i.test(event.target.tagName) && $.contains(_parentevent.target)) {
              continue;
            }

            var 
hideEvent = $.Event(Event.HIDErelatedTarget);
            $(
_parent).trigger(hideEvent);
            if (
hideEvent.isDefaultPrevented()) {
              continue;
            }

            
toggles[i].setAttribute('aria-expanded''false');

            $(
_parent).removeClass(ClassName.OPEN).trigger($.Event(Event.HIDDENrelatedTarget));
          }
        }
      }, {
        
key'_getParentFromElement',
        
value: function _getParentFromElement(element) {
          var 
parent undefined;
          var 
selector _Util['default'].getSelectorFromElement(element);

          if (
selector) {
            
parent = $(selector)[0];
          }

          return 
parent || element.parentNode;
        }
      }, {
        
key'_dataApiKeydownHandler',
        
value: function _dataApiKeydownHandler(event) {
          if (!/(
38|40|27|32)/.test(event.which) || /input|textarea/i.test(event.target.tagName)) {
            return;
          }

          
event.preventDefault();
          
event.stopPropagation();

          if (
this.disabled || $(this).hasClass(ClassName.DISABLED)) {
            return;
          }

          var 
parent Dropdown._getParentFromElement(this);
          var 
isActive = $(parent).hasClass(ClassName.OPEN);

          if (!
isActive && event.which !== 27 || isActive && event.which === 27) {

            if (
event.which === 27) {
              var 
toggle = $(parent).find(Selector.DATA_TOGGLE)[0];
              $(
toggle).trigger('focus');
            }

            $(
this).trigger('click');
            return;
          }

          var 
items = $.makeArray($(Selector.VISIBLE_ITEMS));

          
items items.filter(function (item) {
            return 
item.offsetWidth || item.offsetHeight;
          });

          if (!
items.length) {
            return;
          }

          var 
index items.indexOf(event.target);

          if (
event.which === 38 && index 0) {
            
// up
            
index--;
          }

          if (
event.which === 40 && index items.length 1) {
            
// down
            
index++;
          }

          if (! ~
index) {
            
index 0;
          }

          
items[index].focus();
        }
      }, {
        
key'VERSION',
        
get: function get() {
          return 
VERSION;
        }
      }]);

      return 
Dropdown;
    })();

    $(
document).on(Event.KEYDOWN_DATA_APISelector.DATA_TOGGLEDropdown._dataApiKeydownHandler).on(Event.KEYDOWN_DATA_APISelector.ROLE_MENUDropdown._dataApiKeydownHandler).on(Event.KEYDOWN_DATA_APISelector.ROLE_LISTBOXDropdown._dataApiKeydownHandler).on(Event.CLICK_DATA_APIDropdown._clearMenus).on(Event.CLICK_DATA_APISelector.DATA_TOGGLEDropdown.prototype.toggle).on(Event.CLICK_DATA_APISelector.FORM_CHILD, function (e) {
      
e.stopPropagation();
    });

    
/**
     * ------------------------------------------------------------------------
     * jQuery
     * ------------------------------------------------------------------------
     */

    
$.fn[NAME] = Dropdown._jQueryInterface;
    $.fn[
NAME].Constructor Dropdown;
    $.fn[
NAME].noConflict = function () {
      $.fn[
NAME] = JQUERY_NO_CONFLICT;
      return 
Dropdown._jQueryInterface;
    };

    return 
Dropdown;
  })(
jQuery);

  
module.exports Dropdown;
});
?>
Онлайн: 0
Реклама