summaryrefslogtreecommitdiff
path: root/templates/assets/bootstrap-material-design/scss/_radios.scss
blob: 6c70f4523ba81d46cbfb686bb652c1920cc01908 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
.radio label,
label.radio-inline {
  position: relative;
  padding-left: $bmd-radio-size + $bmd-radio-label-padding; // absolutely positioned so add the radio size

  .bmd-radio-outer-circle, // don't use generic span, it may conflict with span in user markup #693
  .bmd-radio-inner-circle {
    position: absolute;
    top: calc-top($line-height-base, $font-size-base, $bmd-radio-size); // vertical center of line-height
    left: 0;
    display: inline-block;
    width: $bmd-radio-size;
    height: $bmd-radio-size;
    cursor: pointer;
    transition-duration: 0.2s;

    &.bmd-radio-outer-circle {
      border: $bmd-radio-border solid $bmd-radio-color-off;
      border-radius: 50%;
      transition: border-color ease .28s;
    }
    &.bmd-radio-inner-circle {
      display: inline-block;
      background-color: $bmd-radio-color-on;
      border-radius: 50%;
      transition: transform ease .28s;
      transform: scale3d(0, 0, 0);

      // focus/press ripple
      &::after {
        position: absolute;
        top: -#{$bmd-radio-ripple-offset};
        left: -#{$bmd-radio-ripple-offset};
        z-index: 1;
        display: block;
        width: 50px;
        height: 50px;
        margin: 0;
        content: "";
        background-color: $gray-dark;
        border-radius: 100%;
        opacity: 0;
        transform: scale3d(1.5, 1.5, 1);
      }
    }
  }

  input[type=radio] {
    // Hide native radio
    position: absolute;
    left: 0;
    z-index: -1;
    width: 0;
    height: 0;
    margin: 0;
    overflow: hidden;
    pointer-events: none;
    opacity: 0;

    &:checked {
      @include bmd-radio-color($bmd-radio-color-on);

      ~ .bmd-radio-inner-circle {
        transform: scale3d(0.55, 0.55, 1);
        &::after {
          animation: rippleOn;

          .is-focused & {
            // Prevent ripple effect on page load
            animation: rippleOn 500ms;
          }
        }
      }
    }

    &:not(:checked) ~ .bmd-radio-inner-circle::after {
      animation: rippleOff 500ms;
    }

    &[disabled],
    &:disabled,
    fieldset[disabled] & {

      + .bmd-radio-outer-circle {
        cursor: default;
      }

      @include bmd-radio-color($bmd-radio-color-disabled);

      .bg-inverse & {
        @include bmd-radio-color($bmd-radio-color-disabled-inverse);
      }
    }
  }
}

@keyframes rippleOn {
  0% {
    opacity: 0;
  }
  50% {
    opacity: 0.2;
  }
  100% {
    opacity: 0;
  }
}

@keyframes rippleOff {
  0% {
    opacity: 0;
  }
  50% {
    opacity: 0.2;
  }
  100% {
    opacity: 0;
  }
}