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