DataTable.vue 894 B

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