Proyectos de Subversion Moodle

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1441 ariadna 1
// TODO: MDL-84465 Final deprecation in 6.0. Remove this file when the Bootstrap 4 backward compatibility period ends.
2
 
3
/**
4
 * Some backwards compatibility for Bootstrap v4.
5
 */
6
 
7
// stylelint-disable declaration-no-important
8
// stylelint-disable max-line-length
9
// stylelint-disable property-disallowed-list
10
// stylelint-disable selector-no-qualifying-type
11
 
12
//
13
// '.media' component
14
//
15
 
16
.media {
17
    @include deprecated-styles(".media");
18
    display: flex;
19
    align-items: flex-start;
20
}
21
 
22
.media-body {
23
    @include deprecated-styles(".media-body");
24
    flex: 1;
25
}
26
 
27
//
28
// Badge colours and pills
29
//
30
 
31
$badge-focus-width: $input-btn-focus-width !default;
32
$yiq-text-dark:  $gray-900 !default;
33
$yiq-text-light: $white !default;
34
$yiq-contrasted-threshold: 128;
35
 
36
@function color-yiq($color, $dark: $yiq-text-dark, $light: $yiq-text-light) {
37
    $r: red($color);
38
    $g: green($color);
39
    $b: blue($color);
40
    $yiq: (($r * 299) + ($g * 587) + ($b * 114)) * .001;
41
    @if ($yiq >= $yiq-contrasted-threshold) {
42
        @return $dark;
43
    }
44
    @else {
45
        @return $light;
46
    }
47
}
48
 
49
@mixin hover-focus() {
50
    &:hover,
51
    &:focus {
52
        @content;
53
    }
54
}
55
 
56
@mixin badge-variant($bg) {
57
    color: color-yiq($bg);
58
    background-color: $bg;
59
 
60
    @at-root a#{&} {
61
        @include hover-focus() {
62
            color: color-yiq($bg);
63
            background-color: darken($bg, 10%);
64
        }
65
 
66
        &:focus,
67
        &.focus {
68
            outline: 0;
69
            box-shadow: 0 0 0 $badge-focus-width rgba($bg, .5);
70
        }
71
    }
72
}
73
 
74
@each $color, $value in $theme-colors {
75
    .badge-#{$color} {
76
        @include deprecated-styles(".badge-#{$color}");
77
        @include badge-variant($value);
78
    }
79
}
80
 
81
$badge-pill-padding-x: .6em !default;
82
$badge-pill-border-radius: 10rem !default;
83
 
84
.badge-pill {
85
    @include deprecated-styles(".badge-pill");
86
    padding-right: $badge-pill-padding-x;
87
    padding-left: $badge-pill-padding-x;
88
    @include border-radius($badge-pill-border-radius);
89
}
90
 
91
//
92
// '.form-group' and '.form-inline'
93
//
94
 
95
$form-group-margin-bottom: 1rem !default;
96
 
97
.form-group {
98
    @include deprecated-styles(".form-group");
99
    margin-bottom: $form-group-margin-bottom;
100
}
101
 
102
$form-check-input-margin-x: .25rem !default;
103
 
104
.form-inline {
105
    @include deprecated-styles(".form-inline");
106
    display: flex;
107
    flex-flow: row wrap;
108
    align-items: center;
109
 
110
    .form-check {
111
        width: 100%;
112
    }
113
 
114
    @include media-breakpoint-up(sm) {
115
        label {
116
            display: flex;
117
            align-items: center;
118
            justify-content: center;
119
            margin-bottom: 0;
120
        }
121
 
122
        .form-group {
123
            display: flex;
124
            flex: 0 0 auto;
125
            flex-flow: row wrap;
126
            align-items: center;
127
            margin-bottom: 0;
128
        }
129
 
130
        .form-control {
131
            display: inline-block;
132
            width: auto;
133
            vertical-align: middle;
134
        }
135
 
136
        .form-control-plaintext {
137
            display: inline-block;
138
        }
139
 
140
        .input-group,
141
        .custom-select {
142
            width: auto;
143
        }
144
 
145
        .form-check {
146
            display: flex;
147
            align-items: center;
148
            justify-content: center;
149
            width: auto;
150
            padding-left: 0;
151
        }
152
        .form-check-input {
153
            position: relative;
154
            flex-shrink: 0;
155
            margin-top: 0;
156
            margin-right: $form-check-input-margin-x;
157
            margin-left: 0;
158
        }
159
 
160
        .custom-control {
161
            align-items: center;
162
            justify-content: center;
163
        }
164
        .custom-control-label {
165
            margin-bottom: 0;
166
        }
167
    }
168
}
169
 
170
//
171
// '.card-deck'
172
//
173
 
174
$card-deck-margin: 30px * .5 !default;
175
 
