update language & design
This commit is contained in:
parent
84cd8e1e2b
commit
599466f97a
10 changed files with 107 additions and 34 deletions
|
|
@ -1,6 +1,6 @@
|
||||||
<footer class="footer">
|
<footer class="footer">
|
||||||
<a routerLink="/login/privacy-policy">{{
|
<a routerLink="/login/privacy-policy">{{
|
||||||
"sidebar.privacyPolicy" | translate
|
"loginFooter.privacyPolicy" | translate
|
||||||
}}</a>
|
}}</a>
|
||||||
<a routerLink="/login/imprint">{{ "sidebar.legalNotice" | translate }}</a>
|
<a routerLink="/login/imprint">{{ "loginFooter.legalNotice" | translate }}</a>
|
||||||
</footer>
|
</footer>
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@
|
||||||
color: var(--gray);
|
color: var(--gray);
|
||||||
padding: 8px;
|
padding: 8px;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
width: 110px;
|
width: fit-content;
|
||||||
height: 19px;
|
height: 19px;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
|
|
||||||
|
|
@ -5,3 +5,14 @@
|
||||||
<button routerLink="/register">{{ "loginHeader.signup" | translate }}</button>
|
<button routerLink="/register">{{ "loginHeader.signup" | translate }}</button>
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
|
<div class="language">
|
||||||
|
<img
|
||||||
|
src="./../../../../assets/img/header/language.svg"
|
||||||
|
alt=""
|
||||||
|
(click)="
|
||||||
|
languageService.switchLanguage(
|
||||||
|
languageService.currentLang == 'en' ? 'de' : 'en'
|
||||||
|
)
|
||||||
|
"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -25,8 +25,8 @@
|
||||||
align-items: center;
|
align-items: center;
|
||||||
background-color: var(--dark-blue);
|
background-color: var(--dark-blue);
|
||||||
color: var(--white);
|
color: var(--white);
|
||||||
width: 91px;
|
width: fit-content;
|
||||||
height: 49px;
|
padding: 14px 18px;
|
||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
|
|
@ -40,6 +40,17 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.language {
|
||||||
|
position: absolute;
|
||||||
|
top: 12px;
|
||||||
|
right: 12px;
|
||||||
|
cursor: pointer;
|
||||||
|
&:hover {
|
||||||
|
filter: brightness(0) saturate(100%) invert(56%) sepia(64%) saturate(570%)
|
||||||
|
hue-rotate(154deg) brightness(92%) contrast(92%);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*------------- RESPONSIVE -------------*/
|
/*------------- RESPONSIVE -------------*/
|
||||||
|
|
||||||
@media (max-height: 700px) {
|
@media (max-height: 700px) {
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
import { Component, Input } from '@angular/core';
|
import { Component, Input } from '@angular/core';
|
||||||
import { RouterModule } from '@angular/router';
|
import { RouterModule } from '@angular/router';
|
||||||
import { TranslateModule } from '@ngx-translate/core';
|
import { TranslateModule } from '@ngx-translate/core';
|
||||||
|
import { LanguageService } from '../../../services/language.service';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-header',
|
selector: 'app-header',
|
||||||
|
|
@ -11,4 +12,6 @@ import { TranslateModule } from '@ngx-translate/core';
|
||||||
})
|
})
|
||||||
export class HeaderComponent {
|
export class HeaderComponent {
|
||||||
@Input() signUpBtn: boolean = false;
|
@Input() signUpBtn: boolean = false;
|
||||||
|
|
||||||
|
constructor(public languageService: LanguageService) {}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<div class="headline">
|
<div class="headline">
|
||||||
<app-btn-back></app-btn-back>
|
<app-btn-back></app-btn-back>
|
||||||
<p>Sign up</p>
|
<p>{{ "register.signup" | translate }}</p>
|
||||||
<div class="line">
|
<div class="line">
|
||||||
<img src="./../../../assets/img/login/blue-line.svg" alt="" />
|
<img src="./../../../assets/img/login/blue-line.svg" alt="" />
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -20,7 +20,7 @@
|
||||||
id="name"
|
id="name"
|
||||||
name="name"
|
name="name"
|
||||||
#name="ngModel"
|
#name="ngModel"
|
||||||
placeholder="Name"
|
placeholder="{{ 'register.name' | translate }}"
|
||||||
class="custom-input"
|
class="custom-input"
|
||||||
autocomplete="name"
|
autocomplete="name"
|
||||||
[(ngModel)]="registerData.name"
|
[(ngModel)]="registerData.name"
|
||||||
|
|
@ -37,7 +37,7 @@
|
||||||
}
|
}
|
||||||
<div class="error-msg">
|
<div class="error-msg">
|
||||||
@if (!name.valid && name.touched) {
|
@if (!name.valid && name.touched) {
|
||||||
<p>You must enter a name.</p>
|
<p>{{ "register.errorName" | translate }}</p>
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
<input
|
<input
|
||||||
|
|
@ -45,7 +45,7 @@
|
||||||
id="mail"
|
id="mail"
|
||||||
name="mail"
|
name="mail"
|
||||||
#mail="ngModel"
|
#mail="ngModel"
|
||||||
placeholder="Email"
|
placeholder="{{ 'register.email' | translate }}"
|
||||||
class="custom-input"
|
class="custom-input"
|
||||||
autocomplete="email"
|
autocomplete="email"
|
||||||
[(ngModel)]="registerData.mail"
|
[(ngModel)]="registerData.mail"
|
||||||
|
|
@ -61,11 +61,15 @@
|
||||||
<img class="custom-img" alt="" />
|
<img class="custom-img" alt="" />
|
||||||
}
|
}
|
||||||
<div class="error-msg">
|
<div class="error-msg">
|
||||||
@if (!mail.valid && mail.touched) {
|
@if(!mail.valid && mail.touched &&
|
||||||
<p>You must enter a mail.</p>
|
!checkIfUserEmailIsValid(registerData.mail)) {
|
||||||
|
<p>{{ "register.errorMail0" | translate }}</p>
|
||||||
|
} @else { @if (mail.touched &&
|
||||||
|
!checkIfUserEmailIsValid(registerData.mail)) {
|
||||||
|
<p>{{ "register.errorMail1" | translate }}</p>
|
||||||
} @else { @if (existEmailonServer(registerData.mail).length > 0) {
|
} @else { @if (existEmailonServer(registerData.mail).length > 0) {
|
||||||
<p>This email already exists.</p>
|
<p>{{ "register.errorMail2" | translate }}</p>
|
||||||
} }
|
} } }
|
||||||
</div>
|
</div>
|
||||||
<input
|
<input
|
||||||
type="password"
|
type="password"
|
||||||
|
|
@ -73,7 +77,7 @@
|
||||||
name="password"
|
name="password"
|
||||||
#password="ngModel"
|
#password="ngModel"
|
||||||
[type]="loginSerivce.passwordFieldType"
|
[type]="loginSerivce.passwordFieldType"
|
||||||
placeholder="Password"
|
placeholder="{{ 'register.password' | translate }}"
|
||||||
class="custom-input"
|
class="custom-input"
|
||||||
autocomplete="new-password"
|
autocomplete="new-password"
|
||||||
[(ngModel)]="registerData.password"
|
[(ngModel)]="registerData.password"
|
||||||
|
|
@ -94,9 +98,9 @@
|
||||||
}
|
}
|
||||||
<div class="error-msg">
|
<div class="error-msg">
|
||||||
@if (!password.valid && password.touched) {
|
@if (!password.valid && password.touched) {
|
||||||
<p>You must enter a password.</p>
|
<p>{{ "register.errorPassword0" | translate }}</p>
|
||||||
} @else { @if (registerData.password.length < 6 && password.touched) {
|
} @else { @if (registerData.password.length < 6 && password.touched) {
|
||||||
<p>The password must consist of at least 6 characters</p>
|
<p>{{ "register.errorPassword1" | translate }}</p>
|
||||||
} }
|
} }
|
||||||
</div>
|
</div>
|
||||||
<input
|
<input
|
||||||
|
|
@ -105,7 +109,7 @@
|
||||||
name="passwordConfirm"
|
name="passwordConfirm"
|
||||||
#passwordConfirm="ngModel"
|
#passwordConfirm="ngModel"
|
||||||
[type]="loginSerivce.passwordFieldType"
|
[type]="loginSerivce.passwordFieldType"
|
||||||
placeholder="Confirm Password"
|
placeholder="{{ 'register.passwordConfirm' | translate }}"
|
||||||
class="custom-input"
|
class="custom-input"
|
||||||
autocomplete="new-password"
|
autocomplete="new-password"
|
||||||
[(ngModel)]="registerData.passwordConfirm"
|
[(ngModel)]="registerData.passwordConfirm"
|
||||||
|
|
@ -126,10 +130,10 @@
|
||||||
}
|
}
|
||||||
<div class="error-msg">
|
<div class="error-msg">
|
||||||
@if (!passwordConfirm.valid && passwordConfirm.touched) {
|
@if (!passwordConfirm.valid && passwordConfirm.touched) {
|
||||||
<p>You must enter a password.</p>
|
<p>{{ "register.errorPassword0" | translate }}</p>
|
||||||
} @if (registerData.password !== registerData.passwordConfirm &&
|
} @if (registerData.password !== registerData.passwordConfirm &&
|
||||||
registerData.password !== "" && registerData.passwordConfirm !== "") {
|
registerData.password !== "" && registerData.passwordConfirm !== "") {
|
||||||
<p>The passwords don't match!</p>
|
<p>{{ "register.errorPassword2" | translate }}</p>
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
<div class="privacy-policy">
|
<div class="privacy-policy">
|
||||||
|
|
@ -143,14 +147,16 @@
|
||||||
/>
|
/>
|
||||||
<div class="label">
|
<div class="label">
|
||||||
<p>
|
<p>
|
||||||
I accept the
|
{{ "register.privacyPolicy0" | translate }}
|
||||||
<a routerLink="/login/privacy-policy">Privacy policy</a>
|
<a routerLink="/login/privacy-policy">{{
|
||||||
|
"register.privacyPolicy1" | translate
|
||||||
|
}}</a>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="error-msg">
|
<div class="error-msg">
|
||||||
@if (!checkbox.valid && checkbox.touched) {
|
@if (!checkbox.valid && checkbox.touched) {
|
||||||
<p>You must accept the privacy policy!</p>
|
<p>{{ "register.privacyPolicyError" | translate }}</p>
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -158,7 +164,7 @@
|
||||||
<app-form-btn
|
<app-form-btn
|
||||||
[class]="'btn-login'"
|
[class]="'btn-login'"
|
||||||
[type]="'submit'"
|
[type]="'submit'"
|
||||||
[value]="'Sign up'"
|
[value]="'register.signup' | translate"
|
||||||
[disabled]="
|
[disabled]="
|
||||||
mail.invalid ||
|
mail.invalid ||
|
||||||
!registerData.mail ||
|
!registerData.mail ||
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
section {
|
section {
|
||||||
width: 100vw;
|
width: 100vw;
|
||||||
height: 100vh;
|
height: 100vh;
|
||||||
|
position: relative;
|
||||||
}
|
}
|
||||||
|
|
||||||
// REGISTER
|
// REGISTER
|
||||||
|
|
@ -22,7 +23,6 @@ section {
|
||||||
p {
|
p {
|
||||||
font-size: 61px;
|
font-size: 61px;
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
position: relative;
|
|
||||||
}
|
}
|
||||||
.line {
|
.line {
|
||||||
img {
|
img {
|
||||||
|
|
@ -33,12 +33,11 @@ section {
|
||||||
}
|
}
|
||||||
|
|
||||||
.headline {
|
.headline {
|
||||||
position: relative;
|
|
||||||
text-align: center;
|
text-align: center;
|
||||||
app-btn-back {
|
app-btn-back {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 20px;
|
top: 70px;
|
||||||
left: -150px;
|
left: 50px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -175,9 +174,8 @@ section {
|
||||||
|
|
||||||
.headline {
|
.headline {
|
||||||
app-btn-back {
|
app-btn-back {
|
||||||
position: absolute;
|
top: 35px;
|
||||||
top: 10px;
|
left: 30px;
|
||||||
left: -100px;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -205,9 +203,8 @@ section {
|
||||||
|
|
||||||
.headline {
|
.headline {
|
||||||
app-btn-back {
|
app-btn-back {
|
||||||
position: absolute;
|
top: 15px;
|
||||||
top: 5px;
|
left: 20px;
|
||||||
left: -70px;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ import { LoginService } from '../../../services/login.service';
|
||||||
import { SharedService } from '../../../services/shared.service';
|
import { SharedService } from '../../../services/shared.service';
|
||||||
import { BtnBackComponent } from '../../../shared/components/buttons/btn-back/btn-back.component';
|
import { BtnBackComponent } from '../../../shared/components/buttons/btn-back/btn-back.component';
|
||||||
import { RouterModule } from '@angular/router';
|
import { RouterModule } from '@angular/router';
|
||||||
|
import { TranslateModule, TranslateService } from '@ngx-translate/core';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-register',
|
selector: 'app-register',
|
||||||
|
|
@ -21,6 +22,7 @@ import { RouterModule } from '@angular/router';
|
||||||
FormsModule,
|
FormsModule,
|
||||||
CommonModule,
|
CommonModule,
|
||||||
RouterModule,
|
RouterModule,
|
||||||
|
TranslateModule,
|
||||||
],
|
],
|
||||||
templateUrl: './register.component.html',
|
templateUrl: './register.component.html',
|
||||||
styleUrl: './register.component.scss',
|
styleUrl: './register.component.scss',
|
||||||
|
|
@ -39,7 +41,8 @@ export class RegisterComponent {
|
||||||
constructor(
|
constructor(
|
||||||
private firebaseService: FirebaseService,
|
private firebaseService: FirebaseService,
|
||||||
public loginSerivce: LoginService,
|
public loginSerivce: LoginService,
|
||||||
public sharedService: SharedService
|
public sharedService: SharedService,
|
||||||
|
public translateService: TranslateService
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
onSubmit(ngForm: NgForm) {
|
onSubmit(ngForm: NgForm) {
|
||||||
|
|
|
||||||
|
|
@ -10,10 +10,31 @@
|
||||||
"errorPassword0": "Sie müssen ein Passwort eingeben!",
|
"errorPassword0": "Sie müssen ein Passwort eingeben!",
|
||||||
"errorPassword1": "Das Passwort stimmt nicht mit der E-Mail Adresse überein!"
|
"errorPassword1": "Das Passwort stimmt nicht mit der E-Mail Adresse überein!"
|
||||||
},
|
},
|
||||||
|
"register": {
|
||||||
|
"signup": "Registrieren",
|
||||||
|
"name": "Name",
|
||||||
|
"email": "Email",
|
||||||
|
"password": "Passwort",
|
||||||
|
"passwordConfirm": "Passwort bestätigen",
|
||||||
|
"privacyPolicy0": "Ich akzeptiere die",
|
||||||
|
"privacyPolicy1": "Datenschutzerklärung",
|
||||||
|
"privacyPolicyError": "Sie müssen die Datenschutzbestimmungen akzeptieren!",
|
||||||
|
"errorName": "Sie müssen einen Namen eingeben!",
|
||||||
|
"errorMail0": "Sie müssen eine E-Mail Adresse eingeben!",
|
||||||
|
"errorMail1": "Dies ist kein gültiges E-Mail-Format!",
|
||||||
|
"errorMail2": "Diese E-Mail existiert bereits!",
|
||||||
|
"errorPassword0": "Sie müssen ein Passwort eingeben!",
|
||||||
|
"errorPassword1": "Das Passwort muss aus mindestens 6 Zeichen bestehen!",
|
||||||
|
"errorPassword2": "Die Passwörter stimmen nicht überein!"
|
||||||
|
},
|
||||||
"loginHeader": {
|
"loginHeader": {
|
||||||
"notAUser": "Kein Join Nutzer?",
|
"notAUser": "Kein Join Nutzer?",
|
||||||
"signup": "Registrieren"
|
"signup": "Registrieren"
|
||||||
},
|
},
|
||||||
|
"loginFooter": {
|
||||||
|
"privacyPolicy": "Datenschutzerklärung",
|
||||||
|
"legalNotice": "Rechtliche Hinweise"
|
||||||
|
},
|
||||||
"header": {
|
"header": {
|
||||||
"headline": "Kanban Projektmanagement Werkzeug"
|
"headline": "Kanban Projektmanagement Werkzeug"
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -10,10 +10,31 @@
|
||||||
"errorPassword0": "You must enter a password!",
|
"errorPassword0": "You must enter a password!",
|
||||||
"errorPassword1": "The password does not match the email address!"
|
"errorPassword1": "The password does not match the email address!"
|
||||||
},
|
},
|
||||||
|
"register": {
|
||||||
|
"signup": "Sign up",
|
||||||
|
"name": "Name",
|
||||||
|
"email": "Email",
|
||||||
|
"password": "Password",
|
||||||
|
"passwordConfirm": "Confirm Password",
|
||||||
|
"privacyPolicy0": "I accept the",
|
||||||
|
"privacyPolicy1": "Privacy policy",
|
||||||
|
"privacyPolicyError": "You must accept the privacy policy!",
|
||||||
|
"errorName": "You must enter a name!",
|
||||||
|
"errorMail0": "You must enter a mail!",
|
||||||
|
"errorMail1": "This is not a valid email format!",
|
||||||
|
"errorMail2": "This email already exists!",
|
||||||
|
"errorPassword0": "You must enter a password!",
|
||||||
|
"errorPassword1": "The password must consist of at least 6 characters!",
|
||||||
|
"errorPassword2": "The passwords don't match!"
|
||||||
|
},
|
||||||
"loginHeader": {
|
"loginHeader": {
|
||||||
"notAUser": "Not a Join user?",
|
"notAUser": "Not a Join user?",
|
||||||
"signup": "Sign up"
|
"signup": "Sign up"
|
||||||
},
|
},
|
||||||
|
"loginFooter": {
|
||||||
|
"privacyPolicy": "Privacy policy",
|
||||||
|
"legalNotice": "Legal notice"
|
||||||
|
},
|
||||||
"header": {
|
"header": {
|
||||||
"headline": "Kanban Project Management Tool"
|
"headline": "Kanban Project Management Tool"
|
||||||
},
|
},
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue