Skip to content
Snippets Groups Projects
ProjectMemberSelect.vue 1.17 KiB
Newer Older
<template>
  <div class="field">
    <Dropdown
      :options="userOptions"
      :selected="selectedProjectUser ? selectedProjectUser.name : ''"
      :selection.sync="selectedProjectUser"
      :search="true"
      :clearable="true"
    />
  </div>
</template>

<script>
import Dropdown from '@/components/Dropdown.vue';
import { formatUserOption } from '@/utils';
import { mapState } from 'vuex';

export default {
  name: 'ProjectMemberSelect',
    
  components: {
    Dropdown,
  },

  props: {
    selectedUserId: {
      type: Number,
      default: null,
    }
  },

  computed: {
    ...mapState('projects', [
      'projectUsers'
    ]),
    userOptions: function () {
      return this.projectUsers
        .filter((el) => el.level.codename === 'logged_user')
        .map((el) => formatUserOption(el.user));
    },
    selectedProjectUser: {
      // getter
      get() {
        return this.userOptions.find(el => el.value === this.selectedUserId);
      },
      // setter
      set(newValue) {
        this.$emit('update:user', newValue.value);
      },
    }
  },

  created() {
    this.$store.dispatch('projects/GET_PROJECT_USERS', this.$route.params.slug);
  },
}
</script>