bootstrap 4.2.1 → 4.3.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


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

Files changed (75) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/assets/javascripts/bootstrap-sprockets.js +5 -5
  4. data/assets/javascripts/bootstrap.js +133 -94
  5. data/assets/javascripts/bootstrap.min.js +3 -3
  6. data/assets/javascripts/bootstrap/alert.js +10 -10
  7. data/assets/javascripts/bootstrap/button.js +8 -8
  8. data/assets/javascripts/bootstrap/carousel.js +14 -12
  9. data/assets/javascripts/bootstrap/collapse.js +10 -10
  10. data/assets/javascripts/bootstrap/dropdown.js +22 -18
  11. data/assets/javascripts/bootstrap/modal.js +19 -13
  12. data/assets/javascripts/bootstrap/popover.js +10 -10
  13. data/assets/javascripts/bootstrap/scrollspy.js +10 -10
  14. data/assets/javascripts/bootstrap/tab.js +14 -11
  15. data/assets/javascripts/bootstrap/toast.js +15 -10
  16. data/assets/javascripts/bootstrap/tooltip.js +41 -26
  17. data/assets/javascripts/bootstrap/util.js +11 -7
  18. data/assets/stylesheets/_bootstrap-grid.scss +3 -3
  19. data/assets/stylesheets/_bootstrap-reboot.scss +3 -3
  20. data/assets/stylesheets/_bootstrap.scss +3 -3
  21. data/assets/stylesheets/bootstrap/_badge.scss +2 -1
  22. data/assets/stylesheets/bootstrap/_buttons.scss +2 -5
  23. data/assets/stylesheets/bootstrap/_card.scss +13 -34
  24. data/assets/stylesheets/bootstrap/_carousel.scss +1 -2
  25. data/assets/stylesheets/bootstrap/_close.scss +1 -4
  26. data/assets/stylesheets/bootstrap/_code.scss +5 -5
  27. data/assets/stylesheets/bootstrap/_custom-forms.scss +11 -11
  28. data/assets/stylesheets/bootstrap/_dropdown.scss +20 -20
  29. data/assets/stylesheets/bootstrap/_forms.scss +12 -16
  30. data/assets/stylesheets/bootstrap/_functions.scss +3 -3
  31. data/assets/stylesheets/bootstrap/_images.scss +1 -1
  32. data/assets/stylesheets/bootstrap/_input-group.scss +3 -3
  33. data/assets/stylesheets/bootstrap/_jumbotron.scss +1 -0
  34. data/assets/stylesheets/bootstrap/_list-group.scss +33 -5
  35. data/assets/stylesheets/bootstrap/_mixins.scss +6 -0
  36. data/assets/stylesheets/bootstrap/_modal.scss +47 -4
  37. data/assets/stylesheets/bootstrap/_navbar.scss +3 -8
  38. data/assets/stylesheets/bootstrap/_pagination.scss +0 -5
  39. data/assets/stylesheets/bootstrap/_popover.scss +46 -58
  40. data/assets/stylesheets/bootstrap/_print.scss +1 -1
  41. data/assets/stylesheets/bootstrap/_progress.scss +15 -6
  42. data/assets/stylesheets/bootstrap/_reboot.scss +28 -7
  43. data/assets/stylesheets/bootstrap/_spinners.scss +2 -0
  44. data/assets/stylesheets/bootstrap/_tables.scss +3 -5
  45. data/assets/stylesheets/bootstrap/_toasts.scss +3 -2
  46. data/assets/stylesheets/bootstrap/_tooltip.scss +1 -1
  47. data/assets/stylesheets/bootstrap/_transitions.scss +0 -2
  48. data/assets/stylesheets/bootstrap/_type.scss +15 -15
  49. data/assets/stylesheets/bootstrap/_utilities.scss +1 -0
  50. data/assets/stylesheets/bootstrap/_variables.scss +129 -97
  51. data/assets/stylesheets/bootstrap/mixins/_badge.scss +6 -0
  52. data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +29 -1
  53. data/assets/stylesheets/bootstrap/mixins/_box-shadow.scss +16 -1
  54. data/assets/stylesheets/bootstrap/mixins/_buttons.scss +3 -7
  55. data/assets/stylesheets/bootstrap/mixins/_caret.scss +4 -4
  56. data/assets/stylesheets/bootstrap/mixins/_deprecate.scss +10 -0
  57. data/assets/stylesheets/bootstrap/mixins/_float.scss +3 -0
  58. data/assets/stylesheets/bootstrap/mixins/_forms.scss +8 -14
  59. data/assets/stylesheets/bootstrap/mixins/_image.scss +2 -2
  60. data/assets/stylesheets/bootstrap/mixins/_pagination.scss +1 -1
  61. data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +1 -1
  62. data/assets/stylesheets/bootstrap/mixins/_size.scss +1 -0
  63. data/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +5 -3
  64. data/assets/stylesheets/bootstrap/mixins/_text-hide.scss +1 -3
  65. data/assets/stylesheets/bootstrap/mixins/_transition.scss +1 -1
  66. data/assets/stylesheets/bootstrap/mixins/_visibility.scss +1 -0
  67. data/assets/stylesheets/bootstrap/utilities/_borders.scss +13 -1
  68. data/assets/stylesheets/bootstrap/utilities/_display.scss +6 -18
  69. data/assets/stylesheets/bootstrap/utilities/_float.scss +5 -3
  70. data/assets/stylesheets/bootstrap/utilities/_stretched-link.scss +19 -0
  71. data/assets/stylesheets/bootstrap/utilities/_text.scss +6 -1
  72. data/assets/stylesheets/bootstrap/utilities/_visibility.scss +4 -2
  73. data/assets/stylesheets/bootstrap/vendor/_rfs.scss +212 -0
  74. data/lib/bootstrap/version.rb +2 -2
  75. metadata +5 -2
