import Vue from 'vue'; import {isObject} from 'lodash'; import {AxiosError, AxiosResponse} from "axios"; export default Vue.component('forgot-password', { props: { email: {type: String, required: true}, }, mounted: function () { (this.$refs.email as HTMLElement).focus(); }, data: function () { return { X_CSRF_TOKEN: window.X_CSRF_TOKEN, errors: [], submitDisabled: false, showSpinner: false, }; }, methods: { updateEmail: function (event: { target: HTMLInputElement }) { this.$data.submitDisabled = false; this.$emit('update-email', event.target.value); }, submitForm: function () { this.$data.submitDisabled = true; this.$data.showSpinner = true; this.$data.errors = []; this.$flash.clear(); window.axios.post(this.route('auth.forgot-password'), { email: this.$props.email, }) .then((response: AxiosResponse) => { if (!(response.data instanceof Object)) { throw new Error('An error was encountered while processing this request.'); } this.$data.submitDisabled = false; this.$data.showSpinner = false; this.$flash.success(response.data.status); this.$router.push({name: 'login'}); }) .catch((err: AxiosError) => { this.$data.showSpinner = false; if (!err.response) { return console.error(err); } const response = err.response; if (response.data && isObject(response.data.errors)) { response.data.errors.forEach((error: any) => { this.$flash.error(error.detail); }); } }); } }, template: `

{{ $t('auth.forgot_password.label_help') }}

{{ $t('auth.go_to_login') }}
`, })