bootstrap 4.4.1 → 5.0.0.alpha2

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 (136) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +12 -2
  3. data/README.md +1 -1
  4. data/assets/javascripts/bootstrap-sprockets.js +12 -8
  5. data/assets/javascripts/bootstrap.js +2094 -1562
  6. data/assets/javascripts/bootstrap.min.js +4 -4
  7. data/assets/javascripts/bootstrap/alert.js +145 -83
  8. data/assets/javascripts/bootstrap/button.js +66 -152
  9. data/assets/javascripts/bootstrap/carousel.js +307 -241
  10. data/assets/javascripts/bootstrap/collapse.js +287 -183
  11. data/assets/javascripts/bootstrap/dom/data.js +81 -0
  12. data/assets/javascripts/bootstrap/dom/event-handler.js +315 -0
  13. data/assets/javascripts/bootstrap/dom/manipulator.js +96 -0
  14. data/assets/javascripts/bootstrap/dom/polyfill.js +110 -0
  15. data/assets/javascripts/bootstrap/dom/selector-engine.js +98 -0
  16. data/assets/javascripts/bootstrap/dropdown.js +255 -261
  17. data/assets/javascripts/bootstrap/modal.js +364 -270
  18. data/assets/javascripts/bootstrap/popover.js +72 -113
  19. data/assets/javascripts/bootstrap/scrollspy.js +162 -147
  20. data/assets/javascripts/bootstrap/tab.js +176 -108
  21. data/assets/javascripts/bootstrap/toast.js +179 -139
  22. data/assets/javascripts/bootstrap/tooltip.js +369 -259
  23. data/assets/stylesheets/_bootstrap-grid.scss +54 -18
  24. data/assets/stylesheets/_bootstrap-reboot.scss +7 -4
  25. data/assets/stylesheets/_bootstrap.scss +17 -11
  26. data/assets/stylesheets/bootstrap/_alert.scss +6 -7
  27. data/assets/stylesheets/bootstrap/_badge.scss +2 -27
  28. data/assets/stylesheets/bootstrap/_breadcrumb.scss +5 -17
  29. data/assets/stylesheets/bootstrap/_button-group.scss +16 -38
  30. data/assets/stylesheets/bootstrap/_buttons.scss +25 -40
  31. data/assets/stylesheets/bootstrap/_card.scss +43 -79
  32. data/assets/stylesheets/bootstrap/_carousel.scss +30 -15
  33. data/assets/stylesheets/bootstrap/_close.scss +31 -31
  34. data/assets/stylesheets/bootstrap/_containers.scss +41 -0
  35. data/assets/stylesheets/bootstrap/_dropdown.scss +54 -9
  36. data/assets/stylesheets/bootstrap/_forms.scss +9 -338
  37. data/assets/stylesheets/bootstrap/_functions.scss +97 -25
  38. data/assets/stylesheets/bootstrap/_grid.scss +3 -50
  39. data/assets/stylesheets/bootstrap/_helpers.scss +7 -0
  40. data/assets/stylesheets/bootstrap/_list-group.scss +16 -17
  41. data/assets/stylesheets/bootstrap/_mixins.scss +7 -13
  42. data/assets/stylesheets/bootstrap/_modal.scss +41 -45
  43. data/assets/stylesheets/bootstrap/_nav.scss +16 -9
  44. data/assets/stylesheets/bootstrap/_navbar.scss +43 -74
  45. data/assets/stylesheets/bootstrap/_pagination.scss +11 -20
  46. data/assets/stylesheets/bootstrap/_popover.scss +5 -5
  47. data/assets/stylesheets/bootstrap/_progress.scss +2 -3
  48. data/assets/stylesheets/bootstrap/_reboot.scss +310 -175
  49. data/assets/stylesheets/bootstrap/_root.scss +5 -9
  50. data/assets/stylesheets/bootstrap/_spinners.scss +5 -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 +531 -17
  57. data/assets/stylesheets/bootstrap/_variables.scss +609 -444
  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/_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 +0 -4
  76. data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +35 -22
  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 +69 -51
  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 +22 -66
  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 +2 -1
  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 +18 -8
  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. data/tasks/updater/network.rb +2 -2
  100. data/test/gemfiles/rails_6_0.gemfile +7 -0
  101. metadata +36 -41
  102. data/assets/javascripts/bootstrap/util.js +0 -188
  103. data/assets/stylesheets/bootstrap/_code.scss +0 -48
  104. data/assets/stylesheets/bootstrap/_custom-forms.scss +0 -521
  105. data/assets/stylesheets/bootstrap/_input-group.scss +0 -191
  106. data/assets/stylesheets/bootstrap/_jumbotron.scss +0 -17
  107. data/assets/stylesheets/bootstrap/_media.scss +0 -8
  108. data/assets/stylesheets/bootstrap/_print.scss +0 -141
  109. data/assets/stylesheets/bootstrap/mixins/_background-variant.scss +0 -22
  110. data/assets/stylesheets/bootstrap/mixins/_badge.scss +0 -17
  111. data/assets/stylesheets/bootstrap/mixins/_float.scss +0 -14
  112. data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +0 -71
  113. data/assets/stylesheets/bootstrap/mixins/_hover.scss +0 -37
  114. data/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +0 -11
  115. data/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +0 -34
  116. data/assets/stylesheets/bootstrap/mixins/_size.scss +0 -7
  117. data/assets/stylesheets/bootstrap/mixins/_table-row.scss +0 -39
  118. data/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +0 -17
  119. data/assets/stylesheets/bootstrap/mixins/_text-hide.scss +0 -11
  120. data/assets/stylesheets/bootstrap/mixins/_visibility.scss +0 -8
  121. data/assets/stylesheets/bootstrap/utilities/_align.scss +0 -8
  122. data/assets/stylesheets/bootstrap/utilities/_background.scss +0 -19
  123. data/assets/stylesheets/bootstrap/utilities/_borders.scss +0 -75
  124. data/assets/stylesheets/bootstrap/utilities/_display.scss +0 -26
  125. data/assets/stylesheets/bootstrap/utilities/_embed.scss +0 -39
  126. data/assets/stylesheets/bootstrap/utilities/_flex.scss +0 -51
  127. data/assets/stylesheets/bootstrap/utilities/_float.scss +0 -11
  128. data/assets/stylesheets/bootstrap/utilities/_overflow.scss +0 -5
  129. data/assets/stylesheets/bootstrap/utilities/_position.scss +0 -32
  130. data/assets/stylesheets/bootstrap/utilities/_screenreaders.scss +0 -11
  131. data/assets/stylesheets/bootstrap/utilities/_shadows.scss +0 -6
  132. data/assets/stylesheets/bootstrap/utilities/_sizing.scss +0 -20
  133. data/assets/stylesheets/bootstrap/utilities/_spacing.scss +0 -73
  134. data/assets/stylesheets/bootstrap/utilities/_stretched-link.scss +0 -19
  135. data/assets/stylesheets/bootstrap/utilities/_text.scss +0 -72
  136. data/assets/stylesheets/bootstrap/utilities/_visibility.scss +0 -13