@@ -1,13 +1,13 @@
1
1
  /*!
2
- * Bootstrap scrollspy.js v4.2.1 (https://getbootstrap.com/)
3
- * Copyright 2011-2018 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
2
+ * Bootstrap scrollspy.js v4.3.0 (https://getbootstrap.com/)
3
+ * Copyright 2011-2019 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
- (global.ScrollSpy = factory(global.jQuery,global.Util));
10
- }(this, (function ($,Util) { 'use strict';
9
+ (global = global || self, global.ScrollSpy = factory(global.jQuery, global.Util));
10
+ }(this, function ($, Util) { 'use strict';
11
11
 
12
12
  $ = $ && $.hasOwnProperty('default') ? $['default'] : $;
13
13
  Util = Util && Util.hasOwnProperty('default') ? Util['default'] : Util;
@@ -69,7 +69,7 @@
69
69
  */
70
70
 
71
71
  var NAME = 'scrollspy';
72
- var VERSION = '4.2.1';
72
+ var VERSION = '4.3.0';
73
73
  var DATA_KEY = 'bs.scrollspy';
74
74
  var EVENT_KEY = "." + DATA_KEY;
75
75
  var DATA_API_KEY = '.data-api';
@@ -192,8 +192,8 @@
192
192
  this._targets = null;
193
193
  this._activeTarget = null;
194
194
  this._scrollHeight = null;
195
- }; // Private
196
-
195
+ } // Private
196
+ ;
197
197
 
198
198
  _proto._getConfig = function _getConfig(config) {
199
199
  config = _objectSpread({}, Default, typeof config === 'object' && config ? config : {});
@@ -300,8 +300,8 @@
300
300
  }).forEach(function (node) {
301
301
  return node.classList.remove(ClassName.ACTIVE);
302
302
  });
303
- }; // Static
304
-
303
+ } // Static
304
+ ;
305
305
 