176
.card-deck {
177
    @include deprecated-styles(".card-deck");
178
    .card {
179
        margin-bottom: $card-deck-margin;
180
    }
181
 
182
    @include media-breakpoint-up(sm) {
183
        display: flex;
184
        flex-flow: row wrap;
185
        margin-right: -$card-deck-margin;
186
        margin-left: -$card-deck-margin;
187
 
188
        .card {
189
            flex: 1 0 0%;
190
            margin-right: $card-deck-margin;
191
            margin-bottom: 0; // Override the default
192
            margin-left: $card-deck-margin;
193
        }
194
    }
195
}
196
 
197
//
198
// '.no-gutters'
199
//
200
 
201
.no-gutters {
202
    @include deprecated-styles(".no-gutters");
203
    margin-right: 0;
204
    margin-left: 0;
205
    > .col,
206
    > [class*="col-"] {
207
        padding-right: 0;
208
        padding-left: 0;
209
    }
210
}
211
 
212
//
213
// Spacing and layout utilities
214
//
215
 
216
@each $breakpoint in map-keys($grid-breakpoints) {
217
    @include media-breakpoint-up($breakpoint) {
218
        $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
219
 
220
        @each $prop, $abbrev in (margin: m, padding: p) {
221
            @each $size, $length in $spacers {
222
                .#{$abbrev}r#{$infix}-#{$size} {
223
                    @include deprecated-styles(".#{$abbrev}r");
224
                    #{$prop}-right: $length !important;
225
                }
226
                .#{$abbrev}l#{$infix}-#{$size} {
227
                    @include deprecated-styles(".#{$abbrev}l");
228
                    #{$prop}-left: $length !important;
229
                }
230
            }
231
        }
232
 
233
        // Negative margins (e.g., where `.mb-n1` is negative version of `.mb-1`)
234
        @each $size, $length in $spacers {
235
            @if "#{$size}" != "0" {
236
                .mr#{$infix}-n#{$size} {
237
                    @include deprecated-styles(".mr");
238
                    margin-right: -$length !important;
239
                }
240
                .ml#{$infix}-n#{$size} {
241
                    @include deprecated-styles(".ml");
242
                    margin-left: -$length !important;
243
                }
244
            }
245
        }
246
 
247
        // Some special margin utils
248
        .mr#{$infix}-auto {
249
            @include deprecated-styles(".mr");
250
            margin-right: auto !important;
251
        }
252
        .ml#{$infix}-auto {
253
            @include deprecated-styles(".ml");
254
            margin-left: auto !important;
255
        }
256
    }
257
}
258
 
259
//
260
// '.text-left and '.text-right'
261
//
262
 
263
@each $breakpoint in map-keys($grid-breakpoints) {
264
    @include media-breakpoint-up($breakpoint) {
265
        $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
266
 
267
        .text#{$infix}-left {
268
            @include deprecated-styles(".text-left");
269
            text-align: left !important;
270
        }
271
        .text#{$infix}-right {
272
            @include deprecated-styles(".text-right");
273
            text-align: right !important;
274
        }
275
    }
276
}
277
 
278
//
279
// Borders
280
//
281
 
282
.border-right {
283
    @include deprecated-styles(".border-right");
284
    border-right: $border-width solid $border-color !important;
285
}
286
.border-left {
287
    @include deprecated-styles(".border-left");
288
    border-left: $border-width solid $border-color !important;
289
}
290
.border-right-0 {
291
    @include deprecated-styles(".border-right");
292
    border-right: 0 !important;
293
}
294
.border-left-0 {
295
    @include deprecated-styles(".border-left");
296
    border-left: 0 !important;
297
}
298
.rounded-right {
299
    @include deprecated-styles(".rounded-right");
300
    border-top-right-radius: $border-radius !important;
301
    border-bottom-right-radius: $border-radius !important;
302
}
303
.rounded-left {
304
    @include deprecated-styles(".rounded-left");
305
    border-top-left-radius: $border-radius !important;
306
    border-bottom-left-radius: $border-radius !important;
307
}
308
 
309
//
310
// '.float-left and '.float-right'
311
//
312
 
313
@each $breakpoint in map-keys($grid-breakpoints) {
314
    @include media-breakpoint-up($breakpoint) {
315
        $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
316
 
317
        .float#{$infix}-left {
318
            @include deprecated-styles(".float-left");
319
            float: left !important;
320
        }
321
        .float#{$infix}-right {
322
            @include deprecated-styles(".float-right");
323
            float: right !important;
324
        }
325
    }
326
}
327
 
328
//
329
// '.close'
330
//
331
$close-font-size: $font-size-base * 1.5 !default;
332
$close-font-weight: $font-weight-bold !default;
333
$close-color: $black !default;
334
$close-text-shadow: 0 1px 0 $white !default;
335
 
