bootstrap 4.3.1 → 4.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (84) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +15 -1
  3. data/CHANGELOG.md +2 -14
  4. data/README.md +1 -1
  5. data/assets/javascripts/bootstrap/alert.js +26 -35
  6. data/assets/javascripts/bootstrap/button.js +93 -52
  7. data/assets/javascripts/bootstrap/carousel.js +122 -120
  8. data/assets/javascripts/bootstrap/collapse.js +75 -71
  9. data/assets/javascripts/bootstrap/dropdown.js +143 -140
  10. data/assets/javascripts/bootstrap/modal.js +165 -134
  11. data/assets/javascripts/bootstrap/popover.js +47 -39
  12. data/assets/javascripts/bootstrap/scrollspy.js +71 -71
  13. data/assets/javascripts/bootstrap/tab.js +51 -60
  14. data/assets/javascripts/bootstrap/toast.js +84 -72
  15. data/assets/javascripts/bootstrap/tooltip.js +141 -131
  16. data/assets/javascripts/bootstrap/util.js +28 -7
  17. data/assets/javascripts/bootstrap-sprockets.js +6 -6
  18. data/assets/javascripts/bootstrap.js +811 -826
  19. data/assets/javascripts/bootstrap.min.js +3 -3
  20. data/assets/stylesheets/_bootstrap-grid.scss +3 -3
  21. data/assets/stylesheets/_bootstrap-reboot.scss +3 -3
  22. data/assets/stylesheets/_bootstrap.scss +3 -3
  23. data/assets/stylesheets/bootstrap/_badge.scss +1 -1
  24. data/assets/stylesheets/bootstrap/_breadcrumb.scss +4 -1
  25. data/assets/stylesheets/bootstrap/_button-group.scss +1 -1
  26. data/assets/stylesheets/bootstrap/_buttons.scss +13 -8
  27. data/assets/stylesheets/bootstrap/_card.scss +28 -35
  28. data/assets/stylesheets/bootstrap/_carousel.scss +6 -6
  29. data/assets/stylesheets/bootstrap/_close.scss +2 -3
  30. data/assets/stylesheets/bootstrap/_code.scss +1 -1
  31. data/assets/stylesheets/bootstrap/_custom-forms.scss +24 -9
  32. data/assets/stylesheets/bootstrap/_dropdown.scss +5 -4
  33. data/assets/stylesheets/bootstrap/_forms.scss +26 -9
  34. data/assets/stylesheets/bootstrap/_functions.scss +60 -5
  35. data/assets/stylesheets/bootstrap/_grid.scss +33 -8
  36. data/assets/stylesheets/bootstrap/_images.scss +2 -2
  37. data/assets/stylesheets/bootstrap/_input-group.scss +1 -2
  38. data/assets/stylesheets/bootstrap/_list-group.scss +36 -31
  39. data/assets/stylesheets/bootstrap/_mixins.scss +3 -3
  40. data/assets/stylesheets/bootstrap/_modal.scss +28 -16
  41. data/assets/stylesheets/bootstrap/_nav.scss +4 -3
  42. data/assets/stylesheets/bootstrap/_navbar.scss +45 -15
  43. data/assets/stylesheets/bootstrap/_pagination.scss +3 -2
  44. data/assets/stylesheets/bootstrap/_popover.scss +8 -9
  45. data/assets/stylesheets/bootstrap/_print.scss +2 -2
  46. data/assets/stylesheets/bootstrap/_progress.scss +6 -2
  47. data/assets/stylesheets/bootstrap/_reboot.scss +24 -27
  48. data/assets/stylesheets/bootstrap/_root.scss +1 -0
  49. data/assets/stylesheets/bootstrap/_spinners.scss +1 -0
  50. data/assets/stylesheets/bootstrap/_tables.scss +3 -3
  51. data/assets/stylesheets/bootstrap/_type.scss +2 -2
  52. data/assets/stylesheets/bootstrap/_utilities.scss +2 -1
  53. data/assets/stylesheets/bootstrap/_variables.scss +46 -22
  54. data/assets/stylesheets/bootstrap/mixins/_background-variant.scss +5 -3
  55. data/assets/stylesheets/bootstrap/mixins/_badge.scss +1 -1
  56. data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +26 -13
  57. data/assets/stylesheets/bootstrap/mixins/_buttons.scss +11 -8
  58. data/assets/stylesheets/bootstrap/mixins/_caret.scss +8 -8
  59. data/assets/stylesheets/bootstrap/mixins/_float.scss +3 -3
  60. data/assets/stylesheets/bootstrap/mixins/_forms.scss +34 -49
  61. data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +30 -15
  62. data/assets/stylesheets/bootstrap/mixins/_grid.scss +18 -0
  63. data/assets/stylesheets/bootstrap/mixins/_hover.scss +4 -4
  64. data/assets/stylesheets/bootstrap/mixins/_image.scss +1 -1
  65. data/assets/stylesheets/bootstrap/mixins/_list-group.scss +1 -1
  66. data/assets/stylesheets/bootstrap/mixins/_lists.scss +1 -1
  67. data/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +2 -1
  68. data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +1 -1
  69. data/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +3 -2
  70. data/assets/stylesheets/bootstrap/mixins/_table-row.scss +1 -1
  71. data/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +3 -2
  72. data/assets/stylesheets/bootstrap/mixins/_transition.scss +17 -7
  73. data/assets/stylesheets/bootstrap/utilities/_background.scss +2 -2
  74. data/assets/stylesheets/bootstrap/utilities/_interactions.scss +5 -0
  75. data/assets/stylesheets/bootstrap/utilities/_text.scss +3 -4
  76. data/bootstrap.gemspec +1 -1
  77. data/lib/bootstrap/version.rb +2 -2
  78. data/tasks/updater/network.rb +2 -2
  79. data/test/dummy_rails/app/assets/config/manifest.js +3 -0
  80. data/test/dummy_rails/app/assets/stylesheets/.browserslistrc +1 -0
  81. data/test/gemfiles/rails_6_0.gemfile +7 -0
  82. data/test/support/dummy_rails_integration.rb +3 -1
  83. data/test/test_helper.rb +18 -13
  84. metadata +11 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0e32995c543ae2e6e2053b60ca3bf7f852b89c60ce26827c4b3efc87a482d2eb