306
306
  ScrollSpy._jQueryInterface = function _jQueryInterface(config) {
307
307
  return this.each(function () {
@@ -371,4 +371,4 @@
371
371
 
372
372
  return ScrollSpy;
373
373
 
374
- })));
374
+ }));
@@ -1,13 +1,13 @@
1
1
  /*!
2
- * Bootstrap tab.js v4.2.1 (https://getbootstrap.com/)
3
- * Copyright 2011-2018 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
2
+ * Bootstrap tab.js v4.3.0 (https://getbootstrap.com/)
3
+ * Copyright 2011-2019 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
- (global.Tab = factory(global.jQuery,global.Util));
10
- }(this, (function ($,Util) { 'use strict';
9
+ (global = global || self, global.Tab = factory(global.jQuery, global.Util));
10
+ }(this, function ($, Util) { 'use strict';
11
11
 
12
12
  $ = $ && $.hasOwnProperty('default') ? $['default'] : $;
13
13
  Util = Util && Util.hasOwnProperty('default') ? Util['default'] : Util;
@@ -35,7 +35,7 @@
35
35
  */
36
36
 
37
37
  var NAME = 'tab';
38
- var VERSION = '4.2.1';
38
+ var VERSION = '4.3.0';
39
39
  var DATA_KEY = 'bs.tab';
40
40
  var EVENT_KEY = "." + DATA_KEY;
41
41
  var DATA_API_KEY = '.data-api';
@@ -143,8 +143,8 @@
143
143
  _proto.dispose = function dispose() {
144
144
  $.removeData(this._element, DATA_KEY);
145
145
  this._element = null;
146
- }; // Private
147
-
146
+ } // Private
147
+ ;
148
148
 
149
149
  _proto._activate = function _activate(element, container, callback) {
150
150
  var _this2 = this;
@@ -186,7 +186,10 @@
186
186
  }
187
187
 
188
188
  Util.reflow(element);
189
- $(element).addClass(ClassName.SHOW);
189
+
190
+ if (element.classList.contains(ClassName.FADE)) {
191
+ element.classList.add(ClassName.SHOW);
192
+ }
190
193
 
191
194
  if (element.parentNode && $(element.parentNode).hasClass(ClassName.DROPDOWN_MENU)) {
192
195
  var dropdownElement = $(element).closest(Selector.DROPDOWN)[0];
@@ -202,8 +205,8 @@
202
205
  if (callback) {
203
206
  callback();
204
207
  }
205
- }; // Static
206
-
208
+ } // Static
209
+ ;
207
210
 
208
211
  Tab._jQueryInterface = function _jQueryInterface(config) {
209
212
  return this.each(function () {
@@ -262,4 +265,4 @@
262
265
 
263
266
  return Tab;
264
267
 
265
- })));
268
+ }));
@@ -1,13 +1,13 @@
1
1
  /*!
2
- * Bootstrap toast.js v4.2.1 (https://getbootstrap.com/)
3
- * Copyright 2011-2018 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
2
+ * Bootstrap toast.js v4.3.0 (https://getbootstrap.com/)
3
+ * Copyright 2011-2019 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
- (global.Toast = factory(global.jQuery,global.Util));
10
- }(this, (function ($,Util) { 'use strict';
9
+ (global = global || self, global.Toast = factory(global.jQuery, global.Util));
10
+ }(this, function ($, Util) { 'use strict';
11
11
 
12
12
  $ = $ && $.hasOwnProperty('default') ? $['default'] : $;
13
13
  Util = Util && Util.hasOwnProperty('default') ? Util['default'] : Util;
@@ -69,7 +69,7 @@
69
69
  */
70
70
 
71
71
  var NAME = 'toast';
72
- var VERSION = '4.2.1';
72
+ var VERSION = '4.3.0';
73
73
  var DATA_KEY = 'bs.toast';
74
74
  var EVENT_KEY = "." + DATA_KEY;