336
@mixin hover() {
337
    &:hover {
338
        @content;
339
    }
340
}
341
 
342
.close {
343
    float: right;
344
    @include font-size($close-font-size);
345
    font-weight: $close-font-weight;
346
    line-height: 1;
347
    color: $close-color;
348
    text-shadow: $close-text-shadow;
349
    opacity: .5;
350
 
351
    // Override <a>'s hover style
352
    @include hover() {
353
        color: $close-color;
354
        text-decoration: none;
355
    }
356
 
357
    &:not(:disabled):not(.disabled) {
358
        @include hover-focus() {
359
            opacity: .75;
360
        }
361
    }
362
}
363
 
364
button.close {
365
    padding: 0;
366
    background-color: transparent;
367
    border: 0;
368
}
369
 
370
a.close.disabled {
371
    pointer-events: none;
372
}
373
 
374
//
375
// Font utilities
376
//
377
 
378
.font-weight-light {
379
    @include deprecated-styles(".font-weight");
380
    font-weight: $font-weight-light !important;
381
}
382
.font-weight-lighter {
383
    @include deprecated-styles(".font-weight");
384
    font-weight: $font-weight-lighter !important;
385
}
386
.font-weight-normal {
387
    @include deprecated-styles(".font-weight");
388
    font-weight: $font-weight-normal !important;
389
}
390
.font-weight-bold {
391
    @include deprecated-styles(".font-weight");
392
    font-weight: $font-weight-bold !important;
393
}
394
.font-weight-bolder {
395
    @include deprecated-styles(".font-weight");
396
    font-weight: $font-weight-bolder !important;
397
}
398
.font-italic {
399
    @include deprecated-styles(".font-weight");
400
    font-style: italic !important;
401
}
402
 
403
//
404
// Rounded sizes
405
//
406
.rounded-sm {
407
    @include deprecated-styles(".rounded-sm");
408
    border-radius: $border-radius-sm !important;
409
}
410
.rounded-lg {
411
    @include deprecated-styles(".rounded-lg");
412
    border-radius: $border-radius-lg !important;
413
}
414
 
415
// Screen reader only.
416
@mixin sr-only() {
417
    position: absolute;
418
    width: 1px;
419
    height: 1px;
420
    padding: 0;
421
    margin: -1px; // Fix for https://github.com/twbs/bootstrap/issues/25686
422
    overflow: hidden;
423
    clip: rect(0, 0, 0, 0);
424
    white-space: nowrap;
425
    border: 0;
426
}
427
 
428
@mixin sr-only-focusable() {
429
    &:active,
430
    &:focus {
431
        position: static;
432
        width: auto;
433
        height: auto;
434
        overflow: visible;
435
        clip: auto;
436
        white-space: normal;
437
    }
438
}
439
 
440
.sr-only {
441
    @include deprecated-styles(".sr-only");
442
    @include sr-only();
443
}
444
 
445
.sr-only-focusable {
446
    @include deprecated-styles(".sr-only-focusable");
447
    @include sr-only-focusable();
448
}
449
 
450
//
451
// Custom controls
452
//
453
 
