bootstrap 4.6.2 → 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 (135) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/assets/javascripts/bootstrap/alert.js +148 -73
  4. data/assets/javascripts/bootstrap/button.js +71 -154
  5. data/assets/javascripts/bootstrap/carousel.js +315 -209
  6. data/assets/javascripts/bootstrap/collapse.js +307 -153
  7. data/assets/javascripts/bootstrap/dom/data.js +81 -0
  8. data/assets/javascripts/bootstrap/dom/event-handler.js +311 -0
  9. data/assets/javascripts/bootstrap/dom/manipulator.js +100 -0
  10. data/assets/javascripts/bootstrap/dom/polyfill.js +110 -0
  11. data/assets/javascripts/bootstrap/dom/selector-engine.js +98 -0
  12. data/assets/javascripts/bootstrap/dropdown.js +257 -205
  13. data/assets/javascripts/bootstrap/modal.js +354 -250
  14. data/assets/javascripts/bootstrap/popover.js +85 -94
  15. data/assets/javascripts/bootstrap/scrollspy.js +179 -107
  16. data/assets/javascripts/bootstrap/tab.js +170 -99
  17. data/assets/javascripts/bootstrap/toast.js +181 -110
  18. data/assets/javascripts/bootstrap/tooltip.js +375 -226
  19. data/assets/javascripts/bootstrap-sprockets.js +5 -1
  20. data/assets/javascripts/bootstrap.js +2260 -1550
  21. data/assets/javascripts/bootstrap.min.js +3 -3
  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 +15 -20
  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 -69
  37. data/assets/stylesheets/bootstrap/_grid.scss +3 -54
  38. data/assets/stylesheets/bootstrap/_helpers.scss +7 -0
  39. data/assets/stylesheets/bootstrap/_images.scss +1 -1
  40. data/assets/stylesheets/bootstrap/_list-group.scss +7 -4
  41. data/assets/stylesheets/bootstrap/_mixins.scss +6 -12
  42. data/assets/stylesheets/bootstrap/_modal.scss +36 -41
  43. data/assets/stylesheets/bootstrap/_nav.scss +7 -9
  44. data/assets/stylesheets/bootstrap/_navbar.scss +42 -82
  45. data/assets/stylesheets/bootstrap/_pagination.scss +7 -20
  46. data/assets/stylesheets/bootstrap/_popover.scss +14 -14
  47. data/assets/stylesheets/bootstrap/_progress.scss +3 -5
  48. data/assets/stylesheets/bootstrap/_reboot.scss +304 -172
  49. data/assets/stylesheets/bootstrap/_root.scss +5 -8
  50. data/assets/stylesheets/bootstrap/_spinners.scss +8 -17
  51. data/assets/stylesheets/bootstrap/_tables.scss +80 -114
  52. data/assets/stylesheets/bootstrap/_toasts.scss +2 -4
  53. data/assets/stylesheets/bootstrap/_tooltip.scss +9 -9
  54. data/assets/stylesheets/bootstrap/_transitions.scss +0 -7
  55. data/assets/stylesheets/bootstrap/_type.scss +38 -59
  56. data/assets/stylesheets/bootstrap/_utilities.scss +503 -18
  57. data/assets/stylesheets/bootstrap/_variables.scss +548 -437
  58. data/assets/stylesheets/bootstrap/bootstrap-utilities.scss +18 -0
  59. data/assets/stylesheets/bootstrap/forms/_form-check.scss +142 -0
  60. data/assets/stylesheets/bootstrap/forms/_form-control.scss +116 -0
  61. data/assets/stylesheets/bootstrap/forms/_form-file.scss +91 -0
  62. data/assets/stylesheets/bootstrap/forms/_form-range.scss +136 -0
  63. data/assets/stylesheets/bootstrap/forms/_form-select.scss +82 -0
  64. data/assets/stylesheets/bootstrap/forms/_form-text.scss +11 -0
  65. data/assets/stylesheets/bootstrap/forms/_input-group.scss +140 -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/_embed.scss +31 -0
  71. data/assets/stylesheets/bootstrap/helpers/_position.scss +30 -0
  72. data/assets/stylesheets/bootstrap/helpers/_screenreaders.scss +8 -0
  73. data/assets/stylesheets/bootstrap/helpers/_stretched-link.scss +15 -0
  74. data/assets/stylesheets/bootstrap/helpers/_text-truncation.scss +7 -0
  75. data/assets/stylesheets/bootstrap/mixins/_alert.scss +0 -4
  76. data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +1 -1
  77. data/assets/stylesheets/bootstrap/mixins/_breakpoints.scss +11 -8
  78. data/assets/stylesheets/bootstrap/mixins/_buttons.scss +62 -47
  79. data/assets/stylesheets/bootstrap/mixins/_caret.scss +4 -4
  80. data/assets/stylesheets/bootstrap/mixins/_clearfix.scss +2 -0
  81. data/assets/stylesheets/bootstrap/mixins/_container.scss +9 -0
  82. data/assets/stylesheets/bootstrap/mixins/_forms.scss +23 -85
  83. data/assets/stylesheets/bootstrap/mixins/_gradients.scss +9 -11
  84. data/assets/stylesheets/bootstrap/mixins/_grid.scss +86 -34
  85. data/assets/stylesheets/bootstrap/mixins/_image.scss +1 -21
  86. data/assets/stylesheets/bootstrap/mixins/_list-group.scss +2 -1
  87. data/assets/stylesheets/bootstrap/mixins/_lists.scss +1 -1
  88. data/assets/stylesheets/bootstrap/mixins/_pagination.scss +15 -8
  89. data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +3 -3
  90. data/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +18 -24
  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/utilities/_api.scss +47 -0
  95. data/assets/stylesheets/bootstrap/vendor/_rfs.scss +214 -130
  96. data/bootstrap.gemspec +1 -1
  97. data/lib/bootstrap/version.rb +2 -2
  98. data/tasks/updater/js.rb +6 -18
  99. data/tasks/updater/network.rb +1 -7
  100. metadata +34 -42
  101. data/assets/javascripts/bootstrap/util.js +0 -189
  102. data/assets/stylesheets/bootstrap/_code.scss +0 -48
  103. data/assets/stylesheets/bootstrap/_custom-forms.scss +0 -526
  104. data/assets/stylesheets/bootstrap/_input-group.scss +0 -211
  105. data/assets/stylesheets/bootstrap/_jumbotron.scss +0 -17
  106. data/assets/stylesheets/bootstrap/_media.scss +0 -8
  107. data/assets/stylesheets/bootstrap/_print.scss +0 -132
  108. data/assets/stylesheets/bootstrap/mixins/_background-variant.scss +0 -23
  109. data/assets/stylesheets/bootstrap/mixins/_badge.scss +0 -17
  110. data/assets/stylesheets/bootstrap/mixins/_float.scss +0 -14
  111. data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +0 -80
  112. data/assets/stylesheets/bootstrap/mixins/_hover.scss +0 -37
  113. data/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +0 -11
  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 -72
  135. data/assets/stylesheets/bootstrap/utilities/_visibility.scss +0 -13
