122 lines
4.4 KiB
Vue
122 lines
4.4 KiB
Vue
<script setup>
|
|
import { Head, Link, useForm } from '@inertiajs/vue3';
|
|
|
|
import Checkbox from '@Holos/Checkbox.vue';
|
|
import InputLabel from '@Holos/InputLabel.vue';
|
|
import Error from '@Holos/Form/Elements/Error.vue';
|
|
import PrimaryButton from '@Holos/Button/Primary.vue';
|
|
import Input from '@Holos/Form/InputWithIcon.vue'
|
|
import Layout from '@Holos/Layout/AuthLayout.vue'
|
|
|
|
const form = useForm({
|
|
name: '',
|
|
paternal: '',
|
|
maternal: '',
|
|
phone: '',
|
|
email: '',
|
|
password: '',
|
|
password_confirmation: '',
|
|
terms: false,
|
|
});
|
|
|
|
const submit = () => {
|
|
form.post(route('register'), {
|
|
onFinish: () => form.reset('password', 'password_confirmation'),
|
|
});
|
|
};
|
|
</script>
|
|
|
|
<template>
|
|
<Layout :title="$t('auth.register.me')">
|
|
<form @submit.prevent="submit">
|
|
<Input
|
|
icon="people"
|
|
id="name"
|
|
type="text"
|
|
v-model="form.name"
|
|
:onError="form.errors.name"
|
|
:placeholder="$t('name')"
|
|
/>
|
|
<Input
|
|
icon="people"
|
|
id="paternal"
|
|
type="text"
|
|
v-model="form.paternal"
|
|
:onError="form.errors.paternal"
|
|
:placeholder="$t('paternal')"
|
|
/>
|
|
<Input
|
|
icon="people"
|
|
id="maternal"
|
|
type="text"
|
|
v-model="form.maternal"
|
|
:onError="form.errors.maternal"
|
|
:placeholder="$t('maternal')"
|
|
/>
|
|
<Input
|
|
icon="phone"
|
|
id="phone"
|
|
type="number"
|
|
v-model="form.phone"
|
|
:onError="form.errors.phone"
|
|
:placeholder="$t('phone')"
|
|
/>
|
|
<Input
|
|
icon="mail"
|
|
id="email"
|
|
type="email"
|
|
v-model="form.email"
|
|
:onError="form.errors.email"
|
|
:placeholder="$t('email.title')"
|
|
/>
|
|
<Input
|
|
icon="password"
|
|
id="password"
|
|
type="password"
|
|
v-model="form.password"
|
|
:onError="form.errors.password"
|
|
:placeholder="$t('password')"
|
|
/>
|
|
<Input
|
|
icon="password"
|
|
id="passwordConfirmation"
|
|
type="password"
|
|
v-model="form.password_confirmation"
|
|
:onError="form.errors.password_confirmation"
|
|
:placeholder="$t('passwordConfirmation')"
|
|
/>
|
|
|
|
|
|
<div v-if="$page.props.jetstream.hasTermsAndPrivacyPolicyFeature" class="mt-4">
|
|
<InputLabel for="terms">
|
|
<div class="flex items-center">
|
|
<Checkbox id="terms" v-model:checked="form.terms" name="terms" required />
|
|
|
|
<div class="ms-2 text-primary-t dark:text-primary-dt">
|
|
I agree to the
|
|
<a target="_blank" :href="route('terms.show')" class="underline text-sm rounded-md focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500">
|
|
{{ $t('terms.service') }}
|
|
</a>
|
|
and
|
|
<a target="_blank" :href="route('policy.show')" class="underline text-sm rounded-md focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500">
|
|
{{ $t('policy.privacy') }}
|
|
</a>
|
|
</div>
|
|
</div>
|
|
<Error class="mt-2" :onError="form.errors.terms" />
|
|
</InputLabel>
|
|
</div>
|
|
|
|
<div class="flex items-center justify-end mt-4">
|
|
<Link :href="route('login')" class="underline text-sm bg-page-text hover:bg-page-background text-page-background hover:text-page-text rounded-md focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500">
|
|
{{ $t('auth.register.already') }}
|
|
</Link>
|
|
|
|
<PrimaryButton class="ms-4" :class="{ 'opacity-25': form.processing }" :disabled="form.processing">
|
|
{{ $t('auth.register.me') }}
|
|
</PrimaryButton>
|
|
</div>
|
|
</form>
|
|
</Layout>
|
|
</template>
|