diff options
Diffstat (limited to 'src/client/components/global/loading.vue')
| -rw-r--r-- | src/client/components/global/loading.vue | 56 |
1 files changed, 42 insertions, 14 deletions
diff --git a/src/client/components/global/loading.vue b/src/client/components/global/loading.vue index 5d0c10c086..9b810f0a16 100644 --- a/src/client/components/global/loading.vue +++ b/src/client/components/global/loading.vue @@ -1,12 +1,11 @@ <template> -<div class="yxspomdl" :class="{ inline }"> +<div class="yxspomdl" :class="{ inline, colored }"> <div class="ring"></div> </div> </template> <script lang="ts"> import { defineComponent } from 'vue'; -import * as os from '@client/os'; export default defineComponent({ props: { @@ -14,6 +13,11 @@ export default defineComponent({ type: Boolean, required: false, default: false + }, + colored: { + type: Boolean, + required: false, + default: true } } }); @@ -32,6 +36,11 @@ export default defineComponent({ .yxspomdl { padding: 32px; text-align: center; + cursor: wait; + + &.colored { + color: var(--accent); + } &.inline { display: inline; @@ -41,24 +50,43 @@ export default defineComponent({ width: 32px; height: 32px; } + + > .ring { + &:before, + &:after { + width: 32px; + height: 32px; + } + } } > .ring { + position: relative; display: inline-block; - opacity: 0.7; vertical-align: middle; - } - > .ring:after { - content: " "; - display: block; - box-sizing: border-box; - width: 48px; - height: 48px; - border-radius: 50%; - border: solid 4px; - border-color: currentColor transparent transparent transparent; - animation: ring 0.5s linear infinite; + &:before, + &:after { + content: " "; + display: block; + box-sizing: border-box; + width: 48px; + height: 48px; + border-radius: 50%; + border: solid 4px; + } + + &:before { + border-color: currentColor; + opacity: 0.3; + } + + &:after { + position: absolute; + top: 0; + border-color: currentColor transparent transparent transparent; + animation: ring 0.5s linear infinite; + } } } </style> |