454
$custom-control-gutter:                 .5rem !default;
455
$custom-control-spacer-x:               1rem !default;
456
$custom-control-cursor:                 null !default;
457
$custom-control-indicator-size:         1rem !default;
458
$custom-control-indicator-bg:           $input-bg !default;
459
$custom-control-indicator-bg-size:      50% 50% !default;
460
$custom-control-indicator-box-shadow:   $input-box-shadow !default;
461
$custom-control-indicator-border-color: $gray-500 !default;
462
$custom-control-indicator-border-width: 1px !default;
463
$custom-control-label-color:            null !default;
464
$custom-control-indicator-disabled-bg:          $input-disabled-bg !default;
465
$custom-control-label-disabled-color:           $gray-600 !default;
466
$custom-control-indicator-checked-color:        $component-active-color !default;
467
$custom-control-indicator-checked-bg:           $component-active-bg !default;
468
$custom-control-indicator-checked-disabled-bg:  rgba(map-get($theme-colors, 'primary'), .5) !default;
469
$custom-control-indicator-checked-box-shadow:   null !default;
470
$custom-control-indicator-checked-border-color: $custom-control-indicator-checked-bg !default;
471
$custom-control-indicator-focus-box-shadow:     $input-focus-box-shadow !default;
472
$custom-control-indicator-focus-border-color:   $input-focus-border-color !default;
473
$custom-control-indicator-active-color:         $component-active-color !default;
474
$custom-control-indicator-active-bg:            lighten($component-active-bg, 35%) !default;
475
$custom-control-indicator-active-box-shadow:    null !default;
476
$custom-control-indicator-active-border-color:  $custom-control-indicator-active-bg !default;
477
$custom-checkbox-indicator-border-radius:       $border-radius !default;
478
$custom-checkbox-indicator-icon-checked:        url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'><path fill='#{$custom-control-indicator-checked-color}' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/></svg>") !default;
479
$custom-checkbox-indicator-indeterminate-bg:           $component-active-bg !default;
480
$custom-checkbox-indicator-indeterminate-color:        $custom-control-indicator-checked-color !default;
481
$custom-checkbox-indicator-icon-indeterminate:         url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'><path stroke='#{$custom-checkbox-indicator-indeterminate-color}' d='M0 2h4'/></svg>") !default;
482
$custom-checkbox-indicator-indeterminate-box-shadow:   null !default;
483
$custom-checkbox-indicator-indeterminate-border-color: $custom-checkbox-indicator-indeterminate-bg !default;
484
$custom-radio-indicator-border-radius:          50% !default;
485
$custom-radio-indicator-icon-checked:           url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'><circle r='3' fill='#{$custom-control-indicator-checked-color}'/></svg>") !default;
486
$custom-switch-width:                           $custom-control-indicator-size * 1.75 !default;
487
$custom-switch-indicator-border-radius:         $custom-control-indicator-size * .5 !default;
488
$custom-switch-indicator-size:                  subtract($custom-control-indicator-size, $custom-control-indicator-border-width * 4) !default;
489
$custom-select-padding-y:           $input-padding-y !default;
490
$custom-select-padding-x:           $input-padding-x !default;
491
$custom-select-font-family:         $input-font-family !default;
492
$custom-select-font-size:           $input-font-size !default;
493
$custom-select-height:              $input-height !default;
494
$custom-select-indicator-padding:   1rem !default; // Extra padding to account for the presence of the background-image based indicator
495
$custom-select-font-weight:         $input-font-weight !default;
496
$custom-select-line-height:         $input-line-height !default;
497
$custom-select-color:               $input-color !default;
498
$custom-select-disabled-color:      $gray-600 !default;
499
$custom-select-bg:                  $input-bg !default;
500
$custom-select-disabled-bg:         $gray-200 !default;
501
$custom-select-bg-size:             8px 10px !default; // In pixels because image dimensions
502
$custom-select-indicator-color:     $gray-800 !default;
503
$custom-select-indicator:           url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'><path fill='#{$custom-select-indicator-color}' d='M2 0L0 2h4zm0 5L0 3h4z'/></svg>") !default;
504
$custom-select-background:          escape-svg($custom-select-indicator) right $custom-select-padding-x center / $custom-select-bg-size no-repeat !default; // Used so we can have multiple background elements (e.g., arrow and feedback icon)
505
$custom-select-feedback-icon-padding-right: add(1em * .75, (2 * $custom-select-padding-y * .75) + $custom-select-padding-x + $custom-select-indicator-padding) !default;
506
$custom-select-feedback-icon-position:      center right ($custom-select-padding-x + $custom-select-indicator-padding) !default;
507
$custom-select-feedback-icon-size:          $input-height-inner-half $input-height-inner-half !default;
508
$custom-select-border-width:        $input-border-width !default;
509
$custom-select-border-color:        $input-border-color !default;
510
$custom-select-border-radius:       $border-radius !default;
511
$custom-select-box-shadow:          inset 0 1px 2px rgba($black, .075) !default;
512
$custom-select-focus-border-color:  $input-focus-border-color !default;
513
$custom-select-focus-width:         $input-focus-width !default;
514
$custom-select-focus-box-shadow:    0 0 0 $custom-select-focus-width $input-btn-focus-color !default;
515
$custom-select-padding-y-sm:        $input-padding-y-sm !default;
516
$custom-select-padding-x-sm:        $input-padding-x-sm !default;
517
$custom-select-font-size-sm:        $input-font-size-sm !default;
518
$custom-select-height-sm:           $input-height-sm !default;
519
$custom-select-padding-y-lg:        $input-padding-y-lg !default;
520
$custom-select-padding-x-lg:        $input-padding-x-lg !default;
521
$custom-select-font-size-lg:        $input-font-size-lg !default;
522
$custom-select-height-lg:           $input-height-lg !default;
523
$custom-range-track-width:          100% !default;
524
$custom-range-track-height:         .5rem !default;
525
$custom-range-track-cursor:         pointer !default;
526
$custom-range-track-bg:             $gray-300 !default;
527
$custom-range-track-border-radius:  1rem !default;
528
$custom-range-track-box-shadow:     inset 0 .25rem .25rem rgba($black, .1) !default;
529
$custom-range-thumb-width:                   1rem !default;
530
$custom-range-thumb-height:                  $custom-range-thumb-width !default;
531
$custom-range-thumb-bg:                      $component-active-bg !default;
532
$custom-range-thumb-border:                  0 !default;
533
$custom-range-thumb-border-radius:           1rem !default;
534
$custom-range-thumb-box-shadow:              0 .1rem .25rem rgba($black, .1) !default;
535
$custom-range-thumb-focus-box-shadow:        0 0 0 1px $body-bg, $input-focus-box-shadow !default;
536
$custom-range-thumb-focus-box-shadow-width:  $input-focus-width !default; // For focus box shadow issue in IE/Edge
537
$custom-range-thumb-active-bg:               lighten($component-active-bg, 35%) !default;
538
$custom-range-thumb-disabled-bg:             $gray-500 !default;
539
$custom-file-height:                $input-height !default;
540
$custom-file-height-inner:          $input-height-inner !default;
541
$custom-file-focus-border-color:    $input-focus-border-color !default;
542
$custom-file-focus-box-shadow:      $input-focus-box-shadow !default;
543
$custom-file-disabled-bg:           $input-disabled-bg !default;
544
$custom-file-padding-y:             $input-padding-y !default;
545
$custom-file-padding-x:             $input-padding-x !default;
546
$custom-file-line-height:           $input-line-height !default;
547
$custom-file-font-family:           $input-font-family !default;
548
$custom-file-font-weight:           $input-font-weight !default;
549
$custom-file-color:                 $input-color !default;
550
$custom-file-bg:                    $input-bg !default;
551
$custom-file-border-width:          $input-border-width !default;
552
$custom-file-border-color:          $input-border-color !default;
553
$custom-file-border-radius:         $input-border-radius !default;
554
$custom-file-box-shadow:            $input-box-shadow !default;
555
$custom-file-button-color:          $custom-file-color !default;
556
$custom-file-button-bg:             $input-group-addon-bg !default;
557
$custom-file-text: (
558
    en: "Browse"
559
) !default;
560
$custom-forms-transition:               background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;
561
 
