bootstrap 4.5.0 → 5.0.0.alpha3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (135) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +1 -1
  3. data/README.md +5 -2
  4. data/assets/javascripts/bootstrap-sprockets.js +12 -9
  5. data/assets/javascripts/bootstrap.js +1852 -1266
  6. data/assets/javascripts/bootstrap.min.js +3 -3
  7. data/assets/javascripts/bootstrap/alert.js +149 -69
  8. data/assets/javascripts/bootstrap/button.js +71 -141
  9. data/assets/javascripts/bootstrap/carousel.js +291 -192
  10. data/assets/javascripts/bootstrap/collapse.js +285 -161
  11. data/assets/javascripts/bootstrap/dom/data.js +81 -0
  12. data/assets/javascripts/bootstrap/dom/event-handler.js +307 -0
  13. data/assets/javascripts/bootstrap/dom/manipulator.js +85 -0
  14. data/assets/javascripts/bootstrap/dom/selector-engine.js +98 -0
  15. data/assets/javascripts/bootstrap/dropdown.js +240 -218
  16. data/assets/javascripts/bootstrap/modal.js +342 -234
  17. data/assets/javascripts/bootstrap/popover.js +82 -106
  18. data/assets/javascripts/bootstrap/scrollspy.js +154 -114
  19. data/assets/javascripts/bootstrap/tab.js +166 -80
  20. data/assets/javascripts/bootstrap/toast.js +171 -113
  21. data/assets/javascripts/bootstrap/tooltip.js +351 -219
  22. data/assets/stylesheets/_bootstrap-grid.scss +52 -16
  23. data/assets/stylesheets/_bootstrap-reboot.scss +5 -2
  24. data/assets/stylesheets/_bootstrap.scss +16 -9
  25. data/assets/stylesheets/bootstrap/_accordion.scss +125 -0
  26. data/assets/stylesheets/bootstrap/_alert.scss +15 -9
  27. data/assets/stylesheets/bootstrap/_badge.scss +2 -27
  28. data/assets/stylesheets/bootstrap/_breadcrumb.scss +3 -19
  29. data/assets/stylesheets/bootstrap/_button-group.scss +16 -40
  30. data/assets/stylesheets/bootstrap/_buttons.scss +27 -60
  31. data/assets/stylesheets/bootstrap/_card.scss +30 -97
  32. data/assets/stylesheets/bootstrap/_carousel.scss +30 -15
  33. data/assets/stylesheets/bootstrap/_close.scss +30 -30
  34. data/assets/stylesheets/bootstrap/_containers.scss +41 -0
  35. data/assets/stylesheets/bootstrap/_dropdown.scss +52 -8
  36. data/assets/stylesheets/bootstrap/_forms.scss +9 -347
  37. data/assets/stylesheets/bootstrap/_functions.scss +88 -23
  38. data/assets/stylesheets/bootstrap/_grid.scss +3 -58
  39. data/assets/stylesheets/bootstrap/_helpers.scss +7 -0
  40. data/assets/stylesheets/bootstrap/_list-group.scss +14 -5
  41. data/assets/stylesheets/bootstrap/_mixins.scss +7 -13
  42. data/assets/stylesheets/bootstrap/_modal.scss +41 -47
  43. data/assets/stylesheets/bootstrap/_nav.scss +14 -8
  44. data/assets/stylesheets/bootstrap/_navbar.scss +43 -74
  45. data/assets/stylesheets/bootstrap/_pagination.scss +10 -20
  46. data/assets/stylesheets/bootstrap/_popover.scss +6 -6
  47. data/assets/stylesheets/bootstrap/_progress.scss +3 -5
  48. data/assets/stylesheets/bootstrap/_reboot.scss +310 -171
  49. data/assets/stylesheets/bootstrap/_root.scss +5 -9
  50. data/assets/stylesheets/bootstrap/_spinners.scss +13 -4
  51. data/assets/stylesheets/bootstrap/_tables.scss +80 -114
  52. data/assets/stylesheets/bootstrap/_toasts.scss +6 -2
  53. data/assets/stylesheets/bootstrap/_tooltip.scss +5 -5
  54. data/assets/stylesheets/bootstrap/_transitions.scss +0 -1
  55. data/assets/stylesheets/bootstrap/_type.scss +38 -59
  56. data/assets/stylesheets/bootstrap/_utilities.scss +545 -18
  57. data/assets/stylesheets/bootstrap/_variables.scss +653 -469
  58. data/assets/stylesheets/bootstrap/bootstrap-utilities.scss +18 -0
  59. data/assets/stylesheets/bootstrap/forms/_floating-labels.scss +61 -0
  60. data/assets/stylesheets/bootstrap/forms/_form-check.scss +151 -0
  61. data/assets/stylesheets/bootstrap/forms/_form-control.scss +223 -0
  62. data/assets/stylesheets/bootstrap/forms/_form-range.scss +91 -0
  63. data/assets/stylesheets/bootstrap/forms/_form-select.scss +68 -0
  64. data/assets/stylesheets/bootstrap/forms/_form-text.scss +11 -0
  65. data/assets/stylesheets/bootstrap/forms/_input-group.scss +121 -0
  66. data/assets/stylesheets/bootstrap/forms/_labels.scss +36 -0
  67. data/assets/stylesheets/bootstrap/forms/_validation.scss +12 -0
  68. data/assets/stylesheets/bootstrap/{utilities → helpers}/_clearfix.scss +0 -0
  69. data/assets/stylesheets/bootstrap/helpers/_colored-links.scss +12 -0
  70. data/assets/stylesheets/bootstrap/helpers/_position.scss +30 -0
  71. data/assets/stylesheets/bootstrap/helpers/_ratio.scss +26 -0
  72. data/assets/stylesheets/bootstrap/helpers/_stretched-link.scss +15 -0
  73. data/assets/stylesheets/bootstrap/helpers/_text-truncation.scss +7 -0
  74. data/assets/stylesheets/bootstrap/helpers/_visually-hidden.scss +8 -0
  75. data/assets/stylesheets/bootstrap/mixins/_alert.scss +1 -5
  76. data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +9 -9
  77. data/assets/stylesheets/bootstrap/mixins/_box-shadow.scss +7 -9
  78. data/assets/stylesheets/bootstrap/mixins/_breakpoints.scss +14 -10
  79. data/assets/stylesheets/bootstrap/mixins/_buttons.scss +65 -47
  80. data/assets/stylesheets/bootstrap/mixins/_caret.scss +4 -4
  81. data/assets/stylesheets/bootstrap/mixins/_clearfix.scss +2 -0
  82. data/assets/stylesheets/bootstrap/mixins/_container.scss +11 -0
  83. data/assets/stylesheets/bootstrap/mixins/_forms.scss +17 -77
  84. data/assets/stylesheets/bootstrap/mixins/_gradients.scss +9 -11
  85. data/assets/stylesheets/bootstrap/mixins/_grid.scss +84 -33
  86. data/assets/stylesheets/bootstrap/mixins/_image.scss +1 -21
  87. data/assets/stylesheets/bootstrap/mixins/_list-group.scss +3 -2
  88. data/assets/stylesheets/bootstrap/mixins/_lists.scss +1 -1
  89. data/assets/stylesheets/bootstrap/mixins/_pagination.scss +15 -8
  90. data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +2 -2
  91. data/assets/stylesheets/bootstrap/mixins/_table-variants.scss +21 -0
  92. data/assets/stylesheets/bootstrap/mixins/_transition.scss +2 -2
  93. data/assets/stylesheets/bootstrap/mixins/_utilities.scss +49 -0
  94. data/assets/stylesheets/bootstrap/mixins/_visually-hidden.scss +28 -0
  95. data/assets/stylesheets/bootstrap/utilities/_api.scss +47 -0
  96. data/assets/stylesheets/bootstrap/vendor/_rfs.scss +234 -126
  97. data/lib/bootstrap/version.rb +2 -2
  98. data/tasks/updater/js.rb +3 -3
  99. metadata +33 -41
  100. data/assets/javascripts/bootstrap/util.js +0 -192
  101. data/assets/stylesheets/bootstrap/_code.scss +0 -48
  102. data/assets/stylesheets/bootstrap/_custom-forms.scss +0 -522
  103. data/assets/stylesheets/bootstrap/_input-group.scss +0 -192
  104. data/assets/stylesheets/bootstrap/_jumbotron.scss +0 -17
  105. data/assets/stylesheets/bootstrap/_media.scss +0 -8
  106. data/assets/stylesheets/bootstrap/_print.scss +0 -141
  107. data/assets/stylesheets/bootstrap/mixins/_background-variant.scss +0 -23
  108. data/assets/stylesheets/bootstrap/mixins/_badge.scss +0 -17
  109. data/assets/stylesheets/bootstrap/mixins/_float.scss +0 -14
  110. data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +0 -81
  111. data/assets/stylesheets/bootstrap/mixins/_hover.scss +0 -37
  112. data/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +0 -11
  113. data/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +0 -34
  114. data/assets/stylesheets/bootstrap/mixins/_size.scss +0 -7
  115. data/assets/stylesheets/bootstrap/mixins/_table-row.scss +0 -39
  116. data/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +0 -17
  117. data/assets/stylesheets/bootstrap/mixins/_text-hide.scss +0 -11
  118. data/assets/stylesheets/bootstrap/mixins/_visibility.scss +0 -8
  119. data/assets/stylesheets/bootstrap/utilities/_align.scss +0 -8
  120. data/assets/stylesheets/bootstrap/utilities/_background.scss +0 -19
  121. data/assets/stylesheets/bootstrap/utilities/_borders.scss +0 -75
  122. data/assets/stylesheets/bootstrap/utilities/_display.scss +0 -26
  123. data/assets/stylesheets/bootstrap/utilities/_embed.scss +0 -39
  124. data/assets/stylesheets/bootstrap/utilities/_flex.scss +0 -51
  125. data/assets/stylesheets/bootstrap/utilities/_float.scss +0 -11
  126. data/assets/stylesheets/bootstrap/utilities/_interactions.scss +0 -5
  127. data/assets/stylesheets/bootstrap/utilities/_overflow.scss +0 -5
  128. data/assets/stylesheets/bootstrap/utilities/_position.scss +0 -32
  129. data/assets/stylesheets/bootstrap/utilities/_screenreaders.scss +0 -11
  130. data/assets/stylesheets/bootstrap/utilities/_shadows.scss +0 -6
  131. data/assets/stylesheets/bootstrap/utilities/_sizing.scss +0 -20
  132. data/assets/stylesheets/bootstrap/utilities/_spacing.scss +0 -73
  133. data/assets/stylesheets/bootstrap/utilities/_stretched-link.scss +0 -19
  134. data/assets/stylesheets/bootstrap/utilities/_text.scss +0 -71
  135. data/assets/stylesheets/bootstrap/utilities/_visibility.scss +0 -13
@@ -1,82 +1,153 @@
1
1
  /*!
2
- * Bootstrap collapse.js v4.5.0 (https://getbootstrap.com/)
2
+ * Bootstrap collapse.js v5.0.0-alpha3 (https://getbootstrap.com/)
3
3
  * Copyright 2011-2020 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
4
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
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('jquery'), require('./util.js')) :
8
- typeof define === 'function' && define.amd ? define(['jquery', './util.js'], factory) :
9
- (global = global || self, global.Collapse = factory(global.jQuery, global.Util));
10
- }(this, (function ($, Util) { 'use strict';
11
-
12
- $ = $ && Object.prototype.hasOwnProperty.call($, 'default') ? $['default'] : $;
13
- Util = Util && Object.prototype.hasOwnProperty.call(Util, 'default') ? Util['default'] : Util;
14
-
15
- function _defineProperties(target, props) {
16
- for (var i = 0; i < props.length; i++) {
17
- var descriptor = props[i];
18
- descriptor.enumerable = descriptor.enumerable || false;
19
- descriptor.configurable = true;
20
- if ("value" in descriptor) descriptor.writable = true;
21
- Object.defineProperty(target, descriptor.key, descriptor);
7
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/data.js'), require('./dom/event-handler.js'), require('./dom/manipulator.js'), require('./dom/selector-engine.js')) :
8
+ typeof define === 'function' && define.amd ? define(['./dom/data.js', './dom/event-handler.js', './dom/manipulator.js', './dom/selector-engine.js'], factory) :
9
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Collapse = factory(global.Data, global.EventHandler, global.Manipulator, global.SelectorEngine));
10
+ }(this, (function (Data, EventHandler, Manipulator, SelectorEngine) { 'use strict';
11
+
12
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
13
+
14
+ var Data__default = /*#__PURE__*/_interopDefaultLegacy(Data);
15
+ var EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);
16
+ var Manipulator__default = /*#__PURE__*/_interopDefaultLegacy(Manipulator);
17
+ var SelectorEngine__default = /*#__PURE__*/_interopDefaultLegacy(SelectorEngine);
18
+
19
+ /**
20
+ * --------------------------------------------------------------------------
21
+ * Bootstrap (v5.0.0-alpha3): util/index.js
22
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
23
+ * --------------------------------------------------------------------------
24
+ */
25
+ var MILLISECONDS_MULTIPLIER = 1000;
26
+ var TRANSITION_END = 'transitionend'; // Shoutout AngusCroll (https://goo.gl/pxwQGp)
27
+
28
+ var toType = function toType(obj) {
29
+ if (obj === null || obj === undefined) {
30
+ return "" + obj;
22
31
  }
23
- }
24
-
25
- function _createClass(Constructor, protoProps, staticProps) {
26
- if (protoProps) _defineProperties(Constructor.prototype, protoProps);
27
- if (staticProps) _defineProperties(Constructor, staticProps);
28
- return Constructor;
29
- }
30
-
31
- function _defineProperty(obj, key, value) {
32
- if (key in obj) {
33
- Object.defineProperty(obj, key, {
34
- value: value,
35
- enumerable: true,
36
- configurable: true,
37
- writable: true
38
- });
39
- } else {
40
- obj[key] = value;
32
+
33
+ return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase();
34
+ };
35
+
36
+ var getSelector = function getSelector(element) {
37
+ var selector = element.getAttribute('data-target');
38
+
39
+ if (!selector || selector === '#') {
40
+ var hrefAttr = element.getAttribute('href');
41
+ selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null;
41
42
  }
42
43
 
43
- return obj;
44
- }
44
+ return selector;
45
+ };
45
46
 
