2021-09-04 15:05:34 +02:00
|
|
|
<template>
|
2025-11-24 17:42:26 +01:00
|
|
|
<div class="signup-container">
|
|
|
|
|
<!-- Banner utente già loggato -->
|
2022-12-08 10:09:33 +01:00
|
|
|
<div
|
2025-11-26 18:32:05 +01:00
|
|
|
v-if="tools.isLogged() && tools.getUsername() && !collettivo && !visureg"
|
2025-11-24 17:42:26 +01:00
|
|
|
class="already-logged"
|
2022-12-08 10:09:33 +01:00
|
|
|
>
|
2025-11-24 17:42:26 +01:00
|
|
|
<q-card class="success-card">
|
|
|
|
|
<q-card-section class="text-center">
|
|
|
|
|
<q-icon
|
|
|
|
|
name="check_circle"
|
|
|
|
|
size="48px"
|
|
|
|
|
color="positive"
|
|
|
|
|
/>
|
|
|
|
|
<div class="text-h6 q-mt-md">{{ tools.getUsername() }} sei già registrato!</div>
|
|
|
|
|
<p class="text-body2 q-mt-sm">Hai già accesso completo alla piattaforma</p>
|
|
|
|
|
</q-card-section>
|
|
|
|
|
<q-card-actions
|
|
|
|
|
align="center"
|
|
|
|
|
class="q-pb-md"
|
|
|
|
|
>
|
|
|
|
|
<q-btn
|
|
|
|
|
unelevated
|
|
|
|
|
color="primary"
|
|
|
|
|
icon="home"
|
|
|
|
|
label="Vai alla Home"
|
|
|
|
|
to="/"
|
|
|
|
|
class="action-btn"
|
|
|
|
|
/>
|
|
|
|
|
<q-btn
|
|
|
|
|
outline
|
|
|
|
|
color="primary"
|
|
|
|
|
icon="visibility"
|
|
|
|
|
label="Mostra Registrazione"
|
|
|
|
|
@click="visureg = true"
|
|
|
|
|
class="action-btn"
|
|
|
|
|
/>
|
|
|
|
|
</q-card-actions>
|
|
|
|
|
</q-card>
|
2025-11-15 19:38:39 +01:00
|
|
|
</div>
|
2025-11-24 17:42:26 +01:00
|
|
|
|
|
|
|
|
<!-- Form di registrazione principale -->
|
2025-11-15 19:38:39 +01:00
|
|
|
<div
|
|
|
|
|
v-if="!tools.isLogged() || visureg || collettivo"
|
2025-11-24 17:42:26 +01:00
|
|
|
class="signup-form"
|
2025-11-15 19:38:39 +01:00
|
|
|
>
|
2025-11-24 17:42:26 +01:00
|
|
|
<!-- Header con Logo -->
|
|
|
|
|
<div
|
|
|
|
|
v-if="!(visubuttBOT && needTelegram && !collettivo)"
|
|
|
|
|
class="signup-header"
|
|
|
|
|
>
|
|
|
|
|
<div class="header-content">
|
|
|
|
|
<logo
|
|
|
|
|
class="signup-logo"
|
|
|
|
|
mystyle="width: 50px !important; height: 50px !important;"
|
|
|
|
|
/>
|
|
|
|
|
<div
|
|
|
|
|
v-if="!isalreadyReg && !(visubuttBOT && needTelegram)"
|
|
|
|
|
class="signup-title"
|
|
|
|
|
>
|
|
|
|
|
<h1 class="text-h5 text-weight-light">
|
|
|
|
|
{{ $t('pages.SignUp', { sitename: tools.getappname() }) }}
|
|
|
|
|
</h1>
|
2025-11-18 23:56:08 +01:00
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
2025-11-24 17:42:26 +01:00
|
|
|
<!-- Telegram Bot Registration -->
|
2023-01-03 16:51:45 +01:00
|
|
|
<div
|
|
|
|
|
v-if="visubuttBOT && needTelegram && !collettivo"
|
2025-11-24 17:42:26 +01:00
|
|
|
class="telegram-section"
|
2023-01-03 16:51:45 +01:00
|
|
|
>
|
2025-11-24 17:42:26 +01:00
|
|
|
<q-card class="telegram-card">
|
|
|
|
|
<q-card-section>
|
|
|
|
|
<CRegistration
|
|
|
|
|
:invited="signup.aportador_solidario"
|
|
|
|
|
:regexpire="regexpire"
|
|
|
|
|
@regEventEmail="regEventEmail"
|
|
|
|
|
:signupform="true"
|
|
|
|
|
/>
|
|
|
|
|
</q-card-section>
|
|
|
|
|
</q-card>
|
2022-03-09 14:53:17 +01:00
|
|
|
</div>
|
|
|
|
|
|
2025-11-24 17:42:26 +01:00
|
|
|
<!-- Main Registration Form -->
|
2025-11-15 19:38:39 +01:00
|
|
|
<div
|
|
|
|
|
v-else-if="!isalreadyReg || collettivo"
|
2025-11-24 17:42:26 +01:00
|
|
|
class="form-content"
|
2025-11-15 19:38:39 +01:00
|
|
|
>
|
2025-11-24 17:42:26 +01:00
|
|
|
<!-- Username non impostato su Telegram -->
|
|
|
|
|
<q-card
|
|
|
|
|
v-if="signup.username === 'undefined'"
|
|
|
|
|
class="warning-card"
|
|
|
|
|
>
|
|
|
|
|
<q-card-section class="text-center">
|
|
|
|
|
<q-icon
|
|
|
|
|
name="warning"
|
|
|
|
|
size="48px"
|
|
|
|
|
color="warning"
|
|
|
|
|
/>
|
|
|
|
|
<div class="text-h6 q-mt-md">Configura Username Telegram</div>
|
|
|
|
|
<p class="q-mt-sm">
|
|
|
|
|
Vai su <strong>BOT RISO</strong> Telegram ed imposta l'Username.
|
|
|
|
|
</p>
|
|
|
|
|
<q-btn
|
|
|
|
|
unelevated
|
|
|
|
|
color="primary"
|
|
|
|
|
icon="fab fa-telegram"
|
|
|
|
|
label="Apri BOT"
|
|
|
|
|
type="a"
|
|
|
|
|
:href="tools.getLinkBotTelegram(signup.aportador_solidario, regexpire)"
|
|
|
|
|
target="_blank"
|
|
|
|
|
class="q-mt-md"
|
|
|
|
|
/>
|
|
|
|
|
</q-card-section>
|
|
|
|
|
</q-card>
|
|
|
|
|
|
|
|
|
|
<!-- Carousel Form -->
|
|
|
|
|
<div
|
|
|
|
|
v-else
|
|
|
|
|
class="carousel-wrapper"
|
|
|
|
|
>
|
|
|
|
|
<!-- Progress Stepper -->
|
|
|
|
|
<div class="progress-stepper">
|
|
|
|
|
<div
|
2025-11-27 00:48:53 +01:00
|
|
|
v-for="step in parseInt(numStepTotali)"
|
2025-11-24 17:42:26 +01:00
|
|
|
:key="step"
|
|
|
|
|
class="step-item"
|
|
|
|
|
:class="{
|
|
|
|
|
active: slide === String(step),
|
|
|
|
|
completed: parseInt(slide) > step,
|
|
|
|
|
}"
|
|
|
|
|
>
|
|
|
|
|
<div class="step-circle">
|
|
|
|
|
<q-icon
|
|
|
|
|
v-if="parseInt(slide) > step"
|
|
|
|
|
name="check"
|
|
|
|
|
size="16px"
|
|
|
|
|
/>
|
|
|
|
|
<span v-else>{{ step }}</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div
|
2025-11-27 00:48:53 +01:00
|
|
|
v-if="step < parseInt(numStepTotali)"
|
2025-11-24 17:42:26 +01:00
|
|
|
class="step-line"
|
|
|
|
|
></div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
2025-11-15 19:38:39 +01:00
|
|
|
<q-carousel
|
|
|
|
|
v-model="slide"
|
2025-11-18 23:56:08 +01:00
|
|
|
ref="carousel"
|
2025-11-15 19:38:39 +01:00
|
|
|
transition-prev="slide-right"
|
|
|
|
|
transition-next="slide-left"
|
2025-11-18 23:56:08 +01:00
|
|
|
animated
|
2025-11-15 19:38:39 +01:00
|
|
|
swipeable
|
2025-11-24 17:42:26 +01:00
|
|
|
class="modern-carousel"
|
|
|
|
|
:height="isMobile ? 'auto' : '500px'"
|
2025-11-15 19:38:39 +01:00
|
|
|
>
|
2025-11-24 17:42:26 +01:00
|
|
|
<!-- Slide 1: Email e Invitante -->
|
|
|
|
|
<q-carousel-slide
|
|
|
|
|
name="1"
|
|
|
|
|
class="carousel-slide"
|
|
|
|
|
>
|
|
|
|
|
<div class="slide-content">
|
|
|
|
|
<div class="slide-header">
|
|
|
|
|
<q-icon
|
|
|
|
|
name="mail_outline"
|
|
|
|
|
size="40px"
|
|
|
|
|
color="primary"
|
|
|
|
|
/>
|
|
|
|
|
<h2 class="slide-title">Iniziamo!</h2>
|
|
|
|
|
</div>
|
2025-11-18 23:56:08 +01:00
|
|
|
|
2025-11-24 17:42:26 +01:00
|
|
|
<div class="form-fields">
|
|
|
|
|
<q-input
|
|
|
|
|
v-if="
|
|
|
|
|
showaportador && signup.aportador_solidario !== tools.APORTADOR_NONE
|
2022-12-22 16:48:57 +01:00
|
|
|
"
|
2025-11-24 17:42:26 +01:00
|
|
|
ref="inputAportador"
|
|
|
|
|
tabindex="1"
|
|
|
|
|
v-model="signup.aportador_solidario"
|
|
|
|
|
:readonly="!!ap_iniziale"
|
|
|
|
|
filled
|
|
|
|
|
class="modern-input"
|
|
|
|
|
@keyup.enter="
|
|
|
|
|
v$.aportador_solidario.$touch && !v$.aportador_solidario.$error
|
|
|
|
|
? $refs.inputEmail.focus()
|
|
|
|
|
: null
|
|
|
|
|
"
|
|
|
|
|
@blur="v$.aportador_solidario.$touch"
|
|
|
|
|
:error="v$.aportador_solidario.$error"
|
|
|
|
|
:error-message="
|
|
|
|
|
tools.errorMsg('aportador_solidario', v$.aportador_solidario)
|
|
|
|
|
"
|
|
|
|
|
maxlength="20"
|
|
|
|
|
debounce="1000"
|
|
|
|
|
:label="
|
|
|
|
|
collettivo
|
|
|
|
|
? t('reg.username_admin_collettivo')
|
|
|
|
|
: t('reg.aportador_solidario')
|
2023-01-03 16:51:45 +01:00
|
|
|
"
|
2022-12-17 14:12:04 +01:00
|
|
|
>
|
2025-11-24 17:42:26 +01:00
|
|
|
<template v-slot:prepend>
|
|
|
|
|
<q-icon
|
|
|
|
|
name="person"
|
|
|
|
|
color="primary"
|
|
|
|
|
/>
|
|
|
|
|
</template>
|
|
|
|
|
</q-input>
|
2025-11-18 23:56:08 +01:00
|
|
|
|
2025-11-26 18:32:05 +01:00
|
|
|
<div class="invitante-non-presente">
|
|
|
|
|
<q-btn
|
|
|
|
|
v-if="!signup.aportador_solidario"
|
|
|
|
|
dense
|
|
|
|
|
outline
|
|
|
|
|
color="primary"
|
|
|
|
|
label="Non hai l'invito?"
|
|
|
|
|
icon="description"
|
|
|
|
|
@click="noinvito = true"
|
|
|
|
|
class="policy-btn"
|
|
|
|
|
/>
|
|
|
|
|
</div>
|
|
|
|
|
|
2022-12-22 16:48:57 +01:00
|
|
|
<q-input
|
2025-11-24 17:42:26 +01:00
|
|
|
ref="inputEmail"
|
|
|
|
|
tabindex="2"
|
|
|
|
|
v-model="signup.email"
|
|
|
|
|
filled
|
|
|
|
|
class="modern-input"
|
|
|
|
|
@update:model-value="changeemail()"
|
|
|
|
|
maxlength="50"
|
2025-11-15 19:38:39 +01:00
|
|
|
v-on:keyup.enter="!checkifDisabled ? $refs.carousel.next() : null"
|
2025-11-24 17:42:26 +01:00
|
|
|
debounce="2000"
|
|
|
|
|
:rules="[myRuleEmail]"
|
|
|
|
|
:label="
|
|
|
|
|
collettivo ? t('reg.email_reg_collettivo') : t('reg.email_reg')
|
|
|
|
|
"
|
2022-12-22 16:48:57 +01:00
|
|
|
>
|
|
|
|
|
<template v-slot:prepend>
|
2025-11-24 17:42:26 +01:00
|
|
|
<q-icon
|
|
|
|
|
name="email"
|
|
|
|
|
color="primary"
|
|
|
|
|
/>
|
2022-12-22 16:48:57 +01:00
|
|
|
</template>
|
|
|
|
|
</q-input>
|
|
|
|
|
</div>
|
2025-11-24 17:42:26 +01:00
|
|
|
</div>
|
|
|
|
|
</q-carousel-slide>
|
2022-08-15 15:10:00 +02:00
|
|
|
|
2025-11-24 17:42:26 +01:00
|
|
|
<!-- Slide 2: Username e Nome/Cognome -->
|
|
|
|
|
<q-carousel-slide
|
|
|
|
|
name="2"
|
|
|
|
|
class="carousel-slide"
|
|
|
|
|
>
|
|
|
|
|
<div class="slide-content">
|
|
|
|
|
<div class="slide-header">
|
|
|
|
|
<h2 class="slide-title">Scegli il tuo Username</h2>
|
|
|
|
|
<p class="slide-subtitle">Come vuoi essere chiamato?</p>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="form-fields">
|
2023-01-03 16:51:45 +01:00
|
|
|
<q-input
|
2025-11-24 17:42:26 +01:00
|
|
|
ref="inputUsername"
|
|
|
|
|
tabindex="1"
|
|
|
|
|
v-model="signup.username"
|
|
|
|
|
:readonly="
|
|
|
|
|
tools.getAskToVerifyReg() && !site.confpages?.enableRegMultiChoice
|
|
|
|
|
"
|
|
|
|
|
filled
|
|
|
|
|
class="modern-input"
|
|
|
|
|
@blur="v$.username.$touch"
|
|
|
|
|
@update:model-value="changeusername"
|
|
|
|
|
:error="v$.username.$error"
|
|
|
|
|
@keydown.space="(event) => event.preventDefault()"
|
|
|
|
|
@keyup.enter="
|
|
|
|
|
!v$.username.$error
|
|
|
|
|
? $refs.inputName
|
|
|
|
|
? $refs.inputName.focus()
|
|
|
|
|
: null
|
|
|
|
|
: null
|
|
|
|
|
"
|
|
|
|
|
maxlength="20"
|
|
|
|
|
debounce="500"
|
|
|
|
|
:error-message="
|
|
|
|
|
tools.errorMsg('username', v$.username) ||
|
|
|
|
|
(isalreadyReg ? 'L\'Username è gia stato registrato!' : '')
|
|
|
|
|
"
|
2025-11-15 19:38:39 +01:00
|
|
|
:label="
|
2025-11-24 17:42:26 +01:00
|
|
|
collettivo
|
|
|
|
|
? t('reg.username_reg_collettivo')
|
|
|
|
|
: tools.getConfSiteOptionEnabled(
|
|
|
|
|
shared_consts.ConfSite.askUSernameTelegramToTheReg
|
|
|
|
|
)
|
|
|
|
|
? t('reg.username_telegram')
|
|
|
|
|
: t('reg.username_reg')
|
2023-01-03 16:51:45 +01:00
|
|
|
"
|
|
|
|
|
>
|
|
|
|
|
<template v-slot:prepend>
|
2025-11-24 17:42:26 +01:00
|
|
|
<q-icon
|
|
|
|
|
name="person"
|
|
|
|
|
color="primary"
|
|
|
|
|
/>
|
2023-01-03 16:51:45 +01:00
|
|
|
</template>
|
|
|
|
|
</q-input>
|
2025-11-15 19:38:39 +01:00
|
|
|
|
2025-11-18 23:56:08 +01:00
|
|
|
<q-input
|
2025-11-24 17:42:26 +01:00
|
|
|
v-if="collettivo"
|
|
|
|
|
ref="inputName"
|
|
|
|
|
v-model="signup.name"
|
|
|
|
|
filled
|
|
|
|
|
class="modern-input"
|
|
|
|
|
@blur="v$.name.$touch"
|
|
|
|
|
:error="v$.name.$error"
|
2025-11-18 23:56:08 +01:00
|
|
|
maxlength="30"
|
|
|
|
|
debounce="1000"
|
|
|
|
|
v-on:keyup.enter="!checkifDisabled ? $refs.carousel.next() : null"
|
2025-11-24 17:42:26 +01:00
|
|
|
:error-message="tools.errorMsg('name', v$.name)"
|
|
|
|
|
:label="$t('reg.name_opt_collettivo')"
|
2025-11-15 19:38:39 +01:00
|
|
|
>
|
2025-11-18 23:56:08 +01:00
|
|
|
<template v-slot:prepend>
|
2025-11-24 17:42:26 +01:00
|
|
|
<q-icon
|
|
|
|
|
name="badge"
|
|
|
|
|
color="primary"
|
|
|
|
|
/>
|
2025-11-18 23:56:08 +01:00
|
|
|
</template>
|
|
|
|
|
</q-input>
|
2025-11-24 17:42:26 +01:00
|
|
|
|
|
|
|
|
<template v-else-if="show_namesurname">
|
|
|
|
|
<q-input
|
|
|
|
|
v-if="signup.name !== undefined"
|
|
|
|
|
ref="inputName"
|
|
|
|
|
tabindex="2"
|
|
|
|
|
v-model="signup.name"
|
|
|
|
|
filled
|
|
|
|
|
class="modern-input"
|
|
|
|
|
@blur="v$.name.$touch"
|
|
|
|
|
:error="v$.name.$error"
|
|
|
|
|
maxlength="30"
|
|
|
|
|
debounce="1000"
|
|
|
|
|
@keyup.enter="
|
|
|
|
|
$refs.inputSurname ? $refs.inputSurname.focus() : null
|
|
|
|
|
"
|
|
|
|
|
:error-message="tools.errorMsg('name', v$.name)"
|
|
|
|
|
:label="
|
|
|
|
|
tools.getConfSiteOptionEnabled(
|
|
|
|
|
shared_consts.ConfSite.regNameSurnameMandatory
|
|
|
|
|
)
|
|
|
|
|
? t('reg.name')
|
|
|
|
|
: t('reg.name_opt')
|
|
|
|
|
"
|
|
|
|
|
>
|
|
|
|
|
<template v-slot:prepend>
|
|
|
|
|
<q-icon
|
|
|
|
|
name="person"
|
|
|
|
|
color="primary"
|
|
|
|
|
/>
|
|
|
|
|
</template>
|
|
|
|
|
</q-input>
|
|
|
|
|
|
|
|
|
|
<q-input
|
|
|
|
|
v-if="signup.surname !== undefined"
|
|
|
|
|
ref="inputSurname"
|
|
|
|
|
tabindex="3"
|
|
|
|
|
v-model="signup.surname"
|
|
|
|
|
filled
|
|
|
|
|
class="modern-input"
|
|
|
|
|
:error="v$.surname.$error"
|
|
|
|
|
@blur="v$.surname.$touch"
|
|
|
|
|
maxlength="30"
|
|
|
|
|
debounce="1000"
|
|
|
|
|
v-on:keyup.enter="!checkifDisabled ? $refs.carousel.next() : null"
|
|
|
|
|
:error-message="tools.errorMsg('surname', v$.surname)"
|
|
|
|
|
:label="$t('reg.surname_opt')"
|
|
|
|
|
>
|
|
|
|
|
<template v-slot:prepend>
|
|
|
|
|
<q-icon
|
|
|
|
|
name="person_outline"
|
|
|
|
|
color="primary"
|
|
|
|
|
/>
|
|
|
|
|
</template>
|
|
|
|
|
</q-input>
|
|
|
|
|
</template>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</q-carousel-slide>
|
|
|
|
|
|
|
|
|
|
<!-- Slide 3: Password -->
|
|
|
|
|
<q-carousel-slide
|
|
|
|
|
name="3"
|
|
|
|
|
class="carousel-slide"
|
|
|
|
|
>
|
|
|
|
|
<div class="slide-content">
|
|
|
|
|
<div class="slide-header">
|
|
|
|
|
<q-icon
|
|
|
|
|
name="lock_outline"
|
|
|
|
|
size="40px"
|
|
|
|
|
color="primary"
|
|
|
|
|
/>
|
|
|
|
|
<h2 class="slide-title">Crea una Password</h2>
|
|
|
|
|
<p class="slide-subtitle">Proteggi il tuo account</p>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="form-fields">
|
2022-12-22 16:48:57 +01:00
|
|
|
<q-input
|
2025-11-15 19:38:39 +01:00
|
|
|
ref="inputPassword"
|
2025-11-24 17:42:26 +01:00
|
|
|
tabindex="1"
|
2025-11-15 19:38:39 +01:00
|
|
|
v-model="signup.password"
|
|
|
|
|
:type="typePassword"
|
2025-11-24 17:42:26 +01:00
|
|
|
filled
|
|
|
|
|
class="modern-input"
|
2025-11-15 19:38:39 +01:00
|
|
|
@blur="v$.password.$touch"
|
|
|
|
|
:error="v$.password.$error"
|
2025-11-18 23:56:08 +01:00
|
|
|
:error-message="`${tools.errorMsg('password', v$.password)}`"
|
2025-11-15 19:38:39 +01:00
|
|
|
@keyup.enter="
|
|
|
|
|
!v$.password.$error ? $refs.inputPassword2.focus() : null
|
|
|
|
|
"
|
2022-12-22 16:48:57 +01:00
|
|
|
maxlength="30"
|
|
|
|
|
debounce="1000"
|
2025-11-15 19:38:39 +01:00
|
|
|
:label="$t('reg.password_reg')"
|
2022-12-22 16:48:57 +01:00
|
|
|
>
|
2025-11-24 17:42:26 +01:00
|
|
|
<template v-slot:prepend>
|
|
|
|
|
<q-icon
|
|
|
|
|
name="vpn_key"
|
|
|
|
|
color="primary"
|
|
|
|
|
/>
|
|
|
|
|
</template>
|
2025-11-15 19:38:39 +01:00
|
|
|
<template v-slot:append>
|
|
|
|
|
<q-btn
|
2025-11-24 17:42:26 +01:00
|
|
|
flat
|
|
|
|
|
round
|
|
|
|
|
dense
|
2025-11-15 19:38:39 +01:00
|
|
|
:icon="
|
2025-11-24 17:42:26 +01:00
|
|
|
typePassword === 'password' ? 'visibility_off' : 'visibility'
|
2025-11-15 19:38:39 +01:00
|
|
|
"
|
|
|
|
|
@click="showPassword"
|
2025-11-24 17:42:26 +01:00
|
|
|
/>
|
2022-12-22 16:48:57 +01:00
|
|
|
</template>
|
2025-11-24 17:42:26 +01:00
|
|
|
</q-input>
|
|
|
|
|
|
|
|
|
|
<q-input
|
|
|
|
|
ref="inputPassword2"
|
|
|
|
|
tabindex="2"
|
|
|
|
|
v-model="signup.repeatPassword"
|
|
|
|
|
:type="typePassword"
|
|
|
|
|
maxlength="30"
|
|
|
|
|
filled
|
|
|
|
|
class="modern-input"
|
|
|
|
|
@blur="v$.repeatPassword.$touch"
|
|
|
|
|
:error="v$.repeatPassword.$error"
|
|
|
|
|
:error-message="`${tools.errorMsg('repeatpassword', v$.repeatPassword)}`"
|
|
|
|
|
v-on:keyup.enter="!checkifDisabled ? $refs.carousel.next() : null"
|
|
|
|
|
:label="$t('reg.repeatPassword')"
|
|
|
|
|
>
|
2022-12-22 16:48:57 +01:00
|
|
|
<template v-slot:prepend>
|
2025-11-24 17:42:26 +01:00
|
|
|
<q-icon
|
|
|
|
|
name="lock"
|
|
|
|
|
color="primary"
|
|
|
|
|
/>
|
|
|
|
|
</template>
|
|
|
|
|
<template v-slot:append>
|
|
|
|
|
<q-btn
|
|
|
|
|
flat
|
|
|
|
|
round
|
|
|
|
|
dense
|
|
|
|
|
:icon="
|
|
|
|
|
typePassword === 'password' ? 'visibility_off' : 'visibility'
|
|
|
|
|
"
|
|
|
|
|
@click="showPassword"
|
|
|
|
|
/>
|
2022-12-22 16:48:57 +01:00
|
|
|
</template>
|
|
|
|
|
</q-input>
|
2022-08-15 15:10:00 +02:00
|
|
|
|
2025-11-24 17:42:26 +01:00
|
|
|
<div class="password-hint">
|
|
|
|
|
<q-icon
|
|
|
|
|
name="info"
|
|
|
|
|
size="16px"
|
|
|
|
|
color="grey-6"
|
|
|
|
|
/>
|
|
|
|
|
<span>Minimo 8 caratteri, includi lettere e numeri</span>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</q-carousel-slide>
|
2022-08-15 15:10:00 +02:00
|
|
|
|
2025-11-27 00:48:53 +01:00
|
|
|
<!-- Slide 4: Comune -->
|
2025-11-24 17:42:26 +01:00
|
|
|
<q-carousel-slide
|
|
|
|
|
name="4"
|
|
|
|
|
class="carousel-slide"
|
2025-11-27 00:48:53 +01:00
|
|
|
>
|
|
|
|
|
<div class="slide-content">
|
|
|
|
|
<div class="slide-header">
|
|
|
|
|
<q-icon
|
|
|
|
|
name="lock_outline"
|
|
|
|
|
size="40px"
|
|
|
|
|
color="primary"
|
|
|
|
|
/>
|
|
|
|
|
<h2 class="slide-title">Comune di Residenza</h2>
|
|
|
|
|
<p class="slide-subtitle">
|
|
|
|
|
Seleziona il tuo comune di residenza, o dove vivi abitualmente, per
|
|
|
|
|
connetterti con la Community Locale.
|
|
|
|
|
</p>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="form-fields">
|
|
|
|
|
<!--<CMyFieldRec
|
|
|
|
|
:nosaveToDb="true"
|
|
|
|
|
table="users"
|
|
|
|
|
tablesel="cities"
|
|
|
|
|
jointable="cities"
|
|
|
|
|
:pickup="true"
|
|
|
|
|
:type="costanti.FieldType.select_by_server"
|
|
|
|
|
:rec="signup"
|
|
|
|
|
field="profile.resid_comune"
|
|
|
|
|
mysubkey_tosee="resid_str_comune"
|
|
|
|
|
fieldsel_tosee="comune"
|
|
|
|
|
:canEdit="true"
|
|
|
|
|
:canModify="true"
|
|
|
|
|
@savedInDb="updateComune"
|
|
|
|
|
></CMyFieldRec>-->
|
|
|
|
|
|
|
|
|
|
<CMyFieldDb
|
|
|
|
|
:nosaveToDb="true"
|
|
|
|
|
table="users"
|
|
|
|
|
tablesel="cities"
|
|
|
|
|
mykey="profile"
|
|
|
|
|
mysubkey="recCity"
|
|
|
|
|
label_trans="reg.resid_str_comune"
|
|
|
|
|
:useinput="false"
|
|
|
|
|
jointable="cities"
|
|
|
|
|
:pickup="true"
|
|
|
|
|
myclass="class_select"
|
|
|
|
|
:isInModif="true"
|
|
|
|
|
:type="costanti.FieldType.select_by_server"
|
|
|
|
|
:rec="reccomune"
|
|
|
|
|
@showandsave="updateComune"
|
|
|
|
|
/>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</q-carousel-slide>
|
|
|
|
|
|
|
|
|
|
<!-- Slide numStepTotali: Conferma e Policy -->
|
|
|
|
|
<q-carousel-slide
|
|
|
|
|
:name="numStepTotali"
|
|
|
|
|
class="carousel-slide"
|
2025-11-24 17:42:26 +01:00
|
|
|
>
|
|
|
|
|
<div class="slide-content final-slide">
|
|
|
|
|
<div class="slide-header">
|
|
|
|
|
<div class="flex items-center">
|
|
|
|
|
<q-icon
|
|
|
|
|
name="task_alt"
|
|
|
|
|
size="40px"
|
|
|
|
|
color="positive"
|
|
|
|
|
class="q-mr-md"
|
|
|
|
|
/>
|
|
|
|
|
<div>
|
|
|
|
|
<h2 class="slide-title">Conferma i dati!</h2>
|
|
|
|
|
<p class="slide-subtitle"></p>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
2025-11-18 23:56:08 +01:00
|
|
|
</div>
|
2022-12-22 16:48:57 +01:00
|
|
|
|
2025-11-24 17:42:26 +01:00
|
|
|
<div class="summary-card">
|
|
|
|
|
<div class="summary-item">
|
|
|
|
|
<q-icon
|
|
|
|
|
name="email"
|
|
|
|
|
color="primary"
|
|
|
|
|
/>
|
|
|
|
|
<span>{{ signup.email }}</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="summary-item">
|
|
|
|
|
<q-icon
|
|
|
|
|
name="person"
|
|
|
|
|
color="primary"
|
|
|
|
|
/>
|
|
|
|
|
<span>{{ signup.username }}</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div
|
|
|
|
|
v-if="signup.name"
|
|
|
|
|
class="summary-item"
|
|
|
|
|
>
|
|
|
|
|
<q-icon
|
|
|
|
|
name="badge"
|
|
|
|
|
color="primary"
|
|
|
|
|
/>
|
|
|
|
|
<span>{{ signup.name }} {{ signup.surname }}</span>
|
|
|
|
|
</div>
|
2025-11-27 00:48:53 +01:00
|
|
|
<div
|
|
|
|
|
v-if="signup.profile.resid_str_comune"
|
|
|
|
|
class="summary-item"
|
|
|
|
|
>
|
|
|
|
|
<q-icon
|
|
|
|
|
name="home"
|
|
|
|
|
color="primary"
|
|
|
|
|
/>
|
|
|
|
|
<span>{{ signup.profile.resid_str_comune }} ({{ signup.profile.resid_province }})</span>
|
|
|
|
|
</div>
|
2025-11-24 17:42:26 +01:00
|
|
|
</div>
|
2022-12-22 16:48:57 +01:00
|
|
|
|
2025-11-24 17:42:26 +01:00
|
|
|
<div class="policy-section">
|
2025-11-18 23:56:08 +01:00
|
|
|
<q-btn
|
2025-11-24 17:42:26 +01:00
|
|
|
dense
|
|
|
|
|
outline
|
|
|
|
|
color="primary"
|
|
|
|
|
label="Leggi la Privacy Policy"
|
|
|
|
|
icon="description"
|
|
|
|
|
@click="showpolicy = true"
|
|
|
|
|
class="policy-btn"
|
|
|
|
|
/>
|
|
|
|
|
|
|
|
|
|
<q-checkbox
|
|
|
|
|
v-model="signup.terms"
|
|
|
|
|
color="primary"
|
|
|
|
|
@blur="v$.terms.$touch"
|
|
|
|
|
:error="v$.terms.$error"
|
|
|
|
|
class="terms-checkbox"
|
2025-11-18 23:56:08 +01:00
|
|
|
>
|
2025-11-24 17:42:26 +01:00
|
|
|
<template v-slot:default>
|
|
|
|
|
<span class="terms-text">{{ $t('reg.terms') }}</span>
|
|
|
|
|
</template>
|
|
|
|
|
</q-checkbox>
|
2022-12-22 16:48:57 +01:00
|
|
|
</div>
|
2025-11-15 19:38:39 +01:00
|
|
|
</div>
|
|
|
|
|
</q-carousel-slide>
|
|
|
|
|
</q-carousel>
|
2022-12-22 16:48:57 +01:00
|
|
|
|
2025-11-24 17:42:26 +01:00
|
|
|
<!-- Navigation Buttons - Fixed on Mobile -->
|
|
|
|
|
<div
|
|
|
|
|
class="navigation-buttons"
|
|
|
|
|
:class="{ mobile: isMobile }"
|
|
|
|
|
>
|
|
|
|
|
<q-btn
|
|
|
|
|
v-if="slide !== '1'"
|
|
|
|
|
flat
|
|
|
|
|
color="grey-7"
|
|
|
|
|
icon="arrow_back"
|
|
|
|
|
:label="isMobile ? '' : $t('dialog.indietro')"
|
|
|
|
|
@click="$refs.carousel.previous()"
|
|
|
|
|
class="nav-btn back-btn"
|
|
|
|
|
/>
|
|
|
|
|
<q-btn
|
2025-11-27 00:48:53 +01:00
|
|
|
v-if="slide !== numStepTotali"
|
2025-11-24 17:42:26 +01:00
|
|
|
unelevated
|
|
|
|
|
color="primary"
|
|
|
|
|
icon-right="arrow_forward"
|
|
|
|
|
:label="isMobile ? 'Avanti' : $t('dialog.avanti')"
|
|
|
|
|
:disabled="checkifDisabled"
|
|
|
|
|
@click="!checkifDisabled ? $refs.carousel.next() : null"
|
|
|
|
|
class="nav-btn next-btn"
|
|
|
|
|
/>
|
|
|
|
|
<q-btn
|
2025-11-27 00:48:53 +01:00
|
|
|
v-if="slide === numStepTotali"
|
2025-11-24 17:42:26 +01:00
|
|
|
ref="submitBtn"
|
|
|
|
|
unelevated
|
|
|
|
|
color="positive"
|
|
|
|
|
icon="check"
|
|
|
|
|
:label="$t('reg.submit')"
|
|
|
|
|
:disabled="!allowSubmit()"
|
|
|
|
|
@click="submitOk"
|
|
|
|
|
class="nav-btn submit-btn"
|
|
|
|
|
/>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<!-- Debug Stepper (nascosto di default) -->
|
|
|
|
|
<div
|
|
|
|
|
v-if="!signup.terms"
|
|
|
|
|
class="debug-stepper"
|
|
|
|
|
>
|
2025-11-18 23:56:08 +01:00
|
|
|
<q-btn-toggle
|
|
|
|
|
v-model="slide"
|
2025-11-24 17:42:26 +01:00
|
|
|
spread
|
|
|
|
|
glossy
|
|
|
|
|
toggle-color="primary"
|
2025-11-18 23:56:08 +01:00
|
|
|
:options="[
|
2025-11-24 17:42:26 +01:00
|
|
|
{ label: '1', value: '1' },
|
|
|
|
|
{ label: '2', value: '2' },
|
|
|
|
|
{ label: '3', value: '3' },
|
|
|
|
|
{ label: '4', value: '4' },
|
2025-11-27 00:48:53 +01:00
|
|
|
{ label: '5', value: '5' },
|
2025-11-18 23:56:08 +01:00
|
|
|
]"
|
|
|
|
|
/>
|
2022-08-15 15:10:00 +02:00
|
|
|
</div>
|
2022-03-09 14:53:17 +01:00
|
|
|
</div>
|
2021-09-04 15:05:34 +02:00
|
|
|
</div>
|
2025-11-24 17:42:26 +01:00
|
|
|
|
|
|
|
|
<!-- Utente già registrato -->
|
|
|
|
|
<div
|
|
|
|
|
v-else-if="isalreadyReg && !collettivo"
|
|
|
|
|
class="already-registered"
|
|
|
|
|
>
|
|
|
|
|
<q-card class="error-card">
|
|
|
|
|
<q-card-section class="text-center">
|
|
|
|
|
<q-icon
|
|
|
|
|
name="error_outline"
|
|
|
|
|
size="48px"
|
|
|
|
|
color="negative"
|
|
|
|
|
/>
|
|
|
|
|
<div class="text-h6 q-mt-md">Utente già registrato</div>
|
|
|
|
|
<p class="q-mt-sm">
|
|
|
|
|
L'username <strong>{{ signup.username }}</strong> è già stato registrato
|
|
|
|
|
</p>
|
|
|
|
|
</q-card-section>
|
|
|
|
|
</q-card>
|
2022-11-02 14:59:32 +01:00
|
|
|
</div>
|
2021-09-04 15:05:34 +02:00
|
|
|
</div>
|
2025-11-24 17:42:26 +01:00
|
|
|
|
|
|
|
|
<!-- Policy Dialog -->
|
|
|
|
|
<q-dialog
|
|
|
|
|
v-model="showpolicy"
|
|
|
|
|
maximized
|
|
|
|
|
>
|
|
|
|
|
<q-card>
|
|
|
|
|
<q-card-section class="row items-center q-pb-none">
|
|
|
|
|
<div class="text-h6">Privacy Policy</div>
|
|
|
|
|
<q-space />
|
|
|
|
|
<q-btn
|
|
|
|
|
icon="close"
|
|
|
|
|
flat
|
|
|
|
|
round
|
|
|
|
|
dense
|
|
|
|
|
v-close-popup
|
|
|
|
|
/>
|
|
|
|
|
</q-card-section>
|
|
|
|
|
<q-card-section>
|
|
|
|
|
<PagePolicy />
|
|
|
|
|
</q-card-section>
|
|
|
|
|
</q-card>
|
|
|
|
|
</q-dialog>
|
2025-11-26 18:32:05 +01:00
|
|
|
<q-dialog
|
|
|
|
|
v-model="noinvito"
|
|
|
|
|
maximized
|
|
|
|
|
>
|
|
|
|
|
<q-card class="noinvito-card">
|
|
|
|
|
<q-card-section class="row items-center q-pb-none noinvito-header">
|
|
|
|
|
<q-icon
|
|
|
|
|
name="info"
|
|
|
|
|
size="32px"
|
|
|
|
|
color="primary"
|
|
|
|
|
class="q-mr-sm"
|
|
|
|
|
/>
|
|
|
|
|
<div class="text-h6">Come entrare in RISO</div>
|
|
|
|
|
<q-space />
|
|
|
|
|
<q-btn
|
|
|
|
|
icon="close"
|
|
|
|
|
flat
|
|
|
|
|
round
|
|
|
|
|
dense
|
|
|
|
|
v-close-popup
|
|
|
|
|
/>
|
|
|
|
|
</q-card-section>
|
|
|
|
|
|
|
|
|
|
<q-card-section class="noinvito-content">
|
|
|
|
|
<!-- Spiegazione principale -->
|
|
|
|
|
<div class="info-box primary-info">
|
|
|
|
|
<q-icon
|
|
|
|
|
name="how_to_reg"
|
|
|
|
|
size="24px"
|
|
|
|
|
color="primary"
|
|
|
|
|
/>
|
|
|
|
|
<div>
|
2025-11-27 00:48:53 +01:00
|
|
|
<p class="text-weight-medium q-mb-sm">
|
|
|
|
|
Per accedere a RISO hai bisogno di un invito
|
2025-11-26 18:32:05 +01:00
|
|
|
</p>
|
2025-11-27 00:48:53 +01:00
|
|
|
<p class="text-body2">L'invito può essere di due tipi:</p>
|
2025-11-26 18:32:05 +01:00
|
|
|
<ul class="invitation-types">
|
|
|
|
|
<li>
|
2025-11-27 00:48:53 +01:00
|
|
|
<strong>Username dell'invitante:</strong> inserisci lo username di chi
|
|
|
|
|
ti ha parlato di RISO
|
2025-11-26 18:32:05 +01:00
|
|
|
</li>
|
|
|
|
|
<li>
|
2025-11-27 00:48:53 +01:00
|
|
|
<strong>Link di registrazione:</strong> usa il link personale che ti è
|
|
|
|
|
stato inviato via email o messaggio
|
2025-11-26 18:32:05 +01:00
|
|
|
</li>
|
|
|
|
|
</ul>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<!-- Box informativo secondario -->
|
|
|
|
|
<div class="info-box secondary-info">
|
|
|
|
|
<q-icon
|
|
|
|
|
name="groups"
|
|
|
|
|
size="24px"
|
|
|
|
|
color="secondary"
|
|
|
|
|
/>
|
|
|
|
|
<div>
|
|
|
|
|
<p class="text-weight-medium q-mb-sm">Non conosci nessuno di RISO?</p>
|
|
|
|
|
<p class="text-body2">
|
2025-11-27 00:48:53 +01:00
|
|
|
Nessun problema! Puoi unirti alla comunità attraverso i nostri gruppi
|
|
|
|
|
territoriali su Telegram oppure contattarci direttamente via email. Saremo
|
|
|
|
|
felici di darti il benvenuto! 🌱
|
2025-11-26 18:32:05 +01:00
|
|
|
</p>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</q-card-section>
|
|
|
|
|
|
|
|
|
|
<!-- Footer con bottoni azione -->
|
|
|
|
|
<q-card-actions class="noinvito-actions">
|
|
|
|
|
<q-btn
|
|
|
|
|
unelevated
|
|
|
|
|
color="primary"
|
|
|
|
|
icon="telegram"
|
|
|
|
|
label="Gruppi Telegram Territoriali"
|
2025-11-27 00:48:53 +01:00
|
|
|
:href="
|
|
|
|
|
tools.getLinkGruppiTerritorialiTelegram()
|
|
|
|
|
? tools.getLinkGruppiTerritorialiTelegram()
|
|
|
|
|
: ''
|
|
|
|
|
"
|
2025-11-26 18:32:05 +01:00
|
|
|
target="_blank"
|
|
|
|
|
class="action-btn full-width q-mb-sm"
|
|
|
|
|
no-caps
|
|
|
|
|
/>
|
|
|
|
|
<q-btn
|
|
|
|
|
outline
|
|
|
|
|
color="primary"
|
|
|
|
|
icon="email"
|
|
|
|
|
label="Contattaci via Email"
|
|
|
|
|
:href="'mailto:' + (tools.getEmailSupport() || '')"
|
|
|
|
|
class="action-btn full-width"
|
|
|
|
|
no-caps
|
|
|
|
|
/>
|
|
|
|
|
</q-card-actions>
|
|
|
|
|
</q-card>
|
|
|
|
|
</q-dialog>
|
2021-09-04 15:05:34 +02:00
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
|
2025-11-15 19:38:39 +01:00
|
|
|
<script lang="ts" src="./CSignUp.ts"></script>
|
2021-09-04 15:05:34 +02:00
|
|
|
<style lang="scss" scoped>
|
2022-02-08 23:06:22 +01:00
|
|
|
@import './CSignUp.scss';
|
2021-09-04 15:05:34 +02:00
|
|
|
</style>
|