562
.custom-control {
563
    position: relative;
564
    z-index: 1;
565
    display: block;
566
    min-height: $font-size-base * $line-height-base;
567
    padding-left: $custom-control-gutter + $custom-control-indicator-size;
568
    print-color-adjust: exact;
569
}
570
 
571
.custom-control-inline {
572
    display: inline-flex;
573
    margin-right: $custom-control-spacer-x;
574
}
575
 
576
.custom-control-input {
577
    position: absolute;
578
    left: 0;
579
    z-index: -1;
580
    width: $custom-control-indicator-size;
581
    height: ($font-size-base * $line-height-base + $custom-control-indicator-size) * .5;
582
    opacity: 0;
583
    &:checked ~ .custom-control-label::before {
584
        color: $custom-control-indicator-checked-color;
585
        border-color: $custom-control-indicator-checked-border-color;
586
        @include gradient-bg($custom-control-indicator-checked-bg);
587
        @include box-shadow($custom-control-indicator-checked-box-shadow);
588
    }
589
    &:focus ~ .custom-control-label::before {
590
        @if $enable-shadows {
591
            box-shadow: $input-box-shadow, $custom-control-indicator-focus-box-shadow;
592
        }
593
        @else {
594
            box-shadow: $custom-control-indicator-focus-box-shadow;
595
        }
596
    }
597
    &:focus:not(:checked) ~ .custom-control-label::before {
598
        border-color: $custom-control-indicator-focus-border-color;
599
    }
600
    &:not(:disabled):active ~ .custom-control-label::before {
601
        color: $custom-control-indicator-active-color;
602
        background-color: $custom-control-indicator-active-bg;
603
        border-color: $custom-control-indicator-active-border-color;
604
        @include box-shadow($custom-control-indicator-active-box-shadow);
605
    }
606
    &[disabled],
607
    &:disabled {
608
        ~ .custom-control-label {
609
            color: $custom-control-label-disabled-color;
610
            &::before {
611
                background-color: $custom-control-indicator-disabled-bg;
612
            }
613
        }
614
    }
615
}
616
 
617
.custom-control-label {
618
    position: relative;
619
    margin-bottom: 0;
620
    color: $custom-control-label-color;
621
    vertical-align: top;
622
    cursor: $custom-control-cursor;
623
    &::before {
624
        position: absolute;
625
        top: ($font-size-base * $line-height-base - $custom-control-indicator-size) * .5;
626
        left: -($custom-control-gutter + $custom-control-indicator-size);
627
        display: block;
628
        width: $custom-control-indicator-size;
629
        height: $custom-control-indicator-size;
630
        pointer-events: none;
631
        content: "";
632
        background-color: $custom-control-indicator-bg;
633
        border: $custom-control-indicator-border-width solid $custom-control-indicator-border-color;
634
        @include box-shadow($custom-control-indicator-box-shadow);
635
    }
636
    &::after {
637
        position: absolute;
638
        top: ($font-size-base * $line-height-base - $custom-control-indicator-size) * .5;
639
        left: -($custom-control-gutter + $custom-control-indicator-size);
640
        display: block;
641
        width: $custom-control-indicator-size;
642
        height: $custom-control-indicator-size;
643
        content: "";
644
        background: 50% / #{$custom-control-indicator-bg-size} no-repeat;
645
    }
646
}
647
 
