123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. <script setup>
  2. import { ref, watch, computed } from 'vue'
  3. import { usePage } from '@inertiajs/inertia-vue3'
  4. const flashMessage = computed(() => usePage().props.value.flash)
  5. const messageDisplay = ref({})
  6. const onClose = () => {
  7. usePage().props.value.errors = {}
  8. usePage().props.value.flash.success = null
  9. usePage().props.value.flash.error = null
  10. messageDisplay.value = { display: 'none' }
  11. }
  12. watch(
  13. flashMessage,
  14. () => {
  15. messageDisplay.value = { display: '' }
  16. },
  17. { deep: true }
  18. )
  19. </script>
  20. <template>
  21. <div class="grid">
  22. <div class="col-12">
  23. <Message v-if="$page.props.flash.success" severity="success" :style="messageDisplay" @close="onClose">
  24. {{ $page.props.flash.success }}
  25. </Message>
  26. <template v-if="$page.props.flash.error || Object.keys($page.props.errors).length > 0">
  27. <Message v-if="$page.props.flash.error" severity="error" :style="messageDisplay" @close="onClose">
  28. {{ $page.props.flash.error }}
  29. </Message>
  30. <Message v-else severity="error" :style="messageDisplay" @close="onClose">
  31. <div v-if="Object.keys($page.props.errors).length === 1">Ditemukan satu error pada form</div>
  32. <div v-else>Ditemukan {{ Object.keys($page.props.errors).length }} error pada form</div>
  33. </Message>
  34. </template>
  35. </div>
  36. </div>
  37. </template>