CommonLoader.vue 780 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. <!-- Copyright (C) 2012-2024 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. interface Props {
  6. loading?: boolean
  7. error?: string | null
  8. }
  9. defineProps<Props>()
  10. </script>
  11. <script lang="ts">
  12. export default {
  13. inheritAttrs: false,
  14. }
  15. </script>
  16. <template>
  17. <div
  18. v-if="loading"
  19. v-bind="$attrs"
  20. class="flex justify-center items-center"
  21. role="status"
  22. >
  23. <CommonIcon
  24. class="fill-yellow-300"
  25. name="spinner"
  26. animation="spin"
  27. :label="__('Loading…')"
  28. />
  29. </div>
  30. <CommonAlert v-else-if="error" v-bind="$attrs" variant="danger">
  31. <span v-html="markup($t(error))" />
  32. </CommonAlert>
  33. <slot v-else />
  34. </template>