75
75
  var JQUERY_NO_CONFLICT = $.fn[NAME];
@@ -184,8 +184,8 @@
184
184
  $.removeData(this._element, DATA_KEY);
185
185
  this._element = null;
186
186
  this._config = null;
187
- }; // Private
188
-
187
+ } // Private
188
+ ;
189
189
 
190
190
  _proto._getConfig = function _getConfig(config) {
191
191
  config = _objectSpread({}, Default, $(this._element).data(), typeof config === 'object' && config ? config : {});
@@ -218,8 +218,8 @@
218
218
  } else {
219
219
  complete();
220
220
  }
221
- }; // Static
222
-
221
+ } // Static
222
+ ;
223
223
 
224
224
  Toast._jQueryInterface = function _jQueryInterface(config) {
225
225
  return this.each(function () {
@@ -253,6 +253,11 @@
253
253
  get: function get() {
254
254
  return DefaultType;
255
255
  }
256
+ }, {
257
+ key: "Default",
258
+ get: function get() {
259
+ return Default;
260
+ }
256
261
  }]);
257
262
 
258
263
  return Toast;
@@ -274,4 +279,4 @@
274
279
 
275
280
  return Toast;
276
281
 
277
- })));
282
+ }));
@@ -1,13 +1,13 @@
1
1
  /*!
2
- * Bootstrap tooltip.js v4.2.1 (https://getbootstrap.com/)
3
- * Copyright 2011-2018 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
2
+ * Bootstrap tooltip.js v4.3.0 (https://getbootstrap.com/)
3
+ * Copyright 2011-2019 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('popper.js'), require('./util.js')) :
8
8
  typeof define === 'function' && define.amd ? define(['jquery', 'popper.js', './util.js'], factory) :
9
- (global.Tooltip = factory(global.jQuery,global.Popper,global.Util));
10
- }(this, (function ($,Popper,Util) { 'use strict';
9
+ (global = global || self, global.Tooltip = factory(global.jQuery, global.Popper, global.Util));
10
+ }(this, function ($, Popper, Util) { 'use strict';
11
11
 
12
12
  $ = $ && $.hasOwnProperty('default') ? $['default'] : $;
13
13
  Popper = Popper && Popper.hasOwnProperty('default') ? Popper['default'] : Popper;
@@ -70,7 +70,7 @@
70
70
  */
71
71
 
72
72
  var NAME = 'tooltip';
73
- var VERSION = '4.2.1';
73
+ var VERSION = '4.3.0';
74
74
  var DATA_KEY = 'bs.tooltip';
75
75
  var EVENT_KEY = "." + DATA_KEY;
76
76
  var JQUERY_NO_CONFLICT = $.fn[NAME];
@@ -85,7 +85,7 @@
85
85
  html: 'boolean',
86
86
  selector: '(string|boolean)',
87
87
  placement: '(string|function)',
88
- offset: '(number|string)',
88
+ offset: '(number|string|function)',
89
89
  container: '(string|element|boolean)',
90
90
  fallbackPlacement: '(string|array)',
91
91
  boundary: '(string|element)'
@@ -294,9 +294,7 @@
294
294
  this._popper = new Popper(this.element, tip, {
295
295
  placement: attachment,
296
296
  modifiers: {
297
- offset: {
298
- offset: this.config.offset
299
- },
297
+ offset: this._getOffset(),
300
298
  flip: {
301
299
  behavior: this.config.fallbackPlacement
302
300
  },
@@ -405,8 +403,8 @@
405
403
  if (this._popper !== null) {
406
404
  this._popper.scheduleUpdate();
407
405
  }
408
- }; // Protected
409
-
406
+ } // Protected
407
+ ;
410
408
 
411
409
  _proto.isWithContent = function isWithContent() {
412
410
  return Boolean(this.getTitle());
@@ -452,8 +450,25 @@
452
450
  }
453
451
 
454
452
  return title;
455
- }; // Private
453
+ } // Private
454
+ ;
455
+
456
+ _proto._getOffset = function _getOffset() {
457
+ var _this3 = this;
458
+
459
+ var offset = {};
460
+
461
+ if (typeof this.config.offset === 'function') {
462
+ offset.fn = function (data) {
463
+ data.offsets = _objectSpread({}, data.offsets, _this3.config.offset(data.offsets, _this3.element) || {});
464
+ return data;
465
+ };
466
+ } else {
467
+ offset.offset = this.config.offset;
468
+ }
456
469
 
470
+ return offset;
471
+ };
457
472
 
