bootstrap 4.5.2 → 5.0.0.beta1
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 +4 -4
- data/.travis.yml +1 -1
- data/README.md +5 -2
- data/assets/javascripts/bootstrap-sprockets.js +11 -8
- data/assets/javascripts/bootstrap.js +2170 -1572
- data/assets/javascripts/bootstrap.min.js +2 -2
- data/assets/javascripts/bootstrap/alert.js +195 -66
- data/assets/javascripts/bootstrap/button.js +120 -136
- data/assets/javascripts/bootstrap/carousel.js +390 -184
- data/assets/javascripts/bootstrap/collapse.js +364 -133
- data/assets/javascripts/bootstrap/dom/data.js +81 -0
- data/assets/javascripts/bootstrap/dom/event-handler.js +309 -0
- data/assets/javascripts/bootstrap/dom/manipulator.js +86 -0
- data/assets/javascripts/bootstrap/dom/selector-engine.js +98 -0
- data/assets/javascripts/bootstrap/dropdown.js +357 -232
- data/assets/javascripts/bootstrap/modal.js +406 -211
- data/assets/javascripts/bootstrap/popover.js +82 -50
- data/assets/javascripts/bootstrap/scrollspy.js +226 -80
- data/assets/javascripts/bootstrap/tab.js +215 -77
- data/assets/javascripts/bootstrap/toast.js +239 -79
- data/assets/javascripts/bootstrap/tooltip.js +529 -258
- data/assets/stylesheets/_bootstrap-grid.scss +51 -15
- data/assets/stylesheets/_bootstrap-reboot.scss +4 -1
- data/assets/stylesheets/_bootstrap.scss +15 -8
- data/assets/stylesheets/bootstrap/_accordion.scss +125 -0
- data/assets/stylesheets/bootstrap/_alert.scss +15 -9
- data/assets/stylesheets/bootstrap/_badge.scss +2 -27
- data/assets/stylesheets/bootstrap/_breadcrumb.scss +4 -20
- data/assets/stylesheets/bootstrap/_button-group.scss +21 -45
- data/assets/stylesheets/bootstrap/_buttons.scss +27 -60
- data/assets/stylesheets/bootstrap/_card.scss +25 -96
- data/assets/stylesheets/bootstrap/_carousel.scss +54 -28
- data/assets/stylesheets/bootstrap/_close.scss +30 -30
- data/assets/stylesheets/bootstrap/_containers.scss +41 -0
- data/assets/stylesheets/bootstrap/_dropdown.scss +74 -31
- data/assets/stylesheets/bootstrap/_forms.scss +9 -347
- data/assets/stylesheets/bootstrap/_functions.scss +87 -23
- data/assets/stylesheets/bootstrap/_grid.scss +3 -54
- data/assets/stylesheets/bootstrap/_helpers.scss +7 -0
- data/assets/stylesheets/bootstrap/_list-group.scss +18 -9
- data/assets/stylesheets/bootstrap/_mixins.scss +7 -13
- data/assets/stylesheets/bootstrap/_modal.scss +41 -46
- data/assets/stylesheets/bootstrap/_nav.scss +12 -8
- data/assets/stylesheets/bootstrap/_navbar.scss +43 -74
- data/assets/stylesheets/bootstrap/_pagination.scss +10 -20
- data/assets/stylesheets/bootstrap/_popover.scss +23 -20
- data/assets/stylesheets/bootstrap/_progress.scss +3 -5
- data/assets/stylesheets/bootstrap/_reboot.scss +328 -173
- data/assets/stylesheets/bootstrap/_root.scss +5 -9
- data/assets/stylesheets/bootstrap/_spinners.scss +14 -5
- data/assets/stylesheets/bootstrap/_tables.scss +79 -114
- data/assets/stylesheets/bootstrap/_toasts.scss +19 -15
- data/assets/stylesheets/bootstrap/_tooltip.scss +17 -17
- data/assets/stylesheets/bootstrap/_transitions.scss +0 -1
- data/assets/stylesheets/bootstrap/_type.scss +38 -59
- data/assets/stylesheets/bootstrap/_utilities.scss +560 -18
- data/assets/stylesheets/bootstrap/_variables.scss +652 -459
- data/assets/stylesheets/bootstrap/bootstrap-utilities.scss +18 -0
- data/assets/stylesheets/bootstrap/forms/_floating-labels.scss +61 -0
- data/assets/stylesheets/bootstrap/forms/_form-check.scss +151 -0
- data/assets/stylesheets/bootstrap/forms/_form-control.scss +223 -0
- data/assets/stylesheets/bootstrap/forms/_form-range.scss +91 -0
- data/assets/stylesheets/bootstrap/forms/_form-select.scss +68 -0
- data/assets/stylesheets/bootstrap/forms/_form-text.scss +11 -0
- data/assets/stylesheets/bootstrap/forms/_input-group.scss +121 -0
- data/assets/stylesheets/bootstrap/forms/_labels.scss +36 -0
- data/assets/stylesheets/bootstrap/forms/_validation.scss +12 -0
- data/assets/stylesheets/bootstrap/{utilities → helpers}/_clearfix.scss +0 -0
- data/assets/stylesheets/bootstrap/helpers/_colored-links.scss +12 -0
- data/assets/stylesheets/bootstrap/helpers/_position.scss +30 -0
- data/assets/stylesheets/bootstrap/helpers/_ratio.scss +26 -0
- data/assets/stylesheets/bootstrap/helpers/_stretched-link.scss +15 -0
- data/assets/stylesheets/bootstrap/helpers/_text-truncation.scss +7 -0
- data/assets/stylesheets/bootstrap/helpers/_visually-hidden.scss +8 -0
- data/assets/stylesheets/bootstrap/mixins/_alert.scss +1 -5
- data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +9 -9
- data/assets/stylesheets/bootstrap/mixins/_box-shadow.scss +7 -9
- data/assets/stylesheets/bootstrap/mixins/_breakpoints.scss +14 -10
- data/assets/stylesheets/bootstrap/mixins/_buttons.scss +65 -47
- data/assets/stylesheets/bootstrap/mixins/_caret.scss +8 -8
- data/assets/stylesheets/bootstrap/mixins/_clearfix.scss +2 -0
- data/assets/stylesheets/bootstrap/mixins/_container.scss +9 -0
- data/assets/stylesheets/bootstrap/mixins/_forms.scss +17 -78
- data/assets/stylesheets/bootstrap/mixins/_gradients.scss +9 -11
- data/assets/stylesheets/bootstrap/mixins/_grid.scss +84 -33
- data/assets/stylesheets/bootstrap/mixins/_image.scss +1 -21
- data/assets/stylesheets/bootstrap/mixins/_list-group.scss +3 -2
- data/assets/stylesheets/bootstrap/mixins/_lists.scss +1 -1
- data/assets/stylesheets/bootstrap/mixins/_pagination.scss +15 -8
- data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +2 -2
- data/assets/stylesheets/bootstrap/mixins/_table-variants.scss +21 -0
- data/assets/stylesheets/bootstrap/mixins/_transition.scss +2 -2
- data/assets/stylesheets/bootstrap/mixins/_utilities.scss +68 -0
- data/assets/stylesheets/bootstrap/mixins/_visually-hidden.scss +28 -0
- data/assets/stylesheets/bootstrap/utilities/_api.scss +47 -0
- data/assets/stylesheets/bootstrap/vendor/_rfs.scss +234 -126
- data/lib/bootstrap/version.rb +2 -2
- data/tasks/updater/js.rb +6 -4
- metadata +33 -41
- data/assets/javascripts/bootstrap/util.js +0 -192
- data/assets/stylesheets/bootstrap/_code.scss +0 -48
- data/assets/stylesheets/bootstrap/_custom-forms.scss +0 -523
- data/assets/stylesheets/bootstrap/_input-group.scss +0 -192
- data/assets/stylesheets/bootstrap/_jumbotron.scss +0 -17
- data/assets/stylesheets/bootstrap/_media.scss +0 -8
- data/assets/stylesheets/bootstrap/_print.scss +0 -141
- data/assets/stylesheets/bootstrap/mixins/_background-variant.scss +0 -23
- data/assets/stylesheets/bootstrap/mixins/_badge.scss +0 -17
- data/assets/stylesheets/bootstrap/mixins/_float.scss +0 -14
- data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +0 -80
- data/assets/stylesheets/bootstrap/mixins/_hover.scss +0 -37
- data/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +0 -11
- data/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +0 -34
- data/assets/stylesheets/bootstrap/mixins/_size.scss +0 -7
- data/assets/stylesheets/bootstrap/mixins/_table-row.scss +0 -39
- data/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +0 -17
- data/assets/stylesheets/bootstrap/mixins/_text-hide.scss +0 -11
- data/assets/stylesheets/bootstrap/mixins/_visibility.scss +0 -8
- data/assets/stylesheets/bootstrap/utilities/_align.scss +0 -8
- data/assets/stylesheets/bootstrap/utilities/_background.scss +0 -19
- data/assets/stylesheets/bootstrap/utilities/_borders.scss +0 -75
- data/assets/stylesheets/bootstrap/utilities/_display.scss +0 -26
- data/assets/stylesheets/bootstrap/utilities/_embed.scss +0 -39
- data/assets/stylesheets/bootstrap/utilities/_flex.scss +0 -51
- data/assets/stylesheets/bootstrap/utilities/_float.scss +0 -11
- data/assets/stylesheets/bootstrap/utilities/_interactions.scss +0 -5
- data/assets/stylesheets/bootstrap/utilities/_overflow.scss +0 -5
- data/assets/stylesheets/bootstrap/utilities/_position.scss +0 -32
- data/assets/stylesheets/bootstrap/utilities/_screenreaders.scss +0 -11
- data/assets/stylesheets/bootstrap/utilities/_shadows.scss +0 -6
- data/assets/stylesheets/bootstrap/utilities/_sizing.scss +0 -20
- data/assets/stylesheets/bootstrap/utilities/_spacing.scss +0 -73
- data/assets/stylesheets/bootstrap/utilities/_stretched-link.scss +0 -19
- data/assets/stylesheets/bootstrap/utilities/_text.scss +0 -72
- data/assets/stylesheets/bootstrap/utilities/_visibility.scss +0 -13
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Bootstrap selector-engine.js v5.0.0-beta1 (https://getbootstrap.com/)
|
|
3
|
+
* Copyright 2011-2020 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() :
|
|
8
|
+
typeof define === 'function' && define.amd ? define(factory) :
|
|
9
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.SelectorEngine = factory());
|
|
10
|
+
}(this, (function () { 'use strict';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* --------------------------------------------------------------------------
|
|
14
|
+
* Bootstrap (v5.0.0-beta1): dom/selector-engine.js
|
|
15
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
16
|
+
* --------------------------------------------------------------------------
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* ------------------------------------------------------------------------
|
|
21
|
+
* Constants
|
|
22
|
+
* ------------------------------------------------------------------------
|
|
23
|
+
*/
|
|
24
|
+
var NODE_TEXT = 3;
|
|
25
|
+
var SelectorEngine = {
|
|
26
|
+
matches: function matches(element, selector) {
|
|
27
|
+
return element.matches(selector);
|
|
28
|
+
},
|
|
29
|
+
find: function find(selector, element) {
|
|
30
|
+
var _ref;
|
|
31
|
+
|
|
32
|
+
if (element === void 0) {
|
|
33
|
+
element = document.documentElement;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
return (_ref = []).concat.apply(_ref, Element.prototype.querySelectorAll.call(element, selector));
|
|
37
|
+
},
|
|
38
|
+
findOne: function findOne(selector, element) {
|
|
39
|
+
if (element === void 0) {
|
|
40
|
+
element = document.documentElement;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
return Element.prototype.querySelector.call(element, selector);
|
|
44
|
+
},
|
|
45
|
+
children: function children(element, selector) {
|
|
46
|
+
var _ref2;
|
|
47
|
+
|
|
48
|
+
var children = (_ref2 = []).concat.apply(_ref2, element.children);
|
|
49
|
+
|
|
50
|
+
return children.filter(function (child) {
|
|
51
|
+
return child.matches(selector);
|
|
52
|
+
});
|
|
53
|
+
},
|
|
54
|
+
parents: function parents(element, selector) {
|
|
55
|
+
var parents = [];
|
|
56
|
+
var ancestor = element.parentNode;
|
|
57
|
+
|
|
58
|
+
while (ancestor && ancestor.nodeType === Node.ELEMENT_NODE && ancestor.nodeType !== NODE_TEXT) {
|
|
59
|
+
if (this.matches(ancestor, selector)) {
|
|
60
|
+
parents.push(ancestor);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
ancestor = ancestor.parentNode;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
return parents;
|
|
67
|
+
},
|
|
68
|
+
prev: function prev(element, selector) {
|
|
69
|
+
var previous = element.previousElementSibling;
|
|
70
|
+
|
|
71
|
+
while (previous) {
|
|
72
|
+
if (previous.matches(selector)) {
|
|
73
|
+
return [previous];
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
previous = previous.previousElementSibling;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
return [];
|
|
80
|
+
},
|
|
81
|
+
next: function next(element, selector) {
|
|
82
|
+
var next = element.nextElementSibling;
|
|
83
|
+
|
|
84
|
+
while (next) {
|
|
85
|
+
if (this.matches(next, selector)) {
|
|
86
|
+
return [next];
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
next = next.nextElementSibling;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
return [];
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
return SelectorEngine;
|
|
97
|
+
|
|
98
|
+
})));
|
|
@@ -1,19 +1,127 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Bootstrap dropdown.js
|
|
2
|
+
* Bootstrap dropdown.js v5.0.0-beta1 (https://getbootstrap.com/)
|
|
3
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/main/LICENSE)
|
|
5
5
|
*/
|
|
6
6
|
(function (global, factory) {
|
|
7
|
-
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('
|
|
8
|
-
typeof define === 'function' && define.amd ? define(['
|
|
9
|
-
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Dropdown = factory(global.
|
|
10
|
-
}(this, (function (
|
|
7
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('@popperjs/core'), require('./dom/data.js'), require('./dom/event-handler.js'), require('./dom/manipulator.js'), require('./dom/selector-engine.js')) :
|
|
8
|
+
typeof define === 'function' && define.amd ? define(['@popperjs/core', './dom/data', './dom/event-handler', './dom/manipulator', './dom/selector-engine'], factory) :
|
|
9
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Dropdown = factory(global.Popper, global.Data, global.EventHandler, global.Manipulator, global.SelectorEngine));
|
|
10
|
+
}(this, (function (Popper, Data, EventHandler, Manipulator, SelectorEngine) { 'use strict';
|
|
11
|
+
|
|
12
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
13
|
+
|
|
14
|
+
function _interopNamespace(e) {
|
|
15
|
+
if (e && e.__esModule) return e;
|
|
16
|
+
var n = Object.create(null);
|
|
17
|
+
if (e) {
|
|
18
|
+
Object.keys(e).forEach(function (k) {
|
|
19
|
+
if (k !== 'default') {
|
|
20
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
21
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
22
|
+
enumerable: true,
|
|
23
|
+
get: function () {
|
|
24
|
+
return e[k];
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
n['default'] = e;
|
|
31
|
+
return Object.freeze(n);
|
|
32
|
+
}
|
|
11
33
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
34
|
+
var Popper__namespace = /*#__PURE__*/_interopNamespace(Popper);
|
|
35
|
+
var Data__default = /*#__PURE__*/_interopDefaultLegacy(Data);
|
|
36
|
+
var EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);
|
|
37
|
+
var Manipulator__default = /*#__PURE__*/_interopDefaultLegacy(Manipulator);
|
|
38
|
+
var SelectorEngine__default = /*#__PURE__*/_interopDefaultLegacy(SelectorEngine);
|
|
15
39
|
|
|
16
|
-
|
|
40
|
+
/**
|
|
41
|
+
* --------------------------------------------------------------------------
|
|
42
|
+
* Bootstrap (v5.0.0-beta1): util/index.js
|
|
43
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
44
|
+
* --------------------------------------------------------------------------
|
|
45
|
+
*/
|
|
46
|
+
|
|
47
|
+
var toType = function toType(obj) {
|
|
48
|
+
if (obj === null || obj === undefined) {
|
|
49
|
+
return "" + obj;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase();
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
var getSelector = function getSelector(element) {
|
|
56
|
+
var selector = element.getAttribute('data-bs-target');
|
|
57
|
+
|
|
58
|
+
if (!selector || selector === '#') {
|
|
59
|
+
var hrefAttr = element.getAttribute('href');
|
|
60
|
+
selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
return selector;
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
var getElementFromSelector = function getElementFromSelector(element) {
|
|
67
|
+
var selector = getSelector(element);
|
|
68
|
+
return selector ? document.querySelector(selector) : null;
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
var isElement = function isElement(obj) {
|
|
72
|
+
return (obj[0] || obj).nodeType;
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
var typeCheckConfig = function typeCheckConfig(componentName, config, configTypes) {
|
|
76
|
+
Object.keys(configTypes).forEach(function (property) {
|
|
77
|
+
var expectedTypes = configTypes[property];
|
|
78
|
+
var value = config[property];
|
|
79
|
+
var valueType = value && isElement(value) ? 'element' : toType(value);
|
|
80
|
+
|
|
81
|
+
if (!new RegExp(expectedTypes).test(valueType)) {
|
|
82
|
+
throw new Error(componentName.toUpperCase() + ": " + ("Option \"" + property + "\" provided type \"" + valueType + "\" ") + ("but expected type \"" + expectedTypes + "\"."));
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
var isVisible = function isVisible(element) {
|
|
88
|
+
if (!element) {
|
|
89
|
+
return false;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
if (element.style && element.parentNode && element.parentNode.style) {
|
|
93
|
+
var elementStyle = getComputedStyle(element);
|
|
94
|
+
var parentNodeStyle = getComputedStyle(element.parentNode);
|
|
95
|
+
return elementStyle.display !== 'none' && parentNodeStyle.display !== 'none' && elementStyle.visibility !== 'hidden';
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
return false;
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
var noop = function noop() {
|
|
102
|
+
return function () {};
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
var getjQuery = function getjQuery() {
|
|
106
|
+
var _window = window,
|
|
107
|
+
jQuery = _window.jQuery;
|
|
108
|
+
|
|
109
|
+
if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {
|
|
110
|
+
return jQuery;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
return null;
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
var onDOMContentLoaded = function onDOMContentLoaded(callback) {
|
|
117
|
+
if (document.readyState === 'loading') {
|
|
118
|
+
document.addEventListener('DOMContentLoaded', callback);
|
|
119
|
+
} else {
|
|
120
|
+
callback();
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
|
|
124
|
+
var isRTL = document.documentElement.dir === 'rtl';
|
|
17
125
|
|
|
18
126
|
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); } }
|
|
19
127
|
|
|
@@ -24,25 +132,66 @@
|
|
|
24
132
|
* ------------------------------------------------------------------------
|
|
25
133
|
*/
|
|
26
134
|
|
|
27
|
-
var
|
|
28
|
-
var VERSION = '4.5.2';
|
|
29
|
-
var DATA_KEY = 'bs.dropdown';
|
|
30
|
-
var EVENT_KEY = "." + DATA_KEY;
|
|
31
|
-
var DATA_API_KEY = '.data-api';
|
|
32
|
-
var JQUERY_NO_CONFLICT = $.fn[NAME];
|
|
33
|
-
var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key
|
|
135
|
+
var VERSION = '5.0.0-beta1';
|
|
34
136
|
|
|
35
|
-
var
|
|
137
|
+
var BaseComponent = /*#__PURE__*/function () {
|
|
138
|
+
function BaseComponent(element) {
|
|
139
|
+
if (!element) {
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
36
142
|
|
|
37
|
-
|
|
143
|
+
this._element = element;
|
|
144
|
+
Data__default['default'].setData(element, this.constructor.DATA_KEY, this);
|
|
145
|
+
}
|
|
38
146
|
|
|
39
|
-
|
|
147
|
+
var _proto = BaseComponent.prototype;
|
|
40
148
|
|
|
41
|
-
|
|
149
|
+
_proto.dispose = function dispose() {
|
|
150
|
+
Data__default['default'].removeData(this._element, this.constructor.DATA_KEY);
|
|
151
|
+
this._element = null;
|
|
152
|
+
}
|
|
153
|
+
/** Static */
|
|
154
|
+
;
|
|
42
155
|
|
|
43
|
-
|
|
156
|
+
BaseComponent.getInstance = function getInstance(element) {
|
|
157
|
+
return Data__default['default'].getData(element, this.DATA_KEY);
|
|
158
|
+
};
|
|
44
159
|
|
|
45
|
-
|
|
160
|
+
_createClass(BaseComponent, null, [{
|
|
161
|
+
key: "VERSION",
|
|
162
|
+
get: function get() {
|
|
163
|
+
return VERSION;
|
|
164
|
+
}
|
|
165
|
+
}]);
|
|
166
|
+
|
|
167
|
+
return BaseComponent;
|
|
168
|
+
}();
|
|
169
|
+
|
|
170
|
+
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
171
|
+
|
|
172
|
+
function _defineProperties$1(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); } }
|
|
173
|
+
|
|
174
|
+
function _createClass$1(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties$1(Constructor.prototype, protoProps); if (staticProps) _defineProperties$1(Constructor, staticProps); return Constructor; }
|
|
175
|
+
|
|
176
|
+
function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
|
|
177
|
+
/**
|
|
178
|
+
* ------------------------------------------------------------------------
|
|
179
|
+
* Constants
|
|
180
|
+
* ------------------------------------------------------------------------
|
|
181
|
+
*/
|
|
182
|
+
|
|
183
|
+
var NAME = 'dropdown';
|
|
184
|
+
var DATA_KEY = 'bs.dropdown';
|
|
185
|
+
var EVENT_KEY = "." + DATA_KEY;
|
|
186
|
+
var DATA_API_KEY = '.data-api';
|
|
187
|
+
var ESCAPE_KEY = 'Escape';
|
|
188
|
+
var SPACE_KEY = 'Space';
|
|
189
|
+
var TAB_KEY = 'Tab';
|
|
190
|
+
var ARROW_UP_KEY = 'ArrowUp';
|
|
191
|
+
var ARROW_DOWN_KEY = 'ArrowDown';
|
|
192
|
+
var RIGHT_MOUSE_BUTTON = 2; // MouseEvent.button value for the secondary button, usually the right button
|
|
193
|
+
|
|
194
|
+
var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEY + "|" + ARROW_DOWN_KEY + "|" + ESCAPE_KEY);
|
|
46
195
|
var EVENT_HIDE = "hide" + EVENT_KEY;
|
|
47
196
|
var EVENT_HIDDEN = "hidden" + EVENT_KEY;
|
|
48
197
|
var EVENT_SHOW = "show" + EVENT_KEY;
|
|
@@ -54,25 +203,24 @@
|
|
|
54
203
|
var CLASS_NAME_DISABLED = 'disabled';
|
|
55
204
|
var CLASS_NAME_SHOW = 'show';
|
|
56
205
|
var CLASS_NAME_DROPUP = 'dropup';
|
|
57
|
-
var
|
|
58
|
-
var
|
|
59
|
-
var
|
|
60
|
-
var
|
|
61
|
-
var SELECTOR_DATA_TOGGLE = '[data-toggle="dropdown"]';
|
|
206
|
+
var CLASS_NAME_DROPEND = 'dropend';
|
|
207
|
+
var CLASS_NAME_DROPSTART = 'dropstart';
|
|
208
|
+
var CLASS_NAME_NAVBAR = 'navbar';
|
|
209
|
+
var SELECTOR_DATA_TOGGLE = '[data-bs-toggle="dropdown"]';
|
|
62
210
|
var SELECTOR_FORM_CHILD = '.dropdown form';
|
|
63
211
|
var SELECTOR_MENU = '.dropdown-menu';
|
|
64
212
|
var SELECTOR_NAVBAR_NAV = '.navbar-nav';
|
|
65
213
|
var SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';
|
|
66
|
-
var PLACEMENT_TOP = 'top-start';
|
|
67
|
-
var PLACEMENT_TOPEND = 'top-end';
|
|
68
|
-
var PLACEMENT_BOTTOM = 'bottom-start';
|
|
69
|
-
var PLACEMENT_BOTTOMEND = 'bottom-end';
|
|
70
|
-
var PLACEMENT_RIGHT = 'right-start';
|
|
71
|
-
var PLACEMENT_LEFT = 'left-start';
|
|
214
|
+
var PLACEMENT_TOP = isRTL ? 'top-end' : 'top-start';
|
|
215
|
+
var PLACEMENT_TOPEND = isRTL ? 'top-start' : 'top-end';
|
|
216
|
+
var PLACEMENT_BOTTOM = isRTL ? 'bottom-end' : 'bottom-start';
|
|
217
|
+
var PLACEMENT_BOTTOMEND = isRTL ? 'bottom-start' : 'bottom-end';
|
|
218
|
+
var PLACEMENT_RIGHT = isRTL ? 'left-start' : 'right-start';
|
|
219
|
+
var PLACEMENT_LEFT = isRTL ? 'right-start' : 'left-start';
|
|
72
220
|
var Default = {
|
|
73
221
|
offset: 0,
|
|
74
222
|
flip: true,
|
|
75
|
-
boundary: '
|
|
223
|
+
boundary: 'clippingParents',
|
|
76
224
|
reference: 'toggle',
|
|
77
225
|
display: 'dynamic',
|
|
78
226
|
popperConfig: null
|
|
@@ -91,15 +239,21 @@
|
|
|
91
239
|
* ------------------------------------------------------------------------
|
|
92
240
|
*/
|
|
93
241
|
|
|
94
|
-
var Dropdown = /*#__PURE__*/function () {
|
|
242
|
+
var Dropdown = /*#__PURE__*/function (_BaseComponent) {
|
|
243
|
+
_inheritsLoose(Dropdown, _BaseComponent);
|
|
244
|
+
|
|
95
245
|
function Dropdown(element, config) {
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
246
|
+
var _this;
|
|
247
|
+
|
|
248
|
+
_this = _BaseComponent.call(this, element) || this;
|
|
249
|
+
_this._popper = null;
|
|
250
|
+
_this._config = _this._getConfig(config);
|
|
251
|
+
_this._menu = _this._getMenuElement();
|
|
252
|
+
_this._inNavbar = _this._detectNavbar();
|
|
253
|
+
|
|
254
|
+
_this._addEventListeners();
|
|
101
255
|
|
|
102
|
-
|
|
256
|
+
return _this;
|
|
103
257
|
} // Getters
|
|
104
258
|
|
|
105
259
|
|
|
@@ -107,106 +261,92 @@
|
|
|
107
261
|
|
|
108
262
|
// Public
|
|
109
263
|
_proto.toggle = function toggle() {
|
|
110
|
-
if (this._element.disabled ||
|
|
264
|
+
if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED)) {
|
|
111
265
|
return;
|
|
112
266
|
}
|
|
113
267
|
|
|
114
|
-
var isActive =
|
|
268
|
+
var isActive = this._element.classList.contains(CLASS_NAME_SHOW);
|
|
115
269
|
|
|
116
|
-
Dropdown.
|
|
270
|
+
Dropdown.clearMenus();
|
|
117
271
|
|
|
118
272
|
if (isActive) {
|
|
119
273
|
return;
|
|
120
274
|
}
|
|
121
275
|
|
|
122
|
-
this.show(
|
|
276
|
+
this.show();
|
|
123
277
|
};
|
|
124
278
|
|
|
125
|
-
_proto.show = function show(
|
|
126
|
-
if (
|
|
127
|
-
usePopper = false;
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
if (this._element.disabled || $(this._element).hasClass(CLASS_NAME_DISABLED) || $(this._menu).hasClass(CLASS_NAME_SHOW)) {
|
|
279
|
+
_proto.show = function show() {
|
|
280
|
+
if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED) || this._menu.classList.contains(CLASS_NAME_SHOW)) {
|
|
131
281
|
return;
|
|
132
282
|
}
|
|
133
283
|
|
|
284
|
+
var parent = Dropdown.getParentFromElement(this._element);
|
|
134
285
|
var relatedTarget = {
|
|
135
286
|
relatedTarget: this._element
|
|
136
287
|
};
|
|
137
|
-
var showEvent =
|
|
138
|
-
|
|
139
|
-
var parent = Dropdown._getParentFromElement(this._element);
|
|
140
|
-
|
|
141
|
-
$(parent).trigger(showEvent);
|
|
288
|
+
var showEvent = EventHandler__default['default'].trigger(this._element, EVENT_SHOW, relatedTarget);
|
|
142
289
|
|
|
143
|
-
if (showEvent.
|
|
290
|
+
if (showEvent.defaultPrevented) {
|
|
144
291
|
return;
|
|
145
|
-
} //
|
|
292
|
+
} // Totally disable Popper for Dropdowns in Navbar
|
|
146
293
|
|
|
147
294
|
|
|
148
|
-
if (!this._inNavbar
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
* Popper - https://popper.js.org
|
|
152
|
-
*/
|
|
153
|
-
if (typeof Popper === 'undefined') {
|
|
154
|
-
throw new TypeError('Bootstrap\'s dropdowns require Popper.js (https://popper.js.org/)');
|
|
295
|
+
if (!this._inNavbar) {
|
|
296
|
+
if (typeof Popper__namespace === 'undefined') {
|
|
297
|
+
throw new TypeError('Bootstrap\'s dropdowns require Popper (https://popper.js.org)');
|
|
155
298
|
}
|
|
156
299
|
|
|
157
300
|
var referenceElement = this._element;
|
|
158
301
|
|
|
159
302
|
if (this._config.reference === 'parent') {
|
|
160
303
|
referenceElement = parent;
|
|
161
|
-
} else if (
|
|
304
|
+
} else if (isElement(this._config.reference)) {
|
|
162
305
|
referenceElement = this._config.reference; // Check if it's jQuery element
|
|
163
306
|
|
|
164
307
|
if (typeof this._config.reference.jquery !== 'undefined') {
|
|
165
308
|
referenceElement = this._config.reference[0];
|
|
166
309
|
}
|
|
167
|
-
} // If boundary is not `scrollParent`, then set position to `static`
|
|
168
|
-
// to allow the menu to "escape" the scroll parent's boundaries
|
|
169
|
-
// https://github.com/twbs/bootstrap/issues/24251
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
if (this._config.boundary !== 'scrollParent') {
|
|
173
|
-
$(parent).addClass(CLASS_NAME_POSITION_STATIC);
|
|
174
310
|
}
|
|
175
311
|
|
|
176
|
-
this._popper =
|
|
312
|
+
this._popper = Popper.createPopper(referenceElement, this._menu, this._getPopperConfig());
|
|
177
313
|
} // If this is a touch-enabled device we add extra
|
|
178
314
|
// empty mouseover listeners to the body's immediate children;
|
|
179
315
|
// only needed because of broken event delegation on iOS
|
|
180
316
|
// https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
|
|
181
317
|
|
|
182
318
|
|
|
183
|
-
if ('ontouchstart' in document.documentElement &&
|
|
184
|
-
|
|
319
|
+
if ('ontouchstart' in document.documentElement && !parent.closest(SELECTOR_NAVBAR_NAV)) {
|
|
320
|
+
var _ref;
|
|
321
|
+
|
|
322
|
+
(_ref = []).concat.apply(_ref, document.body.children).forEach(function (elem) {
|
|
323
|
+
return EventHandler__default['default'].on(elem, 'mouseover', null, noop());
|
|
324
|
+
});
|
|
185
325
|
}
|
|
186
326
|
|
|
187
327
|
this._element.focus();
|
|
188
328
|
|
|
189
329
|
this._element.setAttribute('aria-expanded', true);
|
|
190
330
|
|
|
191
|
-
|
|
192
|
-
|
|
331
|
+
this._menu.classList.toggle(CLASS_NAME_SHOW);
|
|
332
|
+
|
|
333
|
+
this._element.classList.toggle(CLASS_NAME_SHOW);
|
|
334
|
+
|
|
335
|
+
EventHandler__default['default'].trigger(parent, EVENT_SHOWN, relatedTarget);
|
|
193
336
|
};
|
|
194
337
|
|
|
195
338
|
_proto.hide = function hide() {
|
|
196
|
-
if (this._element.disabled ||
|
|
339
|
+
if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED) || !this._menu.classList.contains(CLASS_NAME_SHOW)) {
|
|
197
340
|
return;
|
|
198
341
|
}
|
|
199
342
|
|
|
343
|
+
var parent = Dropdown.getParentFromElement(this._element);
|
|
200
344
|
var relatedTarget = {
|
|
201
345
|
relatedTarget: this._element
|
|
202
346
|
};
|
|
203
|
-
var hideEvent =
|
|
347
|
+
var hideEvent = EventHandler__default['default'].trigger(parent, EVENT_HIDE, relatedTarget);
|
|
204
348
|
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
$(parent).trigger(hideEvent);
|
|
208
|
-
|
|
209
|
-
if (hideEvent.isDefaultPrevented()) {
|
|
349
|
+
if (hideEvent.defaultPrevented) {
|
|
210
350
|
return;
|
|
211
351
|
}
|
|
212
352
|
|
|
@@ -214,17 +354,20 @@
|
|
|
214
354
|
this._popper.destroy();
|
|
215
355
|
}
|
|
216
356
|
|
|
217
|
-
|
|
218
|
-
|
|
357
|
+
this._menu.classList.toggle(CLASS_NAME_SHOW);
|
|
358
|
+
|
|
359
|
+
this._element.classList.toggle(CLASS_NAME_SHOW);
|
|
360
|
+
|
|
361
|
+
EventHandler__default['default'].trigger(parent, EVENT_HIDDEN, relatedTarget);
|
|
219
362
|
};
|
|
220
363
|
|
|
221
364
|
_proto.dispose = function dispose() {
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
this._element
|
|
365
|
+
_BaseComponent.prototype.dispose.call(this);
|
|
366
|
+
|
|
367
|
+
EventHandler__default['default'].off(this._element, EVENT_KEY);
|
|
225
368
|
this._menu = null;
|
|
226
369
|
|
|
227
|
-
if (this._popper
|
|
370
|
+
if (this._popper) {
|
|
228
371
|
this._popper.destroy();
|
|
229
372
|
|
|
230
373
|
this._popper = null;
|
|
@@ -234,135 +377,115 @@
|
|
|
234
377
|
_proto.update = function update() {
|
|
235
378
|
this._inNavbar = this._detectNavbar();
|
|
236
379
|
|
|
237
|
-
if (this._popper
|
|
238
|
-
this._popper.
|
|
380
|
+
if (this._popper) {
|
|
381
|
+
this._popper.update();
|
|
239
382
|
}
|
|
240
383
|
} // Private
|
|
241
384
|
;
|
|
242
385
|
|
|
243
386
|
_proto._addEventListeners = function _addEventListeners() {
|
|
244
|
-
var
|
|
387
|
+
var _this2 = this;
|
|
245
388
|
|
|
246
|
-
|
|
389
|
+
EventHandler__default['default'].on(this._element, EVENT_CLICK, function (event) {
|
|
247
390
|
event.preventDefault();
|
|
248
391
|
event.stopPropagation();
|
|
249
392
|
|
|
250
|
-
|
|
393
|
+
_this2.toggle();
|
|
251
394
|
});
|
|
252
395
|
};
|
|
253
396
|
|
|
254
397
|
_proto._getConfig = function _getConfig(config) {
|
|
255
|
-
config = _extends({}, this.constructor.Default,
|
|
256
|
-
|
|
398
|
+
config = _extends({}, this.constructor.Default, Manipulator__default['default'].getDataAttributes(this._element), config);
|
|
399
|
+
typeCheckConfig(NAME, config, this.constructor.DefaultType);
|
|
257
400
|
return config;
|
|
258
401
|
};
|
|
259
402
|
|
|
260
403
|
_proto._getMenuElement = function _getMenuElement() {
|
|
261
|
-
|
|
262
|
-
var parent = Dropdown._getParentFromElement(this._element);
|
|
263
|
-
|
|
264
|
-
if (parent) {
|
|
265
|
-
this._menu = parent.querySelector(SELECTOR_MENU);
|
|
266
|
-
}
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
return this._menu;
|
|
404
|
+
return SelectorEngine__default['default'].next(this._element, SELECTOR_MENU)[0];
|
|
270
405
|
};
|
|
271
406
|
|
|
272
407
|
_proto._getPlacement = function _getPlacement() {
|
|
273
|
-
var
|
|
274
|
-
var placement = PLACEMENT_BOTTOM; // Handle dropup
|
|
275
|
-
|
|
276
|
-
if ($parentDropdown.hasClass(CLASS_NAME_DROPUP)) {
|
|
277
|
-
placement = $(this._menu).hasClass(CLASS_NAME_MENURIGHT) ? PLACEMENT_TOPEND : PLACEMENT_TOP;
|
|
278
|
-
} else if ($parentDropdown.hasClass(CLASS_NAME_DROPRIGHT)) {
|
|
279
|
-
placement = PLACEMENT_RIGHT;
|
|
280
|
-
} else if ($parentDropdown.hasClass(CLASS_NAME_DROPLEFT)) {
|
|
281
|
-
placement = PLACEMENT_LEFT;
|
|
282
|
-
} else if ($(this._menu).hasClass(CLASS_NAME_MENURIGHT)) {
|
|
283
|
-
placement = PLACEMENT_BOTTOMEND;
|
|
284
|
-
}
|
|
408
|
+
var parentDropdown = this._element.parentNode;
|
|
285
409
|
|
|
286
|
-
|
|
287
|
-
|
|
410
|
+
if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {
|
|
411
|
+
return PLACEMENT_RIGHT;
|
|
412
|
+
}
|
|
288
413
|
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
414
|
+
if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {
|
|
415
|
+
return PLACEMENT_LEFT;
|
|
416
|
+
} // We need to trim the value because custom properties can also include spaces
|
|
292
417
|
|
|
293
|
-
_proto._getOffset = function _getOffset() {
|
|
294
|
-
var _this2 = this;
|
|
295
418
|
|
|
296
|
-
var
|
|
419
|
+
var isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end';
|
|
297
420
|
|
|
298
|
-
if (
|
|
299
|
-
|
|
300
|
-
data.offsets = _extends({}, data.offsets, _this2._config.offset(data.offsets, _this2._element) || {});
|
|
301
|
-
return data;
|
|
302
|
-
};
|
|
303
|
-
} else {
|
|
304
|
-
offset.offset = this._config.offset;
|
|
421
|
+
if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {
|
|
422
|
+
return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP;
|
|
305
423
|
}
|
|
306
424
|
|
|
307
|
-
return
|
|
425
|
+
return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM;
|
|
426
|
+
};
|
|
427
|
+
|
|
428
|
+
_proto._detectNavbar = function _detectNavbar() {
|
|
429
|
+
return this._element.closest("." + CLASS_NAME_NAVBAR) !== null;
|
|
308
430
|
};
|
|
309
431
|
|
|
310
432
|
_proto._getPopperConfig = function _getPopperConfig() {
|
|
311
433
|
var popperConfig = {
|
|
312
434
|
placement: this._getPlacement(),
|
|
313
|
-
modifiers: {
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
preventOverflow: {
|
|
319
|
-
boundariesElement: this._config.boundary
|
|
435
|
+
modifiers: [{
|
|
436
|
+
name: 'preventOverflow',
|
|
437
|
+
options: {
|
|
438
|
+
altBoundary: this._config.flip,
|
|
439
|
+
rootBoundary: this._config.boundary
|
|
320
440
|
}
|
|
321
|
-
}
|
|
322
|
-
}; // Disable Popper
|
|
441
|
+
}]
|
|
442
|
+
}; // Disable Popper if we have a static display
|
|
323
443
|
|
|
324
444
|
if (this._config.display === 'static') {
|
|
325
|
-
popperConfig.modifiers
|
|
445
|
+
popperConfig.modifiers = [{
|
|
446
|
+
name: 'applyStyles',
|
|
326
447
|
enabled: false
|
|
327
|
-
};
|
|
448
|
+
}];
|
|
328
449
|
}
|
|
329
450
|
|
|
330
451
|
return _extends({}, popperConfig, this._config.popperConfig);
|
|
331
452
|
} // Static
|
|
332
453
|
;
|
|
333
454
|
|
|
334
|
-
Dropdown.
|
|
335
|
-
|
|
336
|
-
var data = $(this).data(DATA_KEY);
|
|
455
|
+
Dropdown.dropdownInterface = function dropdownInterface(element, config) {
|
|
456
|
+
var data = Data__default['default'].getData(element, DATA_KEY);
|
|
337
457
|
|
|
338
|
-
|
|
458
|
+
var _config = typeof config === 'object' ? config : null;
|
|
459
|
+
|
|
460
|
+
if (!data) {
|
|
461
|
+
data = new Dropdown(element, _config);
|
|
462
|
+
}
|
|
339
463
|
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
464
|
+
if (typeof config === 'string') {
|
|
465
|
+
if (typeof data[config] === 'undefined') {
|
|
466
|
+
throw new TypeError("No method named \"" + config + "\"");
|
|
343
467
|
}
|
|
344
468
|
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
}
|
|
469
|
+
data[config]();
|
|
470
|
+
}
|
|
471
|
+
};
|
|
349
472
|
|
|
350
|
-
|
|
351
|
-
|
|
473
|
+
Dropdown.jQueryInterface = function jQueryInterface(config) {
|
|
474
|
+
return this.each(function () {
|
|
475
|
+
Dropdown.dropdownInterface(this, config);
|
|
352
476
|
});
|
|
353
477
|
};
|
|
354
478
|
|
|
355
|
-
Dropdown.
|
|
356
|
-
if (event && (event.
|
|
479
|
+
Dropdown.clearMenus = function clearMenus(event) {
|
|
480
|
+
if (event && (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY)) {
|
|
357
481
|
return;
|
|
358
482
|
}
|
|
359
483
|
|
|
360
|
-
var toggles = [].
|
|
484
|
+
var toggles = SelectorEngine__default['default'].find(SELECTOR_DATA_TOGGLE);
|
|
361
485
|
|
|
362
486
|
for (var i = 0, len = toggles.length; i < len; i++) {
|
|
363
|
-
var parent = Dropdown.
|
|
364
|
-
|
|
365
|
-
var context = $(toggles[i]).data(DATA_KEY);
|
|
487
|
+
var parent = Dropdown.getParentFromElement(toggles[i]);
|
|
488
|
+
var context = Data__default['default'].getData(toggles[i], DATA_KEY);
|
|
366
489
|
var relatedTarget = {
|
|
367
490
|
relatedTarget: toggles[i]
|
|
368
491
|
};
|
|
@@ -377,25 +500,28 @@
|
|
|
377
500
|
|
|
378
501
|
var dropdownMenu = context._menu;
|
|
379
502
|
|
|
380
|
-
if (
|
|
503
|
+
if (!toggles[i].classList.contains(CLASS_NAME_SHOW)) {
|
|
381
504
|
continue;
|
|
382
505
|
}
|
|
383
506
|
|
|
384
|
-
if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.
|
|
507
|
+
if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.key === TAB_KEY) && dropdownMenu.contains(event.target)) {
|
|
385
508
|
continue;
|
|
386
509
|
}
|
|
387
510
|
|
|
388
|
-
var hideEvent =
|
|
389
|
-
$(parent).trigger(hideEvent);
|
|
511
|
+
var hideEvent = EventHandler__default['default'].trigger(parent, EVENT_HIDE, relatedTarget);
|
|
390
512
|
|
|
391
|
-
if (hideEvent.
|
|
513
|
+
if (hideEvent.defaultPrevented) {
|
|
392
514
|
continue;
|
|
393
515
|
} // If this is a touch-enabled device we remove the extra
|
|
394
516
|
// empty mouseover listeners we added for iOS support
|
|
395
517
|
|
|
396
518
|
|
|
397
519
|
if ('ontouchstart' in document.documentElement) {
|
|
398
|
-
|
|
520
|
+
var _ref2;
|
|
521
|
+
|
|
522
|
+
(_ref2 = []).concat.apply(_ref2, document.body.children).forEach(function (elem) {
|
|
523
|
+
return EventHandler__default['default'].off(elem, 'mouseover', null, noop());
|
|
524
|
+
});
|
|
399
525
|
}
|
|
400
526
|
|
|
401
527
|
toggles[i].setAttribute('aria-expanded', 'false');
|
|
@@ -404,24 +530,17 @@
|
|
|
404
530
|
context._popper.destroy();
|
|
405
531
|
}
|
|
406
532
|
|
|
407
|
-
|
|
408
|
-
|
|
533
|
+
dropdownMenu.classList.remove(CLASS_NAME_SHOW);
|
|
534
|
+
toggles[i].classList.remove(CLASS_NAME_SHOW);
|
|
535
|
+
EventHandler__default['default'].trigger(parent, EVENT_HIDDEN, relatedTarget);
|
|
409
536
|
}
|
|
410
537
|
};
|
|
411
538
|
|
|
412
|
-
Dropdown.
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
if (selector) {
|
|
417
|
-
parent = document.querySelector(selector);
|
|
418
|
-
}
|
|
419
|
-
|
|
420
|
-
return parent || element.parentNode;
|
|
421
|
-
} // eslint-disable-next-line complexity
|
|
422
|
-
;
|
|
539
|
+
Dropdown.getParentFromElement = function getParentFromElement(element) {
|
|
540
|
+
return getElementFromSelector(element) || element.parentNode;
|
|
541
|
+
};
|
|
423
542
|
|
|
424
|
-
Dropdown.
|
|
543
|
+
Dropdown.dataApiKeydownHandler = function dataApiKeydownHandler(event) {
|
|
425
544
|
// If not input/textarea:
|
|
426
545
|
// - And not a key in REGEXP_KEYDOWN => not a dropdown command
|
|
427
546
|
// If input/textarea:
|
|
@@ -429,67 +548,55 @@
|
|
|
429
548
|
// - If key is other than escape
|
|
430
549
|
// - If key is not up or down => not a dropdown command
|
|
431
550
|
// - If trigger inside the menu => not a dropdown command
|
|
432
|
-
if (/input|textarea/i.test(event.target.tagName) ? event.
|
|
551
|
+
if (/input|textarea/i.test(event.target.tagName) ? event.key === SPACE_KEY || event.key !== ESCAPE_KEY && (event.key !== ARROW_DOWN_KEY && event.key !== ARROW_UP_KEY || event.target.closest(SELECTOR_MENU)) : !REGEXP_KEYDOWN.test(event.key)) {
|
|
433
552
|
return;
|
|
434
553
|
}
|
|
435
554
|
|
|
436
|
-
|
|
555
|
+
event.preventDefault();
|
|
556
|
+
event.stopPropagation();
|
|
557
|
+
|
|
558
|
+
if (this.disabled || this.classList.contains(CLASS_NAME_DISABLED)) {
|
|
437
559
|
return;
|
|
438
560
|
}
|
|
439
561
|
|
|
440
|
-
var parent = Dropdown.
|
|
441
|
-
|
|
442
|
-
var isActive = $(parent).hasClass(CLASS_NAME_SHOW);
|
|
562
|
+
var parent = Dropdown.getParentFromElement(this);
|
|
563
|
+
var isActive = this.classList.contains(CLASS_NAME_SHOW);
|
|
443
564
|
|
|
444
|
-
if (
|
|
565
|
+
if (event.key === ESCAPE_KEY) {
|
|
566
|
+
var button = this.matches(SELECTOR_DATA_TOGGLE) ? this : SelectorEngine__default['default'].prev(this, SELECTOR_DATA_TOGGLE)[0];
|
|
567
|
+
button.focus();
|
|
568
|
+
Dropdown.clearMenus();
|
|
445
569
|
return;
|
|
446
570
|
}
|
|
447
571
|
|
|
448
|
-
event.
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
if (!isActive || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {
|
|
452
|
-
if (event.which === ESCAPE_KEYCODE) {
|
|
453
|
-
$(parent.querySelector(SELECTOR_DATA_TOGGLE)).trigger('focus');
|
|
454
|
-
}
|
|
455
|
-
|
|
456
|
-
$(this).trigger('click');
|
|
572
|
+
if (!isActive || event.key === SPACE_KEY) {
|
|
573
|
+
Dropdown.clearMenus();
|
|
457
574
|
return;
|
|
458
575
|
}
|
|
459
576
|
|
|
460
|
-
var items = [].
|
|
461
|
-
return $(item).is(':visible');
|
|
462
|
-
});
|
|
577
|
+
var items = SelectorEngine__default['default'].find(SELECTOR_VISIBLE_ITEMS, parent).filter(isVisible);
|
|
463
578
|
|
|
464
|
-
if (items.length
|
|
579
|
+
if (!items.length) {
|
|
465
580
|
return;
|
|
466
581
|
}
|
|
467
582
|
|
|
468
|
-
var index = items.indexOf(event.target);
|
|
583
|
+
var index = items.indexOf(event.target); // Up
|
|
469
584
|
|
|
470
|
-
if (event.
|
|
471
|
-
// Up
|
|
585
|
+
if (event.key === ARROW_UP_KEY && index > 0) {
|
|
472
586
|
index--;
|
|
473
|
-
}
|
|
587
|
+
} // Down
|
|
474
588
|
|
|
475
|
-
|
|
476
|
-
|
|
589
|
+
|
|
590
|
+
if (event.key === ARROW_DOWN_KEY && index < items.length - 1) {
|
|
477
591
|
index++;
|
|
478
|
-
}
|
|
592
|
+
} // index is -1 if the first keydown is an ArrowUp
|
|
479
593
|
|
|
480
|
-
if (index < 0) {
|
|
481
|
-
index = 0;
|
|
482
|
-
}
|
|
483
594
|
|
|
595
|
+
index = index === -1 ? 0 : index;
|
|
484
596
|
items[index].focus();
|
|
485
597
|
};
|
|
486
598
|
|
|
487
|
-
_createClass(Dropdown, null, [{
|
|
488
|
-
key: "VERSION",
|
|
489
|
-
get: function get() {
|
|
490
|
-
return VERSION;
|
|
491
|
-
}
|
|
492
|
-
}, {
|
|
599
|
+
_createClass$1(Dropdown, null, [{
|
|
493
600
|
key: "Default",
|
|
494
601
|
get: function get() {
|
|
495
602
|
return Default;
|
|
@@ -499,10 +606,15 @@
|
|
|
499
606
|
get: function get() {
|
|
500
607
|
return DefaultType;
|
|
501
608
|
}
|
|
609
|
+
}, {
|
|
610
|
+
key: "DATA_KEY",
|
|
611
|
+
get: function get() {
|
|
612
|
+
return DATA_KEY;
|
|
613
|
+
}
|
|
502
614
|
}]);
|
|
503
615
|
|
|
504
616
|
return Dropdown;
|
|
505
|
-
}();
|
|
617
|
+
}(BaseComponent);
|
|
506
618
|
/**
|
|
507
619
|
* ------------------------------------------------------------------------
|
|
508
620
|
* Data Api implementation
|
|
@@ -510,27 +622,40 @@
|
|
|
510
622
|
*/
|
|
511
623
|
|
|
512
624
|
|
|
513
|
-
|
|
625
|
+
EventHandler__default['default'].on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown.dataApiKeydownHandler);
|
|
626
|
+
EventHandler__default['default'].on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler);
|
|
627
|
+
EventHandler__default['default'].on(document, EVENT_CLICK_DATA_API, Dropdown.clearMenus);
|
|
628
|
+
EventHandler__default['default'].on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus);
|
|
629
|
+
EventHandler__default['default'].on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
|
|
514
630
|
event.preventDefault();
|
|
515
631
|
event.stopPropagation();
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
e.stopPropagation();
|
|
632
|
+
Dropdown.dropdownInterface(this, 'toggle');
|
|
633
|
+
});
|
|
634
|
+
EventHandler__default['default'].on(document, EVENT_CLICK_DATA_API, SELECTOR_FORM_CHILD, function (e) {
|
|
635
|
+
return e.stopPropagation();
|
|
520
636
|
});
|
|
521
637
|
/**
|
|
522
638
|
* ------------------------------------------------------------------------
|
|
523
639
|
* jQuery
|
|
524
640
|
* ------------------------------------------------------------------------
|
|
641
|
+
* add .Dropdown to jQuery only if jQuery is present
|
|
525
642
|
*/
|
|
526
643
|
|
|
527
|
-
|
|
528
|
-
|
|
644
|
+
onDOMContentLoaded(function () {
|
|
645
|
+
var $ = getjQuery();
|
|
646
|
+
/* istanbul ignore if */
|
|
529
647
|
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
648
|
+
if ($) {
|
|
649
|
+
var JQUERY_NO_CONFLICT = $.fn[NAME];
|
|
650
|
+
$.fn[NAME] = Dropdown.jQueryInterface;
|
|
651
|
+
$.fn[NAME].Constructor = Dropdown;
|
|
652
|
+
|
|
653
|
+
$.fn[NAME].noConflict = function () {
|
|
654
|
+
$.fn[NAME] = JQUERY_NO_CONFLICT;
|
|
655
|
+
return Dropdown.jQueryInterface;
|
|
656
|
+
};
|
|
657
|
+
}
|
|
658
|
+
});
|
|
534
659
|
|
|
535
660
|
return Dropdown;
|
|
536
661
|
|