4
- data.tar.gz: bec41cdf3c4c03ed3945fa20f744aa5d2a2ebd301389809548d6c08ce08a866d
3
+ metadata.gz: 7d44008d6eea3c834721d9eed4ad670eda16e3108f6c77698549f067dc613650
4
+ data.tar.gz: e303c46e29b30c85fd55692d281a4f8b33b20c154a6c151d703a35dc72f2564f
5
5
  SHA512:
6
- metadata.gz: 8531bfb77cf50de537a66b36c08ef2f90953c9c80d0177c70f07ea14662b219380e904f27a5aed3c55c41b835efe3e20fbebe670f74495dad7efa107afeb1fea
7
- data.tar.gz: c3a0f8311bf6e76ee646fb92cd7432bd2c482e354ed7aa58b5edad824901fc1da6cc92c631553e0c48de2b7d9ba64797fd369af124fe51ae6e88681afecfeb08
6
+ metadata.gz: 28aef930d481ecd3643b289fad962c72252ca8f1d1856b161d336efe4054d6985c0759f7bafb86e5f668ce505c857156f31c4763c6a265ba5d59848750dc206e
7
+ data.tar.gz: d828f42dc68d2ac0d1fd25d356836fe366b26aa35982bc8e362eb1d1e3746f258db7594304e0871082bf6120e9b10b7ccb4d79636b1eaa454433f249ddc7600e
data/.travis.yml CHANGED
@@ -1,11 +1,25 @@
1
1
  language: ruby
2
2
  sudo: false
3
+ addons:
4
+ apt:
5
+ packages:
6
+ - chromium-browser
3
7
  rvm:
4
- - 2.3.8
8
+ - 2.5
9
+ - 2.6
10
+ - 2.7
11
+
5
12
  gemfile:
6
13
  - test/gemfiles/rails_4_2.gemfile
7
14
  - test/gemfiles/rails_5_0.gemfile
8
15
  - test/gemfiles/rails_5_1.gemfile
16
+ - test/gemfiles/rails_6_0.gemfile
17
+
18
+ jobs:
19
+ exclude:
20
+ rvm: 2.7
21
+ gemfile: test/gemfiles/rails_4_2.gemfile
22
+
9
23
  cache: bundler
