bootstrap.js 149 KB
Newer Older
XhmikosR's avatar
XhmikosR committed
1001
1002
1003
    }
  };

Jacob Thornton's avatar
Jacob Thornton committed
1004
  /**
XhmikosR's avatar
Dist    
XhmikosR committed
1005
1006
1007
   * ------------------------------------------------------------------------
   * Constants
   * ------------------------------------------------------------------------
Jacob Thornton's avatar
Jacob Thornton committed
1008
   */
Mark Otto's avatar
dist    
Mark Otto committed
1009

XhmikosR's avatar
Dist    
XhmikosR committed
1010
  var NAME$2 = 'carousel';
XhmikosR's avatar
XhmikosR committed
1011
  var VERSION$2 = '5.0.0-alpha3';
XhmikosR's avatar
Dist    
XhmikosR committed
1012
1013
1014
  var DATA_KEY$2 = 'bs.carousel';
  var EVENT_KEY$2 = "." + DATA_KEY$2;
  var DATA_API_KEY$2 = '.data-api';
XhmikosR's avatar
XhmikosR committed
1015
1016
  var ARROW_LEFT_KEY = 'ArrowLeft';
  var ARROW_RIGHT_KEY = 'ArrowRight';
XhmikosR's avatar
Dist    
XhmikosR committed
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
  var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch

  var SWIPE_THRESHOLD = 40;
  var Default = {
    interval: 5000,
    keyboard: true,
    slide: false,
    pause: 'hover',
    wrap: true,
    touch: true
  };
  var DefaultType = {
    interval: '(number|boolean)',
    keyboard: 'boolean',
    slide: '(boolean|string)',
    pause: '(string|boolean)',
    wrap: 'boolean',
    touch: 'boolean'
  };
XhmikosR's avatar
XhmikosR committed
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
  var DIRECTION_NEXT = 'next';
  var DIRECTION_PREV = 'prev';
  var DIRECTION_LEFT = 'left';
  var DIRECTION_RIGHT = 'right';
  var EVENT_SLIDE = "slide" + EVENT_KEY$2;
  var EVENT_SLID = "slid" + EVENT_KEY$2;
  var EVENT_KEYDOWN = "keydown" + EVENT_KEY$2;
  var EVENT_MOUSEENTER = "mouseenter" + EVENT_KEY$2;
  var EVENT_MOUSELEAVE = "mouseleave" + EVENT_KEY$2;
  var EVENT_TOUCHSTART = "touchstart" + EVENT_KEY$2;
  var EVENT_TOUCHMOVE = "touchmove" + EVENT_KEY$2;
  var EVENT_TOUCHEND = "touchend" + EVENT_KEY$2;
  var EVENT_POINTERDOWN = "pointerdown" + EVENT_KEY$2;
  var EVENT_POINTERUP = "pointerup" + EVENT_KEY$2;
  var EVENT_DRAG_START = "dragstart" + EVENT_KEY$2;
  var EVENT_LOAD_DATA_API = "load" + EVENT_KEY$2 + DATA_API_KEY$2;
  var EVENT_CLICK_DATA_API$2 = "click" + EVENT_KEY$2 + DATA_API_KEY$2;
  var CLASS_NAME_CAROUSEL = 'carousel';
  var CLASS_NAME_ACTIVE$1 = 'active';
  var CLASS_NAME_SLIDE = 'slide';
  var CLASS_NAME_RIGHT = 'carousel-item-right';
  var CLASS_NAME_LEFT = 'carousel-item-left';
  var CLASS_NAME_NEXT = 'carousel-item-next';
  var CLASS_NAME_PREV = 'carousel-item-prev';
  var CLASS_NAME_POINTER_EVENT = 'pointer-event';
XhmikosR's avatar
XhmikosR committed
1061
  var SELECTOR_ACTIVE = '.active';
XhmikosR's avatar
XhmikosR committed
1062
1063
1064
1065
1066
  var SELECTOR_ACTIVE_ITEM = '.active.carousel-item';
  var SELECTOR_ITEM = '.carousel-item';
  var SELECTOR_ITEM_IMG = '.carousel-item img';
  var SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev';
  var SELECTOR_INDICATORS = '.carousel-indicators';
XhmikosR's avatar
XhmikosR committed
1067
1068
  var SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]';
  var SELECTOR_DATA_RIDE = '[data-bs-ride="carousel"]';
XhmikosR's avatar
Dist    
XhmikosR committed
1069
1070
1071
1072
  var PointerType = {
    TOUCH: 'touch',
    PEN: 'pen'
  };
XhmikosR's avatar
XhmikosR committed
1073
1074
1075
1076
1077
  /**
   * ------------------------------------------------------------------------
   * Class Definition
   * ------------------------------------------------------------------------
   */
XhmikosR's avatar
Dist    
XhmikosR committed
1078

XhmikosR's avatar
XhmikosR committed
1079
  var Carousel = /*#__PURE__*/function () {
XhmikosR's avatar
Dist    
XhmikosR committed
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
    function Carousel(element, config) {
      this._items = null;
      this._interval = null;
      this._activeElement = null;
      this._isPaused = false;
      this._isSliding = false;
      this.touchTimeout = null;
      this.touchStartX = 0;
      this.touchDeltaX = 0;
      this._config = this._getConfig(config);
      this._element = element;
XhmikosR's avatar
XhmikosR committed
1091
      this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element);
XhmikosR's avatar
Dist    
XhmikosR committed
1092
      this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;
XhmikosR's avatar
XhmikosR committed
1093
      this._pointerEvent = Boolean(window.PointerEvent);
XhmikosR's avatar
Dist    
XhmikosR committed
1094
1095

      this._addEventListeners();
XhmikosR's avatar
XhmikosR committed
1096
1097

      Data.setData(element, DATA_KEY$2, this);
XhmikosR's avatar
Dist    
XhmikosR committed
1098
1099
1100
1101
1102
1103
1104
1105
    } // Getters


    var _proto = Carousel.prototype;

    // Public
    _proto.next = function next() {
      if (!this._isSliding) {
XhmikosR's avatar
XhmikosR committed
1106
        this._slide(DIRECTION_NEXT);
XhmikosR's avatar
Dist    
XhmikosR committed
1107
      }
Mark Otto's avatar
dist    
Mark Otto committed
1108
    };
Jacob Thornton's avatar
Jacob Thornton committed
1109

XhmikosR's avatar
Dist    
XhmikosR committed
1110
1111
1112
    _proto.nextWhenVisible = function nextWhenVisible() {
      // Don't call next when the page isn't visible
      // or the carousel or its parent isn't visible
XhmikosR's avatar
XhmikosR committed
1113
      if (!document.hidden && isVisible(this._element)) {
XhmikosR's avatar
Dist    
XhmikosR committed
1114
1115
        this.next();
      }
Mark Otto's avatar
grunt    
Mark Otto committed
1116
1117
    };

XhmikosR's avatar
Dist    
XhmikosR committed
1118
1119
    _proto.prev = function prev() {
      if (!this._isSliding) {
XhmikosR's avatar
XhmikosR committed
1120
        this._slide(DIRECTION_PREV);
XhmikosR's avatar
Dist    
XhmikosR committed
1121
1122
      }
    };
Mark Otto's avatar
grunt    
Mark Otto committed
1123

XhmikosR's avatar
Dist    
XhmikosR committed
1124
1125
1126
1127
    _proto.pause = function pause(event) {
      if (!event) {
        this._isPaused = true;
      }
Jacob Thornton's avatar
Jacob Thornton committed
1128

XhmikosR's avatar
XhmikosR committed
1129
      if (SelectorEngine.findOne(SELECTOR_NEXT_PREV, this._element)) {
XhmikosR's avatar
XhmikosR committed
1130
        triggerTransitionEnd(this._element);
XhmikosR's avatar
Dist    
XhmikosR committed
1131
1132
        this.cycle(true);
      }
Mark Otto's avatar
grunt    
Mark Otto committed
1133

XhmikosR's avatar
Dist    
XhmikosR committed
1134
1135
1136
      clearInterval(this._interval);
      this._interval = null;
    };
Mark Otto's avatar
grunt    
Mark Otto committed
1137

