bootstrap 4.3.1 → 4.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +15 -1
- data/CHANGELOG.md +2 -14
- data/README.md +1 -1
- data/assets/javascripts/bootstrap/alert.js +26 -35
- data/assets/javascripts/bootstrap/button.js +93 -52
- data/assets/javascripts/bootstrap/carousel.js +122 -120
- data/assets/javascripts/bootstrap/collapse.js +75 -71
- data/assets/javascripts/bootstrap/dropdown.js +143 -140
- data/assets/javascripts/bootstrap/modal.js +165 -134
- data/assets/javascripts/bootstrap/popover.js +47 -39
- data/assets/javascripts/bootstrap/scrollspy.js +71 -71
- data/assets/javascripts/bootstrap/tab.js +51 -60
- data/assets/javascripts/bootstrap/toast.js +84 -72
- data/assets/javascripts/bootstrap/tooltip.js +141 -131
- data/assets/javascripts/bootstrap/util.js +28 -7
- data/assets/javascripts/bootstrap-sprockets.js +6 -6
- data/assets/javascripts/bootstrap.js +811 -826
- data/assets/javascripts/bootstrap.min.js +3 -3
- data/assets/stylesheets/_bootstrap-grid.scss +3 -3
- data/assets/stylesheets/_bootstrap-reboot.scss +3 -3
- data/assets/stylesheets/_bootstrap.scss +3 -3
- data/assets/stylesheets/bootstrap/_badge.scss +1 -1
- data/assets/stylesheets/bootstrap/_breadcrumb.scss +4 -1
- data/assets/stylesheets/bootstrap/_button-group.scss +1 -1
- data/assets/stylesheets/bootstrap/_buttons.scss +13 -8
- data/assets/stylesheets/bootstrap/_card.scss +28 -35
- data/assets/stylesheets/bootstrap/_carousel.scss +6 -6
- data/assets/stylesheets/bootstrap/_close.scss +2 -3
- data/assets/stylesheets/bootstrap/_code.scss +1 -1
- data/assets/stylesheets/bootstrap/_custom-forms.scss +24 -9
- data/assets/stylesheets/bootstrap/_dropdown.scss +5 -4
- data/assets/stylesheets/bootstrap/_forms.scss +26 -9
- data/assets/stylesheets/bootstrap/_functions.scss +60 -5
- data/assets/stylesheets/bootstrap/_grid.scss +33 -8
- data/assets/stylesheets/bootstrap/_images.scss +2 -2
- data/assets/stylesheets/bootstrap/_input-group.scss +1 -2
- data/assets/stylesheets/bootstrap/_list-group.scss +36 -31
- data/assets/stylesheets/bootstrap/_mixins.scss +3 -3
- data/assets/stylesheets/bootstrap/_modal.scss +28 -16
- data/assets/stylesheets/bootstrap/_nav.scss +4 -3
- data/assets/stylesheets/bootstrap/_navbar.scss +45 -15
- data/assets/stylesheets/bootstrap/_pagination.scss +3 -2
- data/assets/stylesheets/bootstrap/_popover.scss +8 -9
- data/assets/stylesheets/bootstrap/_print.scss +2 -2
- data/assets/stylesheets/bootstrap/_progress.scss +6 -2
- data/assets/stylesheets/bootstrap/_reboot.scss +24 -27
- data/assets/stylesheets/bootstrap/_root.scss +1 -0
- data/assets/stylesheets/bootstrap/_spinners.scss +1 -0
- data/assets/stylesheets/bootstrap/_tables.scss +3 -3
- data/assets/stylesheets/bootstrap/_type.scss +2 -2
- data/assets/stylesheets/bootstrap/_utilities.scss +2 -1
- data/assets/stylesheets/bootstrap/_variables.scss +46 -22
- data/assets/stylesheets/bootstrap/mixins/_background-variant.scss +5 -3
- data/assets/stylesheets/bootstrap/mixins/_badge.scss +1 -1
- data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +26 -13
- data/assets/stylesheets/bootstrap/mixins/_buttons.scss +11 -8
- data/assets/stylesheets/bootstrap/mixins/_caret.scss +8 -8
- data/assets/stylesheets/bootstrap/mixins/_float.scss +3 -3
- data/assets/stylesheets/bootstrap/mixins/_forms.scss +34 -49
- data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +30 -15
- data/assets/stylesheets/bootstrap/mixins/_grid.scss +18 -0
- data/assets/stylesheets/bootstrap/mixins/_hover.scss +4 -4
- data/assets/stylesheets/bootstrap/mixins/_image.scss +1 -1
- data/assets/stylesheets/bootstrap/mixins/_list-group.scss +1 -1
- data/assets/stylesheets/bootstrap/mixins/_lists.scss +1 -1
- data/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +2 -1
- data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +1 -1
- data/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +3 -2
- data/assets/stylesheets/bootstrap/mixins/_table-row.scss +1 -1
- data/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +3 -2
- data/assets/stylesheets/bootstrap/mixins/_transition.scss +17 -7
- data/assets/stylesheets/bootstrap/utilities/_background.scss +2 -2
- data/assets/stylesheets/bootstrap/utilities/_interactions.scss +5 -0
- data/assets/stylesheets/bootstrap/utilities/_text.scss +3 -4
- data/bootstrap.gemspec +1 -1
- data/lib/bootstrap/version.rb +2 -2
- data/tasks/updater/network.rb +2 -2
- data/test/dummy_rails/app/assets/config/manifest.js +3 -0
- data/test/dummy_rails/app/assets/stylesheets/.browserslistrc +1 -0
- data/test/gemfiles/rails_6_0.gemfile +7 -0
- data/test/support/dummy_rails_integration.rb +3 -1
- data/test/test_helper.rb +18 -13
- metadata +11 -5
@@ -1,17 +1,17 @@
|
|
1
1
|
/*!
|
2
|
-
* Bootstrap dropdown.js v4.
|
3
|
-
* Copyright 2011-
|
2
|
+
* Bootstrap dropdown.js v4.5.0 (https://getbootstrap.com/)
|
3
|
+
* Copyright 2011-2020 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
4
4
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
5
5
|
*/
|
6
6
|
(function (global, factory) {
|
7
7
|
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('jquery'), require('popper.js'), require('./util.js')) :
|
8
8
|
typeof define === 'function' && define.amd ? define(['jquery', 'popper.js', './util.js'], factory) :
|
9
9
|
(global = global || self, global.Dropdown = factory(global.jQuery, global.Popper, global.Util));
|
10
|
-
}(this, function ($, Popper, Util) { 'use strict';
|
10
|
+
}(this, (function ($, Popper, Util) { 'use strict';
|
11
11
|
|
12
|
-
$ = $ &&
|
13
|
-
Popper = Popper &&
|
14
|
-
Util = Util &&
|
12
|
+
$ = $ && Object.prototype.hasOwnProperty.call($, 'default') ? $['default'] : $;
|
13
|
+
Popper = Popper && Object.prototype.hasOwnProperty.call(Popper, 'default') ? Popper['default'] : Popper;
|
14
|
+
Util = Util && Object.prototype.hasOwnProperty.call(Util, 'default') ? Util['default'] : Util;
|
15
15
|
|
16
16
|
function _defineProperties(target, props) {
|
17
17
|
for (var i = 0; i < props.length; i++) {
|
@@ -44,20 +44,35 @@
|
|
44
44
|
return obj;
|
45
45
|
}
|
46
46
|
|
47
|
-
function
|
47
|
+
function ownKeys(object, enumerableOnly) {
|
48
|
+
var keys = Object.keys(object);
|
49
|
+
|
50
|
+
if (Object.getOwnPropertySymbols) {
|
51
|
+
var symbols = Object.getOwnPropertySymbols(object);
|
52
|
+
if (enumerableOnly) symbols = symbols.filter(function (sym) {
|
53
|
+
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
|
54
|
+
});
|
55
|
+
keys.push.apply(keys, symbols);
|
56
|
+
}
|
57
|
+
|
58
|
+
return keys;
|
59
|
+
}
|
60
|
+
|
61
|
+
function _objectSpread2(target) {
|
48
62
|
for (var i = 1; i < arguments.length; i++) {
|
49
63
|
var source = arguments[i] != null ? arguments[i] : {};
|
50
|
-
var ownKeys = Object.keys(source);
|
51
64
|
|
52
|
-
if (
|
53
|
-
ownKeys
|
54
|
-
|
55
|
-
})
|
65
|
+
if (i % 2) {
|
66
|
+
ownKeys(Object(source), true).forEach(function (key) {
|
67
|
+
_defineProperty(target, key, source[key]);
|
68
|
+
});
|
69
|
+
} else if (Object.getOwnPropertyDescriptors) {
|
70
|
+
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
|
71
|
+
} else {
|
72
|
+
ownKeys(Object(source)).forEach(function (key) {
|
73
|
+
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
|
74
|
+
});
|
56
75
|
}
|
57
|
-
|
58
|
-
ownKeys.forEach(function (key) {
|
59
|
-
_defineProperty(target, key, source[key]);
|
60
|
-
});
|
61
76
|
}
|
62
77
|
|
63
78
|
return target;
|
@@ -70,7 +85,7 @@
|
|
70
85
|
*/
|
71
86
|
|
72
87
|
var NAME = 'dropdown';
|
73
|
-
var VERSION = '4.
|
88
|
+
var VERSION = '4.5.0';
|
74
89
|
var DATA_KEY = 'bs.dropdown';
|
75
90
|
var EVENT_KEY = "." + DATA_KEY;
|
76
91
|
var DATA_API_KEY = '.data-api';
|
@@ -88,67 +103,55 @@
|
|
88
103
|
var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse)
|
89
104
|
|
90
105
|
var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + "|" + ARROW_DOWN_KEYCODE + "|" + ESCAPE_KEYCODE);
|
91
|
-
var
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
var
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
var
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
};
|
118
|
-
var AttachmentMap = {
|
119
|
-
TOP: 'top-start',
|
120
|
-
TOPEND: 'top-end',
|
121
|
-
BOTTOM: 'bottom-start',
|
122
|
-
BOTTOMEND: 'bottom-end',
|
123
|
-
RIGHT: 'right-start',
|
124
|
-
RIGHTEND: 'right-end',
|
125
|
-
LEFT: 'left-start',
|
126
|
-
LEFTEND: 'left-end'
|
127
|
-
};
|
106
|
+
var EVENT_HIDE = "hide" + EVENT_KEY;
|
107
|
+
var EVENT_HIDDEN = "hidden" + EVENT_KEY;
|
108
|
+
var EVENT_SHOW = "show" + EVENT_KEY;
|
109
|
+
var EVENT_SHOWN = "shown" + EVENT_KEY;
|
110
|
+
var EVENT_CLICK = "click" + EVENT_KEY;
|
111
|
+
var EVENT_CLICK_DATA_API = "click" + EVENT_KEY + DATA_API_KEY;
|
112
|
+
var EVENT_KEYDOWN_DATA_API = "keydown" + EVENT_KEY + DATA_API_KEY;
|
113
|
+
var EVENT_KEYUP_DATA_API = "keyup" + EVENT_KEY + DATA_API_KEY;
|
114
|
+
var CLASS_NAME_DISABLED = 'disabled';
|
115
|
+
var CLASS_NAME_SHOW = 'show';
|
116
|
+
var CLASS_NAME_DROPUP = 'dropup';
|
117
|
+
var CLASS_NAME_DROPRIGHT = 'dropright';
|
118
|
+
var CLASS_NAME_DROPLEFT = 'dropleft';
|
119
|
+
var CLASS_NAME_MENURIGHT = 'dropdown-menu-right';
|
120
|
+
var CLASS_NAME_POSITION_STATIC = 'position-static';
|
121
|
+
var SELECTOR_DATA_TOGGLE = '[data-toggle="dropdown"]';
|
122
|
+
var SELECTOR_FORM_CHILD = '.dropdown form';
|
123
|
+
var SELECTOR_MENU = '.dropdown-menu';
|
124
|
+
var SELECTOR_NAVBAR_NAV = '.navbar-nav';
|
125
|
+
var SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';
|
126
|
+
var PLACEMENT_TOP = 'top-start';
|
127
|
+
var PLACEMENT_TOPEND = 'top-end';
|
128
|
+
var PLACEMENT_BOTTOM = 'bottom-start';
|
129
|
+
var PLACEMENT_BOTTOMEND = 'bottom-end';
|
130
|
+
var PLACEMENT_RIGHT = 'right-start';
|
131
|
+
var PLACEMENT_LEFT = 'left-start';
|
128
132
|
var Default = {
|
129
133
|
offset: 0,
|
130
134
|
flip: true,
|
131
135
|
boundary: 'scrollParent',
|
132
136
|
reference: 'toggle',
|
133
|
-
display: 'dynamic'
|
137
|
+
display: 'dynamic',
|
138
|
+
popperConfig: null
|
134
139
|
};
|
135
140
|
var DefaultType = {
|
136
141
|
offset: '(number|string|function)',
|
137
142
|
flip: 'boolean',
|
138
143
|
boundary: '(string|element)',
|
139
144
|
reference: '(string|element)',
|
140
|
-
display: 'string'
|
141
|
-
|
142
|
-
* ------------------------------------------------------------------------
|
143
|
-
* Class Definition
|
144
|
-
* ------------------------------------------------------------------------
|
145
|
-
*/
|
146
|
-
|
145
|
+
display: 'string',
|
146
|
+
popperConfig: '(null|object)'
|
147
147
|
};
|
148
|
+
/**
|
149
|
+
* ------------------------------------------------------------------------
|
150
|
+
* Class Definition
|
151
|
+
* ------------------------------------------------------------------------
|
152
|
+
*/
|
148
153
|
|
149
|
-
var Dropdown =
|
150
|
-
/*#__PURE__*/
|
151
|
-
function () {
|
154
|
+
var Dropdown = /*#__PURE__*/function () {
|
152
155
|
function Dropdown(element, config) {
|
153
156
|
this._element = element;
|
154
157
|
this._popper = null;
|
@@ -164,13 +167,11 @@
|
|
164
167
|
|
165
168
|
// Public
|
166
169
|
_proto.toggle = function toggle() {
|
167
|
-
if (this._element.disabled || $(this._element).hasClass(
|
170
|
+
if (this._element.disabled || $(this._element).hasClass(CLASS_NAME_DISABLED)) {
|
168
171
|
return;
|
169
172
|
}
|
170
173
|
|
171
|
-
var
|
172
|
-
|
173
|
-
var isActive = $(this._menu).hasClass(ClassName.SHOW);
|
174
|
+
var isActive = $(this._menu).hasClass(CLASS_NAME_SHOW);
|
174
175
|
|
175
176
|
Dropdown._clearMenus();
|
176
177
|
|
@@ -178,10 +179,25 @@
|
|
178
179
|
return;
|
179
180
|
}
|
180
181
|
|
182
|
+
this.show(true);
|
183
|
+
};
|
184
|
+
|
185
|
+
_proto.show = function show(usePopper) {
|
186
|
+
if (usePopper === void 0) {
|
187
|
+
usePopper = false;
|
188
|
+
}
|
189
|
+
|
190
|
+
if (this._element.disabled || $(this._element).hasClass(CLASS_NAME_DISABLED) || $(this._menu).hasClass(CLASS_NAME_SHOW)) {
|
191
|
+
return;
|
192
|
+
}
|
193
|
+
|
181
194
|
var relatedTarget = {
|
182
195
|
relatedTarget: this._element
|
183
196
|
};
|
184
|
-
var showEvent = $.Event(
|
197
|
+
var showEvent = $.Event(EVENT_SHOW, relatedTarget);
|
198
|
+
|
199
|
+
var parent = Dropdown._getParentFromElement(this._element);
|
200
|
+
|
185
201
|
$(parent).trigger(showEvent);
|
186
202
|
|
187
203
|
if (showEvent.isDefaultPrevented()) {
|
@@ -189,7 +205,7 @@
|
|
189
205
|
} // Disable totally Popper.js for Dropdown in Navbar
|
190
206
|
|
191
207
|
|
192
|
-
if (!this._inNavbar) {
|
208
|
+
if (!this._inNavbar && usePopper) {
|
193
209
|
/**
|
194
210
|
* Check for Popper dependency
|
195
211
|
* Popper - https://popper.js.org
|
@@ -214,7 +230,7 @@
|
|
214
230
|
|
215
231
|
|
216
232
|
if (this._config.boundary !== 'scrollParent') {
|
217
|
-
$(parent).addClass(
|
233
|
+
$(parent).addClass(CLASS_NAME_POSITION_STATIC);
|
218
234
|
}
|
219
235
|
|
220
236
|
this._popper = new Popper(referenceElement, this._menu, this._getPopperConfig());
|
@@ -224,7 +240,7 @@
|
|
224
240
|
// https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
|
225
241
|
|
226
242
|
|
227
|
-
if ('ontouchstart' in document.documentElement && $(parent).closest(
|
243
|
+
if ('ontouchstart' in document.documentElement && $(parent).closest(SELECTOR_NAVBAR_NAV).length === 0) {
|
228
244
|
$(document.body).children().on('mouseover', null, $.noop);
|
229
245
|
}
|
230
246
|
|
@@ -232,41 +248,19 @@
|
|
232
248
|
|
233
249
|
this._element.setAttribute('aria-expanded', true);
|
234
250
|
|
235
|
-
$(this._menu).toggleClass(
|
236
|
-
$(parent).toggleClass(
|
237
|
-
};
|
238
|
-
|
239
|
-
_proto.show = function show() {
|
240
|
-
if (this._element.disabled || $(this._element).hasClass(ClassName.DISABLED) || $(this._menu).hasClass(ClassName.SHOW)) {
|
241
|
-
return;
|
242
|
-
}
|
243
|
-
|
244
|
-
var relatedTarget = {
|
245
|
-
relatedTarget: this._element
|
246
|
-
};
|
247
|
-
var showEvent = $.Event(Event.SHOW, relatedTarget);
|
248
|
-
|
249
|
-
var parent = Dropdown._getParentFromElement(this._element);
|
250
|
-
|
251
|
-
$(parent).trigger(showEvent);
|
252
|
-
|
253
|
-
if (showEvent.isDefaultPrevented()) {
|
254
|
-
return;
|
255
|
-
}
|
256
|
-
|
257
|
-
$(this._menu).toggleClass(ClassName.SHOW);
|
258
|
-
$(parent).toggleClass(ClassName.SHOW).trigger($.Event(Event.SHOWN, relatedTarget));
|
251
|
+
$(this._menu).toggleClass(CLASS_NAME_SHOW);
|
252
|
+
$(parent).toggleClass(CLASS_NAME_SHOW).trigger($.Event(EVENT_SHOWN, relatedTarget));
|
259
253
|
};
|
260
254
|
|
261
255
|
_proto.hide = function hide() {
|
262
|
-
if (this._element.disabled || $(this._element).hasClass(
|
256
|
+
if (this._element.disabled || $(this._element).hasClass(CLASS_NAME_DISABLED) || !$(this._menu).hasClass(CLASS_NAME_SHOW)) {
|
263
257
|
return;
|
264
258
|
}
|
265
259
|
|
266
260
|
var relatedTarget = {
|
267
261
|
relatedTarget: this._element
|
268
262
|
};
|
269
|
-
var hideEvent = $.Event(
|
263
|
+
var hideEvent = $.Event(EVENT_HIDE, relatedTarget);
|
270
264
|
|
271
265
|
var parent = Dropdown._getParentFromElement(this._element);
|
272
266
|
|
@@ -276,8 +270,12 @@
|
|
276
270
|
return;
|
277
271
|
}
|
278
272
|
|
279
|
-
|
280
|
-
|
273
|
+
if (this._popper) {
|
274
|
+
this._popper.destroy();
|
275
|
+
}
|
276
|
+
|
277
|
+
$(this._menu).toggleClass(CLASS_NAME_SHOW);
|
278
|
+
$(parent).toggleClass(CLASS_NAME_SHOW).trigger($.Event(EVENT_HIDDEN, relatedTarget));
|
281
279
|
};
|
282
280
|
|
283
281
|
_proto.dispose = function dispose() {
|
@@ -305,7 +303,7 @@
|
|
305
303
|
_proto._addEventListeners = function _addEventListeners() {
|
306
304
|
var _this = this;
|
307
305
|
|
308
|
-
$(this._element).on(
|
306
|
+
$(this._element).on(EVENT_CLICK, function (event) {
|
309
307
|
event.preventDefault();
|
310
308
|
event.stopPropagation();
|
311
309
|
|
@@ -314,7 +312,7 @@
|
|
314
312
|
};
|
315
313
|
|
316
314
|
_proto._getConfig = function _getConfig(config) {
|
317
|
-
config =
|
315
|
+
config = _objectSpread2(_objectSpread2(_objectSpread2({}, this.constructor.Default), $(this._element).data()), config);
|
318
316
|
Util.typeCheckConfig(NAME, config, this.constructor.DefaultType);
|
319
317
|
return config;
|
320
318
|
};
|
@@ -324,7 +322,7 @@
|
|
324
322
|
var parent = Dropdown._getParentFromElement(this._element);
|
325
323
|
|
326
324
|
if (parent) {
|
327
|
-
this._menu = parent.querySelector(
|
325
|
+
this._menu = parent.querySelector(SELECTOR_MENU);
|
328
326
|
}
|
329
327
|
}
|
330
328
|
|
@@ -333,20 +331,16 @@
|
|
333
331
|
|
334
332
|
_proto._getPlacement = function _getPlacement() {
|
335
333
|
var $parentDropdown = $(this._element.parentNode);
|
336
|
-
var placement =
|
337
|
-
|
338
|
-
if ($parentDropdown.hasClass(
|
339
|
-
placement =
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
} else if ($
|
345
|
-
placement =
|
346
|
-
} else if ($parentDropdown.hasClass(ClassName.DROPLEFT)) {
|
347
|
-
placement = AttachmentMap.LEFT;
|
348
|
-
} else if ($(this._menu).hasClass(ClassName.MENURIGHT)) {
|
349
|
-
placement = AttachmentMap.BOTTOMEND;
|
334
|
+
var placement = PLACEMENT_BOTTOM; // Handle dropup
|
335
|
+
|
336
|
+
if ($parentDropdown.hasClass(CLASS_NAME_DROPUP)) {
|
337
|
+
placement = $(this._menu).hasClass(CLASS_NAME_MENURIGHT) ? PLACEMENT_TOPEND : PLACEMENT_TOP;
|
338
|
+
} else if ($parentDropdown.hasClass(CLASS_NAME_DROPRIGHT)) {
|
339
|
+
placement = PLACEMENT_RIGHT;
|
340
|
+
} else if ($parentDropdown.hasClass(CLASS_NAME_DROPLEFT)) {
|
341
|
+
placement = PLACEMENT_LEFT;
|
342
|
+
} else if ($(this._menu).hasClass(CLASS_NAME_MENURIGHT)) {
|
343
|
+
placement = PLACEMENT_BOTTOMEND;
|
350
344
|
}
|
351
345
|
|
352
346
|
return placement;
|
@@ -363,7 +357,7 @@
|
|
363
357
|
|
364
358
|
if (typeof this._config.offset === 'function') {
|
365
359
|
offset.fn = function (data) {
|
366
|
-
data.offsets =
|
360
|
+
data.offsets = _objectSpread2(_objectSpread2({}, data.offsets), _this2._config.offset(data.offsets, _this2._element) || {});
|
367
361
|
return data;
|
368
362
|
};
|
369
363
|
} else {
|
@@ -384,9 +378,8 @@
|
|
384
378
|
preventOverflow: {
|
385
379
|
boundariesElement: this._config.boundary
|
386
380
|
}
|
387
|
-
}
|
388
|
-
|
389
|
-
};
|
381
|
+
}
|
382
|
+
}; // Disable Popper.js if we have a static display
|
390
383
|
|
391
384
|
if (this._config.display === 'static') {
|
392
385
|
popperConfig.modifiers.applyStyle = {
|
@@ -394,7 +387,7 @@
|
|
394
387
|
};
|
395
388
|
}
|
396
389
|
|
397
|
-
return popperConfig;
|
390
|
+
return _objectSpread2(_objectSpread2({}, popperConfig), this._config.popperConfig);
|
398
391
|
} // Static
|
399
392
|
;
|
400
393
|
|
@@ -424,7 +417,7 @@
|
|
424
417
|
return;
|
425
418
|
}
|
426
419
|
|
427
|
-
var toggles = [].slice.call(document.querySelectorAll(
|
420
|
+
var toggles = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE));
|
428
421
|
|
429
422
|
for (var i = 0, len = toggles.length; i < len; i++) {
|
430
423
|
var parent = Dropdown._getParentFromElement(toggles[i]);
|
@@ -444,7 +437,7 @@
|
|
444
437
|
|
445
438
|
var dropdownMenu = context._menu;
|
446
439
|
|
447
|
-
if (!$(parent).hasClass(
|
440
|
+
if (!$(parent).hasClass(CLASS_NAME_SHOW)) {
|
448
441
|
continue;
|
449
442
|
}
|
450
443
|
|
@@ -452,7 +445,7 @@
|
|
452
445
|
continue;
|
453
446
|
}
|
454
447
|
|
455
|
-
var hideEvent = $.Event(
|
448
|
+
var hideEvent = $.Event(EVENT_HIDE, relatedTarget);
|
456
449
|
$(parent).trigger(hideEvent);
|
457
450
|
|
458
451
|
if (hideEvent.isDefaultPrevented()) {
|
@@ -466,8 +459,13 @@
|
|
466
459
|
}
|
467
460
|
|
468
461
|
toggles[i].setAttribute('aria-expanded', 'false');
|
469
|
-
|
470
|
-
|
462
|
+
|
463
|
+
if (context._popper) {
|
464
|
+
context._popper.destroy();
|
465
|
+
}
|
466
|
+
|
467
|
+
$(dropdownMenu).removeClass(CLASS_NAME_SHOW);
|
468
|
+
$(parent).removeClass(CLASS_NAME_SHOW).trigger($.Event(EVENT_HIDDEN, relatedTarget));
|
471
469
|
}
|
472
470
|
};
|
473
471
|
|
@@ -491,32 +489,37 @@
|
|
491
489
|
// - If key is other than escape
|
492
490
|
// - If key is not up or down => not a dropdown command
|
493
491
|
// - If trigger inside the menu => not a dropdown command
|
494
|
-
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(
|
492
|
+
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)) {
|
495
493
|
return;
|
496
494
|
}
|
497
495
|
|
498
|
-
|
499
|
-
event.stopPropagation();
|
500
|
-
|
501
|
-
if (this.disabled || $(this).hasClass(ClassName.DISABLED)) {
|
496
|
+
if (this.disabled || $(this).hasClass(CLASS_NAME_DISABLED)) {
|
502
497
|
return;
|
503
498
|
}
|
504
499
|
|
505
500
|
var parent = Dropdown._getParentFromElement(this);
|
506
501
|
|
507
|
-
var isActive = $(parent).hasClass(
|
502
|
+
var isActive = $(parent).hasClass(CLASS_NAME_SHOW);
|
503
|
+
|
504
|
+
if (!isActive && event.which === ESCAPE_KEYCODE) {
|
505
|
+
return;
|
506
|
+
}
|
507
|
+
|
508
|
+
event.preventDefault();
|
509
|
+
event.stopPropagation();
|
508
510
|
|
509
511
|
if (!isActive || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {
|
510
512
|
if (event.which === ESCAPE_KEYCODE) {
|
511
|
-
|
512
|
-
$(toggle).trigger('focus');
|
513
|
+
$(parent.querySelector(SELECTOR_DATA_TOGGLE)).trigger('focus');
|
513
514
|
}
|
514
515
|
|
515
516
|
$(this).trigger('click');
|
516
517
|
return;
|
517
518
|
}
|
518
519
|
|
519
|
-
var items = [].slice.call(parent.querySelectorAll(
|
520
|
+
var items = [].slice.call(parent.querySelectorAll(SELECTOR_VISIBLE_ITEMS)).filter(function (item) {
|
521
|
+
return $(item).is(':visible');
|
522
|
+
});
|
520
523
|
|
521
524
|
if (items.length === 0) {
|
522
525
|
return;
|
@@ -567,12 +570,12 @@
|
|
567
570
|
*/
|
568
571
|
|
569
572
|
|
570
|
-
$(document).on(
|
573
|
+
$(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) {
|
571
574
|
event.preventDefault();
|
572
575
|
event.stopPropagation();
|
573
576
|
|
574
577
|
Dropdown._jQueryInterface.call($(this), 'toggle');
|
575
|
-
}).on(
|
578
|
+
}).on(EVENT_CLICK_DATA_API, SELECTOR_FORM_CHILD, function (e) {
|
576
579
|
e.stopPropagation();
|
577
580
|
});
|
578
581
|
/**
|
@@ -591,4 +594,4 @@
|
|
591
594
|
|
592
595
|
return Dropdown;
|
593
596
|
|
594
|
-
}));
|
597
|
+
})));
|