Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

edit-form-validation #970

Open
wants to merge 10 commits into
base: development
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
155 changes: 118 additions & 37 deletions src/app/contact/contact-form/contact-form.component.html
Original file line number Diff line number Diff line change
@@ -1,47 +1,128 @@
<div class="overlay">
<div class="overlay-content">
<button class="form-close" (click)="hideContactForm.emit(false)">x</button>
<form class="contact-form" [formGroup]="contactForm" novalidate (ngSubmit)="sendtosuperuser(contactForm.value); showSubmit()"
method="POST" action="https://formspree.io/[email protected]">
<div class='overlay'>
<div class='overlay-content'>
<button class='form-close' (click)='hideContactForm.emit(false)'>x</button>
<form
class='contact-form'
[formGroup]='contactForm'
novalidate
(ngSubmit)='sendtosuperuser(contactForm.value); showSubmit()'
method='POST'
action='https://formspree.io/[email protected]'
>
<fieldset>
<legend>Contact Form</legend>
<div class="form-group">
<label class="form-label" for="name">*Name </label>
<input type="text" formControlName="name" id="name" placeholder="Your name" name="name">
<div class="validators"><small *ngIf="!(contactForm.controls.name.valid || (contactForm.controls.name.pristine && !submitted))">
Name is required
</small></div>
<div class='form-group getRawValue'>
<label class='form-label' for='name'>*Name </label>
<input
type='text'
formControlName='name'
id='name'
placeholder='Your name'
name='name'
/>
<div class='validators'>
<small
*ngIf='
!(
contactForm.controls.name.valid ||
(contactForm.controls.name.pristine && !submitted)
)
'
>
Name is required
</small>
</div>
</div>
<div class="form-group">
<label class="form-label" for="email">*Email </label>
<input type="email" formControlName="email" id="email" placeholder="[email protected]" name="email">
<div class="validators"><small *ngIf="!(contactForm.controls.email.valid || (contactForm.controls.email.pristine && !submitted))">
Valid Email is required
</small> </div>
<div class='form-group'>
<label class='form-label' for='email'>*Email </label>
<input
type='email'
formControlName='email'
id='email'
placeholder='[email protected]'
name='email'
/>
<div class='validators'>
<small
*ngIf='
!(
contactForm.controls.email.valid ||
(contactForm.controls.email.pristine && !submitted)
)
'
>
Valid Email is required
</small>
</div>
</div>
<div class="form-group">
<label class="form-label" for="telephone">*Mobile Number </label>
<span class="telephonegroup">
<select formControlName="countrycode" id="telephone" name="countrycode" placeholder="Country Code" [(ngModel)]="selectedValue" >
<option *ngFor="let c of countries" [value]="c.code">{{c.name}} (+{{c.code}})</option>
</select> -
<input type="tel" formControlName="telephone" id="telephone" placeholder="Mobile Number" name="telephone">
</span>
<div class="validators"><small *ngIf="!(contactForm.controls.telephone.valid || (contactForm.controls.telephone.pristine && !submitted))">
Valid Mobile Number is required.
</small> </div>
<div class='form-group'>
<label class='form-label' for='telephone'>*Mobile Number </label>
<span class='telephonegroup'>
<select
formControlName='countrycode'
id='telephone'
name='countrycode'
placeholder='Country Code'
[(ngModel)]='selectedValue'
>
<option *ngFor='let c of countries' [value]='c.code'
>{{ c.name }} (+{{ c.code }})</option
>
</select>
-
<input
type='tel'
formControlName='telephone'
id='telephone'
placeholder='Mobile Number'
name='telephone'
/>
</span>
<div class='validators'>
<small
*ngIf='
!(
contactForm.controls.telephone.valid ||
(contactForm.controls.telephone.pristine && !submitted)
)
'
>
Valid Mobile Number is required.
</small>
</div>
</div>
<div class="form-group">
<label class="form-label" for="input">*Message</label>
<textarea rows="30" cols="8" type="text" formControlName="message" id="input" name="message" placeholder="Minimum 100 characters"></textarea>
<div class="validators"><small *ngIf="!(contactForm.controls.message.valid || (contactForm.controls.message.pristine && !submitted))">
Describe more with Minimum 100 characters.
</small> </div>
<div class='form-group'>
<label class='form-label' for='input'>*Message</label>
<textarea
rows='30'
cols='8'
type='text'
formControlName='message'
id='input'
name='message'
placeholder='Minimum 100 characters'
></textarea>
<div class='validators'>
<small
*ngIf='
!(
contactForm.controls.message.valid ||
(contactForm.controls.message.pristine && !submitted)
)
'
>
Describe more with Minimum 100 characters.
</small>
</div>
</div>
<div class="form-group">
<div class='form-group'>
<small>*All fields are mandatory</small>
<button type="submit" [disabled]="!contactForm.valid" value="submit">Submit<input type="hidden" name="_next" value="/contact" /></button>
<small *ngIf="submitted && contactForm.valid ">Your Form has been submitted</small>
<button type='submit' [disabled]='!contactForm.valid' value='submit'>
Submit<input type='hidden' name='_next' value='/contact' />
</button>
<small *ngIf='submitted && contactForm.valid'
>Your Form has been submitted</small
>
</div>
</fieldset>
</form>
Expand Down
51 changes: 32 additions & 19 deletions src/app/contact/contact-form/contact-form.component.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
import { Component, OnInit, Output, EventEmitter } from '@angular/core';
import { FormGroup, FormControl, FormBuilder, Validators } from '@angular/forms';
import {
FormGroup,
FormControl,
FormBuilder,
Validators
} from '@angular/forms';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { countrycodearray } from '../../shared/countrycode/countrycode';