458
473
  _proto._getContainer = function _getContainer() {
459
474
  if (this.config.container === false) {
@@ -472,27 +487,27 @@
472
487
  };
473
488
 
474
489
  _proto._setListeners = function _setListeners() {
475
- var _this3 = this;
490
+ var _this4 = this;
476
491
 
477
492
  var triggers = this.config.trigger.split(' ');
478
493
  triggers.forEach(function (trigger) {
479
494
  if (trigger === 'click') {
480
- $(_this3.element).on(_this3.constructor.Event.CLICK, _this3.config.selector, function (event) {
481
- return _this3.toggle(event);
495
+ $(_this4.element).on(_this4.constructor.Event.CLICK, _this4.config.selector, function (event) {
496
+ return _this4.toggle(event);
482
497
  });
483
498
  } else if (trigger !== Trigger.MANUAL) {
484
- var eventIn = trigger === Trigger.HOVER ? _this3.constructor.Event.MOUSEENTER : _this3.constructor.Event.FOCUSIN;
485
- var eventOut = trigger === Trigger.HOVER ? _this3.constructor.Event.MOUSELEAVE : _this3.constructor.Event.FOCUSOUT;
486
- $(_this3.element).on(eventIn, _this3.config.selector, function (event) {
487
- return _this3._enter(event);
488
- }).on(eventOut, _this3.config.selector, function (event) {
489
- return _this3._leave(event);
499
+ var eventIn = trigger === Trigger.HOVER ? _this4.constructor.Event.MOUSEENTER : _this4.constructor.Event.FOCUSIN;
500
+ var eventOut = trigger === Trigger.HOVER ? _this4.constructor.Event.MOUSELEAVE : _this4.constructor.Event.FOCUSOUT;
501
+ $(_this4.element).on(eventIn, _this4.config.selector, function (event) {
502
+ return _this4._enter(event);
503
+ }).on(eventOut, _this4.config.selector, function (event) {
504
+ return _this4._leave(event);
490
505
  });
491
506
  }
492
507
  });
493
508
  $(this.element).closest('.modal').on('hide.bs.modal', function () {
494
- if (_this3.element) {
495
- _this3.hide();
509
+ if (_this4.element) {
510
+ _this4.hide();
496
511
  }
497
512
  });
498
513
 
@@ -657,8 +672,8 @@
657
672
  this.hide();
658
673
  this.show();
659
674
  this.config.animation = initConfigAnimation;
660
- }; // Static
661
-
675
+ } // Static
676
+ ;
662
677
 
663
678
  Tooltip._jQueryInterface = function _jQueryInterface(config) {
664
679
  return this.each(function () {
@@ -741,4 +756,4 @@
741
756
 
742
757
  return Tooltip;
743
758
 
744
- })));
759
+ }));
@@ -1,19 +1,19 @@
1
1
  /*!
2
- * Bootstrap util.js v4.2.1 (https://getbootstrap.com/)
3
- * Copyright 2011-2018 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
2
+ * Bootstrap util.js v4.3.0 (https://getbootstrap.com/)
3
+ * Copyright 2011-2019 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
- (global.Util = factory(global.jQuery));
10
- }(this, (function ($) { 'use strict';
9
+ (global = global || self, global.Util = factory(global.jQuery));
10
+ }(this, function ($) { 'use strict';
11
11
 
12
12
  $ = $ && $.hasOwnProperty('default') ? $['default'] : $;
13
13
 
14
14
  /**
15
15
  * --------------------------------------------------------------------------
16
- * Bootstrap (v4.2.1): util.js
16
+ * Bootstrap (v4.3.0): util.js
17
17
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
18
18
  * --------------------------------------------------------------------------
19
19
  */
@@ -89,7 +89,11 @@
89
89
  selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : '';
90
90
  }