XhmikosR's avatar
Dist    
XhmikosR committed
1138
1139
1140
1141
    _proto.cycle = function cycle(event) {
      if (!event) {
        this._isPaused = false;
      }
Mark Otto's avatar
grunt    
Mark Otto committed
1142

XhmikosR's avatar
Dist    
XhmikosR committed
1143
      if (this._interval) {
Mark Otto's avatar
dist    
Mark Otto committed
1144
1145
        clearInterval(this._interval);
        this._interval = null;
XhmikosR's avatar
Dist    
XhmikosR committed
1146
      }
Mark Otto's avatar
grunt    
Mark Otto committed
1147

XhmikosR's avatar
XhmikosR committed
1148
      if (this._config && this._config.interval && !this._isPaused) {
XhmikosR's avatar
XhmikosR committed
1149
1150
        this._updateInterval();

XhmikosR's avatar
Dist    
XhmikosR committed
1151
1152
1153
        this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);
      }
    };
Jacob Thornton's avatar
Jacob Thornton committed
1154

XhmikosR's avatar
Dist    
XhmikosR committed
1155
1156
    _proto.to = function to(index) {
      var _this = this;
Jacob Thornton's avatar
Jacob Thornton committed
1157

XhmikosR's avatar
XhmikosR committed
1158
      this._activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);
Jacob Thornton's avatar
Jacob Thornton committed
1159

XhmikosR's avatar
Dist    
XhmikosR committed
1160
      var activeIndex = this._getItemIndex(this._activeElement);
Jacob Thornton's avatar
Jacob Thornton committed
1161

XhmikosR's avatar
Dist    
XhmikosR committed
1162
1163
1164
      if (index > this._items.length - 1 || index < 0) {
        return;
      }
Jacob Thornton's avatar
Jacob Thornton committed
1165

XhmikosR's avatar
Dist    
XhmikosR committed
1166
      if (this._isSliding) {
XhmikosR's avatar
XhmikosR committed
1167
        EventHandler.one(this._element, EVENT_SLID, function () {
XhmikosR's avatar
Dist    
XhmikosR committed
1168
1169
1170
1171
          return _this.to(index);
        });
        return;
      }
Jacob Thornton's avatar
Jacob Thornton committed
1172

XhmikosR's avatar
Dist    
XhmikosR committed
1173
1174
1175
1176
1177
      if (activeIndex === index) {
        this.pause();
        this.cycle();
        return;
      }
Mark Otto's avatar
dist    
Mark Otto committed
1178

XhmikosR's avatar
XhmikosR committed
1179
      var direction = index > activeIndex ? DIRECTION_NEXT : DIRECTION_PREV;
Mark Otto's avatar
dist    
Mark Otto committed
1180

XhmikosR's avatar
Dist    
XhmikosR committed
1181
1182
      this._slide(direction, this._items[index]);
    };
Mark Otto's avatar
dist    
Mark Otto committed
1183

XhmikosR's avatar
Dist    
XhmikosR committed
1184
    _proto.dispose = function dispose() {
XhmikosR's avatar
XhmikosR committed
1185
1186
      EventHandler.off(this._element, EVENT_KEY$2);
      Data.removeData(this._element, DATA_KEY$2);
XhmikosR's avatar
Dist    
XhmikosR committed
1187
1188
1189
1190
1191
1192
1193
1194
      this._items = null;
      this._config = null;
      this._element = null;
      this._interval = null;
      this._isPaused = null;
      this._isSliding = null;
      this._activeElement = null;
      this._indicatorsElement = null;
Mark Otto's avatar
Mark Otto committed
1195
1196
    } // Private
    ;
XhmikosR's avatar
Dist    
XhmikosR committed
1197
1198

    _proto._getConfig = function _getConfig(config) {
XhmikosR's avatar
XhmikosR committed
1199
      config = _extends({}, Default, config);
XhmikosR's avatar
XhmikosR committed
1200
      typeCheckConfig(NAME$2, config, DefaultType);
XhmikosR's avatar
Dist    
XhmikosR committed
1201
1202
      return config;
    };
Mark Otto's avatar
dist    
Mark Otto committed
1203

XhmikosR's avatar
Dist    
XhmikosR committed
1204
1205
    _proto._handleSwipe = function _handleSwipe() {
      var absDeltax = Math.abs(this.touchDeltaX);
Mark Otto's avatar
dist    
Mark Otto committed
1206

XhmikosR's avatar
Dist    
XhmikosR committed
1207
1208
1209
      if (absDeltax <= SWIPE_THRESHOLD) {
        return;
      }
Mark Otto's avatar
grunt    
Mark Otto committed
1210

XhmikosR's avatar
XhmikosR committed
1211
1212
      var direction = absDeltax / this.touchDeltaX;
      this.touchDeltaX = 0; // swipe left
Jacob Thornton's avatar
Jacob Thornton committed
1213

XhmikosR's avatar
Dist    
XhmikosR committed
1214
1215
1216
      if (direction > 0) {
        this.prev();
      } // swipe right
Mark Otto's avatar
dist    
Mark Otto committed
1217
1218


XhmikosR's avatar
Dist    
XhmikosR committed
1219
1220
1221
1222
      if (direction < 0) {
        this.next();
      }
    };
Mark Otto's avatar
grunt    
Mark Otto committed
1223

XhmikosR's avatar
Dist    
XhmikosR committed
1224
1225
    _proto._addEventListeners = function _addEventListeners() {
      var _this2 = this;
Mark Otto's avatar
dist    
Mark Otto committed
1226

XhmikosR's avatar
Dist    
XhmikosR committed
1227
      if (this._config.keyboard) {
XhmikosR's avatar
XhmikosR committed
1228
        EventHandler.on(this._element, EVENT_KEYDOWN, function (event) {
XhmikosR's avatar
Dist    
XhmikosR committed
1229
1230
1231
          return _this2._keydown(event);
        });
      }
Mark Otto's avatar
dist    
Mark Otto committed
1232

XhmikosR's avatar
Dist    
XhmikosR committed
1233
      if (this._config.pause === 'hover') {
XhmikosR's avatar
XhmikosR committed
1234
        EventHandler.on(this._element, EVENT_MOUSEENTER, function (event) {
XhmikosR's avatar
Dist    
XhmikosR committed
1235
          return _this2.pause(event);
XhmikosR's avatar
XhmikosR committed
1236
        });
XhmikosR's avatar
XhmikosR committed
1237
        EventHandler.on(this._element, EVENT_MOUSELEAVE, function (event) {
XhmikosR's avatar
Dist    
XhmikosR committed
1238
1239
1240
          return _this2.cycle(event);
        });
      }
Jacob Thornton's avatar
Jacob Thornton committed
1241

1242
      if (this._config.touch && this._touchSupported) {
Mark Otto's avatar
Mark Otto committed
1243
1244
        this._addTouchEventListeners();
      }
XhmikosR's avatar
Dist    
XhmikosR committed
1245
    };
Jacob Thornton's avatar
Jacob Thornton committed
1246

