bootstrap 4.3.0 → 5.0.0.alpha1

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 (139) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +15 -1
  3. data/CHANGELOG.md +2 -14
  4. data/README.md +1 -1
  5. data/assets/javascripts/bootstrap-sprockets.js +5 -1
  6. data/assets/javascripts/bootstrap.js +2292 -1514
  7. data/assets/javascripts/bootstrap.min.js +4 -4
  8. data/assets/javascripts/bootstrap/alert.js +148 -85
  9. data/assets/javascripts/bootstrap/button.js +69 -110
  10. data/assets/javascripts/bootstrap/carousel.js +320 -239
  11. data/assets/javascripts/bootstrap/collapse.js +300 -177
  12. data/assets/javascripts/bootstrap/dom/data.js +81 -0
  13. data/assets/javascripts/bootstrap/dom/event-handler.js +311 -0
  14. data/assets/javascripts/bootstrap/dom/manipulator.js +100 -0
  15. data/assets/javascripts/bootstrap/dom/polyfill.js +110 -0
  16. data/assets/javascripts/bootstrap/dom/selector-engine.js +98 -0
  17. data/assets/javascripts/bootstrap/dropdown.js +282 -265
  18. data/assets/javascripts/bootstrap/modal.js +348 -231
  19. data/assets/javascripts/bootstrap/popover.js +80 -105
  20. data/assets/javascripts/bootstrap/scrollspy.js +173 -138
  21. data/assets/javascripts/bootstrap/tab.js +180 -115
  22. data/assets/javascripts/bootstrap/toast.js +188 -132
  23. data/assets/javascripts/bootstrap/tooltip.js +508 -230
  24. data/assets/stylesheets/_bootstrap-grid.scss +54 -18
  25. data/assets/stylesheets/_bootstrap-reboot.scss +7 -4
  26. data/assets/stylesheets/_bootstrap.scss +17 -11
  27. data/assets/stylesheets/bootstrap/_alert.scss +3 -3
  28. data/assets/stylesheets/bootstrap/_badge.scss +2 -27
  29. data/assets/stylesheets/bootstrap/_breadcrumb.scss +7 -18
  30. data/assets/stylesheets/bootstrap/_button-group.scss +16 -38
  31. data/assets/stylesheets/bootstrap/_buttons.scss +26 -39
  32. data/assets/stylesheets/bootstrap/_card.scss +48 -97
  33. data/assets/stylesheets/bootstrap/_carousel.scss +16 -18
  34. data/assets/stylesheets/bootstrap/_close.scss +9 -14
  35. data/assets/stylesheets/bootstrap/_containers.scss +41 -0
  36. data/assets/stylesheets/bootstrap/_dropdown.scss +13 -9
  37. data/assets/stylesheets/bootstrap/_forms.scss +9 -330
  38. data/assets/stylesheets/bootstrap/_functions.scss +141 -24
  39. data/assets/stylesheets/bootstrap/_grid.scss +4 -34
  40. data/assets/stylesheets/bootstrap/_helpers.scss +7 -0
  41. data/assets/stylesheets/bootstrap/_images.scss +2 -2
  42. data/assets/stylesheets/bootstrap/_list-group.scss +41 -33
  43. data/assets/stylesheets/bootstrap/_mixins.scss +9 -15
  44. data/assets/stylesheets/bootstrap/_modal.scss +54 -48
  45. data/assets/stylesheets/bootstrap/_nav.scss +12 -9
  46. data/assets/stylesheets/bootstrap/_navbar.scss +54 -56
  47. data/assets/stylesheets/bootstrap/_pagination.scss +10 -22
  48. data/assets/stylesheets/bootstrap/_popover.scss +13 -14
  49. data/assets/stylesheets/bootstrap/_progress.scss +6 -4
  50. data/assets/stylesheets/bootstrap/_reboot.scss +318 -185
  51. data/assets/stylesheets/bootstrap/_root.scss +5 -8
  52. data/assets/stylesheets/bootstrap/_spinners.scss +3 -2
  53. data/assets/stylesheets/bootstrap/_tables.scss +80 -114
  54. data/assets/stylesheets/bootstrap/_tooltip.scss +5 -5
  55. data/assets/stylesheets/bootstrap/_transitions.scss +0 -1
  56. data/assets/stylesheets/bootstrap/_type.scss +40 -61
  57. data/assets/stylesheets/bootstrap/_utilities.scss +503 -17
  58. data/assets/stylesheets/bootstrap/_variables.scss +567 -430
  59. data/assets/stylesheets/bootstrap/bootstrap-utilities.scss +18 -0
  60. data/assets/stylesheets/bootstrap/forms/_form-check.scss +142 -0
  61. data/assets/stylesheets/bootstrap/forms/_form-control.scss +116 -0
  62. data/assets/stylesheets/bootstrap/forms/_form-file.scss +91 -0
  63. data/assets/stylesheets/bootstrap/forms/_form-range.scss +136 -0
  64. data/assets/stylesheets/bootstrap/forms/_form-select.scss +82 -0
  65. data/assets/stylesheets/bootstrap/forms/_form-text.scss +11 -0
  66. data/assets/stylesheets/bootstrap/forms/_input-group.scss +140 -0
  67. data/assets/stylesheets/bootstrap/forms/_labels.scss +36 -0
  68. data/assets/stylesheets/bootstrap/forms/_validation.scss +12 -0
  69. data/assets/stylesheets/bootstrap/{utilities → helpers}/_clearfix.scss +0 -0
  70. data/assets/stylesheets/bootstrap/helpers/_colored-links.scss +12 -0
  71. data/assets/stylesheets/bootstrap/helpers/_embed.scss +31 -0
  72. data/assets/stylesheets/bootstrap/helpers/_position.scss +30 -0
  73. data/assets/stylesheets/bootstrap/helpers/_screenreaders.scss +8 -0
  74. data/assets/stylesheets/bootstrap/helpers/_stretched-link.scss +15 -0
  75. data/assets/stylesheets/bootstrap/helpers/_text-truncation.scss +7 -0
  76. data/assets/stylesheets/bootstrap/mixins/_alert.scss +0 -4
  77. data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +26 -13
  78. data/assets/stylesheets/bootstrap/mixins/_breakpoints.scss +11 -8
  79. data/assets/stylesheets/bootstrap/mixins/_buttons.scss +68 -50
  80. data/assets/stylesheets/bootstrap/mixins/_caret.scss +4 -4
  81. data/assets/stylesheets/bootstrap/mixins/_clearfix.scss +2 -0
  82. data/assets/stylesheets/bootstrap/mixins/_container.scss +9 -0
  83. data/assets/stylesheets/bootstrap/mixins/_forms.scss +47 -106
  84. data/assets/stylesheets/bootstrap/mixins/_gradients.scss +9 -11
  85. data/assets/stylesheets/bootstrap/mixins/_grid.scss +99 -29
  86. data/assets/stylesheets/bootstrap/mixins/_image.scss +0 -20
  87. data/assets/stylesheets/bootstrap/mixins/_list-group.scss +2 -1
  88. data/assets/stylesheets/bootstrap/mixins/_pagination.scss +15 -8
  89. data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +1 -1
  90. data/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +14 -19
  91. data/assets/stylesheets/bootstrap/mixins/_table-variants.scss +21 -0
  92. data/assets/stylesheets/bootstrap/mixins/_transition.scss +17 -7
  93. data/assets/stylesheets/bootstrap/mixins/_utilities.scss +49 -0
  94. data/assets/stylesheets/bootstrap/utilities/_api.scss +47 -0
  95. data/assets/stylesheets/bootstrap/vendor/_rfs.scss +230 -130
  96. data/bootstrap.gemspec +1 -1
  97. data/lib/bootstrap/version.rb +2 -2
  98. data/tasks/updater/js.rb +3 -3
  99. data/tasks/updater/network.rb +2 -2
  100. data/test/dummy_rails/app/assets/config/manifest.js +3 -0
  101. data/test/dummy_rails/app/assets/stylesheets/.browserslistrc +1 -0
  102. data/test/gemfiles/rails_6_0.gemfile +7 -0
  103. data/test/support/dummy_rails_integration.rb +3 -1
  104. data/test/test_helper.rb +18 -13
  105. metadata +40 -42
  106. data/assets/javascripts/bootstrap/util.js +0 -171
  107. data/assets/stylesheets/bootstrap/_code.scss +0 -48
  108. data/assets/stylesheets/bootstrap/_custom-forms.scss +0 -507
  109. data/assets/stylesheets/bootstrap/_input-group.scss +0 -193
  110. data/assets/stylesheets/bootstrap/_jumbotron.scss +0 -17
  111. data/assets/stylesheets/bootstrap/_media.scss +0 -8
  112. data/assets/stylesheets/bootstrap/_print.scss +0 -141
  113. data/assets/stylesheets/bootstrap/mixins/_background-variant.scss +0 -21
  114. data/assets/stylesheets/bootstrap/mixins/_badge.scss +0 -17
  115. data/assets/stylesheets/bootstrap/mixins/_float.scss +0 -14
  116. data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +0 -66
  117. data/assets/stylesheets/bootstrap/mixins/_hover.scss +0 -37
  118. data/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +0 -10
  119. data/assets/stylesheets/bootstrap/mixins/_size.scss +0 -7
  120. data/assets/stylesheets/bootstrap/mixins/_table-row.scss +0 -39
  121. data/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +0 -16
  122. data/assets/stylesheets/bootstrap/mixins/_text-hide.scss +0 -11
  123. data/assets/stylesheets/bootstrap/mixins/_visibility.scss +0 -8
  124. data/assets/stylesheets/bootstrap/utilities/_align.scss +0 -8
  125. data/assets/stylesheets/bootstrap/utilities/_background.scss +0 -19
  126. data/assets/stylesheets/bootstrap/utilities/_borders.scss +0 -75
  127. data/assets/stylesheets/bootstrap/utilities/_display.scss +0 -26
  128. data/assets/stylesheets/bootstrap/utilities/_embed.scss +0 -39
  129. data/assets/stylesheets/bootstrap/utilities/_flex.scss +0 -51
  130. data/assets/stylesheets/bootstrap/utilities/_float.scss +0 -11
  131. data/assets/stylesheets/bootstrap/utilities/_overflow.scss +0 -5
  132. data/assets/stylesheets/bootstrap/utilities/_position.scss +0 -32
  133. data/assets/stylesheets/bootstrap/utilities/_screenreaders.scss +0 -11
  134. data/assets/stylesheets/bootstrap/utilities/_shadows.scss +0 -6
  135. data/assets/stylesheets/bootstrap/utilities/_sizing.scss +0 -20
  136. data/assets/stylesheets/bootstrap/utilities/_spacing.scss +0 -73
  137. data/assets/stylesheets/bootstrap/utilities/_stretched-link.scss +0 -19
  138. data/assets/stylesheets/bootstrap/utilities/_text.scss +0 -72
  139. data/assets/stylesheets/bootstrap/utilities/_visibility.scss +0 -13
