bootstrap 4.6.1 → 5.0.0
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/.travis.yml +2 -1
- data/README.md +7 -4
- data/assets/javascripts/bootstrap/alert.js +192 -112
- data/assets/javascripts/bootstrap/base-component.js +63 -0
- data/assets/javascripts/bootstrap/button.js +96 -176
- data/assets/javascripts/bootstrap/carousel.js +470 -355
- data/assets/javascripts/bootstrap/collapse.js +377 -221
- data/assets/javascripts/bootstrap/dom/data.js +68 -0
- data/assets/javascripts/bootstrap/dom/event-handler.js +322 -0
- data/assets/javascripts/bootstrap/dom/manipulator.js +88 -0
- data/assets/javascripts/bootstrap/dom/selector-engine.js +85 -0
- data/assets/javascripts/bootstrap/dropdown.js +470 -351
- data/assets/javascripts/bootstrap/modal.js +611 -435
- data/assets/javascripts/bootstrap/offcanvas.js +671 -0
- data/assets/javascripts/bootstrap/popover.js +137 -165
- data/assets/javascripts/bootstrap/scrollspy.js +249 -191
- data/assets/javascripts/bootstrap/tab.js +241 -141
- data/assets/javascripts/bootstrap/toast.js +221 -153
- data/assets/javascripts/bootstrap/tooltip.js +649 -483
- 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 +14 -7
- data/assets/javascripts/bootstrap.js +3272 -2586
- data/assets/javascripts/bootstrap.min.js +2 -2
- data/assets/stylesheets/_bootstrap-grid.scss +51 -16
- data/assets/stylesheets/_bootstrap-reboot.scss +4 -1
- data/assets/stylesheets/_bootstrap.scss +16 -8
- data/assets/stylesheets/bootstrap/_accordion.scss +118 -0
- data/assets/stylesheets/bootstrap/_alert.scss +15 -10
- data/assets/stylesheets/bootstrap/_badge.scss +2 -27
- data/assets/stylesheets/bootstrap/_breadcrumb.scss +3 -17
- data/assets/stylesheets/bootstrap/_button-group.scss +21 -45
- data/assets/stylesheets/bootstrap/_buttons.scss +29 -60
- data/assets/stylesheets/bootstrap/_card.scss +20 -91
- data/assets/stylesheets/bootstrap/_carousel.scss +64 -35
- data/assets/stylesheets/bootstrap/_close.scss +30 -30
- data/assets/stylesheets/bootstrap/_containers.scss +41 -0
- data/assets/stylesheets/bootstrap/_dropdown.scss +84 -36
- data/assets/stylesheets/bootstrap/_forms.scss +9 -347
- data/assets/stylesheets/bootstrap/_functions.scss +84 -69
- data/assets/stylesheets/bootstrap/_grid.scss +3 -54
- data/assets/stylesheets/bootstrap/_helpers.scss +7 -0
- data/assets/stylesheets/bootstrap/_images.scss +1 -1
- data/assets/stylesheets/bootstrap/_list-group.scss +28 -8
- data/assets/stylesheets/bootstrap/_mixins.scss +8 -13
- data/assets/stylesheets/bootstrap/_modal.scss +45 -57
- data/assets/stylesheets/bootstrap/_nav.scss +23 -4
- data/assets/stylesheets/bootstrap/_navbar.scss +45 -71
- data/assets/stylesheets/bootstrap/_offcanvas.scss +77 -0
- data/assets/stylesheets/bootstrap/_pagination.scss +10 -20
- data/assets/stylesheets/bootstrap/_popover.scss +24 -36
- data/assets/stylesheets/bootstrap/_progress.scss +5 -4
- data/assets/stylesheets/bootstrap/_reboot.scss +316 -179
- data/assets/stylesheets/bootstrap/_root.scss +5 -8
- data/assets/stylesheets/bootstrap/_spinners.scss +9 -5
- data/assets/stylesheets/bootstrap/_tables.scss +79 -114
- data/assets/stylesheets/bootstrap/_toasts.scss +20 -15
- data/assets/stylesheets/bootstrap/_tooltip.scss +21 -21
- data/assets/stylesheets/bootstrap/_transitions.scss +2 -1
- data/assets/stylesheets/bootstrap/_type.scss +38 -59
- data/assets/stylesheets/bootstrap/_utilities.scss +594 -18
- data/assets/stylesheets/bootstrap/_variables.scss +801 -485
- data/assets/stylesheets/bootstrap/bootstrap-utilities.scss +18 -0
- data/assets/stylesheets/bootstrap/forms/_floating-labels.scss +61 -0
- data/assets/stylesheets/bootstrap/forms/_form-check.scss +152 -0
- data/assets/stylesheets/bootstrap/forms/_form-control.scss +219 -0
- data/assets/stylesheets/bootstrap/forms/_form-range.scss +91 -0
- data/assets/stylesheets/bootstrap/forms/_form-select.scss +67 -0
- data/assets/stylesheets/bootstrap/forms/_form-text.scss +11 -0
- data/assets/stylesheets/bootstrap/forms/_input-group.scss +121 -0
- data/assets/stylesheets/bootstrap/forms/_labels.scss +36 -0
- data/assets/stylesheets/bootstrap/forms/_validation.scss +12 -0
- data/assets/stylesheets/bootstrap/{utilities → helpers}/_clearfix.scss +0 -0
- data/assets/stylesheets/bootstrap/helpers/_colored-links.scss +12 -0
- data/assets/stylesheets/bootstrap/helpers/_position.scss +30 -0
- data/assets/stylesheets/bootstrap/helpers/_ratio.scss +26 -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/mixins/_alert.scss +3 -5
- 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 +14 -10
- data/assets/stylesheets/bootstrap/mixins/_buttons.scss +71 -48
- data/assets/stylesheets/bootstrap/mixins/_caret.scss +10 -8
- data/assets/stylesheets/bootstrap/mixins/_clearfix.scss +2 -0
- data/assets/stylesheets/bootstrap/mixins/_color-scheme.scss +7 -0
- data/assets/stylesheets/bootstrap/mixins/_container.scss +9 -0
- data/assets/stylesheets/bootstrap/mixins/_forms.scss +39 -97
- data/assets/stylesheets/bootstrap/mixins/_gradients.scss +13 -11
- data/assets/stylesheets/bootstrap/mixins/_grid.scss +90 -34
- data/assets/stylesheets/bootstrap/mixins/_image.scss +1 -21
- data/assets/stylesheets/bootstrap/mixins/_list-group.scss +5 -2
- data/assets/stylesheets/bootstrap/mixins/_lists.scss +1 -1
- data/assets/stylesheets/bootstrap/mixins/_pagination.scss +17 -8
- data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +2 -2
- data/assets/stylesheets/bootstrap/mixins/_table-variants.scss +21 -0
- data/assets/stylesheets/bootstrap/mixins/_transition.scss +1 -1
- data/assets/stylesheets/bootstrap/mixins/_utilities.scss +68 -0
- data/assets/stylesheets/bootstrap/mixins/_visually-hidden.scss +29 -0
- data/assets/stylesheets/bootstrap/utilities/_api.scss +47 -0
- data/assets/stylesheets/bootstrap/vendor/_rfs.scss +214 -130
- data/bootstrap.gemspec +1 -3
- data/lib/bootstrap/version.rb +2 -2
- data/tasks/updater/js.rb +20 -5
- data/tasks/updater/network.rb +7 -1
- 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 -3
- data/test/gemfiles/rails_6_1.gemfile +7 -0
- metadata +45 -73
- 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
|
@@ -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,16 +42,19 @@
|
|
|
42
42
|
display: block;
|
|
43
43
|
}
|
|
44
44
|
|
|
45
|
-
|
|
46
|
-
.
|
|
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-
|
|
51
|
-
.active.carousel-item-
|
|
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-
|
|
69
|
-
.carousel-item-prev.carousel-item-
|
|
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-
|
|
75
|
-
.active.carousel-item-
|
|
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);
|
|
@@ -104,7 +107,8 @@
|
|
|
104
107
|
@include transition($carousel-control-transition);
|
|
105
108
|
|
|
106
109
|
// Hover/focus state
|
|
107
|
-
|
|
110
|
+
&:hover,
|
|
111
|
+
&:focus {
|
|
108
112
|
color: $carousel-control-color;
|
|
109
113
|
text-decoration: none;
|
|
110
114
|
outline: 0;
|
|
@@ -113,15 +117,11 @@
|
|
|
113
117
|
}
|
|
114
118
|
.carousel-control-prev {
|
|
115
119
|
left: 0;
|
|
116
|
-
|
|
117
|
-
background-image: linear-gradient(90deg, rgba($black, .25), rgba($black, .001));
|
|
118
|
-
}
|
|
120
|
+
background-image: if($enable-gradients, linear-gradient(90deg, rgba($black, .25), rgba($black, .001)), null);
|
|
119
121
|
}
|
|
120
122
|
.carousel-control-next {
|
|
121
123
|
right: 0;
|
|
122
|
-
|
|
123
|
-
background-image: linear-gradient(270deg, rgba($black, .25), rgba($black, .001));
|
|
124
|
-
}
|
|
124
|
+
background-image: if($enable-gradients, linear-gradient(270deg, rgba($black, .25), rgba($black, .001)), null);
|
|
125
125
|
}
|
|
126
126
|
|
|
127
127
|
// Icons for within
|
|
@@ -130,8 +130,19 @@
|
|
|
130
130
|
display: inline-block;
|
|
131
131
|
width: $carousel-control-icon-width;
|
|
132
132
|
height: $carousel-control-icon-width;
|
|
133
|
-
background:
|
|
134
|
-
|
|
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
|
+
} */
|
|
135
146
|
.carousel-control-prev-icon {
|
|
136
147
|
background-image: escape-svg($carousel-control-prev-icon-bg);
|
|
137
148
|
}
|
|
@@ -139,46 +150,48 @@
|
|
|
139
150
|
background-image: escape-svg($carousel-control-next-icon-bg);
|
|
140
151
|
}
|
|
141
152
|
|
|
142
|
-
|
|
143
|
-
// Optional indicator pips
|
|
153
|
+
// Optional indicator pips/controls
|
|
144
154
|
//
|
|
145
|
-
// Add
|
|
146
|
-
// 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.
|
|
147
157
|
|
|
148
158
|
.carousel-indicators {
|
|
149
159
|
position: absolute;
|
|
150
160
|
right: 0;
|
|
151
161
|
bottom: 0;
|
|
152
162
|
left: 0;
|
|
153
|
-
z-index:
|
|
163
|
+
z-index: 2;
|
|
154
164
|
display: flex;
|
|
155
165
|
justify-content: center;
|
|
156
|
-
padding
|
|
166
|
+
padding: 0;
|
|
157
167
|
// Use the .carousel-control's width as margin so we don't overlay those
|
|
158
168
|
margin-right: $carousel-control-width;
|
|
169
|
+
margin-bottom: 1rem;
|
|
159
170
|
margin-left: $carousel-control-width;
|
|
160
171
|
list-style: none;
|
|
161
172
|
|
|
162
|
-
|
|
173
|
+
[data-bs-target] {
|
|
163
174
|
box-sizing: content-box;
|
|
164
175
|
flex: 0 1 auto;
|
|
165
176
|
width: $carousel-indicator-width;
|
|
166
177
|
height: $carousel-indicator-height;
|
|
178
|
+
padding: 0;
|
|
167
179
|
margin-right: $carousel-indicator-spacer;
|
|
168
180
|
margin-left: $carousel-indicator-spacer;
|
|
169
181
|
text-indent: -999px;
|
|
170
182
|
cursor: pointer;
|
|
171
183
|
background-color: $carousel-indicator-active-bg;
|
|
172
184
|
background-clip: padding-box;
|
|
185
|
+
border: 0;
|
|
173
186
|
// Use transparent borders to increase the hit area by 10px on top and bottom.
|
|
174
187
|
border-top: $carousel-indicator-hit-area-height solid transparent;
|
|
175
188
|
border-bottom: $carousel-indicator-hit-area-height solid transparent;
|
|
176
|
-
opacity:
|
|
189
|
+
opacity: $carousel-indicator-opacity;
|
|
177
190
|
@include transition($carousel-indicator-transition);
|
|
178
191
|
}
|
|
179
192
|
|
|
180
193
|
.active {
|
|
181
|
-
opacity:
|
|
194
|
+
opacity: $carousel-indicator-active-opacity;
|
|
182
195
|
}
|
|
183
196
|
}
|
|
184
197
|
|
|
@@ -189,12 +202,28 @@
|
|
|
189
202
|
|
|
190
203
|
.carousel-caption {
|
|
191
204
|
position: absolute;
|
|
192
|
-
right: (100% - $carousel-caption-width)
|
|
193
|
-
bottom:
|
|
194
|
-
left: (100% - $carousel-caption-width)
|
|
195
|
-
|
|
196
|
-
padding-
|
|
197
|
-
padding-bottom: 20px;
|
|
205
|
+
right: (100% - $carousel-caption-width) / 2;
|
|
206
|
+
bottom: $carousel-caption-spacer;
|
|
207
|
+
left: (100% - $carousel-caption-width) / 2;
|
|
208
|
+
padding-top: $carousel-caption-padding-y;
|
|
209
|
+
padding-bottom: $carousel-caption-padding-y;
|
|
198
210
|
color: $carousel-caption-color;
|
|
199
211
|
text-align: center;
|
|
200
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
|
+
}
|
|
@@ -1,40 +1,40 @@
|
|
|
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
|
+
box-sizing: content-box;
|
|
8
|
+
width: $btn-close-width;
|
|
9
|
+
height: $btn-close-height;
|
|
10
|
+
padding: $btn-close-padding-y $btn-close-padding-x;
|
|
11
|
+
color: $btn-close-color;
|
|
12
|
+
background: transparent escape-svg($btn-close-bg) center / $btn-close-width auto no-repeat; // include transparent for button elements
|
|
13
|
+
border: 0; // for button elements
|
|
14
|
+
@include border-radius();
|
|
15
|
+
opacity: $btn-close-opacity;
|
|
9
16
|
|
|
10
17
|
// Override <a>'s hover style
|
|
11
|
-
|
|
12
|
-
color: $close-color;
|
|
18
|
+
&:hover {
|
|
19
|
+
color: $btn-close-color;
|
|
13
20
|
text-decoration: none;
|
|
21
|
+
opacity: $btn-close-hover-opacity;
|
|
14
22
|
}
|
|
15
23
|
|
|
16
|
-
&:
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
24
|
+
&:focus {
|
|
25
|
+
outline: 0;
|
|
26
|
+
box-shadow: $btn-close-focus-shadow;
|
|
27
|
+
opacity: $btn-close-focus-opacity;
|
|
20
28
|
}
|
|
21
|
-
}
|
|
22
29
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
button.close {
|
|
30
|
-
padding: 0;
|
|
31
|
-
background-color: transparent;
|
|
32
|
-
border: 0;
|
|
30
|
+
&:disabled,
|
|
31
|
+
&.disabled {
|
|
32
|
+
pointer-events: none;
|
|
33
|
+
user-select: none;
|
|
34
|
+
opacity: $btn-close-disabled-opacity;
|
|
35
|
+
}
|
|
33
36
|
}
|
|
34
37
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
// stylelint-disable-next-line selector-no-qualifying-type
|
|
38
|
-
a.close.disabled {
|
|
39
|
-
pointer-events: none;
|
|
38
|
+
.btn-close-white {
|
|
39
|
+
filter: $btn-close-white-filter;
|
|
40
40
|
}
|
|
@@ -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-grid-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,8 @@
|
|
|
1
1
|
// The dropdown wrapper (`<div>`)
|
|
2
2
|
.dropup,
|
|
3
|
-
.
|
|
3
|
+
.dropend,
|
|
4
4
|
.dropdown,
|
|
5
|
-
.
|
|
5
|
+
.dropstart {
|
|
6
6
|
position: relative;
|
|
7
7
|
}
|
|
8
8
|
|
|
@@ -16,14 +16,11 @@
|
|
|
16
16
|
// The dropdown menu
|
|
17
17
|
.dropdown-menu {
|
|
18
18
|
position: absolute;
|
|
19
|
-
top: 100%;
|
|
20
|
-
left: 0;
|
|
21
19
|
z-index: $zindex-dropdown;
|
|
22
20
|
display: none; // none by default, but block on "open" of the menu
|
|
23
|
-
float: left;
|
|
24
21
|
min-width: $dropdown-min-width;
|
|
25
22
|
padding: $dropdown-padding-y $dropdown-padding-x;
|
|
26
|
-
margin:
|
|
23
|
+
margin: 0; // Override default margin of ul
|
|
27
24
|
@include font-size($dropdown-font-size);
|
|
28
25
|
color: $dropdown-color;
|
|
29
26
|
text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)
|
|
@@ -33,28 +30,47 @@
|
|
|
33
30
|
border: $dropdown-border-width solid $dropdown-border-color;
|
|
34
31
|
@include border-radius($dropdown-border-radius);
|
|
35
32
|
@include box-shadow($dropdown-box-shadow);
|
|
33
|
+
|
|
34
|
+
&[data-bs-popper] {
|
|
35
|
+
top: 100%;
|
|
36
|
+
left: 0;
|
|
37
|
+
margin-top: $dropdown-spacer;
|
|
38
|
+
}
|
|
36
39
|
}
|
|
37
40
|
|
|
41
|
+
// scss-docs-start responsive-breakpoints
|
|
42
|
+
// We deliberately hardcode the `bs-` prefix because we check
|
|
43
|
+
// this custom property in JS to determine Popper's positioning
|
|
44
|
+
|
|
38
45
|
@each $breakpoint in map-keys($grid-breakpoints) {
|
|
39
46
|
@include media-breakpoint-up($breakpoint) {
|
|
40
47
|
$infix: breakpoint-infix($breakpoint, $grid-breakpoints);
|
|
41
48
|
|
|
42
|
-
.dropdown-menu#{$infix}-
|
|
43
|
-
|
|
44
|
-
|
|
49
|
+
.dropdown-menu#{$infix}-start {
|
|
50
|
+
--bs-position: start;
|
|
51
|
+
|
|
52
|
+
&[data-bs-popper] {
|
|
53
|
+
right: auto #{"/* rtl:ignore */"};
|
|
54
|
+
left: 0 #{"/* rtl:ignore */"};
|
|
55
|
+
}
|
|
45
56
|
}
|
|
46
57
|
|
|
47
|
-
.dropdown-menu#{$infix}-
|
|
48
|
-
|
|
49
|
-
|
|
58
|
+
.dropdown-menu#{$infix}-end {
|
|
59
|
+
--bs-position: end;
|
|
60
|
+
|
|
61
|
+
&[data-bs-popper] {
|
|
62
|
+
right: 0 #{"/* rtl:ignore */"};
|
|
63
|
+
left: auto #{"/* rtl:ignore */"};
|
|
64
|
+
}
|
|
50
65
|
}
|
|
51
66
|
}
|
|
52
67
|
}
|
|
68
|
+
// scss-docs-end responsive-breakpoints
|
|
53
69
|
|
|
54
70
|
// Allow for dropdowns to go bottom up (aka, dropup-menu)
|
|
55
71
|
// Just add .dropup after the standard .dropdown class and you're set.
|
|
56
72
|
.dropup {
|
|
57
|
-
.dropdown-menu {
|
|
73
|
+
.dropdown-menu[data-bs-popper] {
|
|
58
74
|
top: auto;
|
|
59
75
|
bottom: 100%;
|
|
60
76
|
margin-top: 0;
|
|
@@ -66,8 +82,8 @@
|
|
|
66
82
|
}
|
|
67
83
|
}
|
|
68
84
|
|
|
69
|
-
.
|
|
70
|
-
.dropdown-menu {
|
|
85
|
+
.dropend {
|
|
86
|
+
.dropdown-menu[data-bs-popper] {
|
|
71
87
|
top: 0;
|
|
72
88
|
right: auto;
|
|
73
89
|
left: 100%;
|
|
@@ -76,15 +92,15 @@
|
|
|
76
92
|
}
|
|
77
93
|
|
|
78
94
|
.dropdown-toggle {
|
|
79
|
-
@include caret(
|
|
95
|
+
@include caret(end);
|
|
80
96
|
&::after {
|
|
81
97
|
vertical-align: 0;
|
|
82
98
|
}
|
|
83
99
|
}
|
|
84
100
|
}
|
|
85
101
|
|
|
86
|
-
.
|
|
87
|
-
.dropdown-menu {
|
|
102
|
+
.dropstart {
|
|
103
|
+
.dropdown-menu[data-bs-popper] {
|
|
88
104
|
top: 0;
|
|
89
105
|
right: 100%;
|
|
90
106
|
left: auto;
|
|
@@ -93,28 +109,20 @@
|
|
|
93
109
|
}
|
|
94
110
|
|
|
95
111
|
.dropdown-toggle {
|
|
96
|
-
@include caret(
|
|
112
|
+
@include caret(start);
|
|
97
113
|
&::before {
|
|
98
114
|
vertical-align: 0;
|
|
99
115
|
}
|
|
100
116
|
}
|
|
101
117
|
}
|
|
102
118
|
|
|
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
119
|
|
|
115
120
|
// Dividers (basically an `<hr>`) within the dropdown
|
|
116
121
|
.dropdown-divider {
|
|
117
|
-
|
|
122
|
+
height: 0;
|
|
123
|
+
margin: $dropdown-divider-margin-y 0;
|
|
124
|
+
overflow: hidden;
|
|
125
|
+
border-top: 1px solid $dropdown-divider-bg;
|
|
118
126
|
}
|
|
119
127
|
|
|
120
128
|
// Links, buttons, and more within the dropdown menu
|
|
@@ -145,9 +153,10 @@
|
|
|
145
153
|
}
|
|
146
154
|
}
|
|
147
155
|
|
|
148
|
-
|
|
156
|
+
&:hover,
|
|
157
|
+
&:focus {
|
|
149
158
|
color: $dropdown-link-hover-color;
|
|
150
|
-
text-decoration: none;
|
|
159
|
+
text-decoration: if($link-hover-decoration == underline, none, null);
|
|
151
160
|
@include gradient-bg($dropdown-link-hover-bg);
|
|
152
161
|
}
|
|
153
162
|
|
|
@@ -164,9 +173,7 @@
|
|
|
164
173
|
pointer-events: none;
|
|
165
174
|
background-color: transparent;
|
|
166
175
|
// Remove CSS gradients if they're enabled
|
|
167
|
-
|
|
168
|
-
background-image: none;
|
|
169
|
-
}
|
|
176
|
+
background-image: if($enable-gradients, none, null);
|
|
170
177
|
}
|
|
171
178
|
}
|
|
172
179
|
|
|
@@ -190,3 +197,44 @@
|
|
|
190
197
|
padding: $dropdown-item-padding-y $dropdown-item-padding-x;
|
|
191
198
|
color: $dropdown-link-color;
|
|
192
199
|
}
|
|
200
|
+
|
|
201
|
+
// Dark dropdowns
|
|
202
|
+
.dropdown-menu-dark {
|
|
203
|
+
color: $dropdown-dark-color;
|
|
204
|
+
background-color: $dropdown-dark-bg;
|
|
205
|
+
border-color: $dropdown-dark-border-color;
|
|
206
|
+
@include box-shadow($dropdown-dark-box-shadow);
|
|
207
|
+
|
|
208
|
+
.dropdown-item {
|
|
209
|
+
color: $dropdown-dark-link-color;
|
|
210
|
+
|
|
211
|
+
&:hover,
|
|
212
|
+
&:focus {
|
|
213
|
+
color: $dropdown-dark-link-hover-color;
|
|
214
|
+
@include gradient-bg($dropdown-dark-link-hover-bg);
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
&.active,
|
|
218
|
+
&:active {
|
|
219
|
+
color: $dropdown-dark-link-active-color;
|
|
220
|
+
@include gradient-bg($dropdown-dark-link-active-bg);
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
&.disabled,
|
|
224
|
+
&:disabled {
|
|
225
|
+
color: $dropdown-dark-link-disabled-color;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
.dropdown-divider {
|
|
230
|
+
border-color: $dropdown-dark-divider-bg;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
.dropdown-item-text {
|
|
234
|
+
color: $dropdown-dark-link-color;
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
.dropdown-header {
|
|
238
|
+
color: $dropdown-dark-header-color;
|
|
239
|
+
}
|
|
240
|
+
}
|