bootstrap 4.4.1 → 5.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (149) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +13 -2
  3. data/README.md +7 -4
  4. data/assets/javascripts/bootstrap-global-this-define.js +6 -0
  5. data/assets/javascripts/bootstrap-global-this-undefine.js +2 -0
  6. data/assets/javascripts/bootstrap-sprockets.js +15 -8
  7. data/assets/javascripts/bootstrap.js +3244 -2770
  8. data/assets/javascripts/bootstrap.min.js +4 -4
  9. data/assets/javascripts/bootstrap/alert.js +130 -124
  10. data/assets/javascripts/bootstrap/base-component.js +168 -0
  11. data/assets/javascripts/bootstrap/button.js +85 -179
  12. data/assets/javascripts/bootstrap/carousel.js +430 -405
  13. data/assets/javascripts/bootstrap/collapse.js +325 -264
  14. data/assets/javascripts/bootstrap/dom/data.js +68 -0
  15. data/assets/javascripts/bootstrap/dom/event-handler.js +315 -0
  16. data/assets/javascripts/bootstrap/dom/manipulator.js +88 -0
  17. data/assets/javascripts/bootstrap/dom/selector-engine.js +85 -0
  18. data/assets/javascripts/bootstrap/dropdown.js +464 -400
  19. data/assets/javascripts/bootstrap/modal.js +604 -464
  20. data/assets/javascripts/bootstrap/offcanvas.js +671 -0
  21. data/assets/javascripts/bootstrap/popover.js +119 -192
  22. data/assets/javascripts/bootstrap/scrollspy.js +250 -238
  23. data/assets/javascripts/bootstrap/tab.js +189 -151
  24. data/assets/javascripts/bootstrap/toast.js +215 -192
  25. data/assets/javascripts/bootstrap/tooltip.js +604 -544
  26. data/assets/stylesheets/_bootstrap-grid.scss +54 -18
  27. data/assets/stylesheets/_bootstrap-reboot.scss +7 -4
  28. data/assets/stylesheets/_bootstrap.scss +19 -11
  29. data/assets/stylesheets/bootstrap/_accordion.scss +118 -0
  30. data/assets/stylesheets/bootstrap/_alert.scss +15 -9
  31. data/assets/stylesheets/bootstrap/_badge.scss +2 -27
  32. data/assets/stylesheets/bootstrap/_breadcrumb.scss +4 -18
  33. data/assets/stylesheets/bootstrap/_button-group.scss +21 -45
  34. data/assets/stylesheets/bootstrap/_buttons.scss +27 -55
  35. data/assets/stylesheets/bootstrap/_card.scss +43 -106
  36. data/assets/stylesheets/bootstrap/_carousel.scss +65 -33
  37. data/assets/stylesheets/bootstrap/_close.scss +30 -31
  38. data/assets/stylesheets/bootstrap/_containers.scss +41 -0
  39. data/assets/stylesheets/bootstrap/_dropdown.scss +87 -38
  40. data/assets/stylesheets/bootstrap/_forms.scss +9 -338
  41. data/assets/stylesheets/bootstrap/_functions.scss +99 -28
  42. data/assets/stylesheets/bootstrap/_grid.scss +3 -50
  43. data/assets/stylesheets/bootstrap/_helpers.scss +7 -0
  44. data/assets/stylesheets/bootstrap/_list-group.scss +38 -22
  45. data/assets/stylesheets/bootstrap/_mixins.scss +8 -13
  46. data/assets/stylesheets/bootstrap/_modal.scss +45 -65
  47. data/assets/stylesheets/bootstrap/_nav.scss +28 -9
  48. data/assets/stylesheets/bootstrap/_navbar.scss +51 -69
  49. data/assets/stylesheets/bootstrap/_offcanvas.scss +77 -0
  50. data/assets/stylesheets/bootstrap/_pagination.scss +11 -20
  51. data/assets/stylesheets/bootstrap/_popover.scss +15 -27
  52. data/assets/stylesheets/bootstrap/_progress.scss +6 -4
  53. data/assets/stylesheets/bootstrap/_reboot.scss +339 -200
  54. data/assets/stylesheets/bootstrap/_root.scss +5 -9
  55. data/assets/stylesheets/bootstrap/_spinners.scss +21 -7
  56. data/assets/stylesheets/bootstrap/_tables.scss +80 -114
  57. data/assets/stylesheets/bootstrap/_toasts.scss +21 -14
  58. data/assets/stylesheets/bootstrap/_tooltip.scss +17 -17
  59. data/assets/stylesheets/bootstrap/_transitions.scss +2 -1
  60. data/assets/stylesheets/bootstrap/_type.scss +38 -59
  61. data/assets/stylesheets/bootstrap/_utilities.scss +594 -17
  62. data/assets/stylesheets/bootstrap/_variables.scss +810 -489
  63. data/assets/stylesheets/bootstrap/bootstrap-utilities.scss +18 -0
  64. data/assets/stylesheets/bootstrap/forms/_floating-labels.scss +61 -0
  65. data/assets/stylesheets/bootstrap/forms/_form-check.scss +152 -0
  66. data/assets/stylesheets/bootstrap/forms/_form-control.scss +219 -0
  67. data/assets/stylesheets/bootstrap/forms/_form-range.scss +91 -0
  68. data/assets/stylesheets/bootstrap/forms/_form-select.scss +67 -0
  69. data/assets/stylesheets/bootstrap/forms/_form-text.scss +11 -0
  70. data/assets/stylesheets/bootstrap/forms/_input-group.scss +121 -0
  71. data/assets/stylesheets/bootstrap/forms/_labels.scss +36 -0
  72. data/assets/stylesheets/bootstrap/forms/_validation.scss +12 -0
  73. data/assets/stylesheets/bootstrap/{utilities → helpers}/_clearfix.scss +0 -0
  74. data/assets/stylesheets/bootstrap/helpers/_colored-links.scss +12 -0
  75. data/assets/stylesheets/bootstrap/helpers/_position.scss +30 -0
  76. data/assets/stylesheets/bootstrap/helpers/_ratio.scss +26 -0
  77. data/assets/stylesheets/bootstrap/helpers/_stretched-link.scss +15 -0
  78. data/assets/stylesheets/bootstrap/helpers/_text-truncation.scss +7 -0
  79. data/assets/stylesheets/bootstrap/helpers/_visually-hidden.scss +8 -0
  80. data/assets/stylesheets/bootstrap/mixins/_alert.scss +3 -5
  81. data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +37 -22
  82. data/assets/stylesheets/bootstrap/mixins/_box-shadow.scss +7 -9
  83. data/assets/stylesheets/bootstrap/mixins/_breakpoints.scss +14 -10
  84. data/assets/stylesheets/bootstrap/mixins/_buttons.scss +75 -52
  85. data/assets/stylesheets/bootstrap/mixins/_caret.scss +10 -8
  86. data/assets/stylesheets/bootstrap/mixins/_clearfix.scss +2 -0
  87. data/assets/stylesheets/bootstrap/mixins/_color-scheme.scss +7 -0
  88. data/assets/stylesheets/bootstrap/mixins/_container.scss +9 -0
  89. data/assets/stylesheets/bootstrap/mixins/_forms.scss +42 -75
  90. data/assets/stylesheets/bootstrap/mixins/_gradients.scss +13 -11
  91. data/assets/stylesheets/bootstrap/mixins/_grid.scss +90 -34
  92. data/assets/stylesheets/bootstrap/mixins/_image.scss +1 -21
  93. data/assets/stylesheets/bootstrap/mixins/_list-group.scss +5 -2
  94. data/assets/stylesheets/bootstrap/mixins/_lists.scss +1 -1
  95. data/assets/stylesheets/bootstrap/mixins/_pagination.scss +17 -8
  96. data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +2 -2
  97. data/assets/stylesheets/bootstrap/mixins/_table-variants.scss +21 -0
  98. data/assets/stylesheets/bootstrap/mixins/_transition.scss +18 -8
  99. data/assets/stylesheets/bootstrap/mixins/_utilities.scss +68 -0
  100. data/assets/stylesheets/bootstrap/mixins/_visually-hidden.scss +29 -0
  101. data/assets/stylesheets/bootstrap/utilities/_api.scss +47 -0
  102. data/assets/stylesheets/bootstrap/vendor/_rfs.scss +234 -126
  103. data/bootstrap.gemspec +1 -3
  104. data/lib/bootstrap/version.rb +2 -2
  105. data/tasks/updater/js.rb +20 -5
  106. data/tasks/updater/network.rb +8 -2
  107. data/test/dummy_rails/app/assets/javascripts/application.js +4 -3
  108. data/test/dummy_rails/app/views/layouts/application.html.erb +3 -1
  109. data/test/dummy_rails/app/views/pages/root.html +89 -0
  110. data/test/dummy_rails/config/application.rb +0 -3
  111. data/test/gemfiles/rails_6_0.gemfile +7 -0
  112. data/test/gemfiles/rails_6_1.gemfile +7 -0
  113. metadata +48 -73
  114. data/assets/javascripts/bootstrap/util.js +0 -188
  115. data/assets/stylesheets/bootstrap/_code.scss +0 -48
  116. data/assets/stylesheets/bootstrap/_custom-forms.scss +0 -521
  117. data/assets/stylesheets/bootstrap/_input-group.scss +0 -191
  118. data/assets/stylesheets/bootstrap/_jumbotron.scss +0 -17
  119. data/assets/stylesheets/bootstrap/_media.scss +0 -8
  120. data/assets/stylesheets/bootstrap/_print.scss +0 -141
  121. data/assets/stylesheets/bootstrap/mixins/_background-variant.scss +0 -22
  122. data/assets/stylesheets/bootstrap/mixins/_badge.scss +0 -17
  123. data/assets/stylesheets/bootstrap/mixins/_float.scss +0 -14
  124. data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +0 -71
  125. data/assets/stylesheets/bootstrap/mixins/_hover.scss +0 -37
  126. data/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +0 -11
  127. data/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +0 -34
  128. data/assets/stylesheets/bootstrap/mixins/_size.scss +0 -7
  129. data/assets/stylesheets/bootstrap/mixins/_table-row.scss +0 -39
  130. data/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +0 -17
  131. data/assets/stylesheets/bootstrap/mixins/_text-hide.scss +0 -11
  132. data/assets/stylesheets/bootstrap/mixins/_visibility.scss +0 -8
  133. data/assets/stylesheets/bootstrap/utilities/_align.scss +0 -8
  134. data/assets/stylesheets/bootstrap/utilities/_background.scss +0 -19
  135. data/assets/stylesheets/bootstrap/utilities/_borders.scss +0 -75
  136. data/assets/stylesheets/bootstrap/utilities/_display.scss +0 -26
  137. data/assets/stylesheets/bootstrap/utilities/_embed.scss +0 -39
  138. data/assets/stylesheets/bootstrap/utilities/_flex.scss +0 -51
  139. data/assets/stylesheets/bootstrap/utilities/_float.scss +0 -11
  140. data/assets/stylesheets/bootstrap/utilities/_overflow.scss +0 -5
  141. data/assets/stylesheets/bootstrap/utilities/_position.scss +0 -32
  142. data/assets/stylesheets/bootstrap/utilities/_screenreaders.scss +0 -11
  143. data/assets/stylesheets/bootstrap/utilities/_shadows.scss +0 -6
  144. data/assets/stylesheets/bootstrap/utilities/_sizing.scss +0 -20
  145. data/assets/stylesheets/bootstrap/utilities/_spacing.scss +0 -73
  146. data/assets/stylesheets/bootstrap/utilities/_stretched-link.scss +0 -19
  147. data/assets/stylesheets/bootstrap/utilities/_text.scss +0 -72
  148. data/assets/stylesheets/bootstrap/utilities/_visibility.scss +0 -13
  149. data/test/dummy_rails/app/views/pages/root.html.slim +0 -58