@@ -1,82 +1,145 @@
1
1
  /*!
2
- * Bootstrap collapse.js v4.4.1 (https://getbootstrap.com/)
3
- * Copyright 2011-2019 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
4
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
2
+ * Bootstrap collapse.js v5.0.0-alpha2 (https://getbootstrap.com/)
3
+ * Copyright 2011-2020 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
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
- $ = $ && $.hasOwnProperty('default') ? $['default'] : $;
13
- Util = Util && Util.hasOwnProperty('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-alpha2): 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
32
 
25
- function _createClass(Constructor, protoProps, staticProps) {
26
- if (protoProps) _defineProperties(Constructor.prototype, protoProps);
27
- if (staticProps) _defineProperties(Constructor, staticProps);
28
- return Constructor;
29
- }
33
+ return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase();
34
+ };
30
35
 
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;
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);
74
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 + "\"."));
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;
75
133
  }
76
134
 
77
- return target;
78
- }
135
+ return null;
136
+ };
79
137
 
138
+ 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); }
139
+
140
+ 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); } }
141
+
142
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
80
143
  /**
81
144
  * ------------------------------------------------------------------------
82
145
  * Constants
@@ -84,11 +147,10 @@
84
147
  */
85
148
 
86
149
  var NAME = 'collapse';
