bootstrap 4.6.2 → 5.3.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (175) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +55 -0
  3. data/README.md +28 -5
  4. data/assets/javascripts/bootstrap/alert.js +50 -147
  5. data/assets/javascripts/bootstrap/base-component.js +83 -0
  6. data/assets/javascripts/bootstrap/button.js +40 -190
  7. data/assets/javascripts/bootstrap/carousel.js +282 -537
  8. data/assets/javascripts/bootstrap/collapse.js +166 -314
  9. data/assets/javascripts/bootstrap/dom/data.js +62 -0
  10. data/assets/javascripts/bootstrap/dom/event-handler.js +236 -0
  11. data/assets/javascripts/bootstrap/dom/manipulator.js +71 -0
  12. data/assets/javascripts/bootstrap/dom/selector-engine.js +103 -0
  13. data/assets/javascripts/bootstrap/dropdown.js +297 -455
  14. data/assets/javascripts/bootstrap/modal.js +223 -566
  15. data/assets/javascripts/bootstrap/offcanvas.js +245 -0
  16. data/assets/javascripts/bootstrap/popover.js +59 -208
  17. data/assets/javascripts/bootstrap/scrollspy.js +213 -276
  18. data/assets/javascripts/bootstrap/tab.js +222 -200
  19. data/assets/javascripts/bootstrap/toast.js +137 -206
  20. data/assets/javascripts/bootstrap/tooltip.js +403 -746
  21. data/assets/javascripts/bootstrap/util/backdrop.js +139 -0
  22. data/assets/javascripts/bootstrap/util/component-functions.js +41 -0
  23. data/assets/javascripts/bootstrap/util/config.js +67 -0
  24. data/assets/javascripts/bootstrap/util/focustrap.js +113 -0
  25. data/assets/javascripts/bootstrap/util/index.js +281 -0
  26. data/assets/javascripts/bootstrap/util/sanitizer.js +110 -0
  27. data/assets/javascripts/bootstrap/util/scrollbar.js +112 -0
  28. data/assets/javascripts/bootstrap/util/swipe.js +134 -0
  29. data/assets/javascripts/bootstrap/util/template-factory.js +150 -0
  30. data/assets/javascripts/bootstrap-global-this-define.js +6 -0
  31. data/assets/javascripts/bootstrap-global-this-undefine.js +2 -0
  32. data/assets/javascripts/bootstrap-sprockets.js +21 -5
  33. data/assets/javascripts/bootstrap.js +3623 -3485
  34. data/assets/javascripts/bootstrap.min.js +3 -3
  35. data/assets/stylesheets/_bootstrap-grid.scss +53 -21
  36. data/assets/stylesheets/_bootstrap-reboot.scss +5 -7
  37. data/assets/stylesheets/_bootstrap.scss +21 -13
  38. data/assets/stylesheets/bootstrap/_accordion.scss +158 -0
  39. data/assets/stylesheets/bootstrap/_alert.scss +32 -16
  40. data/assets/stylesheets/bootstrap/_badge.scss +15 -31
  41. data/assets/stylesheets/bootstrap/_breadcrumb.scss +22 -24
  42. data/assets/stylesheets/bootstrap/_button-group.scss +27 -48
  43. data/assets/stylesheets/bootstrap/_buttons.scss +136 -71
  44. data/assets/stylesheets/bootstrap/_card.scss +66 -113
  45. data/assets/stylesheets/bootstrap/_carousel.scss +78 -34
  46. data/assets/stylesheets/bootstrap/_close.scss +51 -28
  47. data/assets/stylesheets/bootstrap/_containers.scss +41 -0
  48. data/assets/stylesheets/bootstrap/_dropdown.scss +129 -71
  49. data/assets/stylesheets/bootstrap/_forms.scss +9 -347
  50. data/assets/stylesheets/bootstrap/_functions.scss +135 -23
  51. data/assets/stylesheets/bootstrap/_grid.scss +18 -52
  52. data/assets/stylesheets/bootstrap/_helpers.scss +12 -0
  53. data/assets/stylesheets/bootstrap/_list-group.scss +77 -34
  54. data/assets/stylesheets/bootstrap/_maps.scss +174 -0
  55. data/assets/stylesheets/bootstrap/_mixins.scss +10 -15
  56. data/assets/stylesheets/bootstrap/_modal.scss +107 -110
  57. data/assets/stylesheets/bootstrap/_nav.scss +99 -27
  58. data/assets/stylesheets/bootstrap/_navbar.scss +129 -172
  59. data/assets/stylesheets/bootstrap/_offcanvas.scss +146 -0
  60. data/assets/stylesheets/bootstrap/_pagination.scss +72 -37
  61. data/assets/stylesheets/bootstrap/_placeholders.scss +51 -0
  62. data/assets/stylesheets/bootstrap/_popover.scss +99 -73
  63. data/assets/stylesheets/bootstrap/_progress.scss +35 -14
  64. data/assets/stylesheets/bootstrap/_reboot.scss +318 -192
  65. data/assets/stylesheets/bootstrap/_root.scss +174 -9
  66. data/assets/stylesheets/bootstrap/_spinners.scss +43 -23
  67. data/assets/stylesheets/bootstrap/_tables.scss +101 -115
  68. data/assets/stylesheets/bootstrap/_toasts.scss +54 -27
  69. data/assets/stylesheets/bootstrap/_tooltip.scss +67 -63
  70. data/assets/stylesheets/bootstrap/_transitions.scss +3 -2
  71. data/assets/stylesheets/bootstrap/_type.scss +40 -59
  72. data/assets/stylesheets/bootstrap/_utilities.scss +806 -18
  73. data/assets/stylesheets/bootstrap/_variables-dark.scss +85 -0
  74. data/assets/stylesheets/bootstrap/_variables.scss +1202 -606
  75. data/assets/stylesheets/bootstrap/bootstrap-utilities.scss +19 -0
  76. data/assets/stylesheets/bootstrap/forms/_floating-labels.scss +95 -0
  77. data/assets/stylesheets/bootstrap/forms/_form-check.scss +188 -0
  78. data/assets/stylesheets/bootstrap/forms/_form-control.scss +214 -0
  79. data/assets/stylesheets/bootstrap/forms/_form-range.scss +91 -0
  80. data/assets/stylesheets/bootstrap/forms/_form-select.scss +80 -0
  81. data/assets/stylesheets/bootstrap/forms/_form-text.scss +11 -0
  82. data/assets/stylesheets/bootstrap/forms/_input-group.scss +132 -0
  83. data/assets/stylesheets/bootstrap/forms/_labels.scss +36 -0
  84. data/assets/stylesheets/bootstrap/forms/_validation.scss +12 -0
  85. data/assets/stylesheets/bootstrap/helpers/_color-bg.scss +7 -0
  86. data/assets/stylesheets/bootstrap/helpers/_colored-links.scss +30 -0
  87. data/assets/stylesheets/bootstrap/helpers/_focus-ring.scss +5 -0
  88. data/assets/stylesheets/bootstrap/helpers/_icon-link.scss +25 -0
  89. data/assets/stylesheets/bootstrap/helpers/_position.scss +36 -0
  90. data/assets/stylesheets/bootstrap/helpers/_ratio.scss +26 -0
  91. data/assets/stylesheets/bootstrap/helpers/_stacks.scss +15 -0
  92. data/assets/stylesheets/bootstrap/helpers/_stretched-link.scss +15 -0
  93. data/assets/stylesheets/bootstrap/helpers/_text-truncation.scss +7 -0
  94. data/assets/stylesheets/bootstrap/helpers/_visually-hidden.scss +8 -0
  95. data/assets/stylesheets/bootstrap/helpers/_vr.scss +8 -0
  96. data/assets/stylesheets/bootstrap/mixins/_alert.scss +11 -6
  97. data/assets/stylesheets/bootstrap/mixins/_backdrop.scss +14 -0
  98. data/assets/stylesheets/bootstrap/mixins/_banner.scss +7 -0
  99. data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +10 -8
  100. data/assets/stylesheets/bootstrap/mixins/_box-shadow.scss +7 -9
  101. data/assets/stylesheets/bootstrap/mixins/_breakpoints.scss +20 -16
  102. data/assets/stylesheets/bootstrap/mixins/_buttons.scss +60 -100
  103. data/assets/stylesheets/bootstrap/mixins/_caret.scss +34 -27
  104. data/assets/stylesheets/bootstrap/mixins/_clearfix.scss +2 -0
  105. data/assets/stylesheets/bootstrap/mixins/_color-mode.scss +21 -0
  106. data/assets/stylesheets/bootstrap/mixins/_color-scheme.scss +7 -0
  107. data/assets/stylesheets/bootstrap/mixins/_container.scss +11 -0
  108. data/assets/stylesheets/bootstrap/mixins/_forms.scss +54 -96
  109. data/assets/stylesheets/bootstrap/mixins/_gradients.scss +13 -11
  110. data/assets/stylesheets/bootstrap/mixins/_grid.scss +118 -36
  111. data/assets/stylesheets/bootstrap/mixins/_image.scss +1 -21
  112. data/assets/stylesheets/bootstrap/mixins/_list-group.scss +7 -2
  113. data/assets/stylesheets/bootstrap/mixins/_lists.scss +1 -1
  114. data/assets/stylesheets/bootstrap/mixins/_pagination.scss +7 -19
  115. data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +2 -2
  116. data/assets/stylesheets/bootstrap/mixins/_table-variants.scss +24 -0
  117. data/assets/stylesheets/bootstrap/mixins/_transition.scss +1 -1
  118. data/assets/stylesheets/bootstrap/mixins/_utilities.scss +97 -0
  119. data/assets/stylesheets/bootstrap/mixins/_visually-hidden.scss +33 -0
  120. data/assets/stylesheets/bootstrap/utilities/_api.scss +47 -0
  121. data/assets/stylesheets/bootstrap/vendor/_rfs.scss +211 -91
  122. data/bootstrap.gemspec +3 -5
  123. data/lib/bootstrap/version.rb +2 -2
  124. data/tasks/updater/js.rb +17 -5
  125. data/tasks/updater/network.rb +2 -2
  126. data/tasks/updater/scss.rb +1 -1
  127. data/tasks/updater.rb +2 -2
  128. data/test/dummy_rails/app/assets/javascripts/application.js +4 -3
  129. data/test/dummy_rails/app/views/layouts/application.html.erb +3 -1
  130. data/test/dummy_rails/app/views/pages/root.html +89 -0
  131. data/test/dummy_rails/config/application.rb +0 -3
  132. data/test/gemfiles/rails_5_2.gemfile +8 -0
  133. data/test/gemfiles/rails_6_1.gemfile +7 -0
  134. data/test/gemfiles/rails_7_0.gemfile +7 -0
  135. data/test/test_helper.rb +3 -2
  136. metadata +78 -82
  137. data/.travis.yml +0 -31
  138. data/assets/javascripts/bootstrap/util.js +0 -189
  139. data/assets/stylesheets/bootstrap/_code.scss +0 -48
  140. data/assets/stylesheets/bootstrap/_custom-forms.scss +0 -526
  141. data/assets/stylesheets/bootstrap/_input-group.scss +0 -211
  142. data/assets/stylesheets/bootstrap/_jumbotron.scss +0 -17
  143. data/assets/stylesheets/bootstrap/_media.scss +0 -8
  144. data/assets/stylesheets/bootstrap/_print.scss +0 -132
  145. data/assets/stylesheets/bootstrap/mixins/_background-variant.scss +0 -23
  146. data/assets/stylesheets/bootstrap/mixins/_badge.scss +0 -17
  147. data/assets/stylesheets/bootstrap/mixins/_float.scss +0 -14
  148. data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +0 -80
  149. data/assets/stylesheets/bootstrap/mixins/_hover.scss +0 -37
  150. data/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +0 -11
  151. data/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +0 -34
  152. data/assets/stylesheets/bootstrap/mixins/_size.scss +0 -7
  153. data/assets/stylesheets/bootstrap/mixins/_table-row.scss +0 -39
  154. data/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +0 -17
  155. data/assets/stylesheets/bootstrap/mixins/_text-hide.scss +0 -11
  156. data/assets/stylesheets/bootstrap/mixins/_visibility.scss +0 -8
  157. data/assets/stylesheets/bootstrap/utilities/_align.scss +0 -8
  158. data/assets/stylesheets/bootstrap/utilities/_background.scss +0 -19
  159. data/assets/stylesheets/bootstrap/utilities/_borders.scss +0 -75
  160. data/assets/stylesheets/bootstrap/utilities/_display.scss +0 -26
  161. data/assets/stylesheets/bootstrap/utilities/_embed.scss +0 -39
  162. data/assets/stylesheets/bootstrap/utilities/_flex.scss +0 -51
  163. data/assets/stylesheets/bootstrap/utilities/_float.scss +0 -11
  164. data/assets/stylesheets/bootstrap/utilities/_interactions.scss +0 -5
  165. data/assets/stylesheets/bootstrap/utilities/_overflow.scss +0 -5
  166. data/assets/stylesheets/bootstrap/utilities/_position.scss +0 -32
  167. data/assets/stylesheets/bootstrap/utilities/_screenreaders.scss +0 -11
  168. data/assets/stylesheets/bootstrap/utilities/_shadows.scss +0 -6
  169. data/assets/stylesheets/bootstrap/utilities/_sizing.scss +0 -20
  170. data/assets/stylesheets/bootstrap/utilities/_spacing.scss +0 -73
  171. data/assets/stylesheets/bootstrap/utilities/_stretched-link.scss +0 -19
  172. data/assets/stylesheets/bootstrap/utilities/_text.scss +0 -72
  173. data/assets/stylesheets/bootstrap/utilities/_visibility.scss +0 -13
  174. data/test/dummy_rails/app/views/pages/root.html.slim +0 -58
  175. /data/assets/stylesheets/bootstrap/{utilities → helpers}/_clearfix.scss +0 -0
