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.

66 lines
1.2 KiB

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