|
1 | 1 | @import '~box-ui-elements/es/styles/variables'; |
2 | 2 |
|
| 3 | +$ba-RegionRect-color: $bdl-yellorange; |
| 4 | +$ba-RegionRect-bgColor--default: rgba($ba-RegionRect-color, 0); // Default color uses zero alpha value for transition |
| 5 | +$ba-RegionRect-bgColor--hover: rgba($ba-RegionRect-color, .1); |
| 6 | +$ba-RegionRect-bgColor--active: rgba($ba-RegionRect-color, 0); |
| 7 | +$ba-RegionRect-transitionDelay: 25ms; |
| 8 | +$ba-RegionRect-transitionDuration: 200ms; |
| 9 | + |
3 | 10 | @mixin ba-RegionRect { |
4 | 11 | $border-radius: 6px; |
5 | 12 | $border-size-inner: 1px; |
|
19 | 26 | bottom: $border-size-outer; |
20 | 27 | left: $border-size-outer; |
21 | 28 | display: block; |
22 | | - background: rgba($bdl-yellorange, 0); // Zero alpha value for transition |
| 29 | + background-color: $ba-RegionRect-bgColor--default; |
23 | 30 | border-radius: $border-radius; |
24 | | - box-shadow: 0 0 0 $border-size-inner rgba($white, 1), 0 0 0 $border-size-outer rgba($bdl-yellorange, .6), 0 0 0 0 rgba(0, 0, 0, 0); |
25 | | - transition: background 200ms ease, box-shadow 200ms ease; |
| 31 | + box-shadow: 0 0 0 $border-size-inner rgba($white, 1), 0 0 0 $border-size-outer rgba($ba-RegionRect-color, .6), 0 0 0 0 rgba(0, 0, 0, 0); |
| 32 | + transition: background-color $ba-RegionRect-transitionDuration ease, box-shadow $ba-RegionRect-transitionDuration ease; |
26 | 33 | content: ''; |
27 | 34 | } |
28 | 35 |
|
29 | 36 | &:hover { |
30 | 37 | &::after { |
31 | | - background: rgba($bdl-yellorange, .1); |
32 | | - box-shadow: 0 0 0 $border-size-inner rgba($white, 1), 0 0 0 $border-size-outer rgba($bdl-yellorange, 1), 0 8px 16px 0 rgba(0, 0, 0, .1); |
| 38 | + background-color: $ba-RegionRect-bgColor--hover; |
| 39 | + box-shadow: 0 0 0 $border-size-inner rgba($white, 1), 0 0 0 $border-size-outer rgba($ba-RegionRect-color, 1), 0 8px 16px 0 rgba(0, 0, 0, .1); |
33 | 40 | } |
34 | 41 | } |
35 | 42 |
|
36 | | - &.is-active, |
37 | | - &:focus { |
| 43 | + &.is-active { |
| 44 | + &::after { |
| 45 | + background-color: $ba-RegionRect-bgColor--active; |
| 46 | + box-shadow: 0 0 0 $border-size-inner rgba($ba-RegionRect-color, 1), 0 0 0 $border-size-outer rgba($ba-RegionRect-color, 1), 0 8px 52px 0 rgba(0, 0, 0, .2); |
| 47 | + transition-delay: $ba-RegionRect-transitionDelay; |
| 48 | + } |
| 49 | + } |
| 50 | +} |
| 51 | + |
| 52 | +@mixin ba-RegionRect-callout { |
| 53 | + &::after { |
| 54 | + animation: ba-RegionRect-callout 1s ease-in-out $ba-RegionRect-transitionDelay 0 normal none; // Disabled by default |
| 55 | + } |
| 56 | + |
| 57 | + &:not(:focus-within) { |
38 | 58 | &::after { |
39 | | - background: rgba($bdl-yellorange, 0); |
40 | | - box-shadow: 0 0 0 $border-size-inner rgba($bdl-yellorange, 1), 0 0 0 $border-size-outer rgba($bdl-yellorange, 1), 0 8px 52px 0 rgba(0, 0, 0, .2); |
| 59 | + animation-iteration-count: 1; // Only play the animation if the user is not interacting directly with the element or its descendents |
| 60 | + animation-fill-mode: forwards; |
41 | 61 | } |
42 | 62 | } |
43 | 63 | } |
44 | 64 |
|
| 65 | +@keyframes ba-RegionRect-callout { |
| 66 | + 0%, |
| 67 | + 100% { |
| 68 | + background-color: transparent; |
| 69 | + } |
| 70 | + |
| 71 | + 30%, |
| 72 | + 70% { |
| 73 | + background-color: $ba-RegionRect-bgColor--hover; |
| 74 | + } |
| 75 | +} |
| 76 | + |
45 | 77 | .ba-RegionRect { |
46 | 78 | @include ba-RegionRect; |
47 | 79 | } |
0 commit comments