bootstrap 4.6.2.1 → 5.3.5
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.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yml +61 -0
- data/CHANGELOG.md +7 -2
- data/Gemfile +1 -0
- data/README.md +33 -15
- data/Rakefile +1 -2
- data/assets/javascripts/bootstrap/alert.js +50 -147
- data/assets/javascripts/bootstrap/base-component.js +83 -0
- data/assets/javascripts/bootstrap/button.js +40 -190
- data/assets/javascripts/bootstrap/carousel.js +282 -537
- data/assets/javascripts/bootstrap/collapse.js +166 -314
- data/assets/javascripts/bootstrap/dom/data.js +62 -0
- data/assets/javascripts/bootstrap/dom/event-handler.js +236 -0
- data/assets/javascripts/bootstrap/dom/manipulator.js +71 -0
- data/assets/javascripts/bootstrap/dom/selector-engine.js +103 -0
- data/assets/javascripts/bootstrap/dropdown.js +297 -455
- data/assets/javascripts/bootstrap/modal.js +223 -566
- data/assets/javascripts/bootstrap/offcanvas.js +245 -0
- data/assets/javascripts/bootstrap/popover.js +59 -208
- data/assets/javascripts/bootstrap/scrollspy.js +213 -276
- data/assets/javascripts/bootstrap/tab.js +222 -200
- data/assets/javascripts/bootstrap/toast.js +137 -206
- data/assets/javascripts/bootstrap/tooltip.js +403 -747
- data/assets/javascripts/bootstrap/util/backdrop.js +138 -0
- data/assets/javascripts/bootstrap/util/component-functions.js +41 -0
- data/assets/javascripts/bootstrap/util/config.js +67 -0
- data/assets/javascripts/bootstrap/util/focustrap.js +112 -0
- data/assets/javascripts/bootstrap/util/index.js +280 -0
- data/assets/javascripts/bootstrap/util/sanitizer.js +113 -0
- data/assets/javascripts/bootstrap/util/scrollbar.js +112 -0
- data/assets/javascripts/bootstrap/util/swipe.js +134 -0
- data/assets/javascripts/bootstrap/util/template-factory.js +150 -0
- data/assets/javascripts/bootstrap-global-this-define.js +6 -0
- data/assets/javascripts/bootstrap-global-this-undefine.js +2 -0
- data/assets/javascripts/bootstrap-sprockets.js +21 -5
- data/assets/javascripts/bootstrap.js +3625 -3488
- data/assets/javascripts/bootstrap.min.js +3 -3
- data/assets/stylesheets/_bootstrap-grid.scss +53 -21
- data/assets/stylesheets/_bootstrap-reboot.scss +5 -7
- data/assets/stylesheets/_bootstrap-utilities.scss +19 -0
- data/assets/stylesheets/_bootstrap.scss +21 -13
- data/assets/stylesheets/bootstrap/_accordion.scss +153 -0
- data/assets/stylesheets/bootstrap/_alert.scss +32 -16
- data/assets/stylesheets/bootstrap/_badge.scss +15 -31
- data/assets/stylesheets/bootstrap/_breadcrumb.scss +22 -24
- data/assets/stylesheets/bootstrap/_button-group.scss +32 -48
- data/assets/stylesheets/bootstrap/_buttons.scss +145 -71
- data/assets/stylesheets/bootstrap/_card.scss +67 -115
- data/assets/stylesheets/bootstrap/_carousel.scss +63 -37
- data/assets/stylesheets/bootstrap/_close.scss +53 -27
- data/assets/stylesheets/bootstrap/_containers.scss +41 -0
- data/assets/stylesheets/bootstrap/_dropdown.scss +129 -71
- data/assets/stylesheets/bootstrap/_forms.scss +9 -347
- data/assets/stylesheets/bootstrap/_functions.scss +135 -23
- data/assets/stylesheets/bootstrap/_grid.scss +18 -52
- data/assets/stylesheets/bootstrap/_helpers.scss +12 -0
- data/assets/stylesheets/bootstrap/_list-group.scss +93 -48
- data/assets/stylesheets/bootstrap/_maps.scss +174 -0
- data/assets/stylesheets/bootstrap/_mixins.scss +10 -15
- data/assets/stylesheets/bootstrap/_modal.scss +112 -112
- data/assets/stylesheets/bootstrap/_nav.scss +100 -28
- data/assets/stylesheets/bootstrap/_navbar.scss +130 -173
- data/assets/stylesheets/bootstrap/_offcanvas.scss +147 -0
- data/assets/stylesheets/bootstrap/_pagination.scss +72 -37
- data/assets/stylesheets/bootstrap/_placeholders.scss +51 -0
- data/assets/stylesheets/bootstrap/_popover.scss +99 -73
- data/assets/stylesheets/bootstrap/_progress.scss +35 -14
- data/assets/stylesheets/bootstrap/_reboot.scss +319 -192
- data/assets/stylesheets/bootstrap/_root.scss +177 -9
- data/assets/stylesheets/bootstrap/_spinners.scss +43 -23
- data/assets/stylesheets/bootstrap/_tables.scss +101 -115
- data/assets/stylesheets/bootstrap/_toasts.scss +54 -27
- data/assets/stylesheets/bootstrap/_tooltip.scss +67 -63
- data/assets/stylesheets/bootstrap/_transitions.scss +3 -2
- data/assets/stylesheets/bootstrap/_type.scss +40 -59
- data/assets/stylesheets/bootstrap/_utilities.scss +806 -18
- data/assets/stylesheets/bootstrap/_variables-dark.scss +102 -0
- data/assets/stylesheets/bootstrap/_variables.scss +1210 -606
- data/assets/stylesheets/bootstrap/forms/_floating-labels.scss +97 -0
- data/assets/stylesheets/bootstrap/forms/_form-check.scss +189 -0
- data/assets/stylesheets/bootstrap/forms/_form-control.scss +214 -0
- data/assets/stylesheets/bootstrap/forms/_form-range.scss +91 -0
- data/assets/stylesheets/bootstrap/forms/_form-select.scss +80 -0
- data/assets/stylesheets/bootstrap/forms/_form-text.scss +11 -0
- data/assets/stylesheets/bootstrap/forms/_input-group.scss +132 -0
- data/assets/stylesheets/bootstrap/forms/_labels.scss +36 -0
- data/assets/stylesheets/bootstrap/forms/_validation.scss +12 -0
- data/assets/stylesheets/bootstrap/helpers/_color-bg.scss +7 -0
- data/assets/stylesheets/bootstrap/helpers/_colored-links.scss +30 -0
- data/assets/stylesheets/bootstrap/helpers/_focus-ring.scss +5 -0
- data/assets/stylesheets/bootstrap/helpers/_icon-link.scss +25 -0
- data/assets/stylesheets/bootstrap/helpers/_position.scss +36 -0
- data/assets/stylesheets/bootstrap/helpers/_ratio.scss +26 -0
- data/assets/stylesheets/bootstrap/helpers/_stacks.scss +15 -0
- data/assets/stylesheets/bootstrap/helpers/_stretched-link.scss +15 -0
- data/assets/stylesheets/bootstrap/helpers/_text-truncation.scss +7 -0
- data/assets/stylesheets/bootstrap/helpers/_visually-hidden.scss +8 -0
- data/assets/stylesheets/bootstrap/helpers/_vr.scss +8 -0
- data/assets/stylesheets/bootstrap/mixins/_alert.scss +11 -6
- data/assets/stylesheets/bootstrap/mixins/_backdrop.scss +14 -0
- data/assets/stylesheets/bootstrap/mixins/_banner.scss +7 -0
- data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +10 -8
- data/assets/stylesheets/bootstrap/mixins/_box-shadow.scss +7 -9
- data/assets/stylesheets/bootstrap/mixins/_breakpoints.scss +20 -16
- data/assets/stylesheets/bootstrap/mixins/_buttons.scss +60 -100
- data/assets/stylesheets/bootstrap/mixins/_caret.scss +34 -27
- data/assets/stylesheets/bootstrap/mixins/_clearfix.scss +2 -0
- data/assets/stylesheets/bootstrap/mixins/_color-mode.scss +21 -0
- data/assets/stylesheets/bootstrap/mixins/_color-scheme.scss +7 -0
- data/assets/stylesheets/bootstrap/mixins/_container.scss +11 -0
- data/assets/stylesheets/bootstrap/mixins/_forms.scss +64 -96
- data/assets/stylesheets/bootstrap/mixins/_gradients.scss +13 -11
- data/assets/stylesheets/bootstrap/mixins/_grid.scss +118 -36
- data/assets/stylesheets/bootstrap/mixins/_image.scss +1 -21
- data/assets/stylesheets/bootstrap/mixins/_list-group.scss +7 -2
- data/assets/stylesheets/bootstrap/mixins/_lists.scss +1 -1
- data/assets/stylesheets/bootstrap/mixins/_pagination.scss +7 -19
- data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +2 -2
- data/assets/stylesheets/bootstrap/mixins/_table-variants.scss +24 -0
- data/assets/stylesheets/bootstrap/mixins/_transition.scss +1 -1
- data/assets/stylesheets/bootstrap/mixins/_utilities.scss +97 -0
- data/assets/stylesheets/bootstrap/mixins/_visually-hidden.scss +33 -0
- data/assets/stylesheets/bootstrap/utilities/_api.scss +47 -0
- data/assets/stylesheets/bootstrap/vendor/_rfs.scss +211 -91
- data/bootstrap.gemspec +6 -6
- data/lib/bootstrap/engine.rb +0 -1
- data/lib/bootstrap/version.rb +2 -2
- data/tasks/updater/js.rb +17 -5
- data/tasks/updater/network.rb +2 -2
- data/tasks/updater/scss.rb +2 -2
- data/tasks/updater.rb +2 -2
- data/test/dummy_rails/app/assets/javascripts/application.js +4 -3
- data/test/dummy_rails/app/views/layouts/application.html.erb +3 -1
- data/test/dummy_rails/app/views/pages/root.html +89 -0
- data/test/dummy_rails/config/application.rb +0 -5
- data/test/dummy_rails/public/favicon.ico +0 -0
- data/test/gemfiles/rails_4_2.gemfile +2 -1
- data/test/gemfiles/rails_5_0.gemfile +1 -2
- data/test/gemfiles/rails_5_1.gemfile +1 -2
- data/test/gemfiles/rails_5_2.gemfile +7 -0
- data/test/gemfiles/rails_6_0.gemfile +1 -1
- data/test/gemfiles/rails_6_1.gemfile +7 -0
- data/test/gemfiles/rails_7_0_dartsass.gemfile +0 -1
- data/test/gemfiles/rails_7_0_sassc.gemfile +0 -1
- data/test/rails_test.rb +0 -5
- data/test/test_helper.rb +3 -2
- metadata +92 -86
- data/.travis.yml +0 -31
- data/assets/javascripts/bootstrap/util.js +0 -189
- data/assets/stylesheets/bootstrap/_code.scss +0 -48
- data/assets/stylesheets/bootstrap/_custom-forms.scss +0 -526
- data/assets/stylesheets/bootstrap/_input-group.scss +0 -211
- data/assets/stylesheets/bootstrap/_jumbotron.scss +0 -17
- data/assets/stylesheets/bootstrap/_media.scss +0 -8
- data/assets/stylesheets/bootstrap/_print.scss +0 -132
- data/assets/stylesheets/bootstrap/mixins/_background-variant.scss +0 -23
- data/assets/stylesheets/bootstrap/mixins/_badge.scss +0 -17
- data/assets/stylesheets/bootstrap/mixins/_float.scss +0 -14
- data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +0 -80
- data/assets/stylesheets/bootstrap/mixins/_hover.scss +0 -37
- data/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +0 -11
- data/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +0 -34
- data/assets/stylesheets/bootstrap/mixins/_size.scss +0 -7
- data/assets/stylesheets/bootstrap/mixins/_table-row.scss +0 -39
- data/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +0 -17
- data/assets/stylesheets/bootstrap/mixins/_text-hide.scss +0 -11
- data/assets/stylesheets/bootstrap/mixins/_visibility.scss +0 -8
- data/assets/stylesheets/bootstrap/utilities/_align.scss +0 -8
- data/assets/stylesheets/bootstrap/utilities/_background.scss +0 -19
- data/assets/stylesheets/bootstrap/utilities/_borders.scss +0 -75
- data/assets/stylesheets/bootstrap/utilities/_display.scss +0 -26
- data/assets/stylesheets/bootstrap/utilities/_embed.scss +0 -39
- data/assets/stylesheets/bootstrap/utilities/_flex.scss +0 -51
- data/assets/stylesheets/bootstrap/utilities/_float.scss +0 -11
- data/assets/stylesheets/bootstrap/utilities/_interactions.scss +0 -5
- data/assets/stylesheets/bootstrap/utilities/_overflow.scss +0 -5
- data/assets/stylesheets/bootstrap/utilities/_position.scss +0 -32
- data/assets/stylesheets/bootstrap/utilities/_screenreaders.scss +0 -11
- data/assets/stylesheets/bootstrap/utilities/_shadows.scss +0 -6
- data/assets/stylesheets/bootstrap/utilities/_sizing.scss +0 -20
- data/assets/stylesheets/bootstrap/utilities/_spacing.scss +0 -73
- data/assets/stylesheets/bootstrap/utilities/_stretched-link.scss +0 -19
- data/assets/stylesheets/bootstrap/utilities/_text.scss +0 -72
- data/assets/stylesheets/bootstrap/utilities/_visibility.scss +0 -13
- data/test/dummy_rails/app/views/pages/root.html.slim +0 -58
- /data/assets/stylesheets/bootstrap/{utilities → helpers}/_clearfix.scss +0 -0
@@ -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-
|
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-
|
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-
|
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,13 +42,13 @@
|
|
42
42
|
display: block;
|
43
43
|
}
|
44
44
|
|
45
|
-
.carousel-item-next:not(.carousel-item-
|
46
|
-
.active.carousel-item-
|
45
|
+
.carousel-item-next:not(.carousel-item-start),
|
46
|
+
.active.carousel-item-end {
|
47
47
|
transform: translateX(100%);
|
48
48
|
}
|
49
49
|
|
50
|
-
.carousel-item-prev:not(.carousel-item-
|
51
|
-
.active.carousel-item-
|
50
|
+
.carousel-item-prev:not(.carousel-item-end),
|
51
|
+
.active.carousel-item-start {
|
52
52
|
transform: translateX(-100%);
|
53
53
|
}
|
54
54
|
|
@@ -65,14 +65,14 @@
|
|
65
65
|
}
|
66
66
|
|
67
67
|
.carousel-item.active,
|
68
|
-
.carousel-item-next.carousel-item-
|
69
|
-
.carousel-item-prev.carousel-item-
|
68
|
+
.carousel-item-next.carousel-item-start,
|
69
|
+
.carousel-item-prev.carousel-item-end {
|
70
70
|
z-index: 1;
|
71
71
|
opacity: 1;
|
72
72
|
}
|
73
73
|
|
74
|
-
.active.carousel-item-
|
75
|
-
.active.carousel-item-
|
74
|
+
.active.carousel-item-start,
|
75
|
+
.active.carousel-item-end {
|
76
76
|
z-index: 0;
|
77
77
|
opacity: 0;
|
78
78
|
@include transition(opacity 0s $carousel-transition-duration);
|
@@ -99,12 +99,14 @@
|
|
99
99
|
color: $carousel-control-color;
|
100
100
|
text-align: center;
|
101
101
|
background: none;
|
102
|
+
filter: var(--#{$prefix}carousel-control-icon-filter);
|
102
103
|
border: 0;
|
103
104
|
opacity: $carousel-control-opacity;
|
104
105
|
@include transition($carousel-control-transition);
|
105
106
|
|
106
107
|
// Hover/focus state
|
107
|
-
|
108
|
+
&:hover,
|
109
|
+
&:focus {
|
108
110
|
color: $carousel-control-color;
|
109
111
|
text-decoration: none;
|
110
112
|
outline: 0;
|
@@ -113,15 +115,11 @@
|
|
113
115
|
}
|
114
116
|
.carousel-control-prev {
|
115
117
|
left: 0;
|
116
|
-
|
117
|
-
background-image: linear-gradient(90deg, rgba($black, .25), rgba($black, .001));
|
118
|
-
}
|
118
|
+
background-image: if($enable-gradients, linear-gradient(90deg, rgba($black, .25), rgba($black, .001)), null);
|
119
119
|
}
|
120
120
|
.carousel-control-next {
|
121
121
|
right: 0;
|
122
|
-
|
123
|
-
background-image: linear-gradient(270deg, rgba($black, .25), rgba($black, .001));
|
124
|
-
}
|
122
|
+
background-image: if($enable-gradients, linear-gradient(270deg, rgba($black, .25), rgba($black, .001)), null);
|
125
123
|
}
|
126
124
|
|
127
125
|
// Icons for within
|
@@ -130,55 +128,59 @@
|
|
130
128
|
display: inline-block;
|
131
129
|
width: $carousel-control-icon-width;
|
132
130
|
height: $carousel-control-icon-width;
|
133
|
-
background:
|
131
|
+
background-repeat: no-repeat;
|
132
|
+
background-position: 50%;
|
133
|
+
background-size: 100% 100%;
|
134
134
|
}
|
135
|
+
|
135
136
|
.carousel-control-prev-icon {
|
136
|
-
background-image: escape-svg($carousel-control-prev-icon-bg);
|
137
|
+
background-image: escape-svg($carousel-control-prev-icon-bg) #{"/*rtl:" + escape-svg($carousel-control-next-icon-bg) + "*/"};
|
137
138
|
}
|
138
139
|
.carousel-control-next-icon {
|
139
|
-
background-image: escape-svg($carousel-control-next-icon-bg);
|
140
|
+
background-image: escape-svg($carousel-control-next-icon-bg) #{"/*rtl:" + escape-svg($carousel-control-prev-icon-bg) + "*/"};
|
140
141
|
}
|
141
142
|
|
142
|
-
|
143
|
-
// Optional indicator pips
|
143
|
+
// Optional indicator pips/controls
|
144
144
|
//
|
145
|
-
// Add
|
146
|
-
// slide your carousel holds.
|
145
|
+
// Add a container (such as a list) with the following class and add an item (ideally a focusable control,
|
146
|
+
// like a button) with data-bs-target for each slide your carousel holds.
|
147
147
|
|
148
148
|
.carousel-indicators {
|
149
149
|
position: absolute;
|
150
150
|
right: 0;
|
151
151
|
bottom: 0;
|
152
152
|
left: 0;
|
153
|
-
z-index:
|
153
|
+
z-index: 2;
|
154
154
|
display: flex;
|
155
155
|
justify-content: center;
|
156
|
-
padding
|
156
|
+
padding: 0;
|
157
157
|
// Use the .carousel-control's width as margin so we don't overlay those
|
158
158
|
margin-right: $carousel-control-width;
|
159
|
+
margin-bottom: 1rem;
|
159
160
|
margin-left: $carousel-control-width;
|
160
|
-
list-style: none;
|
161
161
|
|
162
|
-
|
162
|
+
[data-bs-target] {
|
163
163
|
box-sizing: content-box;
|
164
164
|
flex: 0 1 auto;
|
165
165
|
width: $carousel-indicator-width;
|
166
166
|
height: $carousel-indicator-height;
|
167
|
+
padding: 0;
|
167
168
|
margin-right: $carousel-indicator-spacer;
|
168
169
|
margin-left: $carousel-indicator-spacer;
|
169
170
|
text-indent: -999px;
|
170
171
|
cursor: pointer;
|
171
|
-
background-color: $carousel-indicator-active-bg;
|
172
|
+
background-color: var(--#{$prefix}carousel-indicator-active-bg);
|
172
173
|
background-clip: padding-box;
|
174
|
+
border: 0;
|
173
175
|
// Use transparent borders to increase the hit area by 10px on top and bottom.
|
174
176
|
border-top: $carousel-indicator-hit-area-height solid transparent;
|
175
177
|
border-bottom: $carousel-indicator-hit-area-height solid transparent;
|
176
|
-
opacity:
|
178
|
+
opacity: $carousel-indicator-opacity;
|
177
179
|
@include transition($carousel-indicator-transition);
|
178
180
|
}
|
179
181
|
|
180
182
|
.active {
|
181
|
-
opacity:
|
183
|
+
opacity: $carousel-indicator-active-opacity;
|
182
184
|
}
|
183
185
|
}
|
184
186
|
|
@@ -190,11 +192,35 @@
|
|
190
192
|
.carousel-caption {
|
191
193
|
position: absolute;
|
192
194
|
right: (100% - $carousel-caption-width) * .5;
|
193
|
-
bottom:
|
195
|
+
bottom: $carousel-caption-spacer;
|
194
196
|
left: (100% - $carousel-caption-width) * .5;
|
195
|
-
|
196
|
-
padding-
|
197
|
-
|
198
|
-
color: $carousel-caption-color;
|
197
|
+
padding-top: $carousel-caption-padding-y;
|
198
|
+
padding-bottom: $carousel-caption-padding-y;
|
199
|
+
color: var(--#{$prefix}carousel-caption-color);
|
199
200
|
text-align: center;
|
200
201
|
}
|
202
|
+
|
203
|
+
// Dark mode carousel
|
204
|
+
|
205
|
+
@mixin carousel-dark() {
|
206
|
+
--#{$prefix}carousel-indicator-active-bg: #{$carousel-indicator-active-bg-dark};
|
207
|
+
--#{$prefix}carousel-caption-color: #{$carousel-caption-color-dark};
|
208
|
+
--#{$prefix}carousel-control-icon-filter: #{$carousel-control-icon-filter-dark};
|
209
|
+
}
|
210
|
+
|
211
|
+
.carousel-dark {
|
212
|
+
@include carousel-dark();
|
213
|
+
}
|
214
|
+
|
215
|
+
:root,
|
216
|
+
[data-bs-theme="light"] {
|
217
|
+
--#{$prefix}carousel-indicator-active-bg: #{$carousel-indicator-active-bg};
|
218
|
+
--#{$prefix}carousel-caption-color: #{$carousel-caption-color};
|
219
|
+
--#{$prefix}carousel-control-icon-filter: #{$carousel-control-icon-filter};
|
220
|
+
}
|
221
|
+
|
222
|
+
@if $enable-dark-mode {
|
223
|
+
@include color-mode(dark, true) {
|
224
|
+
@include carousel-dark();
|
225
|
+
}
|
226
|
+
}
|
@@ -1,40 +1,66 @@
|
|
1
|
-
.
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
1
|
+
// Transparent background and border properties included for button version.
|
2
|
+
// iOS requires the button element instead of an anchor tag.
|
3
|
+
// If you want the anchor version, it requires `href="#"`.
|
4
|
+
// See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile
|
5
|
+
|
6
|
+
.btn-close {
|
7
|
+
// scss-docs-start close-css-vars
|
8
|
+
--#{$prefix}btn-close-color: #{$btn-close-color};
|
9
|
+
--#{$prefix}btn-close-bg: #{ escape-svg($btn-close-bg) };
|
10
|
+
--#{$prefix}btn-close-opacity: #{$btn-close-opacity};
|
11
|
+
--#{$prefix}btn-close-hover-opacity: #{$btn-close-hover-opacity};
|
12
|
+
--#{$prefix}btn-close-focus-shadow: #{$btn-close-focus-shadow};
|
13
|
+
--#{$prefix}btn-close-focus-opacity: #{$btn-close-focus-opacity};
|
14
|
+
--#{$prefix}btn-close-disabled-opacity: #{$btn-close-disabled-opacity};
|
15
|
+
// scss-docs-end close-css-vars
|
16
|
+
|
17
|
+
box-sizing: content-box;
|
18
|
+
width: $btn-close-width;
|
19
|
+
height: $btn-close-height;
|
20
|
+
padding: $btn-close-padding-y $btn-close-padding-x;
|
21
|
+
color: var(--#{$prefix}btn-close-color);
|
22
|
+
background: transparent var(--#{$prefix}btn-close-bg) center / $btn-close-width auto no-repeat; // include transparent for button elements
|
23
|
+
filter: var(--#{$prefix}btn-close-filter);
|
24
|
+
border: 0; // for button elements
|
25
|
+
@include border-radius();
|
26
|
+
opacity: var(--#{$prefix}btn-close-opacity);
|
9
27
|
|
10
28
|
// Override <a>'s hover style
|
11
|
-
|
12
|
-
color: $close-color;
|
29
|
+
&:hover {
|
30
|
+
color: var(--#{$prefix}btn-close-color);
|
13
31
|
text-decoration: none;
|
32
|
+
opacity: var(--#{$prefix}btn-close-hover-opacity);
|
33
|
+
}
|
34
|
+
|
35
|
+
&:focus {
|
36
|
+
outline: 0;
|
37
|
+
box-shadow: var(--#{$prefix}btn-close-focus-shadow);
|
38
|
+
opacity: var(--#{$prefix}btn-close-focus-opacity);
|
14
39
|
}
|
15
40
|
|
16
|
-
&:
|
17
|
-
|
18
|
-
|
19
|
-
|
41
|
+
&:disabled,
|
42
|
+
&.disabled {
|
43
|
+
pointer-events: none;
|
44
|
+
user-select: none;
|
45
|
+
opacity: var(--#{$prefix}btn-close-disabled-opacity);
|
20
46
|
}
|
21
47
|
}
|
22
48
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
// See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile
|
49
|
+
@mixin btn-close-white() {
|
50
|
+
--#{$prefix}btn-close-filter: #{$btn-close-filter-dark};
|
51
|
+
}
|
27
52
|
|
28
|
-
|
29
|
-
|
30
|
-
padding: 0;
|
31
|
-
background-color: transparent;
|
32
|
-
border: 0;
|
53
|
+
.btn-close-white {
|
54
|
+
@include btn-close-white();
|
33
55
|
}
|
34
56
|
|
35
|
-
|
57
|
+
:root,
|
58
|
+
[data-bs-theme="light"] {
|
59
|
+
--#{$prefix}btn-close-filter: #{$btn-close-filter};
|
60
|
+
}
|
36
61
|
|
37
|
-
|
38
|
-
|
39
|
-
|
62
|
+
@if $enable-dark-mode {
|
63
|
+
@include color-mode(dark, true) {
|
64
|
+
@include btn-close-white();
|
65
|
+
}
|
40
66
|
}
|
@@ -0,0 +1,41 @@
|
|
1
|
+
// Container widths
|
2
|
+
//
|
3
|
+
// Set the container width, and override it for fixed navbars in media queries.
|
4
|
+
|
5
|
+
@if $enable-container-classes {
|
6
|
+
// Single container class with breakpoint max-widths
|
7
|
+
.container,
|
8
|
+
// 100% wide container at all breakpoints
|
9
|
+
.container-fluid {
|
10
|
+
@include make-container();
|
11
|
+
}
|
12
|
+
|
13
|
+
// Responsive containers that are 100% wide until a breakpoint
|
14
|
+
@each $breakpoint, $container-max-width in $container-max-widths {
|
15
|
+
.container-#{$breakpoint} {
|
16
|
+
@extend .container-fluid;
|
17
|
+
}
|
18
|
+
|
19
|
+
@include media-breakpoint-up($breakpoint, $grid-breakpoints) {
|
20
|
+
%responsive-container-#{$breakpoint} {
|
21
|
+
max-width: $container-max-width;
|
22
|
+
}
|
23
|
+
|
24
|
+
// Extend each breakpoint which is smaller or equal to the current breakpoint
|
25
|
+
$extend-breakpoint: true;
|
26
|
+
|
27
|
+
@each $name, $width in $grid-breakpoints {
|
28
|
+
@if ($extend-breakpoint) {
|
29
|
+
.container#{breakpoint-infix($name, $grid-breakpoints)} {
|
30
|
+
@extend %responsive-container-#{$breakpoint};
|
31
|
+
}
|
32
|
+
|
33
|
+
// Once the current breakpoint is reached, stop extending
|
34
|
+
@if ($breakpoint == $name) {
|
35
|
+
$extend-breakpoint: false;
|
36
|
+
}
|
37
|
+
}
|
38
|
+
}
|
39
|
+
}
|
40
|
+
}
|
41
|
+
}
|
@@ -1,8 +1,10 @@
|
|
1
1
|
// The dropdown wrapper (`<div>`)
|
2
2
|
.dropup,
|
3
|
-
.
|
3
|
+
.dropend,
|
4
4
|
.dropdown,
|
5
|
-
.
|
5
|
+
.dropstart,
|
6
|
+
.dropup-center,
|
7
|
+
.dropdown-center {
|
6
8
|
position: relative;
|
7
9
|
}
|
8
10
|
|
@@ -15,50 +17,107 @@
|
|
15
17
|
|
16
18
|
// The dropdown menu
|
17
19
|
.dropdown-menu {
|
20
|
+
// scss-docs-start dropdown-css-vars
|
21
|
+
--#{$prefix}dropdown-zindex: #{$zindex-dropdown};
|
22
|
+
--#{$prefix}dropdown-min-width: #{$dropdown-min-width};
|
23
|
+
--#{$prefix}dropdown-padding-x: #{$dropdown-padding-x};
|
24
|
+
--#{$prefix}dropdown-padding-y: #{$dropdown-padding-y};
|
25
|
+
--#{$prefix}dropdown-spacer: #{$dropdown-spacer};
|
26
|
+
@include rfs($dropdown-font-size, --#{$prefix}dropdown-font-size);
|
27
|
+
--#{$prefix}dropdown-color: #{$dropdown-color};
|
28
|
+
--#{$prefix}dropdown-bg: #{$dropdown-bg};
|
29
|
+
--#{$prefix}dropdown-border-color: #{$dropdown-border-color};
|
30
|
+
--#{$prefix}dropdown-border-radius: #{$dropdown-border-radius};
|
31
|
+
--#{$prefix}dropdown-border-width: #{$dropdown-border-width};
|
32
|
+
--#{$prefix}dropdown-inner-border-radius: #{$dropdown-inner-border-radius};
|
33
|
+
--#{$prefix}dropdown-divider-bg: #{$dropdown-divider-bg};
|
34
|
+
--#{$prefix}dropdown-divider-margin-y: #{$dropdown-divider-margin-y};
|
35
|
+
--#{$prefix}dropdown-box-shadow: #{$dropdown-box-shadow};
|
36
|
+
--#{$prefix}dropdown-link-color: #{$dropdown-link-color};
|
37
|
+
--#{$prefix}dropdown-link-hover-color: #{$dropdown-link-hover-color};
|
38
|
+
--#{$prefix}dropdown-link-hover-bg: #{$dropdown-link-hover-bg};
|
39
|
+
--#{$prefix}dropdown-link-active-color: #{$dropdown-link-active-color};
|
40
|
+
--#{$prefix}dropdown-link-active-bg: #{$dropdown-link-active-bg};
|
41
|
+
--#{$prefix}dropdown-link-disabled-color: #{$dropdown-link-disabled-color};
|
42
|
+
--#{$prefix}dropdown-item-padding-x: #{$dropdown-item-padding-x};
|
43
|
+
--#{$prefix}dropdown-item-padding-y: #{$dropdown-item-padding-y};
|
44
|
+
--#{$prefix}dropdown-header-color: #{$dropdown-header-color};
|
45
|
+
--#{$prefix}dropdown-header-padding-x: #{$dropdown-header-padding-x};
|
46
|
+
--#{$prefix}dropdown-header-padding-y: #{$dropdown-header-padding-y};
|
47
|
+
// scss-docs-end dropdown-css-vars
|
48
|
+
|
18
49
|
position: absolute;
|
19
|
-
|
20
|
-
left: 0;
|
21
|
-
z-index: $zindex-dropdown;
|
50
|
+
z-index: var(--#{$prefix}dropdown-zindex);
|
22
51
|
display: none; // none by default, but block on "open" of the menu
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
color: $dropdown-color;
|
52
|
+
min-width: var(--#{$prefix}dropdown-min-width);
|
53
|
+
padding: var(--#{$prefix}dropdown-padding-y) var(--#{$prefix}dropdown-padding-x);
|
54
|
+
margin: 0; // Override default margin of ul
|
55
|
+
@include font-size(var(--#{$prefix}dropdown-font-size));
|
56
|
+
color: var(--#{$prefix}dropdown-color);
|
29
57
|
text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)
|
30
58
|
list-style: none;
|
31
|
-
background-color: $dropdown-bg;
|
59
|
+
background-color: var(--#{$prefix}dropdown-bg);
|
32
60
|
background-clip: padding-box;
|
33
|
-
border: $dropdown-border-width solid $dropdown-border-color;
|
34
|
-
@include border-radius($dropdown-border-radius);
|
35
|
-
@include box-shadow($dropdown-box-shadow);
|
61
|
+
border: var(--#{$prefix}dropdown-border-width) solid var(--#{$prefix}dropdown-border-color);
|
62
|
+
@include border-radius(var(--#{$prefix}dropdown-border-radius));
|
63
|
+
@include box-shadow(var(--#{$prefix}dropdown-box-shadow));
|
64
|
+
|
65
|
+
&[data-bs-popper] {
|
66
|
+
top: 100%;
|
67
|
+
left: 0;
|
68
|
+
margin-top: var(--#{$prefix}dropdown-spacer);
|
69
|
+
}
|
70
|
+
|
71
|
+
@if $dropdown-padding-y == 0 {
|
72
|
+
> .dropdown-item:first-child,
|
73
|
+
> li:first-child .dropdown-item {
|
74
|
+
@include border-top-radius(var(--#{$prefix}dropdown-inner-border-radius));
|
75
|
+
}
|
76
|
+
> .dropdown-item:last-child,
|
77
|
+
> li:last-child .dropdown-item {
|
78
|
+
@include border-bottom-radius(var(--#{$prefix}dropdown-inner-border-radius));
|
79
|
+
}
|
80
|
+
|
81
|
+
}
|
36
82
|
}
|
37
83
|
|
84
|
+
// scss-docs-start responsive-breakpoints
|
85
|
+
// We deliberately hardcode the `bs-` prefix because we check
|
86
|
+
// this custom property in JS to determine Popper's positioning
|
87
|
+
|
38
88
|
@each $breakpoint in map-keys($grid-breakpoints) {
|
39
89
|
@include media-breakpoint-up($breakpoint) {
|
40
90
|
$infix: breakpoint-infix($breakpoint, $grid-breakpoints);
|
41
91
|
|
42
|
-
.dropdown-menu#{$infix}-
|
43
|
-
|
44
|
-
|
92
|
+
.dropdown-menu#{$infix}-start {
|
93
|
+
--bs-position: start;
|
94
|
+
|
95
|
+
&[data-bs-popper] {
|
96
|
+
right: auto;
|
97
|
+
left: 0;
|
98
|
+
}
|
45
99
|
}
|
46
100
|
|
47
|
-
.dropdown-menu#{$infix}-
|
48
|
-
|
49
|
-
|
101
|
+
.dropdown-menu#{$infix}-end {
|
102
|
+
--bs-position: end;
|
103
|
+
|
104
|
+
&[data-bs-popper] {
|
105
|
+
right: 0;
|
106
|
+
left: auto;
|
107
|
+
}
|
50
108
|
}
|
51
109
|
}
|
52
110
|
}
|
111
|
+
// scss-docs-end responsive-breakpoints
|
53
112
|
|
54
113
|
// Allow for dropdowns to go bottom up (aka, dropup-menu)
|
55
114
|
// Just add .dropup after the standard .dropdown class and you're set.
|
56
115
|
.dropup {
|
57
|
-
.dropdown-menu {
|
116
|
+
.dropdown-menu[data-bs-popper] {
|
58
117
|
top: auto;
|
59
118
|
bottom: 100%;
|
60
119
|
margin-top: 0;
|
61
|
-
margin-bottom: $dropdown-spacer;
|
120
|
+
margin-bottom: var(--#{$prefix}dropdown-spacer);
|
62
121
|
}
|
63
122
|
|
64
123
|
.dropdown-toggle {
|
@@ -66,55 +125,48 @@
|
|
66
125
|
}
|
67
126
|
}
|
68
127
|
|
69
|
-
.
|
70
|
-
.dropdown-menu {
|
128
|
+
.dropend {
|
129
|
+
.dropdown-menu[data-bs-popper] {
|
71
130
|
top: 0;
|
72
131
|
right: auto;
|
73
132
|
left: 100%;
|
74
133
|
margin-top: 0;
|
75
|
-
margin-left: $dropdown-spacer;
|
134
|
+
margin-left: var(--#{$prefix}dropdown-spacer);
|
76
135
|
}
|
77
136
|
|
78
137
|
.dropdown-toggle {
|
79
|
-
@include caret(
|
138
|
+
@include caret(end);
|
80
139
|
&::after {
|
81
140
|
vertical-align: 0;
|
82
141
|
}
|
83
142
|
}
|
84
143
|
}
|
85
144
|
|
86
|
-
.
|
87
|
-
.dropdown-menu {
|
145
|
+
.dropstart {
|
146
|
+
.dropdown-menu[data-bs-popper] {
|
88
147
|
top: 0;
|
89
148
|
right: 100%;
|
90
149
|
left: auto;
|
91
150
|
margin-top: 0;
|
92
|
-
margin-right: $dropdown-spacer;
|
151
|
+
margin-right: var(--#{$prefix}dropdown-spacer);
|
93
152
|
}
|
94
153
|
|
95
154
|
.dropdown-toggle {
|
96
|
-
@include caret(
|
155
|
+
@include caret(start);
|
97
156
|
&::before {
|
98
157
|
vertical-align: 0;
|
99
158
|
}
|
100
159
|
}
|
101
160
|
}
|
102
161
|
|
103
|
-
// When Popper is enabled, reset the basic dropdown position
|
104
|
-
// stylelint-disable-next-line no-duplicate-selectors
|
105
|
-
.dropdown-menu {
|
106
|
-
&[x-placement^="top"],
|
107
|
-
&[x-placement^="right"],
|
108
|
-
&[x-placement^="bottom"],
|
109
|
-
&[x-placement^="left"] {
|
110
|
-
right: auto;
|
111
|
-
bottom: auto;
|
112
|
-
}
|
113
|
-
}
|
114
162
|
|
115
163
|
// Dividers (basically an `<hr>`) within the dropdown
|
116
164
|
.dropdown-divider {
|
117
|
-
|
165
|
+
height: 0;
|
166
|
+
margin: var(--#{$prefix}dropdown-divider-margin-y) 0;
|
167
|
+
overflow: hidden;
|
168
|
+
border-top: 1px solid var(--#{$prefix}dropdown-divider-bg);
|
169
|
+
opacity: 1; // Revisit in v6 to de-dupe styles that conflict with <hr> element
|
118
170
|
}
|
119
171
|
|
120
172
|
// Links, buttons, and more within the dropdown menu
|
@@ -123,50 +175,38 @@
|
|
123
175
|
.dropdown-item {
|
124
176
|
display: block;
|
125
177
|
width: 100%; // For `<button>`s
|
126
|
-
padding: $dropdown-item-padding-y $dropdown-item-padding-x;
|
178
|
+
padding: var(--#{$prefix}dropdown-item-padding-y) var(--#{$prefix}dropdown-item-padding-x);
|
127
179
|
clear: both;
|
128
180
|
font-weight: $font-weight-normal;
|
129
|
-
color: $dropdown-link-color;
|
181
|
+
color: var(--#{$prefix}dropdown-link-color);
|
130
182
|
text-align: inherit; // For `<button>`s
|
131
183
|
text-decoration: if($link-decoration == none, null, none);
|
132
184
|
white-space: nowrap; // prevent links from randomly breaking onto new lines
|
133
185
|
background-color: transparent; // For `<button>`s
|
134
186
|
border: 0; // For `<button>`s
|
187
|
+
@include border-radius(var(--#{$prefix}dropdown-item-border-radius, 0));
|
135
188
|
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
}
|
142
|
-
|
143
|
-
&:last-child {
|
144
|
-
@include border-bottom-radius($dropdown-inner-border-radius);
|
145
|
-
}
|
146
|
-
}
|
147
|
-
|
148
|
-
@include hover-focus() {
|
149
|
-
color: $dropdown-link-hover-color;
|
150
|
-
text-decoration: none;
|
151
|
-
@include gradient-bg($dropdown-link-hover-bg);
|
189
|
+
&:hover,
|
190
|
+
&:focus {
|
191
|
+
color: var(--#{$prefix}dropdown-link-hover-color);
|
192
|
+
text-decoration: if($link-hover-decoration == underline, none, null);
|
193
|
+
@include gradient-bg(var(--#{$prefix}dropdown-link-hover-bg));
|
152
194
|
}
|
153
195
|
|
154
196
|
&.active,
|
155
197
|
&:active {
|
156
|
-
color: $dropdown-link-active-color;
|
198
|
+
color: var(--#{$prefix}dropdown-link-active-color);
|
157
199
|
text-decoration: none;
|
158
|
-
@include gradient-bg($dropdown-link-active-bg);
|
200
|
+
@include gradient-bg(var(--#{$prefix}dropdown-link-active-bg));
|
159
201
|
}
|
160
202
|
|
161
203
|
&.disabled,
|
162
204
|
&:disabled {
|
163
|
-
color: $dropdown-link-disabled-color;
|
205
|
+
color: var(--#{$prefix}dropdown-link-disabled-color);
|
164
206
|
pointer-events: none;
|
165
207
|
background-color: transparent;
|
166
208
|
// Remove CSS gradients if they're enabled
|
167
|
-
|
168
|
-
background-image: none;
|
169
|
-
}
|
209
|
+
background-image: if($enable-gradients, none, null);
|
170
210
|
}
|
171
211
|
}
|
172
212
|
|
@@ -177,16 +217,34 @@
|
|
177
217
|
// Dropdown section headers
|
178
218
|
.dropdown-header {
|
179
219
|
display: block;
|
180
|
-
padding: $dropdown-header-padding;
|
220
|
+
padding: var(--#{$prefix}dropdown-header-padding-y) var(--#{$prefix}dropdown-header-padding-x);
|
181
221
|
margin-bottom: 0; // for use with heading elements
|
182
222
|
@include font-size($font-size-sm);
|
183
|
-
color: $dropdown-header-color;
|
223
|
+
color: var(--#{$prefix}dropdown-header-color);
|
184
224
|
white-space: nowrap; // as with > li > a
|
185
225
|
}
|
186
226
|
|
187
227
|
// Dropdown text
|
188
228
|
.dropdown-item-text {
|
189
229
|
display: block;
|
190
|
-
padding: $dropdown-item-padding-y $dropdown-item-padding-x;
|
191
|
-
color: $dropdown-link-color;
|
230
|
+
padding: var(--#{$prefix}dropdown-item-padding-y) var(--#{$prefix}dropdown-item-padding-x);
|
231
|
+
color: var(--#{$prefix}dropdown-link-color);
|
232
|
+
}
|
233
|
+
|
234
|
+
// Dark dropdowns
|
235
|
+
.dropdown-menu-dark {
|
236
|
+
// scss-docs-start dropdown-dark-css-vars
|
237
|
+
--#{$prefix}dropdown-color: #{$dropdown-dark-color};
|
238
|
+
--#{$prefix}dropdown-bg: #{$dropdown-dark-bg};
|
239
|
+
--#{$prefix}dropdown-border-color: #{$dropdown-dark-border-color};
|
240
|
+
--#{$prefix}dropdown-box-shadow: #{$dropdown-dark-box-shadow};
|
241
|
+
--#{$prefix}dropdown-link-color: #{$dropdown-dark-link-color};
|
242
|
+
--#{$prefix}dropdown-link-hover-color: #{$dropdown-dark-link-hover-color};
|
243
|
+
--#{$prefix}dropdown-divider-bg: #{$dropdown-dark-divider-bg};
|
244
|
+
--#{$prefix}dropdown-link-hover-bg: #{$dropdown-dark-link-hover-bg};
|
245
|
+
--#{$prefix}dropdown-link-active-color: #{$dropdown-dark-link-active-color};
|
246
|
+
--#{$prefix}dropdown-link-active-bg: #{$dropdown-dark-link-active-bg};
|
247
|
+
--#{$prefix}dropdown-link-disabled-color: #{$dropdown-dark-link-disabled-color};
|
248
|
+
--#{$prefix}dropdown-header-color: #{$dropdown-dark-header-color};
|
249
|
+
// scss-docs-end dropdown-dark-css-vars
|
192
250
|
}
|