bootstrap 4.3.1 → 4.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (86) 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-sprockets.js +7 -7
  6. data/assets/javascripts/bootstrap.js +1073 -1076
  7. data/assets/javascripts/bootstrap.min.js +4 -4
  8. data/assets/javascripts/bootstrap/alert.js +42 -49
  9. data/assets/javascripts/bootstrap/button.js +111 -64
  10. data/assets/javascripts/bootstrap/carousel.js +162 -177
  11. data/assets/javascripts/bootstrap/collapse.js +97 -122
  12. data/assets/javascripts/bootstrap/dropdown.js +163 -189
  13. data/assets/javascripts/bootstrap/modal.js +213 -194
  14. data/assets/javascripts/bootstrap/popover.js +51 -72
  15. data/assets/javascripts/bootstrap/scrollspy.js +80 -109
  16. data/assets/javascripts/bootstrap/tab.js +72 -79
  17. data/assets/javascripts/bootstrap/toast.js +96 -107
  18. data/assets/javascripts/bootstrap/tooltip.js +186 -201
  19. data/assets/javascripts/bootstrap/util.js +41 -20
  20. data/assets/stylesheets/_bootstrap-grid.scss +5 -4
  21. data/assets/stylesheets/_bootstrap-reboot.scss +4 -4
  22. data/assets/stylesheets/_bootstrap.scss +4 -4
  23. data/assets/stylesheets/bootstrap/_alert.scss +1 -0
  24. data/assets/stylesheets/bootstrap/_badge.scss +1 -1
  25. data/assets/stylesheets/bootstrap/_breadcrumb.scss +3 -2
  26. data/assets/stylesheets/bootstrap/_button-group.scss +1 -1
  27. data/assets/stylesheets/bootstrap/_buttons.scss +13 -8
  28. data/assets/stylesheets/bootstrap/_card.scss +42 -45
  29. data/assets/stylesheets/bootstrap/_carousel.scss +7 -7
  30. data/assets/stylesheets/bootstrap/_close.scss +2 -3
  31. data/assets/stylesheets/bootstrap/_code.scss +1 -1
  32. data/assets/stylesheets/bootstrap/_custom-forms.scss +38 -19
  33. data/assets/stylesheets/bootstrap/_dropdown.scss +7 -6
  34. data/assets/stylesheets/bootstrap/_forms.scss +26 -9
  35. data/assets/stylesheets/bootstrap/_functions.scss +63 -5
  36. data/assets/stylesheets/bootstrap/_grid.scss +32 -11
  37. data/assets/stylesheets/bootstrap/_images.scss +2 -2
  38. data/assets/stylesheets/bootstrap/_input-group.scss +21 -6
  39. data/assets/stylesheets/bootstrap/_list-group.scss +36 -31
  40. data/assets/stylesheets/bootstrap/_mixins.scss +3 -3
  41. data/assets/stylesheets/bootstrap/_modal.scss +26 -15
  42. data/assets/stylesheets/bootstrap/_nav.scss +7 -7
  43. data/assets/stylesheets/bootstrap/_navbar.scss +55 -17
  44. data/assets/stylesheets/bootstrap/_pagination.scss +5 -4
  45. data/assets/stylesheets/bootstrap/_popover.scss +8 -9
  46. data/assets/stylesheets/bootstrap/_print.scss +2 -2
  47. data/assets/stylesheets/bootstrap/_progress.scss +7 -3
  48. data/assets/stylesheets/bootstrap/_reboot.scss +39 -38
  49. data/assets/stylesheets/bootstrap/_spinners.scss +14 -4
  50. data/assets/stylesheets/bootstrap/_tables.scss +3 -3
  51. data/assets/stylesheets/bootstrap/_toasts.scss +4 -2
  52. data/assets/stylesheets/bootstrap/_type.scss +3 -3
  53. data/assets/stylesheets/bootstrap/_utilities.scss +2 -1
  54. data/assets/stylesheets/bootstrap/_variables.scss +58 -35
  55. data/assets/stylesheets/bootstrap/mixins/_background-variant.scss +5 -3
  56. data/assets/stylesheets/bootstrap/mixins/_badge.scss +1 -1
  57. data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +27 -14
  58. data/assets/stylesheets/bootstrap/mixins/_buttons.scss +11 -8
  59. data/assets/stylesheets/bootstrap/mixins/_caret.scss +8 -8
  60. data/assets/stylesheets/bootstrap/mixins/_float.scss +3 -3
  61. data/assets/stylesheets/bootstrap/mixins/_forms.scss +42 -49
  62. data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +29 -15
  63. data/assets/stylesheets/bootstrap/mixins/_grid.scss +25 -7
  64. data/assets/stylesheets/bootstrap/mixins/_hover.scss +4 -4
  65. data/assets/stylesheets/bootstrap/mixins/_image.scss +2 -2
  66. data/assets/stylesheets/bootstrap/mixins/_list-group.scss +1 -1
  67. data/assets/stylesheets/bootstrap/mixins/_lists.scss +1 -1
  68. data/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +2 -1
  69. data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +1 -1
  70. data/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +4 -3
  71. data/assets/stylesheets/bootstrap/mixins/_table-row.scss +1 -1
  72. data/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +3 -2
  73. data/assets/stylesheets/bootstrap/mixins/_transition.scss +18 -8
  74. data/assets/stylesheets/bootstrap/utilities/_background.scss +2 -2
  75. data/assets/stylesheets/bootstrap/utilities/_borders.scss +1 -1
  76. data/assets/stylesheets/bootstrap/utilities/_interactions.scss +5 -0
  77. data/assets/stylesheets/bootstrap/utilities/_text.scss +4 -4
  78. data/bootstrap.gemspec +1 -1
  79. data/lib/bootstrap/version.rb +2 -2
  80. data/tasks/updater/network.rb +2 -2
  81. data/test/dummy_rails/app/assets/config/manifest.js +3 -0
  82. data/test/dummy_rails/app/assets/stylesheets/.browserslistrc +1 -0
  83. data/test/gemfiles/rails_6_0.gemfile +7 -0
  84. data/test/support/dummy_rails_integration.rb +3 -1
  85. data/test/test_helper.rb +18 -13
  86. metadata +11 -5
