Advertisement
Guest User

Untitled

a guest
Mar 2nd, 2018
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.04 KB | None | 0 0
  1. <template>
  2. <v-container>
  3. <v-layout row>
  4. <v-flex xs12 sm6 offset-sm3>
  5. <v-card>
  6. <v-card-text>
  7. <v-container>
  8. <form>
  9. <v-layout row>
  10. <v-flex xs12 class="username" v-bind:class="existUsername">
  11. <v-text-field
  12. label="Username"
  13. v-model="username"
  14. :error-messages="usernameErrors"
  15. @input="$v.username.$touch()"
  16. @blur="$v.username.$touch();checkUsername();"
  17. required
  18. ></v-text-field>
  19. <span class="input-group__messages input-group__error" v-if="existUsername">This username is already registered.</span>
  20. </v-flex>
  21. </v-layout>
  22. <v-layout row>
  23. <v-flex xs12 class="email" v-bind:class="existEmail">
  24. <v-text-field
  25. label="E-mail"
  26. v-model="email"
  27. :error-messages="emailErrors"
  28. @input="$v.email.$touch()"
  29. @blur="$v.email.$touch();checkEmail();"
  30. required
  31. ></v-text-field>
  32. <span class="input-group__messages input-group__error" v-if="existEmail">This E-mail is already registered.</span>
  33. </v-flex>
  34. </v-layout>
  35. <v-layout row>
  36. <v-flex xs12>
  37. <v-text-field
  38. label="Password"
  39. v-model="password"
  40. :error-messages="passwordErrors"
  41. @input="$v.password.$touch()"
  42. @blur="$v.password.$touch()"
  43. required
  44. type="password"></v-text-field>
  45. </v-flex>
  46. </v-layout>
  47. <v-layout row>
  48. <v-flex xs12>
  49. <v-text-field
  50. label="Repeat password"
  51. v-model="repeatPassword"
  52. :error-messages="repeatPasswordErrors"
  53. @input="$v.repeatPassword.$touch()"
  54. @blur="$v.repeatPassword.$touch()"
  55. required
  56. type="password"></v-text-field>
  57. </v-flex>
  58. </v-layout>
  59. <v-layout row>
  60. <v-flex xs12>
  61. <v-btn @click="onSignup" :disabled="!$v.$dirty || $v.$error || existUsername || existEmail">Register</v-btn>
  62. <v-btn @click="onClear">Clear</v-btn>
  63. </v-flex>
  64. </v-layout>
  65. </form>
  66. </v-container>
  67. </v-card-text>
  68. </v-card>
  69. </v-flex>
  70. </v-layout>
  71. </v-container>
  72. </template>
  73.  
  74. <script>
  75. import {validationMixin} from 'vuelidate'
  76. import {required, email, sameAs} from 'vuelidate/lib/validators'
  77.  
  78. export default {
  79.  
  80. mixins: [validationMixin],
  81.  
  82. validations: {
  83. username: {required},
  84. email: {required, email},
  85. password: {required},
  86. repeatPassword: {sameAsPassword: sameAs('password')}
  87. },
  88.  
  89. data: () => ({
  90. username: '',
  91. email: '',
  92. password: '',
  93. repeatPassword: '',
  94. existUsername: false,
  95. existEmail: false
  96. }),
  97.  
  98. computed: {
  99. usernameErrors() {
  100. const errors = []
  101. if (!this.$v.username.$dirty) return errors
  102. !this.$v.username.required && errors.push('Username is required.')
  103. return errors
  104. },
  105. emailErrors() {
  106. const errors = []
  107. if (!this.$v.email.$dirty) return errors
  108. !this.$v.email.email && errors.push('Must be valid e-mail')
  109. !this.$v.email.required && errors.push('E-mail is required')
  110. return errors
  111. },
  112. passwordErrors() {
  113. const errors = []
  114. if (!this.$v.password.$dirty) return errors
  115. !this.$v.password.required && errors.push('Password is required')
  116. return errors
  117. },
  118. repeatPasswordErrors() {
  119. const errors = []
  120. if (!this.$v.repeatPassword.$dirty) return errors
  121. !this.$v.repeatPassword.sameAsPassword && errors.push('Passwords must be identical')
  122. return errors
  123. }
  124. },
  125.  
  126. methods: {
  127. onSignup: async function () {
  128. try {
  129. //const register = await this.$store.dispatch('register', user)
  130. } catch (err) {
  131. console.log(err)
  132. }
  133. },
  134. onClear() {
  135. this.$v.$reset()
  136. this.username = ''
  137. this.email = ''
  138. this.password = ''
  139. this.repeatPassword = ''
  140. },
  141. async checkUsername() {
  142. this.existUsername = await this.$axios.$post('checkUsername', {username: this.username})
  143. },
  144. async checkEmail() {
  145. this.existEmail = await this.$axios.$post('checkEmail', {email: this.email})
  146. }
  147. }
  148. }
  149. </script>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement