bootstrap 4.6.0 → 5.0.0.alpha1

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