648
.custom-checkbox {
649
    @include deprecated-styles(".custom-checkbox");
650
    .custom-control-label::before {
651
        @include border-radius($custom-checkbox-indicator-border-radius);
652
    }
653
    .custom-control-input:checked ~ .custom-control-label {
654
        &::after {
655
            background-image: escape-svg($custom-checkbox-indicator-icon-checked);
656
        }
657
    }
658
    .custom-control-input:indeterminate ~ .custom-control-label {
659
        &::before {
660
            border-color: $custom-checkbox-indicator-indeterminate-border-color;
661
            @include gradient-bg($custom-checkbox-indicator-indeterminate-bg);
662
            @include box-shadow($custom-checkbox-indicator-indeterminate-box-shadow);
663
        }
664
        &::after {
665
            background-image: escape-svg($custom-checkbox-indicator-icon-indeterminate);
666
        }
667
    }
668
    .custom-control-input:disabled {
669
        &:checked ~ .custom-control-label::before {
670
            @include gradient-bg($custom-control-indicator-checked-disabled-bg);
671
        }
672
        &:indeterminate ~ .custom-control-label::before {
673
            @include gradient-bg($custom-control-indicator-checked-disabled-bg);
674
        }
675
    }
676
}
677
 
678
.custom-radio {
679
    @include deprecated-styles(".custom-radio");
680
    .custom-control-label::before {
681
        border-radius: $custom-radio-indicator-border-radius;
682
    }
683
    .custom-control-input:checked ~ .custom-control-label {
684
        &::after {
685
            background-image: escape-svg($custom-radio-indicator-icon-checked);
686
        }
687
    }
688
    .custom-control-input:disabled {
689
        &:checked ~ .custom-control-label::before {
690
            @include gradient-bg($custom-control-indicator-checked-disabled-bg);
691
        }
692
    }
693
}
694
 
695
.custom-switch {
696
    @include deprecated-styles(".custom-switch");
697
    padding-left: $custom-switch-width + $custom-control-gutter;
698
    .custom-control-label {
699
        &::before {
700
            left: -($custom-switch-width + $custom-control-gutter);
701
            width: $custom-switch-width;
702
            pointer-events: all;
703
            border-radius: $custom-switch-indicator-border-radius;
704
        }
705
        &::after {
706
            top: add(($font-size-base * $line-height-base - $custom-control-indicator-size) * .5, $custom-control-indicator-border-width * 2);
707
            left: add(-($custom-switch-width + $custom-control-gutter), $custom-control-indicator-border-width * 2);
708
            width: $custom-switch-indicator-size;
709
            height: $custom-switch-indicator-size;
710
            background-color: $custom-control-indicator-border-color;
711
            border-radius: $custom-switch-indicator-border-radius;
712
            @include transition(transform .15s ease-in-out, $custom-forms-transition);
713
        }
714
    }
715
    .custom-control-input:checked ~ .custom-control-label {
716
        &::after {
717
            background-color: $custom-control-indicator-bg;
718
            transform: translateX($custom-switch-width - $custom-control-indicator-size);
719
        }
720
    }
721
    .custom-control-input:disabled {
722
        &:checked ~ .custom-control-label::before {
723
            @include gradient-bg($custom-control-indicator-checked-disabled-bg);
724
        }
725
    }
726
}
727
 