XhmikosR's avatar
Dist    
XhmikosR committed
1247
1248
    _proto._addTouchEventListeners = function _addTouchEventListeners() {
      var _this3 = this;
Mark Otto's avatar
dist    
Mark Otto committed
1249

XhmikosR's avatar
Dist    
XhmikosR committed
1250
      var start = function start(event) {
XhmikosR's avatar
XhmikosR committed
1251
1252
        if (_this3._pointerEvent && PointerType[event.pointerType.toUpperCase()]) {
          _this3.touchStartX = event.clientX;
XhmikosR's avatar
Dist    
XhmikosR committed
1253
        } else if (!_this3._pointerEvent) {
XhmikosR's avatar
XhmikosR committed
1254
          _this3.touchStartX = event.touches[0].clientX;
Mark Otto's avatar
dist    
Mark Otto committed
1255
1256
        }
      };
Jacob Thornton's avatar
Jacob Thornton committed
1257

XhmikosR's avatar
Dist    
XhmikosR committed
1258
1259
      var move = function move(event) {
        // ensure swiping with one touch and not pinching
XhmikosR's avatar
XhmikosR committed
1260
        if (event.touches && event.touches.length > 1) {
XhmikosR's avatar
Dist    
XhmikosR committed
1261
1262
          _this3.touchDeltaX = 0;
        } else {
XhmikosR's avatar
XhmikosR committed
1263
          _this3.touchDeltaX = event.touches[0].clientX - _this3.touchStartX;
XhmikosR's avatar
Dist    
XhmikosR committed
1264
        }
Mark Otto's avatar
dist    
Mark Otto committed
1265
      };
Jacob Thornton's avatar
Jacob Thornton committed
1266

XhmikosR's avatar
Dist    
XhmikosR committed
1267
      var end = function end(event) {
XhmikosR's avatar
XhmikosR committed
1268
1269
        if (_this3._pointerEvent && PointerType[event.pointerType.toUpperCase()]) {
          _this3.touchDeltaX = event.clientX - _this3.touchStartX;
XhmikosR's avatar
Dist    
XhmikosR committed
1270
        }
Jacob Thornton's avatar
Jacob Thornton committed
1271

XhmikosR's avatar
Dist    
XhmikosR committed
1272
        _this3._handleSwipe();
Mark Otto's avatar
dist    
Mark Otto committed
1273

XhmikosR's avatar
Dist    
XhmikosR committed
1274
1275
1276
1277
1278
1279
1280
1281
1282
        if (_this3._config.pause === 'hover') {
          // If it's a touch-enabled device, mouseenter/leave are fired as
          // part of the mouse compatibility events on first tap - the carousel
          // would stop cycling until user tapped out of it;
          // here, we listen for touchend, explicitly pause the carousel
          // (as if it's the second time we tap on it, mouseenter compat event
          // is NOT fired) and after a timeout (to allow for mouse compatibility
          // events to fire) we explicitly restart cycling
          _this3.pause();
Mark Otto's avatar
dist    
Mark Otto committed
1283

XhmikosR's avatar
Dist    
XhmikosR committed
1284
1285
1286
          if (_this3.touchTimeout) {
            clearTimeout(_this3.touchTimeout);
          }
Jacob Thornton's avatar
Jacob Thornton committed
1287

XhmikosR's avatar
Dist    
XhmikosR committed
1288
1289
1290
1291
          _this3.touchTimeout = setTimeout(function (event) {
            return _this3.cycle(event);
          }, TOUCHEVENT_COMPAT_WAIT + _this3._config.interval);
        }
Mark Otto's avatar
dist    
Mark Otto committed
1292
      };
Jacob Thornton's avatar
Jacob Thornton committed
1293

XhmikosR's avatar
XhmikosR committed
1294
1295
      SelectorEngine.find(SELECTOR_ITEM_IMG, this._element).forEach(function (itemImg) {
        EventHandler.on(itemImg, EVENT_DRAG_START, function (e) {
XhmikosR's avatar
XhmikosR committed
1296
1297
          return e.preventDefault();
        });
XhmikosR's avatar
Dist    
XhmikosR committed
1298
      });
Jacob Thornton's avatar
Jacob Thornton committed
1299

XhmikosR's avatar
Dist    
XhmikosR committed
1300
      if (this._pointerEvent) {
XhmikosR's avatar
XhmikosR committed
1301
        EventHandler.on(this._element, EVENT_POINTERDOWN, function (event) {
XhmikosR's avatar
Dist    
XhmikosR committed
1302
1303
          return start(event);
        });
XhmikosR's avatar
XhmikosR committed
1304
        EventHandler.on(this._element, EVENT_POINTERUP, function (event) {
XhmikosR's avatar
Dist    
XhmikosR committed
1305
1306
          return end(event);
        });
Jacob Thornton's avatar
Jacob Thornton committed
1307

XhmikosR's avatar
XhmikosR committed
1308
        this._element.classList.add(CLASS_NAME_POINTER_EVENT);
XhmikosR's avatar
Dist    
XhmikosR committed
1309
      } else {
XhmikosR's avatar
XhmikosR committed
1310
        EventHandler.on(this._element, EVENT_TOUCHSTART, function (event) {
XhmikosR's avatar
Dist    
XhmikosR committed
1311
          return start(event);
Mark Otto's avatar
dist    
Mark Otto committed
1312
        });
XhmikosR's avatar
XhmikosR committed
1313
        EventHandler.on(this._element, EVENT_TOUCHMOVE, function (event) {
XhmikosR's avatar
Dist    
XhmikosR committed
1314
1315
          return move(event);
        });
XhmikosR's avatar
XhmikosR committed
1316
        EventHandler.on(this._element, EVENT_TOUCHEND, function (event) {
XhmikosR's avatar
Dist    
XhmikosR committed
1317
1318
1319
1320
          return end(event);
        });
      }
    };
Jacob Thornton's avatar
Jacob Thornton committed
1321

XhmikosR's avatar
Dist    
XhmikosR committed
1322
1323
1324
1325
    _proto._keydown = function _keydown(event) {
      if (/input|textarea/i.test(event.target.tagName)) {
        return;
      }
Mark Otto's avatar
dist    
Mark Otto committed
1326

XhmikosR's avatar
XhmikosR committed
1327
1328
      switch (event.key) {
        case ARROW_LEFT_KEY:
XhmikosR's avatar
Dist    
XhmikosR committed
1329
1330
1331
          event.preventDefault();
          this.prev();
          break;
Mark Otto's avatar
dist    
Mark Otto committed
1332

XhmikosR's avatar
XhmikosR committed
1333
        case ARROW_RIGHT_KEY:
XhmikosR's avatar
Dist    
XhmikosR committed
1334
1335
1336
1337
1338
          event.preventDefault();
          this.next();
          break;
      }
    };
Jacob Thornton's avatar
Jacob Thornton committed
1339

XhmikosR's avatar
Dist    
XhmikosR committed
1340
    _proto._getItemIndex = function _getItemIndex(element) {
XhmikosR's avatar
XhmikosR committed
1341
      this._items = element && element.parentNode ? SelectorEngine.find(SELECTOR_ITEM, element.parentNode) : [];
XhmikosR's avatar
Dist    
XhmikosR committed
1342
1343
      return this._items.indexOf(element);
    };
Mark Otto's avatar
grunt    
Mark Otto committed
1344

XhmikosR's avatar
Dist    
XhmikosR committed
1345
    _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) {
XhmikosR's avatar
XhmikosR committed
1346
1347
      var isNextDirection = direction === DIRECTION_NEXT;
      var isPrevDirection = direction === DIRECTION_PREV;
Mark Otto's avatar
grunt    
Mark Otto committed
1348

XhmikosR's avatar
Dist    
XhmikosR committed
1349
      var activeIndex = this._getItemIndex(activeElement);
Jacob Thornton's avatar
Jacob Thornton committed
1350

XhmikosR's avatar
Dist    
XhmikosR committed
1351
1352
      var lastItemIndex = this._items.length - 1;
      var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex;
Mark Otto's avatar
dist    
Mark Otto committed
1353

XhmikosR's avatar
Dist    
XhmikosR committed
1354
1355
1356
      if (isGoingToWrap && !this._config.wrap) {
        return activeElement;
      }
Jacob Thornton's avatar
Jacob Thornton committed
1357

XhmikosR's avatar
XhmikosR committed
1358
      var delta = direction === DIRECTION_PREV ? -1 : 1;
XhmikosR's avatar
Dist    
XhmikosR committed
1359
1360
1361
      var itemIndex = (activeIndex + delta) % this._items.length;
      return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex];
    };
Jacob Thornton's avatar
Jacob Thornton committed
1362

XhmikosR's avatar
Dist    
XhmikosR committed
1363
1364
    _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) {
      var targetIndex = this._getItemIndex(relatedTarget);
Mark Otto's avatar
grunt    
Mark Otto committed
1365

XhmikosR's avatar
XhmikosR committed
1366
      var fromIndex = this._getItemIndex(SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element));
Jacob Thornton's avatar
Jacob Thornton committed
1367

XhmikosR's avatar
XhmikosR committed
1368
      return EventHandler.trigger(this._element, EVENT_SLIDE, {
XhmikosR's avatar
Dist    
XhmikosR committed
1369
1370
1371
1372
1373
1374
        relatedTarget: relatedTarget,
        direction: eventDirectionName,
        from: fromIndex,
        to: targetIndex
      });
    };
Jacob Thornton's avatar
Jacob Thornton committed
1375

