bootstrap 4.0.0.beta3 → 4.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/.travis.yml +15 -1
- data/CHANGELOG.md +2 -2
- data/README.md +2 -2
- data/Rakefile +4 -2
- data/assets/javascripts/bootstrap/alert.js +79 -68
- data/assets/javascripts/bootstrap/button.js +140 -78
- data/assets/javascripts/bootstrap/carousel.js +294 -158
- data/assets/javascripts/bootstrap/collapse.js +157 -133
- data/assets/javascripts/bootstrap/dropdown.js +257 -167
- data/assets/javascripts/bootstrap/modal.js +285 -204
- data/assets/javascripts/bootstrap/popover.js +101 -60
- data/assets/javascripts/bootstrap/scrollspy.js +127 -106
- data/assets/javascripts/bootstrap/tab.js +113 -101
- data/assets/javascripts/bootstrap/toast.js +267 -0
- data/assets/javascripts/bootstrap/tooltip.js +406 -188
- data/assets/javascripts/bootstrap/util.js +106 -55
- data/assets/javascripts/bootstrap-sprockets.js +1 -0
- data/assets/javascripts/bootstrap.js +1946 -1482
- data/assets/javascripts/bootstrap.min.js +4 -4
- data/assets/stylesheets/_bootstrap-grid.scss +7 -12
- data/assets/stylesheets/_bootstrap-reboot.scss +4 -4
- data/assets/stylesheets/_bootstrap.scss +6 -4
- data/assets/stylesheets/bootstrap/_alert.scss +3 -2
- data/assets/stylesheets/bootstrap/_badge.scss +8 -1
- data/assets/stylesheets/bootstrap/_breadcrumb.scss +10 -6
- data/assets/stylesheets/bootstrap/_button-group.scss +17 -20
- data/assets/stylesheets/bootstrap/_buttons.scss +23 -28
- data/assets/stylesheets/bootstrap/_card.scss +77 -61
- data/assets/stylesheets/bootstrap/_carousel.scss +72 -63
- data/assets/stylesheets/bootstrap/_close.scss +15 -9
- data/assets/stylesheets/bootstrap/_code.scss +6 -14
- data/assets/stylesheets/bootstrap/_custom-forms.scss +287 -43
- data/assets/stylesheets/bootstrap/_dropdown.scss +70 -9
- data/assets/stylesheets/bootstrap/_forms.scss +56 -42
- data/assets/stylesheets/bootstrap/_functions.scss +117 -13
- data/assets/stylesheets/bootstrap/_grid.scss +32 -11
- data/assets/stylesheets/bootstrap/_images.scss +4 -4
- data/assets/stylesheets/bootstrap/_input-group.scss +80 -25
- data/assets/stylesheets/bootstrap/_jumbotron.scss +2 -1
- data/assets/stylesheets/bootstrap/_list-group.scss +63 -24
- data/assets/stylesheets/bootstrap/_mixins.scss +9 -4
- data/assets/stylesheets/bootstrap/_modal.scss +96 -24
- data/assets/stylesheets/bootstrap/_nav.scss +14 -7
- data/assets/stylesheets/bootstrap/_navbar.scss +66 -45
- data/assets/stylesheets/bootstrap/_pagination.scss +10 -8
- data/assets/stylesheets/bootstrap/_popover.scss +56 -69
- data/assets/stylesheets/bootstrap/_print.scss +41 -19
- data/assets/stylesheets/bootstrap/_progress.scss +20 -6
- data/assets/stylesheets/bootstrap/_reboot.scss +88 -109
- data/assets/stylesheets/bootstrap/_spinners.scss +65 -0
- data/assets/stylesheets/bootstrap/_tables.scss +19 -14
- data/assets/stylesheets/bootstrap/_toasts.scss +46 -0
- data/assets/stylesheets/bootstrap/_tooltip.scss +6 -6
- data/assets/stylesheets/bootstrap/_transitions.scss +10 -20
- data/assets/stylesheets/bootstrap/_type.scss +19 -19
- data/assets/stylesheets/bootstrap/_utilities.scss +4 -0
- data/assets/stylesheets/bootstrap/_variables.scss +492 -215
- data/assets/stylesheets/bootstrap/mixins/_background-variant.scss +5 -3
- data/assets/stylesheets/bootstrap/mixins/_badge.scss +8 -3
- data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +51 -10
- data/assets/stylesheets/bootstrap/mixins/_box-shadow.scss +16 -1
- data/assets/stylesheets/bootstrap/mixins/_breakpoints.scss +11 -9
- data/assets/stylesheets/bootstrap/mixins/_buttons.scss +35 -26
- data/assets/stylesheets/bootstrap/mixins/_caret.scss +13 -16
- data/assets/stylesheets/bootstrap/mixins/_deprecate.scss +10 -0
- data/assets/stylesheets/bootstrap/mixins/_float.scss +6 -3
- data/assets/stylesheets/bootstrap/mixins/_forms.scss +102 -40
- data/assets/stylesheets/bootstrap/mixins/_gradients.scss +7 -7
- data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +36 -25
- data/assets/stylesheets/bootstrap/mixins/_grid.scss +34 -17
- data/assets/stylesheets/bootstrap/mixins/_hover.scss +27 -51
- data/assets/stylesheets/bootstrap/mixins/_image.scss +4 -4
- data/assets/stylesheets/bootstrap/mixins/_list-group.scss +10 -13
- data/assets/stylesheets/bootstrap/mixins/_lists.scss +1 -1
- data/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +3 -2
- data/assets/stylesheets/bootstrap/mixins/_pagination.scss +1 -1
- data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +3 -3
- data/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +5 -6
- data/assets/stylesheets/bootstrap/mixins/_size.scss +1 -0
- data/assets/stylesheets/bootstrap/mixins/_table-row.scss +11 -2
- data/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +7 -4
- data/assets/stylesheets/bootstrap/mixins/_text-hide.scss +3 -1
- data/assets/stylesheets/bootstrap/mixins/_transition.scss +20 -3
- data/assets/stylesheets/bootstrap/mixins/_visibility.scss +1 -0
- data/assets/stylesheets/bootstrap/utilities/_background.scss +2 -2
- data/assets/stylesheets/bootstrap/utilities/_borders.scss +23 -2
- data/assets/stylesheets/bootstrap/utilities/_display.scss +6 -36
- data/assets/stylesheets/bootstrap/utilities/_embed.scss +7 -20
- data/assets/stylesheets/bootstrap/utilities/_flex.scss +5 -0
- data/assets/stylesheets/bootstrap/utilities/_float.scss +5 -3
- data/assets/stylesheets/bootstrap/utilities/_interactions.scss +5 -0
- data/assets/stylesheets/bootstrap/utilities/_overflow.scss +5 -0
- data/assets/stylesheets/bootstrap/utilities/_position.scss +0 -4
- data/assets/stylesheets/bootstrap/utilities/_shadows.scss +6 -0
- data/assets/stylesheets/bootstrap/utilities/_sizing.scss +8 -0
- data/assets/stylesheets/bootstrap/utilities/_spacing.scss +23 -1
- data/assets/stylesheets/bootstrap/utilities/_stretched-link.scss +19 -0
- data/assets/stylesheets/bootstrap/utilities/_text.scss +28 -8
- data/assets/stylesheets/bootstrap/utilities/_visibility.scss +4 -2
- data/assets/stylesheets/bootstrap/vendor/_rfs.scss +228 -0
- data/bootstrap.gemspec +7 -4
- data/lib/bootstrap/engine.rb +3 -0
- data/lib/bootstrap/version.rb +4 -2
- data/lib/bootstrap.rb +10 -7
- data/tasks/updater/js.rb +18 -6
- data/tasks/updater/network.rb +8 -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 +21 -15
- metadata +29 -16
- data/assets/stylesheets/bootstrap/mixins/_navbar-align.scss +0 -10
|
@@ -1,27 +1,66 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
/*!
|
|
2
|
+
* Bootstrap dropdown.js v4.6.2 (https://getbootstrap.com/)
|
|
3
|
+
* Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
|
4
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
5
|
+
*/
|
|
6
|
+
(function (global, factory) {
|
|
7
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('jquery'), require('popper.js'), require('./util.js')) :
|
|
8
|
+
typeof define === 'function' && define.amd ? define(['jquery', 'popper.js', './util'], factory) :
|
|
9
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Dropdown = factory(global.jQuery, global.Popper, global.Util));
|
|
10
|
+
})(this, (function ($, Popper, Util) { 'use strict';
|
|
11
|
+
|
|
12
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
13
|
+
|
|
14
|
+
var $__default = /*#__PURE__*/_interopDefaultLegacy($);
|
|
15
|
+
var Popper__default = /*#__PURE__*/_interopDefaultLegacy(Popper);
|
|
16
|
+
var Util__default = /*#__PURE__*/_interopDefaultLegacy(Util);
|
|
17
|
+
|
|
18
|
+
function _defineProperties(target, props) {
|
|
19
|
+
for (var i = 0; i < props.length; i++) {
|
|
20
|
+
var descriptor = props[i];
|
|
21
|
+
descriptor.enumerable = descriptor.enumerable || false;
|
|
22
|
+
descriptor.configurable = true;
|
|
23
|
+
if ("value" in descriptor) descriptor.writable = true;
|
|
24
|
+
Object.defineProperty(target, descriptor.key, descriptor);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
function _createClass(Constructor, protoProps, staticProps) {
|
|
29
|
+
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
|
30
|
+
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
31
|
+
Object.defineProperty(Constructor, "prototype", {
|
|
32
|
+
writable: false
|
|
33
|
+
});
|
|
34
|
+
return Constructor;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function _extends() {
|
|
38
|
+
_extends = Object.assign ? Object.assign.bind() : function (target) {
|
|
39
|
+
for (var i = 1; i < arguments.length; i++) {
|
|
40
|
+
var source = arguments[i];
|
|
41
|
+
|
|
42
|
+
for (var key in source) {
|
|
43
|
+
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
44
|
+
target[key] = source[key];
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
4
48
|
|
|
5
|
-
|
|
49
|
+
return target;
|
|
50
|
+
};
|
|
51
|
+
return _extends.apply(this, arguments);
|
|
52
|
+
}
|
|
6
53
|
|
|
7
|
-
/**
|
|
8
|
-
* --------------------------------------------------------------------------
|
|
9
|
-
* Bootstrap (v4.0.0-beta.3): dropdown.js
|
|
10
|
-
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
|
11
|
-
* --------------------------------------------------------------------------
|
|
12
|
-
*/
|
|
13
|
-
var Dropdown = function ($) {
|
|
14
54
|
/**
|
|
15
|
-
* ------------------------------------------------------------------------
|
|
16
55
|
* Constants
|
|
17
|
-
* ------------------------------------------------------------------------
|
|
18
56
|
*/
|
|
57
|
+
|
|
19
58
|
var NAME = 'dropdown';
|
|
20
|
-
var VERSION = '4.
|
|
59
|
+
var VERSION = '4.6.2';
|
|
21
60
|
var DATA_KEY = 'bs.dropdown';
|
|
22
61
|
var EVENT_KEY = "." + DATA_KEY;
|
|
23
62
|
var DATA_API_KEY = '.data-api';
|
|
24
|
-
var JQUERY_NO_CONFLICT =
|
|
63
|
+
var JQUERY_NO_CONFLICT = $__default["default"].fn[NAME];
|
|
25
64
|
var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key
|
|
26
65
|
|
|
27
66
|
var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key
|
|
@@ -35,63 +74,53 @@ var Dropdown = function ($) {
|
|
|
35
74
|
var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse)
|
|
36
75
|
|
|
37
76
|
var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + "|" + ARROW_DOWN_KEYCODE + "|" + ESCAPE_KEYCODE);
|
|
38
|
-
var
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
var
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
var
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
};
|
|
65
|
-
var AttachmentMap = {
|
|
66
|
-
TOP: 'top-start',
|
|
67
|
-
TOPEND: 'top-end',
|
|
68
|
-
BOTTOM: 'bottom-start',
|
|
69
|
-
BOTTOMEND: 'bottom-end',
|
|
70
|
-
RIGHT: 'right-start',
|
|
71
|
-
RIGHTEND: 'right-end',
|
|
72
|
-
LEFT: 'left-start',
|
|
73
|
-
LEFTEND: 'left-end'
|
|
74
|
-
};
|
|
77
|
+
var CLASS_NAME_DISABLED = 'disabled';
|
|
78
|
+
var CLASS_NAME_SHOW = 'show';
|
|
79
|
+
var CLASS_NAME_DROPUP = 'dropup';
|
|
80
|
+
var CLASS_NAME_DROPRIGHT = 'dropright';
|
|
81
|
+
var CLASS_NAME_DROPLEFT = 'dropleft';
|
|
82
|
+
var CLASS_NAME_MENURIGHT = 'dropdown-menu-right';
|
|
83
|
+
var CLASS_NAME_POSITION_STATIC = 'position-static';
|
|
84
|
+
var EVENT_HIDE = "hide" + EVENT_KEY;
|
|
85
|
+
var EVENT_HIDDEN = "hidden" + EVENT_KEY;
|
|
86
|
+
var EVENT_SHOW = "show" + EVENT_KEY;
|
|
87
|
+
var EVENT_SHOWN = "shown" + EVENT_KEY;
|
|
88
|
+
var EVENT_CLICK = "click" + EVENT_KEY;
|
|
89
|
+
var EVENT_CLICK_DATA_API = "click" + EVENT_KEY + DATA_API_KEY;
|
|
90
|
+
var EVENT_KEYDOWN_DATA_API = "keydown" + EVENT_KEY + DATA_API_KEY;
|
|
91
|
+
var EVENT_KEYUP_DATA_API = "keyup" + EVENT_KEY + DATA_API_KEY;
|
|
92
|
+
var SELECTOR_DATA_TOGGLE = '[data-toggle="dropdown"]';
|
|
93
|
+
var SELECTOR_FORM_CHILD = '.dropdown form';
|
|
94
|
+
var SELECTOR_MENU = '.dropdown-menu';
|
|
95
|
+
var SELECTOR_NAVBAR_NAV = '.navbar-nav';
|
|
96
|
+
var SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';
|
|
97
|
+
var PLACEMENT_TOP = 'top-start';
|
|
98
|
+
var PLACEMENT_TOPEND = 'top-end';
|
|
99
|
+
var PLACEMENT_BOTTOM = 'bottom-start';
|
|
100
|
+
var PLACEMENT_BOTTOMEND = 'bottom-end';
|
|
101
|
+
var PLACEMENT_RIGHT = 'right-start';
|
|
102
|
+
var PLACEMENT_LEFT = 'left-start';
|
|
75
103
|
var Default = {
|
|
76
104
|
offset: 0,
|
|
77
105
|
flip: true,
|
|
78
|
-
boundary: 'scrollParent'
|
|
106
|
+
boundary: 'scrollParent',
|
|
107
|
+
reference: 'toggle',
|
|
108
|
+
display: 'dynamic',
|
|
109
|
+
popperConfig: null
|
|
79
110
|
};
|
|
80
111
|
var DefaultType = {
|
|
81
112
|
offset: '(number|string|function)',
|
|
82
113
|
flip: 'boolean',
|
|
83
|
-
boundary: '(string|element)'
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
* ------------------------------------------------------------------------
|
|
88
|
-
*/
|
|
89
|
-
|
|
114
|
+
boundary: '(string|element)',
|
|
115
|
+
reference: '(string|element)',
|
|
116
|
+
display: 'string',
|
|
117
|
+
popperConfig: '(null|object)'
|
|
90
118
|
};
|
|
119
|
+
/**
|
|
120
|
+
* Class definition
|
|
121
|
+
*/
|
|
91
122
|
|
|
92
|
-
var Dropdown =
|
|
93
|
-
/*#__PURE__*/
|
|
94
|
-
function () {
|
|
123
|
+
var Dropdown = /*#__PURE__*/function () {
|
|
95
124
|
function Dropdown(element, config) {
|
|
96
125
|
this._element = element;
|
|
97
126
|
this._popper = null;
|
|
@@ -100,20 +129,18 @@ var Dropdown = function ($) {
|
|
|
100
129
|
this._inNavbar = this._detectNavbar();
|
|
101
130
|
|
|
102
131
|
this._addEventListeners();
|
|
103
|
-
} //
|
|
132
|
+
} // Getters
|
|
104
133
|
|
|
105
134
|
|
|
106
135
|
var _proto = Dropdown.prototype;
|
|
107
136
|
|
|
108
|
-
//
|
|
137
|
+
// Public
|
|
109
138
|
_proto.toggle = function toggle() {
|
|
110
|
-
if (this._element.disabled || $(this._element).hasClass(
|
|
139
|
+
if (this._element.disabled || $__default["default"](this._element).hasClass(CLASS_NAME_DISABLED)) {
|
|
111
140
|
return;
|
|
112
141
|
}
|
|
113
142
|
|
|
114
|
-
var
|
|
115
|
-
|
|
116
|
-
var isActive = $(this._menu).hasClass(ClassName.SHOW);
|
|
143
|
+
var isActive = $__default["default"](this._menu).hasClass(CLASS_NAME_SHOW);
|
|
117
144
|
|
|
118
145
|
Dropdown._clearMenus();
|
|
119
146
|
|
|
@@ -121,31 +148,47 @@ var Dropdown = function ($) {
|
|
|
121
148
|
return;
|
|
122
149
|
}
|
|
123
150
|
|
|
151
|
+
this.show(true);
|
|
152
|
+
};
|
|
153
|
+
|
|
154
|
+
_proto.show = function show(usePopper) {
|
|
155
|
+
if (usePopper === void 0) {
|
|
156
|
+
usePopper = false;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
if (this._element.disabled || $__default["default"](this._element).hasClass(CLASS_NAME_DISABLED) || $__default["default"](this._menu).hasClass(CLASS_NAME_SHOW)) {
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
|
|
124
163
|
var relatedTarget = {
|
|
125
164
|
relatedTarget: this._element
|
|
126
165
|
};
|
|
127
|
-
var showEvent =
|
|
128
|
-
|
|
166
|
+
var showEvent = $__default["default"].Event(EVENT_SHOW, relatedTarget);
|
|
167
|
+
|
|
168
|
+
var parent = Dropdown._getParentFromElement(this._element);
|
|
169
|
+
|
|
170
|
+
$__default["default"](parent).trigger(showEvent);
|
|
129
171
|
|
|
130
172
|
if (showEvent.isDefaultPrevented()) {
|
|
131
173
|
return;
|
|
132
|
-
} //
|
|
174
|
+
} // Totally disable Popper for Dropdowns in Navbar
|
|
133
175
|
|
|
134
176
|
|
|
135
|
-
if (!this._inNavbar) {
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
*/
|
|
140
|
-
if (typeof Popper === 'undefined') {
|
|
141
|
-
throw new Error('Bootstrap dropdown require Popper.js (https://popper.js.org)');
|
|
177
|
+
if (!this._inNavbar && usePopper) {
|
|
178
|
+
// Check for Popper dependency
|
|
179
|
+
if (typeof Popper__default["default"] === 'undefined') {
|
|
180
|
+
throw new TypeError('Bootstrap\'s dropdowns require Popper (https://popper.js.org)');
|
|
142
181
|
}
|
|
143
182
|
|
|
144
|
-
var
|
|
183
|
+
var referenceElement = this._element;
|
|
184
|
+
|
|
185
|
+
if (this._config.reference === 'parent') {
|
|
186
|
+
referenceElement = parent;
|
|
187
|
+
} else if (Util__default["default"].isElement(this._config.reference)) {
|
|
188
|
+
referenceElement = this._config.reference; // Check if it's jQuery element
|
|
145
189
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
element = parent;
|
|
190
|
+
if (typeof this._config.reference.jquery !== 'undefined') {
|
|
191
|
+
referenceElement = this._config.reference[0];
|
|
149
192
|
}
|
|
150
193
|
} // If boundary is not `scrollParent`, then set position to `static`
|
|
151
194
|
// to allow the menu to "escape" the scroll parent's boundaries
|
|
@@ -153,31 +196,57 @@ var Dropdown = function ($) {
|
|
|
153
196
|
|
|
154
197
|
|
|
155
198
|
if (this._config.boundary !== 'scrollParent') {
|
|
156
|
-
$(parent).addClass(
|
|
199
|
+
$__default["default"](parent).addClass(CLASS_NAME_POSITION_STATIC);
|
|
157
200
|
}
|
|
158
201
|
|
|
159
|
-
this._popper = new
|
|
160
|
-
} //
|
|
202
|
+
this._popper = new Popper__default["default"](referenceElement, this._menu, this._getPopperConfig());
|
|
203
|
+
} // If this is a touch-enabled device we add extra
|
|
161
204
|
// empty mouseover listeners to the body's immediate children;
|
|
162
205
|
// only needed because of broken event delegation on iOS
|
|
163
206
|
// https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
|
|
164
207
|
|
|
165
208
|
|
|
166
|
-
if ('ontouchstart' in document.documentElement &&
|
|
167
|
-
$(
|
|
209
|
+
if ('ontouchstart' in document.documentElement && $__default["default"](parent).closest(SELECTOR_NAVBAR_NAV).length === 0) {
|
|
210
|
+
$__default["default"](document.body).children().on('mouseover', null, $__default["default"].noop);
|
|
168
211
|
}
|
|
169
212
|
|
|
170
213
|
this._element.focus();
|
|
171
214
|
|
|
172
215
|
this._element.setAttribute('aria-expanded', true);
|
|
173
216
|
|
|
174
|
-
$(this._menu).toggleClass(
|
|
175
|
-
$(parent).toggleClass(
|
|
217
|
+
$__default["default"](this._menu).toggleClass(CLASS_NAME_SHOW);
|
|
218
|
+
$__default["default"](parent).toggleClass(CLASS_NAME_SHOW).trigger($__default["default"].Event(EVENT_SHOWN, relatedTarget));
|
|
219
|
+
};
|
|
220
|
+
|
|
221
|
+
_proto.hide = function hide() {
|
|
222
|
+
if (this._element.disabled || $__default["default"](this._element).hasClass(CLASS_NAME_DISABLED) || !$__default["default"](this._menu).hasClass(CLASS_NAME_SHOW)) {
|
|
223
|
+
return;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
var relatedTarget = {
|
|
227
|
+
relatedTarget: this._element
|
|
228
|
+
};
|
|
229
|
+
var hideEvent = $__default["default"].Event(EVENT_HIDE, relatedTarget);
|
|
230
|
+
|
|
231
|
+
var parent = Dropdown._getParentFromElement(this._element);
|
|
232
|
+
|
|
233
|
+
$__default["default"](parent).trigger(hideEvent);
|
|
234
|
+
|
|
235
|
+
if (hideEvent.isDefaultPrevented()) {
|
|
236
|
+
return;
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
if (this._popper) {
|
|
240
|
+
this._popper.destroy();
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
$__default["default"](this._menu).toggleClass(CLASS_NAME_SHOW);
|
|
244
|
+
$__default["default"](parent).toggleClass(CLASS_NAME_SHOW).trigger($__default["default"].Event(EVENT_HIDDEN, relatedTarget));
|
|
176
245
|
};
|
|
177
246
|
|
|
178
247
|
_proto.dispose = function dispose() {
|
|
179
|
-
|
|
180
|
-
$(this._element).off(EVENT_KEY);
|
|
248
|
+
$__default["default"].removeData(this._element, DATA_KEY);
|
|
249
|
+
$__default["default"](this._element).off(EVENT_KEY);
|
|
181
250
|
this._element = null;
|
|
182
251
|
this._menu = null;
|
|
183
252
|
|
|
@@ -194,13 +263,13 @@ var Dropdown = function ($) {
|
|
|
194
263
|
if (this._popper !== null) {
|
|
195
264
|
this._popper.scheduleUpdate();
|
|
196
265
|
}
|
|
197
|
-
}
|
|
198
|
-
|
|
266
|
+
} // Private
|
|
267
|
+
;
|
|
199
268
|
|
|
200
269
|
_proto._addEventListeners = function _addEventListeners() {
|
|
201
270
|
var _this = this;
|
|
202
271
|
|
|
203
|
-
$(this._element).on(
|
|
272
|
+
$__default["default"](this._element).on(EVENT_CLICK, function (event) {
|
|
204
273
|
event.preventDefault();
|
|
205
274
|
event.stopPropagation();
|
|
206
275
|
|
|
@@ -209,8 +278,8 @@ var Dropdown = function ($) {
|
|
|
209
278
|
};
|
|
210
279
|
|
|
211
280
|
_proto._getConfig = function _getConfig(config) {
|
|
212
|
-
config = _extends({}, this.constructor.Default, $(this._element).data(), config);
|
|
213
|
-
|
|
281
|
+
config = _extends({}, this.constructor.Default, $__default["default"](this._element).data(), config);
|
|
282
|
+
Util__default["default"].typeCheckConfig(NAME, config, this.constructor.DefaultType);
|
|
214
283
|
return config;
|
|
215
284
|
};
|
|
216
285
|
|
|
@@ -218,55 +287,57 @@ var Dropdown = function ($) {
|
|
|
218
287
|
if (!this._menu) {
|
|
219
288
|
var parent = Dropdown._getParentFromElement(this._element);
|
|
220
289
|
|
|
221
|
-
|
|
290
|
+
if (parent) {
|
|
291
|
+
this._menu = parent.querySelector(SELECTOR_MENU);
|
|
292
|
+
}
|
|
222
293
|
}
|
|
223
294
|
|
|
224
295
|
return this._menu;
|
|
225
296
|
};
|
|
226
297
|
|
|
227
298
|
_proto._getPlacement = function _getPlacement() {
|
|
228
|
-
var $parentDropdown = $(this._element
|
|
229
|
-
var placement =
|
|
230
|
-
|
|
231
|
-
if ($parentDropdown.hasClass(
|
|
232
|
-
placement =
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
} else if ($
|
|
238
|
-
placement =
|
|
239
|
-
} else if ($parentDropdown.hasClass(ClassName.DROPLEFT)) {
|
|
240
|
-
placement = AttachmentMap.LEFT;
|
|
241
|
-
} else if ($(this._menu).hasClass(ClassName.MENURIGHT)) {
|
|
242
|
-
placement = AttachmentMap.BOTTOMEND;
|
|
299
|
+
var $parentDropdown = $__default["default"](this._element.parentNode);
|
|
300
|
+
var placement = PLACEMENT_BOTTOM; // Handle dropup
|
|
301
|
+
|
|
302
|
+
if ($parentDropdown.hasClass(CLASS_NAME_DROPUP)) {
|
|
303
|
+
placement = $__default["default"](this._menu).hasClass(CLASS_NAME_MENURIGHT) ? PLACEMENT_TOPEND : PLACEMENT_TOP;
|
|
304
|
+
} else if ($parentDropdown.hasClass(CLASS_NAME_DROPRIGHT)) {
|
|
305
|
+
placement = PLACEMENT_RIGHT;
|
|
306
|
+
} else if ($parentDropdown.hasClass(CLASS_NAME_DROPLEFT)) {
|
|
307
|
+
placement = PLACEMENT_LEFT;
|
|
308
|
+
} else if ($__default["default"](this._menu).hasClass(CLASS_NAME_MENURIGHT)) {
|
|
309
|
+
placement = PLACEMENT_BOTTOMEND;
|
|
243
310
|
}
|
|
244
311
|
|
|
245
312
|
return placement;
|
|
246
313
|
};
|
|
247
314
|
|
|
248
315
|
_proto._detectNavbar = function _detectNavbar() {
|
|
249
|
-
return $(this._element).closest('.navbar').length > 0;
|
|
316
|
+
return $__default["default"](this._element).closest('.navbar').length > 0;
|
|
250
317
|
};
|
|
251
318
|
|
|
252
|
-
_proto.
|
|
319
|
+
_proto._getOffset = function _getOffset() {
|
|
253
320
|
var _this2 = this;
|
|
254
321
|
|
|
255
|
-
var
|
|
322
|
+
var offset = {};
|
|
256
323
|
|
|
257
324
|
if (typeof this._config.offset === 'function') {
|
|
258
|
-
|
|
259
|
-
data.offsets = _extends({}, data.offsets, _this2._config.offset(data.offsets
|
|
325
|
+
offset.fn = function (data) {
|
|
326
|
+
data.offsets = _extends({}, data.offsets, _this2._config.offset(data.offsets, _this2._element));
|
|
260
327
|
return data;
|
|
261
328
|
};
|
|
262
329
|
} else {
|
|
263
|
-
|
|
330
|
+
offset.offset = this._config.offset;
|
|
264
331
|
}
|
|
265
332
|
|
|
333
|
+
return offset;
|
|
334
|
+
};
|
|
335
|
+
|
|
336
|
+
_proto._getPopperConfig = function _getPopperConfig() {
|
|
266
337
|
var popperConfig = {
|
|
267
338
|
placement: this._getPlacement(),
|
|
268
339
|
modifiers: {
|
|
269
|
-
offset:
|
|
340
|
+
offset: this._getOffset(),
|
|
270
341
|
flip: {
|
|
271
342
|
enabled: this._config.flip
|
|
272
343
|
},
|
|
@@ -274,25 +345,32 @@ var Dropdown = function ($) {
|
|
|
274
345
|
boundariesElement: this._config.boundary
|
|
275
346
|
}
|
|
276
347
|
}
|
|
277
|
-
};
|
|
278
|
-
return popperConfig;
|
|
279
|
-
}; // static
|
|
348
|
+
}; // Disable Popper if we have a static display
|
|
280
349
|
|
|
350
|
+
if (this._config.display === 'static') {
|
|
351
|
+
popperConfig.modifiers.applyStyle = {
|
|
352
|
+
enabled: false
|
|
353
|
+
};
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
return _extends({}, popperConfig, this._config.popperConfig);
|
|
357
|
+
} // Static
|
|
358
|
+
;
|
|
281
359
|
|
|
282
360
|
Dropdown._jQueryInterface = function _jQueryInterface(config) {
|
|
283
361
|
return this.each(function () {
|
|
284
|
-
var data = $(this).data(DATA_KEY);
|
|
362
|
+
var data = $__default["default"](this).data(DATA_KEY);
|
|
285
363
|
|
|
286
364
|
var _config = typeof config === 'object' ? config : null;
|
|
287
365
|
|
|
288
366
|
if (!data) {
|
|
289
367
|
data = new Dropdown(this, _config);
|
|
290
|
-
$(this).data(DATA_KEY, data);
|
|
368
|
+
$__default["default"](this).data(DATA_KEY, data);
|
|
291
369
|
}
|
|
292
370
|
|
|
293
371
|
if (typeof config === 'string') {
|
|
294
372
|
if (typeof data[config] === 'undefined') {
|
|
295
|
-
throw new
|
|
373
|
+
throw new TypeError("No method named \"" + config + "\"");
|
|
296
374
|
}
|
|
297
375
|
|
|
298
376
|
data[config]();
|
|
@@ -305,59 +383,69 @@ var Dropdown = function ($) {
|
|
|
305
383
|
return;
|
|
306
384
|
}
|
|
307
385
|
|
|
308
|
-
var toggles =
|
|
386
|
+
var toggles = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE));
|
|
309
387
|
|
|
310
|
-
for (var i = 0
|
|
388
|
+
for (var i = 0, len = toggles.length; i < len; i++) {
|
|
311
389
|
var parent = Dropdown._getParentFromElement(toggles[i]);
|
|
312
390
|
|
|
313
|
-
var context = $(toggles[i]).data(DATA_KEY);
|
|
391
|
+
var context = $__default["default"](toggles[i]).data(DATA_KEY);
|
|
314
392
|
var relatedTarget = {
|
|
315
393
|
relatedTarget: toggles[i]
|
|
316
394
|
};
|
|
317
395
|
|
|
396
|
+
if (event && event.type === 'click') {
|
|
397
|
+
relatedTarget.clickEvent = event;
|
|
398
|
+
}
|
|
399
|
+
|
|
318
400
|
if (!context) {
|
|
319
401
|
continue;
|
|
320
402
|
}
|
|
321
403
|
|
|
322
404
|
var dropdownMenu = context._menu;
|
|
323
405
|
|
|
324
|
-
if (!$(parent).hasClass(
|
|
406
|
+
if (!$__default["default"](parent).hasClass(CLASS_NAME_SHOW)) {
|
|
325
407
|
continue;
|
|
326
408
|
}
|
|
327
409
|
|
|
328
|
-
if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) &&
|
|
410
|
+
if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && $__default["default"].contains(parent, event.target)) {
|
|
329
411
|
continue;
|
|
330
412
|
}
|
|
331
413
|
|
|
332
|
-
var hideEvent =
|
|
333
|
-
$(parent).trigger(hideEvent);
|
|
414
|
+
var hideEvent = $__default["default"].Event(EVENT_HIDE, relatedTarget);
|
|
415
|
+
$__default["default"](parent).trigger(hideEvent);
|
|
334
416
|
|
|
335
417
|
if (hideEvent.isDefaultPrevented()) {
|
|
336
418
|
continue;
|
|
337
|
-
} //
|
|
419
|
+
} // If this is a touch-enabled device we remove the extra
|
|
338
420
|
// empty mouseover listeners we added for iOS support
|
|
339
421
|
|
|
340
422
|
|
|
341
423
|
if ('ontouchstart' in document.documentElement) {
|
|
342
|
-
$(
|
|
424
|
+
$__default["default"](document.body).children().off('mouseover', null, $__default["default"].noop);
|
|
343
425
|
}
|
|
344
426
|
|
|
345
427
|
toggles[i].setAttribute('aria-expanded', 'false');
|
|
346
|
-
|
|
347
|
-
|
|
428
|
+
|
|
429
|
+
if (context._popper) {
|
|
430
|
+
context._popper.destroy();
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
$__default["default"](dropdownMenu).removeClass(CLASS_NAME_SHOW);
|
|
434
|
+
$__default["default"](parent).removeClass(CLASS_NAME_SHOW).trigger($__default["default"].Event(EVENT_HIDDEN, relatedTarget));
|
|
348
435
|
}
|
|
349
436
|
};
|
|
350
437
|
|
|
351
438
|
Dropdown._getParentFromElement = function _getParentFromElement(element) {
|
|
352
439
|
var parent;
|
|
353
|
-
var selector =
|
|
440
|
+
var selector = Util__default["default"].getSelectorFromElement(element);
|
|
354
441
|
|
|
355
442
|
if (selector) {
|
|
356
|
-
parent =
|
|
443
|
+
parent = document.querySelector(selector);
|
|
357
444
|
}
|
|
358
445
|
|
|
359
446
|
return parent || element.parentNode;
|
|
360
|
-
}
|
|
447
|
+
} // eslint-disable-next-line complexity
|
|
448
|
+
;
|
|
361
449
|
|
|
362
450
|
Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) {
|
|
363
451
|
// If not input/textarea:
|
|
@@ -367,46 +455,51 @@ var Dropdown = function ($) {
|
|
|
367
455
|
// - If key is other than escape
|
|
368
456
|
// - If key is not up or down => not a dropdown command
|
|
369
457
|
// - If trigger inside the menu => not a dropdown command
|
|
370
|
-
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(
|
|
458
|
+
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 || $__default["default"](event.target).closest(SELECTOR_MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {
|
|
371
459
|
return;
|
|
372
460
|
}
|
|
373
461
|
|
|
374
|
-
|
|
375
|
-
event.stopPropagation();
|
|
376
|
-
|
|
377
|
-
if (this.disabled || $(this).hasClass(ClassName.DISABLED)) {
|
|
462
|
+
if (this.disabled || $__default["default"](this).hasClass(CLASS_NAME_DISABLED)) {
|
|
378
463
|
return;
|
|
379
464
|
}
|
|
380
465
|
|
|
381
466
|
var parent = Dropdown._getParentFromElement(this);
|
|
382
467
|
|
|
383
|
-
var isActive = $(parent).hasClass(
|
|
468
|
+
var isActive = $__default["default"](parent).hasClass(CLASS_NAME_SHOW);
|
|
384
469
|
|
|
385
|
-
if (!isActive &&
|
|
470
|
+
if (!isActive && event.which === ESCAPE_KEYCODE) {
|
|
471
|
+
return;
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
event.preventDefault();
|
|
475
|
+
event.stopPropagation();
|
|
476
|
+
|
|
477
|
+
if (!isActive || event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE) {
|
|
386
478
|
if (event.which === ESCAPE_KEYCODE) {
|
|
387
|
-
|
|
388
|
-
$(toggle).trigger('focus');
|
|
479
|
+
$__default["default"](parent.querySelector(SELECTOR_DATA_TOGGLE)).trigger('focus');
|
|
389
480
|
}
|
|
390
481
|
|
|
391
|
-
$(this).trigger('click');
|
|
482
|
+
$__default["default"](this).trigger('click');
|
|
392
483
|
return;
|
|
393
484
|
}
|
|
394
485
|
|
|
395
|
-
var items =
|
|
486
|
+
var items = [].slice.call(parent.querySelectorAll(SELECTOR_VISIBLE_ITEMS)).filter(function (item) {
|
|
487
|
+
return $__default["default"](item).is(':visible');
|
|
488
|
+
});
|
|
396
489
|
|
|
397
|
-
if (
|
|
490
|
+
if (items.length === 0) {
|
|
398
491
|
return;
|
|
399
492
|
}
|
|
400
493
|
|
|
401
494
|
var index = items.indexOf(event.target);
|
|
402
495
|
|
|
403
496
|
if (event.which === ARROW_UP_KEYCODE && index > 0) {
|
|
404
|
-
//
|
|
497
|
+
// Up
|
|
405
498
|
index--;
|
|
406
499
|
}
|
|
407
500
|
|
|
408
501
|
if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) {
|
|
409
|
-
//
|
|
502
|
+
// Down
|
|
410
503
|
index++;
|
|
411
504
|
}
|
|
412
505
|
|
|
@@ -437,33 +530,30 @@ var Dropdown = function ($) {
|
|
|
437
530
|
return Dropdown;
|
|
438
531
|
}();
|
|
439
532
|
/**
|
|
440
|
-
*
|
|
441
|
-
* Data Api implementation
|
|
442
|
-
* ------------------------------------------------------------------------
|
|
533
|
+
* Data API implementation
|
|
443
534
|
*/
|
|
444
535
|
|
|
445
536
|
|
|
446
|
-
$(document).on(
|
|
537
|
+
$__default["default"](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) {
|
|
447
538
|
event.preventDefault();
|
|
448
539
|
event.stopPropagation();
|
|
449
540
|
|
|
450
|
-
Dropdown._jQueryInterface.call($(this), 'toggle');
|
|
451
|
-
}).on(
|
|
541
|
+
Dropdown._jQueryInterface.call($__default["default"](this), 'toggle');
|
|
542
|
+
}).on(EVENT_CLICK_DATA_API, SELECTOR_FORM_CHILD, function (e) {
|
|
452
543
|
e.stopPropagation();
|
|
453
544
|
});
|
|
454
545
|
/**
|
|
455
|
-
* ------------------------------------------------------------------------
|
|
456
546
|
* jQuery
|
|
457
|
-
* ------------------------------------------------------------------------
|
|
458
547
|
*/
|
|
459
548
|
|
|
460
|
-
|
|
461
|
-
|
|
549
|
+
$__default["default"].fn[NAME] = Dropdown._jQueryInterface;
|
|
550
|
+
$__default["default"].fn[NAME].Constructor = Dropdown;
|
|
462
551
|
|
|
463
|
-
|
|
464
|
-
|
|
552
|
+
$__default["default"].fn[NAME].noConflict = function () {
|
|
553
|
+
$__default["default"].fn[NAME] = JQUERY_NO_CONFLICT;
|
|
465
554
|
return Dropdown._jQueryInterface;
|
|
466
555
|
};
|
|
467
556
|
|
|
468
557
|
return Dropdown;
|
|
469
|
-
|
|
558
|
+
|
|
559
|
+
}));
|