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
      if (showEvent.isDefaultPrevented()) {
        return;
Mark Otto's avatar
dist    
Mark Otto committed
127
      } // Disable totally Popper.js for Dropdown in Navbar
Mark Otto's avatar
dist    
Mark Otto committed
128
129


Mark Otto's avatar
dist    
Mark Otto committed
130
131
132
133
134
135
136
137
      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
138

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

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

Mark Otto's avatar
dist    
Mark Otto committed
147
148
        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
149
150
151
      // 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
152

Mark Otto's avatar
dist    
Mark Otto committed
153

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

      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
174

Mark Otto's avatar
dist    
Mark Otto committed
175
176
        this._popper = null;
      }
Mark Otto's avatar
dist    
Mark Otto committed
177
    };
Johann-S's avatar
build    
Johann-S committed
178

Mark Otto's avatar
dist    
Mark Otto committed
179
180
181
182
183
    _proto.update = function update() {
      this._inNavbar = this._detectNavbar();

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

Mark Otto's avatar
dist    
Mark Otto committed
199
200
201
202
203
    _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
204

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

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

      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
241
242
243
244
245
246
247
248
249
250
251
252
253
      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
254
255
256
      var popperConfig = {
        placement: this._getPlacement(),
        modifiers: {
Mark Otto's avatar
dist    
Mark Otto committed
257
          offset: offsetConf,
Mark Otto's avatar
dist    
Mark Otto committed
258
259
          flip: {
            enabled: this._config.flip
Mark Otto's avatar
build    
Mark Otto committed
260
          }
Mark Otto's avatar
dist    
Mark Otto committed
261
        }
Mark Otto's avatar
dist    
Mark Otto committed
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
      };
      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
281
          }
Mark Otto's avatar
build    
Mark Otto committed
282

Mark Otto's avatar
dist    
Mark Otto committed
283
          data[config]();
Mark Otto's avatar
dist    
Mark Otto committed
284
        }
Mark Otto's avatar
dist    
Mark Otto committed
285
286
287
288
289
290
      });
    };

    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
291
292
      }

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

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

Mark Otto's avatar
dist    
Mark Otto committed
298
299
300
301
        var context = $(toggles[i]).data(DATA_KEY);
        var relatedTarget = {
          relatedTarget: toggles[i]
        };
fat's avatar
fat committed
302

Mark Otto's avatar
dist    
Mark Otto committed
303
304
        if (!context) {
          continue;
Johann-S's avatar
build    
Johann-S committed
305
306
        }

Mark Otto's avatar
dist    
Mark Otto committed
307
        var dropdownMenu = context._menu;
fat's avatar
fat committed
308

Mark Otto's avatar
dist    
Mark Otto committed
309
310
311
        if (!$(parent).hasClass(ClassName.SHOW)) {
          continue;
        }
fat's avatar
fat committed
312

Mark Otto's avatar
dist    
Mark Otto committed
313
314
315
        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
316

Mark Otto's avatar
dist    
Mark Otto committed
317
318
        var hideEvent = $.Event(Event.HIDE, relatedTarget);
        $(parent).trigger(hideEvent);
Mark Otto's avatar
grunt    
Mark Otto committed
319

Mark Otto's avatar
dist    
Mark Otto committed
320
321
322
323
        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
324
325


Mark Otto's avatar
dist    
Mark Otto committed
326
327
        if ('ontouchstart' in document.documentElement) {
          $('body').children().off('mouseover', null, $.noop);
Mark Otto's avatar
dist    
Mark Otto committed
328
        }
Mark Otto's avatar
dist    
Mark Otto committed
329
330
331
332

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

Mark Otto's avatar
dist    
Mark Otto committed
336
337
338
    Dropdown._getParentFromElement = function _getParentFromElement(element) {
      var parent;
      var selector = Util.getSelectorFromElement(element);
fat's avatar
fat committed
339

Mark Otto's avatar
dist    
Mark Otto committed
340
341
      if (selector) {
        parent = $(selector)[0];
Mark Otto's avatar
grunt    
Mark Otto committed
342
      }
Mark Otto's avatar
dist    
Mark Otto committed
343

Mark Otto's avatar
dist    
Mark Otto committed
344
345
      return parent || element.parentNode;
    };
fat's avatar
fat committed
346

Mark Otto's avatar
dist    
Mark Otto committed
347
    Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) {
Mark Otto's avatar
dist    
Mark Otto committed
348
349
350
351
352
353
354
355
      // 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
356
357
        return;
      }
fat's avatar
fat committed
358

Mark Otto's avatar
dist    
Mark Otto committed
359
360
      event.preventDefault();
      event.stopPropagation();
fat's avatar
fat committed
361

Mark Otto's avatar
dist    
Mark Otto committed
362
363
364
      if (this.disabled || $(this).hasClass(ClassName.DISABLED)) {
        return;
      }
fat's avatar
fat committed
365

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

Mark Otto's avatar
dist    
Mark Otto committed
368
369
370
371
372
373
      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
374
375
        }

Mark Otto's avatar
dist    
Mark Otto committed
376
377
378
        $(this).trigger('click');
        return;
      }
fat's avatar
fat committed
379

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

Mark Otto's avatar
dist    
Mark Otto committed
382
383
384
      if (!items.length) {
        return;
      }
fat's avatar
fat committed
385

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

Mark Otto's avatar
dist    
Mark Otto committed
388
389
390
391
      if (event.which === ARROW_UP_KEYCODE && index > 0) {
        // up
        index--;
      }
Mark Otto's avatar
Mark Otto committed
392

Mark Otto's avatar
dist    
Mark Otto committed
393
394
395
396
      if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) {
        // down
        index++;
      }
fat's avatar
fat committed
397

Mark Otto's avatar
dist    
Mark Otto committed
398
399
      if (index < 0) {
        index = 0;
fat's avatar
fat committed
400
      }
Mark Otto's avatar
dist    
Mark Otto committed
401
402
403
404
405
406

      items[index].focus();
    };

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

    return Dropdown;
Mark Otto's avatar
grunt    
Mark Otto committed
423
424
425
426
427
428
  }();
  /**
   * ------------------------------------------------------------------------
   * Data Api implementation
   * ------------------------------------------------------------------------
   */
fat's avatar
fat committed
429

Mark Otto's avatar
dist    
Mark Otto committed
430
431

  $(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
432
433
    event.preventDefault();
    event.stopPropagation();
Mark Otto's avatar
dist    
Mark Otto committed
434

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

Mark Otto's avatar
Mark Otto committed
445
  $.fn[NAME] = Dropdown._jQueryInterface;
fat's avatar
fat committed
446
  $.fn[NAME].Constructor = Dropdown;
Mark Otto's avatar
dist    
Mark Otto committed
447

fat's avatar
fat committed
448
449
450
451
452
453
  $.fn[NAME].noConflict = function () {
    $.fn[NAME] = JQUERY_NO_CONFLICT;
    return Dropdown._jQueryInterface;
  };

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