bootstrap 4.0.0.beta3 → 4.6.2

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.
Files changed (114) hide show
  1. checksums.yaml +5 -5
  2. data/.travis.yml +15 -1
  3. data/CHANGELOG.md +2 -2
  4. data/README.md +2 -2
  5. data/Rakefile +4 -2
  6. data/assets/javascripts/bootstrap/alert.js +79 -68
  7. data/assets/javascripts/bootstrap/button.js +140 -78
  8. data/assets/javascripts/bootstrap/carousel.js +294 -158
  9. data/assets/javascripts/bootstrap/collapse.js +157 -133
  10. data/assets/javascripts/bootstrap/dropdown.js +257 -167
  11. data/assets/javascripts/bootstrap/modal.js +285 -204
  12. data/assets/javascripts/bootstrap/popover.js +101 -60
  13. data/assets/javascripts/bootstrap/scrollspy.js +127 -106
  14. data/assets/javascripts/bootstrap/tab.js +113 -101
  15. data/assets/javascripts/bootstrap/toast.js +267 -0
  16. data/assets/javascripts/bootstrap/tooltip.js +406 -188
  17. data/assets/javascripts/bootstrap/util.js +106 -55
  18. data/assets/javascripts/bootstrap-sprockets.js +1 -0
  19. data/assets/javascripts/bootstrap.js +1946 -1482
  20. data/assets/javascripts/bootstrap.min.js +4 -4
  21. data/assets/stylesheets/_bootstrap-grid.scss +7 -12
  22. data/assets/stylesheets/_bootstrap-reboot.scss +4 -4
  23. data/assets/stylesheets/_bootstrap.scss +6 -4
  24. data/assets/stylesheets/bootstrap/_alert.scss +3 -2
  25. data/assets/stylesheets/bootstrap/_badge.scss +8 -1
  26. data/assets/stylesheets/bootstrap/_breadcrumb.scss +10 -6
  27. data/assets/stylesheets/bootstrap/_button-group.scss +17 -20
  28. data/assets/stylesheets/bootstrap/_buttons.scss +23 -28
  29. data/assets/stylesheets/bootstrap/_card.scss +77 -61
  30. data/assets/stylesheets/bootstrap/_carousel.scss +72 -63
  31. data/assets/stylesheets/bootstrap/_close.scss +15 -9
  32. data/assets/stylesheets/bootstrap/_code.scss +6 -14
  33. data/assets/stylesheets/bootstrap/_custom-forms.scss +287 -43
  34. data/assets/stylesheets/bootstrap/_dropdown.scss +70 -9
  35. data/assets/stylesheets/bootstrap/_forms.scss +56 -42
  36. data/assets/stylesheets/bootstrap/_functions.scss +117 -13
  37. data/assets/stylesheets/bootstrap/_grid.scss +32 -11
  38. data/assets/stylesheets/bootstrap/_images.scss +4 -4
  39. data/assets/stylesheets/bootstrap/_input-group.scss +80 -25
  40. data/assets/stylesheets/bootstrap/_jumbotron.scss +2 -1
  41. data/assets/stylesheets/bootstrap/_list-group.scss +63 -24
  42. data/assets/stylesheets/bootstrap/_mixins.scss +9 -4
  43. data/assets/stylesheets/bootstrap/_modal.scss +96 -24
  44. data/assets/stylesheets/bootstrap/_nav.scss +14 -7
  45. data/assets/stylesheets/bootstrap/_navbar.scss +66 -45
  46. data/assets/stylesheets/bootstrap/_pagination.scss +10 -8
  47. data/assets/stylesheets/bootstrap/_popover.scss +56 -69
  48. data/assets/stylesheets/bootstrap/_print.scss +41 -19
  49. data/assets/stylesheets/bootstrap/_progress.scss +20 -6
  50. data/assets/stylesheets/bootstrap/_reboot.scss +88 -109
  51. data/assets/stylesheets/bootstrap/_spinners.scss +65 -0
  52. data/assets/stylesheets/bootstrap/_tables.scss +19 -14
  53. data/assets/stylesheets/bootstrap/_toasts.scss +46 -0
  54. data/assets/stylesheets/bootstrap/_tooltip.scss +6 -6
  55. data/assets/stylesheets/bootstrap/_transitions.scss +10 -20
  56. data/assets/stylesheets/bootstrap/_type.scss +19 -19
  57. data/assets/stylesheets/bootstrap/_utilities.scss +4 -0
  58. data/assets/stylesheets/bootstrap/_variables.scss +492 -215
  59. data/assets/stylesheets/bootstrap/mixins/_background-variant.scss +5 -3
  60. data/assets/stylesheets/bootstrap/mixins/_badge.scss +8 -3
  61. data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +51 -10
  62. data/assets/stylesheets/bootstrap/mixins/_box-shadow.scss +16 -1
  63. data/assets/stylesheets/bootstrap/mixins/_breakpoints.scss +11 -9
  64. data/assets/stylesheets/bootstrap/mixins/_buttons.scss +35 -26
  65. data/assets/stylesheets/bootstrap/mixins/_caret.scss +13 -16
  66. data/assets/stylesheets/bootstrap/mixins/_deprecate.scss +10 -0
  67. data/assets/stylesheets/bootstrap/mixins/_float.scss +6 -3
  68. data/assets/stylesheets/bootstrap/mixins/_forms.scss +102 -40
  69. data/assets/stylesheets/bootstrap/mixins/_gradients.scss +7 -7
  70. data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +36 -25
  71. data/assets/stylesheets/bootstrap/mixins/_grid.scss +34 -17
  72. data/assets/stylesheets/bootstrap/mixins/_hover.scss +27 -51
  73. data/assets/stylesheets/bootstrap/mixins/_image.scss +4 -4
  74. data/assets/stylesheets/bootstrap/mixins/_list-group.scss +10 -13
  75. data/assets/stylesheets/bootstrap/mixins/_lists.scss +1 -1
  76. data/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +3 -2
  77. data/assets/stylesheets/bootstrap/mixins/_pagination.scss +1 -1
  78. data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +3 -3
  79. data/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +5 -6
  80. data/assets/stylesheets/bootstrap/mixins/_size.scss +1 -0
  81. data/assets/stylesheets/bootstrap/mixins/_table-row.scss +11 -2
  82. data/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +7 -4
  83. data/assets/stylesheets/bootstrap/mixins/_text-hide.scss +3 -1
  84. data/assets/stylesheets/bootstrap/mixins/_transition.scss +20 -3
  85. data/assets/stylesheets/bootstrap/mixins/_visibility.scss +1 -0
  86. data/assets/stylesheets/bootstrap/utilities/_background.scss +2 -2
  87. data/assets/stylesheets/bootstrap/utilities/_borders.scss +23 -2
  88. data/assets/stylesheets/bootstrap/utilities/_display.scss +6 -36
  89. data/assets/stylesheets/bootstrap/utilities/_embed.scss +7 -20
  90. data/assets/stylesheets/bootstrap/utilities/_flex.scss +5 -0
  91. data/assets/stylesheets/bootstrap/utilities/_float.scss +5 -3
  92. data/assets/stylesheets/bootstrap/utilities/_interactions.scss +5 -0
  93. data/assets/stylesheets/bootstrap/utilities/_overflow.scss +5 -0
  94. data/assets/stylesheets/bootstrap/utilities/_position.scss +0 -4
  95. data/assets/stylesheets/bootstrap/utilities/_shadows.scss +6 -0
  96. data/assets/stylesheets/bootstrap/utilities/_sizing.scss +8 -0
  97. data/assets/stylesheets/bootstrap/utilities/_spacing.scss +23 -1
  98. data/assets/stylesheets/bootstrap/utilities/_stretched-link.scss +19 -0
  99. data/assets/stylesheets/bootstrap/utilities/_text.scss +28 -8
  100. data/assets/stylesheets/bootstrap/utilities/_visibility.scss +4 -2
  101. data/assets/stylesheets/bootstrap/vendor/_rfs.scss +228 -0
  102. data/bootstrap.gemspec +7 -4
  103. data/lib/bootstrap/engine.rb +3 -0
  104. data/lib/bootstrap/version.rb +4 -2
  105. data/lib/bootstrap.rb +10 -7
  106. data/tasks/updater/js.rb +18 -6
  107. data/tasks/updater/network.rb +8 -2
  108. data/test/dummy_rails/app/assets/config/manifest.js +3 -0
  109. data/test/dummy_rails/app/assets/stylesheets/.browserslistrc +1 -0
  110. data/test/gemfiles/rails_6_0.gemfile +7 -0
  111. data/test/support/dummy_rails_integration.rb +3 -1
  112. data/test/test_helper.rb +21 -15
  113. metadata +29 -16
  114. data/assets/stylesheets/bootstrap/mixins/_navbar-align.scss +0 -10
