dropdown.js 14.6 KB
Newer Older
Mark Otto's avatar
dist    
Mark Otto committed
1
2
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }

Mark Otto's avatar
dist    
Mark Otto committed
3
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
Mark Otto's avatar
dist    
Mark Otto committed
4

Mark Otto's avatar
dist    
Mark Otto committed
5
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
fat's avatar
fat committed
6
7
8

/**
 * --------------------------------------------------------------------------
Mark Otto's avatar
Mark Otto committed
9
 * Bootstrap (v4.0.0-beta.3): dropdown.js
fat's avatar
fat committed
10
11
12
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 * --------------------------------------------------------------------------
 */
Mark Otto's avatar
dist    
Mark Otto committed
13
var Dropdown = function ($) {
fat's avatar
fat committed
14
15
16
17
18
19
  /**
   * ------------------------------------------------------------------------
   * Constants
   * ------------------------------------------------------------------------
   */
  var NAME = 'dropdown';
Mark Otto's avatar
Mark Otto committed
20
  var VERSION = '4.0.0-beta.3';
fat's avatar
fat committed
21
  var DATA_KEY = 'bs.dropdown';
Mark Otto's avatar
dist    
Mark Otto committed
22
  var EVENT_KEY = "." + DATA_KEY;
fat's avatar
fat committed
23
  var DATA_API_KEY = '.data-api';
fat's avatar
fat committed
24
  var JQUERY_NO_CONFLICT = $.fn[NAME];
Chris Rebert's avatar
grunt    
Chris Rebert committed
25
  var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key
Mark Otto's avatar
dist    
Mark Otto committed
26

Mark Otto's avatar
grunt    
Mark Otto committed
27
  var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key
Mark Otto's avatar
dist    
Mark Otto committed
28

Mark Otto's avatar
grunt    
Mark Otto committed
29
  var TAB_KEYCODE = 9; // KeyboardEvent.which value for tab key
Mark Otto's avatar
dist    
Mark Otto committed
30

Chris Rebert's avatar
grunt    
Chris Rebert committed
31
  var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key
Mark Otto's avatar
dist    
Mark Otto committed
32

Chris Rebert's avatar
grunt    
Chris Rebert committed
33
  var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key
Mark Otto's avatar
dist    
Mark Otto committed
34

Chris Rebert's avatar
grunt    
Chris Rebert committed
35
  var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse)
fat's avatar
fat committed
36

Mark Otto's avatar
dist    
Mark Otto committed
37
  var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + "|" + ARROW_DOWN_KEYCODE + "|" + ESCAPE_KEYCODE);
fat's avatar
fat committed
38
  var Event = {
Mark Otto's avatar
dist    
Mark Otto committed
39
40
41
42
43
44
45
46
    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,
    KEYUP_DATA_API: "keyup" + EVENT_KEY + DATA_API_KEY
fat's avatar
fat committed
47
48
49
  };
  var ClassName = {
    DISABLED: 'disabled',
Mark Otto's avatar
build    
Mark Otto committed
50
51
    SHOW: 'show',
    DROPUP: 'dropup',
Mark Otto's avatar
dist    
Mark Otto committed
52
53
    DROPRIGHT: 'dropright',
    DROPLEFT: 'dropleft',
Mark Otto's avatar
build    
Mark Otto committed
54
    MENURIGHT: 'dropdown-menu-right',
Mark Otto's avatar
dist    
Mark Otto committed
55
56
    MENULEFT: 'dropdown-menu-left',
    POSITION_STATIC: 'position-static'
fat's avatar
fat committed
57
58
59
60
  };
  var Selector = {
    DATA_TOGGLE: '[data-toggle="dropdown"]',
    FORM_CHILD: '.dropdown form',
Mark Otto's avatar
grunt    
Mark Otto committed
61
    MENU: '.dropdown-menu',
fat's avatar
fat committed
62
    NAVBAR_NAV: '.navbar-nav',
Mark Otto's avatar
grunt    
Mark Otto committed
63
    VISIBLE_ITEMS: '.dropdown-menu .dropdown-item:not(.disabled)'
fat's avatar
fat committed
64
  };
