dropdown.js 13.8 KB
Newer Older
Mark Otto's avatar
dist    
Mark Otto committed
1
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
2

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

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

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

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

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

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

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

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

Mark Otto's avatar
dist    
Mark Otto committed
85
  };
fat's avatar
fat committed
86

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

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

Jacob Thornton's avatar
Jacob Thornton committed
100

Mark Otto's avatar
dist    
Mark Otto committed
101
    var _proto = Dropdown.prototype;
fat's avatar
fat committed
102

Mark Otto's avatar
dist    
Mark Otto committed
103
104
105
106
107
    // public
    _proto.toggle = function toggle() {
      if (this._element.disabled || $(this._element).hasClass(ClassName.DISABLED)) {
        return;
      }
fat's avatar
fat committed
108

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

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

Mark Otto's avatar
dist    
Mark Otto committed
113
      Dropdown._clearMenus();
fat's avatar
fat committed
114

Mark Otto's avatar
dist    
Mark Otto committed
115
116
117
      if (isActive) {
        return;
      }
fat's avatar
fat committed
118

Mark Otto's avatar
dist    
Mark Otto committed
119
120
121
122
123
      var relatedTarget = {
        relatedTarget: this._element
      };
      var showEvent = $.Event(Event.SHOW, relatedTarget);
      $(parent).trigger(showEvent);
fat's avatar
fat committed
124

Mark Otto's avatar
dist    
Mark Otto committed
125
126
127
      if (showEvent.isDefaultPrevented()) {
        return;
      }
Mark Otto's avatar
dist    
Mark Otto committed
128
129
130
131
132
133
134
135
136
      /**
       * 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
137

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

Mark Otto's avatar
dist    
Mark Otto committed
140
141
142
      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
143
        }
Mark Otto's avatar
dist    
Mark Otto committed
144
      }
fat's avatar
fat committed
145

Mark Otto's avatar
dist    
Mark Otto committed
146
147
148
149
      this._popper = new Popper(element, this._menu, this._getPopperConfig()); // if this is a touch-enabled device we add extra
      // 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
150

Mark Otto's avatar
dist    
Mark Otto committed
151
152
      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
153
      }
Mark Otto's avatar
dist    
Mark Otto committed
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170

      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();
Johann-S's avatar
build    
Johann-S committed
171
      }
fat's avatar
fat committed
172

Mark Otto's avatar
dist    
Mark Otto committed
173
174
      this._popper = null;
    };
Johann-S's avatar
build    
Johann-S committed
175

Mark Otto's avatar
dist    
Mark Otto committed
176
177
178
179
180
    _proto.update = function update() {
      this._inNavbar = this._detectNavbar();

      if (this._popper !== null) {
        this._popper.scheduleUpdate();
Johann-S's avatar
build    
Johann-S committed
181
      }
Mark Otto's avatar
dist    
Mark Otto committed
182
183
184
185
186
187
188
189
190
191
192
193
194
    }; // 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
195

Mark Otto's avatar
dist    
Mark Otto committed
196
197
198
199
200
    _proto._getConfig = function _getConfig(config) {
      config = $.extend({}, this.constructor.Default, $(this._element).data(), config);
      Util.typeCheckConfig(NAME, config, this.constructor.DefaultType);
      return config;
    };
Johann-S's avatar
build    
Johann-S committed
201

Mark Otto's avatar
dist    
Mark Otto committed
202
203
204
205
206
    _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
207
      }
Mark Otto's avatar
dist    
Mark Otto committed
208
209
210
211
212
213
214
215
216
217
218
219
220

      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
221
        }
Mark Otto's avatar
dist    
Mark Otto committed
222
223
224
225
      } 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
226
227
      } else if ($(this._menu).hasClass(ClassName.MENURIGHT)) {
        placement = AttachmentMap.BOTTOMEND;
Mark Otto's avatar
build    
Mark Otto committed
228
      }
Mark Otto's avatar
dist    
Mark Otto committed
229
230
231
232
233
234
235
236
237

      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
238
239
240
241
242
243
244
245
246
247
248
249
250
      var _this2 = this;

      var offsetConf = {};

      if (typeof this._config.offset === 'function') {
        offsetConf.fn = function (data) {
          data.offsets = $.extend({}, data.offsets, _this2._config.offset(data.offsets) || {});
          return data;
        };
      } else {
        offsetConf.offset = this._config.offset;
      }

Mark Otto's avatar
dist    
Mark Otto committed
251
252
253
      var popperConfig = {
        placement: this._getPlacement(),
        modifiers: {
Mark Otto's avatar
dist    
Mark Otto committed
254
          offset: offsetConf,
Mark Otto's avatar
dist    
Mark Otto committed
255
256
          flip: {
            enabled: this._config.flip
Mark Otto's avatar
build    
Mark Otto committed
257
          }
Mark Otto's avatar
dist    
Mark Otto committed
258
259
260
261
262
263
264
265
        } // Disable Popper.js for Dropdown in Navbar

      };

      if (this._inNavbar) {
        popperConfig.modifiers.applyStyle = {
          enabled: !this._inNavbar
        };
Mark Otto's avatar
dist    
Mark Otto committed
266
      }
Mark Otto's avatar
dist    
Mark Otto committed
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285

      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
286
          }
Mark Otto's avatar
build    
Mark Otto committed
287

Mark Otto's avatar
dist    
Mark Otto committed
288
          data[config]();
Mark Otto's avatar
dist    
Mark Otto committed
289
        }
Mark Otto's avatar
dist    
Mark Otto committed
290
291
292
293
294
295
      });
    };

    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
296
297
      }

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

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

Mark Otto's avatar
dist    
Mark Otto committed
303
304
305
306
        var context = $(toggles[i]).data(DATA_KEY);
        var relatedTarget = {
          relatedTarget: toggles[i]
        };
fat's avatar
fat committed
307

Mark Otto's avatar
dist    
Mark Otto committed
308
309
        if (!context) {
          continue;
Johann-S's avatar
build    
Johann-S committed
310
311
        }

Mark Otto's avatar
dist    
Mark Otto committed
312
        var dropdownMenu = context._menu;
fat's avatar
fat committed
313

Mark Otto's avatar
dist    
Mark Otto committed
314
315
316
        if (!$(parent).hasClass(ClassName.SHOW)) {
          continue;
        }
fat's avatar
fat committed
317

Mark Otto's avatar
dist    
Mark Otto committed
318
319
320
        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
321

Mark Otto's avatar
dist    
Mark Otto committed
322
323
        var hideEvent = $.Event(Event.HIDE, relatedTarget);
        $(parent).trigger(hideEvent);
Mark Otto's avatar
grunt    
Mark Otto committed
324

Mark Otto's avatar
dist    
Mark Otto committed
325
326
327
328
        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
329
330


Mark Otto's avatar
dist    
Mark Otto committed
331
332
        if ('ontouchstart' in document.documentElement) {
          $('body').children().off('mouseover', null, $.noop);
Mark Otto's avatar
dist    
Mark Otto committed
333
        }
Mark Otto's avatar
dist    
Mark Otto committed
334
335
336
337

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

Mark Otto's avatar
dist    
Mark Otto committed
341
342
343
    Dropdown._getParentFromElement = function _getParentFromElement(element) {
      var parent;
      var selector = Util.getSelectorFromElement(element);
fat's avatar
fat committed
344

Mark Otto's avatar
dist    
Mark Otto committed
345
346
      if (selector) {
        parent = $(selector)[0];
Mark Otto's avatar
grunt    
Mark Otto committed
347
      }
Mark Otto's avatar
dist    
Mark Otto committed
348

Mark Otto's avatar
dist    
Mark Otto committed
349
350
      return parent || element.parentNode;
    };
fat's avatar
fat committed
351

Mark Otto's avatar
dist    
Mark Otto committed
352
    Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) {
Mark Otto's avatar
dist    
Mark Otto committed
353
354
355
356
357
358
359
360
      // 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
361
362
        return;
      }
fat's avatar
fat committed
363

Mark Otto's avatar
dist    
Mark Otto committed
364
365
      event.preventDefault();
      event.stopPropagation();
fat's avatar
fat committed
366

Mark Otto's avatar
dist    
Mark Otto committed
367
368
369
      if (this.disabled || $(this).hasClass(ClassName.DISABLED)) {
        return;
      }
fat's avatar
fat committed
370

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

Mark Otto's avatar
dist    
Mark Otto committed
373
374
375
376
377
378
      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
379
380
        }

Mark Otto's avatar
dist    
Mark Otto committed
381
382
383
        $(this).trigger('click');
        return;
      }
fat's avatar
fat committed
384

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

Mark Otto's avatar
dist    
Mark Otto committed
387
388
389
      if (!items.length) {
        return;
      }
fat's avatar
fat committed
390

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

Mark Otto's avatar
dist    
Mark Otto committed
393
394
395
396
      if (event.which === ARROW_UP_KEYCODE && index > 0) {
        // up
        index--;
      }
Mark Otto's avatar
Mark Otto committed
397

Mark Otto's avatar
dist    
Mark Otto committed
398
399
400
401
      if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) {
        // down
        index++;
      }
fat's avatar
fat committed
402

Mark Otto's avatar
dist    
Mark Otto committed
403
404
      if (index < 0) {
        index = 0;
fat's avatar
fat committed
405
      }
Mark Otto's avatar
dist    
Mark Otto committed
406
407
408
409
410
411

      items[index].focus();
    };

    _createClass(Dropdown, null, [{
      key: "VERSION",
Jacob Thornton's avatar
Jacob Thornton committed
412
413
414
      get: function get() {
        return VERSION;
      }
Johann-S's avatar
build    
Johann-S committed
415
    }, {
Mark Otto's avatar
dist    
Mark Otto committed
416
      key: "Default",
Johann-S's avatar
build    
Johann-S committed
417
418
419
420
      get: function get() {
        return Default;
      }
    }, {
Mark Otto's avatar
dist    
Mark Otto committed
421
      key: "DefaultType",
Johann-S's avatar
build    
Johann-S committed
422
423
424
      get: function get() {
        return DefaultType;
      }
fat's avatar
fat committed
425
426
427
    }]);

    return Dropdown;
Mark Otto's avatar
grunt    
Mark Otto committed
428
429
430
431
432
433
  }();
  /**
   * ------------------------------------------------------------------------
   * Data Api implementation
   * ------------------------------------------------------------------------
   */
fat's avatar
fat committed
434

Mark Otto's avatar
dist    
Mark Otto committed
435
436

  $(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
437
438
    event.preventDefault();
    event.stopPropagation();
Mark Otto's avatar
dist    
Mark Otto committed
439

Johann-S's avatar
build    
Johann-S committed
440
441
    Dropdown._jQueryInterface.call($(this), 'toggle');
  }).on(Event.CLICK_DATA_API, Selector.FORM_CHILD, function (e) {
fat's avatar
fat committed
442
    e.stopPropagation();
Mark Otto's avatar
Mark Otto committed
443
  });
fat's avatar
fat committed
444
445
446
447
448
449
  /**
   * ------------------------------------------------------------------------
   * jQuery
   * ------------------------------------------------------------------------
   */

Mark Otto's avatar
Mark Otto committed
450
  $.fn[NAME] = Dropdown._jQueryInterface;
fat's avatar
fat committed
451
  $.fn[NAME].Constructor = Dropdown;
Mark Otto's avatar
dist    
Mark Otto committed
452

fat's avatar
fat committed
453
454
455
456
457
458
  $.fn[NAME].noConflict = function () {
    $.fn[NAME] = JQUERY_NO_CONFLICT;
    return Dropdown._jQueryInterface;
  };

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