nex-bootstrap 4.6.3
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 +7 -0
- data/.gitattributes +14 -0
- data/.gitignore +19 -0
- data/.travis.yml +31 -0
- data/CHANGELOG.md +25 -0
- data/Gemfile +11 -0
- data/LICENSE +21 -0
- data/README.md +109 -0
- data/Rakefile +63 -0
- data/assets/javascripts/bootstrap/alert.js +183 -0
- data/assets/javascripts/bootstrap/button.js +225 -0
- data/assets/javascripts/bootstrap/carousel.js +640 -0
- data/assets/javascripts/bootstrap/collapse.js +394 -0
- data/assets/javascripts/bootstrap/dropdown.js +557 -0
- data/assets/javascripts/bootstrap/modal.js +660 -0
- data/assets/javascripts/bootstrap/popover.js +243 -0
- data/assets/javascripts/bootstrap/scrollspy.js +337 -0
- data/assets/javascripts/bootstrap/tab.js +259 -0
- data/assets/javascripts/bootstrap/toast.js +265 -0
- data/assets/javascripts/bootstrap/tooltip.js +886 -0
- data/assets/javascripts/bootstrap/util.js +189 -0
- data/assets/javascripts/bootstrap-sprockets.js +12 -0
- data/assets/javascripts/bootstrap.js +4356 -0
- data/assets/javascripts/bootstrap.min.js +6 -0
- data/assets/stylesheets/_bootstrap-grid.scss +30 -0
- data/assets/stylesheets/_bootstrap-reboot.scss +12 -0
- data/assets/stylesheets/_bootstrap.scss +44 -0
- data/assets/stylesheets/bootstrap/_alert.scss +52 -0
- data/assets/stylesheets/bootstrap/_badge.scss +54 -0
- data/assets/stylesheets/bootstrap/_breadcrumb.scss +42 -0
- data/assets/stylesheets/bootstrap/_button-group.scss +163 -0
- data/assets/stylesheets/bootstrap/_buttons.scss +142 -0
- data/assets/stylesheets/bootstrap/_card.scss +286 -0
- data/assets/stylesheets/bootstrap/_carousel.scss +200 -0
- data/assets/stylesheets/bootstrap/_close.scss +40 -0
- data/assets/stylesheets/bootstrap/_code.scss +48 -0
- data/assets/stylesheets/bootstrap/_custom-forms.scss +526 -0
- data/assets/stylesheets/bootstrap/_dropdown.scss +192 -0
- data/assets/stylesheets/bootstrap/_forms.scss +347 -0
- data/assets/stylesheets/bootstrap/_functions.scss +190 -0
- data/assets/stylesheets/bootstrap/_grid.scss +73 -0
- data/assets/stylesheets/bootstrap/_images.scss +42 -0
- data/assets/stylesheets/bootstrap/_input-group.scss +211 -0
- data/assets/stylesheets/bootstrap/_jumbotron.scss +17 -0
- data/assets/stylesheets/bootstrap/_list-group.scss +154 -0
- data/assets/stylesheets/bootstrap/_media.scss +8 -0
- data/assets/stylesheets/bootstrap/_mixins.scss +47 -0
- data/assets/stylesheets/bootstrap/_modal.scss +240 -0
- data/assets/stylesheets/bootstrap/_nav.scss +125 -0
- data/assets/stylesheets/bootstrap/_navbar.scss +332 -0
- data/assets/stylesheets/bootstrap/_pagination.scss +74 -0
- data/assets/stylesheets/bootstrap/_popover.scss +170 -0
- data/assets/stylesheets/bootstrap/_print.scss +132 -0
- data/assets/stylesheets/bootstrap/_progress.scss +47 -0
- data/assets/stylesheets/bootstrap/_reboot.scss +484 -0
- data/assets/stylesheets/bootstrap/_root.scss +19 -0
- data/assets/stylesheets/bootstrap/_spinners.scss +65 -0
- data/assets/stylesheets/bootstrap/_tables.scss +185 -0
- data/assets/stylesheets/bootstrap/_toasts.scss +46 -0
- data/assets/stylesheets/bootstrap/_tooltip.scss +115 -0
- data/assets/stylesheets/bootstrap/_transitions.scss +26 -0
- data/assets/stylesheets/bootstrap/_type.scss +125 -0
- data/assets/stylesheets/bootstrap/_utilities.scss +18 -0
- data/assets/stylesheets/bootstrap/_variables.scss +1149 -0
- data/assets/stylesheets/bootstrap/mixins/_alert.scss +13 -0
- data/assets/stylesheets/bootstrap/mixins/_background-variant.scss +23 -0
- data/assets/stylesheets/bootstrap/mixins/_badge.scss +17 -0
- data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +76 -0
- data/assets/stylesheets/bootstrap/mixins/_box-shadow.scss +20 -0
- data/assets/stylesheets/bootstrap/mixins/_breakpoints.scss +123 -0
- data/assets/stylesheets/bootstrap/mixins/_buttons.scss +110 -0
- data/assets/stylesheets/bootstrap/mixins/_caret.scss +62 -0
- data/assets/stylesheets/bootstrap/mixins/_clearfix.scss +7 -0
- data/assets/stylesheets/bootstrap/mixins/_deprecate.scss +10 -0
- data/assets/stylesheets/bootstrap/mixins/_float.scss +14 -0
- data/assets/stylesheets/bootstrap/mixins/_forms.scss +195 -0
- data/assets/stylesheets/bootstrap/mixins/_gradients.scss +45 -0
- data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +80 -0
- data/assets/stylesheets/bootstrap/mixins/_grid.scss +69 -0
- data/assets/stylesheets/bootstrap/mixins/_hover.scss +37 -0
- data/assets/stylesheets/bootstrap/mixins/_image.scss +36 -0
- data/assets/stylesheets/bootstrap/mixins/_list-group.scss +21 -0
- data/assets/stylesheets/bootstrap/mixins/_lists.scss +7 -0
- data/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +11 -0
- data/assets/stylesheets/bootstrap/mixins/_pagination.scss +22 -0
- data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +17 -0
- data/assets/stylesheets/bootstrap/mixins/_resize.scss +6 -0
- data/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +34 -0
- data/assets/stylesheets/bootstrap/mixins/_size.scss +7 -0
- data/assets/stylesheets/bootstrap/mixins/_table-row.scss +39 -0
- data/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +17 -0
- data/assets/stylesheets/bootstrap/mixins/_text-hide.scss +11 -0
- data/assets/stylesheets/bootstrap/mixins/_text-truncate.scss +8 -0
- data/assets/stylesheets/bootstrap/mixins/_transition.scss +26 -0
- data/assets/stylesheets/bootstrap/mixins/_visibility.scss +8 -0
- data/assets/stylesheets/bootstrap/utilities/_align.scss +8 -0
- data/assets/stylesheets/bootstrap/utilities/_background.scss +19 -0
- data/assets/stylesheets/bootstrap/utilities/_borders.scss +75 -0
- data/assets/stylesheets/bootstrap/utilities/_clearfix.scss +3 -0
- data/assets/stylesheets/bootstrap/utilities/_display.scss +26 -0
- data/assets/stylesheets/bootstrap/utilities/_embed.scss +39 -0
- data/assets/stylesheets/bootstrap/utilities/_flex.scss +51 -0
- data/assets/stylesheets/bootstrap/utilities/_float.scss +11 -0
- data/assets/stylesheets/bootstrap/utilities/_interactions.scss +5 -0
- data/assets/stylesheets/bootstrap/utilities/_overflow.scss +5 -0
- data/assets/stylesheets/bootstrap/utilities/_position.scss +32 -0
- data/assets/stylesheets/bootstrap/utilities/_screenreaders.scss +11 -0
- data/assets/stylesheets/bootstrap/utilities/_shadows.scss +6 -0
- data/assets/stylesheets/bootstrap/utilities/_sizing.scss +20 -0
- data/assets/stylesheets/bootstrap/utilities/_spacing.scss +73 -0
- data/assets/stylesheets/bootstrap/utilities/_stretched-link.scss +19 -0
- data/assets/stylesheets/bootstrap/utilities/_text.scss +72 -0
- data/assets/stylesheets/bootstrap/utilities/_visibility.scss +13 -0
- data/assets/stylesheets/bootstrap/vendor/_rfs.scss +228 -0
- data/bootstrap.gemspec +38 -0
- data/lib/bootstrap/engine.rb +15 -0
- data/lib/bootstrap/version.rb +6 -0
- data/lib/bootstrap.rb +75 -0
- data/tasks/updater/js.rb +68 -0
- data/tasks/updater/logger.rb +57 -0
- data/tasks/updater/network.rb +103 -0
- data/tasks/updater/scss.rb +26 -0
- data/tasks/updater.rb +67 -0
- data/test/dummy_rails/README.rdoc +3 -0
- data/test/dummy_rails/Rakefile +6 -0
- data/test/dummy_rails/app/assets/config/manifest.js +3 -0
- data/test/dummy_rails/app/assets/images/.keep +0 -0
- data/test/dummy_rails/app/assets/javascripts/application.js +7 -0
- data/test/dummy_rails/app/assets/stylesheets/.browserslistrc +1 -0
- data/test/dummy_rails/app/assets/stylesheets/application.sass +4 -0
- data/test/dummy_rails/app/controllers/application_controller.rb +5 -0
- data/test/dummy_rails/app/controllers/pages_controller.rb +4 -0
- data/test/dummy_rails/app/helpers/application_helper.rb +2 -0
- data/test/dummy_rails/app/views/layouts/application.html.erb +14 -0
- data/test/dummy_rails/app/views/pages/root.html.slim +58 -0
- data/test/dummy_rails/config/application.rb +35 -0
- data/test/dummy_rails/config/boot.rb +5 -0
- data/test/dummy_rails/config/environment.rb +5 -0
- data/test/dummy_rails/config/environments/development.rb +23 -0
- data/test/dummy_rails/config/environments/production.rb +82 -0
- data/test/dummy_rails/config/environments/test.rb +38 -0
- data/test/dummy_rails/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy_rails/config/initializers/filter_parameter_logging.rb +4 -0
- data/test/dummy_rails/config/initializers/inflections.rb +16 -0
- data/test/dummy_rails/config/initializers/mime_types.rb +5 -0
- data/test/dummy_rails/config/initializers/secret_token.rb +18 -0
- data/test/dummy_rails/config/initializers/session_store.rb +3 -0
- data/test/dummy_rails/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy_rails/config/locales/en.yml +3 -0
- data/test/dummy_rails/config/locales/es.yml +3 -0
- data/test/dummy_rails/config/routes.rb +3 -0
- data/test/dummy_rails/config.ru +4 -0
- data/test/dummy_rails/log/.keep +0 -0
- data/test/gemfiles/rails_4_2.gemfile +7 -0
- data/test/gemfiles/rails_5_0.gemfile +8 -0
- data/test/gemfiles/rails_5_1.gemfile +8 -0
- data/test/gemfiles/rails_6_0.gemfile +7 -0
- data/test/rails_test.rb +24 -0
- data/test/support/dummy_rails_integration.rb +31 -0
- data/test/support/reporting.rb +27 -0
- data/test/test_helper.rb +41 -0
- data/test/test_helper_rails.rb +6 -0
- metadata +445 -0
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Bootstrap popover.js v4.6.1 (https://getbootstrap.com/)
|
|
3
|
+
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
|
4
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
5
|
+
*/
|
|
6
|
+
(function (global, factory) {
|
|
7
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('jquery'), require('./tooltip.js')) :
|
|
8
|
+
typeof define === 'function' && define.amd ? define(['jquery', './tooltip'], factory) :
|
|
9
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Popover = factory(global.jQuery, global.Tooltip));
|
|
10
|
+
})(this, (function ($, Tooltip) { 'use strict';
|
|
11
|
+
|
|
12
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
13
|
+
|
|
14
|
+
var $__default = /*#__PURE__*/_interopDefaultLegacy($);
|
|
15
|
+
var Tooltip__default = /*#__PURE__*/_interopDefaultLegacy(Tooltip);
|
|
16
|
+
|
|
17
|
+
function _defineProperties(target, props) {
|
|
18
|
+
for (var i = 0; i < props.length; i++) {
|
|
19
|
+
var descriptor = props[i];
|
|
20
|
+
descriptor.enumerable = descriptor.enumerable || false;
|
|
21
|
+
descriptor.configurable = true;
|
|
22
|
+
if ("value" in descriptor) descriptor.writable = true;
|
|
23
|
+
Object.defineProperty(target, descriptor.key, descriptor);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
function _createClass(Constructor, protoProps, staticProps) {
|
|
28
|
+
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
|
29
|
+
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
30
|
+
return Constructor;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function _extends() {
|
|
34
|
+
_extends = Object.assign || function (target) {
|
|
35
|
+
for (var i = 1; i < arguments.length; i++) {
|
|
36
|
+
var source = arguments[i];
|
|
37
|
+
|
|
38
|
+
for (var key in source) {
|
|
39
|
+
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
40
|
+
target[key] = source[key];
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
return target;
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
return _extends.apply(this, arguments);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
function _inheritsLoose(subClass, superClass) {
|
|
52
|
+
subClass.prototype = Object.create(superClass.prototype);
|
|
53
|
+
subClass.prototype.constructor = subClass;
|
|
54
|
+
|
|
55
|
+
_setPrototypeOf(subClass, superClass);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
function _setPrototypeOf(o, p) {
|
|
59
|
+
_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
|
|
60
|
+
o.__proto__ = p;
|
|
61
|
+
return o;
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
return _setPrototypeOf(o, p);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Constants
|
|
69
|
+
*/
|
|
70
|
+
|
|
71
|
+
var NAME = 'popover';
|
|
72
|
+
var VERSION = '4.6.1';
|
|
73
|
+
var DATA_KEY = 'bs.popover';
|
|
74
|
+
var EVENT_KEY = "." + DATA_KEY;
|
|
75
|
+
var JQUERY_NO_CONFLICT = $__default["default"].fn[NAME];
|
|
76
|
+
var CLASS_PREFIX = 'bs-popover';
|
|
77
|
+
var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g');
|
|
78
|
+
var CLASS_NAME_FADE = 'fade';
|
|
79
|
+
var CLASS_NAME_SHOW = 'show';
|
|
80
|
+
var SELECTOR_TITLE = '.popover-header';
|
|
81
|
+
var SELECTOR_CONTENT = '.popover-body';
|
|
82
|
+
|
|
83
|
+
var Default = _extends({}, Tooltip__default["default"].Default, {
|
|
84
|
+
placement: 'right',
|
|
85
|
+
trigger: 'click',
|
|
86
|
+
content: '',
|
|
87
|
+
template: '<div class="popover" role="tooltip">' + '<div class="arrow"></div>' + '<h3 class="popover-header"></h3>' + '<div class="popover-body"></div></div>'
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
var DefaultType = _extends({}, Tooltip__default["default"].DefaultType, {
|
|
91
|
+
content: '(string|element|function)'
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
var Event = {
|
|
95
|
+
HIDE: "hide" + EVENT_KEY,
|
|
96
|
+
HIDDEN: "hidden" + EVENT_KEY,
|
|
97
|
+
SHOW: "show" + EVENT_KEY,
|
|
98
|
+
SHOWN: "shown" + EVENT_KEY,
|
|
99
|
+
INSERTED: "inserted" + EVENT_KEY,
|
|
100
|
+
CLICK: "click" + EVENT_KEY,
|
|
101
|
+
FOCUSIN: "focusin" + EVENT_KEY,
|
|
102
|
+
FOCUSOUT: "focusout" + EVENT_KEY,
|
|
103
|
+
MOUSEENTER: "mouseenter" + EVENT_KEY,
|
|
104
|
+
MOUSELEAVE: "mouseleave" + EVENT_KEY
|
|
105
|
+
};
|
|
106
|
+
/**
|
|
107
|
+
* Class definition
|
|
108
|
+
*/
|
|
109
|
+
|
|
110
|
+
var Popover = /*#__PURE__*/function (_Tooltip) {
|
|
111
|
+
_inheritsLoose(Popover, _Tooltip);
|
|
112
|
+
|
|
113
|
+
function Popover() {
|
|
114
|
+
return _Tooltip.apply(this, arguments) || this;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
var _proto = Popover.prototype;
|
|
118
|
+
|
|
119
|
+
// Overrides
|
|
120
|
+
_proto.isWithContent = function isWithContent() {
|
|
121
|
+
return this.getTitle() || this._getContent();
|
|
122
|
+
};
|
|
123
|
+
|
|
124
|
+
_proto.addAttachmentClass = function addAttachmentClass(attachment) {
|
|
125
|
+
$__default["default"](this.getTipElement()).addClass(CLASS_PREFIX + "-" + attachment);
|
|
126
|
+
};
|
|
127
|
+
|
|
128
|
+
_proto.getTipElement = function getTipElement() {
|
|
129
|
+
this.tip = this.tip || $__default["default"](this.config.template)[0];
|
|
130
|
+
return this.tip;
|
|
131
|
+
};
|
|
132
|
+
|
|
133
|
+
_proto.setContent = function setContent() {
|
|
134
|
+
var $tip = $__default["default"](this.getTipElement()); // We use append for html objects to maintain js events
|
|
135
|
+
|
|
136
|
+
this.setElementContent($tip.find(SELECTOR_TITLE), this.getTitle());
|
|
137
|
+
|
|
138
|
+
var content = this._getContent();
|
|
139
|
+
|
|
140
|
+
if (typeof content === 'function') {
|
|
141
|
+
content = content.call(this.element);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
this.setElementContent($tip.find(SELECTOR_CONTENT), content);
|
|
145
|
+
$tip.removeClass(CLASS_NAME_FADE + " " + CLASS_NAME_SHOW);
|
|
146
|
+
} // Private
|
|
147
|
+
;
|
|
148
|
+
|
|
149
|
+
_proto._getContent = function _getContent() {
|
|
150
|
+
return this.element.getAttribute('data-content') || this.config.content;
|
|
151
|
+
};
|
|
152
|
+
|
|
153
|
+
_proto._cleanTipClass = function _cleanTipClass() {
|
|
154
|
+
var $tip = $__default["default"](this.getTipElement());
|
|
155
|
+
var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX);
|
|
156
|
+
|
|
157
|
+
if (tabClass !== null && tabClass.length > 0) {
|
|
158
|
+
$tip.removeClass(tabClass.join(''));
|
|
159
|
+
}
|
|
160
|
+
} // Static
|
|
161
|
+
;
|
|
162
|
+
|
|
163
|
+
Popover._jQueryInterface = function _jQueryInterface(config) {
|
|
164
|
+
return this.each(function () {
|
|
165
|
+
var data = $__default["default"](this).data(DATA_KEY);
|
|
166
|
+
|
|
167
|
+
var _config = typeof config === 'object' ? config : null;
|
|
168
|
+
|
|
169
|
+
if (!data && /dispose|hide/.test(config)) {
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
if (!data) {
|
|
174
|
+
data = new Popover(this, _config);
|
|
175
|
+
$__default["default"](this).data(DATA_KEY, data);
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
if (typeof config === 'string') {
|
|
179
|
+
if (typeof data[config] === 'undefined') {
|
|
180
|
+
throw new TypeError("No method named \"" + config + "\"");
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
data[config]();
|
|
184
|
+
}
|
|
185
|
+
});
|
|
186
|
+
};
|
|
187
|
+
|
|
188
|
+
_createClass(Popover, null, [{
|
|
189
|
+
key: "VERSION",
|
|
190
|
+
get: // Getters
|
|
191
|
+
function get() {
|
|
192
|
+
return VERSION;
|
|
193
|
+
}
|
|
194
|
+
}, {
|
|
195
|
+
key: "Default",
|
|
196
|
+
get: function get() {
|
|
197
|
+
return Default;
|
|
198
|
+
}
|
|
199
|
+
}, {
|
|
200
|
+
key: "NAME",
|
|
201
|
+
get: function get() {
|
|
202
|
+
return NAME;
|
|
203
|
+
}
|
|
204
|
+
}, {
|
|
205
|
+
key: "DATA_KEY",
|
|
206
|
+
get: function get() {
|
|
207
|
+
return DATA_KEY;
|
|
208
|
+
}
|
|
209
|
+
}, {
|
|
210
|
+
key: "Event",
|
|
211
|
+
get: function get() {
|
|
212
|
+
return Event;
|
|
213
|
+
}
|
|
214
|
+
}, {
|
|
215
|
+
key: "EVENT_KEY",
|
|
216
|
+
get: function get() {
|
|
217
|
+
return EVENT_KEY;
|
|
218
|
+
}
|
|
219
|
+
}, {
|
|
220
|
+
key: "DefaultType",
|
|
221
|
+
get: function get() {
|
|
222
|
+
return DefaultType;
|
|
223
|
+
}
|
|
224
|
+
}]);
|
|
225
|
+
|
|
226
|
+
return Popover;
|
|
227
|
+
}(Tooltip__default["default"]);
|
|
228
|
+
/**
|
|
229
|
+
* jQuery
|
|
230
|
+
*/
|
|
231
|
+
|
|
232
|
+
|
|
233
|
+
$__default["default"].fn[NAME] = Popover._jQueryInterface;
|
|
234
|
+
$__default["default"].fn[NAME].Constructor = Popover;
|
|
235
|
+
|
|
236
|
+
$__default["default"].fn[NAME].noConflict = function () {
|
|
237
|
+
$__default["default"].fn[NAME] = JQUERY_NO_CONFLICT;
|
|
238
|
+
return Popover._jQueryInterface;
|
|
239
|
+
};
|
|
240
|
+
|
|
241
|
+
return Popover;
|
|
242
|
+
|
|
243
|
+
}));
|
|
@@ -0,0 +1,337 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Bootstrap scrollspy.js v4.6.1 (https://getbootstrap.com/)
|
|
3
|
+
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
|
4
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
5
|
+
*/
|
|
6
|
+
(function (global, factory) {
|
|
7
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('jquery'), require('./util.js')) :
|
|
8
|
+
typeof define === 'function' && define.amd ? define(['jquery', './util'], factory) :
|
|
9
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.ScrollSpy = factory(global.jQuery, global.Util));
|
|
10
|
+
})(this, (function ($, Util) { 'use strict';
|
|
11
|
+
|
|
12
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
13
|
+
|
|
14
|
+
var $__default = /*#__PURE__*/_interopDefaultLegacy($);
|
|
15
|
+
var Util__default = /*#__PURE__*/_interopDefaultLegacy(Util);
|
|
16
|
+
|
|
17
|
+
function _defineProperties(target, props) {
|
|
18
|
+
for (var i = 0; i < props.length; i++) {
|
|
19
|
+
var descriptor = props[i];
|
|
20
|
+
descriptor.enumerable = descriptor.enumerable || false;
|
|
21
|
+
descriptor.configurable = true;
|
|
22
|
+
if ("value" in descriptor) descriptor.writable = true;
|
|
23
|
+
Object.defineProperty(target, descriptor.key, descriptor);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
function _createClass(Constructor, protoProps, staticProps) {
|
|
28
|
+
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
|
29
|
+
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
30
|
+
return Constructor;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function _extends() {
|
|
34
|
+
_extends = Object.assign || function (target) {
|
|
35
|
+
for (var i = 1; i < arguments.length; i++) {
|
|
36
|
+
var source = arguments[i];
|
|
37
|
+
|
|
38
|
+
for (var key in source) {
|
|
39
|
+
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
40
|
+
target[key] = source[key];
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
return target;
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
return _extends.apply(this, arguments);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Constants
|
|
53
|
+
*/
|
|
54
|
+
|
|
55
|
+
var NAME = 'scrollspy';
|
|
56
|
+
var VERSION = '4.6.1';
|
|
57
|
+
var DATA_KEY = 'bs.scrollspy';
|
|
58
|
+
var EVENT_KEY = "." + DATA_KEY;
|
|
59
|
+
var DATA_API_KEY = '.data-api';
|
|
60
|
+
var JQUERY_NO_CONFLICT = $__default["default"].fn[NAME];
|
|
61
|
+
var CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';
|
|
62
|
+
var CLASS_NAME_ACTIVE = 'active';
|
|
63
|
+
var EVENT_ACTIVATE = "activate" + EVENT_KEY;
|
|
64
|
+
var EVENT_SCROLL = "scroll" + EVENT_KEY;
|
|
65
|
+
var EVENT_LOAD_DATA_API = "load" + EVENT_KEY + DATA_API_KEY;
|
|
66
|
+
var METHOD_OFFSET = 'offset';
|
|
67
|
+
var METHOD_POSITION = 'position';
|
|
68
|
+
var SELECTOR_DATA_SPY = '[data-spy="scroll"]';
|
|
69
|
+
var SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';
|
|
70
|
+
var SELECTOR_NAV_LINKS = '.nav-link';
|
|
71
|
+
var SELECTOR_NAV_ITEMS = '.nav-item';
|
|
72
|
+
var SELECTOR_LIST_ITEMS = '.list-group-item';
|
|
73
|
+
var SELECTOR_DROPDOWN = '.dropdown';
|
|
74
|
+
var SELECTOR_DROPDOWN_ITEMS = '.dropdown-item';
|
|
75
|
+
var SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';
|
|
76
|
+
var Default = {
|
|
77
|
+
offset: 10,
|
|
78
|
+
method: 'auto',
|
|
79
|
+
target: ''
|
|
80
|
+
};
|
|
81
|
+
var DefaultType = {
|
|
82
|
+
offset: 'number',
|
|
83
|
+
method: 'string',
|
|
84
|
+
target: '(string|element)'
|
|
85
|
+
};
|
|
86
|
+
/**
|
|
87
|
+
* Class definition
|
|
88
|
+
*/
|
|
89
|
+
|
|
90
|
+
var ScrollSpy = /*#__PURE__*/function () {
|
|
91
|
+
function ScrollSpy(element, config) {
|
|
92
|
+
var _this = this;
|
|
93
|
+
|
|
94
|
+
this._element = element;
|
|
95
|
+
this._scrollElement = element.tagName === 'BODY' ? window : element;
|
|
96
|
+
this._config = this._getConfig(config);
|
|
97
|
+
this._selector = this._config.target + " " + SELECTOR_NAV_LINKS + "," + (this._config.target + " " + SELECTOR_LIST_ITEMS + ",") + (this._config.target + " " + SELECTOR_DROPDOWN_ITEMS);
|
|
98
|
+
this._offsets = [];
|
|
99
|
+
this._targets = [];
|
|
100
|
+
this._activeTarget = null;
|
|
101
|
+
this._scrollHeight = 0;
|
|
102
|
+
$__default["default"](this._scrollElement).on(EVENT_SCROLL, function (event) {
|
|
103
|
+
return _this._process(event);
|
|
104
|
+
});
|
|
105
|
+
this.refresh();
|
|
106
|
+
|
|
107
|
+
this._process();
|
|
108
|
+
} // Getters
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
var _proto = ScrollSpy.prototype;
|
|
112
|
+
|
|
113
|
+
// Public
|
|
114
|
+
_proto.refresh = function refresh() {
|
|
115
|
+
var _this2 = this;
|
|
116
|
+
|
|
117
|
+
var autoMethod = this._scrollElement === this._scrollElement.window ? METHOD_OFFSET : METHOD_POSITION;
|
|
118
|
+
var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method;
|
|
119
|
+
var offsetBase = offsetMethod === METHOD_POSITION ? this._getScrollTop() : 0;
|
|
120
|
+
this._offsets = [];
|
|
121
|
+
this._targets = [];
|
|
122
|
+
this._scrollHeight = this._getScrollHeight();
|
|
123
|
+
var targets = [].slice.call(document.querySelectorAll(this._selector));
|
|
124
|
+
targets.map(function (element) {
|
|
125
|
+
var target;
|
|
126
|
+
var targetSelector = Util__default["default"].getSelectorFromElement(element);
|
|
127
|
+
|
|
128
|
+
if (targetSelector) {
|
|
129
|
+
target = document.querySelector(targetSelector);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
if (target) {
|
|
133
|
+
var targetBCR = target.getBoundingClientRect();
|
|
134
|
+
|
|
135
|
+
if (targetBCR.width || targetBCR.height) {
|
|
136
|
+
// TODO (fat): remove sketch reliance on jQuery position/offset
|
|
137
|
+
return [$__default["default"](target)[offsetMethod]().top + offsetBase, targetSelector];
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
return null;
|
|
142
|
+
}).filter(function (item) {
|
|
143
|
+
return item;
|
|
144
|
+
}).sort(function (a, b) {
|
|
145
|
+
return a[0] - b[0];
|
|
146
|
+
}).forEach(function (item) {
|
|
147
|
+
_this2._offsets.push(item[0]);
|
|
148
|
+
|
|
149
|
+
_this2._targets.push(item[1]);
|
|
150
|
+
});
|
|
151
|
+
};
|
|
152
|
+
|
|
153
|
+
_proto.dispose = function dispose() {
|
|
154
|
+
$__default["default"].removeData(this._element, DATA_KEY);
|
|
155
|
+
$__default["default"](this._scrollElement).off(EVENT_KEY);
|
|
156
|
+
this._element = null;
|
|
157
|
+
this._scrollElement = null;
|
|
158
|
+
this._config = null;
|
|
159
|
+
this._selector = null;
|
|
160
|
+
this._offsets = null;
|
|
161
|
+
this._targets = null;
|
|
162
|
+
this._activeTarget = null;
|
|
163
|
+
this._scrollHeight = null;
|
|
164
|
+
} // Private
|
|
165
|
+
;
|
|
166
|
+
|
|
167
|
+
_proto._getConfig = function _getConfig(config) {
|
|
168
|
+
config = _extends({}, Default, typeof config === 'object' && config ? config : {});
|
|
169
|
+
|
|
170
|
+
if (typeof config.target !== 'string' && Util__default["default"].isElement(config.target)) {
|
|
171
|
+
var id = $__default["default"](config.target).attr('id');
|
|
172
|
+
|
|
173
|
+
if (!id) {
|
|
174
|
+
id = Util__default["default"].getUID(NAME);
|
|
175
|
+
$__default["default"](config.target).attr('id', id);
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
config.target = "#" + id;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
Util__default["default"].typeCheckConfig(NAME, config, DefaultType);
|
|
182
|
+
return config;
|
|
183
|
+
};
|
|
184
|
+
|
|
185
|
+
_proto._getScrollTop = function _getScrollTop() {
|
|
186
|
+
return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop;
|
|
187
|
+
};
|
|
188
|
+
|
|
189
|
+
_proto._getScrollHeight = function _getScrollHeight() {
|
|
190
|
+
return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);
|
|
191
|
+
};
|
|
192
|
+
|
|
193
|
+
_proto._getOffsetHeight = function _getOffsetHeight() {
|
|
194
|
+
return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height;
|
|
195
|
+
};
|
|
196
|
+
|
|
197
|
+
_proto._process = function _process() {
|
|
198
|
+
var scrollTop = this._getScrollTop() + this._config.offset;
|
|
199
|
+
|
|
200
|
+
var scrollHeight = this._getScrollHeight();
|
|
201
|
+
|
|
202
|
+
var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight();
|
|
203
|
+
|
|
204
|
+
if (this._scrollHeight !== scrollHeight) {
|
|
205
|
+
this.refresh();
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
if (scrollTop >= maxScroll) {
|
|
209
|
+
var target = this._targets[this._targets.length - 1];
|
|
210
|
+
|
|
211
|
+
if (this._activeTarget !== target) {
|
|
212
|
+
this._activate(target);
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {
|
|
219
|
+
this._activeTarget = null;
|
|
220
|
+
|
|
221
|
+
this._clear();
|
|
222
|
+
|
|
223
|
+
return;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
for (var i = this._offsets.length; i--;) {
|
|
227
|
+
var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]);
|
|
228
|
+
|
|
229
|
+
if (isActiveTarget) {
|
|
230
|
+
this._activate(this._targets[i]);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
};
|
|
234
|
+
|
|
235
|
+
_proto._activate = function _activate(target) {
|
|
236
|
+
this._activeTarget = target;
|
|
237
|
+
|
|
238
|
+
this._clear();
|
|
239
|
+
|
|
240
|
+
var queries = this._selector.split(',').map(function (selector) {
|
|
241
|
+
return selector + "[data-target=\"" + target + "\"]," + selector + "[href=\"" + target + "\"]";
|
|
242
|
+
});
|
|
243
|
+
|
|
244
|
+
var $link = $__default["default"]([].slice.call(document.querySelectorAll(queries.join(','))));
|
|
245
|
+
|
|
246
|
+
if ($link.hasClass(CLASS_NAME_DROPDOWN_ITEM)) {
|
|
247
|
+
$link.closest(SELECTOR_DROPDOWN).find(SELECTOR_DROPDOWN_TOGGLE).addClass(CLASS_NAME_ACTIVE);
|
|
248
|
+
$link.addClass(CLASS_NAME_ACTIVE);
|
|
249
|
+
} else {
|
|
250
|
+
// Set triggered link as active
|
|
251
|
+
$link.addClass(CLASS_NAME_ACTIVE); // Set triggered links parents as active
|
|
252
|
+
// With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor
|
|
253
|
+
|
|
254
|
+
$link.parents(SELECTOR_NAV_LIST_GROUP).prev(SELECTOR_NAV_LINKS + ", " + SELECTOR_LIST_ITEMS).addClass(CLASS_NAME_ACTIVE); // Handle special case when .nav-link is inside .nav-item
|
|
255
|
+
|
|
256
|
+
$link.parents(SELECTOR_NAV_LIST_GROUP).prev(SELECTOR_NAV_ITEMS).children(SELECTOR_NAV_LINKS).addClass(CLASS_NAME_ACTIVE);
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
$__default["default"](this._scrollElement).trigger(EVENT_ACTIVATE, {
|
|
260
|
+
relatedTarget: target
|
|
261
|
+
});
|
|
262
|
+
};
|
|
263
|
+
|
|
264
|
+
_proto._clear = function _clear() {
|
|
265
|
+
[].slice.call(document.querySelectorAll(this._selector)).filter(function (node) {
|
|
266
|
+
return node.classList.contains(CLASS_NAME_ACTIVE);
|
|
267
|
+
}).forEach(function (node) {
|
|
268
|
+
return node.classList.remove(CLASS_NAME_ACTIVE);
|
|
269
|
+
});
|
|
270
|
+
} // Static
|
|
271
|
+
;
|
|
272
|
+
|
|
273
|
+
ScrollSpy._jQueryInterface = function _jQueryInterface(config) {
|
|
274
|
+
return this.each(function () {
|
|
275
|
+
var data = $__default["default"](this).data(DATA_KEY);
|
|
276
|
+
|
|
277
|
+
var _config = typeof config === 'object' && config;
|
|
278
|
+
|
|
279
|
+
if (!data) {
|
|
280
|
+
data = new ScrollSpy(this, _config);
|
|
281
|
+
$__default["default"](this).data(DATA_KEY, data);
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
if (typeof config === 'string') {
|
|
285
|
+
if (typeof data[config] === 'undefined') {
|
|
286
|
+
throw new TypeError("No method named \"" + config + "\"");
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
data[config]();
|
|
290
|
+
}
|
|
291
|
+
});
|
|
292
|
+
};
|
|
293
|
+
|
|
294
|
+
_createClass(ScrollSpy, null, [{
|
|
295
|
+
key: "VERSION",
|
|
296
|
+
get: function get() {
|
|
297
|
+
return VERSION;
|
|
298
|
+
}
|
|
299
|
+
}, {
|
|
300
|
+
key: "Default",
|
|
301
|
+
get: function get() {
|
|
302
|
+
return Default;
|
|
303
|
+
}
|
|
304
|
+
}]);
|
|
305
|
+
|
|
306
|
+
return ScrollSpy;
|
|
307
|
+
}();
|
|
308
|
+
/**
|
|
309
|
+
* Data API implementation
|
|
310
|
+
*/
|
|
311
|
+
|
|
312
|
+
|
|
313
|
+
$__default["default"](window).on(EVENT_LOAD_DATA_API, function () {
|
|
314
|
+
var scrollSpys = [].slice.call(document.querySelectorAll(SELECTOR_DATA_SPY));
|
|
315
|
+
var scrollSpysLength = scrollSpys.length;
|
|
316
|
+
|
|
317
|
+
for (var i = scrollSpysLength; i--;) {
|
|
318
|
+
var $spy = $__default["default"](scrollSpys[i]);
|
|
319
|
+
|
|
320
|
+
ScrollSpy._jQueryInterface.call($spy, $spy.data());
|
|
321
|
+
}
|
|
322
|
+
});
|
|
323
|
+
/**
|
|
324
|
+
* jQuery
|
|
325
|
+
*/
|
|
326
|
+
|
|
327
|
+
$__default["default"].fn[NAME] = ScrollSpy._jQueryInterface;
|
|
328
|
+
$__default["default"].fn[NAME].Constructor = ScrollSpy;
|
|
329
|
+
|
|
330
|
+
$__default["default"].fn[NAME].noConflict = function () {
|
|
331
|
+
$__default["default"].fn[NAME] = JQUERY_NO_CONFLICT;
|
|
332
|
+
return ScrollSpy._jQueryInterface;
|
|
333
|
+
};
|
|
334
|
+
|
|
335
|
+
return ScrollSpy;
|
|
336
|
+
|
|
337
|
+
}));
|