Johann-S's avatar
build    
Johann-S committed
65
66
  var AttachmentMap = {
    TOP: 'top-start',
Mark Otto's avatar
build    
Mark Otto committed
67
68
    TOPEND: 'top-end',
    BOTTOM: 'bottom-start',
Mark Otto's avatar
dist    
Mark Otto committed
69
70
71
72
73
    BOTTOMEND: 'bottom-end',
    RIGHT: 'right-start',
    RIGHTEND: 'right-end',
    LEFT: 'left-start',
    LEFTEND: 'left-end'
Johann-S's avatar
build    
Johann-S committed
74
75
76
  };
  var Default = {
    offset: 0,
Mark Otto's avatar
dist    
Mark Otto committed
77
78
    flip: true,
    boundary: 'scrollParent'
Johann-S's avatar
build    
Johann-S committed
79
80
  };
  var DefaultType = {
Mark Otto's avatar
dist    
Mark Otto committed
81
    offset: '(number|string|function)',
Mark Otto's avatar
dist    
Mark Otto committed
82
83
    flip: 'boolean',
    boundary: '(string|element)'
Mark Otto's avatar
dist    
Mark Otto committed
84
85
86
87
88
    /**
     * ------------------------------------------------------------------------
     * Class Definition
     * ------------------------------------------------------------------------
     */
fat's avatar
fat committed
89

Mark Otto's avatar
dist    
Mark Otto committed
90
  };
fat's avatar
fat committed
91

