update form validation

This commit is contained in:
Chneemann 2024-05-18 10:32:08 +02:00
parent 64b6c49850
commit 7b231589fa
4 changed files with 61 additions and 32 deletions

View file

@ -16,7 +16,7 @@
placeholder="{{ placeholder="{{
contactData.firstName !== '' contactData.firstName !== ''
? contactData.firstName ? contactData.firstName
: ('contactDalogForm.firstName' | translate) : ('contactDialogForm.firstName' | translate)
}}" }}"
[(ngModel)]="contactData.firstName" [(ngModel)]="contactData.firstName"
autocomplete="off" autocomplete="off"
@ -25,7 +25,7 @@
@if (sharedService.isContactViewMedia) { @if (sharedService.isContactViewMedia) {
<div class="error-msg"> <div class="error-msg">
@if (!firstName.valid && firstName.touched) { @if (!firstName.valid && firstName.touched) {
<p>{{ "contactDalogForm.invalidFirstName" | translate }}</p> <p>{{ "contactDialogForm.invalidFirstName" | translate }}</p>
} }
</div> </div>
} }
@ -38,7 +38,7 @@
placeholder="{{ placeholder="{{
contactData.lastName !== '' contactData.lastName !== ''
? contactData.lastName ? contactData.lastName
: ('contactDalogForm.lastName' | translate) : ('contactDialogForm.lastName' | translate)
}}" }}"
[(ngModel)]="contactData.lastName" [(ngModel)]="contactData.lastName"
autocomplete="off" autocomplete="off"
@ -48,18 +48,18 @@
@if (sharedService.isContactViewMedia) { @if (sharedService.isContactViewMedia) {
<div class="error-msg"> <div class="error-msg">
@if (!lastName.valid && lastName.touched) { @if (!lastName.valid && lastName.touched) {
<p>{{ "contactDalogForm.invalidLastName" | translate }}</p> <p>{{ "contactDialogForm.invalidLastName" | translate }}</p>
} }
</div> </div>
} @if (!sharedService.isContactViewMedia) { } @if (!sharedService.isContactViewMedia) {
<div class="error-msg"> <div class="error-msg">
@if ((!firstName.valid && firstName.touched) && (!lastName.valid && @if ((!firstName.valid && firstName.touched) && (!lastName.valid &&
lastName.touched)) { lastName.touched)) {
<p>{{ "contactDalogForm.invalidName" | translate }}</p> <p>{{ "contactDialogForm.invalidName" | translate }}</p>
} @else { @if (!firstName.valid && firstName.touched) { } @else { @if (!firstName.valid && firstName.touched) {
<p>{{ "contactDalogForm.invalidFirstName" | translate }}</p> <p>{{ "contactDialogForm.invalidFirstName" | translate }}</p>
} @else { @if (!lastName.valid && lastName.touched) { } @else { @if (!lastName.valid && lastName.touched) {
<p>{{ "contactDalogForm.invalidLastName" | translate }}</p> <p>{{ "contactDialogForm.invalidLastName" | translate }}</p>
} } } } } }
</div> </div>
} }
@ -71,16 +71,22 @@
placeholder="{{ placeholder="{{
contactData.email !== '' contactData.email !== ''
? contactData.email ? contactData.email
: ('contactDalogForm.email' | translate) : ('contactDialogForm.email' | translate)
}}" }}"
[(ngModel)]="contactData.email" [(ngModel)]="contactData.email"
autocomplete="off" autocomplete="off"
required required
/> />
<div class="error-msg"> <div class="error-msg">
@if (!email.valid && email.touched) { @if(!email.valid && email.touched &&
<p>{{ "contactDalogForm.invalidEmail" | translate }}</p> !checkIfUserEmailIsValid(contactData.email)) {
} <p>{{ "contactDialogForm.invalidMail0" | translate }}</p>
} @else { @if (email.touched &&
!checkIfUserEmailIsValid(contactData.email)) {
<p>{{ "contactDialogForm.invalidMail1" | translate }}</p>
} @else { @if (existEmailonServer(contactData.email).length > 0) {
<p>{{ "regiscontactDialogFormter.invalidMail2" | translate }}</p>
} } }
</div> </div>
<input <input
id="phone" id="phone"
@ -90,22 +96,23 @@
placeholder="{{ placeholder="{{
contactData.phone !== '' contactData.phone !== ''
? contactData.phone ? contactData.phone
: ('contactDalogForm.phone' | translate) : ('contactDialogForm.phone' | translate)
}}" }}"
[(ngModel)]="contactData.phone" [(ngModel)]="contactData.phone"
pattern="[0-9]{7,10}"
autocomplete="off" autocomplete="off"
required required
/> />
<div class="error-msg"> <div class="error-msg">
@if (!phone.valid && phone.touched) { @if (!phone.valid && phone.touched) {
<p>{{ "contactDalogForm.invalidPhone" | translate }}</p> <p>{{ "contactDialogForm.invalidPhone" | translate }}</p>
} }
</div> </div>
<div class="btns"> <div class="btns">
<app-form-btn <app-form-btn
class="btn-delete" class="btn-delete"
type="button" type="button"
value="{{ 'contactDalogForm.btnDelete' | translate }}" value="{{ 'contactDialogForm.btnDelete' | translate }}"
(click)="deleteContact()" (click)="deleteContact()"
></app-form-btn> ></app-form-btn>
<app-form-btn <app-form-btn
@ -113,7 +120,7 @@
[type]="'submit'" [type]="'submit'"
[img]="'check'" [img]="'check'"
[imgFilter]="'none'" [imgFilter]="'none'"
value="{{ 'contactDalogForm.btnSave' | translate }}" value="{{ 'contactDialogForm.btnSave' | translate }}"
[disabled]=" [disabled]="
firstName.invalid || firstName.invalid ||
!contactData.firstName || !contactData.firstName ||
@ -122,7 +129,8 @@
email.invalid || email.invalid ||
!contactData.email || !contactData.email ||
phone.invalid || phone.invalid ||
!contactData.phone !contactData.phone ||
!checkIfUserEmailIsValid(contactData.email)
" "
></app-form-btn> ></app-form-btn>
</div> </div>

View file

@ -53,11 +53,13 @@ export class ContactFormComponent implements OnInit, OnChanges {
}; };
ngOnInit() { ngOnInit() {
this.userData = { if (!this.currentUserId) {
...this.userData, this.userData = {
color: this.randomColor, ...this.userData,
lastLogin: new Date().getTime(), color: this.randomColor,
}; lastLogin: new Date().getTime(),
};
}
} }
ngOnChanges(changes: SimpleChanges) { ngOnChanges(changes: SimpleChanges) {
@ -88,17 +90,33 @@ export class ContactFormComponent implements OnInit, OnChanges {
updateUserData() { updateUserData() {
this.userData = { this.userData = {
...this.userData, ...this.userData,
firstName: firstName: this.capitalizeFirstLetter(this.contactData.firstName),
this.contactData.firstName.charAt(0).toUpperCase() + lastName: this.capitalizeFirstLetter(this.contactData.lastName),
this.contactData.firstName.slice(1).toLowerCase(),
lastName:
this.contactData.lastName.charAt(0).toUpperCase() +
this.contactData.lastName.slice(1).toLowerCase(),
email: this.contactData.email, email: this.contactData.email,
phone: this.contactData.phone, phone: this.contactData.phone,
}; };
} }
capitalizeFirstLetter(name: string) {
return name.charAt(0).toUpperCase() + name.slice(1).toLowerCase();
}
checkIfUserEmailIsValid(emailValue: string) {
const channelNameLenght = emailValue.length;
const emailRegex = /^[\w.%+-]+@[\w.-]+\.[a-zA-Z]{2,}$/;
if (emailRegex.test(emailValue)) {
return true;
} else {
return false;
}
}
existEmailonServer(mail: string) {
return this.firebaseService
.getAllUsers()
.filter((user) => user.email === mail);
}
private updateContactData() { private updateContactData() {
this.contactData.firstName = this.firebaseService this.contactData.firstName = this.firebaseService
.getUserDetails(this.currentUserId, 'firstName') .getUserDetails(this.currentUserId, 'firstName')
@ -124,7 +142,6 @@ export class ContactFormComponent implements OnInit, OnChanges {
} else { } else {
const { id, ...taskWithoutIds } = this.userData; const { id, ...taskWithoutIds } = this.userData;
this.firebaseService.addNewUser(taskWithoutIds); this.firebaseService.addNewUser(taskWithoutIds);
console.log('add new contact');
} }
this.closeEditDialog(); this.closeEditDialog();
} }

View file

@ -55,13 +55,15 @@
"legalNotice": "Rechtlicher Hinweis", "legalNotice": "Rechtlicher Hinweis",
"logout": "Abmelden" "logout": "Abmelden"
}, },
"contactDalogForm": { "contactDialogForm": {
"btnDelete": "Löschen", "btnDelete": "Löschen",
"btnSave": "Sichern", "btnSave": "Sichern",
"invalidFirstName": "Ein Vorname ist erforderlich!", "invalidFirstName": "Ein Vorname ist erforderlich!",
"invalidLastName": "Ein Nachname ist erforderlich!", "invalidLastName": "Ein Nachname ist erforderlich!",
"invalidName": "Ein Vorname & Nachname ist erforderlich!", "invalidName": "Ein Vorname & Nachname ist erforderlich!",
"invalidEmail": "Eine E-Mail Adresse ist erforderlich!", "invalidMail0": "Sie müssen eine E-Mail Adresse eingeben!",
"invalidMail1": "Dies ist kein gültiges E-Mail-Format!",
"invalidMail2": "Diese E-Mail existiert bereits!",
"invalidPhone": "Eine Telefonnummer ist erforderlich!", "invalidPhone": "Eine Telefonnummer ist erforderlich!",
"firstName": "Vorname", "firstName": "Vorname",
"lastName": "Nachname", "lastName": "Nachname",

View file

@ -55,13 +55,15 @@
"legalNotice": "Legal notice", "legalNotice": "Legal notice",
"logout": "Log out" "logout": "Log out"
}, },
"contactDalogForm": { "contactDialogForm": {
"btnDelete": "Delete", "btnDelete": "Delete",
"btnSave": "Save", "btnSave": "Save",
"invalidFirstName": "A first name is required!", "invalidFirstName": "A first name is required!",
"invalidLastName": "A last name is required!", "invalidLastName": "A last name is required!",
"invalidName": "A first name & last name is required!", "invalidName": "A first name & last name is required!",
"invalidEmail": "A email is required!", "invalidMail0": "You must enter a mail!",
"invalidMail1": "This is not a valid email format!",
"invalidMail2": "This email already exists!",
"invalidPhone": "A phone number is required!", "invalidPhone": "A phone number is required!",
"firstName": "First name", "firstName": "First name",
"lastName": "Last name", "lastName": "Last name",