XhmikosR's avatar
Dist    
XhmikosR committed
1376
1377
    _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) {
      if (this._indicatorsElement) {
XhmikosR's avatar
XhmikosR committed
1378
        var indicators = SelectorEngine.find(SELECTOR_ACTIVE, this._indicatorsElement);
XhmikosR's avatar
XhmikosR committed
1379
1380

        for (var i = 0; i < indicators.length; i++) {
XhmikosR's avatar
XhmikosR committed
1381
          indicators[i].classList.remove(CLASS_NAME_ACTIVE$1);
XhmikosR's avatar
XhmikosR committed
1382
        }
Jacob Thornton's avatar
Jacob Thornton committed
1383

XhmikosR's avatar
Dist    
XhmikosR committed
1384
        var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)];
Jacob Thornton's avatar
Jacob Thornton committed
1385

XhmikosR's avatar
Dist    
XhmikosR committed
1386
        if (nextIndicator) {
XhmikosR's avatar
XhmikosR committed
1387
          nextIndicator.classList.add(CLASS_NAME_ACTIVE$1);
Mark Otto's avatar
dist    
Mark Otto committed
1388
        }
XhmikosR's avatar
Dist    
XhmikosR committed
1389
1390
      }
    };
Jacob Thornton's avatar
Jacob Thornton committed
1391

XhmikosR's avatar
XhmikosR committed
1392
1393
1394
1395
1396
1397
1398
    _proto._updateInterval = function _updateInterval() {
      var element = this._activeElement || SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);

      if (!element) {
        return;
      }

XhmikosR's avatar
XhmikosR committed
1399
      var elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10);
XhmikosR's avatar
XhmikosR committed
1400
1401
1402
1403
1404
1405
1406
1407
1408

      if (elementInterval) {
        this._config.defaultInterval = this._config.defaultInterval || this._config.interval;
        this._config.interval = elementInterval;
      } else {
        this._config.interval = this._config.defaultInterval || this._config.interval;
      }
    };

XhmikosR's avatar
Dist    
XhmikosR committed
1409
1410
    _proto._slide = function _slide(direction, element) {
      var _this4 = this;
Jacob Thornton's avatar
Jacob Thornton committed
1411

XhmikosR's avatar
XhmikosR committed
1412
      var activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);
Mark Otto's avatar
dist    
Mark Otto committed
1413

XhmikosR's avatar
Dist    
XhmikosR committed
1414
      var activeElementIndex = this._getItemIndex(activeElement);
Mark Otto's avatar
dist    
Mark Otto committed
1415

XhmikosR's avatar
Dist    
XhmikosR committed
1416
      var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement);
Mark Otto's avatar
dist    
Mark Otto committed
1417

XhmikosR's avatar
Dist    
XhmikosR committed
1418
      var nextElementIndex = this._getItemIndex(nextElement);
Jacob Thornton's avatar
Jacob Thornton committed
1419

XhmikosR's avatar
Dist    
XhmikosR committed
1420
1421
1422
1423
      var isCycling = Boolean(this._interval);
      var directionalClassName;
      var orderClassName;
      var eventDirectionName;
Jacob Thornton's avatar
Jacob Thornton committed
1424

XhmikosR's avatar
XhmikosR committed
1425
1426
1427
1428
      if (direction === DIRECTION_NEXT) {
        directionalClassName = CLASS_NAME_LEFT;
        orderClassName = CLASS_NAME_NEXT;
        eventDirectionName = DIRECTION_LEFT;
XhmikosR's avatar
Dist    
XhmikosR committed
1429
      } else {
XhmikosR's avatar
XhmikosR committed
1430
1431
1432
        directionalClassName = CLASS_NAME_RIGHT;
        orderClassName = CLASS_NAME_PREV;
        eventDirectionName = DIRECTION_RIGHT;
XhmikosR's avatar
Dist    
XhmikosR committed
1433
      }
Jacob Thornton's avatar
Jacob Thornton committed
1434

XhmikosR's avatar
XhmikosR committed
1435
      if (nextElement && nextElement.classList.contains(CLASS_NAME_ACTIVE$1)) {
XhmikosR's avatar
Dist    
XhmikosR committed
1436
1437
1438
        this._isSliding = false;
        return;
      }
Mark Otto's avatar
dist    
Mark Otto committed
1439

XhmikosR's avatar
Dist    
XhmikosR committed
1440
      var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName);
Mark Otto's avatar
dist    
Mark Otto committed
1441

XhmikosR's avatar
XhmikosR committed
1442
      if (slideEvent.defaultPrevented) {
XhmikosR's avatar
Dist    
XhmikosR committed
1443
1444
        return;
      }
Mark Otto's avatar
dist    
Mark Otto committed
1445

XhmikosR's avatar
Dist    
XhmikosR committed
1446
1447
1448
1449
      if (!activeElement || !nextElement) {
        // Some weirdness is happening, so we bail
        return;
      }
Mark Otto's avatar
dist    
Mark Otto committed
1450

XhmikosR's avatar
Dist    
XhmikosR committed
1451
      this._isSliding = true;
Jacob Thornton's avatar
Jacob Thornton committed
1452

XhmikosR's avatar
Dist    
XhmikosR committed
1453
1454
1455
      if (isCycling) {
        this.pause();
      }
Mark Otto's avatar
dist    
Mark Otto committed
1456

XhmikosR's avatar
Dist    
XhmikosR committed
1457
      this._setActiveIndicatorElement(nextElement);
Mark Otto's avatar
dist    
Mark Otto committed
1458

XhmikosR's avatar
XhmikosR committed
1459
1460
      this._activeElement = nextElement;

XhmikosR's avatar
XhmikosR committed
1461
      if (this._element.classList.contains(CLASS_NAME_SLIDE)) {
XhmikosR's avatar
XhmikosR committed
1462
1463
1464
1465
1466
1467
        nextElement.classList.add(orderClassName);
        reflow(nextElement);
        activeElement.classList.add(directionalClassName);
        nextElement.classList.add(directionalClassName);
        var transitionDuration = getTransitionDurationFromElement(activeElement);
        EventHandler.one(activeElement, TRANSITION_END, function () {
XhmikosR's avatar
XhmikosR committed
1468
          nextElement.classList.remove(directionalClassName, orderClassName);
XhmikosR's avatar
XhmikosR committed
1469
          nextElement.classList.add(CLASS_NAME_ACTIVE$1);
XhmikosR's avatar
XhmikosR committed
1470
          activeElement.classList.remove(CLASS_NAME_ACTIVE$1, orderClassName, directionalClassName);
XhmikosR's avatar
Dist    
XhmikosR committed
1471
1472
          _this4._isSliding = false;
          setTimeout(function () {
XhmikosR's avatar
XhmikosR committed
1473
            EventHandler.trigger(_this4._element, EVENT_SLID, {
XhmikosR's avatar
XhmikosR committed
1474
1475
1476
1477
1478
              relatedTarget: nextElement,
              direction: eventDirectionName,
              from: activeElementIndex,
              to: nextElementIndex
            });
XhmikosR's avatar
Dist    
XhmikosR committed
1479
          }, 0);
XhmikosR's avatar
XhmikosR committed
1480
1481
        });
        emulateTransitionEnd(activeElement, transitionDuration);
XhmikosR's avatar
Dist    
XhmikosR committed
1482
      } else {
XhmikosR's avatar
XhmikosR committed
1483
1484
        activeElement.classList.remove(CLASS_NAME_ACTIVE$1);
        nextElement.classList.add(CLASS_NAME_ACTIVE$1);
XhmikosR's avatar
Dist    
XhmikosR committed
1485
        this._isSliding = false;
XhmikosR's avatar
XhmikosR committed
1486
        EventHandler.trigger(this._element, EVENT_SLID, {
XhmikosR's avatar
XhmikosR committed
1487
1488
1489
1490
1491
          relatedTarget: nextElement,
          direction: eventDirectionName,
          from: activeElementIndex,
          to: nextElementIndex
        });
XhmikosR's avatar
Dist    
XhmikosR committed
1492
1493
1494
1495
1496
      }

      if (isCycling) {
        this.cycle();
      }
Mark Otto's avatar
Mark Otto committed
1497
1498
    } // Static
    ;
Jacob Thornton's avatar
Jacob Thornton committed
1499