Mark Otto's avatar
dist    
Mark Otto committed
92
93
94
95
  var Dropdown =
  /*#__PURE__*/
  function () {
    function Dropdown(element, config) {
fat's avatar
fat committed
96
      this._element = element;
Johann-S's avatar
build    
Johann-S committed
97
98
99
      this._popper = null;
      this._config = this._getConfig(config);
      this._menu = this._getMenuElement();
Mark Otto's avatar
build    
Mark Otto committed
100
      this._inNavbar = this._detectNavbar();
fat's avatar
fat committed
101
102

      this._addEventListeners();
Mark Otto's avatar
dist    
Mark Otto committed
103
    } // getters
fat's avatar
fat committed
104

Jacob Thornton's avatar
Jacob Thornton committed
105

Mark Otto's avatar
dist    
Mark Otto committed
106
    var _proto = Dropdown.prototype;
fat's avatar
fat committed
107

Mark Otto's avatar
dist    
Mark Otto committed
108
109
110
111
112
    // public
    _proto.toggle = function toggle() {
      if (this._element.disabled || $(this._element).hasClass(ClassName.DISABLED)) {
        return;
      }
fat's avatar
fat committed
113

Mark Otto's avatar
dist    
Mark Otto committed
114
      var parent = Dropdown._getParentFromElement(this._element);
fat's avatar
fat committed
115

Mark Otto's avatar
dist    
Mark Otto committed
116
      var isActive = $(this._menu).hasClass(ClassName.SHOW);
fat's avatar
fat committed
117

Mark Otto's avatar
dist    
Mark Otto committed
118
      Dropdown._clearMenus();
fat's avatar
fat committed
119

Mark Otto's avatar
dist    
Mark Otto committed
120
121
122
      if (isActive) {
        return;
      }
fat's avatar
fat committed
123

Mark Otto's avatar
dist    
Mark Otto committed
124
125
126
127
128
      var relatedTarget = {
        relatedTarget: this._element
      };
      var showEvent = $.Event(Event.SHOW, relatedTarget);
      $(parent).trigger(showEvent);
fat's avatar
fat committed
129

Mark Otto's avatar
dist    
Mark Otto committed
130
131
      if (showEvent.isDefaultPrevented()) {
        return;
Mark Otto's avatar
dist    
Mark Otto committed
132
      } // Disable totally Popper.js for Dropdown in Navbar
Mark Otto's avatar
dist    
Mark Otto committed
133
134


Mark Otto's avatar
dist    
Mark Otto committed
135
136
137
138
139
140
141
142
      if (!this._inNavbar) {
        /**
         * Check for Popper dependency
         * Popper - https://popper.js.org
         */
        if (typeof Popper === 'undefined') {
          throw new Error('Bootstrap dropdown require Popper.js (https://popper.js.org)');
        }
Mark Otto's avatar
dist    
Mark Otto committed
143

Mark Otto's avatar
dist    
Mark Otto committed
144
        var element = this._element; // for dropup with alignment we use the parent as popper container
Mark Otto's avatar
grunt    
Mark Otto committed
145

Mark Otto's avatar
dist    
Mark Otto committed
146
147
148
149
        if ($(parent).hasClass(ClassName.DROPUP)) {
          if ($(this._menu).hasClass(ClassName.MENULEFT) || $(this._menu).hasClass(ClassName.MENURIGHT)) {
            element = parent;
          }
Mark Otto's avatar
dist    
Mark Otto committed
150
151
152
153
154
155
156
        } // If boundary is not `scrollParent`, then set position to `static`
        // to allow the menu to "escape" the scroll parent's boundaries
        // https://github.com/twbs/bootstrap/issues/24251


        if (this._config.boundary !== 'scrollParent') {
          $(parent).addClass(ClassName.POSITION_STATIC);
Mark Otto's avatar
dist    
Mark Otto committed
157
        }
fat's avatar
fat committed
158

Mark Otto's avatar
dist    
Mark Otto committed
159
160
        this._popper = new Popper(element, this._menu, this._getPopperConfig());
      } // if this is a touch-enabled device we add extra
Mark Otto's avatar
dist    
Mark Otto committed
161
162
163
      // empty mouseover listeners to the body's immediate children;
      // only needed because of broken event delegation on iOS
      // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
fat's avatar
fat committed
164

Mark Otto's avatar
dist    
Mark Otto committed
165

Mark Otto's avatar
dist    
Mark Otto committed
166
167
      if ('ontouchstart' in document.documentElement && !$(parent).closest(Selector.NAVBAR_NAV).length) {
        $('body').children().on('mouseover', null, $.noop);
Mark Otto's avatar
dist    
Mark Otto committed
168
      }
Mark Otto's avatar
dist    
Mark Otto committed
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185

      this._element.focus();

      this._element.setAttribute('aria-expanded', true);

      $(this._menu).toggleClass(ClassName.SHOW);
      $(parent).toggleClass(ClassName.SHOW).trigger($.Event(Event.SHOWN, relatedTarget));
    };

    _proto.dispose = function dispose() {
      $.removeData(this._element, DATA_KEY);
      $(this._element).off(EVENT_KEY);
      this._element = null;
      this._menu = null;

      if (this._popper !== null) {
        this._popper.destroy();
fat's avatar
fat committed
186

Mark Otto's avatar
dist    
Mark Otto committed
187
188
        this._popper = null;
      }
Mark Otto's avatar
dist    
Mark Otto committed
189
    };
Johann-S's avatar
build    
Johann-S committed
190

Mark Otto's avatar
dist    
Mark Otto committed
191
192
193
194
195
    _proto.update = function update() {
      this._inNavbar = this._detectNavbar();

      if (this._popper !== null) {
        this._popper.scheduleUpdate();
Johann-S's avatar
build    
Johann-S committed
196
      }
Mark Otto's avatar
dist    
Mark Otto committed
197
198
199
200
201
202
203
204
205
206
207
208
209
    }; // private


    _proto._addEventListeners = function _addEventListeners() {
      var _this = this;

      $(this._element).on(Event.CLICK, function (event) {
        event.preventDefault();
        event.stopPropagation();

        _this.toggle();
      });
    };
Johann-S's avatar
build    
Johann-S committed
210

Mark Otto's avatar
dist    
Mark Otto committed
211
    _proto._getConfig = function _getConfig(config) {
Mark Otto's avatar
dist    
Mark Otto committed
212
      config = _extends({}, this.constructor.Default, $(this._element).data(), config);
Mark Otto's avatar
dist    
Mark Otto committed
213
214
215
      Util.typeCheckConfig(NAME, config, this.constructor.DefaultType);
      return config;
    };
Johann-S's avatar
build    
Johann-S committed
216

Mark Otto's avatar
dist    
Mark Otto committed
217
218
219
220
221
    _proto._getMenuElement = function _getMenuElement() {
      if (!this._menu) {
        var parent = Dropdown._getParentFromElement(this._element);

        this._menu = $(parent).find(Selector.MENU)[0];
Johann-S's avatar
build    
Johann-S committed
222
      }
Mark Otto's avatar
dist    
Mark Otto committed
223
224
225
226
227
228
229
230
231
232
233
234
235

      return this._menu;
    };

    _proto._getPlacement = function _getPlacement() {
      var $parentDropdown = $(this._element).parent();
      var placement = AttachmentMap.BOTTOM; // Handle dropup

      if ($parentDropdown.hasClass(ClassName.DROPUP)) {
        placement = AttachmentMap.TOP;

        if ($(this._menu).hasClass(ClassName.MENURIGHT)) {
          placement = AttachmentMap.TOPEND;
Mark Otto's avatar
build    
Mark Otto committed
236
        }
Mark Otto's avatar
dist    
Mark Otto committed
237
238
239
240
      } else if ($parentDropdown.hasClass(ClassName.DROPRIGHT)) {
        placement = AttachmentMap.RIGHT;
      } else if ($parentDropdown.hasClass(ClassName.DROPLEFT)) {
        placement = AttachmentMap.LEFT;
Mark Otto's avatar
dist    
Mark Otto committed
241
242
      } else if ($(this._menu).hasClass(ClassName.MENURIGHT)) {
        placement = AttachmentMap.BOTTOMEND;
Mark Otto's avatar
build    
Mark Otto committed
243
      }
Mark Otto's avatar
dist    
Mark Otto committed
244
245
246
247
248
249
250
251
252

      return placement;
    };

    _proto._detectNavbar = function _detectNavbar() {
      return $(this._element).closest('.navbar').length > 0;
    };

    _proto._getPopperConfig = function _getPopperConfig() {
Mark Otto's avatar
dist    
Mark Otto committed
253
254
255
256
257
258
      var _this2 = this;

      var offsetConf = {};

      if (typeof this._config.offset === 'function') {
        offsetConf.fn = function (data) {
Mark Otto's avatar
dist    
Mark Otto committed
259
          data.offsets = _extends({}, data.offsets, _this2._config.offset(data.offsets) || {});
Mark Otto's avatar
dist    
Mark Otto committed
260
261
262
263
264
265
          return data;
        };
      } else {
        offsetConf.offset = this._config.offset;
      }

Mark Otto's avatar
dist    
Mark Otto committed
266
267
268
      var popperConfig = {
        placement: this._getPlacement(),
        modifiers: {
Mark Otto's avatar
dist    
Mark Otto committed
269
          offset: offsetConf,
Mark Otto's avatar
dist    
Mark Otto committed
270
271
          flip: {
            enabled: this._config.flip
Mark Otto's avatar
dist    
Mark Otto committed
272
273
274
          },
          preventOverflow: {
            boundariesElement: this._config.boundary
Mark Otto's avatar
build    
Mark Otto committed
275
          }
Mark Otto's avatar
dist    
Mark Otto committed
276
        }
Mark Otto's avatar
dist    
Mark Otto committed
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
      };
      return popperConfig;
    }; // static


    Dropdown._jQueryInterface = function _jQueryInterface(config) {
      return this.each(function () {
        var data = $(this).data(DATA_KEY);

        var _config = typeof config === 'object' ? config : null;

        if (!data) {
          data = new Dropdown(this, _config);
          $(this).data(DATA_KEY, data);
        }

        if (typeof config === 'string') {
          if (typeof data[config] === 'undefined') {
            throw new Error("No method named \"" + config + "\"");
Mark Otto's avatar
dist    
Mark Otto committed
296
          }
Mark Otto's avatar
build    
Mark Otto committed
297

Mark Otto's avatar
dist    
Mark Otto committed
298
          data[config]();
Mark Otto's avatar
dist    
Mark Otto committed
299
        }
Mark Otto's avatar
dist    
Mark Otto committed
300
301
302
303
304
305
      });
    };

    Dropdown._clearMenus = function _clearMenus(event) {
      if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === 'keyup' && event.which !== TAB_KEYCODE)) {
        return;
Mark Otto's avatar
build    
Mark Otto committed
306
307
      }

