bootstrap 4.1.3 → 4.2.1

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 (69) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +1 -1
  3. data/README.md +1 -1
  4. data/Rakefile +2 -2
  5. data/assets/javascripts/bootstrap-sprockets.js +6 -5
  6. data/assets/javascripts/bootstrap.js +3290 -2985
  7. data/assets/javascripts/bootstrap.min.js +2 -2
  8. data/assets/javascripts/bootstrap/alert.js +127 -132
  9. data/assets/javascripts/bootstrap/button.js +119 -124
  10. data/assets/javascripts/bootstrap/carousel.js +492 -393
  11. data/assets/javascripts/bootstrap/collapse.js +276 -279
  12. data/assets/javascripts/bootstrap/dropdown.js +413 -374
  13. data/assets/javascripts/bootstrap/modal.js +455 -445
  14. data/assets/javascripts/bootstrap/popover.js +155 -160
  15. data/assets/javascripts/bootstrap/scrollspy.js +246 -250
  16. data/assets/javascripts/bootstrap/tab.js +180 -192
  17. data/assets/javascripts/bootstrap/toast.js +277 -0
  18. data/assets/javascripts/bootstrap/tooltip.js +533 -522
  19. data/assets/javascripts/bootstrap/util.js +140 -116
  20. data/assets/stylesheets/_bootstrap-grid.scss +2 -5
  21. data/assets/stylesheets/_bootstrap-reboot.scss +1 -1
  22. data/assets/stylesheets/_bootstrap.scss +3 -1
  23. data/assets/stylesheets/bootstrap/_alert.scss +1 -1
  24. data/assets/stylesheets/bootstrap/_badge.scss +6 -0
  25. data/assets/stylesheets/bootstrap/_button-group.scss +9 -18
  26. data/assets/stylesheets/bootstrap/_buttons.scss +7 -10
  27. data/assets/stylesheets/bootstrap/_card.scss +30 -21
  28. data/assets/stylesheets/bootstrap/_carousel.scss +36 -74
  29. data/assets/stylesheets/bootstrap/_close.scss +15 -6
  30. data/assets/stylesheets/bootstrap/_custom-forms.scss +103 -29
  31. data/assets/stylesheets/bootstrap/_dropdown.scss +30 -5
  32. data/assets/stylesheets/bootstrap/_forms.scss +12 -11
  33. data/assets/stylesheets/bootstrap/_functions.scss +4 -4
  34. data/assets/stylesheets/bootstrap/_images.scss +1 -1
  35. data/assets/stylesheets/bootstrap/_input-group.scss +24 -4
  36. data/assets/stylesheets/bootstrap/_list-group.scss +6 -0
  37. data/assets/stylesheets/bootstrap/_modal.scss +16 -10
  38. data/assets/stylesheets/bootstrap/_nav.scss +2 -0
  39. data/assets/stylesheets/bootstrap/_navbar.scss +4 -4
  40. data/assets/stylesheets/bootstrap/_popover.scss +1 -1
  41. data/assets/stylesheets/bootstrap/_reboot.scss +14 -35
  42. data/assets/stylesheets/bootstrap/_spinners.scss +53 -0
  43. data/assets/stylesheets/bootstrap/_tables.scss +2 -2
  44. data/assets/stylesheets/bootstrap/_toasts.scss +43 -0
  45. data/assets/stylesheets/bootstrap/_type.scss +2 -2
  46. data/assets/stylesheets/bootstrap/_utilities.scss +1 -0
  47. data/assets/stylesheets/bootstrap/_variables.scss +220 -81
  48. data/assets/stylesheets/bootstrap/mixins/_badge.scss +1 -2
  49. data/assets/stylesheets/bootstrap/mixins/_breakpoints.scss +2 -2
  50. data/assets/stylesheets/bootstrap/mixins/_buttons.scss +9 -7
  51. data/assets/stylesheets/bootstrap/mixins/_caret.scss +0 -4
  52. data/assets/stylesheets/bootstrap/mixins/_forms.scss +61 -10
  53. data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +3 -4
  54. data/assets/stylesheets/bootstrap/mixins/_grid.scss +9 -10
  55. data/assets/stylesheets/bootstrap/mixins/_table-row.scss +10 -1
  56. data/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +1 -1
  57. data/assets/stylesheets/bootstrap/mixins/_transition.scss +5 -2
  58. data/assets/stylesheets/bootstrap/utilities/_borders.scss +4 -0
  59. data/assets/stylesheets/bootstrap/utilities/_embed.scss +7 -20
  60. data/assets/stylesheets/bootstrap/utilities/_overflow.scss +5 -0
  61. data/assets/stylesheets/bootstrap/utilities/_position.scss +0 -5
  62. data/assets/stylesheets/bootstrap/utilities/_sizing.scss +8 -0
  63. data/assets/stylesheets/bootstrap/utilities/_spacing.scss +23 -1
  64. data/assets/stylesheets/bootstrap/utilities/_text.scss +13 -4
  65. data/bootstrap.gemspec +6 -3
  66. data/lib/bootstrap.rb +10 -7
  67. data/lib/bootstrap/engine.rb +3 -0
  68. data/lib/bootstrap/version.rb +4 -2
  69. metadata +15 -11