XhmikosR's avatar
XhmikosR committed
1500
    Carousel.carouselInterface = function carouselInterface(element, config) {
XhmikosR's avatar
XhmikosR committed
1501
      var data = Data.getData(element, DATA_KEY$2);
Jacob Thornton's avatar
Jacob Thornton committed
1502

XhmikosR's avatar
XhmikosR committed
1503
      var _config = _extends({}, Default, Manipulator.getDataAttributes(element));
Jacob Thornton's avatar
Jacob Thornton committed
1504

XhmikosR's avatar
XhmikosR committed
1505
      if (typeof config === 'object') {
XhmikosR's avatar
XhmikosR committed
1506
        _config = _extends({}, _config, config);
XhmikosR's avatar
XhmikosR committed
1507
      }
Jacob Thornton's avatar
Jacob Thornton committed
1508

XhmikosR's avatar
XhmikosR committed
1509
      var action = typeof config === 'string' ? config : _config.slide;
Jacob Thornton's avatar
Jacob Thornton committed
1510

XhmikosR's avatar
XhmikosR committed
1511
1512
1513
1514
1515
1516
1517
1518
      if (!data) {
        data = new Carousel(element, _config);
      }

      if (typeof config === 'number') {
        data.to(config);
      } else if (typeof action === 'string') {
        if (typeof data[action] === 'undefined') {
XhmikosR's avatar
Dist.    
XhmikosR committed
1519
          throw new TypeError("No method named \"" + action + "\"");
Mark Otto's avatar
dist    
Mark Otto committed
1520
        }
Mark Otto's avatar
grunt    
Mark Otto committed
1521

XhmikosR's avatar
XhmikosR committed
1522
1523
1524
1525
1526
1527
        data[action]();
      } else if (_config.interval && _config.ride) {
        data.pause();
        data.cycle();
      }
    };
Mark Otto's avatar
grunt    
Mark Otto committed
1528

XhmikosR's avatar
XhmikosR committed
1529
    Carousel.jQueryInterface = function jQueryInterface(config) {
XhmikosR's avatar
XhmikosR committed
1530
      return this.each(function () {
XhmikosR's avatar
XhmikosR committed
1531
        Carousel.carouselInterface(this, config);
XhmikosR's avatar
Dist    
XhmikosR committed
1532
1533
      });
    };
Mark Otto's avatar
grunt    
Mark Otto committed
1534

XhmikosR's avatar
XhmikosR committed
1535
1536
    Carousel.dataApiClickHandler = function dataApiClickHandler(event) {
      var target = getElementFromSelector(this);
Jacob Thornton's avatar
Jacob Thornton committed
1537

XhmikosR's avatar
XhmikosR committed
1538
      if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {
XhmikosR's avatar
Dist    
XhmikosR committed
1539
1540
        return;
      }
Jacob Thornton's avatar
Jacob Thornton committed
1541

XhmikosR's avatar
XhmikosR committed
1542
      var config = _extends({}, Manipulator.getDataAttributes(target), Manipulator.getDataAttributes(this));
Mark Otto's avatar
dist    
Mark Otto committed
1543

XhmikosR's avatar
XhmikosR committed
1544
      var slideIndex = this.getAttribute('data-bs-slide-to');
Mark Otto's avatar
dist    
Mark Otto committed
1545

XhmikosR's avatar
Dist    
XhmikosR committed
1546
1547
      if (slideIndex) {
        config.interval = false;
Mark Otto's avatar
dist    
Mark Otto committed
1548
      }
Mark Otto's avatar
dist    
Mark Otto committed
1549

XhmikosR's avatar
XhmikosR committed
1550
      Carousel.carouselInterface(target, config);
Jacob Thornton's avatar
Jacob Thornton committed
1551

XhmikosR's avatar
Dist    
XhmikosR committed
1552
      if (slideIndex) {
XhmikosR's avatar
XhmikosR committed
1553
        Data.getData(target, DATA_KEY$2).to(slideIndex);
XhmikosR's avatar
Dist    
XhmikosR committed
1554
1555
1556
      }

      event.preventDefault();
Mark Otto's avatar
dist    
Mark Otto committed
1557
    };
Jacob Thornton's avatar
Jacob Thornton committed
1558

XhmikosR's avatar
XhmikosR committed
1559
    Carousel.getInstance = function getInstance(element) {
XhmikosR's avatar
XhmikosR committed
1560
1561
1562
      return Data.getData(element, DATA_KEY$2);
    };

XhmikosR's avatar
Dist    
XhmikosR committed
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
    _createClass(Carousel, null, [{
      key: "VERSION",
      get: function get() {
        return VERSION$2;
      }
    }, {
      key: "Default",
      get: function get() {
        return Default;
      }
    }]);

Mark Otto's avatar
dist    
Mark Otto committed
1575
    return Carousel;
XhmikosR's avatar
Dist    
XhmikosR committed
1576
1577
1578
1579
1580
1581
1582
1583
  }();
  /**
   * ------------------------------------------------------------------------
   * Data Api implementation
   * ------------------------------------------------------------------------
   */


XhmikosR's avatar
XhmikosR committed
1584
1585
1586
  EventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_SLIDE, Carousel.dataApiClickHandler);
  EventHandler.on(window, EVENT_LOAD_DATA_API, function () {
    var carousels = SelectorEngine.find(SELECTOR_DATA_RIDE);
XhmikosR's avatar
Dist    
XhmikosR committed
1587
1588

    for (var i = 0, len = carousels.length; i < len; i++) {
XhmikosR's avatar
XhmikosR committed
1589
      Carousel.carouselInterface(carousels[i], Data.getData(carousels[i], DATA_KEY$2));
XhmikosR's avatar
Dist    
XhmikosR committed
1590
1591
1592
1593
1594
1595
    }
  });
  /**
   * ------------------------------------------------------------------------
   * jQuery
   * ------------------------------------------------------------------------
XhmikosR's avatar
XhmikosR committed
1596
   * add .Carousel to jQuery only if jQuery is present
XhmikosR's avatar
Dist    
XhmikosR committed
1597
1598
   */

XhmikosR's avatar
XhmikosR committed
1599
1600
1601
  onDOMContentLoaded(function () {
    var $ = getjQuery();
    /* istanbul ignore if */
1602

XhmikosR's avatar
XhmikosR committed
1603
1604
1605
1606
    if ($) {
      var JQUERY_NO_CONFLICT = $.fn[NAME$2];
      $.fn[NAME$2] = Carousel.jQueryInterface;
      $.fn[NAME$2].Constructor = Carousel;
XhmikosR's avatar
Dist    
XhmikosR committed
1607

XhmikosR's avatar
XhmikosR committed
1608
1609
1610
1611
1612
1613
      $.fn[NAME$2].noConflict = function () {
        $.fn[NAME$2] = JQUERY_NO_CONFLICT;
        return Carousel.jQueryInterface;
      };
    }
  });
Jacob Thornton's avatar
Jacob Thornton committed
1614

XhmikosR's avatar
Dist    
XhmikosR committed
1615
1616
1617
1618
1619
1620
1621
  /**
   * ------------------------------------------------------------------------
   * Constants
   * ------------------------------------------------------------------------
   */

  var NAME$3 = 'collapse';
XhmikosR's avatar
XhmikosR committed
1622
  var VERSION$3 = '5.0.0-alpha3';
XhmikosR's avatar
Dist    
XhmikosR committed
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
  var DATA_KEY$3 = 'bs.collapse';
  var EVENT_KEY$3 = "." + DATA_KEY$3;
  var DATA_API_KEY$3 = '.data-api';
  var Default$1 = {
    toggle: true,
    parent: ''
  };
  var DefaultType$1 = {
    toggle: 'boolean',
    parent: '(string|element)'
  };
XhmikosR's avatar
XhmikosR committed
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
  var EVENT_SHOW = "show" + EVENT_KEY$3;
  var EVENT_SHOWN = "shown" + EVENT_KEY$3;
  var EVENT_HIDE = "hide" + EVENT_KEY$3;
  var EVENT_HIDDEN = "hidden" + EVENT_KEY$3;
  var EVENT_CLICK_DATA_API$3 = "click" + EVENT_KEY$3 + DATA_API_KEY$3;
  var CLASS_NAME_SHOW = 'show';
  var CLASS_NAME_COLLAPSE = 'collapse';
  var CLASS_NAME_COLLAPSING = 'collapsing';
  var CLASS_NAME_COLLAPSED = 'collapsed';
  var WIDTH = 'width';
  var HEIGHT = 'height';
  var SELECTOR_ACTIVES = '.show, .collapsing';