91
91
 
92
- return selector && document.querySelector(selector) ? selector : null;
92
+ try {
93
+ return document.querySelector(selector) ? selector : null;
94
+ } catch (err) {
95
+ return null;
96
+ }
93
97
  },
94
98
  getTransitionDurationFromElement: function getTransitionDurationFromElement(element) {
95
99
  if (!element) {
@@ -164,4 +168,4 @@
164
168
 
165
169
  return Util;
166
170
 
167
- })));
171
+ }));
@@ -1,7 +1,7 @@
1
1
  /*!
2
- * Bootstrap Grid v4.2.1 (https://getbootstrap.com/)
3
- * Copyright 2011-2018 The Bootstrap Authors
4
- * Copyright 2011-2018 Twitter, Inc.
2
+ * Bootstrap Grid v4.3.0 (https://getbootstrap.com/)
3
+ * Copyright 2011-2019 The Bootstrap Authors
4
+ * Copyright 2011-2019 Twitter, Inc.
5
5
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /*!
2
- * Bootstrap Reboot v4.2.1 (https://getbootstrap.com/)
3
- * Copyright 2011-2018 The Bootstrap Authors
4
- * Copyright 2011-2018 Twitter, Inc.
2
+ * Bootstrap Reboot v4.3.0 (https://getbootstrap.com/)
3
+ * Copyright 2011-2019 The Bootstrap Authors
4
+ * Copyright 2011-2019 Twitter, Inc.
5
5
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
6
6
  * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
7
7
  */
@@ -1,7 +1,7 @@
1
1
  /*!
2
- * Bootstrap v4.2.1 (https://getbootstrap.com/)
3
- * Copyright 2011-2018 The Bootstrap Authors
4
- * Copyright 2011-2018 Twitter, Inc.
2
+ * Bootstrap v4.3.0 (https://getbootstrap.com/)
3
+ * Copyright 2011-2019 The Bootstrap Authors
4
+ * Copyright 2011-2019 Twitter, Inc.
5
5
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
6
6
  */
7
7
 