@@ -1,20 +1,22 @@
1
1
  /*!
2
- * Bootstrap util.js v4.3.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 util.js v4.6.0 (https://getbootstrap.com/)
3
+ * Copyright 2011-2021 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
7
  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('jquery')) :
8
8
  typeof define === 'function' && define.amd ? define(['jquery'], factory) :
9
- (global = global || self, global.Util = factory(global.jQuery));
10
- }(this, function ($) { 'use strict';
9
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Util = factory(global.jQuery));
10
+ }(this, (function ($) { 'use strict';
11
11
 
12
- $ = $ && $.hasOwnProperty('default') ? $['default'] : $;
12
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
13
+
14
+ var $__default = /*#__PURE__*/_interopDefaultLegacy($);
13
15
 
14
16
  /**
15
17
  * --------------------------------------------------------------------------
16
- * Bootstrap (v4.3.1): util.js
17
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
18
+ * Bootstrap (v4.6.0): util.js
19
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
18
20
  * --------------------------------------------------------------------------
19
21
  */
20
22
  /**
@@ -28,6 +30,10 @@
28
30
  var MILLISECONDS_MULTIPLIER = 1000; // Shoutout AngusCroll (https://goo.gl/pxwQGp)
29
31
 
30
32
  function toType(obj) {
33
+ if (obj === null || typeof obj === 'undefined') {
34
+ return "" + obj;
35
+ }
36
+
31
37
  return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase();
32
38
  }
33
39
 
@@ -36,11 +42,11 @@
36
42
  bindType: TRANSITION_END,
37
43
  delegateType: TRANSITION_END,
38
44
  handle: function handle(event) {
39
- if ($(event.target).is(this)) {
45
+ if ($__default['default'](event.target).is(this)) {
40
46
  return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params
41
47
  }
42
48
 
43
- return undefined; // eslint-disable-line no-undefined
49
+ return undefined;
44
50
  }
45
51
  };
46
52
  }
@@ -49,7 +55,7 @@
49
55
  var _this = this;
50
56
 
51
57
  var called = false;
52
- $(this).one(Util.TRANSITION_END, function () {
58
+ $__default['default'](this).one(Util.TRANSITION_END, function () {
53
59
  called = true;
54
60
  });
55
61
  setTimeout(function () {
@@ -61,8 +67,8 @@
61
67
  }
62
68
 
63
69
  function setTransitionEndSupport() {
64
- $.fn.emulateTransitionEnd = transitionEndEmulator;
65
- $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();
70
+ $__default['default'].fn.emulateTransitionEnd = transitionEndEmulator;
71
+ $__default['default'].event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();
66
72
  }
67
73
  /**
68
74
  * --------------------------------------------------------------------------
@@ -75,7 +81,6 @@
75
81
  TRANSITION_END: 'bsTransitionEnd',
76
82
  getUID: function getUID(prefix) {
77
83
  do {
78
- // eslint-disable-next-line no-bitwise
79
84
  prefix += ~~(Math.random() * MAX_UID); // "~~" acts like a faster Math.floor() here
80
85
  } while (document.getElementById(prefix));
81
86
 
@@ -91,7 +96,7 @@
91
96
 
92
97
  try {
93
98
  return document.querySelector(selector) ? selector : null;
94
- } catch (err) {
99
+ } catch (_) {
95
100
  return null;
96
101
  }
97
102
  },
@@ -101,8 +106,8 @@
101
106
  } // Get transition-duration of the element
102
107
 
103
108
 
104
- var transitionDuration = $(element).css('transition-duration');
105
- var transitionDelay = $(element).css('transition-delay');
109
+ var transitionDuration = $__default['default'](element).css('transition-duration');
110
+ var transitionDelay = $__default['default'](element).css('transition-delay');
106
111
  var floatTransitionDuration = parseFloat(transitionDuration);
107
112
  var floatTransitionDelay = parseFloat(transitionDelay); // Return 0 if element or transition duration is not found
108
113
 
@@ -119,9 +124,8 @@
119
124
  return element.offsetHeight;
120
125
  },
121
126
  triggerTransitionEnd: function triggerTransitionEnd(element) {
122
- $(element).trigger(TRANSITION_END);
127
+ $__default['default'](element).trigger(TRANSITION_END);
123
128
  },
124
- // TODO: Remove in v5
125
129
  supportsTransitionEnd: function supportsTransitionEnd() {
126
130
  return Boolean(TRANSITION_END);
127
131
  },
@@ -162,10 +166,27 @@
162
166
  }
163
167
 
164
168
  return Util.findShadowRoot(element.parentNode);
169
+ },
170
+ jQueryDetection: function jQueryDetection() {
171
+ if (typeof $__default['default'] === 'undefined') {
172
+ throw new TypeError('Bootstrap\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\'s JavaScript.');
173
+ }
174
+
175
+ var version = $__default['default'].fn.jquery.split(' ')[0].split('.');
176
+ var minMajor = 1;
177
+ var ltMajor = 2;
178
+ var minMinor = 9;
179
+ var minPatch = 1;
180
+ var maxMajor = 4;
181
+
182
+ if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {
183
+ throw new Error('Bootstrap\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0');
184
+ }
165
185
  }
166
186
  };
187
+ Util.jQueryDetection();
167
188
  setTransitionEndSupport();
168
189
 
169
190
  return Util;
170
191
 
171
- }));
192
+ })));
@@ -1,8 +1,8 @@
1
1
  /*!
2
- * Bootstrap Grid v4.3.1 (https://getbootstrap.com/)
3
- * Copyright 2011-2019 The Bootstrap Authors
4
- * Copyright 2011-2019 Twitter, Inc.
5
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
2
+ * Bootstrap Grid v4.6.0 (https://getbootstrap.com/)
3
+ * Copyright 2011-2021 The Bootstrap Authors
4
+ * Copyright 2011-2021 Twitter, Inc.
5
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
6
6
  */
