loomio/loomio

View on GitHub
vue/src/components/group/membership_request_form.vue

Summary

Maintainability
Test Coverage
<script lang="js">
import Session        from '@/shared/services/session';
import Records        from '@/shared/services/records';
import AbilityService from '@/shared/services/ability_service';
import Flash  from '@/shared/services/flash';

export default
{
  props: {
    group: Object,
    close: Function
  },

  methods: {
    submit() {
      this.membershipRequest.save().then(() => {
        Flash.success('membership_request_form.messages.membership_requested', {group: this.group.fullName});
        this.close();
      });
    }
  },

  data() {
    return {
      membershipRequest: Records.membershipRequests.build({
        groupId: this.group.id,
        name: Session.user().name,
        email: Session.user().email,
        introduction: null
      })
    };
  },

  computed: {
    isSignedIn() { return Session.isSignedIn(); }
  }
};
</script>
<template lang="pug">
v-card.membership-request-form
  submit-overlay(:value='membershipRequest.processing')
  v-card-title
    h1.text-h5(tabindex="-1" v-t="'membership_request_form.heading'")
    v-spacer
    dismiss-modal-button(:close="close")
  v-card-text
    .membership-request-form__visitor(v-if='!isSignedIn')
      v-text-field.membership-request-form__name(v-model='membershipRequest.name' :required='true' :label="$t('membership_request_form.name_label')")
      v-text-field.membership-request-form__email(v-model='membershipRequest.email' :required='true' :label="$t('membership_request_form.email_label')")
      validation-errors(:subject='membershipRequest' field='email')
    .membership-request-form__reason
      v-textarea.membership-request-form__introduction(v-model='membershipRequest.introduction' :required='false' maxlength='250' :label="$t('membership_request_form.introduction_label')")
  v-card-actions
    v-btn.membership-request-form__cancel-btn(@click='close()' v-t="'common.action.cancel'")
    v-spacer
    v-btn.membership-request-form__submit-btn(color="primary" @click='submit()' v-t="'membership_request_form.submit_button'")
</template>