XhmikosR's avatar
XhmikosR committed
1646
  var SELECTOR_DATA_TOGGLE$1 = '[data-bs-toggle="collapse"]';
XhmikosR's avatar
XhmikosR committed
1647
1648
1649
1650
1651
  /**
   * ------------------------------------------------------------------------
   * Class Definition
   * ------------------------------------------------------------------------
   */
XhmikosR's avatar
Dist    
XhmikosR committed
1652

XhmikosR's avatar
XhmikosR committed
1653
  var Collapse = /*#__PURE__*/function () {
XhmikosR's avatar
Dist    
XhmikosR committed
1654
1655
1656
1657
    function Collapse(element, config) {
      this._isTransitioning = false;
      this._element = element;
      this._config = this._getConfig(config);
XhmikosR's avatar
XhmikosR committed
1658
      this._triggerArray = SelectorEngine.find(SELECTOR_DATA_TOGGLE$1 + "[href=\"#" + element.id + "\"]," + (SELECTOR_DATA_TOGGLE$1 + "[data-bs-target=\"#" + element.id + "\"]"));
XhmikosR's avatar
XhmikosR committed
1659
      var toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$1);
XhmikosR's avatar
Dist    
XhmikosR committed
1660
1661
1662

      for (var i = 0, len = toggleList.length; i < len; i++) {
        var elem = toggleList[i];
XhmikosR's avatar
XhmikosR committed
1663
        var selector = getSelectorFromElement(elem);
XhmikosR's avatar
XhmikosR committed
1664
        var filterElement = SelectorEngine.find(selector).filter(function (foundElem) {
XhmikosR's avatar
Dist    
XhmikosR committed
1665
1666
          return foundElem === element;
        });
Johann-S's avatar
build    
Johann-S committed
1667

XhmikosR's avatar
XhmikosR committed
1668
        if (selector !== null && filterElement.length) {
XhmikosR's avatar
Dist    
XhmikosR committed
1669
          this._selector = selector;
Jacob Thornton's avatar
Jacob Thornton committed
1670

XhmikosR's avatar
Dist    
XhmikosR committed
1671
          this._triggerArray.push(elem);
Mark Otto's avatar
dist    
Mark Otto committed
1672
        }
XhmikosR's avatar
Dist    
XhmikosR committed
1673
      }
Jacob Thornton's avatar
Jacob Thornton committed
1674

XhmikosR's avatar
Dist    
XhmikosR committed
1675
      this._parent = this._config.parent ? this._getParent() : null;
Jacob Thornton's avatar
Jacob Thornton committed
1676

XhmikosR's avatar
Dist    
XhmikosR committed
1677
1678
1679
      if (!this._config.parent) {
        this._addAriaAndCollapsedClass(this._element, this._triggerArray);
      }
Jacob Thornton's avatar
Jacob Thornton committed
1680

XhmikosR's avatar
Dist    
XhmikosR committed
1681
1682
1683
      if (this._config.toggle) {
        this.toggle();
      }
XhmikosR's avatar
XhmikosR committed
1684
1685

      Data.setData(element, DATA_KEY$3, this);
XhmikosR's avatar
Dist    
XhmikosR committed
1686
    } // Getters
Jacob Thornton's avatar
Jacob Thornton committed
1687
1688


XhmikosR's avatar
Dist    
XhmikosR committed
1689
    var _proto = Collapse.prototype;
Jacob Thornton's avatar
Jacob Thornton committed
1690

XhmikosR's avatar
Dist    
XhmikosR committed
1691
1692
    // Public
    _proto.toggle = function toggle() {
XhmikosR's avatar
XhmikosR committed
1693
      if (this._element.classList.contains(CLASS_NAME_SHOW)) {
XhmikosR's avatar
Dist    
XhmikosR committed
1694
1695
1696
1697
1698
        this.hide();
      } else {
        this.show();
      }
    };
Jacob Thornton's avatar
Jacob Thornton committed
1699

XhmikosR's avatar
Dist    
XhmikosR committed
1700
1701
    _proto.show = function show() {
      var _this = this;
Jacob Thornton's avatar
Jacob Thornton committed
1702

XhmikosR's avatar
XhmikosR committed
1703
      if (this._isTransitioning || this._element.classList.contains(CLASS_NAME_SHOW)) {
XhmikosR's avatar
Dist    
XhmikosR committed
1704
1705
        return;
      }
Mark Otto's avatar
dist    
Mark Otto committed
1706

XhmikosR's avatar
Dist    
XhmikosR committed
1707
1708
      var actives;
      var activesData;
Mark Otto's avatar
dist    
Mark Otto committed
1709

XhmikosR's avatar
Dist    
XhmikosR committed
1710
      if (this._parent) {
XhmikosR's avatar
XhmikosR committed
1711
        actives = SelectorEngine.find(SELECTOR_ACTIVES, this._parent).filter(function (elem) {
XhmikosR's avatar
Dist    
XhmikosR committed
1712
          if (typeof _this._config.parent === 'string') {
XhmikosR's avatar
XhmikosR committed
1713
            return elem.getAttribute('data-bs-parent') === _this._config.parent;
Mark Otto's avatar
dist    
Mark Otto committed
1714
          }
Jacob Thornton's avatar
Jacob Thornton committed
1715

XhmikosR's avatar
XhmikosR committed
1716
          return elem.classList.contains(CLASS_NAME_COLLAPSE);
XhmikosR's avatar
Dist    
XhmikosR committed
1717
        });
Mark Otto's avatar
dist    
Mark Otto committed
1718

XhmikosR's avatar
Dist    
XhmikosR committed
1719
1720
        if (actives.length === 0) {
          actives = null;
Jacob Thornton's avatar
Jacob Thornton committed
1721
        }
XhmikosR's avatar
Dist    
XhmikosR committed
1722
      }
Jacob Thornton's avatar
Jacob Thornton committed
1723

XhmikosR's avatar
XhmikosR committed
1724
1725
      var container = SelectorEngine.findOne(this._selector);

XhmikosR's avatar
Dist    
XhmikosR committed
1726
      if (actives) {
XhmikosR's avatar
XhmikosR committed
1727
        var tempActiveData = actives.find(function (elem) {
XhmikosR's avatar
XhmikosR committed
1728
1729
          return container !== elem;
        });
XhmikosR's avatar
XhmikosR committed
1730
        activesData = tempActiveData ? Data.getData(tempActiveData, DATA_KEY$3) : null;
Mark Otto's avatar
dist    
Mark Otto committed
1731

XhmikosR's avatar
Dist    
XhmikosR committed
1732
        if (activesData && activesData._isTransitioning) {
Mark Otto's avatar
dist    
Mark Otto committed
1733
1734
          return;
        }
XhmikosR's avatar
Dist    
XhmikosR committed
1735
      }
Mark Otto's avatar
grunt    
Mark Otto committed
1736

XhmikosR's avatar
XhmikosR committed
1737
      var startEvent = EventHandler.trigger(this._element, EVENT_SHOW);
Mark Otto's avatar
dist    
Mark Otto committed
1738

XhmikosR's avatar
XhmikosR committed
1739
      if (startEvent.defaultPrevented) {
XhmikosR's avatar
Dist    
XhmikosR committed
1740
1741
        return;
      }
Jacob Thornton's avatar
Jacob Thornton committed
1742

XhmikosR's avatar
Dist    
XhmikosR committed
1743
      if (actives) {
XhmikosR's avatar
XhmikosR committed
1744
1745
        actives.forEach(function (elemActive) {
          if (container !== elemActive) {
XhmikosR's avatar
XhmikosR committed
1746
            Collapse.collapseInterface(elemActive, 'hide');
XhmikosR's avatar
XhmikosR committed
1747
          }
Jacob Thornton's avatar
Jacob Thornton committed
1748

XhmikosR's avatar
XhmikosR committed
1749
1750
1751
1752
          if (!activesData) {
            Data.setData(elemActive, DATA_KEY$3, null);
          }
        });
XhmikosR's avatar
Dist    
XhmikosR committed
1753
      }
Jacob Thornton's avatar
Jacob Thornton committed
1754

XhmikosR's avatar
Dist    
XhmikosR committed
1755
      var dimension = this._getDimension();
Jacob Thornton's avatar
Jacob Thornton committed
1756

XhmikosR's avatar
XhmikosR committed
1757
      this._element.classList.remove(CLASS_NAME_COLLAPSE);
XhmikosR's avatar
XhmikosR committed
1758

XhmikosR's avatar
XhmikosR committed
1759
      this._element.classList.add(CLASS_NAME_COLLAPSING);
XhmikosR's avatar
XhmikosR committed
1760

XhmikosR's avatar
Dist    
XhmikosR committed
1761
1762
1763
      this._element.style[dimension] = 0;

      if (this._triggerArray.length) {
XhmikosR's avatar
XhmikosR committed
1764
        this._triggerArray.forEach(function (element) {
XhmikosR's avatar
XhmikosR committed
1765
          element.classList.remove(CLASS_NAME_COLLAPSED);
XhmikosR's avatar
XhmikosR committed
1766
1767
          element.setAttribute('aria-expanded', true);
        });
XhmikosR's avatar
Dist    
XhmikosR committed
1768
      }
Jacob Thornton's avatar
Jacob Thornton committed
1769

XhmikosR's avatar
Dist    
XhmikosR committed
1770
      this.setTransitioning(true);
Jacob Thornton's avatar
Jacob Thornton committed
1771

XhmikosR's avatar
Dist    
XhmikosR committed
1772
      var complete = function complete() {
XhmikosR's avatar
XhmikosR committed
1773
        _this._element.classList.remove(CLASS_NAME_COLLAPSING);
XhmikosR's avatar
XhmikosR committed
1774

XhmikosR's avatar
XhmikosR committed
1775
        _this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW);
XhmikosR's avatar
XhmikosR committed
1776

XhmikosR's avatar
Dist    
XhmikosR committed
1777
        _this._element.style[dimension] = '';
Jacob Thornton's avatar
Jacob Thornton committed
1778

XhmikosR's avatar
Dist    
XhmikosR committed
1779
1780
        _this.setTransitioning(false);

XhmikosR's avatar
XhmikosR committed
1781
        EventHandler.trigger(_this._element, EVENT_SHOWN);
Mark Otto's avatar
dist    
Mark Otto committed
1782
      };