728
.custom-select {
729
    @include deprecated-styles(".custom-select");
730
    display: inline-block;
731
    width: 100%;
732
    height: $custom-select-height;
733
    padding: $custom-select-padding-y ($custom-select-padding-x + $custom-select-indicator-padding) $custom-select-padding-y $custom-select-padding-x;
734
    font-family: $custom-select-font-family;
735
    @include font-size($custom-select-font-size);
736
    font-weight: $custom-select-font-weight;
737
    line-height: $custom-select-line-height;
738
    color: $custom-select-color;
739
    vertical-align: middle;
740
    background: $custom-select-bg $custom-select-background;
741
    border: $custom-select-border-width solid $custom-select-border-color;
742
    @include border-radius($custom-select-border-radius, 0);
743
    @include box-shadow($custom-select-box-shadow);
744
    appearance: none;
745
    &:focus {
746
        border-color: $custom-select-focus-border-color;
747
        outline: 0;
748
        @if $enable-shadows {
749
            @include box-shadow($custom-select-box-shadow, $custom-select-focus-box-shadow);
750
        }
751
        @else {
752
            box-shadow: $custom-select-focus-box-shadow;
753
        }
754
        &::-ms-value {
755
            color: $input-color;
756
            background-color: $input-bg;
757
        }
758
    }
759
    &[multiple],
760
    &[size]:not([size="1"]) {
761
        height: auto;
762
        padding-right: $custom-select-padding-x;
763
        background-image: none;
764
    }
765
    &:disabled {
766
        color: $custom-select-disabled-color;
767
        background-color: $custom-select-disabled-bg;
768
    }
769
    &::-ms-expand {
770
        display: none;
771
    }
772
    &:-moz-focusring {
773
        color: transparent;
774
        text-shadow: 0 0 0 $custom-select-color;
775
    }
776
}
777
.custom-select-sm {
778
    height: $custom-select-height-sm;
779
    padding-top: $custom-select-padding-y-sm;
780
    padding-bottom: $custom-select-padding-y-sm;
781
    padding-left: $custom-select-padding-x-sm;
782
    @include font-size($custom-select-font-size-sm);
783
}
784
.custom-select-lg {
785
    height: $custom-select-height-lg;
786
    padding-top: $custom-select-padding-y-lg;
787
    padding-bottom: $custom-select-padding-y-lg;
788
    padding-left: $custom-select-padding-x-lg;
789
    @include font-size($custom-select-font-size-lg);
790
}
791
 
792
.custom-file {
793
    @include deprecated-styles(".custom-file");
794
    position: relative;
795
    display: inline-block;
796
    width: 100%;
797
    height: $custom-file-height;
798
    margin-bottom: 0;
799
}
800
.custom-file-input {
801
    position: relative;
802
    z-index: 2;
803
    width: 100%;
804
    height: $custom-file-height;
805
    margin: 0;
806
    overflow: hidden;
807
    opacity: 0;
808
    &:focus ~ .custom-file-label {
809
        border-color: $custom-file-focus-border-color;
810
        box-shadow: $custom-file-focus-box-shadow;
811
    }
812
    &[disabled] ~ .custom-file-label,
813
    &:disabled ~ .custom-file-label {
814
        background-color: $custom-file-disabled-bg;
815
    }
816
    @each $lang, $value in $custom-file-text {
817
        &:lang(#{$lang}) ~ .custom-file-label::after {
818
            content: $value;
819
        }
820
    }
821
    ~ .custom-file-label[data-browse]::after {
822
        content: attr(data-browse);
823
    }
824
}
825
.custom-file-label {
826
    position: absolute;
827
    top: 0;
828
    right: 0;
829
    left: 0;
830
    z-index: 1;
831
    height: $custom-file-height;
832
    padding: $custom-file-padding-y $custom-file-padding-x;
833
    overflow: hidden;
834
    font-family: $custom-file-font-family;
835
    font-weight: $custom-file-font-weight;
836
    line-height: $custom-file-line-height;
837
    color: $custom-file-color;
838
    background-color: $custom-file-bg;
839
    border: $custom-file-border-width solid $custom-file-border-color;
840
    @include border-radius($custom-file-border-radius);
841
    @include box-shadow($custom-file-box-shadow);
842
    &::after {
843
        position: absolute;
844
        top: 0;
845
        right: 0;
846
        bottom: 0;
847
        z-index: 3;
848
        display: block;
849
        height: $custom-file-height-inner;
850
        padding: $custom-file-padding-y $custom-file-padding-x;
851
        line-height: $custom-file-line-height;
852
        color: $custom-file-button-color;
853
        content: "Browse";
854
        @include gradient-bg($custom-file-button-bg);
855
        border-left: inherit;
856
        @include border-radius(0 $custom-file-border-radius $custom-file-border-radius 0);
857
    }
858
}
859
 
