DataTable.vue 865 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. <!--
  2. Template de base d'un tableau interactif
  3. @see https://vuetifyjs.com/en/components/data-tables/
  4. -->
  5. <template>
  6. <v-col
  7. cols="12"
  8. sm="12"
  9. >
  10. <v-data-table
  11. :headers="headersWithItem"
  12. :items="items"
  13. class="elevation-1"
  14. >
  15. <template v-for="header in headersWithItem" #[header.item]="props">
  16. <slot :name="header.item" v-bind="props">
  17. {{ props.item[header.value] }}
  18. </slot>
  19. </template>
  20. </v-data-table>
  21. </v-col>
  22. </template>
  23. <script setup lang="ts">
  24. const props = defineProps({
  25. items: {
  26. type: Array,
  27. required: true
  28. },
  29. headers: {
  30. type: Array,
  31. required: true
  32. }
  33. })
  34. const { headers } = toRefs(props)
  35. const headersWithItem = computed(() => {
  36. return headers.value.map((header:any) => {
  37. header.item = 'item.' + header.value
  38. return header
  39. })
  40. })
  41. </script>