@@ -1,93 +1,130 @@
1
- function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
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 _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
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
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
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-beta.3): 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.0.0-beta.3';
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 = $.fn[NAME];
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 ClassName = {
63
- CAROUSEL: 'carousel',
64
- ACTIVE: 'active',
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,34 +132,39 @@ 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 = $(element)[0];
100
- this._indicatorsElement = $(this._element).find(Selector.INDICATORS)[0];
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
- } // getters
144
+ } // Getters
104
145
 
105
146
 
106
147
  var _proto = Carousel.prototype;
107
148
 
108
- // public
149
+ // Public
109
150
  _proto.next = function next() {
110
151
  if (!this._isSliding) {
111
- this._slide(Direction.NEXT);
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
- if (!document.hidden && $(this._element).is(':visible') && $(this._element).css('visibility') !== 'hidden') {
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(Direction.PREV);
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 ($(this._element).find(Selector.NEXT_PREV)[0] && Util.supportsTransitionEnd()) {
135
- Util.triggerTransitionEnd(this._element);
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 = $(this._element).find(Selector.ACTIVE_ITEM)[0];
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(Event.SLID, function () {
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 ? Direction.NEXT : Direction.PREV;
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
- $.removeData(this._element, DATA_KEY);
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,51 +239,127 @@ var Carousel = function ($) {
195
239
  this._isSliding = null;
196
240
  this._activeElement = null;
197
241
  this._indicatorsElement = null;
198
- }; // private
199
-
242
+ } // Private
243
+ ;
200
244
 
201
245
  _proto._getConfig = function _getConfig(config) {
202
246
  config = _extends({}, Default, config);
203
- Util.typeCheckConfig(NAME, config, DefaultType);
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(Event.KEYDOWN, function (event) {
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(Event.MOUSEENTER, function (event) {
281
+ $__default["default"](this._element).on(EVENT_MOUSEENTER, function (event) {
218
282
  return _this2.pause(event);
219
- }).on(Event.MOUSELEAVE, function (event) {
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
- if ('ontouchstart' in document.documentElement) {
224
- // if it's a touch-enabled device, mouseenter/leave are fired as
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') {
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;
227
324
  // here, we listen for touchend, explicitly pause the carousel
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
- $(this._element).on(Event.TOUCHEND, function () {
232
- _this2.pause();
328
+ _this3.pause();
233
329
 
234
- if (_this2.touchTimeout) {
235
- clearTimeout(_this2.touchTimeout);
236
- }
330
+ if (_this3.touchTimeout) {
331
+ clearTimeout(_this3.touchTimeout);
332
+ }
237
333
 
238
- _this2.touchTimeout = setTimeout(function (event) {
239
- return _this2.cycle(event);
240
- }, TOUCHEVENT_COMPAT_WAIT + _this2._config.interval);
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,20 +378,17 @@ var Carousel = function ($) {
258
378
  event.preventDefault();
259
379
  this.next();
260
380
  break;
261
-
262
- default:
263
- return;
264
381
  }
265
382
  };
266
383
 
267
384
  _proto._getItemIndex = function _getItemIndex(element) {
268
- this._items = $.makeArray($(element).parent().find(Selector.ITEM));
385
+ this._items = element && element.parentNode ? [].slice.call(element.parentNode.querySelectorAll(SELECTOR_ITEM)) : [];
269
386
  return this._items.indexOf(element);
270
387
  };
271
388
 
272
389
  _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) {
273
- var isNextDirection = direction === Direction.NEXT;
274
- var isPrevDirection = direction === Direction.PREV;
390
+ var isNextDirection = direction === DIRECTION_NEXT;
391
+ var isPrevDirection = direction === DIRECTION_PREV;
275
392
 
276
393
  var activeIndex = this._getItemIndex(activeElement);
277
394
 
@@ -282,7 +399,7 @@ var Carousel = function ($) {
282
399
  return activeElement;
283
400
  }
284
401
 
285
- var delta = direction === Direction.PREV ? -1 : 1;
402
+ var delta = direction === DIRECTION_PREV ? -1 : 1;
286
403
  var itemIndex = (activeIndex + delta) % this._items.length;
287
404
  return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex];
288
405
  };
@@ -290,34 +407,52 @@ var Carousel = function ($) {
290
407
  _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) {
291
408
  var targetIndex = this._getItemIndex(relatedTarget);
292
409
 
293
- var fromIndex = this._getItemIndex($(this._element).find(Selector.ACTIVE_ITEM)[0]);
410
+ var fromIndex = this._getItemIndex(this._element.querySelector(SELECTOR_ACTIVE_ITEM));
294
411
 
295
- var slideEvent = $.Event(Event.SLIDE, {
412
+ var slideEvent = $__default["default"].Event(EVENT_SLIDE, {
296
413
  relatedTarget: relatedTarget,
297
414
  direction: eventDirectionName,
298
415
  from: fromIndex,
299
416
  to: targetIndex
300
417
  });
301
- $(this._element).trigger(slideEvent);
418
+ $__default["default"](this._element).trigger(slideEvent);
302
419
  return slideEvent;
303
420
  };
304
421
 
305
422
  _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) {
306
423
  if (this._indicatorsElement) {
307
- $(this._indicatorsElement).find(Selector.ACTIVE).removeClass(ClassName.ACTIVE);
424
+ var indicators = [].slice.call(this._indicatorsElement.querySelectorAll(SELECTOR_ACTIVE));
425
+ $__default["default"](indicators).removeClass(CLASS_NAME_ACTIVE);
308
426
 
309
427
  var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)];
310
428
 
311
429
  if (nextIndicator) {
312
- $(nextIndicator).addClass(ClassName.ACTIVE);
430
+ $__default["default"](nextIndicator).addClass(CLASS_NAME_ACTIVE);
313
431
  }
314
432
  }
315
433
  };
316
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
+
317
452
  _proto._slide = function _slide(direction, element) {
318
- var _this3 = this;
453
+ var _this4 = this;
319
454
 
320
- var activeElement = $(this._element).find(Selector.ACTIVE_ITEM)[0];
455
+ var activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM);
321
456
 
322
457
  var activeElementIndex = this._getItemIndex(activeElement);
323
458
 
@@ -330,17 +465,17 @@ var Carousel = function ($) {
330
465
  var orderClassName;
331
466
  var eventDirectionName;
332
467
 
333
- if (direction === Direction.NEXT) {
334
- directionalClassName = ClassName.LEFT;
335
- orderClassName = ClassName.NEXT;
336
- eventDirectionName = Direction.LEFT;
468
+ if (direction === DIRECTION_NEXT) {
469
+ directionalClassName = CLASS_NAME_LEFT;
470
+ orderClassName = CLASS_NAME_NEXT;
471
+ eventDirectionName = DIRECTION_LEFT;
337
472
  } else {
338
- directionalClassName = ClassName.RIGHT;
339
- orderClassName = ClassName.PREV;
340
- eventDirectionName = Direction.RIGHT;
473
+ directionalClassName = CLASS_NAME_RIGHT;
474
+ orderClassName = CLASS_NAME_PREV;
475
+ eventDirectionName = DIRECTION_RIGHT;
341
476
  }
342
477
 
343
- if (nextElement && $(nextElement).hasClass(ClassName.ACTIVE)) {
478
+ if (nextElement && $__default["default"](nextElement).hasClass(CLASS_NAME_ACTIVE)) {
344
479
  this._isSliding = false;
345
480
  return;
346
481
  }
@@ -352,7 +487,7 @@ var Carousel = function ($) {
352
487
  }
353
488
 
354
489
  if (!activeElement || !nextElement) {
355
- // some weirdness is happening, so we bail
490
+ // Some weirdness is happening, so we bail
356
491
  return;
357
492
  }
358
493
 
@@ -364,44 +499,46 @@ var Carousel = function ($) {
364
499
 
365
500
  this._setActiveIndicatorElement(nextElement);
366
501
 
367
- var slidEvent = $.Event(Event.SLID, {
502
+ this._activeElement = nextElement;
503
+ var slidEvent = $__default["default"].Event(EVENT_SLID, {
368
504
  relatedTarget: nextElement,
369
505
  direction: eventDirectionName,
370
506
  from: activeElementIndex,
371
507
  to: nextElementIndex
372
508
  });
373
509
 
374
- if (Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.SLIDE)) {
375
- $(nextElement).addClass(orderClassName);
376
- Util.reflow(nextElement);
377
- $(activeElement).addClass(directionalClassName);
378
- $(nextElement).addClass(directionalClassName);
379
- $(activeElement).one(Util.TRANSITION_END, function () {
380
- $(nextElement).removeClass(directionalClassName + " " + orderClassName).addClass(ClassName.ACTIVE);
381
- $(activeElement).removeClass(ClassName.ACTIVE + " " + orderClassName + " " + directionalClassName);
382
- _this3._isSliding = false;
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;
383
520
  setTimeout(function () {
384
- return $(_this3._element).trigger(slidEvent);
521
+ return $__default["default"](_this4._element).trigger(slidEvent);
385
522
  }, 0);
386
- }).emulateTransitionEnd(TRANSITION_DURATION);
523
+ }).emulateTransitionEnd(transitionDuration);
387
524
  } else {
388
- $(activeElement).removeClass(ClassName.ACTIVE);
389
- $(nextElement).addClass(ClassName.ACTIVE);
525
+ $__default["default"](activeElement).removeClass(CLASS_NAME_ACTIVE);
526
+ $__default["default"](nextElement).addClass(CLASS_NAME_ACTIVE);
390
527
  this._isSliding = false;
391
- $(this._element).trigger(slidEvent);
528
+ $__default["default"](this._element).trigger(slidEvent);
392
529
  }
393
530
 
394
531
  if (isCycling) {
395
532
  this.cycle();
396
533
  }
397
- }; // static
398
-
534
+ } // Static
535
+ ;
399
536
 
400
537
  Carousel._jQueryInterface = function _jQueryInterface(config) {
401
538
  return this.each(function () {
402
- var data = $(this).data(DATA_KEY);
539
+ var data = $__default["default"](this).data(DATA_KEY);
403
540
 
404
- var _config = _extends({}, Default, $(this).data());
541
+ var _config = _extends({}, Default, $__default["default"](this).data());
405
542
 
406
543
  if (typeof config === 'object') {
407
544
  _config = _extends({}, _config, config);
@@ -411,18 +548,18 @@ var Carousel = function ($) {
411
548
 
412
549
  if (!data) {
413
550
  data = new Carousel(this, _config);
414
- $(this).data(DATA_KEY, data);
551
+ $__default["default"](this).data(DATA_KEY, data);
415
552
  }
416
553
 
417
554
  if (typeof config === 'number') {
418
555
  data.to(config);
419
556
  } else if (typeof action === 'string') {
420
557
  if (typeof data[action] === 'undefined') {
421
- throw new Error("No method named \"" + action + "\"");
558
+ throw new TypeError("No method named \"" + action + "\"");
422
559
  }
423
560
 
424
561
  data[action]();
425
- } else if (_config.interval) {
562
+ } else if (_config.interval && _config.ride) {
426
563
  data.pause();
427
564
  data.cycle();
428
565
  }
@@ -430,19 +567,19 @@ var Carousel = function ($) {
430
567
  };
431
568
 
432
569
  Carousel._dataApiClickHandler = function _dataApiClickHandler(event) {
433
- var selector = Util.getSelectorFromElement(this);
570
+ var selector = Util__default["default"].getSelectorFromElement(this);
434
571
 
435
572
  if (!selector) {
436
573
  return;
437
574
  }
438
575
 
439
- var target = $(selector)[0];
576
+ var target = $__default["default"](selector)[0];
440
577
 
441
- if (!target || !$(target).hasClass(ClassName.CAROUSEL)) {
578
+ if (!target || !$__default["default"](target).hasClass(CLASS_NAME_CAROUSEL)) {
442
579
  return;
443
580
  }
444
581
 
445
- var config = _extends({}, $(target).data(), $(this).data());
582
+ var config = _extends({}, $__default["default"](target).data(), $__default["default"](this).data());
446
583
 
447
584
  var slideIndex = this.getAttribute('data-slide-to');
448
585
 
@@ -450,10 +587,10 @@ var Carousel = function ($) {
450
587
  config.interval = false;
451
588
  }
452
589
 
453
- Carousel._jQueryInterface.call($(target), config);
590
+ Carousel._jQueryInterface.call($__default["default"](target), config);
454
591
 
455
592
  if (slideIndex) {
456
- $(target).data(DATA_KEY).to(slideIndex);
593
+ $__default["default"](target).data(DATA_KEY).to(slideIndex);
457
594
  }
458
595
 
459
596
  event.preventDefault();
@@ -474,33 +611,32 @@ var Carousel = function ($) {
474
611
  return Carousel;
475
612
  }();
476
613
  /**
477
- * ------------------------------------------------------------------------
478
- * Data Api implementation
479
- * ------------------------------------------------------------------------
614
+ * Data API implementation
480
615
  */
481
616
 
482
617
 
483
- $(document).on(Event.CLICK_DATA_API, Selector.DATA_SLIDE, Carousel._dataApiClickHandler);
484
- $(window).on(Event.LOAD_DATA_API, function () {
485
- $(Selector.DATA_RIDE).each(function () {
486
- var $carousel = $(this);
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]);
487
624
 
488
625
  Carousel._jQueryInterface.call($carousel, $carousel.data());
489
- });
626
+ }
490
627
  });
491
628
  /**
492
- * ------------------------------------------------------------------------
493
629
  * jQuery
494
- * ------------------------------------------------------------------------
495
630
  */
496
631
 
497
- $.fn[NAME] = Carousel._jQueryInterface;
498
- $.fn[NAME].Constructor = Carousel;
632
+ $__default["default"].fn[NAME] = Carousel._jQueryInterface;
633
+ $__default["default"].fn[NAME].Constructor = Carousel;
499
634
 
500
- $.fn[NAME].noConflict = function () {
501
- $.fn[NAME] = JQUERY_NO_CONFLICT;
635
+ $__default["default"].fn[NAME].noConflict = function () {
636
+ $__default["default"].fn[NAME] = JQUERY_NO_CONFLICT;
502
637
  return Carousel._jQueryInterface;
503
638
  };
504
639
 
505
640
  return Carousel;
506
- }($);
641
+
642
+ }));