Mark Otto's avatar
dist    
Mark Otto committed
308
      var toggles = $.makeArray($(Selector.DATA_TOGGLE));
fat's avatar
fat committed
309

Mark Otto's avatar
dist    
Mark Otto committed
310
311
      for (var i = 0; i < toggles.length; i++) {
        var parent = Dropdown._getParentFromElement(toggles[i]);
fat's avatar
fat committed
312

Mark Otto's avatar
dist    
Mark Otto committed
313
314
315
316
        var context = $(toggles[i]).data(DATA_KEY);
        var relatedTarget = {
          relatedTarget: toggles[i]
        };
fat's avatar
fat committed
317

Mark Otto's avatar
dist    
Mark Otto committed
318
319
        if (!context) {
          continue;
Johann-S's avatar
build    
Johann-S committed
320
321
        }

Mark Otto's avatar
dist    
Mark Otto committed
322
        var dropdownMenu = context._menu;
fat's avatar
fat committed
323

Mark Otto's avatar
dist    
Mark Otto committed
324
325
326
        if (!$(parent).hasClass(ClassName.SHOW)) {
          continue;
        }
fat's avatar
fat committed
327

Mark Otto's avatar
dist    
Mark Otto committed
328
329
330
        if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && $.contains(parent, event.target)) {
          continue;
        }
