bootstrap 4.2.1 → 4.5.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (101) 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 +1054 -893
  7. data/assets/javascripts/bootstrap.min.js +4 -4
  8. data/assets/javascripts/bootstrap/alert.js +35 -57
  9. data/assets/javascripts/bootstrap/button.js +95 -69
  10. data/assets/javascripts/bootstrap/carousel.js +109 -165
  11. data/assets/javascripts/bootstrap/collapse.js +58 -114
  12. data/assets/javascripts/bootstrap/dropdown.js +138 -191
  13. data/assets/javascripts/bootstrap/modal.js +170 -176
  14. data/assets/javascripts/bootstrap/popover.js +31 -87
  15. data/assets/javascripts/bootstrap/scrollspy.js +54 -114
  16. data/assets/javascripts/bootstrap/tab.js +62 -81
  17. data/assets/javascripts/bootstrap/toast.js +80 -117
  18. data/assets/javascripts/bootstrap/tooltip.js +269 -157
  19. data/assets/javascripts/bootstrap/util.js +34 -9
  20. data/assets/stylesheets/_bootstrap-grid.scss +4 -4
  21. data/assets/stylesheets/_bootstrap-reboot.scss +4 -4
  22. data/assets/stylesheets/_bootstrap.scss +4 -4
  23. data/assets/stylesheets/bootstrap/_badge.scss +3 -2
  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 -11
  27. data/assets/stylesheets/bootstrap/_card.scss +49 -73
  28. data/assets/stylesheets/bootstrap/_carousel.scss +7 -8
  29. data/assets/stylesheets/bootstrap/_close.scss +3 -7
  30. data/assets/stylesheets/bootstrap/_code.scss +6 -6
  31. data/assets/stylesheets/bootstrap/_custom-forms.scss +40 -24
  32. data/assets/stylesheets/bootstrap/_dropdown.scss +24 -23
  33. data/assets/stylesheets/bootstrap/_forms.scss +38 -25
  34. data/assets/stylesheets/bootstrap/_functions.scss +62 -7
  35. data/assets/stylesheets/bootstrap/_grid.scss +32 -11
  36. data/assets/stylesheets/bootstrap/_images.scss +3 -3
  37. data/assets/stylesheets/bootstrap/_input-group.scss +4 -5
  38. data/assets/stylesheets/bootstrap/_jumbotron.scss +1 -0
  39. data/assets/stylesheets/bootstrap/_list-group.scss +62 -29
  40. data/assets/stylesheets/bootstrap/_mixins.scss +9 -3
  41. data/assets/stylesheets/bootstrap/_modal.scss +65 -11
  42. data/assets/stylesheets/bootstrap/_nav.scss +6 -3
  43. data/assets/stylesheets/bootstrap/_navbar.scss +48 -23
  44. data/assets/stylesheets/bootstrap/_pagination.scss +3 -7
  45. data/assets/stylesheets/bootstrap/_popover.scss +54 -67
  46. data/assets/stylesheets/bootstrap/_print.scss +3 -3
  47. data/assets/stylesheets/bootstrap/_progress.scss +19 -6
  48. data/assets/stylesheets/bootstrap/_reboot.scss +51 -33
  49. data/assets/stylesheets/bootstrap/_root.scss +1 -0
  50. data/assets/stylesheets/bootstrap/_spinners.scss +3 -0
  51. data/assets/stylesheets/bootstrap/_tables.scss +6 -8
  52. data/assets/stylesheets/bootstrap/_toasts.scss +7 -4
  53. data/assets/stylesheets/bootstrap/_tooltip.scss +1 -1
  54. data/assets/stylesheets/bootstrap/_transitions.scss +0 -2
  55. data/assets/stylesheets/bootstrap/_type.scss +17 -17
  56. data/assets/stylesheets/bootstrap/_utilities.scss +2 -0
  57. data/assets/stylesheets/bootstrap/_variables.scss +168 -119
  58. data/assets/stylesheets/bootstrap/mixins/_background-variant.scss +5 -3
  59. data/assets/stylesheets/bootstrap/mixins/_badge.scss +7 -1
  60. data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +51 -10
  61. data/assets/stylesheets/bootstrap/mixins/_box-shadow.scss +16 -1
  62. data/assets/stylesheets/bootstrap/mixins/_buttons.scss +14 -15
  63. data/assets/stylesheets/bootstrap/mixins/_caret.scss +12 -12
  64. data/assets/stylesheets/bootstrap/mixins/_deprecate.scss +10 -0
  65. data/assets/stylesheets/bootstrap/mixins/_float.scss +6 -3
  66. data/assets/stylesheets/bootstrap/mixins/_forms.scss +40 -60
  67. data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +29 -15
  68. data/assets/stylesheets/bootstrap/mixins/_grid.scss +25 -7
  69. data/assets/stylesheets/bootstrap/mixins/_hover.scss +4 -4
  70. data/assets/stylesheets/bootstrap/mixins/_image.scss +3 -3
  71. data/assets/stylesheets/bootstrap/mixins/_list-group.scss +1 -1
  72. data/assets/stylesheets/bootstrap/mixins/_lists.scss +1 -1
  73. data/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +2 -1
  74. data/assets/stylesheets/bootstrap/mixins/_pagination.scss +1 -1
  75. data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +2 -2
  76. data/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +3 -2
  77. data/assets/stylesheets/bootstrap/mixins/_size.scss +1 -0
  78. data/assets/stylesheets/bootstrap/mixins/_table-row.scss +1 -1
  79. data/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +7 -4
  80. data/assets/stylesheets/bootstrap/mixins/_text-hide.scss +1 -3
  81. data/assets/stylesheets/bootstrap/mixins/_transition.scss +17 -7
  82. data/assets/stylesheets/bootstrap/mixins/_visibility.scss +1 -0
  83. data/assets/stylesheets/bootstrap/utilities/_background.scss +2 -2
  84. data/assets/stylesheets/bootstrap/utilities/_borders.scss +13 -1
  85. data/assets/stylesheets/bootstrap/utilities/_display.scss +6 -18
  86. data/assets/stylesheets/bootstrap/utilities/_float.scss +5 -3
  87. data/assets/stylesheets/bootstrap/utilities/_interactions.scss +5 -0
  88. data/assets/stylesheets/bootstrap/utilities/_stretched-link.scss +19 -0
  89. data/assets/stylesheets/bootstrap/utilities/_text.scss +8 -3
  90. data/assets/stylesheets/bootstrap/utilities/_visibility.scss +4 -2
  91. data/assets/stylesheets/bootstrap/vendor/_rfs.scss +204 -0
  92. data/bootstrap.gemspec +1 -1
  93. data/lib/bootstrap/version.rb +2 -2
  94. data/tasks/updater/js.rb +1 -1
  95. data/tasks/updater/network.rb +2 -2
  96. data/test/dummy_rails/app/assets/config/manifest.js +3 -0
  97. data/test/dummy_rails/app/assets/stylesheets/.browserslistrc +1 -0
  98. data/test/gemfiles/rails_6_0.gemfile +7 -0
  99. data/test/support/dummy_rails_integration.rb +3 -1
  100. data/test/test_helper.rb +18 -13
  101. metadata +14 -5