@@ -7,6 +7,7 @@
7
7
  display: flex;
8
8
  flex-direction: column;
9
9
  min-width: 0; // See https://github.com/twbs/bootstrap/pull/22740#issuecomment-305868106
10
+ height: $card-height;
10
11
  word-wrap: break-word;
11
12
  background-color: $card-bg;
12
13
  background-clip: border-box;
@@ -18,33 +19,43 @@
18
19
  margin-left: 0;
19
20
  }
20
21
 
21
- > .list-group:first-child {
22
- .list-group-item:first-child {
23
- @include border-top-radius($card-border-radius);
22
+ > .list-group {
23
+ border-top: inherit;
24
+ border-bottom: inherit;
25
+
26
+ &:first-child {
27
+ border-top-width: 0;
28
+ @include border-top-radius($card-inner-border-radius);
24
29
  }
25
- }
26
30
 
27
- > .list-group:last-child {
28
- .list-group-item:last-child {
29
- @include border-bottom-radius($card-border-radius);
31
+ &:last-child {
32
+ border-bottom-width: 0;
33
+ @include border-bottom-radius($card-inner-border-radius);
30
34
  }
31
35
  }
36
+
37
+ // Due to specificity of the above selector (`.card > .list-group`), we must
38
+ // use a child selector here to prevent double borders.
39
+ > .card-header + .list-group,
40
+ > .list-group + .card-footer {
41
+ border-top: 0;
42
+ }
32
43
  }
33
44
 
34
45
  .card-body {
35
46
  // Enable `flex-grow: 1` for decks and groups so that card blocks take up
36
47
  // as much space as possible, ensuring footers are aligned to the bottom.
37
48
  flex: 1 1 auto;
38
- padding: $card-spacer-x;
49
+ padding: $card-spacer-y $card-spacer-x;
39
50
  color: $card-color;
40
51
  }
41
52
 
42
53
  .card-title {
43
- margin-bottom: $card-spacer-y;
54
+ margin-bottom: $card-title-spacer-y;
44
55
  }
45
56
 
46
57
  .card-subtitle {
47
- margin-top: -$card-spacer-y / 2;
58
+ margin-top: -$card-title-spacer-y / 2;
48
59
  margin-bottom: 0;
49
60
  }
50
61
 
@@ -53,7 +64,7 @@
53
64
  }
54
65
 
55
66
  .card-link {
56
- @include hover {
67
+ &:hover {
57
68
  text-decoration: none;
58
69
  }
59
70
 
@@ -67,7 +78,7 @@
67
78
  //
68
79
 
69
80
  .card-header {
70
- padding: $card-spacer-y $card-spacer-x;
81
+ padding: $card-cap-padding-y $card-cap-padding-x;
71
82
  margin-bottom: 0; // Removes the default margin-bottom of <hN>
72
83
  color: $card-cap-color;
73
84
  background-color: $card-cap-bg;
@@ -76,16 +87,11 @@
76
87
  &:first-child {
77
88
  @include border-radius($card-inner-border-radius $card-inner-border-radius 0 0);
78
89
  }
79
-
80
- + .list-group {
81
- .list-group-item:first-child {
82
- border-top: 0;
83
- }
84
- }
85
90
  }
86
91
 
87
92
  .card-footer {
88
- padding: $card-spacer-y $card-spacer-x;
93
+ padding: $card-cap-padding-y $card-cap-padding-x;
94
+ color: $card-cap-color;
89
95
  background-color: $card-cap-bg;
90
96
  border-top: $card-border-width solid $card-border-color;
91
97
 
@@ -100,15 +106,22 @@
100
106
  //
101
107
 
102
108
  .card-header-tabs {
103
- margin-right: -$card-spacer-x / 2;
104
- margin-bottom: -$card-spacer-y;
105
- 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;
106
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
+ }
107
120
  }
108
121
 
109
122
  .card-header-pills {
110
- margin-right: -$card-spacer-x / 2;
111
- margin-left: -$card-spacer-x / 2;
123
+ margin-right: -$card-cap-padding-x / 2;
124
+ margin-left: -$card-cap-padding-x / 2;
112
125
  }
113
126
 
114
127
  // Card image
@@ -119,61 +132,31 @@
119
132
  bottom: 0;
120
133
  left: 0;
121
134
  padding: $card-img-overlay-padding;
135
+ @include border-radius($card-inner-border-radius);
122
136
  }
123
137
 
124
- .card-img {
138
+ .card-img,
139
+ .card-img-top,
140
+ .card-img-bottom {
125
141
  width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch
126
- @include border-radius($card-inner-border-radius);
127
142
  }
128
143
 
129
- // Card image caps
144
+ .card-img,
130
145
  .card-img-top {
131
- width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch
132
146
  @include border-top-radius($card-inner-border-radius);
133
147
  }
134
148
 
149
+ .card-img,
135
150
  .card-img-bottom {
136
- width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch
137
151
  @include border-bottom-radius($card-inner-border-radius);
138
152
  }
139
153
 
140
154
 
141
- // Card deck
142
-
143
- .card-deck {
144
- display: flex;
145
- flex-direction: column;
146
-
147
- .card {
148
- margin-bottom: $card-deck-margin;
149
- }
150
-
151
- @include media-breakpoint-up(sm) {
152
- flex-flow: row wrap;
153
- margin-right: -$card-deck-margin;
154
- margin-left: -$card-deck-margin;
155
-
156
- .card {
157
- display: flex;
158
- // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4
159
- flex: 1 0 0%;
160
- flex-direction: column;
161
- margin-right: $card-deck-margin;
162
- margin-bottom: 0; // Override the default
163
- margin-left: $card-deck-margin;
164
- }
165
- }
166
- }
167
-
168
-
169
155
  //
170
156
  // Card groups
171
157
  //
172
158
 
173
159
  .card-group {
174
- display: flex;
175
- flex-direction: column;
176
-
177
160
  // The child selector allows nested `.card` within `.card-group`
178
161
  // to display properly.
179
162
  > .card {
@@ -181,6 +164,7 @@
181
164
  }
182
165
 
183
166
  @include media-breakpoint-up(sm) {
167
+ display: flex;
184
168
  flex-flow: row wrap;
185
169
  // The child selector allows nested `.card` within `.card-group`
186
170
  // to display properly.
@@ -231,29 +215,6 @@
231
215
  }
232
216
 
233
217
 
234
- //
235
- // Columns
236
- //
237
-
238
- .card-columns {
239
- .card {
240
- margin-bottom: $card-columns-margin;
241
- }
242
-
243
- @include media-breakpoint-up(sm) {
244
- column-count: $card-columns-count;
245
- column-gap: $card-columns-gap;
246
- orphans: 1;
247
- widows: 1;
248
-
249
- .card {
250
- display: inline-block; // Don't let them vertically span multiple columns
251
- width: 100%; // Don't let their width change
252
- }
253
- }
254
- }
255
-
256
-
257
218
  //
258
219
  // Accordion
259
220
  //
@@ -262,27 +223,17 @@
262
223
  > .card {
263
224
  overflow: hidden;
264
225
 
265
- &:not(:first-of-type) {
266
- .card-header:first-child {
267
- @include border-radius(0);
268
- }
269
-
270
- &:not(:last-of-type) {
271
- border-bottom: 0;
272
- @include border-radius(0);
273
- }
274
- }
275
-
276
- &:first-of-type {
226
+ &:not(:last-of-type) {
277
227
  border-bottom: 0;
278
228
  @include border-bottom-radius(0);
279
229
  }
280
230
 
281
- &:last-of-type {
231
+ &:not(:first-of-type) {
282
232
  @include border-top-radius(0);
283
233
  }
284
234
 
285
- .card-header {
235
+ > .card-header {
236
+ @include border-radius(0);
286
237
  margin-bottom: -$card-border-width;
287
238
  }
288
239
  }
@@ -75,7 +75,7 @@
75
75
  .active.carousel-item-right {
76
76
  z-index: 0;
77
77
  opacity: 0;
78
- @include transition(0s $carousel-transition-duration opacity);
78
+ @include transition(opacity 0s $carousel-transition-duration);
79
79
  }
80
80
  }
81
81
 
@@ -101,7 +101,8 @@
101
101
  @include transition($carousel-control-transition);
102
102
 
103
103
  // Hover/focus state
104
- @include hover-focus {
104
+ &:hover,
105
+ &:focus {
105
106
  color: $carousel-control-color;
106
107
  text-decoration: none;
107
108
  outline: 0;
@@ -110,15 +111,11 @@
110
111
  }
111
112
  .carousel-control-prev {
112
113
  left: 0;
113
- @if $enable-gradients {
114
- background: linear-gradient(90deg, rgba($black, .25), rgba($black, .001));
115
- }
114
+ background-image: if($enable-gradients, linear-gradient(90deg, rgba($black, .25), rgba($black, .001)), null);
116
115
  }
117
116
  .carousel-control-next {
118
117
  right: 0;
119
- @if $enable-gradients {
120
- background: linear-gradient(270deg, rgba($black, .25), rgba($black, .001));
121
- }
118
+ background-image: if($enable-gradients, linear-gradient(270deg, rgba($black, .25), rgba($black, .001)), null);
122
119
  }
123
120
 
124
121
  // Icons for within
@@ -127,13 +124,15 @@
127
124
  display: inline-block;
128
125
  width: $carousel-control-icon-width;
129
126
  height: $carousel-control-icon-width;
130
- background: no-repeat 50% / 100% 100%;
127
+ background-repeat: no-repeat;
128
+ background-position: 50%;
129
+ background-size: 100% 100%;
131
130
  }
132
131
  .carousel-control-prev-icon {
133
- background-image: $carousel-control-prev-icon-bg;
132
+ background-image: escape-svg($carousel-control-prev-icon-bg);
134
133
  }
135
134
  .carousel-control-next-icon {
136
- background-image: $carousel-control-next-icon-bg;
135
+ background-image: escape-svg($carousel-control-next-icon-bg);
137
136
  }
138
137
 
139
138
 
@@ -147,7 +146,7 @@
147
146
  right: 0;
148
147
  bottom: 0;
149
148
  left: 0;
150
- z-index: 15;
149
+ z-index: 2;
151
150
  display: flex;
152
151
  justify-content: center;
153
152
  padding-left: 0; // override <ol> default
@@ -170,12 +169,12 @@
170
169
  // Use transparent borders to increase the hit area by 10px on top and bottom.
171
170
  border-top: $carousel-indicator-hit-area-height solid transparent;
172
171
  border-bottom: $carousel-indicator-hit-area-height solid transparent;
173
- opacity: .5;
172
+ opacity: $carousel-indicator-opacity;
174
173
  @include transition($carousel-indicator-transition);
175
174
  }
176
175
 
177
176
  .active {
178
- opacity: 1;
177
+ opacity: $carousel-indicator-active-opacity;
179
178
  }
180
179
  }
181
180
 
@@ -187,11 +186,10 @@
187
186
  .carousel-caption {
188
187
  position: absolute;
189
188
  right: (100% - $carousel-caption-width) / 2;
190
- bottom: 20px;
189
+ bottom: $carousel-caption-spacer;
191
190
  left: (100% - $carousel-caption-width) / 2;
192
- z-index: 10;
193
- padding-top: 20px;
194
- padding-bottom: 20px;
191
+ padding-top: $carousel-caption-padding-y;
192
+ padding-bottom: $carousel-caption-padding-y;
195
193
  color: $carousel-caption-color;
196
194
  text-align: center;
197
195
  }
@@ -1,5 +1,4 @@
1
1
  .close {
2
- float: right;
3
2
  @include font-size($close-font-size);
4
3
  font-weight: $close-font-weight;
5
4
  line-height: 1;
@@ -8,15 +7,19 @@
8
7
  opacity: .5;
9
8
 
10
9
  // Override <a>'s hover style
11
- @include hover {
10
+ &:hover {
12
11
  color: $close-color;
13
12
  text-decoration: none;
14
13
  }
15
14
 
16
- &:not(:disabled):not(.disabled) {
17
- @include hover-focus {
18
- opacity: .75;
19
- }
15
+ &:hover,
16
+ &:focus {
17
+ opacity: .75;
18
+ }
19
+
20
+ &:disabled,
21
+ &.disabled {
22
+ pointer-events: none;
20
23
  }
21
24
  }
22
25
 
@@ -30,12 +33,4 @@ button.close {
30
33
  padding: 0;
31
34
  background-color: transparent;
32
35
  border: 0;
33
- appearance: none;
34
- }
35
-
36
- // Future-proof disabling of clicks on `<a>` elements
37
-
38
- // stylelint-disable-next-line selector-no-qualifying-type
39
- a.close.disabled {
40
- pointer-events: none;
41
36
  }
@@ -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
+ }
@@ -10,7 +10,7 @@
10
10
  white-space: nowrap;
11
11
 
12
12
  // Generate the caret automatically
13
- @include caret;
13
+ @include caret();
14
14
  }
15
15
 
16
16
  // The dropdown menu
@@ -20,7 +20,6 @@
20
20
  left: 0;
21
21
  z-index: $zindex-dropdown;
22
22
  display: none; // none by default, but block on "open" of the menu
23
- float: left;
24
23
  min-width: $dropdown-min-width;
25
24
  padding: $dropdown-padding-y 0;
26
25
  margin: $dropdown-spacer 0 0; // override default ul
@@ -35,6 +34,7 @@
35
34
  @include box-shadow($dropdown-box-shadow);
36
35
  }
37
36
 
37
+ // scss-docs-start responsive-breakpoints
38
38
  @each $breakpoint in map-keys($grid-breakpoints) {
39
39
  @include media-breakpoint-up($breakpoint) {
40
40
  $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
@@ -50,6 +50,7 @@
50
50
  }
51
51
  }
52
52
  }
53
+ // scss-docs-end responsive-breakpoints
53
54
 
54
55
  // Allow for dropdowns to go bottom up (aka, dropup-menu)
55
56
  // Just add .dropup after the standard .dropdown class and you're set.
@@ -114,7 +115,10 @@
114
115
 
115
116
  // Dividers (basically an `<hr>`) within the dropdown
116
117
  .dropdown-divider {
117
- @include nav-divider($dropdown-divider-bg, $dropdown-divider-margin-y);
118
+ height: 0;
119
+ margin: $dropdown-divider-margin-y 0;
120
+ overflow: hidden;
121
+ border-top: 1px solid $dropdown-divider-bg;
118
122
  }
119
123
 
120
124
  // Links, buttons, and more within the dropdown menu
@@ -128,6 +132,7 @@
128
132
  font-weight: $font-weight-normal;
129
133
  color: $dropdown-link-color;
130
134
  text-align: inherit; // For `<button>`s
135
+ text-decoration: if($link-decoration == none, null, none);
131
136
  white-space: nowrap; // prevent links from randomly breaking onto new lines
132
137
  background-color: transparent; // For `<button>`s
133
138
  border: 0; // For `<button>`s
@@ -144,9 +149,10 @@
144
149
  }
145
150
  }
146
151
 
147
- @include hover-focus {
152
+ &:hover,
153
+ &:focus {
148
154
  color: $dropdown-link-hover-color;
149
- text-decoration: none;
155
+ text-decoration: if($link-hover-decoration == underline, none, null);
150
156
  @include gradient-bg($dropdown-link-hover-bg);
151
157
  }
152
158
 
@@ -163,9 +169,7 @@
163
169
  pointer-events: none;
164
170
  background-color: transparent;
165
171
  // Remove CSS gradients if they're enabled
166
- @if $enable-gradients {
167
- background-image: none;
168
- }
172
+ background-image: if($enable-gradients, none, null);
169
173
  }
170
174
  }
171
175
 
@@ -176,7 +180,7 @@
176
180
  // Dropdown section headers
177
181
  .dropdown-header {
178
182
  display: block;
179
- padding: $dropdown-padding-y $dropdown-item-padding-x;
183
+ padding: $dropdown-header-padding;
180
184
  margin-bottom: 0; // for use with heading elements
181
185
  @include font-size($font-size-sm);
182
186
  color: $dropdown-header-color;