@Component({
selector: 'contact-form',
templateUrl: './contact-form.component.html',
Expand All @@ -14,41 +18,50 @@ export class ContactFormComponent implements OnInit {
public selectedValue = null;
public countries = countrycodearray;
@Output() hideContactForm: EventEmitter<any> = new EventEmitter();

constructor( private http: HttpClient ) { }

constructor(private http: HttpClient) {}
ngOnInit() {
this.contactForm = new FormGroup({
name: new FormControl('', [<any>Validators.required]),
email: new FormControl('', [<any>Validators.required, <any>Validators.email]),
email: new FormControl('', [
<any>Validators.required,
<any>Validators.email
]),
countrycode: new FormControl('', [<any>Validators.required]),
telephone: new FormControl('', [<any>Validators.required, <any>Validators.minLength(10), <any>Validators.pattern('^[0-9]*$')]),
message: new FormControl('', [<any>Validators.required, <any>Validators.minLength(100)])
});
telephone: new FormControl('', [
<any>Validators.required,
<any>Validators.minLength(10),
<any>Validators.pattern('^[0-9]*$')
]),
message: new FormControl('', [
<any>Validators.required,
<any>Validators.minLength(100)
])
});
}

public sendtosuperuser(user) {
this.hideContactForm.emit(false);
const headers = new HttpHeaders();
const formObj = user.getRawValue();
const formObj = this.contactForm.value;
const data = JSON.stringify(formObj);


headers.append('Content-Type', 'application/X-www-form-urlencoded');
headers.append('Accept', 'application/json');

this.http.post('https://formspree.io/[email protected]', data, { headers: headers })
.subscribe((response) => {
this.http.post('https://formspree.io/[email protected]', data, { headers: headers })
.subscribe((responsesent) => {
this.http
.post('https://formspree.io/[email protected]', data, {
headers: headers
})
.subscribe(response => {
this.http
.post('https://formspree.io/[email protected]', data, {
headers: headers
})
.subscribe(responsesent => {
console.log('Sent successfully');
});
});
}


public showSubmit() {
this.submitted = true;
}

}
Loading