[ Index ]

PHP Cross Reference of Moodle 310

title

Body

[close]

/theme/boost/scss/bootstrap/ -> _custom-forms.scss (source)

   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    display: block;
  13    min-height: $font-size-base * $line-height-base;
  14    padding-left: $custom-control-gutter + $custom-control-indicator-size;
  15  }
  16  
  17  .custom-control-inline {
  18    display: inline-flex;
  19    margin-right: $custom-control-spacer-x;
  20  }
  21  
  22  .custom-control-input {
  23    position: absolute;
  24    left: 0;
  25    z-index: -1; // Put the input behind the label so it doesn't overlay text
  26    width: $custom-control-indicator-size;
  27    height: ($font-size-base * $line-height-base + $custom-control-indicator-size) / 2;
  28    opacity: 0;
  29  
  30    &:checked ~ .custom-control-label::before {
  31      color: $custom-control-indicator-checked-color;
  32      border-color: $custom-control-indicator-checked-border-color;
  33      @include gradient-bg($custom-control-indicator-checked-bg);
  34      @include box-shadow($custom-control-indicator-checked-box-shadow);
  35    }
  36  
  37    &:focus ~ .custom-control-label::before {
  38      // the mixin is not used here to make sure there is feedback
  39      @if $enable-shadows {
  40        box-shadow: $input-box-shadow, $input-focus-box-shadow;
  41      } @else {
  42        box-shadow: $custom-control-indicator-focus-box-shadow;
  43      }
  44    }
  45  
  46    &:focus:not(:checked) ~ .custom-control-label::before {
  47      border-color: $custom-control-indicator-focus-border-color;
  48    }
  49  
  50    &:not(:disabled):active ~ .custom-control-label::before {
  51      color: $custom-control-indicator-active-color;
  52      background-color: $custom-control-indicator-active-bg;
  53      border-color: $custom-control-indicator-active-border-color;
  54      @include box-shadow($custom-control-indicator-active-box-shadow);
  55    }
  56  
  57    // Use [disabled] and :disabled to work around https://github.com/twbs/bootstrap/issues/28247
  58    &[disabled],
  59    &:disabled {
  60      ~ .custom-control-label {
  61        color: $custom-control-label-disabled-color;
  62  
  63        &::before {
  64          background-color: $custom-control-indicator-disabled-bg;
  65        }
  66      }
  67    }
  68  }
  69  
  70  // Custom control indicators
  71  //
  72  // Build the custom controls out of pseudo-elements.
  73  
  74  .custom-control-label {
  75    position: relative;
  76    margin-bottom: 0;
  77    color: $custom-control-label-color;
  78    vertical-align: top;
  79    cursor: $custom-control-cursor;
  80  
  81    // Background-color and (when enabled) gradient
  82    &::before {
  83      position: absolute;
  84      top: ($font-size-base * $line-height-base - $custom-control-indicator-size) / 2;
  85      left: -($custom-control-gutter + $custom-control-indicator-size);
  86      display: block;
  87      width: $custom-control-indicator-size;
  88      height: $custom-control-indicator-size;
  89      pointer-events: none;
  90      content: "";
  91      background-color: $custom-control-indicator-bg;
  92      border: $custom-control-indicator-border-color solid $custom-control-indicator-border-width;
  93      @include box-shadow($custom-control-indicator-box-shadow);
  94    }
  95  
  96    // Foreground (icon)
  97    &::after {
  98      position: absolute;
  99      top: ($font-size-base * $line-height-base - $custom-control-indicator-size) / 2;
 100      left: -($custom-control-gutter + $custom-control-indicator-size);
 101      display: block;
 102      width: $custom-control-indicator-size;
 103      height: $custom-control-indicator-size;
 104      content: "";
 105      background: no-repeat 50% / #{$custom-control-indicator-bg-size};
 106    }
 107  }
 108  
 109  
 110  // Checkboxes
 111  //
 112  // Tweak just a few things for checkboxes.
 113  
 114  .custom-checkbox {
 115    .custom-control-label::before {
 116      @include border-radius($custom-checkbox-indicator-border-radius);
 117    }
 118  
 119    .custom-control-input:checked ~ .custom-control-label {
 120      &::after {
 121        background-image: escape-svg($custom-checkbox-indicator-icon-checked);
 122      }
 123    }
 124  
 125    .custom-control-input:indeterminate ~ .custom-control-label {
 126      &::before {
 127        border-color: $custom-checkbox-indicator-indeterminate-border-color;
 128        @include gradient-bg($custom-checkbox-indicator-indeterminate-bg);
 129        @include box-shadow($custom-checkbox-indicator-indeterminate-box-shadow);
 130      }
 131      &::after {
 132        background-image: escape-svg($custom-checkbox-indicator-icon-indeterminate);
 133      }
 134    }
 135  
 136    .custom-control-input:disabled {
 137      &:checked ~ .custom-control-label::before {
 138        background-color: $custom-control-indicator-checked-disabled-bg;
 139      }
 140      &:indeterminate ~ .custom-control-label::before {
 141        background-color: $custom-control-indicator-checked-disabled-bg;
 142      }
 143    }
 144  }
 145  
 146  // Radios
 147  //
 148  // Tweak just a few things for radios.
 149  
 150  .custom-radio {
 151    .custom-control-label::before {
 152      // stylelint-disable-next-line property-blacklist
 153      border-radius: $custom-radio-indicator-border-radius;
 154    }
 155  
 156    .custom-control-input:checked ~ .custom-control-label {
 157      &::after {
 158        background-image: escape-svg($custom-radio-indicator-icon-checked);
 159      }
 160    }
 161  
 162    .custom-control-input:disabled {
 163      &:checked ~ .custom-control-label::before {
 164        background-color: $custom-control-indicator-checked-disabled-bg;
 165      }
 166    }
 167  }
 168  
 169  
 170  // switches
 171  //
 172  // Tweak a few things for switches
 173  
 174  .custom-switch {
 175    padding-left: $custom-switch-width + $custom-control-gutter;
 176  
 177    .custom-control-label {
 178      &::before {
 179        left: -($custom-switch-width + $custom-control-gutter);
 180        width: $custom-switch-width;
 181        pointer-events: all;
 182        // stylelint-disable-next-line property-blacklist
 183        border-radius: $custom-switch-indicator-border-radius;
 184      }
 185  
 186      &::after {
 187        top: add(($font-size-base * $line-height-base - $custom-control-indicator-size) / 2, $custom-control-indicator-border-width * 2);
 188        left: add(-($custom-switch-width + $custom-control-gutter), $custom-control-indicator-border-width * 2);
 189        width: $custom-switch-indicator-size;
 190        height: $custom-switch-indicator-size;
 191        background-color: $custom-control-indicator-border-color;
 192        // stylelint-disable-next-line property-blacklist
 193        border-radius: $custom-switch-indicator-border-radius;
 194        @include transition(transform .15s ease-in-out, $custom-forms-transition);
 195      }
 196    }
 197  
 198    .custom-control-input:checked ~ .custom-control-label {
 199      &::after {
 200        background-color: $custom-control-indicator-bg;
 201        transform: translateX($custom-switch-width - $custom-control-indicator-size);
 202      }
 203    }
 204  
 205    .custom-control-input:disabled {
 206      &:checked ~ .custom-control-label::before {
 207        background-color: $custom-control-indicator-checked-disabled-bg;
 208      }
 209    }
 210  }
 211  
 212  
 213  // Select
 214  //
 215  // Replaces the browser default select with a custom one, mostly pulled from
 216  // https://primer.github.io/.
 217  //
 218  
 219  .custom-select {
 220    display: inline-block;
 221    width: 100%;
 222    height: $custom-select-height;
 223    padding: $custom-select-padding-y ($custom-select-padding-x + $custom-select-indicator-padding) $custom-select-padding-y $custom-select-padding-x;
 224    font-family: $custom-select-font-family;
 225    @include font-size($custom-select-font-size);
 226    font-weight: $custom-select-font-weight;
 227    line-height: $custom-select-line-height;
 228    color: $custom-select-color;
 229    vertical-align: middle;
 230    background: $custom-select-bg $custom-select-background;
 231    border: $custom-select-border-width solid $custom-select-border-color;
 232    @include border-radius($custom-select-border-radius, 0);
 233    @include box-shadow($custom-select-box-shadow);
 234    appearance: none;
 235  
 236    &:focus {
 237      border-color: $custom-select-focus-border-color;
 238      outline: 0;
 239      @if $enable-shadows {
 240        @include box-shadow($custom-select-box-shadow, $custom-select-focus-box-shadow);
 241      } @else {
 242        // Avoid using mixin so we can pass custom focus shadow properly
 243        box-shadow: $custom-select-focus-box-shadow;
 244      }
 245  
 246      &::-ms-value {
 247        // For visual consistency with other platforms/browsers,
 248        // suppress the default white text on blue background highlight given to
 249        // the selected option text when the (still closed) <select> receives focus
 250        // in IE and (under certain conditions) Edge.
 251        // See https://github.com/twbs/bootstrap/issues/19398.
 252        color: $input-color;
 253        background-color: $input-bg;
 254      }
 255    }
 256  
 257    &[multiple],
 258    &[size]:not([size="1"]) {
 259      height: auto;
 260      padding-right: $custom-select-padding-x;
 261      background-image: none;
 262    }
 263  
 264    &:disabled {
 265      color: $custom-select-disabled-color;
 266      background-color: $custom-select-disabled-bg;
 267    }
 268  
 269    // Hides the default caret in IE11
 270    &::-ms-expand {
 271      display: none;
 272    }
 273  
 274    // Remove outline from select box in FF
 275    &:-moz-focusring {
 276      color: transparent;
 277      text-shadow: 0 0 0 $custom-select-color;
 278    }
 279  }
 280  
 281  .custom-select-sm {
 282    height: $custom-select-height-sm;
 283    padding-top: $custom-select-padding-y-sm;
 284    padding-bottom: $custom-select-padding-y-sm;
 285    padding-left: $custom-select-padding-x-sm;
 286    @include font-size($custom-select-font-size-sm);
 287  }
 288  
 289  .custom-select-lg {
 290    height: $custom-select-height-lg;
 291    padding-top: $custom-select-padding-y-lg;
 292    padding-bottom: $custom-select-padding-y-lg;
 293    padding-left: $custom-select-padding-x-lg;
 294    @include font-size($custom-select-font-size-lg);
 295  }
 296  
 297  
 298  // File
 299  //
 300  // Custom file input.
 301  
 302  .custom-file {
 303    position: relative;
 304    display: inline-block;
 305    width: 100%;
 306    height: $custom-file-height;
 307    margin-bottom: 0;
 308  }
 309  
 310  .custom-file-input {
 311    position: relative;
 312    z-index: 2;
 313    width: 100%;
 314    height: $custom-file-height;
 315    margin: 0;
 316    opacity: 0;
 317  
 318    &:focus ~ .custom-file-label {
 319      border-color: $custom-file-focus-border-color;
 320      box-shadow: $custom-file-focus-box-shadow;
 321    }
 322  
 323    // Use [disabled] and :disabled to work around https://github.com/twbs/bootstrap/issues/28247
 324    &[disabled] ~ .custom-file-label,
 325    &:disabled ~ .custom-file-label {
 326      background-color: $custom-file-disabled-bg;
 327    }
 328  
 329    @each $lang, $value in $custom-file-text {
 330      &:lang(#{$lang}) ~ .custom-file-label::after {
 331        content: $value;
 332      }
 333    }
 334  
 335    ~ .custom-file-label[data-browse]::after {
 336      content: attr(data-browse);
 337    }
 338  }
 339  
 340  .custom-file-label {
 341    position: absolute;
 342    top: 0;
 343    right: 0;
 344    left: 0;
 345    z-index: 1;
 346    height: $custom-file-height;
 347    padding: $custom-file-padding-y $custom-file-padding-x;
 348    font-family: $custom-file-font-family;
 349    font-weight: $custom-file-font-weight;
 350    line-height: $custom-file-line-height;
 351    color: $custom-file-color;
 352    background-color: $custom-file-bg;
 353    border: $custom-file-border-width solid $custom-file-border-color;
 354    @include border-radius($custom-file-border-radius);
 355    @include box-shadow($custom-file-box-shadow);
 356  
 357    &::after {
 358      position: absolute;
 359      top: 0;
 360      right: 0;
 361      bottom: 0;
 362      z-index: 3;
 363      display: block;
 364      height: $custom-file-height-inner;
 365      padding: $custom-file-padding-y $custom-file-padding-x;
 366      line-height: $custom-file-line-height;
 367      color: $custom-file-button-color;
 368      content: "Browse";
 369      @include gradient-bg($custom-file-button-bg);
 370      border-left: inherit;
 371      @include border-radius(0 $custom-file-border-radius $custom-file-border-radius 0);
 372    }
 373  }
 374  
 375  // Range
 376  //
 377  // Style range inputs the same across browsers. Vendor-specific rules for pseudo
 378  // elements cannot be mixed. As such, there are no shared styles for focus or
 379  // active states on prefixed selectors.
 380  
 381  .custom-range {
 382    width: 100%;
 383    height: add($custom-range-thumb-height, $custom-range-thumb-focus-box-shadow-width * 2);
 384    padding: 0; // Need to reset padding
 385    background-color: transparent;
 386    appearance: none;
 387  
 388    &:focus {
 389      outline: none;
 390  
 391      // Pseudo-elements must be split across multiple rulesets to have an effect.
 392      // No box-shadow() mixin for focus accessibility.
 393      &::-webkit-slider-thumb { box-shadow: $custom-range-thumb-focus-box-shadow; }
 394      &::-moz-range-thumb     { box-shadow: $custom-range-thumb-focus-box-shadow; }
 395      &::-ms-thumb            { box-shadow: $custom-range-thumb-focus-box-shadow; }
 396    }
 397  
 398    &::-moz-focus-outer {
 399      border: 0;
 400    }
 401  
 402    &::-webkit-slider-thumb {
 403      width: $custom-range-thumb-width;
 404      height: $custom-range-thumb-height;
 405      margin-top: ($custom-range-track-height - $custom-range-thumb-height) / 2; // Webkit specific
 406      @include gradient-bg($custom-range-thumb-bg);
 407      border: $custom-range-thumb-border;
 408      @include border-radius($custom-range-thumb-border-radius);
 409      @include box-shadow($custom-range-thumb-box-shadow);
 410      @include transition($custom-forms-transition);
 411      appearance: none;
 412  
 413      &:active {
 414        @include gradient-bg($custom-range-thumb-active-bg);
 415      }
 416    }
 417  
 418    &::-webkit-slider-runnable-track {
 419      width: $custom-range-track-width;
 420      height: $custom-range-track-height;
 421      color: transparent; // Why?
 422      cursor: $custom-range-track-cursor;
 423      background-color: $custom-range-track-bg;
 424      border-color: transparent;
 425      @include border-radius($custom-range-track-border-radius);
 426      @include box-shadow($custom-range-track-box-shadow);
 427    }
 428  
 429    &::-moz-range-thumb {
 430      width: $custom-range-thumb-width;
 431      height: $custom-range-thumb-height;
 432      @include gradient-bg($custom-range-thumb-bg);
 433      border: $custom-range-thumb-border;
 434      @include border-radius($custom-range-thumb-border-radius);
 435      @include box-shadow($custom-range-thumb-box-shadow);
 436      @include transition($custom-forms-transition);
 437      appearance: none;
 438  
 439      &:active {
 440        @include gradient-bg($custom-range-thumb-active-bg);
 441      }
 442    }
 443  
 444    &::-moz-range-track {
 445      width: $custom-range-track-width;
 446      height: $custom-range-track-height;
 447      color: transparent;
 448      cursor: $custom-range-track-cursor;
 449      background-color: $custom-range-track-bg;
 450      border-color: transparent; // Firefox specific?
 451      @include border-radius($custom-range-track-border-radius);
 452      @include box-shadow($custom-range-track-box-shadow);
 453    }
 454  
 455    &::-ms-thumb {
 456      width: $custom-range-thumb-width;
 457      height: $custom-range-thumb-height;
 458      margin-top: 0; // Edge specific
 459      margin-right: $custom-range-thumb-focus-box-shadow-width; // Workaround that overflowed box-shadow is hidden.
 460      margin-left: $custom-range-thumb-focus-box-shadow-width;  // Workaround that overflowed box-shadow is hidden.
 461      @include gradient-bg($custom-range-thumb-bg);
 462      border: $custom-range-thumb-border;
 463      @include border-radius($custom-range-thumb-border-radius);
 464      @include box-shadow($custom-range-thumb-box-shadow);
 465      @include transition($custom-forms-transition);
 466      appearance: none;
 467  
 468      &:active {
 469        @include gradient-bg($custom-range-thumb-active-bg);
 470      }
 471    }
 472  
 473    &::-ms-track {
 474      width: $custom-range-track-width;
 475      height: $custom-range-track-height;
 476      color: transparent;
 477      cursor: $custom-range-track-cursor;
 478      background-color: transparent;
 479      border-color: transparent;
 480      border-width: $custom-range-thumb-height / 2;
 481      @include box-shadow($custom-range-track-box-shadow);
 482    }
 483  
 484    &::-ms-fill-lower {
 485      background-color: $custom-range-track-bg;
 486      @include border-radius($custom-range-track-border-radius);
 487    }
 488  
 489    &::-ms-fill-upper {
 490      margin-right: 15px; // arbitrary?
 491      background-color: $custom-range-track-bg;
 492      @include border-radius($custom-range-track-border-radius);
 493    }
 494  
 495    &:disabled {
 496      &::-webkit-slider-thumb {
 497        background-color: $custom-range-thumb-disabled-bg;
 498      }
 499  
 500      &::-webkit-slider-runnable-track {
 501        cursor: default;
 502      }
 503  
 504      &::-moz-range-thumb {
 505        background-color: $custom-range-thumb-disabled-bg;
 506      }
 507  
 508      &::-moz-range-track {
 509        cursor: default;
 510      }
 511  
 512      &::-ms-thumb {
 513        background-color: $custom-range-thumb-disabled-bg;
 514      }
 515    }
 516  }
 517  
 518  .custom-control-label::before,
 519  .custom-file-label,
 520  .custom-select {
 521    @include transition($custom-forms-transition);
 522  }


Generated: Wed Jan 22 11:59:49 2025 Cross-referenced by PHPXref 0.7.1