@@ -1,78 +1,158 @@
1
1
  /*!
2
- * Bootstrap collapse.js v4.6.2 (https://getbootstrap.com/)
3
- * Copyright 2011-2022 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
- Object.defineProperty(Constructor, "prototype", {
31
- writable: false
32
- });
33
- return Constructor;
34
- }
31
+ return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase();
32
+ };
35
33
 
36
- function _extends() {
37
- _extends = Object.assign ? Object.assign.bind() : function (target) {
38
- for (var i = 1; i < arguments.length; i++) {
39
- var source = arguments[i];
34
+ var getSelector = function getSelector(element) {
35
+ var selector = element.getAttribute('data-target');
40
36
 
41
- for (var key in source) {
42
- if (Object.prototype.hasOwnProperty.call(source, key)) {
43
- target[key] = source[key];
44
- }
45
- }
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);
46
105
  }
106
+ }, emulatedDuration);
107
+ };
47
108
 
48
- return target;
49
- };
50
- return _extends.apply(this, arguments);
51
- }
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 + "\"."));
117
+ }
118
+ });
119
+ };
120
+
121
+ var reflow = function reflow(element) {
122
+ return element.offsetHeight;
123
+ };
52
124
 
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
+ };
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; }
53
145
  /**
146
+ * ------------------------------------------------------------------------
54
147
  * Constants
148
+ * ------------------------------------------------------------------------
55
149
  */