7
7
 
8
8
  html {
@@ -19,6 +19,7 @@ html {
19
19
  @import "bootstrap/functions";
20
20
  @import "bootstrap/variables";
21
21
 
22
+ @import "bootstrap/mixins/deprecate";
22
23
  @import "bootstrap/mixins/breakpoints";
23
24
  @import "bootstrap/mixins/grid-framework";
24
25
  @import "bootstrap/mixins/grid";
@@ -1,8 +1,8 @@
1
1
  /*!
2
- * Bootstrap Reboot v4.3.1 (https://getbootstrap.com/)
3
- * Copyright 2011-2019 The Bootstrap Authors
4
- * Copyright 2011-2019 Twitter, Inc.
5
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
2
+ * Bootstrap Reboot v4.6.0 (https://getbootstrap.com/)
3
+ * Copyright 2011-2021 The Bootstrap Authors
4
+ * Copyright 2011-2021 Twitter, Inc.
5
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
6
6
  * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
7
7
  */
8
8
 
@@ -1,8 +1,8 @@
1
1
  /*!
2
- * Bootstrap v4.3.1 (https://getbootstrap.com/)
3
- * Copyright 2011-2019 The Bootstrap Authors
4
- * Copyright 2011-2019 Twitter, Inc.
5
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
2
+ * Bootstrap v4.6.0 (https://getbootstrap.com/)
3
+ * Copyright 2011-2021 The Bootstrap Authors
4
+ * Copyright 2011-2021 Twitter, Inc.
5
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
6
6
  */
7
7
 
8
8
  @import "bootstrap/functions";
@@ -34,6 +34,7 @@
34
34
  position: absolute;
35
35
  top: 0;
36
36
  right: 0;
37
+ z-index: 2;
37
38
  padding: $alert-padding-y $alert-padding-x;
38
39
  color: inherit;
39
40
  }
@@ -16,7 +16,7 @@
16
16
  @include transition($badge-transition);
17
17
 
18
18
  @at-root a#{&} {
19
- @include hover-focus {
19
+ @include hover-focus() {
20
20
  text-decoration: none;
21
21
  }
22
22
  }
@@ -3,6 +3,7 @@
3
3
  flex-wrap: wrap;
4
4
  padding: $breadcrumb-padding-y $breadcrumb-padding-x;
5
5
  margin-bottom: $breadcrumb-margin-bottom;
6
+ @include font-size($breadcrumb-font-size);
6
7
  list-style: none;
7
8
  background-color: $breadcrumb-bg;
8
9
  @include border-radius($breadcrumb-border-radius);
@@ -14,10 +15,10 @@
14
15
  padding-left: $breadcrumb-item-padding;
15
16
 
16
17
  &::before {
17
- display: inline-block; // Suppress underlining of the separator in modern browsers
18
+ float: left; // Suppress inline spacings and underlining of the separator
18
19
  padding-right: $breadcrumb-item-padding;
19
20
  color: $breadcrumb-divider-color;
20
- content: $breadcrumb-divider;
21
+ content: escape-svg($breadcrumb-divider);
21
22
  }
22
23
  }
