bootstrap 4.6.0 → 5.0.0.alpha1
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/README.md +1 -1
- data/assets/javascripts/bootstrap-sprockets.js +12 -8
- data/assets/javascripts/bootstrap.js +1889 -1255
- data/assets/javascripts/bootstrap.min.js +3 -3
- data/assets/javascripts/bootstrap/alert.js +136 -66
- data/assets/javascripts/bootstrap/button.js +59 -147
- data/assets/javascripts/bootstrap/carousel.js +276 -180
- data/assets/javascripts/bootstrap/collapse.js +284 -136
- data/assets/javascripts/bootstrap/dom/data.js +81 -0
- data/assets/javascripts/bootstrap/dom/event-handler.js +311 -0
- data/assets/javascripts/bootstrap/dom/manipulator.js +100 -0
- data/assets/javascripts/bootstrap/dom/polyfill.js +110 -0
- data/assets/javascripts/bootstrap/dom/selector-engine.js +98 -0
- data/assets/javascripts/bootstrap/dropdown.js +238 -195
- data/assets/javascripts/bootstrap/modal.js +321 -223
- data/assets/javascripts/bootstrap/popover.js +75 -79
- data/assets/javascripts/bootstrap/scrollspy.js +150 -86
- data/assets/javascripts/bootstrap/tab.js +154 -82
- data/assets/javascripts/bootstrap/toast.js +162 -95
- data/assets/javascripts/bootstrap/tooltip.js +337 -191
- data/assets/stylesheets/_bootstrap-grid.scss +53 -18
- data/assets/stylesheets/_bootstrap-reboot.scss +6 -3
- data/assets/stylesheets/_bootstrap.scss +16 -10
- data/assets/stylesheets/bootstrap/_alert.scss +3 -4
- data/assets/stylesheets/bootstrap/_badge.scss +2 -27
- data/assets/stylesheets/bootstrap/_breadcrumb.scss +5 -17
- data/assets/stylesheets/bootstrap/_button-group.scss +16 -38
- data/assets/stylesheets/bootstrap/_buttons.scss +27 -45
- data/assets/stylesheets/bootstrap/_card.scss +22 -68
- data/assets/stylesheets/bootstrap/_carousel.scss +13 -15
- data/assets/stylesheets/bootstrap/_close.scss +9 -13
- data/assets/stylesheets/bootstrap/_containers.scss +41 -0
- data/assets/stylesheets/bootstrap/_dropdown.scss +12 -9
- data/assets/stylesheets/bootstrap/_forms.scss +9 -347
- data/assets/stylesheets/bootstrap/_functions.scss +82 -23
- data/assets/stylesheets/bootstrap/_grid.scss +3 -54
- data/assets/stylesheets/bootstrap/_helpers.scss +7 -0
- data/assets/stylesheets/bootstrap/_list-group.scss +7 -4
- data/assets/stylesheets/bootstrap/_mixins.scss +6 -12
- data/assets/stylesheets/bootstrap/_modal.scss +34 -39
- data/assets/stylesheets/bootstrap/_nav.scss +7 -4
- data/assets/stylesheets/bootstrap/_navbar.scss +42 -82
- data/assets/stylesheets/bootstrap/_pagination.scss +7 -20
- data/assets/stylesheets/bootstrap/_popover.scss +5 -5
- data/assets/stylesheets/bootstrap/_progress.scss +3 -5
- data/assets/stylesheets/bootstrap/_reboot.scss +304 -172
- data/assets/stylesheets/bootstrap/_root.scss +5 -8
- data/assets/stylesheets/bootstrap/_spinners.scss +4 -13
- data/assets/stylesheets/bootstrap/_tables.scss +80 -114
- data/assets/stylesheets/bootstrap/_toasts.scss +2 -4
- data/assets/stylesheets/bootstrap/_tooltip.scss +5 -5
- data/assets/stylesheets/bootstrap/_transitions.scss +0 -1
- data/assets/stylesheets/bootstrap/_type.scss +38 -59
- data/assets/stylesheets/bootstrap/_utilities.scss +503 -18
- data/assets/stylesheets/bootstrap/_variables.scss +546 -432
- data/assets/stylesheets/bootstrap/bootstrap-utilities.scss +18 -0
- data/assets/stylesheets/bootstrap/forms/_form-check.scss +142 -0
- data/assets/stylesheets/bootstrap/forms/_form-control.scss +116 -0
- data/assets/stylesheets/bootstrap/forms/_form-file.scss +91 -0
- data/assets/stylesheets/bootstrap/forms/_form-range.scss +136 -0
- data/assets/stylesheets/bootstrap/forms/_form-select.scss +82 -0
- data/assets/stylesheets/bootstrap/forms/_form-text.scss +11 -0
- data/assets/stylesheets/bootstrap/forms/_input-group.scss +140 -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/_embed.scss +31 -0
- data/assets/stylesheets/bootstrap/helpers/_position.scss +30 -0
- data/assets/stylesheets/bootstrap/helpers/_screenreaders.scss +8 -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/mixins/_alert.scss +0 -4
- data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +1 -1
- data/assets/stylesheets/bootstrap/mixins/_breakpoints.scss +11 -8
- data/assets/stylesheets/bootstrap/mixins/_buttons.scss +62 -47
- data/assets/stylesheets/bootstrap/mixins/_caret.scss +4 -4
- 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 +22 -74
- data/assets/stylesheets/bootstrap/mixins/_gradients.scss +9 -11
- data/assets/stylesheets/bootstrap/mixins/_grid.scss +85 -33
- data/assets/stylesheets/bootstrap/mixins/_image.scss +1 -21
- data/assets/stylesheets/bootstrap/mixins/_list-group.scss +2 -1
- 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/_screen-reader.scss +17 -23
- 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 +49 -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 +3 -3
- metadata +32 -40
- data/assets/javascripts/bootstrap/util.js +0 -192
- data/assets/stylesheets/bootstrap/_code.scss +0 -48
- data/assets/stylesheets/bootstrap/_custom-forms.scss +0 -526
- data/assets/stylesheets/bootstrap/_input-group.scss +0 -208
- 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/_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,110 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Bootstrap polyfill.js v5.0.0-alpha1 (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' ? factory(exports) :
|
|
8
|
+
typeof define === 'function' && define.amd ? define(['exports'], factory) :
|
|
9
|
+
(global = global || self, factory(global.Polyfill = {}));
|
|
10
|
+
}(this, (function (exports) { 'use strict';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* --------------------------------------------------------------------------
|
|
14
|
+
* Bootstrap (v5.0.0-alpha1): util/index.js
|
|
15
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
16
|
+
* --------------------------------------------------------------------------
|
|
17
|
+
*/
|
|
18
|
+
var MAX_UID = 1000000;
|
|
19
|
+
/**
|
|
20
|
+
* --------------------------------------------------------------------------
|
|
21
|
+
* Public Util Api
|
|
22
|
+
* --------------------------------------------------------------------------
|
|
23
|
+
*/
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
var getUID = function getUID(prefix) {
|
|
27
|
+
do {
|
|
28
|
+
prefix += Math.floor(Math.random() * MAX_UID);
|
|
29
|
+
} while (document.getElementById(prefix));
|
|
30
|
+
|
|
31
|
+
return prefix;
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
/* istanbul ignore file */
|
|
35
|
+
exports.find = Element.prototype.querySelectorAll;
|
|
36
|
+
exports.findOne = Element.prototype.querySelector; // MSEdge resets defaultPrevented flag upon dispatchEvent call if at least one listener is attached
|
|
37
|
+
|
|
38
|
+
var defaultPreventedPreservedOnDispatch = function () {
|
|
39
|
+
var e = new CustomEvent('Bootstrap', {
|
|
40
|
+
cancelable: true
|
|
41
|
+
});
|
|
42
|
+
var element = document.createElement('div');
|
|
43
|
+
element.addEventListener('Bootstrap', function () {
|
|
44
|
+
return null;
|
|
45
|
+
});
|
|
46
|
+
e.preventDefault();
|
|
47
|
+
element.dispatchEvent(e);
|
|
48
|
+
return e.defaultPrevented;
|
|
49
|
+
}();
|
|
50
|
+
|
|
51
|
+
var scopeSelectorRegex = /:scope\b/;
|
|
52
|
+
|
|
53
|
+
var supportScopeQuery = function () {
|
|
54
|
+
var element = document.createElement('div');
|
|
55
|
+
|
|
56
|
+
try {
|
|
57
|
+
element.querySelectorAll(':scope *');
|
|
58
|
+
} catch (_) {
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
return true;
|
|
63
|
+
}();
|
|
64
|
+
|
|
65
|
+
if (!supportScopeQuery) {
|
|
66
|
+
exports.find = function find(selector) {
|
|
67
|
+
if (!scopeSelectorRegex.test(selector)) {
|
|
68
|
+
return this.querySelectorAll(selector);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
var hasId = Boolean(this.id);
|
|
72
|
+
|
|
73
|
+
if (!hasId) {
|
|
74
|
+
this.id = getUID('scope');
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
var nodeList = null;
|
|
78
|
+
|
|
79
|
+
try {
|
|
80
|
+
selector = selector.replace(scopeSelectorRegex, "#" + this.id);
|
|
81
|
+
nodeList = this.querySelectorAll(selector);
|
|
82
|
+
} finally {
|
|
83
|
+
if (!hasId) {
|
|
84
|
+
this.removeAttribute('id');
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
return nodeList;
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
exports.findOne = function findOne(selector) {
|
|
92
|
+
if (!scopeSelectorRegex.test(selector)) {
|
|
93
|
+
return this.querySelector(selector);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
var matches = exports.find.call(this, selector);
|
|
97
|
+
|
|
98
|
+
if (typeof matches[0] !== 'undefined') {
|
|
99
|
+
return matches[0];
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
return null;
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
exports.defaultPreventedPreservedOnDispatch = defaultPreventedPreservedOnDispatch;
|
|
107
|
+
|
|
108
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
109
|
+
|
|
110
|
+
})));
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Bootstrap selector-engine.js v5.0.0-alpha1 (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(require('./polyfill.js')) :
|
|
8
|
+
typeof define === 'function' && define.amd ? define(['./polyfill.js'], factory) :
|
|
9
|
+
(global = global || self, global.SelectorEngine = factory(global.Polyfill));
|
|
10
|
+
}(this, (function (polyfill_js) { 'use strict';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* --------------------------------------------------------------------------
|
|
14
|
+
* Bootstrap (v5.0.0-alpha1): dom/selector-engine.js
|
|
15
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
16
|
+
* --------------------------------------------------------------------------
|
|
17
|
+
*/
|
|
18
|
+
/**
|
|
19
|
+
* ------------------------------------------------------------------------
|
|
20
|
+
* Constants
|
|
21
|
+
* ------------------------------------------------------------------------
|
|
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, polyfill_js.find.call(element, selector));
|
|
37
|
+
},
|
|
38
|
+
findOne: function findOne(selector, element) {
|
|
39
|
+
if (element === void 0) {
|
|
40
|
+
element = document.documentElement;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
return polyfill_js.findOne.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,54 +1,105 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Bootstrap dropdown.js
|
|
3
|
-
* Copyright 2011-
|
|
2
|
+
* Bootstrap dropdown.js v5.0.0-alpha1 (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/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 =
|
|
10
|
-
}(this, (function (
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
7
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/data.js'), require('./dom/event-handler.js'), require('./dom/manipulator.js'), require('popper.js'), require('./dom/selector-engine.js')) :
|
|
8
|
+
typeof define === 'function' && define.amd ? define(['./dom/data.js', './dom/event-handler.js', './dom/manipulator.js', 'popper.js', './dom/selector-engine.js'], factory) :
|
|
9
|
+
(global = global || self, global.Dropdown = factory(global.Data, global.EventHandler, global.Manipulator, global.Popper, global.SelectorEngine));
|
|
10
|
+
}(this, (function (Data, EventHandler, Manipulator, Popper, SelectorEngine) { 'use strict';
|
|
11
|
+
|
|
12
|
+
Data = Data && Object.prototype.hasOwnProperty.call(Data, 'default') ? Data['default'] : Data;
|
|
13
|
+
EventHandler = EventHandler && Object.prototype.hasOwnProperty.call(EventHandler, 'default') ? EventHandler['default'] : EventHandler;
|
|
14
|
+
Manipulator = Manipulator && Object.prototype.hasOwnProperty.call(Manipulator, 'default') ? Manipulator['default'] : Manipulator;
|
|
15
|
+
Popper = Popper && Object.prototype.hasOwnProperty.call(Popper, 'default') ? Popper['default'] : Popper;
|
|
16
|
+
SelectorEngine = SelectorEngine && Object.prototype.hasOwnProperty.call(SelectorEngine, 'default') ? SelectorEngine['default'] : SelectorEngine;
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* --------------------------------------------------------------------------
|
|
20
|
+
* Bootstrap (v5.0.0-alpha1): util/index.js
|
|
21
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
22
|
+
* --------------------------------------------------------------------------
|
|
23
|
+
*/
|
|
24
|
+
|
|
25
|
+
var toType = function toType(obj) {
|
|
26
|
+
if (obj === null || obj === undefined) {
|
|
27
|
+
return "" + obj;
|
|
25
28
|
}
|
|
26
|
-
}
|
|
27
29
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
31
|
-
return Constructor;
|
|
32
|
-
}
|
|
30
|
+
return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase();
|
|
31
|
+
};
|
|
33
32
|
|
|
34
|
-
function
|
|
35
|
-
|
|
36
|
-
for (var i = 1; i < arguments.length; i++) {
|
|
37
|
-
var source = arguments[i];
|
|
33
|
+
var getSelector = function getSelector(element) {
|
|
34
|
+
var selector = element.getAttribute('data-target');
|
|
38
35
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
36
|
+
if (!selector || selector === '#') {
|
|
37
|
+
var hrefAttr = element.getAttribute('href');
|
|
38
|
+
selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
return selector;
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
var getElementFromSelector = function getElementFromSelector(element) {
|
|
45
|
+
var selector = getSelector(element);
|
|
46
|
+
return selector ? document.querySelector(selector) : null;
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
var isElement = function isElement(obj) {
|
|
50
|
+
return (obj[0] || obj).nodeType;
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
var typeCheckConfig = function typeCheckConfig(componentName, config, configTypes) {
|
|
54
|
+
Object.keys(configTypes).forEach(function (property) {
|
|
55
|
+
var expectedTypes = configTypes[property];
|
|
56
|
+
var value = config[property];
|
|
57
|
+
var valueType = value && isElement(value) ? 'element' : toType(value);
|
|
58
|
+
|
|
59
|
+
if (!new RegExp(expectedTypes).test(valueType)) {
|
|
60
|
+
throw new Error(componentName.toUpperCase() + ": " + ("Option \"" + property + "\" provided type \"" + valueType + "\" ") + ("but expected type \"" + expectedTypes + "\"."));
|
|
44
61
|
}
|
|
62
|
+
});
|
|
63
|
+
};
|
|
45
64
|
|
|
46
|
-
|
|
47
|
-
|
|
65
|
+
var isVisible = function isVisible(element) {
|
|
66
|
+
if (!element) {
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
48
69
|
|
|
49
|
-
|
|
50
|
-
|
|
70
|
+
if (element.style && element.parentNode && element.parentNode.style) {
|
|
71
|
+
var elementStyle = getComputedStyle(element);
|
|
72
|
+
var parentNodeStyle = getComputedStyle(element.parentNode);
|
|
73
|
+
return elementStyle.display !== 'none' && parentNodeStyle.display !== 'none' && elementStyle.visibility !== 'hidden';
|
|
74
|
+
}
|
|
51
75
|
|
|
76
|
+
return false;
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
var noop = function noop() {
|
|
80
|
+
return function () {};
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
var getjQuery = function getjQuery() {
|
|
84
|
+
var _window = window,
|
|
85
|
+
jQuery = _window.jQuery;
|
|
86
|
+
|
|
87
|
+
if (jQuery && !document.body.hasAttribute('data-no-jquery')) {
|
|
88
|
+
return jQuery;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
return null;
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
95
|
+
|
|
96
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
97
|
+
|
|
98
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
99
|
+
|
|
100
|
+
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); } }
|
|
101
|
+
|
|
102
|
+
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
|
52
103
|
/**
|
|
53
104
|
* ------------------------------------------------------------------------
|
|
54
105
|
* Constants
|
|
@@ -56,24 +107,18 @@
|
|
|
56
107
|
*/
|
|
57
108
|
|
|
58
109
|
var NAME = 'dropdown';
|
|
59
|
-
var VERSION = '
|
|
110
|
+
var VERSION = '5.0.0-alpha1';
|
|
60
111
|
var DATA_KEY = 'bs.dropdown';
|
|
61
112
|
var EVENT_KEY = "." + DATA_KEY;
|
|
62
113
|
var DATA_API_KEY = '.data-api';
|
|
63
|
-
var
|
|
64
|
-
var
|
|
65
|
-
|
|
66
|
-
var
|
|
67
|
-
|
|
68
|
-
var
|
|
69
|
-
|
|
70
|
-
var
|
|
71
|
-
|
|
72
|
-
var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key
|
|
73
|
-
|
|
74
|
-
var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse)
|
|
75
|
-
|
|
76
|
-
var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + "|" + ARROW_DOWN_KEYCODE + "|" + ESCAPE_KEYCODE);
|
|
114
|
+
var ESCAPE_KEY = 'Escape';
|
|
115
|
+
var SPACE_KEY = 'Space';
|
|
116
|
+
var TAB_KEY = 'Tab';
|
|
117
|
+
var ARROW_UP_KEY = 'ArrowUp';
|
|
118
|
+
var ARROW_DOWN_KEY = 'ArrowDown';
|
|
119
|
+
var RIGHT_MOUSE_BUTTON = 2; // MouseEvent.button value for the secondary button, usually the right button
|
|
120
|
+
|
|
121
|
+
var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEY + "|" + ARROW_DOWN_KEY + "|" + ESCAPE_KEY);
|
|
77
122
|
var EVENT_HIDE = "hide" + EVENT_KEY;
|
|
78
123
|
var EVENT_HIDDEN = "hidden" + EVENT_KEY;
|
|
79
124
|
var EVENT_SHOW = "show" + EVENT_KEY;
|
|
@@ -88,6 +133,7 @@
|
|
|
88
133
|
var CLASS_NAME_DROPRIGHT = 'dropright';
|
|
89
134
|
var CLASS_NAME_DROPLEFT = 'dropleft';
|
|
90
135
|
var CLASS_NAME_MENURIGHT = 'dropdown-menu-right';
|
|
136
|
+
var CLASS_NAME_NAVBAR = 'navbar';
|
|
91
137
|
var CLASS_NAME_POSITION_STATIC = 'position-static';
|
|
92
138
|
var SELECTOR_DATA_TOGGLE = '[data-toggle="dropdown"]';
|
|
93
139
|
var SELECTOR_FORM_CHILD = '.dropdown form';
|
|
@@ -131,6 +177,8 @@
|
|
|
131
177
|
this._inNavbar = this._detectNavbar();
|
|
132
178
|
|
|
133
179
|
this._addEventListeners();
|
|
180
|
+
|
|
181
|
+
Data.setData(element, DATA_KEY, this);
|
|
134
182
|
} // Getters
|
|
135
183
|
|
|
136
184
|
|
|
@@ -138,58 +186,47 @@
|
|
|
138
186
|
|
|
139
187
|
// Public
|
|
140
188
|
_proto.toggle = function toggle() {
|
|
141
|
-
if (this._element.disabled ||
|
|
189
|
+
if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED)) {
|
|
142
190
|
return;
|
|
143
191
|
}
|
|
144
192
|
|
|
145
|
-
var isActive =
|
|
193
|
+
var isActive = this._element.classList.contains(CLASS_NAME_SHOW);
|
|
146
194
|
|
|
147
|
-
Dropdown.
|
|
195
|
+
Dropdown.clearMenus();
|
|
148
196
|
|
|
149
197
|
if (isActive) {
|
|
150
198
|
return;
|
|
151
199
|
}
|
|
152
200
|
|
|
153
|
-
this.show(
|
|
201
|
+
this.show();
|
|
154
202
|
};
|
|
155
203
|
|
|
156
|
-
_proto.show = function show(
|
|
157
|
-
if (
|
|
158
|
-
usePopper = false;
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
if (this._element.disabled || $__default['default'](this._element).hasClass(CLASS_NAME_DISABLED) || $__default['default'](this._menu).hasClass(CLASS_NAME_SHOW)) {
|
|
204
|
+
_proto.show = function show() {
|
|
205
|
+
if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED) || this._menu.classList.contains(CLASS_NAME_SHOW)) {
|
|
162
206
|
return;
|
|
163
207
|
}
|
|
164
208
|
|
|
209
|
+
var parent = Dropdown.getParentFromElement(this._element);
|
|
165
210
|
var relatedTarget = {
|
|
166
211
|
relatedTarget: this._element
|
|
167
212
|
};
|
|
168
|
-
var showEvent =
|
|
169
|
-
|
|
170
|
-
var parent = Dropdown._getParentFromElement(this._element);
|
|
213
|
+
var showEvent = EventHandler.trigger(this._element, EVENT_SHOW, relatedTarget);
|
|
171
214
|
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
if (showEvent.isDefaultPrevented()) {
|
|
215
|
+
if (showEvent.defaultPrevented) {
|
|
175
216
|
return;
|
|
176
|
-
} //
|
|
217
|
+
} // Disable totally Popper.js for Dropdown in Navbar
|
|
177
218
|
|
|
178
219
|
|
|
179
|
-
if (!this._inNavbar
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
* Popper - https://popper.js.org
|
|
183
|
-
*/
|
|
184
|
-
if (typeof Popper__default['default'] === 'undefined') {
|
|
185
|
-
throw new TypeError('Bootstrap\'s dropdowns require Popper (https://popper.js.org)');
|
|
220
|
+
if (!this._inNavbar) {
|
|
221
|
+
if (typeof Popper === 'undefined') {
|
|
222
|
+
throw new TypeError('Bootstrap\'s dropdowns require Popper.js (https://popper.js.org)');
|
|
186
223
|
}
|
|
187
224
|
|
|
188
225
|
var referenceElement = this._element;
|
|
189
226
|
|
|
190
227
|
if (this._config.reference === 'parent') {
|
|
191
228
|
referenceElement = parent;
|
|
192
|
-
} else if (
|
|
229
|
+
} else if (isElement(this._config.reference)) {
|
|
193
230
|
referenceElement = this._config.reference; // Check if it's jQuery element
|
|
194
231
|
|
|
195
232
|
if (typeof this._config.reference.jquery !== 'undefined') {
|
|
@@ -201,43 +238,45 @@
|
|
|
201
238
|
|
|
202
239
|
|
|
203
240
|
if (this._config.boundary !== 'scrollParent') {
|
|
204
|
-
|
|
241
|
+
parent.classList.add(CLASS_NAME_POSITION_STATIC);
|
|
205
242
|
}
|
|
206
243
|
|
|
207
|
-
this._popper = new
|
|
244
|
+
this._popper = new Popper(referenceElement, this._menu, this._getPopperConfig());
|
|
208
245
|
} // If this is a touch-enabled device we add extra
|
|
209
246
|
// empty mouseover listeners to the body's immediate children;
|
|
210
247
|
// only needed because of broken event delegation on iOS
|
|
211
248
|
// https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
|
|
212
249
|
|
|
213
250
|
|
|
214
|
-
if ('ontouchstart' in document.documentElement &&
|
|
215
|
-
|
|
251
|
+
if ('ontouchstart' in document.documentElement && !parent.closest(SELECTOR_NAVBAR_NAV)) {
|
|
252
|
+
var _ref;
|
|
253
|
+
|
|
254
|
+
(_ref = []).concat.apply(_ref, document.body.children).forEach(function (elem) {
|
|
255
|
+
return EventHandler.on(elem, 'mouseover', null, noop());
|
|
256
|
+
});
|
|
216
257
|
}
|
|
217
258
|
|
|
218
259
|
this._element.focus();
|
|
219
260
|
|
|
220
261
|
this._element.setAttribute('aria-expanded', true);
|
|
221
262
|
|
|
222
|
-
|
|
223
|
-
|
|
263
|
+
Manipulator.toggleClass(this._menu, CLASS_NAME_SHOW);
|
|
264
|
+
Manipulator.toggleClass(this._element, CLASS_NAME_SHOW);
|
|
265
|
+
EventHandler.trigger(parent, EVENT_SHOWN, relatedTarget);
|
|
224
266
|
};
|
|
225
267
|
|
|
226
268
|
_proto.hide = function hide() {
|
|
227
|
-
if (this._element.disabled ||
|
|
269
|
+
if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED) || !this._menu.classList.contains(CLASS_NAME_SHOW)) {
|
|
228
270
|
return;
|
|
229
271
|
}
|
|
230
272
|
|
|
273
|
+
var parent = Dropdown.getParentFromElement(this._element);
|
|
231
274
|
var relatedTarget = {
|
|
232
275
|
relatedTarget: this._element
|
|
233
276
|
};
|
|
234
|
-
var hideEvent =
|
|
235
|
-
|
|
236
|
-
var parent = Dropdown._getParentFromElement(this._element);
|
|
277
|
+
var hideEvent = EventHandler.trigger(parent, EVENT_HIDE, relatedTarget);
|
|
237
278
|
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
if (hideEvent.isDefaultPrevented()) {
|
|
279
|
+
if (hideEvent.defaultPrevented) {
|
|
241
280
|
return;
|
|
242
281
|
}
|
|
243
282
|
|
|
@@ -245,17 +284,18 @@
|
|
|
245
284
|
this._popper.destroy();
|
|
246
285
|
}
|
|
247
286
|
|
|
248
|
-
|
|
249
|
-
|
|
287
|
+
Manipulator.toggleClass(this._menu, CLASS_NAME_SHOW);
|
|
288
|
+
Manipulator.toggleClass(this._element, CLASS_NAME_SHOW);
|
|
289
|
+
EventHandler.trigger(parent, EVENT_HIDDEN, relatedTarget);
|
|
250
290
|
};
|
|
251
291
|
|
|
252
292
|
_proto.dispose = function dispose() {
|
|
253
|
-
|
|
254
|
-
|
|
293
|
+
Data.removeData(this._element, DATA_KEY);
|
|
294
|
+
EventHandler.off(this._element, EVENT_KEY);
|
|
255
295
|
this._element = null;
|
|
256
296
|
this._menu = null;
|
|
257
297
|
|
|
258
|
-
if (this._popper
|
|
298
|
+
if (this._popper) {
|
|
259
299
|
this._popper.destroy();
|
|
260
300
|
|
|
261
301
|
this._popper = null;
|
|
@@ -265,7 +305,7 @@
|
|
|
265
305
|
_proto.update = function update() {
|
|
266
306
|
this._inNavbar = this._detectNavbar();
|
|
267
307
|
|
|
268
|
-
if (this._popper
|
|
308
|
+
if (this._popper) {
|
|
269
309
|
this._popper.scheduleUpdate();
|
|
270
310
|
}
|
|
271
311
|
} // Private
|
|
@@ -274,7 +314,7 @@
|
|
|
274
314
|
_proto._addEventListeners = function _addEventListeners() {
|
|
275
315
|
var _this = this;
|
|
276
316
|
|
|
277
|
-
|
|
317
|
+
EventHandler.on(this._element, EVENT_CLICK, function (event) {
|
|
278
318
|
event.preventDefault();
|
|
279
319
|
event.stopPropagation();
|
|
280
320
|
|
|
@@ -283,34 +323,30 @@
|
|
|
283
323
|
};
|
|
284
324
|
|
|
285
325
|
_proto._getConfig = function _getConfig(config) {
|
|
286
|
-
config =
|
|
287
|
-
|
|
326
|
+
config = _objectSpread(_objectSpread(_objectSpread({}, this.constructor.Default), Manipulator.getDataAttributes(this._element)), config);
|
|
327
|
+
typeCheckConfig(NAME, config, this.constructor.DefaultType);
|
|
288
328
|
return config;
|
|
289
329
|
};
|
|
290
330
|
|
|
291
331
|
_proto._getMenuElement = function _getMenuElement() {
|
|
292
|
-
|
|
293
|
-
var parent = Dropdown._getParentFromElement(this._element);
|
|
294
|
-
|
|
295
|
-
if (parent) {
|
|
296
|
-
this._menu = parent.querySelector(SELECTOR_MENU);
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
|
-
|
|
300
|
-
return this._menu;
|
|
332
|
+
return SelectorEngine.next(this._element, SELECTOR_MENU)[0];
|
|
301
333
|
};
|
|
302
334
|
|
|
303
335
|
_proto._getPlacement = function _getPlacement() {
|
|
304
|
-
var
|
|
336
|
+
var parentDropdown = this._element.parentNode;
|
|
305
337
|
var placement = PLACEMENT_BOTTOM; // Handle dropup
|
|
306
338
|
|
|
307
|
-
if (
|
|
308
|
-
placement =
|
|
309
|
-
|
|
339
|
+
if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {
|
|
340
|
+
placement = PLACEMENT_TOP;
|
|
341
|
+
|
|
342
|
+
if (this._menu.classList.contains(CLASS_NAME_MENURIGHT)) {
|
|
343
|
+
placement = PLACEMENT_TOPEND;
|
|
344
|
+
}
|
|
345
|
+
} else if (parentDropdown.classList.contains(CLASS_NAME_DROPRIGHT)) {
|
|
310
346
|
placement = PLACEMENT_RIGHT;
|
|
311
|
-
} else if (
|
|
347
|
+
} else if (parentDropdown.classList.contains(CLASS_NAME_DROPLEFT)) {
|
|
312
348
|
placement = PLACEMENT_LEFT;
|
|
313
|
-
} else if (
|
|
349
|
+
} else if (this._menu.classList.contains(CLASS_NAME_MENURIGHT)) {
|
|
314
350
|
placement = PLACEMENT_BOTTOMEND;
|
|
315
351
|
}
|
|
316
352
|
|
|
@@ -318,7 +354,7 @@
|
|
|
318
354
|
};
|
|
319
355
|
|
|
320
356
|
_proto._detectNavbar = function _detectNavbar() {
|
|
321
|
-
return
|
|
357
|
+
return Boolean(this._element.closest("." + CLASS_NAME_NAVBAR));
|
|
322
358
|
};
|
|
323
359
|
|
|
324
360
|
_proto._getOffset = function _getOffset() {
|
|
@@ -328,7 +364,7 @@
|
|
|
328
364
|
|
|
329
365
|
if (typeof this._config.offset === 'function') {
|
|
330
366
|
offset.fn = function (data) {
|
|
331
|
-
data.offsets =
|
|
367
|
+
data.offsets = _objectSpread(_objectSpread({}, data.offsets), _this2._config.offset(data.offsets, _this2._element) || {});
|
|
332
368
|
return data;
|
|
333
369
|
};
|
|
334
370
|
} else {
|
|
@@ -350,7 +386,7 @@
|
|
|
350
386
|
boundariesElement: this._config.boundary
|
|
351
387
|
}
|
|
352
388
|
}
|
|
353
|
-
}; // Disable Popper if we have a static display
|
|
389
|
+
}; // Disable Popper.js if we have a static display
|
|
354
390
|
|
|
355
391
|
if (this._config.display === 'static') {
|
|
356
392
|
popperConfig.modifiers.applyStyle = {
|
|
@@ -358,42 +394,44 @@
|
|
|
358
394
|
};
|
|
359
395
|
}
|
|
360
396
|
|
|
361
|
-
return
|
|
397
|
+
return _objectSpread(_objectSpread({}, popperConfig), this._config.popperConfig);
|
|
362
398
|
} // Static
|
|
363
399
|
;
|
|
364
400
|
|
|
365
|
-
Dropdown.
|
|
366
|
-
|
|
367
|
-
|
|
401
|
+
Dropdown.dropdownInterface = function dropdownInterface(element, config) {
|
|
402
|
+
var data = Data.getData(element, DATA_KEY);
|
|
403
|
+
|
|
404
|
+
var _config = typeof config === 'object' ? config : null;
|
|
368
405
|
|
|
369
|
-
|
|
406
|
+
if (!data) {
|
|
407
|
+
data = new Dropdown(element, _config);
|
|
408
|
+
}
|
|
370
409
|
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
410
|
+
if (typeof config === 'string') {
|
|
411
|
+
if (typeof data[config] === 'undefined') {
|
|
412
|
+
throw new TypeError("No method named \"" + config + "\"");
|
|
374
413
|
}
|
|
375
414
|
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
}
|
|
415
|
+
data[config]();
|
|
416
|
+
}
|
|
417
|
+
};
|
|
380
418
|
|
|
381
|
-
|
|
382
|
-
|
|
419
|
+
Dropdown.jQueryInterface = function jQueryInterface(config) {
|
|
420
|
+
return this.each(function () {
|
|
421
|
+
Dropdown.dropdownInterface(this, config);
|
|
383
422
|
});
|
|
384
423
|
};
|
|
385
424
|
|
|
386
|
-
Dropdown.
|
|
387
|
-
if (event && (event.
|
|
425
|
+
Dropdown.clearMenus = function clearMenus(event) {
|
|
426
|
+
if (event && (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY)) {
|
|
388
427
|
return;
|
|
389
428
|
}
|
|
390
429
|
|
|
391
|
-
var toggles =
|
|
430
|
+
var toggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE);
|
|
392
431
|
|
|
393
432
|
for (var i = 0, len = toggles.length; i < len; i++) {
|
|
394
|
-
var parent = Dropdown.
|
|
395
|
-
|
|
396
|
-
var context = $__default['default'](toggles[i]).data(DATA_KEY);
|
|
433
|
+
var parent = Dropdown.getParentFromElement(toggles[i]);
|
|
434
|
+
var context = Data.getData(toggles[i], DATA_KEY);
|
|
397
435
|
var relatedTarget = {
|
|
398
436
|
relatedTarget: toggles[i]
|
|
399
437
|
};
|
|
@@ -408,25 +446,28 @@
|
|
|
408
446
|
|
|
409
447
|
var dropdownMenu = context._menu;
|
|
410
448
|
|
|
411
|
-
if (
|
|
449
|
+
if (!toggles[i].classList.contains(CLASS_NAME_SHOW)) {
|
|
412
450
|
continue;
|
|
413
451
|
}
|
|
414
452
|
|
|
415
|
-
if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.
|
|
453
|
+
if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.key === TAB_KEY) && dropdownMenu.contains(event.target)) {
|
|
416
454
|
continue;
|
|
417
455
|
}
|
|
418
456
|
|
|
419
|
-
var hideEvent =
|
|
420
|
-
$__default['default'](parent).trigger(hideEvent);
|
|
457
|
+
var hideEvent = EventHandler.trigger(parent, EVENT_HIDE, relatedTarget);
|
|
421
458
|
|
|
422
|
-
if (hideEvent.
|
|
459
|
+
if (hideEvent.defaultPrevented) {
|
|
423
460
|
continue;
|
|
424
461
|
} // If this is a touch-enabled device we remove the extra
|
|
425
462
|
// empty mouseover listeners we added for iOS support
|
|
426
463
|
|
|
427
464
|
|
|
428
465
|
if ('ontouchstart' in document.documentElement) {
|
|
429
|
-
|
|
466
|
+
var _ref2;
|
|
467
|
+
|
|
468
|
+
(_ref2 = []).concat.apply(_ref2, document.body.children).forEach(function (elem) {
|
|
469
|
+
return EventHandler.off(elem, 'mouseover', null, noop());
|
|
470
|
+
});
|
|
430
471
|
}
|
|
431
472
|
|
|
432
473
|
toggles[i].setAttribute('aria-expanded', 'false');
|
|
@@ -435,24 +476,17 @@
|
|
|
435
476
|
context._popper.destroy();
|
|
436
477
|
}
|
|
437
478
|
|
|
438
|
-
|
|
439
|
-
|
|
479
|
+
dropdownMenu.classList.remove(CLASS_NAME_SHOW);
|
|
480
|
+
toggles[i].classList.remove(CLASS_NAME_SHOW);
|
|
481
|
+
EventHandler.trigger(parent, EVENT_HIDDEN, relatedTarget);
|
|
440
482
|
}
|
|
441
483
|
};
|
|
442
484
|
|
|
443
|
-
Dropdown.
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
if (selector) {
|
|
448
|
-
parent = document.querySelector(selector);
|
|
449
|
-
}
|
|
450
|
-
|
|
451
|
-
return parent || element.parentNode;
|
|
452
|
-
} // eslint-disable-next-line complexity
|
|
453
|
-
;
|
|
485
|
+
Dropdown.getParentFromElement = function getParentFromElement(element) {
|
|
486
|
+
return getElementFromSelector(element) || element.parentNode;
|
|
487
|
+
};
|
|
454
488
|
|
|
455
|
-
Dropdown.
|
|
489
|
+
Dropdown.dataApiKeydownHandler = function dataApiKeydownHandler(event) {
|
|
456
490
|
// If not input/textarea:
|
|
457
491
|
// - And not a key in REGEXP_KEYDOWN => not a dropdown command
|
|
458
492
|
// If input/textarea:
|
|
@@ -460,61 +494,59 @@
|
|
|
460
494
|
// - If key is other than escape
|
|
461
495
|
// - If key is not up or down => not a dropdown command
|
|
462
496
|
// - If trigger inside the menu => not a dropdown command
|
|
463
|
-
if (/input|textarea/i.test(event.target.tagName) ? event.
|
|
497
|
+
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)) {
|
|
464
498
|
return;
|
|
465
499
|
}
|
|
466
500
|
|
|
467
|
-
|
|
501
|
+
event.preventDefault();
|
|
502
|
+
event.stopPropagation();
|
|
503
|
+
|
|
504
|
+
if (this.disabled || this.classList.contains(CLASS_NAME_DISABLED)) {
|
|
468
505
|
return;
|
|
469
506
|
}
|
|
470
507
|
|
|
471
|
-
var parent = Dropdown.
|
|
508
|
+
var parent = Dropdown.getParentFromElement(this);
|
|
509
|
+
var isActive = this.classList.contains(CLASS_NAME_SHOW);
|
|
472
510
|
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
511
|
+
if (event.key === ESCAPE_KEY) {
|
|
512
|
+
var button = this.matches(SELECTOR_DATA_TOGGLE) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0];
|
|
513
|
+
button.focus();
|
|
514
|
+
Dropdown.clearMenus();
|
|
476
515
|
return;
|
|
477
516
|
}
|
|
478
517
|
|
|
479
|
-
event.
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
if (!isActive || event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE) {
|
|
483
|
-
if (event.which === ESCAPE_KEYCODE) {
|
|
484
|
-
$__default['default'](parent.querySelector(SELECTOR_DATA_TOGGLE)).trigger('focus');
|
|
485
|
-
}
|
|
486
|
-
|
|
487
|
-
$__default['default'](this).trigger('click');
|
|
518
|
+
if (!isActive || event.key === SPACE_KEY) {
|
|
519
|
+
Dropdown.clearMenus();
|
|
488
520
|
return;
|
|
489
521
|
}
|
|
490
522
|
|
|
491
|
-
var items =
|
|
492
|
-
return $__default['default'](item).is(':visible');
|
|
493
|
-
});
|
|
523
|
+
var items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, parent).filter(isVisible);
|
|
494
524
|
|
|
495
|
-
if (items.length
|
|
525
|
+
if (!items.length) {
|
|
496
526
|
return;
|
|
497
527
|
}
|
|
498
528
|
|
|
499
529
|
var index = items.indexOf(event.target);
|
|
500
530
|
|
|
501
|
-
if (event.
|
|
531
|
+
if (event.key === ARROW_UP_KEY && index > 0) {
|
|
502
532
|
// Up
|
|
503
533
|
index--;
|
|
504
534
|
}
|
|
505
535
|
|
|
506
|
-
if (event.
|
|
536
|
+
if (event.key === ARROW_DOWN_KEY && index < items.length - 1) {
|
|
507
537
|
// Down
|
|
508
538
|
index++;
|
|
509
|
-
}
|
|
539
|
+
} // index is -1 if the first keydown is an ArrowUp
|
|
510
540
|
|
|
511
|
-
if (index < 0) {
|
|
512
|
-
index = 0;
|
|
513
|
-
}
|
|
514
541
|
|
|
542
|
+
index = index === -1 ? 0 : index;
|
|
515
543
|
items[index].focus();
|
|
516
544
|
};
|
|
517
545
|
|
|
546
|
+
Dropdown.getInstance = function getInstance(element) {
|
|
547
|
+
return Data.getData(element, DATA_KEY);
|
|
548
|
+
};
|
|
549
|
+
|
|
518
550
|
_createClass(Dropdown, null, [{
|
|
519
551
|
key: "VERSION",
|
|
520
552
|
get: function get() {
|
|
@@ -541,27 +573,38 @@
|
|
|
541
573
|
*/
|
|
542
574
|
|
|
543
575
|
|
|
544
|
-
|
|
576
|
+
EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown.dataApiKeydownHandler);
|
|
577
|
+
EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler);
|
|
578
|
+
EventHandler.on(document, EVENT_CLICK_DATA_API, Dropdown.clearMenus);
|
|
579
|
+
EventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus);
|
|
580
|
+
EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
|
|
545
581
|
event.preventDefault();
|
|
546
582
|
event.stopPropagation();
|
|
547
|
-
|
|
548
|
-
Dropdown._jQueryInterface.call($__default['default'](this), 'toggle');
|
|
549
|
-
}).on(EVENT_CLICK_DATA_API, SELECTOR_FORM_CHILD, function (e) {
|
|
550
|
-
e.stopPropagation();
|
|
583
|
+
Dropdown.dropdownInterface(this, 'toggle');
|
|
551
584
|
});
|
|
585
|
+
EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_FORM_CHILD, function (e) {
|
|
586
|
+
return e.stopPropagation();
|
|
587
|
+
});
|
|
588
|
+
var $ = getjQuery();
|
|
552
589
|
/**
|
|
553
590
|
* ------------------------------------------------------------------------
|
|
554
591
|
* jQuery
|
|
555
592
|
* ------------------------------------------------------------------------
|
|
593
|
+
* add .dropdown to jQuery only if jQuery is present
|
|
556
594
|
*/
|
|
557
595
|
|
|
558
|
-
|
|
559
|
-
$__default['default'].fn[NAME].Constructor = Dropdown;
|
|
596
|
+
/* istanbul ignore if */
|
|
560
597
|
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
598
|
+
if ($) {
|
|
599
|
+
var JQUERY_NO_CONFLICT = $.fn[NAME];
|
|
600
|
+
$.fn[NAME] = Dropdown.jQueryInterface;
|
|
601
|
+
$.fn[NAME].Constructor = Dropdown;
|
|
602
|
+
|
|
603
|
+
$.fn[NAME].noConflict = function () {
|
|
604
|
+
$.fn[NAME] = JQUERY_NO_CONFLICT;
|
|
605
|
+
return Dropdown.jQueryInterface;
|
|
606
|
+
};
|
|
607
|
+
}
|
|
565
608
|
|
|
566
609
|
return Dropdown;
|
|
567
610
|
|