bootstrap 4.4.1 → 5.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
+ }