bootstrap 4.0.0.beta2.1 → 4.0.0.beta3

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 (55) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +4 -0
  3. data/README.md +1 -1
  4. data/assets/javascripts/bootstrap-sprockets.js +4 -4
  5. data/assets/javascripts/bootstrap.js +576 -534
  6. data/assets/javascripts/bootstrap.min.js +2 -2
  7. data/assets/javascripts/bootstrap/alert.js +3 -3
  8. data/assets/javascripts/bootstrap/button.js +3 -3
  9. data/assets/javascripts/bootstrap/carousel.js +10 -7
  10. data/assets/javascripts/bootstrap/collapse.js +7 -5
  11. data/assets/javascripts/bootstrap/dropdown.js +64 -37
  12. data/assets/javascripts/bootstrap/modal.js +8 -6
  13. data/assets/javascripts/bootstrap/popover.js +19 -7
  14. data/assets/javascripts/bootstrap/scrollspy.js +6 -4
  15. data/assets/javascripts/bootstrap/tab.js +8 -16
  16. data/assets/javascripts/bootstrap/tooltip.js +23 -17
  17. data/assets/javascripts/bootstrap/util.js +18 -21
  18. data/assets/stylesheets/_bootstrap-grid.scss +1 -1
  19. data/assets/stylesheets/_bootstrap-reboot.scss +1 -1
  20. data/assets/stylesheets/_bootstrap.scss +2 -2
  21. data/assets/stylesheets/bootstrap/_alert.scss +2 -0
  22. data/assets/stylesheets/bootstrap/_button-group.scss +31 -72
  23. data/assets/stylesheets/bootstrap/_buttons.scss +22 -11
  24. data/assets/stylesheets/bootstrap/_card.scss +23 -12
  25. data/assets/stylesheets/bootstrap/_carousel.scss +2 -2
  26. data/assets/stylesheets/bootstrap/_close.scss +6 -1
  27. data/assets/stylesheets/bootstrap/_code.scss +4 -12
  28. data/assets/stylesheets/bootstrap/_custom-forms.scss +110 -85
  29. data/assets/stylesheets/bootstrap/_dropdown.scss +30 -2
  30. data/assets/stylesheets/bootstrap/_forms.scss +46 -71
  31. data/assets/stylesheets/bootstrap/_functions.scss +4 -4
  32. data/assets/stylesheets/bootstrap/_images.scss +0 -1
  33. data/assets/stylesheets/bootstrap/_input-group.scss +96 -126
  34. data/assets/stylesheets/bootstrap/_list-group.scss +2 -1
  35. data/assets/stylesheets/bootstrap/_modal.scss +24 -9
  36. data/assets/stylesheets/bootstrap/_nav.scss +2 -2
  37. data/assets/stylesheets/bootstrap/_navbar.scss +6 -1
  38. data/assets/stylesheets/bootstrap/_pagination.scss +27 -19
  39. data/assets/stylesheets/bootstrap/_popover.scss +104 -115
  40. data/assets/stylesheets/bootstrap/_progress.scss +4 -1
  41. data/assets/stylesheets/bootstrap/_reboot.scss +3 -2
  42. data/assets/stylesheets/bootstrap/_tables.scss +1 -1
  43. data/assets/stylesheets/bootstrap/_tooltip.scss +63 -55
  44. data/assets/stylesheets/bootstrap/_type.scss +2 -2
  45. data/assets/stylesheets/bootstrap/_variables.scss +135 -91
  46. data/assets/stylesheets/bootstrap/mixins/_background-variant.scss +2 -1
  47. data/assets/stylesheets/bootstrap/mixins/_breakpoints.scss +4 -2
  48. data/assets/stylesheets/bootstrap/mixins/_buttons.scss +25 -18
  49. data/assets/stylesheets/bootstrap/mixins/_caret.scss +30 -0
  50. data/assets/stylesheets/bootstrap/mixins/_forms.scss +42 -17
  51. data/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +1 -1
  52. data/assets/stylesheets/bootstrap/mixins/_text-hide.scss +1 -0
  53. data/lib/bootstrap/version.rb +2 -2
  54. data/tasks/updater/js.rb +1 -1
  55. metadata +3 -3