56
150
 
57
151
  var NAME = 'collapse';
58
- var VERSION = '4.6.2';
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
- var CLASS_NAME_SHOW = 'show';
64
- var CLASS_NAME_COLLAPSE = 'collapse';
65
- var CLASS_NAME_COLLAPSING = 'collapsing';
66
- var CLASS_NAME_COLLAPSED = 'collapsed';
67
- var DIMENSION_WIDTH = 'width';
68
- var DIMENSION_HEIGHT = 'height';
69
- var EVENT_SHOW = "show" + EVENT_KEY;
70
- var EVENT_SHOWN = "shown" + EVENT_KEY;
71
- var EVENT_HIDE = "hide" + EVENT_KEY;
72
- var EVENT_HIDDEN = "hidden" + EVENT_KEY;
73
- var EVENT_CLICK_DATA_API = "click" + EVENT_KEY + DATA_API_KEY;
74
- var SELECTOR_ACTIVES = '.show, .collapsing';
75
- var SELECTOR_DATA_TOGGLE = '[data-toggle="collapse"]';
76
156
  var Default = {
77
157
  toggle: true,
78
158
  parent: ''
@@ -81,8 +161,23 @@
81
161
  toggle: 'boolean',
82
162
  parent: '(string|element)'
83
163
  };
164
+ var EVENT_SHOW = "show" + EVENT_KEY;
165
+ var EVENT_SHOWN = "shown" + EVENT_KEY;
166
+ var EVENT_HIDE = "hide" + EVENT_KEY;
167
+ var EVENT_HIDDEN = "hidden" + EVENT_KEY;
168
+ var EVENT_CLICK_DATA_API = "click" + EVENT_KEY + DATA_API_KEY;
169
+ var CLASS_NAME_SHOW = 'show';
170
+ var CLASS_NAME_COLLAPSE = 'collapse';
171
+ var CLASS_NAME_COLLAPSING = 'collapsing';
172
+ var CLASS_NAME_COLLAPSED = 'collapsed';
173
+ var WIDTH = 'width';
174
+ var HEIGHT = 'height';
175
+ var SELECTOR_ACTIVES = '.show, .collapsing';
176
+ var SELECTOR_DATA_TOGGLE = '[data-toggle="collapse"]';
84
177
  /**
85
- * Class definition
178
+ * ------------------------------------------------------------------------
179
+ * Class Definition
180
+ * ------------------------------------------------------------------------
86
181
  */
87
182
 
88
183
  var Collapse = /*#__PURE__*/function () {
@@ -90,17 +185,17 @@
90
185
  this._isTransitioning = false;
91
186
  this._element = element;
92
187
  this._config = this._getConfig(config);
93
- this._triggerArray = [].slice.call(document.querySelectorAll("[data-toggle=\"collapse\"][href=\"#" + element.id + "\"]," + ("[data-toggle=\"collapse\"][data-target=\"#" + element.id + "\"]")));
94
- 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);
95
190
 