87
- var VERSION = '4.4.1';
150
+ var VERSION = '5.0.0-alpha2';
88
151
  var DATA_KEY = 'bs.collapse';
89
152
  var EVENT_KEY = "." + DATA_KEY;
90
153
  var DATA_API_KEY = '.data-api';
91
- var JQUERY_NO_CONFLICT = $.fn[NAME];
92
154
  var Default = {
93
155
  toggle: true,
94
156
  parent: ''
@@ -97,51 +159,41 @@
97
159
  toggle: 'boolean',
98
160
  parent: '(string|element)'
99
161
  };
100
- var Event = {
101
- SHOW: "show" + EVENT_KEY,
102
- SHOWN: "shown" + EVENT_KEY,
103
- HIDE: "hide" + EVENT_KEY,
104
- HIDDEN: "hidden" + EVENT_KEY,
105
- CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
106
- };
107
- var ClassName = {
108
- SHOW: 'show',
109
- COLLAPSE: 'collapse',
110
- COLLAPSING: 'collapsing',
111
- COLLAPSED: 'collapsed'
112
- };
113
- var Dimension = {
114
- WIDTH: 'width',
115
- HEIGHT: 'height'
116
- };
117
- var Selector = {
118
- ACTIVES: '.show, .collapsing',
119
- DATA_TOGGLE: '[data-toggle="collapse"]'
120
- };
162
+ var EVENT_SHOW = "show" + EVENT_KEY;
163
+ var EVENT_SHOWN = "shown" + EVENT_KEY;
164
+ var EVENT_HIDE = "hide" + EVENT_KEY;
165
+ var EVENT_HIDDEN = "hidden" + EVENT_KEY;
166
+ var EVENT_CLICK_DATA_API = "click" + EVENT_KEY + DATA_API_KEY;
167
+ var CLASS_NAME_SHOW = 'show';
168
+ var CLASS_NAME_COLLAPSE = 'collapse';
169
+ var CLASS_NAME_COLLAPSING = 'collapsing';
170
+ var CLASS_NAME_COLLAPSED = 'collapsed';
171
+ var WIDTH = 'width';
172
+ var HEIGHT = 'height';
173
+ var SELECTOR_ACTIVES = '.show, .collapsing';
174
+ var SELECTOR_DATA_TOGGLE = '[data-toggle="collapse"]';
121
175
  /**
122
176
  * ------------------------------------------------------------------------
123
177
  * Class Definition
124
178
  * ------------------------------------------------------------------------
125
179
  */
126
180
 
