bootstrap 4.0.0.beta → 4.0.0.beta2

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of bootstrap might be problematic. Click here for more details.

Files changed (90) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +4 -0
  3. data/Gemfile +1 -1
  4. data/README.md +10 -43
  5. data/Rakefile +1 -1
  6. data/assets/javascripts/bootstrap-sprockets.js +5 -5
  7. data/assets/javascripts/bootstrap.js +1561 -1542
  8. data/assets/javascripts/bootstrap.min.js +6 -5
  9. data/assets/javascripts/bootstrap/alert.js +31 -38
  10. data/assets/javascripts/bootstrap/button.js +23 -30
  11. data/assets/javascripts/bootstrap/carousel.js +72 -81
  12. data/assets/javascripts/bootstrap/collapse.js +72 -68
  13. data/assets/javascripts/bootstrap/dropdown.js +97 -85
  14. data/assets/javascripts/bootstrap/modal.js +104 -101
  15. data/assets/javascripts/bootstrap/popover.js +55 -68
  16. data/assets/javascripts/bootstrap/scrollspy.js +63 -68
  17. data/assets/javascripts/bootstrap/tab.js +54 -49
  18. data/assets/javascripts/bootstrap/tooltip.js +102 -116
  19. data/assets/javascripts/bootstrap/util.js +20 -30
  20. data/assets/stylesheets/_bootstrap-grid.scss +7 -9
  21. data/assets/stylesheets/_bootstrap-reboot.scss +7 -4
  22. data/assets/stylesheets/_bootstrap.scss +2 -1
  23. data/assets/stylesheets/bootstrap/_alert.scss +4 -3
  24. data/assets/stylesheets/bootstrap/_badge.scss +1 -2
  25. data/assets/stylesheets/bootstrap/_breadcrumb.scss +4 -4
  26. data/assets/stylesheets/bootstrap/_button-group.scss +33 -24
  27. data/assets/stylesheets/bootstrap/_buttons.scss +24 -29
  28. data/assets/stylesheets/bootstrap/_card.scss +58 -22
  29. data/assets/stylesheets/bootstrap/_carousel.scss +6 -0
  30. data/assets/stylesheets/bootstrap/_close.scss +2 -2
  31. data/assets/stylesheets/bootstrap/_custom-forms.scss +11 -8
  32. data/assets/stylesheets/bootstrap/_dropdown.scss +16 -41
  33. data/assets/stylesheets/bootstrap/_forms.scss +12 -44
  34. data/assets/stylesheets/bootstrap/_functions.scss +6 -10
  35. data/assets/stylesheets/bootstrap/_grid.scss +0 -1
  36. data/assets/stylesheets/bootstrap/_input-group.scss +17 -7
  37. data/assets/stylesheets/bootstrap/_mixins.scss +1 -0
  38. data/assets/stylesheets/bootstrap/_modal.scss +12 -1
  39. data/assets/stylesheets/bootstrap/_nav.scss +5 -5
  40. data/assets/stylesheets/bootstrap/_navbar.scss +27 -5
  41. data/assets/stylesheets/bootstrap/_pagination.scss +2 -4
  42. data/assets/stylesheets/bootstrap/_popover.scss +16 -17
  43. data/assets/stylesheets/bootstrap/_print.scss +2 -3
  44. data/assets/stylesheets/bootstrap/_progress.scss +4 -6
  45. data/assets/stylesheets/bootstrap/_reboot.scss +39 -16
  46. data/assets/stylesheets/bootstrap/_root.scss +19 -0
  47. data/assets/stylesheets/bootstrap/_tables.scss +40 -28
  48. data/assets/stylesheets/bootstrap/_tooltip.scss +6 -6
  49. data/assets/stylesheets/bootstrap/_transitions.scss +2 -0
  50. data/assets/stylesheets/bootstrap/_type.scss +2 -0
  51. data/assets/stylesheets/bootstrap/_variables.scss +467 -476
  52. data/assets/stylesheets/bootstrap/mixins/_alert.scss +1 -1
  53. data/assets/stylesheets/bootstrap/mixins/_background-variant.scss +8 -0
  54. data/assets/stylesheets/bootstrap/mixins/_badge.scss +2 -2
  55. data/assets/stylesheets/bootstrap/mixins/_breakpoints.scss +18 -4
  56. data/assets/stylesheets/bootstrap/mixins/_buttons.scss +27 -16
  57. data/assets/stylesheets/bootstrap/mixins/_caret.scss +35 -0
  58. data/assets/stylesheets/bootstrap/mixins/_float.scss +2 -0
  59. data/assets/stylesheets/bootstrap/mixins/_forms.scss +31 -4
  60. data/assets/stylesheets/bootstrap/mixins/_gradients.scss +8 -0
  61. data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +14 -1
  62. data/assets/stylesheets/bootstrap/mixins/_grid.scss +10 -5
  63. data/assets/stylesheets/bootstrap/mixins/_hover.scss +13 -12
  64. data/assets/stylesheets/bootstrap/mixins/_image.scss +3 -3
  65. data/assets/stylesheets/bootstrap/mixins/_list-group.scss +0 -2
  66. data/assets/stylesheets/bootstrap/mixins/_navbar-align.scss +2 -1
  67. data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +1 -2
  68. data/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +2 -2
  69. data/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +2 -0
  70. data/assets/stylesheets/bootstrap/mixins/_visibility.scss +2 -0
  71. data/assets/stylesheets/bootstrap/utilities/_align.scss +2 -0
  72. data/assets/stylesheets/bootstrap/utilities/_background.scss +16 -3
  73. data/assets/stylesheets/bootstrap/utilities/_borders.scss +5 -3
  74. data/assets/stylesheets/bootstrap/utilities/_display.scss +3 -0
  75. data/assets/stylesheets/bootstrap/utilities/_flex.scss +2 -0
  76. data/assets/stylesheets/bootstrap/utilities/_position.scss +12 -1
  77. data/assets/stylesheets/bootstrap/utilities/_sizing.scss +2 -0
  78. data/assets/stylesheets/bootstrap/utilities/_spacing.scss +24 -14
  79. data/assets/stylesheets/bootstrap/utilities/_text.scss +7 -4
  80. data/bootstrap.gemspec +2 -3
  81. data/lib/bootstrap.rb +0 -16
  82. data/lib/bootstrap/version.rb +2 -2
  83. data/tasks/updater/js.rb +31 -4
  84. data/tasks/updater/scss.rb +0 -12
  85. data/test/dummy_rails/config/application.rb +0 -1
  86. metadata +16 -27
  87. data/templates/project/_bootstrap-variables.scss +0 -834
  88. data/templates/project/manifest.rb +0 -18
  89. data/templates/project/styles.scss +0 -10
  90. data/test/compass_test.rb +0 -14
