Made the translation for the homepage and contact us page.
This commit is contained in:
parent
bc37065f14
commit
37a3ada47c
8 changed files with 151 additions and 21008 deletions
20980
package-lock.json
generated
20980
package-lock.json
generated
File diff suppressed because it is too large
Load diff
|
@ -13,6 +13,7 @@
|
||||||
"express": "^4.17.1",
|
"express": "^4.17.1",
|
||||||
"flag-icon-css": "^3.5.0",
|
"flag-icon-css": "^3.5.0",
|
||||||
"formik": "^2.2.6",
|
"formik": "^2.2.6",
|
||||||
|
"i18next": "^20.2.1",
|
||||||
"i18next-browser-languagedetector": "^6.1.0",
|
"i18next-browser-languagedetector": "^6.1.0",
|
||||||
"i18next-http-backend": "^1.2.1",
|
"i18next-http-backend": "^1.2.1",
|
||||||
"joi-browser": "^13.4.0",
|
"joi-browser": "^13.4.0",
|
||||||
|
|
|
@ -22,6 +22,35 @@
|
||||||
"Nav_Agents": "Agents",
|
"Nav_Agents": "Agents",
|
||||||
"Nav_Contact_Us": "Contact Us",
|
"Nav_Contact_Us": "Contact Us",
|
||||||
"Nav_listing_page": "listing-page",
|
"Nav_listing_page": "listing-page",
|
||||||
"Nav_Login": "Login"
|
"Nav_Login": "Login",
|
||||||
|
"Slogan_1": "YOU ARE NOT BUYING A HOUSE, ",
|
||||||
|
"Slogan_2": "YOU ARE BUYING A LIFESTYLE. ",
|
||||||
|
"Info": "Click for Details",
|
||||||
|
"Home1": "Welcome to Kene's Cribs. Kene's Cribs is a real estator company which provides the clients with the houses.",
|
||||||
|
"Home2": "The houses limited to the clients are only limited to the clients' dreams. In order to further navigate the",
|
||||||
|
"Home3": "website, use the navigation bar to switch between pages. Listings page is for browsing houses, Agents page",
|
||||||
|
"Home4": "is for browsing the estators, the Contact Us page is for the contacting us and the login page is for our",
|
||||||
|
"Home5": "members who want to benefit from our deals. Above are some houses which can interest you. Feel free to",
|
||||||
|
"Home6": "click the buttons above to explore the houses you want.",
|
||||||
|
"Desc": "Description",
|
||||||
|
"Rooms": "1 Bedroom, 2 Bathroom",
|
||||||
|
"Danger1": "Message could not send.",
|
||||||
|
"Danger2": "There are some errors in your contact form.",
|
||||||
|
"Success1": "The message is successfully sent.",
|
||||||
|
"Success2": "You contact form will be delivered to our support team.",
|
||||||
|
"Contact-Title": "Contact to Us",
|
||||||
|
"Contact-House": "Select an Agent",
|
||||||
|
"Contact-Agent": "Select a House",
|
||||||
|
"No-Pref": "No preference",
|
||||||
|
"Contact-First": "First Name",
|
||||||
|
"Contact-Last": "Last Name",
|
||||||
|
"Contact-Mail": "Email Address",
|
||||||
|
"Contact-Message": "Message",
|
||||||
|
"Contact-Submit": "Submit",
|
||||||
|
"Contact-Error1": "Please select an item in the list.",
|
||||||
|
"Contact-Error2": "Please fill out this field.",
|
||||||
|
"Contact-Error3": "Invalid email address."
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
|
@ -22,5 +22,32 @@
|
||||||
"Nav_Agents": "Agents",
|
"Nav_Agents": "Agents",
|
||||||
"Nav_Contact_Us": "Nous contacter",
|
"Nav_Contact_Us": "Nous contacter",
|
||||||
"Nav_listing_page": "page de liste",
|
"Nav_listing_page": "page de liste",
|
||||||
"Nav_Login": "Connexion"
|
"Nav_Login": "Connexion",
|
||||||
|
"Slogan_1": "VOUS N'ACHETEZ PAS UNE MAISON, ",
|
||||||
|
"Slogan_2": "VOUS ACHETEZ UN STYLE DE VIE. ",
|
||||||
|
"Info": "Cliquer pour les détails",
|
||||||
|
"Home1": "Bienvenue chez Kene's Cribs. Kene's Cribs est une véritable société d'estateur qui fournit les maisons aux clients.",
|
||||||
|
"Home2": "Les maisons limitées aux clients ne se limitent qu'aux rêves des clients. Afin de mieux naviguer dans site Web, utilisez",
|
||||||
|
"Home3": "la barre de navigation pour basculer entre les pages. La page des listes sert à parcourir les maisons, la page Agents",
|
||||||
|
"Home4": "est pour parcourir les estators, la page Contactez-nous est pour nous contacter et la page de connexion est pour notre",
|
||||||
|
"Home5": "membres qui souhaitent bénéficier de nos offres. Ci-dessus, quelques maisons qui peuvent vous intéresser. N'hésitez",
|
||||||
|
"Home6": "pas à cliquez sur les boutons ci-dessus pour explorer les maisons que vous souhaitez.",
|
||||||
|
"Desc": "La Description",
|
||||||
|
"Rooms": "1 chambre, 2 salles de bains",
|
||||||
|
"Danger1": "Le message n'a pas pu être envoyé.",
|
||||||
|
"Danger2": "Il y a des erreurs dans votre formulaire de contact.",
|
||||||
|
"Success1": "Le message a été envoyé avec succès.",
|
||||||
|
"Success2": "Votre formulaire de contact sera envoyé à notre équipe d'assistance.",
|
||||||
|
"Contact-Title": "Contactez-Nous",
|
||||||
|
"Contact-House": "Sélectionnez un Agent",
|
||||||
|
"Contact-Agent": "Sélectionnez une Maison",
|
||||||
|
"No-Pref": "Aucune préférence",
|
||||||
|
"Contact-First": "Prénom",
|
||||||
|
"Contact-Last": "Nom de Famille",
|
||||||
|
"Contact-Mail": "Adresse E-mail",
|
||||||
|
"Contact-Message": "Le Message",
|
||||||
|
"Contact-Submit": "Soumettre",
|
||||||
|
"Contact-Error1": "Veuillez sélectionner un élément dans la liste.",
|
||||||
|
"Contact-Error2": "Veuillez remplir ce champ.",
|
||||||
|
"Contact-Error3": "Adresse e-mail invalide."
|
||||||
}
|
}
|
|
@ -69,9 +69,6 @@ function App() {
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="d-flex flex-column align-items-start">
|
|
||||||
{t("Welcome_to_React")}
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<BrowserRouter>
|
<BrowserRouter>
|
||||||
<Navbar></Navbar>
|
<Navbar></Navbar>
|
||||||
|
|
|
@ -6,6 +6,7 @@ import house3 from "../images/house3.jpg";
|
||||||
import house4 from "../images/house4.jpg";
|
import house4 from "../images/house4.jpg";
|
||||||
import Carousel from "react-bootstrap/Carousel";
|
import Carousel from "react-bootstrap/Carousel";
|
||||||
import Button from "react-bootstrap/Button";
|
import Button from "react-bootstrap/Button";
|
||||||
|
import { withTranslation } from "react-i18next";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -19,6 +20,7 @@ class Homepage extends Component {
|
||||||
}
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
|
const { t } = this.props;
|
||||||
const { nextIcon, prevIcon } = this.state;
|
const { nextIcon, prevIcon } = this.state;
|
||||||
return (
|
return (
|
||||||
<div className="homePage">
|
<div className="homePage">
|
||||||
|
@ -26,8 +28,8 @@ class Homepage extends Component {
|
||||||
<div className="container-fluid">
|
<div className="container-fluid">
|
||||||
<div className="row">
|
<div className="row">
|
||||||
<div className="col-12">
|
<div className="col-12">
|
||||||
<h1 className="big-heading">YOU ARE NOT BUYING A HOUSE, </h1>
|
<h1 className="big-heading">{t("Slogan_1")}</h1>
|
||||||
<h1 className="big-heading">YOU ARE BUYING A LIFESTYLE. </h1>
|
<h1 className="big-heading">{t("Slogan_2")}</h1>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -39,9 +41,9 @@ class Homepage extends Component {
|
||||||
<img className="headerImg" src={house1} alt="First House" />
|
<img className="headerImg" src={house1} alt="First House" />
|
||||||
<Carousel.Caption>
|
<Carousel.Caption>
|
||||||
<h3 style={{ fontSize: "250%", textShadow: "-2px 0 black, 0 2px black, 2px 0 black, 0 -2px black" }}>100 Charlie Rogers, Kanata, ON K2V 1A7</h3>
|
<h3 style={{ fontSize: "250%", textShadow: "-2px 0 black, 0 2px black, 2px 0 black, 0 -2px black" }}>100 Charlie Rogers, Kanata, ON K2V 1A7</h3>
|
||||||
<h2 style={{ fontSize: "150%", textShadow: "-2px 0 black, 0 2px black, 2px 0 black, 0 -2px black" }}>1 Bedroom, 2 Bathroom</h2>
|
<h2 style={{ fontSize: "150%", textShadow: "-2px 0 black, 0 2px black, 2px 0 black, 0 -2px black" }}>{t("Rooms")}</h2>
|
||||||
<div className="buttonka">
|
<div className="buttonka">
|
||||||
<Button href="/listings" variant="info">Click for Details</Button>
|
<Button href="/listings" variant="info">{t("Info")}</Button>
|
||||||
</div>
|
</div>
|
||||||
</Carousel.Caption>
|
</Carousel.Caption>
|
||||||
</Carousel.Item>
|
</Carousel.Item>
|
||||||
|
@ -49,9 +51,9 @@ class Homepage extends Component {
|
||||||
<img className="headerImg" src={house2} alt="Second House" />
|
<img className="headerImg" src={house2} alt="Second House" />
|
||||||
<Carousel.Caption>
|
<Carousel.Caption>
|
||||||
<h3 style={{ fontSize: "250%", textShadow: "-2px 0 black, 0 2px black, 2px 0 black, 0 -2px black" }}>1490 Youville Drive, Orléans, ON K1C 2X8</h3>
|
<h3 style={{ fontSize: "250%", textShadow: "-2px 0 black, 0 2px black, 2px 0 black, 0 -2px black" }}>1490 Youville Drive, Orléans, ON K1C 2X8</h3>
|
||||||
<h2 style={{ fontSize: "150%", textShadow: "-2px 0 black, 0 2px black, 2px 0 black, 0 -2px black" }}>1 Bedroom, 2 Bathroom</h2>
|
<h2 style={{ fontSize: "150%", textShadow: "-2px 0 black, 0 2px black, 2px 0 black, 0 -2px black" }}>{t("Rooms")}</h2>
|
||||||
<div className="buttonka">
|
<div className="buttonka">
|
||||||
<Button href="/listings" variant="info">Click for Details</Button>
|
<Button href="/listings" variant="info">{t("Info")}</Button>
|
||||||
</div>
|
</div>
|
||||||
</Carousel.Caption>
|
</Carousel.Caption>
|
||||||
</Carousel.Item>
|
</Carousel.Item>
|
||||||
|
@ -59,9 +61,9 @@ class Homepage extends Component {
|
||||||
<img className="headerImg" src={house3} alt="Third House" />
|
<img className="headerImg" src={house3} alt="Third House" />
|
||||||
<Carousel.Caption>
|
<Carousel.Caption>
|
||||||
<h3 style={{ fontSize: "250%", textShadow: "-2px 0 black, 0 2px black, 2px 0 black, 0 -2px black" }}>8720 Russell Road, Navan, ON K4B 1J1</h3>
|
<h3 style={{ fontSize: "250%", textShadow: "-2px 0 black, 0 2px black, 2px 0 black, 0 -2px black" }}>8720 Russell Road, Navan, ON K4B 1J1</h3>
|
||||||
<h2 style={{ fontSize: "150%", textShadow: "-2px 0 black, 0 2px black, 2px 0 black, 0 -2px black" }}>1 Bedroom, 2 Bathroom</h2>
|
<h2 style={{ fontSize: "150%", textShadow: "-2px 0 black, 0 2px black, 2px 0 black, 0 -2px black" }}>{t("Rooms")}</h2>
|
||||||
<div className="buttonka">
|
<div className="buttonka">
|
||||||
<Button href="/listings" variant="info">Click for Details</Button>
|
<Button href="/listings" variant="info">{t("Info")}</Button>
|
||||||
</div>
|
</div>
|
||||||
</Carousel.Caption>
|
</Carousel.Caption>
|
||||||
</Carousel.Item>
|
</Carousel.Item>
|
||||||
|
@ -69,9 +71,9 @@ class Homepage extends Component {
|
||||||
<img className="headerImg" src={house4} alt="Fourth House" />
|
<img className="headerImg" src={house4} alt="Fourth House" />
|
||||||
<Carousel.Caption>
|
<Carousel.Caption>
|
||||||
<h3 style={{ fontSize: "250%", textShadow: "-2px 0 black, 0 2px black, 2px 0 black, 0 -2px black" }}>2785 8th Line Road, Metcalfe, ON K0A 2P0</h3>
|
<h3 style={{ fontSize: "250%", textShadow: "-2px 0 black, 0 2px black, 2px 0 black, 0 -2px black" }}>2785 8th Line Road, Metcalfe, ON K0A 2P0</h3>
|
||||||
<h2 style={{ fontSize: "150%", textShadow: "-2px 0 black, 0 2px black, 2px 0 black, 0 -2px black" }}>1 Bedroom, 2 Bathroom</h2>
|
<h2 style={{ fontSize: "150%", textShadow: "-2px 0 black, 0 2px black, 2px 0 black, 0 -2px black" }}>{t("Rooms")}</h2>
|
||||||
<div className="buttonka">
|
<div className="buttonka">
|
||||||
<Button href="/listings" variant="info">Click for Details</Button>
|
<Button href="/listings" variant="info">{t("Info")}</Button>
|
||||||
</div>
|
</div>
|
||||||
</Carousel.Caption>
|
</Carousel.Caption>
|
||||||
</Carousel.Item>
|
</Carousel.Item>
|
||||||
|
@ -80,13 +82,13 @@ class Homepage extends Component {
|
||||||
<div className="container-fluid">
|
<div className="container-fluid">
|
||||||
<div className="row">
|
<div className="row">
|
||||||
<div className="col-12">
|
<div className="col-12">
|
||||||
<h2 style={{ paddingLeft: "22rem", paddingBottom: "1rem", fontFamily: "Trebuchet MS" }}>Description </h2>
|
<h2 style={{ paddingLeft: "22rem", paddingBottom: "1rem", fontFamily: "Trebuchet MS" }}>{t("Desc")}</h2>
|
||||||
<p style={{ fontSize: "110%" }}> Welcome to Kene's Cribs. Kene's Cribs is a real estator company which provides the clients with the houses. <br></br>
|
<p style={{ fontSize: "110%" }}>{t("Home1")}<br></br>
|
||||||
The houses limited to the clients are only limited to the clients' dreams. In order to further navigate the<br></br>
|
{t("Home2")}<br></br>
|
||||||
website, use the navigation bar to switch between pages. Listings page is for browsing houses, Agents page<br></br>
|
{t("Home3")}<br></br>
|
||||||
is for browsing the estators, the Contact Us page is for the contacting us and the login page is for our<br></br>
|
{t("Home4")}<br></br>
|
||||||
members who want to benefit from our deals. Above are some houses which can interest you. Feel free to<br></br>
|
{t("Home5")}<br></br>
|
||||||
click the buttons above to explore the houses you want. </p>
|
{t("Home6")}</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -98,4 +100,4 @@ class Homepage extends Component {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export default Homepage;
|
export default withTranslation()(Homepage);
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.heading-1{
|
.heading-1{
|
||||||
padding-left: 38%;
|
padding-left: 36%;
|
||||||
padding-top: 10px;
|
padding-top: 10px;
|
||||||
padding-bottom: 20%;
|
padding-bottom: 20%;
|
||||||
font-size: 40px;
|
font-size: 40px;
|
||||||
|
|
|
@ -7,6 +7,7 @@ import {
|
||||||
FormWithConstraints
|
FormWithConstraints
|
||||||
} from 'react-form-with-constraints';
|
} from 'react-form-with-constraints';
|
||||||
import Alert from 'react-bootstrap/Alert';
|
import Alert from 'react-bootstrap/Alert';
|
||||||
|
import { withTranslation } from "react-i18next";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -28,25 +29,26 @@ class ContactUs extends Component {
|
||||||
|
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
|
const { t } = this.props;
|
||||||
return (
|
return (
|
||||||
<div className="contact-us">
|
<div className="contact-us">
|
||||||
<Alert variant="danger" style={{ display: this.state.alertBad ? "block" : "none" }} onClose={() => this.setState({ alertBad: false })} dismissible>
|
<Alert variant="danger" style={{ display: this.state.alertBad ? "block" : "none" }} onClose={() => this.setState({ alertBad: false })} dismissible>
|
||||||
<Alert.Heading>Message could not send.</Alert.Heading>
|
<Alert.Heading>{t("Danger1")}</Alert.Heading>
|
||||||
<p>
|
<p>
|
||||||
There are some errors in your contact form.
|
{t("Danger2")}
|
||||||
</p>
|
</p>
|
||||||
</Alert>
|
</Alert>
|
||||||
<Alert variant="success" style={{ display: this.state.alertSucess ? "block" : "none" }} onClose={() => this.setState({ alertSucess: false })} dismissible>
|
<Alert variant="success" style={{ display: this.state.alertSucess ? "block" : "none" }} onClose={() => this.setState({ alertSucess: false })} dismissible>
|
||||||
<Alert.Heading>The message is successfully sent.</Alert.Heading>
|
<Alert.Heading>{t("Success1")}</Alert.Heading>
|
||||||
<p>
|
<p>
|
||||||
You contact form will be delivered to our support team.
|
{t("Success2")}
|
||||||
</p>
|
</p>
|
||||||
</Alert>
|
</Alert>
|
||||||
<div className="container">
|
<div className="container">
|
||||||
<section class="colored-section" id="contact">
|
<section class="colored-section" id="contact">
|
||||||
<div className="container-fluid">
|
<div className="container-fluid">
|
||||||
<div className="contactIntro">
|
<div className="contactIntro">
|
||||||
<h2 className="heading-1">Contact Us</h2>
|
<h2 className="heading-1">{t("Contact-Title")}</h2>
|
||||||
<FormWithConstraints ref={form => this.form = form}
|
<FormWithConstraints ref={form => this.form = form}
|
||||||
id="contact-form"
|
id="contact-form"
|
||||||
onSubmit={this.handleSubmit.bind(this)}
|
onSubmit={this.handleSubmit.bind(this)}
|
||||||
|
@ -57,30 +59,34 @@ class ContactUs extends Component {
|
||||||
<div className="row">
|
<div className="row">
|
||||||
<div className="col-6">
|
<div className="col-6">
|
||||||
<select className="form-group" name="agent" id="dropdown" required onChange={this.onAgentChange.bind(this)} value={this.state.agent}>
|
<select className="form-group" name="agent" id="dropdown" required onChange={this.onAgentChange.bind(this)} value={this.state.agent}>
|
||||||
<option value="">Select an Agent</option>
|
<option value="">{t("Contact-Agent")}</option>
|
||||||
<option value="Michael">Michael</option>
|
<option value="Michael">Michael</option>
|
||||||
<option value="Jin">Jin </option>
|
<option value="Jin">Jin </option>
|
||||||
<option value="Anita">Anita</option>
|
<option value="Anita">Anita</option>
|
||||||
<option value="Alex">Alex</option>
|
<option value="Alex">Alex</option>
|
||||||
<option value="Xuan">Xuan</option>
|
<option value="Xuan">Xuan</option>
|
||||||
<option value="Walter">Walter</option>
|
<option value="Walter">Walter</option>
|
||||||
<option value="No preference">No preference</option>
|
<option value="No preference">{t("No-Pref")}</option>
|
||||||
</select>
|
</select>
|
||||||
<FieldFeedbacks for="agent">
|
<FieldFeedbacks for="agent">
|
||||||
<FieldFeedback when="*" />
|
<FieldFeedback when="*">
|
||||||
|
{t("Contact-Error1")}
|
||||||
|
</FieldFeedback>
|
||||||
</FieldFeedbacks>
|
</FieldFeedbacks>
|
||||||
</div>
|
</div>
|
||||||
<div className="col-6">
|
<div className="col-6">
|
||||||
<select className="form-group" name="house" id="dropdown" required onChange={this.onHouseChange.bind(this)} value={this.state.house}>
|
<select className="form-group" name="house" id="dropdown" required onChange={this.onHouseChange.bind(this)} value={this.state.house}>
|
||||||
<option value="">Select a House</option>
|
<option value="">{t("Contact-House")}</option>
|
||||||
<option value="100 Charlie Rogers">100 Charlie Rogers</option>
|
<option value="100 Charlie Rogers">100 Charlie Rogers</option>
|
||||||
<option value="1490 Youville Drive">1490 Youville Drive </option>
|
<option value="1490 Youville Drive">1490 Youville Drive </option>
|
||||||
<option value="8720 Russell Road">8720 Russell Road</option>
|
<option value="8720 Russell Road">8720 Russell Road</option>
|
||||||
<option value="2785 8th Line Road">2785 8th Line Road</option>
|
<option value="2785 8th Line Road">2785 8th Line Road</option>
|
||||||
<option value="No preference">No preference</option>
|
<option value="No preference">{t("No-Pref")}</option>
|
||||||
</select>
|
</select>
|
||||||
<FieldFeedbacks for="house">
|
<FieldFeedbacks for="agent">
|
||||||
<FieldFeedback when="*" />
|
<FieldFeedback when="*">
|
||||||
|
{t("Contact-Error1")}
|
||||||
|
</FieldFeedback>
|
||||||
</FieldFeedbacks>
|
</FieldFeedbacks>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -90,24 +96,28 @@ class ContactUs extends Component {
|
||||||
<input name="firstname"
|
<input name="firstname"
|
||||||
type="text"
|
type="text"
|
||||||
className="form-control"
|
className="form-control"
|
||||||
placeholder="First Name"
|
placeholder={t("Contact-First")}
|
||||||
value={this.state.firstname}
|
value={this.state.firstname}
|
||||||
required onChange={this.onFirstNameChange.bind(this)}
|
required onChange={this.onFirstNameChange.bind(this)}
|
||||||
/>
|
/>
|
||||||
<FieldFeedbacks for="firstname">
|
<FieldFeedbacks for="agent">
|
||||||
<FieldFeedback when="*" />
|
<FieldFeedback when="*">
|
||||||
|
{t("Contact-Error2")}
|
||||||
|
</FieldFeedback>
|
||||||
</FieldFeedbacks>
|
</FieldFeedbacks>
|
||||||
</div>
|
</div>
|
||||||
<div className="col-6">
|
<div className="col-6">
|
||||||
<input name="lastname"
|
<input name="lastname"
|
||||||
type="text"
|
type="text"
|
||||||
className="form-control"
|
className="form-control"
|
||||||
placeholder="Last Name"
|
placeholder={t("Contact-Last")}
|
||||||
value={this.state.lastname}
|
value={this.state.lastname}
|
||||||
required onChange={this.onLastNameChange.bind(this)}
|
required onChange={this.onLastNameChange.bind(this)}
|
||||||
/>
|
/>
|
||||||
<FieldFeedbacks for="lastname">
|
<FieldFeedbacks for="agent">
|
||||||
<FieldFeedback when="*" />
|
<FieldFeedback when="*">
|
||||||
|
{t("Contact-Error2")}
|
||||||
|
</FieldFeedback>
|
||||||
</FieldFeedbacks>
|
</FieldFeedbacks>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -115,30 +125,33 @@ class ContactUs extends Component {
|
||||||
<input name="email"
|
<input name="email"
|
||||||
type="email"
|
type="email"
|
||||||
className="form-control"
|
className="form-control"
|
||||||
placeholder="Email Address"
|
placeholder={t("Contact-Mail")}
|
||||||
aria-describedby="emailHelp"
|
aria-describedby="emailHelp"
|
||||||
value={this.state.email}
|
value={this.state.email}
|
||||||
required onChange={this.onEmailChange.bind(this)}
|
required onChange={this.onEmailChange.bind(this)}
|
||||||
/>
|
/>
|
||||||
<FieldFeedbacks for="email">
|
<FieldFeedbacks for="email">
|
||||||
<FieldFeedback when="*" />
|
<FieldFeedback when={value => value.length === 0}>{t("Contact-Error2")}</FieldFeedback>
|
||||||
|
<FieldFeedback when={value => !/\S+@\S+/.test(value)}>{t("Contact-Error3")}</FieldFeedback>
|
||||||
</FieldFeedbacks>
|
</FieldFeedbacks>
|
||||||
</div>
|
</div>
|
||||||
<div className="form-group">
|
<div className="form-group">
|
||||||
<textarea name="message"
|
<textarea name="message"
|
||||||
className="form-control"
|
className="form-control"
|
||||||
placeholder="Message"
|
placeholder={t("Contact-Message")}
|
||||||
rows="5"
|
rows="5"
|
||||||
value={this.state.message}
|
value={this.state.message}
|
||||||
required onChange={this.onMessageChange.bind(this)}
|
required onChange={this.onMessageChange.bind(this)}
|
||||||
/>
|
/>
|
||||||
<FieldFeedbacks for="message">
|
<FieldFeedbacks for="agent">
|
||||||
<FieldFeedback when="*" />
|
<FieldFeedback when="*">
|
||||||
|
{t("Contact-Error1")}
|
||||||
|
</FieldFeedback>
|
||||||
</FieldFeedbacks>
|
</FieldFeedbacks>
|
||||||
</div>
|
</div>
|
||||||
<div className="buttonhelper">
|
<div className="buttonhelper">
|
||||||
<button type="submit" className="button-1">
|
<button type="submit" className="button-1">
|
||||||
Submit
|
{t("Contact-Submit")}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</FormWithConstraints>
|
</FormWithConstraints>
|
||||||
|
@ -217,4 +230,4 @@ class ContactUs extends Component {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
export default ContactUs;
|
export default withTranslation()(ContactUs);
|
||||||
|
|
Loading…
Reference in a new issue