// Embedded icons from Open Iconic. // Released under MIT and copyright 2014 Waybury. // https://useiconic.com/open // Checkboxes and radios // // Base class takes care of all the key behavioral aspects. .custom-control position: relative display: block min-height: 1rem * $line-height-base padding-left: $custom-control-gutter .custom-control-inline display: inline-flex margin-right: $custom-control-spacer-x .custom-control-input position: absolute z-index: -1 // Put the input behind the label so it doesn't overlay text opacity: 0 &:checked ~ .custom-control-label::before color: $custom-control-indicator-checked-color +gradient-bg($custom-control-indicator-checked-bg) +box-shadow($custom-control-indicator-checked-box-shadow) &:focus ~ .custom-control-label::before // the mixin is not used here to make sure there is feedback box-shadow: $custom-control-indicator-focus-box-shadow &:active ~ .custom-control-label::before color: $custom-control-indicator-active-color background-color: $custom-control-indicator-active-bg +box-shadow($custom-control-indicator-active-box-shadow) &:disabled ~ .custom-control-label color: $custom-control-label-disabled-color &::before background-color: $custom-control-indicator-disabled-bg // Custom control indicators // // Build the custom controls out of pseudo-elements. .custom-control-label position: relative margin-bottom: 0 // Background-color and (when enabled) gradient &::before position: absolute top: ($line-height-base - $custom-control-indicator-size) / 2 left: -$custom-control-gutter display: block width: $custom-control-indicator-size height: $custom-control-indicator-size pointer-events: none content: "" user-select: none background-color: $custom-control-indicator-bg +box-shadow($custom-control-indicator-box-shadow) // Foreground (icon) &::after position: absolute top: ($line-height-base - $custom-control-indicator-size) / 2 left: -$custom-control-gutter display: block width: $custom-control-indicator-size height: $custom-control-indicator-size content: "" background-repeat: no-repeat background-position: center center background-size: $custom-control-indicator-bg-size // Checkboxes // // Tweak just a few things for checkboxes. .custom-checkbox .custom-control-label::before +border-radius($custom-checkbox-indicator-border-radius) .custom-control-input:checked ~ .custom-control-label &::before +gradient-bg($custom-control-indicator-checked-bg) &::after background-image: $custom-checkbox-indicator-icon-checked .custom-control-input:indeterminate ~ .custom-control-label &::before +gradient-bg($custom-checkbox-indicator-indeterminate-bg) +box-shadow($custom-checkbox-indicator-indeterminate-box-shadow) &::after background-image: $custom-checkbox-indicator-icon-indeterminate .custom-control-input:disabled &:checked ~ .custom-control-label::before background-color: $custom-control-indicator-checked-disabled-bg &:indeterminate ~ .custom-control-label::before background-color: $custom-control-indicator-checked-disabled-bg // Radios // // Tweak just a few things for radios. .custom-radio .custom-control-label::before border-radius: $custom-radio-indicator-border-radius .custom-control-input:checked ~ .custom-control-label &::before +gradient-bg($custom-control-indicator-checked-bg) &::after background-image: $custom-radio-indicator-icon-checked .custom-control-input:disabled &:checked ~ .custom-control-label::before background-color: $custom-control-indicator-checked-disabled-bg // Select // // Replaces the browser default select with a custom one, mostly pulled from // https://primer.github.io/. // .custom-select display: inline-block width: 100% height: $custom-select-height padding: $custom-select-padding-y ($custom-select-padding-x + $custom-select-indicator-padding) $custom-select-padding-y $custom-select-padding-x line-height: $custom-select-line-height color: $custom-select-color vertical-align: middle background: $custom-select-bg $custom-select-indicator no-repeat right $custom-select-padding-x center background-size: $custom-select-bg-size border: $custom-select-border-width solid $custom-select-border-color @if $enable-rounded border-radius: $custom-select-border-radius @else border-radius: 0 +box-shadow($custom-select-box-shadow) appearance: none &:focus border-color: $custom-select-focus-border-color outline: 0 @if $enable-shadows box-shadow: $custom-select-box-shadow, $custom-select-focus-box-shadow @else box-shadow: $custom-select-focus-box-shadow &::-ms-value // For visual consistency with other platforms/browsers, // suppress the default white text on blue background highlight given to // the selected option text when the (still closed)