@@ -1,21 +1,23 @@
1
+ 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); }
2
+
1
3
  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); } }
2
4
 
3
5
  function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
4
6
 
5
7
  /**
6
8
  * --------------------------------------------------------------------------
7
- * Bootstrap (v4.0.0-beta.2): scrollspy.js
9
+ * Bootstrap (v4.0.0-beta.3): scrollspy.js
8
10
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
9
11
  * --------------------------------------------------------------------------
10
12
  */
11
- var ScrollSpy = function () {
13
+ var ScrollSpy = function ($) {
12
14
  /**
13
15
  * ------------------------------------------------------------------------
14
16
  * Constants
15
17
  * ------------------------------------------------------------------------
16
18
  */
17
19
  var NAME = 'scrollspy';
18
- var VERSION = '4.0.0-beta.2';
20
+ var VERSION = '4.0.0-beta.3';
19
21
  var DATA_KEY = 'bs.scrollspy';
20
22
  var EVENT_KEY = "." + DATA_KEY;
21
23
  var DATA_API_KEY = '.data-api';
@@ -142,7 +144,7 @@ var ScrollSpy = function () {
142
144
 
143
145
 
144
146
  _proto._getConfig = function _getConfig(config) {
145
- config = $.extend({}, Default, config);
147
+ config = _extends({}, Default, config);
146
148
 
147
149
  if (typeof config.target !== 'string') {
148
150
  var id = $(config.target).attr('id');
@@ -4,18 +4,18 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d
4
4
 
5
5
  /**
6
6
  * --------------------------------------------------------------------------
7
- * Bootstrap (v4.0.0-beta.2): tab.js
7
+ * Bootstrap (v4.0.0-beta.3): tab.js
8
8
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
9
9
  * --------------------------------------------------------------------------
10
10
  */
11
- var Tab = function () {
11
+ var Tab = function ($) {
12
12
  /**
13
13
  * ------------------------------------------------------------------------
14
14
  * Constants
15
15
  * ------------------------------------------------------------------------
16
16
  */
17
17
  var NAME = 'tab';
18
- var VERSION = '4.0.0-beta.2';
18
+ var VERSION = '4.0.0-beta.3';
19
19
  var DATA_KEY = 'bs.tab';
20
20
  var EVENT_KEY = "." + DATA_KEY;
21
21
  var DATA_API_KEY = '.data-api';
@@ -142,7 +142,7 @@ var Tab = function () {
142
142
  var isTransitioning = callback && Util.supportsTransitionEnd() && active && $(active).hasClass(ClassName.FADE);
143
143
 
144
144
  var complete = function complete() {
145
- return _this2._transitionComplete(element, active, isTransitioning, callback);
145
+ return _this2._transitionComplete(element, active, callback);
146
146
  };
147
147
 
148
148
  if (active && isTransitioning) {
@@ -150,15 +150,11 @@ var Tab = function () {
150
150
  } else {
151
151
  complete();
152
152
  }
153
-
154
- if (active) {
155
- $(active).removeClass(ClassName.SHOW);
156
- }
157
153
  };
158
154
 
159
- _proto._transitionComplete = function _transitionComplete(element, active, isTransitioning, callback) {
155
+ _proto._transitionComplete = function _transitionComplete(element, active, callback) {
160
156
  if (active) {
161
- $(active).removeClass(ClassName.ACTIVE);
157
+ $(active).removeClass(ClassName.SHOW + " " + ClassName.ACTIVE);
162
158
  var dropdownChild = $(active.parentNode).find(Selector.DROPDOWN_ACTIVE_CHILD)[0];
163
159
 
164
160
  if (dropdownChild) {
@@ -176,12 +172,8 @@ var Tab = function () {
176
172
  element.setAttribute('aria-selected', true);
177
173
  }
178
174
 
179
- if (isTransitioning) {
180
- Util.reflow(element);
181
- $(element).addClass(ClassName.SHOW);
182
- } else {
183
- $(element).removeClass(ClassName.FADE);
184
- }
175
+ Util.reflow(element);
176
+ $(element).addClass(ClassName.SHOW);
185
177
 
186
178
  if (element.parentNode && $(element.parentNode).hasClass(ClassName.DROPDOWN_MENU)) {
187
179
  var dropdownElement = $(element).closest(Selector.DROPDOWN)[0];
@@ -1,30 +1,23 @@
1
+ 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); }
2
+
1
3
  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); } }
2
4
 
3
5
  function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
4
6
 
5
7
  /**
6
8
  * --------------------------------------------------------------------------
7
- * Bootstrap (v4.0.0-beta.2): tooltip.js
9
+ * Bootstrap (v4.0.0-beta.3): tooltip.js
8
10
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
9
11
  * --------------------------------------------------------------------------
10
12
  */
11
- var Tooltip = function () {
12
- /**
13
- * Check for Popper dependency
14
- * Popper - https://popper.js.org
15
- */
16
- if (typeof Popper === 'undefined') {
17
- throw new Error('Bootstrap tooltips require Popper.js (https://popper.js.org)');
18
- }
13
+ var Tooltip = function ($) {
19
14
  /**
20
15
  * ------------------------------------------------------------------------
21
16
  * Constants
22
17
  * ------------------------------------------------------------------------
23
18
  */
24
-
25
-
26
19
  var NAME = 'tooltip';
27
- var VERSION = '4.0.0-beta.2';
20
+ var VERSION = '4.0.0-beta.3';
28
21
  var DATA_KEY = 'bs.tooltip';
29
22
  var EVENT_KEY = "." + DATA_KEY;
30
23
  var JQUERY_NO_CONFLICT = $.fn[NAME];
@@ -42,7 +35,8 @@ var Tooltip = function () {
42
35
  placement: '(string|function)',
43
36
  offset: '(number|string)',
44
37
  container: '(string|element|boolean)',
45
- fallbackPlacement: '(string|array)'
38
+ fallbackPlacement: '(string|array)',
39
+ boundary: '(string|element)'
46
40
  };
47
41
  var AttachmentMap = {
48
42
  AUTO: 'auto',
@@ -62,7 +56,8 @@ var Tooltip = function () {
62
56
  placement: 'top',
63
57
  offset: 0,
64
58
  container: false,
65
- fallbackPlacement: 'flip'
59
+ fallbackPlacement: 'flip',
60
+ boundary: 'scrollParent'
66
61
  };
67
62
  var HoverState = {
68
63
  SHOW: 'show',
@@ -106,7 +101,15 @@ var Tooltip = function () {
106
101
  /*#__PURE__*/
107
102
  function () {
108
103
  function Tooltip(element, config) {
109
- // private
104
+ /**
105
+ * Check for Popper dependency
106
+ * Popper - https://popper.js.org
107
+ */
108
+ if (typeof Popper === 'undefined') {
109
+ throw new Error('Bootstrap tooltips require Popper.js (https://popper.js.org)');
110
+ } // private
111
+
112
+
110
113
  this._isEnabled = true;
111
114
  this._timeout = 0;
112
115
  this._hoverState = '';
@@ -244,6 +247,9 @@ var Tooltip = function () {
244
247
  },
245
248
  arrow: {
246
249
  element: Selector.ARROW
250
+ },
251
+ preventOverflow: {
252
+ boundariesElement: this.config.boundary
247
253
  }
248
254
  },
249
255
  onCreate: function onCreate(data) {
@@ -421,7 +427,7 @@ var Tooltip = function () {
421
427
  });
422
428
 
423
429
  if (this.config.selector) {
424
- this.config = $.extend({}, this.config, {
430
+ this.config = _extends({}, this.config, {
425
431
  trigger: 'manual',
426
432
  selector: ''
427
433
  });
@@ -515,7 +521,7 @@ var Tooltip = function () {
515
521
  };
516
522
 
517
523
  _proto._getConfig = function _getConfig(config) {
518
- config = $.extend({}, this.constructor.Default, $(this.element).data(), config);
524
+ config = _extends({}, this.constructor.Default, $(this.element).data(), config);
519
525
 
520
526
  if (typeof config.delay === 'number') {
521
527
  config.delay = {
@@ -1,24 +1,17 @@
1
1
  /**
2
2
  * --------------------------------------------------------------------------
3
- * Bootstrap (v4.0.0-beta.2): util.js
3
+ * Bootstrap (v4.0.0-beta.3): util.js
4
4
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
5
5
  * --------------------------------------------------------------------------
6
6
  */
7
- var Util = function () {
7
+ var Util = function ($) {
8
8
  /**
9
9
  * ------------------------------------------------------------------------
10
10
  * Private TransitionEnd Helpers
11
11
  * ------------------------------------------------------------------------
12
12
  */
13
13
  var transition = false;
14
- var MAX_UID = 1000000;
15
- var TransitionEndEvent = {
16
- WebkitTransition: 'webkitTransitionEnd',
17
- MozTransition: 'transitionend',
18
- OTransition: 'oTransitionEnd otransitionend',
19
- transition: 'transitionend' // shoutout AngusCroll (https://goo.gl/pxwQGp)
20
-
21
- };
14
+ var MAX_UID = 1000000; // shoutout AngusCroll (https://goo.gl/pxwQGp)
22
15
 
23
16
  function toType(obj) {
24
17
  return {}.toString.call(obj).match(/\s([a-zA-Z]+)/)[1].toLowerCase();
@@ -43,17 +36,9 @@ var Util = function () {
43
36
  return false;
44
37
  }
45
38
 
46
- var el = document.createElement('bootstrap');
47
-
48
- for (var name in TransitionEndEvent) {
49
- if (typeof el.style[name] !== 'undefined') {
50
- return {
51
- end: TransitionEndEvent[name]
52
- };
53
- }
54
- }
55
-
56
- return false;
39
+ return {
40
+ end: 'transitionend'
41
+ };
57
42
  }
58
43
 
59
44
  function transitionEndEmulator(duration) {
@@ -79,6 +64,13 @@ var Util = function () {
79
64
  $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();
80
65
  }
81
66
  }
67
+
68
+ function escapeId(selector) {
69
+ // we escape IDs in case of special selectors (selector = '#myId:something')
70
+ // $.escapeSelector does not exist in jQuery < 3
71
+ selector = typeof $.escapeSelector === 'function' ? $.escapeSelector(selector).substr(1) : selector.replace(/(:|\.|\[|\]|,|=|@)/g, '\\$1');
72
+ return selector;
73
+ }
82
74
  /**
83
75
  * --------------------------------------------------------------------------
84
76
  * Public Util Api
@@ -101,6 +93,11 @@ var Util = function () {
101
93
 
102
94
  if (!selector || selector === '#') {
103
95
  selector = element.getAttribute('href') || '';
96
+ } // if it's an ID
97
+
98
+
99
+ if (selector.charAt(0) === '#') {
100
+ selector = escapeId(selector);
104
101
  }
105
102
 
106
103
  try {
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Bootstrap Grid v4.0.0-beta.2 (https://getbootstrap.com)
2
+ * Bootstrap Grid v4.0.0-beta.3 (https://getbootstrap.com)
3
3
  * Copyright 2011-2017 The Bootstrap Authors
4
4
  * Copyright 2011-2017 Twitter, Inc.
5
5
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Bootstrap Reboot v4.0.0-beta.2 (https://getbootstrap.com)
2
+ * Bootstrap Reboot v4.0.0-beta.3 (https://getbootstrap.com)
3
3
  * Copyright 2011-2017 The Bootstrap Authors
4
4
  * Copyright 2011-2017 Twitter, Inc.
5
5
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Bootstrap v4.0.0-beta.2 (https://getbootstrap.com)
2
+ * Bootstrap v4.0.0-beta.3 (https://getbootstrap.com)
3
3
  * Copyright 2011-2017 The Bootstrap Authors
4
4
  * Copyright 2011-2017 Twitter, Inc.
5
5
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
@@ -9,7 +9,6 @@
9
9
  @import "bootstrap/variables";
10
10
  @import "bootstrap/mixins";
11
11
  @import "bootstrap/root";
12
- @import "bootstrap/print";
13
12
  @import "bootstrap/reboot";
14
13
  @import "bootstrap/type";
15
14
  @import "bootstrap/images";
@@ -40,3 +39,4 @@
40
39
  @import "bootstrap/popover";
41
40
  @import "bootstrap/carousel";
42
41
  @import "bootstrap/utilities";
42
+ @import "bootstrap/print";
@@ -27,6 +27,8 @@
27
27
  // Expand the right padding and account for the close button's positioning.
28
28
 
29
29
  .alert-dismissible {
30
+ padding-right: ($close-font-size + $alert-padding-x * 2);
31
+
30
32
  // Adjust close link position
31
33
  .close {
32
34
  position: absolute;
@@ -14,12 +14,12 @@
14
14
  // Bring the hover, focused, and "active" buttons to the front to overlay
15
15
  // the borders properly
16
16
  @include hover {
17
- z-index: 2;
17
+ z-index: 1;
18
18
  }
19
19
  &:focus,
20
20
  &:active,
21
21
  &.active {
22
- z-index: 2;
22
+ z-index: 1;
23
23
  }
24
24
  }
25
25
 
@@ -28,7 +28,7 @@
28
28
  .btn + .btn-group,
29
29
  .btn-group + .btn,
30
30
  .btn-group + .btn-group {
31
- margin-left: -$input-btn-border-width;
31
+ margin-left: -$btn-border-width;
32
32
  }
33
33
  }
34
34
 
@@ -43,48 +43,23 @@
43
43
  }
44
44
  }
45
45
 
46
- .btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
47
- border-radius: 0;
48
- }
49
-
50
- // Set corners individual because sometimes a single button can be in a .btn-group
51
- // and we need :first-child and :last-child to both match
52
- .btn-group > .btn:first-child {
53
- margin-left: 0;
54
-
55
- &:not(:last-child):not(.dropdown-toggle) {
56
- @include border-right-radius(0);
46
+ .btn-group {
47
+ > .btn:first-child {
48
+ margin-left: 0;
57
49
  }
58
- }
59
- // Need .dropdown-toggle since :last-child doesn't apply given a .dropdown-menu
60
- // immediately after it
61
- .btn-group > .btn:last-child:not(:first-child),
62
- .btn-group > .dropdown-toggle:not(:first-child) {
63
- @include border-left-radius(0);
64
- }
65
50
 
66
- // Custom edits for including btn-groups within btn-groups (useful for including
67
- // dropdown buttons within a btn-group)
68
- .btn-group > .btn-group {
69
- float: left;
70
- }
71
-
72
- .btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
73
- border-radius: 0;
74
- }
75
-
76
- .btn-group > .btn-group:first-child:not(:last-child) {
77
- > .btn:last-child,
78
- > .dropdown-toggle {
51
+ // Reset rounded corners
52
+ > .btn:not(:last-child):not(.dropdown-toggle),
53
+ > .btn-group:not(:last-child) > .btn {
79
54
  @include border-right-radius(0);
80
55
  }
81
- }
82
56
 
83
- .btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {
84
- @include border-left-radius(0);
57
+ > .btn:not(:first-child),
58
+ > .btn-group:not(:first-child) > .btn {
59
+ @include border-left-radius(0);
60
+ }
85
61
  }
86
62
 
87
-
88
63
  // Sizing
89
64
  //
90
65
  // Remix the default button sizing classes into new ones for easier manipulation.
@@ -97,9 +72,9 @@
97
72
  // Split button dropdowns
98
73
  //
99
74
 
100
- .btn + .dropdown-toggle-split {
101
- padding-right: $input-btn-padding-x * .75;
102
- padding-left: $input-btn-padding-x * .75;
75
+ .dropdown-toggle-split {
76
+ padding-right: $btn-padding-x * .75;
77
+ padding-left: $btn-padding-x * .75;
103
78
 
104
79
  &::after {
105
80
  margin-left: 0;
@@ -107,13 +82,13 @@
107
82
  }
108
83
 
109
84
  .btn-sm + .dropdown-toggle-split {
110
- padding-right: $input-btn-padding-x-sm * .75;
111
- padding-left: $input-btn-padding-x-sm * .75;
85
+ padding-right: $btn-padding-x-sm * .75;
86
+ padding-left: $btn-padding-x-sm * .75;
112
87
  }
113
88
 
114
89
  .btn-lg + .dropdown-toggle-split {
115
- padding-right: $input-btn-padding-x-lg * .75;
116
- padding-left: $input-btn-padding-x-lg * .75;
90
+ padding-right: $btn-padding-x-lg * .75;
91
+ padding-left: $btn-padding-x-lg * .75;
117
92
  }
118
93
 
119
94
 
@@ -147,36 +122,18 @@
147
122
  > .btn + .btn-group,
148
123
  > .btn-group + .btn,
149
124
  > .btn-group + .btn-group {
150
- margin-top: -$input-btn-border-width;
125
+ margin-top: -$btn-border-width;
151
126
  margin-left: 0;
152
127
  }
153
128
 
154
- > .btn {
155
- &:not(:first-child):not(:last-child) {
156
- border-radius: 0;
157
- }
158
-
159
- &:first-child:not(:last-child) {
160
- @include border-bottom-radius(0);
161
- }
162
-
163
- &:last-child:not(:first-child) {
164
- @include border-top-radius(0);
165
- }
129
+ // Reset rounded corners
130
+ > .btn:not(:last-child):not(.dropdown-toggle),
131
+ > .btn-group:not(:last-child) > .btn {
132
+ @include border-bottom-radius(0);
166
133
  }
167
134
 
168
- > .btn-group:not(:first-child):not(:last-child) > .btn {
169
- border-radius: 0;
170
- }
171
-
172
- > .btn-group:first-child:not(:last-child) {
173
- > .btn:last-child,
174
- > .dropdown-toggle {
175
- @include border-bottom-radius(0);
176
- }
177
- }
178
-
179
- > .btn-group:last-child:not(:first-child) > .btn:first-child {
135
+ > .btn:not(:first-child),
136
+ > .btn-group:not(:first-child) > .btn {
180
137
  @include border-top-radius(0);
181
138
  }
182
139
  }
@@ -194,13 +151,15 @@
194
151
  // See https://github.com/twbs/bootstrap/pull/12794 and
195
152
  // https://github.com/twbs/bootstrap/pull/14559 for more information.
196
153
 
197
- [data-toggle="buttons"] {
154
+ .btn-group-toggle {
198
155
  > .btn,
199
156
  > .btn-group > .btn {
157
+ margin-bottom: 0; // Override default `<label>` value
158
+
200
159
  input[type="radio"],
201
160
  input[type="checkbox"] {
202
161
  position: absolute;
203
- clip: rect(0,0,0,0);
162
+ clip: rect(0, 0, 0, 0);
204
163
  pointer-events: none;
205
164
  }
206
165
  }