EventList.vue 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. <template>
  2. <div>
  3. <v-list>
  4. <v-list-item
  5. class="event-item"
  6. v-for="event in events"
  7. :key="event.id"
  8. :subtitle="date.format(event.datetimeStart, 'fullDateWithWeekday')"
  9. :title="event.name"
  10. >
  11. <template v-slot:prepend>
  12. <v-avatar color="grey-lighten-1">
  13. <v-img :src="event.image" alt="Image de l'événement" />
  14. </v-avatar>
  15. </template>
  16. <template v-slot:append>
  17. <v-avatar color="primary" @click="$emit('edit', event.id)">
  18. <v-icon>fas fa-pencil</v-icon>
  19. </v-avatar>
  20. <UiButtonDelete :entity="event">
  21. <v-avatar color="error">
  22. <v-icon>fas fa-trash</v-icon>
  23. </v-avatar>
  24. </UiButtonDelete>
  25. </template>
  26. </v-list-item>
  27. </v-list>
  28. <div class="d-flex justify-space-between px-4 py-2">
  29. <v-btn variant="outlined" @click="$emit('load', pagination.first)" v-if="pagination.first && pagination.previous">Premier</v-btn>
  30. <v-btn variant="outlined" @click="$emit('load', pagination.previous)" v-if="pagination.previous">Précédents</v-btn>
  31. <v-btn variant="outlined" @click="$emit('load', pagination.next)" v-if="pagination.next">Suivants</v-btn>
  32. <v-btn variant="outlined" @click="$emit('load', pagination.last)" v-if="pagination.last != 1">Dernier</v-btn>
  33. </div>
  34. </div>
  35. </template>
  36. <script lang="ts" setup>
  37. import { defineProps, defineEmits } from 'vue'
  38. import type {Collection} from "pinia-orm";
  39. import Event from "~/models/Freemium/Event";
  40. import type {Pagination} from "~/types/data";
  41. import { useDate } from 'vuetify'
  42. const props = defineProps<{
  43. events: Collection<Event>,
  44. pagination: Pagination
  45. }>()
  46. const emits = defineEmits(['edit', 'load'])
  47. const date = useDate()
  48. </script>
  49. <style scoped>
  50. .event-item {
  51. margin-top: 20px;
  52. }
  53. </style>