@@ -6,13 +6,14 @@
6
6
  .badge {
7
7
  display: inline-block;
8
8
  padding: $badge-padding-y $badge-padding-x;
9
- font-size: $badge-font-size;
9
+ @include font-size($badge-font-size);
10
10
  font-weight: $badge-font-weight;
11
11
  line-height: 1;
12
12
  text-align: center;
13
13
  white-space: nowrap;
14
14
  vertical-align: baseline;
15
15
  @include border-radius($badge-border-radius);
16
+ @include transition($badge-transition);
16
17
 
17
18
  @at-root a#{&} {
18
19
  @include hover-focus {
@@ -6,6 +6,7 @@
6
6
 
7
7
  .btn {
8
8
  display: inline-block;
9
+ font-family: $btn-font-family;
9
10
  font-weight: $btn-font-weight;
10
11
  color: $body-color;
11
12
  text-align: center;
@@ -34,11 +35,6 @@
34
35
  @include box-shadow(none);
35
36
  }
36
37
 
37
- // Opinionated: add "hand" cursor to non-disabled .btn elements
38
- &:not(:disabled):not(.disabled) {
39
- cursor: pointer;
40
- }
41
-
42
38
  &:not(:disabled):not(.disabled):active,
43
39
  &:not(:disabled):not(.disabled).active {
44
40
  @include box-shadow($btn-active-box-shadow);
@@ -81,6 +77,7 @@ fieldset:disabled a.btn {
81
77
  .btn-link {
82
78
  font-weight: $font-weight-normal;
83
79
  color: $link-color;
80
+ text-decoration: $link-decoration;
84
81
 
85
82
  @include hover {
86
83
  color: $link-hover-color;
@@ -6,7 +6,7 @@
6
6
  position: relative;
7
7
  display: flex;
8
8
  flex-direction: column;
9
- min-width: 0;
9
+ min-width: 0; // See https://github.com/twbs/bootstrap/pull/22740#issuecomment-305868106
10
10
  word-wrap: break-word;
11
11
  background-color: $card-bg;
12
12
  background-clip: border-box;
@@ -36,6 +36,7 @@
36
36
  // as much space as possible, ensuring footers are aligned to the bottom.
37
37
  flex: 1 1 auto;
38
38
  padding: $card-spacer-x;
39
+ color: $card-color;
39
40
  }
40
41
 
41
42
  .card-title {
@@ -195,55 +196,35 @@
195
196
 
196
197
  // Handle rounded corners
197
198
  @if $enable-rounded {
198
- &:first-child {
199
+ &:not(:last-child) {
199
200
  @include border-right-radius(0);
200
201
 
201
202
  .card-img-top,
202
203
  .card-header {
204
+ // stylelint-disable-next-line property-blacklist
203
205
  border-top-right-radius: 0;
204
206
  }
205
207
  .card-img-bottom,
206
208
  .card-footer {
209
+ // stylelint-disable-next-line property-blacklist
207
210
  border-bottom-right-radius: 0;
208
211
  }
209
212
  }
210
213
 
211
- &:last-child {
214
+ &:not(:first-child) {
212
215
  @include border-left-radius(0);
213
216
 
214
217
  .card-img-top,
215
218
  .card-header {
219
+ // stylelint-disable-next-line property-blacklist
216
220
  border-top-left-radius: 0;
217
221
  }
218
222
  .card-img-bottom,
219
223
  .card-footer {
224
+ // stylelint-disable-next-line property-blacklist
220
225
  border-bottom-left-radius: 0;
221
226
  }
222
227
  }
223
-
224
- &:only-child {
225
- @include border-radius($card-border-radius);
226
-
227
- .card-img-top,
228
- .card-header {
229
- @include border-top-radius($card-border-radius);
230
- }
231
- .card-img-bottom,
232
- .card-footer {
233
- @include border-bottom-radius($card-border-radius);
234
- }
235
- }
236
-
237
- &:not(:first-child):not(:last-child):not(:only-child) {
238
- @include border-radius(0);
239
-
240
- .card-img-top,
241
- .card-img-bottom,
242
- .card-header,
243
- .card-footer {
244
- @include border-radius(0);
245
- }
246
- }
247
228
  }
248
229
  }
249
230
  }
@@ -278,29 +259,27 @@
278
259
  //
279
260
 
280
261
  .accordion {
281
- .card {
262
+ > .card {
282
263
  overflow: hidden;
283
264
 
284
265
  &:not(:first-of-type) {
285
266
  .card-header:first-child {
286
- border-radius: 0;
267
+ @include border-radius(0);
287
268
  }
288
269
 
289
270
  &:not(:last-of-type) {
290
271
  border-bottom: 0;
291
- border-radius: 0;
272
+ @include border-radius(0);
292
273
  }
293
274
  }
294
275
 
295
276
  &:first-of-type {
296
277
  border-bottom: 0;
297
- border-bottom-right-radius: 0;
298
- border-bottom-left-radius: 0;
278
+ @include border-bottom-radius(0);
299
279
  }
300
280
 
301
281
  &:last-of-type {
302
- border-top-left-radius: 0;
303
- border-top-right-radius: 0;
282
+ @include border-top-radius(0);
304
283
  }
305
284
 
306
285
  .card-header {