bootstrap 4.0.0 → 4.6.2.1
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 +5 -5
- data/.travis.yml +15 -1
- data/CHANGELOG.md +4 -4
- data/README.md +8 -2
- data/Rakefile +18 -4
- data/assets/javascripts/bootstrap/alert.js +77 -66
- data/assets/javascripts/bootstrap/button.js +138 -76
- data/assets/javascripts/bootstrap/carousel.js +289 -152
- data/assets/javascripts/bootstrap/collapse.js +150 -128
- data/assets/javascripts/bootstrap/dropdown.js +249 -160
- data/assets/javascripts/bootstrap/modal.js +280 -199
- data/assets/javascripts/bootstrap/popover.js +99 -58
- data/assets/javascripts/bootstrap/scrollspy.js +123 -102
- data/assets/javascripts/bootstrap/tab.js +110 -98
- data/assets/javascripts/bootstrap/toast.js +267 -0
- data/assets/javascripts/bootstrap/tooltip.js +401 -183
- data/assets/javascripts/bootstrap/util.js +106 -55
- data/assets/javascripts/bootstrap-sprockets.js +7 -6
- data/assets/javascripts/bootstrap.js +1903 -1441
- data/assets/javascripts/bootstrap.min.js +4 -4
- data/assets/stylesheets/_bootstrap-grid.scss +6 -8
- data/assets/stylesheets/_bootstrap-reboot.scss +4 -4
- data/assets/stylesheets/_bootstrap.scss +6 -4
- data/assets/stylesheets/bootstrap/_alert.scss +2 -1
- data/assets/stylesheets/bootstrap/_badge.scss +8 -1
- data/assets/stylesheets/bootstrap/_breadcrumb.scss +10 -6
- data/assets/stylesheets/bootstrap/_button-group.scss +17 -20
- data/assets/stylesheets/bootstrap/_buttons.scss +20 -21
- data/assets/stylesheets/bootstrap/_card.scss +77 -61
- data/assets/stylesheets/bootstrap/_carousel.scss +72 -63
- data/assets/stylesheets/bootstrap/_close.scss +14 -8
- data/assets/stylesheets/bootstrap/_code.scss +6 -14
- data/assets/stylesheets/bootstrap/_custom-forms.scss +274 -45
- data/assets/stylesheets/bootstrap/_dropdown.scss +70 -9
- data/assets/stylesheets/bootstrap/_forms.scss +56 -42
- data/assets/stylesheets/bootstrap/_functions.scss +117 -13
- data/assets/stylesheets/bootstrap/_grid.scss +32 -11
- data/assets/stylesheets/bootstrap/_images.scss +4 -4
- data/assets/stylesheets/bootstrap/_input-group.scss +68 -16
- data/assets/stylesheets/bootstrap/_jumbotron.scss +2 -1
- data/assets/stylesheets/bootstrap/_list-group.scss +63 -24
- data/assets/stylesheets/bootstrap/_mixins.scss +9 -4
- data/assets/stylesheets/bootstrap/_modal.scss +96 -24
- data/assets/stylesheets/bootstrap/_nav.scss +14 -7
- data/assets/stylesheets/bootstrap/_navbar.scss +64 -43
- data/assets/stylesheets/bootstrap/_pagination.scss +7 -10
- data/assets/stylesheets/bootstrap/_popover.scss +55 -68
- data/assets/stylesheets/bootstrap/_print.scss +24 -16
- data/assets/stylesheets/bootstrap/_progress.scss +20 -6
- data/assets/stylesheets/bootstrap/_reboot.scss +88 -86
- data/assets/stylesheets/bootstrap/_spinners.scss +65 -0
- data/assets/stylesheets/bootstrap/_tables.scss +19 -14
- data/assets/stylesheets/bootstrap/_toasts.scss +46 -0
- data/assets/stylesheets/bootstrap/_tooltip.scss +5 -5
- data/assets/stylesheets/bootstrap/_transitions.scss +10 -20
- data/assets/stylesheets/bootstrap/_type.scss +19 -19
- data/assets/stylesheets/bootstrap/_utilities.scss +4 -0
- data/assets/stylesheets/bootstrap/_variables.scss +462 -207
- data/assets/stylesheets/bootstrap/mixins/_background-variant.scss +5 -3
- data/assets/stylesheets/bootstrap/mixins/_badge.scss +8 -3
- data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +51 -10
- data/assets/stylesheets/bootstrap/mixins/_box-shadow.scss +16 -1
- data/assets/stylesheets/bootstrap/mixins/_breakpoints.scss +3 -3
- data/assets/stylesheets/bootstrap/mixins/_buttons.scss +20 -19
- data/assets/stylesheets/bootstrap/mixins/_caret.scss +13 -16
- data/assets/stylesheets/bootstrap/mixins/_deprecate.scss +10 -0
- data/assets/stylesheets/bootstrap/mixins/_float.scss +6 -3
- data/assets/stylesheets/bootstrap/mixins/_forms.scss +96 -38
- data/assets/stylesheets/bootstrap/mixins/_gradients.scss +7 -7
- data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +31 -18
- data/assets/stylesheets/bootstrap/mixins/_grid.scss +34 -17
- data/assets/stylesheets/bootstrap/mixins/_hover.scss +7 -9
- data/assets/stylesheets/bootstrap/mixins/_image.scss +4 -4
- data/assets/stylesheets/bootstrap/mixins/_list-group.scss +2 -2
- data/assets/stylesheets/bootstrap/mixins/_lists.scss +1 -1
- data/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +3 -2
- data/assets/stylesheets/bootstrap/mixins/_pagination.scss +1 -1
- data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +3 -3
- data/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +5 -6
- data/assets/stylesheets/bootstrap/mixins/_size.scss +1 -0
- data/assets/stylesheets/bootstrap/mixins/_table-row.scss +11 -2
- data/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +7 -4
- data/assets/stylesheets/bootstrap/mixins/_text-hide.scss +3 -1
- data/assets/stylesheets/bootstrap/mixins/_transition.scss +20 -3
- data/assets/stylesheets/bootstrap/mixins/_visibility.scss +1 -0
- data/assets/stylesheets/bootstrap/utilities/_background.scss +2 -2
- data/assets/stylesheets/bootstrap/utilities/_borders.scss +17 -1
- data/assets/stylesheets/bootstrap/utilities/_display.scss +6 -18
- data/assets/stylesheets/bootstrap/utilities/_embed.scss +7 -20
- data/assets/stylesheets/bootstrap/utilities/_flex.scss +5 -0
- data/assets/stylesheets/bootstrap/utilities/_float.scss +5 -3
- 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 +0 -4
- data/assets/stylesheets/bootstrap/utilities/_shadows.scss +6 -0
- data/assets/stylesheets/bootstrap/utilities/_sizing.scss +8 -0
- data/assets/stylesheets/bootstrap/utilities/_spacing.scss +23 -1
- data/assets/stylesheets/bootstrap/utilities/_stretched-link.scss +19 -0
- data/assets/stylesheets/bootstrap/utilities/_text.scss +28 -8
- data/assets/stylesheets/bootstrap/utilities/_visibility.scss +4 -2
- data/assets/stylesheets/bootstrap/vendor/_rfs.scss +228 -0
- data/bootstrap.gemspec +5 -4
- data/lib/bootstrap/engine.rb +19 -0
- data/lib/bootstrap/version.rb +4 -2
- data/lib/bootstrap.rb +10 -7
- data/tasks/updater/js.rb +18 -6
- data/tasks/updater/network.rb +8 -2
- data/test/dummy_rails/app/assets/config/manifest.js +3 -0
- data/test/dummy_rails/app/assets/stylesheets/.browserslistrc +1 -0
- data/test/gemfiles/rails_6_0.gemfile +7 -0
- data/test/gemfiles/rails_7_0_dartsass.gemfile +8 -0
- data/test/gemfiles/rails_7_0_sassc.gemfile +8 -0
- data/test/support/dummy_rails_integration.rb +3 -1
- data/test/test_helper.rb +21 -15
- metadata +28 -25
- data/assets/stylesheets/bootstrap/mixins/_navbar-align.scss +0 -10
|
@@ -1,93 +1,130 @@
|
|
|
1
|
-
|
|
1
|
+
/*!
|
|
2
|
+
* Bootstrap carousel.js v4.6.2 (https://getbootstrap.com/)
|
|
3
|
+
* Copyright 2011-2022 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.Carousel = 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
|
+
Object.defineProperty(Constructor, "prototype", {
|
|
31
|
+
writable: false
|
|
32
|
+
});
|
|
33
|
+
return Constructor;
|
|
34
|
+
}
|
|
2
35
|
|
|
3
|
-
function
|
|
36
|
+
function _extends() {
|
|
37
|
+
_extends = Object.assign ? Object.assign.bind() : function (target) {
|
|
38
|
+
for (var i = 1; i < arguments.length; i++) {
|
|
39
|
+
var source = arguments[i];
|
|
4
40
|
|
|
5
|
-
|
|
41
|
+
for (var key in source) {
|
|
42
|
+
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
43
|
+
target[key] = source[key];
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
return target;
|
|
49
|
+
};
|
|
50
|
+
return _extends.apply(this, arguments);
|
|
51
|
+
}
|
|
6
52
|
|
|
7
|
-
/**
|
|
8
|
-
* --------------------------------------------------------------------------
|
|
9
|
-
* Bootstrap (v4.0.0): carousel.js
|
|
10
|
-
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
|
11
|
-
* --------------------------------------------------------------------------
|
|
12
|
-
*/
|
|
13
|
-
var Carousel = function ($) {
|
|
14
53
|
/**
|
|
15
|
-
* ------------------------------------------------------------------------
|
|
16
54
|
* Constants
|
|
17
|
-
* ------------------------------------------------------------------------
|
|
18
55
|
*/
|
|
56
|
+
|
|
19
57
|
var NAME = 'carousel';
|
|
20
|
-
var VERSION = '4.
|
|
58
|
+
var VERSION = '4.6.2';
|
|
21
59
|
var DATA_KEY = 'bs.carousel';
|
|
22
60
|
var EVENT_KEY = "." + DATA_KEY;
|
|
23
61
|
var DATA_API_KEY = '.data-api';
|
|
24
|
-
var JQUERY_NO_CONFLICT =
|
|
25
|
-
var TRANSITION_DURATION = 600;
|
|
62
|
+
var JQUERY_NO_CONFLICT = $__default["default"].fn[NAME];
|
|
26
63
|
var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key
|
|
27
64
|
|
|
28
65
|
var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key
|
|
29
66
|
|
|
30
67
|
var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch
|
|
31
68
|
|
|
69
|
+
var SWIPE_THRESHOLD = 40;
|
|
70
|
+
var CLASS_NAME_CAROUSEL = 'carousel';
|
|
71
|
+
var CLASS_NAME_ACTIVE = 'active';
|
|
72
|
+
var CLASS_NAME_SLIDE = 'slide';
|
|
73
|
+
var CLASS_NAME_RIGHT = 'carousel-item-right';
|
|
74
|
+
var CLASS_NAME_LEFT = 'carousel-item-left';
|
|
75
|
+
var CLASS_NAME_NEXT = 'carousel-item-next';
|
|
76
|
+
var CLASS_NAME_PREV = 'carousel-item-prev';
|
|
77
|
+
var CLASS_NAME_POINTER_EVENT = 'pointer-event';
|
|
78
|
+
var DIRECTION_NEXT = 'next';
|
|
79
|
+
var DIRECTION_PREV = 'prev';
|
|
80
|
+
var DIRECTION_LEFT = 'left';
|
|
81
|
+
var DIRECTION_RIGHT = 'right';
|
|
82
|
+
var EVENT_SLIDE = "slide" + EVENT_KEY;
|
|
83
|
+
var EVENT_SLID = "slid" + EVENT_KEY;
|
|
84
|
+
var EVENT_KEYDOWN = "keydown" + EVENT_KEY;
|
|
85
|
+
var EVENT_MOUSEENTER = "mouseenter" + EVENT_KEY;
|
|
86
|
+
var EVENT_MOUSELEAVE = "mouseleave" + EVENT_KEY;
|
|
87
|
+
var EVENT_TOUCHSTART = "touchstart" + EVENT_KEY;
|
|
88
|
+
var EVENT_TOUCHMOVE = "touchmove" + EVENT_KEY;
|
|
89
|
+
var EVENT_TOUCHEND = "touchend" + EVENT_KEY;
|
|
90
|
+
var EVENT_POINTERDOWN = "pointerdown" + EVENT_KEY;
|
|
91
|
+
var EVENT_POINTERUP = "pointerup" + EVENT_KEY;
|
|
92
|
+
var EVENT_DRAG_START = "dragstart" + EVENT_KEY;
|
|
93
|
+
var EVENT_LOAD_DATA_API = "load" + EVENT_KEY + DATA_API_KEY;
|
|
94
|
+
var EVENT_CLICK_DATA_API = "click" + EVENT_KEY + DATA_API_KEY;
|
|
95
|
+
var SELECTOR_ACTIVE = '.active';
|
|
96
|
+
var SELECTOR_ACTIVE_ITEM = '.active.carousel-item';
|
|
97
|
+
var SELECTOR_ITEM = '.carousel-item';
|
|
98
|
+
var SELECTOR_ITEM_IMG = '.carousel-item img';
|
|
99
|
+
var SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev';
|
|
100
|
+
var SELECTOR_INDICATORS = '.carousel-indicators';
|
|
101
|
+
var SELECTOR_DATA_SLIDE = '[data-slide], [data-slide-to]';
|
|
102
|
+
var SELECTOR_DATA_RIDE = '[data-ride="carousel"]';
|
|
32
103
|
var Default = {
|
|
33
104
|
interval: 5000,
|
|
34
105
|
keyboard: true,
|
|
35
106
|
slide: false,
|
|
36
107
|
pause: 'hover',
|
|
37
|
-
wrap: true
|
|
108
|
+
wrap: true,
|
|
109
|
+
touch: true
|
|
38
110
|
};
|
|
39
111
|
var DefaultType = {
|
|
40
112
|
interval: '(number|boolean)',
|
|
41
113
|
keyboard: 'boolean',
|
|
42
114
|
slide: '(boolean|string)',
|
|
43
115
|
pause: '(string|boolean)',
|
|
44
|
-
wrap: 'boolean'
|
|
45
|
-
|
|
46
|
-
var Direction = {
|
|
47
|
-
NEXT: 'next',
|
|
48
|
-
PREV: 'prev',
|
|
49
|
-
LEFT: 'left',
|
|
50
|
-
RIGHT: 'right'
|
|
51
|
-
};
|
|
52
|
-
var Event = {
|
|
53
|
-
SLIDE: "slide" + EVENT_KEY,
|
|
54
|
-
SLID: "slid" + EVENT_KEY,
|
|
55
|
-
KEYDOWN: "keydown" + EVENT_KEY,
|
|
56
|
-
MOUSEENTER: "mouseenter" + EVENT_KEY,
|
|
57
|
-
MOUSELEAVE: "mouseleave" + EVENT_KEY,
|
|
58
|
-
TOUCHEND: "touchend" + EVENT_KEY,
|
|
59
|
-
LOAD_DATA_API: "load" + EVENT_KEY + DATA_API_KEY,
|
|
60
|
-
CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
|
|
116
|
+
wrap: 'boolean',
|
|
117
|
+
touch: 'boolean'
|
|
61
118
|
};
|
|
62
|
-
var
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
SLIDE: 'slide',
|
|
66
|
-
RIGHT: 'carousel-item-right',
|
|
67
|
-
LEFT: 'carousel-item-left',
|
|
68
|
-
NEXT: 'carousel-item-next',
|
|
69
|
-
PREV: 'carousel-item-prev',
|
|
70
|
-
ITEM: 'carousel-item'
|
|
71
|
-
};
|
|
72
|
-
var Selector = {
|
|
73
|
-
ACTIVE: '.active',
|
|
74
|
-
ACTIVE_ITEM: '.active.carousel-item',
|
|
75
|
-
ITEM: '.carousel-item',
|
|
76
|
-
NEXT_PREV: '.carousel-item-next, .carousel-item-prev',
|
|
77
|
-
INDICATORS: '.carousel-indicators',
|
|
78
|
-
DATA_SLIDE: '[data-slide], [data-slide-to]',
|
|
79
|
-
DATA_RIDE: '[data-ride="carousel"]'
|
|
80
|
-
/**
|
|
81
|
-
* ------------------------------------------------------------------------
|
|
82
|
-
* Class Definition
|
|
83
|
-
* ------------------------------------------------------------------------
|
|
84
|
-
*/
|
|
85
|
-
|
|
119
|
+
var PointerType = {
|
|
120
|
+
TOUCH: 'touch',
|
|
121
|
+
PEN: 'pen'
|
|
86
122
|
};
|
|
123
|
+
/**
|
|
124
|
+
* Class definition
|
|
125
|
+
*/
|
|
87
126
|
|
|
88
|
-
var Carousel =
|
|
89
|
-
/*#__PURE__*/
|
|
90
|
-
function () {
|
|
127
|
+
var Carousel = /*#__PURE__*/function () {
|
|
91
128
|
function Carousel(element, config) {
|
|
92
129
|
this._items = null;
|
|
93
130
|
this._interval = null;
|
|
@@ -95,9 +132,13 @@ var Carousel = function ($) {
|
|
|
95
132
|
this._isPaused = false;
|
|
96
133
|
this._isSliding = false;
|
|
97
134
|
this.touchTimeout = null;
|
|
135
|
+
this.touchStartX = 0;
|
|
136
|
+
this.touchDeltaX = 0;
|
|
98
137
|
this._config = this._getConfig(config);
|
|
99
|
-
this._element =
|
|
100
|
-
this._indicatorsElement =
|
|
138
|
+
this._element = element;
|
|
139
|
+
this._indicatorsElement = this._element.querySelector(SELECTOR_INDICATORS);
|
|
140
|
+
this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;
|
|
141
|
+
this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent);
|
|
101
142
|
|
|
102
143
|
this._addEventListeners();
|
|
103
144
|
} // Getters
|
|
@@ -108,21 +149,22 @@ var Carousel = function ($) {
|
|
|
108
149
|
// Public
|
|
109
150
|
_proto.next = function next() {
|
|
110
151
|
if (!this._isSliding) {
|
|
111
|
-
this._slide(
|
|
152
|
+
this._slide(DIRECTION_NEXT);
|
|
112
153
|
}
|
|
113
154
|
};
|
|
114
155
|
|
|
115
156
|
_proto.nextWhenVisible = function nextWhenVisible() {
|
|
116
|
-
// Don't call next when the page isn't visible
|
|
157
|
+
var $element = $__default["default"](this._element); // Don't call next when the page isn't visible
|
|
117
158
|
// or the carousel or its parent isn't visible
|
|
118
|
-
|
|
159
|
+
|
|
160
|
+
if (!document.hidden && $element.is(':visible') && $element.css('visibility') !== 'hidden') {
|
|
119
161
|
this.next();
|
|
120
162
|
}
|
|
121
163
|
};
|
|
122
164
|
|
|
123
165
|
_proto.prev = function prev() {
|
|
124
166
|
if (!this._isSliding) {
|
|
125
|
-
this._slide(
|
|
167
|
+
this._slide(DIRECTION_PREV);
|
|
126
168
|
}
|
|
127
169
|
};
|
|
128
170
|
|
|
@@ -131,8 +173,8 @@ var Carousel = function ($) {
|
|
|
131
173
|
this._isPaused = true;
|
|
132
174
|
}
|
|
133
175
|
|
|
134
|
-
if (
|
|
135
|
-
|
|
176
|
+
if (this._element.querySelector(SELECTOR_NEXT_PREV)) {
|
|
177
|
+
Util__default["default"].triggerTransitionEnd(this._element);
|
|
136
178
|
this.cycle(true);
|
|
137
179
|
}
|
|
138
180
|
|
|
@@ -151,6 +193,8 @@ var Carousel = function ($) {
|
|
|
151
193
|
}
|
|
152
194
|
|
|
153
195
|
if (this._config.interval && !this._isPaused) {
|
|
196
|
+
this._updateInterval();
|
|
197
|
+
|
|
154
198
|
this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);
|
|
155
199
|
}
|
|
156
200
|
};
|
|
@@ -158,7 +202,7 @@ var Carousel = function ($) {
|
|
|
158
202
|
_proto.to = function to(index) {
|
|
159
203
|
var _this = this;
|
|
160
204
|
|
|
161
|
-
this._activeElement =
|
|
205
|
+
this._activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM);
|
|
162
206
|
|
|
163
207
|
var activeIndex = this._getItemIndex(this._activeElement);
|
|
164
208
|
|
|
@@ -167,7 +211,7 @@ var Carousel = function ($) {
|
|
|
167
211
|
}
|
|
168
212
|
|
|
169
213
|
if (this._isSliding) {
|
|
170
|
-
$(this._element).one(
|
|
214
|
+
$__default["default"](this._element).one(EVENT_SLID, function () {
|
|
171
215
|
return _this.to(index);
|
|
172
216
|
});
|
|
173
217
|
return;
|
|
@@ -179,14 +223,14 @@ var Carousel = function ($) {
|
|
|
179
223
|
return;
|
|
180
224
|
}
|
|
181
225
|
|
|
182
|
-
var direction = index > activeIndex ?
|
|
226
|
+
var direction = index > activeIndex ? DIRECTION_NEXT : DIRECTION_PREV;
|
|
183
227
|
|
|
184
228
|
this._slide(direction, this._items[index]);
|
|
185
229
|
};
|
|
186
230
|
|
|
187
231
|
_proto.dispose = function dispose() {
|
|
188
|
-
$(this._element).off(EVENT_KEY);
|
|
189
|
-
|
|
232
|
+
$__default["default"](this._element).off(EVENT_KEY);
|
|
233
|
+
$__default["default"].removeData(this._element, DATA_KEY);
|
|
190
234
|
this._items = null;
|
|
191
235
|
this._config = null;
|
|
192
236
|
this._element = null;
|
|
@@ -195,32 +239,85 @@ var Carousel = function ($) {
|
|
|
195
239
|
this._isSliding = null;
|
|
196
240
|
this._activeElement = null;
|
|
197
241
|
this._indicatorsElement = null;
|
|
198
|
-
}
|
|
199
|
-
|
|
242
|
+
} // Private
|
|
243
|
+
;
|
|
200
244
|
|
|
201
245
|
_proto._getConfig = function _getConfig(config) {
|
|
202
246
|
config = _extends({}, Default, config);
|
|
203
|
-
|
|
247
|
+
Util__default["default"].typeCheckConfig(NAME, config, DefaultType);
|
|
204
248
|
return config;
|
|
205
249
|
};
|
|
206
250
|
|
|
251
|
+
_proto._handleSwipe = function _handleSwipe() {
|
|
252
|
+
var absDeltax = Math.abs(this.touchDeltaX);
|
|
253
|
+
|
|
254
|
+
if (absDeltax <= SWIPE_THRESHOLD) {
|
|
255
|
+
return;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
var direction = absDeltax / this.touchDeltaX;
|
|
259
|
+
this.touchDeltaX = 0; // swipe left
|
|
260
|
+
|
|
261
|
+
if (direction > 0) {
|
|
262
|
+
this.prev();
|
|
263
|
+
} // swipe right
|
|
264
|
+
|
|
265
|
+
|
|
266
|
+
if (direction < 0) {
|
|
267
|
+
this.next();
|
|
268
|
+
}
|
|
269
|
+
};
|
|
270
|
+
|
|
207
271
|
_proto._addEventListeners = function _addEventListeners() {
|
|
208
272
|
var _this2 = this;
|
|
209
273
|
|
|
210
274
|
if (this._config.keyboard) {
|
|
211
|
-
$(this._element).on(
|
|
275
|
+
$__default["default"](this._element).on(EVENT_KEYDOWN, function (event) {
|
|
212
276
|
return _this2._keydown(event);
|
|
213
277
|
});
|
|
214
278
|
}
|
|
215
279
|
|
|
216
280
|
if (this._config.pause === 'hover') {
|
|
217
|
-
$(this._element).on(
|
|
281
|
+
$__default["default"](this._element).on(EVENT_MOUSEENTER, function (event) {
|
|
218
282
|
return _this2.pause(event);
|
|
219
|
-
}).on(
|
|
283
|
+
}).on(EVENT_MOUSELEAVE, function (event) {
|
|
220
284
|
return _this2.cycle(event);
|
|
221
285
|
});
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
if (this._config.touch) {
|
|
289
|
+
this._addTouchEventListeners();
|
|
290
|
+
}
|
|
291
|
+
};
|
|
292
|
+
|
|
293
|
+
_proto._addTouchEventListeners = function _addTouchEventListeners() {
|
|
294
|
+
var _this3 = this;
|
|
295
|
+
|
|
296
|
+
if (!this._touchSupported) {
|
|
297
|
+
return;
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
var start = function start(event) {
|
|
301
|
+
if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {
|
|
302
|
+
_this3.touchStartX = event.originalEvent.clientX;
|
|
303
|
+
} else if (!_this3._pointerEvent) {
|
|
304
|
+
_this3.touchStartX = event.originalEvent.touches[0].clientX;
|
|
305
|
+
}
|
|
306
|
+
};
|
|
307
|
+
|
|
308
|
+
var move = function move(event) {
|
|
309
|
+
// ensure swiping with one touch and not pinching
|
|
310
|
+
_this3.touchDeltaX = event.originalEvent.touches && event.originalEvent.touches.length > 1 ? 0 : event.originalEvent.touches[0].clientX - _this3.touchStartX;
|
|
311
|
+
};
|
|
222
312
|
|
|
223
|
-
|
|
313
|
+
var end = function end(event) {
|
|
314
|
+
if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {
|
|
315
|
+
_this3.touchDeltaX = event.originalEvent.clientX - _this3.touchStartX;
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
_this3._handleSwipe();
|
|
319
|
+
|
|
320
|
+
if (_this3._config.pause === 'hover') {
|
|
224
321
|
// If it's a touch-enabled device, mouseenter/leave are fired as
|
|
225
322
|
// part of the mouse compatibility events on first tap - the carousel
|
|
226
323
|
// would stop cycling until user tapped out of it;
|
|
@@ -228,18 +325,41 @@ var Carousel = function ($) {
|
|
|
228
325
|
// (as if it's the second time we tap on it, mouseenter compat event
|
|
229
326
|
// is NOT fired) and after a timeout (to allow for mouse compatibility
|
|
230
327
|
// events to fire) we explicitly restart cycling
|
|
231
|
-
|
|
232
|
-
_this2.pause();
|
|
328
|
+
_this3.pause();
|
|
233
329
|
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
330
|
+
if (_this3.touchTimeout) {
|
|
331
|
+
clearTimeout(_this3.touchTimeout);
|
|
332
|
+
}
|
|
237
333
|
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
});
|
|
334
|
+
_this3.touchTimeout = setTimeout(function (event) {
|
|
335
|
+
return _this3.cycle(event);
|
|
336
|
+
}, TOUCHEVENT_COMPAT_WAIT + _this3._config.interval);
|
|
242
337
|
}
|
|
338
|
+
};
|
|
339
|
+
|
|
340
|
+
$__default["default"](this._element.querySelectorAll(SELECTOR_ITEM_IMG)).on(EVENT_DRAG_START, function (e) {
|
|
341
|
+
return e.preventDefault();
|
|
342
|
+
});
|
|
343
|
+
|
|
344
|
+
if (this._pointerEvent) {
|
|
345
|
+
$__default["default"](this._element).on(EVENT_POINTERDOWN, function (event) {
|
|
346
|
+
return start(event);
|
|
347
|
+
});
|
|
348
|
+
$__default["default"](this._element).on(EVENT_POINTERUP, function (event) {
|
|
349
|
+
return end(event);
|
|
350
|
+
});
|
|
351
|
+
|
|
352
|
+
this._element.classList.add(CLASS_NAME_POINTER_EVENT);
|
|
353
|
+
} else {
|
|
354
|
+
$__default["default"](this._element).on(EVENT_TOUCHSTART, function (event) {
|
|
355
|
+
return start(event);
|
|
356
|
+
});
|
|
357
|
+
$__default["default"](this._element).on(EVENT_TOUCHMOVE, function (event) {
|
|
358
|
+
return move(event);
|
|
359
|
+
});
|
|
360
|
+
$__default["default"](this._element).on(EVENT_TOUCHEND, function (event) {
|
|
361
|
+
return end(event);
|
|
362
|
+
});
|
|
243
363
|
}
|
|
244
364
|
};
|
|
245
365
|
|
|
@@ -258,19 +378,17 @@ var Carousel = function ($) {
|
|
|
258
378
|
event.preventDefault();
|
|
259
379
|
this.next();
|
|
260
380
|
break;
|
|
261
|
-
|
|
262
|
-
default:
|
|
263
381
|
}
|
|
264
382
|
};
|
|
265
383
|
|
|
266
384
|
_proto._getItemIndex = function _getItemIndex(element) {
|
|
267
|
-
this._items =
|
|
385
|
+
this._items = element && element.parentNode ? [].slice.call(element.parentNode.querySelectorAll(SELECTOR_ITEM)) : [];
|
|
268
386
|
return this._items.indexOf(element);
|
|
269
387
|
};
|
|
270
388
|
|
|
271
389
|
_proto._getItemByDirection = function _getItemByDirection(direction, activeElement) {
|
|
272
|
-
var isNextDirection = direction ===
|
|
273
|
-
var isPrevDirection = direction ===
|
|
390
|
+
var isNextDirection = direction === DIRECTION_NEXT;
|
|
391
|
+
var isPrevDirection = direction === DIRECTION_PREV;
|
|
274
392
|
|
|
275
393
|
var activeIndex = this._getItemIndex(activeElement);
|
|
276
394
|
|
|
@@ -281,7 +399,7 @@ var Carousel = function ($) {
|
|
|
281
399
|
return activeElement;
|
|
282
400
|
}
|
|
283
401
|
|
|
284
|
-
var delta = direction ===
|
|
402
|
+
var delta = direction === DIRECTION_PREV ? -1 : 1;
|
|
285
403
|
var itemIndex = (activeIndex + delta) % this._items.length;
|
|
286
404
|
return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex];
|
|
287
405
|
};
|
|
@@ -289,34 +407,52 @@ var Carousel = function ($) {
|
|
|
289
407
|
_proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) {
|
|
290
408
|
var targetIndex = this._getItemIndex(relatedTarget);
|
|
291
409
|
|
|
292
|
-
var fromIndex = this._getItemIndex(
|
|
410
|
+
var fromIndex = this._getItemIndex(this._element.querySelector(SELECTOR_ACTIVE_ITEM));
|
|
293
411
|
|
|
294
|
-
var slideEvent =
|
|
412
|
+
var slideEvent = $__default["default"].Event(EVENT_SLIDE, {
|
|
295
413
|
relatedTarget: relatedTarget,
|
|
296
414
|
direction: eventDirectionName,
|
|
297
415
|
from: fromIndex,
|
|
298
416
|
to: targetIndex
|
|
299
417
|
});
|
|
300
|
-
$(this._element).trigger(slideEvent);
|
|
418
|
+
$__default["default"](this._element).trigger(slideEvent);
|
|
301
419
|
return slideEvent;
|
|
302
420
|
};
|
|
303
421
|
|
|
304
422
|
_proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) {
|
|
305
423
|
if (this._indicatorsElement) {
|
|
306
|
-
|
|
424
|
+
var indicators = [].slice.call(this._indicatorsElement.querySelectorAll(SELECTOR_ACTIVE));
|
|
425
|
+
$__default["default"](indicators).removeClass(CLASS_NAME_ACTIVE);
|
|
307
426
|
|
|
308
427
|
var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)];
|
|
309
428
|
|
|
310
429
|
if (nextIndicator) {
|
|
311
|
-
$(nextIndicator).addClass(
|
|
430
|
+
$__default["default"](nextIndicator).addClass(CLASS_NAME_ACTIVE);
|
|
312
431
|
}
|
|
313
432
|
}
|
|
314
433
|
};
|
|
315
434
|
|
|
435
|
+
_proto._updateInterval = function _updateInterval() {
|
|
436
|
+
var element = this._activeElement || this._element.querySelector(SELECTOR_ACTIVE_ITEM);
|
|
437
|
+
|
|
438
|
+
if (!element) {
|
|
439
|
+
return;
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
var elementInterval = parseInt(element.getAttribute('data-interval'), 10);
|
|
443
|
+
|
|
444
|
+
if (elementInterval) {
|
|
445
|
+
this._config.defaultInterval = this._config.defaultInterval || this._config.interval;
|
|
446
|
+
this._config.interval = elementInterval;
|
|
447
|
+
} else {
|
|
448
|
+
this._config.interval = this._config.defaultInterval || this._config.interval;
|
|
449
|
+
}
|
|
450
|
+
};
|
|
451
|
+
|
|
316
452
|
_proto._slide = function _slide(direction, element) {
|
|
317
|
-
var
|
|
453
|
+
var _this4 = this;
|
|
318
454
|
|
|
319
|
-
var activeElement =
|
|
455
|
+
var activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM);
|
|
320
456
|
|
|
321
457
|
var activeElementIndex = this._getItemIndex(activeElement);
|
|
322
458
|
|
|
@@ -329,17 +465,17 @@ var Carousel = function ($) {
|
|
|
329
465
|
var orderClassName;
|
|
330
466
|
var eventDirectionName;
|
|
331
467
|
|
|
332
|
-
if (direction ===
|
|
333
|
-
directionalClassName =
|
|
334
|
-
orderClassName =
|
|
335
|
-
eventDirectionName =
|
|
468
|
+
if (direction === DIRECTION_NEXT) {
|
|
469
|
+
directionalClassName = CLASS_NAME_LEFT;
|
|
470
|
+
orderClassName = CLASS_NAME_NEXT;
|
|
471
|
+
eventDirectionName = DIRECTION_LEFT;
|
|
336
472
|
} else {
|
|
337
|
-
directionalClassName =
|
|
338
|
-
orderClassName =
|
|
339
|
-
eventDirectionName =
|
|
473
|
+
directionalClassName = CLASS_NAME_RIGHT;
|
|
474
|
+
orderClassName = CLASS_NAME_PREV;
|
|
475
|
+
eventDirectionName = DIRECTION_RIGHT;
|
|
340
476
|
}
|
|
341
477
|
|
|
342
|
-
if (nextElement && $(nextElement).hasClass(
|
|
478
|
+
if (nextElement && $__default["default"](nextElement).hasClass(CLASS_NAME_ACTIVE)) {
|
|
343
479
|
this._isSliding = false;
|
|
344
480
|
return;
|
|
345
481
|
}
|
|
@@ -363,44 +499,46 @@ var Carousel = function ($) {
|
|
|
363
499
|
|
|
364
500
|
this._setActiveIndicatorElement(nextElement);
|
|
365
501
|
|
|
366
|
-
|
|
502
|
+
this._activeElement = nextElement;
|
|
503
|
+
var slidEvent = $__default["default"].Event(EVENT_SLID, {
|
|
367
504
|
relatedTarget: nextElement,
|
|
368
505
|
direction: eventDirectionName,
|
|
369
506
|
from: activeElementIndex,
|
|
370
507
|
to: nextElementIndex
|
|
371
508
|
});
|
|
372
509
|
|
|
373
|
-
if (
|
|
374
|
-
$(nextElement).addClass(orderClassName);
|
|
375
|
-
|
|
376
|
-
$(activeElement).addClass(directionalClassName);
|
|
377
|
-
$(nextElement).addClass(directionalClassName);
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
$(
|
|
381
|
-
|
|
510
|
+
if ($__default["default"](this._element).hasClass(CLASS_NAME_SLIDE)) {
|
|
511
|
+
$__default["default"](nextElement).addClass(orderClassName);
|
|
512
|
+
Util__default["default"].reflow(nextElement);
|
|
513
|
+
$__default["default"](activeElement).addClass(directionalClassName);
|
|
514
|
+
$__default["default"](nextElement).addClass(directionalClassName);
|
|
515
|
+
var transitionDuration = Util__default["default"].getTransitionDurationFromElement(activeElement);
|
|
516
|
+
$__default["default"](activeElement).one(Util__default["default"].TRANSITION_END, function () {
|
|
517
|
+
$__default["default"](nextElement).removeClass(directionalClassName + " " + orderClassName).addClass(CLASS_NAME_ACTIVE);
|
|
518
|
+
$__default["default"](activeElement).removeClass(CLASS_NAME_ACTIVE + " " + orderClassName + " " + directionalClassName);
|
|
519
|
+
_this4._isSliding = false;
|
|
382
520
|
setTimeout(function () {
|
|
383
|
-
return $(
|
|
521
|
+
return $__default["default"](_this4._element).trigger(slidEvent);
|
|
384
522
|
}, 0);
|
|
385
|
-
}).emulateTransitionEnd(
|
|
523
|
+
}).emulateTransitionEnd(transitionDuration);
|
|
386
524
|
} else {
|
|
387
|
-
$(activeElement).removeClass(
|
|
388
|
-
$(nextElement).addClass(
|
|
525
|
+
$__default["default"](activeElement).removeClass(CLASS_NAME_ACTIVE);
|
|
526
|
+
$__default["default"](nextElement).addClass(CLASS_NAME_ACTIVE);
|
|
389
527
|
this._isSliding = false;
|
|
390
|
-
$(this._element).trigger(slidEvent);
|
|
528
|
+
$__default["default"](this._element).trigger(slidEvent);
|
|
391
529
|
}
|
|
392
530
|
|
|
393
531
|
if (isCycling) {
|
|
394
532
|
this.cycle();
|
|
395
533
|
}
|
|
396
|
-
}
|
|
397
|
-
|
|
534
|
+
} // Static
|
|
535
|
+
;
|
|
398
536
|
|
|
399
537
|
Carousel._jQueryInterface = function _jQueryInterface(config) {
|
|
400
538
|
return this.each(function () {
|
|
401
|
-
var data = $(this).data(DATA_KEY);
|
|
539
|
+
var data = $__default["default"](this).data(DATA_KEY);
|
|
402
540
|
|
|
403
|
-
var _config = _extends({}, Default, $(this).data());
|
|
541
|
+
var _config = _extends({}, Default, $__default["default"](this).data());
|
|
404
542
|
|
|
405
543
|
if (typeof config === 'object') {
|
|
406
544
|
_config = _extends({}, _config, config);
|
|
@@ -410,7 +548,7 @@ var Carousel = function ($) {
|
|
|
410
548
|
|
|
411
549
|
if (!data) {
|
|
412
550
|
data = new Carousel(this, _config);
|
|
413
|
-
$(this).data(DATA_KEY, data);
|
|
551
|
+
$__default["default"](this).data(DATA_KEY, data);
|
|
414
552
|
}
|
|
415
553
|
|
|
416
554
|
if (typeof config === 'number') {
|
|
@@ -421,7 +559,7 @@ var Carousel = function ($) {
|
|
|
421
559
|
}
|
|
422
560
|
|
|
423
561
|
data[action]();
|
|
424
|
-
} else if (_config.interval) {
|
|
562
|
+
} else if (_config.interval && _config.ride) {
|
|
425
563
|
data.pause();
|
|
426
564
|
data.cycle();
|
|
427
565
|
}
|
|
@@ -429,19 +567,19 @@ var Carousel = function ($) {
|
|
|
429
567
|
};
|
|
430
568
|
|
|
431
569
|
Carousel._dataApiClickHandler = function _dataApiClickHandler(event) {
|
|
432
|
-
var selector =
|
|
570
|
+
var selector = Util__default["default"].getSelectorFromElement(this);
|
|
433
571
|
|
|
434
572
|
if (!selector) {
|
|
435
573
|
return;
|
|
436
574
|
}
|
|
437
575
|
|
|
438
|
-
var target = $(selector)[0];
|
|
576
|
+
var target = $__default["default"](selector)[0];
|
|
439
577
|
|
|
440
|
-
if (!target || !$(target).hasClass(
|
|
578
|
+
if (!target || !$__default["default"](target).hasClass(CLASS_NAME_CAROUSEL)) {
|
|
441
579
|
return;
|
|
442
580
|
}
|
|
443
581
|
|
|
444
|
-
var config = _extends({}, $(target).data(), $(this).data());
|
|
582
|
+
var config = _extends({}, $__default["default"](target).data(), $__default["default"](this).data());
|
|
445
583
|
|
|
446
584
|
var slideIndex = this.getAttribute('data-slide-to');
|
|
447
585
|
|
|
@@ -449,10 +587,10 @@ var Carousel = function ($) {
|
|
|
449
587
|
config.interval = false;
|
|
450
588
|
}
|
|
451
589
|
|
|
452
|
-
Carousel._jQueryInterface.call($(target), config);
|
|
590
|
+
Carousel._jQueryInterface.call($__default["default"](target), config);
|
|
453
591
|
|
|
454
592
|
if (slideIndex) {
|
|
455
|
-
$(target).data(DATA_KEY).to(slideIndex);
|
|
593
|
+
$__default["default"](target).data(DATA_KEY).to(slideIndex);
|
|
456
594
|
}
|
|
457
595
|
|
|
458
596
|
event.preventDefault();
|
|
@@ -473,33 +611,32 @@ var Carousel = function ($) {
|
|
|
473
611
|
return Carousel;
|
|
474
612
|
}();
|
|
475
613
|
/**
|
|
476
|
-
*
|
|
477
|
-
* Data Api implementation
|
|
478
|
-
* ------------------------------------------------------------------------
|
|
614
|
+
* Data API implementation
|
|
479
615
|
*/
|
|
480
616
|
|
|
481
617
|
|
|
482
|
-
$(document).on(
|
|
483
|
-
$(window).on(
|
|
484
|
-
|
|
485
|
-
|
|
618
|
+
$__default["default"](document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, Carousel._dataApiClickHandler);
|
|
619
|
+
$__default["default"](window).on(EVENT_LOAD_DATA_API, function () {
|
|
620
|
+
var carousels = [].slice.call(document.querySelectorAll(SELECTOR_DATA_RIDE));
|
|
621
|
+
|
|
622
|
+
for (var i = 0, len = carousels.length; i < len; i++) {
|
|
623
|
+
var $carousel = $__default["default"](carousels[i]);
|
|
486
624
|
|
|
487
625
|
Carousel._jQueryInterface.call($carousel, $carousel.data());
|
|
488
|
-
}
|
|
626
|
+
}
|
|
489
627
|
});
|
|
490
628
|
/**
|
|
491
|
-
* ------------------------------------------------------------------------
|
|
492
629
|
* jQuery
|
|
493
|
-
* ------------------------------------------------------------------------
|
|
494
630
|
*/
|
|
495
631
|
|
|
496
|
-
|
|
497
|
-
|
|
632
|
+
$__default["default"].fn[NAME] = Carousel._jQueryInterface;
|
|
633
|
+
$__default["default"].fn[NAME].Constructor = Carousel;
|
|
498
634
|
|
|
499
|
-
|
|
500
|
-
|
|
635
|
+
$__default["default"].fn[NAME].noConflict = function () {
|
|
636
|
+
$__default["default"].fn[NAME] = JQUERY_NO_CONFLICT;
|
|
501
637
|
return Carousel._jQueryInterface;
|
|
502
638
|
};
|
|
503
639
|
|
|
504
640
|
return Carousel;
|
|
505
|
-
|
|
641
|
+
|
|
642
|
+
}));
|