bootstrap 4.1.2 → 4.1.3
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of bootstrap might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/assets/javascripts/bootstrap-sprockets.js +5 -5
- data/assets/javascripts/bootstrap.js +23 -23
- data/assets/javascripts/bootstrap.min.js +2 -2
- data/assets/javascripts/bootstrap/alert.js +159 -133
- data/assets/javascripts/bootstrap/button.js +149 -124
- data/assets/javascripts/bootstrap/carousel.js +463 -407
- data/assets/javascripts/bootstrap/collapse.js +338 -282
- data/assets/javascripts/bootstrap/dropdown.js +439 -382
- data/assets/javascripts/bootstrap/modal.js +502 -446
- data/assets/javascripts/bootstrap/popover.js +223 -163
- data/assets/javascripts/bootstrap/scrollspy.js +307 -251
- data/assets/javascripts/bootstrap/tab.js +217 -191
- data/assets/javascripts/bootstrap/tooltip.js +582 -525
- data/assets/javascripts/bootstrap/util.js +129 -116
- data/assets/stylesheets/_bootstrap-grid.scss +1 -1
- data/assets/stylesheets/_bootstrap-reboot.scss +1 -1
- data/assets/stylesheets/_bootstrap.scss +1 -1
- data/assets/stylesheets/bootstrap/_buttons.scss +0 -1
- data/assets/stylesheets/bootstrap/_custom-forms.scss +13 -19
- data/assets/stylesheets/bootstrap/_forms.scss +13 -15
- data/assets/stylesheets/bootstrap/_input-group.scss +15 -2
- data/assets/stylesheets/bootstrap/_modal.scss +18 -6
- data/assets/stylesheets/bootstrap/_reboot.scss +4 -2
- data/assets/stylesheets/bootstrap/_tables.scss +0 -1
- data/assets/stylesheets/bootstrap/_variables.scss +10 -9
- data/assets/stylesheets/bootstrap/mixins/_forms.scss +7 -7
- data/lib/bootstrap/version.rb +2 -2
- metadata +2 -2
@@ -1,205 +1,265 @@
|
|
1
|
-
function
|
1
|
+
(function (global, factory) {
|
2
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('jquery'), require('./tooltip.js')) :
|
3
|
+
typeof define === 'function' && define.amd ? define(['jquery', './tooltip.js'], factory) :
|
4
|
+
(global.Popover = factory(global.jQuery,global.Tooltip));
|
5
|
+
}(this, (function ($,Tooltip) { 'use strict';
|
6
|
+
|
7
|
+
$ = $ && $.hasOwnProperty('default') ? $['default'] : $;
|
8
|
+
Tooltip = Tooltip && Tooltip.hasOwnProperty('default') ? Tooltip['default'] : Tooltip;
|
9
|
+
|
10
|
+
function _defineProperties(target, props) {
|
11
|
+
for (var i = 0; i < props.length; i++) {
|
12
|
+
var descriptor = props[i];
|
13
|
+
descriptor.enumerable = descriptor.enumerable || false;
|
14
|
+
descriptor.configurable = true;
|
15
|
+
if ("value" in descriptor) descriptor.writable = true;
|
16
|
+
Object.defineProperty(target, descriptor.key, descriptor);
|
17
|
+
}
|
18
|
+
}
|
19
|
+
|
20
|
+
function _createClass(Constructor, protoProps, staticProps) {
|
21
|
+
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
22
|
+
if (staticProps) _defineProperties(Constructor, staticProps);
|
23
|
+
return Constructor;
|
24
|
+
}
|
25
|
+
|
26
|
+
function _defineProperty(obj, key, value) {
|
27
|
+
if (key in obj) {
|
28
|
+
Object.defineProperty(obj, key, {
|
29
|
+
value: value,
|
30
|
+
enumerable: true,
|
31
|
+
configurable: true,
|
32
|
+
writable: true
|
33
|
+
});
|
34
|
+
} else {
|
35
|
+
obj[key] = value;
|
36
|
+
}
|
37
|
+
|
38
|
+
return obj;
|
39
|
+
}
|
2
40
|
|
3
|
-
function
|
41
|
+
function _objectSpread(target) {
|
42
|
+
for (var i = 1; i < arguments.length; i++) {
|
43
|
+
var source = arguments[i] != null ? arguments[i] : {};
|
44
|
+
var ownKeys = Object.keys(source);
|
4
45
|
|
5
|
-
|
46
|
+
if (typeof Object.getOwnPropertySymbols === 'function') {
|
47
|
+
ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {
|
48
|
+
return Object.getOwnPropertyDescriptor(source, sym).enumerable;
|
49
|
+
}));
|
50
|
+
}
|
51
|
+
|
52
|
+
ownKeys.forEach(function (key) {
|
53
|
+
_defineProperty(target, key, source[key]);
|
54
|
+
});
|
55
|
+
}
|
6
56
|
|
7
|
-
|
57
|
+
return target;
|
58
|
+
}
|
8
59
|
|
9
|
-
function
|
60
|
+
function _inheritsLoose(subClass, superClass) {
|
61
|
+
subClass.prototype = Object.create(superClass.prototype);
|
62
|
+
subClass.prototype.constructor = subClass;
|
63
|
+
subClass.__proto__ = superClass;
|
64
|
+
}
|
10
65
|
|
11
|
-
/**
|
12
|
-
* --------------------------------------------------------------------------
|
13
|
-
* Bootstrap (v4.1.2): popover.js
|
14
|
-
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
15
|
-
* --------------------------------------------------------------------------
|
16
|
-
*/
|
17
|
-
var Popover = function ($) {
|
18
66
|
/**
|
19
|
-
*
|
20
|
-
*
|
21
|
-
*
|
67
|
+
* --------------------------------------------------------------------------
|
68
|
+
* Bootstrap (v4.1.3): popover.js
|
69
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
70
|
+
* --------------------------------------------------------------------------
|
22
71
|
*/
|
23
|
-
|
24
|
-
var
|
25
|
-
var DATA_KEY = 'bs.popover';
|
26
|
-
var EVENT_KEY = "." + DATA_KEY;
|
27
|
-
var JQUERY_NO_CONFLICT = $.fn[NAME];
|
28
|
-
var CLASS_PREFIX = 'bs-popover';
|
29
|
-
var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g');
|
30
|
-
|
31
|
-
var Default = _objectSpread({}, Tooltip.Default, {
|
32
|
-
placement: 'right',
|
33
|
-
trigger: 'click',
|
34
|
-
content: '',
|
35
|
-
template: '<div class="popover" role="tooltip">' + '<div class="arrow"></div>' + '<h3 class="popover-header"></h3>' + '<div class="popover-body"></div></div>'
|
36
|
-
});
|
37
|
-
|
38
|
-
var DefaultType = _objectSpread({}, Tooltip.DefaultType, {
|
39
|
-
content: '(string|element|function)'
|
40
|
-
});
|
41
|
-
|
42
|
-
var ClassName = {
|
43
|
-
FADE: 'fade',
|
44
|
-
SHOW: 'show'
|
45
|
-
};
|
46
|
-
var Selector = {
|
47
|
-
TITLE: '.popover-header',
|
48
|
-
CONTENT: '.popover-body'
|
49
|
-
};
|
50
|
-
var Event = {
|
51
|
-
HIDE: "hide" + EVENT_KEY,
|
52
|
-
HIDDEN: "hidden" + EVENT_KEY,
|
53
|
-
SHOW: "show" + EVENT_KEY,
|
54
|
-
SHOWN: "shown" + EVENT_KEY,
|
55
|
-
INSERTED: "inserted" + EVENT_KEY,
|
56
|
-
CLICK: "click" + EVENT_KEY,
|
57
|
-
FOCUSIN: "focusin" + EVENT_KEY,
|
58
|
-
FOCUSOUT: "focusout" + EVENT_KEY,
|
59
|
-
MOUSEENTER: "mouseenter" + EVENT_KEY,
|
60
|
-
MOUSELEAVE: "mouseleave" + EVENT_KEY
|
72
|
+
|
73
|
+
var Popover = function ($$$1) {
|
61
74
|
/**
|
62
75
|
* ------------------------------------------------------------------------
|
63
|
-
*
|
76
|
+
* Constants
|
64
77
|
* ------------------------------------------------------------------------
|
65
78
|
*/
|
79
|
+
var NAME = 'popover';
|
80
|
+
var VERSION = '4.1.3';
|
81
|
+
var DATA_KEY = 'bs.popover';
|
82
|
+
var EVENT_KEY = "." + DATA_KEY;
|
83
|
+
var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
|
84
|
+
var CLASS_PREFIX = 'bs-popover';
|
85
|
+
var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g');
|
86
|
+
|
87
|
+
var Default = _objectSpread({}, Tooltip.Default, {
|
88
|
+
placement: 'right',
|
89
|
+
trigger: 'click',
|
90
|
+
content: '',
|
91
|
+
template: '<div class="popover" role="tooltip">' + '<div class="arrow"></div>' + '<h3 class="popover-header"></h3>' + '<div class="popover-body"></div></div>'
|
92
|
+
});
|
93
|
+
|
94
|
+
var DefaultType = _objectSpread({}, Tooltip.DefaultType, {
|
95
|
+
content: '(string|element|function)'
|
96
|
+
});
|
97
|
+
|
98
|
+
var ClassName = {
|
99
|
+
FADE: 'fade',
|
100
|
+
SHOW: 'show'
|
101
|
+
};
|
102
|
+
var Selector = {
|
103
|
+
TITLE: '.popover-header',
|
104
|
+
CONTENT: '.popover-body'
|
105
|
+
};
|
106
|
+
var Event = {
|
107
|
+
HIDE: "hide" + EVENT_KEY,
|
108
|
+
HIDDEN: "hidden" + EVENT_KEY,
|
109
|
+
SHOW: "show" + EVENT_KEY,
|
110
|
+
SHOWN: "shown" + EVENT_KEY,
|
111
|
+
INSERTED: "inserted" + EVENT_KEY,
|
112
|
+
CLICK: "click" + EVENT_KEY,
|
113
|
+
FOCUSIN: "focusin" + EVENT_KEY,
|
114
|
+
FOCUSOUT: "focusout" + EVENT_KEY,
|
115
|
+
MOUSEENTER: "mouseenter" + EVENT_KEY,
|
116
|
+
MOUSELEAVE: "mouseleave" + EVENT_KEY
|
117
|
+
/**
|
118
|
+
* ------------------------------------------------------------------------
|
119
|
+
* Class Definition
|
120
|
+
* ------------------------------------------------------------------------
|
121
|
+
*/
|
66
122
|
|
67
|
-
|
68
|
-
|
69
|
-
var Popover =
|
70
|
-
/*#__PURE__*/
|
71
|
-
function (_Tooltip) {
|
72
|
-
_inheritsLoose(Popover, _Tooltip);
|
123
|
+
};
|
73
124
|
|
74
|
-
|
75
|
-
|
76
|
-
|
125
|
+
var Popover =
|
126
|
+
/*#__PURE__*/
|
127
|
+
function (_Tooltip) {
|
128
|
+
_inheritsLoose(Popover, _Tooltip);
|
77
129
|
|
78
|
-
|
130
|
+
function Popover() {
|
131
|
+
return _Tooltip.apply(this, arguments) || this;
|
132
|
+
}
|
79
133
|
|
80
|
-
|
81
|
-
_proto.isWithContent = function isWithContent() {
|
82
|
-
return this.getTitle() || this._getContent();
|
83
|
-
};
|
134
|
+
var _proto = Popover.prototype;
|
84
135
|
|
85
|
-
|
86
|
-
|
87
|
-
|
136
|
+
// Overrides
|
137
|
+
_proto.isWithContent = function isWithContent() {
|
138
|
+
return this.getTitle() || this._getContent();
|
139
|
+
};
|
88
140
|
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
};
|
141
|
+
_proto.addAttachmentClass = function addAttachmentClass(attachment) {
|
142
|
+
$$$1(this.getTipElement()).addClass(CLASS_PREFIX + "-" + attachment);
|
143
|
+
};
|
93
144
|
|
94
|
-
|
95
|
-
|
145
|
+
_proto.getTipElement = function getTipElement() {
|
146
|
+
this.tip = this.tip || $$$1(this.config.template)[0];
|
147
|
+
return this.tip;
|
148
|
+
};
|
96
149
|
|
97
|
-
|
150
|
+
_proto.setContent = function setContent() {
|
151
|
+
var $tip = $$$1(this.getTipElement()); // We use append for html objects to maintain js events
|
98
152
|
|
99
|
-
|
153
|
+
this.setElementContent($tip.find(Selector.TITLE), this.getTitle());
|
100
154
|
|
101
|
-
|
102
|
-
content = content.call(this.element);
|
103
|
-
}
|
155
|
+
var content = this._getContent();
|
104
156
|
|
105
|
-
|
106
|
-
|
107
|
-
|
157
|
+
if (typeof content === 'function') {
|
158
|
+
content = content.call(this.element);
|
159
|
+
}
|
108
160
|
|
161
|
+
this.setElementContent($tip.find(Selector.CONTENT), content);
|
162
|
+
$tip.removeClass(ClassName.FADE + " " + ClassName.SHOW);
|
163
|
+
}; // Private
|
109
164
|
|
110
|
-
_proto._getContent = function _getContent() {
|
111
|
-
return this.element.getAttribute('data-content') || this.config.content;
|
112
|
-
};
|
113
165
|
|
114
|
-
|
115
|
-
|
116
|
-
|
166
|
+
_proto._getContent = function _getContent() {
|
167
|
+
return this.element.getAttribute('data-content') || this.config.content;
|
168
|
+
};
|
117
169
|
|
118
|
-
|
119
|
-
$tip
|
120
|
-
|
121
|
-
}; // Static
|
170
|
+
_proto._cleanTipClass = function _cleanTipClass() {
|
171
|
+
var $tip = $$$1(this.getTipElement());
|
172
|
+
var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX);
|
122
173
|
|
174
|
+
if (tabClass !== null && tabClass.length > 0) {
|
175
|
+
$tip.removeClass(tabClass.join(''));
|
176
|
+
}
|
177
|
+
}; // Static
|
123
178
|
|
124
|
-
Popover._jQueryInterface = function _jQueryInterface(config) {
|
125
|
-
return this.each(function () {
|
126
|
-
var data = $(this).data(DATA_KEY);
|
127
179
|
|
128
|
-
|
180
|
+
Popover._jQueryInterface = function _jQueryInterface(config) {
|
181
|
+
return this.each(function () {
|
182
|
+
var data = $$$1(this).data(DATA_KEY);
|
129
183
|
|
130
|
-
|
131
|
-
return;
|
132
|
-
}
|
184
|
+
var _config = typeof config === 'object' ? config : null;
|
133
185
|
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
}
|
186
|
+
if (!data && /destroy|hide/.test(config)) {
|
187
|
+
return;
|
188
|
+
}
|
138
189
|
|
139
|
-
|
140
|
-
|
141
|
-
|
190
|
+
if (!data) {
|
191
|
+
data = new Popover(this, _config);
|
192
|
+
$$$1(this).data(DATA_KEY, data);
|
142
193
|
}
|
143
194
|
|
144
|
-
|
195
|
+
if (typeof config === 'string') {
|
196
|
+
if (typeof data[config] === 'undefined') {
|
197
|
+
throw new TypeError("No method named \"" + config + "\"");
|
198
|
+
}
|
199
|
+
|
200
|
+
data[config]();
|
201
|
+
}
|
202
|
+
});
|
203
|
+
};
|
204
|
+
|
205
|
+
_createClass(Popover, null, [{
|
206
|
+
key: "VERSION",
|
207
|
+
// Getters
|
208
|
+
get: function get() {
|
209
|
+
return VERSION;
|
145
210
|
}
|
146
|
-
}
|
147
|
-
|
211
|
+
}, {
|
212
|
+
key: "Default",
|
213
|
+
get: function get() {
|
214
|
+
return Default;
|
215
|
+
}
|
216
|
+
}, {
|
217
|
+
key: "NAME",
|
218
|
+
get: function get() {
|
219
|
+
return NAME;
|
220
|
+
}
|
221
|
+
}, {
|
222
|
+
key: "DATA_KEY",
|
223
|
+
get: function get() {
|
224
|
+
return DATA_KEY;
|
225
|
+
}
|
226
|
+
}, {
|
227
|
+
key: "Event",
|
228
|
+
get: function get() {
|
229
|
+
return Event;
|
230
|
+
}
|
231
|
+
}, {
|
232
|
+
key: "EVENT_KEY",
|
233
|
+
get: function get() {
|
234
|
+
return EVENT_KEY;
|
235
|
+
}
|
236
|
+
}, {
|
237
|
+
key: "DefaultType",
|
238
|
+
get: function get() {
|
239
|
+
return DefaultType;
|
240
|
+
}
|
241
|
+
}]);
|
148
242
|
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
key: "Default",
|
157
|
-
get: function get() {
|
158
|
-
return Default;
|
159
|
-
}
|
160
|
-
}, {
|
161
|
-
key: "NAME",
|
162
|
-
get: function get() {
|
163
|
-
return NAME;
|
164
|
-
}
|
165
|
-
}, {
|
166
|
-
key: "DATA_KEY",
|
167
|
-
get: function get() {
|
168
|
-
return DATA_KEY;
|
169
|
-
}
|
170
|
-
}, {
|
171
|
-
key: "Event",
|
172
|
-
get: function get() {
|
173
|
-
return Event;
|
174
|
-
}
|
175
|
-
}, {
|
176
|
-
key: "EVENT_KEY",
|
177
|
-
get: function get() {
|
178
|
-
return EVENT_KEY;
|
179
|
-
}
|
180
|
-
}, {
|
181
|
-
key: "DefaultType",
|
182
|
-
get: function get() {
|
183
|
-
return DefaultType;
|
184
|
-
}
|
185
|
-
}]);
|
243
|
+
return Popover;
|
244
|
+
}(Tooltip);
|
245
|
+
/**
|
246
|
+
* ------------------------------------------------------------------------
|
247
|
+
* jQuery
|
248
|
+
* ------------------------------------------------------------------------
|
249
|
+
*/
|
186
250
|
|
187
|
-
return Popover;
|
188
|
-
}(Tooltip);
|
189
|
-
/**
|
190
|
-
* ------------------------------------------------------------------------
|
191
|
-
* jQuery
|
192
|
-
* ------------------------------------------------------------------------
|
193
|
-
*/
|
194
251
|
|
252
|
+
$$$1.fn[NAME] = Popover._jQueryInterface;
|
253
|
+
$$$1.fn[NAME].Constructor = Popover;
|
195
254
|
|
196
|
-
|
197
|
-
|
255
|
+
$$$1.fn[NAME].noConflict = function () {
|
256
|
+
$$$1.fn[NAME] = JQUERY_NO_CONFLICT;
|
257
|
+
return Popover._jQueryInterface;
|
258
|
+
};
|
198
259
|
|
199
|
-
|
200
|
-
|
201
|
-
return Popover._jQueryInterface;
|
202
|
-
};
|
260
|
+
return Popover;
|
261
|
+
}($);
|
203
262
|
|
204
263
|
return Popover;
|
205
|
-
|
264
|
+
|
265
|
+
})));
|
@@ -1,322 +1,378 @@
|
|
1
|
-
|
1
|
+
(function (global, factory) {
|
2
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('jquery'), require('./util.js')) :
|
3
|
+
typeof define === 'function' && define.amd ? define(['jquery', './util.js'], factory) :
|
4
|
+
(global.ScrollSpy = factory(global.jQuery,global.Util));
|
5
|
+
}(this, (function ($,Util) { 'use strict';
|
6
|
+
|
7
|
+
$ = $ && $.hasOwnProperty('default') ? $['default'] : $;
|
8
|
+
Util = Util && Util.hasOwnProperty('default') ? Util['default'] : Util;
|
9
|
+
|
10
|
+
function _defineProperties(target, props) {
|
11
|
+
for (var i = 0; i < props.length; i++) {
|
12
|
+
var descriptor = props[i];
|
13
|
+
descriptor.enumerable = descriptor.enumerable || false;
|
14
|
+
descriptor.configurable = true;
|
15
|
+
if ("value" in descriptor) descriptor.writable = true;
|
16
|
+
Object.defineProperty(target, descriptor.key, descriptor);
|
17
|
+
}
|
18
|
+
}
|
19
|
+
|
20
|
+
function _createClass(Constructor, protoProps, staticProps) {
|
21
|
+
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
22
|
+
if (staticProps) _defineProperties(Constructor, staticProps);
|
23
|
+
return Constructor;
|
24
|
+
}
|
25
|
+
|
26
|
+
function _defineProperty(obj, key, value) {
|
27
|
+
if (key in obj) {
|
28
|
+
Object.defineProperty(obj, key, {
|
29
|
+
value: value,
|
30
|
+
enumerable: true,
|
31
|
+
configurable: true,
|
32
|
+
writable: true
|
33
|
+
});
|
34
|
+
} else {
|
35
|
+
obj[key] = value;
|
36
|
+
}
|
37
|
+
|
38
|
+
return obj;
|
39
|
+
}
|
40
|
+
|
41
|
+
function _objectSpread(target) {
|
42
|
+
for (var i = 1; i < arguments.length; i++) {
|
43
|
+
var source = arguments[i] != null ? arguments[i] : {};
|
44
|
+
var ownKeys = Object.keys(source);
|
2
45
|
|
3
|
-
|
46
|
+
if (typeof Object.getOwnPropertySymbols === 'function') {
|
47
|
+
ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {
|
48
|
+
return Object.getOwnPropertyDescriptor(source, sym).enumerable;
|
49
|
+
}));
|
50
|
+
}
|
4
51
|
|
5
|
-
|
52
|
+
ownKeys.forEach(function (key) {
|
53
|
+
_defineProperty(target, key, source[key]);
|
54
|
+
});
|
55
|
+
}
|
6
56
|
|
7
|
-
|
57
|
+
return target;
|
58
|
+
}
|
8
59
|
|
9
|
-
/**
|
10
|
-
* --------------------------------------------------------------------------
|
11
|
-
* Bootstrap (v4.1.2): scrollspy.js
|
12
|
-
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
13
|
-
* --------------------------------------------------------------------------
|
14
|
-
*/
|
15
|
-
var ScrollSpy = function ($) {
|
16
60
|
/**
|
17
|
-
*
|
18
|
-
*
|
19
|
-
*
|
61
|
+
* --------------------------------------------------------------------------
|
62
|
+
* Bootstrap (v4.1.3): scrollspy.js
|
63
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
64
|
+
* --------------------------------------------------------------------------
|
20
65
|
*/
|
21
|
-
|
22
|
-
var
|
23
|
-
var DATA_KEY = 'bs.scrollspy';
|
24
|
-
var EVENT_KEY = "." + DATA_KEY;
|
25
|
-
var DATA_API_KEY = '.data-api';
|
26
|
-
var JQUERY_NO_CONFLICT = $.fn[NAME];
|
27
|
-
var Default = {
|
28
|
-
offset: 10,
|
29
|
-
method: 'auto',
|
30
|
-
target: ''
|
31
|
-
};
|
32
|
-
var DefaultType = {
|
33
|
-
offset: 'number',
|
34
|
-
method: 'string',
|
35
|
-
target: '(string|element)'
|
36
|
-
};
|
37
|
-
var Event = {
|
38
|
-
ACTIVATE: "activate" + EVENT_KEY,
|
39
|
-
SCROLL: "scroll" + EVENT_KEY,
|
40
|
-
LOAD_DATA_API: "load" + EVENT_KEY + DATA_API_KEY
|
41
|
-
};
|
42
|
-
var ClassName = {
|
43
|
-
DROPDOWN_ITEM: 'dropdown-item',
|
44
|
-
DROPDOWN_MENU: 'dropdown-menu',
|
45
|
-
ACTIVE: 'active'
|
46
|
-
};
|
47
|
-
var Selector = {
|
48
|
-
DATA_SPY: '[data-spy="scroll"]',
|
49
|
-
ACTIVE: '.active',
|
50
|
-
NAV_LIST_GROUP: '.nav, .list-group',
|
51
|
-
NAV_LINKS: '.nav-link',
|
52
|
-
NAV_ITEMS: '.nav-item',
|
53
|
-
LIST_ITEMS: '.list-group-item',
|
54
|
-
DROPDOWN: '.dropdown',
|
55
|
-
DROPDOWN_ITEMS: '.dropdown-item',
|
56
|
-
DROPDOWN_TOGGLE: '.dropdown-toggle'
|
57
|
-
};
|
58
|
-
var OffsetMethod = {
|
59
|
-
OFFSET: 'offset',
|
60
|
-
POSITION: 'position'
|
66
|
+
|
67
|
+
var ScrollSpy = function ($$$1) {
|
61
68
|
/**
|
62
69
|
* ------------------------------------------------------------------------
|
63
|
-
*
|
70
|
+
* Constants
|
64
71
|
* ------------------------------------------------------------------------
|
65
72
|
*/
|
73
|
+
var NAME = 'scrollspy';
|
74
|
+
var VERSION = '4.1.3';
|
75
|
+
var DATA_KEY = 'bs.scrollspy';
|
76
|
+
var EVENT_KEY = "." + DATA_KEY;
|
77
|
+
var DATA_API_KEY = '.data-api';
|
78
|
+
var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
|
79
|
+
var Default = {
|
80
|
+
offset: 10,
|
81
|
+
method: 'auto',
|
82
|
+
target: ''
|
83
|
+
};
|
84
|
+
var DefaultType = {
|
85
|
+
offset: 'number',
|
86
|
+
method: 'string',
|
87
|
+
target: '(string|element)'
|
88
|
+
};
|
89
|
+
var Event = {
|
90
|
+
ACTIVATE: "activate" + EVENT_KEY,
|
91
|
+
SCROLL: "scroll" + EVENT_KEY,
|
92
|
+
LOAD_DATA_API: "load" + EVENT_KEY + DATA_API_KEY
|
93
|
+
};
|
94
|
+
var ClassName = {
|
95
|
+
DROPDOWN_ITEM: 'dropdown-item',
|
96
|
+
DROPDOWN_MENU: 'dropdown-menu',
|
97
|
+
ACTIVE: 'active'
|
98
|
+
};
|
99
|
+
var Selector = {
|
100
|
+
DATA_SPY: '[data-spy="scroll"]',
|
101
|
+
ACTIVE: '.active',
|
102
|
+
NAV_LIST_GROUP: '.nav, .list-group',
|
103
|
+
NAV_LINKS: '.nav-link',
|
104
|
+
NAV_ITEMS: '.nav-item',
|
105
|
+
LIST_ITEMS: '.list-group-item',
|
106
|
+
DROPDOWN: '.dropdown',
|
107
|
+
DROPDOWN_ITEMS: '.dropdown-item',
|
108
|
+
DROPDOWN_TOGGLE: '.dropdown-toggle'
|
109
|
+
};
|
110
|
+
var OffsetMethod = {
|
111
|
+
OFFSET: 'offset',
|
112
|
+
POSITION: 'position'
|
113
|
+
/**
|
114
|
+
* ------------------------------------------------------------------------
|
115
|
+
* Class Definition
|
116
|
+
* ------------------------------------------------------------------------
|
117
|
+
*/
|
66
118
|
|
67
|
-
|
68
|
-
|
69
|
-
var ScrollSpy =
|
70
|
-
/*#__PURE__*/
|
71
|
-
function () {
|
72
|
-
function ScrollSpy(element, config) {
|
73
|
-
var _this = this;
|
74
|
-
|
75
|
-
this._element = element;
|
76
|
-
this._scrollElement = element.tagName === 'BODY' ? window : element;
|
77
|
-
this._config = this._getConfig(config);
|
78
|
-
this._selector = this._config.target + " " + Selector.NAV_LINKS + "," + (this._config.target + " " + Selector.LIST_ITEMS + ",") + (this._config.target + " " + Selector.DROPDOWN_ITEMS);
|
79
|
-
this._offsets = [];
|
80
|
-
this._targets = [];
|
81
|
-
this._activeTarget = null;
|
82
|
-
this._scrollHeight = 0;
|
83
|
-
$(this._scrollElement).on(Event.SCROLL, function (event) {
|
84
|
-
return _this._process(event);
|
85
|
-
});
|
86
|
-
this.refresh();
|
119
|
+
};
|
87
120
|
|
88
|
-
|
89
|
-
|
121
|
+
var ScrollSpy =
|
122
|
+
/*#__PURE__*/
|
123
|
+
function () {
|
124
|
+
function ScrollSpy(element, config) {
|
125
|
+
var _this = this;
|
126
|
+
|
127
|
+
this._element = element;
|
128
|
+
this._scrollElement = element.tagName === 'BODY' ? window : element;
|
129
|
+
this._config = this._getConfig(config);
|
130
|
+
this._selector = this._config.target + " " + Selector.NAV_LINKS + "," + (this._config.target + " " + Selector.LIST_ITEMS + ",") + (this._config.target + " " + Selector.DROPDOWN_ITEMS);
|
131
|
+
this._offsets = [];
|
132
|
+
this._targets = [];
|
133
|
+
this._activeTarget = null;
|
134
|
+
this._scrollHeight = 0;
|
135
|
+
$$$1(this._scrollElement).on(Event.SCROLL, function (event) {
|
136
|
+
return _this._process(event);
|
137
|
+
});
|
138
|
+
this.refresh();
|
90
139
|
|
140
|
+
this._process();
|
141
|
+
} // Getters
|
91
142
|
|
92
|
-
var _proto = ScrollSpy.prototype;
|
93
143
|
|
94
|
-
|
95
|
-
_proto.refresh = function refresh() {
|
96
|
-
var _this2 = this;
|
144
|
+
var _proto = ScrollSpy.prototype;
|
97
145
|
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
this._offsets = [];
|
102
|
-
this._targets = [];
|
103
|
-
this._scrollHeight = this._getScrollHeight();
|
104
|
-
var targets = [].slice.call(document.querySelectorAll(this._selector));
|
105
|
-
targets.map(function (element) {
|
106
|
-
var target;
|
107
|
-
var targetSelector = Util.getSelectorFromElement(element);
|
146
|
+
// Public
|
147
|
+
_proto.refresh = function refresh() {
|
148
|
+
var _this2 = this;
|
108
149
|
|
109
|
-
|
110
|
-
|
111
|
-
|
150
|
+
var autoMethod = this._scrollElement === this._scrollElement.window ? OffsetMethod.OFFSET : OffsetMethod.POSITION;
|
151
|
+
var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method;
|
152
|
+
var offsetBase = offsetMethod === OffsetMethod.POSITION ? this._getScrollTop() : 0;
|
153
|
+
this._offsets = [];
|
154
|
+
this._targets = [];
|
155
|
+
this._scrollHeight = this._getScrollHeight();
|
156
|
+
var targets = [].slice.call(document.querySelectorAll(this._selector));
|
157
|
+
targets.map(function (element) {
|
158
|
+
var target;
|
159
|
+
var targetSelector = Util.getSelectorFromElement(element);
|
160
|
+
|
161
|
+
if (targetSelector) {
|
162
|
+
target = document.querySelector(targetSelector);
|
163
|
+
}
|
112
164
|
|
113
|
-
|
114
|
-
|
165
|
+
if (target) {
|
166
|
+
var targetBCR = target.getBoundingClientRect();
|
115
167
|
|
116
|
-
|
117
|
-
|
118
|
-
|
168
|
+
if (targetBCR.width || targetBCR.height) {
|
169
|
+
// TODO (fat): remove sketch reliance on jQuery position/offset
|
170
|
+
return [$$$1(target)[offsetMethod]().top + offsetBase, targetSelector];
|
171
|
+
}
|
119
172
|
}
|
120
|
-
}
|
121
173
|
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
174
|
+
return null;
|
175
|
+
}).filter(function (item) {
|
176
|
+
return item;
|
177
|
+
}).sort(function (a, b) {
|
178
|
+
return a[0] - b[0];
|
179
|
+
}).forEach(function (item) {
|
180
|
+
_this2._offsets.push(item[0]);
|
181
|
+
|
182
|
+
_this2._targets.push(item[1]);
|
183
|
+
});
|
184
|
+
};
|
185
|
+
|
186
|
+
_proto.dispose = function dispose() {
|
187
|
+
$$$1.removeData(this._element, DATA_KEY);
|
188
|
+
$$$1(this._scrollElement).off(EVENT_KEY);
|
189
|
+
this._element = null;
|
190
|
+
this._scrollElement = null;
|
191
|
+
this._config = null;
|
192
|
+
this._selector = null;
|
193
|
+
this._offsets = null;
|
194
|
+
this._targets = null;
|
195
|
+
this._activeTarget = null;
|
196
|
+
this._scrollHeight = null;
|
197
|
+
}; // Private
|
129
198
|
|
130
|
-
_this2._targets.push(item[1]);
|
131
|
-
});
|
132
|
-
};
|
133
199
|
|
134
|
-
|
135
|
-
|
136
|
-
$(this._scrollElement).off(EVENT_KEY);
|
137
|
-
this._element = null;
|
138
|
-
this._scrollElement = null;
|
139
|
-
this._config = null;
|
140
|
-
this._selector = null;
|
141
|
-
this._offsets = null;
|
142
|
-
this._targets = null;
|
143
|
-
this._activeTarget = null;
|
144
|
-
this._scrollHeight = null;
|
145
|
-
}; // Private
|
146
|
-
|
147
|
-
|
148
|
-
_proto._getConfig = function _getConfig(config) {
|
149
|
-
config = _objectSpread({}, Default, typeof config === 'object' && config ? config : {});
|
150
|
-
|
151
|
-
if (typeof config.target !== 'string') {
|
152
|
-
var id = $(config.target).attr('id');
|
153
|
-
|
154
|
-
if (!id) {
|
155
|
-
id = Util.getUID(NAME);
|
156
|
-
$(config.target).attr('id', id);
|
157
|
-
}
|
200
|
+
_proto._getConfig = function _getConfig(config) {
|
201
|
+
config = _objectSpread({}, Default, typeof config === 'object' && config ? config : {});
|
158
202
|
|
159
|
-
config.target
|
160
|
-
|
203
|
+
if (typeof config.target !== 'string') {
|
204
|
+
var id = $$$1(config.target).attr('id');
|
161
205
|
|
162
|
-
|
163
|
-
|
164
|
-
|
206
|
+
if (!id) {
|
207
|
+
id = Util.getUID(NAME);
|
208
|
+
$$$1(config.target).attr('id', id);
|
209
|
+
}
|
165
210
|
|
166
|
-
|
167
|
-
|
168
|
-
};
|
211
|
+
config.target = "#" + id;
|
212
|
+
}
|
169
213
|
|
170
|
-
|
171
|
-
|
172
|
-
|
214
|
+
Util.typeCheckConfig(NAME, config, DefaultType);
|
215
|
+
return config;
|
216
|
+
};
|
173
217
|
|
174
|
-
|
175
|
-
|
176
|
-
|
218
|
+
_proto._getScrollTop = function _getScrollTop() {
|
219
|
+
return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop;
|
220
|
+
};
|
177
221
|
|
178
|
-
|
179
|
-
|
222
|
+
_proto._getScrollHeight = function _getScrollHeight() {
|
223
|
+
return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);
|
224
|
+
};
|
180
225
|
|
181
|
-
|
226
|
+
_proto._getOffsetHeight = function _getOffsetHeight() {
|
227
|
+
return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height;
|
228
|
+
};
|
182
229
|
|
183
|
-
|
230
|
+
_proto._process = function _process() {
|
231
|
+
var scrollTop = this._getScrollTop() + this._config.offset;
|
184
232
|
|
185
|
-
|
186
|
-
this.refresh();
|
187
|
-
}
|
233
|
+
var scrollHeight = this._getScrollHeight();
|
188
234
|
|
189
|
-
|
190
|
-
var target = this._targets[this._targets.length - 1];
|
235
|
+
var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight();
|
191
236
|
|
192
|
-
if (this.
|
193
|
-
this.
|
237
|
+
if (this._scrollHeight !== scrollHeight) {
|
238
|
+
this.refresh();
|
194
239
|
}
|
195
240
|
|
196
|
-
|
197
|
-
|
241
|
+
if (scrollTop >= maxScroll) {
|
242
|
+
var target = this._targets[this._targets.length - 1];
|
198
243
|
|
199
|
-
|
200
|
-
|
244
|
+
if (this._activeTarget !== target) {
|
245
|
+
this._activate(target);
|
246
|
+
}
|
201
247
|
|
202
|
-
|
248
|
+
return;
|
249
|
+
}
|
203
250
|
|
204
|
-
|
205
|
-
|
251
|
+
if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {
|
252
|
+
this._activeTarget = null;
|
253
|
+
|
254
|
+
this._clear();
|
206
255
|
|
207
|
-
|
256
|
+
return;
|
257
|
+
}
|
208
258
|
|
209
|
-
|
210
|
-
var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]);
|
259
|
+
var offsetLength = this._offsets.length;
|
211
260
|
|
212
|
-
|
213
|
-
this.
|
261
|
+
for (var i = offsetLength; i--;) {
|
262
|
+
var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]);
|
263
|
+
|
264
|
+
if (isActiveTarget) {
|
265
|
+
this._activate(this._targets[i]);
|
266
|
+
}
|
214
267
|
}
|
215
|
-
}
|
216
|
-
};
|
268
|
+
};
|
217
269
|
|
218
|
-
|
219
|
-
|
270
|
+
_proto._activate = function _activate(target) {
|
271
|
+
this._activeTarget = target;
|
220
272
|
|
221
|
-
|
273
|
+
this._clear();
|
222
274
|
|
223
|
-
|
275
|
+
var queries = this._selector.split(','); // eslint-disable-next-line arrow-body-style
|
224
276
|
|
225
277
|
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
278
|
+
queries = queries.map(function (selector) {
|
279
|
+
return selector + "[data-target=\"" + target + "\"]," + (selector + "[href=\"" + target + "\"]");
|
280
|
+
});
|
281
|
+
var $link = $$$1([].slice.call(document.querySelectorAll(queries.join(','))));
|
230
282
|
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
283
|
+
if ($link.hasClass(ClassName.DROPDOWN_ITEM)) {
|
284
|
+
$link.closest(Selector.DROPDOWN).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE);
|
285
|
+
$link.addClass(ClassName.ACTIVE);
|
286
|
+
} else {
|
287
|
+
// Set triggered link as active
|
288
|
+
$link.addClass(ClassName.ACTIVE); // Set triggered links parents as active
|
289
|
+
// With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor
|
238
290
|
|
239
|
-
|
291
|
+
$link.parents(Selector.NAV_LIST_GROUP).prev(Selector.NAV_LINKS + ", " + Selector.LIST_ITEMS).addClass(ClassName.ACTIVE); // Handle special case when .nav-link is inside .nav-item
|
240
292
|
|
241
|
-
|
242
|
-
|
293
|
+
$link.parents(Selector.NAV_LIST_GROUP).prev(Selector.NAV_ITEMS).children(Selector.NAV_LINKS).addClass(ClassName.ACTIVE);
|
294
|
+
}
|
243
295
|
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
296
|
+
$$$1(this._scrollElement).trigger(Event.ACTIVATE, {
|
297
|
+
relatedTarget: target
|
298
|
+
});
|
299
|
+
};
|
248
300
|
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
301
|
+
_proto._clear = function _clear() {
|
302
|
+
var nodes = [].slice.call(document.querySelectorAll(this._selector));
|
303
|
+
$$$1(nodes).filter(Selector.ACTIVE).removeClass(ClassName.ACTIVE);
|
304
|
+
}; // Static
|
253
305
|
|
254
306
|
|
255
|
-
|
256
|
-
|
257
|
-
|
307
|
+
ScrollSpy._jQueryInterface = function _jQueryInterface(config) {
|
308
|
+
return this.each(function () {
|
309
|
+
var data = $$$1(this).data(DATA_KEY);
|
258
310
|
|
259
|
-
|
311
|
+
var _config = typeof config === 'object' && config;
|
260
312
|
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
313
|
+
if (!data) {
|
314
|
+
data = new ScrollSpy(this, _config);
|
315
|
+
$$$1(this).data(DATA_KEY, data);
|
316
|
+
}
|
265
317
|
|
266
|
-
|
267
|
-
|
268
|
-
|
318
|
+
if (typeof config === 'string') {
|
319
|
+
if (typeof data[config] === 'undefined') {
|
320
|
+
throw new TypeError("No method named \"" + config + "\"");
|
321
|
+
}
|
322
|
+
|
323
|
+
data[config]();
|
269
324
|
}
|
325
|
+
});
|
326
|
+
};
|
270
327
|
|
271
|
-
|
328
|
+
_createClass(ScrollSpy, null, [{
|
329
|
+
key: "VERSION",
|
330
|
+
get: function get() {
|
331
|
+
return VERSION;
|
272
332
|
}
|
273
|
-
}
|
274
|
-
|
333
|
+
}, {
|
334
|
+
key: "Default",
|
335
|
+
get: function get() {
|
336
|
+
return Default;
|
337
|
+
}
|
338
|
+
}]);
|
275
339
|
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
get: function get() {
|
284
|
-
return Default;
|
285
|
-
}
|
286
|
-
}]);
|
340
|
+
return ScrollSpy;
|
341
|
+
}();
|
342
|
+
/**
|
343
|
+
* ------------------------------------------------------------------------
|
344
|
+
* Data Api implementation
|
345
|
+
* ------------------------------------------------------------------------
|
346
|
+
*/
|
287
347
|
|
288
|
-
return ScrollSpy;
|
289
|
-
}();
|
290
|
-
/**
|
291
|
-
* ------------------------------------------------------------------------
|
292
|
-
* Data Api implementation
|
293
|
-
* ------------------------------------------------------------------------
|
294
|
-
*/
|
295
348
|
|
349
|
+
$$$1(window).on(Event.LOAD_DATA_API, function () {
|
350
|
+
var scrollSpys = [].slice.call(document.querySelectorAll(Selector.DATA_SPY));
|
351
|
+
var scrollSpysLength = scrollSpys.length;
|
296
352
|
|
297
|
-
|
298
|
-
|
299
|
-
var scrollSpysLength = scrollSpys.length;
|
353
|
+
for (var i = scrollSpysLength; i--;) {
|
354
|
+
var $spy = $$$1(scrollSpys[i]);
|
300
355
|
|
301
|
-
|
302
|
-
|
356
|
+
ScrollSpy._jQueryInterface.call($spy, $spy.data());
|
357
|
+
}
|
358
|
+
});
|
359
|
+
/**
|
360
|
+
* ------------------------------------------------------------------------
|
361
|
+
* jQuery
|
362
|
+
* ------------------------------------------------------------------------
|
363
|
+
*/
|
303
364
|
|
304
|
-
|
305
|
-
|
306
|
-
});
|
307
|
-
/**
|
308
|
-
* ------------------------------------------------------------------------
|
309
|
-
* jQuery
|
310
|
-
* ------------------------------------------------------------------------
|
311
|
-
*/
|
365
|
+
$$$1.fn[NAME] = ScrollSpy._jQueryInterface;
|
366
|
+
$$$1.fn[NAME].Constructor = ScrollSpy;
|
312
367
|
|
313
|
-
|
314
|
-
|
368
|
+
$$$1.fn[NAME].noConflict = function () {
|
369
|
+
$$$1.fn[NAME] = JQUERY_NO_CONFLICT;
|
370
|
+
return ScrollSpy._jQueryInterface;
|
371
|
+
};
|
315
372
|
|
316
|
-
|
317
|
-
|
318
|
-
return ScrollSpy._jQueryInterface;
|
319
|
-
};
|
373
|
+
return ScrollSpy;
|
374
|
+
}($);
|
320
375
|
|
321
376
|
return ScrollSpy;
|
322
|
-
|
377
|
+
|
378
|
+
})));
|