@@ -1,5 +1,3 @@
1
- // stylelint-disable selector-no-qualifying-type
2
-
3
1
  //
4
2
  // Base styles
5
3
  //
@@ -8,49 +6,48 @@
8
6
  display: inline-block;
9
7
  font-family: $btn-font-family;
10
8
  font-weight: $btn-font-weight;
9
+ line-height: $btn-line-height;
11
10
  color: $body-color;
12
11
  text-align: center;
12
+ text-decoration: if($link-decoration == none, null, none);
13
13
  white-space: $btn-white-space;
14
14
  vertical-align: middle;
15
- cursor: if($enable-pointer-cursor-for-buttons, pointer, null);
15
+ cursor: if($enable-button-pointers, pointer, null);
16
16
  user-select: none;
17
17
  background-color: transparent;
18
18
  border: $btn-border-width solid transparent;
19
- @include button-size($btn-padding-y, $btn-padding-x, $btn-font-size, $btn-line-height, $btn-border-radius);
19
+ @include button-size($btn-padding-y, $btn-padding-x, $btn-font-size, $btn-border-radius);
20
20
  @include transition($btn-transition);
21
21
 
22
- @include hover() {
22
+ &:hover {
23
23
  color: $body-color;
24
- text-decoration: none;
24
+ text-decoration: if($link-hover-decoration == underline, none, null);
25
25
  }
26
26
 
27
- &:focus,
28
- &.focus {
27
+ .btn-check:focus + &,
28
+ &:focus {
29
29
  outline: 0;
30
30
  box-shadow: $btn-focus-box-shadow;
31
31
  }
32
32
 
33
- // Disabled comes first so active can properly restyle
34
- &.disabled,
35
- &:disabled {
36
- opacity: $btn-disabled-opacity;
37
- @include box-shadow(none);
38
- }
39
-
40
- &:not(:disabled):not(.disabled):active,
41
- &:not(:disabled):not(.disabled).active {
33
+ .btn-check:checked + &,
34
+ .btn-check:active + &,
35
+ &:active,
36
+ &.active {
42
37
  @include box-shadow($btn-active-box-shadow);
43
38
 
44
39
  &:focus {
45
40
  @include box-shadow($btn-focus-box-shadow, $btn-active-box-shadow);
46
41
  }
47
42
  }
48
- }
49
43
 
50
- // Future-proof disabling of clicks on `<a>` elements
51
- a.btn.disabled,
52
- fieldset:disabled a.btn {
53
- pointer-events: none;
44
+ &:disabled,
45
+ &.disabled,
46
+ fieldset:disabled & {
47
+ pointer-events: none;
48
+ opacity: $btn-disabled-opacity;
49
+ @include box-shadow(none);
50
+ }
54
51
  }
55
52
 
56
53
 
@@ -58,6 +55,7 @@ fieldset:disabled a.btn {
58
55
  // Alternate buttons
59
56
  //
60
57
 
58
+ // scss-docs-start btn-variant-loops
61
59
  @each $color, $value in $theme-colors {
62
60
  .btn-#{$color} {
63
61
  @include button-variant($value, $value);
@@ -69,6 +67,7 @@ fieldset:disabled a.btn {
69
67
  @include button-outline-variant($value);
70
68
  }
71
69
  }
70
+ // scss-docs-end btn-variant-loops
72
71
 
73
72
 
74
73
  //
@@ -78,24 +77,21 @@ fieldset:disabled a.btn {
78
77
  // Make a button look and behave like a link
79
78
  .btn-link {
80
79
  font-weight: $font-weight-normal;
81
- color: $link-color;
80
+ color: $btn-link-color;
82
81
  text-decoration: $link-decoration;
83
82
 
84
- @include hover() {
85
- color: $link-hover-color;
83
+ &:hover {
84
+ color: $btn-link-hover-color;
86
85
  text-decoration: $link-hover-decoration;
87
86
  }
88
87
 
89
- &:focus,
90
- &.focus {
88
+ &:focus {
91
89
  text-decoration: $link-hover-decoration;
92
- box-shadow: none;
93
90
  }
94
91
 
95
92
  &:disabled,
96
93
  &.disabled {
97
94
  color: $btn-link-disabled-color;
98
- pointer-events: none;
99
95
  }
100
96
 
101
97
  // No need for an active state here
@@ -107,33 +103,9 @@ fieldset:disabled a.btn {
107
103
  //
108
104
 
109
105
  .btn-lg {
110
- @include button-size($btn-padding-y-lg, $btn-padding-x-lg, $btn-font-size-lg, $btn-line-height-lg, $btn-border-radius-lg);
106
+ @include button-size($btn-padding-y-lg, $btn-padding-x-lg, $btn-font-size-lg, $btn-border-radius-lg);
111
107
  }
112
108
 
113
109
  .btn-sm {
114
- @include button-size($btn-padding-y-sm, $btn-padding-x-sm, $btn-font-size-sm, $btn-line-height-sm, $btn-border-radius-sm);
115
- }
116
-
117
-
118
- //
119
- // Block button
120
- //
121
-
122
- .btn-block {
123
- display: block;
124
- width: 100%;
125
-
126
- // Vertically space out multiple block buttons
127
- + .btn-block {
128
- margin-top: $btn-block-spacing-y;
129
- }
130
- }
131
-
132
- // Specificity overrides
133
- input[type="submit"],
134
- input[type="reset"],
135
- input[type="button"] {
136
- &.btn-block {
137
- width: 100%;
138
- }
110
+ @include button-size($btn-padding-y-sm, $btn-padding-x-sm, $btn-font-size-sm, $btn-border-radius-sm);
139
111
  }
@@ -19,36 +19,43 @@
19
19
  margin-left: 0;
20
20
  }
21
21
 
22
- > .list-group:first-child {
23
- .list-group-item:first-child {
24
- @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);
25
29
  }
26
- }
27
30
 
28
- > .list-group:last-child {
29
- .list-group-item:last-child {
30
- @include border-bottom-radius($card-border-radius);
31
+ &:last-child {
32
+ border-bottom-width: 0;
33
+ @include border-bottom-radius($card-inner-border-radius);
31
34
  }
32
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
+ }
33
43
  }
34
44
 
35
45
  .card-body {
36
46
  // Enable `flex-grow: 1` for decks and groups so that card blocks take up
37
47
  // as much space as possible, ensuring footers are aligned to the bottom.
38
48
  flex: 1 1 auto;
39
- // Workaround for the image size bug in IE
40
- // See: https://github.com/twbs/bootstrap/pull/28855
41
- min-height: 1px;
42
- padding: $card-spacer-x;
49
+ padding: $card-spacer-y $card-spacer-x;
43
50
  color: $card-color;
44
51
  }
45
52
 
46
53
  .card-title {
47
- margin-bottom: $card-spacer-y;
54
+ margin-bottom: $card-title-spacer-y;
48
55
  }
49
56
 
50
57
  .card-subtitle {
51
- margin-top: -$card-spacer-y / 2;
58
+ margin-top: -$card-title-spacer-y / 2;
52
59
  margin-bottom: 0;
53
60
  }
54
61
 
@@ -57,7 +64,7 @@
57
64
  }
58
65
 
59
66
  .card-link {
60
- @include hover() {
67
+ &:hover {
61
68
  text-decoration: none;
62
69
  }
63
70
 
@@ -71,7 +78,7 @@
71
78
  //
72
79
 
73
80
  .card-header {
74
- padding: $card-spacer-y $card-spacer-x;
81
+ padding: $card-cap-padding-y $card-cap-padding-x;
75
82
  margin-bottom: 0; // Removes the default margin-bottom of <hN>
76
83
  color: $card-cap-color;
77
84
  background-color: $card-cap-bg;
@@ -80,16 +87,11 @@
80
87
  &:first-child {
81
88
  @include border-radius($card-inner-border-radius $card-inner-border-radius 0 0);
82
89
  }
83
-
84
- + .list-group {
85
- .list-group-item:first-child {
86
- border-top: 0;
87
- }
88
- }
89
90
  }
90
91
 
91
92
  .card-footer {
92
- padding: $card-spacer-y $card-spacer-x;
93
+ padding: $card-cap-padding-y $card-cap-padding-x;
94
+ color: $card-cap-color;
93
95
  background-color: $card-cap-bg;
94
96
  border-top: $card-border-width solid $card-border-color;
95
97
 
@@ -104,15 +106,22 @@
104
106
  //
105
107
 
106
108
  .card-header-tabs {
107
- margin-right: -$card-spacer-x / 2;
108
- margin-bottom: -$card-spacer-y;
109
- margin-left: -$card-spacer-x / 2;
109
+ margin-right: -$card-cap-padding-x / 2;
110
+ margin-bottom: -$card-cap-padding-y;
111
+ margin-left: -$card-cap-padding-x / 2;
110
112
  border-bottom: 0;
113
+
114
+ @if $nav-tabs-link-active-bg != $card-bg {
115
+ .nav-link.active {
116
+ background-color: $card-bg;
117
+ border-bottom-color: $card-bg;
118
+ }
119
+ }
111
120
  }
112
121
 
113
122
  .card-header-pills {
114
- margin-right: -$card-spacer-x / 2;
115
- margin-left: -$card-spacer-x / 2;
123
+ margin-right: -$card-cap-padding-x / 2;
124
+ margin-left: -$card-cap-padding-x / 2;
116
125
  }
117
126
 
118
127
  // Card image
@@ -123,12 +132,12 @@
123
132
  bottom: 0;
124
133
  left: 0;
125
134
  padding: $card-img-overlay-padding;
135
+ @include border-radius($card-inner-border-radius);
126
136
  }
127
137
 
128
138
  .card-img,
129
139
  .card-img-top,
130
140
  .card-img-bottom {
131
- flex-shrink: 0; // For IE: https://github.com/twbs/bootstrap/issues/29396
132
141
  width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch
133
142
  }
134
143
 
@@ -143,30 +152,6 @@
143
152
  }
144
153
 
145
154
 
146
- // Card deck
147
-
148
- .card-deck {
149
- .card {
150
- margin-bottom: $card-deck-margin;
151
- }
152
-
153
- @include media-breakpoint-up(sm) {
154
- display: flex;
155
- flex-flow: row wrap;
156
- margin-right: -$card-deck-margin;
157
- margin-left: -$card-deck-margin;
158
-
159
- .card {
160
- // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4
161
- flex: 1 0 0%;
162
- margin-right: $card-deck-margin;
163
- margin-bottom: 0; // Override the default
164
- margin-left: $card-deck-margin;
165
- }
166
- }
167
- }
168
-
169
-
170
155
  //
171
156
  // Card groups
172
157
  //
@@ -196,31 +181,31 @@
196
181
  // Handle rounded corners
197
182
  @if $enable-rounded {
198
183
  &:not(:last-child) {
199
- @include border-right-radius(0);
184
+ @include border-end-radius(0);
200
185
 
201
186
  .card-img-top,
202
187
  .card-header {
203
- // stylelint-disable-next-line property-blacklist
188
+ // stylelint-disable-next-line property-disallowed-list
204
189
  border-top-right-radius: 0;
205
190
  }
206
191
  .card-img-bottom,
207
192
  .card-footer {
208
- // stylelint-disable-next-line property-blacklist
193
+ // stylelint-disable-next-line property-disallowed-list
209
194
  border-bottom-right-radius: 0;
210
195
  }
211
196
  }
212
197
 
213
198
  &:not(:first-child) {
214
- @include border-left-radius(0);
199
+ @include border-start-radius(0);
215
200
 
216
201
  .card-img-top,
217
202
  .card-header {
218
- // stylelint-disable-next-line property-blacklist
203
+ // stylelint-disable-next-line property-disallowed-list
219
204
  border-top-left-radius: 0;
220
205
  }
221
206
  .card-img-bottom,
222
207
  .card-footer {
223
- // stylelint-disable-next-line property-blacklist
208
+ // stylelint-disable-next-line property-disallowed-list
224
209
  border-bottom-left-radius: 0;
225
210
  }
226
211
  }
@@ -228,51 +213,3 @@
228
213
  }
229
214
  }
230
215
  }
231
-
232
-
233
- //
234
- // Columns
235
- //
236
-
237
- .card-columns {
238
- .card {
239
- margin-bottom: $card-columns-margin;
240
- }
241
-
242
- @include media-breakpoint-up(sm) {
243
- column-count: $card-columns-count;
244
- column-gap: $card-columns-gap;
245
- orphans: 1;
246
- widows: 1;
247
-
248
- .card {
249
- display: inline-block; // Don't let them vertically span multiple columns
250
- width: 100%; // Don't let their width change
251
- }
252
- }
253
- }
254
-
255
-
256
- //
257
- // Accordion
258
- //
259
-
260
- .accordion {
261
- > .card {
262
- overflow: hidden;
263
-
264
- &:not(:last-of-type) {
265
- border-bottom: 0;
266
- @include border-bottom-radius(0);
267
- }
268
-
269
- &:not(:first-of-type) {
270
- @include border-top-radius(0);
271
- }
272
-
273
- > .card-header {
274
- @include border-radius(0);
275
- margin-bottom: -$card-border-width;
276
- }
277
- }
278
- }
@@ -3,12 +3,12 @@
3
3
  // 1. .carousel.pointer-event should ideally be pan-y (to allow for users to scroll vertically)
4
4
  // even when their scroll action started on a carousel, but for compatibility (with Firefox)
5
5
  // we're preventing all actions instead
6
- // 2. The .carousel-item-left and .carousel-item-right is used to indicate where
6
+ // 2. The .carousel-item-start and .carousel-item-end is used to indicate where
7
7
  // the active slide is heading.
8
8
  // 3. .active.carousel-item is the current slide.
9
- // 4. .active.carousel-item-left and .active.carousel-item-right is the current
9
+ // 4. .active.carousel-item-start and .active.carousel-item-end is the current
10
10
  // slide in its in-transition state. Only one of these occurs at a time.
11
- // 5. .carousel-item-next.carousel-item-left and .carousel-item-prev.carousel-item-right
11
+ // 5. .carousel-item-next.carousel-item-start and .carousel-item-prev.carousel-item-end
12
12
  // is the upcoming slide in transition.
13
13
 
14
14
  .carousel {
@@ -42,16 +42,19 @@
42
42
  display: block;
43
43
  }
44
44
 
45
- .carousel-item-next:not(.carousel-item-left),
46
- .active.carousel-item-right {
45
+ /* rtl:begin:ignore */
46
+ .carousel-item-next:not(.carousel-item-start),
47
+ .active.carousel-item-end {
47
48
  transform: translateX(100%);
48
49
  }
49
50
 
50
- .carousel-item-prev:not(.carousel-item-right),
51
- .active.carousel-item-left {
51
+ .carousel-item-prev:not(.carousel-item-end),
52
+ .active.carousel-item-start {
52
53
  transform: translateX(-100%);
53
54
  }
54
55
 
56
+ /* rtl:end:ignore */
57
+
55
58
 
56
59
  //
57
60
  // Alternate transitions
@@ -65,14 +68,14 @@
65
68
  }
66
69
 
67
70
  .carousel-item.active,
68
- .carousel-item-next.carousel-item-left,
69
- .carousel-item-prev.carousel-item-right {
71
+ .carousel-item-next.carousel-item-start,
72
+ .carousel-item-prev.carousel-item-end {
70
73
  z-index: 1;
71
74
  opacity: 1;
72
75
  }
73
76
 
74
- .active.carousel-item-left,
75
- .active.carousel-item-right {
77
+ .active.carousel-item-start,
78
+ .active.carousel-item-end {
76
79
  z-index: 0;
77
80
  opacity: 0;
78
81
  @include transition(opacity 0s $carousel-transition-duration);
@@ -95,13 +98,17 @@
95
98
  align-items: center; // 2. vertically center contents
96
99
  justify-content: center; // 3. horizontally center contents
97
100
  width: $carousel-control-width;
101
+ padding: 0;
98
102
  color: $carousel-control-color;
99
103
  text-align: center;
104
+ background: none;
105
+ border: 0;
100
106
  opacity: $carousel-control-opacity;
101
107
  @include transition($carousel-control-transition);
102
108
 
103
109
  // Hover/focus state
104
- @include hover-focus() {
110
+ &:hover,
111
+ &:focus {
105
112
  color: $carousel-control-color;
106
113
  text-decoration: none;
107
114
  outline: 0;
@@ -110,15 +117,11 @@
110
117
  }
111
118
  .carousel-control-prev {
112
119
  left: 0;
113
- @if $enable-gradients {
114
- background-image: linear-gradient(90deg, rgba($black, .25), rgba($black, .001));
115
- }
120
+ background-image: if($enable-gradients, linear-gradient(90deg, rgba($black, .25), rgba($black, .001)), null);
116
121
  }
117
122
  .carousel-control-next {
118
123
  right: 0;
119
- @if $enable-gradients {
120
- background-image: linear-gradient(270deg, rgba($black, .25), rgba($black, .001));
121
- }
124
+ background-image: if($enable-gradients, linear-gradient(270deg, rgba($black, .25), rgba($black, .001)), null);
122
125
  }
123
126
 
124
127
  // Icons for within
@@ -127,8 +130,19 @@
127
130
  display: inline-block;
128
131
  width: $carousel-control-icon-width;
129
132
  height: $carousel-control-icon-width;
130
- background: no-repeat 50% / 100% 100%;
131
- }
133
+ background-repeat: no-repeat;
134
+ background-position: 50%;
135
+ background-size: 100% 100%;
136
+ }
137
+
138
+ /* rtl:options: {
139
+ "autoRename": true,
140
+ "stringMap":[ {
141
+ "name" : "prev-next",
142
+ "search" : "prev",
143
+ "replace" : "next"
144
+ } ]
145
+ } */
132
146
  .carousel-control-prev-icon {
133
147
  background-image: escape-svg($carousel-control-prev-icon-bg);
134
148
  }
@@ -136,46 +150,48 @@
136
150
  background-image: escape-svg($carousel-control-next-icon-bg);
137
151
  }
138
152
 
139
-
140
- // Optional indicator pips
153
+ // Optional indicator pips/controls
141
154
  //
142
- // Add an ordered list with the following class and add a list item for each
143
- // slide your carousel holds.
155
+ // Add a container (such as a list) with the following class and add an item (ideally a focusable control,
156
+ // like a button) with data-bs-target for each slide your carousel holds.
144
157
 
145
158
  .carousel-indicators {
146
159
  position: absolute;
147
160
  right: 0;
148
161
  bottom: 0;
149
162
  left: 0;
150
- z-index: 15;
163
+ z-index: 2;
151
164
  display: flex;
152
165
  justify-content: center;
153
- padding-left: 0; // override <ol> default
166
+ padding: 0;
154
167
  // Use the .carousel-control's width as margin so we don't overlay those
155
168
  margin-right: $carousel-control-width;
169
+ margin-bottom: 1rem;
156
170
  margin-left: $carousel-control-width;
157
171
  list-style: none;
158
172
 
159
- li {
173
+ [data-bs-target] {
160
174
  box-sizing: content-box;
161
175
  flex: 0 1 auto;
162
176
  width: $carousel-indicator-width;
163
177
  height: $carousel-indicator-height;
178
+ padding: 0;
164
179
  margin-right: $carousel-indicator-spacer;
165
180
  margin-left: $carousel-indicator-spacer;
166
181
  text-indent: -999px;
167
182
  cursor: pointer;
168
183
  background-color: $carousel-indicator-active-bg;
169
184
  background-clip: padding-box;
185
+ border: 0;
170
186
  // Use transparent borders to increase the hit area by 10px on top and bottom.
171
187
  border-top: $carousel-indicator-hit-area-height solid transparent;
172
188
  border-bottom: $carousel-indicator-hit-area-height solid transparent;
173
- opacity: .5;
189
+ opacity: $carousel-indicator-opacity;
174
190
  @include transition($carousel-indicator-transition);
175
191
  }
176
192
 
177
193
  .active {
178
- opacity: 1;
194
+ opacity: $carousel-indicator-active-opacity;
179
195
  }
180
196
  }
181
197
 
@@ -187,11 +203,27 @@
187
203
  .carousel-caption {
188
204
  position: absolute;
189
205
  right: (100% - $carousel-caption-width) / 2;
190
- bottom: 20px;
206
+ bottom: $carousel-caption-spacer;
191
207
  left: (100% - $carousel-caption-width) / 2;
192
- z-index: 10;
193
- padding-top: 20px;
194
- padding-bottom: 20px;
208
+ padding-top: $carousel-caption-padding-y;
209
+ padding-bottom: $carousel-caption-padding-y;
195
210
  color: $carousel-caption-color;
196
211
  text-align: center;
197
212
  }
213
+
214
+ // Dark mode carousel
215
+
216
+ .carousel-dark {
217
+ .carousel-control-prev-icon,
218
+ .carousel-control-next-icon {
219
+ filter: $carousel-dark-control-icon-filter;
220
+ }
221
+
222
+ .carousel-indicators [data-bs-target] {
223
+ background-color: $carousel-dark-indicator-active-bg;
224
+ }
225
+
226
+ .carousel-caption {
227
+ color: $carousel-dark-caption-color;
228
+ }
229
+ }