Mark Otto's avatar
grunt    
Mark Otto committed
331

Mark Otto's avatar
dist    
Mark Otto committed
332
333
        var hideEvent = $.Event(Event.HIDE, relatedTarget);
        $(parent).trigger(hideEvent);
Mark Otto's avatar
grunt    
Mark Otto committed
334

Mark Otto's avatar
dist    
Mark Otto committed
335
336
337
338
        if (hideEvent.isDefaultPrevented()) {
          continue;
        } // if this is a touch-enabled device we remove the extra
        // empty mouseover listeners we added for iOS support
Mark Otto's avatar
grunt    
Mark Otto committed
339
340


Mark Otto's avatar
dist    
Mark Otto committed
341
342
        if ('ontouchstart' in document.documentElement) {
          $('body').children().off('mouseover', null, $.noop);
Mark Otto's avatar
dist    
Mark Otto committed
343
        }
Mark Otto's avatar
dist    
Mark Otto committed
344
345
346
347

        toggles[i].setAttribute('aria-expanded', 'false');
        $(dropdownMenu).removeClass(ClassName.SHOW);
        $(parent).removeClass(ClassName.SHOW).trigger($.Event(Event.HIDDEN, relatedTarget));
fat's avatar
fat committed
348
      }
Mark Otto's avatar
dist    
Mark Otto committed
349
    };
fat's avatar
fat committed
350

Mark Otto's avatar
dist    
Mark Otto committed
351
352
353
    Dropdown._getParentFromElement = function _getParentFromElement(element) {
      var parent;
      var selector = Util.getSelectorFromElement(element);
fat's avatar
fat committed
354

Mark Otto's avatar
dist    
Mark Otto committed
355
356
      if (selector) {
        parent = $(selector)[0];
Mark Otto's avatar
grunt    
Mark Otto committed
357
      }
Mark Otto's avatar
dist    
Mark Otto committed
358

Mark Otto's avatar
dist    
Mark Otto committed
359
360
      return parent || element.parentNode;
    };
fat's avatar
fat committed
361