46
- function ownKeys(object, enumerableOnly) {
47
- var keys = Object.keys(object);
47
+ var getSelectorFromElement = function getSelectorFromElement(element) {
48
+ var selector = getSelector(element);
48
49
 
49
- if (Object.getOwnPropertySymbols) {
50
- var symbols = Object.getOwnPropertySymbols(object);
51
- if (enumerableOnly) symbols = symbols.filter(function (sym) {
52
- return Object.getOwnPropertyDescriptor(object, sym).enumerable;
53
- });
54
- keys.push.apply(keys, symbols);
50
+ if (selector) {
51
+ return document.querySelector(selector) ? selector : null;
55
52
  }
56
53
 
57
- return keys;
58
- }
54
+ return null;
55
+ };
59
56
 
60
- function _objectSpread2(target) {
61
- for (var i = 1; i < arguments.length; i++) {
62
- var source = arguments[i] != null ? arguments[i] : {};
57
+ var getElementFromSelector = function getElementFromSelector(element) {
58
+ var selector = getSelector(element);
59
+ return selector ? document.querySelector(selector) : null;
60
+ };
63
61
 
64
- if (i % 2) {
65
- ownKeys(Object(source), true).forEach(function (key) {
66
- _defineProperty(target, key, source[key]);
67
- });
68
- } else if (Object.getOwnPropertyDescriptors) {
69
- Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
70
- } else {
71
- ownKeys(Object(source)).forEach(function (key) {
72
- Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
73
- });
62
+ var getTransitionDurationFromElement = function getTransitionDurationFromElement(element) {
63
+ if (!element) {
64
+ return 0;
65
+ } // Get transition-duration of the element
66
+
67
+
68
+ var _window$getComputedSt = window.getComputedStyle(element),
69
+ transitionDuration = _window$getComputedSt.transitionDuration,
70
+ transitionDelay = _window$getComputedSt.transitionDelay;
71
+
72
+ var floatTransitionDuration = parseFloat(transitionDuration);
73
+ var floatTransitionDelay = parseFloat(transitionDelay); // Return 0 if element or transition duration is not found
74
+
75
+ if (!floatTransitionDuration && !floatTransitionDelay) {
76
+ return 0;
77
+ } // If multiple durations are defined, take the first
78
+
79
+
80
+ transitionDuration = transitionDuration.split(',')[0];
81
+ transitionDelay = transitionDelay.split(',')[0];
82
+ return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;
83
+ };
84
+
85
+ var triggerTransitionEnd = function triggerTransitionEnd(element) {
86
+ element.dispatchEvent(new Event(TRANSITION_END));
87
+ };
88
+
89
+ var isElement = function isElement(obj) {
90
+ return (obj[0] || obj).nodeType;
91
+ };
92
+
93
+ var emulateTransitionEnd = function emulateTransitionEnd(element, duration) {
94
+ var called = false;
95
+ var durationPadding = 5;
96
+ var emulatedDuration = duration + durationPadding;
97
+
98
+ function listener() {
99
+ called = true;
100
+ element.removeEventListener(TRANSITION_END, listener);
101
+ }
102
+
103
+ element.addEventListener(TRANSITION_END, listener);
104
+ setTimeout(function () {
105
+ if (!called) {
106
+ triggerTransitionEnd(element);
107
+ }
108
+ }, emulatedDuration);
109
+ };
110
+
111
+ var typeCheckConfig = function typeCheckConfig(componentName, config, configTypes) {
112
+ Object.keys(configTypes).forEach(function (property) {
113
+ var expectedTypes = configTypes[property];
114
+ var value = config[property];
115
+ var valueType = value && isElement(value) ? 'element' : toType(value);
116
+
117
+ if (!new RegExp(expectedTypes).test(valueType)) {
118
+ throw new Error(componentName.toUpperCase() + ": " + ("Option \"" + property + "\" provided type \"" + valueType + "\" ") + ("but expected type \"" + expectedTypes + "\"."));
74
119
  }
120
+ });
121
+ };
122
+
123
+ var reflow = function reflow(element) {
124
+ return element.offsetHeight;
125
+ };
126
+
127
+ var getjQuery = function getjQuery() {
128
+ var _window = window,
129
+ jQuery = _window.jQuery;
130
+
131
+ if (jQuery && !document.body.hasAttribute('data-no-jquery')) {
132
+ return jQuery;
133
+ }
134
+
135
+ return null;
136
+ };
137
+
138
+ var onDOMContentLoaded = function onDOMContentLoaded(callback) {
139
+ if (document.readyState === 'loading') {
140
+ document.addEventListener('DOMContentLoaded', callback);
141
+ } else {
142
+ callback();
75
143
  }
144
+ };
145
+
146
+ 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); }
76
147
 
77
- return target;
78
- }
148
+ 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); } }
79
149
 
