Proyectos de Subversion Moodle

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 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
}