@@ -1,20 +1,20 @@
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)
4
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
2
+ * Bootstrap util.js v4.5.2 (https://getbootstrap.com/)
3
+ * Copyright 2011-2020 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.Util = factory(global.jQuery));
9
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Util = factory(global.jQuery));
10
10
  }(this, (function ($) { 'use strict';
11
11
 
12
- $ = $ && $.hasOwnProperty('default') ? $['default'] : $;
12
+ $ = $ && Object.prototype.hasOwnProperty.call($, 'default') ? $['default'] : $;
13
13
 
14
14
  /**
15
15
  * --------------------------------------------------------------------------
16
- * Bootstrap (v4.2.1): util.js
17
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
16
+ * Bootstrap (v4.5.2): util.js
17
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
18
18
  * --------------------------------------------------------------------------
19
19
  */
20
20
  /**
@@ -28,6 +28,10 @@
28
28
  var MILLISECONDS_MULTIPLIER = 1000; // Shoutout AngusCroll (https://goo.gl/pxwQGp)
29
29
 
30
30
  function toType(obj) {
31
+ if (obj === null || typeof obj === 'undefined') {
32
+ return "" + obj;
33
+ }
34
+
31
35
  return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase();
32
36
  }
33
37
 
@@ -40,7 +44,7 @@
40
44
  return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params
41
45
  }
42
46
 
43
- return undefined; // eslint-disable-line no-undefined
47
+ return undefined;
44
48
  }
45
49
  };
46
50
  }
@@ -89,7 +93,11 @@
89
93
  selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : '';
90
94
  }
91
95
 
92
- return selector && document.querySelector(selector) ? selector : null;
96
+ try {
97
+ return document.querySelector(selector) ? selector : null;
98
+ } catch (err) {
99
+ return null;
100
+ }
93
101
  },
94
102
  getTransitionDurationFromElement: function getTransitionDurationFromElement(element) {
95
103
  if (!element) {
@@ -158,8 +166,25 @@
158
166
  }
159
167
 
160
168
  return Util.findShadowRoot(element.parentNode);
169
+ },
170
+ jQueryDetection: function jQueryDetection() {
171
+ if (typeof $ === 'undefined') {
172
+ throw new TypeError('Bootstrap\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\'s JavaScript.');
173
+ }
174
+
175
+ var version = $.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
+ }
161
185
  }
162
186
  };
187
+ Util.jQueryDetection();
163
188
  setTransitionEndSupport();
164
189
 
165
190
  return Util;
@@ -1,8 +1,8 @@
1
1
  /*!
2
- * Bootstrap Grid v4.2.1 (https://getbootstrap.com/)
3
- * Copyright 2011-2018 The Bootstrap Authors
4
- * Copyright 2011-2018 Twitter, Inc.
5
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
2
+ * Bootstrap Grid v4.5.2 (https://getbootstrap.com/)
3
+ * Copyright 2011-2020 The Bootstrap Authors
4
+ * Copyright 2011-2020 Twitter, Inc.
5
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
6
6
  */
7
7
 
8
8
  html {
@@ -1,8 +1,8 @@
1
1
  /*!
2
- * Bootstrap Reboot v4.2.1 (https://getbootstrap.com/)
3
- * Copyright 2011-2018 The Bootstrap Authors
4
- * Copyright 2011-2018 Twitter, Inc.
5
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
2
+ * Bootstrap Reboot v4.5.2 (https://getbootstrap.com/)
3
+ * Copyright 2011-2020 The Bootstrap Authors
4
+ * Copyright 2011-2020 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.2.1 (https://getbootstrap.com/)
3
- * Copyright 2011-2018 The Bootstrap Authors
4
- * Copyright 2011-2018 Twitter, Inc.
5
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
2
+ * Bootstrap v4.5.2 (https://getbootstrap.com/)
3
+ * Copyright 2011-2020 The Bootstrap Authors
4
+ * Copyright 2011-2020 Twitter, Inc.
5
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
6
6
  */
7
7
 
8
8
  @import "bootstrap/functions";
@@ -6,16 +6,17 @@
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
- @include hover-focus {
19
+ @include hover-focus() {
19
20
  text-decoration: none;
20
21
  }
21
22
  }
@@ -3,12 +3,15 @@
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);
9
10
  }
10
11
 
11
12
  .breadcrumb-item {
13
+ display: flex;
14
+
12
15
  // The separator between breadcrumbs (by default, a forward-slash: "/")
13
16
  + .breadcrumb-item {
14
17
  padding-left: $breadcrumb-item-padding;
@@ -17,7 +20,7 @@
17
20
  display: inline-block; // Suppress underlining of the separator in modern browsers
18
21
  padding-right: $breadcrumb-item-padding;
19
22
  color: $breadcrumb-divider-color;
20
- content: $breadcrumb-divider;
23
+ content: escape-svg($breadcrumb-divider);
21
24
  }
22
25
  }
23
26
 
@@ -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,
@@ -6,9 +6,12 @@
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;
13
+ text-decoration: if($link-decoration == none, null, none);
14
+ white-space: $btn-white-space;
12
15
  vertical-align: middle;
13
16
  user-select: none;
14
17
  background-color: transparent;
@@ -16,7 +19,7 @@
16
19
  @include button-size($btn-padding-y, $btn-padding-x, $btn-font-size, $btn-line-height, $btn-border-radius);
17
20
  @include transition($btn-transition);
18
21
 
19
- @include hover {
22
+ @include hover() {
20
23
  color: $body-color;
21
24
  text-decoration: none;
22
25
  }
@@ -34,17 +37,16 @@
34
37
  @include box-shadow(none);
35
38
  }
36
39
 
37
- // Opinionated: add "hand" cursor to non-disabled .btn elements
38
40
  &:not(:disabled):not(.disabled) {
39
- cursor: pointer;
40
- }
41
+ cursor: if($enable-pointer-cursor-for-buttons, pointer, null);
41
42
 
42
- &:not(:disabled):not(.disabled):active,
43
- &:not(:disabled):not(.disabled).active {
44
- @include box-shadow($btn-active-box-shadow);
43
+ &:active,
44
+ &.active {
45
+ @include box-shadow($btn-active-box-shadow);
45
46
 
46
- &:focus {
47
- @include box-shadow($btn-focus-box-shadow, $btn-active-box-shadow);
47
+ &:focus {
48
+ @include box-shadow($btn-focus-box-shadow, $btn-active-box-shadow);
49
+ }
48
50
  }
49
51
  }
50
52
  }
@@ -81,8 +83,9 @@ fieldset:disabled a.btn {
81
83
  .btn-link {
82
84
  font-weight: $font-weight-normal;
83
85
  color: $link-color;
86
+ text-decoration: $link-decoration;
84
87
 
85
- @include hover {
88
+ @include hover() {
86
89
  color: $link-hover-color;
87
90
  text-decoration: $link-hover-decoration;
88
91
  }
@@ -90,7 +93,6 @@ fieldset:disabled a.btn {
90
93
  &:focus,
91
94
  &.focus {
92
95
  text-decoration: $link-hover-decoration;
93
- box-shadow: none;
94
96
  }
95
97
 
96
98
  &:disabled,
@@ -6,7 +6,8 @@
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
+ height: $card-height;
10
11
  word-wrap: break-word;
11
12
  background-color: $card-bg;
12
13
  background-clip: border-box;
@@ -18,24 +19,38 @@
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;
53
+ color: $card-color;
39
54
  }
40
55
 
41
56
  .card-title {
@@ -52,7 +67,7 @@
52
67
  }
53
68
 
54
69
  .card-link {
55
- @include hover {
70
+ @include hover() {
56
71
  text-decoration: none;
57
72
  }
58
73
 
@@ -75,16 +90,11 @@
75
90
  &:first-child {
76
91
  @include border-radius($card-inner-border-radius $card-inner-border-radius 0 0);
77
92
  }
78
-
79
- + .list-group {
80
- .list-group-item:first-child {
81
- border-top: 0;
82
- }
83
- }
84
93
  }
85
94
 
86
95
  .card-footer {
87
96
  padding: $card-spacer-y $card-spacer-x;
97
+ color: $card-cap-color;
88
98
  background-color: $card-cap-bg;
89
99
  border-top: $card-border-width solid $card-border-color;
90
100
 
@@ -118,21 +128,23 @@
118
128
  bottom: 0;
119
129
  left: 0;
120
130
  padding: $card-img-overlay-padding;
131
+ @include border-radius($card-inner-border-radius);
121
132
  }
122
133
 
123
- .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
124
138
  width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch
125
- @include border-radius($card-inner-border-radius);
126
139
  }
127
140
 
128
- // Card image caps
141
+ .card-img,
129
142
  .card-img-top {
130
- width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch
131
143
  @include border-top-radius($card-inner-border-radius);
132
144
  }
133
145
 
146
+ .card-img,
134
147
  .card-img-bottom {
135
- width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch
136
148
  @include border-bottom-radius($card-inner-border-radius);
137
149
  }
138
150
 
@@ -140,23 +152,19 @@
140
152
  // Card deck
141
153
 
142
154
  .card-deck {
143
- display: flex;
144
- flex-direction: column;
145
-
146
155
  .card {
147
156
  margin-bottom: $card-deck-margin;
148
157
  }
149
158
 
150
159
  @include media-breakpoint-up(sm) {
160
+ display: flex;
151
161
  flex-flow: row wrap;
152
162
  margin-right: -$card-deck-margin;
153
163
  margin-left: -$card-deck-margin;
154
164
 
155
165
  .card {
156
- display: flex;
157
166
  // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4
158
167
  flex: 1 0 0%;
159
- flex-direction: column;
160
168
  margin-right: $card-deck-margin;
161
169
  margin-bottom: 0; // Override the default
162
170
  margin-left: $card-deck-margin;
@@ -170,9 +178,6 @@
170
178
  //
171
179
 
172
180
  .card-group {
173
- display: flex;
174
- flex-direction: column;
175
-
176
181
  // The child selector allows nested `.card` within `.card-group`
177
182
  // to display properly.
178
183
  > .card {
@@ -180,6 +185,7 @@
180
185
  }
181
186
 
182
187
  @include media-breakpoint-up(sm) {
188
+ display: flex;
183
189
  flex-flow: row wrap;
184
190
  // The child selector allows nested `.card` within `.card-group`
185
191
  // to display properly.
@@ -195,55 +201,35 @@
195
201
 
196
202
  // Handle rounded corners
197
203
  @if $enable-rounded {
198
- &:first-child {
204
+ &:not(:last-child) {
199
205
  @include border-right-radius(0);
200
206
 
201
207
  .card-img-top,
202
208
  .card-header {
209
+ // stylelint-disable-next-line property-blacklist
203
210
  border-top-right-radius: 0;
204
211
  }
205
212
  .card-img-bottom,
206
213
  .card-footer {
214
+ // stylelint-disable-next-line property-blacklist
207
215
  border-bottom-right-radius: 0;
208
216
  }
209
217
  }
210
218
 
211
- &:last-child {
219
+ &:not(:first-child) {
212
220
  @include border-left-radius(0);
213
221
 
214
222
  .card-img-top,
215
223
  .card-header {
224
+ // stylelint-disable-next-line property-blacklist
216
225
  border-top-left-radius: 0;
217
226
  }
218
227
  .card-img-bottom,
219
228
  .card-footer {
229
+ // stylelint-disable-next-line property-blacklist
220
230
  border-bottom-left-radius: 0;
221
231
  }
222
232
  }
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
233
  }
248
234
  }
249
235
  }
@@ -278,32 +264,22 @@
278
264
  //
279
265
 
280
266
  .accordion {
281
- .card {
282
- overflow: hidden;
283
-
284
- &:not(:first-of-type) {
285
- .card-header:first-child {
286
- border-radius: 0;
287
- }
267
+ overflow-anchor: none;
288
268
 
289
- &:not(:last-of-type) {
290
- border-bottom: 0;
291
- border-radius: 0;
292
- }
293
- }
269
+ > .card {
270
+ overflow: hidden;
294
271
 
295
- &:first-of-type {
272
+ &:not(:last-of-type) {
296
273
  border-bottom: 0;
297
- border-bottom-right-radius: 0;
298
- border-bottom-left-radius: 0;
274
+ @include border-bottom-radius(0);
299
275
  }
300
276
 
301
- &:last-of-type {
302
- border-top-left-radius: 0;
303
- border-top-right-radius: 0;
277
+ &:not(:first-of-type) {
278
+ @include border-top-radius(0);
304
279
  }
305
280
 
306
- .card-header {
281
+ > .card-header {
282
+ @include border-radius(0);
307
283
  margin-bottom: -$card-border-width;
308
284
  }
309
285
  }