96
191
  for (var i = 0, len = toggleList.length; i < len; i++) {
97
192
  var elem = toggleList[i];
98
- var selector = Util__default["default"].getSelectorFromElement(elem);
99
- var filterElement = [].slice.call(document.querySelectorAll(selector)).filter(function (foundElem) {
193
+ var selector = getSelectorFromElement(elem);
194
+ var filterElement = SelectorEngine.find(selector).filter(function (foundElem) {
100
195
  return foundElem === element;
101
196
  });
102
197
 
103
- if (selector !== null && filterElement.length > 0) {
198
+ if (selector !== null && filterElement.length) {
104
199
  this._selector = selector;
105
200
 
106
201
  this._triggerArray.push(elem);
@@ -116,6 +211,8 @@
116
211
  if (this._config.toggle) {
117
212
  this.toggle();
118
213
  }
214
+
215
+ Data.setData(element, DATA_KEY, this);
119
216
  } // Getters
120
217
 
121
218
 
@@ -123,7 +220,7 @@
123
220
 
124
221
  // Public
125
222
  _proto.toggle = function toggle() {
126
- if ($__default["default"](this._element).hasClass(CLASS_NAME_SHOW)) {
223
+ if (this._element.classList.contains(CLASS_NAME_SHOW)) {
127
224
  this.hide();
128
225
  } else {
129
226
  this.show();
@@ -133,7 +230,7 @@
133
230
  _proto.show = function show() {
134
231
  var _this = this;
135
232
 
136
- if (this._isTransitioning || $__default["default"](this._element).hasClass(CLASS_NAME_SHOW)) {
233
+ if (this._isTransitioning || this._element.classList.contains(CLASS_NAME_SHOW)) {
137
234
  return;
138
235
  }
139
236
 
@@ -141,7 +238,7 @@
141
238
  var activesData;
142
239
 
143
240
  if (this._parent) {
144
- actives = [].slice.call(this._parent.querySelectorAll(SELECTOR_ACTIVES)).filter(function (elem) {
241
+ actives = SelectorEngine.find(SELECTOR_ACTIVES, this._parent).filter(function (elem) {
145
242
  if (typeof _this._config.parent === 'string') {
146
243
  return elem.getAttribute('data-parent') === _this._config.parent;
147
244
  }
@@ -154,88 +251,106 @@
154
251
  }
155
252
  }
156
253
 
254
+ var container = SelectorEngine.findOne(this._selector);
255
+
157
256
  if (actives) {
158
- 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;
159
261
 
160
262
  if (activesData && activesData._isTransitioning) {
161
263
  return;
162
264
  }
163
265
  }
164
266
 
165
- var startEvent = $__default["default"].Event(EVENT_SHOW);
166
- $__default["default"](this._element).trigger(startEvent);
267
+ var startEvent = EventHandler.trigger(this._element, EVENT_SHOW);
167
268
 
168
- if (startEvent.isDefaultPrevented()) {
269
+ if (startEvent.defaultPrevented) {
169
270
  return;
170
271
  }
171
272
 
172
273
  if (actives) {
173
- 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
+ }
174
278
 
175
- if (!activesData) {
176
- $__default["default"](actives).data(DATA_KEY, null);
177
- }
279
+ if (!activesData) {
280
+ Data.setData(elemActive, DATA_KEY, null);
281
+ }
282
+ });
178
283
  }
179
284
 
180
285
  var dimension = this._getDimension();
181
286
 
182
- $__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
+
183
291
  this._element.style[dimension] = 0;
184
292
 
185
293
  if (this._triggerArray.length) {
186
- $__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
+ });
187
298
  }
188
299
 
189
300
  this.setTransitioning(true);
190
301
 
191
302
  var complete = function complete() {
192
- $__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
+
193
307
  _this._element.style[dimension] = '';
194
308
 
195
309
  _this.setTransitioning(false);
196
310
 
197
- $__default["default"](_this._element).trigger(EVENT_SHOWN);
311
+ EventHandler.trigger(_this._element, EVENT_SHOWN);
198
312
  };
199
313
 
200
314
  var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);
201
315
  var scrollSize = "scroll" + capitalizedDimension;
202
- var transitionDuration = Util__default["default"].getTransitionDurationFromElement(this._element);
203
- $__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);
204
319
  this._element.style[dimension] = this._element[scrollSize] + "px";
205
320
  };
206
321
 
207
322
  _proto.hide = function hide() {
208
323
  var _this2 = this;
209
324
 
210
- if (this._isTransitioning || !$__default["default"](this._element).hasClass(CLASS_NAME_SHOW)) {
325
+ if (this._isTransitioning || !this._element.classList.contains(CLASS_NAME_SHOW)) {
211
326
  return;
212
327
  }
213
328
 
214
- var startEvent = $__default["default"].Event(EVENT_HIDE);
215
- $__default["default"](this._element).trigger(startEvent);
329
+ var startEvent = EventHandler.trigger(this._element, EVENT_HIDE);
216
330
 
217
- if (startEvent.isDefaultPrevented()) {
331
+ if (startEvent.defaultPrevented) {
218
332
  return;
219
333
  }
220
334
 
221
335
  var dimension = this._getDimension();
222
336
 
223
337
  this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + "px";
224
- Util__default["default"].reflow(this._element);
225
- $__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
+
226
344
  var triggerArrayLength = this._triggerArray.length;
227
345
 
228
346
  if (triggerArrayLength > 0) {
229
347
  for (var i = 0; i < triggerArrayLength; i++) {
230
348
  var trigger = this._triggerArray[i];
231
- var selector = Util__default["default"].getSelectorFromElement(trigger);
232
-
233
- if (selector !== null) {
234
- var $elem = $__default["default"]([].slice.call(document.querySelectorAll(selector)));
349
+ var elem = getElementFromSelector(trigger);
235
350
 
236
- if (!$elem.hasClass(CLASS_NAME_SHOW)) {
237
- $__default["default"](trigger).addClass(CLASS_NAME_COLLAPSED).attr('aria-expanded', false);
238
- }
351
+ if (elem && !elem.classList.contains(CLASS_NAME_SHOW)) {
352
+ trigger.classList.add(CLASS_NAME_COLLAPSED);
353
+ trigger.setAttribute('aria-expanded', false);
239
354
  }
240
355
  }
241
356
  }
@@ -245,12 +360,17 @@
245
360
  var complete = function complete() {
246
361
  _this2.setTransitioning(false);
247
362
 
248
- $__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);
249
368
  };
250
369
 
251
370
  this._element.style[dimension] = '';
252
- var transitionDuration = Util__default["default"].getTransitionDurationFromElement(this._element);
253
- $__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);
254
374
  };
255
375
 
256
376
  _proto.setTransitioning = function setTransitioning(isTransitioning) {
@@ -258,7 +378,7 @@
258
378
  };
259
379
 
260
380
  _proto.dispose = function dispose() {
261
- $__default["default"].removeData(this._element, DATA_KEY);
381
+ Data.removeData(this._element, DATA_KEY);
262
382
  this._config = null;
263
383
  this._parent = null;
264
384
  this._element = null;
@@ -268,81 +388,93 @@
268
388
  ;
269
389
 
270
390
  _proto._getConfig = function _getConfig(config) {
271
- config = _extends({}, Default, config);
391
+ config = _objectSpread(_objectSpread({}, Default), config);
272
392
  config.toggle = Boolean(config.toggle); // Coerce string values
273
393
 
274
- Util__default["default"].typeCheckConfig(NAME, config, DefaultType);
394
+ typeCheckConfig(NAME, config, DefaultType);
275
395
  return config;
276
396
  };
277
397
 
278
398
  _proto._getDimension = function _getDimension() {
279
- var hasWidth = $__default["default"](this._element).hasClass(DIMENSION_WIDTH);
280
- return hasWidth ? DIMENSION_WIDTH : DIMENSION_HEIGHT;
399
+ var hasWidth = this._element.classList.contains(WIDTH);
400
+
401
+ return hasWidth ? WIDTH : HEIGHT;
281
402
  };
282
403
 
283
404
  _proto._getParent = function _getParent() {
284
405
  var _this3 = this;
285
406
 
286
- var parent;
407
+ var parent = this._config.parent;
287
408
 
288
- if (Util__default["default"].isElement(this._config.parent)) {
289
- parent = this._config.parent; // It's a jQuery object
290
-
291
- if (typeof this._config.parent.jquery !== 'undefined') {
292
- 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];
293
413
  }
294
414
  } else {
295
- parent = document.querySelector(this._config.parent);
415
+ parent = SelectorEngine.findOne(parent);
296
416
  }
297
417
 
298
- var selector = "[data-toggle=\"collapse\"][data-parent=\"" + this._config.parent + "\"]";
299
- var children = [].slice.call(parent.querySelectorAll(selector));
300
- $__default["default"](children).each(function (i, element) {
301
- _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]);
302
423
  });
303
424
  return parent;
304
425
  };
305
426
 
306
427
  _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {
307
- 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
+ }
308
438
 
309
- if (triggerArray.length) {
310
- $__default["default"](triggerArray).toggleClass(CLASS_NAME_COLLAPSED, !isOpen).attr('aria-expanded', isOpen);
439
+ elem.setAttribute('aria-expanded', isOpen);
440
+ });
441
+ }
311
442
  }
312
443
  } // Static