Mark Otto's avatar
dist    
Mark Otto committed
362
    Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) {
Mark Otto's avatar
dist    
Mark Otto committed
363
364
365
366
367
368
369
370
      // If not input/textarea:
      //  - And not a key in REGEXP_KEYDOWN => not a dropdown command
      // If input/textarea:
      //  - If space key => not a dropdown command
      //  - If key is other than escape
      //    - If key is not up or down => not a dropdown command
      //    - If trigger inside the menu => not a dropdown command
      if (/input|textarea/i.test(event.target.tagName) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || $(event.target).closest(Selector.MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {
Mark Otto's avatar
dist    
Mark Otto committed
371
372
        return;
      }
fat's avatar
fat committed
373

Mark Otto's avatar
dist    
Mark Otto committed
374
375
      event.preventDefault();
      event.stopPropagation();
fat's avatar
fat committed
376

Mark Otto's avatar
dist    
Mark Otto committed
377
378
379
      if (this.disabled || $(this).hasClass(ClassName.DISABLED)) {
        return;
      }
fat's avatar
fat committed
380

Mark Otto's avatar
dist    
Mark Otto committed
381
      var parent = Dropdown._getParentFromElement(this);
Mark Otto's avatar
grunt    
Mark Otto committed
382

Mark Otto's avatar
dist    
Mark Otto committed
383
384
385
386
387
388
      var isActive = $(parent).hasClass(ClassName.SHOW);

      if (!isActive && (event.which !== ESCAPE_KEYCODE || event.which !== SPACE_KEYCODE) || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {
        if (event.which === ESCAPE_KEYCODE) {
          var toggle = $(parent).find(Selector.DATA_TOGGLE)[0];
          $(toggle).trigger('focus');
fat's avatar
fat committed
389
390
        }

Mark Otto's avatar
dist    
Mark Otto committed
391
392
393
        $(this).trigger('click');
        return;
      }
fat's avatar
fat committed
394

Mark Otto's avatar
dist    
Mark Otto committed
395
      var items = $(parent).find(Selector.VISIBLE_ITEMS).get();
fat's avatar
fat committed
396

Mark Otto's avatar
dist    
Mark Otto committed
397
398
399
      if (!items.length) {
        return;
      }
fat's avatar
fat committed
400

Mark Otto's avatar
dist    
Mark Otto committed
401
      var index = items.indexOf(event.target);
Mark Otto's avatar
Mark Otto committed
402

Mark Otto's avatar
dist    
Mark Otto committed
403
404
405
406
      if (event.which === ARROW_UP_KEYCODE && index > 0) {
        // up
        index--;
      }
Mark Otto's avatar
Mark Otto committed
407

Mark Otto's avatar
dist    
Mark Otto committed
408
409
410
411
      if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) {
        // down
        index++;
      }
fat's avatar
fat committed
412

Mark Otto's avatar
dist    
Mark Otto committed
413
414
      if (index < 0) {
        index = 0;
fat's avatar
fat committed
415
      }
Mark Otto's avatar
dist    
Mark Otto committed
416
417
418
419
420
421

      items[index].focus();
    };

    _createClass(Dropdown, null, [{
      key: "VERSION",
Jacob Thornton's avatar
Jacob Thornton committed
422
423
424
      get: function get() {
        return VERSION;
      }
Johann-S's avatar
build    
Johann-S committed
425
    }, {
Mark Otto's avatar
dist    
Mark Otto committed
426
      key: "Default",
Johann-S's avatar
build    
Johann-S committed
427
428
429
430
      get: function get() {
        return Default;
      }
    }, {
Mark Otto's avatar
dist    
Mark Otto committed
431
      key: "DefaultType",
Johann-S's avatar
build    
Johann-S committed
432
433
434
      get: function get() {
        return DefaultType;
      }
fat's avatar
fat committed
435
436
437
    }]);

    return Dropdown;
Mark Otto's avatar
grunt    
Mark Otto committed
438
439
440
441
442
443
  }();
  /**
   * ------------------------------------------------------------------------
   * Data Api implementation
   * ------------------------------------------------------------------------
   */
fat's avatar
fat committed
444

Mark Otto's avatar
dist    
Mark Otto committed
445
446

  $(document).on(Event.KEYDOWN_DATA_API, Selector.DATA_TOGGLE, Dropdown._dataApiKeydownHandler).on(Event.KEYDOWN_DATA_API, Selector.MENU, Dropdown._dataApiKeydownHandler).on(Event.CLICK_DATA_API + " " + Event.KEYUP_DATA_API, Dropdown._clearMenus).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {
Johann-S's avatar
build    
Johann-S committed
447
448
    event.preventDefault();
    event.stopPropagation();
Mark Otto's avatar
dist    
Mark Otto committed
449

Johann-S's avatar
build    
Johann-S committed
450
451
    Dropdown._jQueryInterface.call($(this), 'toggle');
  }).on(Event.CLICK_DATA_API, Selector.FORM_CHILD, function (e) {
fat's avatar
fat committed
452
    e.stopPropagation();
Mark Otto's avatar
Mark Otto committed
453
  });
fat's avatar
fat committed
454
455
456
457
458
459
  /**
   * ------------------------------------------------------------------------
   * jQuery
   * ------------------------------------------------------------------------
   */

Mark Otto's avatar
Mark Otto committed
460
  $.fn[NAME] = Dropdown._jQueryInterface;
fat's avatar
fat committed
461
  $.fn[NAME].Constructor = Dropdown;
Mark Otto's avatar
dist    
Mark Otto committed
462

fat's avatar
fat committed
463
464
465
466
467
468
  $.fn[NAME].noConflict = function () {
    $.fn[NAME] = JQUERY_NO_CONFLICT;
    return Dropdown._jQueryInterface;
  };

  return Dropdown;
Mark Otto's avatar
dist    
Mark Otto committed
469
}($, Popper);
Mark Otto's avatar
build    
Mark Otto committed
470
//# sourceMappingURL=dropdown.js.map