23
24
 
@@ -13,7 +13,7 @@
13
13
 
14
14
  // Bring the hover, focused, and "active" buttons to the front to overlay
15
15
  // the borders properly
16
- @include hover {
16
+ @include hover() {
17
17
  z-index: 1;
18
18
  }
19
19
  &:focus,
@@ -10,6 +10,8 @@
10
10
  font-weight: $btn-font-weight;
11
11
  color: $body-color;
12
12
  text-align: center;
13
+ text-decoration: if($link-decoration == none, null, none);
14
+ white-space: $btn-white-space;
13
15
  vertical-align: middle;
14
16
  user-select: none;
15
17
  background-color: transparent;
@@ -17,7 +19,7 @@
17
19
  @include button-size($btn-padding-y, $btn-padding-x, $btn-font-size, $btn-line-height, $btn-border-radius);
18
20
  @include transition($btn-transition);
19
21
 
20
- @include hover {
22
+ @include hover() {
21
23
  color: $body-color;
22
24
  text-decoration: none;
23
25
  }
@@ -35,12 +37,16 @@
35
37
  @include box-shadow(none);
36
38
  }
37
39
 
38
- &:not(:disabled):not(.disabled):active,
39
- &:not(:disabled):not(.disabled).active {
40
- @include box-shadow($btn-active-box-shadow);
40
+ &:not(:disabled):not(.disabled) {
41
+ cursor: if($enable-pointer-cursor-for-buttons, pointer, null);
41
42
 
42
- &:focus {
43
- @include box-shadow($btn-focus-box-shadow, $btn-active-box-shadow);
43
+ &:active,
44
+ &.active {
45
+ @include box-shadow($btn-active-box-shadow);
46
+
47
+ &:focus {
48
+ @include box-shadow($btn-focus-box-shadow, $btn-active-box-shadow);
49
+ }
44
50
  }
45
51
  }
46
52
  }
@@ -79,7 +85,7 @@ fieldset:disabled a.btn {
79
85
  color: $link-color;
80
86
  text-decoration: $link-decoration;
81
87
 
82
- @include hover {
88
+ @include hover() {
83
89
  color: $link-hover-color;
84
90
  text-decoration: $link-hover-decoration;
85
91
  }
@@ -87,7 +93,6 @@ fieldset:disabled a.btn {
87
93
  &:focus,
88
94
  &.focus {
89
95
  text-decoration: $link-hover-decoration;
90
- box-shadow: none;
91
96
  }
92
97
 
93
98
  &:disabled,
@@ -7,6 +7,7 @@
7
7
  display: flex;
8
8
  flex-direction: column;
9
9
  min-width: 0; // See https://github.com/twbs/bootstrap/pull/22740#issuecomment-305868106
10
+ height: $card-height;
10
11
  word-wrap: break-word;
11
12
  background-color: $card-bg;
12
13
  background-clip: border-box;
@@ -18,23 +19,36 @@
18
19
  margin-left: 0;
19
20
  }
20
21
 
21
- > .list-group:first-child {
22
- .list-group-item:first-child {
23
- @include border-top-radius($card-border-radius);
22
+ > .list-group {
23
+ border-top: inherit;
24
+ border-bottom: inherit;
25
+
26
+ &:first-child {
27
+ border-top-width: 0;
28
+ @include border-top-radius($card-inner-border-radius);
24
29
  }
25
- }
26
30
 
27
- > .list-group:last-child {
28
- .list-group-item:last-child {
29
- @include border-bottom-radius($card-border-radius);
31
+ &:last-child {
32
+ border-bottom-width: 0;
33
+ @include border-bottom-radius($card-inner-border-radius);
30
34
  }
31
35
  }
36
+
37
+ // Due to specificity of the above selector (`.card > .list-group`), we must
38
+ // use a child selector here to prevent double borders.
39
+ > .card-header + .list-group,
40
+ > .list-group + .card-footer {
41
+ border-top: 0;
42
+ }
32
43
  }
33
44
 
34
45
  .card-body {
35
46
  // Enable `flex-grow: 1` for decks and groups so that card blocks take up
36
47
  // as much space as possible, ensuring footers are aligned to the bottom.
37
48
  flex: 1 1 auto;
49
+ // Workaround for the image size bug in IE
50
+ // See: https://github.com/twbs/bootstrap/pull/28855
51
+ min-height: 1px;
38
52
  padding: $card-spacer-x;
39
53
  color: $card-color;
40
54
  }
@@ -53,7 +67,7 @@
53
67
  }
54
68
 
55
69
  .card-link {
56
- @include hover {
70
+ @include hover() {
57
71
  text-decoration: none;
58
72
  }
59
73
 
@@ -76,16 +90,11 @@
76
90
  &:first-child {
77
91
  @include border-radius($card-inner-border-radius $card-inner-border-radius 0 0);
78
92
  }
79
-
80
- + .list-group {
81
- .list-group-item:first-child {
82
- border-top: 0;
83
- }
84
- }
85
93
  }
86
94
 
87
95
  .card-footer {
88
96
  padding: $card-spacer-y $card-spacer-x;
97
+ color: $card-cap-color;
89
98
  background-color: $card-cap-bg;
90
99
  border-top: $card-border-width solid $card-border-color;
91
100
 
@@ -119,21 +128,23 @@
119
128
  bottom: 0;
120
129
  left: 0;
121
130
  padding: $card-img-overlay-padding;
131
+ @include border-radius($card-inner-border-radius);
122
132
  }
123
133
 
124
- .card-img {
134
+ .card-img,
135
+ .card-img-top,
136
+ .card-img-bottom {
137
+ flex-shrink: 0; // For IE: https://github.com/twbs/bootstrap/issues/29396
125
138
  width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch
126
- @include border-radius($card-inner-border-radius);
127
139
  }
128
140
 
129
- // Card image caps
141
+ .card-img,
130
142
  .card-img-top {
131
- width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch
132
143
  @include border-top-radius($card-inner-border-radius);
133
144
  }
134
145
 
146
+ .card-img,
135
147
  .card-img-bottom {
136
- width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch
137
148
  @include border-bottom-radius($card-inner-border-radius);
138
149
  }
139
150
 
@@ -141,23 +152,19 @@
141
152
  // Card deck
142
153
 
143
154
  .card-deck {
144
- display: flex;
145
- flex-direction: column;
146
-
147
155
  .card {
148
156
  margin-bottom: $card-deck-margin;
149
157
  }
150
158
 
151
159
  @include media-breakpoint-up(sm) {
160
+ display: flex;
152
161
  flex-flow: row wrap;
153
162
  margin-right: -$card-deck-margin;
154
163
  margin-left: -$card-deck-margin;
155
164
 
156
165
  .card {
157
- display: flex;
158
166
  // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4
159
167
  flex: 1 0 0%;
160
- flex-direction: column;
161
168
  margin-right: $card-deck-margin;
162
169
  margin-bottom: 0; // Override the default
163
170
  margin-left: $card-deck-margin;
@@ -171,9 +178,6 @@
171
178
  //
172
179
 
173
180
  .card-group {
174
- display: flex;
175
- flex-direction: column;
176
-
177
181
  // The child selector allows nested `.card` within `.card-group`
178
182
  // to display properly.
179
183
  > .card {
@@ -181,6 +185,7 @@
181
185
  }
182
186
 
183
187
  @include media-breakpoint-up(sm) {
188
+ display: flex;
184
189
  flex-flow: row wrap;
185
190
  // The child selector allows nested `.card` within `.card-group`
186
191
  // to display properly.
@@ -201,12 +206,12 @@
201
206
 
202
207
  .card-img-top,
203
208
  .card-header {
204
- // stylelint-disable-next-line property-blacklist
209
+ // stylelint-disable-next-line property-disallowed-list
205
210
  border-top-right-radius: 0;
206
211
  }
207
212
  .card-img-bottom,
208
213
  .card-footer {
209
- // stylelint-disable-next-line property-blacklist
214
+ // stylelint-disable-next-line property-disallowed-list
210
215
  border-bottom-right-radius: 0;
211
216
  }
212
217
  }
@@ -216,12 +221,12 @@
216
221
 
217
222
  .card-img-top,
218
223
  .card-header {
219
- // stylelint-disable-next-line property-blacklist
224
+ // stylelint-disable-next-line property-disallowed-list
220
225
  border-top-left-radius: 0;
221
226
  }
222
227
  .card-img-bottom,
223
228
  .card-footer {
224
- // stylelint-disable-next-line property-blacklist
229
+ // stylelint-disable-next-line property-disallowed-list
225
230
  border-bottom-left-radius: 0;
226
231
  }
227
232
  }
@@ -259,30 +264,22 @@
259
264
  //
260
265
 
261
266
  .accordion {
267
+ overflow-anchor: none;
268
+
262
269
  > .card {
263
270
  overflow: hidden;
264
271
 
265
- &:not(:first-of-type) {
266
- .card-header:first-child {
267
- @include border-radius(0);
268
- }
269
-
270
- &:not(:last-of-type) {
271
- border-bottom: 0;
272
- @include border-radius(0);
273
- }
274
- }
275
-
276
- &:first-of-type {
272
+ &:not(:last-of-type) {
277
273
  border-bottom: 0;
278
274
  @include border-bottom-radius(0);
279
275
  }
280
276
 
281
- &:last-of-type {
277
+ &:not(:first-of-type) {
282
278
  @include border-top-radius(0);
283
279
  }
284
280
 
285
- .card-header {
281
+ > .card-header {
282
+ @include border-radius(0);
286
283
  margin-bottom: -$card-border-width;
287
284
  }
288
285
  }