254 lines
9.9 KiB
Vue
254 lines
9.9 KiB
Vue
<template>
|
|
<UiContainer class="flex py-[15px] xl:py-20 sm:py-0">
|
|
<div
|
|
class="hidden xl:block rounded-2xl min-w-[40%] h-[830px]"
|
|
:style="{
|
|
backgroundImage: `url('/api/public/file/${component.img[0]}_l.webp')`,
|
|
backgroundSize: 'cover',
|
|
backgroundPosition: 'center',
|
|
}"
|
|
/>
|
|
<div class="w-full sm:w-[80%] mx-auto my-auto xl:w-full xl:px-12">
|
|
<div class="space-25-55">
|
|
<div class="flex flex-wrap-reverse gap-y-4 justify-between">
|
|
<h2 class="h2-bold-bounded">
|
|
{{ $t("sign_up") }}
|
|
</h2>
|
|
<button
|
|
class="h-[40px] sm:h-[43px] px-[10px] sm:px-[17px] border border-gray dark:border-button-disabled text-gray dark:text-button-disabled hover:bg-gray transition-all hover:text-white rounded-[8px] cursor-pointer"
|
|
@click="menuStore.navigateToItem()"
|
|
>
|
|
{{ $t("back_to_home") }}
|
|
</button>
|
|
</div>
|
|
<div class="space-y-[25px] sm:space-y-[30px]">
|
|
<p>{{ $t("current_information") }}</p>
|
|
<div class="grid grid-cols-1 md:grid-cols-2 gap-[30px]">
|
|
<div class="space-y-[15px]">
|
|
<p class="pl-6">
|
|
{{ $t("first_name") }}
|
|
</p>
|
|
<input
|
|
:placeholder="$t('first_name')"
|
|
type="text"
|
|
class="text-sm sm:text-xl border border-block placeholder:text-gray dark:placeholder:text-button-disabled text-bg-dark dark:text-bg-light rounded-lg px-6 h-[50px] sm:h-[67px] w-full focus:outline-none focus:ring-0 focus:border-2"
|
|
>
|
|
</div>
|
|
<div class="space-y-[15px]">
|
|
<p class="pl-6">
|
|
{{ $t("last_name") }}
|
|
</p>
|
|
<input
|
|
:placeholder="$t('last_name')"
|
|
type="text"
|
|
class="text-sm sm:text-xl border-2 border-block placeholder:text-gray dark:placeholder:text-button-disabled text-bg-dark dark:text-bg-light rounded-lg px-6 h-[50px] sm:h-[67px] w-full focus:outline-none focus:ring-0 focus:border-2"
|
|
>
|
|
</div>
|
|
<div class="space-y-[15px]">
|
|
<p class="pl-6">
|
|
{{ $t("email") }}
|
|
</p>
|
|
<input
|
|
:placeholder="$t('email')"
|
|
type="text"
|
|
class="text-sm sm:text-xl border border-block placeholder:text-gray dark:placeholder:text-button-disabled text-bg-dark dark:text-bg-light rounded-lg px-6 h-[50px] sm:h-[67px] w-full focus:outline-none focus:ring-0 focus:border-2"
|
|
>
|
|
</div>
|
|
<div ref="dropdownRef"
|
|
class="space-y-[15px]"
|
|
>
|
|
<p class="pl-6">
|
|
{{ $t("phone") }}
|
|
</p>
|
|
<div class="flex items-center border-2 border-block rounded-lg">
|
|
<div
|
|
class="relative z-50 bg-inherit ring-0 cursor-pointer focus:ring-0 outline-none focus-visible:ring-0"
|
|
>
|
|
<div class="px-[25px]"
|
|
@click="dropCountry = !dropCountry"
|
|
>
|
|
<div
|
|
class="flex items-center gap-2 text-sm sm:text-xl uppercase text-text-light dark:text-text-dark"
|
|
>
|
|
<span
|
|
:class="[dropCountry && 'rotate-180', 'transition-all']"
|
|
>
|
|
<i
|
|
class="uil uil-angle-down text-2xl font-light cursor-pointer"
|
|
/></span>
|
|
<p class="text-sm sm:text-xl">
|
|
{{ menuStore.selectedPhoneCountry.iso_code }}
|
|
</p>
|
|
</div>
|
|
</div>
|
|
|
|
<div
|
|
v-if="dropCountry"
|
|
class="mt-2 absolute bg-bg-light dark:bg-bg-dark rounded-[5px] ring-0 cursor-pointer w-[130px] sm:w-full border border-button py-[10px] px-[5px] overflow-hidden"
|
|
>
|
|
<div class="overflow-y-auto h-[200px] w-full">
|
|
<p
|
|
v-for="item in menuStore.countries"
|
|
:key="item.iso_code"
|
|
class="w-full truncate whitespace-nowrap overflow-hidden hover:bg-block dark:hover:bg-button pl-2 py-2 text-base text-text-light dark:text-text-dark rounded-[5px]"
|
|
:title="item.name"
|
|
@click="
|
|
() => {
|
|
menuStore.selectedPhoneCountry = item;
|
|
dropCountry = false;
|
|
}
|
|
"
|
|
>
|
|
{{ item.name }}
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<p class="text-sm sm:text-xl font-normal">
|
|
{{ menuStore.selectedPhoneCountry.call_prefix }}
|
|
</p>
|
|
<input
|
|
id="phone"
|
|
:placeholder="$t('phone')"
|
|
type="text"
|
|
class="text-sm sm:text-xl placeholder:text-gray dark:placeholder:text-button-disabled text-bg-dark dark:text-bg-light px-6 h-[50px] sm:h-[67px] w-full focus:outline-none focus:ring-0"
|
|
>
|
|
</div>
|
|
</div>
|
|
<div class="space-y-[15px]">
|
|
<p class="pl-6">
|
|
{{ $t("account_type") }}
|
|
</p>
|
|
<USelect
|
|
v-model="selectedType"
|
|
:items="
|
|
component.front_section_lang
|
|
&& component.front_section_lang[0].data.account_types
|
|
"
|
|
value-key="name"
|
|
:searchable="false"
|
|
:ui="{
|
|
base: 'bg-inherit ring-0 cursor-pointer w-auto focus:ring-0 outline-none focus-visible:ring-0 h-[50px] sm:h-[67px] w-full p-0',
|
|
trailing: 'hidden w-full',
|
|
viewport: 'ring-0 min-w-full',
|
|
content:
|
|
'bg-bg-light dark:bg-bg-dark ring-0 border border-button',
|
|
leading:
|
|
'left-1/2 top-1/2 transform -translate-x-1/2 -translate-y-1/2 p-0 w-full',
|
|
group: 'px-[5px] py-[10px]',
|
|
item: 'hover:bg-block dark:hover:bg-button rounded-[5px] data-highlighted:not-data-disabled:before:bg-button/50 min-w-full',
|
|
}"
|
|
>
|
|
<template #leading="{ modelValue }">
|
|
<div
|
|
class="flex items-center justify-between gap-2 uppercase text-sm sm:text-xl border-2 border-block placeholder:text-gray dark:placeholder:text-button-disabled text-bg-dark dark:text-bg-light rounded-lg px-6 w-full h-[50px] sm:h-[67px]"
|
|
>
|
|
<p class="truncate whitespace-nowrap">
|
|
{{
|
|
component.front_section_lang
|
|
&& component.front_section_lang[0].data.account_types.find(
|
|
(item) => item.name === modelValue,
|
|
)?.name
|
|
}}
|
|
</p>
|
|
<span>
|
|
<i
|
|
class="uil uil-angle-down text-2xl font-light cursor-pointer"
|
|
/></span>
|
|
</div>
|
|
</template>
|
|
|
|
<template #item="{ item }">
|
|
<div
|
|
class="flex items-center gap-2 cursor-pointer min-w-full"
|
|
>
|
|
<p
|
|
class="truncate whitespace-nowrap text-sm sm:text-xl font-medium uppercase text-text-light dark:text-text-dark opacity-100"
|
|
>
|
|
{{ item.name }}
|
|
</p>
|
|
</div>
|
|
</template>
|
|
</USelect>
|
|
</div>
|
|
<div class="space-y-[15px]">
|
|
<p class="pl-6">
|
|
{{ $t("partner_code") }}
|
|
</p>
|
|
<input
|
|
:placeholder="$t('placeholder_password')"
|
|
type="text"
|
|
class="border-2 border-block placeholder:text-gray dark:placeholder:text-button-disabled text-bg-dark dark:text-bg-light rounded-lg px-6 h-[50px] sm:h-[67px] w-full focus:outline-none focus:ring-0 focus:border-2"
|
|
>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div
|
|
class="py-[25px] sm:py-12 border-b border-gray flex justify-center w-full"
|
|
>
|
|
<UiButtonArrow type="fill"
|
|
:arrow="true"
|
|
>
|
|
{{
|
|
$t("sign_up")
|
|
}}
|
|
</UiButtonArrow>
|
|
</div>
|
|
<div class="mt-[25px] sm:mt-[30px] w-full flex justify-center gap-3">
|
|
<p class="cursor-pointer hover:underline transition-all">
|
|
{{ $t("is_account") }}
|
|
</p>
|
|
<p
|
|
class="text-button cursor-pointer hover:text-button-hover"
|
|
@click="
|
|
menuStore.navigateToItem(
|
|
menuStore.menuItems?.find((item) => item.id === 11),
|
|
)
|
|
"
|
|
>
|
|
{{ $t("login") }}
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</UiContainer>
|
|
</template>
|
|
|
|
<script lang="ts" setup>
|
|
import { onClickOutside } from '@vueuse/core'
|
|
|
|
const props = defineProps<{
|
|
component: {
|
|
id: number
|
|
name: string
|
|
img: string[]
|
|
component_name: string
|
|
is_no_lang: boolean
|
|
page_name: string
|
|
front_section_lang: {
|
|
data: {
|
|
account_types: {
|
|
id: number
|
|
name: string
|
|
}[]
|
|
}
|
|
id_front_section: number
|
|
id_lang: number
|
|
}[]
|
|
}
|
|
}>()
|
|
|
|
const menuStore = useMenuStore()
|
|
const dropdownRef = ref(null)
|
|
const dropCountry = ref()
|
|
|
|
const selectedType = ref()
|
|
if (props.component.front_section_lang)
|
|
selectedType.value
|
|
= props.component.front_section_lang[0].data.account_types[0].name
|
|
|
|
onClickOutside(dropdownRef, () => {
|
|
dropCountry.value = false
|
|
})
|
|
</script>
|