@vue-interface/activity-indicator
Version:
An Vue activity indicator component.
165 lines (144 loc) • 5.96 kB
CSS
@theme {
--activity-indicator-circle-fade-width: 2.5em;
--activity-indicator-circle-fade-height: 2.5em;
--activity-indicator-circle-fade-position: relative;
--activity-indicator-circle-fade-display: inline-block;
--activity-indicator-circle-width: 100%;
--activity-indicator-circle-height: 100%;
--activity-indicator-circle-position: absolute;
--activity-indicator-circle-left: 0;
--activity-indicator-circle-top: 0;
--activity-indicator-circle-before-content: '';
--activity-indicator-circle-before-display: block;
--activity-indicator-circle-before-margin: 0 auto;
--activity-indicator-circle-before-width: 15%;
--activity-indicator-circle-before-height: 15%;
--activity-indicator-circle-before-bg: currentColor;
--activity-indicator-circle-before-border-radius: 100%;
--activity-indicator-circle-before-animation: activity-indicator-circle-fade 1.2s infinite ease-in-out both;
--activity-indicator-circle-delay-1: 0s;
--activity-indicator-circle-delay-2: -1.1s;
--activity-indicator-circle-delay-3: -1s;
--activity-indicator-circle-delay-4: -0.9s;
--activity-indicator-circle-delay-5: -0.8s;
--activity-indicator-circle-delay-6: -0.7s;
--activity-indicator-circle-delay-7: -0.6s;
--activity-indicator-circle-delay-8: -0.5s;
--activity-indicator-circle-delay-9: -0.4s;
--activity-indicator-circle-delay-10: -0.3s;
--activity-indicator-circle-delay-11: -0.2s;
--activity-indicator-circle-delay-12: -0.1s;
--activity-indicator-circle-rotate-1: rotate(0deg);
--activity-indicator-circle-rotate-2: rotate(30deg);
--activity-indicator-circle-rotate-3: rotate(60deg);
--activity-indicator-circle-rotate-4: rotate(90deg);
--activity-indicator-circle-rotate-5: rotate(120deg);
--activity-indicator-circle-rotate-6: rotate(150deg);
--activity-indicator-circle-rotate-7: rotate(180deg);
--activity-indicator-circle-rotate-8: rotate(210deg);
--activity-indicator-circle-rotate-9: rotate(240deg);
--activity-indicator-circle-rotate-10: rotate(270deg);
--activity-indicator-circle-rotate-11: rotate(300deg);
--activity-indicator-circle-rotate-12: rotate(330deg);
--activity-indicator-circle-fade-opacity-false: 0;
--activity-indicator-circle-fade-opacity-true: 1;
}
@utility activity-indicator-circle-fade {
display: var(--activity-indicator-circle-fade-display);
width: var(--activity-indicator-circle-fade-width);
height: var(--activity-indicator-circle-fade-height);
position: var(--activity-indicator-circle-fade-position);
}
@utility activity-indicator-circle {
width: var(--activity-indicator-circle-width);
height: var(--activity-indicator-circle-height);
position: var(--activity-indicator-circle-position);
left: var(--activity-indicator-circle-left);
top: var(--activity-indicator-circle-top);
&:before {
content: var(--activity-indicator-circle-before-content);
display: var(--activity-indicator-circle-before-display);
margin: var(--activity-indicator-circle-before-margin);
width: var(--activity-indicator-circle-before-width);
height: var(--activity-indicator-circle-before-height);
background-color: var(--activity-indicator-circle-before-bg);
border-radius: var(--activity-indicator-circle-before-border-radius);
animation: var(--activity-indicator-circle-before-animation);
}
&:nth-child(1) {
transform: var(--activity-indicator-circle-rotate-1);
&:before {
animation-delay: var(--activity-indicator-circle-delay-1);
}
}
&:nth-child(2) {
transform: var(--activity-indicator-circle-rotate-2);
&:before {
animation-delay: var(--activity-indicator-circle-delay-2);
}
}
&:nth-child(3) {
transform: var(--activity-indicator-circle-rotate-3);
&:before {
animation-delay: var(--activity-indicator-circle-delay-3);
}
}
&:nth-child(4) {
transform: var(--activity-indicator-circle-rotate-4);
&:before {
animation-delay: var(--activity-indicator-circle-delay-4);
}
}
&:nth-child(5) {
transform: var(--activity-indicator-circle-rotate-5);
&:before {
animation-delay: var(--activity-indicator-circle-delay-5);
}
}
&:nth-child(6) {
transform: var(--activity-indicator-circle-rotate-6);
&:before {
animation-delay: var(--activity-indicator-circle-delay-6);
}
}
&:nth-child(7) {
transform: var(--activity-indicator-circle-rotate-7);
&:before {
animation-delay: var(--activity-indicator-circle-delay-7);
}
}
&:nth-child(8) {
transform: var(--activity-indicator-circle-rotate-8);
&:before {
animation-delay: var(--activity-indicator-circle-delay-8);
}
}
&:nth-child(9) {
transform: var(--activity-indicator-circle-rotate-9);
&:before {
animation-delay: var(--activity-indicator-circle-delay-9);
}
}
&:nth-child(10) {
transform: var(--activity-indicator-circle-rotate-10);
&:before {
animation-delay: var(--activity-indicator-circle-delay-10);
}
}
&:nth-child(11) {
transform: var(--activity-indicator-circle-rotate-11);
&:before {
animation-delay: var(--activity-indicator-circle-delay-11);
}
}
&:nth-child(12) {
transform: var(--activity-indicator-circle-rotate-12);
&:before {
animation-delay: var(--activity-indicator-circle-delay-12);
}
}
}
@keyframes activity-indicator-circle-fade {
0%, 39%, 100% { opacity: var(--activity-indicator-circle-fade-opacity-false); }
40% { opacity: var(--activity-indicator-circle-fade-opacity-true); }
}