127
- var Collapse =
128
- /*#__PURE__*/
129
- function () {
181
+ var Collapse = /*#__PURE__*/function () {
130
182
  function Collapse(element, config) {
131
183
  this._isTransitioning = false;
132
184
  this._element = element;
133
185
  this._config = this._getConfig(config);
134
- this._triggerArray = [].slice.call(document.querySelectorAll("[data-toggle=\"collapse\"][href=\"#" + element.id + "\"]," + ("[data-toggle=\"collapse\"][data-target=\"#" + element.id + "\"]")));
135
- var toggleList = [].slice.call(document.querySelectorAll(Selector.DATA_TOGGLE));
186
+ this._triggerArray = SelectorEngine__default['default'].find(SELECTOR_DATA_TOGGLE + "[href=\"#" + element.id + "\"]," + (SELECTOR_DATA_TOGGLE + "[data-target=\"#" + element.id + "\"]"));
187
+ var toggleList = SelectorEngine__default['default'].find(SELECTOR_DATA_TOGGLE);
136
188
 
137
189
  for (var i = 0, len = toggleList.length; i < len; i++) {
138
190
  var elem = toggleList[i];
139
- var selector = Util.getSelectorFromElement(elem);
140
- var filterElement = [].slice.call(document.querySelectorAll(selector)).filter(function (foundElem) {
191
+ var selector = getSelectorFromElement(elem);
192
+ var filterElement = SelectorEngine__default['default'].find(selector).filter(function (foundElem) {
141
193
  return foundElem === element;
142
194
  });
143
195
 
144
- if (selector !== null && filterElement.length > 0) {
196
+ if (selector !== null && filterElement.length) {
145
197
  this._selector = selector;
146
198
 
147
199
  this._triggerArray.push(elem);
@@ -157,6 +209,8 @@
157
209
  if (this._config.toggle) {
158
210
  this.toggle();
159
211
  }
212
+
213
+ Data__default['default'].setData(element, DATA_KEY, this);
160
214
  } // Getters
161
215
 
162
216
 
@@ -164,7 +218,7 @@
164
218
 
165
219
  // Public
166
220
  _proto.toggle = function toggle() {
167
- if ($(this._element).hasClass(ClassName.SHOW)) {
221
+ if (this._element.classList.contains(CLASS_NAME_SHOW)) {
168
222
  this.hide();
169
223
  } else {
170
224
  this.show();
@@ -174,7 +228,7 @@
174
228
  _proto.show = function show() {
175
229
  var _this = this;
176
230
 
177
- if (this._isTransitioning || $(this._element).hasClass(ClassName.SHOW)) {
231
+ if (this._isTransitioning || this._element.classList.contains(CLASS_NAME_SHOW)) {
178
232
  return;
179
233
  }
180
234
 
@@ -182,12 +236,12 @@
182
236
  var activesData;
183
237
 
184
238
  if (this._parent) {
185
- actives = [].slice.call(this._parent.querySelectorAll(Selector.ACTIVES)).filter(function (elem) {
239
+ actives = SelectorEngine__default['default'].find(SELECTOR_ACTIVES, this._parent).filter(function (elem) {
186
240
  if (typeof _this._config.parent === 'string') {
187
241
  return elem.getAttribute('data-parent') === _this._config.parent;
188
242
  }
189
243
 
190
- return elem.classList.contains(ClassName.COLLAPSE);
244
+ return elem.classList.contains(CLASS_NAME_COLLAPSE);
191
245
  });
192
246
 
193
247
  if (actives.length === 0) {
@@ -195,88 +249,106 @@
195
249
  }
196
250
  }
197
251
 
252
+ var container = SelectorEngine__default['default'].findOne(this._selector);
253
+
198
254
  if (actives) {
199
- activesData = $(actives).not(this._selector).data(DATA_KEY);
255
+ var tempActiveData = actives.filter(function (elem) {
256
+ return container !== elem;
257
+ });
258
+ activesData = tempActiveData[0] ? Data__default['default'].getData(tempActiveData[0], DATA_KEY) : null;
200
259
 
201
260
  if (activesData && activesData._isTransitioning) {
202
261
  return;
203
262
  }
204
263
  }
205
264
 
206
- var startEvent = $.Event(Event.SHOW);
207
- $(this._element).trigger(startEvent);
265
+ var startEvent = EventHandler__default['default'].trigger(this._element, EVENT_SHOW);
208
266
 
209
- if (startEvent.isDefaultPrevented()) {
267
+ if (startEvent.defaultPrevented) {
210
268
  return;
211
269
  }
212
270
 
213
271
  if (actives) {
214
- Collapse._jQueryInterface.call($(actives).not(this._selector), 'hide');
272
+ actives.forEach(function (elemActive) {
273
+ if (container !== elemActive) {
274
+ Collapse.collapseInterface(elemActive, 'hide');
275
+ }
215
276
 
216
- if (!activesData) {
217
- $(actives).data(DATA_KEY, null);
218
- }
277
+ if (!activesData) {
278
+ Data__default['default'].setData(elemActive, DATA_KEY, null);
279
+ }
280
+ });
219
281
  }
220
282
 
221
283
  var dimension = this._getDimension();
222
284
 
223
- $(this._element).removeClass(ClassName.COLLAPSE).addClass(ClassName.COLLAPSING);
285
+ this._element.classList.remove(CLASS_NAME_COLLAPSE);
286
+
287
+ this._element.classList.add(CLASS_NAME_COLLAPSING);
288
+
224
289
  this._element.style[dimension] = 0;
225
290
 
226
291
  if (this._triggerArray.length) {
227
- $(this._triggerArray).removeClass(ClassName.COLLAPSED).attr('aria-expanded', true);
292
+ this._triggerArray.forEach(function (element) {
293
+ element.classList.remove(CLASS_NAME_COLLAPSED);
294
+ element.setAttribute('aria-expanded', true);
295
+ });
228
296
  }
229
297
 
230
298
  this.setTransitioning(true);
231
299
 
232
300
  var complete = function complete() {
233
- $(_this._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).addClass(ClassName.SHOW);
301
+ _this._element.classList.remove(CLASS_NAME_COLLAPSING);
302
+
303
+ _this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW);
304
+
234
305
  _this._element.style[dimension] = '';
235
306
 
236
307
  _this.setTransitioning(false);
237
308
 
238
- $(_this._element).trigger(Event.SHOWN);
309
+ EventHandler__default['default'].trigger(_this._element, EVENT_SHOWN);
239
310
  };
240
311
 
241
312
  var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);
242
313
  var scrollSize = "scroll" + capitalizedDimension;
243
- var transitionDuration = Util.getTransitionDurationFromElement(this._element);
244
- $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
314
+ var transitionDuration = getTransitionDurationFromElement(this._element);
315
+ EventHandler__default['default'].one(this._element, TRANSITION_END, complete);
316
+ emulateTransitionEnd(this._element, transitionDuration);
245
317
  this._element.style[dimension] = this._element[scrollSize] + "px";
246
318
  };
247
319
 
248
320
  _proto.hide = function hide() {
249
321
  var _this2 = this;
250
322
 
251
- if (this._isTransitioning || !$(this._element).hasClass(ClassName.SHOW)) {
323
+ if (this._isTransitioning || !this._element.classList.contains(CLASS_NAME_SHOW)) {
252
324
  return;
253
325
  }
254
326
 
255
- var startEvent = $.Event(Event.HIDE);
256
- $(this._element).trigger(startEvent);
327
+ var startEvent = EventHandler__default['default'].trigger(this._element, EVENT_HIDE);
257
328
 
258
- if (startEvent.isDefaultPrevented()) {
329
+ if (startEvent.defaultPrevented) {
259
330
  return;
260
331
  }
261
332
 
262
333
  var dimension = this._getDimension();
263
334
 
264
335
  this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + "px";
265
- Util.reflow(this._element);
266
- $(this._element).addClass(ClassName.COLLAPSING).removeClass(ClassName.COLLAPSE).removeClass(ClassName.SHOW);
336
+ reflow(this._element);
337
+
338
+ this._element.classList.add(CLASS_NAME_COLLAPSING);
339
+
340
+ this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW);
341
+
267
342
  var triggerArrayLength = this._triggerArray.length;
268
343
 
269
344
  if (triggerArrayLength > 0) {
270
345
  for (var i = 0; i < triggerArrayLength; i++) {
271
346
  var trigger = this._triggerArray[i];
272
- var selector = Util.getSelectorFromElement(trigger);
273
-
274
- if (selector !== null) {
275
- var $elem = $([].slice.call(document.querySelectorAll(selector)));
347
+ var elem = getElementFromSelector(trigger);
276
348
 
277
- if (!$elem.hasClass(ClassName.SHOW)) {
278
- $(trigger).addClass(ClassName.COLLAPSED).attr('aria-expanded', false);
279
- }
349
+ if (elem && !elem.classList.contains(CLASS_NAME_SHOW)) {
350
+ trigger.classList.add(CLASS_NAME_COLLAPSED);
351
+ trigger.setAttribute('aria-expanded', false);
280
352
  }
281
353
  }
282
354
  }
@@ -286,12 +358,17 @@
286
358
  var complete = function complete() {
287
359
  _this2.setTransitioning(false);
288
360
 
289
- $(_this2._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).trigger(Event.HIDDEN);
361
+ _this2._element.classList.remove(CLASS_NAME_COLLAPSING);
362
+
363
+ _this2._element.classList.add(CLASS_NAME_COLLAPSE);
364
+
365
+ EventHandler__default['default'].trigger(_this2._element, EVENT_HIDDEN);
290
366
  };
291
367
 
292
368
  this._element.style[dimension] = '';
293
- var transitionDuration = Util.getTransitionDurationFromElement(this._element);
294
- $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
369
+ var transitionDuration = getTransitionDurationFromElement(this._element);
370
+ EventHandler__default['default'].one(this._element, TRANSITION_END, complete);
371
+ emulateTransitionEnd(this._element, transitionDuration);
295
372
  };
296
373
 
297
374
  _proto.setTransitioning = function setTransitioning(isTransitioning) {
@@ -299,7 +376,7 @@
299
376
  };
300
377
 
301
378
  _proto.dispose = function dispose() {
302
- $.removeData(this._element, DATA_KEY);
379
+ Data__default['default'].removeData(this._element, DATA_KEY);
303
380
  this._config = null;
304
381
  this._parent = null;
305
382
  this._element = null;
@@ -309,81 +386,90 @@
309
386
  ;
310
387
 
311
388
  _proto._getConfig = function _getConfig(config) {
312
- config = _objectSpread2({}, Default, {}, config);
389
+ config = _extends({}, Default, config);
313
390
  config.toggle = Boolean(config.toggle); // Coerce string values
314
391
 
315
- Util.typeCheckConfig(NAME, config, DefaultType);
392
+ typeCheckConfig(NAME, config, DefaultType);
316
393
  return config;
317
394
  };
318
395
 
319
396
  _proto._getDimension = function _getDimension() {
320
- var hasWidth = $(this._element).hasClass(Dimension.WIDTH);
321
- return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT;
397
+ return this._element.classList.contains(WIDTH) ? WIDTH : HEIGHT;
322
398
  };
323
399
 
324
400
  _proto._getParent = function _getParent() {
325
401
  var _this3 = this;
326
402
 
327
- var parent;
328
-
329
- if (Util.isElement(this._config.parent)) {
330
- parent = this._config.parent; // It's a jQuery object
403
+ var parent = this._config.parent;
331
404
 
332
- if (typeof this._config.parent.jquery !== 'undefined') {
333
- parent = this._config.parent[0];
405
+ if (isElement(parent)) {
406
+ // it's a jQuery object
407
+ if (typeof parent.jquery !== 'undefined' || typeof parent[0] !== 'undefined') {
408
+ parent = parent[0];
334
409
  }
335
410
  } else {
336
- parent = document.querySelector(this._config.parent);
411
+ parent = SelectorEngine__default['default'].findOne(parent);
337
412
  }
338
413
 
339
- var selector = "[data-toggle=\"collapse\"][data-parent=\"" + this._config.parent + "\"]";
340
- var children = [].slice.call(parent.querySelectorAll(selector));
341
- $(children).each(function (i, element) {
342
- _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]);
414
+ var selector = SELECTOR_DATA_TOGGLE + "[data-parent=\"" + parent + "\"]";
415
+ SelectorEngine__default['default'].find(selector, parent).forEach(function (element) {
416
+ var selected = getElementFromSelector(element);
417
+
418
+ _this3._addAriaAndCollapsedClass(selected, [element]);
343
419
  });
344
420
  return parent;
345
421
  };
346
422
 
347
423
  _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {
348
- var isOpen = $(element).hasClass(ClassName.SHOW);
349
-
350
- if (triggerArray.length) {
351
- $(triggerArray).toggleClass(ClassName.COLLAPSED, !isOpen).attr('aria-expanded', isOpen);
424
+ if (!element || !triggerArray.length) {
425
+ return;
352
426
  }
427
+
428
+ var isOpen = element.classList.contains(CLASS_NAME_SHOW);
429
+ triggerArray.forEach(function (elem) {
430
+ if (isOpen) {
431
+ elem.classList.remove(CLASS_NAME_COLLAPSED);
432
+ } else {
433
+ elem.classList.add(CLASS_NAME_COLLAPSED);
434
+ }
435
+
436
+ elem.setAttribute('aria-expanded', isOpen);
437
+ });
353
438
  } // Static
354
439
  ;
355
440
 
356
- Collapse._getTargetFromElement = function _getTargetFromElement(element) {
357
- var selector = Util.getSelectorFromElement(element);
358
- return selector ? document.querySelector(selector) : null;
359
- };
441
+ Collapse.collapseInterface = function collapseInterface(element, config) {
442
+ var data = Data__default['default'].getData(element, DATA_KEY);
360
443
 
361
- Collapse._jQueryInterface = function _jQueryInterface(config) {
362
- return this.each(function () {
363
- var $this = $(this);
364
- var data = $this.data(DATA_KEY);
444
+ var _config = _extends({}, Default, Manipulator__default['default'].getDataAttributes(element), typeof config === 'object' && config ? config : {});
365
445
 
366
- var _config = _objectSpread2({}, Default, {}, $this.data(), {}, typeof config === 'object' && config ? config : {});
446
+ if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {
447
+ _config.toggle = false;
448
+ }
367
449
 
368
- if (!data && _config.toggle && /show|hide/.test(config)) {
369
- _config.toggle = false;
370
- }
450
+ if (!data) {
451
+ data = new Collapse(element, _config);
452
+ }
371
453
 
372
- if (!data) {
373
- data = new Collapse(this, _config);
374
- $this.data(DATA_KEY, data);
454
+ if (typeof config === 'string') {
455
+ if (typeof data[config] === 'undefined') {
456
+ throw new TypeError("No method named \"" + config + "\"");
375
457
  }
376
458
 
377
- if (typeof config === 'string') {
378
- if (typeof data[config] === 'undefined') {
379
- throw new TypeError("No method named \"" + config + "\"");
380
- }
459
+ data[config]();
460
+ }
461
+ };
381
462
 
382
- data[config]();
383
- }
463
+ Collapse.jQueryInterface = function jQueryInterface(config) {
464
+ return this.each(function () {
465
+ Collapse.collapseInterface(this, config);
384
466
  });
385
467
  };
386
468
 
469
+ Collapse.getInstance = function getInstance(element) {
470
+ return Data__default['default'].getData(element, DATA_KEY);
471
+ };
472
+
387
473
  _createClass(Collapse, null, [{
388
474
  key: "VERSION",
389
475
  get: function get() {
@@ -405,36 +491,54 @@
405
491
  */
406
492
 
407
493
 
408
- $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {
494
+ EventHandler__default['default'].on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
409
495
  // preventDefault only for <a> elements (which change the URL) not inside the collapsible element
410
- if (event.currentTarget.tagName === 'A') {
496
+ if (event.target.tagName === 'A') {
411
497
  event.preventDefault();
412
498
  }
413
499
 
414
- var $trigger = $(this);
415
- var selector = Util.getSelectorFromElement(this);
416
- var selectors = [].slice.call(document.querySelectorAll(selector));
417
- $(selectors).each(function () {
418
- var $target = $(this);
419
- var data = $target.data(DATA_KEY);
420
- var config = data ? 'toggle' : $trigger.data();
500
+ var triggerData = Manipulator__default['default'].getDataAttributes(this);
501
+ var selector = getSelectorFromElement(this);
502
+ var selectorElements = SelectorEngine__default['default'].find(selector);
503
+ selectorElements.forEach(function (element) {
504
+ var data = Data__default['default'].getData(element, DATA_KEY);
505
+ var config;
506
+
507
+ if (data) {
508
+ // update parent attribute
509
+ if (data._parent === null && typeof triggerData.parent === 'string') {
510
+ data._config.parent = triggerData.parent;
511
+ data._parent = data._getParent();
512
+ }
513
+
514
+ config = 'toggle';
515
+ } else {
516
+ config = triggerData;
517
+ }
421
518
 
422
- Collapse._jQueryInterface.call($target, config);
519
+ Collapse.collapseInterface(element, config);
423
520
  });
424
521
  });
522
+ var $ = getjQuery();
425
523
  /**
426
524
  * ------------------------------------------------------------------------
427
525
  * jQuery
428
526
  * ------------------------------------------------------------------------
527
+ * add .collapse to jQuery only if jQuery is present
429
528
  */
430
529
 
431
- $.fn[NAME] = Collapse._jQueryInterface;
432
- $.fn[NAME].Constructor = Collapse;
530
+ /* istanbul ignore if */
433
531
 
434
- $.fn[NAME].noConflict = function () {
435
- $.fn[NAME] = JQUERY_NO_CONFLICT;
436
- return Collapse._jQueryInterface;
437
- };
532
+ if ($) {
533
+ var JQUERY_NO_CONFLICT = $.fn[NAME];
534
+ $.fn[NAME] = Collapse.jQueryInterface;
535
+ $.fn[NAME].Constructor = Collapse;
536
+
537
+ $.fn[NAME].noConflict = function () {
538
+ $.fn[NAME] = JQUERY_NO_CONFLICT;
539
+ return Collapse.jQueryInterface;
540
+ };
541
+ }
438
542
 
439
543
  return Collapse;
440
544