LoadingOverlay.vue 928 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. <template>
  2. <v-overlay
  3. :model-value="isLoading"
  4. class="loading-overlay"
  5. persistent
  6. contained
  7. >
  8. <div class="loading-content">
  9. <v-progress-circular
  10. indeterminate
  11. size="48"
  12. color="primary"
  13. ></v-progress-circular>
  14. <div class="loading-message">{{ loadingMessage }}</div>
  15. </div>
  16. </v-overlay>
  17. </template>
  18. <script setup>
  19. defineProps({
  20. isLoading: {
  21. type: Boolean,
  22. default: false
  23. },
  24. loadingMessage: {
  25. type: String,
  26. default: '처리 중...'
  27. }
  28. })
  29. </script>
  30. <style scoped>
  31. .loading-overlay {
  32. z-index: 9999;
  33. }
  34. .loading-content {
  35. display: flex;
  36. flex-direction: column;
  37. align-items: center;
  38. gap: 16px;
  39. padding: 24px;
  40. background: rgba(255, 255, 255, 0.95);
  41. border-radius: 8px;
  42. box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
  43. }
  44. .loading-message {
  45. font-size: 14px;
  46. color: #666;
  47. text-align: center;
  48. max-width: 200px;
  49. }
  50. </style>