bootstrap 4.5.3 → 5.2.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 +4 -4
- data/.github/workflows/ci.yml +55 -0
- data/README.md +28 -5
- data/assets/javascripts/bootstrap/alert.js +54 -133
- data/assets/javascripts/bootstrap/base-component.js +99 -0
- data/assets/javascripts/bootstrap/button.js +44 -183
- data/assets/javascripts/bootstrap/carousel.js +308 -450
- data/assets/javascripts/bootstrap/collapse.js +180 -243
- data/assets/javascripts/bootstrap/dom/data.js +66 -0
- data/assets/javascripts/bootstrap/dom/event-handler.js +283 -0
- data/assets/javascripts/bootstrap/dom/manipulator.js +84 -0
- data/assets/javascripts/bootstrap/dom/selector-engine.js +85 -0
- data/assets/javascripts/bootstrap/dropdown.js +320 -387
- data/assets/javascripts/bootstrap/modal.js +238 -478
- data/assets/javascripts/bootstrap/offcanvas.js +297 -0
- data/assets/javascripts/bootstrap/popover.js +58 -163
- data/assets/javascripts/bootstrap/scrollspy.js +223 -228
- data/assets/javascripts/bootstrap/tab.js +251 -166
- data/assets/javascripts/bootstrap/toast.js +147 -149
- data/assets/javascripts/bootstrap/tooltip.js +434 -646
- data/assets/javascripts/bootstrap/util/backdrop.js +165 -0
- data/assets/javascripts/bootstrap/util/component-functions.js +46 -0
- data/assets/javascripts/bootstrap/util/config.js +79 -0
- data/assets/javascripts/bootstrap/util/focustrap.js +129 -0
- data/assets/javascripts/bootstrap/util/index.js +350 -0
- data/assets/javascripts/bootstrap/util/sanitizer.js +122 -0
- data/assets/javascripts/bootstrap/util/scrollbar.js +138 -0
- data/assets/javascripts/bootstrap/util/swipe.js +155 -0
- data/assets/javascripts/bootstrap/util/template-factory.js +177 -0
- data/assets/javascripts/bootstrap-global-this-define.js +6 -0
- data/assets/javascripts/bootstrap-global-this-undefine.js +2 -0
- data/assets/javascripts/bootstrap-sprockets.js +24 -8
- data/assets/javascripts/bootstrap.js +4037 -3206
- data/assets/javascripts/bootstrap.min.js +3 -3
- data/assets/stylesheets/_bootstrap-grid.scss +56 -21
- data/assets/stylesheets/_bootstrap-reboot.scss +4 -7
- data/assets/stylesheets/_bootstrap.scss +20 -13
- data/assets/stylesheets/bootstrap/_accordion.scss +149 -0
- data/assets/stylesheets/bootstrap/_alert.scss +33 -14
- data/assets/stylesheets/bootstrap/_badge.scss +15 -31
- data/assets/stylesheets/bootstrap/_breadcrumb.scss +23 -27
- data/assets/stylesheets/bootstrap/_button-group.scss +25 -46
- data/assets/stylesheets/bootstrap/_buttons.scss +136 -71
- data/assets/stylesheets/bootstrap/_card.scss +61 -113
- data/assets/stylesheets/bootstrap/_carousel.scss +64 -35
- data/assets/stylesheets/bootstrap/_close.scss +30 -30
- data/assets/stylesheets/bootstrap/_containers.scss +41 -0
- data/assets/stylesheets/bootstrap/_dropdown.scss +128 -71
- data/assets/stylesheets/bootstrap/_forms.scss +9 -347
- data/assets/stylesheets/bootstrap/_functions.scss +181 -23
- data/assets/stylesheets/bootstrap/_grid.scss +13 -53
- data/assets/stylesheets/bootstrap/_helpers.scss +10 -0
- data/assets/stylesheets/bootstrap/_images.scss +1 -1
- data/assets/stylesheets/bootstrap/_list-group.scss +72 -34
- data/assets/stylesheets/bootstrap/_maps.scss +54 -0
- data/assets/stylesheets/bootstrap/_mixins.scss +9 -13
- data/assets/stylesheets/bootstrap/_modal.scss +107 -110
- data/assets/stylesheets/bootstrap/_nav.scss +72 -23
- data/assets/stylesheets/bootstrap/_navbar.scss +127 -173
- data/assets/stylesheets/bootstrap/_offcanvas.scss +144 -0
- data/assets/stylesheets/bootstrap/_pagination.scss +72 -37
- data/assets/stylesheets/bootstrap/_placeholders.scss +51 -0
- data/assets/stylesheets/bootstrap/_popover.scss +99 -73
- data/assets/stylesheets/bootstrap/_progress.scss +26 -14
- data/assets/stylesheets/bootstrap/_reboot.scss +326 -200
- data/assets/stylesheets/bootstrap/_root.scss +62 -9
- data/assets/stylesheets/bootstrap/_spinners.scss +51 -22
- data/assets/stylesheets/bootstrap/_tables.scss +94 -115
- data/assets/stylesheets/bootstrap/_toasts.scss +54 -27
- data/assets/stylesheets/bootstrap/_tooltip.scss +68 -63
- data/assets/stylesheets/bootstrap/_transitions.scss +8 -1
- data/assets/stylesheets/bootstrap/_type.scss +40 -59
- data/assets/stylesheets/bootstrap/_utilities.scss +647 -18
- data/assets/stylesheets/bootstrap/_variables.scss +1018 -526
- data/assets/stylesheets/bootstrap/bootstrap-utilities.scss +18 -0
- data/assets/stylesheets/bootstrap/forms/_floating-labels.scss +75 -0
- data/assets/stylesheets/bootstrap/forms/_form-check.scss +175 -0
- data/assets/stylesheets/bootstrap/forms/_form-control.scss +194 -0
- data/assets/stylesheets/bootstrap/forms/_form-range.scss +91 -0
- data/assets/stylesheets/bootstrap/forms/_form-select.scss +71 -0
- data/assets/stylesheets/bootstrap/forms/_form-text.scss +11 -0
- data/assets/stylesheets/bootstrap/forms/_input-group.scss +132 -0
- data/assets/stylesheets/bootstrap/forms/_labels.scss +36 -0
- data/assets/stylesheets/bootstrap/forms/_validation.scss +12 -0
- data/assets/stylesheets/bootstrap/helpers/_color-bg.scss +10 -0
- data/assets/stylesheets/bootstrap/helpers/_colored-links.scss +12 -0
- data/assets/stylesheets/bootstrap/helpers/_position.scss +36 -0
- data/assets/stylesheets/bootstrap/helpers/_ratio.scss +26 -0
- data/assets/stylesheets/bootstrap/helpers/_stacks.scss +15 -0
- data/assets/stylesheets/bootstrap/helpers/_stretched-link.scss +15 -0
- data/assets/stylesheets/bootstrap/helpers/_text-truncation.scss +7 -0
- data/assets/stylesheets/bootstrap/helpers/_visually-hidden.scss +8 -0
- data/assets/stylesheets/bootstrap/helpers/_vr.scss +8 -0
- data/assets/stylesheets/bootstrap/mixins/_alert.scss +8 -6
- data/assets/stylesheets/bootstrap/mixins/_backdrop.scss +14 -0
- data/assets/stylesheets/bootstrap/mixins/_banner.scss +9 -0
- data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +10 -8
- data/assets/stylesheets/bootstrap/mixins/_box-shadow.scss +7 -9
- data/assets/stylesheets/bootstrap/mixins/_breakpoints.scss +20 -16
- data/assets/stylesheets/bootstrap/mixins/_buttons.scss +60 -100
- data/assets/stylesheets/bootstrap/mixins/_caret.scss +10 -8
- data/assets/stylesheets/bootstrap/mixins/_clearfix.scss +2 -0
- data/assets/stylesheets/bootstrap/mixins/_color-scheme.scss +7 -0
- data/assets/stylesheets/bootstrap/mixins/_container.scss +11 -0
- data/assets/stylesheets/bootstrap/mixins/_forms.scss +48 -74
- data/assets/stylesheets/bootstrap/mixins/_gradients.scss +13 -11
- data/assets/stylesheets/bootstrap/mixins/_grid.scss +119 -37
- data/assets/stylesheets/bootstrap/mixins/_image.scss +1 -21
- data/assets/stylesheets/bootstrap/mixins/_list-group.scss +5 -2
- data/assets/stylesheets/bootstrap/mixins/_lists.scss +1 -1
- data/assets/stylesheets/bootstrap/mixins/_pagination.scss +7 -19
- data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +3 -3
- data/assets/stylesheets/bootstrap/mixins/_table-variants.scss +24 -0
- data/assets/stylesheets/bootstrap/mixins/_transition.scss +1 -1
- data/assets/stylesheets/bootstrap/mixins/_utilities.scss +97 -0
- data/assets/stylesheets/bootstrap/mixins/_visually-hidden.scss +29 -0
- data/assets/stylesheets/bootstrap/utilities/_api.scss +47 -0
- data/assets/stylesheets/bootstrap/vendor/_rfs.scss +278 -128
- data/bootstrap.gemspec +3 -5
- data/lib/bootstrap/version.rb +2 -2
- data/tasks/updater/js.rb +31 -7
- data/tasks/updater/network.rb +9 -3
- data/tasks/updater.rb +2 -2
- data/test/dummy_rails/app/assets/javascripts/application.js +4 -3
- data/test/dummy_rails/app/views/layouts/application.html.erb +3 -1
- data/test/dummy_rails/app/views/pages/root.html +89 -0
- data/test/dummy_rails/config/application.rb +0 -3
- data/test/gemfiles/rails_5_2.gemfile +8 -0
- data/test/gemfiles/rails_6_1.gemfile +7 -0
- data/test/gemfiles/rails_7_0.gemfile +7 -0
- data/test/test_helper.rb +3 -2
- metadata +70 -78
- data/.travis.yml +0 -31
- data/assets/javascripts/bootstrap/util.js +0 -192
- data/assets/stylesheets/bootstrap/_code.scss +0 -48
- data/assets/stylesheets/bootstrap/_custom-forms.scss +0 -524
- data/assets/stylesheets/bootstrap/_input-group.scss +0 -192
- data/assets/stylesheets/bootstrap/_jumbotron.scss +0 -17
- data/assets/stylesheets/bootstrap/_media.scss +0 -8
- data/assets/stylesheets/bootstrap/_print.scss +0 -141
- data/assets/stylesheets/bootstrap/mixins/_background-variant.scss +0 -23
- data/assets/stylesheets/bootstrap/mixins/_badge.scss +0 -17
- data/assets/stylesheets/bootstrap/mixins/_float.scss +0 -14
- data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +0 -80
- data/assets/stylesheets/bootstrap/mixins/_hover.scss +0 -37
- data/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +0 -11
- data/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +0 -34
- data/assets/stylesheets/bootstrap/mixins/_size.scss +0 -7
- data/assets/stylesheets/bootstrap/mixins/_table-row.scss +0 -39
- data/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +0 -17
- data/assets/stylesheets/bootstrap/mixins/_text-hide.scss +0 -11
- data/assets/stylesheets/bootstrap/mixins/_visibility.scss +0 -8
- data/assets/stylesheets/bootstrap/utilities/_align.scss +0 -8
- data/assets/stylesheets/bootstrap/utilities/_background.scss +0 -19
- data/assets/stylesheets/bootstrap/utilities/_borders.scss +0 -75
- data/assets/stylesheets/bootstrap/utilities/_display.scss +0 -26
- data/assets/stylesheets/bootstrap/utilities/_embed.scss +0 -39
- data/assets/stylesheets/bootstrap/utilities/_flex.scss +0 -51
- data/assets/stylesheets/bootstrap/utilities/_float.scss +0 -11
- data/assets/stylesheets/bootstrap/utilities/_interactions.scss +0 -5
- data/assets/stylesheets/bootstrap/utilities/_overflow.scss +0 -5
- data/assets/stylesheets/bootstrap/utilities/_position.scss +0 -32
- data/assets/stylesheets/bootstrap/utilities/_screenreaders.scss +0 -11
- data/assets/stylesheets/bootstrap/utilities/_shadows.scss +0 -6
- data/assets/stylesheets/bootstrap/utilities/_sizing.scss +0 -20
- data/assets/stylesheets/bootstrap/utilities/_spacing.scss +0 -73
- data/assets/stylesheets/bootstrap/utilities/_stretched-link.scss +0 -19
- data/assets/stylesheets/bootstrap/utilities/_text.scss +0 -72
- data/assets/stylesheets/bootstrap/utilities/_visibility.scss +0 -13
- data/test/dummy_rails/app/views/pages/root.html.slim +0 -58
- /data/assets/stylesheets/bootstrap/{utilities → helpers}/_clearfix.scss +0 -0
|
@@ -1,612 +1,470 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Bootstrap carousel.js
|
|
3
|
-
* Copyright 2011-
|
|
2
|
+
* Bootstrap carousel.js v5.2.3 (https://getbootstrap.com/)
|
|
3
|
+
* Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
|
4
4
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
5
5
|
*/
|
|
6
6
|
(function (global, factory) {
|
|
7
|
-
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('
|
|
8
|
-
typeof define === 'function' && define.amd ? define(['
|
|
9
|
-
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Carousel = factory(global.
|
|
10
|
-
}(this, (function (
|
|
7
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./util/index'), require('./dom/event-handler'), require('./dom/manipulator'), require('./dom/selector-engine'), require('./util/swipe'), require('./base-component')) :
|
|
8
|
+
typeof define === 'function' && define.amd ? define(['./util/index', './dom/event-handler', './dom/manipulator', './dom/selector-engine', './util/swipe', './base-component'], factory) :
|
|
9
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Carousel = factory(global.Index, global.EventHandler, global.Manipulator, global.SelectorEngine, global.Swipe, global.BaseComponent));
|
|
10
|
+
})(this, (function (index, EventHandler, Manipulator, SelectorEngine, Swipe, BaseComponent) { 'use strict';
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
const _interopDefaultLegacy = e => e && typeof e === 'object' && 'default' in e ? e : { default: e };
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
const EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);
|
|
15
|
+
const Manipulator__default = /*#__PURE__*/_interopDefaultLegacy(Manipulator);
|
|
16
|
+
const SelectorEngine__default = /*#__PURE__*/_interopDefaultLegacy(SelectorEngine);
|
|
17
|
+
const Swipe__default = /*#__PURE__*/_interopDefaultLegacy(Swipe);
|
|
18
|
+
const BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent);
|
|
16
19
|
|
|
17
|
-
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); }
|
|
18
|
-
|
|
19
|
-
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); } }
|
|
20
|
-
|
|
21
|
-
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
|
22
20
|
/**
|
|
23
|
-
*
|
|
21
|
+
* --------------------------------------------------------------------------
|
|
22
|
+
* Bootstrap (v5.2.3): carousel.js
|
|
23
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
24
|
+
* --------------------------------------------------------------------------
|
|
25
|
+
*/
|
|
26
|
+
/**
|
|
24
27
|
* Constants
|
|
25
|
-
* ------------------------------------------------------------------------
|
|
26
28
|
*/
|
|
27
29
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
30
|
+
const NAME = 'carousel';
|
|
31
|
+
const DATA_KEY = 'bs.carousel';
|
|
32
|
+
const EVENT_KEY = `.${DATA_KEY}`;
|
|
33
|
+
const DATA_API_KEY = '.data-api';
|
|
34
|
+
const ARROW_LEFT_KEY = 'ArrowLeft';
|
|
35
|
+
const ARROW_RIGHT_KEY = 'ArrowRight';
|
|
36
|
+
const TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch
|
|
37
|
+
|
|
38
|
+
const ORDER_NEXT = 'next';
|
|
39
|
+
const ORDER_PREV = 'prev';
|
|
40
|
+
const DIRECTION_LEFT = 'left';
|
|
41
|
+
const DIRECTION_RIGHT = 'right';
|
|
42
|
+
const EVENT_SLIDE = `slide${EVENT_KEY}`;
|
|
43
|
+
const EVENT_SLID = `slid${EVENT_KEY}`;
|
|
44
|
+
const EVENT_KEYDOWN = `keydown${EVENT_KEY}`;
|
|
45
|
+
const EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`;
|
|
46
|
+
const EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`;
|
|
47
|
+
const EVENT_DRAG_START = `dragstart${EVENT_KEY}`;
|
|
48
|
+
const EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`;
|
|
49
|
+
const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;
|
|
50
|
+
const CLASS_NAME_CAROUSEL = 'carousel';
|
|
51
|
+
const CLASS_NAME_ACTIVE = 'active';
|
|
52
|
+
const CLASS_NAME_SLIDE = 'slide';
|
|
53
|
+
const CLASS_NAME_END = 'carousel-item-end';
|
|
54
|
+
const CLASS_NAME_START = 'carousel-item-start';
|
|
55
|
+
const CLASS_NAME_NEXT = 'carousel-item-next';
|
|
56
|
+
const CLASS_NAME_PREV = 'carousel-item-prev';
|
|
57
|
+
const SELECTOR_ACTIVE = '.active';
|
|
58
|
+
const SELECTOR_ITEM = '.carousel-item';
|
|
59
|
+
const SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM;
|
|
60
|
+
const SELECTOR_ITEM_IMG = '.carousel-item img';
|
|
61
|
+
const SELECTOR_INDICATORS = '.carousel-indicators';
|
|
62
|
+
const SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]';
|
|
63
|
+
const SELECTOR_DATA_RIDE = '[data-bs-ride="carousel"]';
|
|
64
|
+
const KEY_TO_DIRECTION = {
|
|
65
|
+
[ARROW_LEFT_KEY]: DIRECTION_RIGHT,
|
|
66
|
+
[ARROW_RIGHT_KEY]: DIRECTION_LEFT
|
|
67
|
+
};
|
|
68
|
+
const Default = {
|
|
42
69
|
interval: 5000,
|
|
43
70
|
keyboard: true,
|
|
44
|
-
slide: false,
|
|
45
71
|
pause: 'hover',
|
|
46
|
-
|
|
47
|
-
touch: true
|
|
72
|
+
ride: false,
|
|
73
|
+
touch: true,
|
|
74
|
+
wrap: true
|
|
48
75
|
};
|
|
49
|
-
|
|
76
|
+
const DefaultType = {
|
|
50
77
|
interval: '(number|boolean)',
|
|
78
|
+
// TODO:v6 remove boolean support
|
|
51
79
|
keyboard: 'boolean',
|
|
52
|
-
slide: '(boolean|string)',
|
|
53
80
|
pause: '(string|boolean)',
|
|
54
|
-
|
|
55
|
-
touch: 'boolean'
|
|
56
|
-
|
|
57
|
-
var DIRECTION_NEXT = 'next';
|
|
58
|
-
var DIRECTION_PREV = 'prev';
|
|
59
|
-
var DIRECTION_LEFT = 'left';
|
|
60
|
-
var DIRECTION_RIGHT = 'right';
|
|
61
|
-
var EVENT_SLIDE = "slide" + EVENT_KEY;
|
|
62
|
-
var EVENT_SLID = "slid" + EVENT_KEY;
|
|
63
|
-
var EVENT_KEYDOWN = "keydown" + EVENT_KEY;
|
|
64
|
-
var EVENT_MOUSEENTER = "mouseenter" + EVENT_KEY;
|
|
65
|
-
var EVENT_MOUSELEAVE = "mouseleave" + EVENT_KEY;
|
|
66
|
-
var EVENT_TOUCHSTART = "touchstart" + EVENT_KEY;
|
|
67
|
-
var EVENT_TOUCHMOVE = "touchmove" + EVENT_KEY;
|
|
68
|
-
var EVENT_TOUCHEND = "touchend" + EVENT_KEY;
|
|
69
|
-
var EVENT_POINTERDOWN = "pointerdown" + EVENT_KEY;
|
|
70
|
-
var EVENT_POINTERUP = "pointerup" + EVENT_KEY;
|
|
71
|
-
var EVENT_DRAG_START = "dragstart" + EVENT_KEY;
|
|
72
|
-
var EVENT_LOAD_DATA_API = "load" + EVENT_KEY + DATA_API_KEY;
|
|
73
|
-
var EVENT_CLICK_DATA_API = "click" + EVENT_KEY + DATA_API_KEY;
|
|
74
|
-
var CLASS_NAME_CAROUSEL = 'carousel';
|
|
75
|
-
var CLASS_NAME_ACTIVE = 'active';
|
|
76
|
-
var CLASS_NAME_SLIDE = 'slide';
|
|
77
|
-
var CLASS_NAME_RIGHT = 'carousel-item-right';
|
|
78
|
-
var CLASS_NAME_LEFT = 'carousel-item-left';
|
|
79
|
-
var CLASS_NAME_NEXT = 'carousel-item-next';
|
|
80
|
-
var CLASS_NAME_PREV = 'carousel-item-prev';
|
|
81
|
-
var CLASS_NAME_POINTER_EVENT = 'pointer-event';
|
|
82
|
-
var SELECTOR_ACTIVE = '.active';
|
|
83
|
-
var SELECTOR_ACTIVE_ITEM = '.active.carousel-item';
|
|
84
|
-
var SELECTOR_ITEM = '.carousel-item';
|
|
85
|
-
var SELECTOR_ITEM_IMG = '.carousel-item img';
|
|
86
|
-
var SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev';
|
|
87
|
-
var SELECTOR_INDICATORS = '.carousel-indicators';
|
|
88
|
-
var SELECTOR_DATA_SLIDE = '[data-slide], [data-slide-to]';
|
|
89
|
-
var SELECTOR_DATA_RIDE = '[data-ride="carousel"]';
|
|
90
|
-
var PointerType = {
|
|
91
|
-
TOUCH: 'touch',
|
|
92
|
-
PEN: 'pen'
|
|
81
|
+
ride: '(boolean|string)',
|
|
82
|
+
touch: 'boolean',
|
|
83
|
+
wrap: 'boolean'
|
|
93
84
|
};
|
|
94
85
|
/**
|
|
95
|
-
*
|
|
96
|
-
* Class Definition
|
|
97
|
-
* ------------------------------------------------------------------------
|
|
86
|
+
* Class definition
|
|
98
87
|
*/
|
|
99
88
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
89
|
+
class Carousel extends BaseComponent__default.default {
|
|
90
|
+
constructor(element, config) {
|
|
91
|
+
super(element, config);
|
|
103
92
|
this._interval = null;
|
|
104
93
|
this._activeElement = null;
|
|
105
|
-
this._isPaused = false;
|
|
106
94
|
this._isSliding = false;
|
|
107
95
|
this.touchTimeout = null;
|
|
108
|
-
this.
|
|
109
|
-
this.
|
|
110
|
-
this._config = this._getConfig(config);
|
|
111
|
-
this._element = element;
|
|
112
|
-
this._indicatorsElement = this._element.querySelector(SELECTOR_INDICATORS);
|
|
113
|
-
this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;
|
|
114
|
-
this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent);
|
|
96
|
+
this._swipeHelper = null;
|
|
97
|
+
this._indicatorsElement = SelectorEngine__default.default.findOne(SELECTOR_INDICATORS, this._element);
|
|
115
98
|
|
|
116
99
|
this._addEventListeners();
|
|
100
|
+
|
|
101
|
+
if (this._config.ride === CLASS_NAME_CAROUSEL) {
|
|
102
|
+
this.cycle();
|
|
103
|
+
}
|
|
117
104
|
} // Getters
|
|
118
105
|
|
|
119
106
|
|
|
120
|
-
|
|
107
|
+
static get Default() {
|
|
108
|
+
return Default;
|
|
109
|
+
}
|
|
121
110
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
this._slide(DIRECTION_NEXT);
|
|
126
|
-
}
|
|
127
|
-
};
|
|
111
|
+
static get DefaultType() {
|
|
112
|
+
return DefaultType;
|
|
113
|
+
}
|
|
128
114
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
115
|
+
static get NAME() {
|
|
116
|
+
return NAME;
|
|
117
|
+
} // Public
|
|
132
118
|
|
|
133
|
-
|
|
119
|
+
|
|
120
|
+
next() {
|
|
121
|
+
this._slide(ORDER_NEXT);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
nextWhenVisible() {
|
|
125
|
+
// FIXME TODO use `document.visibilityState`
|
|
126
|
+
// Don't call next when the page isn't visible
|
|
127
|
+
// or the carousel or its parent isn't visible
|
|
128
|
+
if (!document.hidden && index.isVisible(this._element)) {
|
|
134
129
|
this.next();
|
|
135
130
|
}
|
|
136
|
-
}
|
|
131
|
+
}
|
|
137
132
|
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
}
|
|
142
|
-
};
|
|
133
|
+
prev() {
|
|
134
|
+
this._slide(ORDER_PREV);
|
|
135
|
+
}
|
|
143
136
|
|
|
144
|
-
|
|
145
|
-
if (
|
|
146
|
-
this.
|
|
137
|
+
pause() {
|
|
138
|
+
if (this._isSliding) {
|
|
139
|
+
index.triggerTransitionEnd(this._element);
|
|
147
140
|
}
|
|
148
141
|
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
this.cycle(true);
|
|
152
|
-
}
|
|
142
|
+
this._clearInterval();
|
|
143
|
+
}
|
|
153
144
|
|
|
154
|
-
|
|
155
|
-
this.
|
|
156
|
-
};
|
|
145
|
+
cycle() {
|
|
146
|
+
this._clearInterval();
|
|
157
147
|
|
|
158
|
-
|
|
159
|
-
if (!event) {
|
|
160
|
-
this._isPaused = false;
|
|
161
|
-
}
|
|
148
|
+
this._updateInterval();
|
|
162
149
|
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
this._interval = null;
|
|
166
|
-
}
|
|
150
|
+
this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval);
|
|
151
|
+
}
|
|
167
152
|
|
|
168
|
-
|
|
169
|
-
|
|
153
|
+
_maybeEnableCycle() {
|
|
154
|
+
if (!this._config.ride) {
|
|
155
|
+
return;
|
|
170
156
|
}
|
|
171
|
-
};
|
|
172
157
|
|
|
173
|
-
|
|
174
|
-
|
|
158
|
+
if (this._isSliding) {
|
|
159
|
+
EventHandler__default.default.one(this._element, EVENT_SLID, () => this.cycle());
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
175
162
|
|
|
176
|
-
this.
|
|
163
|
+
this.cycle();
|
|
164
|
+
}
|
|
177
165
|
|
|
178
|
-
|
|
166
|
+
to(index) {
|
|
167
|
+
const items = this._getItems();
|
|
179
168
|
|
|
180
|
-
if (index >
|
|
169
|
+
if (index > items.length - 1 || index < 0) {
|
|
181
170
|
return;
|
|
182
171
|
}
|
|
183
172
|
|
|
184
173
|
if (this._isSliding) {
|
|
185
|
-
|
|
186
|
-
return _this.to(index);
|
|
187
|
-
});
|
|
174
|
+
EventHandler__default.default.one(this._element, EVENT_SLID, () => this.to(index));
|
|
188
175
|
return;
|
|
189
176
|
}
|
|
190
177
|
|
|
178
|
+
const activeIndex = this._getItemIndex(this._getActive());
|
|
179
|
+
|
|
191
180
|
if (activeIndex === index) {
|
|
192
|
-
this.pause();
|
|
193
|
-
this.cycle();
|
|
194
181
|
return;
|
|
195
182
|
}
|
|
196
183
|
|
|
197
|
-
|
|
184
|
+
const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV;
|
|
198
185
|
|
|
199
|
-
this._slide(
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
_proto.dispose = function dispose() {
|
|
203
|
-
$__default['default'](this._element).off(EVENT_KEY);
|
|
204
|
-
$__default['default'].removeData(this._element, DATA_KEY);
|
|
205
|
-
this._items = null;
|
|
206
|
-
this._config = null;
|
|
207
|
-
this._element = null;
|
|
208
|
-
this._interval = null;
|
|
209
|
-
this._isPaused = null;
|
|
210
|
-
this._isSliding = null;
|
|
211
|
-
this._activeElement = null;
|
|
212
|
-
this._indicatorsElement = null;
|
|
213
|
-
} // Private
|
|
214
|
-
;
|
|
215
|
-
|
|
216
|
-
_proto._getConfig = function _getConfig(config) {
|
|
217
|
-
config = _extends({}, Default, config);
|
|
218
|
-
Util__default['default'].typeCheckConfig(NAME, config, DefaultType);
|
|
219
|
-
return config;
|
|
220
|
-
};
|
|
221
|
-
|
|
222
|
-
_proto._handleSwipe = function _handleSwipe() {
|
|
223
|
-
var absDeltax = Math.abs(this.touchDeltaX);
|
|
186
|
+
this._slide(order, items[index]);
|
|
187
|
+
}
|
|
224
188
|
|
|
225
|
-
|
|
226
|
-
|
|
189
|
+
dispose() {
|
|
190
|
+
if (this._swipeHelper) {
|
|
191
|
+
this._swipeHelper.dispose();
|
|
227
192
|
}
|
|
228
193
|
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
if (direction > 0) {
|
|
233
|
-
this.prev();
|
|
234
|
-
} // swipe right
|
|
235
|
-
|
|
194
|
+
super.dispose();
|
|
195
|
+
} // Private
|
|
236
196
|
|
|
237
|
-
if (direction < 0) {
|
|
238
|
-
this.next();
|
|
239
|
-
}
|
|
240
|
-
};
|
|
241
197
|
|
|
242
|
-
|
|
243
|
-
|
|
198
|
+
_configAfterMerge(config) {
|
|
199
|
+
config.defaultInterval = config.interval;
|
|
200
|
+
return config;
|
|
201
|
+
}
|
|
244
202
|
|
|
203
|
+
_addEventListeners() {
|
|
245
204
|
if (this._config.keyboard) {
|
|
246
|
-
|
|
247
|
-
return _this2._keydown(event);
|
|
248
|
-
});
|
|
205
|
+
EventHandler__default.default.on(this._element, EVENT_KEYDOWN, event => this._keydown(event));
|
|
249
206
|
}
|
|
250
207
|
|
|
251
208
|
if (this._config.pause === 'hover') {
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
}).on(EVENT_MOUSELEAVE, function (event) {
|
|
255
|
-
return _this2.cycle(event);
|
|
256
|
-
});
|
|
209
|
+
EventHandler__default.default.on(this._element, EVENT_MOUSEENTER, () => this.pause());
|
|
210
|
+
EventHandler__default.default.on(this._element, EVENT_MOUSELEAVE, () => this._maybeEnableCycle());
|
|
257
211
|
}
|
|
258
212
|
|
|
259
|
-
if (this._config.touch) {
|
|
213
|
+
if (this._config.touch && Swipe__default.default.isSupported()) {
|
|
260
214
|
this._addTouchEventListeners();
|
|
261
215
|
}
|
|
262
|
-
}
|
|
263
|
-
|
|
264
|
-
_proto._addTouchEventListeners = function _addTouchEventListeners() {
|
|
265
|
-
var _this3 = this;
|
|
216
|
+
}
|
|
266
217
|
|
|
267
|
-
|
|
268
|
-
|
|
218
|
+
_addTouchEventListeners() {
|
|
219
|
+
for (const img of SelectorEngine__default.default.find(SELECTOR_ITEM_IMG, this._element)) {
|
|
220
|
+
EventHandler__default.default.on(img, EVENT_DRAG_START, event => event.preventDefault());
|
|
269
221
|
}
|
|
270
222
|
|
|
271
|
-
|
|
272
|
-
if (
|
|
273
|
-
|
|
274
|
-
}
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
//
|
|
281
|
-
if (event.originalEvent.touches && event.originalEvent.touches.length > 1) {
|
|
282
|
-
_this3.touchDeltaX = 0;
|
|
283
|
-
} else {
|
|
284
|
-
_this3.touchDeltaX = event.originalEvent.touches[0].clientX - _this3.touchStartX;
|
|
285
|
-
}
|
|
286
|
-
};
|
|
223
|
+
const endCallBack = () => {
|
|
224
|
+
if (this._config.pause !== 'hover') {
|
|
225
|
+
return;
|
|
226
|
+
} // If it's a touch-enabled device, mouseenter/leave are fired as
|
|
227
|
+
// part of the mouse compatibility events on first tap - the carousel
|
|
228
|
+
// would stop cycling until user tapped out of it;
|
|
229
|
+
// here, we listen for touchend, explicitly pause the carousel
|
|
230
|
+
// (as if it's the second time we tap on it, mouseenter compat event
|
|
231
|
+
// is NOT fired) and after a timeout (to allow for mouse compatibility
|
|
232
|
+
// events to fire) we explicitly restart cycling
|
|
287
233
|
|
|
288
|
-
var end = function end(event) {
|
|
289
|
-
if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {
|
|
290
|
-
_this3.touchDeltaX = event.originalEvent.clientX - _this3.touchStartX;
|
|
291
|
-
}
|
|
292
|
-
|
|
293
|
-
_this3._handleSwipe();
|
|
294
|
-
|
|
295
|
-
if (_this3._config.pause === 'hover') {
|
|
296
|
-
// If it's a touch-enabled device, mouseenter/leave are fired as
|
|
297
|
-
// part of the mouse compatibility events on first tap - the carousel
|
|
298
|
-
// would stop cycling until user tapped out of it;
|
|
299
|
-
// here, we listen for touchend, explicitly pause the carousel
|
|
300
|
-
// (as if it's the second time we tap on it, mouseenter compat event
|
|
301
|
-
// is NOT fired) and after a timeout (to allow for mouse compatibility
|
|
302
|
-
// events to fire) we explicitly restart cycling
|
|
303
|
-
_this3.pause();
|
|
304
234
|
|
|
305
|
-
|
|
306
|
-
clearTimeout(_this3.touchTimeout);
|
|
307
|
-
}
|
|
235
|
+
this.pause();
|
|
308
236
|
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
}, TOUCHEVENT_COMPAT_WAIT + _this3._config.interval);
|
|
237
|
+
if (this.touchTimeout) {
|
|
238
|
+
clearTimeout(this.touchTimeout);
|
|
312
239
|
}
|
|
313
|
-
};
|
|
314
|
-
|
|
315
|
-
$__default['default'](this._element.querySelectorAll(SELECTOR_ITEM_IMG)).on(EVENT_DRAG_START, function (e) {
|
|
316
|
-
return e.preventDefault();
|
|
317
|
-
});
|
|
318
240
|
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
return start(event);
|
|
322
|
-
});
|
|
323
|
-
$__default['default'](this._element).on(EVENT_POINTERUP, function (event) {
|
|
324
|
-
return end(event);
|
|
325
|
-
});
|
|
241
|
+
this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval);
|
|
242
|
+
};
|
|
326
243
|
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
});
|
|
335
|
-
$__default['default'](this._element).on(EVENT_TOUCHEND, function (event) {
|
|
336
|
-
return end(event);
|
|
337
|
-
});
|
|
338
|
-
}
|
|
339
|
-
};
|
|
244
|
+
const swipeConfig = {
|
|
245
|
+
leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)),
|
|
246
|
+
rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)),
|
|
247
|
+
endCallback: endCallBack
|
|
248
|
+
};
|
|
249
|
+
this._swipeHelper = new Swipe__default.default(this._element, swipeConfig);
|
|
250
|
+
}
|
|
340
251
|
|
|
341
|
-
|
|
252
|
+
_keydown(event) {
|
|
342
253
|
if (/input|textarea/i.test(event.target.tagName)) {
|
|
343
254
|
return;
|
|
344
255
|
}
|
|
345
256
|
|
|
346
|
-
|
|
347
|
-
case ARROW_LEFT_KEYCODE:
|
|
348
|
-
event.preventDefault();
|
|
349
|
-
this.prev();
|
|
350
|
-
break;
|
|
351
|
-
|
|
352
|
-
case ARROW_RIGHT_KEYCODE:
|
|
353
|
-
event.preventDefault();
|
|
354
|
-
this.next();
|
|
355
|
-
break;
|
|
356
|
-
}
|
|
357
|
-
};
|
|
358
|
-
|
|
359
|
-
_proto._getItemIndex = function _getItemIndex(element) {
|
|
360
|
-
this._items = element && element.parentNode ? [].slice.call(element.parentNode.querySelectorAll(SELECTOR_ITEM)) : [];
|
|
361
|
-
return this._items.indexOf(element);
|
|
362
|
-
};
|
|
363
|
-
|
|
364
|
-
_proto._getItemByDirection = function _getItemByDirection(direction, activeElement) {
|
|
365
|
-
var isNextDirection = direction === DIRECTION_NEXT;
|
|
366
|
-
var isPrevDirection = direction === DIRECTION_PREV;
|
|
257
|
+
const direction = KEY_TO_DIRECTION[event.key];
|
|
367
258
|
|
|
368
|
-
|
|
259
|
+
if (direction) {
|
|
260
|
+
event.preventDefault();
|
|
369
261
|
|
|
370
|
-
|
|
371
|
-
var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex;
|
|
372
|
-
|
|
373
|
-
if (isGoingToWrap && !this._config.wrap) {
|
|
374
|
-
return activeElement;
|
|
262
|
+
this._slide(this._directionToOrder(direction));
|
|
375
263
|
}
|
|
264
|
+
}
|
|
376
265
|
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
};
|
|
381
|
-
|
|
382
|
-
_proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) {
|
|
383
|
-
var targetIndex = this._getItemIndex(relatedTarget);
|
|
384
|
-
|
|
385
|
-
var fromIndex = this._getItemIndex(this._element.querySelector(SELECTOR_ACTIVE_ITEM));
|
|
386
|
-
|
|
387
|
-
var slideEvent = $__default['default'].Event(EVENT_SLIDE, {
|
|
388
|
-
relatedTarget: relatedTarget,
|
|
389
|
-
direction: eventDirectionName,
|
|
390
|
-
from: fromIndex,
|
|
391
|
-
to: targetIndex
|
|
392
|
-
});
|
|
393
|
-
$__default['default'](this._element).trigger(slideEvent);
|
|
394
|
-
return slideEvent;
|
|
395
|
-
};
|
|
266
|
+
_getItemIndex(element) {
|
|
267
|
+
return this._getItems().indexOf(element);
|
|
268
|
+
}
|
|
396
269
|
|
|
397
|
-
|
|
398
|
-
if (this._indicatorsElement) {
|
|
399
|
-
|
|
400
|
-
|
|
270
|
+
_setActiveIndicatorElement(index) {
|
|
271
|
+
if (!this._indicatorsElement) {
|
|
272
|
+
return;
|
|
273
|
+
}
|
|
401
274
|
|
|
402
|
-
|
|
275
|
+
const activeIndicator = SelectorEngine__default.default.findOne(SELECTOR_ACTIVE, this._indicatorsElement);
|
|
276
|
+
activeIndicator.classList.remove(CLASS_NAME_ACTIVE);
|
|
277
|
+
activeIndicator.removeAttribute('aria-current');
|
|
278
|
+
const newActiveIndicator = SelectorEngine__default.default.findOne(`[data-bs-slide-to="${index}"]`, this._indicatorsElement);
|
|
403
279
|
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
280
|
+
if (newActiveIndicator) {
|
|
281
|
+
newActiveIndicator.classList.add(CLASS_NAME_ACTIVE);
|
|
282
|
+
newActiveIndicator.setAttribute('aria-current', 'true');
|
|
407
283
|
}
|
|
408
|
-
}
|
|
409
|
-
|
|
410
|
-
_proto._slide = function _slide(direction, element) {
|
|
411
|
-
var _this4 = this;
|
|
284
|
+
}
|
|
412
285
|
|
|
413
|
-
|
|
286
|
+
_updateInterval() {
|
|
287
|
+
const element = this._activeElement || this._getActive();
|
|
414
288
|
|
|
415
|
-
|
|
289
|
+
if (!element) {
|
|
290
|
+
return;
|
|
291
|
+
}
|
|
416
292
|
|
|
417
|
-
|
|
293
|
+
const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10);
|
|
294
|
+
this._config.interval = elementInterval || this._config.defaultInterval;
|
|
295
|
+
}
|
|
418
296
|
|
|
419
|
-
|
|
297
|
+
_slide(order, element = null) {
|
|
298
|
+
if (this._isSliding) {
|
|
299
|
+
return;
|
|
300
|
+
}
|
|
420
301
|
|
|
421
|
-
|
|
422
|
-
var directionalClassName;
|
|
423
|
-
var orderClassName;
|
|
424
|
-
var eventDirectionName;
|
|
302
|
+
const activeElement = this._getActive();
|
|
425
303
|
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
orderClassName = CLASS_NAME_NEXT;
|
|
429
|
-
eventDirectionName = DIRECTION_LEFT;
|
|
430
|
-
} else {
|
|
431
|
-
directionalClassName = CLASS_NAME_RIGHT;
|
|
432
|
-
orderClassName = CLASS_NAME_PREV;
|
|
433
|
-
eventDirectionName = DIRECTION_RIGHT;
|
|
434
|
-
}
|
|
304
|
+
const isNext = order === ORDER_NEXT;
|
|
305
|
+
const nextElement = element || index.getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap);
|
|
435
306
|
|
|
436
|
-
if (nextElement
|
|
437
|
-
this._isSliding = false;
|
|
307
|
+
if (nextElement === activeElement) {
|
|
438
308
|
return;
|
|
439
309
|
}
|
|
440
310
|
|
|
441
|
-
|
|
311
|
+
const nextElementIndex = this._getItemIndex(nextElement);
|
|
442
312
|
|
|
443
|
-
|
|
313
|
+
const triggerEvent = eventName => {
|
|
314
|
+
return EventHandler__default.default.trigger(this._element, eventName, {
|
|
315
|
+
relatedTarget: nextElement,
|
|
316
|
+
direction: this._orderToDirection(order),
|
|
317
|
+
from: this._getItemIndex(activeElement),
|
|
318
|
+
to: nextElementIndex
|
|
319
|
+
});
|
|
320
|
+
};
|
|
321
|
+
|
|
322
|
+
const slideEvent = triggerEvent(EVENT_SLIDE);
|
|
323
|
+
|
|
324
|
+
if (slideEvent.defaultPrevented) {
|
|
444
325
|
return;
|
|
445
326
|
}
|
|
446
327
|
|
|
447
328
|
if (!activeElement || !nextElement) {
|
|
448
329
|
// Some weirdness is happening, so we bail
|
|
330
|
+
// todo: change tests that use empty divs to avoid this check
|
|
449
331
|
return;
|
|
450
332
|
}
|
|
451
333
|
|
|
334
|
+
const isCycling = Boolean(this._interval);
|
|
335
|
+
this.pause();
|
|
452
336
|
this._isSliding = true;
|
|
453
337
|
|
|
338
|
+
this._setActiveIndicatorElement(nextElementIndex);
|
|
339
|
+
|
|
340
|
+
this._activeElement = nextElement;
|
|
341
|
+
const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END;
|
|
342
|
+
const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV;
|
|
343
|
+
nextElement.classList.add(orderClassName);
|
|
344
|
+
index.reflow(nextElement);
|
|
345
|
+
activeElement.classList.add(directionalClassName);
|
|
346
|
+
nextElement.classList.add(directionalClassName);
|
|
347
|
+
|
|
348
|
+
const completeCallBack = () => {
|
|
349
|
+
nextElement.classList.remove(directionalClassName, orderClassName);
|
|
350
|
+
nextElement.classList.add(CLASS_NAME_ACTIVE);
|
|
351
|
+
activeElement.classList.remove(CLASS_NAME_ACTIVE, orderClassName, directionalClassName);
|
|
352
|
+
this._isSliding = false;
|
|
353
|
+
triggerEvent(EVENT_SLID);
|
|
354
|
+
};
|
|
355
|
+
|
|
356
|
+
this._queueCallback(completeCallBack, activeElement, this._isAnimated());
|
|
357
|
+
|
|
454
358
|
if (isCycling) {
|
|
455
|
-
this.
|
|
359
|
+
this.cycle();
|
|
456
360
|
}
|
|
361
|
+
}
|
|
457
362
|
|
|
458
|
-
|
|
363
|
+
_isAnimated() {
|
|
364
|
+
return this._element.classList.contains(CLASS_NAME_SLIDE);
|
|
365
|
+
}
|
|
459
366
|
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
from: activeElementIndex,
|
|
464
|
-
to: nextElementIndex
|
|
465
|
-
});
|
|
367
|
+
_getActive() {
|
|
368
|
+
return SelectorEngine__default.default.findOne(SELECTOR_ACTIVE_ITEM, this._element);
|
|
369
|
+
}
|
|
466
370
|
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
$__default['default'](activeElement).addClass(directionalClassName);
|
|
471
|
-
$__default['default'](nextElement).addClass(directionalClassName);
|
|
472
|
-
var nextElementInterval = parseInt(nextElement.getAttribute('data-interval'), 10);
|
|
473
|
-
|
|
474
|
-
if (nextElementInterval) {
|
|
475
|
-
this._config.defaultInterval = this._config.defaultInterval || this._config.interval;
|
|
476
|
-
this._config.interval = nextElementInterval;
|
|
477
|
-
} else {
|
|
478
|
-
this._config.interval = this._config.defaultInterval || this._config.interval;
|
|
479
|
-
}
|
|
371
|
+
_getItems() {
|
|
372
|
+
return SelectorEngine__default.default.find(SELECTOR_ITEM, this._element);
|
|
373
|
+
}
|
|
480
374
|
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
_this4._isSliding = false;
|
|
486
|
-
setTimeout(function () {
|
|
487
|
-
return $__default['default'](_this4._element).trigger(slidEvent);
|
|
488
|
-
}, 0);
|
|
489
|
-
}).emulateTransitionEnd(transitionDuration);
|
|
490
|
-
} else {
|
|
491
|
-
$__default['default'](activeElement).removeClass(CLASS_NAME_ACTIVE);
|
|
492
|
-
$__default['default'](nextElement).addClass(CLASS_NAME_ACTIVE);
|
|
493
|
-
this._isSliding = false;
|
|
494
|
-
$__default['default'](this._element).trigger(slidEvent);
|
|
375
|
+
_clearInterval() {
|
|
376
|
+
if (this._interval) {
|
|
377
|
+
clearInterval(this._interval);
|
|
378
|
+
this._interval = null;
|
|
495
379
|
}
|
|
380
|
+
}
|
|
496
381
|
|
|
497
|
-
|
|
498
|
-
|
|
382
|
+
_directionToOrder(direction) {
|
|
383
|
+
if (index.isRTL()) {
|
|
384
|
+
return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT;
|
|
499
385
|
}
|
|
500
|
-
} // Static
|
|
501
|
-
;
|
|
502
386
|
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
var data = $__default['default'](this).data(DATA_KEY);
|
|
387
|
+
return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV;
|
|
388
|
+
}
|
|
506
389
|
|
|
507
|
-
|
|
390
|
+
_orderToDirection(order) {
|
|
391
|
+
if (index.isRTL()) {
|
|
392
|
+
return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT;
|
|
393
|
+
}
|
|
508
394
|
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
}
|
|
395
|
+
return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT;
|
|
396
|
+
} // Static
|
|
512
397
|
|
|
513
|
-
var action = typeof config === 'string' ? config : _config.slide;
|
|
514
398
|
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
}
|
|
399
|
+
static jQueryInterface(config) {
|
|
400
|
+
return this.each(function () {
|
|
401
|
+
const data = Carousel.getOrCreateInstance(this, config);
|
|
519
402
|
|
|
520
403
|
if (typeof config === 'number') {
|
|
521
404
|
data.to(config);
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
405
|
+
return;
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
if (typeof config === 'string') {
|
|
409
|
+
if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
|
|
410
|
+
throw new TypeError(`No method named "${config}"`);
|
|
525
411
|
}
|
|
526
412
|
|
|
527
|
-
data[
|
|
528
|
-
} else if (_config.interval && _config.ride) {
|
|
529
|
-
data.pause();
|
|
530
|
-
data.cycle();
|
|
413
|
+
data[config]();
|
|
531
414
|
}
|
|
532
415
|
});
|
|
533
|
-
}
|
|
534
|
-
|
|
535
|
-
Carousel._dataApiClickHandler = function _dataApiClickHandler(event) {
|
|
536
|
-
var selector = Util__default['default'].getSelectorFromElement(this);
|
|
537
|
-
|
|
538
|
-
if (!selector) {
|
|
539
|
-
return;
|
|
540
|
-
}
|
|
416
|
+
}
|
|
541
417
|
|
|
542
|
-
|
|
418
|
+
}
|
|
419
|
+
/**
|
|
420
|
+
* Data API implementation
|
|
421
|
+
*/
|
|
543
422
|
|
|
544
|
-
if (!target || !$__default['default'](target).hasClass(CLASS_NAME_CAROUSEL)) {
|
|
545
|
-
return;
|
|
546
|
-
}
|
|
547
423
|
|
|
548
|
-
|
|
424
|
+
EventHandler__default.default.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, function (event) {
|
|
425
|
+
const target = index.getElementFromSelector(this);
|
|
549
426
|
|
|
550
|
-
|
|
427
|
+
if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {
|
|
428
|
+
return;
|
|
429
|
+
}
|
|
551
430
|
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
431
|
+
event.preventDefault();
|
|
432
|
+
const carousel = Carousel.getOrCreateInstance(target);
|
|
433
|
+
const slideIndex = this.getAttribute('data-bs-slide-to');
|
|
555
434
|
|
|
556
|
-
|
|
435
|
+
if (slideIndex) {
|
|
436
|
+
carousel.to(slideIndex);
|
|
557
437
|
|
|
558
|
-
|
|
559
|
-
$__default['default'](target).data(DATA_KEY).to(slideIndex);
|
|
560
|
-
}
|
|
438
|
+
carousel._maybeEnableCycle();
|
|
561
439
|
|
|
562
|
-
|
|
563
|
-
}
|
|
440
|
+
return;
|
|
441
|
+
}
|
|
564
442
|
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
get: function get() {
|
|
568
|
-
return VERSION;
|
|
569
|
-
}
|
|
570
|
-
}, {
|
|
571
|
-
key: "Default",
|
|
572
|
-
get: function get() {
|
|
573
|
-
return Default;
|
|
574
|
-
}
|
|
575
|
-
}]);
|
|
443
|
+
if (Manipulator__default.default.getDataAttribute(this, 'slide') === 'next') {
|
|
444
|
+
carousel.next();
|
|
576
445
|
|
|
577
|
-
|
|
578
|
-
}();
|
|
579
|
-
/**
|
|
580
|
-
* ------------------------------------------------------------------------
|
|
581
|
-
* Data Api implementation
|
|
582
|
-
* ------------------------------------------------------------------------
|
|
583
|
-
*/
|
|
446
|
+
carousel._maybeEnableCycle();
|
|
584
447
|
|
|
448
|
+
return;
|
|
449
|
+
}
|
|
585
450
|
|
|
586
|
-
|
|
587
|
-
$__default['default'](window).on(EVENT_LOAD_DATA_API, function () {
|
|
588
|
-
var carousels = [].slice.call(document.querySelectorAll(SELECTOR_DATA_RIDE));
|
|
451
|
+
carousel.prev();
|
|
589
452
|
|
|
590
|
-
|
|
591
|
-
|
|
453
|
+
carousel._maybeEnableCycle();
|
|
454
|
+
});
|
|
455
|
+
EventHandler__default.default.on(window, EVENT_LOAD_DATA_API, () => {
|
|
456
|
+
const carousels = SelectorEngine__default.default.find(SELECTOR_DATA_RIDE);
|
|
592
457
|
|
|
593
|
-
|
|
458
|
+
for (const carousel of carousels) {
|
|
459
|
+
Carousel.getOrCreateInstance(carousel);
|
|
594
460
|
}
|
|
595
461
|
});
|
|
596
462
|
/**
|
|
597
|
-
* ------------------------------------------------------------------------
|
|
598
463
|
* jQuery
|
|
599
|
-
* ------------------------------------------------------------------------
|
|
600
464
|
*/
|
|
601
465
|
|
|
602
|
-
|
|
603
|
-
$__default['default'].fn[NAME].Constructor = Carousel;
|
|
604
|
-
|
|
605
|
-
$__default['default'].fn[NAME].noConflict = function () {
|
|
606
|
-
$__default['default'].fn[NAME] = JQUERY_NO_CONFLICT;
|
|
607
|
-
return Carousel._jQueryInterface;
|
|
608
|
-
};
|
|
466
|
+
index.defineJQueryPlugin(Carousel);
|
|
609
467
|
|
|
610
468
|
return Carousel;
|
|
611
469
|
|
|
612
|
-
}))
|
|
470
|
+
}));
|