PasswordRecovery.vue 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <script setup lang="ts">
  2. import router from "@/router";
  3. import { useMainStore } from "@/stores/main";
  4. import { ref, computed } from "vue";
  5. import { required } from "@/utils";
  6. import { useDisplay } from "vuetify";
  7. import { useI18n } from "vue-i18n";
  8. import Navbar from "@/components/Navbar.vue";
  9. let email = ref("");
  10. const valid = ref(true);
  11. const { t } = useI18n();
  12. const mainStore = useMainStore();
  13. const { name } = useDisplay();
  14. const width = computed(() => {
  15. switch (name.value) {
  16. case "xs":
  17. return 12;
  18. }
  19. return 8;
  20. });
  21. function cancel() {
  22. router.back();
  23. }
  24. function submit() {
  25. mainStore.passwordRecovery(email.value);
  26. }
  27. </script>
  28. <template>
  29. <Navbar />
  30. <v-container class="d-flex fill-height">
  31. <v-row align="center" justify="center">
  32. <v-col :cols="width">
  33. <v-card class="elevation-12">
  34. <v-toolbar dark color="primary">
  35. <v-toolbar-title>{{ t("passwordRecovery") }}</v-toolbar-title>
  36. </v-toolbar>
  37. <v-card-text>
  38. <p class="subheading mb-3">
  39. {{ t("passwordRecoveryMail") }}
  40. </p>
  41. <v-form
  42. @keyup.enter="submit"
  43. v-model="valid"
  44. ref="form"
  45. @submit.prevent=""
  46. lazy-validation
  47. >
  48. <v-text-field
  49. @keyup.enter="submit"
  50. :label="$t('emailAddress')"
  51. type="text"
  52. prepend-icon="email"
  53. v-model="email"
  54. :rules="required()"
  55. required
  56. ></v-text-field>
  57. </v-form>
  58. </v-card-text>
  59. <v-card-actions>
  60. <v-spacer></v-spacer>
  61. <v-btn @click="cancel">{{ t("cancel") }}</v-btn>
  62. <v-btn @click.prevent="submit" :disabled="!valid">
  63. {{ t("submit") }}
  64. </v-btn>
  65. </v-card-actions>
  66. </v-card>
  67. </v-col>
  68. </v-row>
  69. </v-container>
  70. </template>