10
24
  bundler_args: --path ../../vendor/bundle --without debug
11
25
  notifications:
data/CHANGELOG.md CHANGED
@@ -6,21 +6,9 @@ The changelog only includes changes specific to the RubyGem.
6
6
  The Bootstrap framework changes can be found in [the Releases section of twbs/bootstrap](https://github.com/twbs/bootstrap/releases).
7
7
  Release announcement posts on [the official Bootstrap blog](http://blog.getbootstrap.com) contain summaries of the most noteworthy changes made in each release of Bootstrap.
8
8
 
9
- # 4.1.1
9
+ # 4.2.1
10
10
 
11
- No gem-specific changes.
12
-
13
- # 4.1.0
14
-
15
- No gem-specific changes.
16
-
17
- # 4.0.0
18
-
19
- No gem-specific changes.
20
-
21
- # 4.0.0.beta3
22
-
23
- No gem-specific changes.
11
+ * Bootstrap rubygem now depends on SassC instead of Sass.
24
12
 
25
13
  # 4.0.0.beta2.1
26
14
 
data/README.md CHANGED
@@ -17,7 +17,7 @@ Please see the appropriate guide for your environment of choice:
17
17
  Add `bootstrap` to your Gemfile:
18
18
 
19
19
  ```ruby
20
- gem 'bootstrap', '~> 4.3.1'
20
+ gem 'bootstrap', '~> 4.5.0'
21
21
  ```
22
22
 
23
23
  Ensure that `sprockets-rails` is at least v2.3.2.
@@ -1,16 +1,16 @@
1
1
  /*!
2
- * Bootstrap alert.js v4.3.1 (https://getbootstrap.com/)
3
- * Copyright 2011-2019 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
2
+ * Bootstrap alert.js v4.5.0 (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/master/LICENSE)
5
5
  */
6
6
  (function (global, factory) {
7
7
  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('jquery'), require('./util.js')) :
8
8
  typeof define === 'function' && define.amd ? define(['jquery', './util.js'], factory) :
9
9
  (global = global || self, global.Alert = factory(global.jQuery, global.Util));
10
- }(this, function ($, Util) { 'use strict';
10
+ }(this, (function ($, Util) { 'use strict';
11
11
 
12
- $ = $ && $.hasOwnProperty('default') ? $['default'] : $;
13
- Util = Util && Util.hasOwnProperty('default') ? Util['default'] : Util;
12
+ $ = $ && Object.prototype.hasOwnProperty.call($, 'default') ? $['default'] : $;
13
+ Util = Util && Object.prototype.hasOwnProperty.call(Util, 'default') ? Util['default'] : Util;
14
14
 
15
15
  function _defineProperties(target, props) {
16
16
  for (var i = 0; i < props.length; i++) {
@@ -35,34 +35,25 @@
35
35
  */
36
36
 
37
37
  var NAME = 'alert';
38
- var VERSION = '4.3.1';
38
+ var VERSION = '4.5.0';
39
39
  var DATA_KEY = 'bs.alert';
40
40
  var EVENT_KEY = "." + DATA_KEY;
41
41
  var DATA_API_KEY = '.data-api';
42
42
  var JQUERY_NO_CONFLICT = $.fn[NAME];
43
- var Selector = {
44
- DISMISS: '[data-dismiss="alert"]'
45
- };
46
- var Event = {
47
- CLOSE: "close" + EVENT_KEY,
48
- CLOSED: "closed" + EVENT_KEY,
49
- CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
50
- };
51
- var ClassName = {
52
- ALERT: 'alert',
53
- FADE: 'fade',
54
- SHOW: 'show'
55
- /**
56
- * ------------------------------------------------------------------------
57
- * Class Definition
58
- * ------------------------------------------------------------------------
59
- */
60
-
61
- };
43
+ var SELECTOR_DISMISS = '[data-dismiss="alert"]';
44
+ var EVENT_CLOSE = "close" + EVENT_KEY;
45
+ var EVENT_CLOSED = "closed" + EVENT_KEY;
46
+ var EVENT_CLICK_DATA_API = "click" + EVENT_KEY + DATA_API_KEY;
47
+ var CLASS_NAME_ALERT = 'alert';
48
+ var CLASS_NAME_FADE = 'fade';
49
+ var CLASS_NAME_SHOW = 'show';
50
+ /**
51
+ * ------------------------------------------------------------------------
52
+ * Class Definition
53
+ * ------------------------------------------------------------------------
54
+ */
62
55
 
63
- var Alert =
64
- /*#__PURE__*/
65
- function () {
56
+ var Alert = /*#__PURE__*/function () {
66
57
  function Alert(element) {
67
58
  this._element = element;
68
59
  } // Getters
@@ -102,14 +93,14 @@
102
93
  }
103
94
 
104
95
  if (!parent) {
105
- parent = $(element).closest("." + ClassName.ALERT)[0];
96
+ parent = $(element).closest("." + CLASS_NAME_ALERT)[0];
106
97
  }
107
98
 
108
99
  return parent;
109
100
  };
110
101
 
111
102
  _proto._triggerCloseEvent = function _triggerCloseEvent(element) {
112
- var closeEvent = $.Event(Event.CLOSE);
103
+ var closeEvent = $.Event(EVENT_CLOSE);
113
104
  $(element).trigger(closeEvent);
114
105
  return closeEvent;
115
106
  };
@@ -117,9 +108,9 @@
117
108
  _proto._removeElement = function _removeElement(element) {
118
109
  var _this = this;
119
110
 
120
- $(element).removeClass(ClassName.SHOW);
111
+ $(element).removeClass(CLASS_NAME_SHOW);
121
112
 
122
- if (!$(element).hasClass(ClassName.FADE)) {
113
+ if (!$(element).hasClass(CLASS_NAME_FADE)) {
123
114
  this._destroyElement(element);
124
115
 
125
116
  return;
@@ -132,7 +123,7 @@
132
123
  };
133
124
 
134
125
  _proto._destroyElement = function _destroyElement(element) {
135
- $(element).detach().trigger(Event.CLOSED).remove();
126
+ $(element).detach().trigger(EVENT_CLOSED).remove();
136
127
  } // Static
137
128
  ;
138
129
 
@@ -178,7 +169,7 @@
178
169
  */
179
170
 
180
171
 
181
- $(document).on(Event.CLICK_DATA_API, Selector.DISMISS, Alert._handleDismiss(new Alert()));
172
+ $(document).on(EVENT_CLICK_DATA_API, SELECTOR_DISMISS, Alert._handleDismiss(new Alert()));
182
173
  /**
183
174
  * ------------------------------------------------------------------------
184
175
  * jQuery
@@ -195,4 +186,4 @@
195
186
 
196
187
  return Alert;
197
188
 
198
- }));
189
+ })));
@@ -1,15 +1,15 @@
1
1
  /*!
2
- * Bootstrap button.js v4.3.1 (https://getbootstrap.com/)
3
- * Copyright 2011-2019 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
2
+ * Bootstrap button.js v4.5.0 (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/master/LICENSE)
5
5
  */
6
6
  (function (global, factory) {
7
7
  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('jquery')) :
8
8
  typeof define === 'function' && define.amd ? define(['jquery'], factory) :
9
9
  (global = global || self, global.Button = factory(global.jQuery));
10
- }(this, function ($) { 'use strict';
10
+ }(this, (function ($) { 'use strict';
11
11
 
12
- $ = $ && $.hasOwnProperty('default') ? $['default'] : $;
12
+ $ = $ && Object.prototype.hasOwnProperty.call($, 'default') ? $['default'] : $;
13
13
 
14
14
  function _defineProperties(target, props) {
15
15
  for (var i = 0; i < props.length; i++) {
@@ -34,37 +34,31 @@
34
34
  */
35
35
 
36
36
  var NAME = 'button';
37
- var VERSION = '4.3.1';
37
+ var VERSION = '4.5.0';
38
38
  var DATA_KEY = 'bs.button';
39
39
  var EVENT_KEY = "." + DATA_KEY;
40
40
  var DATA_API_KEY = '.data-api';
41
41
  var JQUERY_NO_CONFLICT = $.fn[NAME];
42
- var ClassName = {
43
- ACTIVE: 'active',
44
- BUTTON: 'btn',
45
- FOCUS: 'focus'
46
- };
47
- var Selector = {
48
- DATA_TOGGLE_CARROT: '[data-toggle^="button"]',
49
- DATA_TOGGLE: '[data-toggle="buttons"]',
50
- INPUT: 'input:not([type="hidden"])',
51
- ACTIVE: '.active',
52
- BUTTON: '.btn'
53
- };
54
- var Event = {
55
- CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY,
56
- FOCUS_BLUR_DATA_API: "focus" + EVENT_KEY + DATA_API_KEY + " " + ("blur" + EVENT_KEY + DATA_API_KEY)
57
- /**
58
- * ------------------------------------------------------------------------
59
- * Class Definition
60
- * ------------------------------------------------------------------------
61
- */
62
-
63
- };
42
+ var CLASS_NAME_ACTIVE = 'active';
43
+ var CLASS_NAME_BUTTON = 'btn';
44
+ var CLASS_NAME_FOCUS = 'focus';
45
+ var SELECTOR_DATA_TOGGLE_CARROT = '[data-toggle^="button"]';
46
+ var SELECTOR_DATA_TOGGLES = '[data-toggle="buttons"]';
47
+ var SELECTOR_DATA_TOGGLE = '[data-toggle="button"]';
48
+ var SELECTOR_DATA_TOGGLES_BUTTONS = '[data-toggle="buttons"] .btn';
49
+ var SELECTOR_INPUT = 'input:not([type="hidden"])';
50
+ var SELECTOR_ACTIVE = '.active';
51
+ var SELECTOR_BUTTON = '.btn';
52
+ var EVENT_CLICK_DATA_API = "click" + EVENT_KEY + DATA_API_KEY;
53
+ var EVENT_FOCUS_BLUR_DATA_API = "focus" + EVENT_KEY + DATA_API_KEY + " " + ("blur" + EVENT_KEY + DATA_API_KEY);
54
+ var EVENT_LOAD_DATA_API = "load" + EVENT_KEY + DATA_API_KEY;
55
+ /**
56
+ * ------------------------------------------------------------------------
57
+ * Class Definition
58
+ * ------------------------------------------------------------------------
59
+ */
64
60
 
65
- var Button =
66
- /*#__PURE__*/
67
- function () {
61
+ var Button = /*#__PURE__*/function () {
68
62
  function Button(element) {
69
63
  this._element = element;
70
64
  } // Getters
@@ -76,30 +70,30 @@
76
70
  _proto.toggle = function toggle() {
77
71
  var triggerChangeEvent = true;
78
72
  var addAriaPressed = true;
79
- var rootElement = $(this._element).closest(Selector.DATA_TOGGLE)[0];
73
+ var rootElement = $(this._element).closest(SELECTOR_DATA_TOGGLES)[0];
80
74
 
81
75
  if (rootElement) {
82
- var input = this._element.querySelector(Selector.INPUT);
76
+ var input = this._element.querySelector(SELECTOR_INPUT);
83
77
 
84
78
  if (input) {
85
79
  if (input.type === 'radio') {
86
- if (input.checked && this._element.classList.contains(ClassName.ACTIVE)) {
80
+ if (input.checked && this._element.classList.contains(CLASS_NAME_ACTIVE)) {
87
81
  triggerChangeEvent = false;
88
82
  } else {
89
- var activeElement = rootElement.querySelector(Selector.ACTIVE);
83
+ var activeElement = rootElement.querySelector(SELECTOR_ACTIVE);
90
84
 
91
85
  if (activeElement) {
92
- $(activeElement).removeClass(ClassName.ACTIVE);
86
+ $(activeElement).removeClass(CLASS_NAME_ACTIVE);
93
87
  }
94
88
  }
95
89
  }
96
90
 
97
91
  if (triggerChangeEvent) {
98
- if (input.hasAttribute('disabled') || rootElement.hasAttribute('disabled') || input.classList.contains('disabled') || rootElement.classList.contains('disabled')) {
99
- return;
92
+ // if it's not a radio button or checkbox don't add a pointless/invalid checked property to the input
93
+ if (input.type === 'checkbox' || input.type === 'radio') {
94
+ input.checked = !this._element.classList.contains(CLASS_NAME_ACTIVE);
100
95
  }
101
96
 
102
- input.checked = !this._element.classList.contains(ClassName.ACTIVE);
103
97
  $(input).trigger('change');
104
98
  }
105
99
 
@@ -108,12 +102,14 @@
108
102
  }
109
103
  }
110
104
 
111
- if (addAriaPressed) {
112
- this._element.setAttribute('aria-pressed', !this._element.classList.contains(ClassName.ACTIVE));
113
- }
105
+ if (!(this._element.hasAttribute('disabled') || this._element.classList.contains('disabled'))) {
106
+ if (addAriaPressed) {
107
+ this._element.setAttribute('aria-pressed', !this._element.classList.contains(CLASS_NAME_ACTIVE));
108
+ }
114
109
 
115
- if (triggerChangeEvent) {
116
- $(this._element).toggleClass(ClassName.ACTIVE);
110
+ if (triggerChangeEvent) {
111
+ $(this._element).toggleClass(CLASS_NAME_ACTIVE);
112
+ }
117
113
  }
118
114
  };
119
115
 
@@ -154,18 +150,63 @@
154
150
  */
155
151
 
156
152
 
157
- $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) {
158
- event.preventDefault();
153
+ $(document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, function (event) {
159
154
  var button = event.target;
155
+ var initialButton = button;
156
+
157
+ if (!$(button).hasClass(CLASS_NAME_BUTTON)) {
158
+ button = $(button).closest(SELECTOR_BUTTON)[0];
159
+ }
160
160
 
161
- if (!$(button).hasClass(ClassName.BUTTON)) {
162
- button = $(button).closest(Selector.BUTTON);
161
+ if (!button || button.hasAttribute('disabled') || button.classList.contains('disabled')) {
162
+ event.preventDefault(); // work around Firefox bug #1540995
163
+ } else {
164
+ var inputBtn = button.querySelector(SELECTOR_INPUT);
165
+
166
+ if (inputBtn && (inputBtn.hasAttribute('disabled') || inputBtn.classList.contains('disabled'))) {
167
+ event.preventDefault(); // work around Firefox bug #1540995
168
+
169
+ return;
170
+ }
171
+
172
+ if (initialButton.tagName === 'LABEL' && inputBtn && inputBtn.type === 'checkbox') {
173
+ event.preventDefault(); // work around event sent to label and input
174
+ }
175
+
176
+ Button._jQueryInterface.call($(button), 'toggle');
163
177
  }
178
+ }).on(EVENT_FOCUS_BLUR_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, function (event) {
179
+ var button = $(event.target).closest(SELECTOR_BUTTON)[0];
180
+ $(button).toggleClass(CLASS_NAME_FOCUS, /^focus(in)?$/.test(event.type));
181
+ });
182
+ $(window).on(EVENT_LOAD_DATA_API, function () {
183
+ // ensure correct active class is set to match the controls' actual values/states
184
+ // find all checkboxes/readio buttons inside data-toggle groups
185
+ var buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLES_BUTTONS));
186
+
187
+ for (var i = 0, len = buttons.length; i < len; i++) {
188
+ var button = buttons[i];
189
+ var input = button.querySelector(SELECTOR_INPUT);
190
+
191
+ if (input.checked || input.hasAttribute('checked')) {
192
+ button.classList.add(CLASS_NAME_ACTIVE);
193
+ } else {
194
+ button.classList.remove(CLASS_NAME_ACTIVE);
195
+ }
196
+ } // find all button toggles
197
+
198
+
199
+ buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE));
164
200
 
165
- Button._jQueryInterface.call($(button), 'toggle');
166
- }).on(Event.FOCUS_BLUR_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) {
167
- var button = $(event.target).closest(Selector.BUTTON)[0];
168
- $(button).toggleClass(ClassName.FOCUS, /^focus(in)?$/.test(event.type));
201
+ for (var _i = 0, _len = buttons.length; _i < _len; _i++) {
202
+ var _button = buttons[_i];
203
+
204
+ if (_button.getAttribute('aria-pressed') === 'true') {
205
+ _button.classList.add(CLASS_NAME_ACTIVE);
206
+ } else {
207
+ _button.classList.remove(CLASS_NAME_ACTIVE);
208
+ }
209
+ }
169
210
  });
170
211
  /**
171
212
  * ------------------------------------------------------------------------
@@ -183,4 +224,4 @@
183
224
 
184
225
  return Button;
185
226
 
186
- }));
227
+ })));