313
444
  ;
314
445
 
315
- Collapse._getTargetFromElement = function _getTargetFromElement(element) {
316
- var selector = Util__default["default"].getSelectorFromElement(element);
317
- return selector ? document.querySelector(selector) : null;
318
- };
446
+ Collapse.collapseInterface = function collapseInterface(element, config) {
447
+ var data = Data.getData(element, DATA_KEY);
319
448
 
320
- Collapse._jQueryInterface = function _jQueryInterface(config) {
321
- return this.each(function () {
322
- var $element = $__default["default"](this);
323
- var data = $element.data(DATA_KEY);
449
+ var _config = _objectSpread(_objectSpread(_objectSpread({}, Default), Manipulator.getDataAttributes(element)), typeof config === 'object' && config ? config : {});
324
450
 
325
- 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
+ }
326
454
 
327
- if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {
328
- _config.toggle = false;
329
- }
455
+ if (!data) {
456
+ data = new Collapse(element, _config);
457
+ }
330
458
 
331
- if (!data) {
332
- data = new Collapse(this, _config);
333
- $element.data(DATA_KEY, data);
459
+ if (typeof config === 'string') {
460
+ if (typeof data[config] === 'undefined') {
461
+ throw new TypeError("No method named \"" + config + "\"");
334
462
  }
335
463
 
336
- if (typeof config === 'string') {
337
- if (typeof data[config] === 'undefined') {
338
- throw new TypeError("No method named \"" + config + "\"");
339
- }
464
+ data[config]();
465
+ }
466
+ };
340
467
 
341
- data[config]();
342
- }
468
+ Collapse.jQueryInterface = function jQueryInterface(config) {
469
+ return this.each(function () {
470
+ Collapse.collapseInterface(this, config);
343
471
  });
344
472
  };
345
473
 
474
+ Collapse.getInstance = function getInstance(element) {
475
+ return Data.getData(element, DATA_KEY);
476
+ };
477
+
346
478
  _createClass(Collapse, null, [{
347
479
  key: "VERSION",
348
480
  get: function get() {
@@ -358,39 +490,61 @@
358
490
  return Collapse;
359
491
  }();
360
492
  /**
361
- * Data API implementation
493
+ * ------------------------------------------------------------------------
494
+ * Data Api implementation
495
+ * ------------------------------------------------------------------------
362
496
  */
363
497
 
364
498
 
365
- $__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) {
366
500
  // preventDefault only for <a> elements (which change the URL) not inside the collapsible element
367
- if (event.currentTarget.tagName === 'A') {
501
+ if (event.target.tagName === 'A') {
368
502
  event.preventDefault();
369
503
  }
370
504
 
371
- var $trigger = $__default["default"](this);
372
- var selector = Util__default["default"].getSelectorFromElement(this);
373
- var selectors = [].slice.call(document.querySelectorAll(selector));
374
- $__default["default"](selectors).each(function () {
375
- var $target = $__default["default"](this);
376
- var data = $target.data(DATA_KEY);
377
- 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
+ }
378
518
 
379
- Collapse._jQueryInterface.call($target, config);
519
+ config = 'toggle';
520
+ } else {
521
+ config = triggerData;
522
+ }
523
+
524
+ Collapse.collapseInterface(element, config);
380
525
  });
381
526
  });
527
+ var $ = getjQuery();
382
528
  /**
529
+ * ------------------------------------------------------------------------
383
530
  * jQuery
531
+ * ------------------------------------------------------------------------
532
+ * add .collapse to jQuery only if jQuery is present
384
533
  */
385
534
 
386
- $__default["default"].fn[NAME] = Collapse._jQueryInterface;
387
- $__default["default"].fn[NAME].Constructor = Collapse;
535
+ /* istanbul ignore if */
388
536
 
389
- $__default["default"].fn[NAME].noConflict = function () {
390
- $__default["default"].fn[NAME] = JQUERY_NO_CONFLICT;
391
- return Collapse._jQueryInterface;
392
- };
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
+ }
393
547
 
394
548
  return Collapse;
395
549
 
396
- }));
550
+ })));