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.

107 lines
2.0 KiB

5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
  1. <template>
  2. <base-card
  3. title="Add Member"
  4. agree-text="Add"
  5. cancel-text="Cancel"
  6. :disabled="!valid"
  7. @agree="create"
  8. @cancel="cancel"
  9. >
  10. <template #content>
  11. <v-form
  12. ref="form"
  13. v-model="valid"
  14. >
  15. <v-autocomplete
  16. v-model="selectedUser"
  17. :items="items"
  18. :loading="isLoading"
  19. :search-input.sync="username"
  20. :rules="userRules"
  21. color="white"
  22. hide-no-data
  23. hide-selected
  24. item-text="username"
  25. label="User Search APIs"
  26. placeholder="Start typing to Search"
  27. prepend-icon="mdi-account"
  28. return-object
  29. />
  30. <v-select
  31. v-model="role"
  32. :items="roles"
  33. :rules="roleRules"
  34. label="Role"
  35. prepend-icon="mdi-account-card-details-outline"
  36. />
  37. </v-form>
  38. </template>
  39. </base-card>
  40. </template>
  41. <script>
  42. import BaseCard from '@/components/molecules/BaseCard'
  43. export default {
  44. components: {
  45. BaseCard
  46. },
  47. props: {
  48. addMember: {
  49. type: Function,
  50. default: () => {},
  51. required: true
  52. },
  53. items: {
  54. type: Array,
  55. default: () => {},
  56. required: true
  57. }
  58. },
  59. data() {
  60. return {
  61. valid: false,
  62. username: '',
  63. role: null,
  64. isLoading: false,
  65. selectedUser: null,
  66. roles: ['Admin', 'Member'],
  67. userRules: [
  68. v => !!v || 'User is required'
  69. ],
  70. roleRules: [
  71. v => !!v || 'Role is required'
  72. ]
  73. }
  74. },
  75. watch: {
  76. username(val) {
  77. this.$emit('search-user', val)
  78. }
  79. },
  80. methods: {
  81. cancel() {
  82. this.$emit('close')
  83. },
  84. validate() {
  85. return this.$refs.form.validate()
  86. },
  87. reset() {
  88. this.$refs.form.reset()
  89. },
  90. create() {
  91. if (this.validate()) {
  92. this.addMember({
  93. userId: this.selectedUser.id,
  94. projectId: this.$route.params.id,
  95. role: this.role
  96. })
  97. this.reset()
  98. this.cancel()
  99. }
  100. }
  101. }
  102. }
  103. </script>