CommonProgressBar.vue 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. <!-- Copyright (C) 2012-2024 Zammad Foundation, https://zammad-foundation.org/ -->
  2. <script setup lang="ts">
  3. export interface Props {
  4. value?: string
  5. max?: string
  6. }
  7. const props = defineProps<Props>()
  8. </script>
  9. <template>
  10. <progress class="progress" :value="props.value" :max="props.max"></progress>
  11. </template>
  12. <style scoped>
  13. .progress {
  14. @apply rounded-box bg-blue-200 dark:bg-gray-700 h-2;
  15. &::-moz-progress-bar {
  16. @apply bg-blue-800 rounded-none;
  17. }
  18. &::-webkit-progress-bar {
  19. @apply rounded-box;
  20. }
  21. &::-webkit-progress-value {
  22. @apply bg-blue-800 rounded-none;
  23. transition: width 1s;
  24. }
  25. &:indeterminate {
  26. --progress-color: theme(colors.blue.800);
  27. }
  28. &:indeterminate {
  29. background-image: repeating-linear-gradient(
  30. 90deg,
  31. var(--progress-color) -1%,
  32. var(--progress-color) 10%,
  33. transparent 10%,
  34. transparent 90%
  35. );
  36. background-size: 200%;
  37. background-position-x: 15%;
  38. animation: progress-loading 5s ease-in-out infinite;
  39. }
  40. &:indeterminate::-moz-progress-bar {
  41. @apply bg-blue-200 dark:bg-gray-700;
  42. background-image: repeating-linear-gradient(
  43. 90deg,
  44. var(--progress-color) -1%,
  45. var(--progress-color) 10%,
  46. transparent 10%,
  47. transparent 90%
  48. );
  49. background-size: 200%;
  50. background-position-x: 15%;
  51. animation: progress-loading 5s ease-in-out infinite;
  52. }
  53. @keyframes progress-loading {
  54. 50% {
  55. background-position-x: -115%;
  56. }
  57. }
  58. }
  59. </style>