@@ -12,6 +12,23 @@
12
12
  background-clip: border-box;
13
13
  border: $card-border-width solid $card-border-color;
14
14
  @include border-radius($card-border-radius);
15
+
16
+ > hr {
17
+ margin-right: 0;
18
+ margin-left: 0;
19
+ }
20
+
21
+ > .list-group:first-child {
22
+ .list-group-item:first-child {
23
+ @include border-top-radius($card-border-radius);
24
+ }
25
+ }
26
+
27
+ > .list-group:last-child {
28
+ .list-group-item:last-child {
29
+ @include border-bottom-radius($card-border-radius);
30
+ }
31
+ }
15
32
  }
16
33
 
17
34
  .card-body {
@@ -44,21 +61,6 @@
44
61
  }
45
62
  }
46
63
 
47
- .card {
48
- > .list-group:first-child {
49
- .list-group-item:first-child {
50
- @include border-top-radius($card-border-radius);
51
- }
52
- }
53
-
54
- > .list-group:last-child {
55
- .list-group-item:last-child {
56
- @include border-bottom-radius($card-border-radius);
57
- }
58
- }
59
- }
60
-
61
-
62
64
  //
63
65
  // Optional textual caps
64
66
  //
@@ -72,6 +74,12 @@
72
74
  &:first-child {
73
75
  @include border-radius($card-inner-border-radius $card-inner-border-radius 0 0);
74
76
  }