150
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
80
151
  /**
81
152
  * ------------------------------------------------------------------------
82
153
  * Constants
@@ -84,11 +155,10 @@
84
155
  */
85
156
 
86
157
  var NAME = 'collapse';
87
- var VERSION = '4.5.0';
158
+ var VERSION = '5.0.0-alpha3';
88
159
  var DATA_KEY = 'bs.collapse';
89
160
  var EVENT_KEY = "." + DATA_KEY;
90
161
  var DATA_API_KEY = '.data-api';
91
- var JQUERY_NO_CONFLICT = $.fn[NAME];
92
162
  var Default = {
93
163
  toggle: true,
94
164
  parent: ''
@@ -106,8 +176,8 @@
106
176
  var CLASS_NAME_COLLAPSE = 'collapse';
107
177
  var CLASS_NAME_COLLAPSING = 'collapsing';
108
178
  var CLASS_NAME_COLLAPSED = 'collapsed';
109
- var DIMENSION_WIDTH = 'width';
110
- var DIMENSION_HEIGHT = 'height';
179
+ var WIDTH = 'width';
180
+ var HEIGHT = 'height';
111
181
  var SELECTOR_ACTIVES = '.show, .collapsing';
112
182
  var SELECTOR_DATA_TOGGLE = '[data-toggle="collapse"]';
113
183
  /**
@@ -121,17 +191,17 @@
121
191
  this._isTransitioning = false;
122
192
  this._element = element;
123
193
  this._config = this._getConfig(config);
124
- this._triggerArray = [].slice.call(document.querySelectorAll("[data-toggle=\"collapse\"][href=\"#" + element.id + "\"]," + ("[data-toggle=\"collapse\"][data-target=\"#" + element.id + "\"]")));
125
- var toggleList = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE));
194
+ this._triggerArray = SelectorEngine__default['default'].find(SELECTOR_DATA_TOGGLE + "[href=\"#" + element.id + "\"]," + (SELECTOR_DATA_TOGGLE + "[data-target=\"#" + element.id + "\"]"));
195
+ var toggleList = SelectorEngine__default['default'].find(SELECTOR_DATA_TOGGLE);
126
196
 
127
197
  for (var i = 0, len = toggleList.length; i < len; i++) {
128
198
  var elem = toggleList[i];
129
- var selector = Util.getSelectorFromElement(elem);
130
- var filterElement = [].slice.call(document.querySelectorAll(selector)).filter(function (foundElem) {
199
+ var selector = getSelectorFromElement(elem);
200
+ var filterElement = SelectorEngine__default['default'].find(selector).filter(function (foundElem) {
131
201
  return foundElem === element;
132
202
  });
133
203
 
134
- if (selector !== null && filterElement.length > 0) {
204
+ if (selector !== null && filterElement.length) {
135
205
  this._selector = selector;
136
206
 
137
207
  this._triggerArray.push(elem);
@@ -147,6 +217,8 @@
147
217
  if (this._config.toggle) {
148
218
  this.toggle();
149
219
  }
220
+
221
+ Data__default['default'].setData(element, DATA_KEY, this);
150
222
  } // Getters
151
223
 
152
224
 
@@ -154,7 +226,7 @@
154
226
 
155
227
  // Public
156
228
  _proto.toggle = function toggle() {
157
- if ($(this._element).hasClass(CLASS_NAME_SHOW)) {
229
+ if (this._element.classList.contains(CLASS_NAME_SHOW)) {
158
230
  this.hide();
159
231
  } else {
160
232
  this.show();
@@ -164,7 +236,7 @@
164
236
  _proto.show = function show() {
165
237
  var _this = this;
166
238
 
167
- if (this._isTransitioning || $(this._element).hasClass(CLASS_NAME_SHOW)) {
239
+ if (this._isTransitioning || this._element.classList.contains(CLASS_NAME_SHOW)) {
168
240
  return;
169
241
  }
170
242
 
@@ -172,7 +244,7 @@
172
244
  var activesData;
173
245
 
174
246
  if (this._parent) {
175
- actives = [].slice.call(this._parent.querySelectorAll(SELECTOR_ACTIVES)).filter(function (elem) {
247
+ actives = SelectorEngine__default['default'].find(SELECTOR_ACTIVES, this._parent).filter(function (elem) {
176
248
  if (typeof _this._config.parent === 'string') {
177
249
  return elem.getAttribute('data-parent') === _this._config.parent;
178
250
  }
@@ -185,88 +257,106 @@
185
257
  }
186
258
  }
187
259
 
260
+ var container = SelectorEngine__default['default'].findOne(this._selector);
261
+
188
262
  if (actives) {
189
- activesData = $(actives).not(this._selector).data(DATA_KEY);
263
+ var tempActiveData = actives.filter(function (elem) {
264
+ return container !== elem;
265
+ });
266
+ activesData = tempActiveData[0] ? Data__default['default'].getData(tempActiveData[0], DATA_KEY) : null;
190
267
 
191
268
  if (activesData && activesData._isTransitioning) {
192
269
  return;
193
270
  }
194
271
  }
195
272
 
196
- var startEvent = $.Event(EVENT_SHOW);
197
- $(this._element).trigger(startEvent);
273
+ var startEvent = EventHandler__default['default'].trigger(this._element, EVENT_SHOW);
198
274
 
199
- if (startEvent.isDefaultPrevented()) {
275
+ if (startEvent.defaultPrevented) {
200
276
  return;
201
277
  }
202
278
 
203
279
  if (actives) {
204
- Collapse._jQueryInterface.call($(actives).not(this._selector), 'hide');
280
+ actives.forEach(function (elemActive) {
281
+ if (container !== elemActive) {
282
+ Collapse.collapseInterface(elemActive, 'hide');
283
+ }
205
284
 
206
- if (!activesData) {
207
- $(actives).data(DATA_KEY, null);
208
- }
285
+ if (!activesData) {
286
+ Data__default['default'].setData(elemActive, DATA_KEY, null);
287
+ }
288
+ });
209
289
  }
210
290
 
211
291
  var dimension = this._getDimension();
212
292
 
213
- $(this._element).removeClass(CLASS_NAME_COLLAPSE).addClass(CLASS_NAME_COLLAPSING);
293
+ this._element.classList.remove(CLASS_NAME_COLLAPSE);
294
+
295
+ this._element.classList.add(CLASS_NAME_COLLAPSING);
296
+
214
297
  this._element.style[dimension] = 0;
215
298
 
216
299
  if (this._triggerArray.length) {
217
- $(this._triggerArray).removeClass(CLASS_NAME_COLLAPSED).attr('aria-expanded', true);
300
+ this._triggerArray.forEach(function (element) {
301
+ element.classList.remove(CLASS_NAME_COLLAPSED);
302
+ element.setAttribute('aria-expanded', true);
303
+ });
218
304
  }
219
305
 
220
306
  this.setTransitioning(true);
221
307
 
222
308
  var complete = function complete() {
223
- $(_this._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE + " " + CLASS_NAME_SHOW);
309
+ _this._element.classList.remove(CLASS_NAME_COLLAPSING);
310
+
311
+ _this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW);
312
+
224
313
  _this._element.style[dimension] = '';
225
314
 
226
315
  _this.setTransitioning(false);
227
316
 
228
- $(_this._element).trigger(EVENT_SHOWN);
317
+ EventHandler__default['default'].trigger(_this._element, EVENT_SHOWN);
229
318
  };
230
319
 
231
320
  var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);
232
321
  var scrollSize = "scroll" + capitalizedDimension;
233
- var transitionDuration = Util.getTransitionDurationFromElement(this._element);
234
- $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
322
+ var transitionDuration = getTransitionDurationFromElement(this._element);
323
+ EventHandler__default['default'].one(this._element, TRANSITION_END, complete);
324
+ emulateTransitionEnd(this._element, transitionDuration);
235
325
  this._element.style[dimension] = this._element[scrollSize] + "px";
236
326
  };
237
327
 
238
328
  _proto.hide = function hide() {
239
329
  var _this2 = this;
240
330
 
241
- if (this._isTransitioning || !$(this._element).hasClass(CLASS_NAME_SHOW)) {
331
+ if (this._isTransitioning || !this._element.classList.contains(CLASS_NAME_SHOW)) {
242
332
  return;
243
333
  }
244
334
 
245
- var startEvent = $.Event(EVENT_HIDE);
246
- $(this._element).trigger(startEvent);
335
+ var startEvent = EventHandler__default['default'].trigger(this._element, EVENT_HIDE);
247
336
 
248
- if (startEvent.isDefaultPrevented()) {
337
+ if (startEvent.defaultPrevented) {
249
338
  return;
250
339
  }
251
340
 
252
341
  var dimension = this._getDimension();
253
342
 
254
343
  this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + "px";
255
- Util.reflow(this._element);
256
- $(this._element).addClass(CLASS_NAME_COLLAPSING).removeClass(CLASS_NAME_COLLAPSE + " " + CLASS_NAME_SHOW);
344
+ reflow(this._element);
345
+
346
+ this._element.classList.add(CLASS_NAME_COLLAPSING);
347
+
348
+ this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW);
349
+
257
350
  var triggerArrayLength = this._triggerArray.length;
258
351
 
259
352
  if (triggerArrayLength > 0) {
260
353
  for (var i = 0; i < triggerArrayLength; i++) {
261
354
  var trigger = this._triggerArray[i];
262
- var selector = Util.getSelectorFromElement(trigger);
263
-
264
- if (selector !== null) {
265
- var $elem = $([].slice.call(document.querySelectorAll(selector)));
355
+ var elem = getElementFromSelector(trigger);
266
356
 
267
- if (!$elem.hasClass(CLASS_NAME_SHOW)) {
268
- $(trigger).addClass(CLASS_NAME_COLLAPSED).attr('aria-expanded', false);
269
- }
357
+ if (elem && !elem.classList.contains(CLASS_NAME_SHOW)) {
358
+ trigger.classList.add(CLASS_NAME_COLLAPSED);
359
+ trigger.setAttribute('aria-expanded', false);
270
360
  }
271
361
  }
272
362
  }
@@ -276,12 +366,17 @@
276
366
  var complete = function complete() {
277
367
  _this2.setTransitioning(false);
278
368
 
279
- $(_this2._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE).trigger(EVENT_HIDDEN);
369
+ _this2._element.classList.remove(CLASS_NAME_COLLAPSING);
370
+
371
+ _this2._element.classList.add(CLASS_NAME_COLLAPSE);
372
+
373
+ EventHandler__default['default'].trigger(_this2._element, EVENT_HIDDEN);
280
374
  };
281
375
 
282
376
  this._element.style[dimension] = '';
283
- var transitionDuration = Util.getTransitionDurationFromElement(this._element);
284
- $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
377
+ var transitionDuration = getTransitionDurationFromElement(this._element);
378
+ EventHandler__default['default'].one(this._element, TRANSITION_END, complete);
379
+ emulateTransitionEnd(this._element, transitionDuration);
285
380
  };
286
381
 
287
382
  _proto.setTransitioning = function setTransitioning(isTransitioning) {
@@ -289,7 +384,7 @@
289
384
  };
290
385
 
291
386
  _proto.dispose = function dispose() {
292
- $.removeData(this._element, DATA_KEY);
387
+ Data__default['default'].removeData(this._element, DATA_KEY);
293
388
  this._config = null;
294
389
  this._parent = null;
295
390
  this._element = null;
@@ -299,81 +394,90 @@
299
394
  ;
300
395
 
301
396
  _proto._getConfig = function _getConfig(config) {
302
- config = _objectSpread2(_objectSpread2({}, Default), config);
397
+ config = _extends({}, Default, config);
303
398
  config.toggle = Boolean(config.toggle); // Coerce string values
304
399
 
305
- Util.typeCheckConfig(NAME, config, DefaultType);
400
+ typeCheckConfig(NAME, config, DefaultType);
306
401
  return config;
307
402
  };
308
403
 
309
404
  _proto._getDimension = function _getDimension() {
310
- var hasWidth = $(this._element).hasClass(DIMENSION_WIDTH);
311
- return hasWidth ? DIMENSION_WIDTH : DIMENSION_HEIGHT;
405
+ return this._element.classList.contains(WIDTH) ? WIDTH : HEIGHT;
312
406
  };
313
407
 
314
408
  _proto._getParent = function _getParent() {
315
409
  var _this3 = this;
316
410
 
317
- var parent;
318
-
319
- if (Util.isElement(this._config.parent)) {
320
- parent = this._config.parent; // It's a jQuery object
411
+ var parent = this._config.parent;
321
412
 
322
- if (typeof this._config.parent.jquery !== 'undefined') {
323
- parent = this._config.parent[0];
413
+ if (isElement(parent)) {
414
+ // it's a jQuery object
415
+ if (typeof parent.jquery !== 'undefined' || typeof parent[0] !== 'undefined') {
416
+ parent = parent[0];
324
417
  }
325
418
  } else {
326
- parent = document.querySelector(this._config.parent);
419
+ parent = SelectorEngine__default['default'].findOne(parent);
327
420
  }
328
421
 
329
- var selector = "[data-toggle=\"collapse\"][data-parent=\"" + this._config.parent + "\"]";
330
- var children = [].slice.call(parent.querySelectorAll(selector));
331
- $(children).each(function (i, element) {
332
- _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]);
422
+ var selector = SELECTOR_DATA_TOGGLE + "[data-parent=\"" + parent + "\"]";
423
+ SelectorEngine__default['default'].find(selector, parent).forEach(function (element) {
424
+ var selected = getElementFromSelector(element);
425
+
426
+ _this3._addAriaAndCollapsedClass(selected, [element]);
333
427
  });
334
428
  return parent;
335
429
  };
336
430
 
337
431
  _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {
338
- var isOpen = $(element).hasClass(CLASS_NAME_SHOW);
339
-
340
- if (triggerArray.length) {
341
- $(triggerArray).toggleClass(CLASS_NAME_COLLAPSED, !isOpen).attr('aria-expanded', isOpen);
432
+ if (!element || !triggerArray.length) {
433
+ return;
342
434
  }
435
+
436
+ var isOpen = element.classList.contains(CLASS_NAME_SHOW);
437
+ triggerArray.forEach(function (elem) {
438
+ if (isOpen) {
439
+ elem.classList.remove(CLASS_NAME_COLLAPSED);
440
+ } else {
441
+ elem.classList.add(CLASS_NAME_COLLAPSED);
442
+ }
443
+
444
+ elem.setAttribute('aria-expanded', isOpen);
445
+ });
343
446
  } // Static
344
447
  ;
345
448
 
346
- Collapse._getTargetFromElement = function _getTargetFromElement(element) {
347
- var selector = Util.getSelectorFromElement(element);
348
- return selector ? document.querySelector(selector) : null;
349
- };
449
+ Collapse.collapseInterface = function collapseInterface(element, config) {
450
+ var data = Data__default['default'].getData(element, DATA_KEY);
350
451
 
351
- Collapse._jQueryInterface = function _jQueryInterface(config) {
352
- return this.each(function () {
353
- var $this = $(this);
354
- var data = $this.data(DATA_KEY);
452
+ var _config = _extends({}, Default, Manipulator__default['default'].getDataAttributes(element), typeof config === 'object' && config ? config : {});
355
453
 
356
- var _config = _objectSpread2(_objectSpread2(_objectSpread2({}, Default), $this.data()), typeof config === 'object' && config ? config : {});
454
+ if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {
455
+ _config.toggle = false;
456
+ }
357
457
 
358
- if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {
359
- _config.toggle = false;
360
- }
458
+ if (!data) {
459
+ data = new Collapse(element, _config);
460
+ }
361
461
 
362
- if (!data) {
363
- data = new Collapse(this, _config);
364
- $this.data(DATA_KEY, data);
462
+ if (typeof config === 'string') {
463
+ if (typeof data[config] === 'undefined') {
464
+ throw new TypeError("No method named \"" + config + "\"");
365
465
  }
366
466
 
367
- if (typeof config === 'string') {
368
- if (typeof data[config] === 'undefined') {
369
- throw new TypeError("No method named \"" + config + "\"");
370
- }
467
+ data[config]();
468
+ }
469
+ };
371
470
 
372
- data[config]();
373
- }
471
+ Collapse.jQueryInterface = function jQueryInterface(config) {
472
+ return this.each(function () {
473
+ Collapse.collapseInterface(this, config);
374
474
  });
375
475
  };
376
476
 
477
+ Collapse.getInstance = function getInstance(element) {
478
+ return Data__default['default'].getData(element, DATA_KEY);
479
+ };
480
+
377
481
  _createClass(Collapse, null, [{
378
482
  key: "VERSION",
379
483
  get: function get() {
@@ -395,36 +499,56 @@
395
499
  */
396
500
 
397
501
 
398
- $(document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
502
+ EventHandler__default['default'].on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
399
503
  // preventDefault only for <a> elements (which change the URL) not inside the collapsible element
400
- if (event.currentTarget.tagName === 'A') {
504
+ if (event.target.tagName === 'A') {
401
505
  event.preventDefault();
402
506
  }
403
507
 
404
- var $trigger = $(this);
405
- var selector = Util.getSelectorFromElement(this);
406
- var selectors = [].slice.call(document.querySelectorAll(selector));
407
- $(selectors).each(function () {
408
- var $target = $(this);
409
- var data = $target.data(DATA_KEY);
410
- var config = data ? 'toggle' : $trigger.data();
508
+ var triggerData = Manipulator__default['default'].getDataAttributes(this);
509
+ var selector = getSelectorFromElement(this);
510
+ var selectorElements = SelectorEngine__default['default'].find(selector);
511
+ selectorElements.forEach(function (element) {
512
+ var data = Data__default['default'].getData(element, DATA_KEY);
513
+ var config;
514
+
515
+ if (data) {
516
+ // update parent attribute
517
+ if (data._parent === null && typeof triggerData.parent === 'string') {
518
+ data._config.parent = triggerData.parent;
519
+ data._parent = data._getParent();
520
+ }
521
+
522
+ config = 'toggle';
523
+ } else {
524
+ config = triggerData;
525
+ }
411
526
 
412
- Collapse._jQueryInterface.call($target, config);
527
+ Collapse.collapseInterface(element, config);
413
528
  });
414
529
  });
415
530
  /**
416
531
  * ------------------------------------------------------------------------
417
532
  * jQuery
418
533
  * ------------------------------------------------------------------------
534
+ * add .Collapse to jQuery only if jQuery is present
419
535
  */
420
536
 
421
- $.fn[NAME] = Collapse._jQueryInterface;
422
- $.fn[NAME].Constructor = Collapse;
537
+ onDOMContentLoaded(function () {
538
+ var $ = getjQuery();
539
+ /* istanbul ignore if */
423
540
 
424
- $.fn[NAME].noConflict = function () {
425
- $.fn[NAME] = JQUERY_NO_CONFLICT;
426
- return Collapse._jQueryInterface;
427
- };
541
+ if ($) {
542
+ var JQUERY_NO_CONFLICT = $.fn[NAME];
543
+ $.fn[NAME] = Collapse.jQueryInterface;
544
+ $.fn[NAME].Constructor = Collapse;
545
+
546
+ $.fn[NAME].noConflict = function () {
547
+ $.fn[NAME] = JQUERY_NO_CONFLICT;
548
+ return Collapse.jQueryInterface;
549
+ };
550
+ }
551
+ });
428
552
 
429
553
  return Collapse;
430
554