DataTable.vue 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. <!--
  2. 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 lang="ts">
  24. import { defineComponent, computed, toRefs } from '@nuxtjs/composition-api'
  25. export default defineComponent({
  26. props: {
  27. items: {
  28. type: Array,
  29. required: true
  30. },
  31. headers: {
  32. type: Array,
  33. required: true
  34. }
  35. },
  36. setup (props) {
  37. const { headers } = toRefs(props)
  38. const headersWithItem = computed(() => {
  39. return headers.value.map((header:any) => {
  40. header.item = 'item.' + header.value
  41. return header
  42. })
  43. })
  44. return {
  45. headersWithItem
  46. }
  47. }
  48. })
  49. </script>