@@ -43,7 +43,7 @@
43
43
  }
44
44
 
45
45
  .card-subtitle {
46
- margin-top: -($card-spacer-y / 2);
46
+ margin-top: -$card-spacer-y / 2;
47
47
  margin-bottom: 0;
48
48
  }
49
49
 
@@ -68,6 +68,7 @@
68
68
  .card-header {
69
69
  padding: $card-spacer-y $card-spacer-x;
70
70
  margin-bottom: 0; // Removes the default margin-bottom of <hN>
71
+ color: $card-cap-color;
71
72
  background-color: $card-cap-bg;
72
73
  border-bottom: $card-border-width solid $card-border-color;
73
74
 
@@ -98,15 +99,15 @@
98
99
  //
99
100
 
100
101
  .card-header-tabs {
101
- margin-right: -($card-spacer-x / 2);
102
+ margin-right: -$card-spacer-x / 2;
102
103
  margin-bottom: -$card-spacer-y;
103
- margin-left: -($card-spacer-x / 2);
104
+ margin-left: -$card-spacer-x / 2;
104
105
  border-bottom: 0;
105
106
  }
106
107
 
107
108
  .card-header-pills {
108
- margin-right: -($card-spacer-x / 2);
109
- margin-left: -($card-spacer-x / 2);
109
+ margin-right: -$card-spacer-x / 2;
110
+ margin-left: -$card-spacer-x / 2;
110
111
  }
111
112
 
112
113
  // Card image
@@ -277,25 +278,33 @@
277
278
  //
278
279
 
279
280
  .accordion {
280
- .card:not(:first-of-type):not(:last-of-type) {
281
- border-bottom: 0;
282
- border-radius: 0;
283
- }
281
+ .card {
282
+ overflow: hidden;
283
+
284
+ &:not(:first-of-type) {
285
+ .card-header:first-child {
286
+ border-radius: 0;
287
+ }
284
288
 
285
- .card:not(:first-of-type) {
286
- .card-header:first-child {
287
- border-radius: 0;
289
+ &:not(:last-of-type) {
290
+ border-bottom: 0;
291
+ border-radius: 0;
292
+ }
288
293
  }
289
- }
290
294
 
291
- .card:first-of-type {
292
- border-bottom: 0;
293
- border-bottom-right-radius: 0;
294
- border-bottom-left-radius: 0;
295
- }
295
+ &:first-of-type {
296
+ border-bottom: 0;
297
+ border-bottom-right-radius: 0;
298
+ border-bottom-left-radius: 0;
299
+ }
296
300
 
297
- .card:last-of-type {
298
- border-top-left-radius: 0;
299
- border-top-right-radius: 0;
301
+ &:last-of-type {
302
+ border-top-left-radius: 0;
303
+ border-top-right-radius: 0;
304
+ }
305
+
306
+ .card-header {
307
+ margin-bottom: -$card-border-width;
308
+ }
300
309
  }
301
310
  }
@@ -1,70 +1,55 @@
1
1
  // Notes on the classes:
2
2
  //
3
- // 1. The .carousel-item-left and .carousel-item-right is used to indicate where
3
+ // 1. .carousel.pointer-event should ideally be pan-y (to allow for users to scroll vertically)
4
+ // even when their scroll action started on a carousel, but for compatibility (with Firefox)
5
+ // we're preventing all actions instead
6
+ // 2. The .carousel-item-left and .carousel-item-right is used to indicate where
4
7
  // the active slide is heading.
5
- // 2. .active.carousel-item is the current slide.
6
- // 3. .active.carousel-item-left and .active.carousel-item-right is the current
8
+ // 3. .active.carousel-item is the current slide.
9
+ // 4. .active.carousel-item-left and .active.carousel-item-right is the current
7
10
  // slide in its in-transition state. Only one of these occurs at a time.
8
- // 4. .carousel-item-next.carousel-item-left and .carousel-item-prev.carousel-item-right
11
+ // 5. .carousel-item-next.carousel-item-left and .carousel-item-prev.carousel-item-right
9
12
  // is the upcoming slide in transition.
10
13
 
11
14
  .carousel {
12
15
  position: relative;
13
16
  }
14
17
 
18
+ .carousel.pointer-event {
19
+ touch-action: pan-y;
20
+ }
21
+
15
22
  .carousel-inner {
16
23
  position: relative;
17
24
  width: 100%;
18
25
  overflow: hidden;
26
+ @include clearfix();
19
27
  }
20
28
 
21
29
  .carousel-item {
22
30
  position: relative;
23
31
  display: none;
24
- align-items: center;
32
+ float: left;
25
33
  width: 100%;
34
+ margin-right: -100%;
26
35
  backface-visibility: hidden;
27
- perspective: 1000px;
36
+ @include transition($carousel-transition);
28
37
  }
29
38
 
30
39
  .carousel-item.active,
31
40
  .carousel-item-next,
32
41
  .carousel-item-prev {
33
42
  display: block;
34
- @include transition($carousel-transition);
35
- }
36
-
37
- .carousel-item-next,
38
- .carousel-item-prev {
39
- position: absolute;
40
- top: 0;
41
- }
42
-
43
- .carousel-item-next.carousel-item-left,
44
- .carousel-item-prev.carousel-item-right {
45
- transform: translateX(0);
46
-
47
- @supports (transform-style: preserve-3d) {
48
- transform: translate3d(0, 0, 0);
49
- }
50
43
  }
51
44
 
52
- .carousel-item-next,
45
+ .carousel-item-next:not(.carousel-item-left),
53
46
  .active.carousel-item-right {
54
47
  transform: translateX(100%);
55
-
56
- @supports (transform-style: preserve-3d) {
57
- transform: translate3d(100%, 0, 0);
58
- }
59
48
  }
60
49
 
61
- .carousel-item-prev,
50
+ .carousel-item-prev:not(.carousel-item-right),
62
51
  .active.carousel-item-left {
63
52
  transform: translateX(-100%);
64
-
65
- @supports (transform-style: preserve-3d) {
66
- transform: translate3d(-100%, 0, 0);
67
- }
68
53
  }
69
54
 
70
55
 
@@ -75,31 +60,22 @@
75
60
  .carousel-fade {
76
61
  .carousel-item {
77
62
  opacity: 0;
78
- transition-duration: .6s;
79
63
  transition-property: opacity;
64
+ transform: none;
80
65
  }
81
66
 
82
67
  .carousel-item.active,
83
68
  .carousel-item-next.carousel-item-left,
84
69
  .carousel-item-prev.carousel-item-right {
70
+ z-index: 1;
85
71
  opacity: 1;
86
72
  }
87
73
 
88
74
  .active.carousel-item-left,
89
75
  .active.carousel-item-right {
76
+ z-index: 0;
90
77
  opacity: 0;
91
- }
92
-
93
- .carousel-item-next,
94
- .carousel-item-prev,
95
- .carousel-item.active,
96
- .active.carousel-item-left,
97
- .active.carousel-item-prev {
98
- transform: translateX(0);
99
-
100
- @supports (transform-style: preserve-3d) {
101
- transform: translate3d(0, 0, 0);
102
- }
78
+ @include transition(0s $carousel-transition-duration opacity);
103
79
  }
104
80
  }
105
81
 
@@ -113,6 +89,7 @@
113
89
  position: absolute;
114
90
  top: 0;
115
91
  bottom: 0;
92
+ z-index: 1;
116
93
  // Use flex for alignment (1-3)
117
94
  display: flex; // 1. allow flex styles
118
95
  align-items: center; // 2. vertically center contents
@@ -121,15 +98,14 @@
121
98
  color: $carousel-control-color;
122
99
  text-align: center;
123
100
  opacity: $carousel-control-opacity;
124
- // We can't have a transition here because WebKit cancels the carousel
125
- // animation if you trip this while in the middle of another animation.
101
+ @include transition($carousel-control-transition);
126
102
 
127
103
  // Hover/focus state
128
104
  @include hover-focus {
129
105
  color: $carousel-control-color;
130
106
  text-decoration: none;
131
107
  outline: 0;
132
- opacity: .9;
108
+ opacity: $carousel-control-hover-opacity;
133
109
  }
134
110
  }
135
111
  .carousel-control-prev {
@@ -170,7 +146,7 @@
170
146
  .carousel-indicators {
171
147
  position: absolute;
172
148
  right: 0;
173
- bottom: 10px;
149
+ bottom: 0;
174
150
  left: 0;
175
151
  z-index: 15;
176
152
  display: flex;
@@ -182,7 +158,7 @@
182
158
  list-style: none;
183
159
 
184
160
  li {
185
- position: relative;
161
+ box-sizing: content-box;
186
162
  flex: 0 1 auto;
187
163
  width: $carousel-indicator-width;
188
164
  height: $carousel-indicator-height;
@@ -190,31 +166,17 @@
190
166
  margin-left: $carousel-indicator-spacer;
191
167
  text-indent: -999px;
192
168
  cursor: pointer;
193
- background-color: rgba($carousel-indicator-active-bg, .5);
194
-
195
- // Use pseudo classes to increase the hit area by 10px on top and bottom.
196
- &::before {
197
- position: absolute;
198
- top: -10px;
199
- left: 0;
200
- display: inline-block;
201
- width: 100%;
202
- height: 10px;
203
- content: "";
204
- }
205
- &::after {
206
- position: absolute;
207
- bottom: -10px;
208
- left: 0;
209
- display: inline-block;
210
- width: 100%;
211
- height: 10px;
212
- content: "";
213
- }
169
+ background-color: $carousel-indicator-active-bg;
170
+ background-clip: padding-box;
171
+ // Use transparent borders to increase the hit area by 10px on top and bottom.
172
+ border-top: $carousel-indicator-hit-area-height solid transparent;
173
+ border-bottom: $carousel-indicator-hit-area-height solid transparent;
174
+ opacity: .5;
175
+ @include transition($carousel-indicator-transition);
214
176
  }
215
177
 
216
178
  .active {
217
- background-color: $carousel-indicator-active-bg;
179
+ opacity: 1;
218
180
  }
219
181
  }
220
182
 
@@ -225,9 +187,9 @@
225
187
 
226
188
  .carousel-caption {
227
189
  position: absolute;
228
- right: ((100% - $carousel-caption-width) / 2);
190
+ right: (100% - $carousel-caption-width) / 2;
229
191
  bottom: 20px;
230
- left: ((100% - $carousel-caption-width) / 2);
192
+ left: (100% - $carousel-caption-width) / 2;
231
193
  z-index: 10;
232
194
  padding-top: 20px;
233
195
  padding-bottom: 20px;
@@ -7,11 +7,14 @@
7
7
  text-shadow: $close-text-shadow;
8
8
  opacity: .5;
9
9
 
10
- &:not(:disabled):not(.disabled) {
10
+ // Override <a>'s hover style
11
+ @include hover {
12
+ color: $close-color;
13
+ text-decoration: none;
14
+ }
11
15
 
16
+ &:not(:disabled):not(.disabled) {
12
17
  @include hover-focus {
13
- color: $close-color;
14
- text-decoration: none;
15
18
  opacity: .75;
16
19
  }
17
20
 
@@ -25,11 +28,17 @@
25
28
  // If you want the anchor version, it requires `href="#"`.
26
29
  // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile
27
30
 
28
- // stylelint-disable property-no-vendor-prefix, selector-no-qualifying-type
31
+ // stylelint-disable-next-line selector-no-qualifying-type
29
32
  button.close {
30
33
  padding: 0;
31
34
  background-color: transparent;
32
35
  border: 0;
33
- -webkit-appearance: none;
36
+ appearance: none;
37
+ }
38
+
39
+ // Future-proof disabling of clicks on `<a>` elements
40
+
41
+ // stylelint-disable-next-line selector-no-qualifying-type
42
+ a.close.disabled {
43
+ pointer-events: none;
34
44
  }
35
- // stylelint-enable
@@ -10,8 +10,8 @@
10
10
  .custom-control {
11
11
  position: relative;
12
12
  display: block;
13
- min-height: ($font-size-base * $line-height-base);
14
- padding-left: $custom-control-gutter;
13
+ min-height: $font-size-base * $line-height-base;
14
+ padding-left: $custom-control-gutter + $custom-control-indicator-size;
15
15
  }
16
16
 
17
17
  .custom-control-inline {
@@ -26,18 +26,28 @@
26
26
 
27
27
  &:checked ~ .custom-control-label::before {
28
28
  color: $custom-control-indicator-checked-color;
29
+ border-color: $custom-control-indicator-checked-border-color;
29
30
  @include gradient-bg($custom-control-indicator-checked-bg);
30
31
  @include box-shadow($custom-control-indicator-checked-box-shadow);
31
32
  }
32
33
 
33
34
  &:focus ~ .custom-control-label::before {
34
35
  // the mixin is not used here to make sure there is feedback
35
- box-shadow: $custom-control-indicator-focus-box-shadow;
36
+ @if $enable-shadows {
37
+ box-shadow: $input-box-shadow, $input-focus-box-shadow;
38
+ } @else {
39
+ box-shadow: $custom-control-indicator-focus-box-shadow;
40
+ }
36
41
  }
37
42
 
38
- &:active ~ .custom-control-label::before {
43
+ &:focus:not(:checked) ~ .custom-control-label::before {
44
+ border-color: $custom-control-indicator-focus-border-color;
45
+ }
46
+
47
+ &:not(:disabled):active ~ .custom-control-label::before {
39
48
  color: $custom-control-indicator-active-color;
40
49
  background-color: $custom-control-indicator-active-bg;
50
+ border-color: $custom-control-indicator-active-border-color;
41
51
  @include box-shadow($custom-control-indicator-active-box-shadow);
42
52
  }
43
53
 
@@ -59,27 +69,28 @@
59
69
  .custom-control-label {
60
70
  position: relative;
61
71
  margin-bottom: 0;
72
+ vertical-align: top;
62
73
 
63
74
  // Background-color and (when enabled) gradient
64
75
  &::before {
65
76
  position: absolute;
66
- top: (($font-size-base * $line-height-base - $custom-control-indicator-size) / 2);
67
- left: -$custom-control-gutter;
77
+ top: ($font-size-base * $line-height-base - $custom-control-indicator-size) / 2;
78
+ left: -($custom-control-gutter + $custom-control-indicator-size);
68
79
  display: block;
69
80
  width: $custom-control-indicator-size;
70
81
  height: $custom-control-indicator-size;
71
82
  pointer-events: none;
72
83
  content: "";
73
- user-select: none;
74
84
  background-color: $custom-control-indicator-bg;
85
+ border: $custom-control-indicator-border-color solid $custom-control-indicator-border-width;
75
86
  @include box-shadow($custom-control-indicator-box-shadow);
76
87
  }
77
88
 
78
89
  // Foreground (icon)
79
90
  &::after {
80
91
  position: absolute;
81
- top: (($font-size-base * $line-height-base - $custom-control-indicator-size) / 2);
82
- left: -$custom-control-gutter;
92
+ top: ($font-size-base * $line-height-base - $custom-control-indicator-size) / 2;
93
+ left: -($custom-control-gutter + $custom-control-indicator-size);
83
94
  display: block;
84
95
  width: $custom-control-indicator-size;
85
96
  height: $custom-control-indicator-size;
@@ -101,9 +112,6 @@
101
112
  }
102
113
 
103
114
  .custom-control-input:checked ~ .custom-control-label {
104
- &::before {
105
- @include gradient-bg($custom-control-indicator-checked-bg);
106
- }
107
115
  &::after {
108
116
  background-image: $custom-checkbox-indicator-icon-checked;
109
117
  }
@@ -111,6 +119,7 @@
111
119
 
112
120
  .custom-control-input:indeterminate ~ .custom-control-label {
113
121
  &::before {
122
+ border-color: $custom-checkbox-indicator-indeterminate-border-color;
114
123
  @include gradient-bg($custom-checkbox-indicator-indeterminate-bg);
115
124
  @include box-shadow($custom-checkbox-indicator-indeterminate-box-shadow);
116
125
  }
@@ -139,11 +148,49 @@
139
148
  }
140
149
 
141
150
  .custom-control-input:checked ~ .custom-control-label {
151
+ &::after {
152
+ background-image: $custom-radio-indicator-icon-checked;
153
+ }
154
+ }
155
+
156
+ .custom-control-input:disabled {
157
+ &:checked ~ .custom-control-label::before {
158
+ background-color: $custom-control-indicator-checked-disabled-bg;
159
+ }
160
+ }
161
+ }
162
+
163
+
164
+ // switches
165
+ //
166
+ // Tweak a few things for switches
167
+
168
+ .custom-switch {
169
+ padding-left: $custom-switch-width + $custom-control-gutter;
170
+
171
+ .custom-control-label {
142
172
  &::before {
143
- @include gradient-bg($custom-control-indicator-checked-bg);
173
+ left: -($custom-switch-width + $custom-control-gutter);
174
+ width: $custom-switch-width;
175
+ pointer-events: all;
176
+ border-radius: $custom-switch-indicator-border-radius;
144
177
  }
178
+
145
179
  &::after {
146
- background-image: $custom-radio-indicator-icon-checked;
180
+ top: calc(#{(($font-size-base * $line-height-base - $custom-control-indicator-size) / 2)} + #{$custom-control-indicator-border-width * 2});
181
+ left: calc(#{-($custom-switch-width + $custom-control-gutter)} + #{$custom-control-indicator-border-width * 2});
182
+ width: $custom-switch-indicator-size;
183
+ height: $custom-switch-indicator-size;
184
+ background-color: $custom-control-indicator-border-color;
185
+ border-radius: $custom-switch-indicator-border-radius;
186
+ @include transition(transform .15s ease-in-out, $custom-forms-transition);
187
+ }
188
+ }
189
+
190
+ .custom-control-input:checked ~ .custom-control-label {
191
+ &::after {
192
+ background-color: $custom-control-indicator-bg;
193
+ transform: translateX($custom-switch-width - $custom-control-indicator-size);
147
194
  }
148
195
  }
149
196
 
@@ -166,11 +213,12 @@
166
213
  width: 100%;
167
214
  height: $custom-select-height;
168
215
  padding: $custom-select-padding-y ($custom-select-padding-x + $custom-select-indicator-padding) $custom-select-padding-y $custom-select-padding-x;
216
+ font-weight: $custom-select-font-weight;
169
217
  line-height: $custom-select-line-height;
170
218
  color: $custom-select-color;
171
219
  vertical-align: middle;
172
- background: $custom-select-bg $custom-select-indicator no-repeat right $custom-select-padding-x center;
173
- background-size: $custom-select-bg-size;
220
+ background: $custom-select-background;
221
+ background-color: $custom-select-bg;
174
222
  border: $custom-select-border-width solid $custom-select-border-color;
175
223
  @if $enable-rounded {
176
224
  border-radius: $custom-select-border-radius;
@@ -220,15 +268,17 @@
220
268
 
221
269
  .custom-select-sm {
222
270
  height: $custom-select-height-sm;
223
- padding-top: $custom-select-padding-y;
224
- padding-bottom: $custom-select-padding-y;
271
+ padding-top: $custom-select-padding-y-sm;
272
+ padding-bottom: $custom-select-padding-y-sm;
273
+ padding-left: $custom-select-padding-x-sm;
225
274
  font-size: $custom-select-font-size-sm;
226
275
  }
227
276
 
228
277
  .custom-select-lg {
229
278
  height: $custom-select-height-lg;
230
- padding-top: $custom-select-padding-y;
231
- padding-bottom: $custom-select-padding-y;
279
+ padding-top: $custom-select-padding-y-lg;
280
+ padding-bottom: $custom-select-padding-y-lg;
281
+ padding-left: $custom-select-padding-x-lg;
232
282
  font-size: $custom-select-font-size-lg;
233
283
  }
234
284
 
@@ -256,10 +306,6 @@
256
306
  &:focus ~ .custom-file-label {
257
307
  border-color: $custom-file-focus-border-color;
258
308
  box-shadow: $custom-file-focus-box-shadow;
259
-
260
- &::after {
261
- border-color: $custom-file-focus-border-color;
262
- }
263
309
  }
264
310
 
265
311
  &:disabled ~ .custom-file-label {
@@ -271,6 +317,10 @@
271
317
  content: $value;
272
318
  }
273
319
  }
320
+
321
+ ~ .custom-file-label[data-browse]::after {
322
+ content: attr(data-browse);
323
+ }
274
324
  }
275
325
 
276
326
  .custom-file-label {
@@ -281,6 +331,7 @@
281
331
  z-index: 1;
282
332
  height: $custom-file-height;
283
333
  padding: $custom-file-padding-y $custom-file-padding-x;
334
+ font-weight: $custom-file-font-weight;
284
335
  line-height: $custom-file-line-height;
285
336
  color: $custom-file-color;
286
337
  background-color: $custom-file-bg;
@@ -301,7 +352,7 @@
301
352
  color: $custom-file-button-color;
302
353
  content: "Browse";
303
354
  @include gradient-bg($custom-file-button-bg);
304
- border-left: $custom-file-border-width solid $custom-file-border-color;
355
+ border-left: inherit;
305
356
  @include border-radius(0 $custom-file-border-radius $custom-file-border-radius 0);
306
357
  }
307
358
  }
@@ -314,14 +365,15 @@
314
365
 
315
366
  .custom-range {
316
367
  width: 100%;
317
- padding-left: 0; // Firefox specific
368
+ height: calc(#{$custom-range-thumb-height} + #{$custom-range-thumb-focus-box-shadow-width * 2});
369
+ padding: 0; // Need to reset padding
318
370
  background-color: transparent;
319
371
  appearance: none;
320
372
 
321
373
  &:focus {
322
374
  outline: none;
323
375
 
324
- // Pseudo-elements must be split across multiple rulesets to have an affect.
376
+ // Pseudo-elements must be split across multiple rulesets to have an effect.
325
377
  // No box-shadow() mixin for focus accessibility.
326
378
  &::-webkit-slider-thumb { box-shadow: $custom-range-thumb-focus-box-shadow; }
327
379
  &::-moz-range-thumb { box-shadow: $custom-range-thumb-focus-box-shadow; }
@@ -335,7 +387,7 @@
335
387
  &::-webkit-slider-thumb {
336
388
  width: $custom-range-thumb-width;
337
389
  height: $custom-range-thumb-height;
338
- margin-top: (($custom-range-track-height - $custom-range-thumb-height) / 2); // Webkit specific
390
+ margin-top: ($custom-range-track-height - $custom-range-thumb-height) / 2; // Webkit specific
339
391
  @include gradient-bg($custom-range-thumb-bg);
340
392
  border: $custom-range-thumb-border;
341
393
  @include border-radius($custom-range-thumb-border-radius);
@@ -410,7 +462,7 @@
410
462
  cursor: $custom-range-track-cursor;
411
463
  background-color: transparent;
412
464
  border-color: transparent;
413
- border-width: ($custom-range-thumb-height * .5);
465
+ border-width: $custom-range-thumb-height / 2;
414
466
  @include box-shadow($custom-range-track-box-shadow);
415
467
  }
416
468
 
@@ -424,6 +476,28 @@
424
476
  background-color: $custom-range-track-bg;
425
477
  @include border-radius($custom-range-track-border-radius);
426
478
  }
479
+
480
+ &:disabled {
481
+ &::-webkit-slider-thumb {
482
+ background-color: $custom-range-thumb-disabled-bg;
483
+ }
484
+
485
+ &::-webkit-slider-runnable-track {
486
+ cursor: default;
487
+ }
488
+
489
+ &::-moz-range-thumb {
490
+ background-color: $custom-range-thumb-disabled-bg;
491
+ }
492
+
493
+ &::-moz-range-track {
494
+ cursor: default;
495
+ }
496
+
497
+ &::-ms-thumb {
498
+ background-color: $custom-range-thumb-disabled-bg;
499
+ }
500
+ }
427
501
  }
428
502
 
429
503
  .custom-control-label::before,