Jacob Thornton's avatar
Jacob Thornton committed
1783

XhmikosR's avatar
Dist    
XhmikosR committed
1784
1785
      var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);
      var scrollSize = "scroll" + capitalizedDimension;
XhmikosR's avatar
XhmikosR committed
1786
1787
1788
      var transitionDuration = getTransitionDurationFromElement(this._element);
      EventHandler.one(this._element, TRANSITION_END, complete);
      emulateTransitionEnd(this._element, transitionDuration);
XhmikosR's avatar
Dist    
XhmikosR committed
1789
1790
      this._element.style[dimension] = this._element[scrollSize] + "px";
    };
Jacob Thornton's avatar
Jacob Thornton committed
1791

XhmikosR's avatar
Dist    
XhmikosR committed
1792
1793
    _proto.hide = function hide() {
      var _this2 = this;
Jacob Thornton's avatar
Jacob Thornton committed
1794

XhmikosR's avatar
XhmikosR committed
1795
      if (this._isTransitioning || !this._element.classList.contains(CLASS_NAME_SHOW)) {
XhmikosR's avatar
Dist    
XhmikosR committed
1796
1797
        return;
      }
Mark Otto's avatar
dist    
Mark Otto committed
1798

XhmikosR's avatar
XhmikosR committed
1799
      var startEvent = EventHandler.trigger(this._element, EVENT_HIDE);
Jacob Thornton's avatar
Jacob Thornton committed
1800

XhmikosR's avatar
XhmikosR committed
1801
      if (startEvent.defaultPrevented) {
XhmikosR's avatar
Dist    
XhmikosR committed
1802
1803
        return;
      }
Jacob Thornton's avatar
Jacob Thornton committed
1804

XhmikosR's avatar
Dist    
XhmikosR committed
1805
      var dimension = this._getDimension();
Jacob Thornton's avatar
Jacob Thornton committed
1806

XhmikosR's avatar
Dist    
XhmikosR committed
1807
      this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + "px";
XhmikosR's avatar
XhmikosR committed
1808
1809
      reflow(this._element);

XhmikosR's avatar
XhmikosR committed
1810
      this._element.classList.add(CLASS_NAME_COLLAPSING);
XhmikosR's avatar
XhmikosR committed
1811

XhmikosR's avatar
XhmikosR committed
1812
      this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW);
XhmikosR's avatar
XhmikosR committed
1813

XhmikosR's avatar
Dist    
XhmikosR committed
1814
      var triggerArrayLength = this._triggerArray.length;
Mark Otto's avatar
dist    
Mark Otto committed
1815

XhmikosR's avatar
Dist    
XhmikosR committed
1816
1817
1818
      if (triggerArrayLength > 0) {
        for (var i = 0; i < triggerArrayLength; i++) {
          var trigger = this._triggerArray[i];
XhmikosR's avatar
XhmikosR committed
1819
          var elem = getElementFromSelector(trigger);
XhmikosR's avatar
Dist    
XhmikosR committed
1820

XhmikosR's avatar
XhmikosR committed
1821
1822
          if (elem && !elem.classList.contains(CLASS_NAME_SHOW)) {
            trigger.classList.add(CLASS_NAME_COLLAPSED);
XhmikosR's avatar
XhmikosR committed
1823
            trigger.setAttribute('aria-expanded', false);
Mark Otto's avatar
build    
Mark Otto committed
1824
1825
          }
        }
XhmikosR's avatar
Dist    
XhmikosR committed
1826
      }
Mark Otto's avatar
dist    
Mark Otto committed
1827

XhmikosR's avatar
Dist    
XhmikosR committed
1828
      this.setTransitioning(true);
Jacob Thornton's avatar
Jacob Thornton committed
1829

XhmikosR's avatar
Dist    
XhmikosR committed
1830
1831
      var complete = function complete() {
        _this2.setTransitioning(false);
Jacob Thornton's avatar
Jacob Thornton committed
1832

XhmikosR's avatar
XhmikosR committed
1833
        _this2._element.classList.remove(CLASS_NAME_COLLAPSING);
XhmikosR's avatar
XhmikosR committed
1834

XhmikosR's avatar
XhmikosR committed
1835
        _this2._element.classList.add(CLASS_NAME_COLLAPSE);
XhmikosR's avatar
XhmikosR committed
1836

XhmikosR's avatar
XhmikosR committed
1837
        EventHandler.trigger(_this2._element, EVENT_HIDDEN);
Mark Otto's avatar
dist    
Mark Otto committed
1838
      };
Jacob Thornton's avatar
Jacob Thornton committed
1839

XhmikosR's avatar
Dist    
XhmikosR committed
1840
      this._element.style[dimension] = '';
XhmikosR's avatar
XhmikosR committed
1841
1842
1843
      var transitionDuration = getTransitionDurationFromElement(this._element);
      EventHandler.one(this._element, TRANSITION_END, complete);
      emulateTransitionEnd(this._element, transitionDuration);
XhmikosR's avatar
Dist    
XhmikosR committed
1844
    };
Jacob Thornton's avatar
Jacob Thornton committed
1845

XhmikosR's avatar
Dist    
XhmikosR committed
1846
1847
1848
    _proto.setTransitioning = function setTransitioning(isTransitioning) {
      this._isTransitioning = isTransitioning;
    };
Jacob Thornton's avatar
Jacob Thornton committed
1849

XhmikosR's avatar
Dist    
XhmikosR committed
1850
    _proto.dispose = function dispose() {
XhmikosR's avatar
XhmikosR committed
1851
      Data.removeData(this._element, DATA_KEY$3);
XhmikosR's avatar
Dist    
XhmikosR committed
1852
1853
1854
1855
1856
      this._config = null;
      this._parent = null;
      this._element = null;
      this._triggerArray = null;
      this._isTransitioning = null;
Mark Otto's avatar
Mark Otto committed
1857
1858
    } // Private
    ;
Mark Otto's avatar
dist    
Mark Otto committed
1859

XhmikosR's avatar
Dist    
XhmikosR committed
1860
    _proto._getConfig = function _getConfig(config) {
XhmikosR's avatar
XhmikosR committed
1861
      config = _extends({}, Default$1, config);
XhmikosR's avatar
Dist    
XhmikosR committed
1862
      config.toggle = Boolean(config.toggle); // Coerce string values
Mark Otto's avatar
grunt    
Mark Otto committed
1863

XhmikosR's avatar
XhmikosR committed
1864
      typeCheckConfig(NAME$3, config, DefaultType$1);
XhmikosR's avatar
Dist    
XhmikosR committed
1865
1866
      return config;
    };
