bootstrap 4.3.1 → 4.5.0

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.

Potentially problematic release.


This version of bootstrap might be problematic. Click here for more details.

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
+ })));