CommonLoader.vue 853 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. <!-- Copyright (C) 2012-2023 Zammad Foundation, https://zammad-foundation.org/ -->
  2. <script setup lang="ts">
  3. /* eslint-disable vue/no-v-html */
  4. import { markup } from '#shared/utils/markup.ts'
  5. import CommonAlert from '#shared/components/CommonAlert/CommonAlert.vue'
  6. interface Props {
  7. loading?: boolean
  8. error?: string | null
  9. }
  10. defineProps<Props>()
  11. </script>
  12. <script lang="ts">
  13. export default {
  14. inheritAttrs: false,
  15. }
  16. </script>
  17. <template>
  18. <div
  19. v-if="loading"
  20. v-bind="$attrs"
  21. class="flex justify-center items-center"
  22. role="status"
  23. >
  24. <CommonIcon
  25. class="fill-yellow-300"
  26. name="spinner"
  27. animation="spin"
  28. :label="__('Loading…')"
  29. />
  30. </div>
  31. <CommonAlert v-else-if="error" v-bind="$attrs" variant="danger">
  32. <span v-html="markup($t(error))" />
  33. </CommonAlert>
  34. <slot v-else />
  35. </template>