@@ -1,526 +0,0 @@
1
- // Embedded icons from Open Iconic.
2
- // Released under MIT and copyright 2014 Waybury.
3
- // https://useiconic.com/open
4
-
5
-
6
- // Checkboxes and radios
7
- //
8
- // Base class takes care of all the key behavioral aspects.
9
-
10
- .custom-control {
11
- position: relative;
12
- z-index: 1;
13
- display: block;
14
- min-height: $font-size-base * $line-height-base;
15
- padding-left: $custom-control-gutter + $custom-control-indicator-size;
16
- print-color-adjust: exact; // Keep themed appearance for print
17
- }
18
-
19
- .custom-control-inline {
20
- display: inline-flex;
21
- margin-right: $custom-control-spacer-x;
22
- }
23
-
24
- .custom-control-input {
25
- position: absolute;
26
- left: 0;
27
- z-index: -1; // Put the input behind the label so it doesn't overlay text
28
- width: $custom-control-indicator-size;
29
- height: ($font-size-base * $line-height-base + $custom-control-indicator-size) * .5;
30
- opacity: 0;
31
-
32
- &:checked ~ .custom-control-label::before {
33
- color: $custom-control-indicator-checked-color;
34
- border-color: $custom-control-indicator-checked-border-color;
35
- @include gradient-bg($custom-control-indicator-checked-bg);
36
- @include box-shadow($custom-control-indicator-checked-box-shadow);
37
- }
38
-
39
- &:focus ~ .custom-control-label::before {
40
- // the mixin is not used here to make sure there is feedback
41
- @if $enable-shadows {
42
- box-shadow: $input-box-shadow, $custom-control-indicator-focus-box-shadow;
43
- } @else {
44
- box-shadow: $custom-control-indicator-focus-box-shadow;
45
- }
46
- }
47
-
48
- &:focus:not(:checked) ~ .custom-control-label::before {
49
- border-color: $custom-control-indicator-focus-border-color;
50
- }
51
-
52
- &:not(:disabled):active ~ .custom-control-label::before {
53
- color: $custom-control-indicator-active-color;
54
- background-color: $custom-control-indicator-active-bg;
55
- border-color: $custom-control-indicator-active-border-color;
56
- @include box-shadow($custom-control-indicator-active-box-shadow);
57
- }
58
-
59
- // Use [disabled] and :disabled to work around https://github.com/twbs/bootstrap/issues/28247
60
- &[disabled],
61
- &:disabled {
62
- ~ .custom-control-label {
63
- color: $custom-control-label-disabled-color;
64
-
65
- &::before {
66
- background-color: $custom-control-indicator-disabled-bg;
67
- }
68
- }
69
- }
70
- }
71
-
72
- // Custom control indicators
73
- //
74
- // Build the custom controls out of pseudo-elements.
75
-
76
- .custom-control-label {
77
- position: relative;
78
- margin-bottom: 0;
79
- color: $custom-control-label-color;
80
- vertical-align: top;
81
- cursor: $custom-control-cursor;
82
-
83
- // Background-color and (when enabled) gradient
84
- &::before {
85
- position: absolute;
86
- top: ($font-size-base * $line-height-base - $custom-control-indicator-size) * .5;
87
- left: -($custom-control-gutter + $custom-control-indicator-size);
88
- display: block;
89
- width: $custom-control-indicator-size;
90
- height: $custom-control-indicator-size;
91
- pointer-events: none;
92
- content: "";
93
- background-color: $custom-control-indicator-bg;
94
- border: $custom-control-indicator-border-width solid $custom-control-indicator-border-color;
95
- @include box-shadow($custom-control-indicator-box-shadow);
96
- }
97
-
98
- // Foreground (icon)
99
- &::after {
100
- position: absolute;
101
- top: ($font-size-base * $line-height-base - $custom-control-indicator-size) * .5;
102
- left: -($custom-control-gutter + $custom-control-indicator-size);
103
- display: block;
104
- width: $custom-control-indicator-size;
105
- height: $custom-control-indicator-size;
106
- content: "";
107
- background: 50% / #{$custom-control-indicator-bg-size} no-repeat;
108
- }
109
- }
110
-
111
-
112
- // Checkboxes
113
- //
114
- // Tweak just a few things for checkboxes.
115
-
116
- .custom-checkbox {
117
- .custom-control-label::before {
118
- @include border-radius($custom-checkbox-indicator-border-radius);
119
- }
120
-
121
- .custom-control-input:checked ~ .custom-control-label {
122
- &::after {
123
- background-image: escape-svg($custom-checkbox-indicator-icon-checked);
124
- }
125
- }
126
-
127
- .custom-control-input:indeterminate ~ .custom-control-label {
128
- &::before {
129
- border-color: $custom-checkbox-indicator-indeterminate-border-color;
130
- @include gradient-bg($custom-checkbox-indicator-indeterminate-bg);
131
- @include box-shadow($custom-checkbox-indicator-indeterminate-box-shadow);
132
- }
133
- &::after {
134
- background-image: escape-svg($custom-checkbox-indicator-icon-indeterminate);
135
- }
136
- }
137
-
138
- .custom-control-input:disabled {
139
- &:checked ~ .custom-control-label::before {
140
- @include gradient-bg($custom-control-indicator-checked-disabled-bg);
141
- }
142
- &:indeterminate ~ .custom-control-label::before {
143
- @include gradient-bg($custom-control-indicator-checked-disabled-bg);
144
- }
145
- }
146
- }
147
-
148
- // Radios
149
- //
150
- // Tweak just a few things for radios.
151
-
152
- .custom-radio {
153
- .custom-control-label::before {
154
- // stylelint-disable-next-line property-disallowed-list
155
- border-radius: $custom-radio-indicator-border-radius;
156
- }
157
-
158
- .custom-control-input:checked ~ .custom-control-label {
159
- &::after {
160
- background-image: escape-svg($custom-radio-indicator-icon-checked);
161
- }
162
- }
163
-
164
- .custom-control-input:disabled {
165
- &:checked ~ .custom-control-label::before {
166
- @include gradient-bg($custom-control-indicator-checked-disabled-bg);
167
- }
168
- }
169
- }
170
-
171
-
172
- // switches
173
- //
174
- // Tweak a few things for switches
175
-
176
- .custom-switch {
177
- padding-left: $custom-switch-width + $custom-control-gutter;
178
-
179
- .custom-control-label {
180
- &::before {
181
- left: -($custom-switch-width + $custom-control-gutter);
182
- width: $custom-switch-width;
183
- pointer-events: all;
184
- // stylelint-disable-next-line property-disallowed-list
185
- border-radius: $custom-switch-indicator-border-radius;
186
- }
187
-
188
- &::after {
189
- top: add(($font-size-base * $line-height-base - $custom-control-indicator-size) * .5, $custom-control-indicator-border-width * 2);
190
- left: add(-($custom-switch-width + $custom-control-gutter), $custom-control-indicator-border-width * 2);
191
- width: $custom-switch-indicator-size;
192
- height: $custom-switch-indicator-size;
193
- background-color: $custom-control-indicator-border-color;
194
- // stylelint-disable-next-line property-disallowed-list
195
- border-radius: $custom-switch-indicator-border-radius;
196
- @include transition(transform .15s ease-in-out, $custom-forms-transition);
197
- }
198
- }
199
-
200
- .custom-control-input:checked ~ .custom-control-label {
201
- &::after {
202
- background-color: $custom-control-indicator-bg;
203
- transform: translateX($custom-switch-width - $custom-control-indicator-size);
204
- }
205
- }
206
-
207
- .custom-control-input:disabled {
208
- &:checked ~ .custom-control-label::before {
209
- @include gradient-bg($custom-control-indicator-checked-disabled-bg);
210
- }
211
- }
212
- }
213
-
214
-
215
- // Select
216
- //
217
- // Replaces the browser default select with a custom one, mostly pulled from
218
- // https://primer.github.io/.
219
- //
220
-
221
- .custom-select {
222
- display: inline-block;
223
- width: 100%;
224
- height: $custom-select-height;
225
- padding: $custom-select-padding-y ($custom-select-padding-x + $custom-select-indicator-padding) $custom-select-padding-y $custom-select-padding-x;
226
- font-family: $custom-select-font-family;
227
- @include font-size($custom-select-font-size);
228
- font-weight: $custom-select-font-weight;
229
- line-height: $custom-select-line-height;
230
- color: $custom-select-color;
231
- vertical-align: middle;
232
- background: $custom-select-bg $custom-select-background;
233
- border: $custom-select-border-width solid $custom-select-border-color;
234
- @include border-radius($custom-select-border-radius, 0);
235
- @include box-shadow($custom-select-box-shadow);
236
- appearance: none;
237
-
238
- &:focus {
239
- border-color: $custom-select-focus-border-color;
240
- outline: 0;
241
- @if $enable-shadows {
242
- @include box-shadow($custom-select-box-shadow, $custom-select-focus-box-shadow);
243
- } @else {
244
- // Avoid using mixin so we can pass custom focus shadow properly
245
- box-shadow: $custom-select-focus-box-shadow;
246
- }
247
-
248
- &::-ms-value {
249
- // For visual consistency with other platforms/browsers,
250
- // suppress the default white text on blue background highlight given to
251
- // the selected option text when the (still closed) <select> receives focus
252
- // in IE and (under certain conditions) Edge.
253
- // See https://github.com/twbs/bootstrap/issues/19398.
254
- color: $input-color;
255
- background-color: $input-bg;
256
- }
257
- }
258
-
259
- &[multiple],
260
- &[size]:not([size="1"]) {
261
- height: auto;
262
- padding-right: $custom-select-padding-x;
263
- background-image: none;
264
- }
265
-
266
- &:disabled {
267
- color: $custom-select-disabled-color;
268
- background-color: $custom-select-disabled-bg;
269
- }
270
-
271
- // Hides the default caret in IE11
272
- &::-ms-expand {
273
- display: none;
274
- }
275
-
276
- // Remove outline from select box in FF
277
- &:-moz-focusring {
278
- color: transparent;
279
- text-shadow: 0 0 0 $custom-select-color;
280
- }
281
- }
282
-
283
- .custom-select-sm {
284
- height: $custom-select-height-sm;
285
- padding-top: $custom-select-padding-y-sm;
286
- padding-bottom: $custom-select-padding-y-sm;
287
- padding-left: $custom-select-padding-x-sm;
288
- @include font-size($custom-select-font-size-sm);
289
- }
290
-
291
- .custom-select-lg {
292
- height: $custom-select-height-lg;
293
- padding-top: $custom-select-padding-y-lg;
294
- padding-bottom: $custom-select-padding-y-lg;
295
- padding-left: $custom-select-padding-x-lg;
296
- @include font-size($custom-select-font-size-lg);
297
- }
298
-
299
-
300
- // File
301
- //
302
- // Custom file input.
303
-
304
- .custom-file {
305
- position: relative;
306
- display: inline-block;
307
- width: 100%;
308
- height: $custom-file-height;
309
- margin-bottom: 0;
310
- }
311
-
312
- .custom-file-input {
313
- position: relative;
314
- z-index: 2;
315
- width: 100%;
316
- height: $custom-file-height;
317
- margin: 0;
318
- overflow: hidden;
319
- opacity: 0;
320
-
321
- &:focus ~ .custom-file-label {
322
- border-color: $custom-file-focus-border-color;
323
- box-shadow: $custom-file-focus-box-shadow;
324
- }
325
-
326
- // Use [disabled] and :disabled to work around https://github.com/twbs/bootstrap/issues/28247
327
- &[disabled] ~ .custom-file-label,
328
- &:disabled ~ .custom-file-label {
329
- background-color: $custom-file-disabled-bg;
330
- }
331
-
332
- @each $lang, $value in $custom-file-text {
333
- &:lang(#{$lang}) ~ .custom-file-label::after {
334
- content: $value;
335
- }
336
- }
337
-
338
- ~ .custom-file-label[data-browse]::after {
339
- content: attr(data-browse);
340
- }
341
- }
342
-
343
- .custom-file-label {
344
- position: absolute;
345
- top: 0;
346
- right: 0;
347
- left: 0;
348
- z-index: 1;
349
- height: $custom-file-height;
350
- padding: $custom-file-padding-y $custom-file-padding-x;
351
- overflow: hidden;
352
- font-family: $custom-file-font-family;
353
- font-weight: $custom-file-font-weight;
354
- line-height: $custom-file-line-height;
355
- color: $custom-file-color;
356
- background-color: $custom-file-bg;
357
- border: $custom-file-border-width solid $custom-file-border-color;
358
- @include border-radius($custom-file-border-radius);
359
- @include box-shadow($custom-file-box-shadow);
360
-
361
- &::after {
362
- position: absolute;
363
- top: 0;
364
- right: 0;
365
- bottom: 0;
366
- z-index: 3;
367
- display: block;
368
- height: $custom-file-height-inner;
369
- padding: $custom-file-padding-y $custom-file-padding-x;
370
- line-height: $custom-file-line-height;
371
- color: $custom-file-button-color;
372
- content: "Browse";
373
- @include gradient-bg($custom-file-button-bg);
374
- border-left: inherit;
375
- @include border-radius(0 $custom-file-border-radius $custom-file-border-radius 0);
376
- }
377
- }
378
-
379
- // Range
380
- //
381
- // Style range inputs the same across browsers. Vendor-specific rules for pseudo
382
- // elements cannot be mixed. As such, there are no shared styles for focus or
383
- // active states on prefixed selectors.
384
-
385
- .custom-range {
386
- width: 100%;
387
- height: add($custom-range-thumb-height, $custom-range-thumb-focus-box-shadow-width * 2);
388
- padding: 0; // Need to reset padding
389
- background-color: transparent;
390
- appearance: none;
391
-
392
- &:focus {
393
- outline: 0;
394
-
395
- // Pseudo-elements must be split across multiple rulesets to have an effect.
396
- // No box-shadow() mixin for focus accessibility.
397
- &::-webkit-slider-thumb { box-shadow: $custom-range-thumb-focus-box-shadow; }
398
- &::-moz-range-thumb { box-shadow: $custom-range-thumb-focus-box-shadow; }
399
- &::-ms-thumb { box-shadow: $custom-range-thumb-focus-box-shadow; }
400
- }
401
-
402
- &::-moz-focus-outer {
403
- border: 0;
404
- }
405
-
406
- &::-webkit-slider-thumb {
407
- width: $custom-range-thumb-width;
408
- height: $custom-range-thumb-height;
409
- margin-top: ($custom-range-track-height - $custom-range-thumb-height) * .5; // Webkit specific
410
- @include gradient-bg($custom-range-thumb-bg);
411
- border: $custom-range-thumb-border;
412
- @include border-radius($custom-range-thumb-border-radius);
413
- @include box-shadow($custom-range-thumb-box-shadow);
414
- @include transition($custom-forms-transition);
415
- appearance: none;
416
-
417
- &:active {
418
- @include gradient-bg($custom-range-thumb-active-bg);
419
- }
420
- }
421
-
422
- &::-webkit-slider-runnable-track {
423
- width: $custom-range-track-width;
424
- height: $custom-range-track-height;
425
- color: transparent; // Why?
426
- cursor: $custom-range-track-cursor;
427
- background-color: $custom-range-track-bg;
428
- border-color: transparent;
429
- @include border-radius($custom-range-track-border-radius);
430
- @include box-shadow($custom-range-track-box-shadow);
431
- }
432
-
433
- &::-moz-range-thumb {
434
- width: $custom-range-thumb-width;
435
- height: $custom-range-thumb-height;
436
- @include gradient-bg($custom-range-thumb-bg);
437
- border: $custom-range-thumb-border;
438
- @include border-radius($custom-range-thumb-border-radius);
439
- @include box-shadow($custom-range-thumb-box-shadow);
440
- @include transition($custom-forms-transition);
441
- appearance: none;
442
-
443
- &:active {
444
- @include gradient-bg($custom-range-thumb-active-bg);
445
- }
446
- }
447
-
448
- &::-moz-range-track {
449
- width: $custom-range-track-width;
450
- height: $custom-range-track-height;
451
- color: transparent;
452
- cursor: $custom-range-track-cursor;
453
- background-color: $custom-range-track-bg;
454
- border-color: transparent; // Firefox specific?
455
- @include border-radius($custom-range-track-border-radius);
456
- @include box-shadow($custom-range-track-box-shadow);
457
- }
458
-
459
- &::-ms-thumb {
460
- width: $custom-range-thumb-width;
461
- height: $custom-range-thumb-height;
462
- margin-top: 0; // Edge specific
463
- margin-right: $custom-range-thumb-focus-box-shadow-width; // Workaround that overflowed box-shadow is hidden.
464
- margin-left: $custom-range-thumb-focus-box-shadow-width; // Workaround that overflowed box-shadow is hidden.
465
- @include gradient-bg($custom-range-thumb-bg);
466
- border: $custom-range-thumb-border;
467
- @include border-radius($custom-range-thumb-border-radius);
468
- @include box-shadow($custom-range-thumb-box-shadow);
469
- @include transition($custom-forms-transition);
470
- appearance: none;
471
-
472
- &:active {
473
- @include gradient-bg($custom-range-thumb-active-bg);
474
- }
475
- }
476
-
477
- &::-ms-track {
478
- width: $custom-range-track-width;
479
- height: $custom-range-track-height;
480
- color: transparent;
481
- cursor: $custom-range-track-cursor;
482
- background-color: transparent;
483
- border-color: transparent;
484
- border-width: $custom-range-thumb-height * .5;
485
- @include box-shadow($custom-range-track-box-shadow);
486
- }
487
-
488
- &::-ms-fill-lower {
489
- background-color: $custom-range-track-bg;
490
- @include border-radius($custom-range-track-border-radius);
491
- }
492
-
493
- &::-ms-fill-upper {
494
- margin-right: 15px; // arbitrary?
495
- background-color: $custom-range-track-bg;
496
- @include border-radius($custom-range-track-border-radius);
497
- }
498
-
499
- &:disabled {
500
- &::-webkit-slider-thumb {
501
- background-color: $custom-range-thumb-disabled-bg;
502
- }
503
-
504
- &::-webkit-slider-runnable-track {
505
- cursor: default;
506
- }
507
-
508
- &::-moz-range-thumb {
509
- background-color: $custom-range-thumb-disabled-bg;
510
- }
511
-
512
- &::-moz-range-track {
513
- cursor: default;
514
- }
515
-
516
- &::-ms-thumb {
517
- background-color: $custom-range-thumb-disabled-bg;
518
- }
519
- }
520
- }
521
-
522
- .custom-control-label::before,
523
- .custom-file-label,
524
- .custom-select {
525
- @include transition($custom-forms-transition);
526
- }