DataTable.vue 855 B

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