You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

59 lines
1.0 KiB

  1. <template>
  2. <v-data-table
  3. :value="selected"
  4. :headers="headers"
  5. :items="projects"
  6. :search="search"
  7. item-key="id"
  8. show-select
  9. @input="update"
  10. >
  11. <template v-slot:top>
  12. <v-text-field
  13. v-model="search"
  14. prepend-inner-icon="search"
  15. label="Search"
  16. single-line
  17. hide-details
  18. filled
  19. />
  20. </template>
  21. <template v-slot:item.name="{ item }">
  22. <nuxt-link :to="`/projects/${item.id}`">
  23. <span>{{ item.name }}</span>
  24. </nuxt-link>
  25. </template>
  26. </v-data-table>
  27. </template>
  28. <script>
  29. export default {
  30. props: {
  31. headers: {
  32. type: Array,
  33. default: () => [],
  34. required: true
  35. },
  36. projects: {
  37. type: Array,
  38. default: () => [],
  39. required: true
  40. },
  41. selected: {
  42. type: Array,
  43. default: () => [],
  44. required: true
  45. }
  46. },
  47. data() {
  48. return {
  49. search: ''
  50. }
  51. },
  52. methods: {
  53. update(selected) {
  54. this.$emit('update', selected)
  55. }
  56. }
  57. }
  58. </script>