123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 |
- $switch-height: calc(#{$input-height} * .8) !default;
- $switch-height-sm: calc(#{$input-height-sm} * .8) !default;
- $switch-height-lg: calc(#{$input-height-lg} * .8) !default;
- $switch-border-radius: $switch-height !default;
- $switch-bg: $custom-control-indicator-bg !default;
- $switch-checked-bg: map-get($theme-colors, 'danger') !default;
- $switch-disabled-bg: $custom-control-indicator-disabled-bg !default;
- $switch-disabled-color: $custom-control-description-disabled-color !default;
- $switch-thumb-bg: $white !default;
- $switch-thumb-border-radius: 50% !default;
- $switch-thumb-padding: 2px !default;
- $switch-focus-box-shadow: 0 0 0 $input-btn-focus-width rgba(map-get($theme-colors, 'primary'), .25);
- $switch-transition: .2s all !default;
- .switch {
- font-size: $font-size-base;
- position: relative;
- input {
- position: absolute;
- height: 1px;
- width: 1px;
- background: none;
- border: 0;
- clip: rect(0 0 0 0);
- clip-path: inset(50%);
- overflow: hidden;
- padding: 0;
- + label {
- position: relative;
- min-width: calc(#{$switch-height} * 2);
- border-radius: $switch-border-radius;
- height: $switch-height;
- line-height: $switch-height;
- display: inline-block;
- cursor: pointer;
- outline: none;
- user-select: none;
- vertical-align: middle;
- text-indent: calc(calc(#{$switch-height} * 2) + .5rem);
- }
- + label::before,
- + label::after {
- content: '';
- position: absolute;
- top: 0;
- left: 0;
- width: calc(#{$switch-height} * 2);
- bottom: 0;
- display: block;
- }
- + label::before {
- right: 0;
- background-color: $switch-bg;
- border-radius: $switch-border-radius;
- transition: $switch-transition;
- }
- + label::after {
- top: $switch-thumb-padding;
- left: $switch-thumb-padding;
- width: calc(#{$switch-height} - calc(#{$switch-thumb-padding} * 2));
- height: calc(#{$switch-height} - calc(#{$switch-thumb-padding} * 2));
- border-radius: $switch-thumb-border-radius;
- background-color: $switch-thumb-bg;
- transition: $switch-transition;
- }
- &:checked + label::before {
- background-color: $switch-checked-bg;
- }
- &:checked + label::after {
- margin-left: $switch-height;
- }
- &:focus + label::before {
- outline: none;
- box-shadow: $switch-focus-box-shadow;
- }
- &:disabled + label {
- color: $switch-disabled-color;
- cursor: not-allowed;
- }
- &:disabled + label::before {
- background-color: $switch-disabled-bg;
- }
- }
- // Small variation
- &.switch-sm {
- font-size: $font-size-sm;
- input {
- + label {
- min-width: calc(#{$switch-height-sm} * 2);
- height: $switch-height-sm;
- line-height: $switch-height-sm;
- text-indent: calc(calc(#{$switch-height-sm} * 2) + .5rem);
- }
- + label::before {
- width: calc(#{$switch-height-sm} * 2);
- }
- + label::after {
- width: calc(#{$switch-height-sm} - calc(#{$switch-thumb-padding} * 2));
- height: calc(#{$switch-height-sm} - calc(#{$switch-thumb-padding} * 2));
- }
- &:checked + label::after {
- margin-left: $switch-height-sm;
- }
- }
- }
- // Large variation
- &.switch-lg {
- font-size: $font-size-lg;
- input {
- + label {
- min-width: calc(#{$switch-height-lg} * 2);
- height: $switch-height-lg;
- line-height: $switch-height-lg;
- text-indent: calc(calc(#{$switch-height-lg} * 2) + .5rem);
- }
- + label::before {
- width: calc(#{$switch-height-lg} * 2);
- }
- + label::after {
- width: calc(#{$switch-height-lg} - calc(#{$switch-thumb-padding} * 2));
- height: calc(#{$switch-height-lg} - calc(#{$switch-thumb-padding} * 2));
- }
- &:checked + label::after {
- margin-left: $switch-height-lg;
- }
- }
- }
- + .switch {
- margin-left: 1rem;
- }
- }
|