Mark Otto's avatar
grunt    
Mark Otto committed
1867

XhmikosR's avatar
Dist    
XhmikosR committed
1868
    _proto._getDimension = function _getDimension() {
XhmikosR's avatar
XhmikosR committed
1869
      return this._element.classList.contains(WIDTH) ? WIDTH : HEIGHT;
XhmikosR's avatar
Dist    
XhmikosR committed
1870
    };
Mark Otto's avatar
grunt    
Mark Otto committed
1871

XhmikosR's avatar
Dist    
XhmikosR committed
1872
1873
    _proto._getParent = function _getParent() {
      var _this3 = this;
Mark Otto's avatar
grunt    
Mark Otto committed
1874

XhmikosR's avatar
Dist.    
XhmikosR committed
1875
      var parent = this._config.parent;
Mark Otto's avatar
dist    
Mark Otto committed
1876

XhmikosR's avatar
Dist.    
XhmikosR committed
1877
1878
1879
1880
      if (isElement(parent)) {
        // it's a jQuery object
        if (typeof parent.jquery !== 'undefined' || typeof parent[0] !== 'undefined') {
          parent = parent[0];
XhmikosR's avatar
Dist    
XhmikosR committed
1881
1882
        }
      } else {
XhmikosR's avatar
Dist.    
XhmikosR committed
1883
        parent = SelectorEngine.findOne(parent);
XhmikosR's avatar
Dist    
XhmikosR committed
1884
      }
Mark Otto's avatar
grunt    
Mark Otto committed
1885

XhmikosR's avatar
XhmikosR committed
1886
      var selector = SELECTOR_DATA_TOGGLE$1 + "[data-bs-parent=\"" + parent + "\"]";
XhmikosR's avatar
XhmikosR committed
1887
      SelectorEngine.find(selector, parent).forEach(function (element) {
XhmikosR's avatar
XhmikosR committed
1888
        var selected = getElementFromSelector(element);
1889
1890

        _this3._addAriaAndCollapsedClass(selected, [element]);
XhmikosR's avatar
Dist    
XhmikosR committed
1891
1892
1893
      });
      return parent;
    };
Mark Otto's avatar
grunt    
Mark Otto committed
1894

XhmikosR's avatar
Dist    
XhmikosR committed
1895
    _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {
XhmikosR's avatar
XhmikosR committed
1896
1897
1898
      if (!element || !triggerArray.length) {
        return;
      }
Jacob Thornton's avatar
Jacob Thornton committed
1899

XhmikosR's avatar
XhmikosR committed
1900
1901
1902
1903
1904
1905
      var isOpen = element.classList.contains(CLASS_NAME_SHOW);
      triggerArray.forEach(function (elem) {
        if (isOpen) {
          elem.classList.remove(CLASS_NAME_COLLAPSED);
        } else {
          elem.classList.add(CLASS_NAME_COLLAPSED);
XhmikosR's avatar
XhmikosR committed
1906
        }
XhmikosR's avatar
XhmikosR committed
1907
1908
1909

        elem.setAttribute('aria-expanded', isOpen);
      });
Mark Otto's avatar
Mark Otto committed
1910
1911
    } // Static
    ;
Jacob Thornton's avatar
Jacob Thornton committed
1912

XhmikosR's avatar
XhmikosR committed
1913
    Collapse.collapseInterface = function collapseInterface(element, config) {
XhmikosR's avatar
XhmikosR committed
1914
      var data = Data.getData(element, DATA_KEY$3);
Jacob Thornton's avatar
Jacob Thornton committed
1915

XhmikosR's avatar
XhmikosR committed
1916
      var _config = _extends({}, Default$1, Manipulator.getDataAttributes(element), typeof config === 'object' && config ? config : {});
Mark Otto's avatar
grunt    
Mark Otto committed
1917

XhmikosR's avatar
XhmikosR committed
1918
      if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {
XhmikosR's avatar
XhmikosR committed
1919
1920
        _config.toggle = false;
      }
Mark Otto's avatar
dist    
Mark Otto committed
1921

XhmikosR's avatar
XhmikosR committed
1922
1923
1924
1925
1926
1927
      if (!data) {
        data = new Collapse(element, _config);
      }

      if (typeof config === 'string') {
        if (typeof data[config] === 'undefined') {
XhmikosR's avatar
Dist.    
XhmikosR committed
1928
          throw new TypeError("No method named \"" + config + "\"");
XhmikosR's avatar
Dist    
XhmikosR committed
1929
        }
Mark Otto's avatar
grunt    
Mark Otto committed
1930

XhmikosR's avatar
XhmikosR committed
1931
1932
1933
        data[config]();
      }
    };
Mark Otto's avatar
dist    
Mark Otto committed
1934

XhmikosR's avatar
XhmikosR committed
1935
    Collapse.jQueryInterface = function jQueryInterface(config) {
XhmikosR's avatar
XhmikosR committed
1936
      return this.each(function () {
XhmikosR's avatar
XhmikosR committed
1937
        Collapse.collapseInterface(this, config);
XhmikosR's avatar
Dist    
XhmikosR committed
1938
1939
      });
    };
Mark Otto's avatar
grunt    
Mark Otto committed
1940

XhmikosR's avatar
XhmikosR committed
1941
    Collapse.getInstance = function getInstance(element) {
XhmikosR's avatar
XhmikosR committed
1942
1943
1944
      return Data.getData(element, DATA_KEY$3);
    };

XhmikosR's avatar
Dist    
XhmikosR committed
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
    _createClass(Collapse, null, [{
      key: "VERSION",
      get: function get() {
        return VERSION$3;
      }
    }, {
      key: "Default",
      get: function get() {
        return Default$1;
      }
    }]);
Jacob Thornton's avatar
Jacob Thornton committed
1956

XhmikosR's avatar
Dist    
XhmikosR committed
1957
1958
1959
1960
1961
1962
1963
    return Collapse;
  }();
  /**
   * ------------------------------------------------------------------------
   * Data Api implementation
   * ------------------------------------------------------------------------
   */
Mark Otto's avatar
dist    
Mark Otto committed
1964

Jacob Thornton's avatar
Jacob Thornton committed
1965

XhmikosR's avatar
XhmikosR committed
1966
  EventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$1, function (event) {
XhmikosR's avatar
Dist    
XhmikosR committed
1967
    // preventDefault only for <a> elements (which change the URL) not inside the collapsible element
XhmikosR's avatar
XhmikosR committed
1968
    if (event.target.tagName === 'A') {
XhmikosR's avatar
Dist    
XhmikosR committed
1969
1970
      event.preventDefault();
    }
Mark Otto's avatar
dist    
Mark Otto committed
1971

XhmikosR's avatar
XhmikosR committed
1972
1973
    var triggerData = Manipulator.getDataAttributes(this);
    var selector = getSelectorFromElement(this);
XhmikosR's avatar
XhmikosR committed
1974
    var selectorElements = SelectorEngine.find(selector);
XhmikosR's avatar
XhmikosR committed
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
    selectorElements.forEach(function (element) {
      var data = Data.getData(element, DATA_KEY$3);
      var config;

      if (data) {
        // update parent attribute
        if (data._parent === null && typeof triggerData.parent === 'string') {
          data._config.parent = triggerData.parent;
          data._parent = data._getParent();
        }

        config = 'toggle';
      } else {
        config = triggerData;
      }
Mark Otto's avatar
dist    
Mark Otto committed
1990

XhmikosR's avatar
XhmikosR committed
1991
      Collapse.collapseInterface(element, config);
XhmikosR's avatar
Dist    
XhmikosR committed
1992
1993
1994
1995
1996
1997
    });
  });
  /**
   * ------------------------------------------------------------------------
   * jQuery
   * ------------------------------------------------------------------------
XhmikosR's avatar
XhmikosR committed
1998
   * add .Collapse to jQuery only if jQuery is present
XhmikosR's avatar
Dist    
XhmikosR committed
1999
   */
Jacob Thornton's avatar
Jacob Thornton committed
2000

For faster browsing, not all history is shown. View entire blame