77
+
78
+ + .list-group {
79
+ .list-group-item:first-child {
80
+ border-top: 0;
81
+ }
82
+ }
75
83
  }
76
84
 
77
85
  .card-footer {
@@ -130,18 +138,26 @@
130
138
 
131
139
  // Card deck
132
140
 
133
- @include media-breakpoint-up(sm) {
134
- .card-deck {
135
- display: flex;
141
+ .card-deck {
142
+ display: flex;
143
+ flex-direction: column;
144
+
145
+ .card {
146
+ margin-bottom: $card-deck-margin;
147
+ }
148
+
149
+ @include media-breakpoint-up(sm) {
136
150
  flex-flow: row wrap;
137
151
  margin-right: -$card-deck-margin;
138
152
  margin-left: -$card-deck-margin;
139
153
 
140
154
  .card {
141
155
  display: flex;
156
+ // Flexbugs #4: https://github.com/philipwalton/flexbugs#4-flex-shorthand-declarations-with-unitless-flex-basis-values-are-ignored
142
157
  flex: 1 0 0%;
143
158
  flex-direction: column;
144
159
  margin-right: $card-deck-margin;
160
+ margin-bottom: 0; // Override the default
145
161
  margin-left: $card-deck-margin;
146
162
  }
147
163
  }
@@ -152,13 +168,21 @@
152
168
  // Card groups
153
169
  //
154
170
 
155
- @include media-breakpoint-up(sm) {
156
- .card-group {
157
- display: flex;
171
+ .card-group {
172
+ display: flex;
173
+ flex-direction: column;
174
+
175
+ .card {
176
+ margin-bottom: $card-group-margin;
177
+ }
178
+
179
+ @include media-breakpoint-up(sm) {
158
180
  flex-flow: row wrap;
159
181
 
160
182
  .card {
183
+ // Flexbugs #4: https://github.com/philipwalton/flexbugs#4-flex-shorthand-declarations-with-unitless-flex-basis-values-are-ignored
161
184
  flex: 1 0 0%;
185
+ margin-bottom: 0;
162
186
 
163
187
  + .card {
164
188
  margin-left: 0;
@@ -177,6 +201,7 @@
177
201
  border-bottom-right-radius: 0;
178
202
  }
179
203
  }
204
+
180
205
  &:last-child {
181
206
  @include border-left-radius(0);
182
207
 
@@ -188,7 +213,18 @@
188
213
  }
189
214
  }
190
215
 
191
- &:not(:first-child):not(:last-child) {
216
+ &:only-child {
217
+ @include border-radius($card-border-radius);
218
+
219
+ .card-img-top {
220
+ @include border-top-radius($card-border-radius);
221
+ }
222
+ .card-img-bottom {
223
+ @include border-bottom-radius($card-border-radius);
224
+ }
225
+ }
226
+
227
+ &:not(:first-child):not(:last-child):not(:only-child) {
192
228
  border-radius: 0;
193
229
 
194
230
  .card-img-top,
@@ -90,9 +90,15 @@
90
90
  }
91
91
  .carousel-control-prev {
92
92
  left: 0;
93
+ @if $enable-gradients {
94
+ background: linear-gradient(90deg, rgba(0,0,0,.25), rgba(0,0,0,.001));
95
+ }
93
96
  }
94
97
  .carousel-control-next {
95
98
  right: 0;
99
+ @if $enable-gradients {
100
+ background: linear-gradient(270deg, rgba(0,0,0,.25), rgba(0,0,0,.001));
101
+ }
96
102
  }
97
103
 
98
104
  // Icons for within
@@ -19,11 +19,11 @@
19
19
  // If you want the anchor version, it requires `href="#"`.
20
20
  // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile
21
21
 
22
- // scss-lint:disable QualifyingElement
22
+ // stylelint-disable property-no-vendor-prefix, selector-no-qualifying-type
23
23
  button.close {
24
24
  padding: 0;
25
25
  background: transparent;
26
26
  border: 0;
27
27
  -webkit-appearance: none;
28
28
  }
29
- // scss-lint:enable QualifyingElement
29
+ // stylelint-enable
@@ -1,5 +1,3 @@
1
- // scss-lint:disable PropertyCount, VendorPrefix
2
-
3
1
  // Embedded icons from Open Iconic.
4
2
  // Released under MIT and copyright 2014 Waybury.
5
3
  // https://useiconic.com/open
@@ -24,7 +22,7 @@
24
22
 
25
23
  &:checked ~ .custom-control-indicator {
26
24
  color: $custom-control-indicator-checked-color;
27
- background-color: $custom-control-indicator-checked-bg;
25
+ @include gradient-bg($custom-control-indicator-checked-bg);
28
26
  @include box-shadow($custom-control-indicator-checked-box-shadow);
29
27
  }
30
28
 
@@ -35,7 +33,7 @@
35
33
 
36
34
  &:active ~ .custom-control-indicator {
37
35
  color: $custom-control-indicator-active-color;
38
- background-color: $custom-control-indicator-active-bg;
36
+ @include gradient-bg($custom-control-indicator-active-bg);
39
37
  @include box-shadow($custom-control-indicator-active-box-shadow);
40
38
  }
41
39
 
@@ -164,6 +162,11 @@
164
162
  }
165
163
  }
166
164
 
165
+ &[multiple] {
166
+ height: auto;
167
+ background-image: none;
168
+ }
169
+
167
170
  &:disabled {
168
171
  color: $custom-select-disabled-color;
169
172
  background-color: $custom-select-disabled-bg;
@@ -203,7 +206,7 @@
203
206
  opacity: 0;
204
207
 
205
208
  &:focus ~ .custom-file-control {
206
- @include box-shadow($custom-file-focus-box-shadow);
209
+ box-shadow: $custom-file-focus-box-shadow;
207
210
  }
208
211
  }
209
212
 
@@ -214,7 +217,7 @@
214
217
  left: 0;
215
218
  z-index: 5;
216
219
  height: $custom-file-height;
217
- padding: $custom-file-padding-x $custom-file-padding-y;
220
+ padding: $custom-file-padding-y $custom-file-padding-x;
218
221
  line-height: $custom-file-line-height;
219
222
  color: $custom-file-color;
220
223
  pointer-events: none;
@@ -238,10 +241,10 @@
238
241
  z-index: 6;
239
242
  display: block;
240
243
  height: $custom-file-height;
241
- padding: $custom-file-padding-x $custom-file-padding-y;
244
+ padding: $custom-file-padding-y $custom-file-padding-x;
242
245
  line-height: $custom-file-line-height;
243
246
  color: $custom-file-button-color;
244
- background-color: $custom-file-button-bg;
247
+ @include gradient-bg($custom-file-button-bg);
245
248
  border: $custom-file-border-width solid $custom-file-border-color;
246
249
  @include border-radius(0 $custom-file-border-radius $custom-file-border-radius 0);
247
250
  }
@@ -6,37 +6,7 @@
6
6
 
7
7
  .dropdown-toggle {
8
8
  // Generate the caret automatically
9
- &::after {
10
- display: inline-block;
11
- width: 0;
12
- height: 0;
13
- margin-left: $caret-width * .85;
14
- vertical-align: $caret-width * .85;
15
- content: "";
16
- border-top: $caret-width solid;
17
- border-right: $caret-width solid transparent;
18
- border-left: $caret-width solid transparent;
19
- }
20
-
21
- &:empty::after {
22
- margin-left: 0;
23
- }
24
- }
25
-
26
- // Allow for dropdowns to go bottom up (aka, dropup-menu)
27
- // Just add .dropup after the standard .dropdown class and you're set.
28
- .dropup {
29
- .dropdown-menu {
30
- margin-top: 0;
31
- margin-bottom: $dropdown-spacer;
32
- }
33
-
34
- .dropdown-toggle {
35
- &::after {
36
- border-top: 0;
37
- border-bottom: $caret-width solid;
38
- }
39
- }
9
+ @include caret;
40
10
  }
41
11
 
42
12
  // The dropdown menu
@@ -61,6 +31,19 @@
61
31
  @include box-shadow($dropdown-box-shadow);
62
32
  }
63
33
 
34
+ // Allow for dropdowns to go bottom up (aka, dropup-menu)
35
+ // Just add .dropup after the standard .dropdown class and you're set.
36
+ .dropup {
37
+ .dropdown-menu {
38
+ margin-top: 0;
39
+ margin-bottom: $dropdown-spacer;
40
+ }
41
+
42
+ .dropdown-toggle {
43
+ @include caret(up);
44
+ }
45
+ }
46
+
64
47
  // Dividers (basically an `<hr>`) within the dropdown
65
48
  .dropdown-divider {
66
49
  @include nav-divider($dropdown-divider-bg);
@@ -84,14 +67,14 @@
84
67
  @include hover-focus {
85
68
  color: $dropdown-link-hover-color;
86
69
  text-decoration: none;
87
- background-color: $dropdown-link-hover-bg;
70
+ @include gradient-bg($dropdown-link-hover-bg);
88
71
  }
89
72
 
90
73
  &.active,
91
74
  &:active {
92
75
  color: $dropdown-link-active-color;
93
76
  text-decoration: none;
94
- background-color: $dropdown-link-active-bg;
77
+ @include gradient-bg($dropdown-link-active-bg);
95
78
  }
96
79
 
97
80
  &.disabled,
@@ -105,14 +88,6 @@
105
88
  }
106
89
  }
107
90
 
108
- // Open state for the dropdown
109
- .show {
110
- // Remove the outline when :focus is triggered
111
- > a {
112
- outline: 0;
113
- }
114
- }
115
-
116
91
  .dropdown-menu.show {
117
92
  display: block;
118
93
  }
@@ -1,4 +1,4 @@
1
- // scss-lint:disable QualifyingElement, VendorPrefix
1
+ // stylelint-disable selector-no-qualifying-type
2
2
 
3
3
  //
4
4
  // Textual form controls
@@ -7,8 +7,6 @@
7
7
  .form-control {
8
8
  display: block;
9
9
  width: 100%;
10
- // // Make inputs at least the height of their button counterpart (base line-height + padding + border)
11
- // height: $input-height;
12
10
  padding: $input-btn-padding-y $input-btn-padding-x;
13
11
  font-size: $font-size-base;
14
12
  line-height: $input-btn-line-height;
@@ -90,21 +88,24 @@ select.form-control {
90
88
  // For use with horizontal and inline forms, when you need the label text to
91
89
  // align with the form controls.
92
90
  .col-form-label {
93
- padding-top: calc(#{$input-btn-padding-y} - #{$input-btn-border-width} * 2);
94
- padding-bottom: calc(#{$input-btn-padding-y} - #{$input-btn-border-width} * 2);
91
+ padding-top: calc(#{$input-btn-padding-y} + #{$input-btn-border-width});
92
+ padding-bottom: calc(#{$input-btn-padding-y} + #{$input-btn-border-width});
95
93
  margin-bottom: 0; // Override the `<label>` default
94
+ line-height: $input-btn-line-height;
96
95
  }
97
96
 
98
97
  .col-form-label-lg {
99
- padding-top: calc(#{$input-btn-padding-y-lg} - #{$input-btn-border-width} * 2);
100
- padding-bottom: calc(#{$input-btn-padding-y-lg} - #{$input-btn-border-width} * 2);
98
+ padding-top: calc(#{$input-btn-padding-y-lg} + #{$input-btn-border-width});
99
+ padding-bottom: calc(#{$input-btn-padding-y-lg} + #{$input-btn-border-width});
101
100
  font-size: $font-size-lg;
101
+ line-height: $input-btn-line-height-lg;
102
102
  }
103
103
 
104
104
  .col-form-label-sm {
105
- padding-top: calc(#{$input-btn-padding-y-sm} - #{$input-btn-border-width} * 2);
106
- padding-bottom: calc(#{$input-btn-padding-y-sm} - #{$input-btn-border-width} * 2);
105
+ padding-top: calc(#{$input-btn-padding-y-sm} + #{$input-btn-border-width});
106
+ padding-bottom: calc(#{$input-btn-padding-y-sm} + #{$input-btn-border-width});
107
107
  font-size: $font-size-sm;
108
+ line-height: $input-btn-line-height-sm;
108
109
  }
109
110
 
110
111
 
@@ -132,6 +133,7 @@ select.form-control {
132
133
  padding-bottom: $input-btn-padding-y;
133
134
  margin-bottom: 0; // match inputs if this class comes on inputs with default margins
134
135
  line-height: $input-btn-line-height;
136
+ background-color: transparent;
135
137
  border: solid transparent;
136
138
  border-width: $input-btn-border-width 0;
137
139
 
@@ -236,23 +238,16 @@ select.form-control-lg {
236
238
  position: absolute;
237
239
  margin-top: $form-check-input-margin-y;
238
240
  margin-left: -$form-check-input-gutter;
239
-
240
- &:only-child {
241
- position: static;
242
- }
243
241
  }
244
242
 
245
243
  // Radios and checkboxes on same line
246
244
  .form-check-inline {
247
245
  display: inline-block;
246
+ margin-right: $form-check-inline-margin-x;
248
247
 
249
248
  .form-check-label {
250
249
  vertical-align: middle;
251
250
  }
252
-
253
- + .form-check-inline {
254
- margin-left: $form-check-inline-margin-x;
255
- }
256
251
  }
257
252
 
258
253
 
@@ -263,28 +258,6 @@ select.form-control-lg {
263
258
  // pseudo-classes but also includes `.is-invalid` and `.is-valid` classes for
264
259
  // server side validation.
265
260
 
266
- .invalid-feedback {
267
- display: none;
268
- margin-top: .25rem;
269
- font-size: .875rem;
270
- color: $form-feedback-invalid-color;
271
- }
272
-
273
- .invalid-tooltip {
274
- position: absolute;
275
- top: 100%;
276
- z-index: 5;
277
- display: none;
278
- width: 250px;
279
- padding: .5rem;
280
- margin-top: .1rem;
281
- font-size: .875rem;
282
- line-height: 1;
283
- color: #fff;
284
- background-color: rgba($form-feedback-invalid-color,.8);
285
- border-radius: .2rem;
286
- }
287
-
288
261
  @include form-validation-state("valid", $form-feedback-valid-color);
289
262
  @include form-validation-state("invalid", $form-feedback-invalid-color);
290
263
 
@@ -343,11 +316,6 @@ select.form-control-lg {
343
316
  width: auto;
344
317
  }
345
318
 
346
- .form-control-label {
347
- margin-bottom: 0;
348
- vertical-align: middle;
349
- }
350
-
351
319
  // Remove default margin on radios/checkboxes that were used for stacking, and
352
320
  // then undo the floating of radios and checkboxes to match.
353
321
  .form-check {
@@ -49,7 +49,7 @@
49
49
  }
50
50
 
51
51
  // Color contrast
52
- @mixin color-yiq($color) {
52
+ @function color-yiq($color) {
53
53
  $r: red($color);
54
54
  $g: green($color);
55
55
  $b: blue($color);
@@ -57,9 +57,9 @@
57
57
  $yiq: (($r * 299) + ($g * 587) + ($b * 114)) / 1000;
58
58
 
59
59
  @if ($yiq >= 150) {
60
- color: #111;
60
+ @return #111;
61
61
  } @else {
62
- color: #fff;
62
+ @return #fff;
63
63
  }
64
64
  }
65
65
 
@@ -72,7 +72,7 @@
72
72
  @return map-get($theme-colors, $key);
73
73
  }
74
74
 
75
- @function grayscale($key: "100") {
75
+ @function gray($key: "100") {
76
76
  @return map-get($grays, $key);
77
77
  }
78
78
 
@@ -80,11 +80,7 @@
80
80
  @function theme-color-level($color-name: "primary", $level: 0) {
81
81
  $color: theme-color($color-name);
82
82
  $color-base: if($level > 0, #000, #fff);
83
+ $level: abs($level);
83
84
 
84
- @if $level < 0 {
85
- // Lighter values need a quick double negative for the Sass math to work
86
- @return mix($color-base, $color, $level * -1 * $theme-color-interval);
87
- } @else {
88
- @return mix($color-base, $color, $level * $theme-color-interval);
89
- }
85
+ @return mix($color-base, $color, $level * $theme-color-interval);
90
86
  }