| /*********************************************************************************** |
| VERTICAL COLLAPSE-EXPEND TRANSITION ANIMATION PAIR. |
| |
| We use the 'transition-vertical-collapse' for the collapse/idle block element, |
| and the 'transition-vertical-expand' to expend that element. |
| |
| -important: The element that will be used for the animation should be |
| a block element, adn have a content or width and height settings for it to work. |
| *********************************************************************************/ |
| |
| /** |
| Enable to fold an expended block element |
| @param $offsetY - The top position from which the drop down should fold |
| */ |
| @mixin keyframes-expand-animation($name, $maxHeight, $boxShadow:0 0 12px 0px rgba(0,0,0,.3), $margin:0){ |
| @keyframes #{$name} { |
| 0% { |
| opacity: 0; |
| max-height: 0; |
| overflow: hidden; |
| box-shadow: 0 0 0px 0px rgba(0,0,0,.3); |
| margin:0; |
| } |
| 10% { |
| opacity: 1; |
| margin: $margin; |
| } |
| 50% { |
| box-shadow: $boxShadow; |
| } |
| 99%{ |
| max-height:$maxHeight; |
| |
| overflow: hidden; |
| } |
| 100%{ |
| opacity: 1; |
| max-height:$maxHeight; |
| overflow: auto; |
| } |
| } |
| } |
| |
| /** |
| Enable to expend a folded block element |
| @param $maxHeight - most of the animation is done over the max-height property |
| so we have to set the maximum height the expended element can expend to. |
| */ |
| @mixin keyframes-collapse-animation($name, $maxHeight, $boxShadow:0 0 12px 0px rgba(0,0,0,.3)){ |
| @keyframes #{$name} { |
| 0% { |
| opacity: 1; |
| max-height:$maxHeight; |
| box-shadow: $boxShadow; |
| overflow: hidden; |
| } |
| 40%{ |
| opacity: 1; |
| } |
| 99%{ |
| opacity: 0; |
| max-height: 0; |
| overflow: hidden; |
| box-shadow: 0 0 0px 0px rgba(0,0,0,.3); |
| } |
| 100%{ |
| opacity: 0; |
| max-height: 0; |
| overflow: auto; |
| } |
| } |
| } |
| |
| /******************************************************************************** |
| SIMPLE FADE-IN KEYFRAMES ANIMATION (Used in tooltip for example) |
| |
| we use 'mixin-keyframes-fade-in-vertically' to create css @keyframes rule that |
| we later can use with animation property inside our prefered css rules: |
| .our_class { |
| ... |
| animation: keyframes-fade-in-vertically 1s ease-out; |
| ... |
| } |
| *********************************************************************************/ |
| @mixin mixin-keyframes-fade-in-vertically($fromRelativeHeight, $keyframesName:keyframes-fade-in-vertically){ |
| @keyframes #{$keyframesName} { |
| from { |
| transform: translateY($fromRelativeHeight); |
| opacity: 0; |
| } |
| to { |
| transform: translateY(0); |
| opacity: 1; |
| } |
| } |
| } |
| |
| /******************************************************************************** |
| SIMPLE FADE-OUT KEYFRAMES ANIMATION (Opposite of fade-in mixin above) |
| *********************************************************************************/ |
| @mixin mixin-keyframes-fade-out-vertically($toRelativeHeight, $keyframesName:keyframes-fade-out-vertically){ |
| @keyframes #{$keyframesName} { |
| from { |
| transform: translateY(0); |
| opacity: 1; |
| } |
| to { |
| transform: translateY($toRelativeHeight); |
| opacity: 0; |
| } |
| } |
| } |
| |
| |
| |
| /******************************************************************************** |
| RIPPLE ANIMATION (Used for ripple-click directive) |
| *********************************************************************************/ |
| @keyframes ripple-animation { |
| from { |
| transform: scale(0,0); |
| opacity: 1; |
| } |
| to { |
| transform: scale(2,2); |
| opacity: 0; |
| } |
| } |
| |
| .sdc-ripple-click__animated { |
| position:relative; |
| } |
| .sdc-ripple-click__animated::before{ |
| display: inline-block; |
| position:absolute; |
| top: 0; |
| left: 0; |
| content: ''; |
| animation: ripple-animation .3s ease-out; |
| background-color: $blue; |
| width: 14px; |
| height: 14px; |
| border-radius: 50%; |
| pointer-events: none; |
| opacity: 0; |
| } |
| |
| |
| |