860
.custom-range {
861
    @include deprecated-styles(".custom-range");
862
    width: 100%;
863
    height: add($custom-range-thumb-height, $custom-range-thumb-focus-box-shadow-width * 2);
864
    padding: 0;
865
    background-color: transparent;
866
    appearance: none;
867
    &:focus {
868
        outline: 0;
869
        &::-webkit-slider-thumb {
870
            box-shadow: $custom-range-thumb-focus-box-shadow;
871
        }
872
        &::-moz-range-thumb {
873
            box-shadow: $custom-range-thumb-focus-box-shadow;
874
        }
875
        &::-ms-thumb {
876
            box-shadow: $custom-range-thumb-focus-box-shadow;
877
        }
878
    }
879
    &::-moz-focus-outer {
880
        border: 0;
881
    }
882
    &::-webkit-slider-thumb {
883
        width: $custom-range-thumb-width;
884
        height: $custom-range-thumb-height;
885
        margin-top: ($custom-range-track-height - $custom-range-thumb-height) * .5;
886
        @include gradient-bg($custom-range-thumb-bg);
887
        border: $custom-range-thumb-border;
888
        @include border-radius($custom-range-thumb-border-radius);
889
        @include box-shadow($custom-range-thumb-box-shadow);
890
        @include transition($custom-forms-transition);
891
        appearance: none;
892
        &:active {
893
            @include gradient-bg($custom-range-thumb-active-bg);
894
        }
895
    }
896
    &::-webkit-slider-runnable-track {
897
        width: $custom-range-track-width;
898
        height: $custom-range-track-height;
899
        color: transparent; // Why?
900
        cursor: $custom-range-track-cursor;
901
        background-color: $custom-range-track-bg;
902
        border-color: transparent;
903
        @include border-radius($custom-range-track-border-radius);
904
        @include box-shadow($custom-range-track-box-shadow);
905
    }
906
    &::-moz-range-thumb {
907
        width: $custom-range-thumb-width;
908
        height: $custom-range-thumb-height;
909
        @include gradient-bg($custom-range-thumb-bg);
910
        border: $custom-range-thumb-border;
911
        @include border-radius($custom-range-thumb-border-radius);
912
        @include box-shadow($custom-range-thumb-box-shadow);
913
        @include transition($custom-forms-transition);
914
        appearance: none;
915
        &:active {
916
            @include gradient-bg($custom-range-thumb-active-bg);
917
        }
918
    }
919
    &::-moz-range-track {
920
        width: $custom-range-track-width;
921
        height: $custom-range-track-height;
922
        color: transparent;
923
        cursor: $custom-range-track-cursor;
924
        background-color: $custom-range-track-bg;
925
        border-color: transparent; // Firefox specific?
926
        @include border-radius($custom-range-track-border-radius);
927
        @include box-shadow($custom-range-track-box-shadow);
928
    }
929
    &::-ms-thumb {
930
        width: $custom-range-thumb-width;
931
        height: $custom-range-thumb-height;
932
        margin-top: 0; // Edge specific
933
        margin-right: $custom-range-thumb-focus-box-shadow-width; // Workaround that overflowed box-shadow is hidden.
934
        margin-left: $custom-range-thumb-focus-box-shadow-width;  // Workaround that overflowed box-shadow is hidden.
935
        @include gradient-bg($custom-range-thumb-bg);
936
        border: $custom-range-thumb-border;
937
        @include border-radius($custom-range-thumb-border-radius);
938
        @include box-shadow($custom-range-thumb-box-shadow);
939
        @include transition($custom-forms-transition);
940
        appearance: none;
941
        &:active {
942
            @include gradient-bg($custom-range-thumb-active-bg);
943
        }
944
    }
945
    &::-ms-track {
946
        width: $custom-range-track-width;
947
        height: $custom-range-track-height;
948
        color: transparent;
949
        cursor: $custom-range-track-cursor;
950
        background-color: transparent;
951
        border-color: transparent;
952
        border-width: $custom-range-thumb-height * .5;
953
        @include box-shadow($custom-range-track-box-shadow);
954
    }
955
    &::-ms-fill-lower {
956
        background-color: $custom-range-track-bg;
957
        @include border-radius($custom-range-track-border-radius);
958
    }
959
    &::-ms-fill-upper {
960
        margin-right: 15px; // arbitrary?
961
        background-color: $custom-range-track-bg;
962
        @include border-radius($custom-range-track-border-radius);
963
    }
964
    &:disabled {
965
        &::-webkit-slider-thumb {
966
            background-color: $custom-range-thumb-disabled-bg;
967
        }
968
        &::-webkit-slider-runnable-track {
969
            cursor: default;
970
        }
971
        &::-moz-range-thumb {
972
            background-color: $custom-range-thumb-disabled-bg;
973
        }
974
        &::-moz-range-track {
975
            cursor: default;
976
        }
977
        &::-ms-thumb {
978
            background-color: $custom-range-thumb-disabled-bg;
979
        }
980
    }
981
}
982
 
983
.custom-control-label::before,
984
.custom-file-label,
985
.custom-select {
986
    @include transition($custom-forms-transition);
987
}
988
 
989
//
990
// Block button
991
//
992
 
993
$btn-block-spacing-y:         .5rem !default;
994
 
995
.btn-block {
996
    @include deprecated-styles(".btn-block");
997
    display: block;
998
    width: 100%;
999
    + .btn-block {
1000
        margin-top: $btn-block-spacing-y;
1001
    }
1002
}
1003
input[type="submit"],
1004
input[type="reset"],
1005
input[type="button"] {
1006
    &.btn-block {
1007
        width: 100%;
1008
    }
1009
}